[
  {
    "path": ".editorconfig",
    "content": "root = true\n\n[*]\ncharset = utf-8\nend_of_line = lf\ninsert_final_newline = true\nindent_style = space\nindent_size = 4\ntrim_trailing_whitespace = true\n\n[*.md]\ntrim_trailing_whitespace = false\n\n[*.{yml,yaml}]\nindent_size = 2\n"
  },
  {
    "path": ".gitattributes",
    "content": "* text=auto\n*.css linguist-vendored\n*.scss linguist-vendored\n*.js linguist-vendored\nCHANGELOG.md export-ignore\n"
  },
  {
    "path": ".gitignore",
    "content": "/node_modules\n/public/hot\n/public/storage\n/storage/*.key\n/vendor\n.env\n.env.backup\n.phpunit.result.cache\nHomestead.json\nHomestead.yaml\nnpm-debug.log\nyarn-error.log\n"
  },
  {
    "path": ".htaccess",
    "content": "<IfModule mod_rewrite.c>\n    <IfModule mod_negotiation.c>\n        Options -MultiViews -Indexes\n    </IfModule>\n\n    RewriteEngine On\n\n    # Handle Authorization Header\n    RewriteCond %{HTTP:Authorization} .\n    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]\n\n    # Redirect Trailing Slashes If Not A Folder...\n    RewriteCond %{REQUEST_FILENAME} !-d\n    RewriteCond %{REQUEST_URI} (.+)/$\n    RewriteRule ^ %1 [L,R=301]\n\n    # Handle Front Controller...\n    RewriteCond %{REQUEST_FILENAME} !-d\n    RewriteCond %{REQUEST_FILENAME} !-f\n    RewriteRule ^ index.php [L]\n</IfModule>\n"
  },
  {
    "path": ".styleci.yml",
    "content": "php:\n  preset: laravel\n  disabled:\n    - unused_use\n  finder:\n    not-name:\n      - index.php\n      - server.php\njs:\n  finder:\n    not-name:\n      - webpack.mix.js\ncss: true\n"
  },
  {
    "path": "README.md",
    "content": "<h1 align=\"center\">Selamat datang di Toko Online! 👋</h1>\n\n## Apa itu Toko Online?\n\nWeb Toko Online yang dibuat oleh <a href=\"https://github.com/adhiariyadi\"> Adhi Ariyadi </a>. **Toko Online adalah Website penjualan secara online untuk seseorang yang inggin membeli suatu produk melalui website dengan mudah.**\n\n## Fitur apa saja yang tersedia di Toko Online?\n\n-   Autentikasi Admin\n-   User & CRUD\n-   Merek & CRUD\n-   Mobil & CRUD\n-   Order & CRUD\n-   Dan lain-lain\n\n## Release Date\n\n**Release date : 28 Apr 2020**\n\n> Toko Online merupakan project open source yang dibuat oleh Adhi Ariyadi. Kalian dapat download/fork/clone. Cukup beri stars di project ini agar memberiku semangat. Terima kasih!\n\n---\n\n## Install\n\n1. **Clone Repository**\n\n```bash\ngit clone https://github.com/adhiariyadi/Toko-Online-Laravel.git\ncd Toko-Online-Laravel\ncomposer install\ncp .env.example .env\n```\n\n2. **Buka `.env` lalu ubah baris berikut sesuai dengan databasemu yang ingin dipakai**\n\n```bash\nDB_PORT=3306\nDB_DATABASE=laravel\nDB_USERNAME=root\nDB_PASSWORD=\n```\n\n3. **Instalasi website**\n\n```bash\nphp artisan key:generate\nphp artisan migrate --seed\n```\n\n4. **Jalankan website**\n\n```bash\nphp artisan serve\n```\n\n## Author\n\n-   Facebook : <a href=\"https://web.facebook.com/adhiariyadi.me/\"> Adhi Ariyadi</a>\n-   LinkedIn : <a href=\"https://www.linkedin.com/in/adhiariyadi/\"> Adhi Ariyadi</a>\n\n## Contributing\n\nContributions, issues and feature requests di persilahkan.\nJangan ragu untuk memeriksa halaman masalah jika Anda ingin berkontribusi. **Berhubung Project ini saya sudah selesaikan sendiri, namun banyak fitur yang kalian dapat tambahkan silahkan berkontribusi yaa!**\n\n## License\n\n-   Copyright © 2020 Adhi Ariyadi.\n-   **Toko Online is open-sourced software licensed under the MIT license.**\n"
  },
  {
    "path": "app/Bukti.php",
    "content": "<?php\n\nnamespace App;\n\nuse Illuminate\\Database\\Eloquent\\Model;\n\nclass Bukti extends Model\n{\n    protected $fillable = ['order_id', 'foto', 'nama_bank', 'nama_pengirim'];\n\n    protected $table = 'bukti';\n}\n"
  },
  {
    "path": "app/Console/Kernel.php",
    "content": "<?php\n\nnamespace App\\Console;\n\nuse Illuminate\\Console\\Scheduling\\Schedule;\nuse Illuminate\\Foundation\\Console\\Kernel as ConsoleKernel;\n\nclass Kernel extends ConsoleKernel\n{\n    /**\n     * The Artisan commands provided by your application.\n     *\n     * @var array\n     */\n    protected $commands = [\n        //\n    ];\n\n    /**\n     * Define the application's command schedule.\n     *\n     * @param  \\Illuminate\\Console\\Scheduling\\Schedule  $schedule\n     * @return void\n     */\n    protected function schedule(Schedule $schedule)\n    {\n        // $schedule->command('inspire')\n        //          ->hourly();\n    }\n\n    /**\n     * Register the commands for the application.\n     *\n     * @return void\n     */\n    protected function commands()\n    {\n        $this->load(__DIR__.'/Commands');\n\n        require base_path('routes/console.php');\n    }\n}\n"
  },
  {
    "path": "app/Exceptions/Handler.php",
    "content": "<?php\n\nnamespace App\\Exceptions;\n\nuse Exception;\nuse Illuminate\\Foundation\\Exceptions\\Handler as ExceptionHandler;\n\nclass Handler extends ExceptionHandler\n{\n    /**\n     * A list of the exception types that are not reported.\n     *\n     * @var array\n     */\n    protected $dontReport = [\n        //\n    ];\n\n    /**\n     * A list of the inputs that are never flashed for validation exceptions.\n     *\n     * @var array\n     */\n    protected $dontFlash = [\n        'password',\n        'password_confirmation',\n    ];\n\n    /**\n     * Report or log an exception.\n     *\n     * @param  \\Exception  $exception\n     * @return void\n     */\n    public function report(Exception $exception)\n    {\n        parent::report($exception);\n    }\n\n    /**\n     * Render an exception into an HTTP response.\n     *\n     * @param  \\Illuminate\\Http\\Request  $request\n     * @param  \\Exception  $exception\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function render($request, Exception $exception)\n    {\n        return parent::render($request, $exception);\n    }\n}\n"
  },
  {
    "path": "app/Favorite.php",
    "content": "<?php\n\nnamespace App;\n\nuse Illuminate\\Database\\Eloquent\\Model;\n\nclass Favorite extends Model\n{\n    protected $fillable = ['user_id', 'mobil_id'];\n\n    public function mobil()\n    {\n        return $this->belongsTo('App\\Mobil');\n    }\n\n    protected $table = 'favorite';\n}\n"
  },
  {
    "path": "app/Http/Controllers/AkunController.php",
    "content": "<?php\n\nnamespace App\\Http\\Controllers;\n\nuse App\\User;\nuse App\\Mobil;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Support\\Facades\\Hash;\n\nclass AkunController extends Controller\n{\n  /**\n   * Display a listing of the resource.\n   *\n   * @return \\Illuminate\\Http\\Response\n   */\n  public function index()\n  {\n    $user = User::paginate(10);\n    return view('admin.akun.index', compact('user'));\n  }\n\n  /**\n   * Show the form for creating a new resource.\n   *\n   * @return \\Illuminate\\Http\\Response\n   */\n  public function create()\n  {\n    return view('admin.akun.create');\n  }\n\n  /**\n   * Store a newly created resource in storage.\n   *\n   * @param  \\Illuminate\\Http\\Request  $request\n   * @return \\Illuminate\\Http\\Response\n   */\n  public function store(Request $request)\n  {\n    $this->validate($request, [\n      'name' => 'required',\n      'role' => 'required',\n      'email' => 'required',\n      'password' => 'required|min:8',\n    ]);\n\n    if ($request->has('gambar') == true) {\n      $gambar = $request->gambar;\n      $new_gambar = time() . \"_\" . $gambar->getClientOriginalName();\n      $gambar->move('uploads/akun/', $new_gambar);\n      User::create([\n        'name' => $request->name,\n        'role' => $request->role,\n        'gambar' => 'uploads/akun/' . $new_gambar,\n        'email' => $request->email,\n        'password' => Hash::make($request->password),\n      ]);\n    } else {\n      User::create([\n        'name' => $request->name,\n        'role' => $request->role,\n        'email' => $request->email,\n        'password' => Hash::make($request->password),\n      ]);\n    }\n\n\n    return redirect()->back()->with('success', 'User Baru Berhasil Disimpan');\n  }\n\n  /**\n   * Display the specified resource.\n   *\n   * @param  int  $id\n   * @return \\Illuminate\\Http\\Response\n   */\n  public function show($id)\n  {\n    $user = Mobil::findorfail($id);\n    return view('admin.show', compact('user'));\n  }\n\n  /**\n   * Show the form for editing the specified resource.\n   *\n   * @param  int  $id\n   * @return \\Illuminate\\Http\\Response\n   */\n  public function edit($id)\n  {\n    $user = User::findorfail($id);\n    return view('admin.akun.edit', compact('user'));\n  }\n\n  /**\n   * Update the specified resource in storage.\n   *\n   * @param  \\Illuminate\\Http\\Request  $request\n   * @param  int  $id\n   * @return \\Illuminate\\Http\\Response\n   */\n  public function update(Request $request, $id)\n  {\n    $this->validate($request, [\n      'name' => 'required',\n      'role' => 'required',\n      'email' => 'required',\n      'address' => 'required',\n      'kelurahan' => 'required',\n      'kabupaten' => 'required',\n      'kecamatan' => 'required',\n      'provinsi' => 'required',\n      'telepon' => 'required',\n    ]);\n    if ($request->tgl_lahir) {\n      $request->tgl_lahir = date('Y-m-d', strtotime($request->tgl_lahir));\n    }\n\n    $user = User::findorfail($id);\n\n    if ($request->gambar == true) {\n      $gambar = $request->gambar;\n      $new_gambar = time() . \"_\" . $gambar->getClientOriginalName();\n      $gambar->move('uploads/akun/', $new_gambar);\n\n      if ($request->gambar && $request->pekerjaan == true) {\n\n        if ($request->gambar && $request->pekerjaan && $request->tgl_lahir == true) {\n\n          if ($request->gambar && $request->pekerjaan && $request->tgl_lahir && $request->password == true) {\n            $user_data = [\n              'name' => $request->name,\n              'role' => $request->role,\n              'email' => $request->email,\n              'address' => $request->address,\n              'kelurahan' => $request->kelurahan,\n              'kabupaten' => $request->kabupaten,\n              'kecamatan' => $request->kecamatan,\n              'provinsi' => $request->provinsi,\n              'telepon' => $request->telepon,\n              'pekerjaan' => $request->pekerjaan,\n              'tanggal_lahir' => $request->tgl_lahir,\n              'password' => Hash::make($request->password),\n              'gambar' => 'uploads/akun/' . $new_gambar,\n            ];\n          } else {\n            $user_data = [\n              'name' => $request->name,\n              'role' => $request->role,\n              'email' => $request->email,\n              'address' => $request->address,\n              'kelurahan' => $request->kelurahan,\n              'kabupaten' => $request->kabupaten,\n              'kecamatan' => $request->kecamatan,\n              'provinsi' => $request->provinsi,\n              'telepon' => $request->telepon,\n              'pekerjaan' => $request->pekerjaan,\n              'tanggal_lahir' => $request->tgl_lahir,\n              'gambar' => 'uploads/akun/' . $new_gambar,\n            ];\n          }\n        } elseif ($request->gambar && $request->pekerjaan && $request->password == true) {\n          $user_data = [\n            'name' => $request->name,\n            'role' => $request->role,\n            'email' => $request->email,\n            'address' => $request->address,\n            'kelurahan' => $request->kelurahan,\n            'kabupaten' => $request->kabupaten,\n            'kecamatan' => $request->kecamatan,\n            'provinsi' => $request->provinsi,\n            'telepon' => $request->telepon,\n            'pekerjaan' => $request->pekerjaan,\n            'password' => Hash::make($request->password),\n            'gambar' => 'uploads/akun/' . $new_gambar,\n          ];\n        } else {\n          $user_data = [\n            'name' => $request->name,\n            'role' => $request->role,\n            'email' => $request->email,\n            'address' => $request->address,\n            'kelurahan' => $request->kelurahan,\n            'kabupaten' => $request->kabupaten,\n            'kecamatan' => $request->kecamatan,\n            'provinsi' => $request->provinsi,\n            'telepon' => $request->telepon,\n            'pekerjaan' => $request->pekerjaan,\n            'gambar' => 'uploads/akun/' . $new_gambar,\n          ];\n        }\n      } elseif ($request->gambar && $request->tgl_lahir == true) {\n\n        if ($request->gambar && $request->tgl_lahir && $request->password == true) {\n          $user_data = [\n            'name' => $request->name,\n            'role' => $request->role,\n            'email' => $request->email,\n            'address' => $request->address,\n            'kelurahan' => $request->kelurahan,\n            'kabupaten' => $request->kabupaten,\n            'kecamatan' => $request->kecamatan,\n            'provinsi' => $request->provinsi,\n            'telepon' => $request->telepon,\n            'tanggal_lahir' => $request->tgl_lahir,\n            'password' => Hash::make($request->password),\n            'gambar' => 'uploads/akun/' . $new_gambar,\n          ];\n        } else {\n          $user_data = [\n            'name' => $request->name,\n            'role' => $request->role,\n            'email' => $request->email,\n            'address' => $request->address,\n            'kelurahan' => $request->kelurahan,\n            'kabupaten' => $request->kabupaten,\n            'kecamatan' => $request->kecamatan,\n            'provinsi' => $request->provinsi,\n            'telepon' => $request->telepon,\n            'tanggal_lahir' => $request->tgl_lahir,\n            'gambar' => 'uploads/akun/' . $new_gambar,\n          ];\n        }\n      } elseif ($request->gambar && $request->password == true) {\n        $user_data = [\n          'name' => $request->name,\n          'role' => $request->role,\n          'email' => $request->email,\n          'address' => $request->address,\n          'kelurahan' => $request->kelurahan,\n          'kabupaten' => $request->kabupaten,\n          'kecamatan' => $request->kecamatan,\n          'provinsi' => $request->provinsi,\n          'telepon' => $request->telepon,\n          'password' => Hash::make($request->password),\n          'gambar' => 'uploads/akun/' . $new_gambar,\n        ];\n      } else {\n        $user_data = [\n          'name' => $request->name,\n          'role' => $request->role,\n          'email' => $request->email,\n          'address' => $request->address,\n          'kelurahan' => $request->kelurahan,\n          'kabupaten' => $request->kabupaten,\n          'kecamatan' => $request->kecamatan,\n          'provinsi' => $request->provinsi,\n          'telepon' => $request->telepon,\n          'gambar' => 'uploads/akun/' . $new_gambar,\n        ];\n      }\n    } elseif ($request->pekerjaan == true) {\n\n      if ($request->pekerjaan && $request->tgl_lahir == true) {\n\n        if ($request->pekerjaan && $request->tgl_lahir && $request->password == true) {\n          $user_data = [\n            'name' => $request->name,\n            'role' => $request->role,\n            'email' => $request->email,\n            'address' => $request->address,\n            'kelurahan' => $request->kelurahan,\n            'kabupaten' => $request->kabupaten,\n            'kecamatan' => $request->kecamatan,\n            'provinsi' => $request->provinsi,\n            'telepon' => $request->telepon,\n            'tanggal_lahir' => $request->tgl_lahir,\n            'password' => Hash::make($request->password),\n            'pekerjaan' => $request->pekerjaan,\n          ];\n        } else {\n          $user_data = [\n            'name' => $request->name,\n            'role' => $request->role,\n            'email' => $request->email,\n            'address' => $request->address,\n            'kelurahan' => $request->kelurahan,\n            'kabupaten' => $request->kabupaten,\n            'kecamatan' => $request->kecamatan,\n            'provinsi' => $request->provinsi,\n            'telepon' => $request->telepon,\n            'tanggal_lahir' => $request->tgl_lahir,\n            'pekerjaan' => $request->pekerjaan,\n          ];\n        }\n      } elseif ($request->pekerjaan && $request->password == true) {\n        $user_data = [\n          'name' => $request->name,\n          'role' => $request->role,\n          'email' => $request->email,\n          'address' => $request->address,\n          'kelurahan' => $request->kelurahan,\n          'kabupaten' => $request->kabupaten,\n          'kecamatan' => $request->kecamatan,\n          'provinsi' => $request->provinsi,\n          'telepon' => $request->telepon,\n          'password' => Hash::make($request->password),\n          'pekerjaan' => $request->pekerjaan,\n        ];\n      } else {\n        $user_data = [\n          'name' => $request->name,\n          'role' => $request->role,\n          'email' => $request->email,\n          'address' => $request->address,\n          'kelurahan' => $request->kelurahan,\n          'kabupaten' => $request->kabupaten,\n          'kecamatan' => $request->kecamatan,\n          'provinsi' => $request->provinsi,\n          'telepon' => $request->telepon,\n          'pekerjaan' => $request->pekerjaan,\n        ];\n      }\n    } elseif ($request->tgl_lahir == true) {\n\n      if ($request->tgl_lahir && $request->password == true) {\n        $user_data = [\n          'name' => $request->name,\n          'role' => $request->role,\n          'email' => $request->email,\n          'address' => $request->address,\n          'kelurahan' => $request->kelurahan,\n          'kabupaten' => $request->kabupaten,\n          'kecamatan' => $request->kecamatan,\n          'provinsi' => $request->provinsi,\n          'telepon' => $request->telepon,\n          'password' => Hash::make($request->password),\n          'tanggal_lahir' => $request->tgl_lahir,\n        ];\n      } else {\n        $user_data = [\n          'name' => $request->name,\n          'role' => $request->role,\n          'email' => $request->email,\n          'address' => $request->address,\n          'kelurahan' => $request->kelurahan,\n          'kabupaten' => $request->kabupaten,\n          'kecamatan' => $request->kecamatan,\n          'provinsi' => $request->provinsi,\n          'telepon' => $request->telepon,\n          'tanggal_lahir' => $request->tgl_lahir,\n        ];\n      }\n    } elseif ($request->password == true) {\n      $user_data = [\n        'name' => $request->name,\n        'role' => $request->role,\n        'email' => $request->email,\n        'address' => $request->address,\n        'kelurahan' => $request->kelurahan,\n        'kabupaten' => $request->kabupaten,\n        'kecamatan' => $request->kecamatan,\n        'provinsi' => $request->provinsi,\n        'telepon' => $request->telepon,\n        'password' => Hash::make($request->password),\n      ];\n    } else {\n      $user_data = [\n        'name' => $request->name,\n        'role' => $request->role,\n        'email' => $request->email,\n        'address' => $request->address,\n        'kelurahan' => $request->kelurahan,\n        'kabupaten' => $request->kabupaten,\n        'kecamatan' => $request->kecamatan,\n        'provinsi' => $request->provinsi,\n        'telepon' => $request->telepon,\n      ];\n    }\n\n    $user->update($user_data);\n\n    return redirect()->back()->with('success', 'User Berhasil Diupdate');\n  }\n\n  /**\n   * Remove the specified resource from storage.\n   *\n   * @param  int  $id\n   * @return \\Illuminate\\Http\\Response\n   */\n  public function destroy($id)\n  {\n    $user = User::findorfail($id);\n    $user->delete();\n\n    return redirect()->back()->with('success', 'User Berhasil Dihapus');\n  }\n\n  public function profil($id)\n  {\n    $user = User::findorfail($id);\n    return view('user.profile', compact('user'));\n  }\n\n  public function edit_profil($id)\n  {\n    $user = User::findorfail($id);\n    return view('user.edit', compact('user'));\n  }\n\n  public function simpan(Request $request, $id)\n  {\n    $this->validate($request, [\n      'name' => 'required',\n      'email' => 'required',\n      'address' => 'required',\n      'kelurahan' => 'required',\n      'kabupaten' => 'required',\n      'kecamatan' => 'required',\n      'provinsi' => 'required',\n      'telepon' => 'required',\n    ]);\n    if ($request->tgl_lahir) {\n      $request->tgl_lahir = date('Y-m-d', strtotime($request->tgl_lahir));\n    }\n\n    $user = User::findorfail($id);\n\n    if ($request->gambar == true) {\n      $gambar = $request->gambar;\n      $new_gambar = time() . \"_\" . $gambar->getClientOriginalName();\n      $gambar->move('uploads/akun/', $new_gambar);\n\n      if ($request->gambar && $request->pekerjaan == true) {\n\n        if ($request->gambar && $request->pekerjaan && $request->tgl_lahir == true) {\n\n          if ($request->gambar && $request->pekerjaan && $request->tgl_lahir && $request->password == true) {\n            $user_data = [\n              'name' => $request->name,\n              'email' => $request->email,\n              'address' => $request->address,\n              'kelurahan' => $request->kelurahan,\n              'kabupaten' => $request->kabupaten,\n              'kecamatan' => $request->kecamatan,\n              'provinsi' => $request->provinsi,\n              'telepon' => $request->telepon,\n              'pekerjaan' => $request->pekerjaan,\n              'tanggal_lahir' => $request->tgl_lahir,\n              'password' => Hash::make($request->password),\n              'gambar' => 'uploads/akun/' . $new_gambar,\n            ];\n          } else {\n            $user_data = [\n              'name' => $request->name,\n              'email' => $request->email,\n              'address' => $request->address,\n              'kelurahan' => $request->kelurahan,\n              'kabupaten' => $request->kabupaten,\n              'kecamatan' => $request->kecamatan,\n              'provinsi' => $request->provinsi,\n              'telepon' => $request->telepon,\n              'pekerjaan' => $request->pekerjaan,\n              'tanggal_lahir' => $request->tgl_lahir,\n              'gambar' => 'uploads/akun/' . $new_gambar,\n            ];\n          }\n        } elseif ($request->gambar && $request->pekerjaan && $request->password == true) {\n          $user_data = [\n            'name' => $request->name,\n            'email' => $request->email,\n            'address' => $request->address,\n            'kelurahan' => $request->kelurahan,\n            'kabupaten' => $request->kabupaten,\n            'kecamatan' => $request->kecamatan,\n            'provinsi' => $request->provinsi,\n            'telepon' => $request->telepon,\n            'pekerjaan' => $request->pekerjaan,\n            'password' => Hash::make($request->password),\n            'gambar' => 'uploads/akun/' . $new_gambar,\n          ];\n        } else {\n          $user_data = [\n            'name' => $request->name,\n            'email' => $request->email,\n            'address' => $request->address,\n            'kelurahan' => $request->kelurahan,\n            'kabupaten' => $request->kabupaten,\n            'kecamatan' => $request->kecamatan,\n            'provinsi' => $request->provinsi,\n            'telepon' => $request->telepon,\n            'pekerjaan' => $request->pekerjaan,\n            'gambar' => 'uploads/akun/' . $new_gambar,\n          ];\n        }\n      } elseif ($request->gambar && $request->tgl_lahir == true) {\n\n        if ($request->gambar && $request->tgl_lahir && $request->password == true) {\n          $user_data = [\n            'name' => $request->name,\n            'email' => $request->email,\n            'address' => $request->address,\n            'kelurahan' => $request->kelurahan,\n            'kabupaten' => $request->kabupaten,\n            'kecamatan' => $request->kecamatan,\n            'provinsi' => $request->provinsi,\n            'telepon' => $request->telepon,\n            'tanggal_lahir' => $request->tgl_lahir,\n            'password' => Hash::make($request->password),\n            'gambar' => 'uploads/akun/' . $new_gambar,\n          ];\n        } else {\n          $user_data = [\n            'name' => $request->name,\n            'email' => $request->email,\n            'address' => $request->address,\n            'kelurahan' => $request->kelurahan,\n            'kabupaten' => $request->kabupaten,\n            'kecamatan' => $request->kecamatan,\n            'provinsi' => $request->provinsi,\n            'telepon' => $request->telepon,\n            'tanggal_lahir' => $request->tgl_lahir,\n            'gambar' => 'uploads/akun/' . $new_gambar,\n          ];\n        }\n      } elseif ($request->gambar && $request->password == true) {\n        $user_data = [\n          'name' => $request->name,\n          'email' => $request->email,\n          'address' => $request->address,\n          'kelurahan' => $request->kelurahan,\n          'kabupaten' => $request->kabupaten,\n          'kecamatan' => $request->kecamatan,\n          'provinsi' => $request->provinsi,\n          'telepon' => $request->telepon,\n          'password' => Hash::make($request->password),\n          'gambar' => 'uploads/akun/' . $new_gambar,\n        ];\n      } else {\n        $user_data = [\n          'name' => $request->name,\n          'email' => $request->email,\n          'address' => $request->address,\n          'kelurahan' => $request->kelurahan,\n          'kabupaten' => $request->kabupaten,\n          'kecamatan' => $request->kecamatan,\n          'provinsi' => $request->provinsi,\n          'telepon' => $request->telepon,\n          'gambar' => 'uploads/akun/' . $new_gambar,\n        ];\n      }\n    } elseif ($request->pekerjaan == true) {\n\n      if ($request->pekerjaan && $request->tgl_lahir == true) {\n\n        if ($request->pekerjaan && $request->tgl_lahir && $request->password == true) {\n          $user_data = [\n            'name' => $request->name,\n            'email' => $request->email,\n            'address' => $request->address,\n            'kelurahan' => $request->kelurahan,\n            'kabupaten' => $request->kabupaten,\n            'kecamatan' => $request->kecamatan,\n            'provinsi' => $request->provinsi,\n            'telepon' => $request->telepon,\n            'tanggal_lahir' => $request->tgl_lahir,\n            'password' => Hash::make($request->password),\n            'pekerjaan' => $request->pekerjaan,\n          ];\n        } else {\n          $user_data = [\n            'name' => $request->name,\n            'email' => $request->email,\n            'address' => $request->address,\n            'kelurahan' => $request->kelurahan,\n            'kabupaten' => $request->kabupaten,\n            'kecamatan' => $request->kecamatan,\n            'provinsi' => $request->provinsi,\n            'telepon' => $request->telepon,\n            'tanggal_lahir' => $request->tgl_lahir,\n            'pekerjaan' => $request->pekerjaan,\n          ];\n        }\n      } elseif ($request->pekerjaan && $request->password == true) {\n        $user_data = [\n          'name' => $request->name,\n          'email' => $request->email,\n          'address' => $request->address,\n          'kelurahan' => $request->kelurahan,\n          'kabupaten' => $request->kabupaten,\n          'kecamatan' => $request->kecamatan,\n          'provinsi' => $request->provinsi,\n          'telepon' => $request->telepon,\n          'password' => Hash::make($request->password),\n          'pekerjaan' => $request->pekerjaan,\n        ];\n      } else {\n        $user_data = [\n          'name' => $request->name,\n          'email' => $request->email,\n          'address' => $request->address,\n          'kelurahan' => $request->kelurahan,\n          'kabupaten' => $request->kabupaten,\n          'kecamatan' => $request->kecamatan,\n          'provinsi' => $request->provinsi,\n          'telepon' => $request->telepon,\n          'pekerjaan' => $request->pekerjaan,\n        ];\n      }\n    } elseif ($request->tgl_lahir == true) {\n\n      if ($request->tgl_lahir && $request->password == true) {\n        $user_data = [\n          'name' => $request->name,\n          'email' => $request->email,\n          'address' => $request->address,\n          'kelurahan' => $request->kelurahan,\n          'kabupaten' => $request->kabupaten,\n          'kecamatan' => $request->kecamatan,\n          'provinsi' => $request->provinsi,\n          'telepon' => $request->telepon,\n          'password' => Hash::make($request->password),\n          'tanggal_lahir' => $request->tgl_lahir,\n        ];\n      } else {\n        $user_data = [\n          'name' => $request->name,\n          'email' => $request->email,\n          'address' => $request->address,\n          'kelurahan' => $request->kelurahan,\n          'kabupaten' => $request->kabupaten,\n          'kecamatan' => $request->kecamatan,\n          'provinsi' => $request->provinsi,\n          'telepon' => $request->telepon,\n          'tanggal_lahir' => $request->tgl_lahir,\n        ];\n      }\n    } elseif ($request->password == true) {\n      $user_data = [\n        'name' => $request->name,\n        'email' => $request->email,\n        'address' => $request->address,\n        'kelurahan' => $request->kelurahan,\n        'kabupaten' => $request->kabupaten,\n        'kecamatan' => $request->kecamatan,\n        'provinsi' => $request->provinsi,\n        'telepon' => $request->telepon,\n        'password' => Hash::make($request->password),\n      ];\n    } else {\n      $user_data = [\n        'name' => $request->name,\n        'email' => $request->email,\n        'address' => $request->address,\n        'kelurahan' => $request->kelurahan,\n        'kabupaten' => $request->kabupaten,\n        'kecamatan' => $request->kecamatan,\n        'provinsi' => $request->provinsi,\n        'telepon' => $request->telepon,\n      ];\n    }\n\n    // dd($user_data);\n\n    $user->update($user_data);\n\n    return redirect()->route('profil', $user['id'])->with('success', 'Pembelian Berhasil Silahkan Melakukan Pembayaran Melalui Payment Yang Anda Pilih');\n  }\n}\n"
  },
  {
    "path": "app/Http/Controllers/Auth/ConfirmPasswordController.php",
    "content": "<?php\n\nnamespace App\\Http\\Controllers\\Auth;\n\nuse App\\Http\\Controllers\\Controller;\nuse Illuminate\\Foundation\\Auth\\ConfirmsPasswords;\n\nclass ConfirmPasswordController extends Controller\n{\n    /*\n    |--------------------------------------------------------------------------\n    | Confirm Password Controller\n    |--------------------------------------------------------------------------\n    |\n    | This controller is responsible for handling password confirmations and\n    | uses a simple trait to include the behavior. You're free to explore\n    | this trait and override any functions that require customization.\n    |\n    */\n\n    use ConfirmsPasswords;\n\n    /**\n     * Where to redirect users when the intended url fails.\n     *\n     * @var string\n     */\n    protected $redirectTo = '/home';\n\n    /**\n     * Create a new controller instance.\n     *\n     * @return void\n     */\n    public function __construct()\n    {\n        $this->middleware('auth');\n    }\n}\n"
  },
  {
    "path": "app/Http/Controllers/Auth/ForgotPasswordController.php",
    "content": "<?php\n\nnamespace App\\Http\\Controllers\\Auth;\n\nuse App\\Http\\Controllers\\Controller;\nuse Illuminate\\Foundation\\Auth\\SendsPasswordResetEmails;\n\nclass ForgotPasswordController extends Controller\n{\n    /*\n    |--------------------------------------------------------------------------\n    | Password Reset Controller\n    |--------------------------------------------------------------------------\n    |\n    | This controller is responsible for handling password reset emails and\n    | includes a trait which assists in sending these notifications from\n    | your application to your users. Feel free to explore this trait.\n    |\n    */\n\n    use SendsPasswordResetEmails;\n}\n"
  },
  {
    "path": "app/Http/Controllers/Auth/LoginController.php",
    "content": "<?php\n\nnamespace App\\Http\\Controllers\\Auth;\n\nuse App\\Http\\Controllers\\Controller;\nuse Illuminate\\Foundation\\Auth\\AuthenticatesUsers;\n\nclass LoginController extends Controller\n{\n    /*\n    |--------------------------------------------------------------------------\n    | Login Controller\n    |--------------------------------------------------------------------------\n    |\n    | This controller handles authenticating users for the application and\n    | redirecting them to your home screen. The controller uses a trait\n    | to conveniently provide its functionality to your applications.\n    |\n    */\n\n    use AuthenticatesUsers;\n\n    /**\n     * Where to redirect users after login.\n     *\n     * @var string\n     */\n    protected $redirectTo = '/';\n\n    /**\n     * Create a new controller instance.\n     *\n     * @return void\n     */\n    public function __construct()\n    {\n        $this->middleware('guest')->except('logout');\n    }\n}\n"
  },
  {
    "path": "app/Http/Controllers/Auth/RegisterController.php",
    "content": "<?php\n\nnamespace App\\Http\\Controllers\\Auth;\n\nuse App\\Http\\Controllers\\Controller;\nuse App\\User;\nuse Illuminate\\Foundation\\Auth\\RegistersUsers;\nuse Illuminate\\Support\\Facades\\Hash;\nuse Illuminate\\Support\\Facades\\Validator;\n\nclass RegisterController extends Controller\n{\n    /*\n    |--------------------------------------------------------------------------\n    | Register Controller\n    |--------------------------------------------------------------------------\n    |\n    | This controller handles the registration of new users as well as their\n    | validation and creation. By default this controller uses a trait to\n    | provide this functionality without requiring any additional code.\n    |\n    */\n\n    use RegistersUsers;\n\n    /**\n     * Where to redirect users after registration.\n     *\n     * @var string\n     */\n    protected $redirectTo = '/';\n\n    /**\n     * Create a new controller instance.\n     *\n     * @return void\n     */\n    public function __construct()\n    {\n        $this->middleware('guest');\n    }\n\n    /**\n     * Get a validator for an incoming registration request.\n     *\n     * @param  array  $data\n     * @return \\Illuminate\\Contracts\\Validation\\Validator\n     */\n    protected function validator(array $data)\n    {\n        return Validator::make($data, [\n            'name' => ['required', 'string', 'max:255'],\n            'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],\n            'password' => ['required', 'string', 'min:8', 'confirmed'],\n        ]);\n    }\n\n    /**\n     * Create a new user instance after a valid registration.\n     *\n     * @param  array  $data\n     * @return \\App\\User\n     */\n    protected function create(array $data)\n    {\n        return User::create([\n            'name' => $data['name'],\n            'email' => $data['email'],\n            'password' => Hash::make($data['password']),\n            'role' => 'user',\n        ]);\n    }\n}\n"
  },
  {
    "path": "app/Http/Controllers/Auth/ResetPasswordController.php",
    "content": "<?php\n\nnamespace App\\Http\\Controllers\\Auth;\n\nuse App\\Http\\Controllers\\Controller;\nuse Illuminate\\Foundation\\Auth\\ResetsPasswords;\n\nclass ResetPasswordController extends Controller\n{\n    /*\n    |--------------------------------------------------------------------------\n    | Password Reset Controller\n    |--------------------------------------------------------------------------\n    |\n    | This controller is responsible for handling password reset requests\n    | and uses a simple trait to include this behavior. You're free to\n    | explore this trait and override any methods you wish to tweak.\n    |\n    */\n\n    use ResetsPasswords;\n\n    /**\n     * Where to redirect users after resetting their password.\n     *\n     * @var string\n     */\n    protected $redirectTo = '/home';\n}\n"
  },
  {
    "path": "app/Http/Controllers/Auth/VerificationController.php",
    "content": "<?php\n\nnamespace App\\Http\\Controllers\\Auth;\n\nuse App\\Http\\Controllers\\Controller;\nuse Illuminate\\Foundation\\Auth\\VerifiesEmails;\n\nclass VerificationController extends Controller\n{\n    /*\n    |--------------------------------------------------------------------------\n    | Email Verification Controller\n    |--------------------------------------------------------------------------\n    |\n    | This controller is responsible for handling email verification for any\n    | user that recently registered with the application. Emails may also\n    | be re-sent if the user didn't receive the original email message.\n    |\n    */\n\n    use VerifiesEmails;\n\n    /**\n     * Where to redirect users after verification.\n     *\n     * @var string\n     */\n    protected $redirectTo = '/home';\n\n    /**\n     * Create a new controller instance.\n     *\n     * @return void\n     */\n    public function __construct()\n    {\n        $this->middleware('auth');\n        $this->middleware('signed')->only('verify');\n        $this->middleware('throttle:6,1')->only('verify', 'resend');\n    }\n}\n"
  },
  {
    "path": "app/Http/Controllers/Controller.php",
    "content": "<?php\n\nnamespace App\\Http\\Controllers;\n\nuse Illuminate\\Foundation\\Auth\\Access\\AuthorizesRequests;\nuse Illuminate\\Foundation\\Bus\\DispatchesJobs;\nuse Illuminate\\Foundation\\Validation\\ValidatesRequests;\nuse Illuminate\\Routing\\Controller as BaseController;\n\nclass Controller extends BaseController\n{\n    use AuthorizesRequests, DispatchesJobs, ValidatesRequests;\n}\n"
  },
  {
    "path": "app/Http/Controllers/HomeController.php",
    "content": "<?php\n\nnamespace App\\Http\\Controllers;\n\nuse Illuminate\\Http\\Request;\n\nclass HomeController extends Controller\n{\n    /**\n     * Create a new controller instance.\n     *\n     * @return void\n     */\n    public function __construct()\n    {\n        $this->middleware(['auth','verified']);\n    }\n\n    /**\n     * Show the application dashboard.\n     *\n     * @return \\Illuminate\\Contracts\\Support\\Renderable\n     */\n    public function index()\n    {\n        return view('user.index');\n    }\n}\n"
  },
  {
    "path": "app/Http/Controllers/MerekController.php",
    "content": "<?php\n\nnamespace App\\Http\\Controllers;\n\nuse App\\Merek;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Support\\Str;\n\nclass MerekController extends Controller\n{\n    /**\n     * Display a listing of the resource.\n     *\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function index()\n    {\n        $merek = Merek::paginate(10);\n        return view('admin.merek.index', compact('merek'));\n    }\n\n    /**\n     * Show the form for creating a new resource.\n     *\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function create()\n    {\n        return view('admin.merek.create');\n    }\n\n    /**\n     * Store a newly created resource in storage.\n     *\n     * @param  \\Illuminate\\Http\\Request  $request\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function store(Request $request)\n    {\n        $this->validate($request, [\n          'name' => 'required|min:3'\n        ]);\n\n        $merek = Merek::create([\n          'name' => $request->name,\n        ]);\n\n        return redirect()->back()->with('success', 'Merek Berhasil Disimpan');\n    }\n\n    /**\n     * Display the specified resource.\n     *\n     * @param  int  $id\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function show($id)\n    {\n        //\n    }\n\n    /**\n     * Show the form for editing the specified resource.\n     *\n     * @param  int  $id\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function edit($id)\n    {\n        $merek = Merek::findorfail($id);\n        return view('admin.merek.edit', compact('merek'));\n    }\n\n    /**\n     * Update the specified resource in storage.\n     *\n     * @param  \\Illuminate\\Http\\Request  $request\n     * @param  int  $id\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function update(Request $request, $id)\n    {\n      $this->validate($request, [\n        'name' => 'required|min:3'\n      ]);\n\n      $merek_data = [\n        'name' => $request->name,\n      ];\n\n      Merek::whereId($id)->update($merek_data);\n\n      return redirect()->route('merek.index')->with('success', 'Merek Berhasil Diupdate');\n    }\n\n    /**\n     * Remove the specified resource from storage.\n     *\n     * @param  int  $id\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function destroy($id)\n    {\n        $merek = Merek::findorfail($id);\n        $merek->delete();\n\n        return redirect()->back()->with('success', 'Merek Berhasil Dihapus');\n    }\n}\n"
  },
  {
    "path": "app/Http/Controllers/MobilController.php",
    "content": "<?php\n\nnamespace App\\Http\\Controllers;\n\nuse Auth;\nuse App\\Mobil;\nuse App\\Merek;\nuse App\\Order;\nuse App\\Favorite;\nuse App\\User;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Support\\Str;\nuse Session;\n\nclass MobilController extends Controller\n{\n  /**\n   * Display a listing of the resource.\n   *\n   * @return \\Illuminate\\Http\\Response\n   */\n  public function index()\n  {\n    $mobil = Mobil::paginate(10);\n    return view('admin.mobil.index', compact('mobil'));\n  }\n\n  /**\n   * Show the form for creating a new resource.\n   *\n   * @return \\Illuminate\\Http\\Response\n   */\n  public function create()\n  {\n    $merek = Merek::all();\n    return view('admin.mobil.create', compact('merek'));\n  }\n\n  /**\n   * Store a newly created resource in storage.\n   *\n   * @param  \\Illuminate\\Http\\Request  $request\n   * @return \\Illuminate\\Http\\Response\n   */\n  public function store(Request $request)\n  {\n    $this->validate($request, [\n      'type' => 'required',\n      'price' => 'required',\n      'gambar' => 'required'\n    ]);\n\n    $gambar = $request->gambar;\n    $new_gambar = date('Ymdhis') . \"_\" . $gambar->getClientOriginalName();\n\n    Mobil::create([\n      'merek_id' => $request->merek_id,\n      'type' => $request->type,\n      'price' => $request->price,\n      'gambar' => 'uploads/mobil/' . $new_gambar,\n    ]);\n\n    $gambar->move('uploads/mobil/', $new_gambar);\n\n    return redirect()->back()->with('success', 'Postingan Anda Berhasil Disimpan');\n  }\n\n  /**\n   * Display the specified resource.\n   *\n   * @param  int  $id\n   * @return \\Illuminate\\Http\\Response\n   */\n  public function show($id)\n  {\n    $mobil = Mobil::findorfail($id);\n    $merek = Merek::all();\n    $produk = Mobil::where('merek_id', $mobil->merek_id)->orderBy('created_at', 'DESC')->limit(5)->get();\n    return view('user.show', compact('mobil', 'merek', 'produk'));\n  }\n\n  /**\n   * Show the form for editing the specified resource.\n   *\n   * @param  int  $id\n   * @return \\Illuminate\\Http\\Response\n   */\n  public function edit($id)\n  {\n    $mobil = Mobil::findorfail($id);\n    $merek = Merek::all();\n    return view('admin.mobil.edit', compact('mobil', 'merek'));\n  }\n\n  /**\n   * Update the specified resource in storage.\n   *\n   * @param  \\Illuminate\\Http\\Request  $request\n   * @param  int  $id\n   * @return \\Illuminate\\Http\\Response\n   */\n  public function update(Request $request, $id)\n  {\n    $this->validate($request, [\n      'price' => 'required',\n      'type' => 'required'\n    ]);\n\n    $mobil = Mobil::findorfail($id);\n\n    if ($request->gambar == true) {\n      $gambar = $request->gambar;\n      $new_gambar = date('Ymdhis') . \"_\" . $gambar->getClientOriginalName();\n      $gambar->move('uploads/mobil/', $new_gambar);\n      $mobil_data = [\n        'merek_id' => $request->merek_id,\n        'type' => $request->type,\n        'price' => $request->price,\n        'gambar' => 'uploads/mobil/' . $new_gambar,\n      ];\n    } else {\n      $mobil_data = [\n        'merek_id' => $request->merek_id,\n        'price' => $request->price,\n        'type' => $request->type,\n      ];\n    }\n\n    $mobil->update($mobil_data);\n\n    return redirect()->back()->with('success', 'Postingan Anda Berhasil Diupdate');\n  }\n\n  /**\n   * Remove the specified resource from storage.\n   *\n   * @param  int  $id\n   * @return \\Illuminate\\Http\\Response\n   */\n  public function destroy($id)\n  {\n    $mobil = Mobil::findorfail($id);\n    $mobil->delete();\n\n    return redirect()->back()->with('success', 'Postingan Anda Berhasil Dihapus (Silahkan cek trashed mobil)');\n  }\n\n  public function new()\n  {\n    $mobil = Mobil::paginate(10);\n    $merek = Merek::all();\n    return view('admin.mobil.index', compact('mobil', 'merek'));\n  }\n\n  public function tampil_hapus()\n  {\n    $mobil = Mobil::onlyTrashed()->paginate(10);\n    return view('admin.mobil.tampil_hapus', compact('mobil'));\n  }\n\n  public function restore($id)\n  {\n    $mobil = Mobil::withTrashed()->where('id', $id)->first();\n    $mobil->restore();\n\n    return redirect()->back()->with('success', 'Postingan Anda Berhasil Direstore (Silahkan cek list mobil)');\n  }\n\n  public function kill($id)\n  {\n    $mobil = Mobil::withTrashed()->where('id', $id)->first();\n    $mobil->forceDelete();\n\n    return redirect()->back()->with('success', 'Postingan Anda Berhasil Dihapus Secara Permanent');\n  }\n\n  public function home()\n  {\n    $mobil = Mobil::orderBy('created_at', 'DESC')->get();\n    $car = Mobil::orderBy('created_at', 'DESC')->limit(5)->get();\n    $merek = Merek::all();\n    return view('user.index', compact('mobil', 'car', 'merek'));\n  }\n\n  public function cart()\n  {\n    $cart = session()->get('cart');\n    $mobil = Mobil::paginate(10);\n\n    $this->item['chart'] = $cart;\n    $this->item['mobil'] = $mobil;\n\n    $merek = Merek::all();\n    $produk = Mobil::orderBy('created_at', 'DESC')->limit(4)->get();\n\n    return view('user.cart', compact('merek', 'produk'));\n  }\n\n  public function addToCart($id)\n  {\n    $mobil = Mobil::findorfail($id);\n\n    if (!$mobil) {\n      abort(404);\n    }\n\n    $cart = session()->get('cart');\n\n    if (isset($cart[$id])) {\n      $cart[$id]['quantity']++;\n      session()->put('cart', $cart);\n      return redirect()->back()->with('success', 'Product added to cart successfully!');\n    }\n\n    $cart[$id] = [\n      \"mobil_id\" => $mobil->id,\n      \"name\" => $mobil->type,\n      \"brand\" => $mobil->merek->name,\n      \"quantity\" => 1,\n      \"price\" => $mobil->price,\n      \"photo\" => $mobil->gambar,\n    ];\n\n    session()->put('cart', $cart);\n    return redirect()->back()->with('success', 'Product added to cart successfully!');\n  }\n\n  public function update_cart(Request $request)\n  {\n    if ($request->id && $request->quantity) {\n      $cart = session()->get('cart');\n      $cart[$request->id]['quantity'] = $request->quantity;\n      session()->put('cart', $cart);\n      session()->flash('success', 'Cart updated successfully!');\n    }\n  }\n\n  public function remove(Request $request)\n  {\n    if ($request->id) {\n      $cart = session()->get('cart');\n\n      if (isset($cart[$request->id])) {\n        unset($cart[$request->id]);\n\n        session()->put('cart', $cart);\n        Session::flash('success', 'Berhasil menghapus product');\n      }\n    }\n  }\n\n  public function cekout()\n  {\n    $cart = session()->get('cart');\n    $mobil = Mobil::paginate(10);\n\n    $this->item['chart'] = $cart;\n    $this->item['mobil'] = $mobil;\n\n    $merek = Merek::all();\n\n    return view('user.cekout', compact('merek'));\n  }\n\n  public function proses_cekout(Request $request, $id)\n  {\n    $this->validate($request, [\n      'name' => 'required',\n      'address' => 'required',\n      'kelurahan' => 'required',\n      'kabupaten' => 'required',\n      'kecamatan' => 'required',\n      'provinsi' => 'required',\n      'email' => 'required',\n      'kode_pos' => 'required|max:5',\n      'telepon' => 'required|min:10|max:13',\n    ]);\n\n    $user = User::findorfail($id);\n\n    $user_data = [\n      'address' => $request->address,\n      'kelurahan' => $request->kelurahan,\n      'kabupaten' => $request->kabupaten,\n      'kecamatan' => $request->kecamatan,\n      'provinsi' => $request->provinsi,\n      'kode_pos' => $request->kode_pos,\n      'telepon' => $request->telepon,\n    ];\n\n    $user->update($user_data);\n\n    $cart = session()->get('cart');\n\n    foreach ($cart as $details) {\n      Order::create([\n        'user_id' => $id,\n        'mobil_id' => $details['mobil_id'],\n        'quantity' => $details['quantity'],\n        'total' => $details['price'] * $details['quantity'],\n        'payment_status' => 'Belum Dibayar',\n      ]);\n    }\n\n    $request->session()->forget('cart');\n\n    $order = Order::orderBy('created_at', 'DESC')->where('user_id', $id)->first();\n\n    return redirect()->route('pembayaran', $order->id)->with('success', 'Pembelian Berhasil Silahkan Melakukan Pembayaran Melalui Payment Yang Anda Pilih');\n  }\n\n  public function category($id)\n  {\n    $judul = Merek::findorfail($id);\n    $mobil = Mobil::orderBy('created_at', 'DESC')->where('merek_id', $id)->paginate(12);\n    $new = Mobil::orderBy('created_at', 'DESC')->first();\n    $merek = Merek::all();\n\n    return view('user.category', compact('judul', 'mobil', 'new', 'merek'));\n  }\n\n  public function like($id)\n  {\n    Favorite::create([\n      'user_id' => Auth::user()->id,\n      'mobil_id' => $id,\n    ]);\n\n    return redirect()->back()->with('success', 'Product added to favorite successfully!');\n  }\n\n  public function unlike($id)\n  {\n    $like = Favorite::where('user_id', Auth::user()->id)->where('mobil_id', $id)->first();\n    $like->delete();\n\n    return redirect()->back()->with('success', 'Product cancel to favorite successfully!');\n  }\n\n  public function favorite()\n  {\n    $like = Favorite::where('user_id', Auth::user()->id)->get();\n    $new = Mobil::orderBy('created_at', 'DESC')->first();\n    $merek = Merek::all();\n\n    return view('user.favorite', compact('like', 'new', 'merek'));\n  }\n}\n"
  },
  {
    "path": "app/Http/Controllers/OrderController.php",
    "content": "<?php\n\nnamespace App\\Http\\Controllers;\n\nuse Auth;\nuse App\\User;\nuse App\\Merek;\nuse App\\Order;\nuse App\\Bukti;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Support\\Str;\n\nclass OrderController extends Controller\n{\n    /**\n     * Display a listing of the resource.\n     *\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function index()\n    {\n        $order = Order::orderBy('created_at', 'DESC')->paginate(10);\n        return view('admin.order.index', compact('order'));\n    }\n\n    /**\n     * Show the form for creating a new resource.\n     *\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function create()\n    {\n        //\n    }\n\n    /**\n     * Store a newly created resource in storage.\n     *\n     * @param  \\Illuminate\\Http\\Request  $request\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function store(Request $request)\n    {\n        //\n    }\n\n    /**\n     * Display the specified resource.\n     *\n     * @param  int  $id\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function show($id)\n    {\n        $order = Order::findorfail($id);\n        $user = User::findorfail($order->user_id);\n        return view('admin.order.show', compact('order', 'user'));\n    }\n\n    /**\n     * Show the form for editing the specified resource.\n     *\n     * @param  int  $id\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function edit($id)\n    {\n        //\n    }\n\n    /**\n     * Update the specified resource in storage.\n     *\n     * @param  \\Illuminate\\Http\\Request  $request\n     * @param  int  $id\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function update(Request $request, $id)\n    {\n        $order = Order::findorfail($id);\n\n        $order_data = [\n            'payment_status' => 'Sudah Dibayar',\n        ];\n\n        $order->update($order_data);\n\n        return redirect()->route('order.index')->with('success', 'Order Berhasil Dikonfirmasi');\n    }\n\n    /**\n     * Remove the specified resource from storage.\n     *\n     * @param  int  $id\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function destroy($id)\n    {\n        $order = Order::findorfail($id);\n\n        $order_data = [\n            'payment_status' => 'Dicancel',\n        ];\n\n        $order->update($order_data);\n\n        $order = Order::findorfail($id);\n        $order->delete();\n\n        return redirect()->back()->with('success', 'Orderan Anda Berhasil Dicencel');\n    }\n\n    public function tampil_cancel()\n    {\n        $order = Order::orderBy('created_at', 'DESC')->onlyTrashed()->paginate(10);\n        return view('admin.order.tampil_cancel', compact('order'));\n    }\n\n    public function history()\n    {\n        $user = User::findorfail(Auth::user()->id);\n        $order = Order::orderBy('created_at', 'DESC')->where('user_id', $user->id)->paginate(10);\n        $merek = Merek::all();\n\n        return view('user.history', compact('order', 'merek'));\n    }\n\n    public function pembayaran($id)\n    {\n        $order = Order::findorfail($id);\n        $merek = Merek::all();\n\n        return view('user.pembayaran', compact('order', 'merek'));\n    }\n\n    public function proses_pembayaran(Request $request, $id)\n    {\n        $this->validate($request, [\n            'nama_bank' => 'required',\n            'nama_pengirim' => 'required',\n          ]);\n\n        $order = Order::findorfail($id);\n\n        $order_data = [\n            'payment_status' => 'Dipending',\n        ];\n\n        $order->update($order_data);\n        $gambar = $request->gambar;\n        $foto = date('Ymdhis') . \"_\" . $gambar->getClientOriginalName();\n        Bukti::create([\n            'order_id' => $id,\n            'foto' => 'uploads/bukti/' . $foto,\n            'nama_bank' => $request->nama_bank,\n            'nama_pengirim' => $request->nama_pengirim,\n        ]);\n        $gambar->move('uploads/bukti/', $foto);\n\n        return redirect()->route('pembayaran.success')->with('success', 'Pembelian Berhasil Silahkan Melakukan Pembayaran Melalui Payment Yang Anda Pilih');\n    }\n\n    public function success()\n    {\n        $merek = Merek::all();\n\n        return view('user.success', compact('merek'));\n    }\n}\n"
  },
  {
    "path": "app/Http/Kernel.php",
    "content": "<?php\n\nnamespace App\\Http;\n\nuse Illuminate\\Foundation\\Http\\Kernel as HttpKernel;\n\nclass Kernel extends HttpKernel\n{\n    /**\n     * The application's global HTTP middleware stack.\n     *\n     * These middleware are run during every request to your application.\n     *\n     * @var array\n     */\n    protected $middleware = [\n        \\App\\Http\\Middleware\\TrustProxies::class,\n        \\App\\Http\\Middleware\\CheckForMaintenanceMode::class,\n        \\Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize::class,\n        \\App\\Http\\Middleware\\TrimStrings::class,\n        \\Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull::class,\n    ];\n\n    /**\n     * The application's route middleware groups.\n     *\n     * @var array\n     */\n    protected $middlewareGroups = [\n        'web' => [\n            \\App\\Http\\Middleware\\EncryptCookies::class,\n            \\Illuminate\\Cookie\\Middleware\\AddQueuedCookiesToResponse::class,\n            \\Illuminate\\Session\\Middleware\\StartSession::class,\n            // \\Illuminate\\Session\\Middleware\\AuthenticateSession::class,\n            \\Illuminate\\View\\Middleware\\ShareErrorsFromSession::class,\n            \\App\\Http\\Middleware\\VerifyCsrfToken::class,\n            \\Illuminate\\Routing\\Middleware\\SubstituteBindings::class,\n        ],\n\n        'api' => [\n            'throttle:60,1',\n            'bindings',\n        ],\n    ];\n\n    /**\n     * The application's route middleware.\n     *\n     * These middleware may be assigned to groups or used individually.\n     *\n     * @var array\n     */\n    protected $routeMiddleware = [\n        'auth' => \\App\\Http\\Middleware\\Authenticate::class,\n        'auth.basic' => \\Illuminate\\Auth\\Middleware\\AuthenticateWithBasicAuth::class,\n        'bindings' => \\Illuminate\\Routing\\Middleware\\SubstituteBindings::class,\n        'cache.headers' => \\Illuminate\\Http\\Middleware\\SetCacheHeaders::class,\n        'can' => \\Illuminate\\Auth\\Middleware\\Authorize::class,\n        'guest' => \\App\\Http\\Middleware\\RedirectIfAuthenticated::class,\n        'password.confirm' => \\Illuminate\\Auth\\Middleware\\RequirePassword::class,\n        'signed' => \\Illuminate\\Routing\\Middleware\\ValidateSignature::class,\n        'throttle' => \\Illuminate\\Routing\\Middleware\\ThrottleRequests::class,\n        'verified' => \\Illuminate\\Auth\\Middleware\\EnsureEmailIsVerified::class,\n        'role' => \\App\\Http\\Middleware\\CheckRole::class,\n    ];\n\n    /**\n     * The priority-sorted list of middleware.\n     *\n     * This forces non-global middleware to always be in the given order.\n     *\n     * @var array\n     */\n    protected $middlewarePriority = [\n        \\Illuminate\\Session\\Middleware\\StartSession::class,\n        \\Illuminate\\View\\Middleware\\ShareErrorsFromSession::class,\n        \\App\\Http\\Middleware\\Authenticate::class,\n        \\App\\Http\\Middleware\\CheckRole::class,\n        \\Illuminate\\Routing\\Middleware\\ThrottleRequests::class,\n        \\Illuminate\\Session\\Middleware\\AuthenticateSession::class,\n        \\Illuminate\\Routing\\Middleware\\SubstituteBindings::class,\n        \\Illuminate\\Auth\\Middleware\\Authorize::class,\n    ];\n}\n"
  },
  {
    "path": "app/Http/Middleware/Authenticate.php",
    "content": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse Illuminate\\Auth\\Middleware\\Authenticate as Middleware;\n\nclass Authenticate extends Middleware\n{\n    /**\n     * Get the path the user should be redirected to when they are not authenticated.\n     *\n     * @param  \\Illuminate\\Http\\Request  $request\n     * @return string\n     */\n    protected function redirectTo($request)\n    {\n        if (! $request->expectsJson()) {\n            return route('login');\n        }\n    }\n}\n"
  },
  {
    "path": "app/Http/Middleware/CheckForMaintenanceMode.php",
    "content": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse Illuminate\\Foundation\\Http\\Middleware\\CheckForMaintenanceMode as Middleware;\n\nclass CheckForMaintenanceMode extends Middleware\n{\n    /**\n     * The URIs that should be reachable while maintenance mode is enabled.\n     *\n     * @var array\n     */\n    protected $except = [\n        //\n    ];\n}\n"
  },
  {
    "path": "app/Http/Middleware/CheckRole.php",
    "content": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse Closure;\n\nclass CheckRole\n{\n    /**\n     * Handle an incoming request.\n     *\n     * @param  \\Illuminate\\Http\\Request  $request\n     * @param  \\Closure  $next\n     * @return mixed\n     */\n    public function handle($request, Closure $next)\n    {\n        if ($request->user()->role != 'admin') {\n            return redirect('home');\n        }\n\n        return $next($request);\n    }\n}\n"
  },
  {
    "path": "app/Http/Middleware/EncryptCookies.php",
    "content": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse Illuminate\\Cookie\\Middleware\\EncryptCookies as Middleware;\n\nclass EncryptCookies extends Middleware\n{\n    /**\n     * The names of the cookies that should not be encrypted.\n     *\n     * @var array\n     */\n    protected $except = [\n        //\n    ];\n}\n"
  },
  {
    "path": "app/Http/Middleware/RedirectIfAuthenticated.php",
    "content": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse Closure;\nuse Illuminate\\Support\\Facades\\Auth;\n\nclass RedirectIfAuthenticated\n{\n    /**\n     * Handle an incoming request.\n     *\n     * @param  \\Illuminate\\Http\\Request  $request\n     * @param  \\Closure  $next\n     * @param  string|null  $guard\n     * @return mixed\n     */\n    public function handle($request, Closure $next, $guard = null)\n    {\n        if (Auth::guard($guard)->check()) {\n            return redirect('/home');\n        }\n\n        return $next($request);\n    }\n}\n"
  },
  {
    "path": "app/Http/Middleware/TrimStrings.php",
    "content": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse Illuminate\\Foundation\\Http\\Middleware\\TrimStrings as Middleware;\n\nclass TrimStrings extends Middleware\n{\n    /**\n     * The names of the attributes that should not be trimmed.\n     *\n     * @var array\n     */\n    protected $except = [\n        'password',\n        'password_confirmation',\n    ];\n}\n"
  },
  {
    "path": "app/Http/Middleware/TrustProxies.php",
    "content": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse Fideloper\\Proxy\\TrustProxies as Middleware;\nuse Illuminate\\Http\\Request;\n\nclass TrustProxies extends Middleware\n{\n    /**\n     * The trusted proxies for this application.\n     *\n     * @var array|string\n     */\n    protected $proxies;\n\n    /**\n     * The headers that should be used to detect proxies.\n     *\n     * @var int\n     */\n    protected $headers = Request::HEADER_X_FORWARDED_ALL;\n}\n"
  },
  {
    "path": "app/Http/Middleware/VerifyCsrfToken.php",
    "content": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse Illuminate\\Foundation\\Http\\Middleware\\VerifyCsrfToken as Middleware;\n\nclass VerifyCsrfToken extends Middleware\n{\n    /**\n     * Indicates whether the XSRF-TOKEN cookie should be set on the response.\n     *\n     * @var bool\n     */\n    protected $addHttpCookie = true;\n\n    /**\n     * The URIs that should be excluded from CSRF verification.\n     *\n     * @var array\n     */\n    protected $except = [\n        //\n    ];\n}\n"
  },
  {
    "path": "app/Merek.php",
    "content": "<?php\n\nnamespace App;\n\nuse Illuminate\\Database\\Eloquent\\Model;\n\nclass Merek extends Model\n{\n    protected $fillable = ['name'];\n\n    public function jumlah($id)\n    {\n        $mobil = Mobil::where('merek_id', $id)->count();\n        return $mobil;\n    }\n\n    protected $table = 'merek';\n}\n"
  },
  {
    "path": "app/Mobil.php",
    "content": "<?php\n\nnamespace App;\n\nuse Auth;\nuse Illuminate\\Database\\Eloquent\\Model;\nuse Illuminate\\Database\\Eloquent\\SoftDeletes;\n\nclass Mobil extends Model\n{\n  use SoftDeletes;\n\n  protected $fillable = ['merek_id', 'type', 'price', 'gambar', 'stock'];\n\n  public function merek()\n  {\n    return $this->belongsTo('App\\Merek');\n  }\n\n  public function like($id)\n  {\n    $like = Favorite::where('user_id', Auth::user()->id)->where('mobil_id', $id)->first();\n    return $like;\n  }\n\n  protected $table = 'mobil';\n}\n"
  },
  {
    "path": "app/Order.php",
    "content": "<?php\n\nnamespace App;\n\nuse Illuminate\\Database\\Eloquent\\Model;\nuse Illuminate\\Database\\Eloquent\\SoftDeletes;\n\nclass Order extends Model\n{\n  use SoftDeletes;\n\n  protected $fillable = ['user_id', 'mobil_id', 'quantity', 'total', 'payment_status'];\n\n  public function mobil()\n  {\n    return $this->belongsTo('App\\Mobil');\n  }\n\n  public function namaMobil($id)\n  {\n    $mobil = Mobil::findorfail($id);\n    $namaMobil = $mobil->merek->name . ' ' . $mobil->type;\n    return $namaMobil;\n  }\n\n  public function bukti($id)\n  {\n    $bukti = Bukti::where('order_id', $id)->first();\n    return $bukti;\n  }\n\n  public function user()\n  {\n    return $this->belongsTo('App\\User');\n  }\n\n  protected $table = 'order';\n}\n"
  },
  {
    "path": "app/Providers/AppServiceProvider.php",
    "content": "<?php\n\nnamespace App\\Providers;\n\nuse Illuminate\\Support\\ServiceProvider;\n\nclass AppServiceProvider extends ServiceProvider\n{\n    /**\n     * Register any application services.\n     *\n     * @return void\n     */\n    public function register()\n    {\n        //\n    }\n\n    /**\n     * Bootstrap any application services.\n     *\n     * @return void\n     */\n    public function boot()\n    {\n        //\n    }\n}\n"
  },
  {
    "path": "app/Providers/AuthServiceProvider.php",
    "content": "<?php\n\nnamespace App\\Providers;\n\nuse Illuminate\\Foundation\\Support\\Providers\\AuthServiceProvider as ServiceProvider;\nuse Illuminate\\Support\\Facades\\Gate;\n\nclass AuthServiceProvider extends ServiceProvider\n{\n    /**\n     * The policy mappings for the application.\n     *\n     * @var array\n     */\n    protected $policies = [\n        // 'App\\Model' => 'App\\Policies\\ModelPolicy',\n    ];\n\n    /**\n     * Register any authentication / authorization services.\n     *\n     * @return void\n     */\n    public function boot()\n    {\n        $this->registerPolicies();\n\n        //\n    }\n}\n"
  },
  {
    "path": "app/Providers/BroadcastServiceProvider.php",
    "content": "<?php\n\nnamespace App\\Providers;\n\nuse Illuminate\\Support\\Facades\\Broadcast;\nuse Illuminate\\Support\\ServiceProvider;\n\nclass BroadcastServiceProvider extends ServiceProvider\n{\n    /**\n     * Bootstrap any application services.\n     *\n     * @return void\n     */\n    public function boot()\n    {\n        Broadcast::routes();\n\n        require base_path('routes/channels.php');\n    }\n}\n"
  },
  {
    "path": "app/Providers/EventServiceProvider.php",
    "content": "<?php\n\nnamespace App\\Providers;\n\nuse Illuminate\\Auth\\Events\\Registered;\nuse Illuminate\\Auth\\Listeners\\SendEmailVerificationNotification;\nuse Illuminate\\Foundation\\Support\\Providers\\EventServiceProvider as ServiceProvider;\nuse Illuminate\\Support\\Facades\\Event;\n\nclass EventServiceProvider extends ServiceProvider\n{\n    /**\n     * The event listener mappings for the application.\n     *\n     * @var array\n     */\n    protected $listen = [\n        Registered::class => [\n            SendEmailVerificationNotification::class,\n        ],\n    ];\n\n    /**\n     * Register any events for your application.\n     *\n     * @return void\n     */\n    public function boot()\n    {\n        parent::boot();\n\n        //\n    }\n}\n"
  },
  {
    "path": "app/Providers/RouteServiceProvider.php",
    "content": "<?php\n\nnamespace App\\Providers;\n\nuse Illuminate\\Foundation\\Support\\Providers\\RouteServiceProvider as ServiceProvider;\nuse Illuminate\\Support\\Facades\\Route;\n\nclass RouteServiceProvider extends ServiceProvider\n{\n    /**\n     * This namespace is applied to your controller routes.\n     *\n     * In addition, it is set as the URL generator's root namespace.\n     *\n     * @var string\n     */\n    protected $namespace = 'App\\Http\\Controllers';\n\n    /**\n     * Define your route model bindings, pattern filters, etc.\n     *\n     * @return void\n     */\n    public function boot()\n    {\n        //\n\n        parent::boot();\n    }\n\n    /**\n     * Define the routes for the application.\n     *\n     * @return void\n     */\n    public function map()\n    {\n        $this->mapApiRoutes();\n\n        $this->mapWebRoutes();\n\n        //\n    }\n\n    /**\n     * Define the \"web\" routes for the application.\n     *\n     * These routes all receive session state, CSRF protection, etc.\n     *\n     * @return void\n     */\n    protected function mapWebRoutes()\n    {\n        Route::middleware('web')\n             ->namespace($this->namespace)\n             ->group(base_path('routes/web.php'));\n    }\n\n    /**\n     * Define the \"api\" routes for the application.\n     *\n     * These routes are typically stateless.\n     *\n     * @return void\n     */\n    protected function mapApiRoutes()\n    {\n        Route::prefix('api')\n             ->middleware('api')\n             ->namespace($this->namespace)\n             ->group(base_path('routes/api.php'));\n    }\n}\n"
  },
  {
    "path": "app/User.php",
    "content": "<?php\n\nnamespace App;\n\nuse Illuminate\\Foundation\\Auth\\User as Authenticatable;\nuse Illuminate\\Notifications\\Notifiable;\n\nclass User extends Authenticatable\n{\n    use Notifiable;\n\n    /**\n     * The attributes that are mass assignable.\n     *\n     * @var array\n     */\n    protected $fillable = [\n        'name', 'gambar', 'email', 'password', 'role', 'address', 'kelurahan', 'kabupaten', 'kecamatan', 'provinsi', 'kode_pos', 'telepon', 'pekerjaan', 'tanggal_lahir'\n    ];\n\n    /**\n     * The attributes that should be hidden for arrays.\n     *\n     * @var array\n     */\n    protected $hidden = [\n        'password', 'remember_token',\n    ];\n\n    /**\n     * The attributes that should be cast to native types.\n     *\n     * @var array\n     */\n    protected $casts = [\n        'email_verified_at' => 'datetime',\n    ];\n\n    protected $table = 'users';\n}\n"
  },
  {
    "path": "artisan",
    "content": "#!/usr/bin/env php\n<?php\n\ndefine('LARAVEL_START', microtime(true));\n\n/*\n|--------------------------------------------------------------------------\n| Register The Auto Loader\n|--------------------------------------------------------------------------\n|\n| Composer provides a convenient, automatically generated class loader\n| for our application. We just need to utilize it! We'll require it\n| into the script here so that we do not have to worry about the\n| loading of any our classes \"manually\". Feels great to relax.\n|\n*/\n\nrequire __DIR__.'/vendor/autoload.php';\n\n$app = require_once __DIR__.'/bootstrap/app.php';\n\n/*\n|--------------------------------------------------------------------------\n| Run The Artisan Application\n|--------------------------------------------------------------------------\n|\n| When we run the console application, the current CLI command will be\n| executed in this console and the response sent back to a terminal\n| or another output device for the developers. Here goes nothing!\n|\n*/\n\n$kernel = $app->make(Illuminate\\Contracts\\Console\\Kernel::class);\n\n$status = $kernel->handle(\n    $input = new Symfony\\Component\\Console\\Input\\ArgvInput,\n    new Symfony\\Component\\Console\\Output\\ConsoleOutput\n);\n\n/*\n|--------------------------------------------------------------------------\n| Shutdown The Application\n|--------------------------------------------------------------------------\n|\n| Once Artisan has finished running, we will fire off the shutdown events\n| so that any final work may be done by the application before we shut\n| down the process. This is the last thing to happen to the request.\n|\n*/\n\n$kernel->terminate($input, $status);\n\nexit($status);\n"
  },
  {
    "path": "bootstrap/app.php",
    "content": "<?php\n\n/*\n|--------------------------------------------------------------------------\n| Create The Application\n|--------------------------------------------------------------------------\n|\n| The first thing we will do is create a new Laravel application instance\n| which serves as the \"glue\" for all the components of Laravel, and is\n| the IoC container for the system binding all of the various parts.\n|\n*/\n\n$app = new Illuminate\\Foundation\\Application(\n    $_ENV['APP_BASE_PATH'] ?? dirname(__DIR__)\n);\n\n/*\n|--------------------------------------------------------------------------\n| Bind Important Interfaces\n|--------------------------------------------------------------------------\n|\n| Next, we need to bind some important interfaces into the container so\n| we will be able to resolve them when needed. The kernels serve the\n| incoming requests to this application from both the web and CLI.\n|\n*/\n\n$app->singleton(\n    Illuminate\\Contracts\\Http\\Kernel::class,\n    App\\Http\\Kernel::class\n);\n\n$app->singleton(\n    Illuminate\\Contracts\\Console\\Kernel::class,\n    App\\Console\\Kernel::class\n);\n\n$app->singleton(\n    Illuminate\\Contracts\\Debug\\ExceptionHandler::class,\n    App\\Exceptions\\Handler::class\n);\n\n/*\n|--------------------------------------------------------------------------\n| Return The Application\n|--------------------------------------------------------------------------\n|\n| This script returns the application instance. The instance is given to\n| the calling script so we can separate the building of the instances\n| from the actual running of the application and sending responses.\n|\n*/\n\nreturn $app;\n"
  },
  {
    "path": "bootstrap/cache/.gitignore",
    "content": "*\n!.gitignore\n"
  },
  {
    "path": "composer.json",
    "content": "{\n    \"name\": \"laravel/laravel\",\n    \"type\": \"project\",\n    \"description\": \"The Laravel Framework.\",\n    \"keywords\": [\n        \"framework\",\n        \"laravel\"\n    ],\n    \"license\": \"MIT\",\n    \"require\": {\n        \"php\": \"^7.2\",\n        \"fideloper/proxy\": \"^4.0\",\n        \"laravel/framework\": \"^6.2\",\n        \"laravel/tinker\": \"^1.0\"\n    },\n    \"require-dev\": {\n        \"facade/ignition\": \"^1.4\",\n        \"fzaninotto/faker\": \"^1.4\",\n        \"laravel/ui\": \"^1.1\",\n        \"mockery/mockery\": \"^1.0\",\n        \"nunomaduro/collision\": \"^3.0\",\n        \"phpunit/phpunit\": \"^8.0\"\n    },\n    \"config\": {\n        \"optimize-autoloader\": true,\n        \"preferred-install\": \"dist\",\n        \"sort-packages\": true\n    },\n    \"extra\": {\n        \"laravel\": {\n            \"dont-discover\": []\n        }\n    },\n    \"autoload\": {\n        \"psr-4\": {\n            \"App\\\\\": \"app/\"\n        },\n        \"classmap\": [\n            \"database/seeds\",\n            \"database/factories\"\n        ]\n    },\n    \"autoload-dev\": {\n        \"psr-4\": {\n            \"Tests\\\\\": \"tests/\"\n        }\n    },\n    \"minimum-stability\": \"dev\",\n    \"prefer-stable\": true,\n    \"scripts\": {\n        \"post-autoload-dump\": [\n            \"Illuminate\\\\Foundation\\\\ComposerScripts::postAutoloadDump\",\n            \"@php artisan package:discover --ansi\"\n        ],\n        \"post-root-package-install\": [\n            \"@php -r \\\"file_exists('.env') || copy('.env.example', '.env');\\\"\"\n        ],\n        \"post-create-project-cmd\": [\n            \"@php artisan key:generate --ansi\"\n        ]\n    }\n}\n"
  },
  {
    "path": "config/app.php",
    "content": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Application Name\n    |--------------------------------------------------------------------------\n    |\n    | This value is the name of your application. This value is used when the\n    | framework needs to place the application's name in a notification or\n    | any other location as required by the application or its packages.\n    |\n    */\n\n    'name' => env('APP_NAME', 'Laravel'),\n\n    /*\n    |--------------------------------------------------------------------------\n    | Application Environment\n    |--------------------------------------------------------------------------\n    |\n    | This value determines the \"environment\" your application is currently\n    | running in. This may determine how you prefer to configure various\n    | services the application utilizes. Set this in your \".env\" file.\n    |\n    */\n\n    'env' => env('APP_ENV', 'production'),\n\n    /*\n    |--------------------------------------------------------------------------\n    | Application Debug Mode\n    |--------------------------------------------------------------------------\n    |\n    | When your application is in debug mode, detailed error messages with\n    | stack traces will be shown on every error that occurs within your\n    | application. If disabled, a simple generic error page is shown.\n    |\n    */\n\n    'debug' => env('APP_DEBUG', false),\n\n    /*\n    |--------------------------------------------------------------------------\n    | Application URL\n    |--------------------------------------------------------------------------\n    |\n    | This URL is used by the console to properly generate URLs when using\n    | the Artisan command line tool. You should set this to the root of\n    | your application so that it is used when running Artisan tasks.\n    |\n    */\n\n    'url' => env('APP_URL', 'http://localhost'),\n\n    'asset_url' => env('ASSET_URL', null),\n\n    /*\n    |--------------------------------------------------------------------------\n    | Application Timezone\n    |--------------------------------------------------------------------------\n    |\n    | Here you may specify the default timezone for your application, which\n    | will be used by the PHP date and date-time functions. We have gone\n    | ahead and set this to a sensible default for you out of the box.\n    |\n    */\n\n    'timezone' => 'UTC',\n\n    /*\n    |--------------------------------------------------------------------------\n    | Application Locale Configuration\n    |--------------------------------------------------------------------------\n    |\n    | The application locale determines the default locale that will be used\n    | by the translation service provider. You are free to set this value\n    | to any of the locales which will be supported by the application.\n    |\n    */\n\n    'locale' => 'en',\n\n    /*\n    |--------------------------------------------------------------------------\n    | Application Fallback Locale\n    |--------------------------------------------------------------------------\n    |\n    | The fallback locale determines the locale to use when the current one\n    | is not available. You may change the value to correspond to any of\n    | the language folders that are provided through your application.\n    |\n    */\n\n    'fallback_locale' => 'en',\n\n    /*\n    |--------------------------------------------------------------------------\n    | Faker Locale\n    |--------------------------------------------------------------------------\n    |\n    | This locale will be used by the Faker PHP library when generating fake\n    | data for your database seeds. For example, this will be used to get\n    | localized telephone numbers, street address information and more.\n    |\n    */\n\n    'faker_locale' => 'en_US',\n\n    /*\n    |--------------------------------------------------------------------------\n    | Encryption Key\n    |--------------------------------------------------------------------------\n    |\n    | This key is used by the Illuminate encrypter service and should be set\n    | to a random, 32 character string, otherwise these encrypted strings\n    | will not be safe. Please do this before deploying an application!\n    |\n    */\n\n    'key' => env('APP_KEY'),\n\n    'cipher' => 'AES-256-CBC',\n\n    /*\n    |--------------------------------------------------------------------------\n    | Autoloaded Service Providers\n    |--------------------------------------------------------------------------\n    |\n    | The service providers listed here will be automatically loaded on the\n    | request to your application. Feel free to add your own services to\n    | this array to grant expanded functionality to your applications.\n    |\n    */\n\n    'providers' => [\n\n        /*\n         * Laravel Framework Service Providers...\n         */\n        Illuminate\\Auth\\AuthServiceProvider::class,\n        Illuminate\\Broadcasting\\BroadcastServiceProvider::class,\n        Illuminate\\Bus\\BusServiceProvider::class,\n        Illuminate\\Cache\\CacheServiceProvider::class,\n        Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider::class,\n        Illuminate\\Cookie\\CookieServiceProvider::class,\n        Illuminate\\Database\\DatabaseServiceProvider::class,\n        Illuminate\\Encryption\\EncryptionServiceProvider::class,\n        Illuminate\\Filesystem\\FilesystemServiceProvider::class,\n        Illuminate\\Foundation\\Providers\\FoundationServiceProvider::class,\n        Illuminate\\Hashing\\HashServiceProvider::class,\n        Illuminate\\Mail\\MailServiceProvider::class,\n        Illuminate\\Notifications\\NotificationServiceProvider::class,\n        Illuminate\\Pagination\\PaginationServiceProvider::class,\n        Illuminate\\Pipeline\\PipelineServiceProvider::class,\n        Illuminate\\Queue\\QueueServiceProvider::class,\n        Illuminate\\Redis\\RedisServiceProvider::class,\n        Illuminate\\Auth\\Passwords\\PasswordResetServiceProvider::class,\n        Illuminate\\Session\\SessionServiceProvider::class,\n        Illuminate\\Translation\\TranslationServiceProvider::class,\n        Illuminate\\Validation\\ValidationServiceProvider::class,\n        Illuminate\\View\\ViewServiceProvider::class,\n\n        /*\n         * Package Service Providers...\n         */\n\n        /*\n         * Application Service Providers...\n         */\n        App\\Providers\\AppServiceProvider::class,\n        App\\Providers\\AuthServiceProvider::class,\n        // App\\Providers\\BroadcastServiceProvider::class,\n        App\\Providers\\EventServiceProvider::class,\n        App\\Providers\\RouteServiceProvider::class,\n\n    ],\n\n    /*\n    |--------------------------------------------------------------------------\n    | Class Aliases\n    |--------------------------------------------------------------------------\n    |\n    | This array of class aliases will be registered when this application\n    | is started. However, feel free to register as many as you wish as\n    | the aliases are \"lazy\" loaded so they don't hinder performance.\n    |\n    */\n\n    'aliases' => [\n\n        'App' => Illuminate\\Support\\Facades\\App::class,\n        'Arr' => Illuminate\\Support\\Arr::class,\n        'Artisan' => Illuminate\\Support\\Facades\\Artisan::class,\n        'Auth' => Illuminate\\Support\\Facades\\Auth::class,\n        'Blade' => Illuminate\\Support\\Facades\\Blade::class,\n        'Broadcast' => Illuminate\\Support\\Facades\\Broadcast::class,\n        'Bus' => Illuminate\\Support\\Facades\\Bus::class,\n        'Cache' => Illuminate\\Support\\Facades\\Cache::class,\n        'Config' => Illuminate\\Support\\Facades\\Config::class,\n        'Cookie' => Illuminate\\Support\\Facades\\Cookie::class,\n        'Crypt' => Illuminate\\Support\\Facades\\Crypt::class,\n        'DB' => Illuminate\\Support\\Facades\\DB::class,\n        'Eloquent' => Illuminate\\Database\\Eloquent\\Model::class,\n        'Event' => Illuminate\\Support\\Facades\\Event::class,\n        'File' => Illuminate\\Support\\Facades\\File::class,\n        'Gate' => Illuminate\\Support\\Facades\\Gate::class,\n        'Hash' => Illuminate\\Support\\Facades\\Hash::class,\n        'Lang' => Illuminate\\Support\\Facades\\Lang::class,\n        'Log' => Illuminate\\Support\\Facades\\Log::class,\n        'Mail' => Illuminate\\Support\\Facades\\Mail::class,\n        'Notification' => Illuminate\\Support\\Facades\\Notification::class,\n        'Password' => Illuminate\\Support\\Facades\\Password::class,\n        'Queue' => Illuminate\\Support\\Facades\\Queue::class,\n        'Redirect' => Illuminate\\Support\\Facades\\Redirect::class,\n        'Redis' => Illuminate\\Support\\Facades\\Redis::class,\n        'Request' => Illuminate\\Support\\Facades\\Request::class,\n        'Response' => Illuminate\\Support\\Facades\\Response::class,\n        'Route' => Illuminate\\Support\\Facades\\Route::class,\n        'Schema' => Illuminate\\Support\\Facades\\Schema::class,\n        'Session' => Illuminate\\Support\\Facades\\Session::class,\n        'Storage' => Illuminate\\Support\\Facades\\Storage::class,\n        'Str' => Illuminate\\Support\\Str::class,\n        'URL' => Illuminate\\Support\\Facades\\URL::class,\n        'Validator' => Illuminate\\Support\\Facades\\Validator::class,\n        'View' => Illuminate\\Support\\Facades\\View::class,\n\n    ],\n\n];\n"
  },
  {
    "path": "config/auth.php",
    "content": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Authentication Defaults\n    |--------------------------------------------------------------------------\n    |\n    | This option controls the default authentication \"guard\" and password\n    | reset options for your application. You may change these defaults\n    | as required, but they're a perfect start for most applications.\n    |\n    */\n\n    'defaults' => [\n        'guard' => 'web',\n        'passwords' => 'users',\n    ],\n\n    /*\n    |--------------------------------------------------------------------------\n    | Authentication Guards\n    |--------------------------------------------------------------------------\n    |\n    | Next, you may define every authentication guard for your application.\n    | Of course, a great default configuration has been defined for you\n    | here which uses session storage and the Eloquent user provider.\n    |\n    | All authentication drivers have a user provider. This defines how the\n    | users are actually retrieved out of your database or other storage\n    | mechanisms used by this application to persist your user's data.\n    |\n    | Supported: \"session\", \"token\"\n    |\n    */\n\n    'guards' => [\n        'web' => [\n            'driver' => 'session',\n            'provider' => 'users',\n        ],\n\n        'api' => [\n            'driver' => 'token',\n            'provider' => 'users',\n            'hash' => false,\n        ],\n    ],\n\n    /*\n    |--------------------------------------------------------------------------\n    | User Providers\n    |--------------------------------------------------------------------------\n    |\n    | All authentication drivers have a user provider. This defines how the\n    | users are actually retrieved out of your database or other storage\n    | mechanisms used by this application to persist your user's data.\n    |\n    | If you have multiple user tables or models you may configure multiple\n    | sources which represent each model / table. These sources may then\n    | be assigned to any extra authentication guards you have defined.\n    |\n    | Supported: \"database\", \"eloquent\"\n    |\n    */\n\n    'providers' => [\n        'users' => [\n            'driver' => 'eloquent',\n            'model' => App\\User::class,\n        ],\n\n        // 'users' => [\n        //     'driver' => 'database',\n        //     'table' => 'users',\n        // ],\n    ],\n\n    /*\n    |--------------------------------------------------------------------------\n    | Resetting Passwords\n    |--------------------------------------------------------------------------\n    |\n    | You may specify multiple password reset configurations if you have more\n    | than one user table or model in the application and you want to have\n    | separate password reset settings based on the specific user types.\n    |\n    | The expire time is the number of minutes that the reset token should be\n    | considered valid. This security feature keeps tokens short-lived so\n    | they have less time to be guessed. You may change this as needed.\n    |\n    */\n\n    'passwords' => [\n        'users' => [\n            'provider' => 'users',\n            'table' => 'password_resets',\n            'expire' => 60,\n            'throttle' => 60,\n        ],\n    ],\n\n    /*\n    |--------------------------------------------------------------------------\n    | Password Confirmation Timeout\n    |--------------------------------------------------------------------------\n    |\n    | Here you may define the amount of seconds before a password confirmation\n    | times out and the user is prompted to re-enter their password via the\n    | confirmation screen. By default, the timeout lasts for three hours.\n    |\n    */\n\n    'password_timeout' => 10800,\n\n];\n"
  },
  {
    "path": "config/broadcasting.php",
    "content": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Default Broadcaster\n    |--------------------------------------------------------------------------\n    |\n    | This option controls the default broadcaster that will be used by the\n    | framework when an event needs to be broadcast. You may set this to\n    | any of the connections defined in the \"connections\" array below.\n    |\n    | Supported: \"pusher\", \"redis\", \"log\", \"null\"\n    |\n    */\n\n    'default' => env('BROADCAST_DRIVER', 'null'),\n\n    /*\n    |--------------------------------------------------------------------------\n    | Broadcast Connections\n    |--------------------------------------------------------------------------\n    |\n    | Here you may define all of the broadcast connections that will be used\n    | to broadcast events to other systems or over websockets. Samples of\n    | each available type of connection are provided inside this array.\n    |\n    */\n\n    'connections' => [\n\n        'pusher' => [\n            'driver' => 'pusher',\n            'key' => env('PUSHER_APP_KEY'),\n            'secret' => env('PUSHER_APP_SECRET'),\n            'app_id' => env('PUSHER_APP_ID'),\n            'options' => [\n                'cluster' => env('PUSHER_APP_CLUSTER'),\n                'useTLS' => true,\n            ],\n        ],\n\n        'redis' => [\n            'driver' => 'redis',\n            'connection' => 'default',\n        ],\n\n        'log' => [\n            'driver' => 'log',\n        ],\n\n        'null' => [\n            'driver' => 'null',\n        ],\n\n    ],\n\n];\n"
  },
  {
    "path": "config/cache.php",
    "content": "<?php\n\nuse Illuminate\\Support\\Str;\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Default Cache Store\n    |--------------------------------------------------------------------------\n    |\n    | This option controls the default cache connection that gets used while\n    | using this caching library. This connection is used when another is\n    | not explicitly specified when executing a given caching function.\n    |\n    | Supported: \"apc\", \"array\", \"database\", \"file\",\n    |            \"memcached\", \"redis\", \"dynamodb\"\n    |\n    */\n\n    'default' => env('CACHE_DRIVER', 'file'),\n\n    /*\n    |--------------------------------------------------------------------------\n    | Cache Stores\n    |--------------------------------------------------------------------------\n    |\n    | Here you may define all of the cache \"stores\" for your application as\n    | well as their drivers. You may even define multiple stores for the\n    | same cache driver to group types of items stored in your caches.\n    |\n    */\n\n    'stores' => [\n\n        'apc' => [\n            'driver' => 'apc',\n        ],\n\n        'array' => [\n            'driver' => 'array',\n        ],\n\n        'database' => [\n            'driver' => 'database',\n            'table' => 'cache',\n            'connection' => null,\n        ],\n\n        'file' => [\n            'driver' => 'file',\n            'path' => storage_path('framework/cache/data'),\n        ],\n\n        'memcached' => [\n            'driver' => 'memcached',\n            'persistent_id' => env('MEMCACHED_PERSISTENT_ID'),\n            'sasl' => [\n                env('MEMCACHED_USERNAME'),\n                env('MEMCACHED_PASSWORD'),\n            ],\n            'options' => [\n                // Memcached::OPT_CONNECT_TIMEOUT => 2000,\n            ],\n            'servers' => [\n                [\n                    'host' => env('MEMCACHED_HOST', '127.0.0.1'),\n                    'port' => env('MEMCACHED_PORT', 11211),\n                    'weight' => 100,\n                ],\n            ],\n        ],\n\n        'redis' => [\n            'driver' => 'redis',\n            'connection' => 'cache',\n        ],\n\n        'dynamodb' => [\n            'driver' => 'dynamodb',\n            'key' => env('AWS_ACCESS_KEY_ID'),\n            'secret' => env('AWS_SECRET_ACCESS_KEY'),\n            'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),\n            'table' => env('DYNAMODB_CACHE_TABLE', 'cache'),\n            'endpoint' => env('DYNAMODB_ENDPOINT'),\n        ],\n\n    ],\n\n    /*\n    |--------------------------------------------------------------------------\n    | Cache Key Prefix\n    |--------------------------------------------------------------------------\n    |\n    | When utilizing a RAM based store such as APC or Memcached, there might\n    | be other applications utilizing the same cache. So, we'll specify a\n    | value to get prefixed to all our keys so we can avoid collisions.\n    |\n    */\n\n    'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'),\n\n];\n"
  },
  {
    "path": "config/database.php",
    "content": "<?php\n\nuse Illuminate\\Support\\Str;\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Default Database Connection Name\n    |--------------------------------------------------------------------------\n    |\n    | Here you may specify which of the database connections below you wish\n    | to use as your default connection for all database work. Of course\n    | you may use many connections at once using the Database library.\n    |\n    */\n\n    'default' => env('DB_CONNECTION', 'mysql'),\n\n    /*\n    |--------------------------------------------------------------------------\n    | Database Connections\n    |--------------------------------------------------------------------------\n    |\n    | Here are each of the database connections setup for your application.\n    | Of course, examples of configuring each database platform that is\n    | supported by Laravel is shown below to make development simple.\n    |\n    |\n    | All database work in Laravel is done through the PHP PDO facilities\n    | so make sure you have the driver for your particular database of\n    | choice installed on your machine before you begin development.\n    |\n    */\n\n    'connections' => [\n\n        'sqlite' => [\n            'driver' => 'sqlite',\n            'url' => env('DATABASE_URL'),\n            'database' => env('DB_DATABASE', database_path('database.sqlite')),\n            'prefix' => '',\n            'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true),\n        ],\n\n        'mysql' => [\n            'driver' => 'mysql',\n            'url' => env('DATABASE_URL'),\n            'host' => env('DB_HOST', '127.0.0.1'),\n            'port' => env('DB_PORT', '3306'),\n            'database' => env('DB_DATABASE', 'forge'),\n            'username' => env('DB_USERNAME', 'forge'),\n            'password' => env('DB_PASSWORD', ''),\n            'unix_socket' => env('DB_SOCKET', ''),\n            'charset' => 'utf8mb4',\n            'collation' => 'utf8mb4_unicode_ci',\n            'prefix' => '',\n            'prefix_indexes' => true,\n            'strict' => true,\n            'engine' => null,\n            'options' => extension_loaded('pdo_mysql') ? array_filter([\n                PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),\n            ]) : [],\n        ],\n\n        'pgsql' => [\n            'driver' => 'pgsql',\n            'url' => env('DATABASE_URL'),\n            'host' => env('DB_HOST', '127.0.0.1'),\n            'port' => env('DB_PORT', '5432'),\n            'database' => env('DB_DATABASE', 'forge'),\n            'username' => env('DB_USERNAME', 'forge'),\n            'password' => env('DB_PASSWORD', ''),\n            'charset' => 'utf8',\n            'prefix' => '',\n            'prefix_indexes' => true,\n            'schema' => 'public',\n            'sslmode' => 'prefer',\n        ],\n\n        'sqlsrv' => [\n            'driver' => 'sqlsrv',\n            'url' => env('DATABASE_URL'),\n            'host' => env('DB_HOST', 'localhost'),\n            'port' => env('DB_PORT', '1433'),\n            'database' => env('DB_DATABASE', 'forge'),\n            'username' => env('DB_USERNAME', 'forge'),\n            'password' => env('DB_PASSWORD', ''),\n            'charset' => 'utf8',\n            'prefix' => '',\n            'prefix_indexes' => true,\n        ],\n\n    ],\n\n    /*\n    |--------------------------------------------------------------------------\n    | Migration Repository Table\n    |--------------------------------------------------------------------------\n    |\n    | This table keeps track of all the migrations that have already run for\n    | your application. Using this information, we can determine which of\n    | the migrations on disk haven't actually been run in the database.\n    |\n    */\n\n    'migrations' => 'migrations',\n\n    /*\n    |--------------------------------------------------------------------------\n    | Redis Databases\n    |--------------------------------------------------------------------------\n    |\n    | Redis is an open source, fast, and advanced key-value store that also\n    | provides a richer body of commands than a typical key-value system\n    | such as APC or Memcached. Laravel makes it easy to dig right in.\n    |\n    */\n\n    'redis' => [\n\n        'client' => env('REDIS_CLIENT', 'phpredis'),\n\n        'options' => [\n            'cluster' => env('REDIS_CLUSTER', 'redis'),\n            'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'),\n        ],\n\n        'default' => [\n            'url' => env('REDIS_URL'),\n            'host' => env('REDIS_HOST', '127.0.0.1'),\n            'password' => env('REDIS_PASSWORD', null),\n            'port' => env('REDIS_PORT', 6379),\n            'database' => env('REDIS_DB', 0),\n        ],\n\n        'cache' => [\n            'url' => env('REDIS_URL'),\n            'host' => env('REDIS_HOST', '127.0.0.1'),\n            'password' => env('REDIS_PASSWORD', null),\n            'port' => env('REDIS_PORT', 6379),\n            'database' => env('REDIS_CACHE_DB', 1),\n        ],\n\n    ],\n\n];\n"
  },
  {
    "path": "config/filesystems.php",
    "content": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Default Filesystem Disk\n    |--------------------------------------------------------------------------\n    |\n    | Here you may specify the default filesystem disk that should be used\n    | by the framework. The \"local\" disk, as well as a variety of cloud\n    | based disks are available to your application. Just store away!\n    |\n    */\n\n    'default' => env('FILESYSTEM_DRIVER', 'local'),\n\n    /*\n    |--------------------------------------------------------------------------\n    | Default Cloud Filesystem Disk\n    |--------------------------------------------------------------------------\n    |\n    | Many applications store files both locally and in the cloud. For this\n    | reason, you may specify a default \"cloud\" driver here. This driver\n    | will be bound as the Cloud disk implementation in the container.\n    |\n    */\n\n    'cloud' => env('FILESYSTEM_CLOUD', 's3'),\n\n    /*\n    |--------------------------------------------------------------------------\n    | Filesystem Disks\n    |--------------------------------------------------------------------------\n    |\n    | Here you may configure as many filesystem \"disks\" as you wish, and you\n    | may even configure multiple disks of the same driver. Defaults have\n    | been setup for each driver as an example of the required options.\n    |\n    | Supported Drivers: \"local\", \"ftp\", \"sftp\", \"s3\"\n    |\n    */\n\n    'disks' => [\n\n        'local' => [\n            'driver' => 'local',\n            'root' => storage_path('app'),\n        ],\n\n        'public' => [\n            'driver' => 'local',\n            'root' => storage_path('app/public'),\n            'url' => env('APP_URL').'/storage',\n            'visibility' => 'public',\n        ],\n\n        's3' => [\n            'driver' => 's3',\n            'key' => env('AWS_ACCESS_KEY_ID'),\n            'secret' => env('AWS_SECRET_ACCESS_KEY'),\n            'region' => env('AWS_DEFAULT_REGION'),\n            'bucket' => env('AWS_BUCKET'),\n            'url' => env('AWS_URL'),\n        ],\n\n    ],\n\n];\n"
  },
  {
    "path": "config/hashing.php",
    "content": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Default Hash Driver\n    |--------------------------------------------------------------------------\n    |\n    | This option controls the default hash driver that will be used to hash\n    | passwords for your application. By default, the bcrypt algorithm is\n    | used; however, you remain free to modify this option if you wish.\n    |\n    | Supported: \"bcrypt\", \"argon\", \"argon2id\"\n    |\n    */\n\n    'driver' => 'bcrypt',\n\n    /*\n    |--------------------------------------------------------------------------\n    | Bcrypt Options\n    |--------------------------------------------------------------------------\n    |\n    | Here you may specify the configuration options that should be used when\n    | passwords are hashed using the Bcrypt algorithm. This will allow you\n    | to control the amount of time it takes to hash the given password.\n    |\n    */\n\n    'bcrypt' => [\n        'rounds' => env('BCRYPT_ROUNDS', 10),\n    ],\n\n    /*\n    |--------------------------------------------------------------------------\n    | Argon Options\n    |--------------------------------------------------------------------------\n    |\n    | Here you may specify the configuration options that should be used when\n    | passwords are hashed using the Argon algorithm. These will allow you\n    | to control the amount of time it takes to hash the given password.\n    |\n    */\n\n    'argon' => [\n        'memory' => 1024,\n        'threads' => 2,\n        'time' => 2,\n    ],\n\n];\n"
  },
  {
    "path": "config/logging.php",
    "content": "<?php\n\nuse Monolog\\Handler\\NullHandler;\nuse Monolog\\Handler\\StreamHandler;\nuse Monolog\\Handler\\SyslogUdpHandler;\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Default Log Channel\n    |--------------------------------------------------------------------------\n    |\n    | This option defines the default log channel that gets used when writing\n    | messages to the logs. The name specified in this option should match\n    | one of the channels defined in the \"channels\" configuration array.\n    |\n    */\n\n    'default' => env('LOG_CHANNEL', 'stack'),\n\n    /*\n    |--------------------------------------------------------------------------\n    | Log Channels\n    |--------------------------------------------------------------------------\n    |\n    | Here you may configure the log channels for your application. Out of\n    | the box, Laravel uses the Monolog PHP logging library. This gives\n    | you a variety of powerful log handlers / formatters to utilize.\n    |\n    | Available Drivers: \"single\", \"daily\", \"slack\", \"syslog\",\n    |                    \"errorlog\", \"monolog\",\n    |                    \"custom\", \"stack\"\n    |\n    */\n\n    'channels' => [\n        'stack' => [\n            'driver' => 'stack',\n            'channels' => ['daily'],\n            'ignore_exceptions' => false,\n        ],\n\n        'single' => [\n            'driver' => 'single',\n            'path' => storage_path('logs/laravel.log'),\n            'level' => 'debug',\n        ],\n\n        'daily' => [\n            'driver' => 'daily',\n            'path' => storage_path('logs/laravel.log'),\n            'level' => 'debug',\n            'days' => 14,\n        ],\n\n        'slack' => [\n            'driver' => 'slack',\n            'url' => env('LOG_SLACK_WEBHOOK_URL'),\n            'username' => 'Laravel Log',\n            'emoji' => ':boom:',\n            'level' => 'critical',\n        ],\n\n        'papertrail' => [\n            'driver' => 'monolog',\n            'level' => 'debug',\n            'handler' => SyslogUdpHandler::class,\n            'handler_with' => [\n                'host' => env('PAPERTRAIL_URL'),\n                'port' => env('PAPERTRAIL_PORT'),\n            ],\n        ],\n\n        'stderr' => [\n            'driver' => 'monolog',\n            'handler' => StreamHandler::class,\n            'formatter' => env('LOG_STDERR_FORMATTER'),\n            'with' => [\n                'stream' => 'php://stderr',\n            ],\n        ],\n\n        'syslog' => [\n            'driver' => 'syslog',\n            'level' => 'debug',\n        ],\n\n        'errorlog' => [\n            'driver' => 'errorlog',\n            'level' => 'debug',\n        ],\n\n        'null' => [\n            'driver' => 'monolog',\n            'handler' => NullHandler::class,\n        ],\n    ],\n\n];\n"
  },
  {
    "path": "config/mail.php",
    "content": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Mail Driver\n    |--------------------------------------------------------------------------\n    |\n    | Laravel supports both SMTP and PHP's \"mail\" function as drivers for the\n    | sending of e-mail. You may specify which one you're using throughout\n    | your application here. By default, Laravel is setup for SMTP mail.\n    |\n    | Supported: \"smtp\", \"sendmail\", \"mailgun\", \"ses\",\n    |            \"postmark\", \"log\", \"array\"\n    |\n    */\n\n    'driver' => env('MAIL_DRIVER', 'smtp'),\n\n    /*\n    |--------------------------------------------------------------------------\n    | SMTP Host Address\n    |--------------------------------------------------------------------------\n    |\n    | Here you may provide the host address of the SMTP server used by your\n    | applications. A default option is provided that is compatible with\n    | the Mailgun mail service which will provide reliable deliveries.\n    |\n    */\n\n    'host' => env('MAIL_HOST', 'smtp.mailgun.org'),\n\n    /*\n    |--------------------------------------------------------------------------\n    | SMTP Host Port\n    |--------------------------------------------------------------------------\n    |\n    | This is the SMTP port used by your application to deliver e-mails to\n    | users of the application. Like the host we have set this value to\n    | stay compatible with the Mailgun e-mail application by default.\n    |\n    */\n\n    'port' => env('MAIL_PORT', 587),\n\n    /*\n    |--------------------------------------------------------------------------\n    | Global \"From\" Address\n    |--------------------------------------------------------------------------\n    |\n    | You may wish for all e-mails sent by your application to be sent from\n    | the same address. Here, you may specify a name and address that is\n    | used globally for all e-mails that are sent by your application.\n    |\n    */\n\n    'from' => [\n        'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'),\n        'name' => env('MAIL_FROM_NAME', 'Example'),\n    ],\n\n    /*\n    |--------------------------------------------------------------------------\n    | E-Mail Encryption Protocol\n    |--------------------------------------------------------------------------\n    |\n    | Here you may specify the encryption protocol that should be used when\n    | the application send e-mail messages. A sensible default using the\n    | transport layer security protocol should provide great security.\n    |\n    */\n\n    'encryption' => env('MAIL_ENCRYPTION', 'tls'),\n\n    /*\n    |--------------------------------------------------------------------------\n    | SMTP Server Username\n    |--------------------------------------------------------------------------\n    |\n    | If your SMTP server requires a username for authentication, you should\n    | set it here. This will get used to authenticate with your server on\n    | connection. You may also set the \"password\" value below this one.\n    |\n    */\n\n    'username' => env('MAIL_USERNAME'),\n\n    'password' => env('MAIL_PASSWORD'),\n\n    /*\n    |--------------------------------------------------------------------------\n    | Sendmail System Path\n    |--------------------------------------------------------------------------\n    |\n    | When using the \"sendmail\" driver to send e-mails, we will need to know\n    | the path to where Sendmail lives on this server. A default path has\n    | been provided here, which will work well on most of your systems.\n    |\n    */\n\n    'sendmail' => '/usr/sbin/sendmail -bs',\n\n    /*\n    |--------------------------------------------------------------------------\n    | Markdown Mail Settings\n    |--------------------------------------------------------------------------\n    |\n    | If you are using Markdown based email rendering, you may configure your\n    | theme and component paths here, allowing you to customize the design\n    | of the emails. Or, you may simply stick with the Laravel defaults!\n    |\n    */\n\n    'markdown' => [\n        'theme' => 'default',\n\n        'paths' => [\n            resource_path('views/vendor/mail'),\n        ],\n    ],\n\n    /*\n    |--------------------------------------------------------------------------\n    | Log Channel\n    |--------------------------------------------------------------------------\n    |\n    | If you are using the \"log\" driver, you may specify the logging channel\n    | if you prefer to keep mail messages separate from other log entries\n    | for simpler reading. Otherwise, the default channel will be used.\n    |\n    */\n\n    'log_channel' => env('MAIL_LOG_CHANNEL'),\n\n];\n"
  },
  {
    "path": "config/queue.php",
    "content": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Default Queue Connection Name\n    |--------------------------------------------------------------------------\n    |\n    | Laravel's queue API supports an assortment of back-ends via a single\n    | API, giving you convenient access to each back-end using the same\n    | syntax for every one. Here you may define a default connection.\n    |\n    */\n\n    'default' => env('QUEUE_CONNECTION', 'sync'),\n\n    /*\n    |--------------------------------------------------------------------------\n    | Queue Connections\n    |--------------------------------------------------------------------------\n    |\n    | Here you may configure the connection information for each server that\n    | is used by your application. A default configuration has been added\n    | for each back-end shipped with Laravel. You are free to add more.\n    |\n    | Drivers: \"sync\", \"database\", \"beanstalkd\", \"sqs\", \"redis\", \"null\"\n    |\n    */\n\n    'connections' => [\n\n        'sync' => [\n            'driver' => 'sync',\n        ],\n\n        'database' => [\n            'driver' => 'database',\n            'table' => 'jobs',\n            'queue' => 'default',\n            'retry_after' => 90,\n        ],\n\n        'beanstalkd' => [\n            'driver' => 'beanstalkd',\n            'host' => 'localhost',\n            'queue' => 'default',\n            'retry_after' => 90,\n            'block_for' => 0,\n        ],\n\n        'sqs' => [\n            'driver' => 'sqs',\n            'key' => env('AWS_ACCESS_KEY_ID'),\n            'secret' => env('AWS_SECRET_ACCESS_KEY'),\n            'prefix' => env('SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'),\n            'queue' => env('SQS_QUEUE', 'your-queue-name'),\n            'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),\n        ],\n\n        'redis' => [\n            'driver' => 'redis',\n            'connection' => 'default',\n            'queue' => env('REDIS_QUEUE', 'default'),\n            'retry_after' => 90,\n            'block_for' => null,\n        ],\n\n    ],\n\n    /*\n    |--------------------------------------------------------------------------\n    | Failed Queue Jobs\n    |--------------------------------------------------------------------------\n    |\n    | These options configure the behavior of failed queue job logging so you\n    | can control which database and table are used to store the jobs that\n    | have failed. You may change them to any database / table you wish.\n    |\n    */\n\n    'failed' => [\n        'driver' => env('QUEUE_FAILED_DRIVER', 'database'),\n        'database' => env('DB_CONNECTION', 'mysql'),\n        'table' => 'failed_jobs',\n    ],\n\n];\n"
  },
  {
    "path": "config/services.php",
    "content": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Third Party Services\n    |--------------------------------------------------------------------------\n    |\n    | This file is for storing the credentials for third party services such\n    | as Mailgun, Postmark, AWS and more. This file provides the de facto\n    | location for this type of information, allowing packages to have\n    | a conventional file to locate the various service credentials.\n    |\n    */\n\n    'mailgun' => [\n        'domain' => env('MAILGUN_DOMAIN'),\n        'secret' => env('MAILGUN_SECRET'),\n        'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'),\n    ],\n\n    'postmark' => [\n        'token' => env('POSTMARK_TOKEN'),\n    ],\n\n    'ses' => [\n        'key' => env('AWS_ACCESS_KEY_ID'),\n        'secret' => env('AWS_SECRET_ACCESS_KEY'),\n        'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),\n    ],\n\n];\n"
  },
  {
    "path": "config/session.php",
    "content": "<?php\n\nuse Illuminate\\Support\\Str;\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Default Session Driver\n    |--------------------------------------------------------------------------\n    |\n    | This option controls the default session \"driver\" that will be used on\n    | requests. By default, we will use the lightweight native driver but\n    | you may specify any of the other wonderful drivers provided here.\n    |\n    | Supported: \"file\", \"cookie\", \"database\", \"apc\",\n    |            \"memcached\", \"redis\", \"dynamodb\", \"array\"\n    |\n    */\n\n    'driver' => env('SESSION_DRIVER', 'file'),\n\n    /*\n    |--------------------------------------------------------------------------\n    | Session Lifetime\n    |--------------------------------------------------------------------------\n    |\n    | Here you may specify the number of minutes that you wish the session\n    | to be allowed to remain idle before it expires. If you want them\n    | to immediately expire on the browser closing, set that option.\n    |\n    */\n\n    'lifetime' => env('SESSION_LIFETIME', 120),\n\n    'expire_on_close' => false,\n\n    /*\n    |--------------------------------------------------------------------------\n    | Session Encryption\n    |--------------------------------------------------------------------------\n    |\n    | This option allows you to easily specify that all of your session data\n    | should be encrypted before it is stored. All encryption will be run\n    | automatically by Laravel and you can use the Session like normal.\n    |\n    */\n\n    'encrypt' => false,\n\n    /*\n    |--------------------------------------------------------------------------\n    | Session File Location\n    |--------------------------------------------------------------------------\n    |\n    | When using the native session driver, we need a location where session\n    | files may be stored. A default has been set for you but a different\n    | location may be specified. This is only needed for file sessions.\n    |\n    */\n\n    'files' => storage_path('framework/sessions'),\n\n    /*\n    |--------------------------------------------------------------------------\n    | Session Database Connection\n    |--------------------------------------------------------------------------\n    |\n    | When using the \"database\" or \"redis\" session drivers, you may specify a\n    | connection that should be used to manage these sessions. This should\n    | correspond to a connection in your database configuration options.\n    |\n    */\n\n    'connection' => env('SESSION_CONNECTION', null),\n\n    /*\n    |--------------------------------------------------------------------------\n    | Session Database Table\n    |--------------------------------------------------------------------------\n    |\n    | When using the \"database\" session driver, you may specify the table we\n    | should use to manage the sessions. Of course, a sensible default is\n    | provided for you; however, you are free to change this as needed.\n    |\n    */\n\n    'table' => 'sessions',\n\n    /*\n    |--------------------------------------------------------------------------\n    | Session Cache Store\n    |--------------------------------------------------------------------------\n    |\n    | When using the \"apc\", \"memcached\", or \"dynamodb\" session drivers you may\n    | list a cache store that should be used for these sessions. This value\n    | must match with one of the application's configured cache \"stores\".\n    |\n    */\n\n    'store' => env('SESSION_STORE', null),\n\n    /*\n    |--------------------------------------------------------------------------\n    | Session Sweeping Lottery\n    |--------------------------------------------------------------------------\n    |\n    | Some session drivers must manually sweep their storage location to get\n    | rid of old sessions from storage. Here are the chances that it will\n    | happen on a given request. By default, the odds are 2 out of 100.\n    |\n    */\n\n    'lottery' => [2, 100],\n\n    /*\n    |--------------------------------------------------------------------------\n    | Session Cookie Name\n    |--------------------------------------------------------------------------\n    |\n    | Here you may change the name of the cookie used to identify a session\n    | instance by ID. The name specified here will get used every time a\n    | new session cookie is created by the framework for every driver.\n    |\n    */\n\n    'cookie' => env(\n        'SESSION_COOKIE',\n        Str::slug(env('APP_NAME', 'laravel'), '_').'_session'\n    ),\n\n    /*\n    |--------------------------------------------------------------------------\n    | Session Cookie Path\n    |--------------------------------------------------------------------------\n    |\n    | The session cookie path determines the path for which the cookie will\n    | be regarded as available. Typically, this will be the root path of\n    | your application but you are free to change this when necessary.\n    |\n    */\n\n    'path' => '/',\n\n    /*\n    |--------------------------------------------------------------------------\n    | Session Cookie Domain\n    |--------------------------------------------------------------------------\n    |\n    | Here you may change the domain of the cookie used to identify a session\n    | in your application. This will determine which domains the cookie is\n    | available to in your application. A sensible default has been set.\n    |\n    */\n\n    'domain' => env('SESSION_DOMAIN', null),\n\n    /*\n    |--------------------------------------------------------------------------\n    | HTTPS Only Cookies\n    |--------------------------------------------------------------------------\n    |\n    | By setting this option to true, session cookies will only be sent back\n    | to the server if the browser has a HTTPS connection. This will keep\n    | the cookie from being sent to you if it can not be done securely.\n    |\n    */\n\n    'secure' => env('SESSION_SECURE_COOKIE', false),\n\n    /*\n    |--------------------------------------------------------------------------\n    | HTTP Access Only\n    |--------------------------------------------------------------------------\n    |\n    | Setting this value to true will prevent JavaScript from accessing the\n    | value of the cookie and the cookie will only be accessible through\n    | the HTTP protocol. You are free to modify this option if needed.\n    |\n    */\n\n    'http_only' => true,\n\n    /*\n    |--------------------------------------------------------------------------\n    | Same-Site Cookies\n    |--------------------------------------------------------------------------\n    |\n    | This option determines how your cookies behave when cross-site requests\n    | take place, and can be used to mitigate CSRF attacks. By default, we\n    | do not enable this as other CSRF protection services are in place.\n    |\n    | Supported: \"lax\", \"strict\"\n    |\n    */\n\n    'same_site' => null,\n\n];\n"
  },
  {
    "path": "config/view.php",
    "content": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | View Storage Paths\n    |--------------------------------------------------------------------------\n    |\n    | Most templating systems load templates from disk. Here you may specify\n    | an array of paths that should be checked for your views. Of course\n    | the usual Laravel view path has already been registered for you.\n    |\n    */\n\n    'paths' => [\n        resource_path('views'),\n    ],\n\n    /*\n    |--------------------------------------------------------------------------\n    | Compiled View Path\n    |--------------------------------------------------------------------------\n    |\n    | This option determines where all the compiled Blade templates will be\n    | stored for your application. Typically, this is within the storage\n    | directory. However, as usual, you are free to change this value.\n    |\n    */\n\n    'compiled' => env(\n        'VIEW_COMPILED_PATH',\n        realpath(storage_path('framework/views'))\n    ),\n\n];\n"
  },
  {
    "path": "database/.gitignore",
    "content": "*.sqlite\n*.sqlite-journal\n"
  },
  {
    "path": "database/factories/UserFactory.php",
    "content": "<?php\n\n/** @var \\Illuminate\\Database\\Eloquent\\Factory $factory */\nuse App\\User;\nuse Faker\\Generator as Faker;\nuse Illuminate\\Support\\Str;\n\n/*\n|--------------------------------------------------------------------------\n| Model Factories\n|--------------------------------------------------------------------------\n|\n| This directory should contain each of the model factory definitions for\n| your application. Factories provide a convenient way to generate new\n| model instances for testing / seeding your application's database.\n|\n*/\n\n$factory->define(User::class, function (Faker $faker) {\n    return [\n        'name' => $faker->name,\n        'email' => $faker->unique()->safeEmail,\n        'email_verified_at' => now(),\n        'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password\n        'remember_token' => Str::random(10),\n    ];\n});\n"
  },
  {
    "path": "database/migrations/2014_10_12_000000_create_users_table.php",
    "content": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Support\\Facades\\Schema;\n\nclass CreateUsersTable extends Migration\n{\n    /**\n     * Run the migrations.\n     *\n     * @return void\n     */\n    public function up()\n    {\n        Schema::create('users', function (Blueprint $table) {\n            $table->bigIncrements('id');\n            $table->string('name');\n            $table->enum('role', ['admin', 'user']);\n            $table->string('email')->unique();\n            $table->timestamp('email_verified_at')->nullable();\n            $table->string('pekerjaan')->nullable();\n            $table->date('tanggal_lahir')->nullable();\n            $table->string('telepon')->nullable();\n            $table->string('address')->nullable();\n            $table->string('kelurahan')->nullable();\n            $table->string('kecamatan')->nullable();\n            $table->string('kabupaten')->nullable();\n            $table->string('provinsi')->nullable();\n            $table->string('kode_pos')->nullable();\n            $table->string('gambar')->nullable();\n            $table->string('password');\n            $table->rememberToken();\n            $table->timestamps();\n        });\n    }\n\n    /**\n     * Reverse the migrations.\n     *\n     * @return void\n     */\n    public function down()\n    {\n        Schema::dropIfExists('users');\n    }\n}\n"
  },
  {
    "path": "database/migrations/2014_10_12_100000_create_password_resets_table.php",
    "content": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Support\\Facades\\Schema;\n\nclass CreatePasswordResetsTable extends Migration\n{\n    /**\n     * Run the migrations.\n     *\n     * @return void\n     */\n    public function up()\n    {\n        Schema::create('password_resets', function (Blueprint $table) {\n            $table->string('email')->index();\n            $table->string('token');\n            $table->timestamp('created_at')->nullable();\n        });\n    }\n\n    /**\n     * Reverse the migrations.\n     *\n     * @return void\n     */\n    public function down()\n    {\n        Schema::dropIfExists('password_resets');\n    }\n}\n"
  },
  {
    "path": "database/migrations/2019_08_19_000000_create_failed_jobs_table.php",
    "content": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Support\\Facades\\Schema;\n\nclass CreateFailedJobsTable extends Migration\n{\n    /**\n     * Run the migrations.\n     *\n     * @return void\n     */\n    public function up()\n    {\n        Schema::create('failed_jobs', function (Blueprint $table) {\n            $table->bigIncrements('id');\n            $table->text('connection');\n            $table->text('queue');\n            $table->longText('payload');\n            $table->longText('exception');\n            $table->timestamp('failed_at')->useCurrent();\n        });\n    }\n\n    /**\n     * Reverse the migrations.\n     *\n     * @return void\n     */\n    public function down()\n    {\n        Schema::dropIfExists('failed_jobs');\n    }\n}\n"
  },
  {
    "path": "database/migrations/2019_11_25_033237_create_merek_table.php",
    "content": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Support\\Facades\\Schema;\n\nclass CreateMerekTable extends Migration\n{\n    /**\n     * Run the migrations.\n     *\n     * @return void\n     */\n    public function up()\n    {\n        Schema::create('merek', function (Blueprint $table) {\n            $table->bigIncrements('id');\n            $table->string('name');\n            $table->timestamps();\n        });\n    }\n\n    /**\n     * Reverse the migrations.\n     *\n     * @return void\n     */\n    public function down()\n    {\n        Schema::dropIfExists('merek');\n    }\n}\n"
  },
  {
    "path": "database/migrations/2019_11_25_051422_create_mobil_table.php",
    "content": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Support\\Facades\\Schema;\n\nclass CreateMobilTable extends Migration\n{\n    /**\n     * Run the migrations.\n     *\n     * @return void\n     */\n    public function up()\n    {\n        Schema::create('mobil', function (Blueprint $table) {\n            $table->bigIncrements('id');\n            $table->integer('merek_id');\n            $table->string('type');\n            $table->integer('price');\n            $table->string('gambar');\n            $table->timestamps();\n        });\n    }\n\n    /**\n     * Reverse the migrations.\n     *\n     * @return void\n     */\n    public function down()\n    {\n        Schema::dropIfExists('mobil');\n    }\n}\n"
  },
  {
    "path": "database/migrations/2019_11_25_083506_tambah_softdelete_ke_mobil.php",
    "content": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Support\\Facades\\Schema;\n\nclass TambahSoftdeleteKeMobil extends Migration\n{\n    /**\n     * Run the migrations.\n     *\n     * @return void\n     */\n    public function up()\n    {\n      Schema::table('mobil', function (Blueprint $table) {\n          $table->softDeletes();\n      });\n    }\n\n    /**\n     * Reverse the migrations.\n     *\n     * @return void\n     */\n    public function down()\n    {\n        //\n    }\n}\n"
  },
  {
    "path": "database/migrations/2019_11_28_041545_create_order_table.php",
    "content": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Support\\Facades\\Schema;\n\nclass CreateOrderTable extends Migration\n{\n    /**\n     * Run the migrations.\n     *\n     * @return void\n     */\n    public function up()\n    {\n        Schema::create('order', function (Blueprint $table) {\n            $table->bigIncrements('id');\n            $table->integer('user_id');\n            $table->integer('mobil_id');\n            $table->integer('quantity');\n            $table->integer('total');\n            $table->string('payment_status');\n            $table->timestamps();\n        });\n    }\n\n    /**\n     * Reverse the migrations.\n     *\n     * @return void\n     */\n    public function down()\n    {\n        Schema::dropIfExists('order');\n    }\n}\n"
  },
  {
    "path": "database/migrations/2019_12_03_070048_tambah_softdelete_ke_order.php",
    "content": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Support\\Facades\\Schema;\n\nclass TambahSoftdeleteKeOrder extends Migration\n{\n    /**\n     * Run the migrations.\n     *\n     * @return void\n     */\n    public function up()\n    {\n        Schema::table('order', function (Blueprint $table) {\n            $table->softDeletes();\n        });\n    }\n\n    /**\n     * Reverse the migrations.\n     *\n     * @return void\n     */\n    public function down()\n    {\n        //\n    }\n}\n"
  },
  {
    "path": "database/migrations/2020_06_01_073152_create_bukti_table.php",
    "content": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Support\\Facades\\Schema;\n\nclass CreateBuktiTable extends Migration\n{\n    /**\n     * Run the migrations.\n     *\n     * @return void\n     */\n    public function up()\n    {\n        Schema::create('bukti', function (Blueprint $table) {\n            $table->bigIncrements('id');\n            $table->integer('order_id');\n            $table->string('foto');\n            $table->string('nama_bank');\n            $table->string('nama_pengirim');\n            $table->timestamps();\n        });\n    }\n\n    /**\n     * Reverse the migrations.\n     *\n     * @return void\n     */\n    public function down()\n    {\n        Schema::dropIfExists('bukti');\n    }\n}\n"
  },
  {
    "path": "database/migrations/2020_06_01_135045_create_favorite_table.php",
    "content": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Support\\Facades\\Schema;\n\nclass CreateFavoriteTable extends Migration\n{\n    /**\n     * Run the migrations.\n     *\n     * @return void\n     */\n    public function up()\n    {\n        Schema::create('favorite', function (Blueprint $table) {\n            $table->bigIncrements('id');\n            $table->integer('user_id');\n            $table->integer('mobil_id');\n            $table->timestamps();\n        });\n    }\n\n    /**\n     * Reverse the migrations.\n     *\n     * @return void\n     */\n    public function down()\n    {\n        Schema::dropIfExists('favorite');\n    }\n}\n"
  },
  {
    "path": "database/seeds/DatabaseSeeder.php",
    "content": "<?php\n\nuse Illuminate\\Database\\Seeder;\n\nclass DatabaseSeeder extends Seeder\n{\n    /**\n     * Seed the application's database.\n     *\n     * @return void\n     */\n    public function run()\n    {\n        // $this->call(UsersTableSeeder::class);\n    }\n}\n"
  },
  {
    "path": "index.php",
    "content": "<?php\n\n/**\n * Laravel - A PHP Framework For Web Artisans\n *\n * @package  Laravel\n * @author   Taylor Otwell <taylor@laravel.com>\n */\n\n$uri = urldecode(\n    parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)\n);\n\n// This file allows us to emulate Apache's \"mod_rewrite\" functionality from the\n// built-in PHP web server. This provides a convenient way to test a Laravel\n// application without having installed a \"real\" web server software here.\nif ($uri !== '/' && file_exists(__DIR__.'/public'.$uri)) {\n    return false;\n}\n\nrequire_once __DIR__.'/public/index.php';\n"
  },
  {
    "path": "package.json",
    "content": "{\n    \"private\": true,\n    \"scripts\": {\n        \"dev\": \"npm run development\",\n        \"development\": \"cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js\",\n        \"watch\": \"npm run development -- --watch\",\n        \"watch-poll\": \"npm run watch -- --watch-poll\",\n        \"hot\": \"cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js\",\n        \"prod\": \"npm run production\",\n        \"production\": \"cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js\"\n    },\n    \"devDependencies\": {\n        \"axios\": \"^0.19\",\n        \"bootstrap\": \"^4.0.0\",\n        \"cross-env\": \"^5.1\",\n        \"jquery\": \"^3.2\",\n        \"laravel-mix\": \"^4.0.7\",\n        \"lodash\": \"^4.17.13\",\n        \"popper.js\": \"^1.12\",\n        \"resolve-url-loader\": \"^2.3.1\",\n        \"sass\": \"^1.20.1\",\n        \"sass-loader\": \"7.*\",\n        \"vue\": \"^2.5.17\",\n        \"vue-template-compiler\": \"^2.6.10\"\n    }\n}\n"
  },
  {
    "path": "phpunit.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<phpunit xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:noNamespaceSchemaLocation=\"./vendor/phpunit/phpunit/phpunit.xsd\"\n         backupGlobals=\"false\"\n         backupStaticAttributes=\"false\"\n         bootstrap=\"vendor/autoload.php\"\n         colors=\"true\"\n         convertErrorsToExceptions=\"true\"\n         convertNoticesToExceptions=\"true\"\n         convertWarningsToExceptions=\"true\"\n         processIsolation=\"false\"\n         stopOnFailure=\"false\">\n    <testsuites>\n        <testsuite name=\"Unit\">\n            <directory suffix=\"Test.php\">./tests/Unit</directory>\n        </testsuite>\n\n        <testsuite name=\"Feature\">\n            <directory suffix=\"Test.php\">./tests/Feature</directory>\n        </testsuite>\n    </testsuites>\n    <filter>\n        <whitelist processUncoveredFilesFromWhitelist=\"true\">\n            <directory suffix=\".php\">./app</directory>\n        </whitelist>\n    </filter>\n    <php>\n        <server name=\"APP_ENV\" value=\"testing\"/>\n        <server name=\"BCRYPT_ROUNDS\" value=\"4\"/>\n        <server name=\"CACHE_DRIVER\" value=\"array\"/>\n        <server name=\"MAIL_DRIVER\" value=\"array\"/>\n        <server name=\"QUEUE_CONNECTION\" value=\"sync\"/>\n        <server name=\"SESSION_DRIVER\" value=\"array\"/>\n    </php>\n</phpunit>\n"
  },
  {
    "path": "public/.htaccess",
    "content": "<IfModule mod_rewrite.c>\n    <IfModule mod_negotiation.c>\n        Options -MultiViews -Indexes\n    </IfModule>\n\n    RewriteEngine On\n\n    # Handle Authorization Header\n    RewriteCond %{HTTP:Authorization} .\n    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]\n\n    # Redirect Trailing Slashes If Not A Folder...\n    RewriteCond %{REQUEST_FILENAME} !-d\n    RewriteCond %{REQUEST_URI} (.+)/$\n    RewriteRule ^ %1 [L,R=301]\n\n    # Handle Front Controller...\n    RewriteCond %{REQUEST_FILENAME} !-d\n    RewriteCond %{REQUEST_FILENAME} !-f\n    RewriteRule ^ index.php [L]\n</IfModule>\n"
  },
  {
    "path": "public/admin/css/accordions.css",
    "content": "/*----------------------------------------*/\n/*  1.  accordion CSS\n/*----------------------------------------*/\n\n.adminpro-custon-design .panel{\n\tbackground:none;\n\tbox-shadow:none;\n}\n.adminpro-custon-design .panel-default{\n\tborder:none;\n}\n.adminpro-custon-design .panel-collapse .panel-body{\n\tborder-top:none ;\n}\n.adminpro-custon-design .panel-heading{\n\tborder-top-left-radius:0px;\n\tborder-top-right-radius:0px;\n\tbackground:#303030;\n\tcolor:#fff;\n\tfont-size:20px;\n\tpadding: 15px 20px;\n}\n.adminpro-custon-design .admin-panel-content{\n\tbackground:#03a9f4;\n}\n.adminpro-custon-design .admin-panel-content p{\n\tfont-size:14px;\n\tcolor:#fff;\n\tline-height:24px;\n}\n.panel-group.adminpro-custon-design .accordion-head a:hover, .panel-group.adminpro-custon-design .accordion-head a:focus, .panel-group.adminpro-custon-design .accordion-head a:active{\n\tcolor:#03a9f4;\n}\n.panel-group.adminpro-custon-design{\n\tmargin-bottom:30px;\n}\n.panel-group.adminpro-custon-design.adminpro-ad-mg-bt{\n\tmargin-bottom:40px;\n}\n.admin-pro-accordion-wrap{\n    background: #fff;\n    padding: 20px;\n}\n.admin-pro-accordion-wrap .panel-group.adminpro-custon-design {\n\tmargin-bottom:0px;\n}\n.panel-group .panel-heading+.panel-collapse>.list-group, .panel-group .panel-heading+.panel-collapse>.panel-body {\n    border-top: 0px solid #ddd;\n}\n.admin-accordion-mg-bt-40{\n\tmargin-bottom:40px;\n}"
  },
  {
    "path": "public/admin/css/adminpro-custon-icon.css",
    "content": "@font-face {\n  font-family: 'adminpro-icon';\n  src:\n    url('fonts/adminpro-icon.ttf?4gzvyg') format('truetype'),\n    url('fonts/adminpro-icon.woff?4gzvyg') format('woff'),\n    url('fonts/adminpro-icon.svg?4gzvyg#adminpro-icon') format('svg');\n  font-weight: normal;\n  font-style: normal;\n}\n\n.adminpro-icon {\n  /* use !important to prevent issues with browser extensions that change fonts */\n  font-family: 'adminpro-icon' !important;\n  speak: none;\n  font-style: normal;\n  font-weight: normal;\n  font-variant: normal;\n  text-transform: none;\n  line-height: 1;\n\n  /* Better Font Rendering =========== */\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n\n.adminpro-add-circular-outlined-button:before {\n  content: \"\\e900\";\n}\n.adminpro-adobe-illustrator-cc:before {\n  content: \"\\e901\";\n}\n.adminpro-airplay:before {\n  content: \"\\e902\";\n}\n.adminpro-ak-47:before {\n  content: \"\\e903\";\n}\n.adminpro-alarm-clock:before {\n  content: \"\\e904\";\n}\n.adminpro-align-justify:before {\n  content: \"\\e905\";\n}\n.adminpro-align-to-left:before {\n  content: \"\\e906\";\n}\n.adminpro-align-to-right:before {\n  content: \"\\e907\";\n}\n.adminpro-analytics:before {\n  content: \"\\e908\";\n}\n.adminpro-analytics-arrow:before {\n  content: \"\\e909\";\n}\n.adminpro-analytics-bridge:before {\n  content: \"\\e90a\";\n}\n.adminpro-analytics-graph:before {\n  content: \"\\e90b\";\n}\n.adminpro-analytics-rounded:before {\n  content: \"\\e90c\";\n}\n.adminpro-analytics-rounded-arrow:before {\n  content: \"\\e90d\";\n}\n.adminpro-anchor:before {\n  content: \"\\e90e\";\n}\n.adminpro-android:before {\n  content: \"\\e90f\";\n}\n.adminpro-ask:before {\n  content: \"\\e910\";\n}\n.adminpro-automatic-gun:before {\n  content: \"\\e911\";\n}\n.adminpro-avatar:before {\n  content: \"\\e912\";\n}\n.adminpro-back:before {\n  content: \"\\e913\";\n}\n.adminpro-back-restart:before {\n  content: \"\\e914\";\n}\n.adminpro-bag:before {\n  content: \"\\e915\";\n}\n.adminpro-bar-chart:before {\n  content: \"\\e916\";\n}\n.adminpro-bar-chart-thr:before {\n  content: \"\\e917\";\n}\n.adminpro-bar-chart-up-arrow:before {\n  content: \"\\e918\";\n}\n.adminpro-bathtub:before {\n  content: \"\\e919\";\n}\n.adminpro-big-square-target:before {\n  content: \"\\e91a\";\n}\n.adminpro-bike:before {\n  content: \"\\e91b\";\n}\n.adminpro-bird:before {\n  content: \"\\e91c\";\n}\n.adminpro-bluetooth:before {\n  content: \"\\e91d\";\n}\n.adminpro-bold-text-option:before {\n  content: \"\\e91e\";\n}\n.adminpro-bra:before {\n  content: \"\\e91f\";\n}\n.adminpro-brace:before {\n  content: \"\\e920\";\n}\n.adminpro-bracelet:before {\n  content: \"\\e921\";\n}\n.adminpro-brassiere:before {\n  content: \"\\e922\";\n}\n.adminpro-brazil-real-symbol:before {\n  content: \"\\e923\";\n}\n.adminpro-calculator:before {\n  content: \"\\e924\";\n}\n.adminpro-calendar:before {\n  content: \"\\e925\";\n}\n.adminpro-calendar-with-spring-binder-and-date-blocks:before {\n  content: \"\\e926\";\n}\n.adminpro-calipers:before {\n  content: \"\\e927\";\n}\n.adminpro-car:before {\n  content: \"\\e928\";\n}\n.adminpro-caret-down:before {\n  content: \"\\e929\";\n}\n.adminpro-caret-left:before {\n  content: \"\\e92a\";\n}\n.adminpro-caret-right:before {\n  content: \"\\e92b\";\n}\n.adminpro-caret-up:before {\n  content: \"\\e92c\";\n}\n.adminpro-cart:before {\n  content: \"\\e92d\";\n}\n.adminpro-center-text-alignment:before {\n  content: \"\\e92e\";\n}\n.adminpro-chat:before {\n  content: \"\\e92f\";\n}\n.adminpro-chat-pro:before {\n  content: \"\\e930\";\n}\n.adminpro-check-correct:before {\n  content: \"\\e931\";\n}\n.adminpro-checked:before {\n  content: \"\\e932\";\n}\n.adminpro-checked-admin:before {\n  content: \"\\e933\";\n}\n.adminpro-checked-pro:before {\n  content: \"\\e934\";\n}\n.adminpro-check-icon:before {\n  content: \"\\e935\";\n}\n.adminpro-check-quality:before {\n  content: \"\\e936\";\n}\n.adminpro-check-square:before {\n  content: \"\\e937\";\n}\n.adminpro-check-success:before {\n  content: \"\\e938\";\n}\n.adminpro-circular-saw:before {\n  content: \"\\e939\";\n}\n.adminpro-clamp:before {\n  content: \"\\e93a\";\n}\n.adminpro-cloud-computing-danger:before {\n  content: \"\\e93b\";\n}\n.adminpro-cloud-computing-down:before {\n  content: \"\\e93c\";\n}\n.adminpro-cloud-computing-reload:before {\n  content: \"\\e93d\";\n}\n.adminpro-cloud-computing-up:before {\n  content: \"\\e93e\";\n}\n.adminpro-code:before {\n  content: \"\\e93f\";\n}\n.adminpro-coin:before {\n  content: \"\\e940\";\n}\n.adminpro-commenting:before {\n  content: \"\\e941\";\n}\n.adminpro-compress:before {\n  content: \"\\e942\";\n}\n.adminpro-computer-tower:before {\n  content: \"\\e943\";\n}\n.adminpro-construction-excavator:before {\n  content: \"\\e944\";\n}\n.adminpro-controls:before {\n  content: \"\\e945\";\n}\n.adminpro-costa-rica-colon-currency-symbol:before {\n  content: \"\\e946\";\n}\n.adminpro-crop-tool:before {\n  content: \"\\e947\";\n}\n.adminpro-cross-out:before {\n  content: \"\\e948\";\n}\n.adminpro-cuba-peso-currency-symbol:before {\n  content: \"\\e949\";\n}\n.adminpro-dahlia:before {\n  content: \"\\e94a\";\n}\n.adminpro-daisy:before {\n  content: \"\\e94b\";\n}\n.adminpro-danger-error:before {\n  content: \"\\e94c\";\n}\n.adminpro-desktop-monitor:before {\n  content: \"\\e94d\";\n}\n.adminpro-dog:before {\n  content: \"\\e94e\";\n}\n.adminpro-dollar-symbol:before {\n  content: \"\\e94f\";\n}\n.adminpro-double-arrow-diagonal-in-a-circle:before {\n  content: \"\\e950\";\n}\n.adminpro-down-arrow:before {\n  content: \"\\e951\";\n}\n.adminpro-down-arrow-in-a-circle:before {\n  content: \"\\e952\";\n}\n.adminpro-download:before {\n  content: \"\\e953\";\n}\n.adminpro-download-arrow:before {\n  content: \"\\e954\";\n}\n.adminpro-dress:before {\n  content: \"\\e955\";\n}\n.adminpro-drill:before {\n  content: \"\\e956\";\n}\n.adminpro-earrings:before {\n  content: \"\\e957\";\n}\n.adminpro-edit:before {\n  content: \"\\e958\";\n}\n.adminpro-edit-line:before {\n  content: \"\\e959\";\n}\n.adminpro-electric-guitar:before {\n  content: \"\\e95a\";\n}\n.adminpro-email:before {\n  content: \"\\e95b\";\n}\n.adminpro-envelope:before {\n  content: \"\\e95c\";\n}\n.adminpro-euro-currency-symbol:before {\n  content: \"\\e95d\";\n}\n.adminpro-euro-symbol:before {\n  content: \"\\e95e\";\n}\n.adminpro-excellence:before {\n  content: \"\\e95f\";\n}\n.adminpro-expand:before {\n  content: \"\\e960\";\n}\n.adminpro-facebook:before {\n  content: \"\\e961\";\n}\n.adminpro-favourite-circular-button:before {\n  content: \"\\e962\";\n}\n.adminpro-fax:before {\n  content: \"\\e963\";\n}\n.adminpro-female .path1:before {\n  content: \"\\e964\";\n  color: rgb(48, 60, 66);\n}\n.adminpro-female .path2:before {\n  content: \"\\e965\";\n  margin-left: -1em;\n  color: rgb(0, 0, 0);\n}\n.adminpro-firefox:before {\n  content: \"\\e966\";\n}\n.adminpro-flash-symbol:before {\n  content: \"\\e967\";\n}\n.adminpro-font-symbol-of-letter-a:before {\n  content: \"\\e968\";\n}\n.adminpro-fretsaw:before {\n  content: \"\\e969\";\n}\n.adminpro-garbage:before {\n  content: \"\\e96a\";\n}\n.adminpro-golf:before {\n  content: \"\\e96b\";\n}\n.adminpro-google-map:before {\n  content: \"\\e96c\";\n}\n.adminpro-google-plus:before {\n  content: \"\\e96d\";\n}\n.adminpro-graduation:before {\n  content: \"\\e96e\";\n}\n.adminpro-graduation-school-hat:before {\n  content: \"\\e96f\";\n}\n.adminpro-graph-down:before {\n  content: \"\\e970\";\n}\n.adminpro-graph-round:before {\n  content: \"\\e971\";\n}\n.adminpro-graph-up-arrow:before {\n  content: \"\\e972\";\n}\n.adminpro-hamburger:before {\n  content: \"\\e973\";\n}\n.adminpro-happy:before {\n  content: \"\\e974\";\n}\n.adminpro-headphones:before {\n  content: \"\\e975\";\n}\n.adminpro-heart-love:before {\n  content: \"\\e976\";\n}\n.adminpro-heart-rounded:before {\n  content: \"\\e977\";\n}\n.adminpro-hide:before {\n  content: \"\\e978\";\n}\n.adminpro-high-heels:before {\n  content: \"\\e979\";\n}\n.adminpro-home:before {\n  content: \"\\e97a\";\n}\n.adminpro-home-admin:before {\n  content: \"\\e97b\";\n}\n.adminpro-honduras-lempira-currency-symbol:before {\n  content: \"\\e97c\";\n}\n.adminpro-hypericum:before {\n  content: \"\\e97d\";\n}\n.adminpro-inbox:before {\n  content: \"\\e97e\";\n}\n.adminpro-india-rupee-currency-symbol:before {\n  content: \"\\e97f\";\n}\n.adminpro-indonesia-rupiah-currency-symbol:before {\n  content: \"\\e980\";\n}\n.adminpro-info:before {\n  content: \"\\e981\";\n}\n.adminpro-infor:before {\n  content: \"\\e982\";\n}\n.adminpro-inform:before {\n  content: \"\\e983\";\n}\n.adminpro-informat:before {\n  content: \"\\e984\";\n}\n.adminpro-informati:before {\n  content: \"\\e985\";\n}\n.adminpro-informatio:before {\n  content: \"\\e986\";\n}\n.adminpro-informations-admin:before {\n  content: \"\\e987\";\n}\n.adminpro-instagram:before {\n  content: \"\\e988\";\n}\n.adminpro-israel-shekel-currency-symbol:before {\n  content: \"\\e989\";\n}\n.adminpro-italicize-text:before {\n  content: \"\\e98a\";\n}\n.adminpro-jasmine:before {\n  content: \"\\e98b\";\n}\n.adminpro-jeans:before {\n  content: \"\\e98c\";\n}\n.adminpro-jonquil:before {\n  content: \"\\e98d\";\n}\n.adminpro-ladder:before {\n  content: \"\\e98e\";\n}\n.adminpro-left-arrow:before {\n  content: \"\\e98f\";\n}\n.adminpro-lens-hood:before {\n  content: \"\\e990\";\n}\n.adminpro-like:before {\n  content: \"\\e991\";\n}\n.adminpro-line-chart:before {\n  content: \"\\e992\";\n}\n.adminpro-line-chart-round-up:before {\n  content: \"\\e993\";\n}\n.adminpro-line-chart-stamp:before {\n  content: \"\\e994\";\n}\n.adminpro-linkedin:before {\n  content: \"\\e995\";\n}\n.adminpro-little-table-grid:before {\n  content: \"\\e996\";\n}\n.adminpro-locked:before {\n  content: \"\\e997\";\n}\n.adminpro-mail:before {\n  content: \"\\e998\";\n}\n.adminpro-male .path1:before {\n  content: \"\\e999\";\n  color: rgb(48, 60, 66);\n}\n.adminpro-male .path2:before {\n  content: \"\\e99a\";\n  margin-left: -1em;\n  color: rgb(0, 0, 0);\n}\n.adminpro-male-female:before {\n  content: \"\\e99b\";\n}\n.adminpro-map:before {\n  content: \"\\e99c\";\n}\n.adminpro-menu:before {\n  content: \"\\e99d\";\n}\n.adminpro-message:before {\n  content: \"\\e99e\";\n}\n.adminpro-metacafe:before {\n  content: \"\\e99f\";\n}\n.adminpro-microphone:before {\n  content: \"\\e9a0\";\n}\n.adminpro-minus-sign-in-a-circle:before {\n  content: \"\\e9a1\";\n}\n.adminpro-mode-circular-button:before {\n  content: \"\\e9a2\";\n}\n.adminpro-money:before {\n  content: \"\\e9a3\";\n}\n.adminpro-money-bills:before {\n  content: \"\\e9a4\";\n}\n.adminpro-mongolia-tughrik-currency-symbol:before {\n  content: \"\\e9a5\";\n}\n.adminpro-mortarboard:before {\n  content: \"\\e9a6\";\n}\n.adminpro-nail:before {\n  content: \"\\e9a7\";\n}\n.adminpro-nail-puller:before {\n  content: \"\\e9a8\";\n}\n.adminpro-nigeria-naira-currency-symbol:before {\n  content: \"\\e9a9\";\n}\n.adminpro-north-korea-won:before {\n  content: \"\\e9aa\";\n}\n.adminpro-oleander:before {\n  content: \"\\e9ab\";\n}\n.adminpro-open-book:before {\n  content: \"\\e9ac\";\n}\n.adminpro-opened-email-envelope:before {\n  content: \"\\e9ad\";\n}\n.adminpro-open-magazine:before {\n  content: \"\\e9ae\";\n}\n.adminpro-paint-brush:before {\n  content: \"\\e9af\";\n}\n.adminpro-paint-roller:before {\n  content: \"\\e9b0\";\n}\n.adminpro-pamela:before {\n  content: \"\\e9b1\";\n}\n.adminpro-panties:before {\n  content: \"\\e9b2\";\n}\n.adminpro-paperclip-document-outline:before {\n  content: \"\\e9b3\";\n}\n.adminpro-paragraph-text-interface-sign:before {\n  content: \"\\e9b4\";\n}\n.adminpro-paypal:before {\n  content: \"\\e9b5\";\n}\n.adminpro-pear:before {\n  content: \"\\e9b6\";\n}\n.adminpro-pencil:before {\n  content: \"\\e9b7\";\n}\n.adminpro-peru-nuevo-sol-currency-symbol:before {\n  content: \"\\e9b8\";\n}\n.adminpro-philippines-peso-currency-symbol:before {\n  content: \"\\e9b9\";\n}\n.adminpro-phone-call:before {\n  content: \"\\e9ba\";\n}\n.adminpro-photo-camera:before {\n  content: \"\\e9bb\";\n}\n.adminpro-pie-chart:before {\n  content: \"\\e9bc\";\n}\n.adminpro-pinterest:before {\n  content: \"\\e9bd\";\n}\n.adminpro-placeholder:before {\n  content: \"\\e9be\";\n}\n.adminpro-play-button:before {\n  content: \"\\e9bf\";\n}\n.adminpro-play-rounded:before {\n  content: \"\\e9c0\";\n}\n.adminpro-pliers:before {\n  content: \"\\e9c1\";\n}\n.adminpro-plus-add-button:before {\n  content: \"\\e9c2\";\n}\n.adminpro-plus-add-button-in:before {\n  content: \"\\e9c3\";\n}\n.adminpro-plus-symbol:before {\n  content: \"\\e9c4\";\n}\n.adminpro-poland-zloty-currency-symbol:before {\n  content: \"\\e9c5\";\n}\n.adminpro-poppy:before {\n  content: \"\\e9c6\";\n}\n.adminpro-pound-symbol-variant:before {\n  content: \"\\e9c7\";\n}\n.adminpro-previous:before {\n  content: \"\\e9c8\";\n}\n.adminpro-printer:before {\n  content: \"\\e9c9\";\n}\n.adminpro-question:before {\n  content: \"\\e9ca\";\n}\n.adminpro-refresh-button:before {\n  content: \"\\e9cb\";\n}\n.adminpro-reload:before {\n  content: \"\\e9cc\";\n}\n.adminpro-right-arrow:before {\n  content: \"\\e9cd\";\n}\n.adminpro-right-arrow-angle:before {\n  content: \"\\e9ce\";\n}\n.adminpro-rocket-launch:before {\n  content: \"\\e9cf\";\n}\n.adminpro-rose:before {\n  content: \"\\e9d0\";\n}\n.adminpro-roulette:before {\n  content: \"\\e9d1\";\n}\n.adminpro-rounded-info-button:before {\n  content: \"\\e9d2\";\n}\n.adminpro-round-help-button:before {\n  content: \"\\e9d3\";\n}\n.adminpro-round-info-button:before {\n  content: \"\\e9d4\";\n}\n.adminpro-rss:before {\n  content: \"\\e9d5\";\n}\n.adminpro-ruler:before {\n  content: \"\\e9d6\";\n}\n.adminpro-rupee-indian:before {\n  content: \"\\e9d7\";\n}\n.adminpro-russia-ruble-currency-symbol:before {\n  content: \"\\e9d8\";\n}\n.adminpro-saudi-arabia-riyal-currency-symbol:before {\n  content: \"\\e9d9\";\n}\n.adminpro-saw:before {\n  content: \"\\e9da\";\n}\n.adminpro-screen:before {\n  content: \"\\e9db\";\n}\n.adminpro-screwdriver:before {\n  content: \"\\e9dc\";\n}\n.adminpro-search:before {\n  content: \"\\e9dd\";\n}\n.adminpro-search-circular-button:before {\n  content: \"\\e9de\";\n}\n.adminpro-set-square:before {\n  content: \"\\e9df\";\n}\n.adminpro-settings:before {\n  content: \"\\e9e0\";\n}\n.adminpro-settings-rounded:before {\n  content: \"\\e9e1\";\n}\n.adminpro-settings-up:before {\n  content: \"\\e9e2\";\n}\n.adminpro-share:before {\n  content: \"\\e9e3\";\n}\n.adminpro-shield:before {\n  content: \"\\e9e4\";\n}\n.adminpro-shirt:before {\n  content: \"\\e9e5\";\n}\n.adminpro-shoe:before {\n  content: \"\\e9e6\";\n}\n.adminpro-shoe-pro:before {\n  content: \"\\e9e7\";\n}\n.adminpro-shopping-cart:before {\n  content: \"\\e9e8\";\n}\n.adminpro-shower:before {\n  content: \"\\e9e9\";\n}\n.adminpro-sitemap:before {\n  content: \"\\e9ea\";\n}\n.adminpro-skyline:before {\n  content: \"\\e9eb\";\n}\n.adminpro-skype:before {\n  content: \"\\e9ec\";\n}\n.adminpro-small-calendar:before {\n  content: \"\\e9ed\";\n}\n.adminpro-smartphone-call:before {\n  content: \"\\e9ee\";\n}\n.adminpro-smiling-emoticon-square-face:before {\n  content: \"\\e9ef\";\n}\n.adminpro-soundcloud:before {\n  content: \"\\e9f0\";\n}\n.adminpro-sound-frecuency:before {\n  content: \"\\e9f1\";\n}\n.adminpro-south-korea-won-currency-symbol:before {\n  content: \"\\e9f2\";\n}\n.adminpro-speaker:before {\n  content: \"\\e9f3\";\n}\n.adminpro-speaker-rounded:before {\n  content: \"\\e9f4\";\n}\n.adminpro-star:before {\n  content: \"\\e9f5\";\n}\n.adminpro-star-half-empty:before {\n  content: \"\\e9f6\";\n}\n.adminpro-startup:before {\n  content: \"\\e9f7\";\n}\n.adminpro-statistics:before {\n  content: \"\\e9f8\";\n}\n.adminpro-stats:before {\n  content: \"\\e9f9\";\n}\n.adminpro-statue-of-liberty:before {\n  content: \"\\e9fa\";\n}\n.adminpro-strong:before {\n  content: \"\\e9fb\";\n}\n.adminpro-substract:before {\n  content: \"\\e9fc\";\n}\n.adminpro-sunflower:before {\n  content: \"\\e9fd\";\n}\n.adminpro-sunglasses:before {\n  content: \"\\e9fe\";\n}\n.adminpro-switch:before {\n  content: \"\\e9ff\";\n}\n.adminpro-switch-rounded:before {\n  content: \"\\ea00\";\n}\n.adminpro-tags:before {\n  content: \"\\ea01\";\n}\n.adminpro-taiwan-new-dollar-symbol:before {\n  content: \"\\ea02\";\n}\n.adminpro-telly:before {\n  content: \"\\ea03\";\n}\n.adminpro-text-width:before {\n  content: \"\\ea04\";\n}\n.adminpro-thailand-baht:before {\n  content: \"\\ea05\";\n}\n.adminpro-ticket:before {\n  content: \"\\ea06\";\n}\n.adminpro-trash:before {\n  content: \"\\ea07\";\n}\n.adminpro-tumblr:before {\n  content: \"\\ea08\";\n}\n.adminpro-turkey-lira-currency-symbol:before {\n  content: \"\\ea09\";\n}\n.adminpro-twitter:before {\n  content: \"\\ea0a\";\n}\n.adminpro-ukraine-hryvna:before {\n  content: \"\\ea0b\";\n}\n.adminpro-underline-text-option:before {\n  content: \"\\ea0c\";\n}\n.adminpro-university:before {\n  content: \"\\ea0d\";\n}\n.adminpro-up-arrow:before {\n  content: \"\\ea0e\";\n}\n.adminpro-uruguay-peso-currency-symbol:before {\n  content: \"\\ea0f\";\n}\n.adminpro-user-rounded:before {\n  content: \"\\ea10\";\n}\n.adminpro-users:before {\n  content: \"\\ea11\";\n}\n.adminpro-video:before {\n  content: \"\\ea12\";\n}\n.adminpro-video-camera:before {\n  content: \"\\ea13\";\n}\n.adminpro-view:before {\n  content: \"\\ea14\";\n}\n.adminpro-vimeo:before {\n  content: \"\\ea15\";\n}\n.adminpro-voice-recording:before {\n  content: \"\\ea16\";\n}\n.adminpro-warning:before {\n  content: \"\\ea17\";\n}\n.adminpro-warning-cloud-computing:before {\n  content: \"\\ea18\";\n}\n.adminpro-warning-danger:before {\n  content: \"\\ea19\";\n}\n.adminpro-warning-danger-pro:before {\n  content: \"\\ea1a\";\n}\n.adminpro-windows:before {\n  content: \"\\ea1b\";\n}\n.adminpro-worldwide:before {\n  content: \"\\ea1c\";\n}\n.adminpro-world-wide-web:before {\n  content: \"\\ea1d\";\n}\n.adminpro-wrench:before {\n  content: \"\\ea1e\";\n}\n.adminpro-x2-symbol-of-a-letter-and-a-number-subscript:before {\n  content: \"\\ea1f\";\n}\n.adminpro-xbox:before {\n  content: \"\\ea20\";\n}\n.adminpro-xing:before {\n  content: \"\\ea21\";\n}\n.adminpro-yahoo:before {\n  content: \"\\ea22\";\n}\n.adminpro-yen-currency-symbol:before {\n  content: \"\\ea23\";\n}\n.adminpro-yen-symbol:before {\n  content: \"\\ea24\";\n}\n.adminpro-zoom-magnifier-with-minus-sign:before {\n  content: \"\\ea25\";\n}\n"
  },
  {
    "path": "public/admin/css/alerts.css",
    "content": "/*----------------------------------------*/\n/*  1.  Alert CSS\n/*----------------------------------------*/\n.alert-title h2{\n\tfont-size:20px;\n}\n.alert-title p{\n\tfont-size:14px;\n}\n.alert-wrap1, .alert-wrap2, .alert-icon {\n\tbackground:#fff;\n\tpadding:20px;\n}\n.alert-wrap1 .alert, .alert-wrap2 .alert, .alert-icon .alert{\n\tmargin-bottom:10px;\n\tborder-radius:0px;\n}\n.alert-wrap1 .alert-mg-b, .alert-wrap2 .alert-mg-b, .alert-icon .alert-mg-b{\n\tmargin-bottom:0px;\n}\n.alert-icon .alert.alert-mg-b{\n\tmargin-bottom:0px;\n}\n.wrap-alert-b{\n\tmargin-bottom:30px;\n}\n.alert-success-style1, .alert-success-style2, .alert-success-style3, .alert-success-style4, .alert-st-one, .alert-st-two, .alert-st-three, .alert-st-four{\n\tborder:none;\n\tposition:relative;\n}\n.alert-success-style1, .alert-st-one{\n\tbackground:#34a854;\n}\n.alert-success-style2, .alert-st-two{\n\tbackground:#4285f3;\n}\n.alert-success-style3, .alert-st-three{\n\tbackground:#fbbc01;\n}\n.alert-success-style4, .alert-st-four{\n\tbackground:#ea4331;\n}\n.alert-success-style1:before, .alert-success-style2:before, .alert-success-style3:before, .alert-success-style4:before{\n\tbackground: #303030;\n    position: absolute;\n    content: \"\";\n    top: 0px;\n    right: 0px;\n    width: 9%;\n    height: 100%;\n}\n.alert-success-style1:after, .alert-success-style2:after, .alert-success-style3:after, .alert-success-style4:after{\n\tposition: absolute;\n    content: \"\";\n    top: 14px;\n    right: 39px;\n    border-left-color: #34a853;\n    border-top: 11px solid transparent;\n    border-bottom: 11px solid transparent;\n}\n.alert-success-style1:after{\n    border-left: 11px solid #34a853;\n}\n.alert-success-style2:after{\n    border-left: 11px solid #4285f3;\n}\n.alert-success-style3:after{\n    border-left: 11px solid #fbbc01;\n}\n.alert-success-style4:after{\n    border-left: 11px solid #ea4331;\n}\n.admin-check-sucess, .admin-check-pro{\n\tcolor: #fff;\n    position: absolute;\n    z-index: 99;\n    width: 50px;\n    height: 100%;\n    top: 0px;\n    left: 0px;\n    font-size: 16px;\n    line-height: 50px;\n    text-align: center;\n    background: #303030;\n}\n.admin-check-sucess:after, .admin-check-pro:after{\n\tposition: absolute;\n    content: \"\";\n    top: 14px;\n    left: 47px;\n    border-left-color: #303030;\n    border-top: 11px solid transparent;\n    border-bottom: 11px solid transparent;\n    border-left: 11px solid #303030;\n}\n.alert-success-style1 p, .alert-success-style2 p, .alert-success-style3 p, .alert-success-style4 p{\n\tcolor:#fff;\n\tmargin:0px 60px;\n\tfont-size:14px;\n}\n.alert-st-one .message-mg-rt, .alert-st-two .message-mg-rt, .alert-st-three .message-mg-rt, .alert-st-four .message-mg-rt{\n\tcolor:#fff;\n\tmargin:0px 0px 0px 60px;\n\tfont-size:14px;\n}\n.alert-success-style1 .icon-sc-cl, .alert-success-style2 .icon-sc-cl, .alert-success-style3 .icon-sc-cl, .alert-success-style4 .icon-sc-cl{\n\tcolor:#fff;\n\tz-index:9;\n\tposition:relative;\n\t\n}\n.alert-success-style1 .sucess-op, .alert-success-style2 .sucess-op, .alert-success-style3 .sucess-op, .alert-success-style4 .sucess-op{\n\topacity:1;\n}\n.admin-check-pro.admin-check-pro-none, .admin-check-sucess.admin-check-pro-none{\n\tbackground:none;\n}\n.admin-check-pro.admin-check-pro-none:after, .admin-check-sucess.admin-check-pro-none:after{\n\tborder-left-color: none;\n    border-top: none;\n    border-bottom: none;\n    border-left: none;\n}\n.alert-st-one .message-alert-none, .alert-st-two .message-alert-none, .alert-st-three .message-alert-none, .alert-st-four .message-alert-none, .alert-success-style1 .message-alert-none, .alert-success-style2 .message-alert-none, .alert-success-style3 .message-alert-none, .alert-success-style4 .message-alert-none{\n\tmargin: 0px 0px 0px 45px;\n}\n.alert-success-style1.alert-success-stylenone:before, .alert-success-style2.alert-success-stylenone:before, .alert-success-style3.alert-success-stylenone:before, .alert-success-style4.alert-success-stylenone:before{\n\tbackground:none;\n}\n.admin-check-pro-clr{\n\tbackground:#34a854;\n}\n.admin-check-pro-clr1{\n\tbackground:#4285f3;\n}\n.admin-check-pro-clr2{\n\tbackground:#fbbc01;\n}\n.admin-check-pro-clr3{\n\tbackground:#ea4331;\n}\n.alert-st-bg, .alert-st-bg1, .alert-st-bg2, .alert-st-bg3{\n\tbackground:#fff;\n}\n.alert-st-bg{\n\tborder:1px solid #34a854;\n}\n.alert-st-bg1{\n\tborder:1px solid #4285f3;\n}\n.alert-st-bg2{\n\tborder:1px solid #fbbc01;\n}\n.alert-st-bg3{\n\tborder:1px solid #ea4331;\n}\n.alert-st-bg .message-mg-rt, .alert-st-bg1 .message-mg-rt, .alert-st-bg2 .message-mg-rt, .alert-st-bg3 .message-mg-rt{\n\tcolor:#303030;\n}\n.admin-check-pro-clr:after{\n\tborder-left-color: #34a854;\n    border-left: 11px solid #34a854\n}\n.admin-check-pro-clr1:after{\n\tborder-left-color: #4285f3;\n    border-left: 11px solid #4285f3\n}\n.admin-check-pro-clr2:after{\n\tborder-left-color: #fbbc01;\n    border-left: 11px solid #fbbc01\n}\n.admin-check-pro-clr3:after{\n\tborder-left-color: #ea4331;\n    border-left: 11px solid #ea4331\n}\n.alert-st-bg p, .alert-st-bg1 p, .alert-st-bg2 p, .alert-st-bg3 p{\n\tcolor:#303030;\n}\n.alert-st-bg:before, .alert-st-bg1:before, .alert-st-bg2:before, .alert-st-bg3:before{\n\tbackground:none;\n}\n.alert-st-bg .icon-sc-cl, .alert-st-bg1 .icon-sc-cl, .alert-st-bg2 .icon-sc-cl, .alert-st-bg3 .icon-sc-cl{\n\tcolor:#303030;\n}\n.alert-st-bg:after, .alert-st-bg1:after, .alert-st-bg2:after, .alert-st-bg3:after {\n    border-left: 11px solid transparent;\n}\n.admin-check-pro-clr11, .admin-check-pro-clr12, .admin-check-pro-clr13, .admin-check-pro-clr14{\n\tbackground:#eee;\n}\n.admin-check-pro-clr11{\n\tcolor:#34a854;\n}\n.admin-check-pro-clr12{\n\tcolor:#4285f3;\n}\n.admin-check-pro-clr13{\n\tcolor:#fbbc01;\n}\n.admin-check-pro-clr14{\n\tcolor:#ea4331;\n}\n.admin-check-pro-clr11:after, .admin-check-pro-clr12:after, .admin-check-pro-clr13:after, .admin-check-pro-clr14:after {\n    border-left-color: #eee;\n    border-left: 11px solid #eee;\n}\n.alert-st-bg11, .alert-st-bg12, .alert-st-bg13, .alert-st-bg14 {\n    border: 1px solid #eee;\n}\n.alert-st-bg11 .icon-sc-cl{\n\tcolor:#34a854;\n}\n.alert-st-bg12 .icon-sc-cl{\n\tcolor:#4285f3;\n}\n.alert-st-bg13 .icon-sc-cl{\n\tcolor:#fbbc01;\n}\n.alert-st-bg14 .icon-sc-cl{\n\tcolor:#ea4331;\n}\n.wrap-alert-tb{\n\tmargin-bottom:40px;\n}\n"
  },
  {
    "path": "public/admin/css/animate.css",
    "content": "@charset \"UTF-8\";\n\n/*!\nAnimate.css - http://daneden.me/animate\nVersion - 3.4.0\nLicensed under the MIT license - http://opensource.org/licenses/MIT\n\nCopyright (c) 2015 Daniel Eden\n*/\n\n.animated {\n  -webkit-animation-duration: 1s;\n  animation-duration: 1s;\n  -webkit-animation-fill-mode: both;\n  animation-fill-mode: both;\n}\n\n.animated.infinite {\n  -webkit-animation-iteration-count: infinite;\n  animation-iteration-count: infinite;\n}\n\n.animated.hinge {\n  -webkit-animation-duration: 2s;\n  animation-duration: 2s;\n}\n\n.animated.bounceIn,\n.animated.bounceOut {\n  -webkit-animation-duration: .75s;\n  animation-duration: .75s;\n}\n\n.animated.flipOutX,\n.animated.flipOutY {\n  -webkit-animation-duration: .75s;\n  animation-duration: .75s;\n}\n\n@-webkit-keyframes bounce {\n  from, 20%, 53%, 80%, to {\n    -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n    animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n    -webkit-transform: translate3d(0,0,0);\n    transform: translate3d(0,0,0);\n  }\n\n  40%, 43% {\n    -webkit-animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);\n    animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);\n    -webkit-transform: translate3d(0, -30px, 0);\n    transform: translate3d(0, -30px, 0);\n  }\n\n  70% {\n    -webkit-animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);\n    animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);\n    -webkit-transform: translate3d(0, -15px, 0);\n    transform: translate3d(0, -15px, 0);\n  }\n\n  90% {\n    -webkit-transform: translate3d(0,-4px,0);\n    transform: translate3d(0,-4px,0);\n  }\n}\n\n@keyframes bounce {\n  from, 20%, 53%, 80%, to {\n    -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n    animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n    -webkit-transform: translate3d(0,0,0);\n    transform: translate3d(0,0,0);\n  }\n\n  40%, 43% {\n    -webkit-animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);\n    animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);\n    -webkit-transform: translate3d(0, -30px, 0);\n    transform: translate3d(0, -30px, 0);\n  }\n\n  70% {\n    -webkit-animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);\n    animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);\n    -webkit-transform: translate3d(0, -15px, 0);\n    transform: translate3d(0, -15px, 0);\n  }\n\n  90% {\n    -webkit-transform: translate3d(0,-4px,0);\n    transform: translate3d(0,-4px,0);\n  }\n}\n\n.bounce {\n  -webkit-animation-name: bounce;\n  animation-name: bounce;\n  -webkit-transform-origin: center bottom;\n  transform-origin: center bottom;\n}\n\n@-webkit-keyframes flash {\n  from, 50%, to {\n    opacity: 1;\n  }\n\n  25%, 75% {\n    opacity: 0;\n  }\n}\n\n@keyframes flash {\n  from, 50%, to {\n    opacity: 1;\n  }\n\n  25%, 75% {\n    opacity: 0;\n  }\n}\n\n.flash {\n  -webkit-animation-name: flash;\n  animation-name: flash;\n}\n\n/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */\n\n@-webkit-keyframes pulse {\n  from {\n    -webkit-transform: scale3d(1, 1, 1);\n    transform: scale3d(1, 1, 1);\n  }\n\n  50% {\n    -webkit-transform: scale3d(1.05, 1.05, 1.05);\n    transform: scale3d(1.05, 1.05, 1.05);\n  }\n\n  to {\n    -webkit-transform: scale3d(1, 1, 1);\n    transform: scale3d(1, 1, 1);\n  }\n}\n\n@keyframes pulse {\n  from {\n    -webkit-transform: scale3d(1, 1, 1);\n    transform: scale3d(1, 1, 1);\n  }\n\n  50% {\n    -webkit-transform: scale3d(1.05, 1.05, 1.05);\n    transform: scale3d(1.05, 1.05, 1.05);\n  }\n\n  to {\n    -webkit-transform: scale3d(1, 1, 1);\n    transform: scale3d(1, 1, 1);\n  }\n}\n\n.pulse {\n  -webkit-animation-name: pulse;\n  animation-name: pulse;\n}\n\n@-webkit-keyframes rubberBand {\n  from {\n    -webkit-transform: scale3d(1, 1, 1);\n    transform: scale3d(1, 1, 1);\n  }\n\n  30% {\n    -webkit-transform: scale3d(1.25, 0.75, 1);\n    transform: scale3d(1.25, 0.75, 1);\n  }\n\n  40% {\n    -webkit-transform: scale3d(0.75, 1.25, 1);\n    transform: scale3d(0.75, 1.25, 1);\n  }\n\n  50% {\n    -webkit-transform: scale3d(1.15, 0.85, 1);\n    transform: scale3d(1.15, 0.85, 1);\n  }\n\n  65% {\n    -webkit-transform: scale3d(.95, 1.05, 1);\n    transform: scale3d(.95, 1.05, 1);\n  }\n\n  75% {\n    -webkit-transform: scale3d(1.05, .95, 1);\n    transform: scale3d(1.05, .95, 1);\n  }\n\n  to {\n    -webkit-transform: scale3d(1, 1, 1);\n    transform: scale3d(1, 1, 1);\n  }\n}\n\n@keyframes rubberBand {\n  from {\n    -webkit-transform: scale3d(1, 1, 1);\n    transform: scale3d(1, 1, 1);\n  }\n\n  30% {\n    -webkit-transform: scale3d(1.25, 0.75, 1);\n    transform: scale3d(1.25, 0.75, 1);\n  }\n\n  40% {\n    -webkit-transform: scale3d(0.75, 1.25, 1);\n    transform: scale3d(0.75, 1.25, 1);\n  }\n\n  50% {\n    -webkit-transform: scale3d(1.15, 0.85, 1);\n    transform: scale3d(1.15, 0.85, 1);\n  }\n\n  65% {\n    -webkit-transform: scale3d(.95, 1.05, 1);\n    transform: scale3d(.95, 1.05, 1);\n  }\n\n  75% {\n    -webkit-transform: scale3d(1.05, .95, 1);\n    transform: scale3d(1.05, .95, 1);\n  }\n\n  to {\n    -webkit-transform: scale3d(1, 1, 1);\n    transform: scale3d(1, 1, 1);\n  }\n}\n\n.rubberBand {\n  -webkit-animation-name: rubberBand;\n  animation-name: rubberBand;\n}\n\n@-webkit-keyframes shake {\n  from, to {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n\n  10%, 30%, 50%, 70%, 90% {\n    -webkit-transform: translate3d(-10px, 0, 0);\n    transform: translate3d(-10px, 0, 0);\n  }\n\n  20%, 40%, 60%, 80% {\n    -webkit-transform: translate3d(10px, 0, 0);\n    transform: translate3d(10px, 0, 0);\n  }\n}\n\n@keyframes shake {\n  from, to {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n\n  10%, 30%, 50%, 70%, 90% {\n    -webkit-transform: translate3d(-10px, 0, 0);\n    transform: translate3d(-10px, 0, 0);\n  }\n\n  20%, 40%, 60%, 80% {\n    -webkit-transform: translate3d(10px, 0, 0);\n    transform: translate3d(10px, 0, 0);\n  }\n}\n\n.shake {\n  -webkit-animation-name: shake;\n  animation-name: shake;\n}\n\n@-webkit-keyframes swing {\n  20% {\n    -webkit-transform: rotate3d(0, 0, 1, 15deg);\n    transform: rotate3d(0, 0, 1, 15deg);\n  }\n\n  40% {\n    -webkit-transform: rotate3d(0, 0, 1, -10deg);\n    transform: rotate3d(0, 0, 1, -10deg);\n  }\n\n  60% {\n    -webkit-transform: rotate3d(0, 0, 1, 5deg);\n    transform: rotate3d(0, 0, 1, 5deg);\n  }\n\n  80% {\n    -webkit-transform: rotate3d(0, 0, 1, -5deg);\n    transform: rotate3d(0, 0, 1, -5deg);\n  }\n\n  to {\n    -webkit-transform: rotate3d(0, 0, 1, 0deg);\n    transform: rotate3d(0, 0, 1, 0deg);\n  }\n}\n\n@keyframes swing {\n  20% {\n    -webkit-transform: rotate3d(0, 0, 1, 15deg);\n    transform: rotate3d(0, 0, 1, 15deg);\n  }\n\n  40% {\n    -webkit-transform: rotate3d(0, 0, 1, -10deg);\n    transform: rotate3d(0, 0, 1, -10deg);\n  }\n\n  60% {\n    -webkit-transform: rotate3d(0, 0, 1, 5deg);\n    transform: rotate3d(0, 0, 1, 5deg);\n  }\n\n  80% {\n    -webkit-transform: rotate3d(0, 0, 1, -5deg);\n    transform: rotate3d(0, 0, 1, -5deg);\n  }\n\n  to {\n    -webkit-transform: rotate3d(0, 0, 1, 0deg);\n    transform: rotate3d(0, 0, 1, 0deg);\n  }\n}\n\n.swing {\n  -webkit-transform-origin: top center;\n  transform-origin: top center;\n  -webkit-animation-name: swing;\n  animation-name: swing;\n}\n\n@-webkit-keyframes tada {\n  from {\n    -webkit-transform: scale3d(1, 1, 1);\n    transform: scale3d(1, 1, 1);\n  }\n\n  10%, 20% {\n    -webkit-transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg);\n    transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg);\n  }\n\n  30%, 50%, 70%, 90% {\n    -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);\n    transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);\n  }\n\n  40%, 60%, 80% {\n    -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);\n    transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);\n  }\n\n  to {\n    -webkit-transform: scale3d(1, 1, 1);\n    transform: scale3d(1, 1, 1);\n  }\n}\n\n@keyframes tada {\n  from {\n    -webkit-transform: scale3d(1, 1, 1);\n    transform: scale3d(1, 1, 1);\n  }\n\n  10%, 20% {\n    -webkit-transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg);\n    transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg);\n  }\n\n  30%, 50%, 70%, 90% {\n    -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);\n    transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);\n  }\n\n  40%, 60%, 80% {\n    -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);\n    transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);\n  }\n\n  to {\n    -webkit-transform: scale3d(1, 1, 1);\n    transform: scale3d(1, 1, 1);\n  }\n}\n\n.tada {\n  -webkit-animation-name: tada;\n  animation-name: tada;\n}\n\n/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */\n\n@-webkit-keyframes wobble {\n  from {\n    -webkit-transform: none;\n    transform: none;\n  }\n\n  15% {\n    -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);\n    transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);\n  }\n\n  30% {\n    -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);\n    transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);\n  }\n\n  45% {\n    -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);\n    transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);\n  }\n\n  60% {\n    -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);\n    transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);\n  }\n\n  75% {\n    -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);\n    transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);\n  }\n\n  to {\n    -webkit-transform: none;\n    transform: none;\n  }\n}\n\n@keyframes wobble {\n  from {\n    -webkit-transform: none;\n    transform: none;\n  }\n\n  15% {\n    -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);\n    transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);\n  }\n\n  30% {\n    -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);\n    transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);\n  }\n\n  45% {\n    -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);\n    transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);\n  }\n\n  60% {\n    -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);\n    transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);\n  }\n\n  75% {\n    -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);\n    transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);\n  }\n\n  to {\n    -webkit-transform: none;\n    transform: none;\n  }\n}\n\n.wobble {\n  -webkit-animation-name: wobble;\n  animation-name: wobble;\n}\n\n@-webkit-keyframes jello {\n  from, 11.1%, to {\n    -webkit-transform: none;\n    transform: none;\n  }\n\n  22.2% {\n    -webkit-transform: skewX(-12.5deg) skewY(-12.5deg);\n    transform: skewX(-12.5deg) skewY(-12.5deg);\n  }\n\n  33.3% {\n    -webkit-transform: skewX(6.25deg) skewY(6.25deg);\n    transform: skewX(6.25deg) skewY(6.25deg);\n  }\n\n  44.4% {\n    -webkit-transform: skewX(-3.125deg) skewY(-3.125deg);\n    transform: skewX(-3.125deg) skewY(-3.125deg);\n  }\n\n  55.5% {\n    -webkit-transform: skewX(1.5625deg) skewY(1.5625deg);\n    transform: skewX(1.5625deg) skewY(1.5625deg);\n  }\n\n  66.6% {\n    -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg);\n    transform: skewX(-0.78125deg) skewY(-0.78125deg);\n  }\n\n  77.7% {\n    -webkit-transform: skewX(0.390625deg) skewY(0.390625deg);\n    transform: skewX(0.390625deg) skewY(0.390625deg);\n  }\n\n  88.8% {\n    -webkit-transform: skewX(-0.1953125deg) skewY(-0.1953125deg);\n    transform: skewX(-0.1953125deg) skewY(-0.1953125deg);\n  }\n}\n\n@keyframes jello {\n  from, 11.1%, to {\n    -webkit-transform: none;\n    transform: none;\n  }\n\n  22.2% {\n    -webkit-transform: skewX(-12.5deg) skewY(-12.5deg);\n    transform: skewX(-12.5deg) skewY(-12.5deg);\n  }\n\n  33.3% {\n    -webkit-transform: skewX(6.25deg) skewY(6.25deg);\n    transform: skewX(6.25deg) skewY(6.25deg);\n  }\n\n  44.4% {\n    -webkit-transform: skewX(-3.125deg) skewY(-3.125deg);\n    transform: skewX(-3.125deg) skewY(-3.125deg);\n  }\n\n  55.5% {\n    -webkit-transform: skewX(1.5625deg) skewY(1.5625deg);\n    transform: skewX(1.5625deg) skewY(1.5625deg);\n  }\n\n  66.6% {\n    -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg);\n    transform: skewX(-0.78125deg) skewY(-0.78125deg);\n  }\n\n  77.7% {\n    -webkit-transform: skewX(0.390625deg) skewY(0.390625deg);\n    transform: skewX(0.390625deg) skewY(0.390625deg);\n  }\n\n  88.8% {\n    -webkit-transform: skewX(-0.1953125deg) skewY(-0.1953125deg);\n    transform: skewX(-0.1953125deg) skewY(-0.1953125deg);\n  }\n}\n\n.jello {\n  -webkit-animation-name: jello;\n  animation-name: jello;\n  -webkit-transform-origin: center;\n  transform-origin: center;\n}\n\n@-webkit-keyframes bounceIn {\n  from, 20%, 40%, 60%, 80%, to {\n    -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n    animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n  }\n\n  0% {\n    opacity: 0;\n    -webkit-transform: scale3d(.3, .3, .3);\n    transform: scale3d(.3, .3, .3);\n  }\n\n  20% {\n    -webkit-transform: scale3d(1.1, 1.1, 1.1);\n    transform: scale3d(1.1, 1.1, 1.1);\n  }\n\n  40% {\n    -webkit-transform: scale3d(.9, .9, .9);\n    transform: scale3d(.9, .9, .9);\n  }\n\n  60% {\n    opacity: 1;\n    -webkit-transform: scale3d(1.03, 1.03, 1.03);\n    transform: scale3d(1.03, 1.03, 1.03);\n  }\n\n  80% {\n    -webkit-transform: scale3d(.97, .97, .97);\n    transform: scale3d(.97, .97, .97);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: scale3d(1, 1, 1);\n    transform: scale3d(1, 1, 1);\n  }\n}\n\n@keyframes bounceIn {\n  from, 20%, 40%, 60%, 80%, to {\n    -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n    animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n  }\n\n  0% {\n    opacity: 0;\n    -webkit-transform: scale3d(.3, .3, .3);\n    transform: scale3d(.3, .3, .3);\n  }\n\n  20% {\n    -webkit-transform: scale3d(1.1, 1.1, 1.1);\n    transform: scale3d(1.1, 1.1, 1.1);\n  }\n\n  40% {\n    -webkit-transform: scale3d(.9, .9, .9);\n    transform: scale3d(.9, .9, .9);\n  }\n\n  60% {\n    opacity: 1;\n    -webkit-transform: scale3d(1.03, 1.03, 1.03);\n    transform: scale3d(1.03, 1.03, 1.03);\n  }\n\n  80% {\n    -webkit-transform: scale3d(.97, .97, .97);\n    transform: scale3d(.97, .97, .97);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: scale3d(1, 1, 1);\n    transform: scale3d(1, 1, 1);\n  }\n}\n\n.bounceIn {\n  -webkit-animation-name: bounceIn;\n  animation-name: bounceIn;\n}\n\n@-webkit-keyframes bounceInDown {\n  from, 60%, 75%, 90%, to {\n    -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n    animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n  }\n\n  0% {\n    opacity: 0;\n    -webkit-transform: translate3d(0, -3000px, 0);\n    transform: translate3d(0, -3000px, 0);\n  }\n\n  60% {\n    opacity: 1;\n    -webkit-transform: translate3d(0, 25px, 0);\n    transform: translate3d(0, 25px, 0);\n  }\n\n  75% {\n    -webkit-transform: translate3d(0, -10px, 0);\n    transform: translate3d(0, -10px, 0);\n  }\n\n  90% {\n    -webkit-transform: translate3d(0, 5px, 0);\n    transform: translate3d(0, 5px, 0);\n  }\n\n  to {\n    -webkit-transform: none;\n    transform: none;\n  }\n}\n\n@keyframes bounceInDown {\n  from, 60%, 75%, 90%, to {\n    -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n    animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n  }\n\n  0% {\n    opacity: 0;\n    -webkit-transform: translate3d(0, -3000px, 0);\n    transform: translate3d(0, -3000px, 0);\n  }\n\n  60% {\n    opacity: 1;\n    -webkit-transform: translate3d(0, 25px, 0);\n    transform: translate3d(0, 25px, 0);\n  }\n\n  75% {\n    -webkit-transform: translate3d(0, -10px, 0);\n    transform: translate3d(0, -10px, 0);\n  }\n\n  90% {\n    -webkit-transform: translate3d(0, 5px, 0);\n    transform: translate3d(0, 5px, 0);\n  }\n\n  to {\n    -webkit-transform: none;\n    transform: none;\n  }\n}\n\n.bounceInDown {\n  -webkit-animation-name: bounceInDown;\n  animation-name: bounceInDown;\n}\n\n@-webkit-keyframes bounceInLeft {\n  from, 60%, 75%, 90%, to {\n    -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n    animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n  }\n\n  0% {\n    opacity: 0;\n    -webkit-transform: translate3d(-3000px, 0, 0);\n    transform: translate3d(-3000px, 0, 0);\n  }\n\n  60% {\n    opacity: 1;\n    -webkit-transform: translate3d(25px, 0, 0);\n    transform: translate3d(25px, 0, 0);\n  }\n\n  75% {\n    -webkit-transform: translate3d(-10px, 0, 0);\n    transform: translate3d(-10px, 0, 0);\n  }\n\n  90% {\n    -webkit-transform: translate3d(5px, 0, 0);\n    transform: translate3d(5px, 0, 0);\n  }\n\n  to {\n    -webkit-transform: none;\n    transform: none;\n  }\n}\n\n@keyframes bounceInLeft {\n  from, 60%, 75%, 90%, to {\n    -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n    animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n  }\n\n  0% {\n    opacity: 0;\n    -webkit-transform: translate3d(-3000px, 0, 0);\n    transform: translate3d(-3000px, 0, 0);\n  }\n\n  60% {\n    opacity: 1;\n    -webkit-transform: translate3d(25px, 0, 0);\n    transform: translate3d(25px, 0, 0);\n  }\n\n  75% {\n    -webkit-transform: translate3d(-10px, 0, 0);\n    transform: translate3d(-10px, 0, 0);\n  }\n\n  90% {\n    -webkit-transform: translate3d(5px, 0, 0);\n    transform: translate3d(5px, 0, 0);\n  }\n\n  to {\n    -webkit-transform: none;\n    transform: none;\n  }\n}\n\n.bounceInLeft {\n  -webkit-animation-name: bounceInLeft;\n  animation-name: bounceInLeft;\n}\n\n@-webkit-keyframes bounceInRight {\n  from, 60%, 75%, 90%, to {\n    -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n    animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n  }\n\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(3000px, 0, 0);\n    transform: translate3d(3000px, 0, 0);\n  }\n\n  60% {\n    opacity: 1;\n    -webkit-transform: translate3d(-25px, 0, 0);\n    transform: translate3d(-25px, 0, 0);\n  }\n\n  75% {\n    -webkit-transform: translate3d(10px, 0, 0);\n    transform: translate3d(10px, 0, 0);\n  }\n\n  90% {\n    -webkit-transform: translate3d(-5px, 0, 0);\n    transform: translate3d(-5px, 0, 0);\n  }\n\n  to {\n    -webkit-transform: none;\n    transform: none;\n  }\n}\n\n@keyframes bounceInRight {\n  from, 60%, 75%, 90%, to {\n    -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n    animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n  }\n\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(3000px, 0, 0);\n    transform: translate3d(3000px, 0, 0);\n  }\n\n  60% {\n    opacity: 1;\n    -webkit-transform: translate3d(-25px, 0, 0);\n    transform: translate3d(-25px, 0, 0);\n  }\n\n  75% {\n    -webkit-transform: translate3d(10px, 0, 0);\n    transform: translate3d(10px, 0, 0);\n  }\n\n  90% {\n    -webkit-transform: translate3d(-5px, 0, 0);\n    transform: translate3d(-5px, 0, 0);\n  }\n\n  to {\n    -webkit-transform: none;\n    transform: none;\n  }\n}\n\n.bounceInRight {\n  -webkit-animation-name: bounceInRight;\n  animation-name: bounceInRight;\n}\n\n@-webkit-keyframes bounceInUp {\n  from, 60%, 75%, 90%, to {\n    -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n    animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n  }\n\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(0, 3000px, 0);\n    transform: translate3d(0, 3000px, 0);\n  }\n\n  60% {\n    opacity: 1;\n    -webkit-transform: translate3d(0, -20px, 0);\n    transform: translate3d(0, -20px, 0);\n  }\n\n  75% {\n    -webkit-transform: translate3d(0, 10px, 0);\n    transform: translate3d(0, 10px, 0);\n  }\n\n  90% {\n    -webkit-transform: translate3d(0, -5px, 0);\n    transform: translate3d(0, -5px, 0);\n  }\n\n  to {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n}\n\n@keyframes bounceInUp {\n  from, 60%, 75%, 90%, to {\n    -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n    animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n  }\n\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(0, 3000px, 0);\n    transform: translate3d(0, 3000px, 0);\n  }\n\n  60% {\n    opacity: 1;\n    -webkit-transform: translate3d(0, -20px, 0);\n    transform: translate3d(0, -20px, 0);\n  }\n\n  75% {\n    -webkit-transform: translate3d(0, 10px, 0);\n    transform: translate3d(0, 10px, 0);\n  }\n\n  90% {\n    -webkit-transform: translate3d(0, -5px, 0);\n    transform: translate3d(0, -5px, 0);\n  }\n\n  to {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n}\n\n.bounceInUp {\n  -webkit-animation-name: bounceInUp;\n  animation-name: bounceInUp;\n}\n\n@-webkit-keyframes bounceOut {\n  20% {\n    -webkit-transform: scale3d(.9, .9, .9);\n    transform: scale3d(.9, .9, .9);\n  }\n\n  50%, 55% {\n    opacity: 1;\n    -webkit-transform: scale3d(1.1, 1.1, 1.1);\n    transform: scale3d(1.1, 1.1, 1.1);\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: scale3d(.3, .3, .3);\n    transform: scale3d(.3, .3, .3);\n  }\n}\n\n@keyframes bounceOut {\n  20% {\n    -webkit-transform: scale3d(.9, .9, .9);\n    transform: scale3d(.9, .9, .9);\n  }\n\n  50%, 55% {\n    opacity: 1;\n    -webkit-transform: scale3d(1.1, 1.1, 1.1);\n    transform: scale3d(1.1, 1.1, 1.1);\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: scale3d(.3, .3, .3);\n    transform: scale3d(.3, .3, .3);\n  }\n}\n\n.bounceOut {\n  -webkit-animation-name: bounceOut;\n  animation-name: bounceOut;\n}\n\n@-webkit-keyframes bounceOutDown {\n  20% {\n    -webkit-transform: translate3d(0, 10px, 0);\n    transform: translate3d(0, 10px, 0);\n  }\n\n  40%, 45% {\n    opacity: 1;\n    -webkit-transform: translate3d(0, -20px, 0);\n    transform: translate3d(0, -20px, 0);\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(0, 2000px, 0);\n    transform: translate3d(0, 2000px, 0);\n  }\n}\n\n@keyframes bounceOutDown {\n  20% {\n    -webkit-transform: translate3d(0, 10px, 0);\n    transform: translate3d(0, 10px, 0);\n  }\n\n  40%, 45% {\n    opacity: 1;\n    -webkit-transform: translate3d(0, -20px, 0);\n    transform: translate3d(0, -20px, 0);\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(0, 2000px, 0);\n    transform: translate3d(0, 2000px, 0);\n  }\n}\n\n.bounceOutDown {\n  -webkit-animation-name: bounceOutDown;\n  animation-name: bounceOutDown;\n}\n\n@-webkit-keyframes bounceOutLeft {\n  20% {\n    opacity: 1;\n    -webkit-transform: translate3d(20px, 0, 0);\n    transform: translate3d(20px, 0, 0);\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(-2000px, 0, 0);\n    transform: translate3d(-2000px, 0, 0);\n  }\n}\n\n@keyframes bounceOutLeft {\n  20% {\n    opacity: 1;\n    -webkit-transform: translate3d(20px, 0, 0);\n    transform: translate3d(20px, 0, 0);\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(-2000px, 0, 0);\n    transform: translate3d(-2000px, 0, 0);\n  }\n}\n\n.bounceOutLeft {\n  -webkit-animation-name: bounceOutLeft;\n  animation-name: bounceOutLeft;\n}\n\n@-webkit-keyframes bounceOutRight {\n  20% {\n    opacity: 1;\n    -webkit-transform: translate3d(-20px, 0, 0);\n    transform: translate3d(-20px, 0, 0);\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(2000px, 0, 0);\n    transform: translate3d(2000px, 0, 0);\n  }\n}\n\n@keyframes bounceOutRight {\n  20% {\n    opacity: 1;\n    -webkit-transform: translate3d(-20px, 0, 0);\n    transform: translate3d(-20px, 0, 0);\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(2000px, 0, 0);\n    transform: translate3d(2000px, 0, 0);\n  }\n}\n\n.bounceOutRight {\n  -webkit-animation-name: bounceOutRight;\n  animation-name: bounceOutRight;\n}\n\n@-webkit-keyframes bounceOutUp {\n  20% {\n    -webkit-transform: translate3d(0, -10px, 0);\n    transform: translate3d(0, -10px, 0);\n  }\n\n  40%, 45% {\n    opacity: 1;\n    -webkit-transform: translate3d(0, 20px, 0);\n    transform: translate3d(0, 20px, 0);\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(0, -2000px, 0);\n    transform: translate3d(0, -2000px, 0);\n  }\n}\n\n@keyframes bounceOutUp {\n  20% {\n    -webkit-transform: translate3d(0, -10px, 0);\n    transform: translate3d(0, -10px, 0);\n  }\n\n  40%, 45% {\n    opacity: 1;\n    -webkit-transform: translate3d(0, 20px, 0);\n    transform: translate3d(0, 20px, 0);\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(0, -2000px, 0);\n    transform: translate3d(0, -2000px, 0);\n  }\n}\n\n.bounceOutUp {\n  -webkit-animation-name: bounceOutUp;\n  animation-name: bounceOutUp;\n}\n\n@-webkit-keyframes fadeIn {\n  from {\n    opacity: 0;\n  }\n\n  to {\n    opacity: 1;\n  }\n}\n\n@keyframes fadeIn {\n  from {\n    opacity: 0;\n  }\n\n  to {\n    opacity: 1;\n  }\n}\n\n.fadeIn {\n  -webkit-animation-name: fadeIn;\n  animation-name: fadeIn;\n}\n\n@-webkit-keyframes fadeInDown {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(0, -100%, 0);\n    transform: translate3d(0, -100%, 0);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: none;\n    transform: none;\n  }\n}\n\n@keyframes fadeInDown {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(0, -100%, 0);\n    transform: translate3d(0, -100%, 0);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: none;\n    transform: none;\n  }\n}\n\n.fadeInDown {\n  -webkit-animation-name: fadeInDown;\n  animation-name: fadeInDown;\n}\n\n@-webkit-keyframes fadeInDownBig {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(0, -2000px, 0);\n    transform: translate3d(0, -2000px, 0);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: none;\n    transform: none;\n  }\n}\n\n@keyframes fadeInDownBig {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(0, -2000px, 0);\n    transform: translate3d(0, -2000px, 0);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: none;\n    transform: none;\n  }\n}\n\n.fadeInDownBig {\n  -webkit-animation-name: fadeInDownBig;\n  animation-name: fadeInDownBig;\n}\n\n@-webkit-keyframes fadeInLeft {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(-100%, 0, 0);\n    transform: translate3d(-100%, 0, 0);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: none;\n    transform: none;\n  }\n}\n\n@keyframes fadeInLeft {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(-100%, 0, 0);\n    transform: translate3d(-100%, 0, 0);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: none;\n    transform: none;\n  }\n}\n\n.fadeInLeft {\n  -webkit-animation-name: fadeInLeft;\n  animation-name: fadeInLeft;\n}\n\n@-webkit-keyframes fadeInLeftBig {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(-2000px, 0, 0);\n    transform: translate3d(-2000px, 0, 0);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: none;\n    transform: none;\n  }\n}\n\n@keyframes fadeInLeftBig {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(-2000px, 0, 0);\n    transform: translate3d(-2000px, 0, 0);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: none;\n    transform: none;\n  }\n}\n\n.fadeInLeftBig {\n  -webkit-animation-name: fadeInLeftBig;\n  animation-name: fadeInLeftBig;\n}\n\n@-webkit-keyframes fadeInRight {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(100%, 0, 0);\n    transform: translate3d(100%, 0, 0);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: none;\n    transform: none;\n  }\n}\n\n@keyframes fadeInRight {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(100%, 0, 0);\n    transform: translate3d(100%, 0, 0);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: none;\n    transform: none;\n  }\n}\n\n.fadeInRight {\n  -webkit-animation-name: fadeInRight;\n  animation-name: fadeInRight;\n}\n\n@-webkit-keyframes fadeInRightBig {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(2000px, 0, 0);\n    transform: translate3d(2000px, 0, 0);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: none;\n    transform: none;\n  }\n}\n\n@keyframes fadeInRightBig {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(2000px, 0, 0);\n    transform: translate3d(2000px, 0, 0);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: none;\n    transform: none;\n  }\n}\n\n.fadeInRightBig {\n  -webkit-animation-name: fadeInRightBig;\n  animation-name: fadeInRightBig;\n}\n\n@-webkit-keyframes fadeInUp {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(0, 100%, 0);\n    transform: translate3d(0, 100%, 0);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: none;\n    transform: none;\n  }\n}\n\n@keyframes fadeInUp {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(0, 100%, 0);\n    transform: translate3d(0, 100%, 0);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: none;\n    transform: none;\n  }\n}\n\n.fadeInUp {\n  -webkit-animation-name: fadeInUp;\n  animation-name: fadeInUp;\n}\n\n@-webkit-keyframes fadeInUpBig {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(0, 2000px, 0);\n    transform: translate3d(0, 2000px, 0);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: none;\n    transform: none;\n  }\n}\n\n@keyframes fadeInUpBig {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(0, 2000px, 0);\n    transform: translate3d(0, 2000px, 0);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: none;\n    transform: none;\n  }\n}\n\n.fadeInUpBig {\n  -webkit-animation-name: fadeInUpBig;\n  animation-name: fadeInUpBig;\n}\n\n@-webkit-keyframes fadeOut {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n  }\n}\n\n@keyframes fadeOut {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n  }\n}\n\n.fadeOut {\n  -webkit-animation-name: fadeOut;\n  animation-name: fadeOut;\n}\n\n@-webkit-keyframes fadeOutDown {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(0, 100%, 0);\n    transform: translate3d(0, 100%, 0);\n  }\n}\n\n@keyframes fadeOutDown {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(0, 100%, 0);\n    transform: translate3d(0, 100%, 0);\n  }\n}\n\n.fadeOutDown {\n  -webkit-animation-name: fadeOutDown;\n  animation-name: fadeOutDown;\n}\n\n@-webkit-keyframes fadeOutDownBig {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(0, 2000px, 0);\n    transform: translate3d(0, 2000px, 0);\n  }\n}\n\n@keyframes fadeOutDownBig {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(0, 2000px, 0);\n    transform: translate3d(0, 2000px, 0);\n  }\n}\n\n.fadeOutDownBig {\n  -webkit-animation-name: fadeOutDownBig;\n  animation-name: fadeOutDownBig;\n}\n\n@-webkit-keyframes fadeOutLeft {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(-100%, 0, 0);\n    transform: translate3d(-100%, 0, 0);\n  }\n}\n\n@keyframes fadeOutLeft {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(-100%, 0, 0);\n    transform: translate3d(-100%, 0, 0);\n  }\n}\n\n.fadeOutLeft {\n  -webkit-animation-name: fadeOutLeft;\n  animation-name: fadeOutLeft;\n}\n\n@-webkit-keyframes fadeOutLeftBig {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(-2000px, 0, 0);\n    transform: translate3d(-2000px, 0, 0);\n  }\n}\n\n@keyframes fadeOutLeftBig {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(-2000px, 0, 0);\n    transform: translate3d(-2000px, 0, 0);\n  }\n}\n\n.fadeOutLeftBig {\n  -webkit-animation-name: fadeOutLeftBig;\n  animation-name: fadeOutLeftBig;\n}\n\n@-webkit-keyframes fadeOutRight {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(100%, 0, 0);\n    transform: translate3d(100%, 0, 0);\n  }\n}\n\n@keyframes fadeOutRight {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(100%, 0, 0);\n    transform: translate3d(100%, 0, 0);\n  }\n}\n\n.fadeOutRight {\n  -webkit-animation-name: fadeOutRight;\n  animation-name: fadeOutRight;\n}\n\n@-webkit-keyframes fadeOutRightBig {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(2000px, 0, 0);\n    transform: translate3d(2000px, 0, 0);\n  }\n}\n\n@keyframes fadeOutRightBig {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(2000px, 0, 0);\n    transform: translate3d(2000px, 0, 0);\n  }\n}\n\n.fadeOutRightBig {\n  -webkit-animation-name: fadeOutRightBig;\n  animation-name: fadeOutRightBig;\n}\n\n@-webkit-keyframes fadeOutUp {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(0, -100%, 0);\n    transform: translate3d(0, -100%, 0);\n  }\n}\n\n@keyframes fadeOutUp {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(0, -100%, 0);\n    transform: translate3d(0, -100%, 0);\n  }\n}\n\n.fadeOutUp {\n  -webkit-animation-name: fadeOutUp;\n  animation-name: fadeOutUp;\n}\n\n@-webkit-keyframes fadeOutUpBig {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(0, -2000px, 0);\n    transform: translate3d(0, -2000px, 0);\n  }\n}\n\n@keyframes fadeOutUpBig {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(0, -2000px, 0);\n    transform: translate3d(0, -2000px, 0);\n  }\n}\n\n.fadeOutUpBig {\n  -webkit-animation-name: fadeOutUpBig;\n  animation-name: fadeOutUpBig;\n}\n\n@-webkit-keyframes flip {\n  from {\n    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg);\n    transform: perspective(400px) rotate3d(0, 1, 0, -360deg);\n    -webkit-animation-timing-function: ease-out;\n    animation-timing-function: ease-out;\n  }\n\n  40% {\n    -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);\n    transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);\n    -webkit-animation-timing-function: ease-out;\n    animation-timing-function: ease-out;\n  }\n\n  50% {\n    -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);\n    transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);\n    -webkit-animation-timing-function: ease-in;\n    animation-timing-function: ease-in;\n  }\n\n  80% {\n    -webkit-transform: perspective(400px) scale3d(.95, .95, .95);\n    transform: perspective(400px) scale3d(.95, .95, .95);\n    -webkit-animation-timing-function: ease-in;\n    animation-timing-function: ease-in;\n  }\n\n  to {\n    -webkit-transform: perspective(400px);\n    transform: perspective(400px);\n    -webkit-animation-timing-function: ease-in;\n    animation-timing-function: ease-in;\n  }\n}\n\n@keyframes flip {\n  from {\n    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg);\n    transform: perspective(400px) rotate3d(0, 1, 0, -360deg);\n    -webkit-animation-timing-function: ease-out;\n    animation-timing-function: ease-out;\n  }\n\n  40% {\n    -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);\n    transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);\n    -webkit-animation-timing-function: ease-out;\n    animation-timing-function: ease-out;\n  }\n\n  50% {\n    -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);\n    transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);\n    -webkit-animation-timing-function: ease-in;\n    animation-timing-function: ease-in;\n  }\n\n  80% {\n    -webkit-transform: perspective(400px) scale3d(.95, .95, .95);\n    transform: perspective(400px) scale3d(.95, .95, .95);\n    -webkit-animation-timing-function: ease-in;\n    animation-timing-function: ease-in;\n  }\n\n  to {\n    -webkit-transform: perspective(400px);\n    transform: perspective(400px);\n    -webkit-animation-timing-function: ease-in;\n    animation-timing-function: ease-in;\n  }\n}\n\n.animated.flip {\n  -webkit-backface-visibility: visible;\n  backface-visibility: visible;\n  -webkit-animation-name: flip;\n  animation-name: flip;\n}\n\n@-webkit-keyframes flipInX {\n  from {\n    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n    transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n    -webkit-animation-timing-function: ease-in;\n    animation-timing-function: ease-in;\n    opacity: 0;\n  }\n\n  40% {\n    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n    transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n    -webkit-animation-timing-function: ease-in;\n    animation-timing-function: ease-in;\n  }\n\n  60% {\n    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\n    transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\n    opacity: 1;\n  }\n\n  80% {\n    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg);\n    transform: perspective(400px) rotate3d(1, 0, 0, -5deg);\n  }\n\n  to {\n    -webkit-transform: perspective(400px);\n    transform: perspective(400px);\n  }\n}\n\n@keyframes flipInX {\n  from {\n    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n    transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n    -webkit-animation-timing-function: ease-in;\n    animation-timing-function: ease-in;\n    opacity: 0;\n  }\n\n  40% {\n    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n    transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n    -webkit-animation-timing-function: ease-in;\n    animation-timing-function: ease-in;\n  }\n\n  60% {\n    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\n    transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\n    opacity: 1;\n  }\n\n  80% {\n    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg);\n    transform: perspective(400px) rotate3d(1, 0, 0, -5deg);\n  }\n\n  to {\n    -webkit-transform: perspective(400px);\n    transform: perspective(400px);\n  }\n}\n\n.flipInX {\n  -webkit-backface-visibility: visible !important;\n  backface-visibility: visible !important;\n  -webkit-animation-name: flipInX;\n  animation-name: flipInX;\n}\n\n@-webkit-keyframes flipInY {\n  from {\n    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n    transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n    -webkit-animation-timing-function: ease-in;\n    animation-timing-function: ease-in;\n    opacity: 0;\n  }\n\n  40% {\n    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg);\n    transform: perspective(400px) rotate3d(0, 1, 0, -20deg);\n    -webkit-animation-timing-function: ease-in;\n    animation-timing-function: ease-in;\n  }\n\n  60% {\n    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg);\n    transform: perspective(400px) rotate3d(0, 1, 0, 10deg);\n    opacity: 1;\n  }\n\n  80% {\n    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg);\n    transform: perspective(400px) rotate3d(0, 1, 0, -5deg);\n  }\n\n  to {\n    -webkit-transform: perspective(400px);\n    transform: perspective(400px);\n  }\n}\n\n@keyframes flipInY {\n  from {\n    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n    transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n    -webkit-animation-timing-function: ease-in;\n    animation-timing-function: ease-in;\n    opacity: 0;\n  }\n\n  40% {\n    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg);\n    transform: perspective(400px) rotate3d(0, 1, 0, -20deg);\n    -webkit-animation-timing-function: ease-in;\n    animation-timing-function: ease-in;\n  }\n\n  60% {\n    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg);\n    transform: perspective(400px) rotate3d(0, 1, 0, 10deg);\n    opacity: 1;\n  }\n\n  80% {\n    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg);\n    transform: perspective(400px) rotate3d(0, 1, 0, -5deg);\n  }\n\n  to {\n    -webkit-transform: perspective(400px);\n    transform: perspective(400px);\n  }\n}\n\n.flipInY {\n  -webkit-backface-visibility: visible !important;\n  backface-visibility: visible !important;\n  -webkit-animation-name: flipInY;\n  animation-name: flipInY;\n}\n\n@-webkit-keyframes flipOutX {\n  from {\n    -webkit-transform: perspective(400px);\n    transform: perspective(400px);\n  }\n\n  30% {\n    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n    transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n    opacity: 1;\n  }\n\n  to {\n    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n    transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n    opacity: 0;\n  }\n}\n\n@keyframes flipOutX {\n  from {\n    -webkit-transform: perspective(400px);\n    transform: perspective(400px);\n  }\n\n  30% {\n    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n    transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n    opacity: 1;\n  }\n\n  to {\n    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n    transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n    opacity: 0;\n  }\n}\n\n.flipOutX {\n  -webkit-animation-name: flipOutX;\n  animation-name: flipOutX;\n  -webkit-backface-visibility: visible !important;\n  backface-visibility: visible !important;\n}\n\n@-webkit-keyframes flipOutY {\n  from {\n    -webkit-transform: perspective(400px);\n    transform: perspective(400px);\n  }\n\n  30% {\n    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg);\n    transform: perspective(400px) rotate3d(0, 1, 0, -15deg);\n    opacity: 1;\n  }\n\n  to {\n    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n    transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n    opacity: 0;\n  }\n}\n\n@keyframes flipOutY {\n  from {\n    -webkit-transform: perspective(400px);\n    transform: perspective(400px);\n  }\n\n  30% {\n    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg);\n    transform: perspective(400px) rotate3d(0, 1, 0, -15deg);\n    opacity: 1;\n  }\n\n  to {\n    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n    transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n    opacity: 0;\n  }\n}\n\n.flipOutY {\n  -webkit-backface-visibility: visible !important;\n  backface-visibility: visible !important;\n  -webkit-animation-name: flipOutY;\n  animation-name: flipOutY;\n}\n\n@-webkit-keyframes lightSpeedIn {\n  from {\n    -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg);\n    transform: translate3d(100%, 0, 0) skewX(-30deg);\n    opacity: 0;\n  }\n\n  60% {\n    -webkit-transform: skewX(20deg);\n    transform: skewX(20deg);\n    opacity: 1;\n  }\n\n  80% {\n    -webkit-transform: skewX(-5deg);\n    transform: skewX(-5deg);\n    opacity: 1;\n  }\n\n  to {\n    -webkit-transform: none;\n    transform: none;\n    opacity: 1;\n  }\n}\n\n@keyframes lightSpeedIn {\n  from {\n    -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg);\n    transform: translate3d(100%, 0, 0) skewX(-30deg);\n    opacity: 0;\n  }\n\n  60% {\n    -webkit-transform: skewX(20deg);\n    transform: skewX(20deg);\n    opacity: 1;\n  }\n\n  80% {\n    -webkit-transform: skewX(-5deg);\n    transform: skewX(-5deg);\n    opacity: 1;\n  }\n\n  to {\n    -webkit-transform: none;\n    transform: none;\n    opacity: 1;\n  }\n}\n\n.lightSpeedIn {\n  -webkit-animation-name: lightSpeedIn;\n  animation-name: lightSpeedIn;\n  -webkit-animation-timing-function: ease-out;\n  animation-timing-function: ease-out;\n}\n\n@-webkit-keyframes lightSpeedOut {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    -webkit-transform: translate3d(100%, 0, 0) skewX(30deg);\n    transform: translate3d(100%, 0, 0) skewX(30deg);\n    opacity: 0;\n  }\n}\n\n@keyframes lightSpeedOut {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    -webkit-transform: translate3d(100%, 0, 0) skewX(30deg);\n    transform: translate3d(100%, 0, 0) skewX(30deg);\n    opacity: 0;\n  }\n}\n\n.lightSpeedOut {\n  -webkit-animation-name: lightSpeedOut;\n  animation-name: lightSpeedOut;\n  -webkit-animation-timing-function: ease-in;\n  animation-timing-function: ease-in;\n}\n\n@-webkit-keyframes rotateIn {\n  from {\n    -webkit-transform-origin: center;\n    transform-origin: center;\n    -webkit-transform: rotate3d(0, 0, 1, -200deg);\n    transform: rotate3d(0, 0, 1, -200deg);\n    opacity: 0;\n  }\n\n  to {\n    -webkit-transform-origin: center;\n    transform-origin: center;\n    -webkit-transform: none;\n    transform: none;\n    opacity: 1;\n  }\n}\n\n@keyframes rotateIn {\n  from {\n    -webkit-transform-origin: center;\n    transform-origin: center;\n    -webkit-transform: rotate3d(0, 0, 1, -200deg);\n    transform: rotate3d(0, 0, 1, -200deg);\n    opacity: 0;\n  }\n\n  to {\n    -webkit-transform-origin: center;\n    transform-origin: center;\n    -webkit-transform: none;\n    transform: none;\n    opacity: 1;\n  }\n}\n\n.rotateIn {\n  -webkit-animation-name: rotateIn;\n  animation-name: rotateIn;\n}\n\n@-webkit-keyframes rotateInDownLeft {\n  from {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    -webkit-transform: rotate3d(0, 0, 1, -45deg);\n    transform: rotate3d(0, 0, 1, -45deg);\n    opacity: 0;\n  }\n\n  to {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    -webkit-transform: none;\n    transform: none;\n    opacity: 1;\n  }\n}\n\n@keyframes rotateInDownLeft {\n  from {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    -webkit-transform: rotate3d(0, 0, 1, -45deg);\n    transform: rotate3d(0, 0, 1, -45deg);\n    opacity: 0;\n  }\n\n  to {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    -webkit-transform: none;\n    transform: none;\n    opacity: 1;\n  }\n}\n\n.rotateInDownLeft {\n  -webkit-animation-name: rotateInDownLeft;\n  animation-name: rotateInDownLeft;\n}\n\n@-webkit-keyframes rotateInDownRight {\n  from {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    -webkit-transform: rotate3d(0, 0, 1, 45deg);\n    transform: rotate3d(0, 0, 1, 45deg);\n    opacity: 0;\n  }\n\n  to {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    -webkit-transform: none;\n    transform: none;\n    opacity: 1;\n  }\n}\n\n@keyframes rotateInDownRight {\n  from {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    -webkit-transform: rotate3d(0, 0, 1, 45deg);\n    transform: rotate3d(0, 0, 1, 45deg);\n    opacity: 0;\n  }\n\n  to {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    -webkit-transform: none;\n    transform: none;\n    opacity: 1;\n  }\n}\n\n.rotateInDownRight {\n  -webkit-animation-name: rotateInDownRight;\n  animation-name: rotateInDownRight;\n}\n\n@-webkit-keyframes rotateInUpLeft {\n  from {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    -webkit-transform: rotate3d(0, 0, 1, 45deg);\n    transform: rotate3d(0, 0, 1, 45deg);\n    opacity: 0;\n  }\n\n  to {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    -webkit-transform: none;\n    transform: none;\n    opacity: 1;\n  }\n}\n\n@keyframes rotateInUpLeft {\n  from {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    -webkit-transform: rotate3d(0, 0, 1, 45deg);\n    transform: rotate3d(0, 0, 1, 45deg);\n    opacity: 0;\n  }\n\n  to {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    -webkit-transform: none;\n    transform: none;\n    opacity: 1;\n  }\n}\n\n.rotateInUpLeft {\n  -webkit-animation-name: rotateInUpLeft;\n  animation-name: rotateInUpLeft;\n}\n\n@-webkit-keyframes rotateInUpRight {\n  from {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    -webkit-transform: rotate3d(0, 0, 1, -90deg);\n    transform: rotate3d(0, 0, 1, -90deg);\n    opacity: 0;\n  }\n\n  to {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    -webkit-transform: none;\n    transform: none;\n    opacity: 1;\n  }\n}\n\n@keyframes rotateInUpRight {\n  from {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    -webkit-transform: rotate3d(0, 0, 1, -90deg);\n    transform: rotate3d(0, 0, 1, -90deg);\n    opacity: 0;\n  }\n\n  to {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    -webkit-transform: none;\n    transform: none;\n    opacity: 1;\n  }\n}\n\n.rotateInUpRight {\n  -webkit-animation-name: rotateInUpRight;\n  animation-name: rotateInUpRight;\n}\n\n@-webkit-keyframes rotateOut {\n  from {\n    -webkit-transform-origin: center;\n    transform-origin: center;\n    opacity: 1;\n  }\n\n  to {\n    -webkit-transform-origin: center;\n    transform-origin: center;\n    -webkit-transform: rotate3d(0, 0, 1, 200deg);\n    transform: rotate3d(0, 0, 1, 200deg);\n    opacity: 0;\n  }\n}\n\n@keyframes rotateOut {\n  from {\n    -webkit-transform-origin: center;\n    transform-origin: center;\n    opacity: 1;\n  }\n\n  to {\n    -webkit-transform-origin: center;\n    transform-origin: center;\n    -webkit-transform: rotate3d(0, 0, 1, 200deg);\n    transform: rotate3d(0, 0, 1, 200deg);\n    opacity: 0;\n  }\n}\n\n.rotateOut {\n  -webkit-animation-name: rotateOut;\n  animation-name: rotateOut;\n}\n\n@-webkit-keyframes rotateOutDownLeft {\n  from {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    opacity: 1;\n  }\n\n  to {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    -webkit-transform: rotate3d(0, 0, 1, 45deg);\n    transform: rotate3d(0, 0, 1, 45deg);\n    opacity: 0;\n  }\n}\n\n@keyframes rotateOutDownLeft {\n  from {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    opacity: 1;\n  }\n\n  to {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    -webkit-transform: rotate3d(0, 0, 1, 45deg);\n    transform: rotate3d(0, 0, 1, 45deg);\n    opacity: 0;\n  }\n}\n\n.rotateOutDownLeft {\n  -webkit-animation-name: rotateOutDownLeft;\n  animation-name: rotateOutDownLeft;\n}\n\n@-webkit-keyframes rotateOutDownRight {\n  from {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    opacity: 1;\n  }\n\n  to {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    -webkit-transform: rotate3d(0, 0, 1, -45deg);\n    transform: rotate3d(0, 0, 1, -45deg);\n    opacity: 0;\n  }\n}\n\n@keyframes rotateOutDownRight {\n  from {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    opacity: 1;\n  }\n\n  to {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    -webkit-transform: rotate3d(0, 0, 1, -45deg);\n    transform: rotate3d(0, 0, 1, -45deg);\n    opacity: 0;\n  }\n}\n\n.rotateOutDownRight {\n  -webkit-animation-name: rotateOutDownRight;\n  animation-name: rotateOutDownRight;\n}\n\n@-webkit-keyframes rotateOutUpLeft {\n  from {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    opacity: 1;\n  }\n\n  to {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    -webkit-transform: rotate3d(0, 0, 1, -45deg);\n    transform: rotate3d(0, 0, 1, -45deg);\n    opacity: 0;\n  }\n}\n\n@keyframes rotateOutUpLeft {\n  from {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    opacity: 1;\n  }\n\n  to {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    -webkit-transform: rotate3d(0, 0, 1, -45deg);\n    transform: rotate3d(0, 0, 1, -45deg);\n    opacity: 0;\n  }\n}\n\n.rotateOutUpLeft {\n  -webkit-animation-name: rotateOutUpLeft;\n  animation-name: rotateOutUpLeft;\n}\n\n@-webkit-keyframes rotateOutUpRight {\n  from {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    opacity: 1;\n  }\n\n  to {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    -webkit-transform: rotate3d(0, 0, 1, 90deg);\n    transform: rotate3d(0, 0, 1, 90deg);\n    opacity: 0;\n  }\n}\n\n@keyframes rotateOutUpRight {\n  from {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    opacity: 1;\n  }\n\n  to {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    -webkit-transform: rotate3d(0, 0, 1, 90deg);\n    transform: rotate3d(0, 0, 1, 90deg);\n    opacity: 0;\n  }\n}\n\n.rotateOutUpRight {\n  -webkit-animation-name: rotateOutUpRight;\n  animation-name: rotateOutUpRight;\n}\n\n@-webkit-keyframes hinge {\n  0% {\n    -webkit-transform-origin: top left;\n    transform-origin: top left;\n    -webkit-animation-timing-function: ease-in-out;\n    animation-timing-function: ease-in-out;\n  }\n\n  20%, 60% {\n    -webkit-transform: rotate3d(0, 0, 1, 80deg);\n    transform: rotate3d(0, 0, 1, 80deg);\n    -webkit-transform-origin: top left;\n    transform-origin: top left;\n    -webkit-animation-timing-function: ease-in-out;\n    animation-timing-function: ease-in-out;\n  }\n\n  40%, 80% {\n    -webkit-transform: rotate3d(0, 0, 1, 60deg);\n    transform: rotate3d(0, 0, 1, 60deg);\n    -webkit-transform-origin: top left;\n    transform-origin: top left;\n    -webkit-animation-timing-function: ease-in-out;\n    animation-timing-function: ease-in-out;\n    opacity: 1;\n  }\n\n  to {\n    -webkit-transform: translate3d(0, 700px, 0);\n    transform: translate3d(0, 700px, 0);\n    opacity: 0;\n  }\n}\n\n@keyframes hinge {\n  0% {\n    -webkit-transform-origin: top left;\n    transform-origin: top left;\n    -webkit-animation-timing-function: ease-in-out;\n    animation-timing-function: ease-in-out;\n  }\n\n  20%, 60% {\n    -webkit-transform: rotate3d(0, 0, 1, 80deg);\n    transform: rotate3d(0, 0, 1, 80deg);\n    -webkit-transform-origin: top left;\n    transform-origin: top left;\n    -webkit-animation-timing-function: ease-in-out;\n    animation-timing-function: ease-in-out;\n  }\n\n  40%, 80% {\n    -webkit-transform: rotate3d(0, 0, 1, 60deg);\n    transform: rotate3d(0, 0, 1, 60deg);\n    -webkit-transform-origin: top left;\n    transform-origin: top left;\n    -webkit-animation-timing-function: ease-in-out;\n    animation-timing-function: ease-in-out;\n    opacity: 1;\n  }\n\n  to {\n    -webkit-transform: translate3d(0, 700px, 0);\n    transform: translate3d(0, 700px, 0);\n    opacity: 0;\n  }\n}\n\n.hinge {\n  -webkit-animation-name: hinge;\n  animation-name: hinge;\n}\n\n/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */\n\n@-webkit-keyframes rollIn {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);\n    transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: none;\n    transform: none;\n  }\n}\n\n@keyframes rollIn {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);\n    transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: none;\n    transform: none;\n  }\n}\n\n.rollIn {\n  -webkit-animation-name: rollIn;\n  animation-name: rollIn;\n}\n\n/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */\n\n@-webkit-keyframes rollOut {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);\n    transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);\n  }\n}\n\n@keyframes rollOut {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);\n    transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);\n  }\n}\n\n.rollOut {\n  -webkit-animation-name: rollOut;\n  animation-name: rollOut;\n}\n\n@-webkit-keyframes zoomIn {\n  from {\n    opacity: 0;\n    -webkit-transform: scale3d(.3, .3, .3);\n    transform: scale3d(.3, .3, .3);\n  }\n\n  50% {\n    opacity: 1;\n  }\n}\n\n@keyframes zoomIn {\n  from {\n    opacity: 0;\n    -webkit-transform: scale3d(.3, .3, .3);\n    transform: scale3d(.3, .3, .3);\n  }\n\n  50% {\n    opacity: 1;\n  }\n}\n\n.zoomIn {\n  -webkit-animation-name: zoomIn;\n  animation-name: zoomIn;\n}\n\n@-webkit-keyframes zoomInDown {\n  from {\n    opacity: 0;\n    -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0);\n    transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n    animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n  }\n\n  60% {\n    opacity: 1;\n    -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);\n    transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n    animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n  }\n}\n\n@keyframes zoomInDown {\n  from {\n    opacity: 0;\n    -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0);\n    transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n    animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n  }\n\n  60% {\n    opacity: 1;\n    -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);\n    transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n    animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n  }\n}\n\n.zoomInDown {\n  -webkit-animation-name: zoomInDown;\n  animation-name: zoomInDown;\n}\n\n@-webkit-keyframes zoomInLeft {\n  from {\n    opacity: 0;\n    -webkit-transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0);\n    transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n    animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n  }\n\n  60% {\n    opacity: 1;\n    -webkit-transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0);\n    transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n    animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n  }\n}\n\n@keyframes zoomInLeft {\n  from {\n    opacity: 0;\n    -webkit-transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0);\n    transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n    animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n  }\n\n  60% {\n    opacity: 1;\n    -webkit-transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0);\n    transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n    animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n  }\n}\n\n.zoomInLeft {\n  -webkit-animation-name: zoomInLeft;\n  animation-name: zoomInLeft;\n}\n\n@-webkit-keyframes zoomInRight {\n  from {\n    opacity: 0;\n    -webkit-transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0);\n    transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n    animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n  }\n\n  60% {\n    opacity: 1;\n    -webkit-transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0);\n    transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n    animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n  }\n}\n\n@keyframes zoomInRight {\n  from {\n    opacity: 0;\n    -webkit-transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0);\n    transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n    animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n  }\n\n  60% {\n    opacity: 1;\n    -webkit-transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0);\n    transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n    animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n  }\n}\n\n.zoomInRight {\n  -webkit-animation-name: zoomInRight;\n  animation-name: zoomInRight;\n}\n\n@-webkit-keyframes zoomInUp {\n  from {\n    opacity: 0;\n    -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0);\n    transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n    animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n  }\n\n  60% {\n    opacity: 1;\n    -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);\n    transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n    animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n  }\n}\n\n@keyframes zoomInUp {\n  from {\n    opacity: 0;\n    -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0);\n    transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n    animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n  }\n\n  60% {\n    opacity: 1;\n    -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);\n    transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n    animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n  }\n}\n\n.zoomInUp {\n  -webkit-animation-name: zoomInUp;\n  animation-name: zoomInUp;\n}\n\n@-webkit-keyframes zoomOut {\n  from {\n    opacity: 1;\n  }\n\n  50% {\n    opacity: 0;\n    -webkit-transform: scale3d(.3, .3, .3);\n    transform: scale3d(.3, .3, .3);\n  }\n\n  to {\n    opacity: 0;\n  }\n}\n\n@keyframes zoomOut {\n  from {\n    opacity: 1;\n  }\n\n  50% {\n    opacity: 0;\n    -webkit-transform: scale3d(.3, .3, .3);\n    transform: scale3d(.3, .3, .3);\n  }\n\n  to {\n    opacity: 0;\n  }\n}\n\n.zoomOut {\n  -webkit-animation-name: zoomOut;\n  animation-name: zoomOut;\n}\n\n@-webkit-keyframes zoomOutDown {\n  40% {\n    opacity: 1;\n    -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);\n    transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n    animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0);\n    transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0);\n    -webkit-transform-origin: center bottom;\n    transform-origin: center bottom;\n    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n    animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n  }\n}\n\n@keyframes zoomOutDown {\n  40% {\n    opacity: 1;\n    -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);\n    transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n    animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0);\n    transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0);\n    -webkit-transform-origin: center bottom;\n    transform-origin: center bottom;\n    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n    animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n  }\n}\n\n.zoomOutDown {\n  -webkit-animation-name: zoomOutDown;\n  animation-name: zoomOutDown;\n}\n\n@-webkit-keyframes zoomOutLeft {\n  40% {\n    opacity: 1;\n    -webkit-transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0);\n    transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0);\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: scale(.1) translate3d(-2000px, 0, 0);\n    transform: scale(.1) translate3d(-2000px, 0, 0);\n    -webkit-transform-origin: left center;\n    transform-origin: left center;\n  }\n}\n\n@keyframes zoomOutLeft {\n  40% {\n    opacity: 1;\n    -webkit-transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0);\n    transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0);\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: scale(.1) translate3d(-2000px, 0, 0);\n    transform: scale(.1) translate3d(-2000px, 0, 0);\n    -webkit-transform-origin: left center;\n    transform-origin: left center;\n  }\n}\n\n.zoomOutLeft {\n  -webkit-animation-name: zoomOutLeft;\n  animation-name: zoomOutLeft;\n}\n\n@-webkit-keyframes zoomOutRight {\n  40% {\n    opacity: 1;\n    -webkit-transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0);\n    transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0);\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: scale(.1) translate3d(2000px, 0, 0);\n    transform: scale(.1) translate3d(2000px, 0, 0);\n    -webkit-transform-origin: right center;\n    transform-origin: right center;\n  }\n}\n\n@keyframes zoomOutRight {\n  40% {\n    opacity: 1;\n    -webkit-transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0);\n    transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0);\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: scale(.1) translate3d(2000px, 0, 0);\n    transform: scale(.1) translate3d(2000px, 0, 0);\n    -webkit-transform-origin: right center;\n    transform-origin: right center;\n  }\n}\n\n.zoomOutRight {\n  -webkit-animation-name: zoomOutRight;\n  animation-name: zoomOutRight;\n}\n\n@-webkit-keyframes zoomOutUp {\n  40% {\n    opacity: 1;\n    -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);\n    transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n    animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0);\n    transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0);\n    -webkit-transform-origin: center bottom;\n    transform-origin: center bottom;\n    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n    animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n  }\n}\n\n@keyframes zoomOutUp {\n  40% {\n    opacity: 1;\n    -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);\n    transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n    animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0);\n    transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0);\n    -webkit-transform-origin: center bottom;\n    transform-origin: center bottom;\n    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n    animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n  }\n}\n\n.zoomOutUp {\n  -webkit-animation-name: zoomOutUp;\n  animation-name: zoomOutUp;\n}\n\n@-webkit-keyframes slideInDown {\n  from {\n    -webkit-transform: translate3d(0, -100%, 0);\n    transform: translate3d(0, -100%, 0);\n    visibility: visible;\n  }\n\n  to {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n}\n\n@keyframes slideInDown {\n  from {\n    -webkit-transform: translate3d(0, -100%, 0);\n    transform: translate3d(0, -100%, 0);\n    visibility: visible;\n  }\n\n  to {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n}\n\n.slideInDown {\n  -webkit-animation-name: slideInDown;\n  animation-name: slideInDown;\n}\n\n@-webkit-keyframes slideInLeft {\n  from {\n    -webkit-transform: translate3d(-100%, 0, 0);\n    transform: translate3d(-100%, 0, 0);\n    visibility: visible;\n  }\n\n  to {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n}\n\n@keyframes slideInLeft {\n  from {\n    -webkit-transform: translate3d(-100%, 0, 0);\n    transform: translate3d(-100%, 0, 0);\n    visibility: visible;\n  }\n\n  to {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n}\n\n.slideInLeft {\n  -webkit-animation-name: slideInLeft;\n  animation-name: slideInLeft;\n}\n\n@-webkit-keyframes slideInRight {\n  from {\n    -webkit-transform: translate3d(100%, 0, 0);\n    transform: translate3d(100%, 0, 0);\n    visibility: visible;\n  }\n\n  to {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n}\n\n@keyframes slideInRight {\n  from {\n    -webkit-transform: translate3d(100%, 0, 0);\n    transform: translate3d(100%, 0, 0);\n    visibility: visible;\n  }\n\n  to {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n}\n\n.slideInRight {\n  -webkit-animation-name: slideInRight;\n  animation-name: slideInRight;\n}\n\n@-webkit-keyframes slideInUp {\n  from {\n    -webkit-transform: translate3d(0, 100%, 0);\n    transform: translate3d(0, 100%, 0);\n    visibility: visible;\n  }\n\n  to {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n}\n\n@keyframes slideInUp {\n  from {\n    -webkit-transform: translate3d(0, 100%, 0);\n    transform: translate3d(0, 100%, 0);\n    visibility: visible;\n  }\n\n  to {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n}\n\n.slideInUp {\n  -webkit-animation-name: slideInUp;\n  animation-name: slideInUp;\n}\n\n@-webkit-keyframes slideOutDown {\n  from {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n\n  to {\n    visibility: hidden;\n    -webkit-transform: translate3d(0, 100%, 0);\n    transform: translate3d(0, 100%, 0);\n  }\n}\n\n@keyframes slideOutDown {\n  from {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n\n  to {\n    visibility: hidden;\n    -webkit-transform: translate3d(0, 100%, 0);\n    transform: translate3d(0, 100%, 0);\n  }\n}\n\n.slideOutDown {\n  -webkit-animation-name: slideOutDown;\n  animation-name: slideOutDown;\n}\n\n@-webkit-keyframes slideOutLeft {\n  from {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n\n  to {\n    visibility: hidden;\n    -webkit-transform: translate3d(-100%, 0, 0);\n    transform: translate3d(-100%, 0, 0);\n  }\n}\n\n@keyframes slideOutLeft {\n  from {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n\n  to {\n    visibility: hidden;\n    -webkit-transform: translate3d(-100%, 0, 0);\n    transform: translate3d(-100%, 0, 0);\n  }\n}\n\n.slideOutLeft {\n  -webkit-animation-name: slideOutLeft;\n  animation-name: slideOutLeft;\n}\n\n@-webkit-keyframes slideOutRight {\n  from {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n\n  to {\n    visibility: hidden;\n    -webkit-transform: translate3d(100%, 0, 0);\n    transform: translate3d(100%, 0, 0);\n  }\n}\n\n@keyframes slideOutRight {\n  from {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n\n  to {\n    visibility: hidden;\n    -webkit-transform: translate3d(100%, 0, 0);\n    transform: translate3d(100%, 0, 0);\n  }\n}\n\n.slideOutRight {\n  -webkit-animation-name: slideOutRight;\n  animation-name: slideOutRight;\n}\n\n@-webkit-keyframes slideOutUp {\n  from {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n\n  to {\n    visibility: hidden;\n    -webkit-transform: translate3d(0, -100%, 0);\n    transform: translate3d(0, -100%, 0);\n  }\n}\n\n@keyframes slideOutUp {\n  from {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n\n  to {\n    visibility: hidden;\n    -webkit-transform: translate3d(0, -100%, 0);\n    transform: translate3d(0, -100%, 0);\n  }\n}\n\n.slideOutUp {\n  -webkit-animation-name: slideOutUp;\n  animation-name: slideOutUp;\n}"
  },
  {
    "path": "public/admin/css/bootstrap-editable.css",
    "content": "/*! X-editable - v1.5.1 \n* In-place editing with Twitter Bootstrap, jQuery UI or pure jQuery\n* http://github.com/vitalets/x-editable\n* Copyright (c) 2013 Vitaliy Potapov; Licensed MIT */\n.editableform {\n    margin-bottom: 0; /* overwrites bootstrap margin */\n}\n\n.editableform .control-group {\n    margin-bottom: 0; /* overwrites bootstrap margin */\n    white-space: nowrap; /* prevent wrapping buttons on new line */\n    line-height: 20px; /* overwriting bootstrap line-height. See #133 */\n}\n\n/* \n  BS3 width:1005 for inputs breaks editable form in popup \n  See: https://github.com/vitalets/x-editable/issues/393\n*/\n.editableform .form-control {\n    width: auto;\n}\n\n.editable-buttons {\n   display: inline-block; /* should be inline to take effect of parent's white-space: nowrap */\n   vertical-align: top;\n   margin-left: 7px;\n   /* inline-block emulation for IE7*/\n   zoom: 1; \n   *display: inline;\n}\n\n.editable-buttons.editable-buttons-bottom {\n   display: block; \n   margin-top: 7px;\n   margin-left: 0;\n}\n\n.editable-input {\n    vertical-align: top; \n    display: inline-block; /* should be inline to take effect of parent's white-space: nowrap */\n    width: auto; /* bootstrap-responsive has width: 100% that breakes layout */\n    white-space: normal; /* reset white-space decalred in parent*/\n   /* display-inline emulation for IE7*/\n   zoom: 1; \n   *display: inline;   \n}\n\n.editable-buttons .editable-cancel {\n   margin-left: 7px; \n}\n\n/*for jquery-ui buttons need set height to look more pretty*/\n.editable-buttons button.ui-button-icon-only {\n   height: 24px; \n   width: 30px;\n}\n\n.editableform-loading {\n    background: url('../img/loading.gif') center center no-repeat;  \n    height: 25px;\n    width: auto; \n    min-width: 25px; \n}\n\n.editable-inline .editableform-loading {\n    background-position: left 5px;      \n}\n\n .editable-error-block {\n    max-width: 300px;\n    margin: 5px 0 0 0;\n    width: auto;\n    white-space: normal;\n}\n\n/*add padding for jquery ui*/\n.editable-error-block.ui-state-error {\n    padding: 3px;  \n}  \n\n.editable-error {\n   color: red;  \n}\n\n/* ---- For specific types ---- */\n\n.editableform .editable-date {\n    padding: 0; \n    margin: 0;\n    float: left;\n}\n\n/* move datepicker icon to center of add-on button. See https://github.com/vitalets/x-editable/issues/183 */\n.editable-inline .add-on .icon-th {\n   margin-top: 3px;\n   margin-left: 1px; \n}\n\n\n/* checklist vertical alignment */\n.editable-checklist label input[type=\"checkbox\"], \n.editable-checklist label span {\n    vertical-align: middle;\n    margin: 0;\n}\n\n.editable-checklist label {\n    white-space: nowrap; \n}\n\n/* set exact width of textarea to fit buttons toolbar */\n.editable-wysihtml5 {\n    width: 566px; \n    height: 250px; \n}\n\n/* clear button shown as link in date inputs */\n.editable-clear {\n   clear: both;\n   font-size: 0.9em;\n   text-decoration: none;\n   text-align: right;\n}\n\n/* IOS-style clear button for text inputs */\n.editable-clear-x {\n   background: url('../img/clear.png') center center no-repeat;\n   display: block;\n   width: 13px;    \n   height: 13px;\n   position: absolute;\n   opacity: 0.6;\n   z-index: 100;\n   \n   top: 50%;\n   right: 6px;\n   margin-top: -6px;\n   \n}\n\n.editable-clear-x:hover {\n   opacity: 1;\n}\n\n.editable-pre-wrapped {\n   white-space: pre-wrap;\n}\n.editable-container.editable-popup {\n    max-width: none !important; /* without this rule poshytip/tooltip does not stretch */\n}  \n\n.editable-container.popover {\n    width: auto; /* without this rule popover does not stretch */\n}\n\n.editable-container.editable-inline {\n    display: inline-block; \n    vertical-align: middle;\n    width: auto;\n    /* inline-block emulation for IE7*/\n    zoom: 1; \n    *display: inline;    \n}\n\n.editable-container.ui-widget {\n   font-size: inherit;  /* jqueryui widget font 1.1em too big, overwrite it */\n   z-index: 9990; /* should be less than select2 dropdown z-index to close dropdown first when click */\n}\n.editable-click, \na.editable-click, \na.editable-click:hover {\n    text-decoration: none;\n    border-bottom: dashed 1px #0088cc;\n}\n\n.editable-click.editable-disabled, \na.editable-click.editable-disabled, \na.editable-click.editable-disabled:hover {\n   color: #585858;  \n   cursor: default;\n   border-bottom: none;\n}\n\n.editable-empty, .editable-empty:hover, .editable-empty:focus{\n  font-style: italic; \n  color: #DD1144;  \n  /* border-bottom: none; */\n  text-decoration: none;\n}\n\n.editable-unsaved {\n  font-weight: bold; \n}\n\n.editable-unsaved:after {\n/*    content: '*'*/\n}\n\n.editable-bg-transition {\n  -webkit-transition: background-color 1400ms ease-out;\n  -moz-transition: background-color 1400ms ease-out;\n  -o-transition: background-color 1400ms ease-out;\n  -ms-transition: background-color 1400ms ease-out;\n  transition: background-color 1400ms ease-out;  \n}\n\n/*see https://github.com/vitalets/x-editable/issues/139 */\n.form-horizontal .editable\n{ \n    padding-top: 5px;\n    display:inline-block;\n}\n\n\n/*!\n * Datepicker for Bootstrap\n *\n * Copyright 2012 Stefan Petre\n * Improvements by Andrew Rowls\n * Licensed under the Apache License v2.0\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n */\n.datepicker {\n  padding: 4px;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px;\n  direction: ltr;\n  /*.dow {\n\t\tborder-top: 1px solid #ddd !important;\n\t}*/\n\n}\n.datepicker-inline {\n  width: 220px;\n}\n.datepicker.datepicker-rtl {\n  direction: rtl;\n}\n.datepicker.datepicker-rtl table tr td span {\n  float: right;\n}\n.datepicker-dropdown {\n  top: 0;\n  left: 0;\n}\n.datepicker-dropdown:before {\n  content: '';\n  display: inline-block;\n  border-left: 7px solid transparent;\n  border-right: 7px solid transparent;\n  border-bottom: 7px solid #ccc;\n  border-bottom-color: rgba(0, 0, 0, 0.2);\n  position: absolute;\n  top: -7px;\n  left: 6px;\n}\n.datepicker-dropdown:after {\n  content: '';\n  display: inline-block;\n  border-left: 6px solid transparent;\n  border-right: 6px solid transparent;\n  border-bottom: 6px solid #ffffff;\n  position: absolute;\n  top: -6px;\n  left: 7px;\n}\n.datepicker > div {\n  display: none;\n}\n.datepicker.days div.datepicker-days {\n  display: block;\n}\n.datepicker.months div.datepicker-months {\n  display: block;\n}\n.datepicker.years div.datepicker-years {\n  display: block;\n}\n.datepicker table {\n  margin: 0;\n}\n.datepicker td,\n.datepicker th {\n  text-align: center;\n  width: 20px;\n  height: 20px;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px;\n  border: none;\n}\n.table-striped .datepicker table tr td,\n.table-striped .datepicker table tr th {\n  background-color: transparent;\n}\n.datepicker table tr td.day:hover {\n  background: #eeeeee;\n  cursor: pointer;\n}\n.datepicker table tr td.old,\n.datepicker table tr td.new {\n  color: #999999;\n}\n.datepicker table tr td.disabled,\n.datepicker table tr td.disabled:hover {\n  background: none;\n  color: #999999;\n  cursor: default;\n}\n.datepicker table tr td.today,\n.datepicker table tr td.today:hover,\n.datepicker table tr td.today.disabled,\n.datepicker table tr td.today.disabled:hover {\n  background-color: #fde19a;\n  background-image: -moz-linear-gradient(top, #fdd49a, #fdf59a);\n  background-image: -ms-linear-gradient(top, #fdd49a, #fdf59a);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdd49a), to(#fdf59a));\n  background-image: -webkit-linear-gradient(top, #fdd49a, #fdf59a);\n  background-image: -o-linear-gradient(top, #fdd49a, #fdf59a);\n  background-image: linear-gradient(top, #fdd49a, #fdf59a);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a', endColorstr='#fdf59a', GradientType=0);\n  border-color: #fdf59a #fdf59a #fbed50;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n  color: #000;\n}\n.datepicker table tr td.today:hover,\n.datepicker table tr td.today:hover:hover,\n.datepicker table tr td.today.disabled:hover,\n.datepicker table tr td.today.disabled:hover:hover,\n.datepicker table tr td.today:active,\n.datepicker table tr td.today:hover:active,\n.datepicker table tr td.today.disabled:active,\n.datepicker table tr td.today.disabled:hover:active,\n.datepicker table tr td.today.active,\n.datepicker table tr td.today:hover.active,\n.datepicker table tr td.today.disabled.active,\n.datepicker table tr td.today.disabled:hover.active,\n.datepicker table tr td.today.disabled,\n.datepicker table tr td.today:hover.disabled,\n.datepicker table tr td.today.disabled.disabled,\n.datepicker table tr td.today.disabled:hover.disabled,\n.datepicker table tr td.today[disabled],\n.datepicker table tr td.today:hover[disabled],\n.datepicker table tr td.today.disabled[disabled],\n.datepicker table tr td.today.disabled:hover[disabled] {\n  background-color: #fdf59a;\n}\n.datepicker table tr td.today:active,\n.datepicker table tr td.today:hover:active,\n.datepicker table tr td.today.disabled:active,\n.datepicker table tr td.today.disabled:hover:active,\n.datepicker table tr td.today.active,\n.datepicker table tr td.today:hover.active,\n.datepicker table tr td.today.disabled.active,\n.datepicker table tr td.today.disabled:hover.active {\n  background-color: #fbf069 \\9;\n}\n.datepicker table tr td.today:hover:hover {\n  color: #000;\n}\n.datepicker table tr td.today.active:hover {\n  color: #fff;\n}\n.datepicker table tr td.range,\n.datepicker table tr td.range:hover,\n.datepicker table tr td.range.disabled,\n.datepicker table tr td.range.disabled:hover {\n  background: #eeeeee;\n  -webkit-border-radius: 0;\n  -moz-border-radius: 0;\n  border-radius: 0;\n}\n.datepicker table tr td.range.today,\n.datepicker table tr td.range.today:hover,\n.datepicker table tr td.range.today.disabled,\n.datepicker table tr td.range.today.disabled:hover {\n  background-color: #f3d17a;\n  background-image: -moz-linear-gradient(top, #f3c17a, #f3e97a);\n  background-image: -ms-linear-gradient(top, #f3c17a, #f3e97a);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f3c17a), to(#f3e97a));\n  background-image: -webkit-linear-gradient(top, #f3c17a, #f3e97a);\n  background-image: -o-linear-gradient(top, #f3c17a, #f3e97a);\n  background-image: linear-gradient(top, #f3c17a, #f3e97a);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3c17a', endColorstr='#f3e97a', GradientType=0);\n  border-color: #f3e97a #f3e97a #edde34;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n  -webkit-border-radius: 0;\n  -moz-border-radius: 0;\n  border-radius: 0;\n}\n.datepicker table tr td.range.today:hover,\n.datepicker table tr td.range.today:hover:hover,\n.datepicker table tr td.range.today.disabled:hover,\n.datepicker table tr td.range.today.disabled:hover:hover,\n.datepicker table tr td.range.today:active,\n.datepicker table tr td.range.today:hover:active,\n.datepicker table tr td.range.today.disabled:active,\n.datepicker table tr td.range.today.disabled:hover:active,\n.datepicker table tr td.range.today.active,\n.datepicker table tr td.range.today:hover.active,\n.datepicker table tr td.range.today.disabled.active,\n.datepicker table tr td.range.today.disabled:hover.active,\n.datepicker table tr td.range.today.disabled,\n.datepicker table tr td.range.today:hover.disabled,\n.datepicker table tr td.range.today.disabled.disabled,\n.datepicker table tr td.range.today.disabled:hover.disabled,\n.datepicker table tr td.range.today[disabled],\n.datepicker table tr td.range.today:hover[disabled],\n.datepicker table tr td.range.today.disabled[disabled],\n.datepicker table tr td.range.today.disabled:hover[disabled] {\n  background-color: #f3e97a;\n}\n.datepicker table tr td.range.today:active,\n.datepicker table tr td.range.today:hover:active,\n.datepicker table tr td.range.today.disabled:active,\n.datepicker table tr td.range.today.disabled:hover:active,\n.datepicker table tr td.range.today.active,\n.datepicker table tr td.range.today:hover.active,\n.datepicker table tr td.range.today.disabled.active,\n.datepicker table tr td.range.today.disabled:hover.active {\n  background-color: #efe24b \\9;\n}\n.datepicker table tr td.selected,\n.datepicker table tr td.selected:hover,\n.datepicker table tr td.selected.disabled,\n.datepicker table tr td.selected.disabled:hover {\n  background-color: #9e9e9e;\n  background-image: -moz-linear-gradient(top, #b3b3b3, #808080);\n  background-image: -ms-linear-gradient(top, #b3b3b3, #808080);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#b3b3b3), to(#808080));\n  background-image: -webkit-linear-gradient(top, #b3b3b3, #808080);\n  background-image: -o-linear-gradient(top, #b3b3b3, #808080);\n  background-image: linear-gradient(top, #b3b3b3, #808080);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#b3b3b3', endColorstr='#808080', GradientType=0);\n  border-color: #808080 #808080 #595959;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n  color: #fff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.datepicker table tr td.selected:hover,\n.datepicker table tr td.selected:hover:hover,\n.datepicker table tr td.selected.disabled:hover,\n.datepicker table tr td.selected.disabled:hover:hover,\n.datepicker table tr td.selected:active,\n.datepicker table tr td.selected:hover:active,\n.datepicker table tr td.selected.disabled:active,\n.datepicker table tr td.selected.disabled:hover:active,\n.datepicker table tr td.selected.active,\n.datepicker table tr td.selected:hover.active,\n.datepicker table tr td.selected.disabled.active,\n.datepicker table tr td.selected.disabled:hover.active,\n.datepicker table tr td.selected.disabled,\n.datepicker table tr td.selected:hover.disabled,\n.datepicker table tr td.selected.disabled.disabled,\n.datepicker table tr td.selected.disabled:hover.disabled,\n.datepicker table tr td.selected[disabled],\n.datepicker table tr td.selected:hover[disabled],\n.datepicker table tr td.selected.disabled[disabled],\n.datepicker table tr td.selected.disabled:hover[disabled] {\n  background-color: #808080;\n}\n.datepicker table tr td.selected:active,\n.datepicker table tr td.selected:hover:active,\n.datepicker table tr td.selected.disabled:active,\n.datepicker table tr td.selected.disabled:hover:active,\n.datepicker table tr td.selected.active,\n.datepicker table tr td.selected:hover.active,\n.datepicker table tr td.selected.disabled.active,\n.datepicker table tr td.selected.disabled:hover.active {\n  background-color: #666666 \\9;\n}\n.datepicker table tr td.active,\n.datepicker table tr td.active:hover,\n.datepicker table tr td.active.disabled,\n.datepicker table tr td.active.disabled:hover {\n  background-color: #006dcc;\n  background-image: -moz-linear-gradient(top, #0088cc, #0044cc);\n  background-image: -ms-linear-gradient(top, #0088cc, #0044cc);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));\n  background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);\n  background-image: -o-linear-gradient(top, #0088cc, #0044cc);\n  background-image: linear-gradient(top, #0088cc, #0044cc);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);\n  border-color: #0044cc #0044cc #002a80;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n  color: #fff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.datepicker table tr td.active:hover,\n.datepicker table tr td.active:hover:hover,\n.datepicker table tr td.active.disabled:hover,\n.datepicker table tr td.active.disabled:hover:hover,\n.datepicker table tr td.active:active,\n.datepicker table tr td.active:hover:active,\n.datepicker table tr td.active.disabled:active,\n.datepicker table tr td.active.disabled:hover:active,\n.datepicker table tr td.active.active,\n.datepicker table tr td.active:hover.active,\n.datepicker table tr td.active.disabled.active,\n.datepicker table tr td.active.disabled:hover.active,\n.datepicker table tr td.active.disabled,\n.datepicker table tr td.active:hover.disabled,\n.datepicker table tr td.active.disabled.disabled,\n.datepicker table tr td.active.disabled:hover.disabled,\n.datepicker table tr td.active[disabled],\n.datepicker table tr td.active:hover[disabled],\n.datepicker table tr td.active.disabled[disabled],\n.datepicker table tr td.active.disabled:hover[disabled] {\n  background-color: #0044cc;\n}\n.datepicker table tr td.active:active,\n.datepicker table tr td.active:hover:active,\n.datepicker table tr td.active.disabled:active,\n.datepicker table tr td.active.disabled:hover:active,\n.datepicker table tr td.active.active,\n.datepicker table tr td.active:hover.active,\n.datepicker table tr td.active.disabled.active,\n.datepicker table tr td.active.disabled:hover.active {\n  background-color: #003399 \\9;\n}\n.datepicker table tr td span {\n  display: block;\n  width: 23%;\n  height: 54px;\n  line-height: 54px;\n  float: left;\n  margin: 1%;\n  cursor: pointer;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px;\n}\n.datepicker table tr td span:hover {\n  background: #eeeeee;\n}\n.datepicker table tr td span.disabled,\n.datepicker table tr td span.disabled:hover {\n  background: none;\n  color: #999999;\n  cursor: default;\n}\n.datepicker table tr td span.active,\n.datepicker table tr td span.active:hover,\n.datepicker table tr td span.active.disabled,\n.datepicker table tr td span.active.disabled:hover {\n  background-color: #006dcc;\n  background-image: -moz-linear-gradient(top, #0088cc, #0044cc);\n  background-image: -ms-linear-gradient(top, #0088cc, #0044cc);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));\n  background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);\n  background-image: -o-linear-gradient(top, #0088cc, #0044cc);\n  background-image: linear-gradient(top, #0088cc, #0044cc);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);\n  border-color: #0044cc #0044cc #002a80;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n  color: #fff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.datepicker table tr td span.active:hover,\n.datepicker table tr td span.active:hover:hover,\n.datepicker table tr td span.active.disabled:hover,\n.datepicker table tr td span.active.disabled:hover:hover,\n.datepicker table tr td span.active:active,\n.datepicker table tr td span.active:hover:active,\n.datepicker table tr td span.active.disabled:active,\n.datepicker table tr td span.active.disabled:hover:active,\n.datepicker table tr td span.active.active,\n.datepicker table tr td span.active:hover.active,\n.datepicker table tr td span.active.disabled.active,\n.datepicker table tr td span.active.disabled:hover.active,\n.datepicker table tr td span.active.disabled,\n.datepicker table tr td span.active:hover.disabled,\n.datepicker table tr td span.active.disabled.disabled,\n.datepicker table tr td span.active.disabled:hover.disabled,\n.datepicker table tr td span.active[disabled],\n.datepicker table tr td span.active:hover[disabled],\n.datepicker table tr td span.active.disabled[disabled],\n.datepicker table tr td span.active.disabled:hover[disabled] {\n  background-color: #0044cc;\n}\n.datepicker table tr td span.active:active,\n.datepicker table tr td span.active:hover:active,\n.datepicker table tr td span.active.disabled:active,\n.datepicker table tr td span.active.disabled:hover:active,\n.datepicker table tr td span.active.active,\n.datepicker table tr td span.active:hover.active,\n.datepicker table tr td span.active.disabled.active,\n.datepicker table tr td span.active.disabled:hover.active {\n  background-color: #003399 \\9;\n}\n.datepicker table tr td span.old,\n.datepicker table tr td span.new {\n  color: #999999;\n}\n.datepicker th.datepicker-switch {\n  width: 145px;\n}\n.datepicker thead tr:first-child th,\n.datepicker tfoot tr th {\n  cursor: pointer;\n}\n.datepicker thead tr:first-child th:hover,\n.datepicker tfoot tr th:hover {\n  background: #eeeeee;\n}\n.datepicker .cw {\n  font-size: 10px;\n  width: 12px;\n  padding: 0 2px 0 5px;\n  vertical-align: middle;\n}\n.datepicker thead tr:first-child th.cw {\n  cursor: default;\n  background-color: transparent;\n}\n.input-append.date .add-on i,\n.input-prepend.date .add-on i {\n  display: block;\n  cursor: pointer;\n  width: 16px;\n  height: 16px;\n}\n.input-daterange input {\n  text-align: center;\n}\n.input-daterange input:first-child {\n  -webkit-border-radius: 3px 0 0 3px;\n  -moz-border-radius: 3px 0 0 3px;\n  border-radius: 3px 0 0 3px;\n}\n.input-daterange input:last-child {\n  -webkit-border-radius: 0 3px 3px 0;\n  -moz-border-radius: 0 3px 3px 0;\n  border-radius: 0 3px 3px 0;\n}\n.input-daterange .add-on {\n  display: inline-block;\n  width: auto;\n  min-width: 16px;\n  height: 18px;\n  padding: 4px 5px;\n  font-weight: normal;\n  line-height: 18px;\n  text-align: center;\n  text-shadow: 0 1px 0 #ffffff;\n  vertical-align: middle;\n  background-color: #eeeeee;\n  border: 1px solid #ccc;\n  margin-left: -5px;\n  margin-right: -5px;\n}"
  },
  {
    "path": "public/admin/css/buttons.css",
    "content": "/*----------------------------------------*/\n/*  1.  Button CSS\n/*----------------------------------------*/\n.btn-mg-b-10{\n\tmargin-bottom:10px;\n}\n.btn-custon-two, .btn-custon-three{\n\tborder-radius:2px;\n}\n.btn-custon-four{\n\tborder-radius:0px;\n}\n.btn-custon-three.btn-default{\n\tborder-bottom:2px solid #ccc;\n}\n.btn-custon-three.btn-primary{\n\tborder-bottom:2px solid #23547d;\n}\n.btn-custon-three.btn-success{\n\tborder-bottom:2px solid #38883b;\n}\n.btn-custon-three.btn-info{\n\tborder-bottom:2px solid #387c90;\n}\n.btn-custon-three.btn-warning{\n\tborder-bottom:2px solid #a57736;\n}\n.btn-custon-three.btn-danger{\n\tborder-bottom:2px solid #8a2f2d;\n}\n.btn-custon-rounded-four{\n\tborder-radius:5px;\n}\n.btn-custon-rounded-two{\n\tborder-radius:10px;\n}\n.btn-custon-rounded-three{\n\tborder-radius:20px;\n}\n.btn-custom-groups .btn{\n\tborder-radius:0px;\n}\n.btn-custom-groups-one .btn-primary{\n\tbackground-color: #fff;\n\tcolor:#303030;\n\tborder-color: #ccc;\n}\n.btn-custom-groups-one .btn-primary:hover, .btn-custom-groups-one .btn-primary:active, .btn-custom-groups-one .btn-primary:focus{\n\tbackground-color: #ddd;\n\toutline:none;\n}\n.button-down-drop{\n\tfont-size:14px;\n}\n.btn-dropdown-menu li a{\n\tfont-size:14px;\n\tpadding: 6px 20px;\n}\n.btn-dropdown-menu li .btn-setting-icon{\n\twidth:100%;\n\tpadding: 10px 16px;\n}\n.btn-dropdown-menu li .btn-setting-icon .btn-icon-st{\n\tdisplay:inline-block;\n\tmargin:0px 5px;\n}\n.btn-dropdown-menu li .btn-setting-icon .btn-icon-st a{\n\tpadding: 5px 10px;\n    display: inline-block;\n    font-size: 18px;\n\tbackground: #204d74;\n\tcolor:#fff;\n}\n.btn-default-bg .btn-dropdown-menu li .btn-setting-icon .btn-icon-st a{\n\tbackground: #ddd;\n\tcolor:#303030;\n}\n.btn-default-bg .btn-dropdown-menu li .btn-setting-icon .btn-icon-st a:hover{\n\tbackground: #303030;\n\tcolor:#fff;\n}\n.btn-success-bg .btn-dropdown-menu li .btn-setting-icon .btn-icon-st a{\n\tbackground: #449d44;\n\tcolor:#fff;\n}\n.btn-success-bg .btn-dropdown-menu li .btn-setting-icon .btn-icon-st a:hover{\n\tbackground: #303030;\n\tcolor:#fff;\n}\n.btn-warning-bg .btn-dropdown-menu li .btn-setting-icon .btn-icon-st a{\n\tbackground: #f0ad4e;\n\tcolor:#fff;\n}\n.btn-warning-bg .btn-dropdown-menu li .btn-setting-icon .btn-icon-st a:hover{\n\tbackground: #303030;\n\tcolor:#fff;\n}\n.btn-danger-bg .btn-dropdown-menu li .btn-setting-icon .btn-icon-st a{\n\tbackground: #d9534f;\n\tcolor:#fff;\n}\n.btn-danger-bg .btn-dropdown-menu li .btn-setting-icon .btn-icon-st a:hover{\n\tbackground: #303030;\n\tcolor:#fff;\n}\n.btn-dropdown-menu li .btn-setting-icon .btn-icon-st a:hover{\n\tbackground: #303030;\n}\n.btn-default-bg .btn-dropdown-menu li a:hover{\n\tbackground: #ddd;\n\tcolor:#303030;\n}\n.btn-success-bg .btn-dropdown-menu li a:hover{\n\tbackground: #449d44;\n\tcolor:#fff;\n}\n.btn-warning-bg .btn-dropdown-menu li a:hover{\n\tbackground: #f0ad4e;\n\tcolor:#fff;\n}\n.btn-danger-bg .btn-dropdown-menu li a:hover{\n\tbackground: #d9534f;\n\tcolor:#fff;\n}\n.btn-dropdown-menu li a:hover{\n\tbackground-color: #204d74;\n\tcolor:#fff;\n}\n.dropdown-menu.another-drop-pro-one{\n\ttop:72%;\n\tleft:21%;\n}\n.another-drop-pro-seven{\n\ttop:72%;\n\tleft:24%;\n}\n.dropdown-menu.another-drop-pro-three{\n\ttop:72%;\n\tleft:37%;\n}\n.dropdown-menu.another-drop-pro-eight{\n\ttop:72%;\n\tleft:43%;\n}\n.dropdown-menu.another-drop-pro-four{\n\ttop:72%;\n\tleft:53%;\n}\n.dropdown-menu.another-drop-pro-nine{\n\ttop:72%;\n\tleft:62%;\n}\n.dropdown-menu.another-drop-pro-five{\n\ttop:72%;\n\tleft:70%;\n}\n.dropdown-menu.another-drop-pro-two, .another-drop-pro-six{\n\ttop:72%;\n\tleft:6%;\n}\n.button-drop-style-one, .button-drop-style-two{\n\tdisplay:inline-block;\n}\n.button-drop-style-one .btn-button-ct{\n\tpadding: 6px 6px;\n    margin-top: 0px;\n    background: #fff;\n\tborder-right:1px solid #ccc;\n\tborder-left:0px solid #ccc;\n\tborder-top:1px solid #ccc;\n\tborder-bottom:1px solid #ccc;\n\tvertical-align: middle; \n}\n.button-drop-style-one .btn-button-ct.btn-button-primary-ct{\n    background: #337ab7;\n\tborder-right:1px solid #337ab7;\n\tborder-left:0px solid #337ab7;\n\tborder-top:1px solid #337ab7;\n\tborder-bottom:1px solid #337ab7;\n\tcolor: #fff;\n\tvertical-align: middle; \n}\n.button-drop-style-one .btn-button-ct.btn-button-success-ct{\n    background: #398439;\n\tborder-right:1px solid #398439;\n\tborder-left:0px solid #398439;\n\tborder-top:1px solid #398439;\n\tborder-bottom:1px solid #398439;\n\tcolor: #fff;\n\tvertical-align: middle; \n}\n.button-drop-style-one .btn-button-ct.btn-button-warning-ct{\n    background: #f0ad4e;\n\tborder-right:1px solid #f0ad4e;\n\tborder-left:0px solid #f0ad4e;\n\tborder-top:1px solid #f0ad4e;\n\tborder-bottom:1px solid #f0ad4e;\n\tcolor: #fff;\n\tvertical-align: middle; \n}\n.button-drop-style-one .btn-button-ct.btn-button-danger-ct{\n    background: #d9534f;\n\tborder-right:1px solid #d9534f;\n\tborder-left:0px solid #d9534f;\n\tborder-top:1px solid #d9534f;\n\tborder-bottom:1px solid #d9534f;\n\tcolor: #fff;\n\tvertical-align: middle; \n}\n.dropdown-menu.another-drop-pro-ten{\n\ttop:72%;\n\tleft:23%;\n}\n.dropdown-menu.another-drop-pro-eleven{\n\ttop:72%;\n\tleft:41%;\n}\n.dropdown-menu.another-drop-pro-twevel{\n\ttop:72%;\n\tleft:58%;\n}\n.primary-btn-cl, .warning-btn-cl, .danger-btn-cl{\n\tbackground: #fff;\n\tcolor: #303030;\n\ttransition: all .4s ease 0s;\n}\n.social-btn-icon-cl .adminpro-icon, .social-btn-icon-cl i{\n\tcolor:#303030;\n}\n.social-btn-icon-cl .adminpro-icon, .social-btn-icon-cl i{\n\tcolor:#03a9f4;\n}\n.social-btn-icon-cl-df .adminpro-facebook{\n\tcolor:#5d82d1;\n}\n.social-btn-icon-cl-df .adminpro-twitter{\n\tcolor:#50bff5;\n}\n.social-btn-icon-cl-df .adminpro-google-plus{\n\tcolor:#eb5e4c;\n}\n.social-btn-icon-cl-df .fa-dribbble{\n\tcolor:#f86fa2;\n}\n.social-btn-icon-cl-df .adminpro-pinterest{\n\tcolor:#e13138;\n}\n.social-btn-icon-cl-df .adminpro-linkedin{\n\tcolor:#827be9;\n}\n.social-btn-icon-cl-df .fa-youtube{\n\tcolor:#ef4e41;\n}\n.social-btn-icon-cl-df .fa-skype{\n\tcolor:#0065aa;\n}\n.social-btn-icon-cl-df .fa-dribbble{\n\tcolor:#ea4c89;\n}\n.social-btn-icon-cl-df .fa-edge{\n\tcolor:#303030;\n}\n.social-btn-icon-cl-df .fa-digg{\n\tcolor:#000;\n}\n.social-btn-icon-cl-df .fa-dropbox{\n\tcolor:#007ee5;\n}\n.btn-default.btn-bg-cl-social .adminpro-icon, .btn-default.btn-bg-cl-social i{\n\tcolor:#fff;\n}\n.btn-default.btn-bg-cl-social, .btn-default.btn-bg-cl-social{\n\tbackground:#303030;\n}\n.btn-default.btn-bg-cl-social:hover{\n\tbackground:#03a9f4;\n\tborder-color: #03a9f4;\n}\n.btn-default.btn-bg-cl-social-tw .adminpro-icon, .btn-default.btn-bg-cl-social-tw i{\n\tcolor:#fff;\n}\n.btn-default.btn-bg-cl-facebook-tw{\n\tbackground:#5d82d1;\n\tborder-color: #5d82d1;\n}\n.btn-default.btn-bg-cl-twitter-tw{\n\tbackground:#50bff5;\n\tborder-color: #50bff5;\n}\n.btn-default.btn-bg-cl-google-tw{\n\tbackground:#eb5e4c;\n\tborder-color: #eb5e4c;\n}\n.btn-default.btn-bg-cl-pinterest-tw{\n\tbackground:#e13138;\n\tborder-color: #e13138;\n}\n.btn-default.btn-bg-cl-linkedin-tw{\n\tbackground:#827be9;\n\tborder-color: #827be9;\n}\n.btn-default.btn-bg-cl-youtube-tw{\n\tbackground:#ef4e41;\n\tborder-color: #ef4e41;\n}\n.btn-default.btn-bg-cl-dropbox-tw{\n\tbackground:#007ee5;\n\tborder-color: #007ee5;\n}\n.btn-default.btn-bg-cl-digg-tw{\n\tbackground:#000;\n\tborder-color: #000;\n}\n.btn-default.btn-bg-cl-dribbble-tw{\n\tbackground:#ea4c89;\n\tborder-color: #ea4c89;\n}\n.btn-default.btn-bg-cl-edge-tw{\n\tbackground:#303030;\n\tborder-color: #303030;\n}\n.btn-default.btn-bg-cl-skype-tw{\n\tbackground:#0065aa;\n\tborder-color: #0065aa;\n}\n.btn-default.btn-bg-cl-facebook-tw .adminpro-icon, .btn-default.btn-bg-cl-twitter-tw .adminpro-icon, .btn-default.btn-bg-cl-google-tw .adminpro-icon, .btn-default.btn-bg-cl-pinterest-tw .adminpro-icon, .btn-default.btn-bg-cl-linkedin-tw .adminpro-icon, .btn-default.btn-bg-cl-youtube-tw i, .btn-default.btn-bg-cl-dropbox-tw i, .btn-default.btn-bg-cl-digg-tw i, .btn-default.btn-bg-cl-dribbble-tw i, .btn-default.btn-bg-cl-edge-tw i, .btn-default.btn-bg-cl-skype-tw i{\n\tcolor:#fff;\n}"
  },
  {
    "path": "public/admin/css/charts.css",
    "content": ".charts-single-pro{\n\tbackground:#fff;\n\tpadding:20px;\n}\n.chart-bar-button{\n\tmargin-top:20px;\n}\n.chart-bar-button .randomizeDatacus {\n    background: #303030;\n    color: #fff;\n    border: none;\n    padding: 5px 9px;\n\ttransition:all .4s ease 0s;\n}\n.chart-bar-button .randomizeDatacus:hover {\n    background: #03a9f4;\n\ttransition:all .4s ease 0s;\n}\n"
  },
  {
    "path": "public/admin/css/chosen/bootstrap-chosen.css",
    "content": ".chosen-select {\n    width: 100%; }\n\n.chosen-select-deselect {\n    width: 100%; }\n\n.chosen-container {\n    display: inline-block;\n    font-size: 14px;\n    position: relative;\n    vertical-align: middle; }\n.chosen-container .chosen-drop {\n    background: #fff;\n    border: 1px solid #03a9f4;\n    border-bottom-right-radius: 4px;\n    border-bottom-left-radius: 4px;\n    margin-top: -1px;\n    position: absolute;\n    top: 100%;\n    left: -9000px;\n    z-index: 1060; }\n.chosen-container.chosen-with-drop .chosen-drop {\n    left: 0;\n    right: 0; }\n.chosen-container .chosen-results {\n    color: #555555;\n    margin: 0 4px 4px 0;\n    max-height: 240px;\n    padding: 0 0 0 4px;\n    position: relative;\n    overflow-x: hidden;\n    overflow-y: auto;\n    -webkit-overflow-scrolling: touch; }\n.chosen-container .chosen-results li {\n    display: none;\n    line-height: 1.42857;\n    list-style: none;\n    margin: 0;\n    padding: 5px 6px; }\n.chosen-container .chosen-results li em {\n    background: #feffde;\n    font-style: normal; }\n.chosen-container .chosen-results li.group-result {\n    display: list-item;\n    cursor: default;\n    color: #999;\n    font-weight: bold; }\n.chosen-container .chosen-results li.group-option {\n    padding-left: 15px; }\n.chosen-container .chosen-results li.active-result {\n    cursor: pointer;\n    display: list-item; }\n.chosen-container .chosen-results li.highlighted {\n    background-color: #03a9f4;\n    background-image: none;\n    color: white; }\n.chosen-container .chosen-results li.highlighted em {\n    background: transparent; }\n.chosen-container .chosen-results li.disabled-result {\n    display: list-item;\n    color: #777777; }\n.chosen-container .chosen-results .no-results {\n    background: #eeeeee;\n    display: list-item; }\n.chosen-container .chosen-results-scroll {\n    background: white;\n    margin: 0 4px;\n    position: absolute;\n    text-align: center;\n    width: 321px;\n    z-index: 1; }\n.chosen-container .chosen-results-scroll span {\n    display: inline-block;\n    height: 1.42857;\n    text-indent: -5000px;\n    width: 9px; }\n.chosen-container .chosen-results-scroll-down {\n    bottom: 0; }\n.chosen-container .chosen-results-scroll-down span {\n    background: url(\"chosen-sprite.png\") no-repeat -4px -3px; }\n.chosen-container .chosen-results-scroll-up span {\n    background: url(\"chosen-sprite.png\") no-repeat -22px -3px; }\n\n.chosen-container-single .chosen-single {\n    background-color: #fff;\n    -webkit-background-clip: padding-box;\n    -moz-background-clip: padding;\n    background-clip: padding-box;\n    border: 1px solid #e5e6e7;\n    border-top-right-radius: 4px;\n    border-top-left-radius: 4px;\n    border-bottom-right-radius: 4px;\n    border-bottom-left-radius: 4px;\n    color: #555555;\n    display: block;\n    height: 34px;\n    overflow: hidden;\n    line-height: 32px;\n    padding: 0 0 0 8px;\n    position: relative;\n    text-decoration: none;\n    white-space: nowrap; }\n.chosen-container-single .chosen-single span {\n    display: block;\n    margin-right: 26px;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap; }\n.chosen-container-single .chosen-single abbr {\n    background: url(\"chosen-sprite.png\") right top no-repeat;\n    display: block;\n    font-size: 1px;\n    height: 10px;\n    position: absolute;\n    right: 26px;\n    top: 12px;\n    width: 12px; }\n.chosen-container-single .chosen-single abbr:hover {\n    background-position: right -11px; }\n.chosen-container-single .chosen-single.chosen-disabled .chosen-single abbr:hover {\n    background-position: right 2px; }\n.chosen-container-single .chosen-single div {\n    display: block;\n    height: 100%;\n    position: absolute;\n    top: 0;\n    right: 0;\n    width: 18px; }\n.chosen-container-single .chosen-single div b {\n    background: url(\"chosen-sprite.png\") no-repeat 0 7px;\n    display: block;\n    height: 100%;\n    width: 100%; }\n.chosen-container-single .chosen-default {\n    color: #777777; }\n.chosen-container-single .chosen-search {\n    margin: 0;\n    padding: 3px 4px;\n    position: relative;\n    white-space: nowrap;\n    z-index: 1000; }\n.chosen-container-single .chosen-search input[type=\"text\"] {\n    background: url(\"chosen-sprite.png\") no-repeat 100% -18px, #fff;\n    border: 1px solid #e5e6e7;\n    border-top-right-radius: 4px;\n    border-top-left-radius: 4px;\n    border-bottom-right-radius: 4px;\n    border-bottom-left-radius: 4px;\n    margin: 1px 0;\n    padding: 4px 20px 4px 4px;\n    width: 100%; }\n.chosen-container-single .chosen-drop {\n    margin-top: -1px;\n    border-bottom-right-radius: 4px;\n    border-bottom-left-radius: 4px;\n    -webkit-background-clip: padding-box;\n    -moz-background-clip: padding;\n    background-clip: padding-box; }\n\n.chosen-container-single-nosearch .chosen-search input[type=\"text\"] {\n    position: absolute;\n    left: -9000px; }\n\n.chosen-container-multi .chosen-choices {\n    background-color: #fff;\n    border: 1px solid #03a9f4;\n    border-top-right-radius: 4px;\n    border-top-left-radius: 4px;\n    border-bottom-right-radius: 4px;\n    border-bottom-left-radius: 4px;\n    cursor: text;\n    height: auto !important;\n    height: 1%;\n    margin: 0;\n    overflow: hidden;\n    padding: 0;\n    position: relative; }\n.chosen-container-multi .chosen-choices li {\n    float: left;\n    list-style: none; }\n.chosen-container-multi .chosen-choices .search-field {\n    margin: 0;\n    padding: 0;\n    white-space: nowrap; }\n.chosen-container-multi .chosen-choices .search-field input[type=\"text\"] {\n    background: transparent !important;\n    border: 0 !important;\n    -webkit-box-shadow: none;\n    box-shadow: none;\n    color: #555555;\n    height: 32px;\n    margin: 0;\n    padding: 4px;\n    outline: 0; }\n.chosen-container-multi .chosen-choices .search-field .default {\n    color: #999; }\n.chosen-container-multi .chosen-choices .search-choice {\n    -webkit-background-clip: padding-box;\n    -moz-background-clip: padding;\n    background-clip: padding-box;\n    background-color: #eeeeee;\n    border: 1px solid #e5e6e7;\n    border-top-right-radius: 4px;\n    border-top-left-radius: 4px;\n    border-bottom-right-radius: 4px;\n    border-bottom-left-radius: 4px;\n    background-image: -webkit-linear-gradient(top, white 0%, #eeeeee 100%);\n    background-image: -o-linear-gradient(top, white 0%, #eeeeee 100%);\n    background-image: linear-gradient(to bottom, white 0%, #eeeeee 100%);\n    background-repeat: repeat-x;\n    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0);\n    -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n    box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n    color: #333333;\n    cursor: default;\n    line-height: 13px;\n    margin: 6px 0 3px 5px;\n    padding: 3px 20px 3px 5px;\n    position: relative; }\n.chosen-container-multi .chosen-choices .search-choice .search-choice-close {\n    background: url(\"chosen-sprite.png\") right top no-repeat;\n    display: block;\n    font-size: 1px;\n    height: 10px;\n    position: absolute;\n    right: 4px;\n    top: 5px;\n    width: 12px;\n    cursor: pointer; }\n.chosen-container-multi .chosen-choices .search-choice .search-choice-close:hover {\n    background-position: right -11px; }\n.chosen-container-multi .chosen-choices .search-choice-focus {\n    background: #d4d4d4; }\n.chosen-container-multi .chosen-choices .search-choice-focus .search-choice-close {\n    background-position: right -11px; }\n.chosen-container-multi .chosen-results {\n    margin: 0 0 0 0;\n    padding: 0; }\n.chosen-container-multi .chosen-drop .result-selected {\n    display: none; }\n\n.chosen-container-active .chosen-single {\n    border: 1px solid #e5e6e7;\n    -webkit-transition: border linear 0.2s, box-shadow linear 0.2s;\n    -o-transition: border linear 0.2s, box-shadow linear 0.2s;\n    transition: border linear 0.2s, box-shadow linear 0.2s; }\n.chosen-container-active.chosen-with-drop .chosen-single {\n    background-color: #fff;\n    border: 1px solid #03a9f4 ;\n    border-bottom-right-radius: 0;\n    border-bottom-left-radius: 0;\n    -webkit-transition: border linear 0.2s, box-shadow linear 0.2s;\n    -o-transition: border linear 0.2s, box-shadow linear 0.2s;\n    transition: border linear 0.2s, box-shadow linear 0.2s; }\n.chosen-container-active.chosen-with-drop .chosen-single div {\n    background: transparent;\n    border-left: none; }\n.chosen-container-active.chosen-with-drop .chosen-single div b {\n    background-position: -18px 7px; }\n.chosen-container-active .chosen-choices {\n    border: 1px solid #03a9f4 ;\n    border-bottom-right-radius: 0;\n    border-bottom-left-radius: 0;\n    -webkit-transition: border linear 0.2s, box-shadow linear 0.2s;\n    -o-transition: border linear 0.2s, box-shadow linear 0.2s;\n    transition: border linear 0.2s, box-shadow linear 0.2s; }\n.chosen-container-active .chosen-choices .search-field input[type=\"text\"] {\n    color: #111 !important; }\n.chosen-container-active.chosen-with-drop .chosen-choices {\n    border-bottom-right-radius: 0;\n    border-bottom-left-radius: 0; }\n\n.chosen-disabled {\n    cursor: default;\n    opacity: 0.5 !important; }\n.chosen-disabled .chosen-single {\n    cursor: default; }\n.chosen-disabled .chosen-choices .search-choice .search-choice-close {\n    cursor: default; }\n\n.chosen-rtl {\n    text-align: right; }\n.chosen-rtl .chosen-single {\n    padding: 0 8px 0 0;\n    overflow: visible; }\n.chosen-rtl .chosen-single span {\n    margin-left: 26px;\n    margin-right: 0;\n    direction: rtl; }\n.chosen-rtl .chosen-single div {\n    left: 7px;\n    right: auto; }\n.chosen-rtl .chosen-single abbr {\n    left: 26px;\n    right: auto; }\n.chosen-rtl .chosen-choices .search-field input[type=\"text\"] {\n    direction: rtl; }\n.chosen-rtl .chosen-choices li {\n    float: right; }\n.chosen-rtl .chosen-choices .search-choice {\n    margin: 6px 5px 3px 0;\n    padding: 3px 5px 3px 19px; }\n.chosen-rtl .chosen-choices .search-choice .search-choice-close {\n    background-position: right top;\n    left: 4px;\n    right: auto; }\n.chosen-rtl.chosen-container-single .chosen-results {\n    margin: 0 0 4px 4px;\n    padding: 0 4px 0 0; }\n.chosen-rtl .chosen-results .group-option {\n    padding-left: 0;\n    padding-right: 15px; }\n.chosen-rtl.chosen-container-active.chosen-with-drop .chosen-single div {\n    border-right: none; }\n.chosen-rtl .chosen-search input[type=\"text\"] {\n    background: url(\"chosen-sprite.png\") no-repeat -28px -20px, #fff;\n    direction: rtl;\n    padding: 4px 5px 4px 20px; }\n\n@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min-resolution: 2dppx) {\n    .chosen-rtl .chosen-search input[type=\"text\"],\n    .chosen-container-single .chosen-single abbr,\n    .chosen-container-single .chosen-single div b,\n    .chosen-container-single .chosen-search input[type=\"text\"],\n    .chosen-container-multi .chosen-choices .search-choice .search-choice-close,\n    .chosen-container .chosen-results-scroll-down span,\n    .chosen-container .chosen-results-scroll-up span {\n        background-image: url(\"chosen-sprite@2x.png\") !important;\n        background-size: 52px 37px !important;\n        background-repeat: no-repeat !important; } }\n\n/*# sourceMappingURL=bootstrap-chosen.css.map */"
  },
  {
    "path": "public/admin/css/chosen/chosen.jquery.js",
    "content": ""
  },
  {
    "path": "public/admin/css/code-editor/ambiance.css",
    "content": "/* ambiance theme for codemirror */\n\n/* Color scheme */\n\n.cm-s-ambiance .cm-keyword { color: #cda869; }\n.cm-s-ambiance .cm-atom { color: #CF7EA9; }\n.cm-s-ambiance .cm-number { color: #78CF8A; }\n.cm-s-ambiance .cm-def { color: #aac6e3; }\n.cm-s-ambiance .cm-variable { color: #ffb795; }\n.cm-s-ambiance .cm-variable-2 { color: #eed1b3; }\n.cm-s-ambiance .cm-variable-3 { color: #faded3; }\n.cm-s-ambiance .cm-property { color: #eed1b3; }\n.cm-s-ambiance .cm-operator {color: #fa8d6a;}\n.cm-s-ambiance .cm-comment { color: #555; font-style:italic; }\n.cm-s-ambiance .cm-string { color: #8f9d6a; }\n.cm-s-ambiance .cm-string-2 { color: #9d937c; }\n.cm-s-ambiance .cm-meta { color: #D2A8A1; }\n.cm-s-ambiance .cm-qualifier { color: yellow; }\n.cm-s-ambiance .cm-builtin { color: #9999cc; }\n.cm-s-ambiance .cm-bracket { color: #24C2C7; }\n.cm-s-ambiance .cm-tag { color: #fee4ff }\n.cm-s-ambiance .cm-attribute {  color: #9B859D; }\n.cm-s-ambiance .cm-header {color: blue;}\n.cm-s-ambiance .cm-quote { color: #24C2C7; }\n.cm-s-ambiance .cm-hr { color: pink; }\n.cm-s-ambiance .cm-link { color: #F4C20B; }\n.cm-s-ambiance .cm-special { color: #FF9D00; }\n.cm-s-ambiance .cm-error { color: #AF2018; }\n\n.cm-s-ambiance .CodeMirror-matchingbracket { color: #0f0; }\n.cm-s-ambiance .CodeMirror-nonmatchingbracket { color: #f22; }\n\n.cm-s-ambiance .CodeMirror-selected {\n  background: rgba(255, 255, 255, 0.15);\n}\n.cm-s-ambiance.CodeMirror-focused .CodeMirror-selected {\n  background: rgba(255, 255, 255, 0.10);\n}\n\n/* Editor styling */\n\n.cm-s-ambiance.CodeMirror {\n  line-height: 1.40em;\n  color: #E6E1DC;\n  background-color: #202020;\n  -webkit-box-shadow: inset 0 0 10px black;\n  -moz-box-shadow: inset 0 0 10px black;\n  box-shadow: inset 0 0 10px black;\n}\n\n.cm-s-ambiance .CodeMirror-gutters {\n  background: #3D3D3D;\n  border-right: 1px solid #4D4D4D;\n  box-shadow: 0 10px 20px black;\n}\n\n.cm-s-ambiance .CodeMirror-linenumber {\n  text-shadow: 0px 1px 1px #4d4d4d;\n  color: #111;\n  padding: 0 5px;\n}\n\n.cm-s-ambiance .CodeMirror-guttermarker { color: #aaa; }\n.cm-s-ambiance .CodeMirror-guttermarker-subtle { color: #111; }\n\n.cm-s-ambiance .CodeMirror-lines .CodeMirror-cursor {\n  border-left: 1px solid #7991E8;\n}\n\n.cm-s-ambiance .CodeMirror-activeline-background {\n  background: none repeat scroll 0% 0% rgba(255, 255, 255, 0.031);\n}\n\n.cm-s-ambiance.CodeMirror,\n.cm-s-ambiance .CodeMirror-gutters {\n  background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAQAAAAHUWYVAABFFUlEQVQYGbzBCeDVU/74/6fj9HIcx/FRHx9JCFmzMyGRURhLZIkUsoeRfUjS2FNDtr6WkMhO9sm+S8maJfu+Jcsg+/o/c+Z4z/t97/vezy3z+z8ekGlnYICG/o7gdk+wmSHZ1z4pJItqapjoKXWahm8NmV6eOTbWUOp6/6a/XIg6GQqmenJ2lDHyvCFZ2cBDbmtHA043VFhHwXxClWmeYAdLhV00Bd85go8VmaFCkbVkzlQENzfBDZ5gtN7HwF0KDrTwJ0dypSOzpaKCMwQHKTIreYIxlmhXTzTWkVm+LTynZhiSBT3RZQ7aGfjGEd3qyXQ1FDymqbKxpspERQN2MiRjNZlFFQXfCNFm9nM1zpAsoYjmtRTc5ajwuaXc5xrWskT97RaKzAGe5ARHhVUsDbjKklziiX5WROcJwSNCNI+9w1Jwv4Zb2r7lCMZ4oq5C0EdTx+2GzNuKpJ+iFf38JEWkHJn9DNF7mmBDITrWEg0VWL3pHU20tSZnuqWu+R3BtYa8XxV1HO7GyD32UkOpL/yDloINFTmvtId+nmAjxRw40VMwVKiwrKLE4bK5UOVntYwhOcSSXKrJHKPJedocpGjVz/ZMIbnYUPB10/eKCrs5apqpgVmWzBYWpmtKHecJPjaUuEgRDDaU0oZghCJ6zNMQ5ZhDYx05r5v2muQdM0EILtXUsaKiQX9WMEUotagQzFbUNN6NUPC2nm5pxEWGCjMc3GdJHjSU2kORLK/JGSrkfGEIjncU/CYUnOipoYemwj8tST9NsJmB7TUVXtbUtXATJVZXBMvYeTXJfobgJUPmGMP/yFaWonaa6BcFO3nqcIqCozSZoZoSr1g4zJOzuyGnxTEX3lUEJ7WcZgme8ddaWvWJo2AJR9DZU3CUIbhCSG6ybSwN6qtJVnCU2svDTP2ZInOw2cBTrqtQahtNZn9NcJ4l2NaSmSkkP1noZWnVwkLmdUPOwLZEwy2Z3S3R+4rIG9hcbpPXHFVWcQdZkn2FOta3cKWQnNRC5g1LsJah4GCzSVsKnCOY5OAFRTBekyyryeyilhFKva75r4Mc0aWanGEaThcy31s439KKxTzJYY5WTHPU1FtIHjQU3Oip4xlNzj/lBw23dYZVliQa7WAXf4shetcQfatI+jWRDBPmyNeW6A1P5kdDgyYJlba0BIM8BZu1JfrFwItyjcAMR3K0BWOIrtMEXyhyrlVEx3ui5dUBjmB/Q3CXW85R4mBD0s7B+4q5tKUjOlb9qqmhi5AZ6GFIC5HXtOobdYGlVdMVbNJ8toNTFcHxnoL+muBagcctjWnbNMuR00uI7nQESwg5q2qqrKWIfrNUmeQocY6HuyxJV02wj36w00yhpmUFenv4p6fUkZYqLyuinx2RGOjhCXYyJF84oiU00YMOOhhquNdfbOB7gU88pY4xJO8LVdp6/q2voeB4R04vIdhSE40xZObx1HGGJ/ja0LBthFInKaLPPFzuCaYaoj8JjPME8yoyxo6zlBqkiUZYgq00OYMswbWO5NGmq+xhipxHLRW29ARjNKXO0wRnear8XSg4XFPLKEPUS1GqvyLwiuBUoa7zpZ0l5xxFwWmWZC1H5h5FwU8eQ7K+g8UcVY6TMQreVQT/8uQ8Z+ALIXnSEa2pYZQneE9RZbSBNYXfWYJzW/h/4j4Dp1tYVcFIC5019Vyi4ThPqSFCzjGWaHQTBU8q6vrVwgxP9Lkm840imWKpcLCjYTtrKuwvsKSnrvHCXGkSMk9p6lhckfRpIeis+N2PiszT+mFLspyGleUhDwcLrZqmyeylxwjBcKHEapqkmyangyLZRVOijwOtCY5SsG5zL0OwlCJ4y5KznF3EUNDDrinwiyLZRzOXtlBbK5ITHFGLp8Q0R6ab6mS7enI2cFrxOyHvOCFaT1HThS1krjCwqWeurCkk+willhCC+RSZnRXBiZaC5RXRIZYKp2lyfrHwiKPKR0JDzrdU2EFgpidawlFDR6FgXUMNa+g1FY3bUQh2cLCwosRdnuQTS/S+JVrGLeWIvtQUvONJxlqSQYYKpwoN2kaocLjdVsis4Mk80ESF2YpSkzwldjHkjFCUutI/r+EHDU8oCs6yzL3PhWiEooZdFMkymlas4AcI3KmoMMNSQ3tHzjGWCrcJJdYyZC7QFGwjRL9p+MrRkAGWzIaWCn9W0F3TsK01c2ZvQw0byvxuQU0r1lM0qJO7wW0kRIMdDTtXEdzi4VIh+EoIHm0mWtAtpCixlabgn83fKTI7anJe9ST7WIK1DMGpQmYeA58ImV6ezOGOzK2Kgq01pd60cKWiUi9Lievb/0vIDPHQ05Kzt4ddPckQBQtoaurjyHnek/nKzpQLrVgKPjIkh2v4uyezpv+Xoo7fPFXaGFp1vaLKxQ4uUpQQS5VuQs7BCq4xRJv7fwpVvvFEB3j+620haOuocqMhWd6TTPAEx+mdFNGHdranFe95WrWmIvlY4F1Dle2ECgc6cto7SryuqGGGha0tFQ5V53migUKmg6XKAo4qS3mik+0OZpAhOLeZKicacgaYcyx5hypYQE02ZA4xi/pNhOQxR4klNKyqacj+mpxnLTnnGSo85++3ZCZq6lrZkXlGEX3o+C9FieccJbZWVFjC0Yo1FZnJhoYMFoI1hEZ9r6hwg75HwzBNhbZCdJEfJwTPGzJvaKImw1yYX1HDAmpXR+ZJQ/SmgqMNVQb5vgamGwLtt7VwvP7Qk1xpiM5x5Cyv93E06MZmgs0Nya2azIKOYKCGBQQW97RmhKNKF02JZqHEJ4o58qp7X5EcZmc56trXEqzjCBZ1MFGR87Ql2tSTs6CGxS05PTzRQorkbw7aKoKXFDXsYW42VJih/q+FP2BdTzDTwVqOYB13liM50vG7wy28qagyuIXMeQI/Oqq8bcn5wJI50xH00CRntyfpL1T4hydYpoXgNiFzoIUTDZnLNRzh4TBHwbYGDvZkxmlyJloyr6tRihpeUG94GnKtIznREF0tzJG/OOr73JBcrSh1k6WuTprgLU+mnSGnv6Zge0NNz+kTDdH8nuAuTdJDCNb21LCiIuqlYbqGzT3RAoZofQfjFazkqeNWdYaGvYTM001EW2oKPvVk1ldUGSgUtHFwjKM1h9jnFcmy5lChoLNaQMGGDsYbKixlaMBmmsx1QjCfflwTfO/gckW0ruZ3jugKR3R5W9hGUWqCgxuFgsuaCHorotGKzGaeZB9DMsaTnKCpMtwTvOzhYk0rdrArKCqcaWmVk1+F372ur1YkKxgatI8Qfe1gIX9wE9FgS8ESmuABIXnRUbCapcKe+nO7slClSZFzpV/LkLncEb1qiO42fS3R855Su2mCLh62t1SYZZYVmKwIHjREF2uihTzB20JOkz7dkxzYQnK0UOU494wh+VWRc6Un2kpTaVgLDFEkJ/uhzRcI0YKGgpGWOlocBU/a4fKoJ/pEaNV6jip3+Es9VXY078rGnmAdf7t9ylPXS34RBSuYPs1UecZTU78WanhBCHpZ5sAoTz0LGZKjPf9TRypqWEiTvOFglL1fCEY3wY/++rbk7C8bWebA6p6om6PgOL2kp44TFJlVNBXae2rqqdZztOJpT87GQsE9jqCPIe9VReZuQ/CIgacsyZdCpIScSYqcZk8r+nsyCzhyfhOqHGOIvrLknC8wTpFcaYiGC/RU1NRbUeUpocQOnkRpGOrIOcNRx+1uA0UrzhSSt+VyS3SJpnFWkzNDqOFGIWcfR86DnmARTQ1HKIL33ExPiemeOhYSSjzlSUZZuE4TveoJLnBUOFof6KiysCbnAEcZgcUNTDOwkqWu3RWtmGpZwlHhJENdZ3miGz0lJlsKnjbwqSHQjpxnFDlTLLwqJPMZMjd7KrzkSG7VsxXBZE+F8YZkb01Oe00yyRK9psh5SYh29ySPKBo2ylNht7ZkZnsKenjKNJu9PNEyZpaCHv4Kt6RQsLvAVp7M9kIimmCUwGeWqLMmGuIotYMmWNpSahkhZw9FqZsVnKJhsjAHvtHMsTM9fCI06Dx/u3vfUXCqfsKRc4oFY2jMsoo/7DJDwZ1CsIKnJu+J9ldkpmiCxQx1rWjI+T9FwcWWzOuaYH0Hj7klNRVWEQpmaqosakiGNTFHdjS/qnUdmf0NJW5xsL0HhimCCZZSRzmSPTXJQ4aaztAwtZnoabebJ+htCaZ7Cm535ByoqXKbX1WRc4Eh2MkRXWzImVc96Cj4VdOKVxR84VdQsIUM8Psoou2byVHyZFuq7O8otbSQ2UAoeEWTudATLGSpZzVLlXVkPU2Jc+27lsw2jmg5T5VhbeE3BT083K9WsTTkFU/Osi0rC5lRlpwRHUiesNS0sOvmqGML1aRbPAxTJD9ZKtxuob+hhl8cwYGWpJ8nub7t5p6coYbMovZ1BTdaKn1jYD6h4GFDNFyT/Kqe1XCXphXHOKLZmuRSRdBPEfVUXQzJm5YGPGGJdvAEr7hHNdGZnuBvrpciGmopOLf5N0uVMy0FfYToJk90uUCbJupaVpO53UJXR2bVpoU00V2KOo4zMFrBd0Jtz2pa0clT5Q5L8IpQ177mWQejPMEJhuQjS10ref6HHjdEhy1P1EYR7GtO0uSsKJQYLiTnG1rVScj5lyazpqWGl5uBbRWl7m6ixGOOnEsMJR7z8J0n6KMnCdxhiNYQCoZ6CmYLnO8omC3MkW3bktlPmEt/VQQHejL3+dOE5FlPdK/Mq8hZxxJtLyRrepLThYKbLZxkSb5W52vYxNOaOxUF0yxMUPwBTYqCzy01XayYK0sJyWBLqX0MwU5CzoymRzV0EjjeUeLgDpTo6ij42ZAzvD01dHUUTPLU96MdLbBME8nFBn7zJCMtJcZokn8YoqU0FS5WFKyniHobguMcmW8N0XkWZjkyN3hqOMtS08r+/xTBwpZSZ3qiVRX8SzMHHjfUNFjgHEPmY9PL3ykEzxkSre/1ZD6z/NuznuB0RcE1TWTm9zRgfUWVJiG6yrzgmWPXC8EAR4Wxhlad0ZbgQyEz3pG5RVEwwDJH2mgKpjcTiCOzn1lfUWANFbZ2BA8balnEweJC9J0iuaeZoI+ippFCztEKVvckR2iice1JvhVytrQwUAZpgsubCPaU7xUe9vWnaOpaSBEspalykhC9bUlOMpT42ZHca6hyrqKmw/wMR8H5ZmdFoBVJb03O4UL0tSNnvIeRmkrLWqrs78gcrEn2tpcboh0UPOW3UUR9PMk4T4nnNKWmCjlrefhCwxRNztfmIQVdDElvS4m1/WuOujoZCs5XVOjtKPGokJzsYCtFYoWonSPT21DheU/wWhM19FcElwqNGOsp9Q8N/cwXaiND1MmeL1Q5XROtYYgGeFq1aTMsoMmcrKjQrOFQTQ1fmBYhmW6o8Jkjc7iDJRTBIo5kgJD5yMEYA3srCg7VFKwiVJkmRCc5ohGOKhsYMn/XBLdo5taZjlb9YAlGWRimqbCsoY7HFAXLa5I1HPRxMMsQDHFkWtRNniqT9UEeNjcE7RUlrCJ4R2CSJuqlKHWvJXjAUNcITYkenuBRB84TbeepcqTj3zZyFJzgYQdHnqfgI0ddUwS6GqWpsKWhjq9cV0vBAEMN2znq+EBfIWT+pClYw5xsTlJU6GeIBsjGmmANTzJZiIYpgrM0Oa8ZMjd7NP87jxhqGOhJlnQtjuQpB+8aEE00wZFznSJPyHxgH3HkPOsJFvYk8zqCHzTs1BYOa4J3PFU+UVRZxlHDM4YavlNUuMoRveiZA2d7grMNc2g+RbSCEKzmgYsUmWmazFJyoiOZ4KnyhKOGRzWJa0+moyV4TVHDzn51Awtqaphfk/lRQ08FX1iiqxTB/kLwd0VynKfEvI6cd4XMV5bMhZ7gZUWVzYQ6Nm2BYzxJbw3bGthEUUMfgbGeorae6DxHtJoZ6alhZ0+ytiVoK1R4z5PTrOECT/SugseEOlb1MMNR4VRNcJy+V1Hg9ONClSZFZjdHlc6W6FBLdJja2MC5hhpu0DBYEY1TFGwiFAxRRCsYkiM9JRb0JNMVkW6CZYT/2EiTGWmo8k+h4FhDNE7BvppoTSFnmCV5xZKzvcCdDo7VVPnIU+I+Rc68juApC90MwcFCsJ5hDqxgScYKreruyQwTqrzoqDCmhWi4IbhB0Yrt3RGa6GfDv52rKXWhh28dyZaWUvcZeMTBaZoSGyiCtRU5J8iviioHaErs7Jkj61syVzTTgOcUOQ8buFBTYWdL5g3T4qlpe0+wvD63heAXRfCCIed9RbCsp2CiI7raUOYOTU13N8PNHvpaGvayo4a3LLT1lDrVEPT2zLUlheB1R+ZTRfKWJ+dcocLJfi11vyJ51lLqJ0WD7tRwryezjiV5W28uJO9qykzX8JDe2lHl/9oyBwa2UMfOngpXCixvKdXTk3wrsKmiVYdZIqsoWEERjbcUNDuiaQomGoIbFdEHmsyWnuR+IeriKDVLnlawlyNHKwKlSU631PKep8J4Q+ayjkSLKYLhalNHlYvttb6fHm0p6OApsZ4l2VfdqZkjuysy6ysKLlckf1KUutCTs39bmCgEyyoasIWlVaMF7mgmWtBT8Kol5xpH9IGllo8cJdopcvZ2sImlDmMIbtDk3KIpeNiS08lQw11NFPTwVFlPP6pJ2gvRfI7gQUfmNAtf6Gs0wQxDsKGlVBdF8rCa3jzdwMaGHOsItrZk7hAyOzpK9VS06j5F49b0VNGOOfKs3lDToMsMBe9ZWtHFEgxTJLs7qrygKZjUnmCYoeAqeU6jqWuLJup4WghOdvCYJnrSkSzoyRkm5M2StQwVltPkfCAk58tET/CSg+8MUecmotMEnhBKfWBIZsg2ihruMJQaoIm+tkTLKEqspMh00w95gvFCQRtDwTT1gVDDSEVdlwqZfxoQRbK0g+tbiBZxzKlpnpypejdDwTaeOvorMk/IJE10h9CqRe28hhLbe0pMsdSwv4ZbhKivo2BjDWfL8UKJgeavwlwb5KlwhyE4u4XkGE2ytZCznKLCDZZq42VzT8HLCrpruFbIfOIINmh/qCdZ1ZBc65kLHR1Bkyf5zn6pN3SvGKIlFNGplhrO9QSXanLOMQTLCa0YJCRrCZm/CZmrLTm7WzCK4GJDiWUdFeYx1LCFg3NMd0XmCuF3Y5rITLDUsYS9zoHVzwnJoYpSTQoObyEzr4cFBNqYTopoaU/wkyLZ2lPhX/5Y95ulxGTV7KjhWrOZgl8MyUUafjYraNjNU1N3IWcjT5WzWqjwtoarHSUObGYO3GCJZpsBlnJGPd6ZYLyl1GdCA2625IwwJDP8GUKymbzuyPlZlvTUsaUh5zFDhRWFzPKKZLAlWdcQbObgF9tOqOsmB1dqcqYJmWstFbZRRI9poolmqiLnU0POvxScpah2iSL5UJNzgScY5+AuIbpO0YD3NCW+dLMszFSdFCWGqG6eVq2uYVNDdICGD6W7EPRWZEY5gpsE9rUkS3mijzzJnm6UpUFXG1hCUeVoS5WfNcFpblELL2qqrCvMvRfd45oalvKU2tiQ6ePJOVMRXase9iTtLJztPxJKLWpo2CRDcJwn2sWSLKIO1WQWNTCvpVUvOZhgSC40JD0dOctaSqzkCRbXsKlb11Oip6PCJ0IwSJM31j3akRxlP7Rwn6aGaUL0qiLnJkvB3xWZ2+Q1TfCwpQH3G0o92UzmX4o/oJNQMMSQc547wVHhdk+VCw01DFYEnTxzZKAm74QmeNNR1w6WzEhNK15VJzuCdxQ53dRUDws5KvwgBMOEgpcVNe0hZI6RXT1Jd0cyj5nsaEAHgVmGaJIlWdsc5Ui2ElrRR6jrRAttNMEAIWrTDFubkZaok7/AkzfIwfuWVq0jHzuCK4QabtLUMVPB3kJ0oyHTSVFlqMALilJf2Rf8k5aaHtMfayocLBS8L89oKoxpJvnAkDPa0qp5DAUTHKWmCcnthlou8iCKaFFLHWcINd1nyIwXqrSxMNmSs6KmoL2QrKuWtlQ5V0120xQ5vRyZS1rgFkWwhiOwiuQbR0OOVhQM9iS3tiXp4RawRPMp5tDletOOBL95MpM01dZTBM9pkn5qF010rIeHFcFZhmSGpYpTsI6nwhqe5C9ynhlpp5ophuRb6WcJFldkVnVEwwxVfrVkvnWUuNLCg5bgboFHPDlDPDmnK7hUrWiIbjadDclujlZcaokOFup4Ri1kacV6jmrrK1hN9bGwpKEBQ4Q6DvIUXOmo6U5LqQM6EPyiKNjVkPnJkDPNEaxhiFay5ExW1NXVUGqcpYYdPcGiCq7z/TSlbhL4pplWXKd7NZO5QQFrefhRQW/NHOsqcIglc4UhWklR8K0QzbAw08CBDnpbgqXdeD/QUsM4RZXDFBW6WJKe/mFPdH0LtBgiq57wFLzlyQzz82qYx5D5WJP5yVJDW01BfyHnS6HKO/reZqId1WGa4Hkh2kWodJ8i6KoIPlAj2hPt76CzXsVR6koPRzWTfKqIentatYpQw2me4AA3y1Kind3SwoOKZDcFXTwl9tWU6mfgRk9d71sKtlNwrjnYw5tC5n5LdKiGry3JKNlHEd3oaMCFHrazBPMp/uNJ+V7IudcSbeOIdjUEdwl0VHCOZo5t6YluEuaC9mQeMgSfOyKnYGFHcIeQ84yQWbuJYJpZw5CzglDH7gKnWqqM9ZTaXcN0TeYhR84eQtJT76JJ1lREe7WnnvsMmRc9FQ7SBBM9mV3lCUdmHk/S2RAMt0QjFNFqQpWjDPQ01DXWUdDBkXziKPjGEP3VP+zIWU2t7im41FOloyWzn/L6dkUy3VLDaZ6appgDLHPjJEsyvJngWEPUyVBiAaHCTEXwrLvSEbV1e1gKJniicWorC1MUrVjB3uDhJE/wgSOzk1DXpk0k73qCM8xw2UvD5kJmDUfOomqMpWCkJRlvKXGmoeBm18USjVIk04SClxTB6YrgLAPLWYK9HLUt5cmc0vYES8GnTeRc6skZbQkWdxRsIcyBRzx1DbTk9FbU0caTPOgJHhJKnOGIVhQqvKmo0llRw9sabrZkDtdg3PqaKi9oatjY8B+G371paMg6+mZFNNtQ04mWBq3rYLOmtWWQp8KJnpy9DdFensyjdqZ+yY40VJlH8wcdLzC8PZnvHMFUTZUrDTkLyQaGus5X5LzpYAf3i+e/ZlhqGqWhh6Ou6xTR9Z6oi5AZZtp7Mj2EEm8oSpxiYZCHU/1fbGdNNNRRoZMhmilEb2gqHOEJDtXkHK/JnG6IrvbPCwV3NhONVdS1thBMs1T4QOBcTWa2IzhMk2nW5Kyn9tXUtpv9RsG2msxk+ZsQzRQacJncpgke0+T8y5Fzj8BiGo7XlJjaTIlpQs7KFjpqGnKuoyEPeIKnFMkZHvopgh81ySxNFWvJWcKRs70j2FOT012IllEEO1n4pD1513Yg2ssQPOThOkvyrqHUdEXOSEsihmBbTbKX1kLBPWqWkLOqJbjB3GBIZmoa8qWl4CG/iZ7oiA72ZL7TJNeZUY7kFQftDcHHluBzRbCegzMtrRjVQpX2lgoPKKLJAkcbMl01XK2p7yhL8pCBbQ3BN2avJgKvttcrWDK3CiUOVxQ8ZP+pqXKyIxnmBymCg5vJjNfkPK4+c8cIfK8ocVt7kmfd/I5SR1hKvCzUtb+lhgc00ZaO6CyhIQP1Uv4yIZjload72PXX0OIJvnFU+0Zf6MhsJwTfW0r0UwQfW4LNLZl5HK261JCZ4qnBaAreVAS3WrjV0LBnNDUNNDToCEeFfwgcb4gOEqLRhirWkexrCEYKVV711DLYEE1XBEsp5tpTGjorkomKYF9FDXv7fR3BGwbettSxnyL53MBPjsxDZjMh+VUW9NRxq1DhVk+FSxQcaGjV9Pawv6eGByw5qzoy7xk4RsOShqjJwWKe/1pEEfzkobeD/dQJmpqedcyBTy2sr4nGNRH0c0SPWTLrqAc0OQcb/gemKgqucQT7ySWKCn2EUotoCvpZct7RO2sy/QW0IWcXd7pQRQyZVwT2USRO87uhjioTLKV2brpMUcMQRbKH/N2T+UlTpaMls6cmc6CCNy3JdYYSUzzJQ4oSD3oKLncULOiJvjBEC2oqnCJkJluCYy2ZQ5so9YYlZ1VLlQU1mXEW1jZERwj/MUSRc24TdexlqLKfQBtDTScJUV8FszXBEY5ktpD5Ur9hYB4Nb1iikw3JoYpkKX+RodRKFt53MMuRnKSpY31PwYaGaILh3wxJGz9TkTPEETxoCWZrgvOlmyMzxFEwVJE5xZKzvyJ4WxEc16Gd4Xe3Weq4XH2jKRikqOkGQ87hQnC7wBmGYLAnesX3M+S87eFATauuN+Qcrh7xIxXJbUIdMw3JGE3ylCWzrieaqCn4zhGM19TQ3z1oH1AX+pWEqIc7wNGAkULBo/ZxRaV9NNyh4Br3rCHZzbzmSfawBL0dNRwpW1kK9mxPXR9povcdrGSZK9c2k0xwFGzjuniCtRSZCZ6ccZ7gaktmgAOtKbG/JnOkJrjcQTdFMsxRQ2cLY3WTIrlCw1eWKn8R6pvt4GFDso3QoL4a3nLk3G6JrtME3dSenpx7PNFTmga0EaJTLQ061sEeQoWXhSo9LTXsaSjoJQRXeZLtDclbCrYzfzHHeaKjHCVOUkQHO3JeEepr56mhiyaYYKjjNU+Fed1wS5VlhWSqI/hYUdDOkaxiKehoyOnrCV5yBHtbWFqTHCCwtpDcYolesVR5yUzTZBb3RNMd0d6WP+SvhuBmRcGxnuQzT95IC285cr41cLGQ6aJJhmi4TMGempxeimBRQw1tFKV+8jd6KuzoSTqqDxzRtpZkurvKEHxlqXKRIjjfUNNXQsNOsRScoWFLT+YeRZVD3GRN0MdQcKqQjHDMrdGGVu3iYJpQx3WGUvfbmxwFfR20WBq0oYY7LMFhhgYtr8jpaEnaOzjawWWaTP8mMr0t/EPDPoqcnxTBI5o58L7uoWnMrpoqPwgVrlAUWE+V+TQl9rawoyP6QGAlQw2TPRX+YSkxyBC8Z6jhHkXBgQL7WII3DVFnRfCrBfxewv9D6xsyjys4VkhWb9pUU627JllV0YDNHMku/ldNMMXDEo4aFnAkk4U6frNEU4XgZUPmEKHUl44KrzmYamjAbh0JFvGnaTLPu1s9jPCwjFpYiN7z1DTOk/nc07CfDFzmCf7i+bfNHXhDtLeBXzTBT5rkMvWOIxpl4EMh2LGJBu2syDnAEx2naEhHDWMMzPZEhygyS1mS5RTJr5ZkoKbEUoYqr2kqdDUE8ztK7OaIntJkFrIECwv8LJTaVx5XJE86go8dFeZ3FN3rjabCAYpoYEeC9zzJVULBbmZhDyd7ko09ydpNZ3nm2Kee4FPPXHnYEF1nqOFEC08LUVcDvYXkJHW8gTaKCk9YGOeIJhqiE4ToPEepdp7IWFjdwnWaufGMwJJCMtUTTBBK9BGCOy2tGGrJTHIwyEOzp6aPzNMOtlZkDvcEWpP5SVNhfkvDxhmSazTJXYrM9U1E0xwFVwqZQwzJxw6+kGGGUj2FglGGmnb1/G51udRSMNlTw6GGnCcUwVcOpmsqTHa06o72sw1RL02p9z0VbnMLOaIX3QKaYKSCFQzBKEUNHTSc48k53RH9wxGMtpQa5KjjW0W0n6XCCCG4yxNNdhQ4R4l1Ff+2sSd6UFHiIEOyqqFgT01mEUMD+joy75jPhOA+oVVLm309FR4yVOlp4RhLiScNmSmaYF5Pw0STrOIoWMSR2UkRXOMp+M4SHW8o8Zoi6OZgjKOaFar8zZDzkWzvKOjkKBjmCXby8JahhjXULY4KlzgKLvAwxVGhvyd4zxB1d9T0piazmKLCVZY5sKiD0y2ZSYrkUEPUbIk+dlQ4SJHTR50k1DPaUWIdTZW9NJwnJMOECgd7ou/MnppMJ02O1VT4Wsh85MnZzcFTngpXGKo84qmwgKbCL/orR/SzJ2crA+t6Mp94KvxJUeIbT3CQu1uIdlQEOzlKfS3UMcrTiFmOuroocrZrT2AcmamOKg8YomeEKm/rlT2sociMaybaUlFhuqHCM2qIJ+rg4EcDFymiDSxzaHdPcpE62pD5kyM5SBMoA1PaUtfIthS85ig1VPiPPYXgYEMNk4Qq7TXBgo7oT57gPUdwgCHzhIVFPFU6OYJzHAX9m5oNrVjeE61miDrqQ4VSa1oiURTsKHC0IfjNwU2WzK6eqK8jWln4g15TVBnqmDteCJ501PGAocJhhqjZdtBEB6lnhLreFJKxmlKbeGrqLiSThVIbCdGzloasa6lpMQXHCME2boLpJgT7yWaemu6wBONbqGNVRS0PKIL7LckbjmQtR7K8I5qtqel+T/ChJTNIKLjdUMNIRyvOEko9YYl2cwQveBikCNawJKcLBbc7+JM92mysNvd/Fqp8a0k6CNEe7cnZrxlW0wQXaXjaktnRwNOGZKYiONwS7a1JVheq3WgJHlQUGKHKmp4KAxXR/ULURcNgoa4zhKSLpZR3kxRRb0NmD0OFn+UCS7CzI1nbP6+o4x47QZE5xRCt3ZagnYcvmpYQktXdk5YKXTzBC57kKEe0VVuiSYqapssMS3C9p2CKkHOg8B8Pa8p5atrIw3qezIWanMGa5HRDNF6RM9wcacl0N+Q8Z8hsIkSnaIIdHRUOEebAPy1zbCkhM062FCJtif7PU+UtoVXzWKqM1PxXO8cfdruhFQ/a6x3JKYagvVDhQEtNiyiiSQ7OsuRsZUku0CRNDs4Sog6KKjsZgk2bYJqijgsEenoKeniinRXBn/U3lgpPdyDZynQx8IiioMnCep5Ky8mjGs6Wty0l1hUQTcNWswS3WRp2kCNZwJG8omG8JphPUaFbC8lEfabwP7VtM9yoaNCAjpR41VNhrD9LkbN722v0CoZMByFzhaW+MyzRYEWFDQwN2M4/JiT76PuljT3VU/A36eaIThb+R9oZGOAJ9tewkgGvqOMNRWYjT/Cwu99Q8LqDE4TgbLWxJ1jaDDAERsFOFrobgjUsBScaguXU8kKm2RL19tRypSHnHNlHiIZqgufs4opgQdVdwxBNNFBR6kVFqb8ogimOzB6a6HTzrlDHEpYaxjiiA4TMQobkDg2vejjfwJGWmnbVFAw3H3hq2NyQfG7hz4aC+w3BbwbesG0swYayvpAs6++Ri1Vfzx93mFChvyN5xVHTS+0p9aqCAxyZ6ZacZyw5+7uuQkFPR9DDk9NOiE7X1PCYJVjVUqq7JlrHwWALF5nfHNGjApdpqgzx5OwilDhCiDYTgnc9waGW4BdLNNUQvOtpzDOWHDH8D7TR/A/85KljEQu3NREc4Pl/6B1Hhc8Umb5CsKMmGC9EPcxoT2amwHNCmeOEnOPbklnMkbOgIvO5UMOpQrS9UGVdt6iH/fURjhI/WOpaW9OKLYRod6HCUEdOX000wpDZQ6hwg6LgZfOqo1RfT/CrJzjekXOGhpc1VW71ZLbXyyp+93ILbC1kPtIEYx0FIx1VDrLoVzXRKRYWk809yYlC9ImcrinxtabKnzRJk3lAU1OLEN1j2zrYzr2myHRXJFf4h4QKT1qSTzTB5+ZNTzTRkAxX8FcLV2uS8eoQQ2aAkFzvCM72sJIcJET3WPjRk5wi32uSS9rfZajpWEvj9hW42F4o5NytSXYy8IKHay10VYdrcl4SkqscrXpMwyGOgtkajheSxdQqmpxP1L3t4R5PqasFnrQEjytq6qgp9Y09Qx9o4S1FzhUCn1kyHSzBWLemoSGvOqLNhZyBjmCaAUYpMgt4Ck7wBBMMwWKWgjsUwTaGVsxWC1mYoKiyqqeGKYqonSIRQ3KIkHO0pmAxTdBHkbOvfllfr+AA+7gnc50huVKYK393FOyg7rbPO/izI7hE4CnHHHnJ0ogNPRUGeUpsrZZTBJcrovUcJe51BPsr6GkJdhCCsZ6aTtMEb2pqWkqeVtDXE/QVggsU/Nl86d9RMF3DxvZTA58agu810RWawCiSzzXBeU3MMW9oyJUedvNEvQyNu1f10BSMddR1vaLCYpYa/mGocLSiYDcLbQz8aMn5iyF4xBNMs1P0QEOV7o5gaWGuzSeLue4tt3ro7y4Tgm4G/mopdZgl6q0o6KzJWE3mMksNr3r+a6CbT8g5wZNzT9O7fi/zpaOmnz3BRoqos+tv9zMbdpxsqDBOEewtJLt7cg5wtKKbvldpSzRRCD43VFheCI7yZLppggMVBS/KMAdHODJvOwq2NQSbKKKPLdFWQs7Fqo+mpl01JXYRgq8dnGLhTiFzqmWsUMdpllZdbKlyvSdYxhI9YghOtxR8LgSLWHK62mGGVoxzBE8LNWzqH9CUesQzFy5RQzTc56mhi6fgXEWwpKfE5Z7M05ZgZUPmo6auiv8YKzDYwWBLMErIbKHJvOwIrvEdhOBcQ9JdU1NHQ7CXn2XIDFBKU2WAgcX9UAUzDXWd5alwuyJ41Z9rjKLCL4aCp4WarhPm2rH+SaHUYE001JDZ2ZAzXPjdMpZWvC9wmqIB2lLhQ01D5jO06hghWMndbM7yRJMsoCj1vYbnFQVrW9jak3OlEJ3s/96+p33dEPRV5GxiqaGjIthUU6FFEZyqCa5qJrpBdzSw95IUnOPIrCUUjRZQFrbw5PR0R1qiYx3cb6nrWUMrBmmiBQxVHtTew5ICP/ip6g4hed/Akob/32wvBHsIOX83cI8hGeNeNPCIkPmXe8fPKx84OMSRM1MTdXSwjCZ4S30jVGhvqTRak/OVhgGazHuOCud5onEO1lJr6ecVyaOK6H7zqlBlIaHE0oroCgfvGJIdPcmfLNGLjpz7hZwZQpUbFME0A1cIJa7VNORkgfsMBatbKgwwJM9bSvQXeNOvbIjelg6WWvo5kvbKaJJNHexkKNHL9xRyFlH8Ti2riB5wVPhUk7nGkJnoCe428LR/wRGdYIlmWebCyxou1rCk4g/ShugBDX0V0ZQWkh0dOVsagkM0yV6OoLd5ye+pRlsCr0n+KiQrGuq5yJDzrTAXHtLUMduTDBVKrSm3eHL+6ijxhFDX9Z5gVU/wliHYTMiMFpKLNMEywu80wd3meoFmt6VbRMPenhrOc6DVe4pgXU8DnnHakLOIIrlF4FZPIw6R+zxBP0dyq6OOZ4Q5sLKCcz084ok+VsMMyQhNZmmBgX5xIXOEJTmi7VsGTvMTNdHHhpzdbE8Du2oKxgvBqQKdDDnTFOylCFaxR1syz2iqrOI/FEpNc3C6f11/7+ASS6l2inq2ciTrCCzgyemrCL5SVPjQkdPZUmGy2c9Sw9FtR1sS30RmsKPCS4rkIC/2U0MduwucYolGaPjKEyhzmiPYXagyWbYz8LWBDdzRimAXzxx4z8K9hpzlhLq+NiQ97HuKorMUfK/OVvC2JfiHUPCQI/q7J2gjK+tTDNxkCc4TMssqCs4TGtLVwQihyoAWgj9bosU80XGW6Ac9TJGziaUh5+hnFcHOnlaM1iRn29NaqGENTTTSUHCH2tWTeV0osUhH6psuVLjRUmGWhm6OZEshGeNowABHcJ2Bpy2ZszRcKkRXd2QuKVEeXnbfaEq825FguqfgfE2whlChSRMdron+LATTPQ2Z369t4B9C5gs/ylzv+CMmepIDPclFQl13W0rspPd1JOcbghGOEutqCv5qacURQl3dDKyvyJlqKXGPgcM9FfawJAMVmdcspcYKOZc4GjDYkFlK05olNMHyHn4zFNykyOxt99RkHlfwmiHo60l2EKI+mhreEKp080Tbug08BVPcgoqC5zWt+NLDTZ7oNSF51N1qie7Va3uCCwyZbkINf/NED6jzOsBdZjFN8oqG3wxVunqCSYYKf3EdhJyf9YWGf7tRU2oH3VHgPr1fe5J9hOgHd7xQ0y7qBwXr23aGErP0cm64JVjZwsOGqL+mhNgZmhJLW2oY4UhedsyBgzrCKrq7BmcpNVhR6jBPq64Vgi+kn6XE68pp8J5/+0wRHGOpsKenQn9DZntPzjRLZpDAdD2fnSgkG9tmIXnUwQ6WVighs7Yi2MxQ0N3CqYaCXkJ0oyOztMDJjmSSpcpvlrk0RMMOjmArQ04PRV1DO1FwhCVaUVPpKUM03JK5SxPsIWRu8/CGHi8UHChiqGFDTbSRJWeYUDDcH6vJWUxR4k1FXbMUwV6e4AJFXS8oMqsZKqzvYQ9DDQdZckY4aGsIhtlubbd2r3j4QBMoTamdPZk7O/Bf62lacZwneNjQoGcdVU7zJOd7ghsUHOkosagic6cnWc8+4gg285R6zZP5s1/LUbCKIznTwK36PkdwlOrl4U1LwfdCCa+IrvFkmgw1PCAUXKWo0sURXWcI2muKJlgyFzhynCY4RBOsqCjoI1R5zREco0n2Vt09BQtYSizgKNHfUmUrQ5UOCh51BFcLmY7umhYqXKQomOop8bUnWNNQcIiBcYaC6xzMNOS8JQQfeqKBmmglB+97ok/lfk3ygaHSyZaCRTzRxQo6GzLfa2jWBPepw+UmT7SQEJyiyRkhBLMVOfcoMjcK0eZChfUNzFAUzCsEN5vP/X1uP/n/aoMX+K+nw/Hjr/9xOo7j7Pju61tLcgvJpTWXNbfN5jLpi6VfCOviTktKlFusQixdEKWmEBUKNaIpjZRSSOXSgzaaKLdabrm1/9nZ+/f+vd/vz/v9+Xy+zZ7PRorYoZqyLrCwQdEAixxVOEXNNnjX2nUSRlkqGmWowk8lxR50JPy9Bo6qJXaXwNvREBvnThPEPrewryLhcAnj5WE15Fqi8W7R1sAuEu86S4ENikItFN4xkv9Af4nXSnUVcLiA9xzesFpivRRVeFKtsMRaKBhuSbjOELnAUtlSQUpXgdfB4Z1oSbnFEetbQ0IrAe+Y+pqnDcEJFj6S8LDZzZHwY4e3XONNlARraomNEt2bkvGsosA3ioyHm+6jCMbI59wqt4eeara28IzEmyPgoRaUOEDhTVdEJhmCoTWfC0p8aNkCp0oYqih2iqGi4yXeMkOsn4LdLLnmKfh/YogjNsPebeFGR4m9BJHLzB61XQ3BtpISfS2FugsK9FAtLWX1dCRcrCnUp44CNzuCowUZmxSRgYaE6Za0W2u/E7CVXCiI/UOR8aAm1+OSyE3mOUcwyc1zBBeoX1kiKy0Zfxck1Gsyulti11i83QTBF5Kg3pDQThFMVHiPSlK+0cSedng/VaS8bOZbtsBcTcZAR8JP5KeqQ1OYKAi20njdNNRpgnsU//K+JnaXJaGTomr7aYIphoRn9aeShJWKEq9LcozSF7QleEfDI5LYm5bgVkFkRwVDBCVu0DDIkGupo8TZBq+/pMQURYErJQmPKGKjNDkWOLx7Jd5QizdUweIaKrlP7SwJDhZvONjLkOsBBX9UpGxnydhXkfBLQ8IxgojQbLFnJf81JytSljclYYyEFyx0kVBvKWOFJmONpshGAcsduQY5giVNCV51eOdJYo/pLhbvM0uDHSevNKRcrKZIqnCtJeEsO95RoqcgGK4ocZcho1tTYtcZvH41pNQ7vA0WrhIfOSraIIntIAi+NXWCErdbkvrWwjRLrt0NKUdL6KSOscTOdMSOUtBHwL6OLA0vNSdynaWQEnCpIvKaIrJJEbvHkmuNhn6OjM8VkSGSqn1uYJCGHnq9I3aLhNME3t6GjIkO7xrNFumpyTNX/NrwX7CrIRiqqWijI9JO4d1iieykyfiposQIQ8YjjsjlBh6oHWbwRjgYJQn2NgSnNycmJAk3NiXhx44Sxykihxm8ybUwT1OVKySc7vi3OXVkdBJ4AyXBeksDXG0IhgtYY0lY5ahCD0ehborIk5aUWRJviMA7Xt5kyRjonrXENkm8yYqgs8VzgrJmClK20uMM3jRJ0FiQICQF9hdETlLQWRIb5ki6WDfWRPobvO6a4GP5mcOrNzDFELtTkONLh9dXE8xypEg7z8A9jkhrQ6Fhjlg/QVktJXxt4WXzT/03Q8IaQWSqIuEvloQ2mqC9Jfi7wRul4RX3pSPlzpoVlmCtI2jvKHCFhjcM3sN6lqF6HxnKelLjXWbwrpR4xzuCrTUZx2qq9oAh8p6ixCUGr78g8oyjRAtB5CZFwi80VerVpI0h+IeBxa6Zg6kWvpDHaioYYuEsRbDC3eOmC2JvGYLeioxGknL2UATNJN6hmtj1DlpLvDVmocYbrGCVJKOrg4X6DgddLA203BKMFngdJJFtFd7vJLm6KEpc5yjQrkk7M80SGe34X24nSex1Ra5Omgb71JKyg8SrU3i/kARKwWpH0kOGhKkObyfd0ZGjvyXlAkVZ4xRbYJ2irFMkFY1SwyWxr2oo4zlNiV+7zmaweFpT4kR3kaDAFW6xpSqzJay05FtYR4HmZhc9UxKbbfF2V8RG1MBmSaE+kmC6JnaRXK9gsiXhJHl/U0qM0WTcbyhwkYIvFGwjSbjfwhiJt8ZSQU+Bd5+marPMOkVkD0muxYLIfEuhh60x/J92itguihJSEMySVPQnTewnEm+620rTQEMsOfo4/kP/0ARvWjitlpSX7GxBgcMEsd3EEeYWvdytd+Saawi6aCIj1CkGb6Aj9rwhx16Cf3vAwFy5pyLhVonXzy51FDpdEblbkdJbUcEPDEFzQ8qNmhzzLTmmKWKbFCXeEuRabp6rxbvAtLF442QjQ+wEA9eL1xSR7Q0JXzlSHjJ4exq89yR0laScJ/FW6z4a73pFMEfDiRZvuvijIt86RaSFOl01riV2mD1UEvxGk/Geg5aWwGki1zgKPG9J2U8PEg8qYvMsZeytiTRXBMslCU8JSlxi8EabjwUldlDNLfzTUmCgxWsjqWCOHavYAqsknKFIO0yQ61VL5AVFxk6WhEaCAkdJgt9aSkzXlKNX2jEa79waYuc7gq0N3GDJGCBhoiTXUEPsdknCUE1CK0fwsiaylSF2uiDyO4XX3pFhNd7R4itFGc0k/ElBZwWvq+GC6szVeEoS/MZ+qylwpKNKv9Z469UOjqCjwlusicyTxG6VpNxcQ8IncoR4RhLbR+NdpGGmJWOcIzJGUuKPGpQg8rrG21dOMqQssJQ4RxH5jaUqnZuQ0F4Q+cjxLwPtpZbIAk3QTJHQWBE5S1BokoVtDd6lhqr9UpHSUxMcIYl9pojsb8h4SBOsMQcqvOWC2E8EVehqiJ1hrrAEbQxeK0NGZ0Gkq+guSRgniM23bIHVkqwx4hiHd7smaOyglyIyQuM978j4VS08J/A2G1KeMBRo4fBaSNhKUEZfQewVQ/C1I+MgfbEleEzCUw7mKXI0M3hd1EESVji8x5uQ41nxs1q4RMJCCXs7Iq9acpxn22oSDnQ/sJTxsCbHIYZiLyhY05TY0ZLIOQrGaSJDDN4t8pVaIrsqqFdEegtizc1iTew5Q4ayBDMUsQMkXocaYkc0hZua412siZ1rSXlR460zRJ5SlHGe5j801RLMlJTxtaOM3Q1pvxJ45zUlWFD7rsAbpfEm1JHxG0eh8w2R7QQVzBUw28FhFp5QZzq8t2rx2joqulYTWSuJdTYfWwqMFMcovFmSyJPNyLhE4E10pHzYjOC3huArRa571ZsGajQpQx38SBP5pyZB6lMU3khDnp0MBV51BE9o2E+TY5Ml2E8S7C0o6w1xvCZjf0HkVEHCzFoyNmqC+9wdcqN+Tp7jSDheE9ws8Y5V0NJCn2bk2tqSY4okdrEhx1iDN8cSudwepWmAGXKcJXK65H9to8jYQRH7SBF01ESUJdd0TayVInaWhLkOjlXE5irKGOnI6GSWGCJa482zBI9rCr0jyTVcEuzriC1vcr6mwFGSiqy5zMwxBH/TJHwjSPhL8+01kaaSUuMFKTcLEvaUePcrSmwn8DZrgikWb7CGPxkSjhQwrRk57tctmxLsb9sZvL9LSlyuSLlWkqOjwduo8b6Uv1DkmudIeFF2dHCgxVtk8dpIvHpBxhEOdhKk7OLIUSdJ+cSRY57B+0DgGUUlNfpthTfGkauzxrvTsUUaCVhlKeteTXCoJDCa2NOKhOmC4G1H8JBd4OBZReSRGkqcb/CO1PyLJTLB4j1q8JYaIutEjSLX8YKM+a6phdMsdLFUoV5RTm9JSkuDN8WcIon0NZMNZWh1q8C7SJEwV5HxrmnnTrf3KoJBlmCYI2ilSLlfEvlE4011NNgjgthzEua0oKK7JLE7HZHlEl60BLMVFewg4EWNt0ThrVNEVkkiTwpKXSWJzdRENgvKGq4IhjsiezgSFtsfCUq8qki5S1LRQeYQQ4nemmCkImWMw3tFUoUBZk4NOeZYEp4XRKTGa6wJjrWNHBVJR4m3FCnbuD6aak2WsMTh3SZImGCIPKNgsDpVwnsa70K31lCFJZYcwwSMFcQulGTsZuEaSdBXkPGZhu0FsdUO73RHjq8MPGGIfaGIbVTk6iuI3GFgucHrIQkmWSJdBd7BBu+uOryWAhY7+Lki9rK5wtEQzWwvtbqGhIMFwWRJsElsY4m9IIg9L6lCX0VklaPAYkfkZEGDnOWowlBJjtMUkcGK4Lg6EtoZInMUBVYLgn0UsdmCyCz7gIGHFfk+k1QwTh5We7A9x+IdJ6CvIkEagms0hR50eH9UnTQJ+2oiKyVlLFUE+8gBGu8MQ3CppUHesnjTHN4QB/UGPhCTHLFPHMFrCqa73gqObUJGa03wgbhHkrCfpEpzNLE7JDS25FMKhlhKKWKfCgqstLCPu1zBXy0J2ztwjtixBu8UTRn9LVtkmCN2iyFhtME70JHRQ1KVZXqKI/KNIKYMCYs1GUMEKbM1bKOI9LDXC7zbHS+bt+1MTWS9odA9DtrYtpbImQJ2VHh/lisEwaHqUk1kjKTAKknkBEXkbkdMGwq0dnhzLJF3NJH3JVwrqOB4Sca2hti75nmJN0WzxS6UxDYoEpxpa4htVlRjkYE7DZGzJVU72uC9IyhQL4i8YfGWSYLLNcHXloyz7QhNifmKSE9JgfGmuyLhc403Xm9vqcp6gXe3xuuv8F6VJNxkyTHEkHG2g0aKXL0MsXc1bGfgas2//dCONXiNLCX+5mB7eZIl1kHh7ajwpikyzlUUWOVOsjSQlsS+M0R+pPje/dzBXRZGO0rMtgQrLLG9VSu9n6CMXS3BhwYmSoIBhsjNBmZbgusE9BCPCP5triU4VhNbJfE+swSP27aayE8tuTpYYjtrYjMVGZdp2NpS1s6aBnKSHDsbKuplKbHM4a0wMFd/5/DmGyKrJSUaW4IBrqUhx0vyfzTBBLPIUcnZdrAkNsKR0sWRspumSns6Ch0v/qqIbBYUWKvPU/CFoyrDJGwSNFhbA/MlzKqjrO80hRbpKx0Jewsi/STftwGSlKc1JZyAzx05dhLEdnfQvhZOqiHWWEAHC7+30FuRcZUgaO5gpaIK+xsiHRUsqaPElTV40xQZQ107Q9BZE1nryDVGU9ZSQ47bmhBpLcYpUt7S+xuK/FiT8qKjwXYw5ypS2iuCv7q1gtgjhuBuB8LCFY5cUuCNtsQOFcT+4Ih9JX+k8Ea6v0iCIRZOtCT0Et00JW5UeC85Cg0ScK0k411HcG1zKtre3SeITBRk7WfwDhEvaYLTHP9le0m8By0JDwn4TlLW/aJOvGHxdjYUes+ScZigCkYQdNdEOhkiezgShqkx8ueKjI8lDfK2oNiOFvrZH1hS+tk7NV7nOmLHicGWEgubkXKdwdtZknCLJXaCpkrjZBtLZFsDP9CdxWsSr05Sxl6CMmoFbCOgryX40uDtamB7SVmXW4Ihlgpmq+00tBKUUa83WbjLUNkzDmY7cow1JDygyPGlhgGKYKz4vcV7QBNbJIgM11TUqZaMdwTeSguH6rOaw1JRKzaaGyxVm2EJ/uCIrVWUcZUkcp2grMsEjK+DMwS59jQk3Kd6SEq1d0S6uVmO4Bc1lDXTUcHjluCXEq+1OlBDj1pi9zgiXxnKuE0SqTXwhqbETW6RggMEnGl/q49UT2iCzgJvRwVXS2K/d6+ZkyUl7jawSVLit46EwxVljDZwoSQ20sDBihztHfk2yA8NVZghiXwrYHQdfKAOtzsayjhY9bY0yE2CWEeJ9xfzO423xhL5syS2TFJofO2pboHob0nY4GiAgRrvGQEDa/FWSsoaaYl0syRsEt3kWoH3B01shCXhTUWe9w3Bt44SC9QCh3eShQctwbaK2ApLroGCMlZrYqvlY3qYhM0aXpFkPOuoqJ3Dm6fxXrGwVF9gCWZagjPqznfkuMKQ8DPTQRO8ZqG1hPGKEm9IgpGW4DZDgTNriTxvFiq+Lz+0cKfp4wj6OCK9JSnzNSn9LFU7UhKZZMnYwcJ8s8yRsECScK4j5UOB95HFO0CzhY4xJxuCix0lDlEUeMdS6EZBkTsUkZ4K74dugyTXS7aNgL8aqjDfkCE0ZbwkCXpaWCKhl8P7VD5jxykivSyxyZrYERbe168LYu9ZYh86IkscgVLE7tWPKmJv11CgoyJltMEbrohtVAQfO4ImltiHEroYEs7RxAarVpY8AwXMcMReFOTYWe5iiLRQxJ5Q8DtJ8LQhWOhIeFESPGsILhbNDRljNbHzNRlTFbk2S3L0NOS6V1KFJYKUbSTcIIhM0wQ/s2TM0SRMNcQmSap3jCH4yhJZKSkwyRHpYYgsFeQ4U7xoCB7VVOExhXepo9ABBsYbvGWKXPME3lyH95YioZ0gssQRWWbI+FaSMkXijZXwgiTlYdPdkNLaETxlyDVIwqeaEus0aTcYcg0RVOkpR3CSJqIddK+90JCxzsDVloyrFd5ZAr4TBKfaWa6boEA7C7s6EpYaeFPjveooY72mjIccLHJ9HUwVlDhKkmutJDJBwnp1rvulJZggKDRfbXAkvC/4l3ozQOG9a8lxjx0i7nV4jSXc7vhe3OwIxjgSHjdEhhsif9YkPGlus3iLFDnWOFhtCZbJg0UbQcIaR67JjthoCyMEZRwhiXWyxO5QxI6w5NhT4U1WsJvDO60J34fW9hwzwlKij6ZAW9ne4L0s8C6XeBMEkd/LQy1VucBRot6QMlbivaBhoBgjqGiCJNhsqVp/S2SsG6DIONCR0dXhvWbJ+MRRZJkkuEjgDXJjFQW6SSL7GXK8Z2CZg7cVsbWGoKmEpzQ5elpiy8Ryg7dMkLLUEauzeO86CuwlSOlgYLojZWeJ9xM3S1PWfEfKl5ISLQ0MEKR8YOB2QfCxJBjrKPCN4f9MkaSsqoVXJBmP7EpFZ9UQfOoOFwSzBN4MQ8LsGrymlipcJQhmy0GaQjPqCHaXRwuCZwRbqK2Fg9wlClZqYicrIgMdZfxTQ0c7TBIbrChxmuzoKG8XRaSrIhhiyNFJkrC7oIAWMEOQa5aBekPCRknCo4IKPrYkvCDI8aYmY7WFtprgekcJZ3oLIqssCSMtFbQTJKwXYy3BY5oCh2iKPCpJOE+zRdpYgi6O2KmOAgvVCYaU4ySRek1sgyFhJ403QFHiVEmJHwtybO1gs8Hr5+BETQX3War0qZngYGgtVZtoqd6vFSk/UwdZElYqyjrF4HXUeFspIi9IGKf4j92pKGAdCYMVsbcV3kRF0N+R8LUd5PCsIGWoxDtBkCI0nKofdJQxT+LtZflvuc8Q3CjwWkq8KwUpHzkK/NmSsclCL0nseQdj5FRH5CNHSgtLiW80Of5HU9Hhlsga9bnBq3fEVltKfO5IaSTmGjjc4J0otcP7QsJUSQM8pEj5/wCuUuC2DWz8AAAAAElFTkSuQmCC\");\n}"
  },
  {
    "path": "public/admin/css/code-editor/codemirror.css",
    "content": "/* BASICS */\n\n.CodeMirror {\n  /* Set height, width, borders, and global font properties here */\n  font-family: monospace;\n  height: 300px;\n}\n.CodeMirror-scroll {\n  /* Set scrolling behaviour here */\n  overflow: auto;\n}\n\n/* PADDING */\n\n.CodeMirror-lines {\n  padding: 4px 0; /* Vertical padding around content */\n}\n.CodeMirror pre {\n  padding: 0 4px; /* Horizontal padding of content */\n}\n\n.CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {\n  background-color: white; /* The little square between H and V scrollbars */\n}\n\n/* GUTTER */\n\n.CodeMirror-gutters {\n  border-right: 1px solid #ddd;\n  background-color: #f7f7f7;\n  white-space: nowrap;\n}\n.CodeMirror-linenumbers {}\n.CodeMirror-linenumber {\n  padding: 0 3px 0 5px;\n  min-width: 20px;\n  text-align: right;\n  color: #999;\n  -moz-box-sizing: content-box;\n  box-sizing: content-box;\n}\n\n.CodeMirror-guttermarker { color: black; }\n.CodeMirror-guttermarker-subtle { color: #999; }\n\n/* CURSOR */\n\n.CodeMirror div.CodeMirror-cursor {\n  border-left: 1px solid black;\n}\n/* Shown when moving in bi-directional text */\n.CodeMirror div.CodeMirror-secondarycursor {\n  border-left: 1px solid silver;\n}\n.CodeMirror.cm-keymap-fat-cursor div.CodeMirror-cursor {\n  width: auto;\n  border: 0;\n  background: #7e7;\n}\n.CodeMirror.cm-keymap-fat-cursor div.CodeMirror-cursors {\n  z-index: 1;\n}\n\n.cm-animate-fat-cursor {\n  width: auto;\n  border: 0;\n  -webkit-animation: blink 1.06s steps(1) infinite;\n  -moz-animation: blink 1.06s steps(1) infinite;\n  animation: blink 1.06s steps(1) infinite;\n}\n@-moz-keyframes blink {\n  0% { background: #7e7; }\n  50% { background: none; }\n  100% { background: #7e7; }\n}\n@-webkit-keyframes blink {\n  0% { background: #7e7; }\n  50% { background: none; }\n  100% { background: #7e7; }\n}\n@keyframes blink {\n  0% { background: #7e7; }\n  50% { background: none; }\n  100% { background: #7e7; }\n}\n\n/* Can style cursor different in overwrite (non-insert) mode */\ndiv.CodeMirror-overwrite div.CodeMirror-cursor {}\n\n.cm-tab { display: inline-block; text-decoration: inherit; }\n\n.CodeMirror-ruler {\n  border-left: 1px solid #ccc;\n  position: absolute;\n}\n\n/* DEFAULT THEME */\n\n.cm-s-default .cm-keyword {color: #708;}\n.cm-s-default .cm-atom {color: #219;}\n.cm-s-default .cm-number {color: #164;}\n.cm-s-default .cm-def {color: #00f;}\n.cm-s-default .cm-variable,\n.cm-s-default .cm-punctuation,\n.cm-s-default .cm-property,\n.cm-s-default .cm-operator {}\n.cm-s-default .cm-variable-2 {color: #05a;}\n.cm-s-default .cm-variable-3 {color: #085;}\n.cm-s-default .cm-comment {color: #a50;}\n.cm-s-default .cm-string {color: #a11;}\n.cm-s-default .cm-string-2 {color: #f50;}\n.cm-s-default .cm-meta {color: #555;}\n.cm-s-default .cm-qualifier {color: #555;}\n.cm-s-default .cm-builtin {color: #30a;}\n.cm-s-default .cm-bracket {color: #997;}\n.cm-s-default .cm-tag {color: #170;}\n.cm-s-default .cm-attribute {color: #00c;}\n.cm-s-default .cm-header {color: blue;}\n.cm-s-default .cm-quote {color: #090;}\n.cm-s-default .cm-hr {color: #999;}\n.cm-s-default .cm-link {color: #00c;}\n\n.cm-negative {color: #d44;}\n.cm-positive {color: #292;}\n.cm-header, .cm-strong {font-weight: bold;}\n.cm-em {font-style: italic;}\n.cm-link {text-decoration: underline;}\n\n.cm-s-default .cm-error {color: #f00;}\n.cm-invalidchar {color: #f00;}\n\n/* Default styles for common addons */\n\ndiv.CodeMirror span.CodeMirror-matchingbracket {color: #0f0;}\ndiv.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;}\n.CodeMirror-matchingtag { background: rgba(255, 150, 0, .3); }\n.CodeMirror-activeline-background {background: #e8f2ff;}\n\n/* STOP */\n\n/* The rest of this file contains styles related to the mechanics of\n   the editor. You probably shouldn't touch them. */\n\n.CodeMirror {\n  line-height: 1;\n  position: relative;\n  overflow: hidden;\n  background: white;\n  color: black;\n}\n\n.CodeMirror-scroll {\n  /* 30px is the magic margin used to hide the element's real scrollbars */\n  /* See overflow: hidden in .CodeMirror */\n  margin-bottom: -30px; margin-right: -30px;\n  padding-bottom: 30px;\n  height: 100%;\n  outline: none; /* Prevent dragging from highlighting the element */\n  position: relative;\n  -moz-box-sizing: content-box;\n  box-sizing: content-box;\n}\n.CodeMirror-sizer {\n  position: relative;\n  border-right: 30px solid transparent;\n  -moz-box-sizing: content-box;\n  box-sizing: content-box;\n}\n\n/* The fake, visible scrollbars. Used to force redraw during scrolling\n   before actuall scrolling happens, thus preventing shaking and\n   flickering artifacts. */\n.CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {\n  position: absolute;\n  z-index: 6;\n  display: none;\n}\n.CodeMirror-vscrollbar {\n  right: 0; top: 0;\n  overflow-x: hidden;\n  overflow-y: scroll;\n}\n.CodeMirror-hscrollbar {\n  bottom: 0; left: 0;\n  overflow-y: hidden;\n  overflow-x: scroll;\n}\n.CodeMirror-scrollbar-filler {\n  right: 0; bottom: 0;\n}\n.CodeMirror-gutter-filler {\n  left: 0; bottom: 0;\n}\n\n.CodeMirror-gutters {\n  position: absolute; left: 0; top: 0;\n  padding-bottom: 30px;\n  z-index: 3;\n}\n.CodeMirror-gutter {\n  white-space: normal;\n  height: 100%;\n  -moz-box-sizing: content-box;\n  box-sizing: content-box;\n  padding-bottom: 30px;\n  margin-bottom: -32px;\n  display: inline-block;\n  /* Hack to make IE7 behave */\n  *zoom:1;\n  *display:inline;\n}\n.CodeMirror-gutter-elt {\n  position: absolute;\n  cursor: default;\n  z-index: 4;\n}\n\n.CodeMirror-lines {\n  cursor: text;\n  min-height: 1px; /* prevents collapsing before first draw */\n}\n.CodeMirror pre {\n  /* Reset some styles that the rest of the page might have set */\n  -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0;\n  border-width: 0;\n  background: transparent;\n  font-family: inherit;\n  font-size: inherit;\n  margin: 0;\n  white-space: pre;\n  word-wrap: normal;\n  line-height: inherit;\n  color: inherit;\n  z-index: 2;\n  position: relative;\n  overflow: visible;\n}\n.CodeMirror-wrap pre {\n  word-wrap: break-word;\n  white-space: pre-wrap;\n  word-break: normal;\n}\n\n.CodeMirror-linebackground {\n  position: absolute;\n  left: 0; right: 0; top: 0; bottom: 0;\n  z-index: 0;\n}\n\n.CodeMirror-linewidget {\n  position: relative;\n  z-index: 2;\n  overflow: auto;\n}\n\n.CodeMirror-widget {}\n\n.CodeMirror-wrap .CodeMirror-scroll {\n  overflow-x: hidden;\n}\n\n.CodeMirror-measure {\n  position: absolute;\n  width: 100%;\n  height: 0;\n  overflow: hidden;\n  visibility: hidden;\n}\n.CodeMirror-measure pre { position: static; }\n\n.CodeMirror div.CodeMirror-cursor {\n  position: absolute;\n  border-right: none;\n  width: 0;\n}\n\ndiv.CodeMirror-cursors {\n  visibility: hidden;\n  position: relative;\n  z-index: 3;\n}\n.CodeMirror-focused div.CodeMirror-cursors {\n  visibility: visible;\n}\n\n.CodeMirror-selected { background: #d9d9d9; }\n.CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; }\n.CodeMirror-crosshair { cursor: crosshair; }\n\n.cm-searching {\n  background: #ffa;\n  background: rgba(255, 255, 0, .4);\n}\n\n/* IE7 hack to prevent it from returning funny offsetTops on the spans */\n.CodeMirror span { *vertical-align: text-bottom; }\n\n/* Used to force a border model for a node */\n.cm-force-border { padding-right: .1px; }\n\n@media print {\n  /* Hide the cursor when printing */\n  .CodeMirror div.CodeMirror-cursors {\n    visibility: hidden;\n  }\n}\n\n/* Help users use markselection to safely style text background */\nspan.CodeMirror-selectedtext { background: none; }"
  },
  {
    "path": "public/admin/css/colorpicker/colorpicker.css",
    "content": "/***\nSpectrum Colorpicker v1.5.1\nhttps://github.com/bgrins/spectrum\nAuthor: Brian Grinstead\nLicense: MIT\n***/\n.sp-container {\n\tposition:absolute;\n\ttop:0;\n\tleft:0;\n\tdisplay:inline-block;\n\t*display: inline;\n\t*zoom: 1;\n\tz-index: 9999994;\n\toverflow: hidden;\n}\n.sp-container.sp-flat {\n\tposition: relative;\n}\n.sp-container,\n.sp-container * {\n\t-webkit-box-sizing: content-box;\n\t   -moz-box-sizing: content-box;\n\t\t\tbox-sizing: content-box;\n}\n.sp-top {\n\tposition:relative;\n\twidth: 100%;\n\tdisplay:inline-block;\n}\n.sp-top-inner {\n\tposition:absolute;\n\ttop:0;\n\tleft:0;\n\tbottom:0;\n\tright:0;\n}\n.sp-color {\n\tposition: absolute;\n\ttop:0;\n\tleft:0;\n\tbottom:0;\n\tright:20%;\n}\n.sp-hue {\n\tposition: absolute;\n\ttop:0;\n\tright:0;\n\tbottom:0;\n\tleft:84%;\n\theight: 100%;\n}\n.sp-clear-enabled .sp-hue {\n\ttop:33px;\n\theight: 77.5%;\n}\n.sp-fill {\n\tpadding-top: 80%;\n}\n.sp-sat, .sp-val {\n\tposition: absolute;\n\ttop:0;\n\tleft:0;\n\tright:0;\n\tbottom:0;\n}\n.sp-alpha-enabled .sp-top {\n\tmargin-bottom: 18px;\n}\n.sp-alpha-enabled .sp-alpha {\n\tdisplay: block;\n}\n.sp-alpha-handle {\n\tposition:absolute;\n\ttop:-4px;\n\tbottom: -4px;\n\twidth: 6px;\n\tleft: 50%;\n\tcursor: pointer;\n\tborder: 1px solid black;\n\tbackground: white;\n\topacity: .8;\n}\n.sp-alpha {\n\tdisplay: none;\n\tposition: absolute;\n\tbottom: -14px;\n\tright: 0;\n\tleft: 0;\n\theight: 8px;\n}\n.sp-alpha-inner {\n\tborder: solid 1px #333;\n}\n.sp-clear {\n\tdisplay: none;\n}\n.sp-clear.sp-clear-display {\n\tbackground-position: center;\n}\n.sp-clear-enabled .sp-clear {\n\tdisplay: block;\n\tposition:absolute;\n\ttop:0px;\n\tright:0;\n\tbottom:0;\n\tleft:84%;\n\theight: 28px;\n}\n.sp-container, .sp-replacer, .sp-preview, .sp-dragger, .sp-slider, .sp-alpha, .sp-clear, .sp-alpha-handle, .sp-container.sp-dragging .sp-input, .sp-container button  {\n\t-webkit-user-select:none;\n\t-moz-user-select: -moz-none;\n\t-o-user-select:none;\n\tuser-select: none;\n}\n.sp-container.sp-input-disabled .sp-input-container {\n\tdisplay: none;\n}\n.sp-container.sp-buttons-disabled .sp-button-container {\n\tdisplay: none;\n}\n.sp-container.sp-palette-buttons-disabled .sp-palette-button-container {\n\tdisplay: none;\n}\n.sp-palette-only .sp-picker-container {\n\tdisplay: none;\n}\n.sp-palette-disabled .sp-palette-container {\n\tdisplay: none;\n}\n.sp-initial-disabled .sp-initial {\n\tdisplay: none;\n}\n.sp-sat {\n\tbackground-image: -webkit-gradient(linear,  0 0, 100% 0, from(#FFF), to(rgba(204, 154, 129, 0)));\n\tbackground-image: -webkit-linear-gradient(left, #FFF, rgba(204, 154, 129, 0));\n\tbackground-image: -moz-linear-gradient(left, #fff, rgba(204, 154, 129, 0));\n\tbackground-image: -o-linear-gradient(left, #fff, rgba(204, 154, 129, 0));\n\tbackground-image: -ms-linear-gradient(left, #fff, rgba(204, 154, 129, 0));\n\tbackground-image: linear-gradient(to right, #fff, rgba(204, 154, 129, 0));\n\t-ms-filter: \"progid:DXImageTransform.Microsoft.gradient(GradientType = 1, startColorstr=#FFFFFFFF, endColorstr=#00CC9A81)\";\n\tfilter : progid:DXImageTransform.Microsoft.gradient(GradientType = 1, startColorstr='#FFFFFFFF', endColorstr='#00CC9A81');\n}\n.sp-val {\n\tbackground-image: -webkit-gradient(linear, 0 100%, 0 0, from(#000000), to(rgba(204, 154, 129, 0)));\n\tbackground-image: -webkit-linear-gradient(bottom, #000000, rgba(204, 154, 129, 0));\n\tbackground-image: -moz-linear-gradient(bottom, #000, rgba(204, 154, 129, 0));\n\tbackground-image: -o-linear-gradient(bottom, #000, rgba(204, 154, 129, 0));\n\tbackground-image: -ms-linear-gradient(bottom, #000, rgba(204, 154, 129, 0));\n\tbackground-image: linear-gradient(to top, #000, rgba(204, 154, 129, 0));\n\t-ms-filter: \"progid:DXImageTransform.Microsoft.gradient(startColorstr=#00CC9A81, endColorstr=#FF000000)\";\n\tfilter : progid:DXImageTransform.Microsoft.gradient(startColorstr='#00CC9A81', endColorstr='#FF000000');\n}\n.sp-hue {\n\tbackground: -moz-linear-gradient(top, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%);\n\tbackground: -ms-linear-gradient(top, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%);\n\tbackground: -o-linear-gradient(top, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%);\n\tbackground: -webkit-gradient(linear, left top, left bottom, from(#ff0000), color-stop(0.17, #ffff00), color-stop(0.33, #00ff00), color-stop(0.5, #00ffff), color-stop(0.67, #0000ff), color-stop(0.83, #ff00ff), to(#ff0000));\n\tbackground: -webkit-linear-gradient(top, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%);\n\tbackground: linear-gradient(to bottom, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%);\n}\n.sp-1 {\n\theight:17%;\n\tfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0000', endColorstr='#ffff00');\n}\n.sp-2 {\n\theight:16%;\n\tfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffff00', endColorstr='#00ff00');\n}\n.sp-3 {\n\theight:17%;\n\tfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00ff00', endColorstr='#00ffff');\n}\n.sp-4 {\n\theight:17%;\n\tfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00ffff', endColorstr='#0000ff');\n}\n.sp-5 {\n\theight:16%;\n\tfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0000ff', endColorstr='#ff00ff');\n}\n.sp-6 {\n\theight:17%;\n\tfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff00ff', endColorstr='#ff0000');\n}\n.sp-hidden {\n\tdisplay: none !important;\n}\n.sp-cf:before, .sp-cf:after { content: \"\"; display: table; }\n.sp-cf:after { clear: both; }\n.sp-cf { *zoom: 1; }\n@media (max-device-width: 480px) {\n\t.sp-color { right: 40%; }\n\t.sp-hue { left: 63%; }\n\t.sp-fill { padding-top: 60%; }\n}\n.sp-dragger {\n\tborder-radius: 5px;\n\theight: 5px;\n\twidth: 5px;\n\tborder: 1px solid #fff;\n\tbackground: #000;\n\tcursor: pointer;\n\tposition:absolute;\n\ttop:0;\n\tleft: 0;\n}\n.sp-slider {\n\tposition: absolute;\n\ttop:0;\n\tcursor:pointer;\n\theight: 3px;\n\tleft: -1px;\n\tright: -1px;\n\tborder: 1px solid #000;\n\tbackground: white;\n\topacity: .8;\n}\n.sp-container {\n\tborder-radius: 0;\n\tbackground-color: #ECECEC;\n\tborder: solid 1px #f0c49B;\n\tpadding: 0;\n}\n.sp-container, .sp-container button, .sp-container input, .sp-color, .sp-hue, .sp-clear {\n\tfont: normal 12px \"Lucida Grande\", \"Lucida Sans Unicode\", \"Lucida Sans\", Geneva, Verdana, sans-serif;\n\t-webkit-box-sizing: border-box;\n\t-moz-box-sizing: border-box;\n\t-ms-box-sizing: border-box;\n\tbox-sizing: border-box;\n}\n.sp-top {\n\tmargin-bottom: 3px;\n}\n.sp-color, .sp-hue, .sp-clear {\n\tborder: solid 1px #666;\n}\n.sp-input-container {\n\tfloat:right;\n\twidth: 100px;\n\tmargin-bottom: 4px;\n}\n.sp-initial-disabled  .sp-input-container {\n\twidth: 100%;\n}\n.sp-input {\n\tfont-size: 12px !important;\n\tborder: 1px inset;\n\tpadding: 4px 5px;\n\tmargin: 0;\n\twidth: 100%;\n\tbackground:transparent;\n\tborder-radius: 3px;\n\tcolor: #222;\n}\n.sp-input:focus  {\n\tborder: 1px solid orange;\n}\n.sp-input.sp-validation-error {\n\tborder: 1px solid red;\n\tbackground: #fdd;\n}\n.sp-picker-container , .sp-palette-container {\n\tfloat:left;\n\tposition: relative;\n\tpadding: 10px;\n\tpadding-bottom: 300px;\n\tmargin-bottom: -290px;\n}\n.sp-picker-container {\n\twidth: 172px;\n\tborder-left: solid 1px #fff;\n}\n.sp-palette-container {\n\tborder-right: solid 1px #ccc;\n}\n.sp-palette-only .sp-palette-container {\n\tborder: 0;\n}\n.sp-palette .sp-thumb-el {\n\tdisplay: block;\n\tposition:relative;\n\tfloat:left;\n\twidth: 24px;\n\theight: 15px;\n\tmargin: 3px;\n\tcursor: pointer;\n\tborder:solid 2px transparent;\n}\n.sp-palette .sp-thumb-el:hover, .sp-palette .sp-thumb-el.sp-thumb-active {\n\tborder-color: orange;\n}\n.sp-thumb-el {\n\tposition:relative;\n}\n.sp-initial {\n\tfloat: left;\n\tborder: solid 1px #333;\n}\n.sp-initial span {\n\twidth: 30px;\n\theight: 25px;\n\tborder:none;\n\tdisplay:block;\n\tfloat:left;\n\tmargin:0;\n}\n.sp-initial .sp-clear-display {\n\tbackground-position: center;\n}\n.sp-palette-button-container,\n.sp-button-container {\n\tfloat: right;\n}\n.sp-replacer:hover, .sp-replacer.sp-active {\n\tcolor:rgba(0,0,0,.87);\n}\n.sp-replacer.sp-disabled {\n\tcursor:default;\n\tborder-color: silver;\n\tcolor: silver;\n}\n.sp-dd {\n\tpadding: 2px 0;\n\theight: 16px;\n\tline-height: 16px;\n\tfloat:left;\n\tfont-size:10px;\n}\n.sp-preview {\n\tposition:relative;\n\twidth:25px;\n\theight: 20px;\n\tborder: solid 1px #222;\n\tmargin-right: 5px;\n\tfloat:left;\n\tz-index: 0;\n}\n.sp-palette {\n\t*width: 220px;\n\tmax-width: 220px;\n}\n.sp-palette .sp-thumb-el {\n\twidth:16px;\n\theight: 16px;\n\tmargin:2px 1px;\n\tborder: solid 1px #d0d0d0;\n}\n.sp-container {\n\tpadding-bottom:0;\n}\n.sp-container button {\n\tbackground-color: #eeeeee;\n\tbackground-image: -webkit-linear-gradient(top, #eeeeee, #cccccc);\n\tbackground-image: -moz-linear-gradient(top, #eeeeee, #cccccc);\n\tbackground-image: -ms-linear-gradient(top, #eeeeee, #cccccc);\n\tbackground-image: -o-linear-gradient(top, #eeeeee, #cccccc);\n\tbackground-image: linear-gradient(to bottom, #eeeeee, #cccccc);\n\tborder: 1px solid #ccc;\n\tborder-bottom: 1px solid #bbb;\n\tborder-radius: 3px;\n\tcolor: #333;\n\tfont-size: 14px;\n\tline-height: 1;\n\tpadding: 5px 4px;\n\ttext-align: center;\n\ttext-shadow: 0 1px 0 #eee;\n\tvertical-align: middle;\n}\n.sp-container button:hover {\n\tbackground-color: #dddddd;\n\tbackground-image: -webkit-linear-gradient(top, #dddddd, #bbbbbb);\n\tbackground-image: -moz-linear-gradient(top, #dddddd, #bbbbbb);\n\tbackground-image: -ms-linear-gradient(top, #dddddd, #bbbbbb);\n\tbackground-image: -o-linear-gradient(top, #dddddd, #bbbbbb);\n\tbackground-image: linear-gradient(to bottom, #dddddd, #bbbbbb);\n\tborder: 1px solid #bbb;\n\tborder-bottom: 1px solid #999;\n\tcursor: pointer;\n\ttext-shadow: 0 1px 0 #ddd;\n}\n.sp-container button:active {\n\tborder: 1px solid #aaa;\n\tborder-bottom: 1px solid #888;\n\t-webkit-box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee;\n\t-moz-box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee;\n\t-ms-box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee;\n\t-o-box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee;\n\tbox-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee;\n}\n.sp-cancel {\n\tfont-size: 11px;\n\tcolor: #d93f3f !important;\n\tmargin:0;\n\tpadding:2px;\n\tmargin-right: 5px;\n\tvertical-align: middle;\n\ttext-decoration:none;\n}\n.sp-cancel:hover {\n\tcolor: #d93f3f !important;\n\ttext-decoration: underline;\n}\n.sp-palette span:hover, .sp-palette span.sp-thumb-active {\n\tborder-color: #000;\n}\n.sp-preview, .sp-alpha, .sp-thumb-el {\n\tposition:relative;\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==);\n}\n.sp-preview-inner, .sp-alpha-inner, .sp-thumb-inner {\n\tdisplay:block;\n\tposition:absolute;\n\ttop:0;left:0;bottom:0;right:0;\n}\n.sp-palette .sp-thumb-inner {\n\tbackground-position: 50% 50%;\n\tbackground-repeat: no-repeat;\n}\n.sp-palette .sp-thumb-light.sp-thumb-active .sp-thumb-inner {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIVJREFUeNpiYBhsgJFMffxAXABlN5JruT4Q3wfi/0DsT64h8UD8HmpIPCWG/KemIfOJCUB+Aoacx6EGBZyHBqI+WsDCwuQ9mhxeg2A210Ntfo8klk9sOMijaURm7yc1UP2RNCMbKE9ODK1HM6iegYLkfx8pligC9lCD7KmRof0ZhjQACDAAceovrtpVBRkAAAAASUVORK5CYII=);\n}\n.sp-palette .sp-thumb-dark.sp-thumb-active .sp-thumb-inner {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAAAMdJREFUOE+tkgsNwzAMRMugEAahEAahEAZhEAqlEAZhEAohEAYh81X2dIm8fKpEspLGvudPOsUYpxE2BIJCroJmEW9qJ+MKaBFhEMNabSy9oIcIPwrB+afvAUFoK4H0tMaQ3XtlrggDhOVVMuT4E5MMG0FBbCEYzjYT7OxLEvIHQLY2zWwQ3D+9luyOQTfKDiFD3iUIfPk8VqrKjgAiSfGFPecrg6HN6m/iBcwiDAo7WiBeawa+Kwh7tZoSCGLMqwlSAzVDhoK+6vH4G0P5wdkAAAAASUVORK5CYII=);\n}\n.sp-clear-display {\n\tbackground-repeat:no-repeat;\n\tbackground-position: center;\n\tbackground-image: url(data:image/gif;base64,R0lGODlhFAAUAPcAAAAAAJmZmZ2dnZ6enqKioqOjo6SkpKWlpaampqenp6ioqKmpqaqqqqurq/Hx8fLy8vT09PX19ff39/j4+Pn5+fr6+vv7+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAP8ALAAAAAAUABQAAAihAP9FoPCvoMGDBy08+EdhQAIJCCMybCDAAYUEARBAlFiQQoMABQhKUJBxY0SPICEYHBnggEmDKAuoPMjS5cGYMxHW3IiT478JJA8M/CjTZ0GgLRekNGpwAsYABHIypcAgQMsITDtWJYBR6NSqMico9cqR6tKfY7GeBCuVwlipDNmefAtTrkSzB1RaIAoXodsABiZAEFB06gIBWC1mLVgBa0AAOw==);\n}\n/*///////////////////////*/\n\n/* Replacer (the little preview div that shows up instead of the <input>) */\n.sp-replacer {\n\tbackground-color:#e0e0e0;\n\t-webkit-border-radius:0 3px 3px 0;\n\t-moz-border-radius:0 3px 3px 0;\n\t-o-border-radius:0 3px 3px 0;\n\tborder-radius:0 3px 3px 0;\n\tborder:none;\n\tbottom:0;\n\tcursor:pointer;\n\tdisplay:block;\n\toutline:none;\n\tpadding-left:16px;\n\tpadding-top:13px;\n\tposition:absolute;\n\tright:0;\n\ttop:0;\n\twidth:54px;\n\tcolor:rgba(0,0,0,.56);\n\t-webkit-transition:color.4s;\n\t-moz-transition:color.4s;\n\t-ms-transition:color.4s;\n\t-o-transition:color.4s;\n\ttransition:color.4s;\n}\n.j-forms .color-group input {\n\t-webkit-border-radius:3px 0 0 3px;\n\t-moz-border-radius:3px 0 0 3px;\n\t-o-border-radius:3px 0 0 3px;\n\tborder-radius:3px 0 0 3px;\n}\n.j-forms .color-group { position: relative; padding-right:70px; display:block; }"
  },
  {
    "path": "public/admin/css/data-table/bootstrap-editable.css",
    "content": "/*! X-editable - v1.5.1 \n* In-place editing with Twitter Bootstrap, jQuery UI or pure jQuery\n* http://github.com/vitalets/x-editable\n* Copyright (c) 2013 Vitaliy Potapov; Licensed MIT */\n.editableform {\n    margin-bottom: 0; /* overwrites bootstrap margin */\n}\n\n.editableform .control-group {\n    margin-bottom: 0; /* overwrites bootstrap margin */\n    white-space: nowrap; /* prevent wrapping buttons on new line */\n    line-height: 20px; /* overwriting bootstrap line-height. See #133 */\n}\n\n/* \n  BS3 width:1005 for inputs breaks editable form in popup \n  See: https://github.com/vitalets/x-editable/issues/393\n*/\n.editableform .form-control {\n    width: auto;\n}\n\n.editable-buttons {\n   display: inline-block; /* should be inline to take effect of parent's white-space: nowrap */\n   vertical-align: top;\n   margin-left: 7px;\n   /* inline-block emulation for IE7*/\n   zoom: 1; \n   *display: inline;\n}\n\n.editable-buttons.editable-buttons-bottom {\n   display: block; \n   margin-top: 7px;\n   margin-left: 0;\n}\n\n.editable-input {\n    vertical-align: top; \n    display: inline-block; /* should be inline to take effect of parent's white-space: nowrap */\n    width: auto; /* bootstrap-responsive has width: 100% that breakes layout */\n    white-space: normal; /* reset white-space decalred in parent*/\n   /* display-inline emulation for IE7*/\n   zoom: 1; \n   *display: inline;   \n}\n\n.editable-buttons .editable-cancel {\n   margin-left: 7px; \n}\n\n/*for jquery-ui buttons need set height to look more pretty*/\n.editable-buttons button.ui-button-icon-only {\n   height: 24px; \n   width: 30px;\n}\n\n.editableform-loading {\n    background: url('../img/loading.gif') center center no-repeat;  \n    height: 25px;\n    width: auto; \n    min-width: 25px; \n}\n\n.editable-inline .editableform-loading {\n    background-position: left 5px;      \n}\n\n .editable-error-block {\n    max-width: 300px;\n    margin: 5px 0 0 0;\n    width: auto;\n    white-space: normal;\n}\n\n/*add padding for jquery ui*/\n.editable-error-block.ui-state-error {\n    padding: 3px;  \n}  \n\n.editable-error {\n   color: red;  \n}\n\n/* ---- For specific types ---- */\n\n.editableform .editable-date {\n    padding: 0; \n    margin: 0;\n    float: left;\n}\n\n/* move datepicker icon to center of add-on button. See https://github.com/vitalets/x-editable/issues/183 */\n.editable-inline .add-on .icon-th {\n   margin-top: 3px;\n   margin-left: 1px; \n}\n\n\n/* checklist vertical alignment */\n.editable-checklist label input[type=\"checkbox\"], \n.editable-checklist label span {\n    vertical-align: middle;\n    margin: 0;\n}\n\n.editable-checklist label {\n    white-space: nowrap; \n}\n\n/* set exact width of textarea to fit buttons toolbar */\n.editable-wysihtml5 {\n    width: 566px; \n    height: 250px; \n}\n\n/* clear button shown as link in date inputs */\n.editable-clear {\n   clear: both;\n   font-size: 0.9em;\n   text-decoration: none;\n   text-align: right;\n}\n\n/* IOS-style clear button for text inputs */\n.editable-clear-x {\n   background: url('../img/clear.png') center center no-repeat;\n   display: block;\n   width: 13px;    \n   height: 13px;\n   position: absolute;\n   opacity: 0.6;\n   z-index: 100;\n   \n   top: 50%;\n   right: 6px;\n   margin-top: -6px;\n   \n}\n\n.editable-clear-x:hover {\n   opacity: 1;\n}\n\n.editable-pre-wrapped {\n   white-space: pre-wrap;\n}\n.editable-container.editable-popup {\n    max-width: none !important; /* without this rule poshytip/tooltip does not stretch */\n}  \n\n.editable-container.popover {\n    width: auto; /* without this rule popover does not stretch */\n}\n\n.editable-container.editable-inline {\n    display: inline-block; \n    vertical-align: middle;\n    width: auto;\n    /* inline-block emulation for IE7*/\n    zoom: 1; \n    *display: inline;    \n}\n\n.editable-container.ui-widget {\n   font-size: inherit;  /* jqueryui widget font 1.1em too big, overwrite it */\n   z-index: 9990; /* should be less than select2 dropdown z-index to close dropdown first when click */\n}\n.editable-click, \na.editable-click, \na.editable-click:hover {\n    text-decoration: none;\n    border-bottom: dashed 1px #0088cc;\n}\n\n.editable-click.editable-disabled, \na.editable-click.editable-disabled, \na.editable-click.editable-disabled:hover {\n   color: #585858;  \n   cursor: default;\n   border-bottom: none;\n}\n\n.editable-empty, .editable-empty:hover, .editable-empty:focus{\n  font-style: italic; \n  color: #DD1144;  \n  /* border-bottom: none; */\n  text-decoration: none;\n}\n\n.editable-unsaved {\n  font-weight: bold; \n}\n\n.editable-unsaved:after {\n/*    content: '*'*/\n}\n\n.editable-bg-transition {\n  -webkit-transition: background-color 1400ms ease-out;\n  -moz-transition: background-color 1400ms ease-out;\n  -o-transition: background-color 1400ms ease-out;\n  -ms-transition: background-color 1400ms ease-out;\n  transition: background-color 1400ms ease-out;  \n}\n\n/*see https://github.com/vitalets/x-editable/issues/139 */\n.form-horizontal .editable\n{ \n    padding-top: 5px;\n    display:inline-block;\n}\n\n\n/*!\n * Datepicker for Bootstrap\n *\n * Copyright 2012 Stefan Petre\n * Improvements by Andrew Rowls\n * Licensed under the Apache License v2.0\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n */\n.datepicker {\n  padding: 4px;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px;\n  direction: ltr;\n  /*.dow {\n\t\tborder-top: 1px solid #ddd !important;\n\t}*/\n\n}\n.datepicker-inline {\n  width: 220px;\n}\n.datepicker.datepicker-rtl {\n  direction: rtl;\n}\n.datepicker.datepicker-rtl table tr td span {\n  float: right;\n}\n.datepicker-dropdown {\n  top: 0;\n  left: 0;\n}\n.datepicker-dropdown:before {\n  content: '';\n  display: inline-block;\n  border-left: 7px solid transparent;\n  border-right: 7px solid transparent;\n  border-bottom: 7px solid #ccc;\n  border-bottom-color: rgba(0, 0, 0, 0.2);\n  position: absolute;\n  top: -7px;\n  left: 6px;\n}\n.datepicker-dropdown:after {\n  content: '';\n  display: inline-block;\n  border-left: 6px solid transparent;\n  border-right: 6px solid transparent;\n  border-bottom: 6px solid #ffffff;\n  position: absolute;\n  top: -6px;\n  left: 7px;\n}\n.datepicker > div {\n  display: none;\n}\n.datepicker.days div.datepicker-days {\n  display: block;\n}\n.datepicker.months div.datepicker-months {\n  display: block;\n}\n.datepicker.years div.datepicker-years {\n  display: block;\n}\n.datepicker table {\n  margin: 0;\n}\n.datepicker td,\n.datepicker th {\n  text-align: center;\n  width: 20px;\n  height: 20px;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px;\n  border: none;\n}\n.table-striped .datepicker table tr td,\n.table-striped .datepicker table tr th {\n  background-color: transparent;\n}\n.datepicker table tr td.day:hover {\n  background: #eeeeee;\n  cursor: pointer;\n}\n.datepicker table tr td.old,\n.datepicker table tr td.new {\n  color: #999999;\n}\n.datepicker table tr td.disabled,\n.datepicker table tr td.disabled:hover {\n  background: none;\n  color: #999999;\n  cursor: default;\n}\n.datepicker table tr td.today,\n.datepicker table tr td.today:hover,\n.datepicker table tr td.today.disabled,\n.datepicker table tr td.today.disabled:hover {\n  background-color: #fde19a;\n  background-image: -moz-linear-gradient(top, #fdd49a, #fdf59a);\n  background-image: -ms-linear-gradient(top, #fdd49a, #fdf59a);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdd49a), to(#fdf59a));\n  background-image: -webkit-linear-gradient(top, #fdd49a, #fdf59a);\n  background-image: -o-linear-gradient(top, #fdd49a, #fdf59a);\n  background-image: linear-gradient(top, #fdd49a, #fdf59a);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a', endColorstr='#fdf59a', GradientType=0);\n  border-color: #fdf59a #fdf59a #fbed50;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n  color: #000;\n}\n.datepicker table tr td.today:hover,\n.datepicker table tr td.today:hover:hover,\n.datepicker table tr td.today.disabled:hover,\n.datepicker table tr td.today.disabled:hover:hover,\n.datepicker table tr td.today:active,\n.datepicker table tr td.today:hover:active,\n.datepicker table tr td.today.disabled:active,\n.datepicker table tr td.today.disabled:hover:active,\n.datepicker table tr td.today.active,\n.datepicker table tr td.today:hover.active,\n.datepicker table tr td.today.disabled.active,\n.datepicker table tr td.today.disabled:hover.active,\n.datepicker table tr td.today.disabled,\n.datepicker table tr td.today:hover.disabled,\n.datepicker table tr td.today.disabled.disabled,\n.datepicker table tr td.today.disabled:hover.disabled,\n.datepicker table tr td.today[disabled],\n.datepicker table tr td.today:hover[disabled],\n.datepicker table tr td.today.disabled[disabled],\n.datepicker table tr td.today.disabled:hover[disabled] {\n  background-color: #fdf59a;\n}\n.datepicker table tr td.today:active,\n.datepicker table tr td.today:hover:active,\n.datepicker table tr td.today.disabled:active,\n.datepicker table tr td.today.disabled:hover:active,\n.datepicker table tr td.today.active,\n.datepicker table tr td.today:hover.active,\n.datepicker table tr td.today.disabled.active,\n.datepicker table tr td.today.disabled:hover.active {\n  background-color: #fbf069 \\9;\n}\n.datepicker table tr td.today:hover:hover {\n  color: #000;\n}\n.datepicker table tr td.today.active:hover {\n  color: #fff;\n}\n.datepicker table tr td.range,\n.datepicker table tr td.range:hover,\n.datepicker table tr td.range.disabled,\n.datepicker table tr td.range.disabled:hover {\n  background: #eeeeee;\n  -webkit-border-radius: 0;\n  -moz-border-radius: 0;\n  border-radius: 0;\n}\n.datepicker table tr td.range.today,\n.datepicker table tr td.range.today:hover,\n.datepicker table tr td.range.today.disabled,\n.datepicker table tr td.range.today.disabled:hover {\n  background-color: #f3d17a;\n  background-image: -moz-linear-gradient(top, #f3c17a, #f3e97a);\n  background-image: -ms-linear-gradient(top, #f3c17a, #f3e97a);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f3c17a), to(#f3e97a));\n  background-image: -webkit-linear-gradient(top, #f3c17a, #f3e97a);\n  background-image: -o-linear-gradient(top, #f3c17a, #f3e97a);\n  background-image: linear-gradient(top, #f3c17a, #f3e97a);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3c17a', endColorstr='#f3e97a', GradientType=0);\n  border-color: #f3e97a #f3e97a #edde34;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n  -webkit-border-radius: 0;\n  -moz-border-radius: 0;\n  border-radius: 0;\n}\n.datepicker table tr td.range.today:hover,\n.datepicker table tr td.range.today:hover:hover,\n.datepicker table tr td.range.today.disabled:hover,\n.datepicker table tr td.range.today.disabled:hover:hover,\n.datepicker table tr td.range.today:active,\n.datepicker table tr td.range.today:hover:active,\n.datepicker table tr td.range.today.disabled:active,\n.datepicker table tr td.range.today.disabled:hover:active,\n.datepicker table tr td.range.today.active,\n.datepicker table tr td.range.today:hover.active,\n.datepicker table tr td.range.today.disabled.active,\n.datepicker table tr td.range.today.disabled:hover.active,\n.datepicker table tr td.range.today.disabled,\n.datepicker table tr td.range.today:hover.disabled,\n.datepicker table tr td.range.today.disabled.disabled,\n.datepicker table tr td.range.today.disabled:hover.disabled,\n.datepicker table tr td.range.today[disabled],\n.datepicker table tr td.range.today:hover[disabled],\n.datepicker table tr td.range.today.disabled[disabled],\n.datepicker table tr td.range.today.disabled:hover[disabled] {\n  background-color: #f3e97a;\n}\n.datepicker table tr td.range.today:active,\n.datepicker table tr td.range.today:hover:active,\n.datepicker table tr td.range.today.disabled:active,\n.datepicker table tr td.range.today.disabled:hover:active,\n.datepicker table tr td.range.today.active,\n.datepicker table tr td.range.today:hover.active,\n.datepicker table tr td.range.today.disabled.active,\n.datepicker table tr td.range.today.disabled:hover.active {\n  background-color: #efe24b \\9;\n}\n.datepicker table tr td.selected,\n.datepicker table tr td.selected:hover,\n.datepicker table tr td.selected.disabled,\n.datepicker table tr td.selected.disabled:hover {\n  background-color: #9e9e9e;\n  background-image: -moz-linear-gradient(top, #b3b3b3, #808080);\n  background-image: -ms-linear-gradient(top, #b3b3b3, #808080);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#b3b3b3), to(#808080));\n  background-image: -webkit-linear-gradient(top, #b3b3b3, #808080);\n  background-image: -o-linear-gradient(top, #b3b3b3, #808080);\n  background-image: linear-gradient(top, #b3b3b3, #808080);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#b3b3b3', endColorstr='#808080', GradientType=0);\n  border-color: #808080 #808080 #595959;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n  color: #fff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.datepicker table tr td.selected:hover,\n.datepicker table tr td.selected:hover:hover,\n.datepicker table tr td.selected.disabled:hover,\n.datepicker table tr td.selected.disabled:hover:hover,\n.datepicker table tr td.selected:active,\n.datepicker table tr td.selected:hover:active,\n.datepicker table tr td.selected.disabled:active,\n.datepicker table tr td.selected.disabled:hover:active,\n.datepicker table tr td.selected.active,\n.datepicker table tr td.selected:hover.active,\n.datepicker table tr td.selected.disabled.active,\n.datepicker table tr td.selected.disabled:hover.active,\n.datepicker table tr td.selected.disabled,\n.datepicker table tr td.selected:hover.disabled,\n.datepicker table tr td.selected.disabled.disabled,\n.datepicker table tr td.selected.disabled:hover.disabled,\n.datepicker table tr td.selected[disabled],\n.datepicker table tr td.selected:hover[disabled],\n.datepicker table tr td.selected.disabled[disabled],\n.datepicker table tr td.selected.disabled:hover[disabled] {\n  background-color: #808080;\n}\n.datepicker table tr td.selected:active,\n.datepicker table tr td.selected:hover:active,\n.datepicker table tr td.selected.disabled:active,\n.datepicker table tr td.selected.disabled:hover:active,\n.datepicker table tr td.selected.active,\n.datepicker table tr td.selected:hover.active,\n.datepicker table tr td.selected.disabled.active,\n.datepicker table tr td.selected.disabled:hover.active {\n  background-color: #666666 \\9;\n}\n.datepicker table tr td.active,\n.datepicker table tr td.active:hover,\n.datepicker table tr td.active.disabled,\n.datepicker table tr td.active.disabled:hover {\n  background-color: #006dcc;\n  background-image: -moz-linear-gradient(top, #0088cc, #0044cc);\n  background-image: -ms-linear-gradient(top, #0088cc, #0044cc);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));\n  background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);\n  background-image: -o-linear-gradient(top, #0088cc, #0044cc);\n  background-image: linear-gradient(top, #0088cc, #0044cc);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);\n  border-color: #0044cc #0044cc #002a80;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n  color: #fff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.datepicker table tr td.active:hover,\n.datepicker table tr td.active:hover:hover,\n.datepicker table tr td.active.disabled:hover,\n.datepicker table tr td.active.disabled:hover:hover,\n.datepicker table tr td.active:active,\n.datepicker table tr td.active:hover:active,\n.datepicker table tr td.active.disabled:active,\n.datepicker table tr td.active.disabled:hover:active,\n.datepicker table tr td.active.active,\n.datepicker table tr td.active:hover.active,\n.datepicker table tr td.active.disabled.active,\n.datepicker table tr td.active.disabled:hover.active,\n.datepicker table tr td.active.disabled,\n.datepicker table tr td.active:hover.disabled,\n.datepicker table tr td.active.disabled.disabled,\n.datepicker table tr td.active.disabled:hover.disabled,\n.datepicker table tr td.active[disabled],\n.datepicker table tr td.active:hover[disabled],\n.datepicker table tr td.active.disabled[disabled],\n.datepicker table tr td.active.disabled:hover[disabled] {\n  background-color: #0044cc;\n}\n.datepicker table tr td.active:active,\n.datepicker table tr td.active:hover:active,\n.datepicker table tr td.active.disabled:active,\n.datepicker table tr td.active.disabled:hover:active,\n.datepicker table tr td.active.active,\n.datepicker table tr td.active:hover.active,\n.datepicker table tr td.active.disabled.active,\n.datepicker table tr td.active.disabled:hover.active {\n  background-color: #003399 \\9;\n}\n.datepicker table tr td span {\n  display: block;\n  width: 23%;\n  height: 54px;\n  line-height: 54px;\n  float: left;\n  margin: 1%;\n  cursor: pointer;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px;\n}\n.datepicker table tr td span:hover {\n  background: #eeeeee;\n}\n.datepicker table tr td span.disabled,\n.datepicker table tr td span.disabled:hover {\n  background: none;\n  color: #999999;\n  cursor: default;\n}\n.datepicker table tr td span.active,\n.datepicker table tr td span.active:hover,\n.datepicker table tr td span.active.disabled,\n.datepicker table tr td span.active.disabled:hover {\n  background-color: #006dcc;\n  background-image: -moz-linear-gradient(top, #0088cc, #0044cc);\n  background-image: -ms-linear-gradient(top, #0088cc, #0044cc);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));\n  background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);\n  background-image: -o-linear-gradient(top, #0088cc, #0044cc);\n  background-image: linear-gradient(top, #0088cc, #0044cc);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);\n  border-color: #0044cc #0044cc #002a80;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n  color: #fff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.datepicker table tr td span.active:hover,\n.datepicker table tr td span.active:hover:hover,\n.datepicker table tr td span.active.disabled:hover,\n.datepicker table tr td span.active.disabled:hover:hover,\n.datepicker table tr td span.active:active,\n.datepicker table tr td span.active:hover:active,\n.datepicker table tr td span.active.disabled:active,\n.datepicker table tr td span.active.disabled:hover:active,\n.datepicker table tr td span.active.active,\n.datepicker table tr td span.active:hover.active,\n.datepicker table tr td span.active.disabled.active,\n.datepicker table tr td span.active.disabled:hover.active,\n.datepicker table tr td span.active.disabled,\n.datepicker table tr td span.active:hover.disabled,\n.datepicker table tr td span.active.disabled.disabled,\n.datepicker table tr td span.active.disabled:hover.disabled,\n.datepicker table tr td span.active[disabled],\n.datepicker table tr td span.active:hover[disabled],\n.datepicker table tr td span.active.disabled[disabled],\n.datepicker table tr td span.active.disabled:hover[disabled] {\n  background-color: #0044cc;\n}\n.datepicker table tr td span.active:active,\n.datepicker table tr td span.active:hover:active,\n.datepicker table tr td span.active.disabled:active,\n.datepicker table tr td span.active.disabled:hover:active,\n.datepicker table tr td span.active.active,\n.datepicker table tr td span.active:hover.active,\n.datepicker table tr td span.active.disabled.active,\n.datepicker table tr td span.active.disabled:hover.active {\n  background-color: #003399 \\9;\n}\n.datepicker table tr td span.old,\n.datepicker table tr td span.new {\n  color: #999999;\n}\n.datepicker th.datepicker-switch {\n  width: 145px;\n}\n.datepicker thead tr:first-child th,\n.datepicker tfoot tr th {\n  cursor: pointer;\n}\n.datepicker thead tr:first-child th:hover,\n.datepicker tfoot tr th:hover {\n  background: #eeeeee;\n}\n.datepicker .cw {\n  font-size: 10px;\n  width: 12px;\n  padding: 0 2px 0 5px;\n  vertical-align: middle;\n}\n.datepicker thead tr:first-child th.cw {\n  cursor: default;\n  background-color: transparent;\n}\n.input-append.date .add-on i,\n.input-prepend.date .add-on i {\n  display: block;\n  cursor: pointer;\n  width: 16px;\n  height: 16px;\n}\n.input-daterange input {\n  text-align: center;\n}\n.input-daterange input:first-child {\n  -webkit-border-radius: 3px 0 0 3px;\n  -moz-border-radius: 3px 0 0 3px;\n  border-radius: 3px 0 0 3px;\n}\n.input-daterange input:last-child {\n  -webkit-border-radius: 0 3px 3px 0;\n  -moz-border-radius: 0 3px 3px 0;\n  border-radius: 0 3px 3px 0;\n}\n.input-daterange .add-on {\n  display: inline-block;\n  width: auto;\n  min-width: 16px;\n  height: 18px;\n  padding: 4px 5px;\n  font-weight: normal;\n  line-height: 18px;\n  text-align: center;\n  text-shadow: 0 1px 0 #ffffff;\n  vertical-align: middle;\n  background-color: #eeeeee;\n  border: 1px solid #ccc;\n  margin-left: -5px;\n  margin-right: -5px;\n}"
  },
  {
    "path": "public/admin/css/data-table/bootstrap-table.css",
    "content": "/**\n * @author zhixin wen <wenzhixin2010@gmail.com>\n * version: 1.11.0\n * https://github.com/wenzhixin/bootstrap-table/\n */\n\n.bootstrap-table .table {\n    margin-bottom: 0 !important;\n    border-bottom: 1px solid #dddddd;\n    border-collapse: collapse !important;\n    border-radius: 1px;\n}\n\n.bootstrap-table .table:not(.table-condensed),\n.bootstrap-table .table:not(.table-condensed) > tbody > tr > th,\n.bootstrap-table .table:not(.table-condensed) > tfoot > tr > th,\n.bootstrap-table .table:not(.table-condensed) > thead > tr > td,\n.bootstrap-table .table:not(.table-condensed) > tbody > tr > td,\n.bootstrap-table .table:not(.table-condensed) > tfoot > tr > td {\n    padding: 8px;\n}\n\n.bootstrap-table .table.table-no-bordered > thead > tr > th,\n.bootstrap-table .table.table-no-bordered > tbody > tr > td {\n    border-right: 2px solid transparent;\n}\n\n.bootstrap-table .table.table-no-bordered > tbody > tr > td:last-child {\n    border-right: none;\n}\n\n.fixed-table-container {\n    position: relative;\n    clear: both;\n    border: 1px solid #dddddd;\n    border-radius: 4px;\n    -webkit-border-radius: 4px;\n    -moz-border-radius: 4px;\n}\n\n.fixed-table-container.table-no-bordered {\n    border: 1px solid transparent;\n}\n\n.fixed-table-footer,\n.fixed-table-header {\n    overflow: hidden;\n}\n\n.fixed-table-footer {\n    border-top: 1px solid #dddddd;\n}\n\n.fixed-table-body {\n    overflow-x: auto;\n    overflow-y: auto;\n    height: 100%;\n}\n\n.fixed-table-container table {\n    width: 100%;\n}\n\n.fixed-table-container thead th {\n    height: 0;\n    padding: 0;\n    margin: 0;\n    border-left: 1px solid #dddddd;\n}\n\n.fixed-table-container thead th:focus {\n    outline: 0 solid transparent;\n}\n\n.fixed-table-container thead th:first-child {\n    border-left: none;\n    border-top-left-radius: 4px;\n    -webkit-border-top-left-radius: 4px;\n    -moz-border-radius-topleft: 4px;\n}\n\n.fixed-table-container thead th .th-inner,\n.fixed-table-container tbody td .th-inner {\n    padding: 8px;\n    line-height: 24px;\n    vertical-align: top;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n}\n\n.fixed-table-container thead th .sortable {\n    cursor: pointer;\n    background-position: right;\n    background-repeat: no-repeat;\n    padding-right: 30px;\n}\n\n.fixed-table-container thead th .both {\n    background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAQAAADYWf5HAAAAkElEQVQoz7X QMQ5AQBCF4dWQSJxC5wwax1Cq1e7BAdxD5SL+Tq/QCM1oNiJidwox0355mXnG/DrEtIQ6azioNZQxI0ykPhTQIwhCR+BmBYtlK7kLJYwWCcJA9M4qdrZrd8pPjZWPtOqdRQy320YSV17OatFC4euts6z39GYMKRPCTKY9UnPQ6P+GtMRfGtPnBCiqhAeJPmkqAAAAAElFTkSuQmCC');\n}\n\n.fixed-table-container thead th .asc {\n    background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZ0lEQVQ4y2NgGLKgquEuFxBPAGI2ahhWCsS/gDibUoO0gPgxEP8H4ttArEyuQYxAPBdqEAxPBImTY5gjEL9DM+wTENuQahAvEO9DMwiGdwAxOymGJQLxTyD+jgWDxCMZRsEoGAVoAADeemwtPcZI2wAAAABJRU5ErkJggg==');\n}\n\n.fixed-table-container thead th .desc {\n    background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZUlEQVQ4y2NgGAWjYBSggaqGu5FA/BOIv2PBIPFEUgxjB+IdQPwfC94HxLykus4GiD+hGfQOiB3J8SojEE9EM2wuSJzcsFMG4ttQgx4DsRalkZENxL+AuJQaMcsGxBOAmGvopk8AVz1sLZgg0bsAAAAASUVORK5CYII= ');\n}\n\n.fixed-table-container th.detail {\n    width: 30px;\n}\n\n.fixed-table-container tbody td {\n    border-left: 1px solid #dddddd;\n}\n\n.fixed-table-container tbody tr:first-child td {\n    border-top: none;\n}\n\n.fixed-table-container tbody td:first-child {\n    border-left: none;\n}\n\n/* the same color with .active */\n.fixed-table-container tbody .selected td {\n    background-color: #f5f5f5;\n}\n\n.fixed-table-container .bs-checkbox {\n    text-align: center;\n}\n\n.fixed-table-container .bs-checkbox .th-inner {\n    padding: 8px 0;\n}\n\n.fixed-table-container input[type=\"radio\"],\n.fixed-table-container input[type=\"checkbox\"] {\n    margin: 0 auto !important;\n}\n\n.fixed-table-container .no-records-found {\n    text-align: center;\n}\n\n.fixed-table-pagination div.pagination,\n.fixed-table-pagination .pagination-detail {\n    margin-top: 10px;\n    margin-bottom: 10px;\n}\n\n.fixed-table-pagination div.pagination .pagination {\n    margin: 0;\n}\n\n.fixed-table-pagination .pagination a {\n    padding: 6px 12px;\n    line-height: 1.428571429;\n}\n\n.fixed-table-pagination .pagination-info {\n    line-height: 34px;\n    margin-right: 5px;\n}\n\n.fixed-table-pagination .btn-group {\n    position: relative;\n    display: inline-block;\n    vertical-align: middle;\n}\n\n.fixed-table-pagination .dropup .dropdown-menu {\n    margin-bottom: 0;\n}\n\n.fixed-table-pagination .page-list {\n    display: inline-block;\n}\n\n.fixed-table-toolbar .columns-left {\n    margin-right: 5px;\n}\n\n.fixed-table-toolbar .columns-right {\n    margin-left: 5px;\n}\n\n.fixed-table-toolbar .columns label {\n    display: block;\n    padding: 3px 20px;\n    clear: both;\n    font-weight: normal;\n    line-height: 1.428571429;\n}\n\n.fixed-table-toolbar .bs-bars,\n.fixed-table-toolbar .search,\n.fixed-table-toolbar .columns {\n    position: relative;\n    margin-top: 10px;\n    margin-bottom: 10px;\n    line-height: 34px;\n}\n\n.fixed-table-pagination li.disabled a {\n    pointer-events: none;\n    cursor: default;\n}\n\n.fixed-table-loading {\n    display: none;\n    position: absolute;\n    top: 42px;\n    right: 0;\n    bottom: 0;\n    left: 0;\n    z-index: 99;\n    background-color: #fff;\n    text-align: center;\n}\n\n.fixed-table-body .card-view .title {\n    font-weight: bold;\n    display: inline-block;\n    min-width: 30%;\n    text-align: left !important;\n}\n\n/* support bootstrap 2 */\n.fixed-table-body thead th .th-inner {\n    box-sizing: border-box;\n}\n\n.table th, .table td {\n    vertical-align: middle;\n    box-sizing: border-box;\n}\n\n.fixed-table-toolbar .dropdown-menu {\n    text-align: left;\n    max-height: 300px;\n    overflow: auto;\n}\n\n.fixed-table-toolbar .btn-group > .btn-group {\n    display: inline-block;\n    margin-left: -1px !important;\n}\n\n.fixed-table-toolbar .btn-group > .btn-group > .btn {\n    border-radius: 0;\n}\n\n.fixed-table-toolbar .btn-group > .btn-group:first-child > .btn {\n    border-top-left-radius: 4px;\n    border-bottom-left-radius: 4px;\n}\n\n.fixed-table-toolbar .btn-group > .btn-group:last-child > .btn {\n    border-top-right-radius: 4px;\n    border-bottom-right-radius: 4px;\n}\n\n.bootstrap-table .table > thead > tr > th {\n    vertical-align: bottom;\n    border-bottom: 1px solid #ddd;\n}\n\n/* support bootstrap 3 */\n.bootstrap-table .table thead > tr > th {\n    padding: 0;\n    margin: 0;\n}\n\n.bootstrap-table .fixed-table-footer tbody > tr > td {\n    padding: 0 !important;\n}\n\n.bootstrap-table .fixed-table-footer .table {\n    border-bottom: none;\n    border-radius: 0;\n    padding: 0 !important;\n}\n\n.bootstrap-table .pull-right .dropdown-menu {\n    right: 0;\n    left: auto;\n}\n\n/* calculate scrollbar width */\np.fixed-table-scroll-inner {\n    width: 100%;\n    height: 200px;\n}\n\ndiv.fixed-table-scroll-outer {\n    top: 0;\n    left: 0;\n    visibility: hidden;\n    width: 200px;\n    height: 150px;\n    overflow: hidden;\n}\n\n/* for get correct heights  */\n.fixed-table-toolbar:after, .fixed-table-pagination:after {\n    content: \"\";\n    display: block;\n    clear: both;\n}"
  },
  {
    "path": "public/admin/css/datapicker/datepicker3.css",
    "content": "/*!\n * Datepicker for Bootstrap\n *\n * Copyright 2012 Stefan Petre\n * Improvements by Andrew Rowls\n * Licensed under the Apache License v2.0\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n */\n.datepicker {\n  padding: 4px;\n  border-radius: 4px;\n  direction: ltr;\n  /*.dow {\n\t\tborder-top: 1px solid #ddd !important;\n\t}*/\n}\n.datepicker-inline {\n  width: 220px;\n}\n.datepicker.datepicker-rtl {\n  direction: rtl;\n}\n.datepicker.datepicker-rtl table tr td span {\n  float: right;\n}\n.datepicker-dropdown {\n  top: 0;\n  left: 0;\n}\n.datepicker-dropdown:before {\n  content: '';\n  display: inline-block;\n  border-left: 7px solid transparent;\n  border-right: 7px solid transparent;\n  border-bottom: 7px solid #ccc;\n  border-top: 0;\n  border-bottom-color: rgba(0, 0, 0, 0.2);\n  position: absolute;\n}\n.datepicker-dropdown:after {\n  content: '';\n  display: inline-block;\n  border-left: 6px solid transparent;\n  border-right: 6px solid transparent;\n  border-bottom: 6px solid #fff;\n  border-top: 0;\n  position: absolute;\n}\n.datepicker-dropdown.datepicker-orient-left:before {\n  left: 6px;\n}\n.datepicker-dropdown.datepicker-orient-left:after {\n  left: 7px;\n}\n.datepicker-dropdown.datepicker-orient-right:before {\n  right: 6px;\n}\n.datepicker-dropdown.datepicker-orient-right:after {\n  right: 7px;\n}\n.datepicker-dropdown.datepicker-orient-top:before {\n  top: -7px;\n}\n.datepicker-dropdown.datepicker-orient-top:after {\n  top: -6px;\n}\n.datepicker-dropdown.datepicker-orient-bottom:before {\n  bottom: -7px;\n  border-bottom: 0;\n  border-top: 7px solid #999;\n}\n.datepicker-dropdown.datepicker-orient-bottom:after {\n  bottom: -6px;\n  border-bottom: 0;\n  border-top: 6px solid #fff;\n}\n.datepicker > div {\n  display: none;\n}\n.datepicker.days div.datepicker-days {\n  display: block;\n}\n.datepicker.months div.datepicker-months {\n  display: block;\n}\n.datepicker.years div.datepicker-years {\n  display: block;\n}\n.datepicker table {\n  margin: 0;\n  -webkit-touch-callout: none;\n  -webkit-user-select: none;\n  -khtml-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  user-select: none;\n}\n.datepicker table tr td,\n.datepicker table tr th {\n  text-align: center;\n  width: 30px;\n  height: 30px;\n  border-radius: 4px;\n  border: none;\n}\n.table-striped .datepicker table tr td,\n.table-striped .datepicker table tr th {\n  background-color: transparent;\n}\n.datepicker table tr td.day:hover,\n.datepicker table tr td.day.focused {\n  background: #eeeeee;\n  cursor: pointer;\n}\n.datepicker table tr td.old,\n.datepicker table tr td.new {\n  color: #999999;\n}\n.datepicker table tr td.disabled,\n.datepicker table tr td.disabled:hover {\n  background: none;\n  color: #999999;\n  cursor: default;\n}\n.datepicker table tr td.today,\n.datepicker table tr td.today:hover,\n.datepicker table tr td.today.disabled,\n.datepicker table tr td.today.disabled:hover {\n  color: #000000;\n  background-color: #ffdb99;\n  border-color: #ffb733;\n}\n.datepicker table tr td.today:hover,\n.datepicker table tr td.today:hover:hover,\n.datepicker table tr td.today.disabled:hover,\n.datepicker table tr td.today.disabled:hover:hover,\n.datepicker table tr td.today:focus,\n.datepicker table tr td.today:hover:focus,\n.datepicker table tr td.today.disabled:focus,\n.datepicker table tr td.today.disabled:hover:focus,\n.datepicker table tr td.today:active,\n.datepicker table tr td.today:hover:active,\n.datepicker table tr td.today.disabled:active,\n.datepicker table tr td.today.disabled:hover:active,\n.datepicker table tr td.today.active,\n.datepicker table tr td.today:hover.active,\n.datepicker table tr td.today.disabled.active,\n.datepicker table tr td.today.disabled:hover.active,\n.open .dropdown-toggle.datepicker table tr td.today,\n.open .dropdown-toggle.datepicker table tr td.today:hover,\n.open .dropdown-toggle.datepicker table tr td.today.disabled,\n.open .dropdown-toggle.datepicker table tr td.today.disabled:hover {\n  color: #000000;\n  background-color: #ffcd70;\n  border-color: #f59e00;\n}\n.datepicker table tr td.today:active,\n.datepicker table tr td.today:hover:active,\n.datepicker table tr td.today.disabled:active,\n.datepicker table tr td.today.disabled:hover:active,\n.datepicker table tr td.today.active,\n.datepicker table tr td.today:hover.active,\n.datepicker table tr td.today.disabled.active,\n.datepicker table tr td.today.disabled:hover.active,\n.open .dropdown-toggle.datepicker table tr td.today,\n.open .dropdown-toggle.datepicker table tr td.today:hover,\n.open .dropdown-toggle.datepicker table tr td.today.disabled,\n.open .dropdown-toggle.datepicker table tr td.today.disabled:hover {\n  background-image: none;\n}\n.datepicker table tr td.today.disabled,\n.datepicker table tr td.today:hover.disabled,\n.datepicker table tr td.today.disabled.disabled,\n.datepicker table tr td.today.disabled:hover.disabled,\n.datepicker table tr td.today[disabled],\n.datepicker table tr td.today:hover[disabled],\n.datepicker table tr td.today.disabled[disabled],\n.datepicker table tr td.today.disabled:hover[disabled],\nfieldset[disabled] .datepicker table tr td.today,\nfieldset[disabled] .datepicker table tr td.today:hover,\nfieldset[disabled] .datepicker table tr td.today.disabled,\nfieldset[disabled] .datepicker table tr td.today.disabled:hover,\n.datepicker table tr td.today.disabled:hover,\n.datepicker table tr td.today:hover.disabled:hover,\n.datepicker table tr td.today.disabled.disabled:hover,\n.datepicker table tr td.today.disabled:hover.disabled:hover,\n.datepicker table tr td.today[disabled]:hover,\n.datepicker table tr td.today:hover[disabled]:hover,\n.datepicker table tr td.today.disabled[disabled]:hover,\n.datepicker table tr td.today.disabled:hover[disabled]:hover,\nfieldset[disabled] .datepicker table tr td.today:hover,\nfieldset[disabled] .datepicker table tr td.today:hover:hover,\nfieldset[disabled] .datepicker table tr td.today.disabled:hover,\nfieldset[disabled] .datepicker table tr td.today.disabled:hover:hover,\n.datepicker table tr td.today.disabled:focus,\n.datepicker table tr td.today:hover.disabled:focus,\n.datepicker table tr td.today.disabled.disabled:focus,\n.datepicker table tr td.today.disabled:hover.disabled:focus,\n.datepicker table tr td.today[disabled]:focus,\n.datepicker table tr td.today:hover[disabled]:focus,\n.datepicker table tr td.today.disabled[disabled]:focus,\n.datepicker table tr td.today.disabled:hover[disabled]:focus,\nfieldset[disabled] .datepicker table tr td.today:focus,\nfieldset[disabled] .datepicker table tr td.today:hover:focus,\nfieldset[disabled] .datepicker table tr td.today.disabled:focus,\nfieldset[disabled] .datepicker table tr td.today.disabled:hover:focus,\n.datepicker table tr td.today.disabled:active,\n.datepicker table tr td.today:hover.disabled:active,\n.datepicker table tr td.today.disabled.disabled:active,\n.datepicker table tr td.today.disabled:hover.disabled:active,\n.datepicker table tr td.today[disabled]:active,\n.datepicker table tr td.today:hover[disabled]:active,\n.datepicker table tr td.today.disabled[disabled]:active,\n.datepicker table tr td.today.disabled:hover[disabled]:active,\nfieldset[disabled] .datepicker table tr td.today:active,\nfieldset[disabled] .datepicker table tr td.today:hover:active,\nfieldset[disabled] .datepicker table tr td.today.disabled:active,\nfieldset[disabled] .datepicker table tr td.today.disabled:hover:active,\n.datepicker table tr td.today.disabled.active,\n.datepicker table tr td.today:hover.disabled.active,\n.datepicker table tr td.today.disabled.disabled.active,\n.datepicker table tr td.today.disabled:hover.disabled.active,\n.datepicker table tr td.today[disabled].active,\n.datepicker table tr td.today:hover[disabled].active,\n.datepicker table tr td.today.disabled[disabled].active,\n.datepicker table tr td.today.disabled:hover[disabled].active,\nfieldset[disabled] .datepicker table tr td.today.active,\nfieldset[disabled] .datepicker table tr td.today:hover.active,\nfieldset[disabled] .datepicker table tr td.today.disabled.active,\nfieldset[disabled] .datepicker table tr td.today.disabled:hover.active {\n  background-color: #ffdb99;\n  border-color: #ffb733;\n}\n.datepicker table tr td.today:hover:hover {\n  color: #000;\n}\n.datepicker table tr td.today.active:hover {\n  color: #fff;\n}\n.datepicker table tr td.range,\n.datepicker table tr td.range:hover,\n.datepicker table tr td.range.disabled,\n.datepicker table tr td.range.disabled:hover {\n  background: #eeeeee;\n  border-radius: 0;\n}\n.datepicker table tr td.range.today,\n.datepicker table tr td.range.today:hover,\n.datepicker table tr td.range.today.disabled,\n.datepicker table tr td.range.today.disabled:hover {\n  color: #000000;\n  background-color: #f7ca77;\n  border-color: #f1a417;\n  border-radius: 0;\n}\n.datepicker table tr td.range.today:hover,\n.datepicker table tr td.range.today:hover:hover,\n.datepicker table tr td.range.today.disabled:hover,\n.datepicker table tr td.range.today.disabled:hover:hover,\n.datepicker table tr td.range.today:focus,\n.datepicker table tr td.range.today:hover:focus,\n.datepicker table tr td.range.today.disabled:focus,\n.datepicker table tr td.range.today.disabled:hover:focus,\n.datepicker table tr td.range.today:active,\n.datepicker table tr td.range.today:hover:active,\n.datepicker table tr td.range.today.disabled:active,\n.datepicker table tr td.range.today.disabled:hover:active,\n.datepicker table tr td.range.today.active,\n.datepicker table tr td.range.today:hover.active,\n.datepicker table tr td.range.today.disabled.active,\n.datepicker table tr td.range.today.disabled:hover.active,\n.open .dropdown-toggle.datepicker table tr td.range.today,\n.open .dropdown-toggle.datepicker table tr td.range.today:hover,\n.open .dropdown-toggle.datepicker table tr td.range.today.disabled,\n.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover {\n  color: #000000;\n  background-color: #f4bb51;\n  border-color: #bf800c;\n}\n.datepicker table tr td.range.today:active,\n.datepicker table tr td.range.today:hover:active,\n.datepicker table tr td.range.today.disabled:active,\n.datepicker table tr td.range.today.disabled:hover:active,\n.datepicker table tr td.range.today.active,\n.datepicker table tr td.range.today:hover.active,\n.datepicker table tr td.range.today.disabled.active,\n.datepicker table tr td.range.today.disabled:hover.active,\n.open .dropdown-toggle.datepicker table tr td.range.today,\n.open .dropdown-toggle.datepicker table tr td.range.today:hover,\n.open .dropdown-toggle.datepicker table tr td.range.today.disabled,\n.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover {\n  background-image: none;\n}\n.datepicker table tr td.range.today.disabled,\n.datepicker table tr td.range.today:hover.disabled,\n.datepicker table tr td.range.today.disabled.disabled,\n.datepicker table tr td.range.today.disabled:hover.disabled,\n.datepicker table tr td.range.today[disabled],\n.datepicker table tr td.range.today:hover[disabled],\n.datepicker table tr td.range.today.disabled[disabled],\n.datepicker table tr td.range.today.disabled:hover[disabled],\nfieldset[disabled] .datepicker table tr td.range.today,\nfieldset[disabled] .datepicker table tr td.range.today:hover,\nfieldset[disabled] .datepicker table tr td.range.today.disabled,\nfieldset[disabled] .datepicker table tr td.range.today.disabled:hover,\n.datepicker table tr td.range.today.disabled:hover,\n.datepicker table tr td.range.today:hover.disabled:hover,\n.datepicker table tr td.range.today.disabled.disabled:hover,\n.datepicker table tr td.range.today.disabled:hover.disabled:hover,\n.datepicker table tr td.range.today[disabled]:hover,\n.datepicker table tr td.range.today:hover[disabled]:hover,\n.datepicker table tr td.range.today.disabled[disabled]:hover,\n.datepicker table tr td.range.today.disabled:hover[disabled]:hover,\nfieldset[disabled] .datepicker table tr td.range.today:hover,\nfieldset[disabled] .datepicker table tr td.range.today:hover:hover,\nfieldset[disabled] .datepicker table tr td.range.today.disabled:hover,\nfieldset[disabled] .datepicker table tr td.range.today.disabled:hover:hover,\n.datepicker table tr td.range.today.disabled:focus,\n.datepicker table tr td.range.today:hover.disabled:focus,\n.datepicker table tr td.range.today.disabled.disabled:focus,\n.datepicker table tr td.range.today.disabled:hover.disabled:focus,\n.datepicker table tr td.range.today[disabled]:focus,\n.datepicker table tr td.range.today:hover[disabled]:focus,\n.datepicker table tr td.range.today.disabled[disabled]:focus,\n.datepicker table tr td.range.today.disabled:hover[disabled]:focus,\nfieldset[disabled] .datepicker table tr td.range.today:focus,\nfieldset[disabled] .datepicker table tr td.range.today:hover:focus,\nfieldset[disabled] .datepicker table tr td.range.today.disabled:focus,\nfieldset[disabled] .datepicker table tr td.range.today.disabled:hover:focus,\n.datepicker table tr td.range.today.disabled:active,\n.datepicker table tr td.range.today:hover.disabled:active,\n.datepicker table tr td.range.today.disabled.disabled:active,\n.datepicker table tr td.range.today.disabled:hover.disabled:active,\n.datepicker table tr td.range.today[disabled]:active,\n.datepicker table tr td.range.today:hover[disabled]:active,\n.datepicker table tr td.range.today.disabled[disabled]:active,\n.datepicker table tr td.range.today.disabled:hover[disabled]:active,\nfieldset[disabled] .datepicker table tr td.range.today:active,\nfieldset[disabled] .datepicker table tr td.range.today:hover:active,\nfieldset[disabled] .datepicker table tr td.range.today.disabled:active,\nfieldset[disabled] .datepicker table tr td.range.today.disabled:hover:active,\n.datepicker table tr td.range.today.disabled.active,\n.datepicker table tr td.range.today:hover.disabled.active,\n.datepicker table tr td.range.today.disabled.disabled.active,\n.datepicker table tr td.range.today.disabled:hover.disabled.active,\n.datepicker table tr td.range.today[disabled].active,\n.datepicker table tr td.range.today:hover[disabled].active,\n.datepicker table tr td.range.today.disabled[disabled].active,\n.datepicker table tr td.range.today.disabled:hover[disabled].active,\nfieldset[disabled] .datepicker table tr td.range.today.active,\nfieldset[disabled] .datepicker table tr td.range.today:hover.active,\nfieldset[disabled] .datepicker table tr td.range.today.disabled.active,\nfieldset[disabled] .datepicker table tr td.range.today.disabled:hover.active {\n  background-color: #f7ca77;\n  border-color: #f1a417;\n}\n.datepicker table tr td.selected,\n.datepicker table tr td.selected:hover,\n.datepicker table tr td.selected.disabled,\n.datepicker table tr td.selected.disabled:hover {\n  color: #ffffff;\n  background-color: #999999;\n  border-color: #555555;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.datepicker table tr td.selected:hover,\n.datepicker table tr td.selected:hover:hover,\n.datepicker table tr td.selected.disabled:hover,\n.datepicker table tr td.selected.disabled:hover:hover,\n.datepicker table tr td.selected:focus,\n.datepicker table tr td.selected:hover:focus,\n.datepicker table tr td.selected.disabled:focus,\n.datepicker table tr td.selected.disabled:hover:focus,\n.datepicker table tr td.selected:active,\n.datepicker table tr td.selected:hover:active,\n.datepicker table tr td.selected.disabled:active,\n.datepicker table tr td.selected.disabled:hover:active,\n.datepicker table tr td.selected.active,\n.datepicker table tr td.selected:hover.active,\n.datepicker table tr td.selected.disabled.active,\n.datepicker table tr td.selected.disabled:hover.active,\n.open .dropdown-toggle.datepicker table tr td.selected,\n.open .dropdown-toggle.datepicker table tr td.selected:hover,\n.open .dropdown-toggle.datepicker table tr td.selected.disabled,\n.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover {\n  color: #ffffff;\n  background-color: #858585;\n  border-color: #373737;\n}\n.datepicker table tr td.selected:active,\n.datepicker table tr td.selected:hover:active,\n.datepicker table tr td.selected.disabled:active,\n.datepicker table tr td.selected.disabled:hover:active,\n.datepicker table tr td.selected.active,\n.datepicker table tr td.selected:hover.active,\n.datepicker table tr td.selected.disabled.active,\n.datepicker table tr td.selected.disabled:hover.active,\n.open .dropdown-toggle.datepicker table tr td.selected,\n.open .dropdown-toggle.datepicker table tr td.selected:hover,\n.open .dropdown-toggle.datepicker table tr td.selected.disabled,\n.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover {\n  background-image: none;\n}\n.datepicker table tr td.selected.disabled,\n.datepicker table tr td.selected:hover.disabled,\n.datepicker table tr td.selected.disabled.disabled,\n.datepicker table tr td.selected.disabled:hover.disabled,\n.datepicker table tr td.selected[disabled],\n.datepicker table tr td.selected:hover[disabled],\n.datepicker table tr td.selected.disabled[disabled],\n.datepicker table tr td.selected.disabled:hover[disabled],\nfieldset[disabled] .datepicker table tr td.selected,\nfieldset[disabled] .datepicker table tr td.selected:hover,\nfieldset[disabled] .datepicker table tr td.selected.disabled,\nfieldset[disabled] .datepicker table tr td.selected.disabled:hover,\n.datepicker table tr td.selected.disabled:hover,\n.datepicker table tr td.selected:hover.disabled:hover,\n.datepicker table tr td.selected.disabled.disabled:hover,\n.datepicker table tr td.selected.disabled:hover.disabled:hover,\n.datepicker table tr td.selected[disabled]:hover,\n.datepicker table tr td.selected:hover[disabled]:hover,\n.datepicker table tr td.selected.disabled[disabled]:hover,\n.datepicker table tr td.selected.disabled:hover[disabled]:hover,\nfieldset[disabled] .datepicker table tr td.selected:hover,\nfieldset[disabled] .datepicker table tr td.selected:hover:hover,\nfieldset[disabled] .datepicker table tr td.selected.disabled:hover,\nfieldset[disabled] .datepicker table tr td.selected.disabled:hover:hover,\n.datepicker table tr td.selected.disabled:focus,\n.datepicker table tr td.selected:hover.disabled:focus,\n.datepicker table tr td.selected.disabled.disabled:focus,\n.datepicker table tr td.selected.disabled:hover.disabled:focus,\n.datepicker table tr td.selected[disabled]:focus,\n.datepicker table tr td.selected:hover[disabled]:focus,\n.datepicker table tr td.selected.disabled[disabled]:focus,\n.datepicker table tr td.selected.disabled:hover[disabled]:focus,\nfieldset[disabled] .datepicker table tr td.selected:focus,\nfieldset[disabled] .datepicker table tr td.selected:hover:focus,\nfieldset[disabled] .datepicker table tr td.selected.disabled:focus,\nfieldset[disabled] .datepicker table tr td.selected.disabled:hover:focus,\n.datepicker table tr td.selected.disabled:active,\n.datepicker table tr td.selected:hover.disabled:active,\n.datepicker table tr td.selected.disabled.disabled:active,\n.datepicker table tr td.selected.disabled:hover.disabled:active,\n.datepicker table tr td.selected[disabled]:active,\n.datepicker table tr td.selected:hover[disabled]:active,\n.datepicker table tr td.selected.disabled[disabled]:active,\n.datepicker table tr td.selected.disabled:hover[disabled]:active,\nfieldset[disabled] .datepicker table tr td.selected:active,\nfieldset[disabled] .datepicker table tr td.selected:hover:active,\nfieldset[disabled] .datepicker table tr td.selected.disabled:active,\nfieldset[disabled] .datepicker table tr td.selected.disabled:hover:active,\n.datepicker table tr td.selected.disabled.active,\n.datepicker table tr td.selected:hover.disabled.active,\n.datepicker table tr td.selected.disabled.disabled.active,\n.datepicker table tr td.selected.disabled:hover.disabled.active,\n.datepicker table tr td.selected[disabled].active,\n.datepicker table tr td.selected:hover[disabled].active,\n.datepicker table tr td.selected.disabled[disabled].active,\n.datepicker table tr td.selected.disabled:hover[disabled].active,\nfieldset[disabled] .datepicker table tr td.selected.active,\nfieldset[disabled] .datepicker table tr td.selected:hover.active,\nfieldset[disabled] .datepicker table tr td.selected.disabled.active,\nfieldset[disabled] .datepicker table tr td.selected.disabled:hover.active {\n  background-color: #999999;\n  border-color: #555555;\n}\n.datepicker table tr td.active,\n.datepicker table tr td.active:hover,\n.datepicker table tr td.active.disabled,\n.datepicker table tr td.active.disabled:hover {\n  color: #ffffff;\n  background-color: #428bca;\n  border-color: #357ebd;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.datepicker table tr td.active:hover,\n.datepicker table tr td.active:hover:hover,\n.datepicker table tr td.active.disabled:hover,\n.datepicker table tr td.active.disabled:hover:hover,\n.datepicker table tr td.active:focus,\n.datepicker table tr td.active:hover:focus,\n.datepicker table tr td.active.disabled:focus,\n.datepicker table tr td.active.disabled:hover:focus,\n.datepicker table tr td.active:active,\n.datepicker table tr td.active:hover:active,\n.datepicker table tr td.active.disabled:active,\n.datepicker table tr td.active.disabled:hover:active,\n.datepicker table tr td.active.active,\n.datepicker table tr td.active:hover.active,\n.datepicker table tr td.active.disabled.active,\n.datepicker table tr td.active.disabled:hover.active,\n.open .dropdown-toggle.datepicker table tr td.active,\n.open .dropdown-toggle.datepicker table tr td.active:hover,\n.open .dropdown-toggle.datepicker table tr td.active.disabled,\n.open .dropdown-toggle.datepicker table tr td.active.disabled:hover {\n  color: #ffffff;\n  background-color: #3276b1;\n  border-color: #285e8e;\n}\n.datepicker table tr td.active:active,\n.datepicker table tr td.active:hover:active,\n.datepicker table tr td.active.disabled:active,\n.datepicker table tr td.active.disabled:hover:active,\n.datepicker table tr td.active.active,\n.datepicker table tr td.active:hover.active,\n.datepicker table tr td.active.disabled.active,\n.datepicker table tr td.active.disabled:hover.active,\n.open .dropdown-toggle.datepicker table tr td.active,\n.open .dropdown-toggle.datepicker table tr td.active:hover,\n.open .dropdown-toggle.datepicker table tr td.active.disabled,\n.open .dropdown-toggle.datepicker table tr td.active.disabled:hover {\n  background-image: none;\n}\n.datepicker table tr td.active.disabled,\n.datepicker table tr td.active:hover.disabled,\n.datepicker table tr td.active.disabled.disabled,\n.datepicker table tr td.active.disabled:hover.disabled,\n.datepicker table tr td.active[disabled],\n.datepicker table tr td.active:hover[disabled],\n.datepicker table tr td.active.disabled[disabled],\n.datepicker table tr td.active.disabled:hover[disabled],\nfieldset[disabled] .datepicker table tr td.active,\nfieldset[disabled] .datepicker table tr td.active:hover,\nfieldset[disabled] .datepicker table tr td.active.disabled,\nfieldset[disabled] .datepicker table tr td.active.disabled:hover,\n.datepicker table tr td.active.disabled:hover,\n.datepicker table tr td.active:hover.disabled:hover,\n.datepicker table tr td.active.disabled.disabled:hover,\n.datepicker table tr td.active.disabled:hover.disabled:hover,\n.datepicker table tr td.active[disabled]:hover,\n.datepicker table tr td.active:hover[disabled]:hover,\n.datepicker table tr td.active.disabled[disabled]:hover,\n.datepicker table tr td.active.disabled:hover[disabled]:hover,\nfieldset[disabled] .datepicker table tr td.active:hover,\nfieldset[disabled] .datepicker table tr td.active:hover:hover,\nfieldset[disabled] .datepicker table tr td.active.disabled:hover,\nfieldset[disabled] .datepicker table tr td.active.disabled:hover:hover,\n.datepicker table tr td.active.disabled:focus,\n.datepicker table tr td.active:hover.disabled:focus,\n.datepicker table tr td.active.disabled.disabled:focus,\n.datepicker table tr td.active.disabled:hover.disabled:focus,\n.datepicker table tr td.active[disabled]:focus,\n.datepicker table tr td.active:hover[disabled]:focus,\n.datepicker table tr td.active.disabled[disabled]:focus,\n.datepicker table tr td.active.disabled:hover[disabled]:focus,\nfieldset[disabled] .datepicker table tr td.active:focus,\nfieldset[disabled] .datepicker table tr td.active:hover:focus,\nfieldset[disabled] .datepicker table tr td.active.disabled:focus,\nfieldset[disabled] .datepicker table tr td.active.disabled:hover:focus,\n.datepicker table tr td.active.disabled:active,\n.datepicker table tr td.active:hover.disabled:active,\n.datepicker table tr td.active.disabled.disabled:active,\n.datepicker table tr td.active.disabled:hover.disabled:active,\n.datepicker table tr td.active[disabled]:active,\n.datepicker table tr td.active:hover[disabled]:active,\n.datepicker table tr td.active.disabled[disabled]:active,\n.datepicker table tr td.active.disabled:hover[disabled]:active,\nfieldset[disabled] .datepicker table tr td.active:active,\nfieldset[disabled] .datepicker table tr td.active:hover:active,\nfieldset[disabled] .datepicker table tr td.active.disabled:active,\nfieldset[disabled] .datepicker table tr td.active.disabled:hover:active,\n.datepicker table tr td.active.disabled.active,\n.datepicker table tr td.active:hover.disabled.active,\n.datepicker table tr td.active.disabled.disabled.active,\n.datepicker table tr td.active.disabled:hover.disabled.active,\n.datepicker table tr td.active[disabled].active,\n.datepicker table tr td.active:hover[disabled].active,\n.datepicker table tr td.active.disabled[disabled].active,\n.datepicker table tr td.active.disabled:hover[disabled].active,\nfieldset[disabled] .datepicker table tr td.active.active,\nfieldset[disabled] .datepicker table tr td.active:hover.active,\nfieldset[disabled] .datepicker table tr td.active.disabled.active,\nfieldset[disabled] .datepicker table tr td.active.disabled:hover.active {\n  background-color: #428bca;\n  border-color: #357ebd;\n}\n.datepicker table tr td span {\n  display: block;\n  width: 23%;\n  height: 54px;\n  line-height: 54px;\n  float: left;\n  margin: 1%;\n  cursor: pointer;\n  border-radius: 4px;\n}\n.datepicker table tr td span:hover {\n  background: #eeeeee;\n}\n.datepicker table tr td span.disabled,\n.datepicker table tr td span.disabled:hover {\n  background: none;\n  color: #999999;\n  cursor: default;\n}\n.datepicker table tr td span.active,\n.datepicker table tr td span.active:hover,\n.datepicker table tr td span.active.disabled,\n.datepicker table tr td span.active.disabled:hover {\n  color: #ffffff;\n  background-color: #428bca;\n  border-color: #357ebd;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.datepicker table tr td span.active:hover,\n.datepicker table tr td span.active:hover:hover,\n.datepicker table tr td span.active.disabled:hover,\n.datepicker table tr td span.active.disabled:hover:hover,\n.datepicker table tr td span.active:focus,\n.datepicker table tr td span.active:hover:focus,\n.datepicker table tr td span.active.disabled:focus,\n.datepicker table tr td span.active.disabled:hover:focus,\n.datepicker table tr td span.active:active,\n.datepicker table tr td span.active:hover:active,\n.datepicker table tr td span.active.disabled:active,\n.datepicker table tr td span.active.disabled:hover:active,\n.datepicker table tr td span.active.active,\n.datepicker table tr td span.active:hover.active,\n.datepicker table tr td span.active.disabled.active,\n.datepicker table tr td span.active.disabled:hover.active,\n.open .dropdown-toggle.datepicker table tr td span.active,\n.open .dropdown-toggle.datepicker table tr td span.active:hover,\n.open .dropdown-toggle.datepicker table tr td span.active.disabled,\n.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover {\n  color: #ffffff;\n  background-color: #3276b1;\n  border-color: #285e8e;\n}\n.datepicker table tr td span.active:active,\n.datepicker table tr td span.active:hover:active,\n.datepicker table tr td span.active.disabled:active,\n.datepicker table tr td span.active.disabled:hover:active,\n.datepicker table tr td span.active.active,\n.datepicker table tr td span.active:hover.active,\n.datepicker table tr td span.active.disabled.active,\n.datepicker table tr td span.active.disabled:hover.active,\n.open .dropdown-toggle.datepicker table tr td span.active,\n.open .dropdown-toggle.datepicker table tr td span.active:hover,\n.open .dropdown-toggle.datepicker table tr td span.active.disabled,\n.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover {\n  background-image: none;\n}\n.datepicker table tr td span.active.disabled,\n.datepicker table tr td span.active:hover.disabled,\n.datepicker table tr td span.active.disabled.disabled,\n.datepicker table tr td span.active.disabled:hover.disabled,\n.datepicker table tr td span.active[disabled],\n.datepicker table tr td span.active:hover[disabled],\n.datepicker table tr td span.active.disabled[disabled],\n.datepicker table tr td span.active.disabled:hover[disabled],\nfieldset[disabled] .datepicker table tr td span.active,\nfieldset[disabled] .datepicker table tr td span.active:hover,\nfieldset[disabled] .datepicker table tr td span.active.disabled,\nfieldset[disabled] .datepicker table tr td span.active.disabled:hover,\n.datepicker table tr td span.active.disabled:hover,\n.datepicker table tr td span.active:hover.disabled:hover,\n.datepicker table tr td span.active.disabled.disabled:hover,\n.datepicker table tr td span.active.disabled:hover.disabled:hover,\n.datepicker table tr td span.active[disabled]:hover,\n.datepicker table tr td span.active:hover[disabled]:hover,\n.datepicker table tr td span.active.disabled[disabled]:hover,\n.datepicker table tr td span.active.disabled:hover[disabled]:hover,\nfieldset[disabled] .datepicker table tr td span.active:hover,\nfieldset[disabled] .datepicker table tr td span.active:hover:hover,\nfieldset[disabled] .datepicker table tr td span.active.disabled:hover,\nfieldset[disabled] .datepicker table tr td span.active.disabled:hover:hover,\n.datepicker table tr td span.active.disabled:focus,\n.datepicker table tr td span.active:hover.disabled:focus,\n.datepicker table tr td span.active.disabled.disabled:focus,\n.datepicker table tr td span.active.disabled:hover.disabled:focus,\n.datepicker table tr td span.active[disabled]:focus,\n.datepicker table tr td span.active:hover[disabled]:focus,\n.datepicker table tr td span.active.disabled[disabled]:focus,\n.datepicker table tr td span.active.disabled:hover[disabled]:focus,\nfieldset[disabled] .datepicker table tr td span.active:focus,\nfieldset[disabled] .datepicker table tr td span.active:hover:focus,\nfieldset[disabled] .datepicker table tr td span.active.disabled:focus,\nfieldset[disabled] .datepicker table tr td span.active.disabled:hover:focus,\n.datepicker table tr td span.active.disabled:active,\n.datepicker table tr td span.active:hover.disabled:active,\n.datepicker table tr td span.active.disabled.disabled:active,\n.datepicker table tr td span.active.disabled:hover.disabled:active,\n.datepicker table tr td span.active[disabled]:active,\n.datepicker table tr td span.active:hover[disabled]:active,\n.datepicker table tr td span.active.disabled[disabled]:active,\n.datepicker table tr td span.active.disabled:hover[disabled]:active,\nfieldset[disabled] .datepicker table tr td span.active:active,\nfieldset[disabled] .datepicker table tr td span.active:hover:active,\nfieldset[disabled] .datepicker table tr td span.active.disabled:active,\nfieldset[disabled] .datepicker table tr td span.active.disabled:hover:active,\n.datepicker table tr td span.active.disabled.active,\n.datepicker table tr td span.active:hover.disabled.active,\n.datepicker table tr td span.active.disabled.disabled.active,\n.datepicker table tr td span.active.disabled:hover.disabled.active,\n.datepicker table tr td span.active[disabled].active,\n.datepicker table tr td span.active:hover[disabled].active,\n.datepicker table tr td span.active.disabled[disabled].active,\n.datepicker table tr td span.active.disabled:hover[disabled].active,\nfieldset[disabled] .datepicker table tr td span.active.active,\nfieldset[disabled] .datepicker table tr td span.active:hover.active,\nfieldset[disabled] .datepicker table tr td span.active.disabled.active,\nfieldset[disabled] .datepicker table tr td span.active.disabled:hover.active {\n  background-color: #428bca;\n  border-color: #357ebd;\n}\n.datepicker table tr td span.old,\n.datepicker table tr td span.new {\n  color: #999999;\n}\n.datepicker th.datepicker-switch {\n  width: 145px;\n}\n.datepicker thead tr:first-child th,\n.datepicker tfoot tr th {\n  cursor: pointer;\n}\n.datepicker thead tr:first-child th:hover,\n.datepicker tfoot tr th:hover {\n  background: #eeeeee;\n}\n.datepicker .cw {\n  font-size: 10px;\n  width: 12px;\n  padding: 0 2px 0 5px;\n  vertical-align: middle;\n}\n.datepicker thead tr:first-child th.cw {\n  cursor: default;\n  background-color: transparent;\n}\n.input-group.date .input-group-addon i {\n  cursor: pointer;\n  width: 16px;\n  height: 16px;\n}\n.input-daterange input {\n  text-align: center;\n}\n.input-daterange input:first-child {\n  border-radius: 3px 0 0 3px;\n}\n.input-daterange input:last-child {\n  border-radius: 0 3px 3px 0;\n}\n.input-daterange .input-group-addon {\n  width: auto;\n  min-width: 16px;\n  padding: 4px 5px;\n  font-weight: normal;\n  line-height: 1.428571429;\n  text-align: center;\n  text-shadow: 0 1px 0 #fff;\n  vertical-align: middle;\n  background-color: #eeeeee;\n  border-width: 1px 0;\n  margin-left: -5px;\n  margin-right: -5px;\n}\n.datepicker.dropdown-menu {\n  position: absolute;\n  top: 100%;\n  left: 0;\n  z-index: 1000;\n  float: left;\n  display: none;\n  min-width: 160px;\n  list-style: none;\n  background-color: #ffffff;\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  border-radius: 5px;\n  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n  -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n  -webkit-background-clip: padding-box;\n  -moz-background-clip: padding;\n  background-clip: padding-box;\n  *border-right-width: 2px;\n  *border-bottom-width: 2px;\n  color: #333333;\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-size: 13px;\n  line-height: 1.428571429;\n}\n.datepicker.dropdown-menu th,\n.datepicker.dropdown-menu td {\n  padding: 4px 5px;\n}"
  },
  {
    "path": "public/admin/css/datetimepicker.css",
    "content": "/*!\n * Datetimepicker for Bootstrap\n *\n * Copyright 2012 Stefan Petre\n * Improvements by Andrew Rowls\n * Licensed under the Apache License v2.0\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n */\n.datetimepicker {\n  padding: 4px;\n  margin-top: 1px;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px;\n  direction: ltr;\n  /*.dow {\n\t\tborder-top: 1px solid #ddd !important;\n\t}*/\n\n}\n.datetimepicker-inline {\n  width: 220px;\n}\n.datetimepicker.datetimepicker-rtl {\n  direction: rtl;\n}\n.datetimepicker.datetimepicker-rtl table tr td span {\n  float: right;\n}\n.datetimepicker-dropdown, .datetimepicker-dropdown-left {\n  top: 0;\n  left: 0;\n}\n[class*=\" datetimepicker-dropdown\"]:before {\n  content: '';\n  display: inline-block;\n  border-left: 7px solid transparent;\n  border-right: 7px solid transparent;\n  border-bottom: 7px solid #ccc;\n  border-bottom-color: rgba(0, 0, 0, 0.2);\n  position: absolute;\n}\n[class*=\" datetimepicker-dropdown\"]:after {\n  content: '';\n  display: inline-block;\n  border-left: 6px solid transparent;\n  border-right: 6px solid transparent;\n  border-bottom: 6px solid #ffffff;\n  position: absolute;\n}\n[class*=\" datetimepicker-dropdown-top\"]:before {\n  content: '';\n  display: inline-block;\n  border-left: 7px solid transparent;\n  border-right: 7px solid transparent;\n  border-top: 7px solid #ccc;\n  border-top-color: rgba(0, 0, 0, 0.2);\n  border-bottom: 0;\n}\n[class*=\" datetimepicker-dropdown-top\"]:after {\n  content: '';\n  display: inline-block;\n  border-left: 6px solid transparent;\n  border-right: 6px solid transparent;\n  border-top: 6px solid #ffffff;\n  border-bottom: 0;\n}\n.datetimepicker-dropdown-bottom-right:before {\n  top: -7px;\n  right: 6px;\n}\n.datetimepicker-dropdown-bottom-right:after {\n  top: -6px;\n  right: 7px;\n}\n.datetimepicker-dropdown-bottom-left:before {\n  top: -7px;\n  left: 6px;\n}\n.datetimepicker-dropdown-bottom-left:after {\n  top: -6px;\n  left: 7px;\n}\n.datetimepicker-dropdown-top-right:before {\n  bottom: -7px;\n  right: 6px;\n}\n.datetimepicker-dropdown-top-right:after {\n  bottom: -6px;\n  right: 7px;\n}\n.datetimepicker-dropdown-top-left:before {\n  bottom: -7px;\n  left: 6px;\n}\n.datetimepicker-dropdown-top-left:after {\n  bottom: -6px;\n  left: 7px;\n}\n.datetimepicker > div {\n  display: none;\n}\n.datetimepicker.minutes div.datetimepicker-minutes {\n    display: block;\n}\n.datetimepicker.hours div.datetimepicker-hours {\n    display: block;\n}\n.datetimepicker.days div.datetimepicker-days {\n    display: block;\n}\n.datetimepicker.months div.datetimepicker-months {\n  display: block;\n}\n.datetimepicker.years div.datetimepicker-years {\n  display: block;\n}\n.datetimepicker table {\n  margin: 0;\n}\n.datetimepicker  td,\n.datetimepicker th {\n  text-align: center;\n  width: 20px;\n  height: 20px;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px;\n  border: none;\n}\n.table-striped .datetimepicker table tr td,\n.table-striped .datetimepicker table tr th {\n  background-color: transparent;\n}\n.datetimepicker table tr td.minute:hover {\n    background: #eeeeee;\n    cursor: pointer;\n}\n.datetimepicker table tr td.hour:hover {\n    background: #eeeeee;\n    cursor: pointer;\n}\n.datetimepicker table tr td.day:hover {\n    background: #eeeeee;\n    cursor: pointer;\n}\n.datetimepicker table tr td.old,\n.datetimepicker table tr td.new {\n  color: #999999;\n}\n.datetimepicker table tr td.disabled,\n.datetimepicker table tr td.disabled:hover {\n  background: none;\n  color: #999999;\n  cursor: default;\n}\n.datetimepicker table tr td.today,\n.datetimepicker table tr td.today:hover,\n.datetimepicker table tr td.today.disabled,\n.datetimepicker table tr td.today.disabled:hover {\n  background-color: #fde19a;\n  background-image: -moz-linear-gradient(top, #fdd49a, #fdf59a);\n  background-image: -ms-linear-gradient(top, #fdd49a, #fdf59a);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdd49a), to(#fdf59a));\n  background-image: -webkit-linear-gradient(top, #fdd49a, #fdf59a);\n  background-image: -o-linear-gradient(top, #fdd49a, #fdf59a);\n  background-image: linear-gradient(top, #fdd49a, #fdf59a);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a', endColorstr='#fdf59a', GradientType=0);\n  border-color: #fdf59a #fdf59a #fbed50;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n}\n.datetimepicker table tr td.today:hover,\n.datetimepicker table tr td.today:hover:hover,\n.datetimepicker table tr td.today.disabled:hover,\n.datetimepicker table tr td.today.disabled:hover:hover,\n.datetimepicker table tr td.today:active,\n.datetimepicker table tr td.today:hover:active,\n.datetimepicker table tr td.today.disabled:active,\n.datetimepicker table tr td.today.disabled:hover:active,\n.datetimepicker table tr td.today.active,\n.datetimepicker table tr td.today:hover.active,\n.datetimepicker table tr td.today.disabled.active,\n.datetimepicker table tr td.today.disabled:hover.active,\n.datetimepicker table tr td.today.disabled,\n.datetimepicker table tr td.today:hover.disabled,\n.datetimepicker table tr td.today.disabled.disabled,\n.datetimepicker table tr td.today.disabled:hover.disabled,\n.datetimepicker table tr td.today[disabled],\n.datetimepicker table tr td.today:hover[disabled],\n.datetimepicker table tr td.today.disabled[disabled],\n.datetimepicker table tr td.today.disabled:hover[disabled] {\n  background-color: #fdf59a;\n}\n.datetimepicker table tr td.today:active,\n.datetimepicker table tr td.today:hover:active,\n.datetimepicker table tr td.today.disabled:active,\n.datetimepicker table tr td.today.disabled:hover:active,\n.datetimepicker table tr td.today.active,\n.datetimepicker table tr td.today:hover.active,\n.datetimepicker table tr td.today.disabled.active,\n.datetimepicker table tr td.today.disabled:hover.active {\n  background-color: #fbf069 \\9;\n}\n.datetimepicker table tr td.active,\n.datetimepicker table tr td.active:hover,\n.datetimepicker table tr td.active.disabled,\n.datetimepicker table tr td.active.disabled:hover {\n  background-color: #006dcc;\n  background-image: -moz-linear-gradient(top, #0088cc, #0044cc);\n  background-image: -ms-linear-gradient(top, #0088cc, #0044cc);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));\n  background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);\n  background-image: -o-linear-gradient(top, #0088cc, #0044cc);\n  background-image: linear-gradient(top, #0088cc, #0044cc);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);\n  border-color: #0044cc #0044cc #002a80;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n  color: #fff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.datetimepicker table tr td.active:hover,\n.datetimepicker table tr td.active:hover:hover,\n.datetimepicker table tr td.active.disabled:hover,\n.datetimepicker table tr td.active.disabled:hover:hover,\n.datetimepicker table tr td.active:active,\n.datetimepicker table tr td.active:hover:active,\n.datetimepicker table tr td.active.disabled:active,\n.datetimepicker table tr td.active.disabled:hover:active,\n.datetimepicker table tr td.active.active,\n.datetimepicker table tr td.active:hover.active,\n.datetimepicker table tr td.active.disabled.active,\n.datetimepicker table tr td.active.disabled:hover.active,\n.datetimepicker table tr td.active.disabled,\n.datetimepicker table tr td.active:hover.disabled,\n.datetimepicker table tr td.active.disabled.disabled,\n.datetimepicker table tr td.active.disabled:hover.disabled,\n.datetimepicker table tr td.active[disabled],\n.datetimepicker table tr td.active:hover[disabled],\n.datetimepicker table tr td.active.disabled[disabled],\n.datetimepicker table tr td.active.disabled:hover[disabled] {\n  background-color: #0044cc;\n}\n.datetimepicker table tr td.active:active,\n.datetimepicker table tr td.active:hover:active,\n.datetimepicker table tr td.active.disabled:active,\n.datetimepicker table tr td.active.disabled:hover:active,\n.datetimepicker table tr td.active.active,\n.datetimepicker table tr td.active:hover.active,\n.datetimepicker table tr td.active.disabled.active,\n.datetimepicker table tr td.active.disabled:hover.active {\n  background-color: #003399 \\9;\n}\n.datetimepicker table tr td span {\n  display: block;\n  width: 23%;\n  height: 54px;\n  line-height: 54px;\n  float: left;\n  margin: 1%;\n  cursor: pointer;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px;\n}\n.datetimepicker .datetimepicker-hours span {\n  height: 26px;\n  line-height: 26px;\n}\n.datetimepicker .datetimepicker-hours table tr td span.hour_am,\n.datetimepicker .datetimepicker-hours table tr td span.hour_pm {\n  width: 14.6%;\n}\n.datetimepicker .datetimepicker-hours fieldset legend,\n.datetimepicker .datetimepicker-minutes fieldset legend {\n  margin-bottom: inherit;\n  line-height: 30px;\n}\n.datetimepicker .datetimepicker-minutes span {\n  height: 26px;\n  line-height: 26px;\n}\n.datetimepicker table tr td span:hover {\n  background: #eeeeee;\n}\n.datetimepicker table tr td span.disabled,\n.datetimepicker table tr td span.disabled:hover {\n  background: none;\n  color: #999999;\n  cursor: default;\n}\n.datetimepicker table tr td span.active,\n.datetimepicker table tr td span.active:hover,\n.datetimepicker table tr td span.active.disabled,\n.datetimepicker table tr td span.active.disabled:hover {\n  background-color: #006dcc;\n  background-image: -moz-linear-gradient(top, #0088cc, #0044cc);\n  background-image: -ms-linear-gradient(top, #0088cc, #0044cc);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));\n  background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);\n  background-image: -o-linear-gradient(top, #0088cc, #0044cc);\n  background-image: linear-gradient(top, #0088cc, #0044cc);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);\n  border-color: #0044cc #0044cc #002a80;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n  color: #fff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.datetimepicker table tr td span.active:hover,\n.datetimepicker table tr td span.active:hover:hover,\n.datetimepicker table tr td span.active.disabled:hover,\n.datetimepicker table tr td span.active.disabled:hover:hover,\n.datetimepicker table tr td span.active:active,\n.datetimepicker table tr td span.active:hover:active,\n.datetimepicker table tr td span.active.disabled:active,\n.datetimepicker table tr td span.active.disabled:hover:active,\n.datetimepicker table tr td span.active.active,\n.datetimepicker table tr td span.active:hover.active,\n.datetimepicker table tr td span.active.disabled.active,\n.datetimepicker table tr td span.active.disabled:hover.active,\n.datetimepicker table tr td span.active.disabled,\n.datetimepicker table tr td span.active:hover.disabled,\n.datetimepicker table tr td span.active.disabled.disabled,\n.datetimepicker table tr td span.active.disabled:hover.disabled,\n.datetimepicker table tr td span.active[disabled],\n.datetimepicker table tr td span.active:hover[disabled],\n.datetimepicker table tr td span.active.disabled[disabled],\n.datetimepicker table tr td span.active.disabled:hover[disabled] {\n  background-color: #0044cc;\n}\n.datetimepicker table tr td span.active:active,\n.datetimepicker table tr td span.active:hover:active,\n.datetimepicker table tr td span.active.disabled:active,\n.datetimepicker table tr td span.active.disabled:hover:active,\n.datetimepicker table tr td span.active.active,\n.datetimepicker table tr td span.active:hover.active,\n.datetimepicker table tr td span.active.disabled.active,\n.datetimepicker table tr td span.active.disabled:hover.active {\n  background-color: #003399 \\9;\n}\n.datetimepicker table tr td span.old {\n  color: #999999;\n}\n.datetimepicker th.switch {\n  width: 145px;\n}\n.datetimepicker thead tr:first-child th,\n.datetimepicker tfoot tr:first-child th {\n  cursor: pointer;\n}\n.datetimepicker thead tr:first-child th:hover,\n.datetimepicker tfoot tr:first-child th:hover {\n  background: #eeeeee;\n}\n.input-append.date .add-on i,\n.input-prepend.date .add-on i {\n  cursor: pointer;\n  width: 14px;\n  height: 14px;\n}"
  },
  {
    "path": "public/admin/css/dropzone.css",
    "content": "/*\n * The MIT License\n * Copyright (c) 2012 Matias Meno <m@tias.me>\n */\n@-webkit-keyframes passing-through {\n  0% {\n    opacity: 0;\n    -webkit-transform: translateY(40px);\n    -moz-transform: translateY(40px);\n    -ms-transform: translateY(40px);\n    -o-transform: translateY(40px);\n    transform: translateY(40px); }\n  30%, 70% {\n    opacity: 1;\n    -webkit-transform: translateY(0px);\n    -moz-transform: translateY(0px);\n    -ms-transform: translateY(0px);\n    -o-transform: translateY(0px);\n    transform: translateY(0px); }\n  100% {\n    opacity: 0;\n    -webkit-transform: translateY(-40px);\n    -moz-transform: translateY(-40px);\n    -ms-transform: translateY(-40px);\n    -o-transform: translateY(-40px);\n    transform: translateY(-40px); } }\n@-moz-keyframes passing-through {\n  0% {\n    opacity: 0;\n    -webkit-transform: translateY(40px);\n    -moz-transform: translateY(40px);\n    -ms-transform: translateY(40px);\n    -o-transform: translateY(40px);\n    transform: translateY(40px); }\n  30%, 70% {\n    opacity: 1;\n    -webkit-transform: translateY(0px);\n    -moz-transform: translateY(0px);\n    -ms-transform: translateY(0px);\n    -o-transform: translateY(0px);\n    transform: translateY(0px); }\n  100% {\n    opacity: 0;\n    -webkit-transform: translateY(-40px);\n    -moz-transform: translateY(-40px);\n    -ms-transform: translateY(-40px);\n    -o-transform: translateY(-40px);\n    transform: translateY(-40px); } }\n@keyframes passing-through {\n  0% {\n    opacity: 0;\n    -webkit-transform: translateY(40px);\n    -moz-transform: translateY(40px);\n    -ms-transform: translateY(40px);\n    -o-transform: translateY(40px);\n    transform: translateY(40px); }\n  30%, 70% {\n    opacity: 1;\n    -webkit-transform: translateY(0px);\n    -moz-transform: translateY(0px);\n    -ms-transform: translateY(0px);\n    -o-transform: translateY(0px);\n    transform: translateY(0px); }\n  100% {\n    opacity: 0;\n    -webkit-transform: translateY(-40px);\n    -moz-transform: translateY(-40px);\n    -ms-transform: translateY(-40px);\n    -o-transform: translateY(-40px);\n    transform: translateY(-40px); } }\n@-webkit-keyframes slide-in {\n  0% {\n    opacity: 0;\n    -webkit-transform: translateY(40px);\n    -moz-transform: translateY(40px);\n    -ms-transform: translateY(40px);\n    -o-transform: translateY(40px);\n    transform: translateY(40px); }\n  30% {\n    opacity: 1;\n    -webkit-transform: translateY(0px);\n    -moz-transform: translateY(0px);\n    -ms-transform: translateY(0px);\n    -o-transform: translateY(0px);\n    transform: translateY(0px); } }\n@-moz-keyframes slide-in {\n  0% {\n    opacity: 0;\n    -webkit-transform: translateY(40px);\n    -moz-transform: translateY(40px);\n    -ms-transform: translateY(40px);\n    -o-transform: translateY(40px);\n    transform: translateY(40px); }\n  30% {\n    opacity: 1;\n    -webkit-transform: translateY(0px);\n    -moz-transform: translateY(0px);\n    -ms-transform: translateY(0px);\n    -o-transform: translateY(0px);\n    transform: translateY(0px); } }\n@keyframes slide-in {\n  0% {\n    opacity: 0;\n    -webkit-transform: translateY(40px);\n    -moz-transform: translateY(40px);\n    -ms-transform: translateY(40px);\n    -o-transform: translateY(40px);\n    transform: translateY(40px); }\n  30% {\n    opacity: 1;\n    -webkit-transform: translateY(0px);\n    -moz-transform: translateY(0px);\n    -ms-transform: translateY(0px);\n    -o-transform: translateY(0px);\n    transform: translateY(0px); } }\n@-webkit-keyframes pulse {\n  0% {\n    -webkit-transform: scale(1);\n    -moz-transform: scale(1);\n    -ms-transform: scale(1);\n    -o-transform: scale(1);\n    transform: scale(1); }\n  10% {\n    -webkit-transform: scale(1.1);\n    -moz-transform: scale(1.1);\n    -ms-transform: scale(1.1);\n    -o-transform: scale(1.1);\n    transform: scale(1.1); }\n  20% {\n    -webkit-transform: scale(1);\n    -moz-transform: scale(1);\n    -ms-transform: scale(1);\n    -o-transform: scale(1);\n    transform: scale(1); } }\n@-moz-keyframes pulse {\n  0% {\n    -webkit-transform: scale(1);\n    -moz-transform: scale(1);\n    -ms-transform: scale(1);\n    -o-transform: scale(1);\n    transform: scale(1); }\n  10% {\n    -webkit-transform: scale(1.1);\n    -moz-transform: scale(1.1);\n    -ms-transform: scale(1.1);\n    -o-transform: scale(1.1);\n    transform: scale(1.1); }\n  20% {\n    -webkit-transform: scale(1);\n    -moz-transform: scale(1);\n    -ms-transform: scale(1);\n    -o-transform: scale(1);\n    transform: scale(1); } }\n@keyframes pulse {\n  0% {\n    -webkit-transform: scale(1);\n    -moz-transform: scale(1);\n    -ms-transform: scale(1);\n    -o-transform: scale(1);\n    transform: scale(1); }\n  10% {\n    -webkit-transform: scale(1.1);\n    -moz-transform: scale(1.1);\n    -ms-transform: scale(1.1);\n    -o-transform: scale(1.1);\n    transform: scale(1.1); }\n  20% {\n    -webkit-transform: scale(1);\n    -moz-transform: scale(1);\n    -ms-transform: scale(1);\n    -o-transform: scale(1);\n    transform: scale(1); } }\n.dropzone, .dropzone * {\n  box-sizing: border-box; }\n\n.dropzone {\n  min-height: 150px;\n  border: 2px solid rgba(0, 0, 0, 0.3);\n  background: white;\n  padding: 20px 20px; }\n  .dropzone.dz-clickable {\n    cursor: pointer; }\n    .dropzone.dz-clickable * {\n      cursor: default; }\n    .dropzone.dz-clickable .dz-message, .dropzone.dz-clickable .dz-message * {\n      cursor: pointer; }\n  .dropzone.dz-started .dz-message {\n    display: none; }\n  .dropzone.dz-drag-hover {\n    border-style: solid; }\n    .dropzone.dz-drag-hover .dz-message {\n      opacity: 0.5; }\n  .dropzone .dz-message {\n    text-align: center;\n    margin: 2em 0; }\n  .dropzone .dz-preview {\n    position: relative;\n    display: inline-block;\n    vertical-align: top;\n    margin: 16px;\n    min-height: 100px; }\n    .dropzone .dz-preview:hover {\n      z-index: 1000; }\n      .dropzone .dz-preview:hover .dz-details {\n        opacity: 1; }\n    .dropzone .dz-preview.dz-file-preview .dz-image {\n      border-radius: 20px;\n      background: #999;\n      background: linear-gradient(to bottom, #eee, #ddd); }\n    .dropzone .dz-preview.dz-file-preview .dz-details {\n      opacity: 1; }\n    .dropzone .dz-preview.dz-image-preview {\n      background: white; }\n      .dropzone .dz-preview.dz-image-preview .dz-details {\n        -webkit-transition: opacity 0.2s linear;\n        -moz-transition: opacity 0.2s linear;\n        -ms-transition: opacity 0.2s linear;\n        -o-transition: opacity 0.2s linear;\n        transition: opacity 0.2s linear; }\n    .dropzone .dz-preview .dz-remove {\n      font-size: 14px;\n      text-align: center;\n      display: block;\n      cursor: pointer;\n      border: none; }\n      .dropzone .dz-preview .dz-remove:hover {\n        text-decoration: underline; }\n    .dropzone .dz-preview:hover .dz-details {\n      opacity: 1; }\n    .dropzone .dz-preview .dz-details {\n      z-index: 20;\n      position: absolute;\n      top: 0;\n      left: 0;\n      opacity: 0;\n      font-size: 13px;\n      min-width: 100%;\n      max-width: 100%;\n      padding: 2em 1em;\n      text-align: center;\n      color: rgba(0, 0, 0, 0.9);\n      line-height: 150%; }\n      .dropzone .dz-preview .dz-details .dz-size {\n        margin-bottom: 1em;\n        font-size: 16px; }\n      .dropzone .dz-preview .dz-details .dz-filename {\n        white-space: nowrap; }\n        .dropzone .dz-preview .dz-details .dz-filename:hover span {\n          border: 1px solid rgba(200, 200, 200, 0.8);\n          background-color: rgba(255, 255, 255, 0.8); }\n        .dropzone .dz-preview .dz-details .dz-filename:not(:hover) {\n          overflow: hidden;\n          text-overflow: ellipsis; }\n          .dropzone .dz-preview .dz-details .dz-filename:not(:hover) span {\n            border: 1px solid transparent; }\n      .dropzone .dz-preview .dz-details .dz-filename span, .dropzone .dz-preview .dz-details .dz-size span {\n        background-color: rgba(255, 255, 255, 0.4);\n        padding: 0 0.4em;\n        border-radius: 3px; }\n    .dropzone .dz-preview:hover .dz-image img {\n      -webkit-transform: scale(1.05, 1.05);\n      -moz-transform: scale(1.05, 1.05);\n      -ms-transform: scale(1.05, 1.05);\n      -o-transform: scale(1.05, 1.05);\n      transform: scale(1.05, 1.05);\n      -webkit-filter: blur(8px);\n      filter: blur(8px); }\n    .dropzone .dz-preview .dz-image {\n      border-radius: 20px;\n      overflow: hidden;\n      width: 120px;\n      height: 120px;\n      position: relative;\n      display: block;\n      z-index: 10; }\n      .dropzone .dz-preview .dz-image img {\n        display: block; }\n    .dropzone .dz-preview.dz-success .dz-success-mark {\n      -webkit-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);\n      -moz-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);\n      -ms-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);\n      -o-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);\n      animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1); }\n    .dropzone .dz-preview.dz-error .dz-error-mark {\n      opacity: 1;\n      -webkit-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);\n      -moz-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);\n      -ms-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);\n      -o-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);\n      animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1); }\n    .dropzone .dz-preview .dz-success-mark, .dropzone .dz-preview .dz-error-mark {\n      pointer-events: none;\n      opacity: 0;\n      z-index: 500;\n      position: absolute;\n      display: block;\n      top: 50%;\n      left: 50%;\n      margin-left: -27px;\n      margin-top: -27px; }\n      .dropzone .dz-preview .dz-success-mark svg, .dropzone .dz-preview .dz-error-mark svg {\n        display: block;\n        width: 54px;\n        height: 54px; }\n    .dropzone .dz-preview.dz-processing .dz-progress {\n      opacity: 1;\n      -webkit-transition: all 0.2s linear;\n      -moz-transition: all 0.2s linear;\n      -ms-transition: all 0.2s linear;\n      -o-transition: all 0.2s linear;\n      transition: all 0.2s linear; }\n    .dropzone .dz-preview.dz-complete .dz-progress {\n      opacity: 0;\n      -webkit-transition: opacity 0.4s ease-in;\n      -moz-transition: opacity 0.4s ease-in;\n      -ms-transition: opacity 0.4s ease-in;\n      -o-transition: opacity 0.4s ease-in;\n      transition: opacity 0.4s ease-in; }\n    .dropzone .dz-preview:not(.dz-processing) .dz-progress {\n      -webkit-animation: pulse 6s ease infinite;\n      -moz-animation: pulse 6s ease infinite;\n      -ms-animation: pulse 6s ease infinite;\n      -o-animation: pulse 6s ease infinite;\n      animation: pulse 6s ease infinite; }\n    .dropzone .dz-preview .dz-progress {\n      opacity: 1;\n      z-index: 1000;\n      pointer-events: none;\n      position: absolute;\n      height: 16px;\n      left: 50%;\n      top: 50%;\n      margin-top: -8px;\n      width: 80px;\n      margin-left: -40px;\n      background: rgba(255, 255, 255, 0.9);\n      -webkit-transform: scale(1);\n      border-radius: 8px;\n      overflow: hidden; }\n      .dropzone .dz-preview .dz-progress .dz-upload {\n        background: #333;\n        background: linear-gradient(to bottom, #666, #444);\n        position: absolute;\n        top: 0;\n        left: 0;\n        bottom: 0;\n        width: 0;\n        -webkit-transition: width 300ms ease-in-out;\n        -moz-transition: width 300ms ease-in-out;\n        -ms-transition: width 300ms ease-in-out;\n        -o-transition: width 300ms ease-in-out;\n        transition: width 300ms ease-in-out; }\n    .dropzone .dz-preview.dz-error .dz-error-message {\n      display: block; }\n    .dropzone .dz-preview.dz-error:hover .dz-error-message {\n      opacity: 1;\n      pointer-events: auto; }\n    .dropzone .dz-preview .dz-error-message {\n      pointer-events: none;\n      z-index: 1000;\n      position: absolute;\n      display: block;\n      display: none;\n      opacity: 0;\n      -webkit-transition: opacity 0.3s ease;\n      -moz-transition: opacity 0.3s ease;\n      -ms-transition: opacity 0.3s ease;\n      -o-transition: opacity 0.3s ease;\n      transition: opacity 0.3s ease;\n      border-radius: 8px;\n      font-size: 13px;\n      top: 130px;\n      left: -10px;\n      width: 140px;\n      background: #be2626;\n      background: linear-gradient(to bottom, #be2626, #a92222);\n      padding: 0.5em 1.2em;\n      color: white; }\n      .dropzone .dz-preview .dz-error-message:after {\n        content: '';\n        position: absolute;\n        top: -6px;\n        left: 64px;\n        width: 0;\n        height: 0;\n        border-left: 6px solid transparent;\n        border-right: 6px solid transparent;\n        border-bottom: 6px solid #be2626; }\n\t\t.dropzone-pro{\n\t\t\tpadding:20px;\n\t\t\tbackground:#fff;\n\t\t}\n.download-icon{\n\tfont-size:50px;\n\tpadding-bottom: 15px;\n    display: block;\n}\t\n.download-custom h2{\n\tfont-size:20px;\n}\t\n.download-custom p{\n\tfont-size:14px;\n}\n.dropzone.dropzone-custom{\n\tborder: 2px dashed #ff9966;\n}\n.dropzone-custom-sys{\n\ttext-align:center;\n\tpadding:30px 100px;\n\tbackground:#fff;\n}\n.dropzone-custom-sys p{\n\tmargin:0px;\n}"
  },
  {
    "path": "public/admin/css/form/all-type-forms.css",
    "content": "/* Default\n=============================== */\n.wrapper {\n\tmargin:0 auto;\n\toutline:none;\n\tpadding:40px 15px;\n\t-webkit-box-sizing:content-box;\n\t-moz-box-sizing:content-box;\n\tbox-sizing:content-box;\n\tmax-width: 640px;\n}\n.ts-forms .input { position:relative; }\n\n.ts-forms .tsbox { position:relative; margin-bottom:25px; }\n\n.ts-forms .link {\n\tborder-bottom:1px solid #90caf9;\n\tcolor:#1e88e5;\n\tfont-size:14px;\n\tline-height:inherit;\n\ttext-decoration:none;\n}\n.ts-forms .link:hover { border-bottom:none; }\n\n.ts-forms .inline-group { display:inline-block; }\n\n.ts-forms .hidden { display:none; }\n\n/* Reset for -webkit / -moz browser\n=============================== */\n.ts-forms input[type=\"search\"]::-webkit-search-decoration,\n.ts-forms input[type=\"search\"]::-webkit-search-cancel-button,\n.ts-forms input[type=\"search\"]::-webkit-search-results-button,\n.ts-forms input[type=\"search\"]::-webkit-search-results-decoration { display:none; }\n\n.ts-forms select,\n.ts-forms input[type=\"button\"],\n.ts-forms input[type=\"submit\"],\n.ts-forms input[type=\"search\"] {\n\t-webkit-tap-highlight-color:transparent;\n\t-webkit-tap-highlight-color:rgba(0,0,0,0);\n\t-webkit-appearance:none;\n\t-moz-appearance:none;\n\tappearance:none;\n\t-webkit-border-radius:0px;\n\tborder-radius:0px;\n}\n\n/* Header\n=============================== */\n.ts-forms .header {\nbackground-color: #ff0000;\nborder-bottom: 5px solid #e00000;\nborder-radius: 3px 3px 0 0;\ndisplay: block;\nposition: relative;\n}\n.ts-forms .header > i {\n\tcolor:#fff;\n\tfont-size:31px;\n\tfloat:left;\n\tpadding:31px 15px 0 25px;\n}\n.ts-forms .header p {\nfont-size: 30px;\nmargin: 0 auto;\npadding: 30px 25px;\ntext-align: center;\ntext-transform: uppercase;\n\ncolor:#FFF;\ntext-shadow:#ccc 0 1px 0, #c9c9c9 0 2px 0, #bbb 0 3px 0, #b9b9b9 0 4px 0, #aaa 0 5px 0,rgba(0,0,0,.1) 0 6px 1px, rgba(0,0,0,.1) 0 0 5px, rgba(0,0,0,.3) 0 1px 3px, rgba(0,0,0,.15) 0 3px 5px, rgba(0,0,0,.2) 0 5px 10px, rgba(0,0,0,.2) 0 10px 10px, rgba(0,0,0,.1) 0 20px 20px;\n\n\n\n\n\n\n\n}\n\n/* Content\n=============================== */\n.ts-forms .content { padding:25px 25px 0; }\n\n.ts-forms .content:after {\n\tclear:both;\n\tcontent:\".\";\n\tdisplay:block;\n\theight:0;\n\tvisibility:hidden;\n}\n\n/* Footer\n=============================== */\n.ts-forms .footer {\n\tbackground-color:#e8eaf6;\n\t-webkit-border-radius:0 0 3px 3px;\n\t-moz-border-radius:0 0 3px 3px;\n\t-o-border-radius:0 0 3px 3px;\n\tborder-radius:0 0 3px 3px;\n\tdisplay:block;\n\tpadding:10px 25px;\n}\n.ts-forms .footer:after {\n\tclear:both;\n\tcontent:\".\";\n\tdisplay:block;\n\theight:0;\n\tvisibility:hidden;\n}\n\n/* Dividers\n=============================== */\n.ts-forms .divider,\n.ts-forms .divider-text { border-top:1px solid rgba(0,0,0,.12); height:0; }\n\n.ts-forms .divider-text { text-align:center; }\n\n.ts-forms .divider-text span {\n\tborder:1px solid rgba(0,0,0,.12);\n\t-webkit-border-radius:3px;\n\t-moz-border-radius:3px;\n\t-o-border-radius:3px;\n\tborder-radius:3px;\n\tbackground-color:#f9fafd;\n\tcolor:#FF0000;\n\tfont-size:16px;\n\tpadding:2px 15px;\n\tposition:relative;\n\ttop:-9px;\n\twhite-space:nowrap;\n}\n\n/* Gap-top / gap-bottom classes\n=============================== */\n.ts-forms .gap-top-20 { margin-top:20px; } /* text-divider top gap after \"content\"/\"ts-row\" classes */\n\n.ts-forms .gap-top-45 { margin-top:45px; } /* text-divider top gap after \"tsbox\" class */\n\n.ts-forms .gap-bottom-45 { margin-bottom:45px; } /* text-divider bottom gap */\n\n.ts-forms .gap-bottom-25 { margin-bottom:25px; } /* line-divider bottom gap */\n\n/* Labels\n=============================== */\n.ts-forms label {\n\tdisplay:block;\n\tcolor:inherit;\n\tfont-weight:normal;\n\ttext-align:left;\n\tmargin-bottom:0;\n}\n.ts-forms .label { font-size:14px; margin-bottom:15px; line-height:14px; height:14px; }\n\n.ts-forms .label-center { height:48px; line-height:48px; text-align:center; margin-bottom:0; }\n\n.ts-forms .ts-row > .label{ padding-left:10px; }\n\n/* Radio and checkbox\n=============================== */\n.ts-forms .radio,\n.ts-forms .checkbox,\n.ts-forms .radio-toggle,\n.ts-forms .checkbox-toggle {\n\tcolor:rgba(0,0,0,.87);\n\tcursor:pointer;\n\tfont-size:15px;\n\theight:15px;\n\tmargin-bottom:4px;\n\tposition:relative;\n\tline-height:15px;\n}\n.ts-forms .radio,\n.ts-forms .checkbox,\n.ts-forms .inline-group .radio,\n.ts-forms .inline-group .checkbox { padding:9px 0 8px 32px; }\n\n.ts-forms .radio-toggle,\n.ts-forms .checkbox-toggle,\n.ts-forms .inline-group .radio-toggle,\n.ts-forms .inline-group .checkbox-toggle { padding:9px 0 8px 58px; }\n\n.ts-forms .radio:last-child,\n.ts-forms .checkbox:last-child,\n.ts-forms .radio-toggle:last-child,\n.ts-forms .checkbox-toggle:last-child { margin-bottom:0; }\n\n.ts-forms .inline-group .radio,\n.ts-forms .inline-group .checkbox,\n.ts-forms .inline-group .radio-toggle,\n.ts-forms .inline-group .checkbox-toggle { display:inline-block; margin-right:25px; }\n\n.ts-forms .radio input,\n.ts-forms .checkbox input,\n.ts-forms .radio-toggle input,\n.ts-forms .checkbox-toggle input { position:absolute; left:-9999px; }\n\n.ts-forms .radio i,\n.ts-forms .checkbox i,\n.ts-forms .checkbox-toggle i,\n.ts-forms .radio-toggle i {\n\tbackground-color:#fff;\n\tborder:2px solid rgba(0,0,0,.26);\n\tdisplay:block;\n\theight:18px;\n\tleft:0;\n\toutline:none;\n\tposition:absolute;\n\ttop:5px;\n\t-webkit-transition:border-color.2s;\n\t-moz-transition:border-color.2s;\n\t-ms-transition:border-color.2s;\n\t-o-transition:border-color.2s;\n\ttransition:border-color.2s;\n}\n.ts-forms .radio i,\n.ts-forms .checkbox i { width:18px; }\n\n.ts-forms .checkbox-toggle i,\n.ts-forms .radio-toggle i { width:44px; }\n\n.ts-forms .checkbox i,\n.ts-forms .checkbox-toggle i {\n\t-webkit-border-radius:3px;\n\t-moz-border-radius:3px;\n\t-o-border-radius:3px;\n\tborder-radius:3px;\n}\n.ts-forms .radio i,\n.ts-forms .radio i:after,\n.ts-forms .radio-toggle i:before {\n\t-webkit-border-radius:50%;\n\t-moz-border-radius:50%;\n\t-o-border-radius:50%;\n\tborder-radius:50%;\n}\n.ts-forms .radio-toggle i {\n\t-webkit-border-radius:13px;\n\t-moz-border-radius:13px;\n\t-o-border-radius:13px;\n\tborder-radius:13px;\n}\n.ts-forms .checkbox-toggle i:before {\n\t-webkit-border-radius:2px;\n\t-moz-border-radius:2px;\n\t-o-border-radius:2px;\n\tborder-radius:2px;\n}\n.ts-forms .radio i:after {\n\tbackground-color:#FF0000;\n\tcontent:\"\";\n\theight:8px;\n\ttop:5px;\n\tleft:5px;\n\topacity:0;\n\tposition:absolute;\n\twidth:8px;\n}\n.ts-forms .checkbox i:after {\n\tborder-width:0 0 3px 3px;\n\tborder-bottom:solid #f00;\n\tborder-left:solid #f00;\n\tcontent:\"\";\n\theight:5px;\n\ttop:3px;\n\t-webkit-transform:rotate(-45deg);\n\t-moz-transform:rotate(-45deg);\n\t-ms-transform:rotate(-45deg);\n\t-o-transform:rotate(-45deg);\n\ttransform:rotate(-45deg);\n\tleft:3px;\n\topacity:0;\n\tposition:absolute;\n\twidth:10px;\n}\n.ts-forms .radio input:checked + i:after,\n.ts-forms .checkbox input:checked + i:after { opacity:1; }\n\n.ts-forms .checkbox-toggle i:before,\n.ts-forms .radio-toggle i:before {\n\tborder:none;\n\tbackground-color:#03a9f4;\n\tcontent:\"\";\n\tdisplay:block;\n\theight:14px;\n\tleft:2px;\n\tposition:absolute;\n\ttop:2px;\n\twidth:14px;\n}\n.ts-forms .checkbox-toggle input:checked + i:before,\n.ts-forms .radio-toggle input:checked + i:before { left:28px; }\n\n.ts-forms .checkbox-toggle i:after,\n.ts-forms .radio-toggle i:after,\n.ts-forms .checkbox-toggle input:checked + i:after,\n.ts-forms .radio-toggle input:checked + i:after {\n\tfont-size:10px;\n\tfont-style:normal;\n\tfont-weight:bold;\n\tline-height:10px;\n\tposition:absolute;\n\ttop:4px;\n}\n.ts-forms .checkbox-toggle i:after,\n.ts-forms .radio-toggle i:after { content:\"OFF\"; left:22px; }\n\n.ts-forms .checkbox-toggle input:checked + i:after,\n.ts-forms .radio-toggle input:checked + i:after { content:\"ON\"; left:6px; }\n\n.ts-forms .checkbox:hover i,\n.ts-forms .radio:hover i,\n.ts-forms .checkbox-toggle:hover i,\n.ts-forms .radio-toggle:hover i { border:2px solid rgba(48,63,159,.6); }\n\n.ts-forms .radio input:checked + i,\n.ts-forms .checkbox input:checked + i,\n.ts-forms .radio-toggle input:checked + i,\n.ts-forms .checkbox-toggle input:checked + i { border:2px solid #03a9f4; }\n\n.ts-forms .radio input:checked + i,\n.ts-forms .checkbox input:checked + i { color:rgba(48,63,159,.9); }\n\n.ts-forms .checkbox-toggle input:checked + i,\n.ts-forms .radio-toggle input:checked + i { background-color:#e8eaf6; }\n\n/* Widget\n=============================== */\n.ts-forms .widget { position: relative; }\n\n.ts-forms .widget .addon,\n.ts-forms .widget .addon-btn {\n\tbackground:#e0e0e0;\n\tborder:none;\n\tcolor:rgba(0,0,0,.56);\n\tdisplay:block;\n\tfont:16px 'Open Sans',Helvetica,Arial,sans-serif;\n\theight:48px;\n\tline-height:48px;\n\tpadding:0;\n\tposition:absolute;\n\toutline:none;\n\toverflow:hidden;\n\ttext-align:center;\n\ttop:0;\n\tz-index:5;\n}\n.ts-forms .widget .addon-btn,\n.ts-forms .widget .addon-btn i {\n\tcursor:pointer;\n\t-webkit-transition:all.2s;\n\t-moz-transition:all.2s;\n\t-ms-transition:all.2s;\n\t-o-transition:all.2s;\n\ttransition:all.2s;\n}\n.ts-forms .widget .addon-btn:hover,\n.ts-forms .widget .addon-btn:focus { background-color:#d6d6d6; color:rgba(0,0,0,.87); }\n\n.ts-forms .widget .addon-btn:hover i,\n.ts-forms .widget .addon-btn:focus i { color:rgba(0,0,0,.61); }\n\n.ts-forms .widget .adn-left { left:0; }\n\n.ts-forms .widget .adn-right { right:0; }\n\n.ts-forms .widget .addon i,\n.ts-forms .widget .addon-btn i { color:rgba(0,0,0,.34); font-size:17px; z-index:2; }\n\n.ts-forms .widget .adn-50 { width:50px; }\n\n.ts-forms .widget .adn-130 { width:130px; }\n\n.ts-forms .widget.right-50 .input { padding-right:50px; }\n\n.ts-forms .widget.left-50 .input { padding-left:50px; }\n\n.ts-forms .widget.right-130 .input { padding-right:130px; }\n\n.ts-forms .widget.left-130 .input { padding-left:130px; }\n\n.ts-forms .widget .adn-left,\n.ts-forms .widget.right-50 .input input,\n.ts-forms .widget.right-130 .input input {\n\t-webkit-border-radius:3px 0 0 3px;\n\t-moz-border-radius:3px 0 0 3px;\n\t-o-border-radius:3px 0 0 3px;\n\tborder-radius:3px 0 0 3px;\n}\n.ts-forms .widget .adn-right,\n.ts-forms .widget.left-50 .input input,\n.ts-forms .widget.left-130 .input input {\n\t-webkit-border-radius:0 3px 3px 0;\n\t-moz-border-radius:0 3px 3px 0;\n\t-o-border-radius:0 3px 3px 0;\n\tborder-radius:0 3px 3px 0;\n}\n.ts-forms .widget.left-50.right-50 .input input,\n.ts-forms .widget.left-50.right-130 .input input,\n.ts-forms .widget.left-130.right-50 .input input,\n.ts-forms .widget.left-130.right-130 .input input {\n\t-webkit-border-radius:0;\n\t-moz-border-radius:0;\n\t-o-border-radius:0;\n\tborder-radius:0;\n}\n\n/* Inputs\n=============================== */\n.ts-forms input[type=\"text\"],\n.ts-forms input[type=\"password\"],\n.ts-forms input[type=\"email\"],\n.ts-forms input[type=\"search\"],\n.ts-forms input[type=\"url\"],\n.ts-forms textarea,\n.ts-forms select {\n\tbackground:#fff;\n\tborder:2px solid rgba(0,0,0,.12);\n\t-webkit-border-radius:3px;\n\t-moz-border-radius:3px;\n\t-o-border-radius:3px;\n\tborder-radius:3px;\n\tcolor:rgba(0,0,0,.87);\n\tdisplay:block;\n\tfont-family:inherit;\n\tfont-size:16px;\n\theight:48px;\n\tpadding:10px 15px;\n\twidth:100%;\n\toutline:none;\n\t-webkit-appearance:none;\n\t-moz-appearance:none;\n\tappearance:none;\n\t-webkit-box-sizing:border-box;\n\t-moz-box-sizing:border-box;\n\tbox-sizing:border-box;\n\t-webkit-transition:all.4s;\n\t-moz-transition:all.4s;\n\t-ms-transition:all.4s;\n\t-o-transition:all.4s;\n\ttransition:all.4s;\n}\n.ts-forms input[type=\"text\"]:hover,\n.ts-forms input[type=\"password\"]:hover,\n.ts-forms input[type=\"email\"]:hover,\n.ts-forms input[type=\"search\"]:hover,\n.ts-forms input[type=\"url\"]:hover,\n.ts-forms textarea:hover,\n.ts-forms select:hover { border:2px solid #FF0000; }\n\n.ts-forms input[type=\"text\"]:focus,\n.ts-forms input[type=\"password\"]:focus,\n.ts-forms input[type=\"email\"]:focus,\n.ts-forms input[type=\"search\"]:focus,\n.ts-forms input[type=\"url\"]:focus,\n.ts-forms textarea:focus,\n.ts-forms select:focus { border:2px solid #F00; }\n\n.ts-forms .input textarea {\n\theight:112px;\n\toverflow:auto;\n\tmin-height:52px;\n\tresize:vertical;\n}\n\n.ts-forms .input textarea:focus { height:128px; }\n\n/* Placeholders\n=============================== */\n.ts-forms input::-webkit-input-placeholder,\n.ts-forms textarea::-webkit-input-placeholder { color:rgba(0,0,0,.54); }\n\n.ts-forms input::-moz-placeholder,\n.ts-forms textarea::-moz-placeholder { color:rgba(0,0,0,.54); }\n\n.ts-forms input:-moz-placeholder,\n.ts-forms textarea:-moz-placeholder { color:rgba(0,0,0,.54); }\n\n.ts-forms input:-ms-input-placeholder,\n.ts-forms textarea:-ms-input-placeholder { color:rgba(0,0,0,.54); }\n\n.ts-forms input:focus::-webkit-input-placeholder,\n.ts-forms textarea:focus::-webkit-input-placeholder { color:rgba(0,0,0,.36); }\n\n.ts-forms input:focus::-moz-placeholder,\n.ts-forms textarea:focus::-moz-placeholder { color:rgba(0,0,0,.36); }\n\n.ts-forms input:focus:-moz-placeholder,\n.ts-forms textarea:focus:-moz-placeholder { color:rgba(0,0,0,.36); }\n\n.ts-forms input:focus:-ms-input-placeholder,\n.ts-forms textarea:focus:-ms-input-placeholder { color:rgba(0,0,0,.36); }\n\n/* Select\n=============================== */\n.ts-forms select { padding-left:13px; }\n\n.ts-forms .multiple-select select { height:auto; }\n\n.ts-forms .select i {\n\tbackground:#fff;\n\t-webkit-box-shadow:0 0 0 11px #fff;\n\t-moz-box-shadow:0 0 0 11px #fff;\n\t-o-box-shadow:0 0 0 11px #fff;\n\tbox-shadow:0 0 0 11px #fff;\n\theight:20px;\n\tposition:absolute;\n\tpointer-events:none;\n\ttop:14px;\n\tright:14px;\n\twidth:14px;\n}\n.ts-forms .select i:after,\n.ts-forms .select i:before {\n\tborder-right:4px solid transparent;\n\tborder-left:4px solid transparent;\n\tcontent:'';\n\tposition:absolute;\n\tright:3px;\n}\n.ts-forms .select i:after { border-top:6px solid rgba(0,0,0,.4); bottom:1px; }\n\n.ts-forms .select i:before { border-bottom:6px solid rgba(0,0,0,.4); top:3px; }\n\n.ts-forms .select { position:relative; }\n\n/* Icons\n=============================== */\n.ts-forms .icon-left,\n.ts-forms .icon-right {\n\tcolor:rgba(0,0,0,.54);\n\tfont-size:17px;\n\theight:38px;\n\tline-height:38px !important;\n\topacity:.6;\n\tposition:absolute;\n\ttext-align:center;\n\ttop:5px;\n\twidth:42px;\n\tz-index:2;\n}\n.ts-forms .icon-left {  left:3px; }\n\n.ts-forms .icon-right {  right:3px; }\n\n.ts-forms .icon-left ~ input,\n.ts-forms .icon-left ~ textarea { padding-left:58px; }\n\n.ts-forms .icon-right ~ input,\n.ts-forms .icon-right ~ textarea { padding-right:58px; }\n\n/* File for upload\n=============================== */\n.ts-forms .file-button input {\n\tbottom:-1px;\n\tfont-size:34px;\n\topacity:0;\n\tposition:absolute;\n\twidth:108px;\n\tz-index:0;\n}\n.ts-forms .prepend-small-btn .file-button input,\n.ts-forms .prepend-big-btn .file-button input { left:0; }\n\n.ts-forms .append-small-btn .file-button input,\n.ts-forms .append-big-btn .file-button input { right:0; }\n\n.ts-forms .prepend-small-btn .file-button,\n.ts-forms .append-small-btn .file-button { width:64px; }\n\n.ts-forms .prepend-big-btn .file-button,\n.ts-forms .append-big-btn .file-button { width:106px; }\n\n.ts-forms .prepend-small-btn .file-button,\n.ts-forms .prepend-big-btn .file-button { left:4px; }\n\n.ts-forms .append-small-btn .file-button,\n.ts-forms .append-big-btn .file-button { right:4px; }\n\n.ts-forms .append-small-btn .file-button,\n.ts-forms .append-big-btn .file-button,\n.ts-forms .prepend-small-btn .file-button,\n.ts-forms .prepend-big-btn .file-button {\n\t-webkit-border-radius:2px;\n\t-moz-border-radius:2px;\n\t-o-border-radius:2px;\n\tborder-radius:2px;\n}\n\n.ts-forms .prepend-big-btn input[type=\"text\"] { padding-left:123px; }\n\n.ts-forms .append-big-btn input[type=\"text\"] { padding-right:123px; }\n\n.ts-forms .prepend-small-btn input[type=\"text\"] { padding-left:81px; }\n\n.ts-forms .append-small-btn input[type=\"text\"] { padding-right:81px; }\n\n.ts-forms .input input[type=\"file\"] { cursor:pointer; }\n\n/* Buttons\n=============================== */\n.ts-forms .primary-btn,\n.ts-forms .secondary-btn {\nborder: medium none;\nborder-radius: 3px;\ncolor: #fff;\ncursor: pointer;\ndisplay: block;\nfont: 16px \"Open Sans\",Helvetica,Arial,sans-serif;\nheight: 48px;\nmargin: 10px auto;\noutline: medium none;\npadding: 0 60px;\ntext-align: center;\nwhite-space: nowrap;\n}\n.ts-forms .primary-btn { position:relative; }\n\n.ts-forms .content .primary-btn,\n.ts-forms .content .secondary-btn { margin:0 0 20px 20px; }\n\n.ts-forms .file-button {\n\tcolor:#fff;\n\tdisplay:block;\n\tfont-family:'Open Sans',Helvetica,Arial,sans-serif;\n\tfont-size:14px;\n\theight:40px;\n\tline-height:40px;\n\toutline:none;\n\toverflow:hidden;\n\tposition:absolute;\n\ttext-align:center;\n\ttop:4px;\n\tz-index:1;\n}\n.ts-forms .primary-btn,\n.ts-forms .file-button,\n.ts-forms .secondary-btn {\n\tbackground:#FF0000;\n\t-webkit-transition:background.2s;\n\t-moz-transition:background.2s;\n\t-ms-transition:background.2s;\n\t-o-transition:background.2s;\n\ttransition:background.2s;\n}\n.ts-forms .primary-btn:hover,\n.ts-forms .file-button:hover,\n.ts-forms .secondary-btn:hover { background:#3f51b5; }\n\n.ts-forms .primary-btn:hover.processing { background:#303f9f; cursor:wait; }\n\n.ts-forms .file-button:hover + input { border:2px solid rgba(48,63,159,.6); }\n\n.ts-forms .secondary-btn,\n.ts-forms .secondary-btn:hover,\n.ts-forms .secondary-btn:active { opacity:.5; }\n\n.ts-forms .primary-btn.processing:before {\n\tbackground:rgba(255,255,255,.4);\n\tcontent:'';\n\theight:100%;\n\tposition:absolute;\n\ttop:0;\n\tleft:0;\n\twidth:100%;\n\t-webkit-animation:processing 3s ease-in-out infinite;\n\t-moz-animation:processing 3s ease-in-out infinite;;\n\t-ms-animation:processing 3s ease-in-out infinite;\n\t-o-animation:processing 3s ease-in-out infinite;\n\tanimation:processing 3s ease-in-out infinite;\n}\n@-webkit-keyframes processing {\n\t0% { width:0; }\n\t100% { width:100%; }\n}\n@-moz-keyframes processing {\n\t0% { width:0; }\n\t100% { width:100%; }\n}\n@-ms-keyframes processing {\n\t0% { width:0; }\n\t100% { width:100%; }\n}\n@-o-keyframes processing {\n\t0% { width:0; }\n\t100% { width:100%; }\n}\n@keyframes processing {\n\t0% { width:0; }\n\t100% { width:100%; }\n}\n\n/* Tooltip\n=============================== */\n.ts-forms .tooltip,\n.ts-forms .tooltip-image {\n\tbackground-color:#FF0000;\n\t-webkit-border-radius:3px;\n\t-moz-border-radius:3px;\n\t-o-border-radius:3px;\n\tborder-radius:3px;\n\tdisplay:block;\n\tleft:-9999px;\n\topacity:0;\n\tposition:absolute;\n\tz-index:20px;\n}\n.ts-forms .tooltip {\n\tcolor:#fff;\n\tfont:600 13px 'Open Sans',Helvetica,Arial,sans-serif;\n\tline-height:20px;\n\tpadding:5px 10px;\n}\n.ts-forms .tooltip-image { padding:2px 2px 1px; }\n\n.ts-forms .input input:focus + .tooltip,\n.ts-forms .input textarea:focus + .tooltip,\n.ts-forms .select select:focus + .tooltip,\n.ts-forms .input input:focus + .tooltip-image,\n.ts-forms .input textarea:focus + .tooltip-image,\n.ts-forms .select select:focus + .tooltip-image { opacity:1; z-index:5; }\n\n.ts-forms .tooltip-left-top { bottom:100%; margin-bottom:8px; }\n\n.ts-forms .tooltip-left-top:before {\n\tborder-color:#1a237e transparent;\n\tborder-style:solid;\n\tborder-width:8px 7px 0;\n\tbottom:-6px;\n\tcontent:\"\";\n\tleft:16px;\n\tposition:absolute;\n}\n.ts-forms .input input:focus + .tooltip-left-top,\n.ts-forms .input textarea:focus + .tooltip-left-top,\n.ts-forms .select select:focus + .tooltip-left-top { left:0; right:auto; }\n\n.ts-forms .tooltip-right-top { bottom:100%; margin-bottom:8px; }\n\n.ts-forms .tooltip-right-top:before {\n\tborder-color:#FF0000 transparent;\n\tborder-style:solid;\n\tborder-width:8px 7px 0;\n\tbottom:-6px;\n\tcontent:\"\";\n\tposition:absolute;\n\tright:16px;\n}\n.ts-forms .input input:focus + .tooltip-right-top,\n.ts-forms .input textarea:focus + .tooltip-right-top,\n.ts-forms .select select:focus + .tooltip-right-top { left:auto; right:0; }\n\n.ts-forms .tooltip-left-bottom { margin-top:8px; top:100%; }\n\n.ts-forms .tooltip-left-bottom:before {\n\tborder-color:#1a237e transparent;\n\tborder-style:solid;\n\tborder-width:0 7px 8px;\n\ttop:-6px;\n\tcontent:\"\";\n\tleft:16px;\n\tposition:absolute;\n}\n.ts-forms .input input:focus + .tooltip-left-bottom,\n.ts-forms .input textarea:focus + .tooltip-left-bottom,\n.ts-forms .select select:focus + .tooltip-left-bottom { left:0; right:auto; }\n\n.ts-forms .tooltip-right-bottom { margin-top:8px; top:100%; }\n\n.ts-forms .tooltip-right-bottom:before {\n\tborder-color:#1a237e transparent;\n\tborder-style:solid;\n\tborder-width:0 7px 8px;\n\ttop:-6px;\n\tcontent:\"\";\n\tright:16px;\n\tposition:absolute;\n}\n.ts-forms .input input:focus + .tooltip-right-bottom,\n.ts-forms .input textarea:focus + .tooltip-right-bottom,\n.ts-forms .select select:focus + .tooltip-right-bottom { left:auto; right:0; }\n\n.ts-forms .tooltip-right-side { margin-left:8px; top:8px; white-space:nowrap; }\n\n.ts-forms .tooltip-right-side:before {\n\tborder-color:transparent #1a237e;\n\tborder-style:solid;\n\tborder-width:7px 8px 7px 0;\n\tcontent:\"\";\n\tleft:-6px;\n\tposition:absolute;\n\ttop:8px;\n}\n.ts-forms .input input:focus + .tooltip-right-side,\n.ts-forms .input textarea:focus + .tooltip-right-side,\n.ts-forms .select select:focus + .tooltip-right-side { left:100%; }\n\n.ts-forms .tooltip-left-side { margin-right:8px; top:8px; white-space:nowrap; }\n\n.ts-forms .tooltip-left-side:before {\n\tborder-color:transparent #1a237e;\n\tborder-style:solid;\n\tborder-width:7px 0 7px 8px;\n\tcontent:\"\";\n\tright:-6px;\n\tposition:absolute;\n\ttop:8px;\n}\n.ts-forms .input input:focus + .tooltip-left-side,\n.ts-forms .input textarea:focus + .tooltip-left-side,\n.ts-forms .select select:focus + .tooltip-left-side { left:auto; right:100%; }\n\n/* Status message\n=============================== */\n.ts-forms .error-message,\n.ts-forms .success-message,\n.ts-forms .info-message,\n.ts-forms .warning-message {\n\tborder:2px solid;\n\t-webkit-border-radius:3px;\n\t-moz-border-radius:3px;\n\t-o-border-radius:3px;\n\tborder-radius:3px;\n\tdisplay:block;\n\tfont:16px/24px 'Open Sans',Helvetica,Arial,sans-serif;\n\tpadding:15px;\n}\n.ts-forms .error-message i,\n.ts-forms .success-message i,\n.ts-forms .info-message i,\n.ts-forms .warning-message i {\n\tfont-size:18px;\n\tfloat:left;\n\theight:24px;\n\tline-height:24px;\n\tpadding-right:10px;\n}\n.ts-forms .error-message ul,\n.ts-forms .success-message ul,\n.ts-forms .info-message ul,\n.ts-forms .warning-message ul { margin:0; }\n\n.ts-forms span.error-view,\n.ts-forms span.success-view,\n.ts-forms span.warning-view,\n.ts-forms span.info-view {\n\tdisplay:block;\n\tfont-size:14px;\n\theight:14px;\n\tline-height:14px;\n\tmargin-top:5px;\n\tpadding:0 2px;\n}\n.ts-forms span.hint {\n\tdisplay:block;\n\tfont-size:13px;\n\tcolor:inherit;\n\theight:13px;\n\tline-height:13px;\n\tmargin-top:5px;\n\tpadding:0 2px;\n}\n\n/* Disabled state\n=============================== */\n.ts-forms .widget.disabled-view,\n.ts-forms .input.disabled-view,\n.ts-forms .select.disabled-view,\n.ts-forms .checkbox.disabled-view,\n.ts-forms .radio.disabled-view,\n.ts-forms .checkbox-toggle.disabled-view,\n.ts-forms .radio-toggle.disabled-view,\n.ts-forms .primary-btn.disabled-view,\n.ts-forms .secondary-btn.disabled-view,\n.ts-forms .file-button.disabled-view { cursor:default; opacity:.5; }\n\n.ts-forms .input.disabled-view input[type=\"file\"] { cursor:default; }\n\n.ts-forms .widget.disabled-view input,\n.ts-forms .input.disabled-view input,\n.ts-forms .input.disabled-view textarea,\n.ts-forms .select.disabled-view select { border-color:rgba(0,0,0,.12) !important; }\n\n.ts-forms .checkbox.disabled-view i,\n.ts-forms .radio.disabled-view i,\n.ts-forms .checkbox-toggle.disabled-view i,\n.ts-forms .radio-toggle.disabled-view i { border-color:rgba(0,0,0,.26) !important; }\n\n.ts-forms .primary-btn.disabled-view,\n.ts-forms .secondary-btn.disabled-view,\n.ts-forms .disabled-view .file-button { background:#303f9f; }\n\n.ts-forms .widget.disabled-view .addon-btn:hover,\n.ts-forms .widget.disabled-view .addon-btn:focus { background:#e0e0e0; cursor:default; color:rgba(0,0,0,.56); }\n\n.ts-forms .widget.disabled-view .addon-btn i { color:rgba(0,0,0,.24) !important; }\n\n/* Error state\n=============================== */\n.ts-forms .error-view .checkbox i,\n.ts-forms .error-view .radio i,\n.ts-forms .error-view .checkbox-toggle i,\n.ts-forms .error-view .radio-toggle i,\n.ts-forms .error-view input,\n.ts-forms .error-view select,\n.ts-forms .error-view textarea { background:#ffebee !important; }\n\n.ts-forms .select.error-view i {\n\tbackground-color:#ffebee;\n\t-webkit-box-shadow:0 0 0 12px #ffebee;\n\t-moz-box-shadow:0 0 0 12px #ffebee;\n\t-o-box-shadow:0 0 0 12px #ffebee;\n\tbox-shadow:0 0 0 12px #ffebee;\n}\n.ts-forms .error-view .icon-left,\n.ts-forms .error-view .icon-right { border-color:#e57373; }\n\n.ts-forms .error-view .icon-left,\n.ts-forms .error-view .icon-right,\n.ts-forms span.error-view,\n.ts-forms .error-message i { color:#b71c1c; }\n\n.ts-forms .error-message { background:#ffebee; border-color:#b71c1c; color:#b71c1c; }\n\n/* Success state\n=============================== */\n.ts-forms .success-view .checkbox i,\n.ts-forms .success-view .radio i,\n.ts-forms .success-view .checkbox-toggle i,\n.ts-forms .success-view .radio-toggle i,\n.ts-forms .success-view input,\n.ts-forms .success-view select,\n.ts-forms .success-view textarea { background:#e8f5e9 !important; }\n\n.ts-forms .select.success-view i {\n\tbackground-color:#e8f5e9;\n\t-webkit-box-shadow:0 0 0 12px #e8f5e9;\n\t-moz-box-shadow:0 0 0 12px #e8f5e9;\n\t-o-box-shadow:0 0 0 12px #e8f5e9;\n\tbox-shadow:0 0 0 12px #e8f5e9;\n}\n.ts-forms .success-view .icon-left,\n.ts-forms .success-view .icon-right { border-color:#81c784; }\n\n.ts-forms .success-view .icon-left,\n.ts-forms .success-view .icon-right,\n.ts-forms span.success-view,\n.ts-forms .success-message i { color:#1b5e20; }\n\n.ts-forms .success-message { background:#e8f5e9; border-color:#1b5e20; color:#1b5e20; }\n\n/* Warning state\n=============================== */\n.ts-forms .warning-view .checkbox i,\n.ts-forms .warning-view .radio i,\n.ts-forms .warning-view .checkbox-toggle i,\n.ts-forms .warning-view .radio-toggle i,\n.ts-forms .warning-view input,\n.ts-forms .warning-view select,\n.ts-forms .warning-view textarea { background:#fff8e1 !important; }\n\n.ts-forms .select.warning-view i {\n\tbackground-color:#fff8e1;\n\t-webkit-box-shadow:0 0 0 12px #fff8e1;\n\t-moz-box-shadow:0 0 0 12px #fff8e1;\n\t-o-box-shadow:0 0 0 12px #fff8e1;\n\tbox-shadow:0 0 0 12px #fff8e1;\n}\n.ts-forms .warning-view .icon-left,\n.ts-forms .warning-view .icon-right { border-color:#f9a825; }\n\n.ts-forms .warning-view .icon-left,\n.ts-forms .warning-view .icon-right,\n.ts-forms span.warning-view,\n.ts-forms .warning-message i { color:#f57f17; }\n\n.ts-forms .warning-message { background:#fff8e1; border-color:#f57f17; color:#f57f17; }\n\n/* Info state\n=============================== */\n.ts-forms .info-view .checkbox i,\n.ts-forms .info-view .radio i,\n.ts-forms .info-view .checkbox-toggle i,\n.ts-forms .info-view .radio-toggle i,\n.ts-forms .info-view input,\n.ts-forms .info-view select,\n.ts-forms .info-view textarea { background:#e1f5fe !important; }\n\n.ts-forms .select.info-view i {\n\tbackground-color:#e1f5fe;\n\t-webkit-box-shadow:0 0 0 12px #e1f5fe;\n\t-moz-box-shadow:0 0 0 12px #e1f5fe;\n\t-o-box-shadow:0 0 0 12px #e1f5fe;\n\tbox-shadow:0 0 0 12px #e1f5fe;\n}\n.ts-forms .info-view .icon-left,\n.ts-forms .info-view .icon-right { border-color:#0288d1; }\n\n.ts-forms .info-view .icon-left,\n.ts-forms .info-view .icon-right,\n.ts-forms span.info-view,\n.ts-forms .info-message i { color:#01579b; }\n\n.ts-forms .info-message { background:#e1f5fe; border-color:#01579b; color:#01579b; }\n\n/* Ratings\n==================================== */\n.ts-forms .rating-group { color:rgba(0,0,0,.87); height:30px; line-height:30px; margin-bottom:4px; }\n\n.ts-forms .rating-group:last-child { margin-bottom:0; }\n\n.ts-forms .rating-group .label { float:left; font-size:16px; height:30px; line-height:30px; margin-bottom:0; }\n\n.ts-forms .rating-group .ratings { float:right; height:30px; line-height:30px; }\n\n.ts-forms .ratings input { left:-9999px; position:absolute; }\n\n.ts-forms .ratings input + label {\n\tcolor:rgba(0,0,0,.26);\n\tcursor:pointer;\n\tfont-size:20px;\n\tfloat:right;\n\tpadding:0 2px;\n\t-webkit-transition:color.2s;\n\t-moz-transition:color.2s;\n\t-ms-transition:color.2s;\n\t-o-transition:color.2s;\n\ttransition:color.2s;\n}\n.ts-forms .ratings input + label:hover,\n.ts-forms .ratings input + label:hover ~ label,\n.ts-forms .ratings input:checked + label,\n.ts-forms .ratings input:checked + label ~ label { color:#303f9f; }\n\n/* Social links\n==================================== */\n.ts-forms .social-btn,\n.ts-forms .social-icon { margin-bottom:6px; position:relative; }\n\n.ts-forms .social-icon { display:inline-block; margin-left:2px; margin-right:2px; }\n\n.ts-forms .social-center { text-align:center; }\n\n.ts-forms .social-btn i,\n.ts-forms .social-icon i {\n\tbackground-color:rgba(0,0,0,.15);\n\tcolor:#fff;\n\tcursor:pointer;\n\tfont-size:22px;\n\tleft:0;\n\tline-height:48px;\n\tposition:absolute;\n\ttext-align:center;\n\twidth:48px;\n\tz-index:2;\n}\n.ts-forms .social-btn i {\n\t-webkit-border-radius:3px 0 0 3px;\n\t-moz-border-radius:3px 0 0 3px;\n\t-o-border-radius:3px 0 0 3px;\n\tborder-radius:3px 0 0 3px;\n}\n.ts-forms .social-icon i {\n\t-webkit-border-radius:3px;\n\t-moz-border-radius:3px;\n\t-o-border-radius:3px;\n\tborder-radius:3px;\n}\n.ts-forms .social-btn button,\n.ts-forms .social-icon button {\n\t-webkit-border-radius:3px;\n\t-moz-border-radius:3px;\n\t-o-border-radius:3px;\n\tborder-radius:3px;\n\tborder:none;\n\tcolor:#fff;\n\tcursor:pointer;\n\tfont:16px 'Open Sans',Helvetica,Arial,sans-serif;\n\tpadding:0 0 0 48px;\n\toutline:none;\n\toverflow:hidden;\n\theight:48px;\n\twhite-space:nowrap;\n\t-webkit-transition:background.2s;\n\t-moz-transition:background.2s;\n\t-ms-transition:background.2s;\n\t-o-transition:background.2s;\n\ttransition:background.2s;\n}\n.ts-forms .social-btn button { width:100%; }\n\n.ts-forms .social-icon button { width:48px; }\n\n.ts-forms .social-btn.vk button,\n.ts-forms .social-icon.vk button { background:rgb(47,80,112); }\n.ts-forms .social-btn.vk:hover button,\n.ts-forms .social.vk:hover button { background:rgba(47,80,112,.85); }\n\n.ts-forms .social-btn.skype button,\n.ts-forms .social-icon.skype button { background:rgb(19,176,237); }\n.ts-forms .social-btn.skype:hover button,\n.ts-forms .social-icon.skype:hover button { background:rgba(19,176,237,.85); }\n\n.ts-forms .social-btn.yahoo button,\n.ts-forms .social-icon.yahoo button { background:rgb(112,14,156); }\n.ts-forms .social-btn.yahoo:hover button,\n.ts-forms .social-icon.yahoo:hover button { background:rgba(112,14,156,.85); }\n\n.ts-forms .social-btn.flickr button,\n.ts-forms .social-icon.flickr button { background:rgb(254,59,147); }\n.ts-forms .social-btn.flickr:hover button,\n.ts-forms .social-icon.flickr:hover button { background:rgba(254,59,147,.85); }\n\n.ts-forms .social-btn.tumblr button,\n.ts-forms .social-icon.tumblr button { background:rgb(56,72,83); }\n.ts-forms .social-btn.tumblr:hover button,\n.ts-forms .social-icon.tumblr:hover button { background:rgba(56,72,83,.85); }\n\n.ts-forms .social-btn.google button,\n.ts-forms .social-icon.google button { background:rgb(8,104,185); }\n.ts-forms .social-btn.google:hover button,\n.ts-forms .social-icon.google:hover button { background:rgba(8,104,185,.85); }\n\n.ts-forms .social-btn.twitter button,\n.ts-forms .social-icon.twitter button { background:rgb(44,168,210); }\n.ts-forms .social-btn.twitter:hover button,\n.ts-forms .social-icon.twitter:hover button { background:rgba(44,168,210,.85); }\n\n.ts-forms .social-btn.youtube button,\n.ts-forms .social-icon.youtube button { background:rgb(206,51,44); }\n.ts-forms .social-btn.youtube:hover button,\n.ts-forms .social-icon.youtube:hover button { background:rgba(206,51,44,.85); }\n\n.ts-forms .social-btn.facebook button,\n.ts-forms .social-icon.facebook button { background:rgb(48,88,145); }\n.ts-forms .social-btn.facebook:hover button,\n.ts-forms .social-icon.facebook:hover button { background:rgba(48,88,145,.85); }\n\n.ts-forms .social-btn.linkedin button,\n.ts-forms .social-icon.linkedin button { background:rgb(68,152,200); }\n.ts-forms .social-btn.linkedin:hover button,\n.ts-forms .social-icon.linkedin:hover button { background:rgba(68,152,200,.85); }\n\n.ts-forms .social-btn.pinterest button,\n.ts-forms .social-icon.pinterest button { background:rgb(200,40,40); }\n.ts-forms .social-btn.pinterest:hover button,\n.ts-forms .social-icon.pinterest:hover button { background:rgba(200,40,40,.85); }\n\n.ts-forms .social-btn.google-plus button,\n.ts-forms .social-icon.google-plus button { background:rgb(206,77,57); }\n.ts-forms .social-btn.google-plus:hover button,\n.ts-forms .social-icon.google-plus:hover button { background:rgba(206,77,57,.85); }\n\n/* Captcha\n=============================== */\n.ts-forms .captcha-group { position: relative; }\n\n.ts-forms .captcha-group .captcha {\n\tbackground-color:#e0e0e0;\n\tborder:none;\n\t-webkit-border-radius:3px 0 0 3px;\n\t-moz-border-radius:3px 0 0 3px;\n\t-o-border-radius:3px 0 0 3px;\n\tborder-radius:3px 0 0 3px;\n\theight:48px;\n\tline-height:48px;\n\tposition:absolute;\n\toutline:none;\n\ttext-align:center;\n\ttop:0;\n\twidth:90px;\n}\n.ts-forms .captcha-group .input { padding-left:90px; }\n\n.ts-forms .captcha-group .input input {\n\t-webkit-border-radius:0 3px 3px 0;\n\t-moz-border-radius:0 3px 3px 0;\n\t-o-border-radius:0 3px 3px 0;\n\tborder-radius:0 3px 3px 0;\n}\n\n/* Stepper\n=============================== */\n.ts-forms .stepper { position:relative; padding-right:40px; }\n\n.ts-forms .stepper input {\n\t-webkit-border-radius:3px 0 0 3px;\n\t-moz-border-radius:3px 0 0 3px;\n\t-o-border-radius:3px 0 0 3px;\n\tborder-radius:3px 0 0 3px;\n}\n\n.ts-forms .stepper .stepper-wrapper {\n\t-webkit-border-radius:0 3px 3px 0;\n\t-moz-border-radius:0 3px 3px 0;\n\t-o-border-radius:0 3px 3px 0;\n\tborder-radius:0 3px 3px 0;\n\tbottom:0;\n\toutline:none;\n\tposition:absolute;\n\tright:0;\n\ttop:0;\n\toverflow:hidden;\n\twidth:40px;\n}\n.ts-forms .stepper input::-webkit-inner-spin-button,\n.ts-forms .stepper input::-webkit-outer-spin-button { -webkit-appearance:none; margin:0; }\n\n.ts-forms .stepper .stepper-arrow {\n\tbackground-color:#e0e0e0;\n\tcursor:pointer;\n\tdisplay:block;\n\theight:50%;\n\t-webkit-transition:background-color.4s;\n\t-moz-transition:background-color.4s;\n\t-ms-transition:background-color.4s;\n\t-o-transition:background-color.4s;\n\ttransition:background-color.4s;\n}\n.ts-forms .stepper .stepper-arrow:hover { background-color:#d6d6d6; }\n\n.ts-forms .stepper .stepper-arrow.down { bottom: 0; }\n\n.ts-forms .stepper .stepper-arrow.up:after,\n.ts-forms .stepper .stepper-arrow.down:after {\n\tborder-right:5px solid transparent;\n\tborder-left:5px solid transparent;\n\tcontent:'';\n\tposition:absolute;\n\tright:16px;\n\t-webkit-transition:all.4s;\n\t-moz-transition:all.4s;\n\t-ms-transition:all.4s;\n\t-o-transition:all.4s;\n\ttransition:all.4s;\n}\n.ts-forms .stepper .stepper-arrow.down:after { border-top:7px solid rgba(0,0,0,.56); bottom:13px; }\n\n.ts-forms .stepper .stepper-arrow.up:after { border-bottom: 7px solid rgba(0,0,0,.56); top:13px; }\n\n.ts-forms .stepper .stepper-arrow:hover.down:after { border-top:7px solid rgba(0,0,0,.87); }\n\n.ts-forms .stepper .stepper-arrow:hover.up:after { border-bottom: 7px solid rgba(0,0,0,.87); }\n\n/* Datapicker and Timepicker\n=============================== */\n.ui-datepicker {\n\tbackground-color:#fff;\n\t-webkit-border-radius:3px;\n\t-moz-border-radius:3px;\n\t-o-border-radius:3px;\n\tborder-radius:3px;\n\tborder:1px solid rgba(0,0,0,.26);\n\t-webkit-box-shadow:0 0 2px rgba(0,0,0,.5);\n\t-moz-box-shadow:0 0 2px rgba(0,0,0,.5);\n\t-o-box-shadow:0 0 2px rgba(0,0,0,.5);\n\tbox-shadow:0 0 2px rgba(0,0,0,.5);\n\tcolor:rgba(0,0,0,.54);\n\tdisplay:none;\n\tfont:16px 'Open Sans',Helvetica,Arial,sans-serif;\n\ttext-align:center;\n\tpadding:10px 0;\n\twidth:240px;\n\tz-index:1100 !important;\n}\n.ui-datepicker-header {\n\tbackground-color:#f0f0f0;\n\tline-height:1.5;\n\tmargin:-2px 0 12px;\n\tpadding:10px;\n\tposition:relative;\n}\n.ui-datepicker-prev,\n.ui-datepicker-next {\n\tcursor:pointer;\n\tdisplay:block;\n\tfont-size:18px;\n\theight:30px;\n\tposition:absolute;\n\ttext-decoration:none;\n\ttop:6px;\n\twidth:30px;\n}\n.ui-datepicker-prev { border-right:1px solid #FF0000; left:0; background:url(../images/left.png) no-repeat center; }\n\n.ui-datepicker-next { border-left:1px solid #FF0000; right:0; background:url(../images/right.png) no-repeat center; }\n\n.ui-datepicker-calendar { border-collapse:collapse; line-height:1.5; width:100%; }\n\n.ui-datepicker-calendar th span { color:rgba(0,0,0,.26); font-weight:lighter; }\n\n.ui-datepicker-calendar a,\n.ui-datepicker-calendar span {\n\tcolor:rgba(0,0,0,.54);\n\tdisplay:block;\n\tfont-size:16px;\n\tmargin:0 auto;\n\ttext-decoration:none;\n\twidth:28px;\n}\n.ui-datepicker-calendar a:hover,\n.ui-datepicker-calendar .ui-state-active { background-color:#FF0000; color:#FFF; font-weight:bold; }\n\n.ui-datepicker-today a { outline:1px solid #FF0000; }\n\n.ui-datepicker-inline {\n\t-webkit-box-sizing:border-box;\n\t-moz-box-sizing:border-box;\n\tbox-sizing:border-box;\n\tborder:2px solid rgba(0,0,0,.12);\n\t-webkit-box-shadow:none;\n\t-moz-box-shadow:none;\n\t-o-box-shadow:none;\n\tbox-shadow:none;\n\twidth:100%;\n}\n.ui-state-disabled span { color:rgba(0,0,0,.26); }\n\n.ui-timepicker-div .ui-widget-header { background-color:#f0f0f0; margin-bottom:8px; padding:10px 0; }\n\n.ui-timepicker-div dl { text-align:left; }\n\n.ui-timepicker-div dl dt { float:left; clear:left; padding:0 0 0 5px; }\n\n.ui-timepicker-div td { font-size:90%; }\n\n.ui-tpicker-grid-label { background:none; border:none; margin:0; padding:0; }\n\n.ui-timepicker-rtl{ direction:rtl; }\n\n.ui-timepicker-rtl dl { text-align:right; padding:0 5px 0 0; }\n\n.ui-timepicker-rtl dl dt{ float:right; clear:right; }\n\n.ui-timepicker-rtl dl dd { margin:0 40% 10px 10px; }\n\n.ui-timepicker-div { font-size:15px; }\n\n.ui-timepicker-div dl {\n\t-webkit-box-sizing:border-box;\n\t-moz-box-sizing:border-box;\n\tbox-sizing:border-box;\n\tborder-top:1px solid rgba(0,0,0,.26);\n\tpadding:16px 5px;\n\tmargin:16px 0 0;\n}\n.ui-timepicker-div .ui_tpicker_time { margin:0 10px 10px 40%; }\n\n.ui-timepicker-div .ui_tpicker_hour,\n.ui-timepicker-div .ui_tpicker_minute { margin:16px 10px 10px 40%; }\n\n.ui-datepicker-buttonpane { border-top:1px solid rgba(0,0,0,.26); }\n\n.ui-datepicker-buttonpane button {\n\tbackground:#e0e0e0;\n\tborder:none;\n\t-webkit-border-radius:3px;\n\t-moz-border-radius:3px;\n\t-o-border-radius:3px;\n\tborder-radius:3px;\n\tcolor:rgba(0,0,0,.56);\n\tcursor:pointer;\n\tfont:14px 'Open Sans',Helvetica,Arial,sans-serif;\n\tpadding:5px 10px;\n\tmargin:10px 5px 0;\n\t-webkit-transition:all.15s;\n\t-moz-transition:all.15s;\n\t-ms-transition:all.15s;\n\t-o-transition:all.15s;\n\ttransition:all.15s;\n\toutline:none;\n}\n.ui-datepicker-buttonpane button:hover { background:#d6d6d6; color:rgba(0,0,0,.87); }\n\n/* jQuery Slider\n=============================== */\n.ui-slider { position:relative; }\n\n.ui-slider .ui-slider-range {\n\tborder:none;\n\tdisplay:block;\n\tfont-size:11px;\n\tposition:absolute;\n\toverflow:hidden;\n\tz-index:1;\n}\n.ui-slider .ui-slider-handle {\n\tbackground-color:#f00;\n\tborder:1px solid #f00;\n\t-webkit-border-radius:3px;\n\t-moz-border-radius:3px;\n\t-o-border-radius:3px;\n\tborder-radius:3px;\n\tcursor:pointer;\n\theight:16px;\n\tposition:absolute;\n\toutline:none;\n\tleft:-5px;\n\twidth:16px;\n\tz-index:2;\n}\n.ui-slider-horizontal { height:7px; }\n\n.ui-slider-vertical { height:100px; width:7px; }\n\n.ui-slider-horizontal .ui-slider-handle { top:-5px; margin-left:-10px; }\n\n.ui-slider-horizontal .ui-slider-range { top:0; height:100%; }\n\n.ui-slider-horizontal .ui-slider-range-min { left:0; }\n\n.ui-slider-horizontal .ui-slider-range-max { right:0; }\n\n.ui-slider-vertical .ui-slider-range-min { bottom:0; }\n\n.ui-slider-vertical .ui-slider-range { left:0; width:100%; }\n\n.ui-slider.ui-widget-content {\n\tbackground-color:#fff;\n\tborder:2px solid #e0e0e0;\n\t-webkit-border-radius:3px;\n\t-moz-border-radius:3px;\n\t-o-border-radius:3px;\n\tborder-radius:3px;\n}\n.ui-slider-vertical .ui-widget-header,\n.ui-slider-horizontal .ui-widget-header { background-color:#f0f0f0; }\n\n.ts-forms .slider-group {\n\tfont:15px 'Open Sans',Helvetica,Arial,sans-serif;\n\theight:48px;\n\tline-height:48px;\n\tpadding:0 2px;\n\tmargin-bottom:5px;\n\twhite-space:nowrap;\n}\n.ts-forms .slider-group label { display:inline-block; color:rgba(0,0,0,.87); padding:0 4px; }\n\n/* Multistep form\n=============================== */\n.ts-forms fieldset {\n\tborder:none;\n\toutline:none;\n\tmargin:0;\n\tpadding:0;\n\tposition:absolute;\n\topacity:0;\n\tleft:-9999px;\n\ttop:0;\n\t-webkit-transform:translateY(-4%);\n\t-moz-transform:translateY(-4%);\n\t-ms-transform:translateY(-4%);\n\t-o-transform:translateY(-4%);\n\ttransform:translateY(-4%);\n\t-webkit-transition:opacity.3s, -webkit-transform.3s;\n\t-moz-transition:opacity.3s, -moz-transform.3s;\n\t-ms-transition:opacity.3s, -ms-transform.3s;\n\t-o-transition:opacity.3s, -o-transform.3s;\n\ttransition:opacity.3s, transform.3s;\n}\n.ts-forms .steps {\n\tborder:1px solid rgba(0,0,0,.12);\n\t-webkit-border-radius:3px;\n\t-moz-border-radius:3px;\n\t-o-border-radius:3px;\n\tborder-radius:3px;\n\tmargin-bottom:25px;\n\ttext-align:center;\n\t-webkit-transition:all.3s;\n\t-moz-transition:all.3s;\n\t-ms-transition:all.3s;\n\t-o-transition:all.3s;\n\ttransition:all.3s;\n\tpadding:4px 0;\n}\n.ts-forms .active-fieldset {\n\tleft:0;\n\tposition:relative;\n\topacity:1;\n\t-webkit-transform:translateY(0);\n\t-moz-transform:translateY(0);\n\t-ms-transform:translateY(0);\n\t-o-transform:translateY(0);\n\ttransform:translateY(0);\n}\n.ts-forms fieldset .tsbox,\n.ts-forms fieldset .ts-row { display:none; }\n\n.ts-forms .active-fieldset .tsbox,\n.ts-forms .active-fieldset .ts-row { display:block; }\n\n.ts-forms .steps p { color:rgba(0,0,0,.56); font-size:16px; height:36px; line-height:36px; margin:0; padding:0; }\n\n.ts-forms .active-step span {font-size:13px; height:13px; line-height:13px; color:#FFF !important; }\n\n.ts-forms .steps span { color:rgba(0,0,0,.56); font-size:13px; height:13px; line-height:13px; }\n\n.ts-forms .active-step .steps p {color:#FFF; }\n\n.ts-forms .active-step .steps { background-color:#f00; border:1px solid #e8eaf6;  }\n\n.ts-forms .passed-step .steps { border:1px solid #e8eaf6; background-color:#CCC; }\n\n.ts-forms.j-multistep .input textarea:focus { height:112px; }\n\n/* Modal form\n=============================== */\n/* Settings for block with links */\n.modal-block {\n\tbackground-color:#fff;\n\t-webkit-border-radius:3px;\n\t-moz-border-radius:3px;\n\t-o-border-radius:3px;\n\tborder-radius:3px;\n\t-webkit-box-shadow:0 0 15px rgba(0,0,0,.4);\n\t-moz-box-shadow:0 0 15px rgba(0,0,0,.4);\n\t-o-box-shadow:0 0 15px rgba(0,0,0,.4);\n\tbox-shadow:0 0 15px rgba(0,0,0,.4);\n\tcolor:rgba(0,0,0,.54);\n\tfont-family:'Open Sans',Helvetica,Arial,sans-serif;\n\tfont-size:15px;\n\tmargin:0 auto;\n\tmax-width:320px;\n\toutline:medium none;\n\tpadding:20px;\n}\n.modal-block .modal-link {\n\tborder-bottom:1px solid #90caf9;\n\tcolor:#1e88e5;\n\tfont-size:14px;\n\tline-height:inherit;\n\ttext-decoration:none;\n}\n.modal-block .modal-link:hover { border-bottom:none; }\n\n/* Settings for modal form directly */\n.modal-form { display:none; position:fixed; width:100%; z-index:1200; }\n\n.modal-fill {\n\tbackground-color:rgba(103,119,129,.5);\n\tdisplay:none;\n\theight:100%;\n\tleft:0;\n\tposition:fixed;\n\ttop:0;\n\twidth:100%;\n\tz-index:1100;\n}\n.ts-forms .modal-close {\n\tbackground-color:rgba(0,0,0,.3);\n\t-webkit-border-radius:2px;\n\t-moz-border-radius:2px;\n\t-o-border-radius:2px;\n\tborder-radius:2px;\n\tcursor:pointer;\n\tposition:absolute;\n\tright:8px;\n\ttop:11px;\n\t-webkit-transition:background-color.15s;\n\t-moz-transition:background-color.15s;\n\t-ms-transition:background-color.15s;\n\t-o-transition:background-color.15s;\n\ttransition:background-color.15s;\n}\n.ts-forms .modal-close:hover,\n.ts-forms .modal-close:focus { background-color:rgba(0,0,0,.6); }\n\n.ts-forms .modal-close i { display:block; height:22px; width:23px; }\n\n.ts-forms .modal-close i:before,\n.ts-forms .modal-close i:after {\n\tbackground-color:#fff;\n\tcontent:'';\n\theight:3px;\n\tposition:absolute;\n\tright:1px;\n\ttop:10px;\n\twidth:21px;\n}\n.ts-forms .modal-close i:before{\n\t-webkit-transform:rotate(45deg);\n\t-moz-transform:rotate(45deg);\n\t-ms-transform:rotate(45deg);\n\t-o-transform:rotate(45deg);\n\ttransform:rotate(45deg);\n}\n.ts-forms .modal-close i:after{\n\t-webkit-transform:rotate(-45deg);\n\t-moz-transform:rotate(-45deg);\n\t-ms-transform:rotate(-45deg);\n\t-o-transform:rotate(-45deg);\n\ttransform:rotate(-45deg);\n}\n\n/* Pop-up form\n=============================== */\n/* Popup menu forms */\n.popup-menu { padding:0 15px; }\n\n.popup-list {\n\tbackground-color:#f9fafd;\n\t-webkit-border-radius:3px;\n\t-moz-border-radius:3px;\n\t-o-border-radius:3px;\n\tborder-radius:3px;\n\t-webkit-box-shadow:0 0 15px rgba(0,0,0,.4);\n\t-moz-box-shadow:0 0 15px rgba(0,0,0,.4);\n\t-o-box-shadow:0 0 15px rgba(0,0,0,.4);\n\tbox-shadow:0 0 15px rgba(0,0,0,.4);\n\tmax-width:100%;\n\tposition:relative;\n}\n.popup-list:after {\n\tclear:both;\n\tcontent:\".\";\n\tdisplay:block;\n\theight:0;\n\tvisibility:hidden;\n}\n\n.popup-list > ul { font-size:0; float:right; outline:none; padding:5px; }\n\n.popup-list > ul > li {\n\tborder-left:1px solid rgba(0,0,0,.12);\n\tdisplay:inline-block;\n\tfont-family:'Open Sans',Helvetica,Arial,sans-serif;\n\tfont-size:16px;\n\tline-height:45px;\n\tpadding:0 20px;\n\tlist-style-type:none;\n}\n.popup-list > ul > li:hover { background-color:#e8eaf6; }\n\n.popup-list-open { position:relative; }\n\n.popup-list-open .ts-forms { margin:10px auto 0; z-index:999; }\n\n.popup-list-open .ts-forms .input textarea:focus { height:112px; }\n\n.popup-list-open .popup-list-wrapper {\n\tdisplay:none;\n\topacity:0;\n\tposition:absolute;\n\tleft:-9999px;\n\twidth:400px;\n\t-webkit-animation:popup-list-open.4s both;\n\t-moz-animation:popup-list-open.4s both;\n\t-ms-animation:popup-list-open.4s both;\n\t-o-animation:popup-list-open.4s both;\n\tanimation:popup-list-open.4s both;\n}\n@-webkit-keyframes popup-list-open {\n\tfrom { -webkit-transform:translate(0,-10px); transform:translate(0,-10px); }\n\tto { -webkit-transform:translate(0,0); transform:translate(0,0); }\n}\n@-moz-keyframes popup-list-open {\n\tfrom { -moz-transform:translate(0,-10px); transform:translate(0,-10px); }\n\tto { -moz-transform:translate(0,0); transform:translate(0,0); }\n}\n@-ms-keyframes popup-list-open {\n\tfrom { -ms-transform:translate(0,-10px); transform:translate(0,-10px); }\n\tto { -ms-transform:translate(0,0); transform:translate(0,0); }\n}\n@-o-keyframes popup-list-open {\n\tfrom { -o-transform:translate(0,-10px); transform:translate(0,-10px); }\n\tto { -o-transform:translate(0,0); transform:translate(0,0); }\n}\n@-keyframes popup-list-open {\n\tfrom { transform:translate(0,-10px); }\n\tto { transform:translate(0,0); }\n}\n\n/* Popup bottom form */\n.popup-btm-400,\n.popup-btm-640 {\n\tbottom:0;\n\tposition:fixed;\n\t-webkit-transition:width.3s;\n\t-moz-transition:width.3s;\n\t-ms-transition:width.3s;\n\t-o-transition:width.3s;\n\ttransition:width.3s;\n\tright:1%;\n\tz-index:1000;\n}\n.popup-btm-400 { width:400px; }\n\n.popup-btm-640 { width:640px; }\n\n.popup-btm-400 #popup-input-open,\n.popup-btm-400 #popup-input-close,\n.popup-btm-640 #popup-input-open,\n.popup-btm-640 #popup-input-close { display:none; }\n\n.popup-btm-400 .popup-btm-wrapper,\n.popup-btm-640 .popup-btm-wrapper {\n\tbottom:-500px;\n\theight:auto;\n\tposition:absolute;\n\tright:0;\n\t-webkit-transition:all.4s ease-in-out;\n\t-moz-transition:all.4s ease-in-out;\n\t-ms-transition:all.4s ease-in-out;\n\t-o-transition:all.4s ease-in-out;\n\ttransition:all.4s ease-in-out;\n\twidth:100%;\n\tz-index:1000;\n}\n.popup-btm-400 input#popup-input-open:checked ~ .popup-btm-label,\n.popup-btm-640 input#popup-input-open:checked ~ .popup-btm-label { opacity:0; cursor:default; }\n\n.popup-btm-400 input#popup-input-close:checked ~ .popup-btm-wrapper,\n.popup-btm-640 input#popup-input-close:checked ~ .popup-btm-wrapper,\n.popup-btm-400 .popup-btm-wrapper,\n.popup-btm-640 .popup-btm-wrapper {\n\t-webkit-transform:translateY(100%);\n\t-moz-transform:translateY(100%);\n\t-ms-transform:translateY(100%);\n\t-o-transform:translateY(100%);\n\ttransform:translateY(100%);\n}\n.popup-btm-400 input#popup-input-open:checked ~ .popup-btm-wrapper,\n.popup-btm-640 input#popup-input-open:checked ~ .popup-btm-wrapper {\n\tbottom:5px;\n\t-webkit-transform:translateY(0);\n\t-moz-transform:translateY(0);\n\t-ms-transform:translateY(0);\n\t-o-transform:translateY(0);\n\ttransform:translateY(0);\n}\n.popup-btm-400 .ts-forms .input textarea:focus,\n.popup-btm-640 .ts-forms .input textarea:focus { height:112px; }\n\n.popup-btm-400 .popup-btm-label,\n.popup-btm-640 .popup-btm-label {\n\tbackground-color:#f9fafd;\n\t-webkit-border-radius:3px;\n\t-moz-border-radius:3px;\n\t-o-border-radius:3px;\n\tborder-radius:3px;\n\t-webkit-box-shadow:0 0 15px rgba(0,0,0,.4);\n\t-moz-box-shadow:0 0 15px rgba(0,0,0,.4);\n\t-o-box-shadow:0 0 15px rgba(0,0,0,.4);\n\tbox-shadow:0 0 15px rgba(0,0,0,.4);\n\tbottom:0;\n\tcursor:pointer;\n\tcolor:rgba(0,0,0,.87);\n\tdisplay:block;\n\tfont:16px 'Open Sans',Helvetica,Arial,sans-serif;\n\theight:35px;\n\ttext-align:center;\n\topacity:1;\n\tline-height:35px;\n\tpadding:0 30px;\n\tposition:fixed;\n\tright:1%;\n\t-webkit-transition:opacity.4s ease-in-out.05s;\n\t-moz-transition:opacity.4s ease-in-out.05s;\n\t-ms-transition:opacity.4s ease-in-out.05s;\n\t-o-transition:opacity.4s ease-in-out.05s;\n\ttransition:opacity.4s ease-in-out.05s;\n\twhite-space:nowrap;\n\tz-index: 9999;\n}\n.popup-btm-400 .popup-btm-close,\n.popup-btm-640 .popup-btm-close {\n\tbackground-color:rgba(0,0,0,.6);\n\t-webkit-border-radius:2px;\n\t-moz-border-radius:2px;\n\t-o-border-radius:2px;\n\tborder-radius:2px;\n\tcursor:pointer;\n\tposition:absolute;\n\tright:0;\n\ttop:-25px;\n\t-webkit-transition:background-color.15s;\n\t-moz-transition:background-color.15s;\n\t-ms-transition:background-color.15s;\n\t-o-transition:background-color.15s;\n\ttransition:background-color.15s;\n}\n.popup-btm-400 .popup-btm-close:hover,\n.popup-btm-400 .popup-btm-close:focus,\n.popup-btm-640 .popup-btm-close:hover,\n.popup-btm-640 .popup-btm-close:focus { background-color:rgba(0,0,0,.8); }\n\n.popup-btm-400 .popup-btm-close i,\n.popup-btm-640 .popup-btm-close i { display:block; height:22px; width:23px; }\n\n.popup-btm-400 .popup-btm-close i:before,\n.popup-btm-400 .popup-btm-close i:after,\n.popup-btm-640 .popup-btm-close i:before,\n.popup-btm-640 .popup-btm-close i:after {\n\tbackground-color:#fff;\n\tcontent:'';\n\theight:3px;\n\tposition:absolute;\n\tright:1px;\n\ttop:10px;\n\twidth:21px;\n}\n.popup-btm-400 .popup-btm-close i:before,\n.popup-btm-640 .popup-btm-close i:before {\n\t-webkit-transform:rotate(45deg);\n\t-moz-transform:rotate(45deg);\n\t-ms-transform:rotate(45deg);\n\t-o-transform:rotate(45deg);\n\ttransform:rotate(45deg);\n}\n.popup-btm-400 .popup-btm-close i:after,\n.popup-btm-640 .popup-btm-close i:after {\n\t-webkit-transform:rotate(-45deg);\n\t-moz-transform:rotate(-45deg);\n\t-ms-transform:rotate(-45deg);\n\t-o-transform:rotate(-45deg);\n\ttransform:rotate(-45deg);\n}\n\n/*=================================================================*/\n/* Grid layout */\n/*=================================================================*/\n.ts-forms [class*=\"span\"] {\n\t-webkit-box-sizing:border-box;\n\t-moz-box-sizing:border-box;\n\tbox-sizing:border-box;\n\tfloat:left;\n\tpadding-left:10px;\n\tpadding-right:10px;\n\tposition:relative;\n}\n.ts-forms .span1 { width:8.3333%; }\n.ts-forms .span2 { width:16.6666%; }\n.ts-forms .span3 { width:25%; }\n.ts-forms .span4 { width:33.3333%; }\n.ts-forms .span5 { width:41.6666%; }\n.ts-forms .span6 { width:50%; }\n.ts-forms .span7 { width:58.3333%; }\n.ts-forms .span8 { width:66.6666%; }\n.ts-forms .span9 { width:75%; }\n.ts-forms .span10 { width:83.3333%; }\n.ts-forms .span11 { width:91.6666%; }\n.ts-forms .span12 { width:100%; }\n\n.ts-forms .offset1 { margin-left:8.3333%; }\n.ts-forms .offset2 { margin-left:16.6666%; }\n.ts-forms .offset3 { margin-left:25%; }\n.ts-forms .offset4 { margin-left:33.3333%; }\n.ts-forms .offset5 { margin-left:41.6666%; }\n.ts-forms .offset6 { margin-left:50%; }\n.ts-forms .offset7 { margin-left:58.3333%; }\n.ts-forms .offset8 { margin-left:66.6666%; }\n.ts-forms .offset9 { margin-left:75%; }\n.ts-forms .offset10 { margin-left:83.3333%; }\n.ts-forms .offset11 { margin-left:91.6666%; }\n.ts-forms .offset12 { margin-left:100%; }\n\n.ts-forms .ts-row{ margin:0 -10px; }\n\n.ts-forms .ts-row:after {\n\tclear:both;\n\tcontent:\".\";\n\tdisplay:block;\n\theight:0;\n\tvisibility:hidden;\n}\n\n/* Responsiveness\n==================================== */\n/* Wrapper-640 */\n@media all and (max-width:620px) {\n\n\t.wrapper-640 .ts-forms [class*=\"span\"] { margin-right:0; width:100%; }\n\n\t.wrapper-640 .ts-forms [class*=\"offset\"] { margin-left:0; }\n\n\t.wrapper-640 .ts-forms .label-center { height:14px; line-height:14px; text-align:left; padding-bottom:3px; }\n\n\t.wrapper-640 .ts-forms .radio:last-child,\n\t.wrapper-640 .ts-forms .checkbox:last-child,\n\t.wrapper-640 .ts-forms .radio-toggle:last-child,\n\t.wrapper-640 .ts-forms .checkbox-toggle:last-child { margin-bottom:4px; }\n\n\t/* Popup menu forms*/\n\t.popup-list-open > .popup-list-wrapper { width:100%; }\n\t.popup-list-open { position:static; }\n}\n\n/* Wrapper-400 */\n@media all and (max-width:380px) {\n\n\t.wrapper-400 .ts-forms [class*=\"span\"] { margin-right:0; width:100%; }\n\n\t.wrapper-400 [class*=\"offset\"] { margin-left:0;\t}\n\n\t.wrapper-400 .ts-forms .label-center { height:14px; line-height:14px; text-align:left; padding-bottom:3px; }\n\n\t.wrapper-400 .ts-forms .radio:last-child,\n\t.wrapper-400 .ts-forms .checkbox:last-child,\n\t.wrapper-400 .ts-forms .radio-toggle:last-child,\n\t.wrapper-400 .ts-forms .checkbox-toggle:last-child { margin-bottom:4px; }\n\n\t/* Responsiveness inside popup menu forms */\n\t.popup-list-wrapper .ts-forms [class*=\"span\"] { margin-right:0; width:100%; }\n\n\t.popup-list-wrapper .ts-forms [class*=\"offset\"] { margin-left:0; }\n\n\t.popup-list-wrapper .ts-forms .label-center { height:14px; line-height:14px; text-align:left; padding-bottom:3px; }\n}\n\n/* Popup bottom form 400 px*/\n@media all and (max-width:410px) {\n\n\t.popup-btm-400 { width: 320px; }\n\n\t.popup-btm-400 .ts-forms [class*=\"span\"] { margin-right:0; width:100%; }\n\n\t.popup-btm-400 .ts-forms [class*=\"offset\"] { margin-left:0; }\n\n\t.popup-btm-400 .ts-forms .label-center { height:14px; line-height:14px; text-align:left; padding-bottom:3px; }\n}\n\n/* Popup bottom form 640 px*/\n@media all and (max-width:650px) {\n\n\t.popup-btm-640 { width: 320px; }\n\n\t.popup-btm-640 .ts-forms [class*=\"span\"] { margin-right:0; width:100%; }\n\n\t.popup-btm-640 .ts-forms [class*=\"offset\"] { margin-left:0; }\n\n\t.popup-btm-640 .ts-forms .label-center { height:14px; line-height:14px; text-align:left; padding-bottom:3px; }\n}\n\n/* Bootstrap compatibility\n=============================== */\n.ts-forms .radio,\n.ts-forms .checkbox,\n.ts-forms .radio-toggle,\n.ts-forms .checkbox-toggle { margin-top:0; }\n\n.ts-forms .label {\n\tpadding:0;\n\t-webkit-border-radius:0;\n\t-moz-border-radius:0;\n\t-o-border-radius:0;\n\tborder-radius:0;\n}\n.ts-forms .radio,\n.ts-forms .checkbox,\n.ts-forms .radio-toggle,\n.ts-forms .checkbox-toggle,\n.ts-forms .radio *,\n.ts-forms .checkbox *,\n.ts-forms .radio-toggle *,\n.ts-forms .checkbox-toggle *,\n.ts-forms .radio i:after,\n.ts-forms .checkbox i:after,\n.ts-forms .radio-toggle i:after,\n.ts-forms .checkbox-toggle i:after,\n.ts-forms .radio i:before,\n.ts-forms .checkbox i:before,\n.ts-forms .radio-toggle i:before,\n.ts-forms .checkbox-toggle i:before {\n\t-webkit-box-sizing:content-box;\n\t-moz-box-sizing:content-box;\n\tbox-sizing:content-box;\n}\n\nspan.error-view{\nbackground: rgba(0, 0, 0, 0) url(\"../images/Error-128.png\") no-repeat scroll right center;\nfloat: right;\nheight: 26px !important;\nmargin: 0 !important;\npadding: 0;\nposition: relative;\nright: 10px;\ntext-indent: -99999px;\ntop: -37px;\nwidth: 26px !important;\n\n}\n\n.error_none span.error-view{\n\tdisplay:none;\n}\n\n.cloneya .primary-btn, .cloneya .secondary-btn {\n  padding: 0 20px;\n}\n\n\n/* Cloned elements\n=============================== */\n.ts-forms .content .clone-btn-right,\n.ts-forms .content .clone-btn-left {\n\tfont-size:14px;\n\theight:48px;\n\tpadding:0;\n\tposition:absolute;\n\tmargin:0;\n\twidth:47px;\n}\n.ts-forms .ts-row>.clone-btn-right { bottom:25px; right:10px; }\n\n.ts-forms .ts-row>.clone-btn-right.delete { right:60px; }\n\n.ts-forms .tsbox>.clone-btn-right { bottom:0; right:0; }\n\n.ts-forms .tsbox>.clone-btn-right.delete { right:50px; }\n\n.ts-forms .ts-row>.clone-btn-left { bottom:25px; left:10px; }\n\n.ts-forms .ts-row>.clone-btn-left.delete { left:60px; }\n\n.ts-forms .tsbox>.clone-btn-left { bottom:0; left:0; }\n\n.ts-forms .tsbox>.clone-btn-left.delete { left:50px; }\n\n.toclone-widget-right { padding-right:100px; position:relative; }\n\n.toclone-widget-left { padding-left:100px; position:relative; }\n\n.ts-forms .toclone .link { display:inline-block; padding-bottom:3px; margin:0 5px 5px 0; }\n\n.cloneya a.clone{\n\tbackground:#ff0000;\n\tcolor:#fff;\n\tpadding:15px 12px !important;\n}\n\n.cloneya a.delete{\n\tbackground:#ff0000;\n\tcolor:#fff;\n\tpadding:15px 12px !important;\n}\n\n.sp-replacer {\n  top: 29px !important;\n   padding-left: 10px !important;\n\n}\n\n\n.datepic .fa.fa-caret-left {\n  color: #f00;\n}\n\n.datepic .fa.fa-caret-right{\n  color: #f00;\n}\n\n.fa.fa-caret-left {\n  color: #f00;\n}\n\n .fa.fa-caret-right{\n  color: #f00;\n}"
  },
  {
    "path": "public/admin/css/form/themesaller-forms.css",
    "content": "\n/*\t\n--------------------------------------------------\n@Start smart forms\n-------------------------------------------------- \n*/\n\n/* Roboto google font import \n--------------------------------------- */\n@import url(http://fonts.googleapis.com/css?family=Roboto:400,300);\n\nhtml, body{\n\tborder: 0;\n\tmargin: 0;\n\tpadding: 0;\n\tfont-size: 100%;\n\tvertical-align: baseline; \n\tfont: inherit;\n}\n\nbody{\n\tmargin: 0;\n\tpadding: 0;\n\tbackground:url(../images/body_bg.jpg) no-repeat center top;\n}\n\n/* @backgrounds :: modify or add yours below \n------------------------------------------------------------------- */\n.darkbg{ background:#6C82A2 url(../images/dark.png) repeat fixed; }\n.woodbg{ background:#E6CCA6 url(../images/wood.png) repeat fixed; }\n\n/* @form wrappers \n---------------------------------- */\n.themesaller-wrap{ padding:0 20px; }\n.themesaller-forms, \n.themesaller-forms *{\n\t-webkit-box-sizing: border-box;\n\t-moz-box-sizing: border-box;\n\tbox-sizing: border-box;\n}\n\n.themesaller-forms {\n\tfont-family:  \"Roboto\", Arial, Helvetica, sans-serif;\n\tline-height: 1.231;\n\tfont-weight: 400;\n\tfont-size: 14px;\n\tcolor: #626262;\n}\n\n.themesaller-container{\n\tbackground:#fff;\n\tmargin:50px auto;\t\n\t-webkit-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.65);\n\t-moz-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.65);\n\t-o-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.65);\n\tbox-shadow: 0 1px 5px rgba(0, 0, 0, 0.65);\n\t-webkit-border-radius:5px 5px 0 0;\n\t-moz-border-radius:5px 5px 0 0;\n\t-o-border-radius:5px 5px 0 0;\n\tborder-radius:5px 5px 0 0;\n\t \n}\n\n/* @form container width \n/* @if you want to change the form container width change the values below \n/* @alternatively you can add yours eg .wrap4{ max-width:200px; } \n---------------------------------------------------------------------------- */\n.wrap-0{ max-width:952px; }\n.wrap-1{ max-width:852px; }\n.wrap-2{ max-width:652px; }\n.wrap-3{ max-width:452px; }\n\n/* @form helper classes \n--------------------------------------------------------------- */\n.themesaller-forms .section{ margin-bottom:22px; }\n.themesaller-forms .smart-link{ color:#f00; text-decoration:none; }\n.themesaller-forms .smart-link:hover{ text-decoration: underline; }\n.themesaller-forms .tagline{ height:0; border-top:1px solid #CFCFCF; text-align:center;  }\n.themesaller-forms .tagline span{ \n\ttext-transform:uppercase; \n\tdisplay:inline-block;\n\tposition:relative;\n\tpadding:0 15px; \n\tbackground:#fff; \n\tcolor:#f00;\n\ttop:-14px;  \n}\n\n/* @form label + field :: field class is useful for validation \n---------------------------------------------------------------------- */\n.themesaller-forms .field{ display:block; position:relative; }\n.themesaller-forms .field-icon i { color:#BBB; position:relative; }\n.themesaller-forms .field-label { display: block; margin-bottom: 7px; }\n.themesaller-forms .field-label.colm{ padding-top:12px; }\n.themesaller-forms .field-label em{ \n\tcolor:#e74c3c;\n\tfont-size:14px;\n\tfont-style:normal;\n\tdisplay:inline-block;\n\tmargin-left:4px;\n\tposition:relative; \n\ttop:3px;  \n}\n\n/* @form header section \n----------------------------------------- */\n.themesaller-forms .form-header{ \n\toverflow:hidden;\n\tposition:relative;\n\tpadding:25px 30px;\n\t-webkit-border-radius:5px 5px 0 0 ;\n\t-moz-border-radius:5px 5px 0 0 ;\n\t-o-border-radius:5px 5px 0 0 ;\n\tborder-radius:5px 5px 0 0 ;\n}\n\t\n.themesaller-forms .form-header h4 { \n\tfont-family:\"Roboto\", Arial, Helvetica, sans-serif;\ncolor: #fff;\nfont-family: \"Roboto\",Arial,Helvetica,sans-serif;\nfont-size: 30px;\nmargin: 0 auto;\ntext-align: center;\ntext-shadow: 0 1px 0 #ccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaa, 0 6px 1px rgba(0, 0, 0, 0.1), 0 0 5px rgba(0, 0, 0, 0.1), 0 1px 3px rgba(0, 0, 0, 0.3), 0 3px 5px rgba(0, 0, 0, 0.15), 0 5px 10px rgba(0, 0, 0, 0.2), 0 10px 10px rgba(0, 0, 0, 0.2), 0 20px 20px rgba(0, 0, 0, 0.1);\ntext-transform: uppercase;\n}\n\n.themesaller-forms .form-header h4 i { \n\tfont-size:38px;\n\tposition:relative; \n\tmargin-right:10px;\n\ttop:2px; \n}\n\n/* @header themes :: primary + lite \n---------------------------------------------- */\n.themesaller-forms .header-primary {\t\nbackground-color: #ff0000;\nborder-bottom: 5px solid #e00000;\nborder-radius: 3px 3px 0 0;\ndisplay: block;\nposition: relative;\ntext-align: center;\n}\n\n.themesaller-forms .header-lite{ \n\tbackground:#F3F5FA;\n\tborder-top:1px solid #A7D065; \n\tborder-bottom:1px solid #D9DDE5; \n}\n\n.themesaller-forms .header-lite:before{\n\tcontent:\"\";\n\tbackground-color:#f00;  \n\tposition:absolute;\n\theight:8px;  \n\tz-index:1; \n\ttop:0px;\n\tright:0;  \n\tleft:0;\n}\n\n.themesaller-forms .header-primary h4{ color:#fff; }\n.themesaller-forms .header-lite h4{ color:#5D6A87; padding-top:5px; }\n\n/* @remove rounded corners form headers \n----------------------------------------------------------------- */\n.smart-flat, \n.smart-flat .form-header{\n\t-webkit-border-radius:0;\n\t-moz-border-radius:0;\n\t-o-border-radius:0;\n\tborder-radius:0;\n}\n\n/* @form body + footer \n------------------------------------------------------------------- */\t\n.themesaller-forms .form-body{ padding:40px 30px; padding-bottom:20px; }\n.themesaller-forms .form-footer {\n\toverflow:hidden;\n\tpadding:20px 25px;\n\tpadding-top:25px;\n\tbackground: #F5F5F5;   \t\n\tbackground: #F5F5F5 url(../images/foobg.png) top left repeat-x;\n}\n\n/* @crossbrowser placeholder styling :: modern browsers only IE10+\n------------------------------------------------------------------------ */\n.themesaller-forms input[type=search] { -webkit-appearance: textfield; }\n.themesaller-forms ::-webkit-search-decoration, \n.themesaller-forms ::-webkit-search-cancel-button { -webkit-appearance: none; }\n.themesaller-forms input:invalid { -moz-box-shadow: none; box-shadow: none;  }\n.themesaller-forms input::-webkit-input-placeholder,\n.themesaller-forms textarea::-webkit-input-placeholder { color: #AAAAAA; }\n.themesaller-forms input:focus::-webkit-input-placeholder,\n.themesaller-forms textarea:focus::-webkit-input-placeholder { color: #D6DBE0; }\n.themesaller-forms input:-moz-placeholder,\n.themesaller-forms textarea:-moz-placeholder { color: #AAAAAA; }\n.themesaller-forms input:focus:-moz-placeholder,\n.themesaller-forms textarea:focus:-moz-placeholder { color: #D6DBE0; }\n.themesaller-forms input::-moz-placeholder,\n.themesaller-forms textarea::-moz-placeholder { color: #AAAAAA; opacity: 1; }\n.themesaller-forms input:focus::-moz-placeholder,\n.themesaller-forms textarea:focus::-moz-placeholder { color: #D6DBE0; opacity: 1; }\n.themesaller-forms input:-ms-input-placeholder,\n.themesaller-forms textarea:-ms-input-placeholder { color: #AAAAAA; }\n.themesaller-forms input:focus:-ms-input-placeholder,\n.themesaller-forms textarea:focus:-ms-input-placeholder { color: #D6DBE0; }\n\n/* @element general styling :: fonts :: adjust accordingly\n------------------------------------------------------------- */\n.themesaller-forms label, \n.themesaller-forms input,\n.themesaller-forms button,\n.themesaller-forms select,  \n.themesaller-forms textarea {\n\tmargin: 0;  \n\tfont-size: 14px;\n\tfont-family:  \"Roboto\", Arial, Helvetica, sans-serif;\n\tfont-weight:400;\n\tcolor: #626262;\n\toutline:none;\n}\n\n/* @remove browser specific styling\n----------------------------------------------- */\n.themesaller-forms .gui-input,\n.themesaller-forms .gui-textarea,\n.themesaller-forms .select > select,\n.themesaller-forms input[type=\"button\"],\n.themesaller-forms input[type=\"submit\"],\n.themesaller-forms input[type=\"search\"],\n.themesaller-forms .select-multiple select {\n\t-webkit-tap-highlight-color:transparent;\n\t-webkit-tap-highlight-color: rgba(0,0,0,0);\n\t-webkit-appearance: none;\n\t-moz-appearance: none;\n\tappearance: none;\n\t-webkit-border-radius:0px;\n\tborder-radius: 0px;\n}\n\n.themesaller-forms input[type=\"search\"]::-webkit-search-decoration,\n.themesaller-forms input[type=\"search\"]::-webkit-search-cancel-button,\n.themesaller-forms input[type=\"search\"]::-webkit-search-results-button,\n.themesaller-forms input[type=\"search\"]::-webkit-search-results-decoration {\n\tdisplay: none;\n}\n\n/* @labels font-size styling :: adjust to fit your needs \n--------------------------------------------------------- */\n.themesaller-forms .switch, \n.themesaller-forms .option,\n.themesaller-forms .field-label{ font-size:14px; }\n\n/* @prevent user selection for usability purposes\n----------------------------------------------------- */\n.themesaller-forms .radio,\n.themesaller-forms .button,  \n.themesaller-forms .checkbox,\n.themesaller-forms .select .arrow,\n.themesaller-forms .switch > label,\n.themesaller-forms .ui-slider .ui-slider-handle{\n\t-webkit-touch-callout: none;\n\t-webkit-user-select: none;\n\t-khtml-user-select: none;\n\t-moz-user-select: none;\n\t-ms-user-select: none;\n\tuser-select: none;\n}\n\n/* @universal rules for all elements \n---------------------------------------------------- */\n.themesaller-forms .radio,\n.themesaller-forms .button,\n.themesaller-forms .tooltip,\n.themesaller-forms .checkbox,  \n.themesaller-forms .gui-input,\n.themesaller-forms .notification,\n.themesaller-forms .gui-textarea,\n.themesaller-forms .select > select,\n.themesaller-forms .select-multiple select{ \n\t-webkit-transition:all 0.5s ease-in-out;\n\t-moz-transition:all 0.5s ease-in-out;\n\t-ms-transition:all 0.5s ease-in-out;\n\t-o-transition:all 0.5s ease-in-out;\n\ttransition:all 0.5s ease-in-out;\n\t-webkit-border-radius: 0;\n\t-moz-border-radius: 0;\n\t-ms-border-radius: 0;\n\t-o-border-radius: 0;\n\tborder-radius: 0;\n\toutline:none;\n}\n\n/* @control border-size :: color etc for these elements \n----------------------------------------------------------- */\n.themesaller-forms .select,\n.themesaller-forms .gui-input,\n.themesaller-forms .gui-textarea,\n.themesaller-forms .select > select,\n.themesaller-forms .select-multiple select{\n\tbackground: #fff;\n\tposition: relative;\n\tvertical-align: top;\n\tborder: 1px solid #CFCFCF;\n\tdisplay: -moz-inline-stack;\n    display: inline-block;\n    *display: inline;\n\tcolor: #626262;\n\toutline:none;\n\theight: 42px;\n\twidth: 100%;\n\t*zoom: 1;\n}\n\n/* @styling inputs and textareas \n------------------------------------------- */\n.themesaller-forms .gui-input, \n.themesaller-forms .gui-textarea { padding:10px; }\n.themesaller-forms .gui-textarea {    \n    resize: none;\n\tline-height: 19px;\n\toverflow: auto;\n\tmax-width:100%;\n    height: 96px;\n}\n\n/* @hint below textareas \n---------------------------------------- */\n.themesaller-forms .input-hint {\n    padding: 10px;\n\tdisplay: block;\n\tmargin-top: -1px;\n\tline-height: 16px;\n\tposition: relative; \n    background: #F5F5F5;\n    border: 1px solid #CFCFCF;\t   \n\tfont-family:Arial, Helvetica, sans-serif;\n    -webkit-border-radius: 0;\n\t-moz-border-radius: 0;\n\t-o-border-radius: 0;\n\tborder-radius: 0;\n    font-size: 11px;\n    color: #999;\n}\n\n/* @form selects :: dropdowns \n-------------------------------------------------- */\n.themesaller-forms .select { border:0; z-index:10; }\n.themesaller-forms .select > select {\n\tdisplay: block;\n    padding:9px 10px; \n    color: #626262;\n    background: #F5F5F5;   \t\n     border: 1px solid #CFCFCF;\t\n    -webkit-appearance:none;\n    -moz-appearance:none;\n    appearance:normal;\n\toutline:none;\n\ttext-indent: 0.01px;\n    text-overflow: ''; \n\tz-index:10;\n\tmargin: 0;\t\n}\n\n.themesaller-forms .select > select::-ms-expand { display: none; }\n.themesaller-forms .select .arrow {\n\tposition: absolute;\n\ttop: 9px;\n\tright: 4px;\n\twidth: 24px;\n\theight: 24px;\n\tcolor:#9F9F9F;\n\tpointer-events:none;\n\tz-index:16;\n}\n\n.themesaller-forms .select .arrow:after,\n.themesaller-forms .select .arrow:before {\n\tcontent: '';\n\tposition: absolute;\n\tfont:12px \"Consolas\", monospace;\n\tfont-style:normal;\n\tpointer-events:none;\n\tdisplay:none\\9;\n\tleft:5px;\n\t\n}\n\n.themesaller-forms .select .arrow:before { content:'\\25BC'; bottom:4px; }\n.themesaller-forms .select .double:after { content:'\\25B2'; top:-1px;  }\n.themesaller-forms .select .double:before { content:'\\25BC'; bottom:-1px; }\n.themesaller-forms .select-multiple select { \n\twidth:100%; \n\theight: 123px;\n\tpadding: 10px;\n}\n\n/* @file inputs :: file uploaders \n-------------------------------------------------------- */\n.themesaller-forms .file{ display:block; width:100%; }\n.themesaller-forms .file .gui-file{\n\twidth:100%;\n\theight:100%;\n\tcursor:pointer;\n\tpadding:8px 10px;\n\tposition:absolute;\n\t-moz-opacity:0;\n\topacity: 0;\n\tz-index:11;\n\tbottom:0;\t\n\tright:0;\n}\n\n.themesaller-forms .file .button {\n\tposition: absolute;\n\ttop: 4px;\n\tright: 4px;\n\tfloat: none;\n\theight: 34px;\n\tline-height: 34px;\n\tpadding: 0 16px;\n\tz-index:10;\n}\n\n/* @form element :hover state \n-------------------------------------------- */\n.themesaller-forms .gui-input:hover,\n.themesaller-forms .gui-textarea:hover,\n.themesaller-forms .select > select:hover,\n.themesaller-forms .select-multiple select:hover, \n.themesaller-forms .gui-input:hover ~ .input-hint,\n.themesaller-forms .file .gui-file:hover + .gui-input,\n.themesaller-forms .gui-textarea:hover ~ .input-hint{\n\tborder-color: #f00;\n}\n\n/* @form element :focus state \n-------------------------------------------------------- */\n.themesaller-forms .gui-input:focus,\n.themesaller-forms .gui-textarea:focus,\n.themesaller-forms .select > select:focus,\n.themesaller-forms .select-multiple select:focus{ \n    color: #3c3c3c;\n    background: #fff;\n\tborder:1px solid #f00;\n\t-webkit-box-shadow:0px 0px 3px #f00 inset; \n\t-moz-box-shadow:0px 0px 3px #f00 inset;  \n\t-o-box-shadow:0px 0px 3px #f00 inset;\t\n\tbox-shadow:0px 0px 3px #f00 inset;\n    outline: none; \n\n}\n\n.themesaller-forms .select > select:focus {\t\n\tz-index:10;\n\tz-index:20\\9;\n}\n\n.themesaller-forms .gui-textarea:focus{  height: 120px; }\n.themesaller-forms .select > select:focus { z-index:10; z-index:20\\9; }\n.themesaller-forms .gui-input:focus ~ .field-icon i,\n.themesaller-forms .gui-textarea:focus ~ .field-icon i{ color:#f00; }\n.themesaller-forms .select-multiple select:focus, \n.themesaller-forms .gui-input:focus ~ .input-hint,\n.themesaller-forms .gui-textarea:focus ~ .input-hint, \n.themesaller-forms .file .gui-file:focus + .gui-input{ border-color: #f00; }\n.themesaller-forms .select > select:focus + .arrow{ color:#f00; }\n\n\n/* @radio + checkbox option elements \n----------------------------------------------------- */ \n.themesaller-forms .option {\n    position: relative;\t\n\tpadding-right:15px;    \n\tdisplay: inline-block;\n    vertical-align: middle;\n}\n.themesaller-forms .option > input {\n    position: absolute;\n    height: inherit;\n    width: inherit;\n    opacity: 0;\n\tleft: 0;\n}\n\n.themesaller-forms .checkbox, \n.themesaller-forms .radio { \n\tposition:relative;\n\tmargin-right:2px;\n\tbackground: #fff;\n\tdisplay: inline-block;\n    border: 3px solid #CFCFCF;\t\n\theight: 21px;\n\twidth: 21px;\n\ttop:4px;\t\n}\n\n.themesaller-forms .checkbox:before, \n.themesaller-forms .radio:before {\n    content: '';\n    display: none;\n}\n\n.themesaller-forms input:checked + .checkbox:before, \n.themesaller-forms input:checked + .radio:before {\n    display: block;\n}\n\n.themesaller-forms .checkbox:before {\n    position: absolute;\n    top: 4px;\n    left: 3px;\n    width: 6px;\n    height: 3px;\n    border: solid #f00;\n    border-width: 0 0 3px 3px;\n    -webkit-transform: rotate(-45deg);\n    -moz-transform: rotate(-45deg);\n    -ms-transform: rotate(-45deg);\n    -o-transform: rotate(-45deg);\n    transform: rotate(-45deg);\n}\n\n.themesaller-forms input:checked + .checkbox, \n.themesaller-forms input:checked + .radio{ border: 3px solid #f00; }\n.themesaller-forms .radio { \n\t-webkit-border-radius: 20px;\n\t-moz-border-radius: 20px; \n\t-o-border-radius: 20px; \n\tborder-radius: 20px;\n \n}\n.themesaller-forms .radio:before {\n    margin: 4px;\n    width: 7px;\n    height: 7px;\n    background: #f00;\n  \t-webkit-border-radius: 10px;\n\t-moz-border-radius: 10px; \n\t-o-border-radius: 10px; \n\tborder-radius: 10px;\n}\n\n\n/* @radio + checkbox :hover state \n-------------------------------------------------- */\n.themesaller-forms input:hover + .checkbox, \n.themesaller-forms input:hover + .radio{\n    border-color:#f00;\n\t\n}\n\n/* @radio + checkbox :focus state \n--------------------------------------------------- */\n.themesaller-forms input:focus + .checkbox, \n.themesaller-forms input:focus + .radio{ border-color: #f00; }\n.themesaller-forms input:focus + .radio:before{ background: #f00; }\n.themesaller-forms input:focus + .checkbox:before{ border-color: #f00; }\n\n/* @toggle switch elements \n-------------------------------------------------- */\n.themesaller-forms .switch { \n\tcursor:pointer; \n\tposition: relative; \n\tpadding-right:10px;\n    display: inline-block;\n\tmargin-bottom:5px;\n\theight: 26px;\n}\n.themesaller-forms .switch > label {\n\tcursor:pointer;\n    display: inline-block;\n    position: relative;\n    height: 25px;\n\twidth: 58px;\n\tcolor: #fff;\n    font-size: 10px;\n    font-weight: bold;\n\tline-height: 20px;\n    text-align: center;\n    background: #D7D7D7;\n    border: 2px solid #D7D7D7;\n\ttext-transform: uppercase;\n\tfont-family:Helvetica, Arial, sans-serif;\n    -webkit-transition: 0.3s ease-out;\n    -moz-transition: 0.3s ease-out;\n    -o-transition: 0.3s ease-out;\n    transition: 0.3s ease-out;\n\t\n}\n.themesaller-forms .switch > label + span{ display:inline-block; padding-left:5px; position:relative; top:-7px; }\n.themesaller-forms .switch > label:before {\n    content: attr(data-off);\n    position: absolute;\n    top: 1px;\n    right: 3px;\n    width: 33px;\n}\n\n.themesaller-forms .switch > label:after {\n\tcontent:\"\";\t\n    margin: 1px;\n    width: 19px;\n    height: 19px;\n\tdisplay: block;\n    background: #fff;\n}\n\n.themesaller-forms .switch > input {\n\t-webkit-appearance: none;\n\tposition: absolute;\n    width: inherit;\n    height: inherit;\n    opacity: 0;\n\tleft: 0;\n\ttop: 0;\n   \n}\n\n/* @toggle switch focus state \n-------------------------------------------------------------- */\n.themesaller-forms .switch > input:focus { outline: none; }\n.themesaller-forms .switch > input:focus + label { color: #fff; border-color: #C7C7C7; background:#C7C7C7; }\n.themesaller-forms .switch > input:focus + label:after { background: #fff; }\n\n/* @toggle switch normal state \n--------------------------------------------------------------- */\n.themesaller-forms .switch > input:checked + label {\n    border-color: #f00;\n\tbackground: #f00; \n\tpadding-left: 33px;\n\tcolor: white;\n}\n\n.themesaller-forms .switch > input:checked + label:before {\n    content: attr(data-on);\n    left: 1px;\n\ttop:1px;\n}\n\n.themesaller-forms .switch > input:checked + label:after {\n    margin: 1px;\n    width: 19px;\n    height: 19px;\n    background: white;\n}\n\n/* @toggle switch normal state focus \n--------------------------------------------------------------------------------- */\n.themesaller-forms .switch > input:checked:focus + label { background: #3c9b39; border-color: #3c9b39; }\n.themesaller-forms .switch-round > label { \n\t-webkit-border-radius: 13px;\n\t-moz-border-radius: 13px;\n\t-o-border-radius: 13px;\n\tborder-radius: 13px; \n}\n.themesaller-forms .switch-round > label + span{ top:-2px; }\n.themesaller-forms .switch-round > label:before { width: 33px; }\n.themesaller-forms .switch-round > label:after {\n    width: 19px;\n\tcolor:#D7D7D7;\n\tcontent: \"\\2022\";\n\tfont:20px/20px Times, Serif;\n\t-webkit-border-radius: 13px;\n\t-moz-border-radius: 13px;\n\t-o-border-radius: 13px;\n\tborder-radius: 13px;\n}\n\n.themesaller-forms .switch-round > input:checked + label { padding-left: 33px; }\n.themesaller-forms .switch-round > input:checked + label:after{ color:#f00; }\n\n/* @buttons \n----------------------------------------------------- */\n.themesaller-forms .button {\n    border: 0;\n\theight: 42px;\n\tcolor: #243140;\n\tline-height: 1;\n\tfont-size:15px; \n    cursor: pointer;\n\tpadding: 0 18px;\n\ttext-align: center;\n\tvertical-align: top;\n    background: #DBDBDB;\n\tdisplay: inline-block;\n\t-webkit-user-drag: none;\n\ttext-shadow: 0 1px rgba(255, 255, 255, 0.2);\n}\n\n/* @buttons :hover, :active states \n---------------------------------------------------------------- */\n.themesaller-forms .button:hover { color: #243140; background: #E8E8E8; }\n.themesaller-forms .button:active{ color: #1d2938; background: #C4C4C4; }\n.themesaller-forms a.button, \n.themesaller-forms span.button, \n.themesaller-forms label.button { line-height: 42px; text-decoration: none; }\n.themesaller-forms .button i{ font-size:14px; }\n.themesaller-forms .button-list .button{ margin-bottom:5px; }\n\n/* @primary button theme\n-------------------------------------------- */\n.themesaller-forms .btn-primary {  background-color: #f00;  }\n.themesaller-forms .btn-primary:hover,\n.themesaller-forms .btn-primary:focus { background-color: #3f51b5; }\n.themesaller-forms .btn-primary:active{ background-color: #3c9b39; }\n.themesaller-forms .btn-primary, \n.themesaller-forms .btn-primary:hover,\n.themesaller-forms .btn-primary:focus, \n.themesaller-forms .btn-primary:active{ color: #fff; text-shadow: 0 1px rgba(0, 0, 0, 0.08); }\n\n/* @rounded buttons \n-------------------------------------------- */\n.themesaller-forms .btn-rounded{ \n\t-webkit-border-radius:22px;\n\t-moz-border-radius:22px;\n\t-o-border-radius:22px;\n\tborder-radius:22px;  \n}\n\n/* @left + right buttons :: look like IOS\n-------------------------------------------- */\n.themesaller-forms .button-left, \n.themesaller-forms .button-right {\n    position: relative;\n\tz-index:9;\n}\n\n.themesaller-forms .button-left:before, \n.themesaller-forms .button-right:before {\n    content:'';\n    z-index:-1;\n    width: 32px;\n    height: 32px;\n\tposition: absolute;\n    background-color: inherit;\n\tborder-color: inherit;\t\n    border: none;\n\ttop: 5px;\n}\n\n.themesaller-forms .button-left {\n    border-left-width: 0; \n\tpadding: 0 18px 0 7px;\n    -webkit-border-radius: 0 3px 3px 0;\n\t-moz-border-radius: 0 3px 3px 0;\n\t-o-border-radius: 0 3px 3px 0;\n\tborder-radius: 0 3px 3px 0;\n\tmargin-left:20px;\n}\n\n.themesaller-forms .button-left:before {\n    left: -15px;\n    -webkit-border-radius: 2px 5px 0 5px;\n\t-moz-border-radius: 2px 5px 0 5px;\n\t-o-border-radius: 2px 5px 0 5px;\n\tborder-radius: 2px 5px 0 5px;\n    -webkit-transform: rotate(-45deg);\n    -moz-transform: rotate(-45deg);\n    -ms-transform: rotate(-45deg);\n    -o-transform: rotate(-45deg);\n    transform: rotate(-45deg);\n}\n\n.themesaller-forms .button-right {\n    padding: 0 7px 0 18px;\n    border-right-width: 0;\n    -webkit-border-radius: 3px 0 0 3px;\n\t-moz-border-radius: 3px 0 0 3px;\n\t-o-border-radius: 3px 0 0 3px;\n\tborder-radius: 3px 0 0 3px;\n\tmargin-right:20px;\n}\n\n.themesaller-forms .button-right:before {\n    right: -15px;\n    -webkit-border-radius: 5px 2px 5px 0;\n\t-moz-border-radius: 5px 2px 5px 0;\n\t-o-border-radius: 5px 2px 5px 0;\n\tborder-radius: 5px 2px 5px 0;\n    -webkit-transform: rotate(45deg);\n    -moz-transform: rotate(45deg);\n    -ms-transform: rotate(45deg);\n    -o-transform: rotate(45deg);\n    transform: rotate(45deg);\n}\n\n/* @left right button pointed button shapes \n------------------------------------------------ */\n.themesaller-forms .btn-pointed.button-left, \n.themesaller-forms .btn-pointed.button-right{ \n\t-webkit-border-radius:22px;\n\t-moz-border-radius:22px;\n\t-o-border-radius:22px; \n\tborder-radius:22px;  \n}\n\n.themesaller-forms .btn-rounded.button-left{ \n\t-webkit-border-radius: 0 22px 22px 0;\n\t-moz-border-radius: 0 22px 22px 0;\n\t-o-border-radius: 0 22px 22px 0; \n\tborder-radius: 0 22px 22px 0;  \n}\n\n.themesaller-forms .btn-rounded.button-right{\n\t-webkit-border-radius: 22px 0 0 22px;\n\t-moz-border-radius: 22px 0 0 22px;\n\t-o-border-radius: 22px 0 0 22px;\n\tborder-radius: 22px 0 0 22px; \n}\n\n/* @push buttons\n------------------------------------------------ */\n.themesaller-forms .pushed { \n\t-webkit-box-shadow:inset 0 -0.3em 0 rgba(0,0,0,0.2);\n\t-moz-box-shadow:inset 0 -0.3em 0 rgba(0,0,0,0.2);\n\t-o-box-shadow:inset 0 -0.3em 0 rgba(0,0,0,0.2);\n\tbox-shadow:inset 0 -0.3em 0 rgba(0,0,0,0.2);\n\tposition:relative;\n}\n\n.themesaller-forms .pushed:active{\n\t-webkit-box-shadow:inset 0 -0.15em 0 rgba(0,0,0,0.2);\n\t-moz-box-shadow:inset 0 -0.15em  0 rgba(0,0,0,0.2);\n\t-o-box-shadow:inset 0 -0.15em  0 rgba(0,0,0,0.2);\n\tbox-shadow:inset 0 -0.15em  0 rgba(0,0,0,0.2);\n\ttop:2px;\n}\n\n.themesaller-forms .pushed.button-left:before {\n\t-webkit-box-shadow:inset 0.35em 0  0 rgba(0,0,0,0.2);\n\t-moz-box-shadow:inset 0.35em 0 0 rgba(0,0,0,0.2);\n\t-o-box-shadow:inset 0.35em 0 0 rgba(0,0,0,0.2);\n\tbox-shadow:inset 0.35em 0 0 rgba(0,0,0,0.2);\t\n}\n\n.themesaller-forms .pushed:active.button-left:before{\n\t-webkit-box-shadow:inset 0.2em 0  0 rgba(0,0,0,0.2);\n\t-moz-box-shadow:inset 0.2em 0  0 rgba(0,0,0,0.2);\n\t-o-box-shadow:inset 0.2em 0  0 rgba(0,0,0,0.2);\n\tbox-shadow:inset 0.2em 0  0 rgba(0,0,0,0.2);\n}\n\n.themesaller-forms .pushed.button-right:before {\n\t-webkit-box-shadow:inset  -0.35em 0  0 rgba(0,0,0,0.2);\n\t-moz-box-shadow:inset -0.35em 0  0  rgba(0,0,0,0.2);\n\t-o-box-shadow:inset -0.35em 0  0  rgba(0,0,0,0.2);\n\tbox-shadow:inset -0.35em 0  0  rgba(0,0,0,0.2);\t\n}\n\n.themesaller-forms .pushed:active.button-right:before{\n\t-webkit-box-shadow:inset -0.2em 0  0 rgba(0,0,0,0.2);\n\t-moz-box-shadow:inset -0.2em 0  0 rgba(0,0,0,0.2);\n\t-o-box-shadow:inset -0.2em 0  0 rgba(0,0,0,0.2);\n\tbox-shadow:inset -0.2em 0  0 rgba(0,0,0,0.2);\n}\n\n.tagline span {\n  border: 1px solid #999;\n  color: #f00 !important;\n  padding: 5px 16px !important;\n}\n\n/* @adjust buttons in form footer\n------------------------------------------------ */\n.themesaller-forms .form-footer .button{ display: block;\nmargin: 0 auto; }\n.themesaller-forms .align-right .button{ margin-right:0; margin-left:10px; }\n\n/* @social buttons :: facebook :: twitter :: google +\n---------------------------------------------------- */\n.themesaller-forms .twitter, \n.themesaller-forms .twitter:hover, \n.themesaller-forms .twitter:focus,\n.themesaller-forms .facebook, \n.themesaller-forms .facebook:hover, \n.themesaller-forms .facebook:focus,\n.themesaller-forms .googleplus,\n.themesaller-forms .googleplus:hover, \n.themesaller-forms .googleplus:focus { color:#fff; text-shadow: 0 1px rgba(0, 0, 0, 0.08); } \n.themesaller-forms .facebook { background-color:#3b5998; }\n.themesaller-forms .twitter { background-color:#00acee;  }\n.themesaller-forms .googleplus { background-color:#dd4b39; }\n.themesaller-forms .facebook:hover, \n.themesaller-forms .facebook:focus { background-color:#25385F;  }\n.themesaller-forms .twitter:hover, \n.themesaller-forms .twitter:focus { background-color:#00749F;  }\n.themesaller-forms .googleplus:hover, \n.themesaller-forms .googleplus:focus { background-color:#8D2418;  }\n.themesaller-forms .span-left{ padding-left:52px; text-align:left; }\n.themesaller-forms .btn-social { position:relative; margin-bottom:5px;  }\n.themesaller-forms .btn-social i{ font-size:22px; position:relative; top:2px;    }\n.themesaller-forms .btn-social span{\n\t-webkit-border-radius:3px 0 0 3px;\n\t-moz-border-radius:3px 0 0 3px;\n\t-o-border-radius:3px 0 0 3px;\n\tborder-radius:3px 0 0 3px;\t\n\tdisplay:inline-block; \n\ttext-align:center; \n\tposition:absolute;\n\twidth:42px; \n\tleft:0; \n}\n\n.themesaller-forms .twitter span{ background-color:#009AD5; }\n.themesaller-forms .facebook span{ background-color:#31497D; }\n.themesaller-forms .googleplus span{ background-color:#C03121; }\n\n/* @rating and review star widget :: with hover back afetr selecting\n------------------------------------------------------------------------ */\n.themesaller-forms .rating { overflow: hidden; }\n.themesaller-forms .rating.block { display:block; margin:10px 0; }\n.themesaller-forms .rating label{color: #A2A6A8;} \n.themesaller-forms .rating label i{ font-size:17px; text-align:center; color:inherit;  }\n.themesaller-forms .rating label span{ font:22px/22px Times, Serif; }\n.themesaller-forms .rating-star{ margin-left:4px; }\n.themesaller-forms .rating-input { position: absolute; left:-9999px; top: auto; }\n.themesaller-forms .rating:hover .rating-star:hover,\n.themesaller-forms .rating:hover .rating-star:hover ~ .rating-star,\n.themesaller-forms .rating-input:checked ~ .rating-star { color: #f00;\t}\n.themesaller-forms .rating-star, \n.themesaller-forms .rating:hover .rating-star {\t\n\twidth: 18px;\n\tfloat: right;\n\tdisplay: block;\n\tcursor:pointer;\n\tcolor: #A2A6A8;\t\n}\n\n\n/* @smart widget\n   @this widget helps us to position an element eg button or label or span\n   @the positions can either be left or right while the input stays 100%\n   @you ca use this to rapidly create search widgets, newsletter subscribe etc \n---------------------------------------------------------------------------------*/\n.themesaller-forms .smart-widget, \n.themesaller-forms .append-picker-icon, \n.themesaller-forms .prepend-picker-icon { position: relative; display:block; }\n.themesaller-forms .smart-widget .field input, \n.themesaller-forms .append-picker-icon input, \n.themesaller-forms .prepend-picker-icon input { width: 100%; }\n\n.themesaller-forms .append-picker-icon button, \n.themesaller-forms .prepend-picker-icon button,\n.themesaller-forms .smart-widget .button { \n\tborder:1px solid #CFCFCF;\n\tbackground: #F5F5F5;\n    position: absolute;\n\tcursor: pointer;\n\tcolor: #626262;\n\theight: 42px;\n    top: 0;\n}\n\n.themesaller-forms .sm-right .button, \n.themesaller-forms .append-picker-icon button{ border-left:0; }\n.themesaller-forms .sm-left .button, \n.themesaller-forms .prepend-picker-icon button{ border-right:0; }\n\n.themesaller-forms .sm-left .button, \n.themesaller-forms .prepend-picker-icon button { left:0; }\n.themesaller-forms .sm-right .button, \n.themesaller-forms .append-picker-icon button {  right:0; }\n\n/* @smart widget buttons - to left \n------------------------------------------------- */\n.themesaller-forms .sml-50, \n.themesaller-forms .prepend-picker-icon { padding-left: 50px; } \n.themesaller-forms .sml-50 .button, \n.themesaller-forms .prepend-picker-icon button{ width: 50px; }\n.themesaller-forms .sml-80{ padding-left: 80px; } \n.themesaller-forms .sml-80 .button { width: 80px; }\n.themesaller-forms .sml-120{ padding-left: 120px; } \n.themesaller-forms .sml-120 .button { width: 120px; }\n\n/* @smart widget buttons - to right \n------------------------------------------------- */\n.themesaller-forms .smr-50, \n.themesaller-forms .append-picker-icon{ padding-right: 50px; } \n.themesaller-forms .smr-50 .button, \n.themesaller-forms .append-picker-icon button{ width: 50px; }\n.themesaller-forms .smr-80{ padding-right: 80px; } \n.themesaller-forms .smr-80 .button { width: 80px; }\n.themesaller-forms .smr-120{ padding-right: 120px; } \n.themesaller-forms .smr-120 .button { width: 120px; }\n\n\n/* @icon append (right) :: prepend (left)\n------------------------------------------------- */\n.themesaller-forms .append-icon, \n.themesaller-forms .prepend-icon{\n    display: inline-block;\n    vertical-align: top;\n    position: relative;\n\twidth:100%;\n}\n\n.themesaller-forms .append-icon .field-icon, \n.themesaller-forms .prepend-icon .field-icon{\n\ttop:0;\n\tz-index:4;\n\twidth:42px;\n\theight:42px;\n\tcolor: inherit;\n\tline-height:42px;\n\tposition:absolute;\n\ttext-align: center;\n    -webkit-transition: all 0.5s ease-out;\n    -moz-transition: all 0.5s ease-out;\n    -ms-transition: all 0.5s ease-out;\n    -o-transition: all 0.5s ease-out;\n    transition: all 0.5s ease-out;\n    pointer-events: none;\n}\n\n.themesaller-forms .append-icon .field-icon i, \n.themesaller-forms .prepend-icon .field-icon i{ \n\tposition:relative;\n\tfont-size:14px;\n}\n\n.themesaller-forms .prepend-icon .field-icon{ left:0;  }\n.themesaller-forms .append-icon .field-icon{ right:0; }\n.themesaller-forms .prepend-icon > input, \n.themesaller-forms .prepend-icon > textarea{ padding-left:36px; }\n.themesaller-forms .append-icon > input, \n.themesaller-forms .append-icon > textarea{ padding-right:36px; padding-left:10px;  }\n.themesaller-forms .append-icon > textarea{ padding-right:36px; }\n\n/* @tooltips on inputs + textareas \n------------------------------------------------- */ \n.themesaller-forms .tooltip {\n\tposition: absolute;\n\tz-index: -1;\n\topacity: 0;\n\tcolor: #fff;\t\n\twidth: 184px;\n\tleft: -9999px;\n\ttop:auto;\n\tfont-size: 11px;\n\tfont-weight:normal;\n\tbackground: #333333;\n\t-webkit-transition: margin 0.6s, opacity 0.6s;\n\t-moz-transition: margin 0.6s, opacity 0.6s;\n\t-ms-transition: margin 0.6s, opacity 0.6s;\n\t-o-transition: margin 0.6s, opacity 0.6s;\n\ttransition: margin 0.6s, opacity 0.6s;\n}\n\n.themesaller-forms .tooltip > em{ padding:12px; font-style:normal; display:block; position:static; }\n.themesaller-forms .tooltip:after { content: ''; position: absolute; }\n.themesaller-forms .gui-input:focus + .tooltip,\n.themesaller-forms .gui-textarea:focus + .tooltip { opacity: 1; z-index: 999; }\n\n/* @tooltip left\n------------------------------------------------- */\n.themesaller-forms .tip-left { top:1px; margin-right:-20px; }\n.themesaller-forms .tip-left:after {\n\ttop:12px;\n\tleft: 100%;\n\tborder-left: 8px solid #333333;\n\tborder-top: 8px solid transparent;\n\tborder-bottom: 8px solid transparent;\n}\n\n.themesaller-forms .gui-input:focus + .tip-left,\n.themesaller-forms .gui-textarea:focus + .tip-left {\n\tmargin-right:5px;\n\tright: 100%;\n\tleft: auto;\n}\n\n/* @tooltip right\n------------------------------------------------- */\n.themesaller-forms .tip-right { top:1px; margin-left:-20px; }\n.themesaller-forms .tip-right:after {\n\ttop:12px;\n\tright: 100%;\n\tborder-right: 8px solid #333333;\n\tborder-top: 8px solid transparent;\n\tborder-bottom: 8px solid transparent;\t\n}\n\n.themesaller-forms .gui-input:focus + .tip-right,\n.themesaller-forms .gui-textarea:focus + .tip-right { left: 100%; margin-left:5px; }\n\n/* @tooltip right-top\n------------------------------------------------- */\n.themesaller-forms .tip-right-top { bottom: 100%; margin-bottom: -20px; }\n.themesaller-forms .tip-right-top:after {\n\ttop: 100%;\n\tright: 12px;\n\tborder-top: 8px solid #333333;\n\tborder-right: 8px solid transparent;\n\tborder-left: 8px solid transparent;\n}\n\n.themesaller-forms .gui-input:focus + .tip-right-top,\n.themesaller-forms .gui-textarea:focus + .tip-right-top {\n\tright: 0;\n\tleft: auto;\n\tmargin-bottom: 10px;\n}\n\n/* @tooltip left-top\n------------------------------------------------- */\n.themesaller-forms .tip-left-top { bottom: 100%; margin-bottom: -20px; }\n.themesaller-forms .tip-left-top:after {\n\ttop: 100%;\n\tleft: 12px;\n\tborder-top: 8px solid #333333;\n\tborder-right: 8px solid transparent;\n\tborder-left: 8px solid transparent;\n}\n\n.themesaller-forms .gui-input:focus + .tip-left-top,\n.themesaller-forms .gui-textarea:focus + .tip-left-top {\n\tleft: 0;\n\tright: auto;\n\tmargin-bottom: 10px;\n}\n\n/* @tooltip right-bottom\n------------------------------------------------- */\n.themesaller-forms .tip-right-bottom { top: 100%; margin-top: -20px; }\n.themesaller-forms .tip-right-bottom:after {\n\tright: 12px;\n\tbottom: 100%;\n\tborder-bottom: 8px solid #333333;\n\tborder-right: 8px solid transparent;\n\tborder-left: 8px solid transparent;\n}\n\n.themesaller-forms .gui-input:focus + .tip-right-bottom,\n.themesaller-forms .gui-textarea:focus + .tip-right-bottom {\n\tmargin-top: 10px;\n\tleft: auto;\n\tright: 0;\n}\n\n/* @tooltip left-bottom\n------------------------------------------------- */\n.themesaller-forms .tip-left-bottom { top: 100%; margin-top: -20px; }\n.themesaller-forms .tip-left-bottom:after {\n\tleft: 12px;\n\tbottom: 100%;\n\tborder-bottom: 8px solid #333333;\n\tborder-right: 8px solid transparent;\n\tborder-left: 8px solid transparent;\n}\n\n.themesaller-forms .gui-input:focus + .tip-left-bottom,\n.themesaller-forms .gui-textarea:focus + .tip-left-bottom {\n\tmargin-top:10px;\n\tright: auto;\n\tleft: 0;\n}\n\n/* @lists\n-------------------------------------------------------------- */\n.themesaller-forms .smart-list{ list-style:none; margin:0; padding:0; }\n.themesaller-forms .smart-list li{ margin-bottom:20px; }\n\n/* @notification messages | info | error | warning | success\n-------------------------------------------------------------- */\n.themesaller-forms .form-msg{ display:none; }\n.themesaller-forms .notification { color: #444; padding:15px; position:relative; }\n.themesaller-forms .notification p{ margin:0; padding:0 15px; padding-left:5px; line-height:normal;  }\n.themesaller-forms .notification .close-btn{\n\tmargin-top: -7px;\n\tpadding: inherit;\n\tposition: absolute;\n\ttext-decoration:none; \n    font: bold 20px/20px Arial, sans-serif;\n\topacity: 0.65; \t\n\tcolor: inherit;\n    display: block;    \n    right:1px;\n\ttop:14%;\n}\n\n.themesaller-forms .notification .close-btn:hover{ opacity: 1; }\n.themesaller-forms .alert-info { color:#163161; background-color: #cfe6fc; }\n.themesaller-forms .alert-success { color:#336633; background-color: #d2f7ad; }\n.themesaller-forms .alert-warning { color: #CC6600; background-color: #fae7a2; }\n.themesaller-forms .alert-error { color:#990000; background-color: #FBDBCF; }\n\n/* @validaion - error state\n------------------------------------- */\n.themesaller-forms .state-error .gui-input,\n.themesaller-forms .state-error .gui-textarea,\n.themesaller-forms .state-error.select > select,\n.themesaller-forms .state-error.select-multiple > select,\n.themesaller-forms .state-error input:hover + .checkbox, \n.themesaller-forms .state-error input:hover + .radio,\n.themesaller-forms .state-error input:focus + .checkbox, \n.themesaller-forms .state-error input:focus + .radio,\n.themesaller-forms .state-error .checkbox, \n.themesaller-forms .state-error .radio{\n\tbackground:#FEE9EA;\n\tborder-color:#DE888A;\n}\n\n.themesaller-forms .state-error .gui-input:focus,\n.themesaller-forms .state-error .gui-textarea:focus,\n.themesaller-forms .state-error.select > select:focus,\n.themesaller-forms .state-error.select-multiple > select:focus{\n\t-webkit-box-shadow:0px 0px 3px #DE888A inset;\n\t-moz-box-shadow:0px 0px 3px #DE888A inset;\n\t-o-box-shadow:0px 0px 3px #DE888A inset;\n\tbox-shadow:0px 0px 3px #DE888A inset;\n}\n\n.themesaller-forms .state-error .gui-input ~ .field-icon i,\n.themesaller-forms .state-error .gui-textarea ~ .field-icon i{  color: #DE888A; }\n.themesaller-forms .state-error.select .arrow { color: #DE888A; }\n.themesaller-forms .state-error.select > select:focus + .arrow{ color:#DE888A; }\n.themesaller-forms .state-error .gui-input ~ .input-hint,\n.themesaller-forms .state-error.file .gui-file:hover + .gui-input, \n.themesaller-forms .state-error .gui-textarea ~ .input-hint { border-color:#DE888A; }\n.themesaller-forms .state-error + em{ \n\tdisplay: block!important;\n\tmargin-top: 6px;\n\tpadding: 0 3px;\n\tfont-family:Arial, Helvetica, sans-serif;\n\tfont-style: normal;\n\tline-height: normal;\n\tfont-size:0.85em;\n\tcolor:#DE888A;\n}\n\n/* @validaion - success state \n-------------------------------------------------- */\n.themesaller-forms .state-success .gui-input,\n.themesaller-forms .state-success .gui-textarea,\n.themesaller-forms .state-success.select > select,\n.themesaller-forms .state-success.select-multiple > select,\n.themesaller-forms .state-success input:hover + .checkbox, \n.themesaller-forms .state-success input:hover + .radio,\n.themesaller-forms .state-success input:focus + .checkbox, \n.themesaller-forms .state-success input:focus + .radio, \n.themesaller-forms .state-success .checkbox, \n.themesaller-forms .state-success .radio{\n\tbackground:#F0FEE9;\n\tborder-color:#A5D491;\n}\n\n.themesaller-forms .state-success .gui-input:focus,\n.themesaller-forms .state-success .gui-textarea:focus,\n.themesaller-forms .state-success.select > select:focus,\n.themesaller-forms .state-success.select-multiple > select:focus{ \n\t-webkit-box-shadow:0px 0px 3px #A5D491 inset; \n\t-moz-box-shadow:0px 0px 3px #A5D491 inset; \n\t-o-box-shadow:0px 0px 3px #A5D491 inset; \n\tbox-shadow:0px 0px 3px #A5D491 inset; \n}\n\n.themesaller-forms .state-success .gui-input ~ .field-icon i,\n.themesaller-forms .state-success .gui-textarea ~ .field-icon i{  color: #A5D491; }\n.themesaller-forms .state-success.select .arrow { color: #A5D491; }\n.themesaller-forms .state-success.select > select:focus + .arrow{ color:#A5D491; }\n.themesaller-forms .state-success .gui-input ~ .input-hint,\n.themesaller-forms .state-success.file .gui-file:hover + .gui-input, \n.themesaller-forms .state-success .gui-textarea ~ .input-hint { border-color:#A5D491; }\n\n/* @disabled state \n----------------------------------------------- */\n.themesaller-forms .button[disabled],\n.themesaller-forms .state-disabled .button,\n.themesaller-forms input[disabled] + .radio,\n.themesaller-forms input[disabled] + .checkbox,\n.themesaller-forms .switch > input[disabled] + label{\n\tcursor: default;\n\topacity:0.5;\n}\n\n.themesaller-forms .gui-input[disabled],\n.themesaller-forms .gui-textarea[disabled], \n.themesaller-forms .select > select[disabled], \n.themesaller-forms .select-multiple select[disabled],\n.themesaller-forms .gui-input[disabled] ~ .input-hint,\n.themesaller-forms .file .gui-file[disabled] + .gui-input,\n.themesaller-forms .file .gui-file[disabled]:hover + .gui-input, \n.themesaller-forms .gui-textarea[disabled] ~ .input-hint {    \n\tbackground-color: #f4f6f6;\n\tborder-color: #d5dbdb!important;\n\tcursor: default;\n\tcolor: #d5dbdb;\n\topacity:0.7;\n}\n\n.themesaller-forms input[disabled] ~ .field-icon i,\n.themesaller-forms textarea[disabled] ~ .field-icon i,\n.themesaller-forms .select > select[disabled] + .arrow{ \n\topacity:0.4; \n}\n\n/* @datepicker - requires jquery ui\n----------------------------------------------- */\n.ui-datepicker {\n\twidth: 18em;\n\tmargin-top:8px;\n\tdisplay: none;\n\tbackground: #fff;\n\tposition:relative;\n\tfont: 14px/1.55  \"Roboto\", Arial, Helvetica, sans-serif;\n\t-webkit-box-shadow: 0 0 4px rgba(0,0,0,.1);\n\t-moz-box-shadow: 0 0 4px rgba(0,0,0,.1);\n\t-o-box-shadow: 0 0 4px rgba(0,0,0,.1);\n\tbox-shadow: 0 0 4px rgba(0,0,0,.1);\n\tborder:1px solid #CFCFCF;\n\tz-index:9999!important;\t\t\n\ttext-align: center;\n\tcolor: #666;\n\t\n}\n\n.ui-datepicker a { color: #404040; text-align:center; }\n.ui-datepicker .ui-state-disabled span{ color:#DBDBDB;}\n.ui-datepicker .ui-datepicker-header {\n\tposition: relative;\n\tbackground: #F5F5F5;\n\tborder-bottom:1px solid #CFCFCF;\n\tline-height: 27px;\n\tfont-size: 15px;\n\tpadding: 10px;\n}\n\n.ui-datepicker .ui-datepicker-prev,\n.ui-datepicker .ui-datepicker-next {\n\twidth: 34px;\n\theight: 34px;\n\tdisplay: block;\n\tfont-size: 14px;\n\tposition: absolute;\n\ttext-decoration: none;\n\tcursor: pointer;\n\tcolor:#f00;\n\ttop:20.5%;\n}\n\n.ui-datepicker .ui-datepicker-prev { left: 2px;  }\n.ui-datepicker .ui-datepicker-next { right: 2px; }\n.ui-datepicker .ui-datepicker-title { \n\tmargin: 0 2.3em; \n\tline-height: 1.8em; \n\ttext-align: center;\n\tcolor:#f00; \n}\n\n.ui-datepicker .ui-datepicker-title select { font-size: 1em; margin: 1px 0; }\n.ui-datepicker select.ui-datepicker-month-year { width: 100%; }\n.ui-datepicker select.ui-datepicker-month,\n.ui-datepicker select.ui-datepicker-year { width: 49%; }\n.ui-datepicker table {\n\twidth: 100%;\n\tfont-size: .9em;\n\tmargin: 0 0 .4em;\n\tborder-collapse: collapse;\n}\n\n.ui-datepicker th {\n\tpadding: .5em .3em;\n\ttext-align: center;\n\tfont-weight: bold;\n\tborder: 0;\n}\n\n.ui-datepicker td { border: 0; padding:2px 5px; }\n.ui-datepicker td span,\n.ui-datepicker td a {\n\tpadding: .25em;\n\tdisplay: block;\n\ttext-align: center;\n\ttext-decoration: none;\n}\n\n.ui-datepicker td span:hover,\n.ui-datepicker td a:hover {  background:#F5F5F5; }\n.ui-datepicker .ui-state-disabled span:hover{ background:none; }\n.ui-datepicker-today a, .ui-datepicker-today a:hover, \n.ui-datepicker .ui-state-highlight {\n\tfont-weight: 700;\n\tbackground: #f00!important;\n\tcolor:#fff;\n}\n\n/* @multiple calendars || not responsive use carefully \n--------------------------------------------------------------- */\n.cal-widget .ui-datepicker { width: 100%; margin-top:0; }\n.cal-widget .ui-datepicker:before{ display:none; }\n.ui-datepicker.ui-datepicker-multi { width: auto; }\n.ui-datepicker-multi .ui-datepicker-group { float: left; }\n.ui-datepicker-multi .ui-datepicker-group table { width: 95%; margin: 0 auto .4em; }\n.ui-datepicker-multi-2 .ui-datepicker-group { width: 50%; }\n.ui-datepicker-multi-3 .ui-datepicker-group { width: 33.333%; }\n.ui-datepicker-multi-4 .ui-datepicker-group { width: 25%; }\n.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,\n.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width: 0; }\n.ui-datepicker-multi .ui-datepicker-buttonpane { clear: left; }\n.ui-datepicker-row-break { clear: both; width: 100%; font-size: 0; }\n\n/* @ ui buttons\n---------------------------------------------------------------- */\n.ui-datepicker-buttonpane{ border-top:1px solid #CFCFCF; padding:10px;  }\n.ui-datepicker-buttonpane button {\n\tpadding: 8px 12px;\n\tmargin-right: .2em;\n\tposition: relative;\n\tline-height: normal;\n\tdisplay: inline-block;\n\t-webkit-user-drag: none;\n\ttext-shadow: 0 1px rgba(255, 255, 255, 0.2);\n\tvertical-align: middle;\n\tbackground: #DBDBDB;\n\ttext-align: center;\n\toverflow: visible;\t\n\tcursor: pointer;\n\tcolor: #243140;\n\tborder:0;\n}\n\n/* @ ui buttons :hover, :active states \n---------------------------------------------------------------- */\n.ui-datepicker-buttonpane button:hover { color: #243140; background: #E8E8E8; }\n.ui-datepicker-buttonpane button:active{ color: #1d2938; background: #C4C4C4; }\n.ui-monthpicker .ui-datepicker-header{ margin-bottom:3px; }\n\n/* @ui slider - requires jquery ui\n------------------------------------------------------*/\n.themesaller-forms .slider-wrapper, \n.themesaller-forms .sliderv-wrapper{ \n\tbackground:#E5E5E5; \n\tposition:relative; \n}\n\n.themesaller-forms .ui-slider {\n\tposition: relative;\n\ttext-align: left;\n}\n\n.themesaller-forms .ui-slider .ui-slider-handle {\n\tposition: absolute;\n\tz-index: 2;\n\twidth: 1.5em;\n\theight: 1.5em;\n\tcursor: default;\n\tbackground:#fff;\n\tborder:3px solid #f00;\n\t-webkit-border-radius:20px;\n\t-moz-border-radius:20px;\n\t-o-border-radius:20px;\n\tborder-radius:20px;\t\n\t-ms-touch-action: none;\n\ttouch-action: none;\n\tmargin-top:-3px;\n\toutline:none;\n}\n\n.themesaller-forms .ui-slider .ui-slider-handle:before{\n\tcontent: '';\n    width: 7px;\n    height: 7px;\n\tposition:absolute;\n    background-color: #f00;\n  \t-webkit-border-radius: 10px;\n\t-moz-border-radius: 10px; \n\t-o-border-radius: 10px; \n\tborder-radius: 10px;\n\tz-index: 2;\t\n\tleft:4px;\n\ttop:4px;\n}\n\n.themesaller-forms .ui-slider .ui-slider-range {\n\tposition: absolute;\n\tz-index: 1;\n\tfont-size: .7em;\n\tdisplay: block;\n\tborder: 0;\n\tbackground-position: 0 0;\n\tbackground-color: #f00;\n}\n\n.themesaller-forms .ui-slider.ui-state-disabled .ui-slider-handle,\n.themesaller-forms .ui-slider.ui-state-disabled .ui-slider-range { filter: inherit; }\n.themesaller-forms .ui-slider-horizontal { height: .5em; }\n.themesaller-forms .ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }\n.themesaller-forms .ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }\n.themesaller-forms .ui-slider-horizontal .ui-slider-range-min { left: 0; }\n.themesaller-forms .ui-slider-horizontal .ui-slider-range-max { right: 0; }\n.themesaller-forms .ui-slider-vertical, \n.themesaller-forms .sliderv-wrapper { width: .5em; height: 100px; }\n.themesaller-forms .ui-slider-vertical .ui-slider-handle { left: -.45em; margin-left: 0; margin-bottom: -.6em; }\n.themesaller-forms .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }\n.themesaller-forms .ui-slider-vertical .ui-slider-range-min { bottom: 0; }\n.themesaller-forms .ui-slider-vertical .ui-slider-range-max { top: 0; }\n.themesaller-forms .slider-input{  color:#f6931f!important; border:0; background:none; }\n.themesaller-forms .slider-group .sliderv-wrapper{ height:150px; float:left; margin:15px 15px;   }\n.themesaller-forms .ui-slider .ui-state-active {\n\tcursor: -webkit-grabbing;\n\tcursor: -moz-grabbing;\n\tcursor: grabbing;\n}\n\n/* @ui slider tooltip\n------------------------------------------------------*/\n.themesaller-forms .slider-tip {\n\tdisplay: block;\n\tposition: absolute;\n\ttext-align: center;\n\tfont: 10pt Tahoma, Arial, sans-serif ;\n\tbackground: #333333;\n\tpadding:10px;\n\tcolor: #fff;\n}\n\n.themesaller-forms .slider-wrapper .slider-tip{ top: -50px; left:-15px; }\n.themesaller-forms .slider-wrapper .slider-tip:after { \n\tcontent: ''; \n\tposition: absolute; \n\ttop: 98%;\n\tleft: 35%;\n\tborder-top: 8px solid #333333;\n\tborder-right: 8px solid transparent;\n\tborder-left: 8px solid transparent;\t\n}\n\n.themesaller-forms .sliderv-wrapper .slider-tip{ left: 30px; top:-12px; }\n.themesaller-forms .sliderv-wrapper .slider-tip:after{ \n\tcontent: ''; \n\tposition: absolute;\n\ttop:30%;\n\tright: 98%;\n\tborder-right: 8px solid #333333;\n\tborder-top: 8px solid transparent;\n\tborder-bottom: 8px solid transparent;\t\n}\n\n/* @ui slider themes\n------------------------------------------------------*/\n.themesaller-forms .yellow-slider .ui-slider .ui-slider-handle{ border-color:#faa226; }\n.themesaller-forms .yellow-slider .ui-slider .ui-slider-handle:before,\n.themesaller-forms .yellow-slider .ui-slider .ui-slider-range { background-color: #faa226;  }\n.themesaller-forms .red-slider .ui-slider .ui-slider-handle{ border-color:#ee4f3d; }\n.themesaller-forms .red-slider .ui-slider .ui-slider-handle:before,\n.themesaller-forms .red-slider .ui-slider .ui-slider-range { background-color:#ee4f3d;  }\n.themesaller-forms .purple-slider .ui-slider .ui-slider-handle{ border-color:#9464e2; }\n.themesaller-forms .purple-slider .ui-slider .ui-slider-handle:before,\n.themesaller-forms .purple-slider .ui-slider .ui-slider-range { background-color:#9464e2;  }\n.themesaller-forms .blue-slider .ui-slider .ui-slider-handle{ border-color:#00acee; }\n.themesaller-forms .blue-slider .ui-slider .ui-slider-handle:before,\n.themesaller-forms .blue-slider .ui-slider .ui-slider-range { background-color:#00acee;  }\n.themesaller-forms .black-slider .ui-slider .ui-slider-handle{ border-color:#505558; }\n.themesaller-forms .black-slider .ui-slider .ui-slider-handle:before,\n.themesaller-forms .black-slider .ui-slider .ui-slider-range { background-color:#505558;  }\n.themesaller-forms .green-slider .ui-slider .ui-slider-handle{ border-color:#0E993C; }\n.themesaller-forms .green-slider .ui-slider .ui-slider-handle:before,\n.themesaller-forms .green-slider .ui-slider .ui-slider-range { background-color:#0E993C;  }\n\n/* @ui timepicker - requires jquery ui\n------------------------------------------------------*/\n.ui-timepicker-div .ui-widget-header {\n\tposition: relative;\n\tbackground: #F5F5F5;\n\tline-height: 27px;\n\tfont-size: 15px;\n\tpadding: 10px;\n }\n \n.ui-timepicker-div dl { text-align: left; border:1px solid #CFCFCF; border-width:1px 0 0 0; padding:15px 10px; margin:0; }\n.ui-timepicker-div dl dt { float: left; clear:left; padding: 0 0 0 5px; }\n.ui-timepicker-div dl dd { margin: 0 10px 20px 40%; }\n.ui-timepicker-div dl .ui_tpicker_hour, \n.ui-timepicker-div dl .ui_tpicker_minute, \n.ui-timepicker-div dl .ui_tpicker_second,  \n.ui-timepicker-div dl .ui_tpicker_millisec{ background:#E5E5E5;  position:relative; top:6px; }\n.ui-timepicker-div td { font-size: 90%; }\n.ui-tpicker-grid-label { background: none; border: none; margin: 0; padding: 0; }\n.ui-timepicker-rtl{ direction: rtl; }\n.ui-timepicker-rtl dl { text-align: right; padding: 0 5px 0 0; }\n.ui-timepicker-rtl dl dt{ float: right; clear: right; }\n.ui-timepicker-rtl dl dd { margin: 0 40% 10px 10px; }\n\n/* @progress bars \n------------------------------------------------------*/\n.themesaller-forms .progress-section{ display:none; } \n.themesaller-forms .progress-bar {\n    position: relative;\n    background:#E5E5E5; \n}\n\n.themesaller-forms .progress-bar .percent { \n\tposition:absolute; \n\tdisplay:inline-block; \n\ttop:-3px; \n\tright:-24px; \n\tfont-size:9px; \n\tcolor:#93A2AA; \n}\n.themesaller-forms .progress-bar > .bar {   \n\twidth:60%; \n\theight:7px;\n\tdisplay: block;\n\tbackground-size: 16px 16px;\t\n\tbackground-color: #bdc3c7; \n}\n\n/* @progress bar themes\n----------------------------------------------------------- */\n.themesaller-forms .bar-primary > .bar  { background-color: #f00; }\n.themesaller-forms .bar-blue > .bar     { background-color: #00acee; }\n.themesaller-forms .bar-black > .bar    { background-color: #505558; }\n.themesaller-forms .bar-green > .bar    { background-color: #0E993C; }\n.themesaller-forms .bar-purple > .bar   { background-color: #9464e2; }\n.themesaller-forms .bar-red > .bar      { background-color: #ee4f3d; }\n.themesaller-forms .bar-yellow > .bar   { background-color: #faa226; }\n\n/* @progress bar strips + animation IE10+ \n----------------------------------------------------------- */\n.themesaller-forms .ui-slider .ui-slider-range,  \n.themesaller-forms .progress > button[type=\"submit\"], \n.themesaller-forms .progress > button[type=\"submit\"]:hover,\n.themesaller-forms .progress-bar > .bar{\n    background-size: 16px 16px;\n    background-image: -webkit-linear-gradient(top left,  \n\t\t\t\t\t  transparent, transparent 25%, rgba(255, 255, 255, 0.3) 25%, rgba(255, 255, 255, 0.3) 50%, \n\t\t\t\t\t  transparent 50%, transparent 75%, rgba(255, 255, 255, 0.3) 75%, rgba(255, 255, 255, 0.3));\n\t\t\t\t\t  \n    background-image: -moz-linear-gradient(top left,  \n\t\t\t\t\t  transparent, transparent 25%, rgba(255, 255, 255, 0.3) 25%, rgba(255, 255, 255, 0.3) 50%, \n\t\t\t\t\t  transparent 50%, transparent 75%, rgba(255, 255, 255, 0.3) 75%, rgba(255, 255, 255, 0.3));\n\t\t\t\t\t  \n    background-image: -o-linear-gradient(top left,  \n\t\t\t\t\t  transparent, transparent 25%, rgba(255, 255, 255, 0.3) 25%, rgba(255, 255, 255, 0.3) 50%, \n\t\t\t\t\t  transparent 50%, transparent 75%, rgba(255, 255, 255, 0.3) 75%, rgba(255, 255, 255, 0.3));\n\t\t\t\t\t  \n    background-image: linear-gradient(to bottom right,  \n\t\t\t\t\t  transparent, transparent 25%, rgba(255, 255, 255, 0.3) 25%, rgba(255, 255, 255, 0.3) 50%, \n\t\t\t\t\t  transparent 50%, transparent 75%, rgba(255, 255, 255, 0.3) 75%, rgba(255, 255, 255, 0.3));\n}\n\n.themesaller-forms .progress > button[type=\"submit\"], \n.themesaller-forms .progress > button[type=\"submit\"]:hover,  \n.themesaller-forms .progress-animated > .bar{\n\t-webkit-animation: sfprogress .6s linear infinite;\n\t-moz-animation: sfprogress .6s linear infinite;\n\t-o-animation: sfprogress .6s linear infinite;\n    animation: sfprogress .6s linear infinite;\n}\n\n.themesaller-forms .progress > button[type=\"submit\"]:hover{ cursor:wait; }\n\n@-webkit-keyframes sfprogress {\n    from { background-position: 0 0; }\n\tto { background-position: -16px 0; }\n}\n\n\n@-moz-keyframes sfprogress {\n\tfrom { background-position: 0 0; }\n\tto { background-position: -16px 0; }\n}\n\n@-o-keyframes sfprogress {\n\tfrom { background-position: 0 0; }\n\tto { background-position: -16px 0; }\n}\n\n@keyframes sfprogress {\n    from { background-position: 0 0; }\n\tto { background-position: -16px 0; }\n}\n\n\n/* @google map :: block elements \n----------------------------------------------------------------------- */\n.themesaller-forms .map-container{ padding:10px; border: 1px solid #CFCFCF; }\n.themesaller-forms #map_canvas{ width:100%; height:300px; overflow:hidden;  }\n.themesaller-forms .block{ display:block; }\n\n/* @form grid\n----------------------------------- */ \n\n/* @form rows \n--------------------------------- */\n.themesaller-forms .frm-row{ margin:0 -10px;  }\n.themesaller-forms .slider-group:before,\n.themesaller-forms .slider-group:after,\n.themesaller-forms .frm-row:before,\n.themesaller-forms .frm-row:after { display: table; content: \"\"; line-height: 0; }\n.themesaller-forms .slider-group:after, \n.themesaller-forms .frm-row:after{ clear: both; }\n\n/* @form columns \n----------------------------------- */\n.themesaller-forms .frm-row .colm{ \n\tmin-height:1px; \n\tpadding-left:10px; \n\tpadding-right:10px; \n\tposition:relative; \n\tfloat:left; \n}\n\n.themesaller-forms .frm-row .colm1{width:8.33%;}\n.themesaller-forms .frm-row .colm2{width:16.66%;}\n.themesaller-forms .frm-row .colm3{width:25%;}\n.themesaller-forms .frm-row .colm4{width:33.33%;}\n.themesaller-forms .frm-row .colm5{width:41.66%;}\n.themesaller-forms .frm-row .colm6{width:50%;}\n.themesaller-forms .frm-row .colm7{width:58.33%;}\n.themesaller-forms .frm-row .colm8{width:66.66%;}\n.themesaller-forms .frm-row .colm9{width:75%;}\n.themesaller-forms .frm-row .colm10{width:83.33%;}\n.themesaller-forms .frm-row .colm11{width:91.66%;}\n.themesaller-forms .frm-row .colm12{width:100%; }\n.themesaller-forms .frm-row .colm1-5{width:20%;}\n.themesaller-forms .frm-row .colm1-8{width:12.5%;}\n\n/* @spacers \n--------------------------------------- */\n.themesaller-forms .spacer{ \n\tborder-top:1px solid #CFCFCF; \n\tdisplay:block;\n\theight:0; \n}\n\n/* @margin spacers :: modify accordingly \n-------------------------------------------- */\n.themesaller-forms .spacer-t10{ margin-top:10px; }\n.themesaller-forms .spacer-b10{ margin-bottom:10px; }\n.themesaller-forms .spacer-t15{ margin-top:15p; }\n.themesaller-forms .spacer-b15{ margin-bottom:15px; }\n.themesaller-forms .spacer-t20{ margin-top:20px; }\n.themesaller-forms .spacer-b20{ margin-bottom:20px; }\n.themesaller-forms .spacer-t25{ margin-top:25px; }\n.themesaller-forms .spacer-b25{ margin-bottom:25px; }\n.themesaller-forms .spacer-t30{ margin-top:30px; }\n.themesaller-forms .spacer-b30{ margin-bottom:30px; }\n.themesaller-forms .spacer-t40{ margin-top:40px; }\n.themesaller-forms .spacer-b40{ margin-bottom:40px; }\n\n/* @padding spacers :: modify accordingly \n-------------------------------------------------- */\n.themesaller-forms .frm-row .pad-l10{ padding-left:10px; }\n.themesaller-forms .frm-row .pad-r10{ padding-right:10px; }\n.themesaller-forms .frm-row .pad-l20{ padding-left:20px; }\n.themesaller-forms .frm-row .pad-r20{ padding-right:20px; }\n.themesaller-forms .frm-row .pad-l30{ padding-left:30px; }\n.themesaller-forms .frm-row .pad-r30{ padding-right:30px; }\n.themesaller-forms .frm-row .pad-l40{ padding-left:40px; }\n.themesaller-forms .frm-row .pad-r40{ padding-right:40px; }\n\n/* @border spacers + text adjust\n-------------------------------------------------- */\n.themesaller-forms .bdl { border-left:1px solid #CFCFCF;   }\n.themesaller-forms .bdr { border-right:1px solid #CFCFCF;  }\n.themesaller-forms .fine-grey{ color:#999; }\n.themesaller-forms .small-text{ font-size:11px; font-style:normal;  }\n.themesaller-forms .text-align{ height:42px; line-height:42px; }\n\n/* @element alignment\n-------------------------------------------------- */\n.themesaller-forms .align-right{ text-align:right; }\n.themesaller-forms .align-center{ text-align:center; }\n\n/* @simple price boxes :: depend on grid\n-------------------------------------------------- */\n.themesaller-forms .price-box{ \n\tpadding:30px; \n\ttext-align:center;\n\tposition:relative; \n\tborder:1px solid #CFCFCF;\n\tfont-family:Arial, Helvetica, sans-serif;\n\t-webkit-box-shadow:  0px 2px 0px 0px rgba(0, 0, 0, 0.05);\n\t-moz-box-shadow:  0px 2px 0px 0px rgba(0, 0, 0, 0.05);\n\t-o-box-shadow:  0px 2px 0px 0px rgba(0, 0, 0, 0.05);\n\tbox-shadow:  0px 2px 0px 0px rgba(0, 0, 0, 0.05); \n}\n\n.themesaller-forms .price-box p{ line-height:1.5em; color:#526066; margin-bottom:0; }\n.themesaller-forms .price-box h5{ text-transform:uppercase; font-weight:300; margin:0; font-size:15px; color:#B0B2B9; letter-spacing:2px  }\n.themesaller-forms .price-box h4{ font-size:60px; font-weight:300; margin:0; color:#626262; }\n.themesaller-forms .selected-box h4{ color:#f00; }\n.themesaller-forms .price-box h4 sup{ position:relative; font-size:30px; vertical-align:top; top:15px; }\n.themesaller-forms .price-box h4 .per-month{font-size:14px; }\n.themesaller-forms .expand{ height:50px; line-height:50px!important; border-radius:3px; }\n\n/* @simple price boxes ribbon IE8+\n----------------------------------------- */\n.themesaller-forms .ribbon,\n.themesaller-forms .ribbon-large{\n\twidth:75px;\n\theight:78px;\n\toverflow:hidden;\n\tposition:absolute;\n\tright: -2px;\n\ttop: -2px;\n\tz-index:1;\n}\n\n.themesaller-forms .ribbon-inner{\n\tfont-family:\"Helvetica Neue\",Helvetica,Arial,sans-serif;\t\n\t-webkit-box-shadow:  0px 2px 0px 0px rgba(0, 0, 0, 0.15);\n\t-moz-box-shadow:  0px 2px 0px 0px rgba(0, 0, 0, 0.15);\n\t-o-box-shadow:  0px 2px 0px 0px rgba(0, 0, 0, 0.15);\n\tbox-shadow:  0px 2px 0px 0px rgba(0, 0, 0, 0.15);\n\t-webkit-transform: translate3d(0, 0, 0);\n\t-webkit-backface-visibility: hidden;\n\t-webkit-perspective: 1000;\n\t-webkit-transform:rotate(45deg);\n\t-moz-transform:rotate(45deg);\n\t-ms-transform:rotate(45deg);\n\t-o-transform:rotate(45deg);\n\ttransform:rotate(45deg);\n\tbackground: #f00;\n\tletter-spacing:4px;\n\ttext-align:center;\n\tposition:relative;\n\tfont-weight:700;\n\tfont-size:14px;\n\tpadding:7px 0;\n\twidth:100px;\n\tcolor:#fff;\n\tz-index:1;\n\tleft:3px;\n\ttop:6px;\n}\n\n.themesaller-forms .ribbon-inner:before,\n.themesaller-forms .ribbon-inner:after{\n\tcontent:\"\";\n\tborder-top:3px solid #3c9b39;\n\tborder-left:3px solid transparent;\n\tborder-right:3px solid transparent;\n\tposition:absolute;\n\tbottom:-3px;\n}\n\n.themesaller-forms .ribbon-inner:before{ left:0px; }\n.themesaller-forms .ribbon-inner:after{ right:0px; }\n.themesaller-forms .ribbon-large{ width:115px; height:118px; }\n.themesaller-forms .ribbon-large .ribbon-inner{\n\twidth:160px;\n\tleft:-8px;\n\ttop:28px;\n}\n\n/* @captcha refresh button + icon \n-------------------------------------------------- */\n.themesaller-forms .sfcode{ padding-left:24px; }\n.themesaller-forms .captcode{ padding:0; position:relative; }\n.themesaller-forms .captcode img{ position:relative; top:1px;}\n.themesaller-forms .refresh-captcha{ \n\tposition:absolute;\n\tbackground:#f00;\n\tborder:3px solid #3C9B39;\n\t-webkit-border-radius:30px;\n\t-moz-border-radius:30px;\n\t-o-border-radius:30px;\n\tborder-radius:30px;\n\tright:-15px;\n\theight:32px;\n\twidth:32px; \n\ttop:4px; \n}\n\n.themesaller-forms .refresh-captcha i{ \n\tposition:absolute; \n\ttext-align:center; \n\tline-height:26px;\n\tfont-size:17px; \n\tcolor:#fff;\n\tleft:24%;\n}\n\n/* @captcha refresh button themes\n-------------------------------------------------- */\n.themesaller-forms .refresh-black    { background:#505558; border-color: #333333; }\n.themesaller-forms .refresh-blue     { background:#00acee; border-color: #0087bb; }\n.themesaller-forms .refresh-green    { background:#0E993C; border-color: #0B792F; }\n.themesaller-forms .refresh-purple   { background:#9464e2; border-color: #7639da; }\n.themesaller-forms .refresh-red      { background:#ee4f3d; border-color: #e42914; }\n.themesaller-forms .refresh-yellow   { background:#faa226; border-color: #e88a05; }\n\n/* Firefox select fix - select arrow hack  disabled on FF 30+\n-------------------------------------------------------------- */\n@-moz-document url-prefix() {\n\t.themesaller-forms .select:before{ \n\t\tcontent: '';\n\t\tpointer-events:none;\t\t\n\t\t-moz-transition:none;\n\t\ttransition:none;\n\t\tposition: absolute; \n\t\tbackground: #F5F5F5; \n\t\twidth: 36px;\n\t\tright:1px;\n\t\ttop:1px; \n\t\tbottom:1px;\n\t\tz-index:99;  \n\t}\n\t\n\t.themesaller-forms .select > select:focus,\n\t.themesaller-forms .select > select:hover,\n\t.themesaller-forms .select:hover select,\n\t.themesaller-forms .select:hover:before{ \n\t\tbackground: #fff;\n\t\t-moz-transition:none;\n\t\ttransition:none;\t\t\n\t\t-moz-box-shadow:none;  \t\n\t\tbox-shadow:none;\t\t\n\t}\n\t\n\t.themesaller-forms .select .arrow {  z-index:100;  }\n\t.themesaller-forms .state-error.select > select:focus,\n\t.themesaller-forms .state-error.select > select:hover,\n\t.themesaller-forms .state-error.select:hover select,\n\t.themesaller-forms .state-error.select:hover:before,\t\n\t.themesaller-forms .state-error.select:before { background:#FEE9EA;  }\n\t\n\t.themesaller-forms .state-success.select > select:focus,\n\t.themesaller-forms .state-success.select > select:hover,\n\t.themesaller-forms .state-success.select:hover select,\n\t.themesaller-forms .state-success.select:hover:before,\t\t\n\t.themesaller-forms .state-success.select:before { background:#F0FEE9;  }\t\n\t\t\t\n}\n\n@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {\n\t.themesaller-forms .select .arrow:after,\n\t.themesaller-forms .select .arrow:before { display:block; }\n}\n\n/* @Fix old of versions android + ios\n------------------------------------------------------------- */\n@media screen and (-webkit-min-device-pixel-ratio:0) { \n        .themesaller-forms .option, \n        .themesaller-forms .rating, \n        .themesaller-forms .switch, \n\t\t.themesaller-forms .captcode { -webkit-animation: bugfix infinite 1s; }\n        @-webkit-keyframes bugfix { \n            from { padding: 0;  } \n            to { padding: 0; } \n        }\n\t\t.themesaller-forms .switch { margin-right:10px;  margin-bottom:5px; }\n\t\t.themesaller-forms .option { margin-right:15px; }\t\t\t\t\t\n}\n\n/* @responsiveness for tablets + smart mobile \n-------------------------------------------------- */\n@media (max-width: 600px) {\n\t.themesaller-forms .frm-row{ margin:0;  }\n\t.themesaller-forms .frm-row .colm{  width: 100%; float:none; padding:0; }\n\t.themesaller-forms .bdl { border-left:0;  }\n\t.themesaller-forms .bdr { border-right:0; }\n\t.themesaller-forms .align-right{ text-align: left; }\n}"
  },
  {
    "path": "public/admin/css/form.css",
    "content": "/*----------------------------------------*/\n/*  1.  Form CSS\n/*----------------------------------------*/\n.logo{\n\tpadding-top:30px;\n\ttext-align:center;\n}\n.login-title{\n\tpadding:30px 15px;\n}\n.login-title h1{\n\tfont-size:20px;\n}\n.login-bg{\n\tbackground:#fff;\n\tbox-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.14);\n\tpadding:20px;\n}\n.login-input-area input[type=\"email\"], .login-input-area input[type=\"password\"], .login-input-area input[type=\"text\"]{\n\twidth:100%;\n\theight:35px;\n\tpadding: 0px 35px 0px 10px;\n\tmargin:10px 0px;\n\tborder:1px solid #ccc;\n}\n.login-input-area, .login-textarea-area{\n\tposition:relative;\n\tmargin-right:15px;\n}\n.login-input-head {\n    padding-left: 15px;\n}\n.login-input-area .login-user{\n\tposition:absolute;\n\ttop:10px;\n\tright:0;\n\theight:35px;\n\twidth:35px;\n\tborder-left:1px solid #ccc;\n\tline-height:35px;\n\ttext-align:center;\n\tcolor:#888;\n}\n.login-textarea-area .login-user{\n\tposition:absolute;\n\ttop:10px;\n\tright:0;\n\theight:35px;\n\twidth:35px;\n\tborder-left:1px solid #ccc;\n\tborder-bottom:1px solid #ccc;\n\tline-height:35px;\n\ttext-align:center;\n\tcolor:#888;\n}\n.login-input-area input[type=\"email\"]:focus, .login-input-area input[type=\"password\"]:focus, .login-input-area input[type=\"text\"]:focus{\n\tborder:1px solid #03a9f4;\n}\n.login-input-head p {\n\tpadding:16px 0px;\n\tmargin:0;\n\tfont-size:14px;\n}\n.login-button-pro{\n\tpadding:30px 0px;\n}\n.login-button-pro .login-button{\n\tpadding:10px 20px;\n\tborder:none;\n\tbackground:#03a9f4;\n\tcolor:#fff;\n\tfont-weight:14px;\n\ttransition: all .4s ease 0s;\n}\n.login-button-pro .login-button.login-button-rg{\n\tbackground:#B3B3B3;\n\tmargin-right:10px;\n}\n.login-button-pro .login-button.login-button-rg:hover{\n\tbackground:#303030;\n\ttransition: all .4s ease 0s;\n}\n.login-button-pro .login-button.login-button-lg:hover{\n\tbackground:#303030;\n\ttransition: all .4s ease 0s;\n}\n.forgot-password a{\n\tcolor:#03a9f4;\n\tfont-size:13px;\n\tpadding-bottom:10px;\n\tdisplay:inline-block;\n}\n.forgot-password a:hover{\n\tcolor:#303030;\n}\n.login-keep-me input[type=\"checkbox\"]{\n\tdisplay:none;\n}\n.login-keep-me .login-check i {\n    border: 2px solid #03a9f4;\n    font-size: 12px;\n    padding: 2px;\n\tcolor:#03a9f4;\n}\n.register-mg-rt{\n\tmargin-right:0;\n}\n.register-check{\n\tmargin-top:10px;\n}\n.login-textarea-area{\n\tposition:relative;\n\tmargin-right:15px;\n}\n.login-textarea-area .contact-message{\n\twidth:100%;\n\theight:120px;\n\tpadding:10px;\n\tborder:1px solid #ccc;\n\tmargin-top:10px;\n}\n/**/\n/* radios and checkboxes */\n/**/\n.adminpro-form .checkbox {\n\tmargin-bottom: 4px;\n\tpadding-left: 27px;\n\tfont-size: 14px;\n\tline-height: 27px;\n\tcolor: #404040;\n\tcursor: pointer;\n\tfont-weight:300;\n}\n.adminpro-form .invalid {\n\tcolor:#ff0000;\n}\n.adminpro-form .checkbox i {\n\tposition: absolute;\n    top: 4px;\n    left: 0px;\n    display: block;\n    width: 20px;\n    height: 20px;\n    outline: none;\n    border-width: 2px;\n    border-style: solid;\n    background: #fff;\n    line-height: 20px;\n    color: #03a9f4;\n}\n.adminpro-form .checkbox input + i:after {\n\tposition: absolute;\n\topacity: 0;\n\t-ms-transition: opacity 0.1s;\n\t-moz-transition: opacity 0.1s;\n\t-webkit-transition: opacity 0.1s;\n}\n.adminpro-form .checkbox input + i:after {\n\tcontent: '\\f00c';\n    top: -2px;\n    left: -2px;\n    width: 20px;\n    height: 20px;\n    font: normal 12px/16px FontAwesome;\n    text-align: center;\n    line-height: 20px;\n}\n.cart-group .radio{\n\tmargin-left:20px;\n\tfont-weight:300;\n\tfont-size:14px;\n}\n.cart-group .radio input + i:after {\n\tcontent: '';\n    width: 5px;\n    height: 5px;\n    text-align: center;\n    line-height: 5px;\n\tbackground:#03a9f4;\n\tborder-radius:50%;\n\topacity: 0;\n    position: absolute;\n\tleft:2px;\n\ttop:2px;\n}\n.cart-group .radio i{\n    position: absolute;\n    top: 3px;\n    left: -20px;\n    display: block;\n    width: 13px;\n    height: 13px;\n    outline: none;\n    border-width: 2px;\n    border-style: solid;\n    background: #fff;\n\tborder-color: #03a9f4;\n\tborder-radius: 50%;\n}\n.cart-group input{\n\topacity:0;\n}\n.cart-group .radio input:checked + i:after{\n\topacity: 1;\n}\n.adminpro-form .checkbox input:checked + i:after {\n\topacity: 1;\n}\n\n/****** Style Star Rating Widget *****/\n.review-title span {\n    font-size: 14px;\n    padding-top: 5px;\n    display: block;\n}\n.review-rating {\n    text-align: right;\n    margin-right: 15px;\n}\n.rating {\n  border: none;\n}\n.rating > input {\n  display: none;\n}\n.rating > label:before {\n  margin: 5px;\n  font-size: 16px;\n  font-family: FontAwesome;\n  display: inline-block;\n  content: \"\\f005\";\n}\n.rating > .half:before {\n  content: \"\\f089\";\n  position: absolute;\n}\n.rating > label {\n  color: #ddd;\n  float: right;\n}\n.rating > input:checked ~ label, .rating:not(:checked) > label:hover, .rating:not(:checked) > label:hover ~ label {\n  color: #03a9f4;\n} \n.rating > input:checked + label:hover, .rating > input:checked ~ label:hover,\n.rating > label:hover ~ input:checked ~ label, .rating > input:checked ~ label:hover ~ label {\n  color: #03a9f4;\n}\n\n/****** Order Details *****/\n.interested-input-area, .budget-input-area{\n\tmargin-right:15px;\n}\n.interested-input-area select, .budget-input-area select{\n\twidth:100%;\n\theight:35px;\n\tpadding: 0px 35px 0px 10px;\n\tborder:1px solid #ccc;\n}\n.interested-input-area select{\n    margin: 10px 0px 10px 0px;\n}\n.budget-input-area select{\n    margin: 10px 0px 20px 0px;\n}\n.interested-input-area select:hover{\n\tborder:1px solid #ccc;\n}\n\n/**/\n/* datepicker */\n/**/\n.ui-datepicker {\n\tdisplay: none;\n\tpadding: 10px 12px;\n\tbackground: rgba(255,255,255,0.9);\n\tbox-shadow: 0 0 10px rgba(0,0,0,.3);\n\tfont: 13px/1.55 'Open Sans', Helvetica, Arial, sans-serif;\n\ttext-align: center;\n\tcolor: #666;\n}\n.ui-datepicker a {\n\tcolor: #404040;\n}\n.ui-datepicker-header {\n\tposition: relative;\n\tmargin: -10px -12px 10px;\n\tpadding: 10px;\n\tborder-bottom: 1px solid rgba(0,0,0,.1);\n\tfont-size: 15px;\n\tline-height: 27px;\n}\n.ui-datepicker-prev, \n.ui-datepicker-next {\n\tposition: absolute;\n\ttop: 0;\n\tdisplay: block;\n\twidth: 57px;\n\theight: 47px;\n\tfont-size: 15px;\n\tline-height: 47px;\n\ttext-decoration: none;\n\tcursor: pointer;\n}\n.ui-datepicker-prev {\n\tleft: 0;\n}\n.ui-datepicker-next {\n\tright: 0;\n}\n.ui-datepicker-calendar {\n\tborder-collapse: collapse;\n\tfont-size: 13px;\n\tline-height: 27px;\n}\n.ui-datepicker-calendar th {\n\tcolor: #999;\n}\n.ui-datepicker-calendar a,\n.ui-datepicker-calendar span {\n\tdisplay: block;\n\twidth: 46px;\n\tmargin: auto;\n\ttext-decoration: none;\n\tcolor: #404040;\n}\n.ui-datepicker-calendar a:hover {\n\tbackground: rgba(0,0,0,.05);\t\n}\n.ui-datepicker-calendar span {\n\tcolor: #bfbfbf;\n}\n.ui-datepicker-today a {\n\tfont-weight: 700;\n}\n.ui-datepicker-calendar .ui-state-active {\n\tbackground: rgba(0,0,0,.05);\n\tcursor: default;\t\n}\n.ui-datepicker-inline {\n\tborder: 2px solid #e5e5e5;\n\tbackground: #fff;\n\tbox-shadow: none;\n}\n.ui-datepicker-inline .ui-datepicker-header {\n\tline-height: 47px;\n}\n.ui-datepicker-inline .ui-datepicker-calendar {\n\twidth: 100%;\n}\n.login-input-area #txtCompare{\n\twidth:58%;\n}\n.login-input-area #txtCaptcha{\n\t    width: 38%;\n    background: #303030;\n    color: #fff;\n    font-weight: 700;\n    outline: none;\n    border: none;\n    margin-left: -10px;\n    cursor: default;\n}\nfieldset{\n\tmargin:0px;\n\tpadding:0px;\n}\n.rating label{\n\tmargin:0px;\n}"
  },
  {
    "path": "public/admin/css/ionRangeSlider/ion.rangeSlider.css",
    "content": "/* Ion.RangeSlider\n// css version 1.8.5\n// by Denis Ineshin | ionden.com\n// ===================================================================================================================*/\n\n/* =====================================================================================================================\n// RangeSlider */\n\n.irs {\n    position: relative; display: block;\n}\n    .irs-line {\n        position: relative; display: block;\n        overflow: hidden;\n    }\n        .irs-line-left, .irs-line-mid, .irs-line-right {\n            position: absolute; display: block;\n            top: 0;\n        }\n        .irs-line-left {\n            left: 0; width: 10%;\n        }\n        .irs-line-mid {\n            left: 10%; width: 80%;\n        }\n        .irs-line-right {\n            right: 0; width: 10%;\n        }\n\n    .irs-diapason {\n        position: absolute; display: block;\n        left: 0; width: 100%;\n    }\n    .irs-slider {\n        position: absolute; display: block;\n        cursor: default;\n        z-index: 1;\n    }\n        .irs-slider.single {\n            left: 10px;\n        }\n            .irs-slider.single:before {\n                position: absolute; display: block; content: \"\";\n                top: -30%; left: -30%;\n                width: 160%; height: 160%;\n                background: rgba(0,0,0,0.0);\n            }\n        .irs-slider.from {\n            left: 100px;\n        }\n            .irs-slider.from:before {\n                position: absolute; display: block; content: \"\";\n                top: -30%; left: -30%;\n                width: 130%; height: 160%;\n                background: rgba(0,0,0,0.0);\n            }\n        .irs-slider.to {\n            left: 300px;\n        }\n            .irs-slider.to:before {\n                position: absolute; display: block; content: \"\";\n                top: -30%; left: 0;\n                width: 130%; height: 160%;\n                background: rgba(0,0,0,0.0);\n            }\n        .irs-slider.last {\n            z-index: 2;\n        }\n\n    .irs-min {\n        position: absolute; display: block;\n        left: 0;\n        cursor: default;\n    }\n    .irs-max {\n        position: absolute; display: block;\n        right: 0;\n        cursor: default;\n    }\n\n    .irs-from, .irs-to, .irs-single {\n        position: absolute; display: block;\n        top: 0; left: 0;\n        cursor: default;\n        white-space: nowrap;\n    }\n\n\n.irs-grid {\n    position: absolute; display: none;\n    bottom: 0; left: 0;\n    width: 100%; height: 20px;\n}\n.irs-with-grid .irs-grid {\n    display: block;\n}\n    .irs-grid-pol {\n        position: absolute;\n        top: 0; left: 0;\n        width: 1px; height: 8px;\n        background: #000;\n    }\n    .irs-grid-pol.small {\n        height: 4px;\n    }\n    .irs-grid-text {\n        position: absolute;\n        bottom: 0; left: 0;\n        width: 100px;\n        white-space: nowrap;\n        text-align: center;\n        font-size: 9px; line-height: 9px;\n        color: #000;\n    }\n\n.irs-disable-mask {\n    position: absolute; display: block;\n    top: 0; left: 0;\n    width: 100%; height: 100%;\n    cursor: default;\n    background: rgba(0,0,0,0.0);\n    z-index: 2;\n}\n.irs-disabled {\n    opacity: 0.4;\n}"
  },
  {
    "path": "public/admin/css/ionRangeSlider/ion.rangeSlider.skinFlat.css",
    "content": "/* Ion.RangeSlider, Flat UI Skin\n// css version 1.8.5\n// by Denis Ineshin | ionden.com\n// ===================================================================================================================*/\n\n/* =====================================================================================================================\n// Skin details */\n\n.irs-line-mid,\n.irs-line-left,\n.irs-line-right,\n.irs-diapason,\n.irs-slider {\n    background: url(sprite-skin-flat.png) repeat-x;\n}\n\n.irs {\n    height: 40px;\n}\n.irs-with-grid {\n    height: 60px;\n}\n.irs-line {\n    height: 12px; top: 25px;\n}\n    .irs-line-left {\n        height: 12px;\n        background-position: 0 -30px;\n    }\n    .irs-line-mid {\n        height: 12px;\n        background-position: 0 0;\n    }\n    .irs-line-right {\n        height: 12px;\n        background-position: 100% -30px;\n    }\n\n.irs-diapason {\n    height: 12px; top: 25px;\n    background-position: 0 -60px;\n}\n\n.irs-slider {\n    width: 16px; height: 18px;\n    top: 22px;\n    background-position: 0 -90px;\n}\n#irs-active-slider, .irs-slider:hover {\n    background-position: 0 -120px;\n}\n\n.irs-min, .irs-max {\n    color: #999;\n    font-size: 10px; line-height: 1.333;\n    text-shadow: none;\n    top: 0; padding: 1px 3px;\n    background: #e1e4e9;\n    border-radius: 4px;\n}\n\n.irs-from, .irs-to, .irs-single {\n    color: #fff;\n    font-size: 10px; line-height: 1.333;\n    text-shadow: none;\n    padding: 1px 5px;\n    background: #ed5565;\n    border-radius: 4px;\n}\n.irs-from:after, .irs-to:after, .irs-single:after {\n    position: absolute; display: block; content: \"\";\n    bottom: -6px; left: 50%;\n    width: 0; height: 0;\n    margin-left: -3px;\n    overflow: hidden;\n    border: 3px solid transparent;\n    border-top-color: #ed5565;\n}\n\n\n.irs-grid-pol {\n    background: #e1e4e9;\n}\n.irs-grid-text {\n    color: #999;\n}\n\n.irs-disabled {\n}"
  },
  {
    "path": "public/admin/css/jvectormap/jquery-jvectormap-2.0.3.css",
    "content": "svg {\n    touch-action: none;\n}\n\n.jvectormap-container {\n    width: 100%;\n    height: 100%;\n    position: relative;\n    overflow: hidden;\n    touch-action: none;\n}\n\n.jvectormap-tip {\n    position: absolute;\n    display: none;\n    border: solid 1px #CDCDCD;\n    border-radius: 3px;\n    background: #292929;\n    color: white;\n    font-family: sans-serif, Verdana;\n    font-size: smaller;\n    padding: 3px;\n}\n\n.jvectormap-zoomin, .jvectormap-zoomout, .jvectormap-goback {\n    position: absolute;\n    left: 10px;\n    border-radius: 3px;\n    background: #292929;\n    padding: 3px;\n    color: white;\n    cursor: pointer;\n    line-height: 10px;\n    text-align: center;\n    box-sizing: content-box;\n}\n\n.jvectormap-zoomin, .jvectormap-zoomout {\n    width: 10px;\n    height: 10px;\n}\n\n.jvectormap-zoomin {\n    top: 10px;\n}\n\n.jvectormap-zoomout {\n    top: 30px;\n}\n\n.jvectormap-goback {\n    bottom: 10px;\n    z-index: 1000;\n    padding: 6px;\n}\n\n.jvectormap-spinner {\n    position: absolute;\n    left: 0;\n    top: 0;\n    right: 0;\n    bottom: 0;\n    background: center no-repeat url(data:image/gif;base64,R0lGODlhIAAgAPMAAP///wAAAMbGxoSEhLa2tpqamjY2NlZWVtjY2OTk5Ly8vB4eHgQEBAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAIAAgAAAE5xDISWlhperN52JLhSSdRgwVo1ICQZRUsiwHpTJT4iowNS8vyW2icCF6k8HMMBkCEDskxTBDAZwuAkkqIfxIQyhBQBFvAQSDITM5VDW6XNE4KagNh6Bgwe60smQUB3d4Rz1ZBApnFASDd0hihh12BkE9kjAJVlycXIg7CQIFA6SlnJ87paqbSKiKoqusnbMdmDC2tXQlkUhziYtyWTxIfy6BE8WJt5YJvpJivxNaGmLHT0VnOgSYf0dZXS7APdpB309RnHOG5gDqXGLDaC457D1zZ/V/nmOM82XiHRLYKhKP1oZmADdEAAAh+QQJCgAAACwAAAAAIAAgAAAE6hDISWlZpOrNp1lGNRSdRpDUolIGw5RUYhhHukqFu8DsrEyqnWThGvAmhVlteBvojpTDDBUEIFwMFBRAmBkSgOrBFZogCASwBDEY/CZSg7GSE0gSCjQBMVG023xWBhklAnoEdhQEfyNqMIcKjhRsjEdnezB+A4k8gTwJhFuiW4dokXiloUepBAp5qaKpp6+Ho7aWW54wl7obvEe0kRuoplCGepwSx2jJvqHEmGt6whJpGpfJCHmOoNHKaHx61WiSR92E4lbFoq+B6QDtuetcaBPnW6+O7wDHpIiK9SaVK5GgV543tzjgGcghAgAh+QQJCgAAACwAAAAAIAAgAAAE7hDISSkxpOrN5zFHNWRdhSiVoVLHspRUMoyUakyEe8PTPCATW9A14E0UvuAKMNAZKYUZCiBMuBakSQKG8G2FzUWox2AUtAQFcBKlVQoLgQReZhQlCIJesQXI5B0CBnUMOxMCenoCfTCEWBsJColTMANldx15BGs8B5wlCZ9Po6OJkwmRpnqkqnuSrayqfKmqpLajoiW5HJq7FL1Gr2mMMcKUMIiJgIemy7xZtJsTmsM4xHiKv5KMCXqfyUCJEonXPN2rAOIAmsfB3uPoAK++G+w48edZPK+M6hLJpQg484enXIdQFSS1u6UhksENEQAAIfkECQoAAAAsAAAAACAAIAAABOcQyEmpGKLqzWcZRVUQnZYg1aBSh2GUVEIQ2aQOE+G+cD4ntpWkZQj1JIiZIogDFFyHI0UxQwFugMSOFIPJftfVAEoZLBbcLEFhlQiqGp1Vd140AUklUN3eCA51C1EWMzMCezCBBmkxVIVHBWd3HHl9JQOIJSdSnJ0TDKChCwUJjoWMPaGqDKannasMo6WnM562R5YluZRwur0wpgqZE7NKUm+FNRPIhjBJxKZteWuIBMN4zRMIVIhffcgojwCF117i4nlLnY5ztRLsnOk+aV+oJY7V7m76PdkS4trKcdg0Zc0tTcKkRAAAIfkECQoAAAAsAAAAACAAIAAABO4QyEkpKqjqzScpRaVkXZWQEximw1BSCUEIlDohrft6cpKCk5xid5MNJTaAIkekKGQkWyKHkvhKsR7ARmitkAYDYRIbUQRQjWBwJRzChi9CRlBcY1UN4g0/VNB0AlcvcAYHRyZPdEQFYV8ccwR5HWxEJ02YmRMLnJ1xCYp0Y5idpQuhopmmC2KgojKasUQDk5BNAwwMOh2RtRq5uQuPZKGIJQIGwAwGf6I0JXMpC8C7kXWDBINFMxS4DKMAWVWAGYsAdNqW5uaRxkSKJOZKaU3tPOBZ4DuK2LATgJhkPJMgTwKCdFjyPHEnKxFCDhEAACH5BAkKAAAALAAAAAAgACAAAATzEMhJaVKp6s2nIkolIJ2WkBShpkVRWqqQrhLSEu9MZJKK9y1ZrqYK9WiClmvoUaF8gIQSNeF1Er4MNFn4SRSDARWroAIETg1iVwuHjYB1kYc1mwruwXKC9gmsJXliGxc+XiUCby9ydh1sOSdMkpMTBpaXBzsfhoc5l58Gm5yToAaZhaOUqjkDgCWNHAULCwOLaTmzswadEqggQwgHuQsHIoZCHQMMQgQGubVEcxOPFAcMDAYUA85eWARmfSRQCdcMe0zeP1AAygwLlJtPNAAL19DARdPzBOWSm1brJBi45soRAWQAAkrQIykShQ9wVhHCwCQCACH5BAkKAAAALAAAAAAgACAAAATrEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq+E71SRQeyqUToLA7VxF0JDyIQh/MVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiRMDjI0Fd30/iI2UA5GSS5UDj2l6NoqgOgN4gksEBgYFf0FDqKgHnyZ9OX8HrgYHdHpcHQULXAS2qKpENRg7eAMLC7kTBaixUYFkKAzWAAnLC7FLVxLWDBLKCwaKTULgEwbLA4hJtOkSBNqITT3xEgfLpBtzE/jiuL04RGEBgwWhShRgQExHBAAh+QQJCgAAACwAAAAAIAAgAAAE7xDISWlSqerNpyJKhWRdlSAVoVLCWk6JKlAqAavhO9UkUHsqlE6CwO1cRdCQ8iEIfzFVTzLdRAmZX3I2SfZiCqGk5dTESJeaOAlClzsJsqwiJwiqnFrb2nS9kmIcgEsjQydLiIlHehhpejaIjzh9eomSjZR+ipslWIRLAgMDOR2DOqKogTB9pCUJBagDBXR6XB0EBkIIsaRsGGMMAxoDBgYHTKJiUYEGDAzHC9EACcUGkIgFzgwZ0QsSBcXHiQvOwgDdEwfFs0sDzt4S6BK4xYjkDOzn0unFeBzOBijIm1Dgmg5YFQwsCMjp1oJ8LyIAACH5BAkKAAAALAAAAAAgACAAAATwEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq+E71SRQeyqUToLA7VxF0JDyIQh/MVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiUd6GGl6NoiPOH16iZKNlH6KmyWFOggHhEEvAwwMA0N9GBsEC6amhnVcEwavDAazGwIDaH1ipaYLBUTCGgQDA8NdHz0FpqgTBwsLqAbWAAnIA4FWKdMLGdYGEgraigbT0OITBcg5QwPT4xLrROZL6AuQAPUS7bxLpoWidY0JtxLHKhwwMJBTHgPKdEQAACH5BAkKAAAALAAAAAAgACAAAATrEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq+E71SRQeyqUToLA7VxF0JDyIQh/MVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiUd6GAULDJCRiXo1CpGXDJOUjY+Yip9DhToJA4RBLwMLCwVDfRgbBAaqqoZ1XBMHswsHtxtFaH1iqaoGNgAIxRpbFAgfPQSqpbgGBqUD1wBXeCYp1AYZ19JJOYgH1KwA4UBvQwXUBxPqVD9L3sbp2BNk2xvvFPJd+MFCN6HAAIKgNggY0KtEBAAh+QQJCgAAACwAAAAAIAAgAAAE6BDISWlSqerNpyJKhWRdlSAVoVLCWk6JKlAqAavhO9UkUHsqlE6CwO1cRdCQ8iEIfzFVTzLdRAmZX3I2SfYIDMaAFdTESJeaEDAIMxYFqrOUaNW4E4ObYcCXaiBVEgULe0NJaxxtYksjh2NLkZISgDgJhHthkpU4mW6blRiYmZOlh4JWkDqILwUGBnE6TYEbCgevr0N1gH4At7gHiRpFaLNrrq8HNgAJA70AWxQIH1+vsYMDAzZQPC9VCNkDWUhGkuE5PxJNwiUK4UfLzOlD4WvzAHaoG9nxPi5d+jYUqfAhhykOFwJWiAAAIfkECQoAAAAsAAAAACAAIAAABPAQyElpUqnqzaciSoVkXVUMFaFSwlpOCcMYlErAavhOMnNLNo8KsZsMZItJEIDIFSkLGQoQTNhIsFehRww2CQLKF0tYGKYSg+ygsZIuNqJksKgbfgIGepNo2cIUB3V1B3IvNiBYNQaDSTtfhhx0CwVPI0UJe0+bm4g5VgcGoqOcnjmjqDSdnhgEoamcsZuXO1aWQy8KAwOAuTYYGwi7w5h+Kr0SJ8MFihpNbx+4Erq7BYBuzsdiH1jCAzoSfl0rVirNbRXlBBlLX+BP0XJLAPGzTkAuAOqb0WT5AH7OcdCm5B8TgRwSRKIHQtaLCwg1RAAAOwAAAAAAAAAAAA==);\n}\n\n.jvectormap-legend-title {\n    font-weight: bold;\n    font-size: 14px;\n    text-align: center;\n}\n\n.jvectormap-legend-cnt {\n    position: absolute;\n}\n\n.jvectormap-legend-cnt-h {\n    bottom: 0;\n    right: 0;\n}\n\n.jvectormap-legend-cnt-v {\n    top: 0;\n    right: 0;\n}\n\n.jvectormap-legend {\n    background: black;\n    color: white;\n    border-radius: 3px;\n}\n\n.jvectormap-legend-cnt-h .jvectormap-legend {\n    float: left;\n    margin: 0 10px 10px 0;\n    padding: 3px 3px 1px 3px;\n}\n\n.jvectormap-legend-cnt-h .jvectormap-legend .jvectormap-legend-tick {\n    float: left;\n}\n\n.jvectormap-legend-cnt-v .jvectormap-legend {\n    margin: 10px 10px 0 0;\n    padding: 3px;\n}\n\n.jvectormap-legend-cnt-h .jvectormap-legend-tick {\n    width: 40px;\n}\n\n.jvectormap-legend-cnt-h .jvectormap-legend-tick-sample {\n    height: 15px;\n}\n\n.jvectormap-legend-cnt-v .jvectormap-legend-tick-sample {\n    height: 20px;\n    width: 20px;\n    display: inline-block;\n    vertical-align: middle;\n}\n\n.jvectormap-legend-tick-text {\n    font-size: 12px;\n}\n\n.jvectormap-legend-cnt-h .jvectormap-legend-tick-text {\n    text-align: center;\n}\n\n.jvectormap-legend-cnt-v .jvectormap-legend-tick-text {\n    display: inline-block;\n    vertical-align: middle;\n    line-height: 20px;\n    padding-left: 3px;\n}"
  },
  {
    "path": "public/admin/css/main.css",
    "content": "/*! HTML5 Boilerplate v5.2.0 | MIT License | https://html5boilerplate.com/ */\n\n/*\n * What follows is the result of much research on cross-browser styling.\n * Credit left inline and big thanks to Nicolas Gallagher, Jonathan Neal,\n * Kroc Camen, and the H5BP dev community and team.\n */\n\n/* ==========================================================================\n   Base styles: opinionated defaults\n   ========================================================================== */\n\nhtml {\n    color: #222;\n    font-size: 1em;\n    line-height: 1.4;\n}\n\n/*\n * Remove text-shadow in selection highlight:\n * https://twitter.com/miketaylr/status/12228805301\n *\n * These selection rule sets have to be separate.\n * Customize the background color to match your design.\n */\n\n::-moz-selection {\n    background: #b3d4fc;\n    text-shadow: none;\n}\n\n::selection {\n    background: #b3d4fc;\n    text-shadow: none;\n}\n\n/*\n * A better looking default horizontal rule\n */\n\nhr {\n    display: block;\n    height: 1px;\n    border: 0;\n    border-top: 1px solid #ccc;\n    margin: 1em 0;\n    padding: 0;\n}\n\n/*\n * Remove the gap between audio, canvas, iframes,\n * images, videos and the bottom of their containers:\n * https://github.com/h5bp/html5-boilerplate/issues/440\n */\n\naudio,\ncanvas,\niframe,\nimg,\nsvg,\nvideo {\n    vertical-align: middle;\n}\n\n/*\n * Remove default fieldset styles.\n */\n\nfieldset {\n    border: 0;\n    margin: 0;\n    padding: 0;\n}\n\n/*\n * Allow only vertical resizing of textareas.\n */\n\ntextarea {\n    resize: vertical;\n}\n\n/* ==========================================================================\n   Browser Upgrade Prompt\n   ========================================================================== */\n\n.browserupgrade {\n    margin: 0.2em 0;\n    background: #ccc;\n    color: #000;\n    padding: 0.2em 0;\n}\n\n/* ==========================================================================\n   Author's custom styles\n   ========================================================================== */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/* ==========================================================================\n   Helper classes\n   ========================================================================== */\n\n/*\n * Hide visually and from screen readers:\n */\n\n.hidden {\n    display: none !important;\n}\n\n/*\n * Hide only visually, but have it available for screen readers:\n * http://snook.ca/archives/html_and_css/hiding-content-for-accessibility\n */\n\n.visuallyhidden {\n    border: 0;\n    clip: rect(0 0 0 0);\n    height: 1px;\n    margin: -1px;\n    overflow: hidden;\n    padding: 0;\n    position: absolute;\n    width: 1px;\n}\n\n/*\n * Extends the .visuallyhidden class to allow the element\n * to be focusable when navigated to via the keyboard:\n * https://www.drupal.org/node/897638\n */\n\n.visuallyhidden.focusable:active,\n.visuallyhidden.focusable:focus {\n    clip: auto;\n    height: auto;\n    margin: 0;\n    overflow: visible;\n    position: static;\n    width: auto;\n}\n\n/*\n * Hide visually and from screen readers, but maintain layout\n */\n\n.invisible {\n    visibility: hidden;\n}\n\n/*\n * Clearfix: contain floats\n *\n * For modern browsers\n * 1. The space content is one way to avoid an Opera bug when the\n *    `contenteditable` attribute is included anywhere else in the document.\n *    Otherwise it causes space to appear at the top and bottom of elements\n *    that receive the `clearfix` class.\n * 2. The use of `table` rather than `block` is only necessary if using\n *    `:before` to contain the top-margins of child elements.\n */\n\n.clearfix:before,\n.clearfix:after {\n    content: \" \"; /* 1 */\n    display: table; /* 2 */\n}\n\n.clearfix:after {\n    clear: both;\n}\n\n/* ==========================================================================\n   EXAMPLE Media Queries for Responsive Design.\n   These examples override the primary ('mobile first') styles.\n   Modify as content requires.\n   ========================================================================== */\n\n@media only screen and (min-width: 35em) {\n    /* Style adjustments for viewports that meet the condition */\n}\n\n@media print,\n       (-webkit-min-device-pixel-ratio: 1.25),\n       (min-resolution: 1.25dppx),\n       (min-resolution: 120dpi) {\n    /* Style adjustments for high resolution devices */\n}\n\n/* ==========================================================================\n   Print styles.\n   Inlined to avoid the additional HTTP request:\n   http://www.phpied.com/delay-loading-your-print-css/\n   ========================================================================== */\n\n@media print {\n    *,\n    *:before,\n    *:after {\n        background: transparent !important;\n        color: #000 !important; /* Black prints faster:\n                                   http://www.sanbeiji.com/archives/953 */\n        box-shadow: none !important;\n        text-shadow: none !important;\n    }\n\n    a,\n    a:visited {\n        text-decoration: underline;\n    }\n\n    a[href]:after {\n        content: \" (\" attr(href) \")\";\n    }\n\n    abbr[title]:after {\n        content: \" (\" attr(title) \")\";\n    }\n\n    /*\n     * Don't show links that are fragment identifiers,\n     * or use the `javascript:` pseudo protocol\n     */\n\n    a[href^=\"#\"]:after,\n    a[href^=\"javascript:\"]:after {\n        content: \"\";\n    }\n\n    pre,\n    blockquote {\n        border: 1px solid #999;\n        page-break-inside: avoid;\n    }\n\n    /*\n     * Printing Tables:\n     * http://css-discuss.incutio.com/wiki/Printing_Tables\n     */\n\n    thead {\n        display: table-header-group;\n    }\n\n    tr,\n    img {\n        page-break-inside: avoid;\n    }\n\n    img {\n        max-width: 100% !important;\n    }\n\n    p,\n    h2,\n    h3 {\n        orphans: 3;\n        widows: 3;\n    }\n\n    h2,\n    h3 {\n        page-break-after: avoid;\n    }\n}\n"
  },
  {
    "path": "public/admin/css/modals.css",
    "content": "/****** Bootstrap Modal *****/\n.adminpro-modal-pos{\n\tposition:relative;\n}\n.modal-close-area{\n\tposition: absolute;\n    right: -30px;\n    top: -20px;\n}\n.modal-close-area.modal-close-df{\n    right: -22px;\n}\n.modal-dialog {\n    margin: 50px auto;\n}\n.modal-close-area .close{\n\topacity:1;\n}\n.modal-close-area a{\n\t    color: #fff;\n    font-size: 16px;\n    background: #03a9f4;\n    height: 30px;\n    width: 30px;\n    text-align: center;\n    line-height: 28px;\n    display: block;\n    border-radius: 50%;\n}\n.modal-close-area a:hover{\n\t    color: #303030;\n}\n.modal-clickable{\n\ttext-align:center;\n}\n.modal-clickable p{\n\tbackground:#fff;\n\tfont-size:14px;\n\tpadding:15px 20px;\n}\n.modal-clickable a{\n\ttext-decoration:underline;\n\tcolor:#03a9f4;\n}\n\n\n.modal-adminpro-general .modal-content{\n\tborder-radius:0px;\n}\n.modal-adminpro-general .modal-footer{\n\tborder-top:0px solid #fff;\n}\n.modal-adminpro-general .modal-body{\n\ttext-align:center;\n\tpadding:50px 70px;\n}\n.modal-adminpro-general .modal-body p{\n\tline-height:24px;\n\tfont-size:14px;\n\tfont-weight:400;\n\tmargin:0px;\n}\n.modal-adminpro-general .modal-body h2{\n\tfont-size:30px;\n}\n.modal-adminpro-general .modal-body .modal-check-pro{\n\tfont-size:40px;\n\tcolor:#03a9f4;\n\tmargin-bottom:30px;\n\tdisplay:block;\n}\n.modal-adminpro-general .modal-body .modal-check-pro.information-icon-pro{\n\tfont-size:40px;\n}\n.modal-bootstrap{\n\tbackground:#fff;\n\tpadding:30px;\n}\n.modal-bootstrap h2{\n\tfont-size:20px;\n\tfont-weight:700;\n}\n.modal-bootstrap p{\n\tfont-size:14px;\n\tline-height:24px;\n\tfont-weight:400;\n}\n.modal-footer a{\n\tmargin-left:20px;\n}\n.modal-area-button a{\n\tmargin:0px 5px;\n}\n.modal-area-button a:hover{\n\tcolor:#fff;\n}\n.modal-area-button a, .modal-footer a{\n\tpadding: 13px 28px;\n    text-decoration: none;\n    color: #fff;\n    position: relative;\n    z-index: 11;\n    font-size: 14px;\n\tdisplay:inline-block;\n}\n.modal-area-button a.default:before, .modal-footer a:before, .modal-area-button a.fullwidth:before, .modal-area-button a.Customwidth:before, .modal-area-button a.FullColor:before, .modal-area-button a.Primary:before, .modal-area-button a.Information:before, .modal-area-button a.Warning:before, .modal-area-button a.Danger:before, .modal-area-button a.Alert:before, .modal-area-button a.bounce:before, .modal-area-button a.flash:before, .modal-area-button a.pulse:before, .modal-area-button a.rubberBand:before, .modal-area-button a.shake:before, .modal-area-button a.swing:before, .modal-area-button a.tada:before, .modal-area-button a.wobble:before, .modal-area-button a.jello:before, .modal-area-button a.bounceIn:before, .modal-area-button a.bounceInDown:before, .modal-area-button a.bounceInLeft:before, .modal-area-button a.bounceInRight:before, .modal-area-button a.bounceInUp:before, .modal-area-button a.bounceOut:before, .modal-area-button a.fadeIn:before, .modal-area-button a.fadeInDown:before, .modal-area-button a.fadeInDownBig:before, .modal-area-button a.fadeInLeft:before, .modal-area-button a.fadeInLeftBig:before, .modal-area-button a.fadeInRight:before, .modal-area-button a.fadeInUp:before, .modal-area-button a.flip:before, .modal-area-button a.flipInX:before, .modal-area-button a.flipInY:before, .modal-area-button a.lightSpeedIn:before, .modal-area-button a.rotateIn:before, .modal-area-button a.rotateInDownLeft:before, .modal-area-button a.rotateInDownRight:before, .modal-area-button a.rotateInUpLeft:before, .modal-area-button a.rotateInUpRight:before, .modal-area-button a.hinge:before, .modal-area-button a.rollIn:before, .modal-area-button a.zoomIn:before, .modal-area-button a.zoomInDown:before, .modal-area-button a.zoomInLeft:before, .modal-area-button a.zoomInRight:before, .modal-area-button a.zoomInUp:before, .modal-area-button a.slideInDown:before, .modal-area-button a.slideInLeft:before, .modal-area-button a.slideInRight:before, .modal-area-button a.slideInUp:before{\n\tbackground: #03a9f4;\n    position: absolute;\n    top: 0px;\n    left: 0px;\n    height: 45px;\n    z-index: -1;\n    content: \"\";\n}\n.modal-area-button a.default:before, .modal-footer a:before{\n\twidth:100px;\n}\n.modal-area-button a.fullwidth:before{\n\twidth:118px;\n}\n.modal-area-button a.Customwidth:before{\n\twidth:142px;\n}\n.modal-area-button a.FullColor:before{\n\twidth:118px;\n}\n.modal-area-button a.Primary:before{\n\twidth:104px;\n}\n.modal-area-button a.Information:before{\n\twidth:130px;\n}\n.modal-area-button a.Warning:before{\n\twidth:109px;\n}\n.modal-area-button a.Danger:before{\n\twidth:102px;\n}\n.modal-area-button a.bounce:before{\n\twidth:102px;\n}\n.modal-area-button a.flash:before{\n\twidth:90px;\n}\n.modal-area-button a.pulse:before{\n\twidth:90px;\n}\n.modal-area-button a.shake:before{\n\twidth:90px;\n}\n.modal-area-button a.swing:before{\n\twidth:90px;\n}\n.modal-area-button a.tada:before{\n\twidth:90px;\n}\n.modal-area-button a.wobble:before{\n\twidth:102px;\n}\n.modal-area-button a.bounceIn:before{\n\twidth:115px;\n}\n.modal-area-button a.jello:before{\n\twidth:80px;\n}\n.modal-area-button a.rubberBand:before{\n\twidth:130px;\n}\n.modal-area-button a.bounceInDown:before{\n\twidth:151px;\n}\n.modal-area-button a.bounceInUp:before{\n\twidth:134px;\n}\n.modal-area-button a.bounceOut:before{\n\twidth:128px;\n}\n.modal-area-button a.fadeIn:before{\n\twidth:98px;\n}\n.modal-area-button a.fadeInDown:before{\n\twidth:135px;\n}\n.modal-area-button a.fadeInDownBig:before{\n\twidth:154px;\n}\n.modal-area-button a.fadeInLeft:before{\n\twidth:122px;\n}\n.modal-area-button a.fadeInRight:before{\n\twidth:130px;\n}\n.modal-area-button a.fadeInUp:before{\n\twidth:117px;\n}\n.modal-area-button a.fadeInLeftBig:before{\n\twidth:138px;\n}\n.modal-area-button a.bounceInLeft:before{\n\twidth:138px;\n}\n.modal-area-button a.bounceInRight:before{\n\twidth:146px;\n}\n.modal-area-button a.Danger.danger-color:before{\n\tbackground:#F45846;\n}\n.modal-area-button a.Alert.Alert-color:before{\n\tbackground:#d35400;\n}\n.modal-area-button a.Warning.Warning-color:before{\n\tbackground:#f39c12;\n}\n.modal-area-button a.Information.Information-color:before{\n\tbackground:#8e44ad;\n}\n.modal-area-button a.Alert:before{\n\twidth:85px;\n}\n.modal-area-button a.flip:before{\n\twidth:85px;\n}\n.modal-area-button a.flipInX:before{\n\twidth:97px;\n}\n.modal-area-button a.flipInY:before{\n\twidth:97px;\n}\n.modal-area-button a.lightSpeedIn:before{\n\twidth:138px;\n}\n.modal-area-button a.rotateIn:before{\n\twidth:106px;\n}\n.modal-area-button a.rotateInDownLeft:before{\n\twidth:168px;\n}\n.modal-area-button a.rotateInDownRight:before{\n\twidth:176px;\n}\n.modal-area-button a.rotateInUpLeft:before{\n\twidth:150px;\n}\n.modal-area-button a.rotateInUpRight:before{\n\twidth:159px;\n}\n.modal-area-button a.hinge:before{\n\twidth:93px;\n}\n.modal-area-button a.rollIn:before{\n\twidth:90px;\n}\n.modal-area-button a.zoomIn:before{\n\twidth:104px;\n}\n.modal-area-button a.zoomInDown:before{\n\twidth:140px;\n}\n.modal-area-button a.zoomInLeft:before{\n\twidth:128px;\n}\n.modal-area-button a.zoomInRight:before{\n\twidth:136px;\n}\n.modal-area-button a.zoomInUp:before{\n\twidth:122px;\n}\n.modal-area-button a.slideInDown:before{\n\twidth:133px;\n}\n.modal-area-button a.slideInLeft:before{\n\twidth:122px;\n}\n.modal-area-button a.slideInRight:before{\n\twidth:130px;\n}\n.modal-area-button a.slideInUp:before{\n\twidth:116px;\n}\n.modal-area-button a.default:after, .modal-footer a:after, .modal-area-button a.fullwidth:after, .modal-area-button a.Customwidth:after, .modal-area-button a.FullColor:after, .modal-area-button a.Primary:after, .modal-area-button a.Information:after, .modal-area-button a.Warning:after, .modal-area-button a.Danger:after, .modal-area-button a.Alert:after, .modal-area-button a.bounce:after, .modal-area-button a.flash:after, .modal-area-button a.pulse:after, .modal-area-button a.rubberBand:after, .modal-area-button a.shake:after, .modal-area-button a.swing:after, .modal-area-button a.tada:after, .modal-area-button a.wobble:after, .modal-area-button a.jello:after, .modal-area-button a.bounceIn:after, .modal-area-button a.bounceInDown:after, .modal-area-button a.bounceInLeft:after, .modal-area-button a.bounceInRight:after, .modal-area-button a.bounceInUp:after, .modal-area-button a.bounceOut:after, .modal-area-button a.fadeIn:after, .modal-area-button a.fadeInDown:after, .modal-area-button a.fadeInDownBig:after, .modal-area-button a.fadeInLeft:after, .modal-area-button a.fadeInLeftBig:after, .modal-area-button a.fadeInRight:after, .modal-area-button a.fadeInUp:after, .modal-area-button a.flip:after, .modal-area-button a.flipInX:after, .modal-area-button a.flipInY:after, .modal-area-button a.lightSpeedIn:after, .modal-area-button a.rotateIn:after, .modal-area-button a.rotateInDownLeft:after, .modal-area-button a.rotateInDownRight:after, .modal-area-button a.rotateInUpLeft:after, .modal-area-button a.rotateInUpRight:after, .modal-area-button a.hinge:after, .modal-area-button a.rollIn:after, .modal-area-button a.zoomIn:after, .modal-area-button a.zoomInDown:after, .modal-area-button a.zoomInLeft:after, .modal-area-button a.zoomInRight:after, .modal-area-button a.zoomInUp:after, .modal-area-button a.slideInDown:after, .modal-area-button a.slideInLeft:after, .modal-area-button a.slideInRight:after, .modal-area-button a.slideInUp:after{\n\tbackground: #303030;\n    position: absolute;\n    top: 0px;\n    left: 0px;\n    height: 0px;\n    z-index: -1;\n    content: \"\";\n\topacity:0;\n\ttransition: all 0.3s ease 0s;\n}\n.modal-area-button a.default:after, .modal-footer a:after{\n\twidth:100px;\n}\n.modal-area-button a.fullwidth:after{\n\twidth:118px;\n}\n.modal-area-button a.FullColor:after{\n\twidth:118px;\n}\n.modal-area-button a.Customwidth:after{\n\twidth:142px;\n}\n.modal-area-button a.Primary:after{\n\twidth:104px;\n}\n.modal-area-button a.bounce:after{\n\twidth:102px;\n}\n.modal-area-button a.flash:after{\n\twidth:90px;\n}\n.modal-area-button a.pulse:after{\n\twidth:90px;\n}\n.modal-area-button a.shake:after{\n\twidth:90px;\n}\n.modal-area-button a.swing:after{\n\twidth:90px;\n}\n.modal-area-button a.tada:after{\n\twidth:90px;\n}\n.modal-area-button a.wobble:after{\n\twidth:102px;\n}\n.modal-area-button a.bounceIn:after{\n\twidth:115px;\n}\n.modal-area-button a.jello:after{\n\twidth:80px;\n}\n.modal-area-button a.rubberBand:after{\n\twidth:130px;\n}\n.modal-area-button a.bounceInDown:after{\n\twidth:151px;\n}\n.modal-area-button a.bounceInUp:after{\n\twidth:134px;\n}\n.modal-area-button a.bounceOut:after{\n\twidth:128px;\n}\n.modal-area-button a.fadeIn:after{\n\twidth:98px;\n}\n.modal-area-button a.fadeInDown:after{\n\twidth:135px;\n}\n.modal-area-button a.fadeInDownBig:after{\n\twidth:154px;\n}\n.modal-area-button a.fadeInLeft:after{\n\twidth:122px;\n}\n.modal-area-button a.fadeInRight:after{\n\twidth:130px;\n}\n.modal-area-button a.fadeInUp:after{\n\twidth:117px;\n}\n.modal-area-button a.fadeInLeftBig:after{\n\twidth:138px;\n}\n.modal-area-button a.bounceInLeft:after{\n\twidth:138px;\n}\n.modal-area-button a.bounceInRight:after{\n\twidth:146px;\n}\n.modal-area-button a.Warning:after{\n\twidth:109px;\n}\n.modal-area-button a.Information:after{\n\twidth:130px;\n}\n.modal-area-button a.Danger:after{\n\twidth:102px;\n}\n.modal-area-button a.Alert:after{\n\twidth:85px;\n}\n.modal-area-button a.flip:after{\n\twidth:85px;\n}\n.modal-area-button a.flipInX:after{\n\twidth:97px;\n}\n.modal-area-button a.flipInY:after{\n\twidth:97px;\n}\n.modal-area-button a.lightSpeedIn:after{\n\twidth:138px;\n}\n.modal-area-button a.rotateIn:after{\n\twidth:106px;\n}\n.modal-area-button a.rotateInDownLeft:after{\n\twidth:168px;\n}\n.modal-area-button a.rotateInDownRight:after{\n\twidth:176px;\n}\n.modal-area-button a.rotateInUpLeft:after{\n\twidth:150px;\n}\n.modal-area-button a.rotateInUpRight:after{\n\twidth:159px;\n}\n.modal-area-button a.hinge:after{\n\twidth:93px;\n}\n.modal-area-button a.rollIn:after{\n\twidth:90px;\n}\n.modal-area-button a.zoomIn:after{\n\twidth:104px;\n}\n.modal-area-button a.zoomInDown:after{\n\twidth:140px;\n}\n.modal-area-button a.zoomInLeft:after{\n\twidth:128px;\n}\n.modal-area-button a.zoomInRight:after{\n\twidth:136px;\n}\n.modal-area-button a.zoomInUp:after{\n\twidth:122px;\n}\n.modal-area-button a.slideInDown:after{\n\twidth:133px;\n}\n.modal-area-button a.slideInLeft:after{\n\twidth:122px;\n}\n.modal-area-button a.slideInRight:after{\n\twidth:130px;\n}\n.modal-area-button a.slideInUp:after{\n\twidth:116px;\n}\n\n.modal-area-button a.default:hover:after, .modal-footer a:hover:after, .modal-area-button a.fullwidth:hover:after, .modal-area-button a.Customwidth:hover:after, .modal-area-button a.FullColor:hover:after, .modal-area-button a.Primary:hover:after, .modal-area-button a.Information:hover:after, .modal-area-button a.Warning:hover:after, .modal-area-button a.Danger:hover:after, .modal-area-button a.Alert:hover:after, .modal-area-button a.bounce:hover:after, .modal-area-button a.flash:hover:after, .modal-area-button a.pulse:hover:after, .modal-area-button a.rubberBand:hover:after, .modal-area-button a.shake:hover:after, .modal-area-button a.swing:hover:after, .modal-area-button a.tada:hover:after, .modal-area-button a.wobble:hover:after, .modal-area-button a.jello:hover:after, .modal-area-button a.bounceIn:hover:after, .modal-area-button a.bounceInDown:hover:after, .modal-area-button a.bounceInLeft:hover:after, .modal-area-button a.bounceInRight:hover:after, .modal-area-button a.bounceInUp:hover:after, .modal-area-button a.bounceOut:hover:after, .modal-area-button a.fadeIn:hover:after, .modal-area-button a.fadeInDownBig:hover:after, .modal-area-button a.fadeInLeft:hover:after, .modal-area-button a.fadeInLeftBig:hover:after, .modal-area-button a.fadeInDown:hover:after, .modal-area-button a.fadeInRight:hover:after, .modal-area-button a.fadeInUp:hover:after, .modal-area-button a.flip:hover:after, .modal-area-button a.flipInX:hover:after, .modal-area-button a.flipInY:hover:after, .modal-area-button a.lightSpeedIn:hover:after, .modal-area-button a.rotateIn:hover:after, .modal-area-button a.rotateInDownLeft:hover:after, .modal-area-button a.rotateInDownRight:hover:after, .modal-area-button a.rotateInUpLeft:hover:after, .modal-area-button a.rotateInUpRight:hover:after, .modal-area-button a.hinge:hover:after, .modal-area-button a.rollIn:hover:after, .modal-area-button a.zoomIn:hover:after, .modal-area-button a.zoomInDown:hover:after, .modal-area-button a.zoomInLeft:hover:after, .modal-area-button a.zoomInRight:hover:after, .modal-area-button a.zoomInUp:hover:after, .modal-area-button a.slideInDown:hover:after, .modal-area-button a.slideInLeft:hover:after, .modal-area-button a.slideInRight:hover:after, .modal-area-button a.slideInUp:hover:after{\n\topacity:1;\n\theight: 45px;\n\ttransition: all 0.3s ease 0s;\n}\n\n#fullwidth .modal-dialog{\n\twidth:1170px;\n}\n#Customwidth .modal-dialog{\n\twidth:700px;\n}\n#FullColor .modal-content{\n\tbackground:#03a9f4;\n}\n#FullColor .modal-content .modal-body h2{\n\tcolor:#fff;\n}\n#FullColor .modal-content .modal-body p{\n\tcolor:#fff;\n}\n#FullColor .modal-content .modal-body .modal-check-pro{\n\tcolor:#fff;\n}\n.fullwidth-popup-InformationproModal .modal-close-area .close{\n\tbackground: #8e44ad;\n}\n.modal-adminpro-general.fullwidth-popup-InformationproModal .modal-body .modal-check-pro.information-icon-pro{\n\tcolor:#8e44ad;\n}\n.modal-adminpro-general.fullwidth-popup-InformationproModal .modal-footer a:before{\n\tbackground:#8e44ad;\n}\n.Customwidth-popup-WarningModal .modal-close-area .close{\n\tbackground: #f39c12;\n}\n.modal-adminpro-general.Customwidth-popup-WarningModal .modal-body .modal-check-pro.information-icon-pro{\n\tcolor:#f39c12;\n}\n.modal-adminpro-general.Customwidth-popup-WarningModal .modal-footer a:before{\n\tbackground:#f39c12;\n}\n.FullColor-popup-DangerModal .modal-close-area .close{\n\tbackground: #F45846;\n}\n.modal-adminpro-general.FullColor-popup-DangerModal .modal-body .modal-check-pro.information-icon-pro{\n\tcolor:#F45846;\n}\n.modal-adminpro-general.FullColor-popup-DangerModal .modal-footer a:before{\n\tbackground:#F45846;\n}\n.FullColor-popup-AlertModal .modal-close-area .close{\n\tbackground: #d35400;\n}\n.modal-adminpro-general.FullColor-popup-AlertModal .modal-body .modal-check-pro.information-icon-pro{\n\tcolor:#d35400;\n}\n.modal-adminpro-general.FullColor-popup-AlertModal .modal-footer a:before{\n\tbackground:#d35400;\n}\n.footer-modal-admin{\n\ttext-align:center;\n\tpadding:0px 0px 50px 0px;\n}\n.PrimaryModal-bgcolor .modal-content{\n\tbackground: #303030;\n}\n.modal-adminpro-general.PrimaryModal-bgcolor .modal-body h2{\n\tcolor:#fff;\n}\n.modal-adminpro-general.PrimaryModal-bgcolor .modal-body p{\n\tcolor:#fff;\n}\n.header-color-modal{\n\tpadding:20px 50px 20px 50px;\n\tcolor:#fff;\n}\n.header-color-modal.bg-color-1{\n\tbackground:#03a9f4;\n}\n.header-color-modal.bg-color-2{\n\tbackground:#8e44ad;\n}\n.header-color-modal.bg-color-3{\n\tbackground:#f39c12;\n}\n.header-color-modal.bg-color-4{\n\tbackground:#F45846;\n}\n.header-color-modal.bg-color-5{\n\tbackground:#d35400;\n}\n.header-color-modal h4{\n\tfont-size:20px;\n}"
  },
  {
    "path": "public/admin/css/normalize.css",
    "content": "/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\n\n/**\n * 1. Set default font family to sans-serif.\n * 2. Prevent iOS and IE text size adjust after device orientation change,\n *    without disabling user zoom.\n */\n\nhtml {\n  font-family: sans-serif; /* 1 */\n  -ms-text-size-adjust: 100%; /* 2 */\n  -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/**\n * Remove default margin.\n */\n\nbody {\n  margin: 0;\n}\n\n/* HTML5 display definitions\n   ========================================================================== */\n\n/**\n * Correct `block` display not defined for any HTML5 element in IE 8/9.\n * Correct `block` display not defined for `details` or `summary` in IE 10/11\n * and Firefox.\n * Correct `block` display not defined for `main` in IE 11.\n */\n\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n  display: block;\n}\n\n/**\n * 1. Correct `inline-block` display not defined in IE 8/9.\n * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\n */\n\naudio,\ncanvas,\nprogress,\nvideo {\n  display: inline-block; /* 1 */\n  vertical-align: baseline; /* 2 */\n}\n\n/**\n * Prevent modern browsers from displaying `audio` without controls.\n * Remove excess height in iOS 5 devices.\n */\n\naudio:not([controls]) {\n  display: none;\n  height: 0;\n}\n\n/**\n * Address `[hidden]` styling not present in IE 8/9/10.\n * Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.\n */\n\n[hidden],\ntemplate {\n  display: none;\n}\n\n/* Links\n   ========================================================================== */\n\n/**\n * Remove the gray background color from active links in IE 10.\n */\n\na {\n  background-color: transparent;\n}\n\n/**\n * Improve readability of focused elements when they are also in an\n * active/hover state.\n */\n\na:active,\na:hover {\n  outline: 0;\n}\n\n/* Text-level semantics\n   ========================================================================== */\n\n/**\n * Address styling not present in IE 8/9/10/11, Safari, and Chrome.\n */\n\nabbr[title] {\n  border-bottom: 1px dotted;\n}\n\n/**\n * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.\n */\n\nb,\nstrong {\n  font-weight: bold;\n}\n\n/**\n * Address styling not present in Safari and Chrome.\n */\n\ndfn {\n  font-style: italic;\n}\n\n/**\n * Address variable `h1` font-size and margin within `section` and `article`\n * contexts in Firefox 4+, Safari, and Chrome.\n */\n\nh1 {\n  font-size: 2em;\n  margin: 0.67em 0;\n}\n\n/**\n * Address styling not present in IE 8/9.\n */\n\nmark {\n  background: #ff0;\n  color: #000;\n}\n\n/**\n * Address inconsistent and variable font size in all browsers.\n */\n\nsmall {\n  font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` affecting `line-height` in all browsers.\n */\n\nsub,\nsup {\n  font-size: 75%;\n  line-height: 0;\n  position: relative;\n  vertical-align: baseline;\n}\n\nsup {\n  top: -0.5em;\n}\n\nsub {\n  bottom: -0.25em;\n}\n\n/* Embedded content\n   ========================================================================== */\n\n/**\n * Remove border when inside `a` element in IE 8/9/10.\n */\n\nimg {\n  border: 0;\n}\n\n/**\n * Correct overflow not hidden in IE 9/10/11.\n */\n\nsvg:not(:root) {\n  overflow: hidden;\n}\n\n/* Grouping content\n   ========================================================================== */\n\n/**\n * Address margin not present in IE 8/9 and Safari.\n */\n\nfigure {\n  margin: 1em 40px;\n}\n\n/**\n * Address differences between Firefox and other browsers.\n */\n\nhr {\n  box-sizing: content-box;\n  height: 0;\n}\n\n/**\n * Contain overflow in all browsers.\n */\n\npre {\n  overflow: auto;\n}\n\n/**\n * Address odd `em`-unit font size rendering in all browsers.\n */\n\ncode,\nkbd,\npre,\nsamp {\n  font-family: monospace, monospace;\n  font-size: 1em;\n}\n\n/* Forms\n   ========================================================================== */\n\n/**\n * Known limitation: by default, Chrome and Safari on OS X allow very limited\n * styling of `select`, unless a `border` property is set.\n */\n\n/**\n * 1. Correct color not being inherited.\n *    Known issue: affects color of disabled elements.\n * 2. Correct font properties not being inherited.\n * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n  color: inherit; /* 1 */\n  font: inherit; /* 2 */\n  margin: 0; /* 3 */\n}\n\n/**\n * Address `overflow` set to `hidden` in IE 8/9/10/11.\n */\n\nbutton {\n  overflow: visible;\n}\n\n/**\n * Address inconsistent `text-transform` inheritance for `button` and `select`.\n * All other form control elements do not inherit `text-transform` values.\n * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.\n * Correct `select` style inheritance in Firefox.\n */\n\nbutton,\nselect {\n  text-transform: none;\n}\n\n/**\n * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\n *    and `video` controls.\n * 2. Correct inability to style clickable `input` types in iOS.\n * 3. Improve usability and consistency of cursor style between image-type\n *    `input` and others.\n */\n\nbutton,\nhtml input[type=\"button\"], /* 1 */\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n  -webkit-appearance: button; /* 2 */\n  cursor: pointer; /* 3 */\n}\n\n/**\n * Re-set default cursor for disabled elements.\n */\n\nbutton[disabled],\nhtml input[disabled] {\n  cursor: default;\n}\n\n/**\n * Remove inner padding and border in Firefox 4+.\n */\n\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n  border: 0;\n  padding: 0;\n}\n\n/**\n * Address Firefox 4+ setting `line-height` on `input` using `!important` in\n * the UA stylesheet.\n */\n\ninput {\n  line-height: normal;\n}\n\n/**\n * It's recommended that you don't attempt to style these elements.\n * Firefox's implementation doesn't respect box-sizing, padding, or width.\n *\n * 1. Address box sizing set to `content-box` in IE 8/9/10.\n * 2. Remove excess padding in IE 8/9/10.\n */\n\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n  box-sizing: border-box; /* 1 */\n  padding: 0; /* 2 */\n}\n\n/**\n * Fix the cursor style for Chrome's increment/decrement buttons. For certain\n * `font-size` values of the `input`, it causes the cursor style of the\n * decrement button to change from `default` to `text`.\n */\n\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n  height: auto;\n}\n\n/**\n * 1. Address `appearance` set to `searchfield` in Safari and Chrome.\n * 2. Address `box-sizing` set to `border-box` in Safari and Chrome.\n */\n\ninput[type=\"search\"] {\n  -webkit-appearance: textfield; /* 1 */\n  box-sizing: content-box; /* 2 */\n}\n\n/**\n * Remove inner padding and search cancel button in Safari and Chrome on OS X.\n * Safari (but not Chrome) clips the cancel button when the search input has\n * padding (and `textfield` appearance).\n */\n\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\n\n/**\n * Define consistent border, margin, and padding.\n */\n\nfieldset {\n  border: 1px solid #c0c0c0;\n  margin: 0 2px;\n  padding: 0.35em 0.625em 0.75em;\n}\n\n/**\n * 1. Correct `color` not being inherited in IE 8/9/10/11.\n * 2. Remove padding so people aren't caught out if they zero out fieldsets.\n */\n\nlegend {\n  border: 0; /* 1 */\n  padding: 0; /* 2 */\n}\n\n/**\n * Remove default vertical scrollbar in IE 8/9/10/11.\n */\n\ntextarea {\n  overflow: auto;\n}\n\n/**\n * Don't inherit the `font-weight` (applied by a rule above).\n * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\n */\n\noptgroup {\n  font-weight: bold;\n}\n\n/* Tables\n   ========================================================================== */\n\n/**\n * Remove most spacing between table cells.\n */\n\ntable {\n  border-collapse: collapse;\n  border-spacing: 0;\n}\n\ntd,\nth {\n  padding: 0;\n}\n"
  },
  {
    "path": "public/admin/css/notifications.css",
    "content": "/*----------------------------------------*/\n/*  1.  Notification CSS\n/*----------------------------------------*/\n.nt-mg-b-30{\n\tmargin-bottom:30px;\n}\n.nt-mg-b-40{\n\tmargin-bottom:40px;\n}\n.notification-list, .button-ad-wrap{\n\tbackground:#fff;\n\tpadding:20px;\n}\n.notification-bt .btn{\n\tborder-radius:0px;\n\tmargin-right:10px;\n}"
  },
  {
    "path": "public/admin/css/preloader/preloader-style.css",
    "content": "@charset \"utf-8\";\n/* CSS Document */\n      \n\t\t\t\n\t\t\t\n\t\t\t                  /*Preloader Demo */\n\n/******************************************************************************/\n/******************************************************************************/\n\n\n\n#loading {\n\tbackground-color: #122737;\n\theight: 50%;\n\twidth: 30%;\n\tz-index: 1;\n\tmargin-top: 0px;\n\ttop: 0px;\n}\n#ts-preloader-absolute {\n\tposition: absolute;\n\tleft: 50%;\n\ttop: 50%;\n\theight: 100px;\n\twidth: 100px;\n\tmargin-top: -50px;\n\tmargin-left: -50px;\n}\n.tsperloader {\n\tposition: absolute;\n\tborder-left: 10px solid transparent;\n\tborder-right: 10px solid transparent;\n\tborder-bottom: 20px solid #03a9f4;\n}\n.tsperloader:nth-child(25) {\n bottom: 0px;\n left: 80px;\n -webkit-animation: animate_25 3s infinite ease-in-out;\n animation: animate_25 3s infinite ease-in-out;\n}\n.tsperloader:nth-child(24) {\n bottom: 0px;\n left: 60px;\n -webkit-animation: animate_24 3s infinite ease-in-out;\n animation: animate_24 3s infinite ease-in-out;\n}\n.tsperloader:nth-child(23) {\n bottom: 0px;\n left: 40px;\n -webkit-animation: animate_23 3s infinite ease-in-out;\n animation: animate_23 3s infinite ease-in-out;\n}\n.tsperloader:nth-child(22) {\n bottom: 0px;\n left: 20px;\n -webkit-animation: animate_22 3s infinite ease-in-out;\n animation: animate_22 3s infinite ease-in-out;\n}\n.tsperloader:nth-child(21) {\n bottom: 0px;\n left: 0px;\n -webkit-animation: animate_21 3s infinite ease-in-out;\n animation: animate_21 3s infinite ease-in-out;\n}\n.tsperloader:nth-child(20) {\n bottom: 0px;\n left: 70px;\n -ms-transform: rotate(180deg);\n -webkit-transform: rotate(180deg);\n transform: rotate(180deg);\n -webkit-animation: animate_20 3s infinite ease-in-out;\n animation: animate_20 3s infinite ease-in-out;\n}\n.tsperloader:nth-child(19) {\n bottom: 0px;\n left: 50px;\n -ms-transform: rotate(180deg);\n -webkit-transform: rotate(180deg);\n transform: rotate(180deg);\n -webkit-animation: animate_19 3s infinite ease-in-out;\n animation: animate_19 3s infinite ease-in-out;\n}\n.tsperloader:nth-child(18) {\n bottom: 0px;\n left: 30px;\n -ms-transform: rotate(180deg);\n -webkit-transform: rotate(180deg);\n transform: rotate(180deg);\n -webkit-animation: animate_18 3s infinite ease-in-out;\n animation: animate_18 3s infinite ease-in-out;\n}\n.tsperloader:nth-child(17) {\n bottom: 0px;\n left: 10px;\n -ms-transform: rotate(180deg);\n -webkit-transform: rotate(180deg);\n transform: rotate(180deg);\n -webkit-animation: animate_17 3s infinite ease-in-out;\n animation: animate_17 3s infinite ease-in-out;\n}\n.tsperloader:nth-child(16) {\n bottom: 20px;\n left: 70px;\n -webkit-animation: animate_16 3s infinite ease-in-out;\n animation: animate_16 3s infinite ease-in-out;\n}\n.tsperloader:nth-child(15) {\n bottom: 20px;\n left: 50px;\n -webkit-animation: animate_15 3s infinite ease-in-out;\n animation: animate_15 3s infinite ease-in-out;\n}\n.tsperloader:nth-child(14) {\n bottom: 20px;\n left: 30px;\n -webkit-animation: animate_14 3s infinite ease-in-out;\n animation: animate_14 3s infinite ease-in-out;\n}\n.tsperloader:nth-child(13) {\n bottom: 20px;\n left: 10px;\n -webkit-animation: animate_13 3s infinite ease-in-out;\n animation: animate_13 3s infinite ease-in-out;\n}\n.tsperloader:nth-child(12) {\n bottom: 20px;\n left: 60px;\n -ms-transform: rotate(180deg);\n -webkit-transform: rotate(180deg);\n transform: rotate(180deg);\n -webkit-animation: animate_12 3s infinite ease-in-out;\n animation: animate_12 3s infinite ease-in-out;\n}\n.tsperloader:nth-child(11) {\n bottom: 20px;\n left: 40px;\n -ms-transform: rotate(180deg);\n -webkit-transform: rotate(180deg);\n transform: rotate(180deg);\n -webkit-animation: animate_11 3s infinite ease-in-out;\n animation: animate_11 3s infinite ease-in-out;\n}\n.tsperloader:nth-child(10) {\n bottom: 20px;\n left: 20px;\n -ms-transform: rotate(180deg);\n -webkit-transform: rotate(180deg);\n transform: rotate(180deg);\n -webkit-animation: animate_10 3s infinite ease-in-out;\n animation: animate_10 3s infinite ease-in-out;\n}\n.tsperloader:nth-child(9) {\n bottom: 40px;\n left: 60px;\n -webkit-animation: animate_9 3s infinite ease-in-out;\n animation: animate_9 3s infinite ease-in-out;\n}\n.tsperloader:nth-child(8) {\n bottom: 40px;\n left: 40px;\n -webkit-animation: animate_8 3s infinite ease-in-out;\n animation: animate_8 3s infinite ease-in-out;\n}\n.tsperloader:nth-child(7) {\n bottom: 40px;\n left: 20px;\n -webkit-animation: animate_7 3s infinite ease-in-out;\n animation: animate_7 3s infinite ease-in-out;\n}\n.tsperloader:nth-child(6) {\n bottom: 40px;\n left: 50px;\n -ms-transform: rotate(180deg);\n -webkit-transform: rotate(180deg);\n transform: rotate(180deg);\n -webkit-animation: animate_6 3s infinite ease-in-out;\n animation: animate_6 3s infinite ease-in-out;\n}\n.tsperloader:nth-child(5) {\n bottom: 40px;\n left: 30px;\n -ms-transform: rotate(180deg);\n -webkit-transform: rotate(180deg);\n transform: rotate(180deg);\n -webkit-animation: animate_5 3s infinite ease-in-out;\n animation: animate_5 3s infinite ease-in-out;\n}\n.tsperloader:nth-child(4) {\n bottom: 60px;\n left: 50px;\n -webkit-animation: animate_4 3s infinite ease-in-out;\n animation: animate_4 3s infinite ease-in-out;\n}\n.tsperloader:nth-child(3) {\n bottom: 60px;\n left: 30px;\n -webkit-animation: animate_3 3s infinite ease-in-out;\n animation: animate_3 3s infinite ease-in-out;\n}\n.tsperloader:nth-child(2) {\n bottom: 60px;\n left: 40px;\n -ms-transform: rotate(180deg);\n -webkit-transform: rotate(180deg);\n transform: rotate(180deg);\n -webkit-animation: animate_2 3s infinite ease-in-out;\n animation: animate_2 3s infinite ease-in-out;\n}\n.tsperloader:nth-child(1) {\n bottom: 80px;\n left: 40px;\n -webkit-animation: animate_1 3s infinite ease-in-out;\n animation: animate_1 3s infinite ease-in-out;\n}\n @-webkit-keyframes animate_1 {\n50% {\n -ms-transform: translate(0, -100px) rotate(180deg);\n -webkit-transform: translate(0, -100px) rotate(180deg);\n transform: translate(0, -100px) rotate(180deg);\n}\n}\n@keyframes animate_1 {\n50% {\n -ms-transform: translate(0, -100px) rotate(180deg);\n -webkit-transform: translate(0, -100px) rotate(180deg);\n transform: translate(0, -100px) rotate(180deg);\n}\n}\n @-webkit-keyframes animate_2 {\n50% {\n -ms-transform: translate(0, -80px) rotate(180deg);\n -webkit-transform: translate(0, -80px) rotate(180deg);\n transform: translate(0, -80px) rotate(180deg);\n}\n}\n@keyframes animate_2 {\n50% {\n -ms-transform: translate(0, -80px) rotate(180deg);\n -webkit-transform: translate(0, -80px) rotate(180deg);\n transform: translate(0, -80px) rotate(180deg);\n}\n}\n @-webkit-keyframes animate_3 {\n50% {\n -ms-transform: translate(-100px, -100px) rotate(180deg);\n -webkit-transform: translate(-100px, -100px) rotate(180deg);\n transform: translate(-100px, -100px) rotate(180deg);\n}\n}\n@keyframes animate_3 {\n50% {\n -ms-transform: translate(-100px, -100px) rotate(180deg);\n -webkit-transform:translate(-100px, -100px) rotate(180deg);\n transform: translate(-100px, -100px) rotate(180deg);\n}\n}\n @-webkit-keyframes animate_4 {\n50% {\n -ms-transform: translate(100px, -100px) rotate(180deg);\n -webkit-transform: translate(100px, -100px) rotate(180deg);\n transform: translate(100px, -100px) rotate(180deg);\n}\n}\n@keyframes animate_4 {\n50% {\n -ms-transform: translate(100px, -100px) rotate(180deg);\n -webkit-transform:translate(100px, -100px) rotate(180deg);\n transform: translate(100px, -100px) rotate(180deg);\n}\n}\n @-webkit-keyframes animate_5 {\n50% {\n -ms-transform: translate(-40px, -100px) rotate(180deg);\n -webkit-transform: translate(-40px, -100px) rotate(180deg);\n transform: translate(-40px, -100px) rotate(180deg);\n}\n}\n@keyframes animate_5 {\n50% {\n -ms-transform: translate(-40px, -100px) rotate(180deg);\n -webkit-transform: translate(-40px, -100px) rotate(180deg);\n transform: translate(-40px, -100px) rotate(180deg);\n}\n}\n @-webkit-keyframes animate_6 {\n50% {\n -ms-transform: translate(40px, -100px) rotate(180deg);\n -webkit-transform: translate(40px, -100px) rotate(180deg);\n transform: translate(40px, -100px) rotate(180deg);\n}\n}\n@keyframes animate_6 {\n50% {\n -ms-transform: translate(40px, -100px) rotate(180deg);\n -webkit-transform: translate(40px, -100px) rotate(180deg);\n transform: translate(40px, -100px) rotate(180deg);\n}\n}\n @-webkit-keyframes animate_7 {\n50% {\n -ms-transform: translate(-80px, -60px) rotate(180deg);\n -webkit-transform: translate(-80px, -60px) rotate(180deg);\n transform: translate(-80px, -60px) rotate(180deg);\n}\n}\n@keyframes animate_7 {\n50% {\n -ms-transform: translate(-80px, -60px) rotate(180deg);\n -webkit-transform: translate(-80px, -60px) rotate(180deg);\n transform: translate(-80px, -60px) rotate(180deg);\n}\n}\n @-webkit-keyframes animate_8 {\n50% {\n -ms-transform: translate(0, -60px) rotate(180deg);\n -webkit-transform: translate(0, -60px) rotate(180deg);\n transform: translate(0, -60px) rotate(180deg);\n}\n}\n@keyframes animate_8 {\n50% {\n -ms-transform: translate(0, -60px) rotate(180deg);\n -webkit-transform: translate(0, -60px) rotate(180deg);\n transform: translate(0, -60px) rotate(180deg);\n}\n}\n @-webkit-keyframes animate_9 {\n50% {\n -ms-transform: translate(80px, -60px) rotate(180deg);\n -webkit-transform: translate(80px, -60px) rotate(180deg);\n transform: translate(80px, -60px) rotate(180deg);\n}\n}\n@keyframes animate_9 {\n50% {\n -ms-transform: translate(80px, -60px) rotate(180deg);\n -webkit-transform: translate(80px, -60px) rotate(180deg);\n transform: translate(80px, -60px) rotate(180deg);\n}\n}\n @-webkit-keyframes animate_10 {\n50% {\n -ms-transform: translate(-100px, -40px) rotate(180deg);\n -webkit-transform: translate(-100px, -40px) rotate(180deg);\n transform: translate(-100px, -40px) rotate(180deg);\n}\n}\n@keyframes animate_10 {\n50% {\n -ms-transform: translate(-100px, -40px) rotate(180deg);\n -webkit-transform: translate(-100px, -40px) rotate(180deg);\n transform: translate(-100px, -40px) rotate(180deg);\n}\n}\n @-webkit-keyframes animate_11 {\n50% {\n -ms-transform: translate(0, -40px) rotate(180deg);\n -webkit-transform: translate(0, -40px) rotate(180deg);\n transform: translate(0, -40px) rotate(180deg);\n}\n}\n@keyframes animate_11 {\n50% {\n -ms-transform: translate(0, -40px) rotate(180deg);\n -webkit-transform: translate(0, -40px) rotate(180deg);\n transform: translate(0, -40px) rotate(180deg);\n}\n}\n @-webkit-keyframes animate_12 {\n50% {\n -ms-transform: translate(100px, -40px) rotate(180deg);\n -webkit-transform: translate(100px, -40px) rotate(180deg);\n transform: translate(100px, -40px) rotate(180deg);\n}\n}\n@keyframes animate_12 {\n50% {\n -ms-transform: translate(100px, -40px) rotate(180deg);\n -webkit-transform: translate(100px, -40px) rotate(180deg);\n transform: translate(100px, -40px) rotate(180deg);\n}\n}\n @-webkit-keyframes animate_13 {\n50% {\n -ms-transform: translate(80px, -80px) rotate(180deg);\n -webkit-transform: translate(80px, -80px) rotate(180deg);\n transform: translate(80px, -80px) rotate(180deg);\n}\n}\n@keyframes animate_13 {\n50% {\n -ms-transform: translate(80px, -80px) rotate(180deg);\n -webkit-transform: translate(80px, -80px) rotate(180deg);\n transform: translate(80px, -80px) rotate(180deg);\n}\n}\n @-webkit-keyframes animate_14 {\n50% {\n -ms-transform: translate(80px, -40px) rotate(180deg);\n -webkit-transform: translate(80px, -40px) rotate(180deg);\n transform: translate(80px, -40px) rotate(180deg);\n}\n}\n@keyframes animate_14 {\n50% {\n -ms-transform: translate(80px, -40px) rotate(180deg);\n -webkit-transform: translate(80px, -40px) rotate(180deg);\n transform: translate(80px, -40px) rotate(180deg);\n}\n}\n @-webkit-keyframes animate_15 {\n50% {\n -ms-transform: translate(-60px, -80px) rotate(180deg);\n -webkit-transform: translate(-60px, -80px) rotate(180deg);\n transform: translate(-60px, -80px) rotate(180deg);\n}\n}\n@keyframes animate_15 {\n50% {\n -ms-transform: translate(-60px, -80px) rotate(180deg);\n -webkit-transform: translate(-60px, -80px) rotate(180deg);\n transform: translate(-60px, -80px) rotate(180deg);\n}\n}\n @-webkit-keyframes animate_16 {\n50% {\n -ms-transform: translate(-100px, -40px) rotate(180deg);\n -webkit-transform: translate(-100px, -40px) rotate(180deg);\n transform: translate(-100px, -40px) rotate(180deg);\n}\n}\n@keyframes animate_16 {\n50% {\n -ms-transform: translate(-100px, -40px) rotate(180deg);\n -webkit-transform: translate(-100px, -40px) rotate(180deg);\n transform: translate(-100px, -40px) rotate(180deg);\n}\n}\n @-webkit-keyframes animate_17 {\n50% {\n -ms-transform: translate(-100px, -20px) rotate(180deg);\n -webkit-transform: translate(-100px, -20px) rotate(180deg);\n transform: translate(-100px, -20px) rotate(180deg);\n}\n}\n@keyframes animate_17 {\n50% {\n -ms-transform: translate(-100px, -20px) rotate(180deg);\n -webkit-transform: translate(-100px, -20px) rotate(180deg);\n transform: translate(-100px, -20px) rotate(180deg);\n}\n}\n @-webkit-keyframes animate_18 {\n50% {\n -ms-transform: translate(-60px, -20px) rotate(180deg);\n -webkit-transform: translate(-60px, -20px) rotate(180deg);\n transform: translate(-60px, -20px) rotate(180deg);\n}\n}\n@keyframes animate_18 {\n50% {\n -ms-transform: translate(-60px, -20px) rotate(180deg);\n -webkit-transform: translate(-60px, -20px) rotate(180deg);\n transform: translate(-60px, -20px) rotate(180deg);\n}\n}\n @-webkit-keyframes animate_19 {\n50% {\n -ms-transform: translate(0, -20px) rotate(180deg);\n -webkit-transform: translate(0, -20px) rotate(180deg);\n transform: translate(0, -20px) rotate(180deg);\n}\n}\n@keyframes animate_19 {\n50% {\n -ms-transform: translate(0, -20px) rotate(180deg);\n -webkit-transform: translate(0, -20px) rotate(180deg);\n transform: translate(0, -20px) rotate(180deg);\n}\n}\n @-webkit-keyframes animate_20 {\n50% {\n -ms-transform: translate(60px, -20px) rotate(180deg);\n -webkit-transform: translate(60px, -20px) rotate(180deg);\n transform: translate(60px, -20px) rotate(180deg);\n}\n}\n@keyframes animate_20 {\n50% {\n -ms-transform: translate(60px, -20px) rotate(180deg);\n -webkit-transform: translate(60px, -20px) rotate(180deg);\n transform: translate(60px, -20px) rotate(180deg);\n}\n}\n @-webkit-keyframes animate_21 {\n50% {\n -ms-transform: translate(-80px, 30px) rotate(180deg);\n -webkit-transform: translate(-80px, 30px) rotate(180deg);\n transform: translate(-80px, 30px) rotate(180deg);\n}\n}\n@keyframes animate_21 {\n50% {\n -ms-transform: translate(-80px, 30px) rotate(180deg);\n -webkit-transform: translate(-80px, 30px) rotate(180deg);\n transform: translate(-80px, 30px) rotate(180deg);\n}\n}\n @-webkit-keyframes animate_22 {\n50% {\n -ms-transform: translate(-40px, 30px) rotate(180deg);\n -webkit-transform: translate(-40px, 30px) rotate(180deg);\n transform: translate(-40px, 30px) rotate(180deg);\n}\n}\n@keyframes animate_22 {\n50% {\n -ms-transform: translate(-40px, 30px) rotate(180deg);\n -webkit-transform: translate(-40px, 30px) rotate(180deg);\n transform: translate(-40px, 30px) rotate(180deg);\n}\n}\n @-webkit-keyframes animate_23 {\n50% {\n -ms-transform: translate(0, 30px) rotate(180deg);\n -webkit-transform: translate(0, 30px) rotate(180deg);\n transform: translate(0, 30px) rotate(180deg);\n}\n}\n@keyframes animate_23 {\n50% {\n -ms-transform: translate(0, 30px) rotate(180deg);\n -webkit-transform: translate(0, 30px) rotate(180deg);\n transform: translate(0, 30px) rotate(180deg);\n}\n}\n @-webkit-keyframes animate_24 {\n50% {\n -ms-transform: translate(40px, 30px) rotate(180deg);\n -webkit-transform: translate(40px, 30px) rotate(180deg);\n transform: translate(40px, 30px) rotate(180deg);\n}\n}\n@keyframes animate_24 {\n50% {\n -ms-transform: translate(40px, 30px) rotate(180deg);\n -webkit-transform: translate(40px, 30px) rotate(180deg);\n transform: translate(40px, 30px) rotate(180deg);\n}\n}\n @-webkit-keyframes animate_25 {\n50% {\n -ms-transform: translate(80px, 30px) rotate(180deg);\n -webkit-transform: translate(80px, 30px) rotate(180deg);\n transform: translate(80px, 30px) rotate(180deg);\n}\n}\n@keyframes animate_25 {\n50% {\n -ms-transform: translate(80px, 30px) rotate(180deg);\n -webkit-transform: translate(80px, 30px) rotate(180deg);\n transform: translate(80px, 30px) rotate(180deg);\n}\n}\n                              /*Preloader Demo 1*/\n\n/******************************************************************************/\n/******************************************************************************/\n\n#ts-preloader-absolute01 {\n\tposition: absolute;\n\tleft: 50%;\n\ttop: 50%;\n\theight: 200px;\n\twidth: 200px;\n\tmargin-top: -100px;\n\tmargin-left: -100px;\n\t-ms-transform: rotate(-135deg);\n\t-webkit-transform: rotate(-135deg);\n\ttransform: rotate(-135deg);\n}\n.tsperloader1 {\n\t-moz-border-radius: 50% 50% 50% 50%;\n\t-webkit-border-radius: 50% 50% 50% 50%;\n\tborder-radius: 50% 50% 50% 50%;\n\tposition: absolute;\n\tborder-top: 5px solid #03a9f4;\n\tborder-bottom: 5px solid transparent;\n\tborder-left:  5px solid #FFF;\n\tborder-right: 5px solid transparent;\n\t-webkit-animation: animate 2s infinite;\n\tanimation: animate 2s infinite;\n}\n#tsperloader1_one {\n\tleft: 75px;\n\ttop: 75px;\n\twidth: 50px;\n\theight: 50px;\n}\n#tsperloader1_two {\n\tleft: 65px;\n\ttop: 65px;\n\twidth: 70px;\n\theight: 70px;\n\t-webkit-animation-delay: 0.2s;\n\tanimation-delay: 0.2s;\n}\n#tsperloader1_three {\n\tleft: 55px;\n\ttop: 55px;\n\twidth: 90px;\n\theight: 90px;\n\t-webkit-animation-delay: 0.4s;\n\tanimation-delay: 0.4s;\n}\n#tsperloader1_four {\n\tleft: 45px;\n\ttop: 45px;\n\twidth: 110px;\n\theight: 110px;\n\t-webkit-animation-delay: 0.6s;\n\tanimation-delay: 0.6s;\n}\n @-webkit-keyframes animate {\n 50% {\n -ms-transform: rotate(360deg) scale(0.8);\n -webkit-transform: rotate(360deg) scale(0.8);\n transform: rotate(360deg) scale(0.8);\n}\n}\n @keyframes animate {\n 50% {\n -ms-transform: rotate(360deg) scale(0.8);\n -webkit-transform: rotate(360deg) scale(0.8);\n transform: rotate(360deg) scale(0.8);\n}\n}\n\n\n\n\n                              /*Preloader Demo 2*/\n\n/******************************************************************************/\n/******************************************************************************/\n\n\n\n\n\n\n#ts-preloader-absolute02 {\n\tposition: absolute;\n\tleft: 50%;\n\ttop: 50%;\n\theight: 200px;\n\twidth: 200px;\n\tmargin-top: -100px;\n\tmargin-left: -100px;\n}\n.tsperloader2 {\n\t-moz-border-radius: 50% 50% 50% 50%;\n\t-webkit-border-radius: 50% 50% 50% 50%;\n\tborder-radius: 50% 50% 50% 50%;\n\tposition: absolute;\n\tborder-left: 5px solid #03a9f4;\n\tborder-right: 5px solid #03a9f4;\n\tborder-top: 5px solid transparent;\n\tborder-bottom: 5px solid transparent;\n\t-webkit-animation: animate 2s infinite;\n\tanimation: animate 2s infinite;\n}\n#tsperloader2_one {\n\tleft: 75px;\n\ttop: 75px;\n\twidth: 50px;\n\theight: 50px;\n}\n#tsperloader2_two {\n\tleft: 65px;\n\ttop: 65px;\n\twidth: 70px;\n\theight: 70px;\n\t-webkit-animation-delay: 0.1s;\n\tanimation-delay: 0.1s;\n}\n#tsperloader2_three {\n\tleft: 55px;\n\ttop: 55px;\n\twidth: 90px;\n\theight: 90px;\n\t-webkit-animation-delay: 0.2s;\n\tanimation-delay: 0.2s;\n}\n#tsperloader2_four {\n\tleft: 45px;\n\ttop: 45px;\n\twidth: 110px;\n\theight: 110px;\n\t-webkit-animation-delay: 0.3s;\n\tanimation-delay: 0.3s;\n}\n @-webkit-keyframes animate {\n 50% {\n -ms-transform: rotate(180deg);\n -webkit-transform: rotate(180deg);\n transform: rotate(180deg);\n}\n 100% {\n -ms-transform: rotate(0deg);\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n}\n}\n @keyframes animate {\n 50% {\n -ms-transform: rotate(180deg);\n -webkit-transform: rotate(180deg);\n transform: rotate(180deg);\n}\n 100% {\n -ms-transform: rotate(0deg);\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n}\n}\n\n\n\n\n                              /*Preloader Demo 3*/\n\n/******************************************************************************/\n/******************************************************************************/\n\n\n\n\n\n\n#ts-preloader-absolute03 {\n\tposition: absolute;\n\tleft: 50%;\n\ttop: 50%;\n\theight: 50px;\n\twidth: 150px;\n\tmargin-top: -25px;\n\tmargin-left: -75px;\n}\n.tsperloader3 {\n\twidth: 8px;\n\theight: 50px;\n\tmargin-right:5px;\n\tbackground-color: #03a9f4;\n\t-webkit-animation: animate 1s infinite;\n\tanimation: animate 1s infinite;\n\tfloat: left;\n}\n.tsperloader3:last-child {\n\tmargin-right: 0px;\n}\n .tsperloader3:nth-child(10) {\n -webkit-animation-delay: 0.9s;\n animation-delay: 0.9s;\n}\n.tsperloader3:nth-child(9) {\n -webkit-animation-delay: 0.8s;\n animation-delay: 0.8s;\n}\n.tsperloader3:nth-child(8) {\n -webkit-animation-delay: 0.7s;\n animation-delay: 0.7s;\n}\n.tsperloader3:nth-child(7) {\n -webkit-animation-delay: 0.6s;\n animation-delay: 0.6s;\n}\n.tsperloader3:nth-child(6) {\n -webkit-animation-delay: 0.5s;\n animation-delay: 0.5s;\n}\n.tsperloader3:nth-child(5) {\n -webkit-animation-delay: 0.4s;\n animation-delay: 0.4s;\n}\n.tsperloader3:nth-child(4) {\n -webkit-animation-delay: 0.3s;\n animation-delay: 0.3s;\n}\n.tsperloader3:nth-child(3) {\n -webkit-animation-delay: 0.2s;\n animation-delay: 0.2s;\n}\n.tsperloader3:nth-child(2) {\n -webkit-animation-delay: 0.1s;\n animation-delay: 0.1s;\n}\n @-webkit-keyframes animate .tsperloader3 {\n 50% {\n -ms-transform: translateX(-25px) scaleY(2);\n -webkit-transform: translateX(-25px) scaleY(2);\n transform: translateX(-25px) scaleY(2);\n}\n}\n @keyframes animate .tsperloader3 {\n 50% {\n -ms-transform: translateX(-25px) scaleY(2);\n -webkit-transform: translateX(-25px) scaleY(2);\n transform: translateX(-25px) scaleY(2);\n}\n}\n\n\n\n                              /*Preloader Demo 4*/\n\n/******************************************************************************/\n/******************************************************************************/\n\n\n\n\n\n\n#ts-preloader-absolute05 {\n\tposition: absolute;\n\tleft: 50%;\n\ttop: 50%;\n\theight: 150px;\n\twidth: 150px;\n\tmargin-top: -75px;\n\tmargin-left: -75px;\n\t-moz-border-radius: 50% 50% 50% 50%;\n\t-webkit-border-radius: 50% 50% 50% 50%;\n\tborder-radius: 50% 50% 50% 50%;\n}\n.tsperloader5 {\n\twidth: 20px;\n\theight: 20px;\n\tbackground-color: #03a9f4;\n\tposition: absolute;\n\t-moz-border-radius: 50% 50% 50% 50%;\n\t-webkit-border-radius: 50% 50% 50% 50%;\n\tborder-radius: 50% 50% 50% 50%;\n\t-webkit-animation: animate 0.8s infinite;\n\tanimation: animate 0.8s infinite;\n}\n#tsperloader5_one {\n\ttop: 19px;\n\tleft: 19px;\n}\n#tsperloader5_two {\n\ttop: 0px;\n\tleft: 65px;\n\t-webkit-animation-delay: 0.1s;\n\tanimation-delay: 0.1s;\n}\n#tsperloader5_three {\n\ttop: 19px;\n\tleft: 111px;\n\t-webkit-animation-delay: 0.2s;\n\tanimation-delay: 0.2s;\n}\n#tsperloader5_four {\n\ttop: 65px;\n\tleft: 130px;\n\t-webkit-animation-delay: 0.3s;\n\tanimation-delay: 0.3s;\n}\n#tsperloader5_five {\n\ttop: 111px;\n\tleft: 111px;\n\t-webkit-animation-delay: 0.4s;\n\tanimation-delay: 0.4s;\n}\n#tsperloader5_six {\n\ttop: 130px;\n\tleft: 65px;\n\t-webkit-animation-delay: 0.5s;\n\tanimation-delay: 0.5s;\n}\n#tsperloader5_seven {\n\ttop: 111px;\n\tleft: 19px;\n\t-webkit-animation-delay: 0.6s;\n\tanimation-delay: 0.6s;\n}\n#tsperloader5_eight {\n\ttop: 65px;\n\tleft: 0px;\n\t-webkit-animation-delay: 0.7s;\n\tanimation-delay: 0.7s;\n}\n @-webkit-keyframes animate {\n 25% {\n -ms-transform: scale(1.5);\n -webkit-transform: scale(1.5);\n transform: scale(1.5);\n}\n 75% {\n -ms-transform: scale(0);\n -webkit-transform: scale(0);\n transform: scale(0);\n}\n}\n @keyframes animate {\n 50% {\n -ms-transform: scale(1.5, 1.5);\n -webkit-transform: scale(1.5, 1.5);\n transform: scale(1.5, 1.5);\n}\n 100% {\n -ms-transform: scale(1, 1);\n -webkit-transform: scale(1, 1);\n transform: scale(1, 1);\n}\n}\n\n\n\n\n\n\n\n                              /*Preloader Demo 5*/\n\n/******************************************************************************/\n/******************************************************************************/\n\n\n\n\n\n\n\n\n#ts-preloader-absolute06 {\n\tposition: absolute;\n\tleft: 50%;\n\ttop: 50%;\n\theight: 118px;\n\twidth: 118px;\n\tmargin-top: -59px;\n\tmargin-left: -59px;\n}\n.tsperloader6 {\n\twidth: 20px;\n\theight: 20px;\n\tbackground-color: #03a9f4;\n\tmargin-right: 20px;\n\tfloat: left;\n\tmargin-bottom: 20px;\n\t-moz-border-radius: 50% 50% 50% 50%;\n\t-webkit-border-radius: 50% 50% 50% 50%;\n\tborder-radius: 50% 50% 50% 50%;\n}\n.tsperloader6:nth-child(3n+0) {\n margin-right: 0px;\n}\n#tsperloader6_one {\n\t-webkit-animation: animate 1s -0.9s ease-in-out infinite;\n\tanimation: animate 1s -0.9s ease-in-out infinite;\n}\n#tsperloader6_two {\n\t-webkit-animation: animate 1s -0.8s ease-in-out infinite;\n\tanimation: animate 1s -0.8s ease-in-out infinite;\n}\n#tsperloader6_three {\n\t-webkit-animation: animate 1s -0.7s ease-in-out infinite;\n\tanimation: animate 1s -0.7s ease-in-out infinite;\n}\n#tsperloader6_four {\n\t-webkit-animation: animate 1s -0.6s ease-in-out infinite;\n\tanimation: animate 1s -0.6s ease-in-out infinite;\n}\n#tsperloader6_five {\n\t-webkit-animation: animate 1s -0.5s ease-in-out infinite;\n\tanimation: animate 1s -0.5s ease-in-out infinite;\n}\n#tsperloader6_six {\n\t-webkit-animation: animate 1s -0.4s ease-in-out infinite;\n\tanimation: animate 1s -0.4s ease-in-out infinite;\n}\n#tsperloader6_seven {\n\t-webkit-animation: animate 1s -0.3s ease-in-out infinite;\n\tanimation: animate 1s -0.3s ease-in-out infinite;\n}\n#tsperloader6_eight {\n\t-webkit-animation: animate 1s -0.2s ease-in-out infinite;\n\tanimation: animate 1s -0.2s ease-in-out infinite;\n}\n#tsperloader6_nine {\n\t-webkit-animation: animate 1s -0.1s ease-in-out infinite;\n\tanimation: animate 1s -0.1s ease-in-out infinite;\n}\n @-webkit-keyframes animate {\n 50% {\n -ms-transform: scale(1.5, 1.5);\n -webkit-transform: scale(1.5, 1.5);\n transform: scale(1.5, 1.5);\n}\n 100% {\n -ms-transform: scale(1, 1);\n -webkit-transform: scale(1, 1);\n transform: scale(1, 1);\n}\n}\n @keyframes animate {\n 50% {\n -ms-transform: scale(1.5, 1.5);\n -webkit-transform: scale(1.5, 1.5);\n transform: scale(1.5, 1.5);\n}\n 100% {\n -ms-transform: scale(1, 1);\n -webkit-transform: scale(1, 1);\n transform: scale(1, 1);\n}\n}\n\n\n\n\n                              /*Preloader Demo 6*/\n\n/******************************************************************************/\n/******************************************************************************/\n\n\n\n\n#ts-preloader-absolute07 {\n\tposition: absolute;\n\tleft: 50%;\n\ttop: 50%;\n\theight: 20px;\n\twidth: 100px;\n\tmargin-top: -10px;\n\tmargin-left: -50px;\n}\n.tsperloader7 {\n\twidth: 20px;\n\theight: 20px;\n\tbackground-color: #03a9f4;\n\t-moz-border-radius: 50% 50% 50% 50%;\n\t-webkit-border-radius: 50% 50% 50% 50%;\n\tborder-radius: 50% 50% 50% 50%;\n\tmargin-right: 20px;\n\tmargin-bottom: 20px;\n\tposition: absolute;\n}\n#tsperloader7_one {\n\t-webkit-animation: tsperloader7 2s linear infinite;\n\tanimation: tsperloader7 2s linear infinite;\n}\n#tsperloader7_two {\n -webkit-animation: tsperloader7 2s linear infinite -.4s;\n animation: tsperloader7 2s linear infinite -.4s;\n}\n#tsperloader7_three {\n -webkit-animation: tsperloader7 2s linear infinite -.8s;\n animation: tsperloader7 2s linear infinite -.8s;\n}\n#tsperloader7_four {\n\t-webkit-animation: tsperloader7 2s linear infinite -1.2s;\n\tanimation: tsperloader7 2s linear infinite -1.2s;\n}\n#tsperloader7_five {\n\t-webkit-animation: tsperloader7 2s linear infinite -1.6s;\n\tanimation: tsperloader7 2s linear infinite -1.6s;\n}\n @-webkit-keyframes tsperloader7 {\n 0% {\nleft: 100px;\ntop:0\n}\n 80% {\nleft: 0;\ntop:0;\n}\n 85% {\nleft: 0;\ntop: -20px;\nwidth: 20px;\nheight: 20px;\n}\n 90% {\nwidth: 40px;\nheight: 15px;\n}\n 95% {\nleft: 100px;\ntop: -20px;\nwidth: 20px;\nheight: 20px;\n}\n 100% {\nleft: 100px;\ntop:0;\n}\n}\n@keyframes tsperloader7 {\n 0% {\nleft: 100px;\ntop:0\n}\n 80% {\nleft: 0;\ntop:0;\n}\n 85% {\nleft: 0;\ntop: -20px;\nwidth: 20px;\nheight: 20px;\n}\n 90% {\nwidth: 40px;\nheight: 15px;\n}\n 95% {\nleft: 100px;\ntop: -20px;\nwidth: 20px;\nheight: 20px;\n}\n 100% {\nleft: 100px;\ntop:0;\n}\n}\n\n\n\n\n\n                              /*Preloader Demo 7*/\n\n/******************************************************************************/\n/******************************************************************************/\n\n\n\n\n\n\n#ts-preloader-absolute08 {\n\tposition: absolute;\n\tleft: 50%;\n\ttop: 50%;\n\theight: 20px;\n\twidth: 140px;\n\tmargin-top: -10px;\n\tmargin-left: -70px;\n\t-webkit-animation: ts-preloader-absolute 1s infinite;\n\tanimation: ts-preloader-absolute 1s infinite;\n}\n.tsperloader8 {\n\twidth: 20px;\n\theight: 20px;\n\tbackground-color: #03a9f4;\n\tfloat: left;\n\t-moz-border-radius: 50% 50% 50% 50%;\n\t-webkit-border-radius: 50% 50% 50% 50%;\n\tborder-radius: 50% 50% 50% 50%;\n\tmargin-right: 20px;\n\tmargin-bottom: 20px;\n}\n.tsperloader8:last-child {\n\tmargin-right: 0px;\n}\n#tsperloader8_one {\n\t-webkit-animation: tsperloader8_one 1s infinite;\n\tanimation: tsperloader8_one 1s infinite;\n}\n#tsperloader8_two {\n\t-webkit-animation: tsperloader8_two 1s infinite;\n\tanimation: tsperloader8_two 1s infinite;\n}\n#tsperloader8_three {\n\t-webkit-animation: tsperloader8_three 1s infinite;\n\tanimation: tsperloader8_three 1s infinite;\n}\n#tsperloader8_four {\n\t-webkit-animation: tsperloader8_four 1s infinite;\n\tanimation: tsperloader8_four 1s infinite;\n}\n @-webkit-keyframes ts-preloader-absolute {\n100% {\n -ms-transform: rotate(360deg);\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n}\n}\n@keyframes ts-preloader-absolute {\n100% {\n -ms-transform: rotate(360deg);\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n}\n}\n @-webkit-keyframes tsperloader8_one {\n50% {\n -ms-transform: translate(20px, 20px);\n -webkit-transform: translate(20px, 20px);\n transform: translate(20px, 20px);\n}\n}\n@keyframes tsperloader8_one {\n50% {\n -ms-transform: translate(20px, 20px);\n -webkit-transform: translate(20px, 20px);\n transform: translate(20px, 20px);\n}\n}\n @-webkit-keyframes tsperloader8_two {\n50% {\n -ms-transform: translate(-20px, 20px);\n -webkit-transform: translate(-20px, 20px);\n transform: translate(-20px, 20px);\n}\n}\n@keyframes tsperloader8_two {\n50% {\n -ms-transform: translate(-20px, 20px);\n -webkit-transform: translate(-20px, 20px);\n transform: translate(-20px, 20px);\n}\n}\n @-webkit-keyframes tsperloader8_three {\n50% {\n -ms-transform: translate(20px, -20px);\n -webkit-transform: translate(20px, -20px);\n transform: translate(20px, -20px);\n}\n}\n@keyframes tsperloader8_three {\n50% {\n -ms-transform: translate(20px, -20px);\n -webkit-transform: translate(20px, -20px);\n transform: translate(20px, -20px);\n}\n}\n @-webkit-keyframes tsperloader8_four {\n50% {\n -ms-transform: translate(-20px, -20px);\n -webkit-transform: translate(-20px, -20px);\n transform: translate(-20px, -20px);\n}\n}\n@keyframes tsperloader8_four {\n50% {\n -ms-transform: translate(-20px, -20px);\n -webkit-transform: translate(-20px, -20px);\n transform: translate(-20px, -20px);\n}\n}\n\n\n\n\n\n\n\n                              /*Preloader Demo 8*/\n\n/******************************************************************************/\n/******************************************************************************/\n\n\n\n\n\n\n\n\n#ts-preloader-absolute09 {\n\tposition: absolute;\n\tleft: 50%;\n\ttop: 50%;\n\theight: 60px;\n\twidth: 60px;\n\tmargin-top: -30px;\n\tmargin-left: -30px;\n\t-webkit-animation: ts-preloader-absolute 1s infinite;\n\tanimation: ts-preloader-absolute 1s infinite;\n}\n.tsperloader9 {\n\twidth: 20px;\n\theight: 20px;\n\tbackground-color: #03a9f4;\n\tfloat: left;\n\t-moz-border-radius: 50% 50% 50% 50%;\n\t-webkit-border-radius: 50% 50% 50% 50%;\n\tborder-radius: 50% 50% 50% 50%;\n\tmargin-right: 20px;\n\tmargin-bottom: 20px;\n}\n.tsperloader9:nth-child(2n+0) {\n margin-right: 0px;\n}\n#tsperloader9_one {\n\t-webkit-animation: tsperloader9_one 1s infinite;\n\tanimation: tsperloader9_one 1s infinite;\n}\n#tsperloader9_two {\n\t-webkit-animation: tsperloader9_two 1s infinite;\n\tanimation: tsperloader9_two 1s infinite;\n}\n#tsperloader9_three {\n\t-webkit-animation: tsperloader9_three 1s infinite;\n\tanimation: tsperloader9_three 1s infinite;\n}\n#tsperloader9_four {\n\t-webkit-animation: tsperloader9_four 1s infinite;\n\tanimation: tsperloader9_four 1s infinite;\n}\n @-webkit-keyframes ts-preloader-absolute {\n100% {\n -ms-transform: rotate(360deg);\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n}\n}\n@keyframes ts-preloader-absolute {\n100% {\n -ms-transform: rotate(360deg);\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n}\n}\n @-webkit-keyframes tsperloader9_one {\n50% {\n -ms-transform: translate(20px, 20px);\n -webkit-transform: translate(20px, 20px);\n transform: translate(20px, 20px);\n}\n}\n@keyframes tsperloader9_one {\n50% {\n -ms-transform: translate(20px, 20px);\n -webkit-transform: translate(20px, 20px);\n transform: translate(20px, 20px);\n}\n}\n @-webkit-keyframes tsperloader9_two {\n50% {\n -ms-transform: translate(-20px, 20px);\n -webkit-transform: translate(-20px, 20px);\n transform: translate(-20px, 20px);\n}\n}\n@keyframes tsperloader9_two {\n50% {\n -ms-transform: translate(-20px, 20px);\n -webkit-transform: translate(-20px, 20px);\n transform: translate(-20px, 20px);\n}\n}\n @-webkit-keyframes tsperloader9_three {\n50% {\n -ms-transform: translate(20px, -20px);\n -webkit-transform: translate(20px, -20px);\n transform: translate(20px, -20px);\n}\n}\n@keyframes tsperloader9_three {\n50% {\n -ms-transform: translate(20px, -20px);\n -webkit-transform: translate(20px, -20px);\n transform: translate(20px, -20px);\n}\n}\n @-webkit-keyframes tsperloader9_four {\n50% {\n -ms-transform: translate(-20px, -20px);\n -webkit-transform: translate(-20px, -20px);\n transform: translate(-20px, -20px);\n}\n}\n@keyframes tsperloader9_four {\n50% {\n -ms-transform: translate(-20px, -20px);\n -webkit-transform: translate(-20px, -20px);\n transform: translate(-20px, -20px);\n}\n}\n\n\n                              /*Preloader Demo 9*/\n\n/******************************************************************************/\n/******************************************************************************/\n\n\n\n\n#ts-preloader-absolute-one01 {\n\tposition: absolute;\n\tleft: 50%;\n\ttop: 50%;\n\theight: 300px;\n\twidth: 50px;\n\tmargin-top: -150px;\n\tmargin-left: -25px;\n}\n#ts-preloader-absolute-two02 {\n\tposition: absolute;\n\tleft: 50%;\n\ttop: 50%;\n\theight: 300px;\n\twidth: 50px;\n\tmargin-top: -150px;\n\tmargin-left: 50px;\n}\n.tsperloader10-one {\n\twidth: 18px;\n\theight: 18px;\n\tbackground-color: #03a9f4;\n\tfloat: left;\n\tmargin-top: 15px;\n\tmargin-right: 15px;\n\t-moz-border-radius: 50% 50% 50% 50%;\n\t-webkit-border-radius: 50% 50% 50% 50%;\n\tborder-radius: 50% 50% 50% 50%;\n\t-webkit-animation: tsperloader10-one 1s infinite;\n\tanimation: tsperloader10-one 1s infinite;\n}\n.tsperloader10-two {\n\twidth: 18px;\n\theight: 18px;\n\tbackground-color: #03a9f4;\n\tfloat: left;\n\tmargin-top: 15px;\n\tmargin-right: 15px;\n\t-moz-border-radius: 50% 50% 50% 50%;\n\t-webkit-border-radius: 50% 50% 50% 50%;\n\tborder-radius: 50% 50% 50% 50%;\n\t-webkit-animation: tsperloader10-two 1s infinite;\n\tanimation: tsperloader10-two 1s infinite;\n}\n .tsperloader10-one:nth-child(9) {\n -webkit-animation-delay: 0.9s;\n animation-delay: 0.9s;\n}\n.tsperloader10-one:nth-child(8) {\n -webkit-animation-delay: 0.8s;\n animation-delay: 0.8s;\n}\n.tsperloader10-one:nth-child(7) {\n -webkit-animation-delay: 0.7s;\n animation-delay: 0.7s;\n}\n.tsperloader10-one:nth-child(6) {\n -webkit-animation-delay: 0.6s;\n animation-delay: 0.6s;\n}\n.tsperloader10-one:nth-child(5) {\n -webkit-animation-delay: 0.5s;\n animation-delay: 0.5s;\n}\n.tsperloader10-one:nth-child(4) {\n -webkit-animation-delay: 0.4s;\n animation-delay: 0.4s;\n}\n.tsperloader10-one:nth-child(3) {\n -webkit-animation-delay: 0.3s;\n animation-delay: 0.3s;\n}\n.tsperloader10-one:nth-child(2) {\n -webkit-animation-delay: 0.2s;\n animation-delay: 0.2s;\n}\n .tsperloader10-two:nth-child(9) {\n -webkit-animation-delay: 0.9s;\n animation-delay: 0.9s;\n}\n.tsperloader10-two:nth-child(8) {\n -webkit-animation-delay: 0.8s;\n animation-delay: 0.8s;\n}\n.tsperloader10-two:nth-child(7) {\n -webkit-animation-delay: 0.7s;\n animation-delay: 0.7s;\n}\n.tsperloader10-two:nth-child(6) {\n -webkit-animation-delay: 0.6s;\n animation-delay: 0.6s;\n}\n.tsperloader10-two:nth-child(5) {\n -webkit-animation-delay: 0.5s;\n animation-delay: 0.5s;\n}\n.tsperloader10-two:nth-child(4) {\n -webkit-animation-delay: 0.4s;\n animation-delay: 0.4s;\n}\n.tsperloader10-two:nth-child(3) {\n -webkit-animation-delay: 0.3s;\n animation-delay: 0.3s;\n}\n.tsperloader10-two:nth-child(2) {\n -webkit-animation-delay: 0.2s;\n animation-delay: 0.2s;\n}\n @-webkit-keyframes tsperloader10-one {\n50% {\n -ms-transform: translate(100px, 0);\n -webkit-transform: translate(100px, 0);\n transform: translate(100px, 0);\n}\n}\n@keyframes tsperloader10-one {\n50% {\n -ms-transform: translate(100px, 0);\n -webkit-transform: translate(100px, 0);\n transform: translate(100px, 0);\n}\n}\n @-webkit-keyframes tsperloader10-two {\n50% {\n -ms-transform: translate(-100px, 0);\n -webkit-transform: translate(-100px, 0);\n transform: translate(-100px, 0);\n}\n}\n@keyframes tsperloader10-two {\n50% {\n -ms-transform: translate(-100px, 0);\n -webkit-transform: translate(-100px, 0);\n transform: translate(-100px, 0);\n}\n}\n\n\n\n                              /*Preloader Demo 10*/\n\n/******************************************************************************/\n/******************************************************************************/\n\n\n\n\n\n#ts-preloader-absolute11 {\n\tposition: absolute;\n\tleft: 50%;\n\ttop: 50%;\n\theight: 50px;\n\twidth: 300px;\n\tmargin-top: -25px;\n\tmargin-left: -150px;\n}\n.tsperloader11 {\n\twidth: 18px;\n\theight: 18px;\n\tbackground-color: #03a9f4;\n\tfloat: left;\n\tmargin-top: 15px;\n\tmargin-right: 15px;\n\t-moz-border-radius: 50% 50% 50% 50%;\n\t-webkit-border-radius: 50% 50% 50% 50%;\n\tborder-radius: 50% 50% 50% 50%;\n\t-webkit-animation: tsperloader11 1s infinite;\n\tanimation: tsperloader11 1s infinite;\n}\n.tsperloader11:last-child {\n\tmargin-right: 0px;\n}\n .tsperloader11:nth-child(9) {\n -webkit-animation-delay: 0.9s;\n animation-delay: 0.9s;\n}\n.tsperloader11:nth-child(8) {\n -webkit-animation-delay: 0.8s;\n animation-delay: 0.8s;\n}\n.tsperloader11:nth-child(7) {\n -webkit-animation-delay: 0.7s;\n animation-delay: 0.7s;\n}\n.tsperloader11:nth-child(6) {\n -webkit-animation-delay: 0.6s;\n animation-delay: 0.6s;\n}\n.tsperloader11:nth-child(5) {\n -webkit-animation-delay: 0.5s;\n animation-delay: 0.5s;\n}\n.tsperloader11:nth-child(4) {\n -webkit-animation-delay: 0.4s;\n animation-delay: 0.4s;\n}\n.tsperloader11:nth-child(3) {\n -webkit-animation-delay: 0.3s;\n animation-delay: 0.3s;\n}\n.tsperloader11:nth-child(2) {\n -webkit-animation-delay: 0.2s;\n animation-delay: 0.2s;\n}\n @-webkit-keyframes tsperloader11 {\n50% {\n -ms-transform: translate(0, -50px);\n -webkit-transform: translate(0, -50px);\n transform: translate(0, -50px);\n}\n}\n@keyframes tsperloader11 {\n50% {\n -ms-transform: translate(0, -50px);\n -webkit-transform: translate(0, -50px);\n transform: translate(0, -50px);\n}\n}\n\n\n\n                              /*Preloader Demo 11*/\n\n/******************************************************************************/\n/******************************************************************************/\n\n\n\n\n#ts-preloader-absolute12 {\n\tposition: absolute;\n\tleft: 50%;\n\ttop: 50%;\n\theight: 50px;\n\twidth: 200px;\n\tmargin-top: -25px;\n\tmargin-left: -100px;\n}\n.tsperloader12 {\n\twidth: 20px;\n\theight:20px;\n\tbackground-color: #03a9f4;\n\tfloat: left;\n\tmargin-top: 15px;\n\t-moz-border-radius: 50% 50% 50% 50%;\n\t-webkit-border-radius: 50% 50% 50% 50%;\n\tborder-radius: 50% 50% 50% 50%;\n}\n#first_tsperloader12 {\n\t-webkit-animation: first_tsperloader12 2s infinite;\n\tanimation: first_tsperloader12 2s infinite;\n}\n#second_tsperloader12 {\n\t-webkit-animation: second_tsperloader12 2s infinite;\n\tanimation: second_tsperloader12 2s infinite;\n}\n @-webkit-keyframes first_tsperloader12 {\n 25% {\n -ms-transform: translate(90px, 0) scale(2);\n -webkit-transform: translate(90px, 0) scale(2);\n transform: translate(90px, 0) scale(2);\n}\n 50% {\n -ms-transform: translate(180px, 0) scale(1);\n -webkit-transform: translate(180px, 0) scale(1);\n transform: translate(180px, 0) scale(1);\n}\n 75% {\n -ms-transform: translate(90px, 0) scale(2);\n -webkit-transform: translate(90px, 0) scale(2);\n transform: translate(90px, 0) scale(2);\n}\n}\n@keyframes first_tsperloader12 {\n 25% {\n -ms-transform: translate(90px, 0) scale(2);\n -webkit-transform: translate(90px, 0) scale(2);\n transform: translate(90px, 0) scale(2);\n}\n 50% {\n -ms-transform: translate(180px, 0) scale(1);\n -webkit-transform: translate(180px, 0) scale(1);\n transform: translate(180px, 0) scale(1);\n}\n 75% {\n -ms-transform: translate(90px, 0) scale(2);\n -webkit-transform: translate(90px, 0) scale(2);\n transform: translate(90px, 0) scale(2);\n}\n}\n @-webkit-keyframes second_tsperloader12 {\n 25% {\n -ms-transform: translate(-90px, 0) scale(2);\n -webkit-transform: translate(-90px, 0) scale(2);\n transform: translate(-90px, 0) scale(2);\n}\n 50% {\n -ms-transform: translate(-180px, 0) scale(1);\n -webkit-transform: translate(-180px, 0) scale(1);\n transform: translate(-180px, 0) scale(1);\n}\n 75% {\n -ms-transform: translate(-90px, 0) scale(2);\n -webkit-transform: translate(-90px, 0) scale(2);\n transform: translate(-90px, 0) scale(2);\n}\n}\n@keyframes second_tsperloader12 {\n 25% {\n -ms-transform: translate(-90px, 0) scale(2);\n -webkit-transform: translate(-90px, 0) scale(2);\n transform: translate(-90px, 0) scale(2);\n}\n 50% {\n -ms-transform: translate(-180px, 0) scale(1);\n -webkit-transform: translate(-180px, 0) scale(1);\n transform: translate(-180px, 0) scale(1);\n}\n 75% {\n -ms-transform: translate(-90px, 0) scale(2);\n -webkit-transform: translate(-90px, 0) scale(2);\n transform: translate(-90px, 0) scale(2);\n}\n}\n\n\n\n\n                              /*Preloader Demo 12*/\n\n/******************************************************************************/\n/******************************************************************************/\n\n\n\n\n\n\n\n\n#ts-preloader-absolute13 {\n\tposition: absolute;\n\tleft: 50%;\n\ttop: 50%;\n\theight: 150px;\n\twidth: 150px;\n\tmargin-top: -75px;\n\tmargin-left: -75px;\n\t-ms-transform: rotate(45deg);\n\t-webkit-transform: rotate(45deg);\n\ttransform: rotate(45deg);\n}\n.tsperloader13 {\n\twidth: 20px;\n\theight: 20px;\n\tbackground-color: #03a9f4;\n\tposition: absolute;\n\tleft: 65px;\n\ttop: 65px;\n\t-moz-border-radius: 50% 50% 50% 50%;\n\t-webkit-border-radius: 50% 50% 50% 50%;\n\tborder-radius: 50% 50% 50% 50%;\n}\n.tsperloader13:nth-child(2n+0) {\n margin-right: 0px;\n}\n#tsperloader13_one {\n\t-webkit-animation: tsperloader13_one 2s infinite;\n\tanimation: tsperloader13_one 2s infinite;\n\t-webkit-animation-delay: 0.2s;\n\tanimation-delay: 0.2s;\n}\n#tsperloader13_two {\n\t-webkit-animation: tsperloader13_two 2s infinite;\n\tanimation: tsperloader13_two 2s infinite;\n\t-webkit-animation-delay: 0.3s;\n\tanimation-delay: 0.3s;\n}\n#tsperloader13_three {\n\t-webkit-animation: tsperloader13_three 2s infinite;\n\tanimation: tsperloader13_three 2s infinite;\n\t-webkit-animation-delay: 0.4s;\n\tanimation-delay: 0.4s;\n}\n#tsperloader13_four {\n\t-webkit-animation: tsperloader13_four 2s infinite;\n\tanimation: tsperloader13_four 2s infinite;\n\t-webkit-animation-delay: 0.5s;\n\tanimation-delay: 0.5s;\n}\n#tsperloader13_five {\n\t-webkit-animation: tsperloader13_five 2s infinite;\n\tanimation: tsperloader13_five 2s infinite;\n\t-webkit-animation-delay: 0.6s;\n\tanimation-delay: 0.6s;\n}\n#tsperloader13_six {\n\t-webkit-animation: tsperloader13_six 2s infinite;\n\tanimation: tsperloader13_six 2s infinite;\n\t-webkit-animation-delay: 0.7s;\n\tanimation-delay: 0.7s;\n}\n#tsperloader13_seven {\n\t-webkit-animation: tsperloader13_seven 2s infinite;\n\tanimation: tsperloader13_seven 2s infinite;\n\t-webkit-animation-delay: 0.8s;\n\tanimation-delay: 0.8s;\n}\n#tsperloader13_eight {\n\t-webkit-animation: tsperloader13_eight 2s infinite;\n\tanimation: tsperloader13_eight 2s infinite;\n\t-webkit-animation-delay: 0.9s;\n\tanimation-delay: 0.9s;\n}\n#tsperloader13_big {\n\tposition: absolute;\n\twidth: 50px;\n\theight: 50px;\n\tleft: 50px;\n\ttop: 50px;\n\t-webkit-animation: tsperloader13_big 2s infinite;\n\tanimation: tsperloader13_big 2s infinite;\n\t-webkit-animation-delay: 0.5s;\n\tanimation-delay: 0.5s;\n}\n @-webkit-keyframes tsperloader13_big {\n 50% {\n-webkit-transform: scale(0.5);\n}\n}\n @keyframes tsperloader13_big {\n 50% {\n transform: scale(0.5);\n -webkit-transform: scale(0.5);\n}\n}\n @-webkit-keyframes tsperloader13_one {\n 50% {\n-webkit-transform: translate(-65px, -65px);\n}\n}\n @keyframes tsperloader13_one {\n 50% {\n transform: translate(-65px, -65px);\n -webkit-transform: translate(-65px, -65px);\n}\n}\n @-webkit-keyframes tsperloader13_two {\n 50% {\n-webkit-transform: translate(0, -65px);\n}\n}\n @keyframes tsperloader13_two {\n 50% {\n transform: translate(0, -65px);\n -webkit-transform: translate(0, -65px);\n}\n}\n @-webkit-keyframes tsperloader13_three {\n 50% {\n-webkit-transform: translate(65px, -65px);\n}\n}\n @keyframes tsperloader13_three {\n 50% {\n transform: translate(65px, -65px);\n -webkit-transform: translate(65px, -65px);\n}\n}\n @-webkit-keyframes tsperloader13_four {\n 50% {\n-webkit-transform: translate(65px, 0);\n}\n}\n @keyframes tsperloader13_four {\n 50% {\n transform: translate(65px, 0);\n -webkit-transform: translate(65px, 0);\n}\n}\n @-webkit-keyframes tsperloader13_five {\n 50% {\n-webkit-transform: translate(65px, 65px);\n}\n}\n @keyframes tsperloader13_five {\n 50% {\n transform: translate(65px, 65px);\n -webkit-transform: translate(65px, 65px);\n}\n}\n @-webkit-keyframes tsperloader13_six {\n 50% {\n-webkit-transform: translate(0, 65px);\n}\n}\n @keyframes tsperloader13_six {\n 50% {\n transform:  translate(0, 65px);\n -webkit-transform:  translate(0, 65px);\n}\n}\n @-webkit-keyframes tsperloader13_seven {\n 50% {\n-webkit-transform: translate(-65px, 65px);\n}\n}\n @keyframes tsperloader13_seven {\n 50% {\n transform: translate(-65px, 65px);\n -webkit-transform: translate(-65px, 65px);\n}\n}\n @-webkit-keyframes tsperloader13_eight {\n 50% {\n-webkit-transform: translate(-65px, 0);\n}\n}\n @keyframes tsperloader13_eight {\n 50% {\n transform: translate(-65px, 0);\n -webkit-transform: translate(-65px, 0);\n}\n}\n\n\n\n\n                              /*Preloader Demo 13*/\n\n/******************************************************************************/\n/******************************************************************************/\n\n\n\n\n\n#ts-preloader-absolute14 {\n\tposition: absolute;\n\tleft: 50%;\n\ttop: 50%;\n\theight: 150px;\n\twidth: 150px;\n\tmargin-top: -75px;\n\tmargin-left: -75px;\n}\n.tsperloader14 {\n\twidth: 20px;\n\theight: 20px;\n\tbackground-color: #03a9f4;\n\tfloat: left;\n\tmargin-right: 20px;\n\tmargin-top: 65px;\n\t-moz-border-radius: 50% 50% 50% 50%;\n\t-webkit-border-radius: 50% 50% 50% 50%;\n\tborder-radius: 50% 50% 50% 50%;\n}\n#tsperloader14_one {\n\t-webkit-animation: tsperloader14_one 1.5s infinite;\n\tanimation: tsperloader14_one 1.5s infinite;\n}\n#tsperloader14_two {\n\t-webkit-animation: tsperloader14_two 1.5s infinite;\n\tanimation: tsperloader14_two 1.5s infinite;\n\t-webkit-animation-delay: 0.25s;\n\tanimation-delay: 0.25s;\n}\n#tsperloader14_three {\n\t-webkit-animation: tsperloader14_three 1.5s infinite;\n\tanimation: tsperloader14_three 1.5s infinite;\n\t-webkit-animation-delay: 0.5s;\n\tanimation-delay: 0.5s;\n}\n @-webkit-keyframes tsperloader14_one {\n75% {\n-webkit-transform: scale(0);\n}\n}\n @keyframes tsperloader14_one {\n 75% {\n transform: scale(0);\n -webkit-transform: scale(0);\n}\n}\n @-webkit-keyframes tsperloader14_two {\n 75% {\n-webkit-transform: scale(0);\n}\n}\n @keyframes tsperloader14_two {\n 75% {\n transform: scale(0);\n -webkit-transform:  scale(0);\n}\n}\n @-webkit-keyframes tsperloader14_three {\n 75% {\n-webkit-transform: scale(0);\n}\n}\n @keyframes tsperloader14_three {\n 75% {\n transform: scale(0);\n -webkit-transform: scale(0);\n}\n}\n\n\n\n\n                              /*Preloader Demo 14*/\n\n/******************************************************************************/\n/******************************************************************************/\n\n\n\n\n\n\n\n\n#ts-preloader-absolute-one15 {\n\tposition: absolute;\n\tleft: 50%;\n\ttop: 50%;\n\theight: 300px;\n\twidth: 50px;\n\tmargin-top: -150px;\n\tmargin-left: -25px;\n}\n#ts-preloader-absolute-two15 {\n\tposition: absolute;\n\tleft: 50%;\n\ttop: 50%;\n\theight: 300px;\n\twidth: 50px;\n\tmargin-top: -150px;\n\tmargin-left: 50px;\n}\n.tsperloader15-one {\n\twidth: 18px;\n\theight: 18px;\n\tbackground-color: #03a9f4;\n\tfloat: left;\n\tmargin-top: 15px;\n\tmargin-right: 15px;\n\t-ms-transform: rotate(45deg);\n\t-webkit-transform: rotate(45deg);\n\ttransform: rotate(45deg);\n\t-webkit-animation: tsperloader15-one 1s infinite;\n\tanimation: tsperloader15-one 1s infinite;\n}\n.tsperloader15-two {\n\twidth: 18px;\n\theight: 18px;\n\tbackground-color: #03a9f4;\n\tfloat: left;\n\tmargin-top: 15px;\n\tmargin-right: 15px;\n\t-ms-transform: rotate(45deg);\n\t-webkit-transform: rotate(45deg);\n\ttransform: rotate(45deg);\n\t-webkit-animation: tsperloader15-two 1s infinite;\n\tanimation: tsperloader15-two 1s infinite;\n}\n .tsperloader15-one:nth-child(6) {\n -webkit-animation-delay: 0.6s;\n animation-delay: 0.6s;\n}\n.tsperloader15-one:nth-child(5) {\n -webkit-animation-delay: 0.5s;\n animation-delay: 0.5s;\n}\n.tsperloader15-one:nth-child(4) {\n -webkit-animation-delay: 0.4s;\n animation-delay: 0.4s;\n}\n.tsperloader15-one:nth-child(3) {\n -webkit-animation-delay: 0.3s;\n animation-delay: 0.3s;\n}\n.tsperloader15-one:nth-child(2) {\n -webkit-animation-delay: 0.2s;\n animation-delay: 0.2s;\n}\n .tsperloader15-two:nth-child(9) {\n -webkit-animation-delay: 0.9s;\n animation-delay: 0.9s;\n}\n.tsperloader15-two:nth-child(8) {\n -webkit-animation-delay: 0.8s;\n animation-delay: 0.8s;\n}\n.tsperloader15-two:nth-child(7) {\n -webkit-animation-delay: 0.7s;\n animation-delay: 0.7s;\n}\n.tsperloader15-two:nth-child(6) {\n -webkit-animation-delay: 0.6s;\n animation-delay: 0.6s;\n}\n.tsperloader15-two:nth-child(5) {\n -webkit-animation-delay: 0.5s;\n animation-delay: 0.5s;\n}\n.tsperloader15-two:nth-child(4) {\n -webkit-animation-delay: 0.4s;\n animation-delay: 0.4s;\n}\n.tsperloader15-two:nth-child(3) {\n -webkit-animation-delay: 0.3s;\n animation-delay: 0.3s;\n}\n.tsperloader15-two:nth-child(2) {\n -webkit-animation-delay: 0.2s;\n animation-delay: 0.2s;\n}\n @-webkit-keyframes tsperloader15-one {\n50% {\n -ms-transform: translate(100px, 0);\n -webkit-transform: translate(100px, 0);\n transform: translate(100px, 0);\n}\n}\n@keyframes tsperloader15-one {\n50% {\n -ms-transform: translate(100px, 0);\n -webkit-transform: translate(100px, 0);\n transform: translate(100px, 0);\n}\n}\n @-webkit-keyframes tsperloader15-two {\n50% {\n -ms-transform: translate(-100px, 0);\n -webkit-transform: translate(-100px, 0);\n transform: translate(-100px, 0);\n}\n}\n@keyframes tsperloader15-two {\n50% {\n -ms-transform: translate(-100px, 0);\n -webkit-transform: translate(-100px, 0);\n transform: translate(-100px, 0);\n}\n}\n\n\n\n\n                              /*Preloader Demo 15*/\n\n/******************************************************************************/\n/******************************************************************************/\n\n\n\n\n\n\n#ts-preloader-absolute16 {\n\tposition: absolute;\n\tleft: 50%;\n\ttop: 50%;\n\theight: 150px;\n\twidth: 150px;\n\tmargin-top: -75px;\n\tmargin-left: -75px;\n\t-ms-transform: rotate(45deg);\n\t-webkit-transform: rotate(45deg);\n\ttransform: rotate(45deg);\n}\n.tsperloader16 {\n\twidth: 20px;\n\theight: 20px;\n\tbackground-color: #03a9f4;\n\tmargin-right: 110px;\n\tfloat: left;\n\tmargin-bottom: 110px;\n}\n.tsperloader16:nth-child(2n+0) {\n margin-right: 0px;\n}\n#tsperloader16_one {\n\t-webkit-animation: tsperloader16_one 2s infinite;\n\tanimation: tsperloader16_one 2s infinite;\n}\n#tsperloader16_two {\n\t-webkit-animation: tsperloader16_two 2s infinite;\n\tanimation: tsperloader16_two 2s infinite;\n}\n#tsperloader16_three {\n\t-webkit-animation: tsperloader16_three 2s infinite;\n\tanimation: tsperloader16_three 2s infinite;\n}\n#tsperloader16_four {\n\t-webkit-animation: tsperloader16_four 2s infinite;\n\tanimation: tsperloader16_four 2s infinite;\n}\n#tsperloader16_big {\n\t-webkit-animation: tsperloader16_big 0.5s infinite;\n\tanimation: tsperloader16_big 0.5s infinite;\n\tposition: absolute;\n\twidth: 50px;\n\theight: 50px;\n\tleft: 50px;\n\ttop: 50px;\n}\n @-webkit-keyframes tsperloader16_big {\n 25% {\n-webkit-transform:  scale(0.5);\n}\n}\n @keyframes tsperloader16_big {\n 25% {\n transform:  scale(0.5);\n -webkit-transform:   scale(0.5);\n}\n}\n @-webkit-keyframes tsperloader16_one {\n 25% {\n-webkit-transform: translate(130px, 0) rotate(-90deg);\n}\n 50% {\n-webkit-transform: translate(130px, 130px) rotate(-180deg);\n}\n 75% {\n-webkit-transform:  translate(0, 130px) rotate(-270deg);\n}\n 100% {\n-webkit-transform: rotate(-360deg);\n}\n}\n @keyframes tsperloader16_one {\n 25% {\n transform: translate(130px, 0) rotate(-90deg);\n -webkit-transform: translate(130px, 0) rotate(-90deg);\n}\n 50% {\n transform: translate(130px, 130px) rotate(-180deg);\n -webkit-transform: translate(130px, 130px) rotate(-180deg);\n}\n 75% {\n transform: translate(0, 130px) rotate(-270deg);\n -webkit-transform: translate(0, 130px) rotate(-270deg);\n}\n 100% {\n transform: rotate(-360deg);\n -webkit-transform: rotate(-360deg);\n}\n}\n @-webkit-keyframes tsperloader16_two {\n 25% {\n-webkit-transform: translate(0, 130px) rotate(-90deg);\n}\n 50% {\n-webkit-transform: translate(-130px, 130px) rotate(-180deg);\n}\n 75% {\n-webkit-transform:  translate(-130px, 0) rotate(-270deg);\n}\n 100% {\n-webkit-transform: rotate(-360deg);\n}\n}\n @keyframes tsperloader16_two {\n 25% {\n transform: translate(0, 130px) rotate(-90deg);\n -webkit-transform: translate(0, 130px) rotate(-90deg);\n}\n 50% {\n transform: translate(-130px, 130px) rotate(-180deg);\n -webkit-transform: translate(-130px, 130px) rotate(-180deg);\n}\n 75% {\n transform: translate(-130px, 0) rotate(-270deg);\n -webkit-transform: translate(-130px, 0) rotate(-270deg);\n}\n 100% {\n transform: rotate(-360deg);\n -webkit-transform: rotate(-360deg);\n}\n}\n @-webkit-keyframes tsperloader16_three {\n 25% {\n-webkit-transform: translate(0, -130px) rotate(-90deg);\n}\n 50% {\n-webkit-transform: translate(130px, -130px) rotate(-180deg);\n}\n 75% {\n-webkit-transform:  translate(130px, 0) rotate(-270deg);\n}\n 100% {\n-webkit-transform: rotate(-360deg);\n}\n}\n @keyframes tsperloader16_three {\n 25% {\n transform: translate(0, -130px) rotate(-90deg);\n -webkit-transform: translate(0, -130px) rotate(-90deg);\n}\n 50% {\n transform: translate(130px, -130px) rotate(-180deg);\n -webkit-transform: translate(130px, -130px) rotate(-180deg);\n}\n 75% {\n transform:  translate(130px, 0) rotate(-270deg);\n -webkit-transform: translate(130px, 0) rotate(-270deg);\n}\n 100% {\n transform: rotate(-360deg);\n -webkit-transform: rotate(-360deg);\n}\n}\n @-webkit-keyframes tsperloader16_four {\n 25% {\n-webkit-transform: translate(-130px, 0) rotate(-90deg);\n}\n 50% {\n-webkit-transform: translate(-130px, -130px) rotate(-180deg);\n}\n 75% {\n-webkit-transform:  translate(0, -130px) rotate(-270deg);\n}\n 100% {\n-webkit-transform: rotate(-360deg);\n}\n}\n @keyframes tsperloader16_four {\n 25% {\n transform: translate(-130px, 0) rotate(-90deg);\n -webkit-transform: translate(-130px, 0) rotate(-90deg);\n}\n 50% {\n transform: translate(-130px, -130px) rotate(-180deg);\n -webkit-transform: translate(-130px, -130px) rotate(-180deg);\n}\n 75% {\n transform: translate(0, -130px) rotate(-270deg);\n -webkit-transform: translate(0, -130px) rotate(-270deg);\n}\n 100% {\n transform: rotate(-360deg);\n -webkit-transform: rotate(-360deg);\n}\n}\n\n\n\n                              /*Preloader Demo 16*/\n\n/******************************************************************************/\n/******************************************************************************/\n\n\n\n\n\n#ts-preloader-absolute17 {\n\tposition: absolute;\n\tleft: 50%;\n\ttop: 50%;\n\theight: 50px;\n\twidth: 50px;\n\tmargin-top: -25px;\n\tmargin-left: -25px;\n\t-ms-transform: rotate(45deg);\n\t-webkit-transform: rotate(45deg);\n\ttransform: rotate(45deg);\n\t-webkit-animation: ts-preloader-absolute 1.5s infinite;\n\tanimation: ts-preloader-absolute 1.5s infinite;\n}\n.tsperloader17 {\n\twidth: 25px;\n\theight: 25px;\n\tbackground-color: #03a9f4;\n\tfloat: left;\n}\n#tsperloader17_one {\n\t-webkit-animation: tsperloader17_one 1.5s infinite;\n\tanimation: tsperloader17_one 1.5s infinite;\n}\n#tsperloader17_two {\n\t-webkit-animation: tsperloader17_two 1.5s infinite;\n\tanimation: tsperloader17_two 1.5s infinite;\n}\n#tsperloader17_three {\n\t-webkit-animation: tsperloader17_three 1.5s infinite;\n\tanimation: tsperloader17_three 1.5s infinite;\n}\n#tsperloader17_four {\n\t-webkit-animation: tsperloader17_four 1.5s infinite;\n\tanimation: tsperloader17_four 1.5s infinite;\n}\n @-webkit-keyframes ts-preloader-absolute {\n 100% {\n-webkit-transform: rotate(-45deg);\n}\n}\n @keyframes ts-preloader-absolute {\n 100% {\n transform:  rotate(-45deg);\n -webkit-transform:  rotate(-45deg);\n}\n}\n @-webkit-keyframes tsperloader17_one {\n 25% {\n-webkit-transform: translate(0, -50px) rotate(-180deg);\n}\n 100% {\n-webkit-transform: translate(0, 0) rotate(-180deg);\n}\n}\n @keyframes tsperloader17_one {\n 25% {\n transform: translate(0, -50px) rotate(-180deg);\n -webkit-transform: translate(0, -50px) rotate(-180deg);\n}\n 100% {\n transform: translate(0, 0) rotate(-180deg);\n -webkit-transform: translate(0, 0) rotate(-180deg);\n}\n}\n @-webkit-keyframes tsperloader17_two {\n 25% {\n-webkit-transform: translate(50px, 0) rotate(-180deg);\n}\n 100% {\n-webkit-transform: translate(0, 0) rotate(-180deg);\n}\n}\n @keyframes tsperloader17_two {\n 25% {\n transform: translate(50px, 0) rotate(-180deg);\n -webkit-transform: translate(50px, 0) rotate(-180deg);\n}\n 100% {\n transform: translate(0, 0) rotate(-180deg);\n -webkit-transform: translate(0, 0) rotate(-180deg);\n}\n}\n @-webkit-keyframes tsperloader17_three {\n 25% {\n-webkit-transform: translate(-50px, 0) rotate(-180deg);\n}\n 100% {\n-webkit-transform: translate(0, 0) rotate(-180deg);\n}\n}\n @keyframes tsperloader17_three {\n 25% {\n transform:  translate(-50px, 0) rotate(-180deg);\n -webkit-transform:  translate(-50px, 0) rotate(-180deg);\n}\n 100% {\n transform: translate(0, 0) rotate(-180deg);\n -webkit-transform: rtranslate(0, 0) rotate(-180deg);\n}\n}\n @-webkit-keyframes tsperloader17_four {\n 25% {\n-webkit-transform: translate(0, 50px) rotate(-180deg);\n}\n 100% {\n-webkit-transform: translate(0, 0) rotate(-180deg);\n}\n}\n @keyframes tsperloader17_four {\n 25% {\n transform: translate(0, 50px) rotate(-180deg);\n -webkit-transform: translate(0, 50px) rotate(-180deg);\n}\n 100% {\n transform: translate(0, 0) rotate(-180deg);\n -webkit-transform: translate(0, 0) rotate(-180deg);\n}\n}\n\n\n\n\n                              /*Preloader Demo 17*/\n\n/******************************************************************************/\n/******************************************************************************/\n\n\n\n\n\n#ts-preloader-absolute18 {\n\tposition: absolute;\n\tleft: 50%;\n\ttop: 50%;\n\theight: 100px;\n\twidth: 100px;\n\tmargin-top: -50px;\n\tmargin-left: -50px;\n}\n.tsperloader18 {\n\twidth: 25px;\n\theight: 25px;\n\tbackground-color: #03a9f4;\n\tmargin-right: 50px;\n\tfloat: left;\n\tmargin-bottom: 50px;\n}\n.tsperloader18:nth-child(2n+0) {\n margin-right: 0px;\n}\n#tsperloader18_one {\n\t-webkit-animation: tsperloader18_one 2s infinite;\n\tanimation: tsperloader18_one 2s infinite;\n}\n#tsperloader18_two {\n\t-webkit-animation: tsperloader18_two 2s infinite;\n\tanimation: tsperloader18_two 2s infinite;\n}\n#tsperloader18_three {\n\t-webkit-animation: tsperloader18_three 2s infinite;\n\tanimation: tsperloader18_three 2s infinite;\n}\n#tsperloader18_four {\n\t-webkit-animation: tsperloader18_four 2s infinite;\n\tanimation: tsperloader18_four 2s infinite;\n}\n @-webkit-keyframes tsperloader18_one {\n 25% {\n-webkit-transform: translate(75px, 0) rotate(-90deg) scale(0.5);\n}\n 50% {\n-webkit-transform: translate(75px, 75px) rotate(-180deg);\n}\n 75% {\n-webkit-transform:  translate(0, 75px) rotate(-270deg) scale(0.5);\n}\n 100% {\n-webkit-transform: rotate(-360deg);\n}\n}\n @keyframes tsperloader18_one {\n 25% {\n transform: translate(75px, 0) rotate(-90deg) scale(0.5);\n -webkit-transform: translate(75px, 0) rotate(-90deg) scale(0.5);\n}\n 50% {\n transform: translate(75px, 75px) rotate(-180deg);\n -webkit-transform: translate(75px, 75px) rotate(-180deg);\n}\n 75% {\n transform: translate(0, 75px) rotate(-270deg) scale(0.5);\n -webkit-transform: translate(0, 75px) rotate(-270deg) scale(0.5);\n}\n 100% {\n transform: rotate(-360deg);\n -webkit-transform: rotate(-360deg);\n}\n}\n @-webkit-keyframes tsperloader18_two {\n 25% {\n-webkit-transform: translate(0, 75px) rotate(-90deg) scale(0.5);\n}\n 50% {\n-webkit-transform: translate(-75px, 75px) rotate(-180deg);\n}\n 75% {\n-webkit-transform:  translate(-75px, 0) rotate(-270deg) scale(0.5);\n}\n 100% {\n-webkit-transform: rotate(-360deg);\n}\n}\n @keyframes tsperloader18_two {\n 25% {\n transform: translate(0, 75px) rotate(-90deg) scale(0.5);\n -webkit-transform: translate(0, 75px) rotate(-90deg) scale(0.5);\n}\n 50% {\n transform: translate(-75px, 75px) rotate(-180deg);\n -webkit-transform: translate(-75px, 75px) rotate(-180deg);\n}\n 75% {\n transform: translate(-75px, 0) rotate(-270deg) scale(0.5);\n -webkit-transform: translate(-75px, 0) rotate(-270deg) scale(0.5);\n}\n 100% {\n transform: rotate(-360deg);\n -webkit-transform: rotate(-360deg);\n}\n}\n @-webkit-keyframes tsperloader18_three {\n 25% {\n-webkit-transform: translate(0, -75px) rotate(-90deg) scale(0.5);\n}\n 50% {\n-webkit-transform: translate(75px, -75px) rotate(-180deg);\n}\n 75% {\n-webkit-transform:  translate(75px, 0) rotate(-270deg) scale(0.5);\n}\n 100% {\n-webkit-transform: rotate(-360deg);\n}\n}\n @keyframes tsperloader18_three {\n 25% {\n transform: translate(0, -75px) rotate(-90deg) scale(0.5);\n -webkit-transform: translate(0, -75px) rotate(-90deg) scale(0.5);\n}\n 50% {\n transform: translate(75px, -75px) rotate(-180deg);\n -webkit-transform: translate(75px, -75px) rotate(-180deg);\n}\n 75% {\n transform:  translate(75px, 0) rotate(-270deg) scale(0.5);\n -webkit-transform: translate(75px, 0) rotate(-270deg) scale(0.5);\n}\n 100% {\n transform: rotate(-360deg);\n -webkit-transform: rotate(-360deg);\n}\n}\n @-webkit-keyframes tsperloader18_four {\n 25% {\n-webkit-transform: translate(-75px, 0) rotate(-90deg) scale(0.5);\n}\n 50% {\n-webkit-transform: translate(-75px, -75px) rotate(-180deg);\n}\n 75% {\n-webkit-transform:  translate(0, -75px) rotate(-270deg) scale(0.5);\n}\n 100% {\n-webkit-transform: rotate(-360deg);\n}\n}\n @keyframes tsperloader18_four {\n 25% {\n transform: translate(-75px, 0) rotate(-90deg) scale(0.5);\n -webkit-transform: translate(-75px, 0) rotate(-90deg) scale(0.5);\n}\n 50% {\n transform: translate(-75px, -75px) rotate(-180deg);\n -webkit-transform: translate(-75px, -75px) rotate(-180deg);\n}\n 75% {\n transform: translate(0, -75px) rotate(-270deg) scale(0.5);\n -webkit-transform: translate(0, -75px) rotate(-270deg) scale(0.5);\n}\n 100% {\n transform: rotate(-360deg);\n -webkit-transform: rotate(-360deg);\n}\n}\n\n\n\n                              /*Preloader Demo 18*/\n\n/******************************************************************************/\n/******************************************************************************/\n\n\n\n\n#ts-preloader-absolute19 {\n\tposition: absolute;\n\tleft: 50%;\n\ttop: 50%;\n\theight: 118px;\n\twidth: 72px;\n\tmargin-top: -59px;\n\tmargin-left: -36px;\n}\n.tsperloader19 {\n\twidth: 26px;\n\theight: 26px;\n\tbackground-color:#03a9f4;\n\tmargin-right: 20px;\n\tfloat: left;\n\tmargin-bottom: 20px;\n}\n.tsperloader19:nth-child(2n+0) {\n margin-right: 0px;\n}\n#tsperloader19_one {\n\t-webkit-animation: tsperloader19_one 1s infinite;\n\tanimation: tsperloader19_one 1s infinite;\n}\n#tsperloader19_two {\n\t-webkit-animation: tsperloader19_two 1s infinite;\n\tanimation: tsperloader19_two 1s infinite;\n}\n#tsperloader19_three {\n\t-webkit-animation: tsperloader19_three 1s infinite;\n\tanimation: tsperloader19_three 1s infinite;\n}\n#tsperloader19_four {\n\t-webkit-animation: tsperloader19_four 1s infinite;\n\tanimation: tsperloader19_four 1s infinite;\n}\n#tsperloader19_five {\n\t-webkit-animation: tsperloader19_five 1s infinite;\n\tanimation: tsperloader19_five 1s infinite;\n}\n#tsperloader19_six {\n\t-webkit-animation: tsperloader19_six 1s infinite;\n\tanimation: tsperloader19_six 1s infinite;\n}\n @-webkit-keyframes tsperloader19_one {\n 50% {\n -ms-transform: translate(-100px, 46px) rotate(-179deg);\n -webkit-transform: translate(-100px, 46px) rotate(-179deg);\n transform: translate(-100px, 46px) rotate(-179deg);\n}\n 100% {\n -ms-transform: translate(0, 0);\n -webkit-transform: translate(0, 0);\n transform: translate(0, 0);\n}\n}\n @keyframes tsperloader19_one {\n 50% {\n -ms-transform: translate(-100px, 46px) rotate(-179deg);\n -webkit-transform: translate(-100px, 46px) rotate(-179deg);\n transform: translate(-100px, 46px) rotate(-179deg);\n}\n 100% {\n -ms-transform: translate(0, 0);\n -webkit-transform: translate(0, 0);\n transform: translate(0, 0);\n}\n}\n @-webkit-keyframes tsperloader19_two {\n 50% {\n -ms-transform: translate(100px, 46px) rotate(179deg);\n -webkit-transform: translate(100px, 46px) rotate(179deg);\n transform: translate(100px, 46px) rotate(179deg);\n}\n 100% {\n -ms-transform: translate(0, 0);\n -webkit-transform: translate(0, 0);\n transform: translate(0, 0);\n}\n}\n @keyframes tsperloader19_two {\n 50% {\n -ms-transform: translate(100px, 46px) rotate(179deg);\n -webkit-transform: translate(100px, 46px) rotate(179deg);\n transform: translate(100px, 46px) rotate(179deg);\n}\n 100% {\n -ms-transform: translate(0, 0);\n -webkit-transform: translate(0, 0);\n transform: translate(0, 0);\n}\n}\n @-webkit-keyframes tsperloader19_three {\n 50% {\n -ms-transform: translate(-100px, 0) rotate(-179deg);\n -webkit-transform: translate(-100px, 0) rotate(-179deg);\n transform: translate(-100px, 0) rotate(-179deg);\n}\n 100% {\n -ms-transform: translate(0, 0);\n -webkit-transform: translate(0, 0);\n transform: translate(0, 0);\n}\n}\n @keyframes tsperloader19_three {\n 50% {\n -ms-transform: translate(-100px, 0) rotate(-179deg);\n -webkit-transform: translate(-100px, 0) rotate(-179deg);\n transform: translate(-100px, 0) rotate(-179deg);\n}\n 100% {\n -ms-transform: translate(0, 0);\n -webkit-transform: translate(0, 0);\n transform: translate(0, 0);\n}\n}\n @-webkit-keyframes tsperloader19_four {\n 50% {\n -ms-transform: translate(100px, 0) rotate(179deg);\n -webkit-transform: translate(100px, 0) rotate(179deg);\n transform: translate(100px, 0) rotate(179deg);\n}\n 100% {\n -ms-transform: translate(0, 0);\n -webkit-transform: translate(0, 0);\n transform: translate(0, 0);\n}\n}\n @keyframes tsperloader19_four {\n 50% {\n -ms-transform: translate(100px, 0) rotate(179deg);\n -webkit-transform: translate(100px, 0) rotate(179deg);\n transform: translate(100px, 0) rotate(179deg);\n}\n 100% {\n -ms-transform: translate(0, 0);\n -webkit-transform: translate(0, 0);\n transform: translate(0, 0);\n}\n}\n @-webkit-keyframes tsperloader19_five {\n 50% {\n -ms-transform: translate(-100px, -46px) rotate(-179deg);\n -webkit-transform: translate(-100px, -46px) rotate(-179deg);\n transform: translate(-100px, -46px) rotate(-179deg);\n}\n 100% {\n -ms-transform: translate(0, 0);\n -webkit-transform: translate(0, 0);\n transform: translate(0, 0);\n}\n}\n @keyframes tsperloader19_five {\n 50% {\n -ms-transform: translate(-100px, -46px) rotate(-179deg);\n -webkit-transform: translate(-100px, -46px) rotate(-179deg);\n transform: translate(-100px, -46px) rotate(-179deg);\n}\n 100% {\n -ms-transform: translate(0, 0);\n -webkit-transform: translate(0, 0);\n transform: translate(0, 0);\n}\n}\n @-webkit-keyframes tsperloader19_six {\n 50% {\n -ms-transform: translate(100px, -46px) rotate(179deg);\n -webkit-transform: translate(100px, -46px) rotate(179deg);\n transform: translate(100px, -46px) rotate(179deg);\n}\n 100% {\n -ms-transform: translate(0, 0);\n -webkit-transform: translate(0, 0);\n transform: translate(0, 0);\n}\n}\n @keyframes tsperloader19_six {\n 50% {\n -ms-transform: translate(100px, -46px) rotate(179deg);\n -webkit-transform: translate(100px, -46px) rotate(179deg);\n transform: translate(100px, -46px) rotate(179deg);\n}\n 100% {\n -ms-transform: translate(0, 0);\n -webkit-transform: translate(0, 0);\n transform: translate(0, 0);\n}\n}\n\n\n\n\n\n                              /*Preloader Demo 19*/\n\n/******************************************************************************/\n/******************************************************************************/\n\n\n\n\n\n\n\n#ts-preloader-absolute20 {\n\tposition: absolute;\n\tleft: 50%;\n\ttop: 50%;\n\theight: 118px;\n\twidth: 118px;\n\tmargin-top: -59px;\n\tmargin-left: -59px;\n}\n.tsperloader20 {\n\twidth: 20px;\n\theight: 20px;\n\tbackground-color: #03a9f4;\n\tmargin-right: 20px;\n\tfloat: left;\n\tmargin-bottom: 20px;\n}\n.tsperloader20:nth-child(3n+0) {\n margin-right: 0px;\n}\n#tsperloader20_one {\n\t-webkit-animation: animate 1s -0.9s ease-in-out infinite;\n\tanimation: animate 1s -0.9s ease-in-out infinite;\n}\n#tsperloader20_two {\n\t-webkit-animation: animate 1s -0.8s ease-in-out infinite;\n\tanimation: animate 1s -0.8s ease-in-out infinite;\n}\n#tsperloader20_three {\n\t-webkit-animation: animate 1s -0.7s ease-in-out infinite;\n\tanimation: animate 1s -0.7s ease-in-out infinite;\n}\n#tsperloader20_four {\n\t-webkit-animation: animate 1s -0.6s ease-in-out infinite;\n\tanimation: animate 1s -0.6s ease-in-out infinite;\n}\n#tsperloader20_five {\n\t-webkit-animation: animate 1s -0.5s ease-in-out infinite;\n\tanimation: animate 1s -0.5s ease-in-out infinite;\n}\n#tsperloader20_six {\n\t-webkit-animation: animate 1s -0.4s ease-in-out infinite;\n\tanimation: animate 1s -0.4s ease-in-out infinite;\n}\n#tsperloader20_seven {\n\t-webkit-animation: animate 1s -0.3s ease-in-out infinite;\n\tanimation: animate 1s -0.3s ease-in-out infinite;\n}\n#tsperloader20_eight {\n\t-webkit-animation: animate 1s -0.2s ease-in-out infinite;\n\tanimation: animate 1s -0.2s ease-in-out infinite;\n}\n#tsperloader20_nine {\n\t-webkit-animation: animate 1s -0.1s ease-in-out infinite;\n\tanimation: animate 1s -0.1s ease-in-out infinite;\n}\n @-webkit-keyframes animate {\n 50% {\n -ms-transform: scale(1.5, 1.5);\n -webkit-transform: scale(1.5, 1.5);\n transform: scale(1.5, 1.5);\n}\n 100% {\n -ms-transform: scale(1, 1);\n -webkit-transform: scale(1, 1);\n transform: scale(1, 1);\n}\n}\n @keyframes animate {\n 50% {\n -ms-transform: scale(1.5, 1.5);\n -webkit-transform: scale(1.5, 1.5);\n transform: scale(1.5, 1.5);\n}\n 100% {\n -ms-transform: scale(1, 1);\n -webkit-transform: scale(1, 1);\n transform: scale(1, 1);\n}\n}\n\n\n\n\n                              /*Preloader Demo 20*/\n\n/******************************************************************************/\n/******************************************************************************/\n\n\n\n\n\n\n#ts-preloader-absolute21 {\n\tposition: absolute;\n\tleft: 50%;\n\ttop: 50%;\n\theight: 100px;\n\twidth: 100px;\n\tmargin-top: -50px;\n\tmargin-left: -50px;\n}\n.tsperloader21 {\n\twidth: 25px;\n\theight: 25px;\n\tbackground-color: #03a9f4;\n\tmargin-right: auto;\n\tmargin-left: auto;\n\tborder: 4px solid rgba #03a9f4;\n\tleft: 37px;\n\ttop: 37px;\n\tposition: absolute;\n}\n#first_tsperloader21 {\n\t-webkit-animation: first_tsperloader21 1s infinite;\n\tanimation: first_tsperloader21 1s infinite;\n\t-webkit-animation-delay: 0.5s;\n\tanimation-delay: 0.5s;\n}\n#second_tsperloader21 {\n\t-webkit-animation: second_tsperloader21 1s infinite;\n\tanimation: second_tsperloader21 1s infinite;\n}\n#third_tsperloader21 {\n\t-webkit-animation: third_tsperloader21 1s infinite;\n\tanimation: third_tsperloader21 1s infinite;\n\t-webkit-animation-delay: 0.5s;\n\tanimation-delay: 0.5s;\n}\n#forth_tsperloader21 {\n\t-webkit-animation: forth_tsperloader21 1s infinite;\n\tanimation: forth_tsperloader21 1s infinite;\n}\n @-webkit-keyframes first_tsperloader21 {\n 0% {\n -ms-transform: translate(1, 1) scale(1, 1);\n -webkit-transform: translate(1, 1) scale(1, 1);\n transform: translate(1, 1) scale(1, 1);\n}\n 50% {\n -ms-transform: translate(150%, 150%) scale(2, 2);\n -webkit-transform: translate(150%, 150%) scale(2, 2);\n transform: translate(150%, 150%) scale(2, 2);\n}\n 100% {\n -ms-transform: translate(1, 1) scale(1, 1);\n -webkit-transform: translate(1, 1) scale(1, 1);\n transform: translate(1, 1) scale(1, 1);\n}\n}\n@keyframes first_tsperloader21 {\n 0% {\n -ms-transform: translate(1, 1) scale(1, 1);\n -webkit-transform: translate(1, 1) scale(1, 1);\n transform: translate(1, 1) scale(1, 1);\n}\n 50% {\n -ms-transform: translate(150%, 150%) scale(2, 2);\n -webkit-transform: translate(150%, 150%) scale(2, 2);\n transform: translate(150%, 150%) scale(2, 2);\n}\n 100% {\n -ms-transform: translate(1, 1) scale(1, 1);\n -webkit-transform: translate(1, 1) scale(1, 1);\n transform: translate(1, 1) scale(1, 1);\n}\n}\n @-webkit-keyframes second_tsperloader21 {\n 0% {\n -ms-transform: translate(1, 1) scale(1, 1);\n -webkit-transform: translate(1, 1) scale(1, 1);\n transform: translate(1, 1) scale(1, 1);\n}\n 50% {\n -ms-transform: translate(-150%, 150%) scale(2, 2);\n -webkit-transform: translate(-150%, 150%) scale(2, 2);\n transform: translate(-150%, 150%) scale(2, 2);\n}\n 100% {\n -ms-transform: translate(1, 1) scale(1, 1);\n -webkit-transform: translate(1, 1) scale(1, 1);\n transform: translate(1, 1) scale(1, 1);\n}\n}\n@keyframes second_tsperloader21 {\n 0% {\n -ms-transform: translate(1, 1) scale(1, 1);\n -webkit-transform: translate(1, 1) scale(1, 1);\n transform: translate(1, 1) scale(1, 1);\n}\n 50% {\n -ms-transform: translate(-150%, 150%) scale(2, 2);\n -webkit-transform: translate(-150%, 150%) scale(2, 2);\n transform: translate(-150%, 150%) scale(2, 2);\n}\n 100% {\n -ms-transform: translate(1, 1) scale(1, 1);\n -webkit-transform: translate(1, 1) scale(1, 1);\n transform: translate(1, 1) scale(1, 1);\n}\n}\n @-webkit-keyframes third_tsperloader21 {\n 0% {\n -ms-transform: translate(1, 1) scale(1, 1);\n -webkit-transform: translate(1, 1) scale(1, 1);\n transform: translate(1, 1) scale(1, 1);\n}\n 50% {\n -ms-transform: translate(-150%, -150%) scale(2, 2);\n -webkit-transform: translate(-150%, -150%) scale(2, 2);\n transform: translate(-150%, -150%) scale(2, 2);\n}\n 100% {\n -ms-transform: translate(1, 1) scale(1, 1);\n -webkit-transform: translate(1, 1) scale(1, 1);\n transform: translate(1, 1) scale(1, 1);\n}\n}\n@keyframes third_tsperloader21 {\n 0% {\n -ms-transform: translate(1, 1) scale(1, 1);\n -webkit-transform: translate(1, 1) scale(1, 1);\n transform: translate(1, 1) scale(1, 1);\n}\n 50% {\n -ms-transform: translate(-150%, -150%) scale(2, 2);\n -webkit-transform: translate(-150%, -150%) scale(2, 2);\n transform: translate(-150%, -150%) scale(2, 2);\n}\n 100% {\n -ms-transform: translate(1, 1) scale(1, 1);\n -webkit-transform: translate(1, 1) scale(1, 1);\n transform: translate(1, 1) scale(1, 1);\n}\n}\n @-webkit-keyframes forth_tsperloader21 {\n 0% {\n -ms-transform: translate(1, 1) scale(1, 1);\n -webkit-transform: translate(1, 1) scale(1, 1);\n transform: translate(1, 1) scale(1, 1);\n}\n 50% {\n -ms-transform: translate(150%, -150%) scale(2, 2);\n -webkit-transform: translate(150%, -150%) scale(2, 2);\n transform: translate(150%, -150%) scale(2, 2);\n}\n 100% {\n -ms-transform: translate(1, 1) scale(1, 1);\n -webkit-transform: translate(1, 1) scale(1, 1);\n transform: translate(1, 1) scale(1, 1);\n}\n}\n@keyframes forth_tsperloader21 {\n 0% {\n -ms-transform: translate(1, 1) scale(1, 1);\n -webkit-transform: translate(1, 1) scale(1, 1);\n transform: translate(1, 1) scale(1, 1);\n}\n 50% {\n -ms-transform: translate(150%, -150%) scale(2, 2);\n -webkit-transform: translate(150%, -150%) scale(2, 2);\n transform: translate(150%, -150%) scale(2, 2);\n}\n 100% {\n -ms-transform: translate(1, 1) scale(1, 1);\n -webkit-transform: translate(1, 1) scale(1, 1);\n transform: translate(1, 1) scale(1, 1);\n}\n}\n\n\n\n\n                              /*Preloader Demo 21*/\n\n/******************************************************************************/\n/******************************************************************************/\n\n\n\n\n#ts-preloader-absolute22 {\n\tposition: absolute;\n\tleft: 50%;\n\ttop: 50%;\n\theight: 200px;\n\twidth: 200px;\n\tmargin-top: -100px;\n\tmargin-left: -100px;\n}\n.tsperloader22 {\n\twidth: 50px;\n\theight: 50px;\n\tbackground-color: rgba(255, 255, 255, 0);\n\tmargin-right: auto;\n\tmargin-left: auto;\n\tborder: 4px solid #03a9f4;\n\tleft: 73px;\n\ttop: 73px;\n\tposition: absolute;\n}\n#first_tsperloader22 {\n\t-webkit-animation: first_tsperloader22_animate 1s infinite ease-in-out;\n\tanimation: first_tsperloader22_animate 1s infinite ease-in-out;\n}\n#second_tsperloader22 {\n\t-webkit-animation: second_tsperloader22 1s forwards, second_tsperloader22_animate 1s infinite ease-in-out;\n\tanimation: second_tsperloader22 1s forwards, second_tsperloader22_animate 1s infinite ease-in-out;\n}\n#third_tsperloader22 {\n\t-webkit-animation: third_tsperloader22 1s forwards, third_tsperloader22_animate 1s infinite ease-in-out;\n\tanimation: third_tsperloader22 1s forwards, third_tsperloader22_animate 1s infinite ease-in-out;\n}\n @-webkit-keyframes second_tsperloader22 {\n 100% {\nwidth: 100px;\nheight:100px;\nleft: 48px;\ntop: 48px;\n}\n}\n@keyframes second_tsperloader22 {\n100% {\nwidth: 100px;\nheight:100px;\nleft: 48px;\ntop: 48px;\n}\n}\n @-webkit-keyframes third_tsperloader22 {\n 100% {\nwidth: 150px;\nheight:150px;\nleft: 23px;\ntop: 23px;\n}\n}\n@keyframes third_tsperloader22 {\n100% {\nwidth: 150px;\nheight:150px;\nleft: 23px;\ntop: 23px;\n}\n}\n @-webkit-keyframes first_tsperloader22_animate {\n 0% {\n-webkit-transform: perspective(100px);\n}\n 50% {\n-webkit-transform: perspective(100px) rotateY(-180deg);\n}\n 100% {\n-webkit-transform: perspective(100px) rotateY(-180deg) rotateX(-180deg);\n}\n}\n @keyframes first_tsperloader22_animate {\n 0% {\n transform: perspective(100px) rotateX(0deg) rotateY(0deg);\n -webkit-transform: perspective(100px) rotateX(0deg) rotateY(0deg);\n}\n50% {\n transform: perspective(100px) rotateX(-180deg) rotateY(0deg);\n -webkit-transform: perspective(100px) rotateX(-180deg) rotateY(0deg);\n}\n100% {\n transform: perspective(100px) rotateX(-180deg) rotateY(-180deg);\n -webkit-transform: perspective(100px) rotateX(-180deg) rotateY(-180deg);\n}\n}\n @-webkit-keyframes second_tsperloader22_animate {\n 0% {\n-webkit-transform: perspective(200px);\n}\n 50% {\n-webkit-transform: perspective(200px) rotateY(180deg);\n}\n 100% {\n-webkit-transform: perspective(200px) rotateY(180deg) rotateX(180deg);\n}\n}\n @keyframes second_tsperloader22_animate {\n 0% {\n transform: perspective(200px) rotateX(0deg) rotateY(0deg);\n -webkit-transform: perspective(200px) rotateX(0deg) rotateY(0deg);\n}\n50% {\n transform: perspective(200px) rotateX(180deg) rotateY(0deg);\n -webkit-transform: perspective(200px) rotateX(180deg) rotateY(0deg);\n}\n100% {\n transform: perspective(200px) rotateX(180deg) rotateY(180deg);\n -webkit-transform: perspective(200px) rotateX(180deg) rotateY(180deg);\n}\n}\n @-webkit-keyframes third_tsperloader22_animate {\n 0% {\n-webkit-transform: perspective(300px);\n}\n 50% {\n-webkit-transform: perspective(300px) rotateY(-180deg);\n}\n 100% {\n-webkit-transform: perspective(300px) rotateY(-180deg) rotateX(-180deg);\n}\n}\n @keyframes third_tsperloader22_animate {\n 0% {\n transform: perspective(300px) rotateX(0deg) rotateY(0deg);\n -webkit-transform: perspective(300px) rotateX(0deg) rotateY(0deg);\n}\n50% {\n transform: perspective(300px) rotateX(-180deg) rotateY(0deg);\n -webkit-transform: perspective(300px) rotateX(-180deg) rotateY(0deg);\n}\n100% {\n transform: perspective(300px) rotateX(-180deg) rotateY(-180deg);\n -webkit-transform: perspective(300px) rotateX(-180deg) rotateY(-180deg);\n}\n}\n\n\n\n                              /*Preloader Demo 22*/\n\n/******************************************************************************/\n/******************************************************************************/\n\n\n\n\n#ts-preloader-absolute23 {\n\tposition: absolute;\n\tleft: 50%;\n\ttop: 50%;\n\theight: 150px;\n\twidth: 150px;\n\tmargin-top: -75px;\n\tmargin-left: -75px;\n\t-ms-transform: rotate(45deg);\n\t-webkit-transform: rotate(45deg);\n\ttransform: rotate(45deg);\n}\n.tsperloader23 {\n\twidth: 20px;\n\theight: 20px;\n\tbackground-color:#03a9f4;\n\tposition: absolute;\n\tleft: 65px;\n\ttop: 65px;\n}\n.tsperloader23:nth-child(2n+0) {\n margin-right: 0px;\n}\n#tsperloader23_one {\n\t-webkit-animation: tsperloader23_one 2s infinite;\n\tanimation: tsperloader23_one 2s infinite;\n\t-webkit-animation-delay: 0.2s;\n\tanimation-delay: 0.2s;\n}\n#tsperloader23_two {\n\t-webkit-animation: tsperloader23_two 2s infinite;\n\tanimation: tsperloader23_two 2s infinite;\n\t-webkit-animation-delay: 0.3s;\n\tanimation-delay: 0.3s;\n}\n#tsperloader23_three {\n\t-webkit-animation: tsperloader23_three 2s infinite;\n\tanimation: tsperloader23_three 2s infinite;\n\t-webkit-animation-delay: 0.4s;\n\tanimation-delay: 0.4s;\n}\n#tsperloader23_four {\n\t-webkit-animation: tsperloader23_four 2s infinite;\n\tanimation: tsperloader23_four 2s infinite;\n\t-webkit-animation-delay: 0.5s;\n\tanimation-delay: 0.5s;\n}\n#tsperloader23_five {\n\t-webkit-animation: tsperloader23_five 2s infinite;\n\tanimation: tsperloader23_five 2s infinite;\n\t-webkit-animation-delay: 0.6s;\n\tanimation-delay: 0.6s;\n}\n#tsperloader23_six {\n\t-webkit-animation: tsperloader23_six 2s infinite;\n\tanimation: tsperloader23_six 2s infinite;\n\t-webkit-animation-delay: 0.7s;\n\tanimation-delay: 0.7s;\n}\n#tsperloader23_seven {\n\t-webkit-animation: tsperloader23_seven 2s infinite;\n\tanimation: tsperloader23_seven 2s infinite;\n\t-webkit-animation-delay: 0.8s;\n\tanimation-delay: 0.8s;\n}\n#tsperloader23_eight {\n\t-webkit-animation: tsperloader23_eight 2s infinite;\n\tanimation: tsperloader23_eight 2s infinite;\n\t-webkit-animation-delay: 0.9s;\n\tanimation-delay: 0.9s;\n}\n#tsperloader23_big {\n\tposition: absolute;\n\twidth: 50px;\n\theight: 50px;\n\tleft: 50px;\n\ttop: 50px;\n\t-webkit-animation: tsperloader23_big 2s infinite;\n\tanimation: tsperloader23_big 2s infinite;\n\t-webkit-animation-delay: 0.5s;\n\tanimation-delay: 0.5s;\n}\n @-webkit-keyframes tsperloader23_big {\n 50% {\n-webkit-transform: scale(0.5);\n}\n}\n @keyframes tsperloader23_big {\n 50% {\n transform: scale(0.5);\n -webkit-transform: scale(0.5);\n}\n}\n @-webkit-keyframes tsperloader23_one {\n 50% {\n-webkit-transform: translate(-65px, -65px);\n}\n}\n @keyframes tsperloader23_one {\n 50% {\n transform: translate(-65px, -65px);\n -webkit-transform: translate(-65px, -65px);\n}\n}\n @-webkit-keyframes tsperloader23_two {\n 50% {\n-webkit-transform: translate(0, -65px);\n}\n}\n @keyframes tsperloader23_two {\n 50% {\n transform: translate(0, -65px);\n -webkit-transform: translate(0, -65px);\n}\n}\n @-webkit-keyframes tsperloader23_three {\n 50% {\n-webkit-transform: translate(65px, -65px);\n}\n}\n @keyframes tsperloader23_three {\n 50% {\n transform: translate(65px, -65px);\n -webkit-transform: translate(65px, -65px);\n}\n}\n @-webkit-keyframes tsperloader23_four {\n 50% {\n-webkit-transform: translate(65px, 0);\n}\n}\n @keyframes tsperloader23_four {\n 50% {\n transform: translate(65px, 0);\n -webkit-transform: translate(65px, 0);\n}\n}\n @-webkit-keyframes tsperloader23_five {\n 50% {\n-webkit-transform: translate(65px, 65px);\n}\n}\n @keyframes tsperloader23_five {\n 50% {\n transform: translate(65px, 65px);\n -webkit-transform: translate(65px, 65px);\n}\n}\n @-webkit-keyframes tsperloader23_six {\n 50% {\n-webkit-transform: translate(0, 65px);\n}\n}\n @keyframes tsperloader23_six {\n 50% {\n transform:  translate(0, 65px);\n -webkit-transform:  translate(0, 65px);\n}\n}\n @-webkit-keyframes tsperloader23_seven {\n 50% {\n-webkit-transform: translate(-65px, 65px);\n}\n}\n @keyframes tsperloader23_seven {\n 50% {\n transform: translate(-65px, 65px);\n -webkit-transform: translate(-65px, 65px);\n}\n}\n @-webkit-keyframes tsperloader23_eight {\n 50% {\n-webkit-transform: translate(-65px, 0);\n}\n}\n @keyframes tsperloader23_eight {\n 50% {\n transform: translate(-65px, 0);\n -webkit-transform: translate(-65px, 0);\n}\n}\n\n\n\n                              /*Preloader Demo 23*/\n\n/******************************************************************************/\n/******************************************************************************/\n\n\n\n#ts-preloader-absolute24 {\n\tposition: absolute;\n\tleft: 50%;\n\ttop: 50%;\n\theight: 200px;\n\twidth: 200px;\n\tmargin-top: -100px;\n\tmargin-left: -100px;\n}\n#tsperloader24 {\n\twidth: 80px;\n\theight: 80px;\n\tbackground-color: #03a9f4;\n\t-webkit-animation: animate 1s infinite ease-in-out;\n\tanimation: animate 1s infinite ease-in-out;\n\tmargin-right: auto;\n\tmargin-left: auto;\n\tmargin-top: 60px;\n}\n@-webkit-keyframes animate {\n 0% {\n-webkit-transform: perspective(160px);\n}\n 50% {\n-webkit-transform: perspective(160px) rotateY(-180deg);\n}\n 100% {\n-webkit-transform: perspective(160px) rotateY(-180deg) rotateX(-180deg);\n}\n}\n @keyframes animate {\n 0% {\n transform: perspective(160px) rotateX(0deg) rotateY(0deg);\n -webkit-transform: perspective(160px) rotateX(0deg) rotateY(0deg);\n}\n50% {\n transform: perspective(160px) rotateX(-180deg) rotateY(0deg);\n -webkit-transform: perspective(160px) rotateX(-180deg) rotateY(0deg);\n}\n100% {\n transform: perspective(160px) rotateX(-180deg) rotateY(-180deg);\n -webkit-transform: perspective(160px) rotateX(-180deg) rotateY(-180deg);\n}\n}\n\n\n\n                              /*Preloader Demo 24*/\n\n/******************************************************************************/\n/******************************************************************************/\n\n\n\n\n#ts-preloader-absolute25 {\n\tposition: absolute;\n\tleft: 50%;\n\ttop: 60%;\n\theight: 200px;\n\twidth: 200px;\n\tmargin-top: -100px;\n\tmargin-left: -100px;\n}\n\n\n[class^=\"tsperloader_loader\"] {\n margin: 50px auto;\n width: 60px;\n height: 30px;\n}\n[class^=\"tsperloader_loader\"] > div {\n float: left;\n background: #03a9f4;\n height: 100%;\n width: 5px;\n margin-right: 1px;\n display: inline-block;\n}\n[class^=\"tsperloader_loader\"] .tsperloader25_1 {\n -webkit-animation-delay: 0.05s;\n -moz-animation-delay: 0.05s;\n -o-animation-delay: 0.05s;\n animation-delay: 0.05s;\n}\n[class^=\"tsperloader_loader\"] .tsperloader25_2 {\n -webkit-animation-delay: 0.1s;\n -moz-animation-delay: 0.1s;\n -o-animation-delay: 0.1s;\n animation-delay: 0.1s;\n}\n[class^=\"tsperloader_loader\"] .tsperloader25_3 {\n -webkit-animation-delay: 0.15s;\n -moz-animation-delay: 0.15s;\n -o-animation-delay: 0.15s;\n animation-delay: 0.15s;\n}\n[class^=\"tsperloader_loader\"] .tsperloader25_4 {\n -webkit-animation-delay: 0.2s;\n -moz-animation-delay: 0.2s;\n -o-animation-delay: 0.2s;\n animation-delay: 0.2s;\n}\n[class^=\"tsperloader_loader\"] .tsperloader25_5 {\n -webkit-animation-delay: 0.25s;\n -moz-animation-delay: 0.25s;\n -o-animation-delay: 0.25s;\n animation-delay: 0.25s;\n}\n[class^=\"tsperloader_loader\"] .tsperloader25_6 {\n -webkit-animation-delay: 0.3s;\n -moz-animation-delay: 0.3s;\n -o-animation-delay: 0.3s;\n animation-delay: 0.3s;\n}\n[class^=\"tsperloader_loader\"] .tsperloader25_7 {\n -webkit-animation-delay: 0.35s;\n -moz-animation-delay: 0.35s;\n -o-animation-delay: 0.35s;\n animation-delay: 0.35s;\n}\n[class^=\"tsperloader_loader\"] .tsperloader25_8 {\n -webkit-animation-delay: 0.4s;\n -moz-animation-delay: 0.4s;\n -o-animation-delay: 0.4s;\n animation-delay: 0.4s;\n}\n[class^=\"tsperloader_loader\"] .tsperloader25_9 {\n -webkit-animation-delay: 0.45s;\n -moz-animation-delay: 0.45s;\n -o-animation-delay: 0.45s;\n animation-delay: 0.45s;\n}\n[class^=\"tsperloader_loader\"] .tsperloader25_10 {\n -webkit-animation-delay: 0.5s;\n -moz-animation-delay: 0.5s;\n -o-animation-delay: 0.5s;\n animation-delay: 0.5s;\n}\n.tsperloader_loader > div {\n\t-webkit-animation: loading 1.5s infinite ease-in-out;\n\t-moz-animation: loading 1.5s infinite ease-in-out;\n\t-o-animation: loading 1.5s infinite ease-in-out;\n\tanimation: loading 1.5s infinite ease-in-out;\n\t-webkit-transform: scaleY(0.05) translateX(-10px);\n\t-moz-transform: scaleY(0.05) translateX(-10px);\n\t-ms-transform: scaleY(0.05) translateX(-10px);\n\t-o-transform: scaleY(0.05) translateX(-10px);\n\ttransform: scaleY(0.05) translateX(-10px);\n}\n @-webkit-keyframes loading {\n 50% {\n -webkit-transform: scaleY(1.2) translateX(10px);\n -moz-transform: scaleY(1.2) translateX(10px);\n -ms-transform: scaleY(1.2) translateX(10px);\n -o-transform: scaleY(1.2) translateX(10px);\n transform: scaleY(1.2) translateX(10px);\n background: #56D7C6;\n}\n}\n@-moz-keyframes loading {\n 50% {\n -webkit-transform: scaleY(1.2) translateX(10px);\n -moz-transform: scaleY(1.2) translateX(10px);\n -ms-transform: scaleY(1.2) translateX(10px);\n -o-transform: scaleY(1.2) translateX(10px);\n transform: scaleY(1.2) translateX(10px);\n background: #56D7C6;\n}\n}\n@-o-keyframes loading {\n 50% {\n -webkit-transform: scaleY(1.2) translateX(10px);\n -moz-transform: scaleY(1.2) translateX(10px);\n -ms-transform: scaleY(1.2) translateX(10px);\n -o-transform: scaleY(1.2) translateX(10px);\n transform: scaleY(1.2) translateX(10px);\n background: #56D7C6;\n}\n}\n@keyframes loading {\n 50% {\n -webkit-transform: scaleY(1.2) translateX(10px);\n -moz-transform: scaleY(1.2) translateX(10px);\n -ms-transform: scaleY(1.2) translateX(10px);\n -o-transform: scaleY(1.2) translateX(10px);\n transform: scaleY(1.2) translateX(10px);\n background: #56D7C6;\n}\n}\n\n\n\n\n\n                              /*Preloader Demo 25*/\n\n/******************************************************************************/\n/******************************************************************************/\n\n\n\n\n\n#ts-preloader-absolute26 {\n\tposition: absolute;\n\tleft: 50%;\n\ttop: 60%;\n\theight: 200px;\n\twidth: 200px;\n\tmargin-top: -100px;\n\tmargin-left: -100px;\n}\n.tsperloader_loader2 > div {\n\t-webkit-animation: loading2 1.5s infinite ease-in-out;\n\t-moz-animation: loading2 1.5s infinite ease-in-out;\n\t-o-animation: loading2 1.5s infinite ease-in-out;\n\tanimation: loading2 1.5s infinite ease-in-out;\n\t-webkit-transform: scaleY(0.05) translateX(-5px);\n\t-moz-transform: scaleY(0.05) translateX(-5px);\n\t-ms-transform: scaleY(0.05) translateX(-5px);\n\t-o-transform: scaleY(0.05) translateX(-5px);\n\ttransform: scaleY(0.05) translateX(-5px);\n}\n @-webkit-keyframes loading2 {\n 10% {\n background: #56D7C6;\n}\n 15% {\n -webkit-transform: scaleY(1.2) translateX(10px);\n -moz-transform: scaleY(1.2) translateX(10px);\n -ms-transform: scaleY(1.2) translateX(10px);\n -o-transform: scaleY(1.2) translateX(10px);\n transform: scaleY(1.2) translateX(10px);\n background: #56D7C6;\n}\n 90%, 100% {\n -webkit-transform: scaleY(0.05) translateX(-5px);\n -moz-transform: scaleY(0.05) translateX(-5px);\n -ms-transform: scaleY(0.05) translateX(-5px);\n -o-transform: scaleY(0.05) translateX(-5px);\n transform: scaleY(0.05) translateX(-5px);\n}\n}\n@-moz-keyframes loading2 {\n 10% {\n background: #03a9f4;\n}\n 15% {\n -webkit-transform: scaleY(1.2) translateX(10px);\n -moz-transform: scaleY(1.2) translateX(10px);\n -ms-transform: scaleY(1.2) translateX(10px);\n -o-transform: scaleY(1.2) translateX(10px);\n transform: scaleY(1.2) translateX(10px);\n background: #03a9f4;\n}\n 90%, 100% {\n -webkit-transform: scaleY(0.05) translateX(-5px);\n -moz-transform: scaleY(0.05) translateX(-5px);\n -ms-transform: scaleY(0.05) translateX(-5px);\n -o-transform: scaleY(0.05) translateX(-5px);\n transform: scaleY(0.05) translateX(-5px);\n}\n}\n@-o-keyframes loading2 {\n 10% {\n background: #03a9f4;\n}\n 15% {\n -webkit-transform: scaleY(1.2) translateX(10px);\n -moz-transform: scaleY(1.2) translateX(10px);\n -ms-transform: scaleY(1.2) translateX(10px);\n -o-transform: scaleY(1.2) translateX(10px);\n transform: scaleY(1.2) translateX(10px);\n background: #03a9f4;\n}\n 90%, 100% {\n -webkit-transform: scaleY(0.05) translateX(-5px);\n -moz-transform: scaleY(0.05) translateX(-5px);\n -ms-transform: scaleY(0.05) translateX(-5px);\n -o-transform: scaleY(0.05) translateX(-5px);\n transform: scaleY(0.05) translateX(-5px);\n}\n}\n@keyframes loading2 {\n 10% {\n background: #03a9f4;\n}\n 15% {\n -webkit-transform: scaleY(1.2) translateX(10px);\n -moz-transform: scaleY(1.2) translateX(10px);\n -ms-transform: scaleY(1.2) translateX(10px);\n -o-transform: scaleY(1.2) translateX(10px);\n transform: scaleY(1.2) translateX(10px);\n background: #03a9f4;\n}\n 90%, 100% {\n -webkit-transform: scaleY(0.05) translateX(-5px);\n -moz-transform: scaleY(0.05) translateX(-5px);\n -ms-transform: scaleY(0.05) translateX(-5px);\n -o-transform: scaleY(0.05) translateX(-5px);\n transform: scaleY(0.05) translateX(-5px);\n}\n}\n\n\n\n\n\n                              /*Preloader Demo 26*/\n\n/******************************************************************************/\n/******************************************************************************/\n\n\n\n\n\n\n\n#ts-preloader-absolute27 {\n\tposition: absolute;\n\tleft: 50%;\n\ttop: 60%;\n\theight: 200px;\n\twidth: 200px;\n\tmargin-top: -100px;\n\tmargin-left: -100px;\n}\n.tsperloader_loader3 {\n\theight: 40px;\n}\n.tsperloader_loader3 > div {\n\tposition: relative;\n\tbottom: 0;\n\tmargin-top: 35px;\n\theight: 5px;\n\t-webkit-animation: loading5 1.5s infinite ease-in-out;\n\t-moz-animation: loading5 1.5s infinite ease-in-out;\n\t-o-animation: loading5 1.5s infinite ease-in-out;\n\tanimation: loading5 1.5s infinite ease-in-out;\n}\n.tsperloader_loader3 .tsperloader26_1 {\n\t-webkit-animation-delay: -1.5s;\n\t-moz-animation-delay: -1.5s;\n\t-o-animation-delay: -1.5s;\n\tanimation-delay: -1.5s;\n}\n.tsperloader_loader3 .tsperloader26_2 {\n\t-webkit-animation-delay: -1.4s;\n\t-moz-animation-delay: -1.4s;\n\t-o-animation-delay: -1.4s;\n\tanimation-delay: -1.4s;\n}\n.tsperloader_loader3 .tsperloader26_3 {\n\t-webkit-animation-delay: -1.3s;\n\t-moz-animation-delay: -1.3s;\n\t-o-animation-delay: -1.3s;\n\tanimation-delay: -1.3s;\n}\n.tsperloader_loader3 .tsperloader26_4 {\n\t-webkit-animation-delay: -1.2s;\n\t-moz-animation-delay: -1.2s;\n\t-o-animation-delay: -1.2s;\n\tanimation-delay: -1.2s;\n}\n.tsperloader_loader3 .tsperloader26_5 {\n\t-webkit-animation-delay: -1.1s;\n\t-moz-animation-delay: -1.1s;\n\t-o-animation-delay: -1.1s;\n\tanimation-delay: -1.1s;\n}\n.tsperloader_loader3 .tsperloader26_6 {\n\t-webkit-animation-delay: -1s;\n\t-moz-animation-delay: -1s;\n\t-o-animation-delay: -1s;\n\tanimation-delay: -1s;\n}\n.tsperloader_loader3 .tsperloader26_7 {\n\t-webkit-animation-delay: -0.9s;\n\t-moz-animation-delay: -0.9s;\n\t-o-animation-delay: -0.9s;\n\tanimation-delay: -0.9s;\n}\n.tsperloader_loader3 .tsperloader26_8 {\n\t-webkit-animation-delay: -0.8s;\n\t-moz-animation-delay: -0.8s;\n\t-o-animation-delay: -0.8s;\n\tanimation-delay: -0.8s;\n}\n.tsperloader_loader3 .tsperloader26_9 {\n\t-webkit-animation-delay: -0.7s;\n\t-moz-animation-delay: -0.7s;\n\t-o-animation-delay: -0.7s;\n\tanimation-delay: -0.7s;\n}\n.tsperloader_loader3 .tsperloader26_10 {\n\t-webkit-animation-delay: -0.6s;\n\t-moz-animation-delay: -0.6s;\n\t-o-animation-delay: -0.6s;\n\tanimation-delay: -0.6s;\n}\n.tsperloader_loader3 .tsperloader26_11 {\n\t-webkit-animation-delay: -0.5s;\n\t-moz-animation-delay: -0.5s;\n\t-o-animation-delay: -0.5s;\n\tanimation-delay: -0.5s;\n}\n @-webkit-keyframes loading5 {\n 50% {\n height: 100%;\n margin-top: 0;\n background: #03a9f4;\n}\n}\n@-moz-keyframes loading5 {\n 50% {\n height: 100%;\n margin-top: 0;\n background: #03a9f4;\n}\n}\n@-o-keyframes loading5 {\n 50% {\n height: 100%;\n margin-top: 0;\n background: #03a9f4;\n}\n}\n@keyframes loading5 {\n 50% {\n height: 100%;\n margin-top: 0;\n background: #03a9f4;\n}\n}\n\n\n\n\n                              /*Preloader Demo 27*/\n\n/******************************************************************************/\n/******************************************************************************/\n\n\n\n\n\n\n#ts-preloader-absolute28 {\n\tposition: absolute;\n\tleft: 50%;\n\ttop: 60%;\n\theight: 200px;\n\twidth: 200px;\n\tmargin-top: -100px;\n\tmargin-left: -100px;\n}\n.tsperloader_loader4 .tsperloader26_1 {\n\t-webkit-animation-delay: -1.5s;\n\t-moz-animation-delay: -1.5s;\n\t-o-animation-delay: -1.5s;\n\tanimation-delay: -1.5s;\n}\n.tsperloader_loader4 .tsperloader26_2 {\n\t-webkit-animation-delay: -1.4s;\n\t-moz-animation-delay: -1.4s;\n\t-o-animation-delay: -1.4s;\n\tanimation-delay: -1.4s;\n}\n.tsperloader_loader4 .tsperloader26_3 {\n\t-webkit-animation-delay: -1.3s;\n\t-moz-animation-delay: -1.3s;\n\t-o-animation-delay: -1.3s;\n\tanimation-delay: -1.3s;\n}\n.tsperloader_loader4 .tsperloader26_4 {\n\t-webkit-animation-delay: -1.2s;\n\t-moz-animation-delay: -1.2s;\n\t-o-animation-delay: -1.2s;\n\tanimation-delay: -1.2s;\n}\n.tsperloader_loader4 .tsperloader26_5 {\n\t-webkit-animation-delay: -1.1s;\n\t-moz-animation-delay: -1.1s;\n\t-o-animation-delay: -1.1s;\n\tanimation-delay: -1.1s;\n}\n.tsperloader_loader4 .tsperloader26_6 {\n\t-webkit-animation-delay: -1s;\n\t-moz-animation-delay: -1s;\n\t-o-animation-delay: -1s;\n\tanimation-delay: -1s;\n}\n.tsperloader_loader4 .tsperloader26_7 {\n\t-webkit-animation-delay: -0.9s;\n\t-moz-animation-delay: -0.9s;\n\t-o-animation-delay: -0.9s;\n\tanimation-delay: -0.9s;\n}\n.tsperloader_loader4 .tsperloader26_8 {\n\t-webkit-animation-delay: -0.8s;\n\t-moz-animation-delay: -0.8s;\n\t-o-animation-delay: -0.8s;\n\tanimation-delay: -0.8s;\n}\n.tsperloader_loader4 .tsperloader26_9 {\n\t-webkit-animation-delay: -0.7s;\n\t-moz-animation-delay: -0.7s;\n\t-o-animation-delay: -0.7s;\n\tanimation-delay: -0.7s;\n}\n.tsperloader_loader4 .tsperloader26_10 {\n\t-webkit-animation-delay: -0.6s;\n\t-moz-animation-delay: -0.6s;\n\t-o-animation-delay: -0.6s;\n\tanimation-delay: -0.6s;\n}\n.tsperloader_loader4 .tsperloader26_11 {\n\t-webkit-animation-delay: -0.5s;\n\t-moz-animation-delay: -0.5s;\n\t-o-animation-delay: -0.5s;\n\tanimation-delay: -0.5s;\n}\n @-webkit-keyframes loading5 {\n 50% {\n height: 100%;\n margin-top: 0;\n background: #03a9f4;\n}\n}\n@-moz-keyframes loading5 {\n 50% {\n height: 100%;\n margin-top: 0;\n background: #03a9f4;\n}\n}\n@-o-keyframes loading5 {\n 50% {\n height: 100%;\n margin-top: 0;\n background: #03a9f4;\n}\n}\n@keyframes loading5 {\n 50% {\n height: 100%;\n margin-top: 0;\n background: #03a9f4;\n}\n}\n.tsperloader_loader4 {\n\theight: 40px;\n\twidth: 90px;\n\toverflow: hidden;\n}\n.tsperloader_loader4 > div {\n\twidth: 8px;\n\tposition: relative;\n\tbottom: -2px;\n\tmargin-top: 37px;\n\theight: 3px;\n\ttransform: skewY(0deg);\n\t-webkit-animation: loading6 1.5s infinite ease-in-out;\n\t-moz-animation: loading6 1.5s infinite ease-in-out;\n\t-o-animation: loading6 1.5s infinite ease-in-out;\n\tanimation: loading6 1.5s infinite ease-in-out;\n}\n @-webkit-keyframes loading6 {\n 25% {\n transform: skewY(25deg);\n}\n 50% {\n height: 100%;\n transform: skewY(0);\n margin-top: 0;\n background: #03a9f4;\n}\n 75% {\n transform: skewY(-25deg);\n}\n}\n@-moz-keyframes loading6 {\n 25% {\n transform: skewY(25deg);\n}\n 50% {\n height: 100%;\n transform: skewY(0);\n margin-top: 0;\n background: #03a9f4;\n}\n 75% {\n transform: skewY(-25deg);\n}\n}\n@-o-keyframes loading6 {\n 25% {\n transform: skewY(25deg);\n}\n 50% {\n height: 100%;\n transform: skewY(0);\n margin-top: 0;\n background: #03a9f4;\n}\n 75% {\n transform: skewY(-25deg);\n}\n}\n@keyframes loading6 {\n 25% {\n transform: skewY(25deg);\n}\n 50% {\n height: 100%;\n transform: skewY(0);\n margin-top: 0;\n background: #03a9f4;\n}\n 75% {\n transform: skewY(-25deg);\n}\n}\n\n\n\n\n\n\n\n                              /*Preloader Demo 28*/\n\n/******************************************************************************/\n/******************************************************************************/\n\n\n\n\n\n\n\n\n#ts-preloader-absolute29 {\n\tposition: absolute;\n\tleft: 50%;\n\ttop: 75%;\n\theight: 200px;\n\twidth: 200px;\n\tmargin-top: -100px;\n\tmargin-left: -100px;\n}\n#tsperloader29 span {\n\tbackground: #03a9f4 none repeat scroll 0 0;\n\tborder-radius: 0;\n\tdisplay: inline-block;\n\theight: 15px;\n\twidth: 15px;\n}\n #tsperloader29 span:nth-child(1) {\n -webkit-animation: temp 1s 0.05s infinite cubic-bezier(0.005, 0.56, 0.58, 1.59);\n animation: temp 1s 0.05s infinite cubic-bezier(0.005, 0.56, 0.58, 1.59);\n width: 7.5px;\n height: 7.5px;\n margin: 0 2px;\n}\n#tsperloader29 span:nth-child(2) {\n -webkit-animation: temp 1s 0.1s infinite cubic-bezier(0.005, 0.56, 0.58, 1.59);\n animation: temp 1s 0.1s infinite cubic-bezier(0.005, 0.56, 0.58, 1.59);\n width: 7.5px;\n height: 7.5px;\n margin: 0 2px;\n}\n#tsperloader29 span:nth-child(3) {\n -webkit-animation: temp 1s 0.15s infinite cubic-bezier(0.005, 0.56, 0.58, 1.59);\n animation: temp 1s 0.15s infinite cubic-bezier(0.005, 0.56, 0.58, 1.59);\n width: 7.5px;\n height: 7.5px;\n margin: 0 2px;\n}\n#tsperloader29 span:nth-child(4) {\n -webkit-animation: temp 1s 0.2s infinite cubic-bezier(0.005, 0.56, 0.58, 1.59);\n animation: temp 1s 0.2s infinite cubic-bezier(0.005, 0.56, 0.58, 1.59);\n width: 7.5px;\n height: 7.5px;\n margin: 0 2px;\n}\n#tsperloader29 span:nth-child(5) {\n -webkit-animation: temp 1s 0.25s infinite cubic-bezier(0.005, 0.56, 0.58, 1.59);\n animation: temp 1s 0.25s infinite cubic-bezier(0.005, 0.56, 0.58, 1.59);\n width: 7.5px;\n height: 7.5px;\n margin: 0 2px;\n}\n#tsperloader29 span:nth-child(6) {\n -webkit-animation: temp 1s 0.3s infinite cubic-bezier(0.005, 0.56, 0.58, 1.59);\n animation: temp 1s 0.3s infinite cubic-bezier(0.005, 0.56, 0.58, 1.59);\n width: 7.5px;\n height: 7.5px;\n margin: 0 2px;\n}\n#tsperloader29 span:nth-child(7) {\n -webkit-animation: temp 1s 0.35s infinite cubic-bezier(0.005, 0.56, 0.58, 1.59);\n animation: temp 1s 0.35s infinite cubic-bezier(0.005, 0.56, 0.58, 1.59);\n width: 7.5px;\n height: 7.5px;\n margin: 0 2px;\n}\n#tsperloader29 span:nth-child(8) {\n -webkit-animation: temp 1s 0.4s infinite cubic-bezier(0.005, 0.56, 0.58, 1.59);\n animation: temp 1s 0.4s infinite cubic-bezier(0.005, 0.56, 0.58, 1.59);\n width: 7.5px;\n height: 7.5px;\n margin: 0 2px;\n}\n#tsperloader29 span:nth-child(9) {\n -webkit-animation: temp 1s 0.45s infinite cubic-bezier(0.005, 0.56, 0.58, 1.59);\n animation: temp 1s 0.45s infinite cubic-bezier(0.005, 0.56, 0.58, 1.59);\n width: 7.5px;\n height: 7.5px;\n margin: 0 2px;\n}\n#tsperloader29 span:nth-child(10) {\n -webkit-animation: temp 1s 0.5s infinite cubic-bezier(0.005, 0.56, 0.58, 1.59);\n animation: temp 1s 0.5s infinite cubic-bezier(0.005, 0.56, 0.58, 1.59);\n width: 7.5px;\n height: 7.5px;\n margin: 0 2px;\n}\n#tsperloader29 span:nth-child(11) {\n -webkit-animation: temp 1s 0.55s infinite cubic-bezier(0.005, 0.56, 0.58, 1.59);\n animation: temp 1s 0.55s infinite cubic-bezier(0.005, 0.56, 0.58, 1.59);\n width: 7.5px;\n height: 7.5px;\n margin: 0 2px;\n}\n#tsperloader29 span:nth-child(12) {\n -webkit-animation: temp 1s 0.6s infinite cubic-bezier(0.005, 0.56, 0.58, 1.59);\n animation: temp 1s 0.6s infinite cubic-bezier(0.005, 0.56, 0.58, 1.59);\n width: 7.5px;\n height: 7.5px;\n margin: 0 2px;\n}\n#tsperloader29 span:nth-child(13) {\n -webkit-animation: temp 1s 0.65s infinite cubic-bezier(0.005, 0.56, 0.58, 1.59);\n animation: temp 1s 0.65s infinite cubic-bezier(0.005, 0.56, 0.58, 1.59);\n width: 7.5px;\n height: 7.5px;\n margin: 0 2px;\n}\n#tsperloader29 span:nth-child(14) {\n -webkit-animation: temp 1s 0.7s infinite cubic-bezier(0.005, 0.56, 0.58, 1.59);\n animation: temp 1s 0.7s infinite cubic-bezier(0.005, 0.56, 0.58, 1.59);\n width: 7.5px;\n height: 7.5px;\n margin: 0 2px;\n}\n#tsperloader29 span:nth-child(15) {\n -webkit-animation: temp 1s 0.75s infinite cubic-bezier(0.005, 0.56, 0.58, 1.59);\n animation: temp 1s 0.75s infinite cubic-bezier(0.005, 0.56, 0.58, 1.59);\n width: 7.5px;\n height: 7.5px;\n margin: 0 2px;\n}\n#tsperloader29 span:nth-child(16) {\n -webkit-animation: temp 1s 0.8s infinite cubic-bezier(0.005, 0.56, 0.58, 1.59);\n animation: temp 1s 0.8s infinite cubic-bezier(0.005, 0.56, 0.58, 1.59);\n width: 7.5px;\n height: 7.5px;\n margin: 0 2px;\n}\n#tsperloader29 span:nth-child(17) {\n -webkit-animation: temp 1s 0.85s infinite cubic-bezier(0.005, 0.56, 0.58, 1.59);\n animation: temp 1s 0.85s infinite cubic-bezier(0.005, 0.56, 0.58, 1.59);\n width: 7.5px;\n height: 7.5px;\n margin: 0 2px;\n}\n#tsperloader29 span:nth-child(18) {\n -webkit-animation: temp 1s 0.9s infinite cubic-bezier(0.005, 0.56, 0.58, 1.59);\n animation: temp 1s 0.9s infinite cubic-bezier(0.005, 0.56, 0.58, 1.59);\n width: 7.5px;\n height: 7.5px;\n margin: 0 2px;\n}\n#tsperloader29 span:nth-child(19) {\n -webkit-animation: temp 1s 0.95s infinite cubic-bezier(0.005, 0.56, 0.58, 1.59);\n animation: temp 1s 0.95s infinite cubic-bezier(0.005, 0.56, 0.58, 1.59);\n width: 7.5px;\n height: 7.5px;\n margin: 0 2px;\n}\n#tsperloader29 span:nth-child(20) {\n -webkit-animation: temp 1s 1s infinite cubic-bezier(0.005, 0.56, 0.58, 1.59);\n animation: temp 1s 1s infinite cubic-bezier(0.005, 0.56, 0.58, 1.59);\n width: 7.5px;\n height: 7.5px;\n margin: 0 2px;\n}\n@-webkit-keyframes scale {\n 0% {\n -webkit-transform: scale(0);\n transform: scale(0);\n}\n 25% {\n -webkit-transform: scale(0.9, 0.9);\n transform: scale(0.9, 0.9);\n background: #03a9f4;\n}\n 50% {\n -webkit-transform: scale(1, 1);\n transform: scale(1, 1);\n margin: 0 3px;\n background: #03a9f4;\n}\n 100% {\n -webkit-transform: scale(0);\n transform: scale(0);\n}\n}\n@keyframes scale {\n 0% {\n -webkit-transform: scale(0);\n transform: scale(0);\n}\n 25% {\n -webkit-transform: scale(0.9, 0.9);\n transform: scale(0.9, 0.9);\n background: #03a9f4;\n}\n 50% {\n -webkit-transform: scale(1, 1);\n transform: scale(1, 1);\n margin: 0 3px;\n background: #03a9f4;\n}\n 100% {\n -webkit-transform: scale(0);\n transform: scale(0);\n}\n}\n@-webkit-keyframes rotateY {\n 0% {\n -webkit-transform: rotateY(0deg);\n transform: rotateY(0deg);\n}\n 50% {\n -webkit-transform: rotateY(90deg);\n transform: rotateY(90deg);\n background: #03a9f4;\n}\n 100% {\n -webkit-transform: rotateY(0deg);\n transform: rotateY(0deg);\n}\n}\n@keyframes rotateY {\n 0% {\n -webkit-transform: rotateY(0deg);\n transform: rotateY(0deg);\n}\n 50% {\n -webkit-transform: rotateY(90deg);\n transform: rotateY(90deg);\n background: #03a9f4;\n}\n 100% {\n -webkit-transform: rotateY(0deg);\n transform: rotateY(0deg);\n}\n}\n@-webkit-keyframes rotateX {\n 0% {\n -webkit-transform: rotateX(0deg);\n transform: rotateX(0deg);\n}\n 50% {\n -webkit-transform: rotateX(90deg) scale(0.5, 0.5);\n transform: rotateX(90deg) scale(0.5, 0.5);\n background: #03a9f4;\n}\n 100% {\n -webkit-transform: rotateX(0deg);\n transform: rotateX(0deg);\n}\n}\n@keyframes rotateX {\n 0% {\n -webkit-transform: rotateX(0deg);\n transform: rotateX(0deg);\n}\n 50% {\n -webkit-transform: rotateX(90deg) scale(0.5, 0.5);\n transform: rotateX(90deg) scale(0.5, 0.5);\n background: #03a9f4;\n}\n 100% {\n -webkit-transform: rotateX(0deg);\n transform: rotateX(0deg);\n}\n}\n@-webkit-keyframes push {\n 0% {\n -webkit-transform: translateX(0px) scale(0.9, 0.6);\n transform: translateX(0px) scale(0.9, 0.6);\n}\n 50% {\n -webkit-transform: translateY(-20px) scale(0.7, 1.1);\n transform: translateY(-20px) scale(0.7, 1.1);\n background: #03a9f4;\n}\n 100% {\n -webkit-transform: translateX(0px) scale(0.9, 0.6);\n transform: translateX(0px) scale(0.9, 0.6);\n}\n}\n@keyframes push {\n 0% {\n -webkit-transform: translateX(0px) scale(0.9, 0.6);\n transform: translateX(0px) scale(0.9, 0.6);\n}\n 50% {\n -webkit-transform: translateY(-20px) scale(0.7, 1.1);\n transform: translateY(-20px) scale(0.7, 1.1);\n background: #03a9f4;\n}\n 100% {\n -webkit-transform: translateX(0px) scale(0.9, 0.6);\n transform: translateX(0px) scale(0.9, 0.6);\n}\n}\n@-webkit-keyframes rotateZ {\n 0% {\n -webkit-transform: rotateZ(-20deg);\n transform: rotateZ(-20deg);\n}\n 50% {\n -webkit-transform: rotateZ(20deg) scaleY(1.2);\n transform: rotateZ(20deg) scaleY(1.2);\n background: #03a9f4;\n}\n 100% {\n -webkit-transform: rotateZ(-20deg);\n transform: rotateZ(-20deg);\n}\n}\n@keyframes rotateZ {\n 0% {\n -webkit-transform: rotateZ(-20deg);\n transform: rotateZ(-20deg);\n}\n 50% {\n -webkit-transform: rotateZ(20deg) scaleY(1.2);\n transform: rotateZ(20deg) scaleY(1.2);\n background: #03a9f4;\n}\n 100% {\n -webkit-transform: rotateZ(-20deg);\n transform: rotateZ(-20deg);\n}\n}\n@-webkit-keyframes cuve {\n 0% {\n -webkit-transform: rotateY(-90deg) perspective(50px);\n transform: rotateY(-90deg) perspective(50px);\n background: #03a9f4;\n}\n 50% {\n -webkit-transform: rotateY(0deg);\n transform: rotateY(0deg);\n background: #03a9f4;\n}\n 100% {\n -webkit-transform: rotateY(90deg) perspective(50px);\n transform: rotateY(90deg) perspective(50px);\n -webkit-transform-origin: 100% 50%;\n transform-origin: 100% 50%;\n background: #03a9f4;\n}\n}\n@keyframes cuve {\n 0% {\n -webkit-transform: rotateY(-90deg) perspective(50px);\n transform: rotateY(-90deg) perspective(50px);\n background: #03a9f4;\n}\n 50% {\n -webkit-transform: rotateY(0deg);\n transform: rotateY(0deg);\n background: #03a9f4;\n}\n 100% {\n -webkit-transform: rotateY(90deg) perspective(50px);\n transform: rotateY(90deg) perspective(50px);\n -webkit-transform-origin: 100% 50%;\n transform-origin: 100% 50%;\n background: #03a9f4;\n}\n}\n@-webkit-keyframes temp {\n 50% {\n -webkit-transform: scale(1, 5);\n transform: scale(1, 5);\n background: #03a9f4;\n}\n}\n@keyframes temp {\n 50% {\n -webkit-transform: scale(1, 5);\n transform: scale(1, 5);\n background: #03a9f4;\n}\n}\n\n\n\n\n\n\n                              /*Preloader Demo 29 */\n\n/******************************************************************************/\n/******************************************************************************/\n\n\n\n\n#ts-preloader-absolute30 {\n\tposition: absolute;\n\tleft: 60%;\n\ttop: 74%;\n\theight: 200px;\n\twidth: 200px;\n\tmargin-top: -100px;\n\tmargin-left: -100px;\n}\n#absolute30 span {\n\tdisplay: inline-block;\n\theight: 15px;\n\twidth: 15px;\n\tbackground: #03a9f4;\n\tborder-radius: 0px;\n}\n #absolute30 span:nth-child(1) {\n -webkit-border-radius: 0;\n -webkit-background-clip: padding-box;\n -moz-border-radius: 0;\n -moz-background-clip: padding;\n border-radius: 0;\n background-clip: padding-box;\n border-radius: 500px;\n -webkit-animation: scale 1s 0.1s infinite cubic-bezier(0.6, -0.28, 0.735, 0.045);\n animation: scale 1s 0.1s infinite cubic-bezier(0.6, -0.28, 0.735, 0.045);\n}\n#absolute30 span:nth-child(2) {\n -webkit-border-radius: 0;\n -webkit-background-clip: padding-box;\n -moz-border-radius: 0;\n -moz-background-clip: padding;\n border-radius: 0;\n background-clip: padding-box;\n border-radius: 500px;\n -webkit-animation: scale 1s 0.2s infinite cubic-bezier(0.6, -0.28, 0.735, 0.045);\n animation: scale 1s 0.2s infinite cubic-bezier(0.6, -0.28, 0.735, 0.045);\n}\n#absolute30 span:nth-child(3) {\n -webkit-border-radius: 0;\n -webkit-background-clip: padding-box;\n -moz-border-radius: 0;\n -moz-background-clip: padding;\n border-radius: 0;\n background-clip: padding-box;\n border-radius: 500px;\n -webkit-animation: scale 1s 0.3s infinite cubic-bezier(0.6, -0.28, 0.735, 0.045);\n animation: scale 1s 0.3s infinite cubic-bezier(0.6, -0.28, 0.735, 0.045);\n}\n#absolute30 span:nth-child(4) {\n -webkit-border-radius: 0;\n -webkit-background-clip: padding-box;\n -moz-border-radius: 0;\n -moz-background-clip: padding;\n border-radius: 0;\n background-clip: padding-box;\n border-radius: 500px;\n -webkit-animation: scale 1s 0.4s infinite cubic-bezier(0.6, -0.28, 0.735, 0.045);\n animation: scale 1s 0.4s infinite cubic-bezier(0.6, -0.28, 0.735, 0.045);\n}\n#absolute30 span:nth-child(5) {\n -webkit-border-radius: 0;\n -webkit-background-clip: padding-box;\n -moz-border-radius: 0;\n -moz-background-clip: padding;\n border-radius: 0;\n background-clip: padding-box;\n border-radius: 500px;\n -webkit-animation: scale 1s 0.5s infinite cubic-bezier(0.6, -0.28, 0.735, 0.045);\n animation: scale 1s 0.5s infinite cubic-bezier(0.6, -0.28, 0.735, 0.045);\n}\n\n\n\n                              /*Preloader Demo 30*/\n\n/******************************************************************************/\n/******************************************************************************/\n\n\n\n\n#ts-preloader-absolute31 {\n\tposition: absolute;\n\tleft: 60%;\n\ttop: 74%;\n\theight: 200px;\n\twidth: 200px;\n\tmargin-top: -100px;\n\tmargin-left: -100px;\n}\n#absolute31 span {\n\tdisplay: inline-block;\n\theight: 15px;\n\twidth: 15px;\n\tbackground: #03a9f4;\n\tborder-radius: 0px;\n}\n #absolute31 span:nth-child(1) {\n -webkit-animation: rotateY 4s 0.3s infinite cubic-bezier(0.65, 0.03, 0.735, 0.045);\n animation: rotateY 4s 0.3s infinite cubic-bezier(0.65, 0.03, 0.735, 0.045);\n}\n#absolute31 span:nth-child(2) {\n -webkit-animation: rotateY 4s 0.6s infinite cubic-bezier(0.65, 0.03, 0.735, 0.045);\n animation: rotateY 4s 0.6s infinite cubic-bezier(0.65, 0.03, 0.735, 0.045);\n}\n#absolute31 span:nth-child(3) {\n -webkit-animation: rotateY 4s 0.9s infinite cubic-bezier(0.65, 0.03, 0.735, 0.045);\n animation: rotateY 4s 0.9s infinite cubic-bezier(0.65, 0.03, 0.735, 0.045);\n}\n#absolute31 span:nth-child(4) {\n -webkit-animation: rotateY 4s 1.2s infinite cubic-bezier(0.65, 0.03, 0.735, 0.045);\n animation: rotateY 4s 1.2s infinite cubic-bezier(0.65, 0.03, 0.735, 0.045);\n}\n#absolute31 span:nth-child(5) {\n -webkit-animation: rotateY 4s 1.5s infinite cubic-bezier(0.65, 0.03, 0.735, 0.045);\n animation: rotateY 4s 1.5s infinite cubic-bezier(0.65, 0.03, 0.735, 0.045);\n}\n\n\n\n\n\n\n                              /*Preloader Demo 31*/\n\n/******************************************************************************/\n/******************************************************************************/\n\n\n\n\n\n\n\n\n#ts-preloader-absolute32 {\n\tposition: absolute;\n\tleft: 60%;\n\ttop: 74%;\n\theight: 200px;\n\twidth: 200px;\n\tmargin-top: -100px;\n\tmargin-left: -100px;\n}\n#absolute32 span {\n\tdisplay: inline-block;\n\theight: 15px;\n\twidth: 15px;\n\tbackground: #03a9f4;\n\tborder-radius: 0px;\n}\n #absolute32 span:nth-child(1) {\n -webkit-animation: rotateX 2s 0.1s infinite cubic-bezier(0.65, 0.03, 0.735, 0.045);\n animation: rotateX 2s 0.1s infinite cubic-bezier(0.65, 0.03, 0.735, 0.045);\n}\n#absolute32 span:nth-child(2) {\n -webkit-animation: rotateX 2s 0.2s infinite cubic-bezier(0.65, 0.03, 0.735, 0.045);\n animation: rotateX 2s 0.2s infinite cubic-bezier(0.65, 0.03, 0.735, 0.045);\n}\n#absolute32 span:nth-child(3) {\n -webkit-animation: rotateX 2s 0.3s infinite cubic-bezier(0.65, 0.03, 0.735, 0.045);\n animation: rotateX 2s 0.3s infinite cubic-bezier(0.65, 0.03, 0.735, 0.045);\n}\n#absolute32 span:nth-child(4) {\n -webkit-animation: rotateX 2s 0.4s infinite cubic-bezier(0.65, 0.03, 0.735, 0.045);\n animation: rotateX 2s 0.4s infinite cubic-bezier(0.65, 0.03, 0.735, 0.045);\n}\n#absolute32 span:nth-child(5) {\n -webkit-animation: rotateX 2s 0.5s infinite cubic-bezier(0.65, 0.03, 0.735, 0.045);\n animation: rotateX 2s 0.5s infinite cubic-bezier(0.65, 0.03, 0.735, 0.045);\n}\n\n\n\n\n\n\n                              /*Preloader Demo 32*/\n\n/******************************************************************************/\n/******************************************************************************/\n\n\n\n\n\n\n\n\n#ts-preloader-absolute33 {\n\tposition: absolute;\n\tleft: 50%;\n\ttop: 60%;\n\theight: 200px;\n\twidth: 200px;\n\tmargin-top: -100px;\n\tmargin-left: -100px;\n}\n.clear-loading {\n\ttext-align: center;\n\tmargin: 0 auto;\n\tposition: relative;\n\t-webkit-box-sizing: border-box;\n\t-moz-box-sizing: border-box;\n\t-ms-box-sizing: border-box;\n\t-o-box-sizing: border-box;\n\tbox-sizing: border-box;\n}\n.loading-effect-33 {\n\twidth: 100px;\n\theight: 100px;\n}\n.loading-effect-33 span {\n\tdisplay: block;\n\t-webit-border-radius: 50%;\n\t-moz-border-radius: 50%;\n\t-ms-border-radius: 50%;\n\t-o-border-radius: 50%;\n\tborder-radius: 50%;\n\tborder: 4px solid #fff;\n\tposition: absolute;\n\ttop: 50%;\n\tleft: 50%;\n\t-webkit-transform: translate(-50%, -50%);\n\t-moz-transform: translate(-50%, -50%);\n\t-ms-transform: translate(-50%, -50%);\n\t-o-transform: translate(-50%, -50%);\n\ttransform: translate(-50%, -50%);\n}\n.loading-effect-33 span:first-child {\n\twidth: 100%;\n\theight: 100%;\n\tborder-color: #19be9b;\n\tborder-left-color: transparent;\n\ttop: 0;\n\tleft: 0;\n\t-webkit-animation: effect-1-1 4s infinite linear;\n\t-moz-animation: effect-1-1 4s infinite linear;\n\t-ms-animation: effect-1-1 4s infinite linear;\n\t-o-animation: effect-1-1 4s infinite linear;\n\tanimation: effect-1-1 4s infinite linear;\n}\n.loading-effect-33 span:nth-child(2) {\n width: 75%;\n height: 75%;\n border-color: #03a9f4;\n border-right-color: transparent;\n top: 12.5%;\n left: 12.5%;\n -webkit-animation: effect-1-2 3s infinite linear;\n -moz-animation: effect-1-2 3s infinite linear;\n -ms-animation: effect-1-2 3s infinite linear;\n -o-animation: effect-1-2 3s infinite linear;\n animation: effect-1-2 3s infinite linear;\n}\n.loading-effect-33 span:last-child {\n\twidth: 50%;\n\theight: 50%;\n\tborder-color: #32465f;\n\tborder-bottom-color: transparent;\n\ttop: 25%;\n\tleft: 25%;\n\t-webkit-animation: effect-1-1 4s infinite linear;\n\t-moz-animation: effect-1-1 4s infinite linear;\n\t-ms-animation: effect-1-1 4s infinite linear;\n\t-o-animation: effect-1-1 4s infinite linear;\n\tanimation: effect-1-1 4s infinite linear;\n}\n@-webkit-keyframes effect-1-1 {\n from {\n -webkit-transform: rotate(0deg);\n -moz-transform: rotate(0deg);\n -ms-transform: rotate(0deg);\n -o-transform: rotate(0deg);\n transform: rotate(0deg);\n}\nto {\n\t-webkit-transform: rotate(360deg);\n\t-moz-transform: rotate(360deg);\n\t-ms-transform: rotate(360deg);\n\t-o-transform: rotate(360deg);\n\ttransform: rotate(360deg);\n}\n}\n@keyframes effect-1-1 {\n from {\n -webkit-transform: rotate(0deg);\n -moz-transform: rotate(0deg);\n -ms-transform: rotate(0deg);\n -o-transform: rotate(0deg);\n transform: rotate(0deg);\n}\nto {\n\t-webkit-transform: rotate(360deg);\n\t-moz-transform: rotate(360deg);\n\t-ms-transform: rotate(360deg);\n\t-o-transform: rotate(360deg);\n\ttransform: rotate(360deg);\n}\n}\n@-webkit-keyframes effect-1-2 {\n from {\n -webkit-transform: rotate(0deg);\n -moz-transform: rotate(0deg);\n -ms-transform: rotate(0deg);\n -o-transform: rotate(0deg);\n transform: rotate(0deg);\n}\nto {\n\t-webkit-transform: rotate(-360deg);\n\t-moz-transform: rotate(-360deg);\n\t-ms-transform: rotate(-360deg);\n\t-o-transform: rotate(-360deg);\n\ttransform: rotate(-360deg);\n}\n}\n@keyframes effect-1-2 {\n from {\n -webkit-transform: rotate(0deg);\n -moz-transform: rotate(0deg);\n -ms-transform: rotate(0deg);\n -o-transform: rotate(0deg);\n transform: rotate(0deg);\n}\nto {\n\t-webkit-transform: rotate(-360deg);\n\t-moz-transform: rotate(-360deg);\n\t-ms-transform: rotate(-360deg);\n\t-o-transform: rotate(-360deg);\n\ttransform: rotate(-360deg);\n}\n}\n\n\n\n\n\n\n\n                              /*Preloader Demo 33*/\n\n/******************************************************************************/\n/******************************************************************************/\n\n\n\n\n\n\n\n#ts-preloader-absolute34 {\n\tposition: absolute;\n\tleft: 50%;\n\ttop: 60%;\n\theight: 200px;\n\twidth: 200px;\n\tmargin-top: -100px;\n\tmargin-left: -100px;\n}\n.loading-effect-34 {\n\twidth: 100px;\n\theight: 100px;\n}\n.loading-effect-34 > span, .loading-effect-34 > span:before, .loading-effect-34 > span:after {\n\tcontent: \"\";\n\tdisplay: block;\n\tborder-radius: 50%;\n\tborder: 2px solid #03a9f4;\n\tposition: absolute;\n\ttop: 50%;\n\tleft: 50%;\n\t-webkit-transform: translate(-50%, -50%);\n\t-moz-transform: translate(-50%, -50%);\n\t-ms-transform: translate(-50%, -50%);\n\t-o-transform: translate(-50%, -50%);\n\ttransform: translate(-50%, -50%);\n}\n.loading-effect-34 > span {\n\twidth: 100%;\n\theight: 100%;\n\ttop: 0;\n\tleft: 0;\n\tborder-left-color: transparent;\n\t-webkit-animation: effect-2 2s infinite linear;\n\t-moz-animation: effect-2 2s infinite linear;\n\t-ms-animation: effect-2 2s infinite linear;\n\t-o-animation: effect-2 2s infinite linear;\n\tanimation: effect-2 2s infinite linear;\n}\n.loading-effect-34 > span:before {\n\twidth: 75%;\n\theight: 75%;\n\tborder-right-color: transparent;\n}\n.loading-effect-34 > span:after {\n\twidth: 50%;\n\theight: 50%;\n\tborder-bottom-color: transparent;\n}\n@-webkit-keyframes effect-2 {\n from {\n -webkit-transform: rotate(0deg);\n -moz-transform: rotate(0deg);\n -ms-transform: rotate(0deg);\n -o-transform: rotate(0deg);\n transform: rotate(0deg);\n}\nto {\n\t-webkit-transform: rotate(360deg);\n\t-moz-transform: rotate(360deg);\n\t-ms-transform: rotate(360deg);\n\t-o-transform: rotate(360deg);\n\ttransform: rotate(360deg);\n}\n}\n@keyframes effect-2 {\n from {\n -webkit-transform: rotate(0deg);\n -moz-transform: rotate(0deg);\n -ms-transform: rotate(0deg);\n -o-transform: rotate(0deg);\n transform: rotate(0deg);\n}\nto {\n\t-webkit-transform: rotate(360deg);\n\t-moz-transform: rotate(360deg);\n\t-ms-transform: rotate(360deg);\n\t-o-transform: rotate(360deg);\n\ttransform: rotate(360deg);\n}\n}\n\n\n\n\n\n\n\n                              /*Preloader Demo 34*/\n\n/******************************************************************************/\n/******************************************************************************/\n\n\n\n\n\n\n\n#ts-preloader-absolute35 {\n\tposition: absolute;\n\tleft: 50%;\n\ttop: 60%;\n\theight: 200px;\n\twidth: 200px;\n\tmargin-top: -100px;\n\tmargin-left: -100px;\n}\n.loading-effect-35 {\n\twidth: 100px;\n\theight: 100px;\n}\n.loading-effect-35 > div {\n\twidth: 100%;\n\theight: 100%;\n\tborder: 1px solid #03a9f4;\n\tborder-radius: 50%;\n}\n.loading-effect-35 span {\n\tbackground: #fff;\n\tdisplay: block;\n\twidth: 15%;\n\theight: 15%;\n\tborder-radius: 50%;\n\tposition: absolute;\n\tleft: 50%;\n\t-webkit-transform: translate(-50%, 0);\n\t-moz-transform: translate(-50%, 0);\n\t-ms-transform: translate(-50%, 0);\n\t-o-transform: translate(-50%, 0);\n\ttransform: translate(-50%, 0);\n\t-webikt-transform-origin: 0 49px;\n\t-moz-transform-origin: 0 49px;\n\t-o-transform-origin: 0 49px;\n\ttransform-origin: 0 49px;\n}\n.loading-effect-35 span:first-child {\n\tbackground: #19be9b;\n\t-webkit-animation: effect-4-1 1.5s infinite linear;\n\t-moz-animation: effect-4-1 1.5s infinite linear;\n\t-ms-animation: effect-4-1 1.5s infinite linear;\n\t-o-animation: effect-4-1 1.5s infinite linear;\n\tanimation: effect-4-1 1.5s infinite linear;\n}\n.loading-effect-35 span:nth-child(2) {\n background: #03a9f4;\n -webkit-animation: effect-4-1 2s infinite linear;\n -moz-animation: effect-4-1 2s infinite linear;\n -ms-animation: effect-4-1 2s infinite linear;\n -o-animation: effect-4-1 2s infinite linear;\n animation: effect-4-1 2s infinite linear;\n}\n.loading-effect-35 span:nth-child(3) {\n background: #e64b3c;\n -webkit-animation: effect-4-1 2.5s infinite linear;\n -moz-animation: effect-4-1 2.5s infinite linear;\n -ms-animation: effect-4-1 2.5s infinite linear;\n -o-animation: effect-4-1 2.5s infinite linear;\n animation: effect-4-1 2.5s infinite linear;\n}\n.loading-effect-35 span:nth-child(4) {\n background: #32465f;\n -webkit-animation: effect-4-1 3s infinite linear;\n -moz-animation: effect-4-1 3s infinite linear;\n -ms-animation: effect-4-1 3s infinite linear;\n -o-animation: effect-4-1 3s infinite linear;\n animation: effect-4-1 3s infinite linear;\n}\n@-webkit-keyframes effect-4-1 {\n from {\n -webkit-transform: rotate(0deg);\n -moz-transform: rotate(0deg);\n -ms-transform: rotate(0deg);\n -o-transform: rotate(0deg);\n transform: rotate(0deg);\n}\nto {\n\t-webkit-transform: rotate(360deg);\n\t-moz-transform: rotate(360deg);\n\t-ms-transform: rotate(360deg);\n\t-o-transform: rotate(360deg);\n\ttransform: rotate(360deg);\n}\n}\n@keyframes effect-4-1 {\n from {\n -webkit-transform: rotate(0deg);\n -moz-transform: rotate(0deg);\n -ms-transform: rotate(0deg);\n -o-transform: rotate(0deg);\n transform: rotate(0deg);\n}\nto {\n\t-webkit-transform: rotate(360deg);\n\t-moz-transform: rotate(360deg);\n\t-ms-transform: rotate(360deg);\n\t-o-transform: rotate(360deg);\n\ttransform: rotate(360deg);\n}\n}\n\n\n\n\n\n\n\n                              /*Preloader Demo 35*/\n\n/******************************************************************************/\n/******************************************************************************/\n\n\n\n\n\n\n\n\n\n#ts-preloader-absolute36 {\n\theight: 200px;\n\tleft: 67%;\n\tmargin-left: -100px;\n\tmargin-top: -100px;\n\tposition: absolute;\n\ttop: 68%;\n\twidth: 200px;\n}\n\n\n\n@-webkit-keyframes fade {\n from {\nopacity: 1;\n}\nto {\n\topacity: 0.2;\n}\n}\n@keyframes fade {\n from {\nopacity: 1;\n}\nto {\n\topacity: 0.2;\n}\n}\n @-webkit-keyframes rotate {\n from {\n-webkit-transform: rotate(0deg);\n}\nto {\n\t-webkit-transform: rotate(360deg);\n}\n}\n@keyframes rotate {\n from {\ntransform: rotate(0deg);\n}\nto {\n\ttransform: rotate(360deg);\n}\n}\n\n\n\n@-webkit-keyframes windcatcherSpin {\n from {\n-webkit-transform: rotateY(0deg) rotateX(-20deg);\n}\nto {\n\t-webkit-transform: rotateY(360deg) rotateX(-20deg);\n}\n}\n@keyframes windcatcherSpin {\n from {\ntransform: rotateY(0deg) rotateX(-20deg);\n}\nto {\n\ttransform: rotateY(360deg) rotateX(-20deg);\n}\n}\n @-webkit-keyframes windcatcherBg {\n 0% {\nbackground-color: rgb(255, 0, 0);\n}\n 50% {\nbackground-color: rgb(150, 0, 0);\n}\n 51% {\nbackground-color: rgb(255, 100, 100);\n}\n 70% {\nbackground-color: rgb(255, 25, 25);\n}\n 100% {\nbackground-color: #03a9f4;\n}\n}\n@keyframes windcatcherBg {\n 0% {\nbackground-color: rgb(255, 0, 0);\n}\n 50% {\nbackground-color: rgb(150, 0, 0);\n}\n 51% {\nbackground-color: rgb(255, 100, 100);\n}\n 70% {\nbackground-color: rgb(255, 25, 25);\n}\n 100% {\nbackground-color: rgb(255, 0, 0);\n}\n}\n.tsspinner.windcatcher {\n\twidth: 4em;\n\tperspective: 50em;\n\t-webkit-animation: rotate 4s linear infinite;\n\tanimation: rotate 4s linear infinite;\n}\n.tsspinner.windcatcher .tsblade {\n\theight: 0.5em;\n\tbackground: red;\n\tmargin-bottom: 0.1em;\n\t-webkit-animation: windcatcherSpin 4s linear infinite, windcatcherBg 2s linear infinite;\n\tanimation: windcatcherSpin 4s linear infinite, windcatcherBg 2s linear infinite;\n}\n .tsspinner.windcatcher .tsblade:nth-child(1) {\n-webkit-animation-delay: 0s;\nanimation-delay: 0s;\n}\n.tsspinner.windcatcher .tsblade:nth-child(2) {\n-webkit-animation-delay: 0.25s;\nanimation-delay: 0.25s;\n}\n.tsspinner.windcatcher .tsblade:nth-child(3) {\n-webkit-animation-delay: 0.5s;\nanimation-delay: 0.5s;\n}\n.tsspinner.windcatcher .tsblade:nth-child(4) {\n-webkit-animation-delay: 0.75s;\nanimation-delay: 0.75s;\n}\n.tsspinner.windcatcher .tsblade:nth-child(5) {\n-webkit-animation-delay: 1s;\nanimation-delay: 1s;\n}\n.tsspinner.windcatcher .tsblade:nth-child(6) {\n-webkit-animation-delay: 1.25s;\nanimation-delay: 1.25s;\n}\n.tsspinner.windcatcher .tsblade:nth-child(7) {\n-webkit-animation-delay: 1.5s;\nanimation-delay: 1.5s;\n}\n.tsspinner.windcatcher .tsblade:nth-child(8) {\n-webkit-animation-delay: 1.75s;\nanimation-delay: 1.75s;\n}\n\n\n\n\n\n                              /*Preloader Demo 36*/\n\n/******************************************************************************/\n/******************************************************************************/\n\n\n\n\n\n\n\n#ts-preloader-absolute37 {\n\tposition: absolute;\n\tleft: 76%;\n\ttop: 74%;\n\theight: 200px;\n\twidth: 200px;\n\tmargin-top: -100px;\n\tmargin-left: -100px;\n}\n\n\n\n@-webkit-keyframes slabMove {\n 0% {\n-webkit-transform: translateY(0) rotateX(30deg);\nopacity: 0;\n}\n 10% {\n-webkit-transform: translateY(-48%);\nopacity: 1;\n}\n 90% {\n-webkit-transform: translateY(-422%);\nopacity: 0.1;\n}\n 100% {\n-webkit-transform: translateY(-480%);\nopacity: 0;\n}\n}\n@keyframes slabMove {\n 0% {\ntransform: translateY(0) rotateX(30deg);\nopacity: 0;\n}\n 10% {\ntransform: translateY(-48%);\nopacity: 1;\n}\n 90% {\ntransform: translateY(-422%);\nopacity: 0.1;\n}\n 100% {\ntransform: translateY(-480%);\nopacity: 0;\n}\n}\n.tsspinner.tsslabs {\n\twidth: 4em;\n\theight: 4em;\n\t-webkit-transform: perspective(15em) rotateX(65deg) rotateZ(-30deg);\n\ttransform: perspective(15em) rotateX(65deg) rotateZ(-30deg);\n\t-webkit-transform-style: preserve-3d;\n\ttransform-style: preserve-3d;\n}\n.tsspinner.tsslabs .tsslab {\n\tposition: absolute;\n\twidth: 4em;\n\theight: 4em;\n\tbackground: #03a9f4;\n\topacity: 0;\n\tbox-shadow: -0.08em 0.15em 0 #03a9f4;\n\t-webkit-transform-origin: 50% 0%;\n\ttransform-origin: 50% 0%;\n\t-webkit-animation: slabMove 4s linear infinite;\n\tanimation: slabMove 4s linear infinite;\n}\n .tsspinner.tsslabs .tsslab:nth-child(1) {\n-webkit-animation-delay: 0s;\nanimation-delay: 0s;\n}\n.tsspinner.tsslabs .tsslab:nth-child(2) {\n-webkit-animation-delay: 1s;\nanimation-delay: 1s;\n}\n.tsspinner.tsslabs .tsslab:nth-child(3) {\n-webkit-animation-delay: 2s;\nanimation-delay: 2s;\n}\n.tsspinner.tsslabs .tsslab:nth-child(4) {\n-webkit-animation-delay: 3s;\nanimation-delay: 3s;\n}\n\n\n\n\n\n\n\n\n                              /*Preloader Demo 37*/\n\n/******************************************************************************/\n/******************************************************************************/\n\n\n\n\n\n\n\n\n\n\n#ts-preloader-absolute38 {\n\theight: 200px;\n\tleft: 66%;\n\tmargin-left: -100px;\n\tmargin-top: -100px;\n\tposition: absolute;\n\ttop: 60%;\n\twidth: 200px;\n}\n\n@-webkit-keyframes newtonBallFirst {\n 0% {\n-webkit-transform: rotate(70deg);\n}\n 50% {\n-webkit-transform: rotate(0deg);\n}\n 100% {\n-webkit-transform: rotate(0deg);\n}\n}\n@-webkit-keyframes newtonBallMiddle {\n 0% {\n-webkit-transform: rotate(0deg);\n}\n 50% {\n-webkit-transform: rotate(0deg);\n}\n 51% {\n-webkit-transform: rotate(-0.5deg);\n}\n 52% {\n-webkit-transform: rotate(0.5deg);\n}\n 53% {\n-webkit-transform: rotate(0deg);\n}\n 100% {\n-webkit-transform: rotate(0deg);\n}\n}\n@-webkit-keyframes newtonBallLast {\n 0% {\n-webkit-transform: rotate(0deg);\n}\n 50% {\n-webkit-transform: rotate(0deg);\n}\n 100% {\n-webkit-transform: rotate(-70deg);\n}\n}\n@keyframes newtonBallFirst {\n 0% {\ntransform: rotate(70deg);\n}\n 50% {\ntransform: rotate(0deg);\n}\n 100% {\ntransform: rotate(0deg);\n}\n}\n@keyframes newtonBallMiddle {\n 0% {\ntransform: rotate(0deg);\n}\n 50% {\ntransform: rotate(0deg);\n}\n 51% {\ntransform: rotate(-0.5deg);\n}\n 52% {\ntransform: rotate(0.5deg);\n}\n 53% {\ntransform: rotate(0deg);\n}\n 100% {\ntransform: rotate(0deg);\n}\n}\n@keyframes newtonBallLast {\n 0% {\ntransform: rotate(0deg);\n}\n 50% {\ntransform: rotate(0deg);\n}\n 100% {\ntransform: rotate(-70deg);\n}\n}\n.tsspinner.newton .tsball {\n\tposition: relative;\n\tdisplay: inline-block;\n\twidth: 1em;\n\theight: 6em;\n\t-webkit-transform-origin: 50% 0%;\n\ttransform-origin: 50% 0%;\n}\n .tsspinner.newton .tsball::after {\n content: '';\n position: absolute;\n left: 0;\n bottom: 0;\n width: 1em;\n height: 1em;\n border-radius: 100%;\n background: radial-gradient(circle at 40% 40%, #03a9f4 39%, #03a9f4 42%);\n}\n .tsspinner.newton .tsball::before {\n content: '';\n position: absolute;\n width: 0.08em;\n margin-left: -0.04em;\n top: 0;\n left: 50%;\n bottom: 1em;\n background: linear-gradient(transparent, #03a9f4);\n}\n.tsspinner.newton .tsball {\n\t-webkit-animation: newtonBallMiddle 1s infinite alternate;\n\tanimation: newtonBallMiddle 1s infinite alternate;\n}\n.tsspinner.newton .tsball:first-child {\n\t-webkit-animation: newtonBallFirst 1s ease-in infinite alternate;\n\tanimation: newtonBallFirst 1s ease-in infinite alternate;\n}\n.tsspinner.newton .tsball:first-child::after {\n -webkit-animation: newtonBallLast 1s ease-out infinite alternate-reverse;\n animation: newtonBallLast 1s ease-out infinite alternate-reverse;\n}\n.tsspinner.newton .tsball:last-child {\n\t-webkit-animation: newtonBallLast 1s ease-out infinite alternate;\n\tanimation: newtonBallLast 1s ease-out infinite alternate;\n}\n.tsspinner.newton .tsball:last-child::after {\n -webkit-animation: newtonBallFirst 1s ease-in infinite alternate-reverse;\n animation: newtonBallFirst 1s ease-in infinite alternate-reverse;\n}\n\n\n\n\n\n\n                              /*Preloader Demo 38*/\n\n/******************************************************************************/\n/******************************************************************************/\n\n\n\n\n\n\n\n\n#ts-preloader-absolute39 {\n\theight: 200px;\n\tleft: 68%;\n\tmargin-left: -100px;\n\tmargin-top: -100px;\n\tposition: absolute;\n\ttop: 69%;\n\twidth: 200px;\n}\n\n\n@-webkit-keyframes clockHandRotate {\n from {\n-webkit-transform: rotate(0deg) translateY(6%);\n}\nto {\n\t-webkit-transform: rotate(360deg) translateY(6%);\n}\n}\n@keyframes clockHandRotate {\n from {\ntransform: rotate(0deg) translateY(6%);\n}\nto {\n\ttransform: rotate(360deg) translateY(6%);\n}\n}\n @-webkit-keyframes bounce {\n 0%, 20%, 50%, 80%, 100% {\n -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n -webkit-transform: translate3d(0, 0, 0);\n}\n 40% {\n -webkit-transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);\n -webkit-transform: translate3d(0, -2em, 0);\n}\n 70% {\n -webkit-transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);\n -webkit-transform: translate3d(0, -1em, 0);\n}\n 90% {\n -webkit-transform: translate3d(0, -0.25em, 0);\n}\n}\n@keyframes bounce {\n 0%, 20%, 50%, 80%, 100% {\n transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n transform: translate3d(0, 0, 0);\n}\n 40% {\n transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);\n transform: translate3d(0, -2em, 0);\n}\n 70% {\n transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);\n transform: translate3d(0, -1em, 0);\n}\n 90% {\n transform: translate3d(0, -0.25em, 0);\n}\n}\n @-webkit-keyframes clockShadowFade {\n 0%, 20%, 50%, 80%, 100% {\n -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n opacity: 1;\n}\n 40% {\n -webkit-transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);\n opacity: 0.2;\n}\n 70% {\n -webkit-transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);\n opacity: 0.4;\n}\n 90% {\n opacity: 0.8;\n}\n}\n@keyframes clockShadowFade {\n 0%, 20%, 50%, 80%, 100% {\n transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n opacity: 1;\n}\n 40% {\n transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);\n opacity: 0.2;\n}\n 70% {\n transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);\n opacity: 0.4;\n}\n 90% {\n opacity: 0.8;\n}\n}\n.tsspinner.tsclock {\n\twidth: 4em;\n\theight: 4em;\n\tposition: relative;\n}\n.tsspinner.tsclock .tsdial {\n\twidth: 100%;\n\theight: 100%;\n\tbackground: radial-gradient(circle, white, rgb(210, 210, 210));\n\tborder: 0.2em solid #03a9f4;\n\tborder-radius: 100%;\n\tbox-sizing: border-box;\n\t-webkit-animation: bounce 1.5s infinite;\n\tanimation: bounce 1.5s infinite;\n}\n.tsspinner.tsclock .tsdial .hand {\n\tposition: absolute;\n\tbottom: 2em;\n\twidth: 0.2em;\n\tleft: 50%;\n\tmargin-left: -0.1em;\n\tbackground-color: #03a9f4;\n\tborder-radius: 0 0 0.2em 0.2em;\n\t-webkit-transform-origin: 50% 100%;\n\ttransform-origin: 50% 100%;\n}\n.tsspinner.tsclock .tsdial .hour.hand {\n\theight: 1em;\n\t-webkit-animation: clockHandRotate 12s linear infinite;\n\tanimation: clockHandRotate 12s linear infinite;\n}\n.tsspinner.tsclock .tsdial .minute.hand {\n\theight: 1.5em;\n\t-webkit-animation: clockHandRotate 1s linear infinite;\n\tanimation: clockHandRotate 1s linear infinite;\n}\n.tsspinner.tsclock .tsshadow {\n\tposition: absolute;\n\tbottom: 0;\n\twidth: 100%;\n\theight: 0.5em;\n\tmargin-bottom: -0.25em;\n\tbackground: radial-gradient(#03a9f4, transparent 60%);\n\t-webkit-animation: clockShadowFade 1.5s linear infinite;\n\tanimation: clockShadowFade 1.5s linear infinite;\n}\n\n\n\n\n                              /*Preloader Demo 39*/\n\n/******************************************************************************/\n/******************************************************************************/\n\n\n\n\n#ts-preloader-absolute40 {\n\tposition: absolute;\n\tleft: 67%;\n\ttop: 74%;\n\theight: 200px;\n\twidth: 200px;\n\tmargin-top: -100px;\n\tmargin-left: -100px;\n}\n\n\n\n@-webkit-keyframes sphereSpin {\n 0% {\n-webkit-transform: rotateX(360deg) rotateY(0deg);\n}\n 100% {\n-webkit-transform: rotateX(0deg) rotateY(360deg);\n}\n}\n@keyframes sphereSpin {\n 0% {\ntransform: rotateX(360deg) rotateY(0deg);\n}\n 100% {\ntransform: rotateX(0deg) rotateY(360deg);\n}\n}\n.tsspinner.sphere {\n\twidth: 4em;\n\theight: 4em;\n\t-webkit-transform: perspective(20em) rotateX(-24deg) rotateY(20deg) rotateZ(30deg);\n\ttransform: perspective(20em) rotateX(-24deg) rotateY(20deg) rotateZ(30deg);\n\t-webkit-transform-style: preserve-3d;\n\ttransform-style: preserve-3d;\n}\n.tsspinner .tsinner {\n\twidth: 100%;\n\theight: 100%;\n\t-webkit-transform-style: preserve-3d;\n\ttransform-style: preserve-3d;\n\t-webkit-animation: sphereSpin 6s linear infinite;\n\tanimation: sphereSpin 6s linear infinite;\n}\n.tsspinner.sphere .tsdisc {\n\tposition: absolute;\n\twidth: 100%;\n\theight: 100%;\n\tborder-radius: 100%;\n\tborder: 0.3em dotted #03a9f4;\n}\n @-webkit-keyframes rotateDisc2 {\n from {\n-webkit-transform: rotateX(90deg) rotateZ(0deg);\n}\nto {\n\t-webkit-transform: rotateX(90deg) rotateZ(360deg);\n}\n}\n@keyframes rotateDisc2 {\n from {\ntransform: rotateX(90deg) rotateZ(0deg);\n}\nto {\n\ttransform: rotateX(90deg) rotateZ(360deg);\n}\n}\n @-webkit-keyframes rotateDisc3 {\n from {\n-webkit-transform: rotateY(90deg) rotateZ(0deg);\n}\nto {\n\t-webkit-transform: rotateY(90deg) rotateZ(360deg);\n}\n}\n@keyframes rotateDisc3 {\n from {\ntransform: rotateY(90deg) rotateZ(0deg);\n}\nto {\n\ttransform: rotateY(90deg) rotateZ(360deg);\n}\n}\n .tsspinner.sphere .tsdisc:nth-child(1) {\n -webkit-animation: rotate 12s linear infinite;\n animation: rotate 12s linear infinite;\n}\n.tsspinner.sphere .tsdisc:nth-child(2) {\n -webkit-animation: rotateDisc2 12s linear infinite;\n animation: rotateDisc2 12s linear infinite;\n}\n.tsspinner.sphere .tsdisc:nth-child(3) {\n -webkit-animation: rotateDisc3 12s linear infinite;\n animation: rotateDisc3 12s linear infinite;\n}\n\n\n\n\n\n                              /*Preloader Demo 40*/\n\n/******************************************************************************/\n/******************************************************************************/\n\n\n\n\n\n\n\n\n\n#ts-preloader-absolute41 {\n\theight: 200px;\n\tleft: 67%;\n\tmargin-left: -100px;\n\tmargin-top: -100px;\n\tposition: absolute;\n\ttop: 72%;\n\twidth: 200px;\n}\n\n.tsspinner.colorwheel {\n\tposition: relative;\n\tdisplay: inline-block;\n\twidth: 4em;\n\theight: 4em;\n\toverflow: hidden;\n\tborder-radius: 100%;\n\tz-index: 0;\n}\n .tsspinner.colorwheel::before, .tsspinner.colorwheel::after {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n}\n .tsspinner.colorwheel::before {\n background: linear-gradient(to right, green, yellow);\n -webkit-animation: rotate 2.5s linear infinite;\n animation: rotate 2.5s linear infinite;\n}\n .tsspinner.colorwheel::after {\n background: linear-gradient(to bottom, red, blue);\n -webkit-animation: fade 2s infinite alternate, rotate 2.5s linear reverse infinite;\n animation: fade 2s infinite alternate, rotate 2.5s linear reverse infinite;\n}\n.tsspinner .centerpiece {\n\tposition: absolute;\n\twidth: 100%;\n\theight: 100%;\n\tz-index: 1;\n\tborder-radius: 100%;\n\tbox-sizing: border-box;\n\tborder-left: 0.5em solid transparent;\n\tborder-right: 0.5em solid transparent;\n\tborder-bottom: 0.5em solid #03a9f4;\n\tborder-top: 0.5em solid #03a9f4;\n\t-webkit-animation: rotate 0.8s linear infinite;\n\tanimation: rotate 0.8s linear infinite;\n}\n\n\n\n\n                              /*Preloader Demo 41*/\n\n/******************************************************************************/\n/******************************************************************************/\n\n\n\n\n#ts-preloader-absolute42 {\n\theight: 200px;\n\tleft: 50%;\n\tmargin-left: -100px;\n\tmargin-top: -100px;\n\tposition: absolute;\n\ttop: 81%;\n\twidth: 200px;\n}\n\n\n.tsspinner.infinity {\n\t-webkit-transform: perspective(10em) rotateZ(90deg) rotateY(30deg);\n\ttransform: perspective(10em) rotateZ(90deg) rotateY(30deg);\n}\n.tsspinner.infinity .tshalf {\n\tposition: relative;\n\twidth: 4em;\n\theight: 4em;\n}\n.tsspinner.infinity .tsmarker {\n\tposition: absolute;\n\twidth: 100%;\n\theight: 100%;\n}\n @-webkit-keyframes rotateHide {\n 0% {\n-webkit-transform: rotate(0deg);\nopacity: 0;\n}\n 25% {\nopacity: 1;\n}\n 50%, 100% {\n-webkit-transform: rotate(360deg);\nopacity: 0;\n}\n}\n@keyframes rotateHide {\n 0% {\ntransform: rotate(0deg);\nopacity: 0;\n}\n 25% {\nopacity: 1;\n}\n 50%, 100% {\ntransform: rotate(360deg);\nopacity: 0;\n}\n}\n .tsspinner.infinity .tsmarker::after {\n opacity: 0;\n content: '\\2022';\n width: 100%;\n height: 100%;\n display: block;\n -webkit-animation: rotateHide 3.5s cubic-bezier(0.4, 0.1, 0.6, 0.9) infinite;\n animation: rotateHide 3.5s cubic-bezier(0.4, 0.1, 0.6, 0.9) infinite;\n}\n.tsspinner.infinity .tshalf:first-child {\n\t-webkit-transform: translateY(1em) rotateX(180deg);\n\ttransform: translateY(1em) rotateX(180deg);\n}\n .tsspinner.infinity .tshalf:first-child .tsmarker:nth-child(1)::after {\n-webkit-animation-delay: 0s;\nanimation-delay: 0s;\n}\n.tsspinner.infinity .tshalf:first-child .tsmarker:nth-child(2)::after {\n-webkit-animation-delay: 0.25s;\nanimation-delay: 0.25s;\n}\n.tsspinner.infinity .tshalf:first-child .tsmarker:nth-child(3)::after {\n-webkit-animation-delay: 0.5s;\nanimation-delay: 0.5s;\n}\n.tsspinner.infinity .tshalf:first-child .tsmarker:nth-child(4)::after {\n-webkit-animation-delay: 0.75s;\nanimation-delay: 0.75s;\n}\n.tsspinner.infinity .tshalf:first-child .tsmarker:nth-child(5)::after {\n-webkit-animation-delay: 1s;\nanimation-delay: 1s;\n}\n.tsspinner.infinity .tshalf:first-child .tsmarker:nth-child(6)::after {\n-webkit-animation-delay: 1.25s;\nanimation-delay: 1.25s;\n}\n.tsspinner.infinity .tshalf:first-child .tsmarker:nth-child(7)::after {\n-webkit-animation-delay: 1.5s;\nanimation-delay: 1.5s;\n}\n.tsspinner.infinity .tshalf:first-child .tsmarker:nth-child(8)::after {\n-webkit-animation-delay: 1.75s;\nanimation-delay: 1.75s;\n}\n .tsspinner.infinity .tshalf:last-child .tsmarker:nth-child(1)::after {\n-webkit-animation-delay: 1.75s;\nanimation-delay: 1.75s;\n}\n.tsspinner.infinity .tshalf:last-child .tsmarker:nth-child(2)::after {\n-webkit-animation-delay: 2s;\nanimation-delay: 2s;\n}\n.tsspinner.infinity .tshalf:last-child .tsmarker:nth-child(3)::after {\n-webkit-animation-delay: 2.25s;\nanimation-delay: 2.25s;\n}\n.tsspinner.infinity .tshalf:last-child .tsmarker:nth-child(4)::after {\n-webkit-animation-delay: 2.5s;\nanimation-delay: 2.5s;\n}\n.tsspinner.infinity .tshalf:last-child .tsmarker:nth-child(5)::after {\n-webkit-animation-delay: 2.75s;\nanimation-delay: 2.75s;\n}\n.tsspinner.infinity .tshalf:last-child .tsmarker:nth-child(6)::after {\n-webkit-animation-delay: 3s;\nanimation-delay: 3s;\n}\n.tsspinner.infinity .tshalf:last-child .tsmarker:nth-child(7)::after {\n-webkit-animation-delay: 3.25s;\nanimation-delay: 3.25s;\n}\n.tsspinner.infinity .tshalf:last-child .tsmarker:nth-child(8)::after {\n-webkit-animation-delay: 3.5s;\nanimation-delay: 3.5s;\n}\n\n\n\n                              /*Preloader Demo 42*/\n\n/******************************************************************************/\n/******************************************************************************/\n\n\n\n\n#ts-preloader-absolute43 {\n\theight: 200px;\n\tleft: 50%;\n\tmargin-left: -100px;\n\tmargin-top: -100px;\n\tposition: absolute;\n\ttop: 81%;\n\twidth: 200px;\n}\n.tscssload-wrap {\n\tposition: absolute;\n\tmargin: 0 auto 0;\n\tleft: 50%;\n\tmargin-left: -218px;\n\ttransform: rotateX(75deg);\n}\n.tscssload-circle {\n\tposition: absolute;\n\tfloat: left;\n\tborder: 1px solid white;\n\tanimation: bounce 1.73s infinite ease-in-out alternate;\n\t-o-animation: bounce 1.73s infinite ease-in-out alternate;\n\t-ms-animation: bounce 1.73s infinite ease-in-out alternate;\n\t-webkit-animation: bounce 1.73s infinite ease-in-out alternate;\n\t-moz-animation: bounce 1.73s infinite ease-in-out alternate;\n\tborder-radius: 100%;\n\tbackground: transparent;\n\ttop: -73px;\n\tleft: -73px;\n}\n.tscssload-circle:nth-child(1) {\n margin: 0 288px;\n width: 10px;\n height: 10px;\n animation-delay: 115ms;\n -o-animation-delay: 115ms;\n -ms-animation-delay: 115ms;\n -webkit-animation-delay: 115ms;\n -moz-animation-delay: 115ms;\n z-index: -1;\n border: 1px solid rgba(255, 43, 0, 0.7);\n}\n.tscssload-circle:nth-child(2) {\n margin: 0 283px;\n width: 19px;\n height: 19px;\n animation-delay: 230ms;\n -o-animation-delay: 230ms;\n -ms-animation-delay: 230ms;\n -webkit-animation-delay: 230ms;\n -moz-animation-delay: 230ms;\n z-index: -2;\n border: 1px solid rgba(255, 85, 0, 0.7);\n}\n.tscssload-circle:nth-child(3) {\n margin: 0 278px;\n width: 29px;\n height: 29px;\n animation-delay: 345ms;\n -o-animation-delay: 345ms;\n -ms-animation-delay: 345ms;\n -webkit-animation-delay: 345ms;\n -moz-animation-delay: 345ms;\n z-index: -3;\n border: 1px solid rgba(255, 128, 0, 0.7);\n}\n.tscssload-circle:nth-child(4) {\n margin: 0 273px;\n width: 39px;\n height: 39px;\n animation-delay: 460ms;\n -o-animation-delay: 460ms;\n -ms-animation-delay: 460ms;\n -webkit-animation-delay: 460ms;\n -moz-animation-delay: 460ms;\n z-index: -4;\n border: 1px solid rgba(255, 170, 0, 0.7);\n}\n.tscssload-circle:nth-child(5) {\n margin: 0 268px;\n width: 49px;\n height: 49px;\n animation-delay: 575ms;\n -o-animation-delay: 575ms;\n -ms-animation-delay: 575ms;\n -webkit-animation-delay: 575ms;\n -moz-animation-delay: 575ms;\n z-index: -5;\n border: 1px solid rgba(255, 213, 0, 0.7);\n}\n.tscssload-circle:nth-child(6) {\n margin: 0 263px;\n width: 58px;\n height: 58px;\n animation-delay: 690ms;\n -o-animation-delay: 690ms;\n -ms-animation-delay: 690ms;\n -webkit-animation-delay: 690ms;\n -moz-animation-delay: 690ms;\n z-index: -6;\n border: 1px solid rgba(255, 255, 0, 0.7);\n}\n.tscssload-circle:nth-child(7) {\n margin: 0 258px;\n width: 68px;\n height: 68px;\n animation-delay: 805ms;\n -o-animation-delay: 805ms;\n -ms-animation-delay: 805ms;\n -webkit-animation-delay: 805ms;\n -moz-animation-delay: 805ms;\n z-index: -7;\n border: 1px solid rgba(212, 255, 0, 0.7);\n}\n.tscssload-circle:nth-child(8) {\n margin: 0 253px;\n width: 78px;\n height: 78px;\n animation-delay: 920ms;\n -o-animation-delay: 920ms;\n -ms-animation-delay: 920ms;\n -webkit-animation-delay: 920ms;\n -moz-animation-delay: 920ms;\n z-index: -8;\n border: 1px solid rgba(170, 255, 0, 0.7);\n}\n.tscssload-circle:nth-child(9) {\n margin: 0 249px;\n width: 88px;\n height: 88px;\n animation-delay: 1035ms;\n -o-animation-delay: 1035ms;\n -ms-animation-delay: 1035ms;\n -webkit-animation-delay: 1035ms;\n -moz-animation-delay: 1035ms;\n z-index: -9;\n border: 1px solid rgba(128, 255, 0, 0.7);\n}\n.tscssload-circle:nth-child(10) {\n margin: 0 244px;\n width: 97px;\n height: 97px;\n animation-delay: 1150ms;\n -o-animation-delay: 1150ms;\n -ms-animation-delay: 1150ms;\n -webkit-animation-delay: 1150ms;\n -moz-animation-delay: 1150ms;\n z-index: -10;\n border: 1px solid rgba(85, 255, 0, 0.7);\n}\n.tscssload-circle:nth-child(11) {\n margin: 0 239px;\n width: 107px;\n height: 107px;\n animation-delay: 1265ms;\n -o-animation-delay: 1265ms;\n -ms-animation-delay: 1265ms;\n -webkit-animation-delay: 1265ms;\n -moz-animation-delay: 1265ms;\n z-index: -11;\n border: 1px solid rgba(43, 255, 0, 0.7);\n}\n.tscssload-circle:nth-child(12) {\n margin: 0 234px;\n width: 117px;\n height: 117px;\n animation-delay: 1380ms;\n -o-animation-delay: 1380ms;\n -ms-animation-delay: 1380ms;\n -webkit-animation-delay: 1380ms;\n -moz-animation-delay: 1380ms;\n z-index: -12;\n border: 1px solid rgba(0, 255, 0, 0.7);\n}\n.tscssload-circle:nth-child(13) {\n margin: 0 229px;\n width: 127px;\n height: 127px;\n animation-delay: 1495ms;\n -o-animation-delay: 1495ms;\n -ms-animation-delay: 1495ms;\n -webkit-animation-delay: 1495ms;\n -moz-animation-delay: 1495ms;\n z-index: -13;\n border: 1px solid rgba(0, 255, 43, 0.7);\n}\n.tscssload-circle:nth-child(14) {\n margin: 0 224px;\n width: 136px;\n height: 136px;\n animation-delay: 1610ms;\n -o-animation-delay: 1610ms;\n -ms-animation-delay: 1610ms;\n -webkit-animation-delay: 1610ms;\n -moz-animation-delay: 1610ms;\n z-index: -14;\n border: 1px solid rgba(0, 255, 85, 0.7);\n}\n.tscssload-circle:nth-child(15) {\n margin: 0 219px;\n width: 146px;\n height: 146px;\n animation-delay: 1725ms;\n -o-animation-delay: 1725ms;\n -ms-animation-delay: 1725ms;\n -webkit-animation-delay: 1725ms;\n -moz-animation-delay: 1725ms;\n z-index: -15;\n border: 1px solid rgba(0, 255, 128, 0.7);\n}\n.tscssload-circle:nth-child(16) {\n margin: 0 214px;\n width: 156px;\n height: 156px;\n animation-delay: 1840ms;\n -o-animation-delay: 1840ms;\n -ms-animation-delay: 1840ms;\n -webkit-animation-delay: 1840ms;\n -moz-animation-delay: 1840ms;\n z-index: -16;\n border: 1px solid rgba(0, 255, 170, 0.7);\n}\n.tscssload-circle:nth-child(17) {\n margin: 0 210px;\n width: 166px;\n height: 166px;\n animation-delay: 1955ms;\n -o-animation-delay: 1955ms;\n -ms-animation-delay: 1955ms;\n -webkit-animation-delay: 1955ms;\n -moz-animation-delay: 1955ms;\n z-index: -17;\n border: 1px solid rgba(0, 255, 213, 0.7);\n}\n.tscssload-circle:nth-child(18) {\n margin: 0 205px;\n width: 175px;\n height: 175px;\n animation-delay: 2070ms;\n -o-animation-delay: 2070ms;\n -ms-animation-delay: 2070ms;\n -webkit-animation-delay: 2070ms;\n -moz-animation-delay: 2070ms;\n z-index: -18;\n border: 1px solid rgba(0, 255, 255, 0.7);\n}\n.tscssload-circle:nth-child(19) {\n margin: 0 200px;\n width: 185px;\n height: 185px;\n animation-delay: 2185ms;\n -o-animation-delay: 2185ms;\n -ms-animation-delay: 2185ms;\n -webkit-animation-delay: 2185ms;\n -moz-animation-delay: 2185ms;\n z-index: -19;\n border: 1px solid rgba(0, 212, 255, 0.7);\n}\n.tscssload-circle:nth-child(20) {\n margin: 0 195px;\n width: 195px;\n height: 195px;\n animation-delay: 2300ms;\n -o-animation-delay: 2300ms;\n -ms-animation-delay: 2300ms;\n -webkit-animation-delay: 2300ms;\n -moz-animation-delay: 2300ms;\n z-index: -20;\n border: 1px solid rgba(0, 170, 255, 0.7);\n}\n.tscssload-circle:nth-child(21) {\n margin: 0 190px;\n width: 205px;\n height: 205px;\n animation-delay: 2415ms;\n -o-animation-delay: 2415ms;\n -ms-animation-delay: 2415ms;\n -webkit-animation-delay: 2415ms;\n -moz-animation-delay: 2415ms;\n z-index: -21;\n border: 1px solid rgba(0, 127, 255, 0.7);\n}\n.tscssload-circle:nth-child(22) {\n margin: 0 185px;\n width: 214px;\n height: 214px;\n animation-delay: 2530ms;\n -o-animation-delay: 2530ms;\n -ms-animation-delay: 2530ms;\n -webkit-animation-delay: 2530ms;\n -moz-animation-delay: 2530ms;\n z-index: -22;\n border: 1px solid rgba(0, 85, 255, 0.7);\n}\n.tscssload-circle:nth-child(23) {\n margin: 0 180px;\n width: 224px;\n height: 224px;\n animation-delay: 2645ms;\n -o-animation-delay: 2645ms;\n -ms-animation-delay: 2645ms;\n -webkit-animation-delay: 2645ms;\n -moz-animation-delay: 2645ms;\n z-index: -23;\n border: 1px solid rgba(0, 43, 255, 0.7);\n}\n.tscssload-circle:nth-child(24) {\n margin: 0 175px;\n width: 234px;\n height: 234px;\n animation-delay: 2760ms;\n -o-animation-delay: 2760ms;\n -ms-animation-delay: 2760ms;\n -webkit-animation-delay: 2760ms;\n -moz-animation-delay: 2760ms;\n z-index: -24;\n border: 1px solid rgba(0, 0, 255, 0.7);\n}\n.tscssload-circle:nth-child(25) {\n margin: 0 171px;\n width: 244px;\n height: 244px;\n animation-delay: 2875ms;\n -o-animation-delay: 2875ms;\n -ms-animation-delay: 2875ms;\n -webkit-animation-delay: 2875ms;\n -moz-animation-delay: 2875ms;\n z-index: -25;\n border: 1px solid rgba(42, 0, 255, 0.7);\n}\n.tscssload-circle:nth-child(26) {\n margin: 0 166px;\n width: 253px;\n height: 253px;\n animation-delay: 2990ms;\n -o-animation-delay: 2990ms;\n -ms-animation-delay: 2990ms;\n -webkit-animation-delay: 2990ms;\n -moz-animation-delay: 2990ms;\n z-index: -26;\n border: 1px solid rgba(85, 0, 255, 0.7);\n}\n.tscssload-circle:nth-child(27) {\n margin: 0 161px;\n width: 263px;\n height: 263px;\n animation-delay: 3105ms;\n -o-animation-delay: 3105ms;\n -ms-animation-delay: 3105ms;\n -webkit-animation-delay: 3105ms;\n -moz-animation-delay: 3105ms;\n z-index: -27;\n border: 1px solid rgba(127, 0, 255, 0.7);\n}\n.tscssload-circle:nth-child(28) {\n margin: 0 156px;\n width: 273px;\n height: 273px;\n animation-delay: 3220ms;\n -o-animation-delay: 3220ms;\n -ms-animation-delay: 3220ms;\n -webkit-animation-delay: 3220ms;\n -moz-animation-delay: 3220ms;\n z-index: -28;\n border: 1px solid rgba(170, 0, 255, 0.7);\n}\n.tscssload-circle:nth-child(29) {\n margin: 0 151px;\n width: 283px;\n height: 283px;\n animation-delay: 3335ms;\n -o-animation-delay: 3335ms;\n -ms-animation-delay: 3335ms;\n -webkit-animation-delay: 3335ms;\n -moz-animation-delay: 3335ms;\n z-index: -29;\n border: 1px solid rgba(212, 0, 255, 0.7);\n}\n.tscssload-circle:nth-child(30) {\n margin: 0 146px;\n width: 292px;\n height: 292px;\n animation-delay: 3450ms;\n -o-animation-delay: 3450ms;\n -ms-animation-delay: 3450ms;\n -webkit-animation-delay: 3450ms;\n -moz-animation-delay: 3450ms;\n z-index: -30;\n border: 1px solid rgba(255, 0, 255, 0.7);\n}\n @keyframes bounce {\n 0% {\n transform: translateY(0px);\n}\n 100% {\n transform: translateY(97px);\n}\n}\n @-o-keyframes bounce {\n 0% {\n -o-transform: translateY(0px);\n}\n 100% {\n -o-transform: translateY(97px);\n}\n}\n @-ms-keyframes bounce {\n 0% {\n -ms-transform: translateY(0px);\n}\n 100% {\n -ms-transform: translateY(97px);\n}\n}\n @-webkit-keyframes bounce {\n 0% {\n -webkit-transform: translateY(0px);\n}\n 100% {\n -webkit-transform: translateY(97px);\n}\n}\n @-moz-keyframes bounce {\n 0% {\n -moz-transform: translateY(0px);\n}\n 100% {\n -moz-transform: translateY(97px);\n}\n}\n\n\n\n\n\n                              /*Preloader Demo 43*/\n\n/******************************************************************************/\n/******************************************************************************/\n\n\n\n\n\n\n#ts-preloader-absolute44 {\n\theight: 200px;\n\tleft: 50%;\n\tmargin-left: -100px;\n\tmargin-top: -100px;\n\tposition: absolute;\n\ttop: 70%;\n\twidth: 200px;\n}\n#circularG {\n\tposition:relative;\n\twidth:58px;\n\theight:58px;\n\tmargin: auto;\n}\n.circularG {\n\tposition:absolute;\n\tbackground-color:#03a9f4;\n\twidth:14px;\n\theight:14px;\n\tborder-radius:9px;\n\t-o-border-radius:9px;\n\t-ms-border-radius:9px;\n\t-webkit-border-radius:9px;\n\t-moz-border-radius:9px;\n\tanimation-name:bounce_circularG;\n\t-o-animation-name:bounce_circularG;\n\t-ms-animation-name:bounce_circularG;\n\t-webkit-animation-name:bounce_circularG;\n\t-moz-animation-name:bounce_circularG;\n\tanimation-duration:1.1s;\n\t-o-animation-duration:1.1s;\n\t-ms-animation-duration:1.1s;\n\t-webkit-animation-duration:1.1s;\n\t-moz-animation-duration:1.1s;\n\tanimation-iteration-count:infinite;\n\t-o-animation-iteration-count:infinite;\n\t-ms-animation-iteration-count:infinite;\n\t-webkit-animation-iteration-count:infinite;\n\t-moz-animation-iteration-count:infinite;\n\tanimation-direction:normal;\n\t-o-animation-direction:normal;\n\t-ms-animation-direction:normal;\n\t-webkit-animation-direction:normal;\n\t-moz-animation-direction:normal;\n}\n#circularG_1 {\n\tleft:0;\n\ttop:23px;\n\tanimation-delay:0.41s;\n\t-o-animation-delay:0.41s;\n\t-ms-animation-delay:0.41s;\n\t-webkit-animation-delay:0.41s;\n\t-moz-animation-delay:0.41s;\n}\n#circularG_2 {\n\tleft:6px;\n\ttop:6px;\n\tanimation-delay:0.55s;\n\t-o-animation-delay:0.55s;\n\t-ms-animation-delay:0.55s;\n\t-webkit-animation-delay:0.55s;\n\t-moz-animation-delay:0.55s;\n}\n#circularG_3 {\n\ttop:0;\n\tleft:23px;\n\tanimation-delay:0.69s;\n\t-o-animation-delay:0.69s;\n\t-ms-animation-delay:0.69s;\n\t-webkit-animation-delay:0.69s;\n\t-moz-animation-delay:0.69s;\n}\n#circularG_4 {\n\tright:6px;\n\ttop:6px;\n\tanimation-delay:0.83s;\n\t-o-animation-delay:0.83s;\n\t-ms-animation-delay:0.83s;\n\t-webkit-animation-delay:0.83s;\n\t-moz-animation-delay:0.83s;\n}\n#circularG_5 {\n\tright:0;\n\ttop:23px;\n\tanimation-delay:0.97s;\n\t-o-animation-delay:0.97s;\n\t-ms-animation-delay:0.97s;\n\t-webkit-animation-delay:0.97s;\n\t-moz-animation-delay:0.97s;\n}\n#circularG_6 {\n\tright:6px;\n\tbottom:6px;\n\tanimation-delay:1.1s;\n\t-o-animation-delay:1.1s;\n\t-ms-animation-delay:1.1s;\n\t-webkit-animation-delay:1.1s;\n\t-moz-animation-delay:1.1s;\n}\n#circularG_7 {\n\tleft:23px;\n\tbottom:0;\n\tanimation-delay:1.24s;\n\t-o-animation-delay:1.24s;\n\t-ms-animation-delay:1.24s;\n\t-webkit-animation-delay:1.24s;\n\t-moz-animation-delay:1.24s;\n}\n#circularG_8 {\n\tleft:6px;\n\tbottom:6px;\n\tanimation-delay:1.38s;\n\t-o-animation-delay:1.38s;\n\t-ms-animation-delay:1.38s;\n\t-webkit-animation-delay:1.38s;\n\t-moz-animation-delay:1.38s;\n}\n @keyframes bounce_circularG {\n 0% {\n transform:scale(1);\n}\n 100% {\n transform:scale(.3);\n}\n}\n @-o-keyframes bounce_circularG {\n 0% {\n -o-transform:scale(1);\n}\n 100% {\n -o-transform:scale(.3);\n}\n}\n @-ms-keyframes bounce_circularG {\n 0% {\n -ms-transform:scale(1);\n}\n 100% {\n -ms-transform:scale(.3);\n}\n}\n @-webkit-keyframes bounce_circularG {\n 0% {\n -webkit-transform:scale(1);\n}\n 100% {\n -webkit-transform:scale(.3);\n}\n}\n @-moz-keyframes bounce_circularG {\n 0% {\n -moz-transform:scale(1);\n}\n 100% {\n -moz-transform:scale(.3);\n}\n}\n\n\n\n\n\n\n\n\n                              /*Preloader Demo 44*/\n\n/******************************************************************************/\n/******************************************************************************/\n\n\n\n\n#ts-preloader-absolute45 {\n\theight: 200px;\n\tleft: 50%;\n\tmargin-left: -100px;\n\tmargin-top: -100px;\n\tposition: absolute;\n\ttop: 70%;\n\twidth: 200px;\n}\n#fountainTextG {\n\twidth:234px;\n\tmargin:auto;\n}\n.fountainTextG {\n\tcolor:#03a9f4;\n\tfont-family:Arial;\n\tfont-size:24px;\n\ttext-decoration:none;\n\tfont-weight:normal;\n\tfont-style:normal;\n\tfloat:left;\n\tanimation-name:bounce_fountainTextG;\n\t-o-animation-name:bounce_fountainTextG;\n\t-ms-animation-name:bounce_fountainTextG;\n\t-webkit-animation-name:bounce_fountainTextG;\n\t-moz-animation-name:bounce_fountainTextG;\n\tanimation-duration:2.09s;\n\t-o-animation-duration:2.09s;\n\t-ms-animation-duration:2.09s;\n\t-webkit-animation-duration:2.09s;\n\t-moz-animation-duration:2.09s;\n\tanimation-iteration-count:infinite;\n\t-o-animation-iteration-count:infinite;\n\t-ms-animation-iteration-count:infinite;\n\t-webkit-animation-iteration-count:infinite;\n\t-moz-animation-iteration-count:infinite;\n\tanimation-direction:normal;\n\t-o-animation-direction:normal;\n\t-ms-animation-direction:normal;\n\t-webkit-animation-direction:normal;\n\t-moz-animation-direction:normal;\n\ttransform:scale(.5);\n\t-o-transform:scale(.5);\n\t-ms-transform:scale(.5);\n\t-webkit-transform:scale(.5);\n\t-moz-transform:scale(.5);\n}\n#fountainTextG_1 {\n\tanimation-delay:0.75s;\n\t-o-animation-delay:0.75s;\n\t-ms-animation-delay:0.75s;\n\t-webkit-animation-delay:0.75s;\n\t-moz-animation-delay:0.75s;\n}\n#fountainTextG_2 {\n\tanimation-delay:0.9s;\n\t-o-animation-delay:0.9s;\n\t-ms-animation-delay:0.9s;\n\t-webkit-animation-delay:0.9s;\n\t-moz-animation-delay:0.9s;\n}\n#fountainTextG_3 {\n\tanimation-delay:1.05s;\n\t-o-animation-delay:1.05s;\n\t-ms-animation-delay:1.05s;\n\t-webkit-animation-delay:1.05s;\n\t-moz-animation-delay:1.05s;\n}\n#fountainTextG_4 {\n\tanimation-delay:1.2s;\n\t-o-animation-delay:1.2s;\n\t-ms-animation-delay:1.2s;\n\t-webkit-animation-delay:1.2s;\n\t-moz-animation-delay:1.2s;\n}\n#fountainTextG_5 {\n\tanimation-delay:1.35s;\n\t-o-animation-delay:1.35s;\n\t-ms-animation-delay:1.35s;\n\t-webkit-animation-delay:1.35s;\n\t-moz-animation-delay:1.35s;\n}\n#fountainTextG_6 {\n\tanimation-delay:1.5s;\n\t-o-animation-delay:1.5s;\n\t-ms-animation-delay:1.5s;\n\t-webkit-animation-delay:1.5s;\n\t-moz-animation-delay:1.5s;\n}\n#fountainTextG_7 {\n\tanimation-delay:1.64s;\n\t-o-animation-delay:1.64s;\n\t-ms-animation-delay:1.64s;\n\t-webkit-animation-delay:1.64s;\n\t-moz-animation-delay:1.64s;\n}\n#fountainTextG_8 {\n\tanimation-delay:1.79s;\n\t-o-animation-delay:1.79s;\n\t-ms-animation-delay:1.79s;\n\t-webkit-animation-delay:1.79s;\n\t-moz-animation-delay:1.79s;\n}\n#fountainTextG_9 {\n\tanimation-delay:1.94s;\n\t-o-animation-delay:1.94s;\n\t-ms-animation-delay:1.94s;\n\t-webkit-animation-delay:1.94s;\n\t-moz-animation-delay:1.94s;\n}\n#fountainTextG_10 {\n\tanimation-delay:2.09s;\n\t-o-animation-delay:2.09s;\n\t-ms-animation-delay:2.09s;\n\t-webkit-animation-delay:2.09s;\n\t-moz-animation-delay:2.09s;\n}\n @keyframes bounce_fountainTextG {\n 0% {\n transform:scale(1);\n color:#03a9f4;\n}\n 100% {\n transform:scale(.5);\n color:#03a9f4;\n}\n}\n @-o-keyframes bounce_fountainTextG {\n 0% {\n -o-transform:scale(1);\n color:rgb(0,0,0);\n}\n 100% {\n -o-transform:scale(.5);\n color:#03a9f4;\n}\n}\n @-ms-keyframes bounce_fountainTextG {\n 0% {\n -ms-transform:scale(1);\n color:#03a9f4;\n}\n 100% {\n -ms-transform:scale(.5);\n color:#03a9f4;\n}\n}\n @-webkit-keyframes bounce_fountainTextG {\n 0% {\n -webkit-transform:scale(1);\n color:rgb(0,0,0);\n}\n 100% {\n -webkit-transform:scale(.5);\n color:rgb(255,255,255);\n}\n}\n @-moz-keyframes bounce_fountainTextG {\n 0% {\n -moz-transform:scale(1);\n color:rgb(0,0,0);\n}\n 100% {\n -moz-transform:scale(.5);\n color:rgb(255,255,255);\n}\n}\n\n\n\n\n                              /*Preloader Demo 45*/\n\n/******************************************************************************/\n/******************************************************************************/\n\n\n\n\n#ts-preloader-absolute46 {\n\theight: 200px;\n\tleft: 50%;\n\tmargin-left: -100px;\n\tmargin-top: -100px;\n\tposition: absolute;\n\ttop: 70%;\n\twidth: 200px;\n}\n.bubblingG {\n\ttext-align: center;\n\twidth:78px;\n\theight:49px;\n\tmargin: auto;\n}\n.bubblingG span {\n\tdisplay: inline-block;\n\tvertical-align: middle;\n\twidth: 10px;\n\theight: 10px;\n\tmargin: 24px auto;\n\tbackground: #03a9f4;\n\tborder-radius: 49px;\n\t-o-border-radius: 49px;\n\t-ms-border-radius: 49px;\n\t-webkit-border-radius: 49px;\n\t-moz-border-radius: 49px;\n\tanimation: bubblingG 1.5s infinite alternate;\n\t-o-animation: bubblingG 1.5s infinite alternate;\n\t-ms-animation: bubblingG 1.5s infinite alternate;\n\t-webkit-animation: bubblingG 1.5s infinite alternate;\n\t-moz-animation: bubblingG 1.5s infinite alternate;\n}\n#bubblingG_1 {\n\tanimation-delay: 0s;\n\t-o-animation-delay: 0s;\n\t-ms-animation-delay: 0s;\n\t-webkit-animation-delay: 0s;\n\t-moz-animation-delay: 0s;\n}\n#bubblingG_2 {\n\tanimation-delay: 0.45s;\n\t-o-animation-delay: 0.45s;\n\t-ms-animation-delay: 0.45s;\n\t-webkit-animation-delay: 0.45s;\n\t-moz-animation-delay: 0.45s;\n}\n#bubblingG_3 {\n\tanimation-delay: 0.9s;\n\t-o-animation-delay: 0.9s;\n\t-ms-animation-delay: 0.9s;\n\t-webkit-animation-delay: 0.9s;\n\t-moz-animation-delay: 0.9s;\n}\n @keyframes bubblingG {\n 0% {\n width: 10px;\n height: 10px;\n background-color:#03a9f4;\n transform: translateY(0);\n}\n 100% {\n width: 23px;\n height: 23px;\n background-color:#03a9f4;\n transform: translateY(-20px);\n}\n}\n @-o-keyframes bubblingG {\n 0% {\n width: 10px;\n height: 10px;\n background-color:rgb(0,0,0);\n -o-transform: translateY(0);\n}\n 100% {\n width: 23px;\n height: 23px;\n background-color:rgb(255,255,255);\n -o-transform: translateY(-20px);\n}\n}\n @-ms-keyframes bubblingG {\n 0% {\n width: 10px;\n height: 10px;\n background-color:rgb(0,0,0);\n -ms-transform: translateY(0);\n}\n 100% {\n width: 23px;\n height: 23px;\n background-color:rgb(255,255,255);\n -ms-transform: translateY(-20px);\n}\n}\n @-webkit-keyframes bubblingG {\n 0% {\n width: 10px;\n height: 10px;\n background-color:rgb(0,0,0);\n -webkit-transform: translateY(0);\n}\n 100% {\n width: 23px;\n height: 23px;\n background-color:rgb(255,255,255);\n -webkit-transform: translateY(-20px);\n}\n}\n @-moz-keyframes bubblingG {\n 0% {\n width: 10px;\n height: 10px;\n background-color:rgb(0,0,0);\n -moz-transform: translateY(0);\n}\n 100% {\n width: 23px;\n height: 23px;\n background-color:rgb(255,255,255);\n -moz-transform: translateY(-20px);\n}\n}\n\n\n\n                              /*Preloader Demo 46*/\n\n/******************************************************************************/\n/******************************************************************************/\n\n\n\n\n#ts-preloader-absolute47 {\n\theight: 200px;\n\tleft: 50%;\n\tmargin-left: -100px;\n\tmargin-top: -100px;\n\tposition: absolute;\n\ttop: 70%;\n\twidth: 200px;\n}\n#fountainG {\n\tposition:relative;\n\twidth:234px;\n\theight:28px;\n\tmargin:auto;\n}\n.fountainG {\n\tposition:absolute;\n\ttop:0;\n\tbackground-color:#03a9f4;\n\twidth:28px;\n\theight:28px;\n\tanimation-name:bounce_fountainG;\n\t-o-animation-name:bounce_fountainG;\n\t-ms-animation-name:bounce_fountainG;\n\t-webkit-animation-name:bounce_fountainG;\n\t-moz-animation-name:bounce_fountainG;\n\tanimation-duration:1.5s;\n\t-o-animation-duration:1.5s;\n\t-ms-animation-duration:1.5s;\n\t-webkit-animation-duration:1.5s;\n\t-moz-animation-duration:1.5s;\n\tanimation-iteration-count:infinite;\n\t-o-animation-iteration-count:infinite;\n\t-ms-animation-iteration-count:infinite;\n\t-webkit-animation-iteration-count:infinite;\n\t-moz-animation-iteration-count:infinite;\n\tanimation-direction:normal;\n\t-o-animation-direction:normal;\n\t-ms-animation-direction:normal;\n\t-webkit-animation-direction:normal;\n\t-moz-animation-direction:normal;\n\ttransform:scale(.3);\n\t-o-transform:scale(.3);\n\t-ms-transform:scale(.3);\n\t-webkit-transform:scale(.3);\n\t-moz-transform:scale(.3);\n\tborder-radius:19px;\n\t-o-border-radius:19px;\n\t-ms-border-radius:19px;\n\t-webkit-border-radius:19px;\n\t-moz-border-radius:19px;\n}\n#fountainG_1 {\n\tleft:0;\n\tanimation-delay:0.6s;\n\t-o-animation-delay:0.6s;\n\t-ms-animation-delay:0.6s;\n\t-webkit-animation-delay:0.6s;\n\t-moz-animation-delay:0.6s;\n}\n#fountainG_2 {\n\tleft:29px;\n\tanimation-delay:0.75s;\n\t-o-animation-delay:0.75s;\n\t-ms-animation-delay:0.75s;\n\t-webkit-animation-delay:0.75s;\n\t-moz-animation-delay:0.75s;\n}\n#fountainG_3 {\n\tleft:58px;\n\tanimation-delay:0.9s;\n\t-o-animation-delay:0.9s;\n\t-ms-animation-delay:0.9s;\n\t-webkit-animation-delay:0.9s;\n\t-moz-animation-delay:0.9s;\n}\n#fountainG_4 {\n\tleft:88px;\n\tanimation-delay:1.05s;\n\t-o-animation-delay:1.05s;\n\t-ms-animation-delay:1.05s;\n\t-webkit-animation-delay:1.05s;\n\t-moz-animation-delay:1.05s;\n}\n#fountainG_5 {\n\tleft:117px;\n\tanimation-delay:1.2s;\n\t-o-animation-delay:1.2s;\n\t-ms-animation-delay:1.2s;\n\t-webkit-animation-delay:1.2s;\n\t-moz-animation-delay:1.2s;\n}\n#fountainG_6 {\n\tleft:146px;\n\tanimation-delay:1.35s;\n\t-o-animation-delay:1.35s;\n\t-ms-animation-delay:1.35s;\n\t-webkit-animation-delay:1.35s;\n\t-moz-animation-delay:1.35s;\n}\n#fountainG_7 {\n\tleft:175px;\n\tanimation-delay:1.5s;\n\t-o-animation-delay:1.5s;\n\t-ms-animation-delay:1.5s;\n\t-webkit-animation-delay:1.5s;\n\t-moz-animation-delay:1.5s;\n}\n#fountainG_8 {\n\tleft:205px;\n\tanimation-delay:1.64s;\n\t-o-animation-delay:1.64s;\n\t-ms-animation-delay:1.64s;\n\t-webkit-animation-delay:1.64s;\n\t-moz-animation-delay:1.64s;\n}\n @keyframes bounce_fountainG {\n 0% {\n transform:scale(1);\n background-color:#03a9f4;\n}\n 100% {\n transform:scale(.3);\n background-color:#03a9f4;\n}\n}\n @-o-keyframes bounce_fountainG {\n 0% {\n -o-transform:scale(1);\n background-color:rgb(0,0,0);\n}\n 100% {\n -o-transform:scale(.3);\n background-color:rgb(255,255,255);\n}\n}\n @-ms-keyframes bounce_fountainG {\n 0% {\n -ms-transform:scale(1);\n background-color:rgb(0,0,0);\n}\n 100% {\n -ms-transform:scale(.3);\n background-color:rgb(255,255,255);\n}\n}\n @-webkit-keyframes bounce_fountainG {\n 0% {\n -webkit-transform:scale(1);\n background-color:rgb(0,0,0);\n}\n 100% {\n -webkit-transform:scale(.3);\n background-color:rgb(255,255,255);\n}\n}\n @-moz-keyframes bounce_fountainG {\n 0% {\n -moz-transform:scale(1);\n background-color:rgb(0,0,0);\n}\n 100% {\n -moz-transform:scale(.3);\n background-color:rgb(255,255,255);\n}\n}\n\n\n\n                              /*Preloader Demo 47*/\n\n/******************************************************************************/\n/******************************************************************************/\n\n\n\n\n\n#ts-preloader-absolute48 {\n\theight: 200px;\n\tleft: 50%;\n\tmargin-left: -100px;\n\tmargin-top: -100px;\n\tposition: absolute;\n\ttop: 70%;\n\twidth: 200px;\n}\n.tscssload-main {\n\tposition: absolute;\n\tcontent: '';\n\tleft: 50%;\n\ttransform: translate(-100%, -240%);\n\t-o-transform: translate(-100%, -240%);\n\t-ms-transform: translate(-100%, -240%);\n\t-webkit-transform: translate(-100%, -240%);\n\t-moz-transform: translate(-100%, -240%);\n}\n.tscssload-main * {\n\tfont-size:62px;\n}\n.tscssload-heart {\n\tanimation: cssload-heart 2.88s cubic-bezier(0.75, 0, 0.5, 1) infinite normal;\n\t-o-animation: cssload-heart 2.88s cubic-bezier(0.75, 0, 0.5, 1) infinite normal;\n\t-ms-animation: cssload-heart 2.88s cubic-bezier(0.75, 0, 0.5, 1) infinite normal;\n\t-webkit-animation: cssload-heart 2.88s cubic-bezier(0.75, 0, 0.5, 1) infinite normal;\n\t-moz-animation: cssload-heart 2.88s cubic-bezier(0.75, 0, 0.5, 1) infinite normal;\n\ttop: 50%;\n\tcontent: '';\n\tleft: 50%;\n\tposition: absolute;\n}\n.tscssload-heartL {\n\twidth: 1em;\n\theight: 1em;\n\tborder: 1px solid rgb(63,193,242);\n\tbackground-color: rgb(63,193,242);\n\tcontent: '';\n\tposition: absolute;\n\tdisplay: block;\n\tborder-radius: 100%;\n\tanimation: cssload-heartL 2.88s cubic-bezier(0.75, 0, 0.5, 1) infinite normal;\n\t-o-animation: cssload-heartL 2.88s cubic-bezier(0.75, 0, 0.5, 1) infinite normal;\n\t-ms-animation: cssload-heartL 2.88s cubic-bezier(0.75, 0, 0.5, 1) infinite normal;\n\t-webkit-animation: cssload-heartL 2.88s cubic-bezier(0.75, 0, 0.5, 1) infinite normal;\n\t-moz-animation: cssload-heartL 2.88s cubic-bezier(0.75, 0, 0.5, 1) infinite normal;\n\ttransform: translate(-28px, -27px);\n\t-o-transform: translate(-28px, -27px);\n\t-ms-transform: translate(-28px, -27px);\n\t-webkit-transform: translate(-28px, -27px);\n\t-moz-transform: translate(-28px, -27px);\n}\n.tscssload-heartR {\n\twidth: 1em;\n\theight: 1em;\n\tborder: 1px solid rgb(63,193,242);\n\tbackground-color: rgb(63,193,242);\n\tcontent: '';\n\tposition: absolute;\n\tdisplay: block;\n\tborder-radius: 100%;\n\ttransform: translate(28px, -27px);\n\t-o-transform: translate(28px, -27px);\n\t-ms-transform: translate(28px, -27px);\n\t-webkit-transform: translate(28px, -27px);\n\t-moz-transform: translate(28px, -27px);\n\tanimation: cssload-heartR 2.88s cubic-bezier(0.75, 0, 0.5, 1) infinite normal;\n\t-o-animation: cssload-heartR 2.88s cubic-bezier(0.75, 0, 0.5, 1) infinite normal;\n\t-ms-animation: cssload-heartR 2.88s cubic-bezier(0.75, 0, 0.5, 1) infinite normal;\n\t-webkit-animation: cssload-heartR 2.88s cubic-bezier(0.75, 0, 0.5, 1) infinite normal;\n\t-moz-animation: cssload-heartR 2.88s cubic-bezier(0.75, 0, 0.5, 1) infinite normal;\n}\n.tscssload-square {\n\twidth: 1em;\n\theight: 1em;\n\tborder: 1px solid rgb(63,193,242);\n\tbackground-color: rgb(63,193,242);\n\tposition: relative;\n\tdisplay: block;\n\tcontent: '';\n\ttransform: scale(1) rotate(-45deg);\n\t-o-transform: scale(1) rotate(-45deg);\n\t-ms-transform: scale(1) rotate(-45deg);\n\t-webkit-transform: scale(1) rotate(-45deg);\n\t-moz-transform: scale(1) rotate(-45deg);\n\tanimation: cssload-square 2.88s cubic-bezier(0.75, 0, 0.5, 1) infinite normal;\n\t-o-animation: cssload-square 2.88s cubic-bezier(0.75, 0, 0.5, 1) infinite normal;\n\t-ms-animation: cssload-square 2.88s cubic-bezier(0.75, 0, 0.5, 1) infinite normal;\n\t-webkit-animation: cssload-square 2.88s cubic-bezier(0.75, 0, 0.5, 1) infinite normal;\n\t-moz-animation: cssload-square 2.88s cubic-bezier(0.75, 0, 0.5, 1) infinite normal;\n}\n.tscssload-shadow {\n\ttop: 97px;\n\tleft: 50%;\n\tcontent: '';\n\tposition: relative;\n\tdisplay: block;\n\tbottom: -.5em;\n\twidth: 1em;\n\theight: .24em;\n\tbackground-color: rgb(215,215,215);\n\tborder: 1px solid rgb(215,215,215);\n\tborder-radius: 50%;\n\tanimation: cssload-shadow 2.88s cubic-bezier(0.75, 0, 0.5, 1) infinite normal;\n\t-o-animation: cssload-shadow 2.88s cubic-bezier(0.75, 0, 0.5, 1) infinite normal;\n\t-ms-animation: cssload-shadow 2.88s cubic-bezier(0.75, 0, 0.5, 1) infinite normal;\n\t-webkit-animation: cssload-shadow 2.88s cubic-bezier(0.75, 0, 0.5, 1) infinite normal;\n\t-moz-animation: cssload-shadow 2.88s cubic-bezier(0.75, 0, 0.5, 1) infinite normal;\n}\n @keyframes cssload-square {\n 50% {\n border-radius: 100%;\n transform: scale(0.5) rotate(-45deg);\n}\n 100% {\n transform: scale(1) rotate(-45deg);\n}\n}\n @-o-keyframes cssload-square {\n 50% {\n border-radius: 100%;\n -o-transform: scale(0.5) rotate(-45deg);\n}\n 100% {\n -o-transform: scale(1) rotate(-45deg);\n}\n}\n @-ms-keyframes cssload-square {\n 50% {\n border-radius: 100%;\n -ms-transform: scale(0.5) rotate(-45deg);\n}\n 100% {\n -ms-transform: scale(1) rotate(-45deg);\n}\n}\n @-webkit-keyframes cssload-square {\n 50% {\n border-radius: 100%;\n -webkit-transform: scale(0.5) rotate(-45deg);\n}\n 100% {\n -webkit-transform: scale(1) rotate(-45deg);\n}\n}\n @-moz-keyframes cssload-square {\n 50% {\n border-radius: 100%;\n -moz-transform: scale(0.5) rotate(-45deg);\n}\n 100% {\n -moz-transform: scale(1) rotate(-45deg);\n}\n}\n @keyframes cssload-heart {\n 50% {\n transform: rotate(360deg);\n}\n 100% {\n transform: rotate(720deg);\n}\n}\n @-o-keyframes cssload-heart {\n 50% {\n -o-transform: rotate(360deg);\n}\n 100% {\n -o-transform: rotate(720deg);\n}\n}\n @-ms-keyframes cssload-heart {\n 50% {\n -ms-transform: rotate(360deg);\n}\n 100% {\n -ms-transform: rotate(720deg);\n}\n}\n @-webkit-keyframes cssload-heart {\n 50% {\n -webkit-transform: rotate(360deg);\n}\n 100% {\n -webkit-transform: rotate(720deg);\n}\n}\n @-moz-keyframes cssload-heart {\n 50% {\n -moz-transform: rotate(360deg);\n}\n 100% {\n -moz-transform: rotate(720deg);\n}\n}\n @keyframes cssload-heartL {\n 60% {\n transform: scale(0.4);\n}\n}\n @-o-keyframes cssload-heartL {\n 60% {\n -o-transform: scale(0.4);\n}\n}\n @-ms-keyframes cssload-heartL {\n 60% {\n -ms-transform: scale(0.4);\n}\n}\n @-webkit-keyframes cssload-heartL {\n 60% {\n -webkit-transform: scale(0.4);\n}\n}\n @-moz-keyframes cssload-heartL {\n 60% {\n -moz-transform: scale(0.4);\n}\n}\n @keyframes cssload-heartR {\n 40% {\n transform: scale(0.4);\n}\n}\n @-o-keyframes cssload-heartR {\n 40% {\n -o-transform: scale(0.4);\n}\n}\n @-ms-keyframes cssload-heartR {\n 40% {\n -ms-transform: scale(0.4);\n}\n}\n @-webkit-keyframes cssload-heartR {\n 40% {\n -webkit-transform: scale(0.4);\n}\n}\n @-moz-keyframes cssload-heartR {\n 40% {\n -moz-transform: scale(0.4);\n}\n}\n @keyframes cssload-shadow {\n 50% {\n transform: scale(0.5);\n border-color: rgb(228,228,228);\n}\n}\n @-o-keyframes cssload-shadow {\n 50% {\n -o-transform: scale(0.5);\n border-color: rgb(228,228,228);\n}\n}\n @-ms-keyframes cssload-shadow {\n 50% {\n -ms-transform: scale(0.5);\n border-color: rgb(228,228,228);\n}\n}\n @-webkit-keyframes cssload-shadow {\n 50% {\n -webkit-transform: scale(0.5);\n border-color: rgb(228,228,228);\n}\n}\n @-moz-keyframes cssload-shadow {\n 50% {\n -moz-transform: scale(0.5);\n border-color: rgb(228,228,228);\n}\n}\n\n\n\n                              /*Preloader Demo 48*/\n\n/******************************************************************************/\n/******************************************************************************/\n\n\n\n\n#ts-preloader-absolute49 {\n\theight: 200px;\n\tleft: 50%;\n\tmargin-left: -100px;\n\tmargin-top: -100px;\n\tposition: absolute;\n\ttop: 55%;\n\twidth: 200px;\n}\n.tscssload-container {\n\twidth: 72px;\n\tmargin: 58px auto;\n\tfont-size: 0;\n\tposition: relative;\n\ttransform-origin: 50% 50%;\n\t-o-transform-origin: 50% 50%;\n\t-ms-transform-origin: 50% 50%;\n\t-webkit-transform-origin: 50% 50%;\n\t-moz-transform-origin: 50% 50%;\n\tanimation: cssload-clockwise 6.9s linear infinite;\n\t-o-animation: cssload-clockwise 6.9s linear infinite;\n\t-ms-animation: cssload-clockwise 6.9s linear infinite;\n\t-webkit-animation: cssload-clockwise 6.9s linear infinite;\n\t-moz-animation: cssload-clockwise 6.9s linear infinite;\n}\n.tscssload-container:before {\n\tposition: absolute;\n\tcontent: '';\n\ttop: 0;\n\tleft: 0;\n\twidth: 39px;\n\theight: 39px;\n\tborder: 6px solid rgb(229,229,229);\n\tborder-radius: 100%;\n\t-o-border-radius: 100%;\n\t-ms-border-radius: 100%;\n\t-webkit-border-radius: 100%;\n\t-moz-border-radius: 100%;\n\tbox-sizing: border-box;\n\t-o-box-sizing: border-box;\n\t-ms-box-sizing: border-box;\n\t-webkit-box-sizing: border-box;\n\t-moz-box-sizing: border-box;\n}\n.tscssload-container:after {\n\tposition: absolute;\n\tcontent: '';\n\tz-index: -1;\n\ttop: 0;\n\tright: 0;\n\twidth: 39px;\n\theight: 39px;\n\tborder: 6px solid rgb(229,229,229);\n\tborder-radius: 100%;\n\t-o-border-radius: 100%;\n\t-ms-border-radius: 100%;\n\t-webkit-border-radius: 100%;\n\t-moz-border-radius: 100%;\n\tbox-sizing: border-box;\n\t-o-box-sizing: border-box;\n\t-ms-box-sizing: border-box;\n\t-webkit-box-sizing: border-box;\n\t-moz-box-sizing: border-box;\n}\n.tscssload-lt, .tscssload-rt, .tscssload-lb, .tscssload-rb {\n\tposition: relative;\n\tdisplay: inline-block;\n\toverflow: hidden;\n\twidth: 39px;\n\theight: 19px;\n\topacity: 1;\n}\n.tscssload-lt:before, .tscssload-rt:before, .tscssload-lb:before, .tscssload-rb:before {\n\tposition: absolute;\n\tcontent: '';\n\twidth: 39px;\n\theight: 39px;\n\tborder-top: 6px solid #03a9f4;\n\tborder-right: 6px solid transparent;\n\tborder-bottom: 6px solid transparent;\n\tborder-left: 6px solid transparent;\n\tborder-radius: 100%;\n\t-o-border-radius: 100%;\n\t-ms-border-radius: 100%;\n\t-webkit-border-radius: 100%;\n\t-moz-border-radius: 100%;\n\tbox-sizing: border-box;\n\t-o-box-sizing: border-box;\n\t-ms-box-sizing: border-box;\n\t-webkit-box-sizing: border-box;\n\t-moz-box-sizing: border-box;\n\t-moz-box-sizing: border-box;\n}\n.tscssload-lt {\n\tmargin-right: -6px;\n\tanimation: cssload-lt 2.3s linear -2300ms infinite;\n\t-o-animation: cssload-lt 2.3s linear -2300ms infinite;\n\t-ms-animation: cssload-lt 2.3s linear -2300ms infinite;\n\t-webkit-animation: cssload-lt 2.3s linear -2300ms infinite;\n\t-moz-animation: cssload-lt 2.3s linear -2300ms infinite;\n}\n.tscssload-lt:before {\n\ttop: 0;\n\tleft: 0;\n\tanimation: cssload-not-clockwise 1.15s linear infinite;\n\t-o-animation: cssload-not-clockwise 1.15s linear infinite;\n\t-ms-animation: cssload-not-clockwise 1.15s linear infinite;\n\t-webkit-animation: cssload-not-clockwise 1.15s linear infinite;\n\t-moz-animation: cssload-not-clockwise 1.15s linear infinite;\n}\n.tscssload-rt {\n\tanimation: cssload-lt 2.3s linear -1150ms infinite;\n\t-o-animation: cssload-lt 2.3s linear -1150ms infinite;\n\t-ms-animation: cssload-lt 2.3s linear -1150ms infinite;\n\t-webkit-animation: cssload-lt 2.3s linear -1150ms infinite;\n\t-moz-animation: cssload-lt 2.3s linear -1150ms infinite;\n}\n.tscssload-rt:before {\n\ttop: 0;\n\tright: 0;\n\tanimation: cssload-clockwise 1.15s linear infinite;\n\t-o-animation: cssload-clockwise 1.15s linear infinite;\n\t-ms-animation: cssload-clockwise 1.15s linear infinite;\n\t-webkit-animation: cssload-clockwise 1.15s linear infinite;\n\t-moz-animation: cssload-clockwise 1.15s linear infinite;\n}\n.tscssload-lb {\n\tmargin-right: -6px;\n\tanimation: cssload-lt 2.3s linear -1725ms infinite;\n\t-o-animation: cssload-lt 2.3s linear -1725ms infinite;\n\t-ms-animation: cssload-lt 2.3s linear -1725ms infinite;\n\t-webkit-animation: cssload-lt 2.3s linear -1725ms infinite;\n\t-moz-animation: cssload-lt 2.3s linear -1725ms infinite;\n}\n.tscssload-lb:before {\n\tbottom: 0;\n\tleft: 0;\n\tanimation: cssload-not-clockwise 1.15s linear infinite;\n\t-o-animation: cssload-not-clockwise 1.15s linear infinite;\n\t-ms-animation: cssload-not-clockwise 1.15s linear infinite;\n\t-webkit-animation: cssload-not-clockwise 1.15s linear infinite;\n\t-moz-animation: cssload-not-clockwise 1.15s linear infinite;\n}\n.tscssload-rb {\n\tanimation: cssload-lt 2.3s linear -575ms infinite;\n\t-o-animation: cssload-lt 2.3s linear -575ms infinite;\n\t-ms-animation: cssload-lt 2.3s linear -575ms infinite;\n\t-webkit-animation: cssload-lt 2.3s linear -575ms infinite;\n\t-moz-animation: cssload-lt 2.3s linear -575ms infinite;\n}\n.tscssload-rb:before {\n\tbottom: 0;\n\tright: 0;\n\tanimation: cssload-clockwise 1.15s linear infinite;\n\t-o-animation: cssload-clockwise 1.15s linear infinite;\n\t-ms-animation: cssload-clockwise 1.15s linear infinite;\n\t-webkit-animation: cssload-clockwise 1.15s linear infinite;\n\t-moz-animation: cssload-clockwise 1.15s linear infinite;\n}\n @keyframes cssload-clockwise {\n 0% {\n transform: rotate(-45deg);\n}\n 100% {\n transform: rotate(315deg);\n}\n}\n @-o-keyframes cssload-clockwise {\n 0% {\n -o-transform: rotate(-45deg);\n}\n 100% {\n -o-transform: rotate(315deg);\n}\n}\n @-ms-keyframes cssload-clockwise {\n 0% {\n -ms-transform: rotate(-45deg);\n}\n 100% {\n -ms-transform: rotate(315deg);\n}\n}\n @-webkit-keyframes cssload-clockwise {\n 0% {\n -webkit-transform: rotate(-45deg);\n}\n 100% {\n -webkit-transform: rotate(315deg);\n}\n}\n @-moz-keyframes cssload-clockwise {\n 0% {\n -moz-transform: rotate(-45deg);\n}\n 100% {\n -moz-transform: rotate(315deg);\n}\n}\n @keyframes cssload-not-clockwise {\n 0% {\n transform: rotate(45deg);\n}\n 100% {\n transform: rotate(-315deg);\n}\n}\n @-o-keyframes cssload-not-clockwise {\n 0% {\n -o-transform: rotate(45deg);\n}\n 100% {\n -o-transform: rotate(-315deg);\n}\n}\n @-ms-keyframes cssload-not-clockwise {\n 0% {\n -ms-transform: rotate(45deg);\n}\n 100% {\n -ms-transform: rotate(-315deg);\n}\n}\n @-webkit-keyframes cssload-not-clockwise {\n 0% {\n -webkit-transform: rotate(45deg);\n}\n 100% {\n -webkit-transform: rotate(-315deg);\n}\n}\n @-moz-keyframes cssload-not-clockwise {\n 0% {\n -moz-transform: rotate(45deg);\n}\n 100% {\n -moz-transform: rotate(-315deg);\n}\n}\n @keyframes cssload-lt {\n 0% {\n opacity: 1;\n}\n 25% {\n opacity: 1;\n}\n 26% {\n opacity: 0;\n}\n 75% {\n opacity: 0;\n}\n 76% {\n opacity: 1;\n}\n 100% {\n opacity: 1;\n}\n}\n @-o-keyframes cssload-lt {\n 0% {\n opacity: 1;\n}\n 25% {\n opacity: 1;\n}\n 26% {\n opacity: 0;\n}\n 75% {\n opacity: 0;\n}\n 76% {\n opacity: 1;\n}\n 100% {\n opacity: 1;\n}\n}\n @-ms-keyframes cssload-lt {\n 0% {\n opacity: 1;\n}\n 25% {\n opacity: 1;\n}\n 26% {\n opacity: 0;\n}\n 75% {\n opacity: 0;\n}\n 76% {\n opacity: 1;\n}\n 100% {\n opacity: 1;\n}\n}\n @-webkit-keyframes cssload-lt {\n 0% {\n opacity: 1;\n}\n 25% {\n opacity: 1;\n}\n 26% {\n opacity: 0;\n}\n 75% {\n opacity: 0;\n}\n 76% {\n opacity: 1;\n}\n 100% {\n opacity: 1;\n}\n}\n @-moz-keyframes cssload-lt {\n 0% {\n opacity: 1;\n}\n 25% {\n opacity: 1;\n}\n 26% {\n opacity: 0;\n}\n 75% {\n opacity: 0;\n}\n 76% {\n opacity: 1;\n}\n 100% {\n opacity: 1;\n}\n}\n\n\n\n                              /*Preloader Demo 49*/\n\n/******************************************************************************/\n/******************************************************************************/\n\n\n\n\n#ts-preloader-absolute50 {\n\theight: 200px;\n\tleft: 50%;\n\tmargin-left: -100px;\n\tmargin-top: -100px;\n\tposition: absolute;\n\ttop: 52%;\n\twidth: 200px;\n}\n#tscssload-loader {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\twidth: 171px;\n\theight: 171px;\n\tmargin: auto;\n}\n#tscssload-loader .tscssload-dot {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\twidth: 85.5px;\n\theight: 100%;\n\tmargin: auto;\n}\n#tscssload-loader .tscssload-dot:before {\n\tcontent: '';\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\twidth: 85.5px;\n\theight: 85.5px;\n\tborder-radius: 100%;\n\ttransform: scale(0);\n\t-o-transform: scale(0);\n\t-ms-transform: scale(0);\n\t-webkit-transform: scale(0);\n\t-moz-transform: scale(0);\n}\n#tscssload-loader .tscssload-dot:nth-child(7n+1) {\n transform: rotate(45deg);\n -o-transform: rotate(45deg);\n -ms-transform: rotate(45deg);\n -webkit-transform: rotate(45deg);\n -moz-transform: rotate(45deg);\n}\n#tscssload-loader .tscssload-dot:nth-child(7n+1):before {\n background: #03a9f4;\n animation: cssload-load 0.92s linear 0.12s infinite;\n -o-animation: cssload-load 0.92s linear 0.12s infinite;\n -ms-animation: cssload-load 0.92s linear 0.12s infinite;\n -webkit-animation: cssload-load 0.92s linear 0.12s infinite;\n -moz-animation: cssload-load 0.92s linear 0.12s infinite;\n}\n#tscssload-loader .tscssload-dot:nth-child(7n+2) {\n transform: rotate(90deg);\n -o-transform: rotate(90deg);\n -ms-transform: rotate(90deg);\n -webkit-transform: rotate(90deg);\n -moz-transform: rotate(90deg);\n}\n#tscssload-loader .tscssload-dot:nth-child(7n+2):before {\n background: #03a9f4;\n animation: cssload-load 0.92s linear 0.23s infinite;\n -o-animation: cssload-load 0.92s linear 0.23s infinite;\n -ms-animation: cssload-load 0.92s linear 0.23s infinite;\n -webkit-animation: cssload-load 0.92s linear 0.23s infinite;\n -moz-animation: cssload-load 0.92s linear 0.23s infinite;\n}\n#tscssload-loader .tscssload-dot:nth-child(7n+3) {\n transform: rotate(135deg);\n -o-transform: rotate(135deg);\n -ms-transform: rotate(135deg);\n -webkit-transform: rotate(135deg);\n -moz-transform: rotate(135deg);\n}\n#tscssload-loader .tscssload-dot:nth-child(7n+3):before {\n background: rgb(0,170,255);\n animation: cssload-load 0.92s linear 0.35s infinite;\n -o-animation: cssload-load 0.92s linear 0.35s infinite;\n -ms-animation: cssload-load 0.92s linear 0.35s infinite;\n -webkit-animation: cssload-load 0.92s linear 0.35s infinite;\n -moz-animation: cssload-load 0.92s linear 0.35s infinite;\n}\n#tscssload-loader .tscssload-dot:nth-child(7n+4) {\n transform: rotate(180deg);\n -o-transform: rotate(180deg);\n -ms-transform: rotate(180deg);\n -webkit-transform: rotate(180deg);\n -moz-transform: rotate(180deg);\n}\n#tscssload-loader .tscssload-dot:nth-child(7n+4):before {\n background: rgb(0,64,255);\n animation: cssload-load 0.92s linear 0.46s infinite;\n -o-animation: cssload-load 0.92s linear 0.46s infinite;\n -ms-animation: cssload-load 0.92s linear 0.46s infinite;\n -webkit-animation: cssload-load 0.92s linear 0.46s infinite;\n -moz-animation: cssload-load 0.92s linear 0.46s infinite;\n}\n#tscssload-loader .tscssload-dot:nth-child(7n+5) {\n transform: rotate(225deg);\n -o-transform: rotate(225deg);\n -ms-transform: rotate(225deg);\n -webkit-transform: rotate(225deg);\n -moz-transform: rotate(225deg);\n}\n#tscssload-loader .tscssload-dot:nth-child(7n+5):before {\n background: rgb(42,0,255);\n animation: cssload-load 0.92s linear 0.58s infinite;\n -o-animation: cssload-load 0.92s linear 0.58s infinite;\n -ms-animation: cssload-load 0.92s linear 0.58s infinite;\n -webkit-animation: cssload-load 0.92s linear 0.58s infinite;\n -moz-animation: cssload-load 0.92s linear 0.58s infinite;\n}\n#tscssload-loader .tscssload-dot:nth-child(7n+6) {\n transform: rotate(270deg);\n -o-transform: rotate(270deg);\n -ms-transform: rotate(270deg);\n -webkit-transform: rotate(270deg);\n -moz-transform: rotate(270deg);\n}\n#tscssload-loader .tscssload-dot:nth-child(7n+6):before {\n background: rgb(149,0,255);\n animation: cssload-load 0.92s linear 0.69s infinite;\n -o-animation: cssload-load 0.92s linear 0.69s infinite;\n -ms-animation: cssload-load 0.92s linear 0.69s infinite;\n -webkit-animation: cssload-load 0.92s linear 0.69s infinite;\n -moz-animation: cssload-load 0.92s linear 0.69s infinite;\n}\n#tscssload-loader .tscssload-dot:nth-child(7n+7) {\n transform: rotate(315deg);\n}\n#tscssload-loader .tscssload-dot:nth-child(7n+7):before {\n background: magenta;\n animation: cssload-load 0.92s linear 0.81s infinite;\n -o-animation: cssload-load 0.92s linear 0.81s infinite;\n -ms-animation: cssload-load 0.92s linear 0.81s infinite;\n -webkit-animation: cssload-load 0.92s linear 0.81s infinite;\n -moz-animation: cssload-load 0.92s linear 0.81s infinite;\n}\n#tscssload-loader .tscssload-dot:nth-child(7n+8) {\n transform: rotate(360deg);\n -o-transform: rotate(360deg);\n -ms-transform: rotate(360deg);\n -webkit-transform: rotate(360deg);\n -moz-transform: rotate(360deg);\n}\n#tscssload-loader .tscssload-dot:nth-child(7n+8):before {\n background: rgb(255,0,149);\n animation: cssload-load 0.92s linear 0.92s infinite;\n -o-animation: cssload-load 0.92s linear 0.92s infinite;\n -ms-animation: cssload-load 0.92s linear 0.92s infinite;\n -webkit-animation: cssload-load 0.92s linear 0.92s infinite;\n -moz-animation: cssload-load 0.92s linear 0.92s infinite;\n}\n @keyframes cssload-load {\n 100% {\n opacity: 0;\n transform: scale(1);\n}\n}\n @-o-keyframes cssload-load {\n 100% {\n opacity: 0;\n -o-transform: scale(1);\n}\n}\n @-ms-keyframes cssload-load {\n 100% {\n opacity: 0;\n -ms-transform: scale(1);\n}\n}\n @-webkit-keyframes cssload-load {\n 100% {\n opacity: 0;\n -webkit-transform: scale(1);\n}\n}\n @-moz-keyframes cssload-load {\n 100% {\n opacity: 0;\n -moz-transform: scale(1);\n}\n}\n\n\n\n                              /*Preloader Demo 50*/\n\n/******************************************************************************/\n/******************************************************************************/\n\n\n\n\n#ts-preloader-absolute51 {\n\theight: 200px;\n\tleft: 50%;\n\tmargin-left: -100px;\n\tmargin-top: -100px;\n\tposition: absolute;\n\ttop: 70%;\n\twidth: 200px;\n}\n.tscssload-aim {\n\tposition: relative;\n\twidth: 80px;\n\theight: 80px;\n\tleft: 35%;\n\tleft: calc(50% - 43px);\n\tleft: -o-calc(50% - 43px);\n\tleft: -ms-calc(50% - 43px);\n\tleft: -webkit-calc(50% - 43px);\n\tleft: -moz-calc(50% - 43px);\n\tleft: calc(50% - 43px);\n\tborder-radius: 50px;\n\tbackground-color: rgb(255,255,255);\n\tborder-width: 40px;\n\tborder-style: double;\n\tborder-color:transparent #03a9f4;\n\tbox-sizing:border-box;\n\t-o-box-sizing:border-box;\n\t-ms-box-sizing:border-box;\n\t-webkit-box-sizing:border-box;\n\t-moz-box-sizing:border-box;\n\ttransform-origin:\t50% 50%;\n\t-o-transform-origin:\t50% 50%;\n\t-ms-transform-origin:\t50% 50%;\n\t-webkit-transform-origin:\t50% 50%;\n\t-moz-transform-origin:\t50% 50%;\n\tanimation: cssload-aim 2.3s linear infinite;\n\t-o-animation: cssload-aim 2.3s linear infinite;\n\t-ms-animation: cssload-aim 2.3s linear infinite;\n\t-webkit-animation: cssload-aim 2.3s linear infinite;\n\t-moz-animation: cssload-aim 2.3s linear infinite;\n}\n @keyframes cssload-aim {\n 0% {\ntransform:rotate(0deg);\n}\n 100% {\ntransform:rotate(360deg);\n}\n}\n @-o-keyframes cssload-aim {\n 0% {\n-o-transform:rotate(0deg);\n}\n 100% {\n-o-transform:rotate(360deg);\n}\n}\n @-ms-keyframes cssload-aim {\n 0% {\n-ms-transform:rotate(0deg);\n}\n 100% {\n-ms-transform:rotate(360deg);\n}\n}\n @-webkit-keyframes cssload-aim {\n 0% {\n-webkit-transform:rotate(0deg);\n}\n 100% {\n-webkit-transform:rotate(360deg);\n}\n}\n @-moz-keyframes cssload-aim {\n 0% {\n-moz-transform:rotate(0deg);\n}\n 100% {\n-moz-transform:rotate(360deg);\n}\n}\n\n\n                              /*Preloader Demo 51*/\n\n/******************************************************************************/\n/******************************************************************************/\n\n\n\n\n#ts-preloader-absolute52 {\n\theight: 200px;\n\tleft: 50%;\n\tmargin-left: -100px;\n\tmargin-top: -100px;\n\tposition: absolute;\n\ttop: 76%;\n\twidth: 200px;\n}\n.tscssload-triangles {\n\ttransform: translate(-50%, -50%);\n\t-o-transform: translate(-50%, -50%);\n\t-ms-transform: translate(-50%, -50%);\n\t-webkit-transform: translate(-50%, -50%);\n\t-moz-transform: translate(-50%, -50%);\n\theight: 79px;\n\twidth: 88px;\n\tposition: absolute;\n\tleft: 50%;\n}\n.tscssload-tri {\n\tposition: absolute;\n\tanimation: cssload-pulse 862.5ms ease-in infinite;\n\t-o-animation: cssload-pulse 862.5ms ease-in infinite;\n\t-ms-animation: cssload-pulse 862.5ms ease-in infinite;\n\t-webkit-animation: cssload-pulse 862.5ms ease-in infinite;\n\t-moz-animation: cssload-pulse 862.5ms ease-in infinite;\n\tborder-top: 26px solid #03a9f4;\n\tborder-left: 15px solid transparent;\n\tborder-right: 15px solid transparent;\n\tborder-bottom: 0px;\n}\n.tscssload-tri.tscssload-invert {\n\tborder-top: 0px;\n\tborder-bottom: 26px solid #03a9f4;\n\tborder-left: 15px solid transparent;\n\tborder-right: 15px solid transparent;\n}\n.tscssload-tri:nth-child(1) {\n left: 29px;\n}\n.tscssload-tri:nth-child(2) {\n left: 15px;\n top: 26px;\n animation-delay: -143.75ms;\n -o-animation-delay: -143.75ms;\n -ms-animation-delay: -143.75ms;\n -webkit-animation-delay: -143.75ms;\n -moz-animation-delay: -143.75ms;\n}\n.tscssload-tri:nth-child(3) {\n left: 29px;\n top: 26px;\n}\n.tscssload-tri:nth-child(4) {\n left: 44px;\n top: 26px;\n animation-delay: -718.75ms;\n -o-animation-delay: -718.75ms;\n -ms-animation-delay: -718.75ms;\n -webkit-animation-delay: -718.75ms;\n -moz-animation-delay: -718.75ms;\n}\n.tscssload-tri:nth-child(5) {\n top: 53px;\n animation-delay: -287.5ms;\n -o-animation-delay: -287.5ms;\n -ms-animation-delay: -287.5ms;\n -webkit-animation-delay: -287.5ms;\n -moz-animation-delay: -287.5ms;\n}\n.tscssload-tri:nth-child(6) {\n top: 53px;\n left: 15px;\n animation-delay: -287.5ms;\n -o-animation-delay: -287.5ms;\n -ms-animation-delay: -287.5ms;\n -webkit-animation-delay: -287.5ms;\n -moz-animation-delay: -287.5ms;\n}\n.tscssload-tri:nth-child(7) {\n top: 53px;\n left: 29px;\n animation-delay: -431.25ms;\n -o-animation-delay: -431.25ms;\n -ms-animation-delay: -431.25ms;\n -webkit-animation-delay: -431.25ms;\n -moz-animation-delay: -431.25ms;\n}\n.tscssload-tri:nth-child(8) {\n top: 53px;\n left: 44px;\n animation-delay: -575ms;\n -o-animation-delay: -575ms;\n -ms-animation-delay: -575ms;\n -webkit-animation-delay: -575ms;\n -moz-animation-delay: -575ms;\n}\n.tscssload-tri:nth-child(9) {\n top: 53px;\n left: 58px;\n animation-delay: -575ms;\n -o-animation-delay: -575ms;\n -ms-animation-delay: -575ms;\n -webkit-animation-delay: -575ms;\n -moz-animation-delay: -575ms;\n}\n @keyframes cssload-pulse {\n 0% {\n opacity: 1;\n}\n 16.666% {\n opacity: 1;\n}\n 100% {\n opacity: 0;\n}\n}\n @-o-keyframes cssload-pulse {\n 0% {\n opacity: 1;\n}\n 16.666% {\n opacity: 1;\n}\n 100% {\n opacity: 0;\n}\n}\n @-ms-keyframes cssload-pulse {\n 0% {\n opacity: 1;\n}\n 16.666% {\n opacity: 1;\n}\n 100% {\n opacity: 0;\n}\n}\n @-webkit-keyframes cssload-pulse {\n 0% {\n opacity: 1;\n}\n 16.666% {\n opacity: 1;\n}\n 100% {\n opacity: 0;\n}\n}\n @-moz-keyframes cssload-pulse {\n 0% {\n opacity: 1;\n}\n 16.666% {\n opacity: 1;\n}\n 100% {\n opacity: 0;\n}\n}\n\n\n\n                              /*Preloader Demo 52*/\n\n/******************************************************************************/\n/******************************************************************************/\n\n\n\n\n#ts-preloader-absolute53 {\n\theight: 200px;\n\tleft: 50%;\n\tmargin-left: -100px;\n\tmargin-top: -100px;\n\tposition: absolute;\n\ttop: 60%;\n\twidth: 200px;\n}\n#tscssload-global {\n\twidth: 68px;\n\tmargin: auto;\n\tmargin-top: 49px;\n\tposition: relative;\n\tcursor: pointer;\n\theight: 58px;\n}\n.tscssload-mask {\n\tposition: absolute;\n\tborder-radius: 2px;\n\toverflow: hidden;\n\tperspective: 1000;\n\t-o-perspective: 1000;\n\t-ms-perspective: 1000;\n\t-webkit-perspective: 1000;\n\t-moz-perspective: 1000;\n\tbackface-visibility: hidden;\n\t-o-backface-visibility: hidden;\n\t-ms-backface-visibility: hidden;\n\t-webkit-backface-visibility: hidden;\n\t-moz-backface-visibility: hidden;\n}\n.tscssload-plane {\n\tbackground: #03a9f4;\n\twidth: 400%;\n\theight: 100%;\n\tposition: absolute;\n\tz-index: 100;\n\ttransform: translate3d(0px, 0, 0);\n\t-o-transform: translate3d(0px, 0, 0);\n\t-ms-transform: translate3d(0px, 0, 0);\n\t-webkit-transform: translate3d(0px, 0, 0);\n\t-moz-transform: translate3d(0px, 0, 0);\n\tperspective: 1000;\n\t-o-perspective: 1000;\n\t-ms-perspective: 1000;\n\t-webkit-perspective: 1000;\n\t-moz-perspective: 1000;\n\tbackface-visibility: hidden;\n\t-o-backface-visibility: hidden;\n\t-ms-backface-visibility: hidden;\n\t-webkit-backface-visibility: hidden;\n\t-moz-backface-visibility: hidden;\n}\n#tscssload-top .tscssload-plane {\n\tz-index: 2000;\n\tanimation: cssload-trans1 1.5s ease-in infinite 0s backwards;\n\t-o-animation: cssload-trans1 1.5s ease-in infinite 0s backwards;\n\t-ms-animation: cssload-trans1 1.5s ease-in infinite 0s backwards;\n\t-webkit-animation: cssload-trans1 1.5s ease-in infinite 0s backwards;\n\t-moz-animation: cssload-trans1 1.5s ease-in infinite 0s backwards;\n}\n#tscssload-middle .tscssload-plane {\n\tbackground: rgb(0,0,0);\n\ttransform: translate3d(0px, 0, 0);\n\t-o-transform: translate3d(0px, 0, 0);\n\t-ms-transform: translate3d(0px, 0, 0);\n\t-webkit-transform: translate3d(0px, 0, 0);\n\t-moz-transform: translate3d(0px, 0, 0);\n\tanimation: cssload-trans2 1.5s linear infinite 0.35s backwards;\n\t-o-animation: cssload-trans2 1.5s linear infinite 0.35s backwards;\n\t-ms-animation: cssload-trans2 1.5s linear infinite 0.35s backwards;\n\t-webkit-animation: cssload-trans2 1.5s linear infinite 0.35s backwards;\n\t-moz-animation: cssload-trans2 1.5s linear infinite 0.35s backwards;\n}\n#tscssload-bottom .tscssload-plane {\n\tz-index: 2000;\n\tanimation: cssload-trans3 1.5s ease-out infinite 0.81s backwards;\n\t-o-animation: cssload-trans3 1.5s ease-out infinite 0.81s backwards;\n\t-ms-animation: cssload-trans3 1.5s ease-out infinite 0.81s backwards;\n\t-webkit-animation: cssload-trans3 1.5s ease-out infinite 0.81s backwards;\n\t-moz-animation: cssload-trans3 1.5s ease-out infinite 0.81s backwards;\n}\n#tscssload-top {\n\twidth: 52px;\n\theight: 19px;\n\tleft: 19px;\n\ttransform: skew(-15deg, 0);\n\t-o-transform: skew(-15deg, 0);\n\t-ms-transform: skew(-15deg, 0);\n\t-webkit-transform: skew(-15deg, 0);\n\t-moz-transform: skew(-15deg, 0);\n\tz-index: 100;\n}\n#tscssload-middle {\n\twidth: 32px;\n\theight: 19px;\n\tleft: 19px;\n\ttop: 15px;\n\ttransform: skew(-15deg, 40deg);\n\t-o-transform: skew(-15deg, 40deg);\n\t-ms-transform: skew(-15deg, 40deg);\n\t-webkit-transform: skew(-15deg, 40deg);\n\t-moz-transform: skew(-15deg, 40deg);\n}\n#tscssload-bottom {\n\twidth: 52px;\n\theight: 19px;\n\ttop: 29px;\n\ttransform: skew(-15deg, 0);\n\t-o-transform: skew(-15deg, 0);\n\t-ms-transform: skew(-15deg, 0);\n\t-webkit-transform: skew(-15deg, 0);\n\t-moz-transform: skew(-15deg, 0);\n}\n @keyframes cssload-trans1 {\n from {\n transform: translate3d(52px, 0, 0);\n}\nto {\n\ttransform: translate3d(-244px, 0, 0);\n}\n}\n @-o-keyframes cssload-trans1 {\n from {\n -o-transform: translate3d(52px, 0, 0);\n}\nto {\n\t-o-transform: translate3d(-244px, 0, 0);\n}\n}\n @-ms-keyframes cssload-trans1 {\n from {\n -ms-transform: translate3d(52px, 0, 0);\n}\nto {\n\t-ms-transform: translate3d(-244px, 0, 0);\n}\n}\n @-webkit-keyframes cssload-trans1 {\n from {\n -webkit-transform: translate3d(52px, 0, 0);\n}\nto {\n\t-webkit-transform: translate3d(-244px, 0, 0);\n}\n}\n @-moz-keyframes cssload-trans1 {\n from {\n -moz-transform: translate3d(52px, 0, 0);\n}\nto {\n\t-moz-transform: translate3d(-244px, 0, 0);\n}\n}\n @keyframes cssload-trans2 {\n from {\n transform: translate3d(-156px, 0, 0);\n}\nto {\n\ttransform: translate3d(52px, 0, 0);\n}\n}\n @-o-keyframes cssload-trans2 {\n from {\n -o-transform: translate3d(-156px, 0, 0);\n}\nto {\n\t-o-transform: translate3d(52px, 0, 0);\n}\n}\n @-ms-keyframes cssload-trans2 {\n from {\n -ms-transform: translate3d(-156px, 0, 0);\n}\nto {\n\t-ms-transform: translate3d(52px, 0, 0);\n}\n}\n @-webkit-keyframes cssload-trans2 {\n from {\n -webkit-transform: translate3d(-156px, 0, 0);\n}\nto {\n\t-webkit-transform: translate3d(52px, 0, 0);\n}\n}\n @-moz-keyframes cssload-trans2 {\n from {\n -moz-transform: translate3d(-156px, 0, 0);\n}\nto {\n\t-moz-transform: translate3d(52px, 0, 0);\n}\n}\n @keyframes cssload-trans3 {\n from {\n transform: translate3d(52px, 0, 0);\n}\nto {\n\ttransform: translate3d(-214px, 0, 0);\n}\n}\n @-o-keyframes cssload-trans3 {\n from {\n -o-transform: translate3d(52px, 0, 0);\n}\nto {\n\t-o-transform: translate3d(-214px, 0, 0);\n}\n}\n @-ms-keyframes cssload-trans3 {\n from {\n -ms-transform: translate3d(52px, 0, 0);\n}\nto {\n\t-ms-transform: translate3d(-214px, 0, 0);\n}\n}\n @-webkit-keyframes cssload-trans3 {\n from {\n -webkit-transform: translate3d(52px, 0, 0);\n}\nto {\n\t-webkit-transform: translate3d(-214px, 0, 0);\n}\n}\n @-moz-keyframes cssload-trans3 {\n from {\n -moz-transform: translate3d(52px, 0, 0);\n}\nto {\n\t-moz-transform: translate3d(-214px, 0, 0);\n}\n}\n @keyframes cssload-animColor {\n from {\n background: red;\n}\n 25% {\n background: yellow;\n}\n 50% {\n background: green;\n}\n 75% {\n background: brown;\n}\nto {\n\tbackground: blue;\n}\n}\n @-o-keyframes cssload-animColor {\n from {\n background: red;\n}\n 25% {\n background: yellow;\n}\n 50% {\n background: green;\n}\n 75% {\n background: brown;\n}\nto {\n\tbackground: blue;\n}\n}\n @-ms-keyframes cssload-animColor {\n from {\n background: red;\n}\n 25% {\n background: yellow;\n}\n 50% {\n background: green;\n}\n 75% {\n background: brown;\n}\nto {\n\tbackground: blue;\n}\n}\n @-webkit-keyframes cssload-animColor {\n from {\n background: red;\n}\n 25% {\n background: yellow;\n}\n 50% {\n background: green;\n}\n 75% {\n background: brown;\n}\nto {\n\tbackground: blue;\n}\n}\n @-moz-keyframes cssload-animColor {\n from {\n background: red;\n}\n 25% {\n background: yellow;\n}\n 50% {\n background: green;\n}\n 75% {\n background: brown;\n}\nto {\n\tbackground: blue;\n}\n}\n\n\n\n                              /*Preloader Demo 53*/\n\n/******************************************************************************/\n/******************************************************************************/\n\n\n\n\n#ts-preloader-absolute54 {\n\theight: 200px;\n\tleft: 50%;\n\tmargin-left: -100px;\n\tmargin-top: -100px;\n\tposition: absolute;\n\ttop: 52%;\n\twidth: 200px;\n}\n.csstscssload-load-frame {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\twidth: 49px;\n\theight: 49px;\n\tmargin: auto;\n\tdisplay: box;\n\tdisplay: -o-box;\n\tdisplay: -ms-box;\n\tdisplay: -webkit-box;\n\tdisplay: -moz-box;\n\tdisplay: flex;\n\tdisplay: -o-flex;\n\tdisplay: -ms-flex;\n\tdisplay: -webkit-flex;\n\tdisplay: -moz-flex;\n\tflex-flow: row wrap;\n\t-o-flex-flow: row wrap;\n\t-ms-flex-flow: row wrap;\n\t-webkit-flex-flow: row wrap;\n\t-moz-flex-flow: row wrap;\n}\n.csstscssload-load-frame .tscssload-dot {\n\twidth: 10px;\n\theight: 10px;\n}\n.csstscssload-load-frame .tscssload-dot:nth-child(1) {\n background: rgb(32,223,214);\n animation: cssload-load 0.35s linear -0.12s infinite alternate;\n -o-animation: cssload-load 0.35s linear -0.12s infinite alternate;\n -ms-animation: cssload-load 0.35s linear -0.12s infinite alternate;\n -webkit-animation: cssload-load 0.35s linear -0.12s infinite alternate;\n -moz-animation: cssload-load 0.35s linear -0.12s infinite alternate;\n}\n.csstscssload-load-frame .tscssload-dot:nth-child(2) {\n background: rgb(32,223,220);\n animation: cssload-load 0.35s linear -0.23s infinite alternate;\n -o-animation: cssload-load 0.35s linear -0.23s infinite alternate;\n -ms-animation: cssload-load 0.35s linear -0.23s infinite alternate;\n -webkit-animation: cssload-load 0.35s linear -0.23s infinite alternate;\n -moz-animation: cssload-load 0.35s linear -0.23s infinite alternate;\n}\n.csstscssload-load-frame .tscssload-dot:nth-child(3) {\n background: rgb(32,220,223);\n animation: cssload-load 0.35s linear -0.35s infinite alternate;\n -o-animation: cssload-load 0.35s linear -0.35s infinite alternate;\n -ms-animation: cssload-load 0.35s linear -0.35s infinite alternate;\n -webkit-animation: cssload-load 0.35s linear -0.35s infinite alternate;\n -moz-animation: cssload-load 0.35s linear -0.35s infinite alternate;\n}\n.csstscssload-load-frame .tscssload-dot:nth-child(4) {\n background: rgb(32,214,223);\n animation: cssload-load 0.35s linear -0.46s infinite alternate;\n -o-animation: cssload-load 0.35s linear -0.46s infinite alternate;\n -ms-animation: cssload-load 0.35s linear -0.46s infinite alternate;\n -webkit-animation: cssload-load 0.35s linear -0.46s infinite alternate;\n -moz-animation: cssload-load 0.35s linear -0.46s infinite alternate;\n}\n.csstscssload-load-frame .tscssload-dot:nth-child(5) {\n background: rgb(32,207,223);\n animation: cssload-load 0.35s linear -0.58s infinite alternate;\n -o-animation: cssload-load 0.35s linear -0.58s infinite alternate;\n -ms-animation: cssload-load 0.35s linear -0.58s infinite alternate;\n -webkit-animation: cssload-load 0.35s linear -0.58s infinite alternate;\n -moz-animation: cssload-load 0.35s linear -0.58s infinite alternate;\n}\n.csstscssload-load-frame .tscssload-dot:nth-child(6) {\n background: rgb(32,201,223);\n animation: cssload-load 0.35s linear -0.69s infinite alternate;\n -o-animation: cssload-load 0.35s linear -0.69s infinite alternate;\n -ms-animation: cssload-load 0.35s linear -0.69s infinite alternate;\n -webkit-animation: cssload-load 0.35s linear -0.69s infinite alternate;\n -moz-animation: cssload-load 0.35s linear -0.69s infinite alternate;\n}\n.csstscssload-load-frame .tscssload-dot:nth-child(7) {\n background: rgb(32,194,223);\n animation: cssload-load 0.35s linear -0.81s infinite alternate;\n -o-animation: cssload-load 0.35s linear -0.81s infinite alternate;\n -ms-animation: cssload-load 0.35s linear -0.81s infinite alternate;\n -webkit-animation: cssload-load 0.35s linear -0.81s infinite alternate;\n -moz-animation: cssload-load 0.35s linear -0.81s infinite alternate;\n}\n.csstscssload-load-frame .tscssload-dot:nth-child(8) {\n background: rgb(32,188,223);\n animation: cssload-load 0.35s linear -0.92s infinite alternate;\n -o-animation: cssload-load 0.35s linear -0.92s infinite alternate;\n -ms-animation: cssload-load 0.35s linear -0.92s infinite alternate;\n -webkit-animation: cssload-load 0.35s linear -0.92s infinite alternate;\n -moz-animation: cssload-load 0.35s linear -0.92s infinite alternate;\n}\n.csstscssload-load-frame .tscssload-dot:nth-child(9) {\n background: rgb(32,182,223);\n animation: cssload-load 0.35s linear -1.04s infinite alternate;\n -o-animation: cssload-load 0.35s linear -1.04s infinite alternate;\n -ms-animation: cssload-load 0.35s linear -1.04s infinite alternate;\n -webkit-animation: cssload-load 0.35s linear -1.04s infinite alternate;\n -moz-animation: cssload-load 0.35s linear -1.04s infinite alternate;\n}\n.csstscssload-load-frame .tscssload-dot:nth-child(10) {\n background: rgb(32,175,223);\n animation: cssload-load 0.35s linear -1.15s infinite alternate;\n -o-animation: cssload-load 0.35s linear -1.15s infinite alternate;\n -ms-animation: cssload-load 0.35s linear -1.15s infinite alternate;\n -webkit-animation: cssload-load 0.35s linear -1.15s infinite alternate;\n -moz-animation: cssload-load 0.35s linear -1.15s infinite alternate;\n}\n.csstscssload-load-frame .tscssload-dot:nth-child(11) {\n background: rgb(32,169,223);\n animation: cssload-load 0.35s linear -1.27s infinite alternate;\n -o-animation: cssload-load 0.35s linear -1.27s infinite alternate;\n -ms-animation: cssload-load 0.35s linear -1.27s infinite alternate;\n -webkit-animation: cssload-load 0.35s linear -1.27s infinite alternate;\n -moz-animation: cssload-load 0.35s linear -1.27s infinite alternate;\n}\n.csstscssload-load-frame .tscssload-dot:nth-child(12) {\n background: rgb(32,163,223);\n animation: cssload-load 0.35s linear -1.38s infinite alternate;\n -o-animation: cssload-load 0.35s linear -1.38s infinite alternate;\n -ms-animation: cssload-load 0.35s linear -1.38s infinite alternate;\n -webkit-animation: cssload-load 0.35s linear -1.38s infinite alternate;\n -moz-animation: cssload-load 0.35s linear -1.38s infinite alternate;\n}\n.csstscssload-load-frame .tscssload-dot:nth-child(13) {\n background: rgb(32,156,223);\n animation: cssload-load 0.35s linear -1.5s infinite alternate;\n -o-animation: cssload-load 0.35s linear -1.5s infinite alternate;\n -ms-animation: cssload-load 0.35s linear -1.5s infinite alternate;\n -webkit-animation: cssload-load 0.35s linear -1.5s infinite alternate;\n -moz-animation: cssload-load 0.35s linear -1.5s infinite alternate;\n}\n.csstscssload-load-frame .tscssload-dot:nth-child(14) {\n background: rgb(32,150,223);\n animation: cssload-load 0.35s linear -1.61s infinite alternate;\n -o-animation: cssload-load 0.35s linear -1.61s infinite alternate;\n -ms-animation: cssload-load 0.35s linear -1.61s infinite alternate;\n -webkit-animation: cssload-load 0.35s linear -1.61s infinite alternate;\n -moz-animation: cssload-load 0.35s linear -1.61s infinite alternate;\n}\n.csstscssload-load-frame .tscssload-dot:nth-child(15) {\n background: rgb(32,143,223);\n animation: cssload-load 0.35s linear -1.73s infinite alternate;\n -o-animation: cssload-load 0.35s linear -1.73s infinite alternate;\n -ms-animation: cssload-load 0.35s linear -1.73s infinite alternate;\n -webkit-animation: cssload-load 0.35s linear -1.73s infinite alternate;\n -moz-animation: cssload-load 0.35s linear -1.73s infinite alternate;\n}\n.csstscssload-load-frame .tscssload-dot:nth-child(16) {\n background: rgb(32,137,223);\n animation: cssload-load 0.35s linear -1.84s infinite alternate;\n -o-animation: cssload-load 0.35s linear -1.84s infinite alternate;\n -ms-animation: cssload-load 0.35s linear -1.84s infinite alternate;\n -webkit-animation: cssload-load 0.35s linear -1.84s infinite alternate;\n -moz-animation: cssload-load 0.35s linear -1.84s infinite alternate;\n}\n.csstscssload-load-frame .tscssload-dot:nth-child(17) {\n background: #2083df;\n animation: cssload-load 0.35s linear -1.96s infinite alternate;\n -o-animation: cssload-load 0.35s linear -1.96s infinite alternate;\n -ms-animation: cssload-load 0.35s linear -1.96s infinite alternate;\n -webkit-animation: cssload-load 0.35s linear -1.96s infinite alternate;\n -moz-animation: cssload-load 0.35s linear -1.96s infinite alternate;\n}\n.csstscssload-load-frame .tscssload-dot:nth-child(18) {\n background: #207cdf;\n animation: cssload-load 0.35s linear -2.07s infinite alternate;\n -o-animation: cssload-load 0.35s linear -2.07s infinite alternate;\n -ms-animation: cssload-load 0.35s linear -2.07s infinite alternate;\n -webkit-animation: cssload-load 0.35s linear -2.07s infinite alternate;\n -moz-animation: cssload-load 0.35s linear -2.07s infinite alternate;\n}\n.csstscssload-load-frame .tscssload-dot:nth-child(19) {\n background: #2076df;\n animation: cssload-load 0.35s linear -2.19s infinite alternate;\n -o-animation: cssload-load 0.35s linear -2.19s infinite alternate;\n -ms-animation: cssload-load 0.35s linear -2.19s infinite alternate;\n -webkit-animation: cssload-load 0.35s linear -2.19s infinite alternate;\n -moz-animation: cssload-load 0.35s linear -2.19s infinite alternate;\n}\n.csstscssload-load-frame .tscssload-dot:nth-child(20) {\n background: #2070df;\n animation: cssload-load 0.35s linear -2.3s infinite alternate;\n -o-animation: cssload-load 0.35s linear -2.3s infinite alternate;\n -ms-animation: cssload-load 0.35s linear -2.3s infinite alternate;\n -webkit-animation: cssload-load 0.35s linear -2.3s infinite alternate;\n -moz-animation: cssload-load 0.35s linear -2.3s infinite alternate;\n}\n.csstscssload-load-frame .tscssload-dot:nth-child(21) {\n background: #2069df;\n animation: cssload-load 0.35s linear -2.42s infinite alternate;\n -o-animation: cssload-load 0.35s linear -2.42s infinite alternate;\n -ms-animation: cssload-load 0.35s linear -2.42s infinite alternate;\n -webkit-animation: cssload-load 0.35s linear -2.42s infinite alternate;\n -moz-animation: cssload-load 0.35s linear -2.42s infinite alternate;\n}\n.csstscssload-load-frame .tscssload-dot:nth-child(22) {\n background: #2063df;\n animation: cssload-load 0.35s linear -2.53s infinite alternate;\n -o-animation: cssload-load 0.35s linear -2.53s infinite alternate;\n -ms-animation: cssload-load 0.35s linear -2.53s infinite alternate;\n -webkit-animation: cssload-load 0.35s linear -2.53s infinite alternate;\n -moz-animation: cssload-load 0.35s linear -2.53s infinite alternate;\n}\n.csstscssload-load-frame .tscssload-dot:nth-child(23) {\n background: #205cdf;\n animation: cssload-load 0.35s linear -2.65s infinite alternate;\n -o-animation: cssload-load 0.35s linear -2.65s infinite alternate;\n -ms-animation: cssload-load 0.35s linear -2.65s infinite alternate;\n -webkit-animation: cssload-load 0.35s linear -2.65s infinite alternate;\n -moz-animation: cssload-load 0.35s linear -2.65s infinite alternate;\n}\n.csstscssload-load-frame .tscssload-dot:nth-child(24) {\n background: #2056df;\n animation: cssload-load 0.35s linear -2.76s infinite alternate;\n -o-animation: cssload-load 0.35s linear -2.76s infinite alternate;\n -ms-animation: cssload-load 0.35s linear -2.76s infinite alternate;\n -webkit-animation: cssload-load 0.35s linear -2.76s infinite alternate;\n -moz-animation: cssload-load 0.35s linear -2.76s infinite alternate;\n}\n.csstscssload-load-frame .tscssload-dot:nth-child(25) {\n background: #2050df;\n animation: cssload-load 0.35s linear -2.88s infinite alternate;\n -o-animation: cssload-load 0.35s linear -2.88s infinite alternate;\n -ms-animation: cssload-load 0.35s linear -2.88s infinite alternate;\n -webkit-animation: cssload-load 0.35s linear -2.88s infinite alternate;\n -moz-animation: cssload-load 0.35s linear -2.88s infinite alternate;\n}\n @keyframes cssload-load {\n 100% {\n opacity: 0;\n transform: scale(0.5);\n}\n}\n @-o-keyframes cssload-load {\n 100% {\n opacity: 0;\n -o-transform: scale(0.5);\n}\n}\n @-ms-keyframes cssload-load {\n 100% {\n opacity: 0;\n -ms-transform: scale(0.5);\n}\n}\n @-webkit-keyframes cssload-load {\n 100% {\n opacity: 0;\n -webkit-transform: scale(0.5);\n}\n}\n @-moz-keyframes cssload-load {\n 100% {\n opacity: 0;\n -moz-transform: scale(0.5);\n}\n}"
  },
  {
    "path": "public/admin/css/responsive.css",
    "content": "/* Normal desktop :992px. */\n@media (min-width: 992px) and (max-width: 1169px) {\n/* Header Css */\n.admin-logo{\n\ttext-align:center;\n}\n.buy-button{\n\ttext-align:center;\n\tmargin-bottom:20px;\n}\n.header-top-menu ul.header-top-nav{\n\ttext-align:center;\n}\n/* form Css */\n.login-input-head {\n  padding-left: 0px;\n}\n.login-input-head p {\n  padding-bottom: 0px;\n}\n.login-title {\n  padding: 30px 0px;\n}\n.login-input-area, .login-textarea-area {\n  margin-right: 0px;\n}\n.col-lg-5.col-md-5.col-sm-0.col-xs-12{\n\tdisplay:none;\n}\n.nav-tabs.custom-menu-wrap li a, .nav-tabs.custom-menu-wrap li.open a {\n\tpadding: 15px 20px;\n}\n.col-lg-3.col-md-3.col-sm-12.col-xs-12.desplay-n-tablet{\n\tdisplay:none;\n}\nul.message-list-menu li .message-info {\n\twidth: 311px;\n}\n.desplay-n-tablet-pro{\n\tdisplay:none;\n}\n.daily-feed-content {\n\tpadding-bottom: 70px;\n}\n.daily-feed-content .message-feed-single {\n\tmargin: 15px 0px 0px 175px;\n}\n.knob-single {\n\tmargin-bottom: 20px;\n}\n.input-mask-title {\n\ttext-align: left;\n}\n.alert-success-style1::after, .alert-success-style2::after, .alert-success-style3::after, .alert-success-style4::after {\n\tright: 70px;\n}\n.ant-res-t-30{\n\tmargin-top:30px;\n}\n.basic-ele-mg-b-10{\n\tmargin-bottom:10px;\n}\n.basic-ele-mg-t-20{\n\tmargin-top:20px;\n}\n.basic-res-b-30{\n\tmargin-bottom:30px;\n}\n.basic-ds-n{\n\tdisplay:none;\n}\n.pull-right.pull-right-pro {\n    float: left !important;\n}\n.ntn-b-mg-30{\n\tmargin-bottom:30px;\n}\n.c3-b-mg-30{\n\tmargin-bottom:30px;\n}\n.code-b-mg-30{\n\tmargin-bottom:30px;\n}\n.compose-b-mg-30{\n\tmargin-bottom:30px;\n}\n.compose-email-to, .compose-multiple-email {\n\tmargin-top: 0px;\n}\n.view-mail-reply-list ul.view-mail-forword li {\n\tpadding-left: 5px;\n}\n.view-mail-reply-list ul.view-mail-forword li a {\n\tpadding: 4px 7px;\n}\n.compose-email-to, .compose-multiple-email {\n\ttext-align: left;\n}\n.ct-map-b-mg-30{\n\tmargin-bottom:30px;\n}\n.ct-google-map-b-mg-30{\n\tmargin-bottom:30px;\n}\n.mg-t-40.mg-google-map-n{\n\tmargin-top: 0px;\n}\n.ln-ch-mg-b{\n\tmargin-bottom:30px;\n}\n.md-mg-modal-b{\n\tmargin-bottom:30px;\n}\n.password-mt-b{\n\tmargin-bottom:30px;\n}\n.pdf-single-pro.shadow-reset .media {\n\twidth: 100% !important;\n\toverflow-x: auto;\n\toverflow-y: auto;\n\theight: 100%;\n}\n.peity-mg-b-30{\n\tmargin-bottom:30px;\n}\n.preloader-mg-b-30{\n\tmargin-bottom:30px;\n}\n.profile-res-mg-b-30{\n\tmargin-bottom:30px;\n}\n.profile-time-ds-none{\n\tdisplay:none;\n}\n.progress-circular , .progress-circular1{\n\ttext-align: center;\n}\n.user-profile-comment-input {\n\tmargin-top: 10px;\n}\n.profile-online-mg-t-30 {\n\tmargin-top: 30px;\n}\n.profile-user-post-content p {\n\tmargin: 0px 0px 15px 0px;\n}\n.profile-details-name-nn{\n\tdisplay:none;\n}\n.tab-content.res-tab-content-project{\n\tmargin-top:15px;\n}\n.user-profile-comment-img.projuct-details-img-tab {\n\ttext-align: left;\n\tmargin-bottom: 10px;\n}\n.rating-project-respons {\n\tmargin-top: 20px;\n}\n.round-mg-t-30-gl{\n\tmargin-top: 30px;\n}\n.sparkel-pro-mg-t-30{\n\tmargin-top: 30px;\n}\n.widget-ov-mg-t-l-30{\n\tmargin-top: 30px;\n}\n.tabl-d-n{\n\tdisplay:none;\n}\n.darklayout .knob-single input {\n\tright: 130px;\n}\n}\n \n/* Tablet desktop :768px. */\n@media (min-width: 768px) and (max-width: 991px) {\n\n.header-top-menu{\n\tdisplay:none;\n}\n .mobile-menu-area{\n\tdisplay:block;\n}\n/* Header Css */\n.admin-logo{\n\ttext-align:center;\n\tmargin-top:10px;\n}\n.buy-button{\n\ttext-align:center;\n\tmargin-bottom:20px;\n}\n/* accordion Css */\n.responsive-accordion{\n\tmargin-bottom:30px !important;\n}\n/* form Css */\n.login-input-head {\n  padding-left: 0px;\n}\n.login-input-head p {\n  padding-bottom: 0px;\n}\n.login-title {\n  padding: 30px 0px;\n}\n.login-input-area, .login-textarea-area {\n  margin-right: 0px;\n}\n.main-menu-area{\n\tdisplay:none;\n}\n.res-mg-t{\n\tmargin-top:40px;\n}\nul.message-list-menu li .message-info {\n\twidth: 84%;\n}\n.dashone-adminprowrap.shadow-reset.mg-b-30 {\n    text-align: center;\n}\n.dashone-doughnut {\n\tpadding: 0px 295px;\n}\n.res-mg-t-30{\n\tmargin-top:30px;\n}\n.col-lg-5.col-md-5.col-sm-0.col-xs-12{\n\tdisplay:none;\n}\n.admin-logo {\n\tmargin-top: 0px; \n\ttext-align:left;\n}\n.header-right-info ul.header-right-menu li .admintab-wrap.menu-setting-wrap.dropdown-menu {\n\tz-index: 9999999999;\n}\n.header-right-info ul.header-right-menu li .author-message-top, .header-right-info ul.header-right-menu li .notification-author, .header-right-info ul.header-right-menu li .author-log {\n\tz-index: 9999999999;\n}\n.mobile-menu-area .mean-container a.meanmenu-reveal {\n\tpadding: 13px 0px 11px;\n}\n.daily-feed-content .message-feed-single {\n\tmargin: 15px 0px 0px 130px;\n}\n.daily-feed-content {\n\tpadding-bottom: 70px;\n}\n.knob-single {\n\tmargin-bottom: 20px;\n}\n.input-mask-title {\n\ttext-align: left;\n}\n.alert-success-style1::after, .alert-success-style2::after, .alert-success-style3::after, .alert-success-style4::after {\n\tright: 51px;\n}\n.ant-res-b-30{\n\tmargin-bottom:30px;\n}\n.ant-res-b-30.ant-res-b-nt-30{\n\tmargin-bottom:0px;\n}\n.ant-res-b-30.ant-res-b2-30{\n\tmargin-bottom:0px;\n}\n.basic-ele-mg-b-10{\n\tmargin-bottom:10px;\n}\n.basic-ele-mg-t-20{\n\tmargin-top:20px;\n}\n.basic-res-b-30{\n\tmargin-bottom:30px;\n}\n.basic-ds-n{\n\tdisplay:none;\n}\n.pull-right.pull-right-pro {\n    float: left !important;\n}\n.ntn-b-mg-30{\n\tmargin-bottom:30px;\n}\n.c3-b-mg-30{\n\tmargin-bottom:30px;\n}\n.code-b-mg-30{\n\tmargin-bottom:30px;\n}\n.compose-b-mg-30{\n\tmargin-bottom:30px;\n}\n.compose-email-to, .compose-multiple-email {\n\tmargin-top: 0px;\n}\n.view-mail-reply-list ul.view-mail-forword li {\n\tpadding-left: 5px;\n}\n.view-mail-reply-list ul.view-mail-forword li a {\n\tpadding: 4px 7px;\n}\n.compose-email-to, .compose-multiple-email {\n\ttext-align: left;\n}\n.ct-client-b-mg-30{\n\tmargin-bottom:30px;\n}\n.ct-client-ds-n{\n\tdisplay:none;\n}\n.ct-client-b-mg-30.ct-client-b-mg-30-n{\n\tmargin-bottom:0px;\n}\n.ct-map-b-mg-30{\n\tmargin-bottom:30px;\n}\n.ct-map-b-mg-30{\n\tmargin-bottom:30px;\n}\n.ct-google-map-b-mg-30{\n\tmargin-bottom:30px;\n}\n.map-mg-t-40-gl{\n\tmargin-top:40px;\n}\n.preview-img-pro-ad{\n\tmargin-top:30px;\n}\n.ln-ch-mg-b{\n\tmargin-bottom:30px;\n}\n.md-mg-modal-b{\n\tmargin-bottom:30px;\n}\n.password-mt-b{\n\tmargin-bottom:30px;\n}\n.pdf-single-pro.shadow-reset .media {\n\twidth: 100% !important;\n\toverflow-x: auto;\n\toverflow-y: auto;\n\theight: 100%;\n}\n.peity-mg-b-30{\n\tmargin-bottom:30px;\n}\n.preloader-mg-b-30{\n\tmargin-bottom:30px;\n}\n.profile-res-mg-b-30{\n\tmargin-bottom:30px;\n}\n.profile-time-ds-none{\n\tdisplay:none;\n}\n.progress-circular , .progress-circular1{\n\ttext-align: center;\n}\n.user-profile-comment-input {\n\tmargin-top: 10px;\n}\n.profile-online-mg-t-30 {\n\tmargin-top: 30px;\n}\n.profile-user-post-content p {\n\tmargin: 0px 0px 15px 0px;\n}\n.profile-details-name-nn{\n\tdisplay:none;\n}\n.tab-content.res-tab-content-project{\n\tmargin-top:15px;\n}\n.user-profile-comment-img.projuct-details-img-tab {\n\ttext-align: left;\n\tmargin-bottom: 10px;\n}\n.project-details-mg-t-30{\n\tmargin-top: 30px;\n}\n.rating-project-respons {\n\tmargin-top: 20px;\n}\n.round-mg-t-30-gl{\n\tmargin-top: 30px;\n}\n.sparkel-pro-mg-t-30{\n\tmargin-top: 30px;\n}\n.view-mail-ov-mg-t-30{\n\tmargin-top: 30px;\n}\n.widget-ov-mg-t-n-30{\n\tmargin-top: 30px;\n}\n.progress-circular4, .progress-circular3, .progress-circular2, .progress-circular1 {\n\ttext-align: center;\n}\n/* Dark Layout Css */\n.left-sidebar-pro{\n\tdisplay:none;\n}\n.wrapper-pro{\n\tdisplay:block;\n}\n#sidebarCollapse{\n\tdisplay:none;\n}\n.fixed-header-top{\n\tposition:relative;\n}\n.des-none{\n\tdisplay:block;\n}\n.small-dn{\n\tdisplay:none;\n}\nul.message-list-menu li .message-time {\n\tfloat: right;\n}\n.logo-wrap-pro{\n\tdisplay:block;\n}\n.mini-navbar .content-inner-all {\n    margin-left: 0px;\n\ttransition: all 0.3s;\n}\n.content-inner-all {\n    margin-left: 0px;\n\ttransition: all 0.3s;\n}\n.fixed-header-top {\n\tleft: 0px;\n}\n.darklayout .knob-single input {\n\tright: 120px;\n}\n}\n\n \n/* small mobile :320px. */\n@media (max-width: 767px) {\n.container {width:300px}\n.header-top-menu{\n\tdisplay:none;\n}\n .mobile-menu-area{\n\tdisplay:block;\n}\n/* Header Css */\n.admin-logo{\n\ttext-align:center;\n\tmargin-top:10px;\n}\n.buy-button{\n\ttext-align:center;\n\tmargin-bottom:20px;\n}\n/* accordion Css */\n.responsive-accordion{\n\tmargin-bottom:30px !important;\n}\n/* Button Css */\n.responsive-btn .btn{\n\tmargin-bottom:10px !important;\n}\n.responsive-btn .btn-button-ct{\n\tmargin-bottom:10px !important;\n}\n/* form Css */\n.login-input-head {\n  padding-left: 0px;\n}\n.login-input-head p {\n  padding-bottom: 0px;\n}\n.login-title {\n  padding: 30px 0px;\n}\n.login-input-area, .login-textarea-area {\n  margin-right: 0px;\n}\n/* dropzone Css */\n.dropzone-custom-sys, .tab-content-details {\n  padding: 30px 20px;\n}\n/* review Css */\n.review-title {\n  text-align: center;\n}\n.review-rating {\n  padding: 0 30px;\n}\n.login-button-pro {\n  text-align: center;\n}\n/* tabs Css */\n.nav-tabs.custom-menu-wrap li a {\n  margin-bottom:10px;\n}\n/* Dashboard v.1 Css */\n\n.header-right-info .admin-name{\n\tdisplay:none;\n}\n.header-right-info .navbar-nav {\n    float: none;\n    padding: 17px 0px;\n    width: 100%;\n\ttext-align:center;\n}\n.header-right-info ul.header-right-menu li .author-log {\n    left: -65px;\n}\n.header-right-info ul.header-right-menu li .admintab-wrap.menu-setting-wrap.dropdown-menu {\n    left: -196px;\n    width: 307px;\n}\n.header-right-info ul.header-right-menu li .notification-author {\n\tleft: -84px;\n}\n.header-right-info ul.header-right-menu li .author-message-top, .header-right-info ul.header-right-menu li .notification-author, .header-right-info ul.header-right-menu li .author-log {\n\twidth: 307px;\n}\n.header-right-info .author-message-top::before{\n\tright: 63%;\n}\n.header-right-info ul.header-right-menu li .author-message-top {\n\tleft: -78px;\n}\n.header-right-info .notification-author::before {\n\tright: 63%;\n}\n.main-menu-area{\n\tdisplay:none;\n}\n.res-mg-t{\n\tmargin-top:40px;\n}\n.res-mg-t-30{\n\tmargin-top:30px;\n}\n.res-mg-b-10{\n\tmargin-bottom:10px;\n}\nul.message-list-menu li .message-time {\n\ttext-align: right;\n\twidth: 43%;\n\tdisplay: block;\n}\nul.message-list-menu li .message-info {\n\twidth: 190px;\n}\n.header-right-info ul.header-right-menu li .admintab-wrap.menu-setting-wrap.dropdown-menu {\n\tz-index: 9999999999;\n}\n.header-right-info ul.header-right-menu li .author-message-top, .header-right-info ul.header-right-menu li .notification-author, .header-right-info ul.header-right-menu li .author-log {\n\tz-index: 9999999999;\n}\n.dashone-doughnut {\n\tpadding: 0px 68px;\n}\n.datatable-dashv1-list .pull-right{\n\ttext-align:center;\n}\n.icon-date-timeline {\n\ttext-align: center;\n}\n.timeline-content {\n\tpadding: 15px 10px;\n}\n.mCSB_inside > .mCSB_container {\n\tmargin-right: 15px;\n}\n.icon-date-timeline {\n\tborder-right: 1px solid #ccc;\n}\n.timeline-content {\n\tborder-left: 1px solid #ccc;\n}\n.mobile-menu-area .mean-container a.meanmenu-reveal {\n\tpadding: 13px 0px 11px;\n}\n.custom-datatable-overright .fixed-table-pagination div.pagination, .fixed-table-pagination .pagination-detail {\n\tmargin-right: 5px;\n}\n.res-ds-n{\n\tdisplay:none;\n}\n.res-ds-n-t{\n\tdisplay:none;\n}\n.daily-feed-content .message-feed-single {\n\tmargin: 15px 0px 0px 30px;\n}\n.knob-single {\n\tmargin-bottom: 20px;\n}\n.input-mask-title {\n\ttext-align: left;\n}\n.alert-success-style1 p, .alert-success-style2 p, .alert-success-style3 p, .alert-success-style4 p {\n\tmargin: 0px 20px 0px 50px;\n}\n.alert-success-style1 .icon-sc-cl, .alert-success-style2 .icon-sc-cl, .alert-success-style3 .icon-sc-cl, .alert-success-style4 .icon-sc-cl {\n\tright: -10px;\n}\n.ant-res-b-30{\n\tmargin-bottom:30px;\n}\n.basic-ele-mg-b-10{\n\tmargin-bottom:10px;\n}\n.basic-ele-mg-t-20{\n\tmargin-top:20px;\n}\n.basic-res-b-30{\n\tmargin-bottom:30px;\n}\n.basic-ds-n{\n\tdisplay:none;\n}\n.pull-right.pull-right-pro {\n    float: left !important;\n}\n.ntn-b-mg-30{\n\tmargin-bottom:30px;\n}\n.c3-b-mg-30{\n\tmargin-bottom:30px;\n}\n.code-b-mg-30{\n\tmargin-bottom:30px;\n}\n.compose-b-mg-30{\n\tmargin-bottom:30px;\n}\n.view-mail-action{\n\tdisplay:none;\n}\n.mail-title h2 {\n\ttext-align: center;\n}\n.compose-email-to, .compose-multiple-email {\n\tmargin-top: 0px;\n}\n.view-mail-reply-list ul.view-mail-forword li {\n\tpadding-left: 5px;\n}\n.view-mail-reply-list ul.view-mail-forword li a {\n\tpadding: 4px 7px;\n}\n.c3-ds-n{\n\tdisplay:none;\n}\n.ct-client-b-mg-30{\n\tmargin-bottom:30px;\n}\n.ct-map-b-mg-30{\n\tmargin-bottom:30px;\n}\n.table-project-n{\n\tdisplay:none;\n}\n.ct-google-map-b-mg-30{\n\tmargin-bottom:30px;\n}\n.map-mg-t-40-gl{\n\tmargin-top:40px;\n}\n.preview-img-pro-ad{\n\tmargin-top:30px;\n}\n.cropper-container {\n\tleft: 0px !important;\n}\n.img-cropper-cp{\n\tmargin-bottom:10px;\n}\n.img-cropper-cp-t{\n\tmargin-top:10px;\n}\n.ln-ch-mg-b{\n\tmargin-bottom:30px;\n}\n.md-mg-modal-b{\n\tmargin-bottom:30px;\n}\n.password-mt-b{\n\tmargin-bottom:30px;\n}\n.password-mt-none{\n\tdisplay:none;\n}\n.pdf-single-pro.shadow-reset .media, .project-details-completeness {\n\twidth: 100% !important;\n\toverflow-x: auto;\n\toverflow-y: auto;\n\theight: 100%;\n}\n.peity-mg-b-30{\n\tmargin-bottom:30px;\n}\n.peity-res-scroll, .res-tree-ov{\n\twidth: 100% !important;\n\toverflow-x: auto;\n\toverflow-y: auto;\n\theight: 100%;\n}\n.preloader-mg-b-30{\n\tmargin-bottom:30px;\n}\n.user-profile-post-action .comment-action-st, .user-profile-post-action .comment-action-st.in {\n\twidth: 85%;\n}\n.profile-res-mg-b-30{\n\tmargin-bottom:30px;\n}\n.profile-time-ds-none{\n\tdisplay:none;\n}\n.progress-circular , .progress-circular1{\n\ttext-align: center;\n}\n.user-profile-comment-input {\n\tmargin-top: 10px;\n}\n.profile-online-mg-t-30 {\n\tmargin-top: 30px;\n}\n.project-details-mg {\n\tmargin:0px !important; \n}\n.project-details-st {\n\ttext-align: left;\n\tmargin-top: 20px;\n}\n.profile-details-name-nn{\n\tdisplay:none;\n}\n.nav.res-pd-less-sm > li > a{\n\tpadding: 10px 9px;\n}\n.tab-content.res-tab-content-project{\n\tmargin-top:15px;\n}\n.user-profile-comment-img.projuct-details-img-tab {\n\ttext-align: left;\n\tmargin-bottom: 10px;\n}\n.project-details-mg-t-30{\n\tmargin-top: 30px;\n}\n.rating-project-respons {\n\tmargin-top: 20px;\n}\n.round-mg-t-30-gl{\n\tmargin-top: 30px;\n}\n.sparkel-pro-mg-t-30{\n\tmargin-top: 30px;\n}\n.nav-tabs.custom-menu-wrap li a{\n\tpadding: 15px 15px;\n}\n.view-mail-ov-mg-t-30{\n\tmargin-top: 30px;\n}\n.view-mail-ov-d-n{\n\tdisplay:none;\n}\n.mail-title h2 {\n\ttext-align: left;\n}\n.view-author-mail .view-mail-date {\n\tfloat: left;\n}\n.view-mail-mg-b-10 {\n\tmargin-bottom: 10px;\n}\n.widget-ov-mg-t-30{\n\tmargin-top: 30px;\n}\n.progress-circular4, .progress-circular3, .progress-circular2, .progress-circular1 {\n\ttext-align: center;\n}\n/* Dark Layout Css */\n.left-sidebar-pro{\n\tdisplay:none;\n}\n.wrapper-pro{\n\tdisplay:block;\n}\n#sidebarCollapse{\n\tdisplay:none;\n}\n.fixed-header-top{\n\tposition:relative;\n}\n.des-none{\n\tdisplay:block;\n}\n.small-dn{\n\tdisplay:none;\n}\n.breadcome-heading h2 {\n\tfont-size: 18px;\n}\nul.message-list-menu li .message-time {\n\twidth: 20%;\n\tfloat: right;\n}\n#sparklinedask1 {\n\ttext-align: center;\n}\n.dashone-doughnut {\n\ttext-align: center;\n}\n.dash-adminpro-project-title {\n\ttext-align: center;\n}\n.project-dashone-phara {\n\ttext-align: center;\n}\n.logo-wrap-pro{\n\tdisplay:block;\n}\n.icon-date-timeline {\n\tborder-right: 0px solid #ccc;\n}\n.timeline-content {\n\tborder-left: 0px solid #ccc;\n\ttext-align:center;\n}\n.bs-bars.pull-left, .fixed-table-toolbar .columns {\n\twidth: 100%;\n\ttext-align:center;\n}\n.datatable-dashv1-list .pull-right {\n\twidth: 100%;\n\ttext-align:center;\n}\n.mini-navbar .content-inner-all {\n    margin-left: 0px;\n\ttransition: all 0.3s;\n}\n.content-inner-all {\n    margin-left: 0px;\n\ttransition: all 0.3s;\n}\n.fixed-header-top {\n\tleft: 0px;\n}\n.darklayout .knob-single input {\n\tright: 120px;\n}\n.mobile-menu-area{\n\tdisplay:block;\n}\n}\n \n/* Large Mobile :480px. */\n@media only screen and (min-width: 480px) and (max-width: 767px) {\n.container {width:450px}\n.header-top-menu{\n\tdisplay:none;\n}\n .mobile-menu-area{\n\tdisplay:block;\n}\n/* review Css */\n.review-title {\n  text-align: center;\n}\n.review-rating {\n  padding: 0 110px;\n}\n.login-button-pro {\n  text-align: center;\n}\nul.message-list-menu li .message-time {\n\ttext-align: right;\n\tdisplay: inline;\n}\nul.message-list-menu li .message-info {\n\twidth: 275px;\n}\n.dash-adminpro-project-title {\n\ttext-align: center;\n}\n.project-dashone-phara {\n\ttext-align: center;\n}\n.dashone-doughnut {\n\tpadding: 0px 145px;\n}\n.daily-feed-content .message-feed-single {\n\tmargin: 15px 0px 0px 90px;\n}\n.res-ds-n-t{\n\tdisplay:block;\n}\n.daily-feed-content h4 {\n\tfont-size: 16px;\n}\n.alert-success-style1 .icon-sc-cl, .alert-success-style2 .icon-sc-cl, .alert-success-style3 .icon-sc-cl, .alert-success-style4 .icon-sc-cl {\n\tright: -5px;\n}\n.mail-title h2 {\n\ttext-align: left;\n}\n.compose-email-to, .compose-multiple-email {\n\ttext-align: left;\n}\n.view-mail-action{\n\tdisplay:block;\n}\n.table-project-n{\n\tdisplay:inline-block;\n}\n.view-mail-ov-d-n{\n\tdisplay:none;\n}\n.darklayout .knob-single input {\n\tright: 240px;\n}\n}\n \n"
  },
  {
    "path": "public/admin/css/select2-bootstrap.css",
    "content": ".form-control .select2-choice {\n    border: 0;\n    border-radius: 2px;\n}\n\n.form-control .select2-choice .select2-arrow {\n    border-radius: 0 2px 2px 0;   \n}\n\n.form-control.select2-container {\n    height: auto !important;\n    padding: 0px;\n}\n\n.form-control.select2-container.select2-dropdown-open {\n    border-color: #5897FB;\n    border-radius: 3px 3px 0 0;\n}\n\n.form-control .select2-container.select2-dropdown-open .select2-choices {\n    border-radius: 3px 3px 0 0;\n}\n\n.form-control.select2-container .select2-choices {\n    border: 0 !important;\n    border-radius: 3px;\n}\n\n.control-group.warning .select2-container .select2-choice,\n.control-group.warning .select2-container .select2-choices,\n.control-group.warning .select2-container-active .select2-choice,\n.control-group.warning .select2-container-active .select2-choices,\n.control-group.warning .select2-dropdown-open.select2-drop-above .select2-choice,\n.control-group.warning .select2-dropdown-open.select2-drop-above .select2-choices,\n.control-group.warning .select2-container-multi.select2-container-active .select2-choices {\n    border: 1px solid #C09853 !important;\n}\n\n.control-group.warning .select2-container .select2-choice div {\n    border-left: 1px solid #C09853 !important;\n    background: #FCF8E3 !important;\n}\n\n.control-group.error .select2-container .select2-choice,\n.control-group.error .select2-container .select2-choices,\n.control-group.error .select2-container-active .select2-choice,\n.control-group.error .select2-container-active .select2-choices,\n.control-group.error .select2-dropdown-open.select2-drop-above .select2-choice,\n.control-group.error .select2-dropdown-open.select2-drop-above .select2-choices,\n.control-group.error .select2-container-multi.select2-container-active .select2-choices {\n    border: 1px solid #B94A48 !important;\n}\n\n.control-group.error .select2-container .select2-choice div {\n    border-left: 1px solid #B94A48 !important;\n    background: #F2DEDE !important;\n}\n\n.control-group.info .select2-container .select2-choice,\n.control-group.info .select2-container .select2-choices,\n.control-group.info .select2-container-active .select2-choice,\n.control-group.info .select2-container-active .select2-choices,\n.control-group.info .select2-dropdown-open.select2-drop-above .select2-choice,\n.control-group.info .select2-dropdown-open.select2-drop-above .select2-choices,\n.control-group.info .select2-container-multi.select2-container-active .select2-choices {\n    border: 1px solid #3A87AD !important;\n}\n\n.control-group.info .select2-container .select2-choice div {\n    border-left: 1px solid #3A87AD !important;\n    background: #D9EDF7 !important;\n}\n\n.control-group.success .select2-container .select2-choice,\n.control-group.success .select2-container .select2-choices,\n.control-group.success .select2-container-active .select2-choice,\n.control-group.success .select2-container-active .select2-choices,\n.control-group.success .select2-dropdown-open.select2-drop-above .select2-choice,\n.control-group.success .select2-dropdown-open.select2-drop-above .select2-choices,\n.control-group.success .select2-container-multi.select2-container-active .select2-choices {\n    border: 1px solid #468847 !important;\n}\n\n.control-group.success .select2-container .select2-choice div {\n    border-left: 1px solid #468847 !important;\n    background: #DFF0D8 !important;\n}"
  },
  {
    "path": "public/admin/css/select2.css",
    "content": "/*\nVersion: 3.4.4 Timestamp: Thu Oct 24 13:23:11 PDT 2013\n*/\n.select2-container {\n    margin: 0;\n    position: relative;\n    display: inline-block;\n    /* inline-block for ie7 */\n    zoom: 1;\n    *display: inline;\n    vertical-align: middle;\n}\n\n.select2-container,\n.select2-drop,\n.select2-search,\n.select2-search input {\n  /*\n    Force border-box so that % widths fit the parent\n    container without overlap because of margin/padding.\n\n    More Info : http://www.quirksmode.org/css/box.html\n  */\n  -webkit-box-sizing: border-box; /* webkit */\n     -moz-box-sizing: border-box; /* firefox */\n          box-sizing: border-box; /* css3 */\n}\n\n.select2-container .select2-choice {\n    display: block;\n    height: 26px;\n    padding: 0 0 0 8px;\n    overflow: hidden;\n    position: relative;\n\n    border: 1px solid #aaa;\n    white-space: nowrap;\n    line-height: 26px;\n    color: #444;\n    text-decoration: none;\n\n    border-radius: 4px;\n\n    background-clip: padding-box;\n\n    -webkit-touch-callout: none;\n      -webkit-user-select: none;\n         -moz-user-select: none;\n          -ms-user-select: none;\n              user-select: none;\n\n    background-color: #fff;\n    background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eee), color-stop(0.5, #fff));\n    background-image: -webkit-linear-gradient(center bottom, #eee 0%, #fff 50%);\n    background-image: -moz-linear-gradient(center bottom, #eee 0%, #fff 50%);\n    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#ffffff', endColorstr = '#eeeeee', GradientType = 0);\n    background-image: linear-gradient(top, #fff 0%, #eee 50%);\n}\n\n.select2-container.select2-drop-above .select2-choice {\n    border-bottom-color: #aaa;\n\n    border-radius: 0 0 4px 4px;\n\n    background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eee), color-stop(0.9, #fff));\n    background-image: -webkit-linear-gradient(center bottom, #eee 0%, #fff 90%);\n    background-image: -moz-linear-gradient(center bottom, #eee 0%, #fff 90%);\n    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#eeeeee', GradientType=0);\n    background-image: linear-gradient(top, #eee 0%, #fff 90%);\n}\n\n.select2-container.select2-allowclear .select2-choice .select2-chosen {\n    margin-right: 42px;\n}\n\n.select2-container .select2-choice > .select2-chosen {\n    margin-right: 26px;\n    display: block;\n    overflow: hidden;\n\n    white-space: nowrap;\n\n    text-overflow: ellipsis;\n}\n\n.select2-container .select2-choice abbr {\n    display: none;\n    width: 12px;\n    height: 12px;\n    position: absolute;\n    right: 24px;\n    top: 8px;\n\n    font-size: 1px;\n    text-decoration: none;\n\n    border: 0;\n    background: url('select2.png') right top no-repeat;\n    cursor: pointer;\n    outline: 0;\n}\n\n.select2-container.select2-allowclear .select2-choice abbr {\n    display: inline-block;\n}\n\n.select2-container .select2-choice abbr:hover {\n    background-position: right -11px;\n    cursor: pointer;\n}\n\n.select2-drop-mask {\n    border: 0;\n    margin: 0;\n    padding: 0;\n    position: fixed;\n    left: 0;\n    top: 0;\n    min-height: 100%;\n    min-width: 100%;\n    height: auto;\n    width: auto;\n    opacity: 0;\n    z-index: 9998;\n    /* styles required for IE to work */\n    background-color: #fff;\n    filter: alpha(opacity=0);\n}\n\n.select2-drop {\n    width: 100%;\n    margin-top: -1px;\n    position: absolute;\n    z-index: 9999;\n    top: 100%;\n\n    background: #fff;\n    color: #000;\n    border: 1px solid #aaa;\n    border-top: 0;\n\n    border-radius: 0 0 4px 4px;\n\n    -webkit-box-shadow: 0 4px 5px rgba(0, 0, 0, .15);\n            box-shadow: 0 4px 5px rgba(0, 0, 0, .15);\n}\n\n.select2-drop-auto-width {\n    border-top: 1px solid #aaa;\n    width: auto;\n}\n\n.select2-drop-auto-width .select2-search {\n    padding-top: 4px;\n}\n\n.select2-drop.select2-drop-above {\n    margin-top: 1px;\n    border-top: 1px solid #aaa;\n    border-bottom: 0;\n\n    border-radius: 4px 4px 0 0;\n\n    -webkit-box-shadow: 0 -4px 5px rgba(0, 0, 0, .15);\n            box-shadow: 0 -4px 5px rgba(0, 0, 0, .15);\n}\n\n.select2-drop-active {\n    border: 1px solid #5897fb;\n    border-top: none;\n}\n\n.select2-drop.select2-drop-above.select2-drop-active {\n    border-top: 1px solid #5897fb;\n}\n\n.select2-container .select2-choice .select2-arrow {\n    display: inline-block;\n    width: 18px;\n    height: 100%;\n    position: absolute;\n    right: 0;\n    top: 0;\n\n    border-left: 1px solid #aaa;\n    border-radius: 0 4px 4px 0;\n\n    background-clip: padding-box;\n\n    background: #ccc;\n    background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #ccc), color-stop(0.6, #eee));\n    background-image: -webkit-linear-gradient(center bottom, #ccc 0%, #eee 60%);\n    background-image: -moz-linear-gradient(center bottom, #ccc 0%, #eee 60%);\n    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#eeeeee', endColorstr = '#cccccc', GradientType = 0);\n    background-image: linear-gradient(top, #ccc 0%, #eee 60%);\n}\n\n.select2-container .select2-choice .select2-arrow b {\n    display: block;\n    width: 100%;\n    height: 100%;\n    background: url('select2.png') no-repeat 0 1px;\n}\n\n.select2-search {\n    display: inline-block;\n    width: 100%;\n    min-height: 26px;\n    margin: 0;\n    padding-left: 4px;\n    padding-right: 4px;\n\n    position: relative;\n    z-index: 10000;\n\n    white-space: nowrap;\n}\n\n.select2-search input {\n    width: 100%;\n    height: auto !important;\n    min-height: 26px;\n    padding: 4px 20px 4px 5px;\n    margin: 0;\n\n    outline: 0;\n    font-family: sans-serif;\n    font-size: 1em;\n\n    border: 1px solid #aaa;\n    border-radius: 0;\n\n    -webkit-box-shadow: none;\n            box-shadow: none;\n\n    background: #fff url('select2.png') no-repeat 100% -22px;\n    background: url('select2.png') no-repeat 100% -22px, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee));\n    background: url('select2.png') no-repeat 100% -22px, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%);\n    background: url('select2.png') no-repeat 100% -22px, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%);\n    background: url('select2.png') no-repeat 100% -22px, linear-gradient(top, #fff 85%, #eee 99%);\n}\n\n.select2-drop.select2-drop-above .select2-search input {\n    margin-top: 4px;\n}\n\n.select2-search input.select2-active {\n    background: #fff url('select2-spinner.gif') no-repeat 100%;\n    background: url('select2-spinner.gif') no-repeat 100%, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee));\n    background: url('select2-spinner.gif') no-repeat 100%, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%);\n    background: url('select2-spinner.gif') no-repeat 100%, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%);\n    background: url('select2-spinner.gif') no-repeat 100%, linear-gradient(top, #fff 85%, #eee 99%);\n}\n\n.select2-container-active .select2-choice,\n.select2-container-active .select2-choices {\n    border: 1px solid #5897fb;\n    outline: none;\n\n    -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .3);\n            box-shadow: 0 0 5px rgba(0, 0, 0, .3);\n}\n\n.select2-dropdown-open .select2-choice {\n    border-bottom-color: transparent;\n    -webkit-box-shadow: 0 1px 0 #fff inset;\n            box-shadow: 0 1px 0 #fff inset;\n\n    border-bottom-left-radius: 0;\n    border-bottom-right-radius: 0;\n\n    background-color: #eee;\n    background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #fff), color-stop(0.5, #eee));\n    background-image: -webkit-linear-gradient(center bottom, #fff 0%, #eee 50%);\n    background-image: -moz-linear-gradient(center bottom, #fff 0%, #eee 50%);\n    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0);\n    background-image: linear-gradient(top, #fff 0%, #eee 50%);\n}\n\n.select2-dropdown-open.select2-drop-above .select2-choice,\n.select2-dropdown-open.select2-drop-above .select2-choices {\n    border: 1px solid #5897fb;\n    border-top-color: transparent;\n\n    background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #fff), color-stop(0.5, #eee));\n    background-image: -webkit-linear-gradient(center top, #fff 0%, #eee 50%);\n    background-image: -moz-linear-gradient(center top, #fff 0%, #eee 50%);\n    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0);\n    background-image: linear-gradient(bottom, #fff 0%, #eee 50%);\n}\n\n.select2-dropdown-open .select2-choice .select2-arrow {\n    background: transparent;\n    border-left: none;\n    filter: none;\n}\n.select2-dropdown-open .select2-choice .select2-arrow b {\n    background-position: -18px 1px;\n}\n\n/* results */\n.select2-results {\n    max-height: 200px;\n    padding: 0 0 0 4px;\n    margin: 4px 4px 4px 0;\n    position: relative;\n    overflow-x: hidden;\n    overflow-y: auto;\n    -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\n.select2-results ul.select2-result-sub {\n    margin: 0;\n    padding-left: 0;\n}\n\n.select2-results ul.select2-result-sub > li .select2-result-label { padding-left: 20px }\n.select2-results ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 40px }\n.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 60px }\n.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 80px }\n.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 100px }\n.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 110px }\n.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 120px }\n\n.select2-results li {\n    list-style: none;\n    display: list-item;\n    background-image: none;\n}\n\n.select2-results li.select2-result-with-children > .select2-result-label {\n    font-weight: bold;\n}\n\n.select2-results .select2-result-label {\n    padding: 3px 7px 4px;\n    margin: 0;\n    cursor: pointer;\n\n    min-height: 1em;\n\n    -webkit-touch-callout: none;\n      -webkit-user-select: none;\n         -moz-user-select: none;\n          -ms-user-select: none;\n              user-select: none;\n}\n\n.select2-results .select2-highlighted {\n    background: #3875d7;\n    color: #fff;\n}\n\n.select2-results li em {\n    background: #feffde;\n    font-style: normal;\n}\n\n.select2-results .select2-highlighted em {\n    background: transparent;\n}\n\n.select2-results .select2-highlighted ul {\n    background: #fff;\n    color: #000;\n}\n\n\n.select2-results .select2-no-results,\n.select2-results .select2-searching,\n.select2-results .select2-selection-limit {\n    background: #f4f4f4;\n    display: list-item;\n}\n\n/*\ndisabled look for disabled choices in the results dropdown\n*/\n.select2-results .select2-disabled.select2-highlighted {\n    color: #666;\n    background: #f4f4f4;\n    display: list-item;\n    cursor: default;\n}\n.select2-results .select2-disabled {\n  background: #f4f4f4;\n  display: list-item;\n  cursor: default;\n}\n\n.select2-results .select2-selected {\n    display: none;\n}\n\n.select2-more-results.select2-active {\n    background: #f4f4f4 url('select2-spinner.gif') no-repeat 100%;\n}\n\n.select2-more-results {\n    background: #f4f4f4;\n    display: list-item;\n}\n\n/* disabled styles */\n\n.select2-container.select2-container-disabled .select2-choice {\n    background-color: #f4f4f4;\n    background-image: none;\n    border: 1px solid #ddd;\n    cursor: default;\n}\n\n.select2-container.select2-container-disabled .select2-choice .select2-arrow {\n    background-color: #f4f4f4;\n    background-image: none;\n    border-left: 0;\n}\n\n.select2-container.select2-container-disabled .select2-choice abbr {\n    display: none;\n}\n\n\n/* multiselect */\n\n.select2-container-multi .select2-choices {\n    height: auto !important;\n    height: 1%;\n    margin: 0;\n    padding: 0;\n    position: relative;\n\n    border: 1px solid #aaa;\n    cursor: text;\n    overflow: hidden;\n\n    background-color: #fff;\n    background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(1%, #eee), color-stop(15%, #fff));\n    background-image: -webkit-linear-gradient(top, #eee 1%, #fff 15%);\n    background-image: -moz-linear-gradient(top, #eee 1%, #fff 15%);\n    background-image: linear-gradient(top, #eee 1%, #fff 15%);\n}\n\n.select2-locked {\n  padding: 3px 5px 3px 5px !important;\n}\n\n.select2-container-multi .select2-choices {\n    min-height: 26px;\n}\n\n.select2-container-multi.select2-container-active .select2-choices {\n    border: 1px solid #5897fb;\n    outline: none;\n\n    -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .3);\n            box-shadow: 0 0 5px rgba(0, 0, 0, .3);\n}\n.select2-container-multi .select2-choices li {\n    float: left;\n    list-style: none;\n}\n.select2-container-multi .select2-choices .select2-search-field {\n    margin: 0;\n    padding: 0;\n    white-space: nowrap;\n}\n\n.select2-container-multi .select2-choices .select2-search-field input {\n    padding: 5px;\n    margin: 1px 0;\n\n    font-family: sans-serif;\n    font-size: 100%;\n    color: #666;\n    outline: 0;\n    border: 0;\n    -webkit-box-shadow: none;\n            box-shadow: none;\n    background: transparent !important;\n}\n\n.select2-container-multi .select2-choices .select2-search-field input.select2-active {\n    background: #fff url('select2-spinner.gif') no-repeat 100% !important;\n}\n\n.select2-default {\n    color: #999 !important;\n}\n\n.select2-container-multi .select2-choices .select2-search-choice {\n    padding: 3px 5px 3px 18px;\n    margin: 3px 0 3px 5px;\n    position: relative;\n\n    line-height: 13px;\n    color: #333;\n    cursor: default;\n    border: 1px solid #aaaaaa;\n\n    border-radius: 3px;\n\n    -webkit-box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05);\n            box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05);\n\n    background-clip: padding-box;\n\n    -webkit-touch-callout: none;\n      -webkit-user-select: none;\n         -moz-user-select: none;\n          -ms-user-select: none;\n              user-select: none;\n\n    background-color: #e4e4e4;\n    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#f4f4f4', GradientType=0);\n    background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eee));\n    background-image: -webkit-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);\n    background-image: -moz-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);\n    background-image: linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);\n}\n.select2-container-multi .select2-choices .select2-search-choice .select2-chosen {\n    cursor: default;\n}\n.select2-container-multi .select2-choices .select2-search-choice-focus {\n    background: #d4d4d4;\n}\n\n.select2-search-choice-close {\n    display: block;\n    width: 12px;\n    height: 13px;\n    position: absolute;\n    right: 3px;\n    top: 4px;\n\n    font-size: 1px;\n    outline: none;\n    background: url('select2.png') right top no-repeat;\n}\n\n.select2-container-multi .select2-search-choice-close {\n    left: 3px;\n}\n\n.select2-container-multi .select2-choices .select2-search-choice .select2-search-choice-close:hover {\n  background-position: right -11px;\n}\n.select2-container-multi .select2-choices .select2-search-choice-focus .select2-search-choice-close {\n    background-position: right -11px;\n}\n\n/* disabled styles */\n.select2-container-multi.select2-container-disabled .select2-choices {\n    background-color: #f4f4f4;\n    background-image: none;\n    border: 1px solid #ddd;\n    cursor: default;\n}\n\n.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice {\n    padding: 3px 5px 3px 5px;\n    border: 1px solid #ddd;\n    background-image: none;\n    background-color: #f4f4f4;\n}\n\n.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice .select2-search-choice-close {    display: none;\n    background: none;\n}\n/* end multiselect */\n\n\n.select2-result-selectable .select2-match,\n.select2-result-unselectable .select2-match {\n    text-decoration: underline;\n}\n\n.select2-offscreen, .select2-offscreen:focus {\n    clip: rect(0 0 0 0) !important;\n    width: 1px !important;\n    height: 1px !important;\n    border: 0 !important;\n    margin: 0 !important;\n    padding: 0 !important;\n    overflow: hidden !important;\n    position: absolute !important;\n    outline: 0 !important;\n    left: 0px !important;\n    top: 0px !important;\n}\n\n.select2-display-none {\n    display: none;\n}\n\n.select2-measure-scrollbar {\n    position: absolute;\n    top: -10000px;\n    left: -10000px;\n    width: 100px;\n    height: 100px;\n    overflow: scroll;\n}\n/* Retina-ize icons */\n\n@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-resolution: 144dpi)  {\n  .select2-search input, .select2-search-choice-close, .select2-container .select2-choice abbr, .select2-container .select2-choice .select2-arrow b {\n      background-image: url('select2x2.png') !important;\n      background-repeat: no-repeat !important;\n      background-size: 60px 40px !important;\n  }\n  .select2-search input {\n      background-position: 100% -21px !important;\n  }\n}"
  },
  {
    "path": "public/admin/css/summernote.css",
    "content": "@font-face{font-family:\"summernote\";font-style:normal;font-weight:normal;src:url(\"./font/summernote.eot?0d0d5fac99cc8774d89eb08b1a8323c4\");src:url(\"./font/summernote.eot?#iefix\") format(\"embedded-opentype\"),url(\"./font/summernote.woff?0d0d5fac99cc8774d89eb08b1a8323c4\") format(\"woff\"),url(\"./font/summernote.ttf?0d0d5fac99cc8774d89eb08b1a8323c4\") format(\"truetype\")}[class^=\"note-icon-\"]:before,[class*=\" note-icon-\"]:before{display:inline-block;font:normal normal normal 14px summernote;font-size:inherit;-webkit-font-smoothing:antialiased;text-decoration:inherit;text-rendering:auto;text-transform:none;vertical-align:middle;speak:none;-moz-osx-font-smoothing:grayscale}.note-icon-align-center:before,.note-icon-align-indent:before,.note-icon-align-justify:before,.note-icon-align-left:before,.note-icon-align-outdent:before,.note-icon-align-right:before,.note-icon-align:before,.note-icon-arrow-circle-down:before,.note-icon-arrow-circle-left:before,.note-icon-arrow-circle-right:before,.note-icon-arrow-circle-up:before,.note-icon-arrows-alt:before,.note-icon-arrows-h:before,.note-icon-arrows-v:before,.note-icon-bold:before,.note-icon-caret:before,.note-icon-chain-broken:before,.note-icon-circle:before,.note-icon-close:before,.note-icon-code:before,.note-icon-col-after:before,.note-icon-col-before:before,.note-icon-col-remove:before,.note-icon-eraser:before,.note-icon-font:before,.note-icon-frame:before,.note-icon-italic:before,.note-icon-link:before,.note-icon-magic:before,.note-icon-menu-check:before,.note-icon-minus:before,.note-icon-orderedlist:before,.note-icon-pencil:before,.note-icon-picture:before,.note-icon-question:before,.note-icon-redo:before,.note-icon-row-above:before,.note-icon-row-below:before,.note-icon-row-remove:before,.note-icon-special-character:before,.note-icon-square:before,.note-icon-strikethrough:before,.note-icon-subscript:before,.note-icon-summernote:before,.note-icon-superscript:before,.note-icon-table:before,.note-icon-text-height:before,.note-icon-trash:before,.note-icon-underline:before,.note-icon-undo:before,.note-icon-unorderedlist:before,.note-icon-video:before{display:inline-block;font-family:\"summernote\";font-style:normal;font-weight:normal;text-decoration:inherit}.note-icon-align-center:before{content:\"\\f101\"}.note-icon-align-indent:before{content:\"\\f102\"}.note-icon-align-justify:before{content:\"\\f103\"}.note-icon-align-left:before{content:\"\\f104\"}.note-icon-align-outdent:before{content:\"\\f105\"}.note-icon-align-right:before{content:\"\\f106\"}.note-icon-align:before{content:\"\\f107\"}.note-icon-arrow-circle-down:before{content:\"\\f108\"}.note-icon-arrow-circle-left:before{content:\"\\f109\"}.note-icon-arrow-circle-right:before{content:\"\\f10a\"}.note-icon-arrow-circle-up:before{content:\"\\f10b\"}.note-icon-arrows-alt:before{content:\"\\f10c\"}.note-icon-arrows-h:before{content:\"\\f10d\"}.note-icon-arrows-v:before{content:\"\\f10e\"}.note-icon-bold:before{content:\"\\f10f\"}.note-icon-caret:before{content:\"\\f110\"}.note-icon-chain-broken:before{content:\"\\f111\"}.note-icon-circle:before{content:\"\\f112\"}.note-icon-close:before{content:\"\\f113\"}.note-icon-code:before{content:\"\\f114\"}.note-icon-col-after:before{content:\"\\f115\"}.note-icon-col-before:before{content:\"\\f116\"}.note-icon-col-remove:before{content:\"\\f117\"}.note-icon-eraser:before{content:\"\\f118\"}.note-icon-font:before{content:\"\\f119\"}.note-icon-frame:before{content:\"\\f11a\"}.note-icon-italic:before{content:\"\\f11b\"}.note-icon-link:before{content:\"\\f11c\"}.note-icon-magic:before{content:\"\\f11d\"}.note-icon-menu-check:before{content:\"\\f11e\"}.note-icon-minus:before{content:\"\\f11f\"}.note-icon-orderedlist:before{content:\"\\f120\"}.note-icon-pencil:before{content:\"\\f121\"}.note-icon-picture:before{content:\"\\f122\"}.note-icon-question:before{content:\"\\f123\"}.note-icon-redo:before{content:\"\\f124\"}.note-icon-row-above:before{content:\"\\f125\"}.note-icon-row-below:before{content:\"\\f126\"}.note-icon-row-remove:before{content:\"\\f127\"}.note-icon-special-character:before{content:\"\\f128\"}.note-icon-square:before{content:\"\\f129\"}.note-icon-strikethrough:before{content:\"\\f12a\"}.note-icon-subscript:before{content:\"\\f12b\"}.note-icon-summernote:before{content:\"\\f12c\"}.note-icon-superscript:before{content:\"\\f12d\"}.note-icon-table:before{content:\"\\f12e\"}.note-icon-text-height:before{content:\"\\f12f\"}.note-icon-trash:before{content:\"\\f130\"}.note-icon-underline:before{content:\"\\f131\"}.note-icon-undo:before{content:\"\\f132\"}.note-icon-unorderedlist:before{content:\"\\f133\"}.note-icon-video:before{content:\"\\f134\"}.note-editor{position:relative}.note-editor .note-dropzone{position:absolute;z-index:100;display:none;color:#87cefa;background-color:white;opacity:.95}.note-editor .note-dropzone .note-dropzone-message{display:table-cell;font-size:28px;font-weight:bold;text-align:center;vertical-align:middle}.note-editor .note-dropzone.hover{color:#098ddf}.note-editor.dragover .note-dropzone{display:table}.note-editor .note-editing-area{position:relative}.note-editor .note-editing-area .note-editable{outline:0}.note-editor .note-editing-area .note-editable sup{vertical-align:super}.note-editor .note-editing-area .note-editable sub{vertical-align:sub}.note-editor .note-editing-area img.note-float-left{margin-right:10px}.note-editor .note-editing-area img.note-float-right{margin-left:10px}.note-editor.note-frame{border:1px solid #a9a9a9}.note-editor.note-frame.codeview .note-editing-area .note-editable{display:none}.note-editor.note-frame.codeview .note-editing-area .note-codable{display:block}.note-editor.note-frame .note-editing-area{overflow:hidden}.note-editor.note-frame .note-editing-area .note-editable{padding:10px;overflow:auto;color:#000;background-color:#fff}.note-editor.note-frame .note-editing-area .note-editable[contenteditable=\"false\"]{background-color:#e5e5e5}.note-editor.note-frame .note-editing-area .note-codable{display:none;width:100%;padding:10px;margin-bottom:0;font-family:Menlo,Monaco,monospace,sans-serif;font-size:14px;color:#ccc;background-color:#222;border:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;box-shadow:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;resize:none}.note-editor.note-frame.fullscreen{position:fixed;top:0;left:0;z-index:1050;width:100%!important}.note-editor.note-frame.fullscreen .note-editable{background-color:white}.note-editor.note-frame.fullscreen .note-resizebar{display:none}.note-editor.note-frame .note-statusbar{background-color:#f5f5f5;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.note-editor.note-frame .note-statusbar .note-resizebar{width:100%;height:8px;padding-top:1px;cursor:ns-resize}.note-editor.note-frame .note-statusbar .note-resizebar .note-icon-bar{width:20px;margin:1px auto;border-top:1px solid #a9a9a9}.note-editor.note-frame .note-placeholder{padding:10px}.note-popover.popover{max-width:none}.note-popover.popover .popover-content a{display:inline-block;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle}.note-popover.popover .arrow{left:20px!important}.note-popover .popover-content,.panel-heading.note-toolbar{padding:0 0 5px 5px;margin:0}.note-popover .popover-content>.btn-group,.panel-heading.note-toolbar>.btn-group{margin-top:5px;margin-right:5px;margin-left:0}.note-popover .popover-content .btn-group .note-table,.panel-heading.note-toolbar .btn-group .note-table{min-width:0;padding:5px}.note-popover .popover-content .btn-group .note-table .note-dimension-picker,.panel-heading.note-toolbar .btn-group .note-table .note-dimension-picker{font-size:18px}.note-popover .popover-content .btn-group .note-table .note-dimension-picker .note-dimension-picker-mousecatcher,.panel-heading.note-toolbar .btn-group .note-table .note-dimension-picker .note-dimension-picker-mousecatcher{position:absolute!important;z-index:3;width:10em;height:10em;cursor:pointer}.note-popover .popover-content .btn-group .note-table .note-dimension-picker .note-dimension-picker-unhighlighted,.panel-heading.note-toolbar .btn-group .note-table .note-dimension-picker .note-dimension-picker-unhighlighted{position:relative!important;z-index:1;width:5em;height:5em;background:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIj4+Pjp6ekKlAqjAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKhmnaJzPAAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC') repeat}.note-popover .popover-content .btn-group .note-table .note-dimension-picker .note-dimension-picker-highlighted,.panel-heading.note-toolbar .btn-group .note-table .note-dimension-picker .note-dimension-picker-highlighted{position:absolute!important;z-index:2;width:1em;height:1em;background:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIjd6vvD2f9LKLW+AAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKwNDEVT0AAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC') repeat}.note-popover .popover-content .note-style h1,.panel-heading.note-toolbar .note-style h1,.note-popover .popover-content .note-style h2,.panel-heading.note-toolbar .note-style h2,.note-popover .popover-content .note-style h3,.panel-heading.note-toolbar .note-style h3,.note-popover .popover-content .note-style h4,.panel-heading.note-toolbar .note-style h4,.note-popover .popover-content .note-style h5,.panel-heading.note-toolbar .note-style h5,.note-popover .popover-content .note-style h6,.panel-heading.note-toolbar .note-style h6,.note-popover .popover-content .note-style blockquote,.panel-heading.note-toolbar .note-style blockquote{margin:0}.note-popover .popover-content .note-color .dropdown-toggle,.panel-heading.note-toolbar .note-color .dropdown-toggle{width:20px;padding-left:5px}.note-popover .popover-content .note-color .dropdown-menu,.panel-heading.note-toolbar .note-color .dropdown-menu{min-width:337px}.note-popover .popover-content .note-color .dropdown-menu .note-palette,.panel-heading.note-toolbar .note-color .dropdown-menu .note-palette{display:inline-block;width:160px;margin:0}.note-popover .popover-content .note-color .dropdown-menu .note-palette:first-child,.panel-heading.note-toolbar .note-color .dropdown-menu .note-palette:first-child{margin:0 5px}.note-popover .popover-content .note-color .dropdown-menu .note-palette .note-palette-title,.panel-heading.note-toolbar .note-color .dropdown-menu .note-palette .note-palette-title{margin:2px 7px;font-size:12px;text-align:center;border-bottom:1px solid #eee}.note-popover .popover-content .note-color .dropdown-menu .note-palette .note-color-reset,.panel-heading.note-toolbar .note-color .dropdown-menu .note-palette .note-color-reset{width:100%;padding:0 3px;margin:3px;font-size:11px;cursor:pointer;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.note-popover .popover-content .note-color .dropdown-menu .note-palette .note-color-row,.panel-heading.note-toolbar .note-color .dropdown-menu .note-palette .note-color-row{height:20px}.note-popover .popover-content .note-color .dropdown-menu .note-palette .note-color-reset:hover,.panel-heading.note-toolbar .note-color .dropdown-menu .note-palette .note-color-reset:hover{background:#eee}.note-popover .popover-content .note-para .dropdown-menu,.panel-heading.note-toolbar .note-para .dropdown-menu{min-width:216px;padding:5px}.note-popover .popover-content .note-para .dropdown-menu>div:first-child,.panel-heading.note-toolbar .note-para .dropdown-menu>div:first-child{margin-right:5px}.note-popover .popover-content .dropdown-menu,.panel-heading.note-toolbar .dropdown-menu{min-width:90px}.note-popover .popover-content .dropdown-menu.right,.panel-heading.note-toolbar .dropdown-menu.right{right:0;left:auto}.note-popover .popover-content .dropdown-menu.right::before,.panel-heading.note-toolbar .dropdown-menu.right::before{right:9px;left:auto!important}.note-popover .popover-content .dropdown-menu.right::after,.panel-heading.note-toolbar .dropdown-menu.right::after{right:10px;left:auto!important}.note-popover .popover-content .dropdown-menu.note-check li a i,.panel-heading.note-toolbar .dropdown-menu.note-check li a i{color:deepskyblue;visibility:hidden}.note-popover .popover-content .dropdown-menu.note-check li a.checked i,.panel-heading.note-toolbar .dropdown-menu.note-check li a.checked i{visibility:visible}.note-popover .popover-content .note-fontsize-10,.panel-heading.note-toolbar .note-fontsize-10{font-size:10px}.note-popover .popover-content .note-color-palette,.panel-heading.note-toolbar .note-color-palette{line-height:1}.note-popover .popover-content .note-color-palette div .note-color-btn,.panel-heading.note-toolbar .note-color-palette div .note-color-btn{width:20px;height:20px;padding:0;margin:0;border:1px solid #fff}.note-popover .popover-content .note-color-palette div .note-color-btn:hover,.panel-heading.note-toolbar .note-color-palette div .note-color-btn:hover{border:1px solid #000}.note-dialog>div{display:none}.note-dialog .form-group{margin-right:0;margin-left:0}.note-dialog .note-modal-form{margin:0}.note-dialog .note-image-dialog .note-dropzone{min-height:100px;margin-bottom:10px;font-size:30px;line-height:4;color:lightgray;text-align:center;border:4px dashed lightgray}@-moz-document url-prefix(){.note-image-input{height:auto}}.note-placeholder{position:absolute;display:none;color:gray}.note-handle .note-control-selection{position:absolute;display:none;border:1px solid black}.note-handle .note-control-selection>div{position:absolute}.note-handle .note-control-selection .note-control-selection-bg{width:100%;height:100%;background-color:black;-webkit-opacity:.3;-khtml-opacity:.3;-moz-opacity:.3;opacity:.3;-ms-filter:alpha(opacity=30);filter:alpha(opacity=30)}.note-handle .note-control-selection .note-control-handle{width:7px;height:7px;border:1px solid black}.note-handle .note-control-selection .note-control-holder{width:7px;height:7px;border:1px solid black}.note-handle .note-control-selection .note-control-sizing{width:7px;height:7px;background-color:white;border:1px solid black}.note-handle .note-control-selection .note-control-nw{top:-5px;left:-5px;border-right:0;border-bottom:0}.note-handle .note-control-selection .note-control-ne{top:-5px;right:-5px;border-bottom:0;border-left:none}.note-handle .note-control-selection .note-control-sw{bottom:-5px;left:-5px;border-top:0;border-right:0}.note-handle .note-control-selection .note-control-se{right:-5px;bottom:-5px;cursor:se-resize}.note-handle .note-control-selection .note-control-se.note-control-holder{cursor:default;border-top:0;border-left:none}.note-handle .note-control-selection .note-control-selection-info{right:0;bottom:0;padding:5px;margin:5px;font-size:12px;color:white;background-color:black;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-webkit-opacity:.7;-khtml-opacity:.7;-moz-opacity:.7;opacity:.7;-ms-filter:alpha(opacity=70);filter:alpha(opacity=70)}.note-hint-popover{min-width:100px;padding:2px}.note-hint-popover .popover-content{max-height:150px;padding:3px;overflow:auto}.note-hint-popover .popover-content .note-hint-group .note-hint-item{display:block!important;padding:3px}.note-hint-popover .popover-content .note-hint-group .note-hint-item.active,.note-hint-popover .popover-content .note-hint-group .note-hint-item:hover{display:block;clear:both;font-weight:400;line-height:1.4;color:white;text-decoration:none;white-space:nowrap;cursor:pointer;background-color:#428bca;outline:0}"
  },
  {
    "path": "public/admin/css/switcher/color-eight.css",
    "content": "html, body {font-family: 'Open Sans', sans-serif;font-weight:400;background: #0000ff}"
  },
  {
    "path": "public/admin/css/switcher/color-five.css",
    "content": "html, body {font-family: 'Open Sans', sans-serif;font-weight:400;background: #EE7752}"
  },
  {
    "path": "public/admin/css/switcher/color-four.css",
    "content": "html, body {font-family: 'Open Sans', sans-serif;font-weight:400;background: #1ab394}"
  },
  {
    "path": "public/admin/css/switcher/color-nine.css",
    "content": "html, body {font-family: 'Open Sans', sans-serif;font-weight:400;background: #ff0080}"
  },
  {
    "path": "public/admin/css/switcher/color-one.css",
    "content": "html, body {font-family: 'Open Sans', sans-serif;font-weight:400;background: #555}"
  },
  {
    "path": "public/admin/css/switcher/color-seven.css",
    "content": "html, body {font-family: 'Open Sans', sans-serif;font-weight:400;background: #7f8c8d}"
  },
  {
    "path": "public/admin/css/switcher/color-six.css",
    "content": "html, body {font-family: 'Open Sans', sans-serif;font-weight:400;background: #27ae60}"
  },
  {
    "path": "public/admin/css/switcher/color-switcher.css",
    "content": "/* Color Switcher */\n.sidebarmain.ec-colorswitcher  { left: 0px; }\n.ec-colorswitcher {\n    padding: 0px;\n    width: 260px;\n    background: #fcfcfc;\n    z-index: 99999999999;\n    position: fixed;\n    left: -260px;\n    top: 10%;\n\n    -webkit-transition: all 0.4s ease-in-out;\n       -moz-transition: all 0.4s ease-in-out;\n        -ms-transition: all 0.4s ease-in-out;\n         -o-transition: all 0.4s ease-in-out;\n            transition: all 0.4s ease-in-out;\n\tbox-shadow: 0 0 8px rgba(34, 30, 31, 0.3);\n}\n.ec-handle {\n  position: absolute;\n  right: -39px;\n  top: 0px;\n  background-color: #444;\n  width: 40px;\n  height: 40px;\n  color: #fff;\n  text-align: center;\n  border: 1px solid #444;\n  font-size: 20px;\n}\n.ec-handle i {\n  line-height: 38px;\n  color:#fff;\n}\n.ec-colorswitcher h3 {\n    padding: 10px 0px 10px 20px;\n    font-size: 18px;\n    background-color: #fff;\n    margin: 0px;\n    border-top: 1px solid #e9e9e9;\n}\n.ec-colorswitcher h6 { color: #777; }\n.ec-switcherarea {\n    padding: 15px 20px 20px 15px;\n    float: left;\n    width: 100%;\n}\n.ec-switcherarea ul.ec-switcher, .ec-switcherarea ul.ec-switcher1 { margin-left: -2px; }\n.ec-switcherarea .ec-switcher li, .ec-switcherarea .ec-switcher1 li {\n    float: left;\n    list-style: none;\n    padding-left: 5px;\n    margin-bottom: 5px;\n    text-align: center;\n    width: 20%;\n}\n.ec-switcherarea .ec-switcher li a, .ec-switcherarea .ec-switcher1 li a {\n  float: left;\n  width: 100%;\n  height: 20px;\n}\n.layout-btn {\n  margin-left: -7px;\n}\n.layout-btn a {\n  float: left;\n  width: 50%;\n  padding: 0px 0px 0px 7px;\n  margin-bottom: 15px;\n}\n.layout-btn a span {\n  background-color: #1abc9c;\n  color: #fff;\n  float: left;\n  padding: 10px;\n  text-align: center;\n  transition: all 0.4s ease-in-out 0s;\n  width: 100%;\n}\n.layout-btn a span:hover { opacity: 0.7; }\n.ec-pattren,.ec-background {\n  float: left;\n  width: 100%;\n  padding: 14px 0px 0px 0px;\n}\n.ec-pattren a,.ec-background a {\n  float: left;\n  width: 20%;\n  padding: 0px 0px 5px 5px;\n  height: 45px;\n}\n.ec-pattren a img,.ec-background a img {\n  box-shadow: 0px 0px 0px 1px #ddd;\n  width: 100%;\n}\n.ec-background a img { height: 100%; }\n.pattren-wrap,.background-wrap { margin-left: -5px; }\n\n.ec-handle i {\n    animation: 2s linear 0s normal none infinite running fa-spin;\n}\n@keyframes fa-spin {\n0% {\n    transform: rotate(0deg);\n}\n100% {\n    transform: rotate(359deg);\n}\n}\n\n.cs-color-1 {\n  background: #555;\n}\n.cs-color-2 {\n  background: #1c84c6;\n}\n.cs-color-3 {\n  background: #ed5565;\n}\n.cs-color-4 {\n  background: #1ab394;\n}\n.cs-color-5 {\n  background: #EE7752;\n}\n.cs-color-6 {\n  background: #27ae60;\n}\n.cs-color-7 {\n  background: #7f8c8d;\n}\n.cs-color-8 {\n  background: #0000ff;\n}\n.cs-color-9 {\n  background: #ff0080;\n}\n.cs-color-10 {\n  background: #1a0000;\n}"
  },
  {
    "path": "public/admin/css/switcher/color-ten.css",
    "content": "html, body {font-family: 'Open Sans', sans-serif;font-weight:400;background: #1a0000}"
  },
  {
    "path": "public/admin/css/switcher/color-three.css",
    "content": "html, body {font-family: 'Open Sans', sans-serif;font-weight:400;background: #ed5565}"
  },
  {
    "path": "public/admin/css/switcher/color-two.css",
    "content": "html, body {font-family: 'Open Sans', sans-serif;font-weight:400;background: #1c84c6}"
  },
  {
    "path": "public/admin/css/tab-menus.css",
    "content": "/*----------------------------------------*/\n/*  1.  Tab Menus CSS\n/*----------------------------------------*/\n.nav-tabs.custom-menu-wrap li a{\n\tcolor:#fff;\n}\n.nav-tabs.custom-menu-wrap li.active a{\n\tcolor:#303030;\n}\n.nav-tabs.custom-menu-wrap li a, .nav-tabs.custom-menu-wrap li.active a{\n\tborder:1px solid transparent;\n\tpadding:15px 25px;\n\tfont-size:15px;\n}\n.nav-tabs.custom-menu-wrap li a:hover{\n\tbackground:#303030;\n\tcolor:#fff;\n}\n.custom-menu-content ul.main-menu-dropdown{\n\tposition:relative;\n\tz-index:99;\n}\n.custom-menu-content ul.main-menu-dropdown li{\n\tdisplay:inline-block;\n}\n.custom-menu-content ul.main-menu-dropdown li a{\n\tpadding:20px 20px;\n\tdisplay:block;\n\tcolor:#303030;\n\tfont-size:14px;\n}\n.custom-menu-content ul.main-menu-dropdown li a:hover{\n\tcolor:#353535;\n}\n.tab-custon-menu-bg{\n\tposition:relative;\n}\n.tab-custon-menu-bg:before{\n\tposition:absolute;\n\ttop:0px;\n\tleft:0px;\n\twidth:100%;\n\tbackground:#fff;\n\tcontent:\"\";\n\tz-index:9;\n\theight:100%;\n}\n.tab-custon-menu-bg-style:before{\n\tposition:absolute;\n\ttop:0px;\n\tleft:0px;\n\twidth:100%;\n\tbackground:#03a9f4;\n\tcontent:\"\";\n\tz-index:9;\n\theight:100%;\n}\n.menu-list-wrap .nav-tabs>li.active>a, .menu-list-wrap .nav-tabs>li.active>a:focus, .menu-list-wrap .nav-tabs>li.active>a:hover{\n\tbackground:#03a9f4;\n}\n.menu-list-wrap {\n    background: #fff;\n    padding: 20px;\n}\n.nav-tabs.custom-menu-wrap-st li a{\n\tcolor:#303030;\n}\n.tab-custon-menu-bg-style ul.main-menu-dropdown li a:hover{\n\tcolor:#fff;\n}"
  },
  {
    "path": "public/admin/css/tabs.css",
    "content": "/*----------------------------------------*/\n/*  1.  tab CSS\n/*----------------------------------------*/\n.custon-tab-style1{\n\tbackground:#fff;\n\tpadding:20px;\n}\n.custon-tab-style1 p{\n\tfont-size:14px;\n\tcolor:#303030;\n\tline-height:24px;\n}\n.custon-tab-menu-style1 .tab-custon-ic{\n\tmargin-right:10px;\n}\n.tab-menu-right li{\n\tfloat:right\n}\n.custom-menu-wrap.custon-tab-menu-style1 li a{\n\tmargin-right:0px;\n}\n.nav-tabs.custom-menu-wrap.custon-tab-menu-style1 li a, .nav-tabs.custom-menu-wrap.custon-tab-menu-style1 li.active a{\n\tfont-size:14px;\n}\n.tab-content-details{\n\ttext-align:center;\n\tbackground:#fff;\n\tpadding:20px 100px;\n\tmargin-bottom:30px;\n}\n.tab-content-details h2{\n\tfont-size:20px;\n\tcolor:#303030;\n}\n.tab-content-details p{\n\tfont-size:14px;\n\tcolor:#303030;\n\tline-height:24px;\n}\n.nav-tabs.custom-menu-wrap li a:hover{\n\tbackground:#303030;\n\tcolor:#fff;\n}\n.nav-tabs.custom-menu-wrap li a{\n\tcolor:#fff;\n}\n.nav-tabs.custom-menu-wrap li.active a{\n\tcolor:#303030;\n}\n.nav-tabs.custom-menu-wrap li.active a:hover{\n\tcolor:#fff;\n}\n.nav-tabs.custom-menu-wrap li a, .nav-tabs.custom-menu-wrap li.active a{\n\tborder:1px solid transparent;\n\tpadding:15px 25px;\n\tfont-size:15px;\n}\n.tab-custon-menu-bg-style ul.main-menu-dropdown li a:hover{\n\tcolor:#fff;\n}"
  },
  {
    "path": "public/admin/css/tree-viewer/tree-viewer.css",
    "content": ".jstree-node,.jstree-children,.jstree-container-ul{display:block;margin:0;padding:0;list-style-type:none;list-style-image:none}.jstree-node{white-space:nowrap}.jstree-anchor{display:inline-block;color:#000;white-space:nowrap;padding:0 4px 0 1px;margin:0;vertical-align:top}.jstree-anchor:focus{outline:0}.jstree-anchor,.jstree-anchor:link,.jstree-anchor:visited,.jstree-anchor:hover,.jstree-anchor:active{text-decoration:none;color:inherit}.jstree-icon{display:inline-block;text-decoration:none;margin:0;padding:0;vertical-align:top;text-align:center}.jstree-icon:empty{display:inline-block;text-decoration:none;margin:0;padding:0;vertical-align:top;text-align:center}.jstree-ocl{cursor:pointer}.jstree-leaf>.jstree-ocl{cursor:default}.jstree .jstree-open>.jstree-children{display:block}.jstree .jstree-closed>.jstree-children,.jstree .jstree-leaf>.jstree-children{display:none}.jstree-anchor>.jstree-themeicon{margin-right:2px}.jstree-no-icons .jstree-themeicon,.jstree-anchor>.jstree-themeicon-hidden{display:none}.jstree-rtl .jstree-anchor{padding:0 1px 0 4px}.jstree-rtl .jstree-anchor>.jstree-themeicon{margin-left:2px;margin-right:0}.jstree-rtl .jstree-node{margin-left:0}.jstree-rtl .jstree-container-ul>.jstree-node{margin-right:0}.jstree-wholerow-ul{position:relative;display:inline-block;min-width:100%}.jstree-wholerow-ul .jstree-leaf>.jstree-ocl{cursor:pointer}.jstree-wholerow-ul .jstree-anchor,.jstree-wholerow-ul .jstree-icon{position:relative}.jstree-wholerow-ul .jstree-wholerow{width:100%;cursor:pointer;position:absolute;left:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.vakata-context{display:none}.vakata-context,.vakata-context ul{margin:0;padding:2px;position:absolute;background:#f5f5f5;border:1px solid #979797;-moz-box-shadow:5px 5px 4px -4px #666;-webkit-box-shadow:2px 2px 2px #999;box-shadow:2px 2px 2px #999}.vakata-context ul{list-style:none;left:100%;margin-top:-2.7em;margin-left:-4px}.vakata-context .vakata-context-right ul{left:auto;right:100%;margin-left:auto;margin-right:-4px}.vakata-context li{list-style:none;display:inline}.vakata-context li>a{display:block;padding:0 2em;text-decoration:none;width:auto;color:#000;white-space:nowrap;line-height:2.4em;-moz-text-shadow:1px 1px 0 #fff;-webkit-text-shadow:1px 1px 0 #fff;text-shadow:1px 1px 0 #fff;-moz-border-radius:1px;-webkit-border-radius:1px;border-radius:1px}.vakata-context li>a:hover{position:relative;background-color:#e8eff7;-moz-box-shadow:0 0 2px #0a6aa1;-webkit-box-shadow:0 0 2px #0a6aa1;box-shadow:0 0 2px #0a6aa1}.vakata-context li>a.vakata-context-parent{background-image:url(data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAIORI4JlrqN1oMSnmmZDQUAOw==);background-position:right center;background-repeat:no-repeat}.vakata-context li>a:focus{outline:0}.vakata-context .vakata-context-hover>a{position:relative;background-color:#e8eff7;-moz-box-shadow:0 0 2px #0a6aa1;-webkit-box-shadow:0 0 2px #0a6aa1;box-shadow:0 0 2px #0a6aa1}.vakata-context .vakata-context-separator>a,.vakata-context .vakata-context-separator>a:hover{background:#fff;border:0;border-top:1px solid #e2e3e3;height:1px;min-height:1px;max-height:1px;padding:0;margin:0 0 0 2.4em;border-left:1px solid #e0e0e0;-moz-text-shadow:0 0 0 transparent;-webkit-text-shadow:0 0 0 transparent;text-shadow:0 0 0 transparent;-moz-box-shadow:0 0 0 transparent;-webkit-box-shadow:0 0 0 transparent;box-shadow:0 0 0 transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.vakata-context .vakata-contextmenu-disabled a,.vakata-context .vakata-contextmenu-disabled a:hover{color:silver;background-color:transparent;border:0;box-shadow:0 0 0}.vakata-context li>a>i{text-decoration:none;display:inline-block;width:2.4em;height:2.4em;background:0 0;margin:0 0 0 -2em;vertical-align:top;text-align:center;line-height:2.4em}.vakata-context li>a>i:empty{width:2.4em;line-height:2.4em}.vakata-context li>a .vakata-contextmenu-sep{display:inline-block;width:1px;height:2.4em;background:#fff;margin:0 .5em 0 0;border-left:1px solid #e2e3e3}.vakata-context .vakata-contextmenu-shortcut{font-size:.8em;color:silver;opacity:.5;display:none}.vakata-context-rtl ul{left:auto;right:100%;margin-left:auto;margin-right:-4px}.vakata-context-rtl li>a.vakata-context-parent{background-image:url(data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAINjI+AC7rWHIsPtmoxLAA7);background-position:left center;background-repeat:no-repeat}.vakata-context-rtl .vakata-context-separator>a{margin:0 2.4em 0 0;border-left:0;border-right:1px solid #e2e3e3}.vakata-context-rtl .vakata-context-left ul{right:auto;left:100%;margin-left:-4px;margin-right:auto}.vakata-context-rtl li>a>i{margin:0 -2em 0 0}.vakata-context-rtl li>a .vakata-contextmenu-sep{margin:0 0 0 .5em;border-left-color:#fff;background:#e2e3e3}#jstree-marker{position:absolute;top:0;left:0;margin:-5px 0 0 0;padding:0;border-right:0;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:5px solid;width:0;height:0;font-size:0;line-height:0}#jstree-dnd{line-height:16px;margin:0;padding:4px}#jstree-dnd .jstree-icon,#jstree-dnd .jstree-copy{display:inline-block;text-decoration:none;margin:0 2px 0 0;padding:0;width:16px;height:16px}#jstree-dnd .jstree-ok{background:green}#jstree-dnd .jstree-er{background:red}#jstree-dnd .jstree-copy{margin:0 2px}.jstree-default .jstree-node,.jstree-default .jstree-icon{background-repeat:no-repeat;background-color:transparent}.jstree-default .jstree-anchor,.jstree-default .jstree-wholerow{transition:background-color .15s,box-shadow .15s}.jstree-default .jstree-hovered{background:#e7f4f9;border-radius:2px;box-shadow:inset 0 0 1px #ccc}.jstree-default .jstree-clicked{background:#beebff;border-radius:2px;box-shadow:inset 0 0 1px #999}.jstree-default .jstree-no-icons .jstree-anchor>.jstree-themeicon{display:none}.jstree-default .jstree-disabled{background:0 0;color:#666}.jstree-default .jstree-disabled.jstree-hovered{background:0 0;box-shadow:none}.jstree-default .jstree-disabled.jstree-clicked{background:#efefef}.jstree-default .jstree-disabled>.jstree-icon{opacity:.8;filter:url(\"data:image/svg+xml;utf8,<svg xmlns=\\'http://www.w3.org/2000/svg\\'><filter id=\\'jstree-grayscale\\'><feColorMatrix type=\\'matrix\\' values=\\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\\'/></filter></svg>#jstree-grayscale\");filter:gray;-webkit-filter:grayscale(100%)}.jstree-default .jstree-search{font-style:italic;color:#8b0000;font-weight:700}.jstree-default .jstree-no-checkboxes .jstree-checkbox{display:none!important}.jstree-default.jstree-checkbox-no-clicked .jstree-clicked{background:0 0;box-shadow:none}.jstree-default.jstree-checkbox-no-clicked .jstree-clicked.jstree-hovered{background:#e7f4f9}.jstree-default.jstree-checkbox-no-clicked>.jstree-wholerow-ul .jstree-wholerow-clicked{background:0 0}.jstree-default.jstree-checkbox-no-clicked>.jstree-wholerow-ul .jstree-wholerow-clicked.jstree-wholerow-hovered{background:#e7f4f9}.jstree-default>.jstree-striped{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAkCAMAAAB/qqA+AAAABlBMVEUAAAAAAAClZ7nPAAAAAnRSTlMNAMM9s3UAAAAXSURBVHjajcEBAQAAAIKg/H/aCQZ70AUBjAATb6YPDgAAAABJRU5ErkJggg==) left top repeat}.jstree-default>.jstree-wholerow-ul .jstree-hovered,.jstree-default>.jstree-wholerow-ul .jstree-clicked{background:0 0;box-shadow:none;border-radius:0}.jstree-default .jstree-wholerow{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.jstree-default .jstree-wholerow-hovered{background:#e7f4f9}.jstree-default .jstree-wholerow-clicked{background:#beebff;background:-moz-linear-gradient(top,#beebff 0,#a8e4ff 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#beebff),color-stop(100%,#a8e4ff));background:-webkit-linear-gradient(top,#beebff 0,#a8e4ff 100%);background:-o-linear-gradient(top,#beebff 0,#a8e4ff 100%);background:-ms-linear-gradient(top,#beebff 0,#a8e4ff 100%);background:linear-gradient(to bottom,#beebff 0,#a8e4ff 100%)}.jstree-default .jstree-node{min-height:24px;line-height:24px;margin-left:24px;min-width:24px}.jstree-default .jstree-anchor{line-height:24px;height:24px}.jstree-default .jstree-icon{width:24px;height:24px;line-height:24px}.jstree-default .jstree-icon:empty{width:24px;height:24px;line-height:24px}.jstree-default.jstree-rtl .jstree-node{margin-right:24px}.jstree-default .jstree-wholerow{height:24px}.jstree-default .jstree-node,.jstree-default .jstree-icon{background-image:url(32px.png)}.jstree-default .jstree-node{background-position:-292px -4px;background-repeat:repeat-y}.jstree-default .jstree-last{background:0 0}.jstree-default .jstree-open>.jstree-ocl{background-position:-132px -4px}.jstree-default .jstree-closed>.jstree-ocl{background-position:-100px -4px}.jstree-default .jstree-leaf>.jstree-ocl{background-position:-68px -4px}.jstree-default .jstree-themeicon{background-position:-260px -4px}.jstree-default>.jstree-no-dots .jstree-node,.jstree-default>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-36px -4px}.jstree-default>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:-4px -4px}.jstree-default .jstree-disabled{background:0 0}.jstree-default .jstree-disabled.jstree-hovered{background:0 0}.jstree-default .jstree-disabled.jstree-clicked{background:#efefef}.jstree-default .jstree-checkbox{background-position:-164px -4px}.jstree-default .jstree-checkbox:hover{background-position:-164px -36px}.jstree-default.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox,.jstree-default .jstree-checked>.jstree-checkbox{background-position:-228px -4px}.jstree-default.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover,.jstree-default .jstree-checked>.jstree-checkbox:hover{background-position:-228px -36px}.jstree-default .jstree-anchor>.jstree-undetermined{background-position:-196px -4px}.jstree-default .jstree-anchor>.jstree-undetermined:hover{background-position:-196px -36px}.jstree-default>.jstree-striped{background-size:auto 48px}.jstree-default.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==);background-position:100% 1px;background-repeat:repeat-y}.jstree-default.jstree-rtl .jstree-last{background:0 0}.jstree-default.jstree-rtl .jstree-open>.jstree-ocl{background-position:-132px -36px}.jstree-default.jstree-rtl .jstree-closed>.jstree-ocl{background-position:-100px -36px}.jstree-default.jstree-rtl .jstree-leaf>.jstree-ocl{background-position:-68px -36px}.jstree-default.jstree-rtl>.jstree-no-dots .jstree-node,.jstree-default.jstree-rtl>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default.jstree-rtl>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-36px -36px}.jstree-default.jstree-rtl>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:-4px -36px}.jstree-default .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0}.jstree-default>.jstree-container-ul .jstree-loading>.jstree-ocl{background:url(throbber.gif) center center no-repeat}.jstree-default .jstree-file{background:url(32px.png) -100px -68px no-repeat}.jstree-default .jstree-folder{background:url(32px.png) -260px -4px no-repeat}.jstree-default>.jstree-container-ul>.jstree-node{margin-left:0;margin-right:0}#jstree-dnd.jstree-default{line-height:24px;padding:0 4px}#jstree-dnd.jstree-default .jstree-ok,#jstree-dnd.jstree-default .jstree-er{background-image:url(32px.png);background-repeat:no-repeat;background-color:transparent}#jstree-dnd.jstree-default i{background:0 0;width:24px;height:24px;line-height:24px}#jstree-dnd.jstree-default .jstree-ok{background-position:-4px -68px}#jstree-dnd.jstree-default .jstree-er{background-position:-36px -68px}.jstree-default.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==)}.jstree-default.jstree-rtl .jstree-last{background:0 0}.jstree-default-small .jstree-node{min-height:18px;line-height:18px;margin-left:18px;min-width:18px}.jstree-default-small .jstree-anchor{line-height:18px;height:18px}.jstree-default-small .jstree-icon{width:18px;height:18px;line-height:18px}.jstree-default-small .jstree-icon:empty{width:18px;height:18px;line-height:18px}.jstree-default-small.jstree-rtl .jstree-node{margin-right:18px}.jstree-default-small .jstree-wholerow{height:18px}.jstree-default-small .jstree-node,.jstree-default-small .jstree-icon{background-image:url(32px.png)}.jstree-default-small .jstree-node{background-position:-295px -7px;background-repeat:repeat-y}.jstree-default-small .jstree-last{background:0 0}.jstree-default-small .jstree-open>.jstree-ocl{background-position:-135px -7px}.jstree-default-small .jstree-closed>.jstree-ocl{background-position:-103px -7px}.jstree-default-small .jstree-leaf>.jstree-ocl{background-position:-71px -7px}.jstree-default-small .jstree-themeicon{background-position:-263px -7px}.jstree-default-small>.jstree-no-dots .jstree-node,.jstree-default-small>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-small>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-39px -7px}.jstree-default-small>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:-7px -7px}.jstree-default-small .jstree-disabled{background:0 0}.jstree-default-small .jstree-disabled.jstree-hovered{background:0 0}.jstree-default-small .jstree-disabled.jstree-clicked{background:#efefef}.jstree-default-small .jstree-checkbox{background-position:-167px -7px}.jstree-default-small .jstree-checkbox:hover{background-position:-167px -39px}.jstree-default-small.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox,.jstree-default-small .jstree-checked>.jstree-checkbox{background-position:-231px -7px}.jstree-default-small.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover,.jstree-default-small .jstree-checked>.jstree-checkbox:hover{background-position:-231px -39px}.jstree-default-small .jstree-anchor>.jstree-undetermined{background-position:-199px -7px}.jstree-default-small .jstree-anchor>.jstree-undetermined:hover{background-position:-199px -39px}.jstree-default-small>.jstree-striped{background-size:auto 36px}.jstree-default-small.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==);background-position:100% 1px;background-repeat:repeat-y}.jstree-default-small.jstree-rtl .jstree-last{background:0 0}.jstree-default-small.jstree-rtl .jstree-open>.jstree-ocl{background-position:-135px -39px}.jstree-default-small.jstree-rtl .jstree-closed>.jstree-ocl{background-position:-103px -39px}.jstree-default-small.jstree-rtl .jstree-leaf>.jstree-ocl{background-position:-71px -39px}.jstree-default-small.jstree-rtl>.jstree-no-dots .jstree-node,.jstree-default-small.jstree-rtl>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-small.jstree-rtl>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-39px -39px}.jstree-default-small.jstree-rtl>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:-7px -39px}.jstree-default-small .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0}.jstree-default-small>.jstree-container-ul .jstree-loading>.jstree-ocl{background:url(throbber.gif) center center no-repeat}.jstree-default-small .jstree-file{background:url(32px.png) -103px -71px no-repeat}.jstree-default-small .jstree-folder{background:url(32px.png) -263px -7px no-repeat}.jstree-default-small>.jstree-container-ul>.jstree-node{margin-left:0;margin-right:0}#jstree-dnd.jstree-default-small{line-height:18px;padding:0 4px}#jstree-dnd.jstree-default-small .jstree-ok,#jstree-dnd.jstree-default-small .jstree-er{background-image:url(32px.png);background-repeat:no-repeat;background-color:transparent}#jstree-dnd.jstree-default-small i{background:0 0;width:18px;height:18px;line-height:18px}#jstree-dnd.jstree-default-small .jstree-ok{background-position:-7px -71px}#jstree-dnd.jstree-default-small .jstree-er{background-position:-39px -71px}.jstree-default-small.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAACAQMAAABv1h6PAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMHBgAAiABBI4gz9AAAAABJRU5ErkJggg==)}.jstree-default-small.jstree-rtl .jstree-last{background:0 0}.jstree-default-large .jstree-node{min-height:32px;line-height:32px;margin-left:32px;min-width:32px}.jstree-default-large .jstree-anchor{line-height:32px;height:32px}.jstree-default-large .jstree-icon{width:32px;height:32px;line-height:32px}.jstree-default-large .jstree-icon:empty{width:32px;height:32px;line-height:32px}.jstree-default-large.jstree-rtl .jstree-node{margin-right:32px}.jstree-default-large .jstree-wholerow{height:32px}.jstree-default-large .jstree-node,.jstree-default-large .jstree-icon{background-image:url(32px.png)}.jstree-default-large .jstree-node{background-position:-288px 0;background-repeat:repeat-y}.jstree-default-large .jstree-last{background:0 0}.jstree-default-large .jstree-open>.jstree-ocl{background-position:-128px 0}.jstree-default-large .jstree-closed>.jstree-ocl{background-position:-96px 0}.jstree-default-large .jstree-leaf>.jstree-ocl{background-position:-64px 0}.jstree-default-large .jstree-themeicon{background-position:-256px 0}.jstree-default-large>.jstree-no-dots .jstree-node,.jstree-default-large>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-large>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-32px 0}.jstree-default-large>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:0 0}.jstree-default-large .jstree-disabled{background:0 0}.jstree-default-large .jstree-disabled.jstree-hovered{background:0 0}.jstree-default-large .jstree-disabled.jstree-clicked{background:#efefef}.jstree-default-large .jstree-checkbox{background-position:-160px 0}.jstree-default-large .jstree-checkbox:hover{background-position:-160px -32px}.jstree-default-large.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox,.jstree-default-large .jstree-checked>.jstree-checkbox{background-position:-224px 0}.jstree-default-large.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover,.jstree-default-large .jstree-checked>.jstree-checkbox:hover{background-position:-224px -32px}.jstree-default-large .jstree-anchor>.jstree-undetermined{background-position:-192px 0}.jstree-default-large .jstree-anchor>.jstree-undetermined:hover{background-position:-192px -32px}.jstree-default-large>.jstree-striped{background-size:auto 64px}.jstree-default-large.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==);background-position:100% 1px;background-repeat:repeat-y}.jstree-default-large.jstree-rtl .jstree-last{background:0 0}.jstree-default-large.jstree-rtl .jstree-open>.jstree-ocl{background-position:-128px -32px}.jstree-default-large.jstree-rtl .jstree-closed>.jstree-ocl{background-position:-96px -32px}.jstree-default-large.jstree-rtl .jstree-leaf>.jstree-ocl{background-position:-64px -32px}.jstree-default-large.jstree-rtl>.jstree-no-dots .jstree-node,.jstree-default-large.jstree-rtl>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-large.jstree-rtl>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-32px -32px}.jstree-default-large.jstree-rtl>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:0 -32px}.jstree-default-large .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0}.jstree-default-large>.jstree-container-ul .jstree-loading>.jstree-ocl{background:url(throbber.gif) center center no-repeat}.jstree-default-large .jstree-file{background:url(32px.png) -96px -64px no-repeat}.jstree-default-large .jstree-folder{background:url(32px.png) -256px 0 no-repeat}.jstree-default-large>.jstree-container-ul>.jstree-node{margin-left:0;margin-right:0}#jstree-dnd.jstree-default-large{line-height:32px;padding:0 4px}#jstree-dnd.jstree-default-large .jstree-ok,#jstree-dnd.jstree-default-large .jstree-er{background-image:url(32px.png);background-repeat:no-repeat;background-color:transparent}#jstree-dnd.jstree-default-large i{background:0 0;width:32px;height:32px;line-height:32px}#jstree-dnd.jstree-default-large .jstree-ok{background-position:0 -64px}#jstree-dnd.jstree-default-large .jstree-er{background-position:-32px -64px}.jstree-default-large.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAACAQMAAAAD0EyKAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjgIIGBgABCgCBvVLXcAAAAABJRU5ErkJggg==)}.jstree-default-large.jstree-rtl .jstree-last{background:0 0}@media (max-width:768px){#jstree-dnd.jstree-dnd-responsive{line-height:40px;font-weight:700;font-size:1.1em;text-shadow:1px 1px #fff}#jstree-dnd.jstree-dnd-responsive>i{background:0 0;width:40px;height:40px}#jstree-dnd.jstree-dnd-responsive>.jstree-ok{background-image:url(40px.png);background-position:0 -200px;background-size:120px 240px}#jstree-dnd.jstree-dnd-responsive>.jstree-er{background-image:url(40px.png);background-position:-40px -200px;background-size:120px 240px}#jstree-marker.jstree-dnd-responsive{border-left-width:10px;border-top-width:10px;border-bottom-width:10px;margin-top:-10px}}@media (max-width:768px){.jstree-default-responsive .jstree-icon{background-image:url(40px.png)}.jstree-default-responsive .jstree-node,.jstree-default-responsive .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-responsive .jstree-node{min-height:40px;line-height:40px;margin-left:40px;min-width:40px;white-space:nowrap}.jstree-default-responsive .jstree-anchor{line-height:40px;height:40px}.jstree-default-responsive .jstree-icon,.jstree-default-responsive .jstree-icon:empty{width:40px;height:40px;line-height:40px}.jstree-default-responsive>.jstree-container-ul>.jstree-node{margin-left:0}.jstree-default-responsive.jstree-rtl .jstree-node{margin-left:0;margin-right:40px}.jstree-default-responsive.jstree-rtl .jstree-container-ul>.jstree-node{margin-right:0}.jstree-default-responsive .jstree-ocl,.jstree-default-responsive .jstree-themeicon,.jstree-default-responsive .jstree-checkbox{background-size:120px 240px}.jstree-default-responsive .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-responsive .jstree-open>.jstree-ocl{background-position:0 0!important}.jstree-default-responsive .jstree-closed>.jstree-ocl{background-position:0 -40px!important}.jstree-default-responsive.jstree-rtl .jstree-closed>.jstree-ocl{background-position:-40px 0!important}.jstree-default-responsive .jstree-themeicon{background-position:-40px -40px}.jstree-default-responsive .jstree-checkbox,.jstree-default-responsive .jstree-checkbox:hover{background-position:-40px -80px}.jstree-default-responsive.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox,.jstree-default-responsive.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover,.jstree-default-responsive .jstree-checked>.jstree-checkbox,.jstree-default-responsive .jstree-checked>.jstree-checkbox:hover{background-position:0 -80px}.jstree-default-responsive .jstree-anchor>.jstree-undetermined,.jstree-default-responsive .jstree-anchor>.jstree-undetermined:hover{background-position:0 -120px}.jstree-default-responsive .jstree-anchor{font-weight:700;font-size:1.1em;text-shadow:1px 1px #fff}.jstree-default-responsive>.jstree-striped{background:0 0}.jstree-default-responsive .jstree-wholerow{border-top:1px solid rgba(255,255,255,.7);border-bottom:1px solid rgba(64,64,64,.2);background:#ebebeb;height:40px}.jstree-default-responsive .jstree-wholerow-hovered{background:#e7f4f9}.jstree-default-responsive .jstree-wholerow-clicked{background:#beebff}.jstree-default-responsive .jstree-children .jstree-last>.jstree-wholerow{box-shadow:inset 0 -6px 3px -5px #666}.jstree-default-responsive .jstree-children .jstree-open>.jstree-wholerow{box-shadow:inset 0 6px 3px -5px #666;border-top:0}.jstree-default-responsive .jstree-children .jstree-open+.jstree-open{box-shadow:none}.jstree-default-responsive .jstree-node,.jstree-default-responsive .jstree-icon,.jstree-default-responsive .jstree-node>.jstree-ocl,.jstree-default-responsive .jstree-themeicon,.jstree-default-responsive .jstree-checkbox{background-image:url(40px.png);background-size:120px 240px}.jstree-default-responsive .jstree-node{background-position:-80px 0;background-repeat:repeat-y}.jstree-default-responsive .jstree-last{background:0 0}.jstree-default-responsive .jstree-leaf>.jstree-ocl{background-position:-40px -120px}.jstree-default-responsive .jstree-last>.jstree-ocl{background-position:-40px -160px}.jstree-default-responsive .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0}.jstree-default-responsive .jstree-file{background:url(40px.png) 0 -160px no-repeat;background-size:120px 240px}.jstree-default-responsive .jstree-folder{background:url(40px.png) -40px -40px no-repeat;background-size:120px 240px}.jstree-default-responsive>.jstree-container-ul>.jstree-node{margin-left:0;margin-right:0}}"
  },
  {
    "path": "public/admin/css/typeahead.js-bootstrap.css",
    "content": ".twitter-typeahead .tt-query,\n.twitter-typeahead .tt-hint {\n  margin-bottom: 0;\n}\n\n.tt-dropdown-menu {\n  min-width: 160px;\n  margin-top: 2px;\n  padding: 5px 0;\n  background-color: #fff;\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0,0,0,.2);\n  *border-right-width: 2px;\n  *border-bottom-width: 2px;\n  -webkit-border-radius: 6px;\n     -moz-border-radius: 6px;\n          border-radius: 6px;\n  -webkit-box-shadow: 0 5px 10px rgba(0,0,0,.2);\n     -moz-box-shadow: 0 5px 10px rgba(0,0,0,.2);\n          box-shadow: 0 5px 10px rgba(0,0,0,.2);\n  -webkit-background-clip: padding-box;\n     -moz-background-clip: padding;\n          background-clip: padding-box;\n}\n\n.tt-suggestion {\n  display: block;\n  padding: 3px 20px;\n}\n\n.tt-suggestion.tt-is-under-cursor {\n  color: #fff;\n  background-color: #0081c2;\n  background-image: -moz-linear-gradient(top, #0088cc, #0077b3);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));\n  background-image: -webkit-linear-gradient(top, #0088cc, #0077b3);\n  background-image: -o-linear-gradient(top, #0088cc, #0077b3);\n  background-image: linear-gradient(to bottom, #0088cc, #0077b3);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0)\n}\n\n.tt-suggestion.tt-is-under-cursor a {\n  color: #fff;\n}\n\n.tt-suggestion p {\n  margin: 0;\n}"
  },
  {
    "path": "public/admin/css/x-editor-style.css",
    "content": ".x-editor-custom .popover{\n\tborder-radius: 0px;\n\tfont-family: 'Open Sans', sans-serif;\n\tborder: 1px solid #03a9f4; \n\tpadding:0px;\n}\n.x-editor-custom .input-sm{\n\tfont-size:13px;\n\tborder-radius: 0px;\n}\n.x-editor-custom .form-control:focus{\n\tfont-size:13px;\n\tborder-radius: 0px;\n\tbox-shadow: none; \n\tborder-color: #03a9f4;\n}\n.x-editor-custom .form-control{\n\tborder-radius: 0px;\n}\n.x-editor-custom .btn-primary{\n\tbackground-color: #03a9f4;\n    border-color: #03a9f4;\n}\n.x-editor-custom .btn-default{\n\tbackground-color: #303030;\n    border-color: #303030;\n\tcolor:#fff;\n}\n.x-editor-custom .btn-primary:hover, .x-editor-custom .btn-primary:focus{\n\tbackground-color: #303030;\n    border-color: #303030;\n}\n.x-editor-custom .btn-default:hover, .x-editor-custom .btn-default:focus{\n\tbackground-color: #03a9f4;\n    border-color: #03a9f4;\n}\n.x-editor-custom .popover-title{\n\tbackground:#03a9f4;\n\tcolor:#fff;\n\tborder-radius: 0px;\n\tpadding:10px 15px;\n}\n.x-editor-custom .datepicker table tr td.active, .x-editor-custom .datetimepicker table tr td.active{\n\tbackground-color: #03a9f4;\n    background-image: -moz-linear-gradient(top, #03a9f4, #03a9f4);\n    background-image: -ms-linear-gradient(top, #03a9f4, #03a9f4);\n    background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#03a9f4), to(#03a9f4));\n    background-image: -webkit-linear-gradient(top, #0088cc, #03a9f4);\n    background-image: -o-linear-gradient(top, #0088cc, #03a9f4);\n    background-image: linear-gradient(top, #0088cc, #03a9f4);\n    background-repeat: repeat-x;\n    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#03a9f4', GradientType=0);\n    border-color: #03a9f4 #03a9f4 #002a80;\n    border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n    filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n    color: #fff;\n    text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.x-editor-custom .select2-container .select2-choice{\n\tborder: 0px solid #aaa;\n\tcolor: #fff;\n\tborder-radius: 0px;\n\tbackground-color: #03a9f4;\n\tbackground-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #03a9f4), color-stop(0.5, #03a9f4));\n    background-image: -webkit-linear-gradient(center bottom, #03a9f4 0%, #03a9f4 50%);\n    background-image: -moz-linear-gradient(center bottom, #03a9f4 0%, #03a9f4 50%);\n    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#03a9f4', endColorstr = '#03a9f4', GradientType = 0);\n    background-image: linear-gradient(top, #03a9f4 0%, #03a9f4 50%);\n}\n.x-editor-custom .select2-container .select2-choice .select2-arrow{\n\tborder-left: 0px solid #aaa;\n\tborder-radius: 0;\n\t    background: #303030;\n    background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #303030), color-stop(0.6, #303030));\n    background-image: -webkit-linear-gradient(center bottom, #303030 0%, #303030 60%);\n    background-image: -moz-linear-gradient(center bottom, #303030 0%, #303030 60%);\n    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#303030', endColorstr = '#303030', GradientType = 0);\n    background-image: linear-gradient(303030);\n}\n.x-editor-custom .select2-container-multi .select2-choices{\n\tborder: 1px solid #03a9f4;\n}\n.x-editor-custom .select2-container-multi .select2-choices .select2-search-choice{\n    color: #fff;\n    border: 1px solid #03a9f4;\n    border-radius: 0px;\n    -webkit-box-shadow: 0 0 2px #03a9f4 inset, 0 1px 0 #03a9f4;\n    box-shadow: 0 0 2px #03a9f4 inset, 0 1px 0 #03a9f4;\n    background-color: #03a9f4;\n    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#03a9f4', endColorstr='#03a9f4', GradientType=0);\n    background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(20%, #03a9f4), color-stop(50%, #03a9f4), color-stop(52%, #03a9f4), color-stop(100%, #03a9f4));\n    background-image: -webkit-linear-gradient(top, #03a9f4 20%, #03a9f4 50%, #03a9f4 52%, #03a9f4 100%);\n    background-image: -moz-linear-gradient(top, #03a9f4 20%, #03a9f4 50%, #03a9f4 52%, #03a9f4 100%);\n    background-image: linear-gradient(top, #03a9f4 20%, #03a9f4 50%, #03a9f4 52%, #03a9f4 100%);\n}\n.x-editor-custom .datetimepicker table tr td span.active{\n\t    background-color: #03a9f4;\n    background-image: -moz-linear-gradient(top, #03a9f4, #03a9f4);\n    background-image: -ms-linear-gradient(top, #03a9f4, #03a9f4);\n    background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#03a9f4), to(#03a9f4));\n    background-image: -webkit-linear-gradient(top, #03a9f4, #03a9f4);\n    background-image: -o-linear-gradient(top, #03a9f4, #03a9f4);\n    background-image: linear-gradient(top, #03a9f4, #03a9f4);\n    background-repeat: repeat-x;\n    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#03a9f4', endColorstr='#03a9f4', GradientType=0);\n    border-color: #03a9f4 #03a9f4 #03a9f4;\n}"
  },
  {
    "path": "public/admin/js/Lobibox.js",
    "content": "//Author      : @arboshiki\n//create lobibox object\nvar Lobibox = Lobibox || {};\n(function () {\n\n    Lobibox.counter = 0;\n//------------------------------------------------------------------------------\n//------------------------------------------------------------------------------\n\n    //User can set default properties for prompt in the following way\n    //Lobibox.prompt.DEFAULT_OPTIONS = object;\n    Lobibox.prompt = function (type, options) {\n        return new LobiboxPrompt(type, options);\n    };\n    //User can set default properties for confirm in the following way\n    //Lobibox.confirm.DEFAULT_OPTIONS = object;\n    Lobibox.confirm = function (options) {\n        return new LobiboxConfirm(options);\n    };\n    //User can set default properties for progress in the following way\n    //Lobibox.progress.DEFAULT_OPTIONS = object;\n    Lobibox.progress = function (options) {\n        return new LobiboxProgress(options);\n    };\n    //Create empty objects in order user to be able to set default options in the following way\n    //Lobibox.error.DEFAULT_OPTIONS = object;\n    //Lobibox.success.DEFAULT_OPTIONS = object;\n    //Lobibox.warning.DEFAULT_OPTIONS = object;\n    //Lobibox.info.DEFAULT_OPTIONS = object;\n\n    Lobibox.error = {};\n    Lobibox.success = {};\n    Lobibox.warning = {};\n    Lobibox.info = {};\n\n    //User can set default properties for alert in the following way\n    //Lobibox.alert.DEFAULT_OPTIONS = object;\n    Lobibox.alert = function (type, options) {\n        if ([\"success\", \"error\", \"warning\", \"info\"].indexOf(type) > -1) {\n            return new LobiboxAlert(type, options);\n        }\n    };\n    //User can set default properties for window in the following way\n    //Lobibox.window.DEFAULT_OPTIONS = object;\n    Lobibox.window = function (options) {\n        return new LobiboxWindow('window', options);\n    };\n\n\n    /**\n     * Base prototype for all messageboxes and window\n     */\n    var LobiboxBase = {\n        $type: null,\n        $el: null,\n        $options: null,\n        debug: function () {\n            if (this.$options.debug) {\n                window.console.debug.apply(window.console, arguments);\n            }\n        },\n        _processInput: function (options) {\n            if ($.isArray(options.buttons)) {\n                var btns = {};\n                for (var i = 0; i < options.buttons.length; i++) {\n                    btns[options.buttons[i]] = Lobibox.base.OPTIONS.buttons[options.buttons[i]];\n                }\n                options.buttons = btns;\n            }\n            options.customBtnClass = options.customBtnClass ? options.customBtnClass : Lobibox.base.DEFAULTS.customBtnClass;\n            for (var i in options.buttons) {\n                if (options.buttons.hasOwnProperty(i)) {\n                    var btn = options.buttons[i];\n                    btn = $.extend({}, Lobibox.base.OPTIONS.buttons[i], btn);\n                    if (!btn['class']) {\n                        btn['class'] = options.customBtnClass;\n                    }\n                    options.buttons[i] = btn;\n                }\n            }\n            options = $.extend({}, Lobibox.base.DEFAULTS, options);\n            if (options.showClass === undefined) {\n                options.showClass = Lobibox.base.OPTIONS.showClass;\n            }\n            if (options.hideClass === undefined) {\n                options.hideClass = Lobibox.base.OPTIONS.hideClass;\n            }\n            if (options.baseClass === undefined) {\n                options.baseClass = Lobibox.base.OPTIONS.baseClass;\n            }\n            if (options.delayToRemove === undefined) {\n                options.delayToRemove = Lobibox.base.OPTIONS.delayToRemove;\n            }\n            if (!options.iconClass) {\n                options.iconClass = Lobibox.base.OPTIONS.icons[options.iconSource][this.$type];\n            }\n            return options;\n        },\n        _init: function () {\n            var me = this;\n\n            me._createMarkup();\n            me.setTitle(me.$options.title);\n            if (me.$options.draggable && !me._isMobileScreen()) {\n                me.$el.addClass('draggable');\n                me._enableDrag();\n            }\n            if (me.$options.closeButton) {\n                me._addCloseButton();\n            }\n            if (me.$options.closeOnEsc) {\n                $(document).on('keyup.lobibox', function (ev) {\n                    if (ev.which === 27) {\n                        me.destroy();\n                    }\n                });\n            }\n            if (me.$options.baseClass) {\n                me.$el.addClass(me.$options.baseClass);\n            }\n            if (me.$options.showClass) {\n                me.$el.removeClass(me.$options.hideClass);\n                me.$el.addClass(me.$options.showClass);\n            }\n            me.$el.data('lobibox', me);\n        },\n\n        /**\n         * Calculate top, left position based on string keyword\n         *\n         * @param {string} position \"'top', 'center', 'bottom'\"\n         * @returns {{left: number, top: number}}\n         * @private\n         */\n        _calculatePosition: function (position) {\n            var me = this;\n            var top;\n            if (position === 'top') {\n                top = 30;\n            } else if (position === 'bottom') {\n                top = $(window).outerHeight() - me.$el.outerHeight() - 30;\n            } else {\n                top = ($(window).outerHeight() - me.$el.outerHeight()) / 2;\n            }\n            var left = ($(window).outerWidth() - me.$el.outerWidth()) / 2;\n            return {\n                left: left,\n                top: top\n            };\n        },\n\n        _createButton: function (type, op) {\n            var me = this;\n            var btn = $('<button></button>')\n                .addClass(op['class'])\n                .attr('data-type', type)\n                .html(op.text);\n            if (me.$options.callback && typeof me.$options.callback === 'function') {\n                btn.on('click.lobibox', function (ev) {\n                    var bt = $(this);\n                    me._onButtonClick(me.$options.buttons[type], type);\n                    me.$options.callback(me, bt.data('type'), ev);\n                });\n            }\n            btn.click(function () {\n                me._onButtonClick(me.$options.buttons[type], type);\n            });\n            return btn;\n        },\n\n        _onButtonClick: function (buttonOptions, type) {\n            var me = this;\n\n            if ((type === 'ok' && me.$type === 'prompt' && me.isValid() || me.$type !== 'prompt' || type !== 'ok')\n                && buttonOptions && buttonOptions.closeOnClick) {\n                me.destroy();\n            }\n        },\n\n        _generateButtons: function () {\n            var me = this;\n            var btns = [];\n            for (var i in me.$options.buttons) {\n                if (me.$options.buttons.hasOwnProperty(i)) {\n                    var op = me.$options.buttons[i];\n                    var btn = me._createButton(i, op);\n                    btns.push(btn);\n                }\n            }\n            return btns;\n        },\n        _createMarkup: function () {\n            var me = this;\n            var lobibox = $('<div class=\"lobibox\"></div>');\n            lobibox.attr('data-is-modal', me.$options.modal);\n            var header = $('<div class=\"lobibox-header\"></div>')\n                .append('<span class=\"lobibox-title\"></span>')\n                ;\n            var body = $('<div class=\"lobibox-body\"></div>');\n            lobibox.append(header);\n            lobibox.append(body);\n            if (me.$options.buttons && !$.isEmptyObject(me.$options.buttons)) {\n                var footer = $('<div class=\"lobibox-footer\"></div>');\n                footer.append(me._generateButtons());\n                lobibox.append(footer);\n                if (Lobibox.base.OPTIONS.buttonsAlign.indexOf(me.$options.buttonsAlign) > -1) {\n                    footer.addClass('text-' + me.$options.buttonsAlign);\n                }\n            }\n            me.$el = lobibox\n                .addClass(Lobibox.base.OPTIONS.modalClasses[me.$type])\n            ;\n        },\n        _setSize: function () {\n            var me = this;\n            me.setWidth(me.$options.width);\n            if (me.$options.height === 'auto') {\n                me.setHeight(me.$el.outerHeight());\n            } else {\n                me.setHeight(me.$options.height);\n            }\n        },\n        _calculateBodyHeight: function (height) {\n            var me = this;\n            var headerHeight = me.$el.find('.lobibox-header').outerHeight();\n            var footerHeight = me.$el.find('.lobibox-footer').outerHeight();\n            return height - (headerHeight ? headerHeight : 0) - (footerHeight ? footerHeight : 0);\n\n        },\n\n        /**\n         * Add backdrop in case if backdrop does not exist\n         *\n         * @private\n         */\n        _addBackdrop: function () {\n            if ($('.lobibox-backdrop').length === 0) {\n                $('body').append('<div class=\"lobibox-backdrop\"></div>');\n            }\n        },\n\n        _triggerEvent: function (type) {\n            var me = this;\n            if (me.$options[type] && typeof me.$options[type] === 'function') {\n                me.$options[type](me);\n            }\n        },\n\n        _calculateWidth: function (width) {\n            var me = this;\n            width = Math.min(Math.max(width, me.$options.width), $(window).outerWidth());\n            if (width === $(window).outerWidth()) {\n                width -= 2 * me.$options.horizontalOffset;\n            }\n            return width;\n        },\n\n        _calculateHeight: function (height) {\n            var me = this;\n            console.log(me.$options.height);\n            height = Math.min(Math.max(height, me.$options.height), $(window).outerHeight());\n            if (height === $(window).outerHeight()) {\n                height -= 2 * me.$options.verticalOffset;\n            }\n            return height;\n        },\n\n        _addCloseButton: function () {\n            var me = this;\n            var closeBtn = $('<span class=\"btn-close\">&times;</span>');\n            me.$el.find('.lobibox-header').append(closeBtn);\n            closeBtn.on('mousedown', function (ev) {\n                ev.stopPropagation();\n            });\n            closeBtn.on('click.lobibox', function () {\n                me.destroy();\n            });\n        },\n        _position: function () {\n            var me = this;\n\n            me._setSize();\n            var pos = me._calculatePosition();\n            me.setPosition(pos.left, pos.top);\n        },\n        _isMobileScreen: function () {\n            return $(window).outerWidth() < 768;\n        },\n        _enableDrag: function () {\n            var el = this.$el,\n                heading = el.find('.lobibox-header');\n\n            heading.on('mousedown.lobibox', function (ev) {\n                el.attr('offset-left', ev.offsetX);\n                el.attr('offset-top', ev.offsetY);\n                el.attr('allow-drag', 'true');\n            });\n            $(document).on('mouseup.lobibox', function () {\n                el.attr('allow-drag', 'false');\n            });\n            $(document).on('mousemove.lobibox', function (ev) {\n                if (el.attr('allow-drag') === 'true') {\n                    var left = ev.clientX - parseInt(el.attr('offset-left'), 10) - parseInt(el.css('border-left-width'), 10);\n                    var top = ev.clientY - parseInt(el.attr('offset-top'), 10) - parseInt(el.css('border-top-width'), 10);\n                    el.css({\n                        left: left,\n                        top: top\n                    });\n                }\n            });\n        },\n\n        /**\n         * Set the message of messagebox\n         *\n         * @param {string} msg \"new message of messagebox\"\n         * @returns {LobiboxBase}\n         * @private\n         */\n        _setContent: function (msg) {\n            var me = this;\n            me.$el.find('.lobibox-body').html(msg);\n            return me;\n        },\n\n        _beforeShow: function () {\n            var me = this;\n            me._triggerEvent('onShow');\n        },\n\n        _afterShow: function () {\n            var me = this;\n            Lobibox.counter++;\n            me.$el.attr('data-nth', Lobibox.counter);\n            if (!me.$options.draggable){\n                $(window).on('resize.lobibox-'+me.$el.attr('data-nth'), function(){\n                    me.refreshWidth();\n                    me.refreshHeight();\n                    me.$el.css('left', '50%').css('margin-left', '-'+(me.$el.width()/2)+'px');\n                    me.$el.css('top', '50%').css('margin-top', '-'+(me.$el.height()/2)+'px');\n                });\n            }\n\n            me._triggerEvent('shown');\n        },\n\n        _beforeClose: function () {\n            var me = this;\n            me._triggerEvent('beforeClose');\n        },\n\n        _afterClose: function () {\n            var me = this;\n            if (!me.$options.draggable){\n                $(window).off('resize.lobibox-'+me.$el.attr('data-nth'));\n            }\n            me._triggerEvent('closed');\n        },\n//------------------------------------------------------------------------------\n//--------------------------PUBLIC METHODS--------------------------------------\n//------------------------------------------------------------------------------\n\n        /**\n         * Hide the messagebox\n         *\n         * @returns {LobiboxBase}\n         */\n        hide: function () {\n            var me = this;\n            if (me.$options.hideClass) {\n                me.$el.removeClass(me.$options.showClass);\n                me.$el.addClass(me.$options.hideClass);\n                setTimeout(function () {\n                    callback();\n                }, me.$options.delayToRemove);\n            } else {\n                callback();\n            }\n            function callback() {\n                me.$el.addClass('lobibox-hidden');\n                if ($('.lobibox[data-is-modal=true]:not(.lobibox-hidden)').length === 0) {\n                    $('.lobibox-backdrop').remove();\n                    $('body').removeClass(Lobibox.base.OPTIONS.bodyClass);\n                }\n            }\n\n            return this;\n        },\n\n        /**\n         * Removes the messagebox from document\n         *\n         * @returns {LobiboxBase}\n         */\n        destroy: function () {\n            var me = this;\n            me._beforeClose();\n            if (me.$options.hideClass) {\n                me.$el.removeClass(me.$options.showClass).addClass(me.$options.hideClass);\n                setTimeout(function () {\n                    callback();\n                }, me.$options.delayToRemove);\n            } else {\n                callback();\n            }\n            function callback() {\n                me.$el.remove();\n                if ($('.lobibox[data-is-modal=true]').length === 0) {\n                    $('.lobibox-backdrop').remove();\n                    $('body').removeClass(Lobibox.base.OPTIONS.bodyClass);\n                }\n                me._afterClose();\n            }\n\n            return this;\n        },\n\n        /**\n         * Set the width of messagebox\n         *\n         * @param {number} width \"new width of messagebox\"\n         * @returns {LobiboxBase}\n         */\n        setWidth: function (width) {\n            var me = this;\n            me.$el.css('width', me._calculateWidth(width));\n            return me;\n        },\n\n        refreshWidth: function(){\n            this.setWidth(this.$el.width());\n        },\n\n        refreshHeight: function(){\n            this.setHeight(this.$el.height());\n        },\n\n        /**\n         * Set the height of messagebox\n         *\n         * @param {number} height \"new height of messagebox\"\n         * @returns {LobiboxBase}\n         */\n        setHeight: function (height) {\n            var me = this;\n            me.$el.css('height', me._calculateHeight(height))\n                .find('.lobibox-body')\n                .css('height', me._calculateBodyHeight(me.$el.innerHeight()));\n            return me;\n        },\n\n        /**\n         * Set the width and height of messagebox\n         *\n         * @param {number} width \"new width of messagebox\"\n         * @param {number} height \"new height of messagebox\"\n         * @returns {LobiboxBase}\n         */\n        setSize: function (width, height) {\n            var me = this;\n            me.setWidth(width);\n            me.setHeight(height);\n            return me;\n        },\n\n        /**\n         * Set position of messagebox\n         *\n         * @param {number|String} left \"left coordinate of messsagebox or string representaing position. Available: ('top', 'center', 'bottom')\"\n         * @param {number} top\n         * @returns {LobiboxBase}\n         */\n        setPosition: function (left, top) {\n            var pos;\n            if (typeof left === 'number' && typeof top === 'number') {\n                pos = {\n                    left: left,\n                    top: top\n                };\n            } else if (typeof left === 'string') {\n                pos = this._calculatePosition(left);\n            }\n            this.$el.css(pos);\n            return this;\n        },\n        /**\n         * Set the title of messagebox\n         *\n         * @param {string} title \"new title of messagebox\"\n         * @returns {LobiboxBase}\n         */\n        setTitle: function (title) {\n            return this.$el.find('.lobibox-title').html(title);\n        },\n\n        /**\n         * Get the title of messagebox\n         *\n         * @returns {string}\n         */\n        getTitle: function () {\n            return this.$el.find('.lobibox-title').html();\n        },\n\n        /**\n         * Show messagebox\n         *\n         * @returns {LobiboxBase}\n         */\n        show: function () {\n            var me = this,\n                $body = $('body');\n\n            me._beforeShow();\n\n            me.$el.removeClass('lobibox-hidden');\n            $body.append(me.$el);\n            if (me.$options.buttons) {\n                var buttons = me.$el.find('.lobibox-footer').children();\n                buttons[0].focus();\n            }\n            if (me.$options.modal) {\n                $body.addClass(Lobibox.base.OPTIONS.bodyClass);\n                me._addBackdrop();\n            }\n            if (me.$options.delay !== false) {\n                setTimeout(function () {\n                    me.destroy();\n                }, me.$options.delay);\n            }\n            me._afterShow();\n            return me;\n        }\n    };\n    //User can set default options by this variable\n    Lobibox.base = {};\n    Lobibox.base.OPTIONS = {\n        bodyClass: 'lobibox-open',\n\n        modalClasses: {\n            'error': 'lobibox-error',\n            'success': 'lobibox-success',\n            'info': 'lobibox-info',\n            'warning': 'lobibox-warning',\n            'confirm': 'lobibox-confirm',\n            'progress': 'lobibox-progress',\n            'prompt': 'lobibox-prompt',\n            'default': 'lobibox-default',\n            'window': 'lobibox-window'\n        },\n        buttonsAlign: ['left', 'center', 'right'],\n        buttons: {\n            ok: {\n                'class': 'lobibox-btn lobibox-btn-default',\n                text: 'OK',\n                closeOnClick: true\n            },\n            cancel: {\n                'class': 'lobibox-btn lobibox-btn-cancel',\n                text: 'Cancel',\n                closeOnClick: true\n            },\n            yes: {\n                'class': 'lobibox-btn lobibox-btn-yes',\n                text: 'Yes',\n                closeOnClick: true\n            },\n            no: {\n                'class': 'lobibox-btn lobibox-btn-no',\n                text: 'No',\n                closeOnClick: true\n            }\n        },\n        icons: {\n            bootstrap: {\n                confirm: 'glyphicon glyphicon-question-sign',\n                success: 'glyphicon glyphicon-ok-sign',\n                error: 'glyphicon glyphicon-remove-sign',\n                warning: 'glyphicon glyphicon-exclamation-sign',\n                info: 'glyphicon glyphicon-info-sign'\n            },\n            fontAwesome: {\n                confirm: 'fa fa-question-circle',\n                success: 'fa fa-check-circle',\n                error: 'fa fa-times-circle',\n                warning: 'fa fa-exclamation-circle',\n                info: 'fa fa-info-circle'\n            }\n        }\n    };\n    Lobibox.base.DEFAULTS = {\n        horizontalOffset: 5,                //If the messagebox is larger (in width) than window's width. The messagebox's width is reduced to window width - 2 * horizontalOffset\n        verticalOffset: 5,                  //If the messagebox is larger (in height) than window's height. The messagebox's height is reduced to window height - 2 * verticalOffset\n        width: 600,\n        height: 'auto',                     // Height is automatically calculated by width\n        closeButton: true,                  // Show close button or not\n        draggable: false,                   // Make messagebox draggable\n        customBtnClass: 'lobibox-btn lobibox-btn-default', // Class for custom buttons\n        modal: true,\n        debug: false,\n        buttonsAlign: 'center',             // Position where buttons should be aligned\n        closeOnEsc: true,                   // Close messagebox on Esc press\n        delayToRemove: 200,                 // Time after which lobibox will be removed after remove call. (This option is for hide animation to finish)\n        delay: false,                       // Time to remove lobibox after shown\n        baseClass: 'animated-super-fast',   // Base class to add all messageboxes\n        showClass: 'zoomIn',                // Show animation class\n        hideClass: 'zoomOut',               // Hide animation class\n        iconSource: 'bootstrap',            // \"bootstrap\" or \"fontAwesome\" the library which will be used for icons\n\n        //events\n        //When messagebox show is called but before it is actually shown\n        onShow: null,\n        //After messagebox is shown\n        shown: null,\n        //When messagebox remove method is called but before it is actually hidden\n        beforeClose: null,\n        //After messagebox is hidden\n        closed: null\n    };\n//------------------------------------------------------------------------------\n//-------------------------LobiboxPrompt----------------------------------------\n//------------------------------------------------------------------------------\n    function LobiboxPrompt(type, options) {\n        this.$input = null;\n        this.$type = 'prompt';\n        this.$promptType = type;\n\n        options = $.extend({}, Lobibox.prompt.DEFAULT_OPTIONS, options);\n\n        this.$options = this._processInput(options);\n\n        this._init();\n        this.debug(this);\n    }\n\n    LobiboxPrompt.prototype = $.extend({}, LobiboxBase, {\n        constructor: LobiboxPrompt,\n\n        _processInput: function (options) {\n            var me = this;\n\n            var mergedOptions = LobiboxBase._processInput.call(me, options);\n            mergedOptions.buttons = {\n                ok: Lobibox.base.OPTIONS.buttons.ok,\n                cancel: Lobibox.base.OPTIONS.buttons.cancel\n            };\n            options = $.extend({}, mergedOptions, LobiboxPrompt.DEFAULT_OPTIONS, options);\n            return options;\n        },\n\n        _init: function () {\n            var me = this;\n            LobiboxBase._init.call(me);\n            me.show();\n        },\n\n        _afterShow: function () {\n            var me = this;\n            me._setContent(me._createInput())._position();\n            me.$input.focus();\n            LobiboxBase._afterShow.call(me);\n        },\n\n        _createInput: function () {\n            var me = this,\n                label;\n            if (me.$options.multiline) {\n                me.$input = $('<textarea></textarea>').attr('rows', me.$options.lines);\n            } else {\n                me.$input = $('<input type=\"' + me.$promptType + '\"/>');\n            }\n            me.$input.addClass('lobibox-input').attr(me.$options.attrs);\n            if (me.$options.value) {\n                me.setValue(me.$options.value);\n            }\n            if (me.$options.label) {\n                label = $('<label>' + me.$options.label + '</label>');\n            }\n            return $('<div></div>').append(label, me.$input);\n        },\n\n        /**\n         * Set value of input\n         *\n         * @param {string} val \"value of input\"\n         * @returns {LobiboxPrompt}\n         */\n        setValue: function (val) {\n            this.$input.val(val);\n            return this;\n        },\n\n        /**\n         * Get value of input\n         *\n         * @returns {String}\n         */\n        getValue: function () {\n            return this.$input.val();\n        },\n\n        isValid: function () {\n            var me = this,\n                $error = me.$el.find('.lobibox-input-error-message');\n\n            if (me.$options.required && !me.getValue()){\n                me.$input.addClass('invalid');\n                if ($error.length === 0){\n                    me.$el.find('.lobibox-body').append('<p class=\"lobibox-input-error-message\">'+me.$options.errorMessage+'</p>');\n                    me._position();\n                    me.$input.focus();\n                }\n                return false;\n            }\n            me.$input.removeClass('invalid');\n            $error.remove();\n            me._position();\n            me.$input.focus();\n\n            return true;\n        }\n    });\n\n    LobiboxPrompt.DEFAULT_OPTIONS = {\n        width: 400,\n        attrs: {},          // Object of any valid attribute of input field\n        value: '',          // Value which is given to textfield when messagebox is created\n        multiline: false,   // Set this true for multiline prompt\n        lines: 3,           // This works only for multiline prompt. Number of lines\n        type: 'text',       // Prompt type. Available types (text|number|color)\n        label: '',          // Set some text which will be shown exactly on top of textfield\n        required: true,\n        errorMessage: 'The field is required'\n    };\n//------------------------------------------------------------------------------\n//-------------------------LobiboxConfirm---------------------------------------\n//------------------------------------------------------------------------------\n    function LobiboxConfirm(options) {\n        this.$type = 'confirm';\n\n//        options = $.extend({}, Lobibox.confirm.DEFAULT_OPTIONS, options);\n\n        this.$options = this._processInput(options);\n        this._init();\n        this.debug(this);\n    }\n\n    LobiboxConfirm.prototype = $.extend({}, LobiboxBase, {\n        constructor: LobiboxConfirm,\n\n        _processInput: function (options) {\n            var me = this;\n\n            var mergedOptions = LobiboxBase._processInput.call(me, options);\n            mergedOptions.buttons = {\n                yes: Lobibox.base.OPTIONS.buttons.yes,\n                no: Lobibox.base.OPTIONS.buttons.no\n            };\n            options = $.extend({}, mergedOptions, Lobibox.confirm.DEFAULTS, options);\n            return options;\n        },\n\n        _init: function () {\n            var me = this;\n\n            LobiboxBase._init.call(me);\n            me.show();\n        },\n\n        _afterShow: function () {\n            var me = this;\n\n            var d = $('<div></div>');\n            if (me.$options.iconClass) {\n                d.append($('<div class=\"lobibox-icon-wrapper\"></div>')\n                    .append('<i class=\"lobibox-icon ' + me.$options.iconClass + '\"></i>'))\n                ;\n            }\n            d.append('<div class=\"lobibox-body-text-wrapper\"><span class=\"lobibox-body-text\">' + me.$options.msg + '</span></div>');\n            me._setContent(d.html());\n\n            me._position();\n\n            LobiboxBase._afterShow.call(me);\n        }\n    });\n\n    Lobibox.confirm.DEFAULTS = {\n        title: 'Question',\n        width: 500\n    };\n//------------------------------------------------------------------------------\n//-------------------------LobiboxAlert------------------------------------------\n//------------------------------------------------------------------------------\n    function LobiboxAlert(type, options) {\n        this.$type = type;\n\n//        options = $.extend({}, Lobibox.alert.DEFAULT_OPTIONS, Lobibox[type].DEFAULT_OPTIONS, options);\n\n        this.$options = this._processInput(options);\n\n        this._init();\n        this.debug(this);\n    }\n\n    LobiboxAlert.prototype = $.extend({}, LobiboxBase, {\n        constructor: LobiboxAlert,\n\n        _processInput: function (options) {\n\n//            ALERT_OPTIONS = $.extend({}, LobiboxAlert.OPTIONS, Lobibox.alert.DEFAULTS);\n            var me = this;\n            var mergedOptions = LobiboxBase._processInput.call(me, options);\n            mergedOptions.buttons = {\n                ok: Lobibox.base.OPTIONS.buttons.ok\n            };\n\n            options = $.extend({}, mergedOptions, Lobibox.alert.OPTIONS[me.$type], Lobibox.alert.DEFAULTS, options);\n\n            return options;\n        },\n\n        _init: function () {\n            var me = this;\n            LobiboxBase._init.call(me);\n            me.show();\n        },\n\n        _afterShow: function () {\n            var me = this;\n\n            var d = $('<div></div>');\n            if (me.$options.iconClass) {\n                d.append($('<div class=\"lobibox-icon-wrapper\"></div>')\n                    .append('<i class=\"lobibox-icon ' + me.$options.iconClass + '\"></i>'))\n                ;\n            }\n            d.append('<div class=\"lobibox-body-text-wrapper\"><span class=\"lobibox-body-text\">' + me.$options.msg + '</span></div>');\n            me._setContent(d.html());\n            me._position();\n\n            LobiboxBase._afterShow.call(me);\n        }\n    });\n    Lobibox.alert.OPTIONS = {\n        warning: {\n            title: 'Warning'\n        },\n        info: {\n            title: 'Information'\n        },\n        success: {\n            title: 'Success'\n        },\n        error: {\n            title: 'Error'\n        }\n    };\n    //User can set default options by this variable\n    Lobibox.alert.DEFAULTS = {};\n//------------------------------------------------------------------------------\n//-------------------------LobiboxProgress--------------------------------------\n//------------------------------------------------------------------------------\n    function LobiboxProgress(options) {\n        this.$type = 'progress';\n        this.$progressBarElement = null;\n        this.$options = this._processInput(options);\n        this.$progress = 0;\n\n        this._init();\n        this.debug(this);\n    }\n\n    LobiboxProgress.prototype = $.extend({}, LobiboxBase, {\n        constructor: LobiboxProgress,\n\n        _processInput: function (options) {\n            var me = this;\n            var mergedOptions = LobiboxBase._processInput.call(me, options);\n\n            options = $.extend({}, mergedOptions, Lobibox.progress.DEFAULTS, options);\n            return options;\n        },\n\n        _init: function () {\n            var me = this;\n\n            LobiboxBase._init.call(me);\n            me.show();\n        },\n\n        _afterShow: function () {\n            var me = this;\n\n            if (me.$options.progressTpl) {\n                me.$progressBarElement = $(me.$options.progressTpl);\n            } else {\n                me.$progressBarElement = me._createProgressbar();\n            }\n            var label;\n            if (me.$options.label) {\n                label = $('<label>' + me.$options.label + '</label>');\n            }\n            var innerHTML = $('<div></div>').append(label, me.$progressBarElement);\n            me._setContent(innerHTML);\n            me._position();\n\n            LobiboxBase._afterShow.call(me);\n        },\n\n        _createProgressbar: function () {\n            var me = this;\n            var outer = $('<div class=\"lobibox-progress-bar-wrapper lobibox-progress-outer\"></div>')\n                .append('<div class=\"lobibox-progress-bar lobibox-progress-element\"></div>')\n                ;\n            if (me.$options.showProgressLabel) {\n                outer.append('<span class=\"lobibox-progress-text\" data-role=\"progress-text\"></span>');\n            }\n\n            return outer;\n        },\n\n        /**\n         * Set progress value\n         *\n         * @param {number} progress \"progress value\"\n         * @returns {LobiboxProgress}\n         */\n        setProgress: function (progress) {\n            var me = this;\n            if (me.$progress === 100) {\n                return;\n            }\n            progress = Math.min(100, Math.max(0, progress));\n            me.$progress = progress;\n            me._triggerEvent('progressUpdated');\n            if (me.$progress === 100) {\n                me._triggerEvent('progressCompleted');\n            }\n            me.$el.find('.lobibox-progress-element').css('width', progress.toFixed(1) + \"%\");\n            me.$el.find('[data-role=\"progress-text\"]').html(progress.toFixed(1) + \"%\");\n            return me;\n        },\n\n        /**\n         * Get progress value\n         *\n         * @returns {number}\n         */\n        getProgress: function () {\n            return this.$progress;\n        }\n    });\n\n    Lobibox.progress.DEFAULTS = {\n        width: 500,\n        showProgressLabel: true,  // Show percentage of progress\n        label: '',  // Show progress label\n        progressTpl: false,  //Template of progress bar\n\n        //Events\n        progressUpdated: null,\n        progressCompleted: null\n    };\n//------------------------------------------------------------------------------\n//-------------------------LobiboxWindow----------------------------------------\n//------------------------------------------------------------------------------\n    function LobiboxWindow(type, options) {\n        this.$type = type;\n\n        this.$options = this._processInput(options);\n\n        this._init();\n        this.debug(this);\n    }\n\n    LobiboxWindow.prototype = $.extend({}, LobiboxBase, {\n        constructor: LobiboxWindow,\n        _processInput: function (options) {\n            var me = this;\n            var mergedOptions = LobiboxBase._processInput.call(me, options);\n\n            if (options.content && typeof options.content === 'function') {\n                options.content = options.content();\n            }\n            if (options.content instanceof jQuery) {\n                options.content = options.content.clone();\n            }\n            options = $.extend({}, mergedOptions, Lobibox.window.DEFAULTS, options);\n            return options;\n        },\n\n        _init: function () {\n            var me = this;\n\n            LobiboxBase._init.call(me);\n            me.setContent(me.$options.content);\n            if (me.$options.url && me.$options.autoload) {\n                if (!me.$options.showAfterLoad) {\n                    me.show();\n                }\n                me.load(function () {\n                    if (me.$options.showAfterLoad) {\n                        me.show();\n                    }\n                });\n            } else {\n                me.show();\n            }\n        },\n\n        _afterShow: function () {\n            var me = this;\n\n            me._position();\n\n            LobiboxBase._afterShow.call(me);\n        },\n\n        /**\n         * Setter method for <code>params</code> option\n         *\n         * @param {object} params \"new params\"\n         * @returns {LobiboxWindow}\n         */\n        setParams: function (params) {\n            var me = this;\n            me.$options.params = params;\n            return me;\n        },\n        /**\n         * Getter method for <code>params</code>\n         *\n         * @returns {object}\n         */\n        getParams: function () {\n            var me = this;\n            return me.$options.params;\n        },\n        /**\n         * Setter method of <code>loadMethod</code> option\n         *\n         * @param {string} method \"new method\"\n         * @returns {LobiboxWindow}\n         */\n        setLoadMethod: function (method) {\n            var me = this;\n            me.$options.loadMethod = method;\n            return me;\n        },\n        /**\n         * Getter method for <code>loadMethod</code> option\n         *\n         * @returns {string}\n         */\n        getLoadMethod: function () {\n            var me = this;\n            return me.$options.loadMethod;\n        },\n        /**\n         * Setter method of <code>content</code> option.\n         * Change the content of window\n         *\n         * @param {string} content \"new content\"\n         * @returns {LobiboxWindow}\n         */\n        setContent: function (content) {\n            var me = this;\n            me.$options.content = content;\n            me.$el.find('.lobibox-body').html('').append(content);\n            return me;\n        },\n        /**\n         * Getter method of <code>content</code> option\n         *\n         * @returns {string}\n         */\n        getContent: function () {\n            var me = this;\n            return me.$options.content;\n        },\n        /**\n         * Setter method of <code>url</code> option\n         *\n         * @param {string} url \"new url\"\n         * @returns {LobiboxWindow}\n         */\n        setUrl: function (url) {\n            this.$options.url = url;\n            return this;\n        },\n        /**\n         * Getter method of <code>url</code> option\n         *\n         * @returns {String}\n         */\n        getUrl: function () {\n            return this.$options.url;\n        },\n        /**\n         * Loads content to window by ajax from specific url\n         *\n         * @param {Function} callback \"callback function\"\n         * @returns {LobiboxWindow}\n         */\n        load: function (callback) {\n            var me = this;\n            if (!me.$options.url) {\n                return me;\n            }\n            $.ajax(me.$options.url, {\n                method: me.$options.loadMethod,\n                data: me.$options.params\n            }).done(function (res) {\n                me.setContent(res);\n                if (callback && typeof callback === 'function') {\n                    callback(res);\n                }\n            });\n            return me;\n        }\n    });\n\n    Lobibox.window.DEFAULTS = {\n        width: 480,\n        height: 600,\n        content: '',  // HTML Content of window\n        url: '',  // URL which will be used to load content\n        draggable: true,  // Override default option\n        autoload: true,  // Auto load from given url when window is created\n        loadMethod: 'GET',  // Ajax method to load content\n        showAfterLoad: true,  // Show window after content is loaded or show and then load content\n        params: {}  // Parameters which will be send by ajax for loading content\n    };\n\n})();\n\n//Author      : @arboshiki\n/**\n * Generates random string of n length.\n * String contains only letters and numbers\n *\n * @param {int} n\n * @returns {String}\n */\nMath.randomString = function (n) {\n    var text = \"\";\n    var possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n\n    for (var i = 0; i < n; i++)\n        text += possible.charAt(Math.floor(Math.random() * possible.length));\n\n    return text;\n};\nvar Lobibox = Lobibox || {};\n(function () {\n\n    var LobiboxNotify = function (type, options) {\n//------------------------------------------------------------------------------\n//----------------PROTOTYPE VARIABLES-------------------------------------------\n//------------------------------------------------------------------------------\n        this.$type = null;\n        this.$options = null;\n        this.$el = null;\n//------------------------------------------------------------------------------\n//-----------------PRIVATE VARIABLES--------------------------------------------\n//------------------------------------------------------------------------------        \n        var me = this;\n//------------------------------------------------------------------------------\n//-----------------PRIVATE FUNCTIONS--------------------------------------------\n//------------------------------------------------------------------------------\n        var _processInput = function (options) {\n\n            if (options.size === 'mini' || options.size === 'large') {\n                options = $.extend({}, Lobibox.notify.OPTIONS[options.size], options);\n            }\n            options = $.extend({}, Lobibox.notify.OPTIONS[me.$type], Lobibox.notify.DEFAULTS, options);\n\n            if (options.size !== 'mini' && options.title === true) {\n                options.title = Lobibox.notify.OPTIONS[me.$type].title;\n            } else if (options.size === 'mini' && options.title === true) {\n                options.title = false;\n            }\n            if (options.icon === true) {\n                options.icon = Lobibox.notify.OPTIONS.icons[options.iconSource][me.$type];\n            }\n            if (options.sound === true) {\n                options.sound = Lobibox.notify.OPTIONS[me.$type].sound;\n            }\n            if (options.sound) {\n                options.sound = options.soundPath + options.sound + options.soundExt;\n            }\n            return options;\n        };\n\n        var _appendInWrapper = function ($el, $wrapper) {\n            if (me.$options.size === 'normal') {\n                if ($wrapper.hasClass('bottom')) {\n                    $wrapper.prepend($el);\n                } else {\n                    $wrapper.append($el);\n                }\n\n            } else if (me.$options.size === 'mini') {\n                if ($wrapper.hasClass('bottom')) {\n                    $wrapper.prepend($el);\n                } else {\n                    $wrapper.append($el);\n                }\n            } else if (me.$options.size === 'large') {\n                var tabPane = _createTabPane().append($el);\n                var $li = _createTabControl(tabPane.attr('id'));\n                $wrapper.find('.lb-notify-wrapper').append(tabPane);\n                $wrapper.find('.lb-notify-tabs').append($li);\n                _activateTab($li);\n                $li.find('>a').click(function () {\n                    _activateTab($li);\n                });\n            }\n        };\n        var _activateTab = function ($li) {\n            $li.closest('.lb-notify-tabs').find('>li').removeClass('active');\n            $li.addClass('active');\n            var $current = $($li.find('>a').attr('href'));\n            $current.closest('.lb-notify-wrapper').find('>.lb-tab-pane').removeClass('active');\n            $current.addClass('active')\n        };\n        var _createTabControl = function (tabPaneId) {\n            var $li = $('<li></li>', {\n                'class': Lobibox.notify.OPTIONS[me.$type]['class']\n            });\n            $('<a></a>', {\n                'href': '#' + tabPaneId\n            }).append('<i class=\"tab-control-icon ' + me.$options.icon + '\"></i>')\n                .appendTo($li);\n            return $li;\n        };\n        var _createTabPane = function () {\n            return $('<div></div>', {\n                'class': 'lb-tab-pane',\n                'id': Math.randomString(10)\n            })\n        };\n        var _createNotifyWrapper = function () {\n            var selector = (me.$options.size === 'large' ? '.lobibox-notify-wrapper-large' : '.lobibox-notify-wrapper')\n                    + \".\" + me.$options.position.replace(/\\s/gi, '.'),\n                $wrapper;\n\n            //var classes = me.$options.position.split(\" \");\n            $wrapper = $(selector);\n            if ($wrapper.length === 0) {\n                $wrapper = $('<div></div>')\n                    .addClass(selector.replace(/\\./g, ' ').trim())\n                    .appendTo($('body'));\n                if (me.$options.size === 'large') {\n                    $wrapper.append($('<ul class=\"lb-notify-tabs\"></ul>'))\n                        .append($('<div class=\"lb-notify-wrapper\"></div>'));\n                }\n            }\n            return $wrapper;\n        };\n        var _createNotify = function () {\n            var OPTS = Lobibox.notify.OPTIONS,\n                $iconEl,\n                $innerIconEl,\n                $iconWrapper,\n                $body,\n                $msg,\n                $notify = $('<div></div>', {\n                    'class': 'lobibox-notify ' + OPTS[me.$type]['class'] + ' ' + OPTS['class'] + ' ' + me.$options.showClass\n                });\n\n            $iconWrapper = $('<div class=\"lobibox-notify-icon-wrapper\"></div>').appendTo($notify);\n            $iconEl = $('<div class=\"lobibox-notify-icon\"></div>').appendTo($iconWrapper);\n            $innerIconEl = $('<div></div>').appendTo($iconEl);\n\n            // Add image or icon depending on given parameters\n            if (me.$options.img) {\n                $innerIconEl.append('<img src=\"' + me.$options.img + '\"/>');\n            } else if (me.$options.icon) {\n                $innerIconEl.append('<div class=\"icon-el\"><i class=\"' + me.$options.icon + '\"></i></div>');\n            } else {\n                $notify.addClass('without-icon');\n            }\n            // Create body, append title and message in body and append body in notification\n            $msg = $('<div class=\"lobibox-notify-msg\">' + me.$options.msg + '</div>');\n\n            if (me.$options.messageHeight !== false) {\n                $msg.css('max-height', me.$options.messageHeight);\n            }\n\n            $body = $('<div></div>', {\n                'class': 'lobibox-notify-body'\n            }).append($msg).appendTo($notify);\n\n            if (me.$options.title) {\n                $body.prepend('<div class=\"lobibox-notify-title\">' + me.$options.title + '<div>');\n            }\n            _addCloseButton($notify);\n            if (me.$options.size === 'normal' || me.$options.size === 'mini') {\n                _addCloseOnClick($notify);\n                _addDelay($notify);\n            }\n\n            // Give width to notification\n            if (me.$options.width) {\n                $notify.css('width', _calculateWidth(me.$options.width));\n            }\n\n            return $notify;\n        };\n        var _addCloseButton = function ($el) {\n            if (!me.$options.closable) {\n                return;\n            }\n            $('<span class=\"lobibox-close\">&times;</span>')\n                .click(function (ev) {\n                    ev.preventDefault();\n                    ev.stopPropagation();\n                    me.remove();\n                }).appendTo($el);\n        };\n        var _addCloseOnClick = function ($el) {\n            if (!me.$options.closeOnClick) {\n                return;\n            }\n            $el.click(function () {\n                me.remove();\n            });\n        };\n        var _addDelay = function ($el) {\n            if (!me.$options.delay) {\n                return;\n            }\n            if (me.$options.delayIndicator) {\n                var delay = $('<div class=\"lobibox-delay-indicator\"><div></div></div>');\n                $el.append(delay);\n            }\n            var time = 0;\n            var interval = 1000 / 30;\n            var currentTime = new Date().getTime();\n            var timer = setInterval(function () {\n                if (me.$options.continueDelayOnInactiveTab) {\n                    time = new Date().getTime() - currentTime;\n                } else {\n                    time += interval;\n                }\n\n                var width = 100 * time / me.$options.delay;\n                if (width >= 100) {\n                    width = 100;\n                    me.remove();\n                    timer = clearInterval(timer);\n                }\n                if (me.$options.delayIndicator) {\n                    delay.find('div').css('width', width + \"%\");\n                }\n\n            }, interval);\n\n            if (me.$options.pauseDelayOnHover) {\n                $el.on('mouseenter.lobibox', function () {\n                    interval = 0;\n                }).on('mouseleave.lobibox', function () {\n                    interval = 1000 / 30;\n                });\n            }\n        };\n        var _findTabToActivate = function ($li) {\n            var $itemToActivate = $li.prev();\n            if ($itemToActivate.length === 0) {\n                $itemToActivate = $li.next();\n            }\n            if ($itemToActivate.length === 0) {\n                return null;\n            }\n            return $itemToActivate;\n        };\n        var _calculateWidth = function (width) {\n            width = Math.min($(window).outerWidth(), width);\n            return width;\n        };\n//------------------------------------------------------------------------------\n//----------------PROTOTYPE FUNCTIONS-------------------------------------------\n//------------------------------------------------------------------------------\n        /**\n         * Delete the notification\n         *\n         * @returns {LobiboxNotify}\n         */\n        this.remove = function () {\n            me.$el.removeClass(me.$options.showClass)\n                .addClass(me.$options.hideClass);\n            var parent = me.$el.parent();\n            var wrapper = parent.closest('.lobibox-notify-wrapper-large');\n\n            var href = '#' + parent.attr('id');\n\n            var $li = wrapper.find('>.lb-notify-tabs>li:has(a[href=\"' + href + '\"])');\n            $li.addClass(Lobibox.notify.OPTIONS['class'])\n                .addClass(me.$options.hideClass);\n            setTimeout(function () {\n                if (me.$options.size === 'normal' || me.$options.size === 'mini') {\n                    me.$el.remove();\n                } else if (me.$options.size === 'large') {\n\n                    var $newLi = _findTabToActivate($li);\n                    if ($newLi) {\n                        _activateTab($newLi);\n                    }\n                    $li.remove();\n                    parent.remove();\n                }\n                var list = Lobibox.notify.list;\n                var ind = list.indexOf(me);\n                list.splice(ind, 1);\n                var next = list[ind];\n                if (next && next.$options.showAfterPrevious) {\n                    next._init();\n                }\n            }, 500);\n            return me;\n        };\n        me._init = function () {\n            // Create notification\n            var $notify = _createNotify();\n            if (me.$options.size === 'mini') {\n                $notify.addClass('notify-mini');\n            }\n\n            if (typeof me.$options.position === 'string') {\n                var $wrapper = _createNotifyWrapper();\n                _appendInWrapper($notify, $wrapper);\n                if ($wrapper.hasClass('center')) {\n                    $wrapper.css('margin-left', '-' + ($wrapper.width() / 2) + \"px\");\n                }\n            } else {\n                $('body').append($notify);\n                $notify.css({\n                    'position': 'fixed',\n                    left: me.$options.position.left,\n                    top: me.$options.position.top\n                })\n            }\n\n            me.$el = $notify;\n            if (me.$options.sound) {\n                var snd = new Audio(me.$options.sound); // buffers automatically when created\n                snd.play();\n            }\n            if (me.$options.rounded) {\n                me.$el.addClass('rounded');\n            }\n            me.$el.on('click.lobibox', function (ev) {\n                if (me.$options.onClickUrl) {\n                    window.location.href = me.$options.onClickUrl;\n                }\n                if (me.$options.onClick && typeof me.$options.onClick === 'function') {\n                    me.$options.onClick.call(me, ev);\n                }\n            });\n            me.$el.data('lobibox', me);\n        };\n//------------------------------------------------------------------------------\n//------------------------------------------------------------------------------\n//------------------------------------------------------------------------------\n        this.$type = type;\n        this.$options = _processInput(options);\n        if (!me.$options.showAfterPrevious || Lobibox.notify.list.length === 0) {\n            this._init();\n        }\n\n    };\n\n    Lobibox.notify = function (type, options) {\n        if ([\"default\", \"info\", \"warning\", \"error\", \"success\"].indexOf(type) > -1) {\n            var lobibox = new LobiboxNotify(type, options);\n            Lobibox.notify.list.push(lobibox);\n            return lobibox;\n        }\n    };\n    Lobibox.notify.list = [];\n    Lobibox.notify.closeAll = function () {\n        var list = Lobibox.notify.list;\n        for (var i in list) {\n            list[i].remove();\n        }\n    };\n    //User can set default options to this variable\n    Lobibox.notify.DEFAULTS = {\n        title: true,                // Title of notification. If you do not include the title in options it will automatically takes its value \n        //from Lobibox.notify.OPTIONS object depending of the type of the notifications or set custom string. Set this false to disable title\n        size: 'normal',             // normal, mini, large\n        soundPath: 'sounds/',   // The folder path where sounds are located\n        soundExt: '.ogg',           // Default extension for all sounds\n        showClass: 'fadeInDown',    // Show animation class.\n        hideClass: 'zoomOut',       // Hide animation class.\n        icon: true,                 // Icon of notification. Leave as is for default icon or set custom string\n        msg: '',                    // Message of notification\n        img: null,                  // Image source string\n        closable: true,             // Make notifications closable\n        hideCloseButton: false,     // Notification may be closable but you can hide close button and it will be closed by clicking on notification itsef\n        delay: 5000,                // Hide notification after this time (in miliseconds)\n        delayIndicator: true,       // Show timer indicator\n        closeOnClick: true,         // Close notifications by clicking on them\n        width: 400,                 // Width of notification box\n        sound: true,                // Sound of notification. Set this false to disable sound. Leave as is for default sound or set custom soud path\n        // Place to show notification. Available options: \"top left\", \"top right\", \"bottom left\", \"bottom right\", \"center top\", \"center bottom\"\n        // It can also be object {left: number, top: number} to position notification at any place\n        position: \"bottom right\",\n        iconSource: 'bootstrap',    // \"bootstrap\" or \"fontAwesome\" the library which will be used for icons\n        rounded: false,             // Whether to make notification corners rounded\n        messageHeight: 60,          // Notification message maximum height. This is not for notification itself, this is for <code>.lobibox-notify-msg</code>\n        pauseDelayOnHover: true,    // When you mouse over on notification delay (if it is enabled) will be paused.\n        onClickUrl: null,           // The url which will be opened when notification is clicked\n        showAfterPrevious: false,   // Set this to true if you want notification not to be shown until previous notification is closed. This is useful for notification queues\n        continueDelayOnInactiveTab: true, // Continue delay when browser tab is inactive\n\n        // Events\n        onClick: null\n    };\n    //This variable is necessary.\n    Lobibox.notify.OPTIONS = {\n        'class': 'animated-fast',\n        large: {\n            width: 500,\n            messageHeight: 96\n        },\n        mini: {\n            'class': 'notify-mini',\n            messageHeight: 32\n        },\n        default: {\n            'class': 'lobibox-notify-default',\n            'title': 'Default',\n            sound: false\n        },\n        success: {\n            'class': 'lobibox-notify-success',\n            'title': 'Success',\n            sound: 'sound2'\n        },\n        error: {\n            'class': 'lobibox-notify-error',\n            'title': 'Error',\n            sound: 'sound4'\n        },\n        warning: {\n            'class': 'lobibox-notify-warning',\n            'title': 'Warning',\n            sound: 'sound5'\n        },\n        info: {\n            'class': 'lobibox-notify-info',\n            'title': 'Information',\n            sound: 'sound6'\n        },\n        icons: {\n            bootstrap: {\n                success: 'glyphicon glyphicon-ok-sign',\n                error: 'glyphicon glyphicon-remove-sign',\n                warning: 'glyphicon glyphicon-exclamation-sign',\n                info: 'glyphicon glyphicon-info-sign'\n            },\n            fontAwesome: {\n                success: 'fa fa-check-circle',\n                error: 'fa fa-times-circle',\n                warning: 'fa fa-exclamation-circle',\n                info: 'fa fa-info-circle'\n            }\n        }\n    };\n})();\n\n"
  },
  {
    "path": "public/admin/js/bootstrap-datetimepicker.js",
    "content": "/* =========================================================\n * bootstrap-datetimepicker.js\n * =========================================================\n * Copyright 2012 Stefan Petre\n * Improvements by Andrew Rowls\n * Improvements by Sbastien Malot\n * Project URL : http://www.malot.fr/bootstrap-datetimepicker\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ========================================================= */\n\n!function( $ ) {\n\n\tfunction UTCDate(){\n\t\treturn new Date(Date.UTC.apply(Date, arguments));\n\t}\n\tfunction UTCToday(){\n\t\tvar today = new Date();\n\t\treturn UTCDate(today.getUTCFullYear(), today.getUTCMonth(), today.getUTCDate(), today.getUTCHours(), today.getUTCMinutes(), today.getUTCSeconds(), 0);\n\t}\n\n\t// Picker object\n\n\tvar Datetimepicker = function(element, options) {\n\t\tvar that = this;\n\n\t\tthis.element = $(element);\n\t\tthis.language = options.language || this.element.data('date-language') || \"en\";\n\t\tthis.language = this.language in dates ? this.language : \"en\";\n\t\tthis.isRTL = dates[this.language].rtl || false;\n\t\tthis.formatType = options.formatType || this.element.data('format-type') || 'standard';\n\t\tthis.format = DPGlobal.parseFormat(options.format || this.element.data('date-format') || DPGlobal.getDefaultFormat(this.formatType, 'input'), this.formatType);\n\t\tthis.isInline = false;\n\t\tthis.isVisible = false;\n\t\tthis.isInput = this.element.is('input');\n\t\tthis.component = this.element.is('.date') ? this.element.find('.add-on .icon-th, .add-on .icon-time, .add-on .icon-calendar').parent() : false;\n\t\tthis.componentReset = this.element.is('.date') ? this.element.find('.add-on .icon-remove').parent() : false;\n\t\tthis.hasInput = this.component && this.element.find('input').length;\n\t\tif (this.component && this.component.length === 0) {\n\t\t\tthis.component = false;\n\t\t}\n\t\tthis.linkField = options.linkField || this.element.data('link-field') || false;\n\t\tthis.linkFormat = DPGlobal.parseFormat(options.linkFormat || this.element.data('link-format') || DPGlobal.getDefaultFormat(this.formatType, 'link'), this.formatType);\n\t\tthis.minuteStep = options.minuteStep || this.element.data('minute-step') || 5;\n\t\tthis.pickerPosition = options.pickerPosition || this.element.data('picker-position') || 'bottom-right';\n\t\t\t\tthis.showMeridian = options.showMeridian || this.element.data('show-meridian') || false;\n\t\t\t\tthis.initialDate = options.initialDate || new Date();\n\n\t\tthis._attachEvents();\n\t\t\n\t\t\tthis.formatViewType = \"datetime\";\n\t\t\tif ('formatViewType' in options) {\n\t\t\t\t\tthis.formatViewType = options.formatViewType;\n\t\t\t} else if ('formatViewType' in this.element.data()) {\n\t\t\t\t\tthis.formatViewType = this.element.data('formatViewType');\n\t\t\t}\n\n\t\tthis.minView = 0;\n\t\tif ('minView' in options) {\n\t\t\tthis.minView = options.minView;\n\t\t} else if ('minView' in this.element.data()) {\n\t\t\tthis.minView = this.element.data('min-view');\n\t\t}\n\t\tthis.minView = DPGlobal.convertViewMode(this.minView);\n\n\t\tthis.maxView = DPGlobal.modes.length-1;\n\t\tif ('maxView' in options) {\n\t\t\tthis.maxView = options.maxView;\n\t\t} else if ('maxView' in this.element.data()) {\n\t\t\tthis.maxView = this.element.data('max-view');\n\t\t}\n\t\tthis.maxView = DPGlobal.convertViewMode(this.maxView);\n\n\t\tthis.startViewMode = 2;\n\t\tif ('startView' in options) {\n\t\t\tthis.startViewMode = options.startView;\n\t\t} else if ('startView' in this.element.data()) {\n\t\t\tthis.startViewMode = this.element.data('start-view');\n\t\t}\n\t\tthis.startViewMode = DPGlobal.convertViewMode(this.startViewMode);\n\t\tthis.viewMode = this.startViewMode;\n\n\t\t\t\tthis.viewSelect = this.minView;\n\t\t\t\tif ('viewSelect' in options) {\n\t\t\t\t\t\tthis.viewSelect = options.viewSelect;\n\t\t\t\t} else if ('viewSelect' in this.element.data()) {\n\t\t\t\t\t\tthis.viewSelect = this.element.data('view-select');\n\t\t\t\t}\n\t\t\t\tthis.viewSelect = DPGlobal.convertViewMode(this.viewSelect);\n\n\t\tthis.forceParse = true;\n\t\tif ('forceParse' in options) {\n\t\t\tthis.forceParse = options.forceParse;\n\t\t} else if ('dateForceParse' in this.element.data()) {\n\t\t\tthis.forceParse = this.element.data('date-force-parse');\n\t\t}\n\n\t\tthis.picker = $(DPGlobal.template)\n\t\t\t\t\t\t\t.appendTo(this.isInline ? this.element : 'body')\n\t\t\t\t\t\t\t.on({\n\t\t\t\t\t\t\t\tclick: $.proxy(this.click, this),\n\t\t\t\t\t\t\t\tmousedown: $.proxy(this.mousedown, this)\n\t\t\t\t\t\t\t});\n\n\t\tif (this.isInline) {\n\t\t\tthis.picker.addClass('datetimepicker-inline');\n\t\t} else {\n\t\t\tthis.picker.addClass('datetimepicker-dropdown-' + this.pickerPosition + ' dropdown-menu');\n\t\t}\n\t\tif (this.isRTL){\n\t\t\tthis.picker.addClass('datetimepicker-rtl');\n\t\t\tthis.picker.find('.prev i, .next i')\n\t\t\t\t\t\t.toggleClass('icon-arrow-left icon-arrow-right');\n\t\t}\n\t\t$(document).on('mousedown', function (e) {\n\t\t\t// Clicked outside the datetimepicker, hide it\n\t\t\tif ($(e.target).closest('.datetimepicker').length === 0) {\n\t\t\t\tthat.hide();\n\t\t\t}\n\t\t});\n\n\t\tthis.autoclose = false;\n\t\tif ('autoclose' in options) {\n\t\t\tthis.autoclose = options.autoclose;\n\t\t} else if ('dateAutoclose' in this.element.data()) {\n\t\t\tthis.autoclose = this.element.data('date-autoclose');\n\t\t}\n\n\t\tthis.keyboardNavigation = true;\n\t\tif ('keyboardNavigation' in options) {\n\t\t\tthis.keyboardNavigation = options.keyboardNavigation;\n\t\t} else if ('dateKeyboardNavigation' in this.element.data()) {\n\t\t\tthis.keyboardNavigation = this.element.data('date-keyboard-navigation');\n\t\t}\n\n\t\tthis.todayBtn = (options.todayBtn || this.element.data('date-today-btn') || false);\n\t\tthis.todayHighlight = (options.todayHighlight || this.element.data('date-today-highlight') || false);\n\n\t\tthis.weekStart = ((options.weekStart || this.element.data('date-weekstart') || dates[this.language].weekStart || 0) % 7);\n\t\tthis.weekEnd = ((this.weekStart + 6) % 7);\n\t\tthis.startDate = -Infinity;\n\t\tthis.endDate = Infinity;\n\t\tthis.daysOfWeekDisabled = [];\n\t\tthis.setStartDate(options.startDate || this.element.data('date-startdate'));\n\t\tthis.setEndDate(options.endDate || this.element.data('date-enddate'));\n\t\tthis.setDaysOfWeekDisabled(options.daysOfWeekDisabled || this.element.data('date-days-of-week-disabled'));\n\t\tthis.fillDow();\n\t\tthis.fillMonths();\n\t\tthis.update();\n\t\tthis.showMode();\n\n\t\tif(this.isInline) {\n\t\t\tthis.show();\n\t\t}\n\t};\n\n\tDatetimepicker.prototype = {\n\t\tconstructor: Datetimepicker,\n\n\t\t_events: [],\n\t\t_attachEvents: function(){\n\t\t\tthis._detachEvents();\n\t\t\tif (this.isInput) { // single input\n\t\t\t\tthis._events = [\n\t\t\t\t\t[this.element, {\n\t\t\t\t\t\tfocus: $.proxy(this.show, this),\n\t\t\t\t\t\tkeyup: $.proxy(this.update, this),\n\t\t\t\t\t\tkeydown: $.proxy(this.keydown, this)\n\t\t\t\t\t}]\n\t\t\t\t];\n\t\t\t}\n\t\t\telse if (this.component && this.hasInput){ // component: input + button\n\t\t\t\tthis._events = [\n\t\t\t\t\t// For components that are not readonly, allow keyboard nav\n\t\t\t\t\t[this.element.find('input'), {\n\t\t\t\t\t\tfocus: $.proxy(this.show, this),\n\t\t\t\t\t\tkeyup: $.proxy(this.update, this),\n\t\t\t\t\t\tkeydown: $.proxy(this.keydown, this)\n\t\t\t\t\t}],\n\t\t\t\t\t[this.component, {\n\t\t\t\t\t\tclick: $.proxy(this.show, this)\n\t\t\t\t\t}]\n\t\t\t\t];\n\t\t\t\tif (this.componentReset) {\n\t\t\t\t\tthis._events.push([\n\t\t\t\t\t\tthis.componentReset,\n\t\t\t\t\t\t{click: $.proxy(this.reset, this)}\n\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (this.element.is('div')) {  // inline datetimepicker\n\t\t\t\tthis.isInline = true;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis._events = [\n\t\t\t\t\t[this.element, {\n\t\t\t\t\t\tclick: $.proxy(this.show, this)\n\t\t\t\t\t}]\n\t\t\t\t];\n\t\t\t}\n\t\t\tfor (var i=0, el, ev; i<this._events.length; i++){\n\t\t\t\tel = this._events[i][0];\n\t\t\t\tev = this._events[i][1];\n\t\t\t\tel.on(ev);\n\t\t\t}\n\t\t},\n\t\t\n\t\t_detachEvents: function(){\n\t\t\tfor (var i=0, el, ev; i<this._events.length; i++){\n\t\t\t\tel = this._events[i][0];\n\t\t\t\tev = this._events[i][1];\n\t\t\t\tel.off(ev);\n\t\t\t}\n\t\t\tthis._events = [];\n\t\t},\n\n\t\tshow: function(e) {\n\t\t\tthis.picker.show();\n\t\t\tthis.height = this.component ? this.component.outerHeight() : this.element.outerHeight();\n\t\t\tif (this.forceParse) {\n\t\t\t\tthis.update();\n\t\t\t}\n\t\t\tthis.place();\n\t\t\t$(window).on('resize', $.proxy(this.place, this));\n\t\t\tif (e) {\n\t\t\t\te.stopPropagation();\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t\tthis.isVisible = true;\n\t\t\tthis.element.trigger({\n\t\t\t\ttype: 'show',\n\t\t\t\tdate: this.date\n\t\t\t});\n\t\t},\n\n\t\thide: function(e){\n\t\t\tif(!this.isVisible) return;\n\t\t\tif(this.isInline) return;\n\t\t\tthis.picker.hide();\n\t\t\t$(window).off('resize', this.place);\n\t\t\tthis.viewMode = this.startViewMode;\n\t\t\tthis.showMode();\n\t\t\tif (!this.isInput) {\n\t\t\t\t$(document).off('mousedown', this.hide);\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tthis.forceParse &&\n\t\t\t\t(\n\t\t\t\t\tthis.isInput && this.element.val()  || \n\t\t\t\t\tthis.hasInput && this.element.find('input').val()\n\t\t\t\t)\n\t\t\t)\n\t\t\t\tthis.setValue();\n\t\t\tthis.isVisible = false;\n\t\t\tthis.element.trigger({\n\t\t\t\ttype: 'hide',\n\t\t\t\tdate: this.date\n\t\t\t});\n\t\t},\n\n\t\tremove: function() {\n\t\t\tthis._detachEvents();\n\t\t\tthis.picker.remove();\n\t\t\tdelete this.element.data().datetimepicker;\n\t\t},\n\n\t\tgetDate: function() {\n\t\t\tvar d = this.getUTCDate();\n\t\t\treturn new Date(d.getTime() + (d.getTimezoneOffset()*60000));\n\t\t},\n\n\t\tgetUTCDate: function() {\n\t\t\treturn this.date;\n\t\t},\n\n\t\tsetDate: function(d) {\n\t\t\tthis.setUTCDate(new Date(d.getTime() - (d.getTimezoneOffset()*60000)));\n\t\t},\n\n\t\tsetUTCDate: function(d) {\n\t\t\tif (d >= this.startDate && d <= this.endDate) {\n\t\t\t\tthis.date = d;\n\t\t\t\tthis.setValue();\n\t\t\t\tthis.viewDate = this.date;\n\t\t\t\tthis.fill();\n\t\t\t} else {\n\t\t\t\tthis.element.trigger({\n\t\t\t\t\ttype: 'outOfRange',\n\t\t\t\t\tdate: d,\n\t\t\t\t\tstartDate: this.startDate,\n\t\t\t\t\tendDate: this.endDate\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n        setFormat: function(format) {\n            this.format = DPGlobal.parseFormat(format, this.formatType);\n            var element;\n            if (this.isInput) {\n                element = this.element;\n            } else if (this.component){\n                element = this.element.find('input');\n            }\n            if (element && element.val()) {\n                this.setValue();\n            }\n        },\n\n\t\tsetValue: function() {\n\t\t\tvar formatted = this.getFormattedDate();\n\t\t\tif (!this.isInput) {\n\t\t\t\tif (this.component){\n\t\t\t\t\tthis.element.find('input').val(formatted);\n\t\t\t\t}\n\t\t\t\tthis.element.data('date', formatted);\n\t\t\t} else {\n\t\t\t\tthis.element.val(formatted);\n\t\t\t}\n\t\t\tif (this.linkField) {\n\t\t\t\t$('#' + this.linkField).val(this.getFormattedDate(this.linkFormat));\n\t\t\t}\n\t\t},\n\n\t\tgetFormattedDate: function(format) {\n\t\t\tif(format == undefined) format = this.format;\n\t\t\treturn DPGlobal.formatDate(this.date, format, this.language, this.formatType);\n\t\t},\n\n\t\tsetStartDate: function(startDate){\n\t\t\tthis.startDate = startDate || -Infinity;\n\t\t\tif (this.startDate !== -Infinity) {\n\t\t\t\tthis.startDate = DPGlobal.parseDate(this.startDate, this.format, this.language, this.formatType);\n\t\t\t}\n\t\t\tthis.update();\n\t\t\tthis.updateNavArrows();\n\t\t},\n\n\t\tsetEndDate: function(endDate){\n\t\t\tthis.endDate = endDate || Infinity;\n\t\t\tif (this.endDate !== Infinity) {\n\t\t\t\tthis.endDate = DPGlobal.parseDate(this.endDate, this.format, this.language, this.formatType);\n\t\t\t}\n\t\t\tthis.update();\n\t\t\tthis.updateNavArrows();\n\t\t},\n\n\t\tsetDaysOfWeekDisabled: function(daysOfWeekDisabled){\n\t\t\tthis.daysOfWeekDisabled = daysOfWeekDisabled || [];\n\t\t\tif (!$.isArray(this.daysOfWeekDisabled)) {\n\t\t\t\tthis.daysOfWeekDisabled = this.daysOfWeekDisabled.split(/,\\s*/);\n\t\t\t}\n\t\t\tthis.daysOfWeekDisabled = $.map(this.daysOfWeekDisabled, function (d) {\n\t\t\t\treturn parseInt(d, 10);\n\t\t\t});\n\t\t\tthis.update();\n\t\t\tthis.updateNavArrows();\n\t\t},\n\n\t\tplace: function(){\n\t\t\tif(this.isInline) return;\n\t\t\tvar zIndex = parseInt(this.element.parents().filter(function() {\n\t\t\t\treturn $(this).css('z-index') != 'auto';\n\t\t\t}).first().css('z-index'))+10;\n\t\t\tvar offset, top, left;\n\t\t\tif (this.component) {\n\t\t\t\toffset = this.component.offset();\n\t\t\t\tleft = offset.left;\n\t\t\t\tif (this.pickerPosition == 'bottom-left' || this.pickerPosition == 'top-left') {\n\t\t\t\t\tleft += this.component.outerWidth() - this.picker.outerWidth();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toffset = this.element.offset();\n\t\t\t\tleft = offset.left;\n\t\t\t}\n\t\t\tif (this.pickerPosition == 'top-left' || this.pickerPosition == 'top-right') {\n\t\t\t\ttop = offset.top - this.picker.outerHeight();\n\t\t\t} else {\n\t\t\t\ttop = offset.top + this.height;\n\t\t\t}\n\t\t\tthis.picker.css({\n\t\t\t\ttop: top,\n\t\t\t\tleft: left,\n\t\t\t\tzIndex: zIndex\n\t\t\t});\n\t\t},\n\n\t\tupdate: function(){\n\t\t\tvar date, fromArgs = false;\n\t\t\tif(arguments && arguments.length && (typeof arguments[0] === 'string' || arguments[0] instanceof Date)) {\n\t\t\t\tdate = arguments[0];\n\t\t\t\tfromArgs = true;\n\t\t\t} else {\n                date = this.element.data('date') || (this.isInput ? this.element.val() : this.element.find('input').val()) || this.initialDate;\n\t\t\t}\n\n\t\t\tif (!date) {\n\t\t\t\tdate = new Date();\n\t\t\t\tfromArgs = false;\n\t\t\t}\n\n\t\t\tthis.date = DPGlobal.parseDate(date, this.format, this.language, this.formatType);\n\n\t\t\tif (fromArgs) this.setValue();\n\n\t\t\tif (this.date < this.startDate) {\n\t\t\t\tthis.viewDate = new Date(this.startDate);\n\t\t\t} else if (this.date > this.endDate) {\n\t\t\t\tthis.viewDate = new Date(this.endDate);\n\t\t\t} else {\n\t\t\t\tthis.viewDate = new Date(this.date);\n\t\t\t}\n\t\t\tthis.fill();\n\t\t},\n\n\t\tfillDow: function(){\n\t\t\tvar dowCnt = this.weekStart,\n\t\t\thtml = '<tr>';\n\t\t\twhile (dowCnt < this.weekStart + 7) {\n\t\t\t\thtml += '<th class=\"dow\">'+dates[this.language].daysMin[(dowCnt++)%7]+'</th>';\n\t\t\t}\n\t\t\thtml += '</tr>';\n\t\t\tthis.picker.find('.datetimepicker-days thead').append(html);\n\t\t},\n\n\t\tfillMonths: function(){\n\t\t\tvar html = '',\n\t\t\ti = 0;\n\t\t\twhile (i < 12) {\n\t\t\t\thtml += '<span class=\"month\">'+dates[this.language].monthsShort[i++]+'</span>';\n\t\t\t}\n\t\t\tthis.picker.find('.datetimepicker-months td').html(html);\n\t\t},\n\n\t\tfill: function() {\n\t\t\tif (this.date == null || this.viewDate == null) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar d = new Date(this.viewDate),\n\t\t\t\tyear = d.getUTCFullYear(),\n\t\t\t\tmonth = d.getUTCMonth(),\n\t\t\t\tdayMonth = d.getUTCDate(),\n\t\t\t\thours = d.getUTCHours(),\n\t\t\t\tminutes = d.getUTCMinutes(),\n\t\t\t\tstartYear = this.startDate !== -Infinity ? this.startDate.getUTCFullYear() : -Infinity,\n\t\t\t\tstartMonth = this.startDate !== -Infinity ? this.startDate.getUTCMonth() : -Infinity,\n\t\t\t\tendYear = this.endDate !== Infinity ? this.endDate.getUTCFullYear() : Infinity,\n\t\t\t\tendMonth = this.endDate !== Infinity ? this.endDate.getUTCMonth() : Infinity,\n\t\t\t\tcurrentDate = (new UTCDate(this.date.getUTCFullYear(), this.date.getUTCMonth(), this.date.getUTCDate())).valueOf(),\n\t\t\t\ttoday = new Date();\n\t\t\tthis.picker.find('.datetimepicker-days thead th:eq(1)')\n\t\t\t\t\t\t.text(dates[this.language].months[month]+' '+year);\n\t\t\t\tif (this.formatViewType == \"time\") {\n\t\t\t\t\t\tvar hourConverted = hours % 12 ? hours % 12 : 12;\n\t\t\t\t\t\tvar hoursDisplay = (hourConverted < 10 ? '0' : '') + hourConverted;\n\t\t\t\t\t\tvar minutesDisplay = (minutes < 10 ? '0' : '') + minutes;\n\t\t\t\t\t\tvar meridianDisplay = dates[this.language].meridiem[hours < 12 ? 0 : 1];\n\t\t\t\t\t\tthis.picker.find('.datetimepicker-hours thead th:eq(1)')\n\t\t\t\t\t\t\t\t.text(hoursDisplay + ':' + minutesDisplay + ' ' + meridianDisplay.toUpperCase());\n\t\t\t\t\t\tthis.picker.find('.datetimepicker-minutes thead th:eq(1)')\n\t\t\t\t\t\t\t\t.text(hoursDisplay + ':' + minutesDisplay + ' ' + meridianDisplay.toUpperCase());\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.picker.find('.datetimepicker-hours thead th:eq(1)')\n\t\t\t\t\t\t\t\t.text(dayMonth + ' ' + dates[this.language].months[month] + ' ' + year);\n\t\t\t\t\t\tthis.picker.find('.datetimepicker-minutes thead th:eq(1)')\n\t\t\t\t\t\t\t\t.text(dayMonth + ' ' + dates[this.language].months[month] + ' ' + year);\t\t        \n\t\t\t\t}\n\t\t\t\tthis.picker.find('tfoot th.today')\n\t\t\t\t\t\t.text(dates[this.language].today)\n\t\t\t\t\t\t.toggle(this.todayBtn !== false);\n\t\t\tthis.updateNavArrows();\n\t\t\tthis.fillMonths();\n\t\t\t/*var prevMonth = UTCDate(year, month, 0,0,0,0,0);\n\t\t\tprevMonth.setUTCDate(prevMonth.getDate() - (prevMonth.getUTCDay() - this.weekStart + 7)%7);*/\n\t\t\tvar prevMonth = UTCDate(year, month-1, 28,0,0,0,0),\n\t\t\t\t\t\t\t\tday = DPGlobal.getDaysInMonth(prevMonth.getUTCFullYear(), prevMonth.getUTCMonth());\n\t\t\t\tprevMonth.setUTCDate(day);\n\t\t\t\t\tprevMonth.setUTCDate(day - (prevMonth.getUTCDay() - this.weekStart + 7)%7);\n\t\t\tvar nextMonth = new Date(prevMonth);\n\t\t\tnextMonth.setUTCDate(nextMonth.getUTCDate() + 42);\n\t\t\tnextMonth = nextMonth.valueOf();\n\t\t\tvar html = [];\n\t\t\tvar clsName;\n\t\t\twhile(prevMonth.valueOf() < nextMonth) {\n\t\t\t\tif (prevMonth.getUTCDay() == this.weekStart) {\n\t\t\t\t\thtml.push('<tr>');\n\t\t\t\t}\n\t\t\t\tclsName = '';\n\t\t\t\tif (prevMonth.getUTCFullYear() < year || (prevMonth.getUTCFullYear() == year && prevMonth.getUTCMonth() < month)) {\n\t\t\t\t\tclsName += ' old';\n\t\t\t\t} else if (prevMonth.getUTCFullYear() > year || (prevMonth.getUTCFullYear() == year && prevMonth.getUTCMonth() > month)) {\n\t\t\t\t\tclsName += ' new';\n\t\t\t\t}\n\t\t\t\t// Compare internal UTC date with local today, not UTC today\n\t\t\t\tif (this.todayHighlight &&\n\t\t\t\t\tprevMonth.getUTCFullYear() == today.getFullYear() &&\n\t\t\t\t\tprevMonth.getUTCMonth() == today.getMonth() &&\n\t\t\t\t\tprevMonth.getUTCDate() == today.getDate()) {\n\t\t\t\t\tclsName += ' today';\n\t\t\t\t}\n\t\t\t\tif (prevMonth.valueOf() == currentDate) {\n\t\t\t\t\tclsName += ' active';\n\t\t\t\t}\n\t\t\t\tif ((prevMonth.valueOf() + 86400000) <= this.startDate || prevMonth.valueOf() > this.endDate ||\n\t\t\t\t\t$.inArray(prevMonth.getUTCDay(), this.daysOfWeekDisabled) !== -1) {\n\t\t\t\t\tclsName += ' disabled';\n\t\t\t\t}\n\t\t\t\thtml.push('<td class=\"day'+clsName+'\">'+prevMonth.getUTCDate() + '</td>');\n\t\t\t\tif (prevMonth.getUTCDay() == this.weekEnd) {\n\t\t\t\t\thtml.push('</tr>');\n\t\t\t\t}\n\t\t\t\tprevMonth.setUTCDate(prevMonth.getUTCDate()+1);\n\t\t\t}\n\t\t\tthis.picker.find('.datetimepicker-days tbody').empty().append(html.join(''));\n\n\t\t\thtml = [];\n\t\t\t\t\t\tvar txt = '', meridian = '', meridianOld = '';\n\t\t\tfor (var i=0;i<24;i++) {\n\t\t\t\tvar actual = UTCDate(year, month, dayMonth, i);\n\t\t\t\tclsName = '';\n\t\t\t\t// We want the previous hour for the startDate\n\t\t\t\tif ((actual.valueOf() + 3600000) <= this.startDate || actual.valueOf() > this.endDate) {\n\t\t\t\t\tclsName += ' disabled';\n\t\t\t\t} else if (hours == i) {\n\t\t\t\t\tclsName += ' active';\n\t\t\t\t}\n\t\t\t\t\t\t\t\tif (this.showMeridian && dates[this.language].meridiem.length == 2) {\n\t\t\t\t\t\t\t\t\t\tmeridian = (i<12?dates[this.language].meridiem[0]:dates[this.language].meridiem[1]);\n\t\t\t\t\t\t\t\t\t\tif (meridian != meridianOld) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (meridianOld != '') {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\thtml.push('</fieldset>');\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\thtml.push('<fieldset class=\"hour\"><legend>'+meridian.toUpperCase()+'</legend>');\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tmeridianOld = meridian;\n\t\t\t\t\t\t\t\t\t\ttxt = (i%12?i%12:12);\n\t\t\t\t\t\t\t\t\t\thtml.push('<span class=\"hour'+clsName+' hour_'+(i<12?'am':'pm')+'\">'+txt+'</span>');\n\t\t\t\t\t\t\t\t\t\tif (i == 23) {\n\t\t\t\t\t\t\t\t\t\t\t\thtml.push('</fieldset>');\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\ttxt = i+':00';\n\t\t\t\t\t\t\t\t\t\thtml.push('<span class=\"hour'+clsName+'\">'+txt+'</span>');\n\t\t\t\t\t\t\t\t}\n\t\t\t}\n\t\t\tthis.picker.find('.datetimepicker-hours td').html(html.join(''));\n\n\t\t\thtml = [];\n\t\t\t\t\t\ttxt = '', meridian = '', meridianOld = '';\n\t\t\tfor(var i=0;i<60;i+=this.minuteStep) {\n\t\t\t\tvar actual = UTCDate(year, month, dayMonth, hours, i, 0);\n\t\t\t\tclsName = '';\n\t\t\t\tif (actual.valueOf() < this.startDate || actual.valueOf() > this.endDate) {\n\t\t\t\t\tclsName += ' disabled';\n\t\t\t\t} else if (Math.floor(minutes/this.minuteStep) == Math.floor(i/this.minuteStep)) {\n\t\t\t\t\tclsName += ' active';\n\t\t\t\t}\n\t\t\t\t\t\t\t\tif (this.showMeridian && dates[this.language].meridiem.length == 2) {\n\t\t\t\t\t\t\t\t\t\tmeridian = (hours<12?dates[this.language].meridiem[0]:dates[this.language].meridiem[1]);\n\t\t\t\t\t\t\t\t\t\tif (meridian != meridianOld) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (meridianOld != '') {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\thtml.push('</fieldset>');\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\thtml.push('<fieldset class=\"minute\"><legend>'+meridian.toUpperCase()+'</legend>');\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tmeridianOld = meridian;\n\t\t\t\t\t\t\t\t\t\ttxt = (hours%12?hours%12:12);\n\t\t\t\t\t\t\t\t\t\t//html.push('<span class=\"minute'+clsName+' minute_'+(hours<12?'am':'pm')+'\">'+txt+'</span>');\n\t\t\t\t\t\t\t\t\t\thtml.push('<span class=\"minute'+clsName+'\">'+txt+':'+(i<10?'0'+i:i)+'</span>');\n\t\t\t\t\t\t\t\t\t\tif (i == 59) {\n\t\t\t\t\t\t\t\t\t\t\t\thtml.push('</fieldset>');\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\ttxt = i+':00';\n\t\t\t\t\t\t\t\t\t\t//html.push('<span class=\"hour'+clsName+'\">'+txt+'</span>');\n\t\t\t\t\t\t\t\t\t\thtml.push('<span class=\"minute'+clsName+'\">'+hours+':'+(i<10?'0'+i:i)+'</span>');\n\t\t\t\t\t\t\t\t}\n\t\t\t}\n\t\t\tthis.picker.find('.datetimepicker-minutes td').html(html.join(''));\n\n\t\t\tvar currentYear = this.date.getUTCFullYear();\n\t\t\tvar months = this.picker.find('.datetimepicker-months')\n\t\t\t\t\t\t.find('th:eq(1)')\n\t\t\t\t\t\t.text(year)\n\t\t\t\t\t\t.end()\n\t\t\t\t\t\t.find('span').removeClass('active');\n\t\t\tif (currentYear == year) {\n\t\t\t\tmonths.eq(this.date.getUTCMonth()).addClass('active');\n\t\t\t}\n\t\t\tif (year < startYear || year > endYear) {\n\t\t\t\tmonths.addClass('disabled');\n\t\t\t}\n\t\t\tif (year == startYear) {\n\t\t\t\tmonths.slice(0, startMonth).addClass('disabled');\n\t\t\t}\n\t\t\tif (year == endYear) {\n\t\t\t\tmonths.slice(endMonth+1).addClass('disabled');\n\t\t\t}\n\n\t\t\thtml = '';\n\t\t\tyear = parseInt(year/10, 10) * 10;\n\t\t\tvar yearCont = this.picker.find('.datetimepicker-years')\n\t\t\t\t\t\t\t\t.find('th:eq(1)')\n\t\t\t\t\t\t\t\t.text(year + '-' + (year + 9))\n\t\t\t\t\t\t\t\t.end()\n\t\t\t\t\t\t\t\t.find('td');\n\t\t\tyear -= 1;\n\t\t\tfor (var i = -1; i < 11; i++) {\n\t\t\t\thtml += '<span class=\"year'+(i == -1 || i == 10 ? ' old' : '')+(currentYear == year ? ' active' : '')+(year < startYear || year > endYear ? ' disabled' : '')+'\">'+year+'</span>';\n\t\t\t\tyear += 1;\n\t\t\t}\n\t\t\tyearCont.html(html);\n\t\t\tthis.place();\n\t\t},\n\n\t\tupdateNavArrows: function() {\n\t\t\tvar d = new Date(this.viewDate),\n\t\t\t\tyear = d.getUTCFullYear(),\n\t\t\t\tmonth = d.getUTCMonth(),\n\t\t\t\tday = d.getUTCDate(),\n\t\t\t\thour = d.getUTCHours();\n\t\t\tswitch (this.viewMode) {\n\t\t\t\tcase 0:\n\t\t\t\t\tif (this.startDate !== -Infinity && year <= this.startDate.getUTCFullYear() \n\t\t\t\t\t\t\t\t\t\t\t\t\t && month <= this.startDate.getUTCMonth()\n\t\t\t\t\t\t\t\t\t\t\t\t\t && day <= this.startDate.getUTCDate()\n\t\t\t\t\t\t\t\t\t\t\t\t\t && hour <= this.startDate.getUTCHours()) {\n\t\t\t\t\t\tthis.picker.find('.prev').css({visibility: 'hidden'});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.picker.find('.prev').css({visibility: 'visible'});\n\t\t\t\t\t}\n\t\t\t\t\tif (this.endDate !== Infinity && year >= this.endDate.getUTCFullYear() \n\t\t\t\t\t\t\t\t\t\t\t\t\t&& month >= this.endDate.getUTCMonth()\n\t\t\t\t\t\t\t\t\t\t\t\t\t&& day >= this.endDate.getUTCDate()\n\t\t\t\t\t\t\t\t\t\t\t\t\t&& hour >= this.endDate.getUTCHours()) {\n\t\t\t\t\t\tthis.picker.find('.next').css({visibility: 'hidden'});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.picker.find('.next').css({visibility: 'visible'});\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 1:\n\t\t\t\t\tif (this.startDate !== -Infinity && year <= this.startDate.getUTCFullYear() \n\t\t\t\t\t\t\t\t\t\t\t\t\t && month <= this.startDate.getUTCMonth()\n\t\t\t\t\t\t\t\t\t\t\t\t\t && day <= this.startDate.getUTCDate()) {\n\t\t\t\t\t\tthis.picker.find('.prev').css({visibility: 'hidden'});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.picker.find('.prev').css({visibility: 'visible'});\n\t\t\t\t\t}\n\t\t\t\t\tif (this.endDate !== Infinity && year >= this.endDate.getUTCFullYear() \n\t\t\t\t\t\t\t\t\t\t\t\t\t&& month >= this.endDate.getUTCMonth()\n\t\t\t\t\t\t\t\t\t\t\t\t\t&& day >= this.endDate.getUTCDate()) {\n\t\t\t\t\t\tthis.picker.find('.next').css({visibility: 'hidden'});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.picker.find('.next').css({visibility: 'visible'});\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tif (this.startDate !== -Infinity && year <= this.startDate.getUTCFullYear() \n\t\t\t\t\t\t\t\t\t\t\t\t\t && month <= this.startDate.getUTCMonth()) {\n\t\t\t\t\t\tthis.picker.find('.prev').css({visibility: 'hidden'});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.picker.find('.prev').css({visibility: 'visible'});\n\t\t\t\t\t}\n\t\t\t\t\tif (this.endDate !== Infinity && year >= this.endDate.getUTCFullYear() \n\t\t\t\t\t\t\t\t\t\t\t\t\t&& month >= this.endDate.getUTCMonth()) {\n\t\t\t\t\t\tthis.picker.find('.next').css({visibility: 'hidden'});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.picker.find('.next').css({visibility: 'visible'});\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 3:\n\t\t\t\tcase 4:\n\t\t\t\t\tif (this.startDate !== -Infinity && year <= this.startDate.getUTCFullYear()) {\n\t\t\t\t\t\tthis.picker.find('.prev').css({visibility: 'hidden'});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.picker.find('.prev').css({visibility: 'visible'});\n\t\t\t\t\t}\n\t\t\t\t\tif (this.endDate !== Infinity && year >= this.endDate.getUTCFullYear()) {\n\t\t\t\t\t\tthis.picker.find('.next').css({visibility: 'hidden'});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.picker.find('.next').css({visibility: 'visible'});\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t},\n\n\t\tclick: function(e) {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t\tvar target = $(e.target).closest('span, td, th, legend');\n\t\t\tif (target.length == 1) {\n\t\t\t\tif (target.is('.disabled')) {\n\t\t\t\t\tthis.element.trigger({\n\t\t\t\t\t\ttype: 'outOfRange',\n\t\t\t\t\t\tdate: this.viewDate,\n\t\t\t\t\t\tstartDate: this.startDate,\n\t\t\t\t\t\tendDate: this.endDate\n\t\t\t\t\t});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tswitch(target[0].nodeName.toLowerCase()) {\n\t\t\t\t\tcase 'th':\n\t\t\t\t\t\tswitch(target[0].className) {\n\t\t\t\t\t\t\tcase 'switch':\n\t\t\t\t\t\t\t\tthis.showMode(1);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'prev':\n\t\t\t\t\t\t\tcase 'next':\n\t\t\t\t\t\t\t\tvar dir = DPGlobal.modes[this.viewMode].navStep * (target[0].className == 'prev' ? -1 : 1);\n\t\t\t\t\t\t\t\tswitch(this.viewMode){\n\t\t\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\t\t\tthis.viewDate = this.moveHour(this.viewDate, dir);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\t\t\tthis.viewDate = this.moveDate(this.viewDate, dir);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\t\t\tthis.viewDate = this.moveMonth(this.viewDate, dir);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\t\t\t\t\tthis.viewDate = this.moveYear(this.viewDate, dir);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'today':\n\t\t\t\t\t\t\t\tvar date = new Date();\n\t\t\t\t\t\t\t\tdate = UTCDate(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), 0);\n\n\t\t\t\t\t\t\t\tthis.viewMode = this.startViewMode;\n\t\t\t\t\t\t\t\tthis.showMode(0);\n\t\t\t\t\t\t\t\tthis._setDate(date);\n\t\t\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t\t\t\tif (this.autoclose) {\n\t\t\t\t\t\t\t\t\tthis.hide();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'span':\n\t\t\t\t\t\tif (!target.is('.disabled')) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar year    = this.viewDate.getUTCFullYear(),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tmonth   = this.viewDate.getUTCMonth(),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tday     = this.viewDate.getUTCDate(),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\thours   = this.viewDate.getUTCHours(),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tminutes = this.viewDate.getUTCMinutes(),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tseconds = this.viewDate.getUTCSeconds();\n\n\t\t\t\t\t\t\tif (target.is('.month')) {\n\t\t\t\t\t\t\t\tthis.viewDate.setUTCDate(1);\n\t\t\t\t\t\t\t\tmonth = target.parent().find('span').index(target);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tday   = this.viewDate.getUTCDate();\n\t\t\t\t\t\t\t\tthis.viewDate.setUTCMonth(month);\n\t\t\t\t\t\t\t\tthis.element.trigger({\n\t\t\t\t\t\t\t\t\ttype: 'changeMonth',\n\t\t\t\t\t\t\t\t\tdate: this.viewDate\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (this.viewSelect >= 3) {\n\t\t\t\t\t\t\t\t\t\tthis._setDate(UTCDate(year, month, day, hours, minutes, seconds, 0));\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if (target.is('.year')) {\n\t\t\t\t\t\t\t\tthis.viewDate.setUTCDate(1);\n\t\t\t\t\t\t\t\tyear = parseInt(target.text(), 10) || 0;\n\t\t\t\t\t\t\t\tthis.viewDate.setUTCFullYear(year);\n\t\t\t\t\t\t\t\tthis.element.trigger({\n\t\t\t\t\t\t\t\t\ttype: 'changeYear',\n\t\t\t\t\t\t\t\t\tdate: this.viewDate\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (this.viewSelect >= 4) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis._setDate(UTCDate(year, month, day, hours, minutes, seconds, 0));\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if (target.is('.hour')){\n\t\t\t\t\t\t\t\thours = parseInt(target.text(), 10) || 0;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (target.hasClass('hour_am') || target.hasClass('hour_pm')) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (hours == 12 && target.hasClass('hour_am')) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\thours = 0;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else if (hours != 12 && target.hasClass('hour_pm')) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\thours += 12;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.viewDate.setUTCHours(hours);\n\t\t\t\t\t\t\t\tthis.element.trigger({\n\t\t\t\t\t\t\t\t\ttype: 'changeHour',\n\t\t\t\t\t\t\t\t\tdate: this.viewDate\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (this.viewSelect >= 1) {\n\t\t\t\t\t\t\t\t\t\tthis._setDate(UTCDate(year, month, day, hours, minutes, seconds, 0));\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if (target.is('.minute')){\n\t\t\t\t\t\t\t\tminutes = parseInt(target.text().substr(target.text().indexOf(':')+1), 10) || 0;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.viewDate.setUTCMinutes(minutes);\n\t\t\t\t\t\t\t\tthis.element.trigger({\n\t\t\t\t\t\t\t\t\ttype: 'changeMinute',\n\t\t\t\t\t\t\t\t\tdate: this.viewDate\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (this.viewSelect >= 0) {\n\t\t\t\t\t\t\t\t\t\tthis._setDate(UTCDate(year, month, day, hours, minutes, seconds, 0));\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (this.viewMode != 0) {\n\t\t\t\t\t\t\t\tvar oldViewMode = this.viewMode;\n\t\t\t\t\t\t\t\tthis.showMode(-1);\n\t\t\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t\t\t\tif (oldViewMode == this.viewMode && this.autoclose) {\n\t\t\t\t\t\t\t\t\tthis.hide();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t\t\t\tif (this.autoclose) {\n\t\t\t\t\t\t\t\t\tthis.hide();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'td':\n\t\t\t\t\t\tif (target.is('.day') && !target.is('.disabled')){\n\t\t\t\t\t\t\tvar day = parseInt(target.text(), 10) || 1;\n\t\t\t\t\t\t\tvar year = this.viewDate.getUTCFullYear(),\n\t\t\t\t\t\t\t\tmonth = this.viewDate.getUTCMonth(),\n\t\t\t\t\t\t\t\thours = this.viewDate.getUTCHours(),\n\t\t\t\t\t\t\t\tminutes = this.viewDate.getUTCMinutes(),\n\t\t\t\t\t\t\t\tseconds = this.viewDate.getUTCSeconds();\n\t\t\t\t\t\t\tif (target.is('.old')) {\n\t\t\t\t\t\t\t\tif (month === 0) {\n\t\t\t\t\t\t\t\t\tmonth = 11;\n\t\t\t\t\t\t\t\t\tyear -= 1;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tmonth -= 1;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if (target.is('.new')) {\n\t\t\t\t\t\t\t\tif (month == 11) {\n\t\t\t\t\t\t\t\t\tmonth = 0;\n\t\t\t\t\t\t\t\t\tyear += 1;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tmonth += 1;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.viewDate.setUTCDate(day);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.viewDate.setUTCMonth(month);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.viewDate.setUTCFullYear(year);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.element.trigger({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype: 'changeDay',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdate: this.viewDate\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (this.viewSelect >= 2) {\n\t\t\t\t\t\t\t\t\tthis._setDate(UTCDate(year, month, day, hours, minutes, seconds, 0));\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar oldViewMode = this.viewMode;\n\t\t\t\t\t\tthis.showMode(-1);\n\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t\tif (oldViewMode == this.viewMode && this.autoclose) {\n\t\t\t\t\t\t\tthis.hide();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t_setDate: function(date, which){\n\t\t\tif (!which || which == 'date')\n\t\t\t\tthis.date = date;\n\t\t\tif (!which || which  == 'view')\n\t\t\t\tthis.viewDate = date;\n\t\t\tthis.fill();\n\t\t\tthis.setValue();\n\t\t\tvar element;\n\t\t\tif (this.isInput) {\n\t\t\t\telement = this.element;\n\t\t\t} else if (this.component){\n\t\t\t\telement = this.element.find('input');\n\t\t\t}\n\t\t\tif (element) {\n\t\t\t\telement.change();\n\t\t\t\tif (this.autoclose && (!which || which == 'date')) {\n\t\t\t\t\t//this.hide();\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.element.trigger({\n\t\t\t\ttype: 'changeDate',\n\t\t\t\tdate: this.date\n\t\t\t});\n\t\t},\n\n\t\tmoveMinute: function(date, dir){\n\t\t\tif (!dir) return date;\n\t\t\tvar new_date = new Date(date.valueOf());\n\t\t\t//dir = dir > 0 ? 1 : -1;\n\t\t\tnew_date.setUTCMinutes(new_date.getUTCMinutes() + (dir * this.minuteStep));\n\t\t\treturn new_date;\n\t\t},\n\n\t\tmoveHour: function(date, dir){\n\t\t\tif (!dir) return date;\n\t\t\tvar new_date = new Date(date.valueOf());\n\t\t\t//dir = dir > 0 ? 1 : -1;\n\t\t\tnew_date.setUTCHours(new_date.getUTCHours() + dir);\n\t\t\treturn new_date;\n\t\t},\n\n\t\tmoveDate: function(date, dir){\n\t\t\tif (!dir) return date;\n\t\t\tvar new_date = new Date(date.valueOf());\n\t\t\t//dir = dir > 0 ? 1 : -1;\n\t\t\tnew_date.setUTCDate(new_date.getUTCDate() + dir);\n\t\t\treturn new_date;\n\t\t},\n\n\t\tmoveMonth: function(date, dir){\n\t\t\tif (!dir) return date;\n\t\t\tvar new_date = new Date(date.valueOf()),\n\t\t\t\tday = new_date.getUTCDate(),\n\t\t\t\tmonth = new_date.getUTCMonth(),\n\t\t\t\tmag = Math.abs(dir),\n\t\t\t\tnew_month, test;\n\t\t\tdir = dir > 0 ? 1 : -1;\n\t\t\tif (mag == 1){\n\t\t\t\ttest = dir == -1\n\t\t\t\t\t// If going back one month, make sure month is not current month\n\t\t\t\t\t// (eg, Mar 31 -> Feb 31 == Feb 28, not Mar 02)\n\t\t\t\t\t? function(){ return new_date.getUTCMonth() == month; }\n\t\t\t\t\t// If going forward one month, make sure month is as expected\n\t\t\t\t\t// (eg, Jan 31 -> Feb 31 == Feb 28, not Mar 02)\n\t\t\t\t\t: function(){ return new_date.getUTCMonth() != new_month; };\n\t\t\t\tnew_month = month + dir;\n\t\t\t\tnew_date.setUTCMonth(new_month);\n\t\t\t\t// Dec -> Jan (12) or Jan -> Dec (-1) -- limit expected date to 0-11\n\t\t\t\tif (new_month < 0 || new_month > 11)\n\t\t\t\t\tnew_month = (new_month + 12) % 12;\n\t\t\t} else {\n\t\t\t\t// For magnitudes >1, move one month at a time...\n\t\t\t\tfor (var i=0; i<mag; i++)\n\t\t\t\t\t// ...which might decrease the day (eg, Jan 31 to Feb 28, etc)...\n\t\t\t\t\tnew_date = this.moveMonth(new_date, dir);\n\t\t\t\t// ...then reset the day, keeping it in the new month\n\t\t\t\tnew_month = new_date.getUTCMonth();\n\t\t\t\tnew_date.setUTCDate(day);\n\t\t\t\ttest = function(){ return new_month != new_date.getUTCMonth(); };\n\t\t\t}\n\t\t\t// Common date-resetting loop -- if date is beyond end of month, make it\n\t\t\t// end of month\n\t\t\twhile (test()){\n\t\t\t\tnew_date.setUTCDate(--day);\n\t\t\t\tnew_date.setUTCMonth(new_month);\n\t\t\t}\n\t\t\treturn new_date;\n\t\t},\n\n\t\tmoveYear: function(date, dir){\n\t\t\treturn this.moveMonth(date, dir*12);\n\t\t},\n\n\t\tdateWithinRange: function(date){\n\t\t\treturn date >= this.startDate && date <= this.endDate;\n\t\t},\n\n\t\tkeydown: function(e){\n\t\t\tif (this.picker.is(':not(:visible)')){\n\t\t\t\tif (e.keyCode == 27) // allow escape to hide and re-show picker\n\t\t\t\t\tthis.show();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar dateChanged = false,\n\t\t\t\tdir, day, month,\n\t\t\t\tnewDate, newViewDate;\n\t\t\tswitch(e.keyCode){\n\t\t\t\tcase 27: // escape\n\t\t\t\t\tthis.hide();\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 37: // left\n\t\t\t\tcase 39: // right\n\t\t\t\t\tif (!this.keyboardNavigation) break;\n\t\t\t\t\tdir = e.keyCode == 37 ? -1 : 1;\n\t\t\t\t\t\t\t\t\t\tviewMode = this.viewMode;\n\t\t\t\t\t\t\t\t\t\tif (e.ctrlKey) {\n\t\t\t\t\t\t\t\t\t\t\t\tviewMode += 2;\n\t\t\t\t\t\t\t\t\t\t} else if (e.shiftKey) {\n\t\t\t\t\t\t\t\t\t\t\t\tviewMode += 1;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (viewMode == 4) {\n\t\t\t\t\t\tnewDate = this.moveYear(this.date, dir);\n\t\t\t\t\t\tnewViewDate = this.moveYear(this.viewDate, dir);\n\t\t\t\t\t\t\t\t\t\t} else if (viewMode == 3) {\n\t\t\t\t\t\tnewDate = this.moveMonth(this.date, dir);\n\t\t\t\t\t\tnewViewDate = this.moveMonth(this.viewDate, dir);\n\t\t\t\t\t\t\t\t\t\t} else if (viewMode == 2) {\n\t\t\t\t\t\tnewDate = this.moveDate(this.date, dir);\n\t\t\t\t\t\tnewViewDate = this.moveDate(this.viewDate, dir);\n\t\t\t\t\t\t\t\t\t\t} else if (viewMode == 1) {\n\t\t\t\t\t\tnewDate = this.moveHour(this.date, dir);\n\t\t\t\t\t\tnewViewDate = this.moveHour(this.viewDate, dir);\n\t\t\t\t\t\t\t\t\t\t} else if (viewMode == 0) {\n\t\t\t\t\t\tnewDate = this.moveMinute(this.date, dir);\n\t\t\t\t\t\tnewViewDate = this.moveMinute(this.viewDate, dir);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\tif (this.dateWithinRange(newDate)){\n\t\t\t\t\t\tthis.date = newDate;\n\t\t\t\t\t\tthis.viewDate = newViewDate;\n\t\t\t\t\t\tthis.setValue();\n\t\t\t\t\t\tthis.update();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tdateChanged = true;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 38: // up\n\t\t\t\tcase 40: // down\n\t\t\t\t\tif (!this.keyboardNavigation) break;\n\t\t\t\t\tdir = e.keyCode == 38 ? -1 : 1;\n\t\t\t\t\t\t\t\t\t\tviewMode = this.viewMode;\n\t\t\t\t\t\t\t\t\t\tif (e.ctrlKey) {\n\t\t\t\t\t\t\t\t\t\t\t\tviewMode += 2;\n\t\t\t\t\t\t\t\t\t\t} else if (e.shiftKey) {\n\t\t\t\t\t\t\t\t\t\t\t\tviewMode += 1;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (viewMode == 4) {\n\t\t\t\t\t\tnewDate = this.moveYear(this.date, dir);\n\t\t\t\t\t\tnewViewDate = this.moveYear(this.viewDate, dir);\n\t\t\t\t\t\t\t\t\t\t} else if (viewMode == 3) {\n\t\t\t\t\t\tnewDate = this.moveMonth(this.date, dir);\n\t\t\t\t\t\tnewViewDate = this.moveMonth(this.viewDate, dir);\n\t\t\t\t\t\t\t\t\t\t} else if (viewMode == 2) {\n\t\t\t\t\t\tnewDate = this.moveDate(this.date, dir * 7);\n\t\t\t\t\t\tnewViewDate = this.moveDate(this.viewDate, dir * 7);\n\t\t\t\t\t\t\t\t\t\t} else if (viewMode == 1) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (this.showMeridian) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnewDate = this.moveHour(this.date, dir * 6);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnewViewDate = this.moveHour(this.viewDate, dir * 6);\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnewDate = this.moveHour(this.date, dir * 4);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnewViewDate = this.moveHour(this.viewDate, dir * 4);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t} else if (viewMode == 0) {\n\t\t\t\t\t\tnewDate = this.moveMinute(this.date, dir * 4);\n\t\t\t\t\t\tnewViewDate = this.moveMinute(this.viewDate, dir * 4);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\tif (this.dateWithinRange(newDate)){\n\t\t\t\t\t\tthis.date = newDate;\n\t\t\t\t\t\tthis.viewDate = newViewDate;\n\t\t\t\t\t\tthis.setValue();\n\t\t\t\t\t\tthis.update();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tdateChanged = true;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 13: // enter\n\t\t\t\t\t\t\t\t\t\tif (this.viewMode != 0) {\n\t\t\t\t\t\t\t\t\t\t\t\tvar oldViewMode = this.viewMode;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.showMode(-1);\n\t\t\t\t\t\t\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t\t\t\t\t\t\t\tif (oldViewMode == this.viewMode && this.autoclose) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.hide();\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t\t\t\t\t\t\t\tif (this.autoclose) {\n\t\t\t\t\t\t\t\t\tthis.hide();\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 9: // tab\n\t\t\t\t\tthis.hide();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (dateChanged){\n\t\t\t\tvar element;\n\t\t\t\tif (this.isInput) {\n\t\t\t\t\telement = this.element;\n\t\t\t\t} else if (this.component){\n\t\t\t\t\telement = this.element.find('input');\n\t\t\t\t}\n\t\t\t\tif (element) {\n\t\t\t\t\telement.change();\n\t\t\t\t}\n\t\t\t\tthis.element.trigger({\n\t\t\t\t\ttype: 'changeDate',\n\t\t\t\t\tdate: this.date\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\t\tshowMode: function(dir) {\n\t\t\tif (dir) {\n\t\t\t\tvar newViewMode = Math.max(0, Math.min(DPGlobal.modes.length - 1, this.viewMode + dir));\n\t\t\t\tif (newViewMode >= this.minView && newViewMode <= this.maxView) {\n\t\t\t\t\tthis.element.trigger({\n\t\t\t\t\t\ttype: 'changeMode',\n\t\t\t\t\t\tdate: this.viewDate,\n\t\t\t\t\t\toldViewMode: this.viewMode,\n\t\t\t\t\t\tnewViewMode: newViewMode\n\t\t\t\t\t});\n\n\t\t\t\t\tthis.viewMode = newViewMode;\n\t\t\t\t}\n\t\t\t}\n\t\t\t/*\n\t\t\t\tvitalets: fixing bug of very special conditions:\n\t\t\t\tjquery 1.7.1 + webkit + show inline datetimepicker in bootstrap popover.\n\t\t\t\tMethod show() does not set display css correctly and datetimepicker is not shown.\n\t\t\t\tChanged to .css('display', 'block') solve the problem.\n\t\t\t\tSee https://github.com/vitalets/x-editable/issues/37\n\n\t\t\t\tIn jquery 1.7.2+ everything works fine.\n\t\t\t*/\n\t\t\t//this.picker.find('>div').hide().filter('.datetimepicker-'+DPGlobal.modes[this.viewMode].clsName).show();\n\t\t\tthis.picker.find('>div').hide().filter('.datetimepicker-'+DPGlobal.modes[this.viewMode].clsName).css('display', 'block');\n\t\t\tthis.updateNavArrows();\n\t\t},\n\t\t\n\t\treset: function(e) {\n\t\t\tthis._setDate(null, 'date');\n\t\t}\n\t};\n\n\t$.fn.datetimepicker = function ( option ) {\n\t\tvar args = Array.apply(null, arguments);\n\t\targs.shift();\n\t\treturn this.each(function () {\n\t\t\tvar $this = $(this),\n\t\t\t\tdata = $this.data('datetimepicker'),\n\t\t\t\toptions = typeof option == 'object' && option;\n\t\t\tif (!data) {\n\t\t\t\t$this.data('datetimepicker', (data = new Datetimepicker(this, $.extend({}, $.fn.datetimepicker.defaults,options))));\n\t\t\t}\n\t\t\tif (typeof option == 'string' && typeof data[option] == 'function') {\n\t\t\t\tdata[option].apply(data, args);\n\t\t\t}\n\t\t});\n\t};\n\n\t$.fn.datetimepicker.defaults = {\n\t};\n\t$.fn.datetimepicker.Constructor = Datetimepicker;\n\tvar dates = $.fn.datetimepicker.dates = {\n\t\ten: {\n\t\t\tdays: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\", \"Sunday\"],\n\t\t\tdaysShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"],\n\t\t\tdaysMin: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\", \"Su\"],\n\t\t\tmonths: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n\t\t\tmonthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n\t\t\tmeridiem: [\"am\", \"pm\"],\n\t\t\tsuffix: [\"st\", \"nd\", \"rd\", \"th\"],\n\t\t\ttoday: \"Today\"\n\t\t}\n\t};\n\n\tvar DPGlobal = {\n\t\tmodes: [\n\t\t\t{\n\t\t\t\tclsName: 'minutes',\n\t\t\t\tnavFnc: 'Hours',\n\t\t\t\tnavStep: 1\n\t\t\t},\n\t\t\t{\n\t\t\t\tclsName: 'hours',\n\t\t\t\tnavFnc: 'Date',\n\t\t\t\tnavStep: 1\n\t\t\t},\n\t\t\t{\n\t\t\t\tclsName: 'days',\n\t\t\t\tnavFnc: 'Month',\n\t\t\t\tnavStep: 1\n\t\t\t},\n\t\t\t{\n\t\t\t\tclsName: 'months',\n\t\t\t\tnavFnc: 'FullYear',\n\t\t\t\tnavStep: 1\n\t\t\t},\n\t\t\t{\n\t\t\t\tclsName: 'years',\n\t\t\t\tnavFnc: 'FullYear',\n\t\t\t\tnavStep: 10\n\t\t}],\n\t\tisLeapYear: function (year) {\n\t\t\treturn (((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0))\n\t\t},\n\t\tgetDaysInMonth: function (year, month) {\n\t\t\treturn [31, (DPGlobal.isLeapYear(year) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month]\n\t\t},\n\t\tgetDefaultFormat: function (type, field) {\n\t\t\tif (type == \"standard\") {\n\t\t\t\tif (field == 'input')\n\t\t\t\t\treturn 'yyyy-mm-dd hh:ii';\n\t\t\t\telse\n\t\t\t\t\treturn 'yyyy-mm-dd hh:ii:ss';\n\t\t\t} else if (type == \"php\") {\n\t\t\t\tif (field == 'input')\n\t\t\t\t\treturn 'Y-m-d H:i';\n\t\t\t\telse\n\t\t\t\t\treturn 'Y-m-d H:i:s';\n\t\t\t} else {\n\t\t\t\tthrow new Error(\"Invalid format type.\");\n\t\t\t}\n\t\t},\n\t\tvalidParts: function (type) {\n\t\t\tif (type == \"standard\") {\n\t\t\t\treturn /hh?|HH?|p|P|ii?|ss?|dd?|DD?|mm?|MM?|yy(?:yy)?/g;\n\t\t\t} else if (type == \"php\") {\n\t\t\t\treturn /[dDjlNwzFmMnStyYaABgGhHis]/g;\n\t\t\t} else {\n\t\t\t\tthrow new Error(\"Invalid format type.\");\n\t\t\t}\n\t\t},\n\t\tnonpunctuation: /[^ -\\/:-@\\[-`{-~\\t\\n\\rTZ]+/g,\n\t\tparseFormat: function(format, type){\n\t\t\t// IE treats \\0 as a string end in inputs (truncating the value),\n\t\t\t// so it's a bad format delimiter, anyway\n\t\t\tvar separators = format.replace(this.validParts(type), '\\0').split('\\0'),\n\t\t\t\tparts = format.match(this.validParts(type));\n\t\t\tif (!separators || !separators.length || !parts || parts.length == 0){\n\t\t\t\tthrow new Error(\"Invalid date format.\");\n\t\t\t}\n\t\t\treturn {separators: separators, parts: parts};\n\t\t},\n\t\tparseDate: function(date, format, language, type) {\n\t\t\tif (date instanceof Date) {\n\t\t\t\tvar dateUTC = new Date(date.valueOf() - date.getTimezoneOffset() * 60000);\n\t\t\t\t\t\t\t\tdateUTC.setMilliseconds(0);\n\t\t\t\treturn dateUTC;\n\t\t\t}\n\t\t\tif (/^\\d{4}\\-\\d{1,2}\\-\\d{1,2}$/.test(date)) {\n\t\t\t\tformat = this.parseFormat('yyyy-mm-dd', type);\n\t\t\t}\n\t\t\tif (/^\\d{4}\\-\\d{1,2}\\-\\d{1,2}[T ]\\d{1,2}\\:\\d{1,2}$/.test(date)) {\n\t\t\t\tformat = this.parseFormat('yyyy-mm-dd hh:ii', type);\n\t\t\t}\n\t\t\tif (/^\\d{4}\\-\\d{1,2}\\-\\d{1,2}[T ]\\d{1,2}\\:\\d{1,2}\\:\\d{1,2}[Z]{0,1}$/.test(date)) {\n\t\t\t\tformat = this.parseFormat('yyyy-mm-dd hh:ii:ss', type);\n\t\t\t}\n\t\t\tif (/^[-+]\\d+[dmwy]([\\s,]+[-+]\\d+[dmwy])*$/.test(date)) {\n\t\t\t\tvar part_re = /([-+]\\d+)([dmwy])/,\n\t\t\t\t\tparts = date.match(/([-+]\\d+)([dmwy])/g),\n\t\t\t\t\tpart, dir;\n\t\t\t\tdate = new Date();\n\t\t\t\tfor (var i=0; i<parts.length; i++) {\n\t\t\t\t\tpart = part_re.exec(parts[i]);\n\t\t\t\t\tdir = parseInt(part[1]);\n\t\t\t\t\tswitch(part[2]){\n\t\t\t\t\t\tcase 'd':\n\t\t\t\t\t\t\tdate.setUTCDate(date.getUTCDate() + dir);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'm':\n\t\t\t\t\t\t\tdate = Datetimepicker.prototype.moveMonth.call(Datetimepicker.prototype, date, dir);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'w':\n\t\t\t\t\t\t\tdate.setUTCDate(date.getUTCDate() + dir * 7);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'y':\n\t\t\t\t\t\t\tdate = Datetimepicker.prototype.moveYear.call(Datetimepicker.prototype, date, dir);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn UTCDate(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), 0);\n\t\t\t}\n\t\t\tvar parts = date && date.match(this.nonpunctuation) || [],\n\t\t\t\tdate = new Date(0, 0, 0, 0, 0, 0, 0),\n\t\t\t\tparsed = {},\n\t\t\t\tsetters_order = ['hh', 'h', 'ii', 'i', 'ss', 's', 'yyyy', 'yy', 'M', 'MM', 'm', 'mm', 'D', 'DD', 'd', 'dd', 'H', 'HH', 'p', 'P'],\n\t\t\t\tsetters_map = {\n\t\t\t\t\thh: function(d,v){ return d.setUTCHours(v); },\n\t\t\t\t\th:  function(d,v){ return d.setUTCHours(v); },\n\t\t\t\t\tHH: function(d,v){ return d.setUTCHours(v==12?0:v); },\n\t\t\t\t\tH:  function(d,v){ return d.setUTCHours(v==12?0:v); },\n\t\t\t\t\tii: function(d,v){ return d.setUTCMinutes(v); },\n\t\t\t\t\ti:  function(d,v){ return d.setUTCMinutes(v); },\n\t\t\t\t\tss: function(d,v){ return d.setUTCSeconds(v); },\n\t\t\t\t\ts:  function(d,v){ return d.setUTCSeconds(v); },\n\t\t\t\t\tyyyy: function(d,v){ return d.setUTCFullYear(v); },\n\t\t\t\t\tyy: function(d,v){ return d.setUTCFullYear(2000+v); },\n\t\t\t\t\tm: function(d,v){\n\t\t\t\t\t\tv -= 1;\n\t\t\t\t\t\twhile (v<0) v += 12;\n\t\t\t\t\t\tv %= 12;\n\t\t\t\t\t\td.setUTCMonth(v);\n\t\t\t\t\t\twhile (d.getUTCMonth() != v)\n\t\t\t\t\t\t\td.setUTCDate(d.getUTCDate()-1);\n\t\t\t\t\t\treturn d;\n\t\t\t\t\t},\n\t\t\t\t\td: function(d,v){ return d.setUTCDate(v); },\n\t\t\t\t\tp: function(d,v){ return d.setUTCHours(v==1?d.getUTCHours()+12:d.getUTCHours()); }\n\t\t\t\t},\n\t\t\t\tval, filtered, part;\n\t\t\tsetters_map['M'] = setters_map['MM'] = setters_map['mm'] = setters_map['m'];\n\t\t\tsetters_map['dd'] = setters_map['d'];\n\t\t\t\t\tsetters_map['P'] = setters_map['p'];\n\t\t\tdate = UTCDate(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds());\n\t\t\tif (parts.length == format.parts.length) {\n\t\t\t\tfor (var i=0, cnt = format.parts.length; i < cnt; i++) {\n\t\t\t\t\tval = parseInt(parts[i], 10);\n\t\t\t\t\tpart = format.parts[i];\n\t\t\t\t\tif (isNaN(val)) {\n\t\t\t\t\t\tswitch(part) {\n\t\t\t\t\t\t\tcase 'MM':\n\t\t\t\t\t\t\t\tfiltered = $(dates[language].months).filter(function(){\n\t\t\t\t\t\t\t\t\tvar m = this.slice(0, parts[i].length),\n\t\t\t\t\t\t\t\t\t\tp = parts[i].slice(0, m.length);\n\t\t\t\t\t\t\t\t\treturn m == p;\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tval = $.inArray(filtered[0], dates[language].months) + 1;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'M':\n\t\t\t\t\t\t\t\tfiltered = $(dates[language].monthsShort).filter(function(){\n\t\t\t\t\t\t\t\t\tvar m = this.slice(0, parts[i].length),\n\t\t\t\t\t\t\t\t\t\tp = parts[i].slice(0, m.length);\n\t\t\t\t\t\t\t\t\treturn m == p;\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tval = $.inArray(filtered[0], dates[language].monthsShort) + 1;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase 'p':\n\t\t\t\t\t\t\t\tcase 'P':\n\t\t\t\t\t\t\t\t\t\tval = $.inArray(parts[i].toLowerCase(), dates[language].meridiem);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tparsed[part] = val;\n\t\t\t\t}\n\t\t\t\tfor (var i=0, s; i<setters_order.length; i++){\n\t\t\t\t\ts = setters_order[i];\n\t\t\t\t\tif (s in parsed && !isNaN(parsed[s]))\n\t\t\t\t\t\tsetters_map[s](date, parsed[s])\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn date;\n\t\t},\n\t\tformatDate: function(date, format, language, type){\n\t\t\tif (date == null) {\n\t\t\t\treturn '';\n\t\t\t}\n\t\t\tvar val;\n\t\t\tif (type == 'standard') {\n\t\t\t\tval = {\n\t\t\t\t\t// year\n\t\t\t\t\tyy: date.getUTCFullYear().toString().substring(2),\n\t\t\t\t\tyyyy: date.getUTCFullYear(),\n\t\t\t\t\t// month\n\t\t\t\t\tm: date.getUTCMonth() + 1,\n\t\t\t\t\tM: dates[language].monthsShort[date.getUTCMonth()],\n\t\t\t\t\tMM: dates[language].months[date.getUTCMonth()],\n\t\t\t\t\t// day\n\t\t\t\t\td: date.getUTCDate(),\n\t\t\t\t\tD: dates[language].daysShort[date.getUTCDay()],\n\t\t\t\t\tDD: dates[language].days[date.getUTCDay()],\n\t\t\t\t\tp: (dates[language].meridiem.length==2?dates[language].meridiem[date.getUTCHours()<12?0:1]:''),\n\t\t\t\t\t// hour\n\t\t\t\t\th: date.getUTCHours(),\n\t\t\t\t\t// minute\n\t\t\t\t\ti: date.getUTCMinutes(),\n\t\t\t\t\t// second\n\t\t\t\t\ts: date.getUTCSeconds()\n\t\t\t\t};\n\t\t\t\t\t\t\t\tval.H  = (val.h%12==0? 12 : val.h%12);\n\t\t\t\t\t\t\t\tval.HH = (val.H < 10 ? '0' : '') + val.H;\n\t\t\t\t\t\t\t\tval.P  = val.p.toUpperCase();\n\t\t\t\tval.hh = (val.h < 10 ? '0' : '') + val.h;\n\t\t\t\tval.ii = (val.i < 10 ? '0' : '') + val.i;\n\t\t\t\tval.ss = (val.s < 10 ? '0' : '') + val.s;\n\t\t\t\tval.dd = (val.d < 10 ? '0' : '') + val.d;\n\t\t\t\tval.mm = (val.m < 10 ? '0' : '') + val.m;\n\t\t\t} else if (type == 'php') {\n\t\t\t\t// php format\n\t\t\t\tval = {\n\t\t\t\t\t// year\n\t\t\t\t\ty: date.getUTCFullYear().toString().substring(2),\n\t\t\t\t\tY: date.getUTCFullYear(),\n\t\t\t\t\t// month\n\t\t\t\t\tF: dates[language].months[date.getUTCMonth()],\n\t\t\t\t\tM: dates[language].monthsShort[date.getUTCMonth()],\n\t\t\t\t\tn: date.getUTCMonth() + 1,\n\t\t\t\t\tt: DPGlobal.getDaysInMonth(date.getUTCFullYear(), date.getUTCMonth()),\n\t\t\t\t\t// day\n\t\t\t\t\tj: date.getUTCDate(),\n\t\t\t\t\tl: dates[language].days[date.getUTCDay()],\n\t\t\t\t\tD: dates[language].daysShort[date.getUTCDay()],\n\t\t\t\t\tw: date.getUTCDay(), // 0 -> 6\n\t\t\t\t\tN: (date.getUTCDay()==0?7:date.getUTCDay()),       // 1 -> 7\n\t\t\t\t\tS: (date.getUTCDate()%10<=dates[language].suffix.length?dates[language].suffix[date.getUTCDate()%10-1]:''),\n\t\t\t\t\t// hour\n\t\t\t\t\ta: (dates[language].meridiem.length==2?dates[language].meridiem[date.getUTCHours()<12?0:1]:''),\n\t\t\t\t\tg: (date.getUTCHours()%12==0?12:date.getUTCHours()%12),\n\t\t\t\t\tG: date.getUTCHours(),\n\t\t\t\t\t// minute\n\t\t\t\t\ti: date.getUTCMinutes(),\n\t\t\t\t\t// second\n\t\t\t\t\ts: date.getUTCSeconds()\n\t\t\t\t};\n\t\t\t\tval.m = (val.n < 10 ? '0' : '') + val.n;\n\t\t\t\tval.d = (val.j < 10 ? '0' : '') + val.j;\n\t\t\t\tval.A = val.a.toString().toUpperCase();\n\t\t\t\tval.h = (val.g < 10 ? '0' : '') + val.g;\n\t\t\t\tval.H = (val.G < 10 ? '0' : '') + val.G;\n\t\t\t\tval.i = (val.i < 10 ? '0' : '') + val.i;\n\t\t\t\tval.s = (val.s < 10 ? '0' : '') + val.s;\n\t\t\t} else {\n\t\t\t\tthrow new Error(\"Invalid format type.\");\n\t\t\t}\n\t\t\tvar date = [],\n\t\t\t\tseps = $.extend([], format.separators);\n\t\t\tfor (var i=0, cnt = format.parts.length; i < cnt; i++) {\n\t\t\t\tif (seps.length)\n\t\t\t\t\tdate.push(seps.shift())\n\t\t\t\tdate.push(val[format.parts[i]]);\n\t\t\t}\n\t\t\treturn date.join('');\n\t\t},\n\t\tconvertViewMode: function(viewMode){\n\t\t\tswitch (viewMode) {\n\t\t\t\tcase 4:\n\t\t\t\tcase 'decade':\n\t\t\t\t\tviewMode = 4;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 3:\n\t\t\t\tcase 'year':\n\t\t\t\t\tviewMode = 3;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\tcase 'month':\n\t\t\t\t\tviewMode = 2;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 1:\n\t\t\t\tcase 'day':\n\t\t\t\t\tviewMode = 1;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0:\n\t\t\t\tcase 'hour':\n\t\t\t\t\tviewMode = 0;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\treturn viewMode;\n\t\t},\n\t\theadTemplate: '<thead>'+\n\t\t\t\t\t\t\t'<tr>'+\n\t\t\t\t\t\t\t\t'<th class=\"prev\"><i class=\"icon-arrow-left\"/></th>'+\n\t\t\t\t\t\t\t\t'<th colspan=\"5\" class=\"switch\"></th>'+\n\t\t\t\t\t\t\t\t'<th class=\"next\"><i class=\"icon-arrow-right\"/></th>'+\n\t\t\t\t\t\t\t'</tr>'+\n\t\t\t\t\t\t'</thead>',\n\t\tcontTemplate: '<tbody><tr><td colspan=\"7\"></td></tr></tbody>',\n\t\tfootTemplate: '<tfoot><tr><th colspan=\"7\" class=\"today\"></th></tr></tfoot>'\n\t};\n\tDPGlobal.template = '<div class=\"datetimepicker\">'+\n\t\t\t\t\t\t\t'<div class=\"datetimepicker-minutes\">'+\n\t\t\t\t\t\t\t\t'<table class=\" table-condensed\">'+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.contTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'</table>'+\n\t\t\t\t\t\t\t'</div>'+\n\t\t\t\t\t\t\t'<div class=\"datetimepicker-hours\">'+\n\t\t\t\t\t\t\t\t'<table class=\" table-condensed\">'+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.contTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'</table>'+\n\t\t\t\t\t\t\t'</div>'+\n\t\t\t\t\t\t\t'<div class=\"datetimepicker-days\">'+\n\t\t\t\t\t\t\t\t'<table class=\" table-condensed\">'+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\t'<tbody></tbody>'+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'</table>'+\n\t\t\t\t\t\t\t'</div>'+\n\t\t\t\t\t\t\t'<div class=\"datetimepicker-months\">'+\n\t\t\t\t\t\t\t\t'<table class=\"table-condensed\">'+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.contTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'</table>'+\n\t\t\t\t\t\t\t'</div>'+\n\t\t\t\t\t\t\t'<div class=\"datetimepicker-years\">'+\n\t\t\t\t\t\t\t\t'<table class=\"table-condensed\">'+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.contTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'</table>'+\n\t\t\t\t\t\t\t'</div>'+\n\t\t\t\t\t\t'</div>';\n\n\t$.fn.datetimepicker.DPGlobal = DPGlobal;\n\n}( window.jQuery );"
  },
  {
    "path": "public/admin/js/bootstrap-editable.js",
    "content": "/*! X-editable - v1.5.1 \n* In-place editing with Twitter Bootstrap, jQuery UI or pure jQuery\n* http://github.com/vitalets/x-editable\n* Copyright (c) 2013 Vitaliy Potapov; Licensed MIT */\n!function(a){\"use strict\";var b=function(b,c){this.options=a.extend({},a.fn.editableform.defaults,c),this.$div=a(b),this.options.scope||(this.options.scope=this)};b.prototype={constructor:b,initInput:function(){this.input=this.options.input,this.value=this.input.str2value(this.options.value),this.input.prerender()},initTemplate:function(){this.$form=a(a.fn.editableform.template)},initButtons:function(){var b=this.$form.find(\".editable-buttons\");b.append(a.fn.editableform.buttons),\"bottom\"===this.options.showbuttons&&b.addClass(\"editable-buttons-bottom\")},render:function(){this.$loading=a(a.fn.editableform.loading),this.$div.empty().append(this.$loading),this.initTemplate(),this.options.showbuttons?this.initButtons():this.$form.find(\".editable-buttons\").remove(),this.showLoading(),this.isSaving=!1,this.$div.triggerHandler(\"rendering\"),this.initInput(),this.$form.find(\"div.editable-input\").append(this.input.$tpl),this.$div.append(this.$form),a.when(this.input.render()).then(a.proxy(function(){if(this.options.showbuttons||this.input.autosubmit(),this.$form.find(\".editable-cancel\").click(a.proxy(this.cancel,this)),this.input.error)this.error(this.input.error),this.$form.find(\".editable-submit\").attr(\"disabled\",!0),this.input.$input.attr(\"disabled\",!0),this.$form.submit(function(a){a.preventDefault()});else{this.error(!1),this.input.$input.removeAttr(\"disabled\"),this.$form.find(\".editable-submit\").removeAttr(\"disabled\");var b=null===this.value||void 0===this.value||\"\"===this.value?this.options.defaultValue:this.value;this.input.value2input(b),this.$form.submit(a.proxy(this.submit,this))}this.$div.triggerHandler(\"rendered\"),this.showForm(),this.input.postrender&&this.input.postrender()},this))},cancel:function(){this.$div.triggerHandler(\"cancel\")},showLoading:function(){var a,b;this.$form?(a=this.$form.outerWidth(),b=this.$form.outerHeight(),a&&this.$loading.width(a),b&&this.$loading.height(b),this.$form.hide()):(a=this.$loading.parent().width(),a&&this.$loading.width(a)),this.$loading.show()},showForm:function(a){this.$loading.hide(),this.$form.show(),a!==!1&&this.input.activate(),this.$div.triggerHandler(\"show\")},error:function(b){var c,d=this.$form.find(\".control-group\"),e=this.$form.find(\".editable-error-block\");if(b===!1)d.removeClass(a.fn.editableform.errorGroupClass),e.removeClass(a.fn.editableform.errorBlockClass).empty().hide();else{if(b){c=(\"\"+b).split(\"\\n\");for(var f=0;f<c.length;f++)c[f]=a(\"<div>\").text(c[f]).html();b=c.join(\"<br>\")}d.addClass(a.fn.editableform.errorGroupClass),e.addClass(a.fn.editableform.errorBlockClass).html(b).show()}},submit:function(b){b.stopPropagation(),b.preventDefault();var c=this.input.input2value(),d=this.validate(c);if(\"object\"===a.type(d)&&void 0!==d.newValue){if(c=d.newValue,this.input.value2input(c),\"string\"==typeof d.msg)return this.error(d.msg),this.showForm(),void 0}else if(d)return this.error(d),this.showForm(),void 0;if(!this.options.savenochange&&this.input.value2str(c)==this.input.value2str(this.value))return this.$div.triggerHandler(\"nochange\"),void 0;var e=this.input.value2submit(c);this.isSaving=!0,a.when(this.save(e)).done(a.proxy(function(a){this.isSaving=!1;var b=\"function\"==typeof this.options.success?this.options.success.call(this.options.scope,a,c):null;return b===!1?(this.error(!1),this.showForm(!1),void 0):\"string\"==typeof b?(this.error(b),this.showForm(),void 0):(b&&\"object\"==typeof b&&b.hasOwnProperty(\"newValue\")&&(c=b.newValue),this.error(!1),this.value=c,this.$div.triggerHandler(\"save\",{newValue:c,submitValue:e,response:a}),void 0)},this)).fail(a.proxy(function(a){this.isSaving=!1;var b;b=\"function\"==typeof this.options.error?this.options.error.call(this.options.scope,a,c):\"string\"==typeof a?a:a.responseText||a.statusText||\"Unknown error!\",this.error(b),this.showForm()},this))},save:function(b){this.options.pk=a.fn.editableutils.tryParseJson(this.options.pk,!0);var c,d=\"function\"==typeof this.options.pk?this.options.pk.call(this.options.scope):this.options.pk,e=!!(\"function\"==typeof this.options.url||this.options.url&&(\"always\"===this.options.send||\"auto\"===this.options.send&&null!==d&&void 0!==d));return e?(this.showLoading(),c={name:this.options.name||\"\",value:b,pk:d},\"function\"==typeof this.options.params?c=this.options.params.call(this.options.scope,c):(this.options.params=a.fn.editableutils.tryParseJson(this.options.params,!0),a.extend(c,this.options.params)),\"function\"==typeof this.options.url?this.options.url.call(this.options.scope,c):a.ajax(a.extend({url:this.options.url,data:c,type:\"POST\"},this.options.ajaxOptions))):void 0},validate:function(a){return void 0===a&&(a=this.value),\"function\"==typeof this.options.validate?this.options.validate.call(this.options.scope,a):void 0},option:function(a,b){a in this.options&&(this.options[a]=b),\"value\"===a&&this.setValue(b)},setValue:function(a,b){this.value=b?this.input.str2value(a):a,this.$form&&this.$form.is(\":visible\")&&this.input.value2input(this.value)}},a.fn.editableform=function(c){var d=arguments;return this.each(function(){var e=a(this),f=e.data(\"editableform\"),g=\"object\"==typeof c&&c;f||e.data(\"editableform\",f=new b(this,g)),\"string\"==typeof c&&f[c].apply(f,Array.prototype.slice.call(d,1))})},a.fn.editableform.Constructor=b,a.fn.editableform.defaults={type:\"text\",url:null,params:null,name:null,pk:null,value:null,defaultValue:null,send:\"auto\",validate:null,success:null,error:null,ajaxOptions:null,showbuttons:!0,scope:null,savenochange:!1},a.fn.editableform.template='<form class=\"form-inline editableform\"><div class=\"control-group\"><div><div class=\"editable-input\"></div><div class=\"editable-buttons\"></div></div><div class=\"editable-error-block\"></div></div></form>',a.fn.editableform.loading='<div class=\"editableform-loading\"></div>',a.fn.editableform.buttons='<button type=\"submit\" class=\"editable-submit\">ok</button><button type=\"button\" class=\"editable-cancel\">cancel</button>',a.fn.editableform.errorGroupClass=null,a.fn.editableform.errorBlockClass=\"editable-error\",a.fn.editableform.engine=\"jquery\"}(window.jQuery),function(a){\"use strict\";a.fn.editableutils={inherit:function(a,b){var c=function(){};c.prototype=b.prototype,a.prototype=new c,a.prototype.constructor=a,a.superclass=b.prototype},setCursorPosition:function(a,b){if(a.setSelectionRange)a.setSelectionRange(b,b);else if(a.createTextRange){var c=a.createTextRange();c.collapse(!0),c.moveEnd(\"character\",b),c.moveStart(\"character\",b),c.select()}},tryParseJson:function(a,b){if(\"string\"==typeof a&&a.length&&a.match(/^[\\{\\[].*[\\}\\]]$/))if(b)try{a=new Function(\"return \"+a)()}catch(c){}finally{return a}else a=new Function(\"return \"+a)();return a},sliceObj:function(b,c,d){var e,f,g={};if(!a.isArray(c)||!c.length)return g;for(var h=0;h<c.length;h++)e=c[h],b.hasOwnProperty(e)&&(g[e]=b[e]),d!==!0&&(f=e.toLowerCase(),b.hasOwnProperty(f)&&(g[e]=b[f]));return g},getConfigData:function(b){var c={};return a.each(b.data(),function(a,b){(\"object\"!=typeof b||b&&\"object\"==typeof b&&(b.constructor===Object||b.constructor===Array))&&(c[a]=b)}),c},objectKeys:function(a){if(Object.keys)return Object.keys(a);if(a!==Object(a))throw new TypeError(\"Object.keys called on a non-object\");var b,c=[];for(b in a)Object.prototype.hasOwnProperty.call(a,b)&&c.push(b);return c},escape:function(b){return a(\"<div>\").text(b).html()},itemsByValue:function(b,c,d){if(!c||null===b)return[];if(\"function\"!=typeof d){var e=d||\"value\";d=function(a){return a[e]}}var f=a.isArray(b),g=[],h=this;return a.each(c,function(c,e){if(e.children)g=g.concat(h.itemsByValue(b,e.children,d));else if(f)a.grep(b,function(a){return a==(e&&\"object\"==typeof e?d(e):e)}).length&&g.push(e);else{var i=e&&\"object\"==typeof e?d(e):e;b==i&&g.push(e)}}),g},createInput:function(b){var c,d,e,f=b.type;return\"date\"===f&&(\"inline\"===b.mode?a.fn.editabletypes.datefield?f=\"datefield\":a.fn.editabletypes.dateuifield&&(f=\"dateuifield\"):a.fn.editabletypes.date?f=\"date\":a.fn.editabletypes.dateui&&(f=\"dateui\"),\"date\"!==f||a.fn.editabletypes.date||(f=\"combodate\")),\"datetime\"===f&&\"inline\"===b.mode&&(f=\"datetimefield\"),\"wysihtml5\"!==f||a.fn.editabletypes[f]||(f=\"textarea\"),\"function\"==typeof a.fn.editabletypes[f]?(c=a.fn.editabletypes[f],d=this.sliceObj(b,this.objectKeys(c.defaults)),e=new c(d)):(a.error(\"Unknown type: \"+f),!1)},supportsTransitions:function(){var a=document.body||document.documentElement,b=a.style,c=\"transition\",d=[\"Moz\",\"Webkit\",\"Khtml\",\"O\",\"ms\"];if(\"string\"==typeof b[c])return!0;c=c.charAt(0).toUpperCase()+c.substr(1);for(var e=0;e<d.length;e++)if(\"string\"==typeof b[d[e]+c])return!0;return!1}}}(window.jQuery),function(a){\"use strict\";var b=function(a,b){this.init(a,b)},c=function(a,b){this.init(a,b)};b.prototype={containerName:null,containerDataName:null,innerCss:null,containerClass:\"editable-container editable-popup\",defaults:{},init:function(c,d){this.$element=a(c),this.options=a.extend({},a.fn.editableContainer.defaults,d),this.splitOptions(),this.formOptions.scope=this.$element[0],this.initContainer(),this.delayedHide=!1,this.$element.on(\"destroyed\",a.proxy(function(){this.destroy()},this)),a(document).data(\"editable-handlers-attached\")||(a(document).on(\"keyup.editable\",function(b){27===b.which&&a(\".editable-open\").editableContainer(\"hide\")}),a(document).on(\"click.editable\",function(c){var d,e=a(c.target),f=[\".editable-container\",\".ui-datepicker-header\",\".datepicker\",\".modal-backdrop\",\".bootstrap-wysihtml5-insert-image-modal\",\".bootstrap-wysihtml5-insert-link-modal\"];if(a.contains(document.documentElement,c.target)&&!e.is(document)){for(d=0;d<f.length;d++)if(e.is(f[d])||e.parents(f[d]).length)return;b.prototype.closeOthers(c.target)}}),a(document).data(\"editable-handlers-attached\",!0))},splitOptions:function(){if(this.containerOptions={},this.formOptions={},!a.fn[this.containerName])throw new Error(this.containerName+\" not found. Have you included corresponding js file?\");for(var b in this.options)b in this.defaults?this.containerOptions[b]=this.options[b]:this.formOptions[b]=this.options[b]},tip:function(){return this.container()?this.container().$tip:null},container:function(){var a;return this.containerDataName&&(a=this.$element.data(this.containerDataName))?a:a=this.$element.data(this.containerName)},call:function(){this.$element[this.containerName].apply(this.$element,arguments)},initContainer:function(){this.call(this.containerOptions)},renderForm:function(){this.$form.editableform(this.formOptions).on({save:a.proxy(this.save,this),nochange:a.proxy(function(){this.hide(\"nochange\")},this),cancel:a.proxy(function(){this.hide(\"cancel\")},this),show:a.proxy(function(){this.delayedHide?(this.hide(this.delayedHide.reason),this.delayedHide=!1):this.setPosition()},this),rendering:a.proxy(this.setPosition,this),resize:a.proxy(this.setPosition,this),rendered:a.proxy(function(){this.$element.triggerHandler(\"shown\",a(this.options.scope).data(\"editable\"))},this)}).editableform(\"render\")},show:function(b){this.$element.addClass(\"editable-open\"),b!==!1&&this.closeOthers(this.$element[0]),this.innerShow(),this.tip().addClass(this.containerClass),this.$form,this.$form=a(\"<div>\"),this.tip().is(this.innerCss)?this.tip().append(this.$form):this.tip().find(this.innerCss).append(this.$form),this.renderForm()},hide:function(a){if(this.tip()&&this.tip().is(\":visible\")&&this.$element.hasClass(\"editable-open\")){if(this.$form.data(\"editableform\").isSaving)return this.delayedHide={reason:a},void 0;this.delayedHide=!1,this.$element.removeClass(\"editable-open\"),this.innerHide(),this.$element.triggerHandler(\"hidden\",a||\"manual\")}},innerShow:function(){},innerHide:function(){},toggle:function(a){this.container()&&this.tip()&&this.tip().is(\":visible\")?this.hide():this.show(a)},setPosition:function(){},save:function(a,b){this.$element.triggerHandler(\"save\",b),this.hide(\"save\")},option:function(a,b){this.options[a]=b,a in this.containerOptions?(this.containerOptions[a]=b,this.setContainerOption(a,b)):(this.formOptions[a]=b,this.$form&&this.$form.editableform(\"option\",a,b))},setContainerOption:function(a,b){this.call(\"option\",a,b)},destroy:function(){this.hide(),this.innerDestroy(),this.$element.off(\"destroyed\"),this.$element.removeData(\"editableContainer\")},innerDestroy:function(){},closeOthers:function(b){a(\".editable-open\").each(function(c,d){if(d!==b&&!a(d).find(b).length){var e=a(d),f=e.data(\"editableContainer\");f&&(\"cancel\"===f.options.onblur?e.data(\"editableContainer\").hide(\"onblur\"):\"submit\"===f.options.onblur&&e.data(\"editableContainer\").tip().find(\"form\").submit())}})},activate:function(){this.tip&&this.tip().is(\":visible\")&&this.$form&&this.$form.data(\"editableform\").input.activate()}},a.fn.editableContainer=function(d){var e=arguments;return this.each(function(){var f=a(this),g=\"editableContainer\",h=f.data(g),i=\"object\"==typeof d&&d,j=\"inline\"===i.mode?c:b;h||f.data(g,h=new j(this,i)),\"string\"==typeof d&&h[d].apply(h,Array.prototype.slice.call(e,1))})},a.fn.editableContainer.Popup=b,a.fn.editableContainer.Inline=c,a.fn.editableContainer.defaults={value:null,placement:\"top\",autohide:!0,onblur:\"cancel\",anim:!1,mode:\"popup\"},jQuery.event.special.destroyed={remove:function(a){a.handler&&a.handler()}}}(window.jQuery),function(a){\"use strict\";a.extend(a.fn.editableContainer.Inline.prototype,a.fn.editableContainer.Popup.prototype,{containerName:\"editableform\",innerCss:\".editable-inline\",containerClass:\"editable-container editable-inline\",initContainer:function(){this.$tip=a(\"<span></span>\"),this.options.anim||(this.options.anim=0)},splitOptions:function(){this.containerOptions={},this.formOptions=this.options},tip:function(){return this.$tip},innerShow:function(){this.$element.hide(),this.tip().insertAfter(this.$element).show()},innerHide:function(){this.$tip.hide(this.options.anim,a.proxy(function(){this.$element.show(),this.innerDestroy()},this))},innerDestroy:function(){this.tip()&&this.tip().empty().remove()}})}(window.jQuery),function(a){\"use strict\";var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.editable.defaults,c,a.fn.editableutils.getConfigData(this.$element)),this.options.selector?this.initLive():this.init(),this.options.highlight&&!a.fn.editableutils.supportsTransitions()&&(this.options.highlight=!1)};b.prototype={constructor:b,init:function(){var b,c=!1;if(this.options.name=this.options.name||this.$element.attr(\"id\"),this.options.scope=this.$element[0],this.input=a.fn.editableutils.createInput(this.options),this.input){switch(void 0===this.options.value||null===this.options.value?(this.value=this.input.html2value(a.trim(this.$element.html())),c=!0):(this.options.value=a.fn.editableutils.tryParseJson(this.options.value,!0),this.value=\"string\"==typeof this.options.value?this.input.str2value(this.options.value):this.options.value),this.$element.addClass(\"editable\"),\"textarea\"===this.input.type&&this.$element.addClass(\"editable-pre-wrapped\"),\"manual\"!==this.options.toggle?(this.$element.addClass(\"editable-click\"),this.$element.on(this.options.toggle+\".editable\",a.proxy(function(a){if(this.options.disabled||a.preventDefault(),\"mouseenter\"===this.options.toggle)this.show();else{var b=\"click\"!==this.options.toggle;this.toggle(b)}},this))):this.$element.attr(\"tabindex\",-1),\"function\"==typeof this.options.display&&(this.options.autotext=\"always\"),this.options.autotext){case\"always\":b=!0;break;case\"auto\":b=!a.trim(this.$element.text()).length&&null!==this.value&&void 0!==this.value&&!c;break;default:b=!1}a.when(b?this.render():!0).then(a.proxy(function(){this.options.disabled?this.disable():this.enable(),this.$element.triggerHandler(\"init\",this)},this))}},initLive:function(){var b=this.options.selector;this.options.selector=!1,this.options.autotext=\"never\",this.$element.on(this.options.toggle+\".editable\",b,a.proxy(function(b){var c=a(b.target);c.data(\"editable\")||(c.hasClass(this.options.emptyclass)&&c.empty(),c.editable(this.options).trigger(b))},this))},render:function(a){return this.options.display!==!1?this.input.value2htmlFinal?this.input.value2html(this.value,this.$element[0],this.options.display,a):\"function\"==typeof this.options.display?this.options.display.call(this.$element[0],this.value,a):this.input.value2html(this.value,this.$element[0]):void 0},enable:function(){this.options.disabled=!1,this.$element.removeClass(\"editable-disabled\"),this.handleEmpty(this.isEmpty),\"manual\"!==this.options.toggle&&\"-1\"===this.$element.attr(\"tabindex\")&&this.$element.removeAttr(\"tabindex\")},disable:function(){this.options.disabled=!0,this.hide(),this.$element.addClass(\"editable-disabled\"),this.handleEmpty(this.isEmpty),this.$element.attr(\"tabindex\",-1)},toggleDisabled:function(){this.options.disabled?this.enable():this.disable()},option:function(b,c){return b&&\"object\"==typeof b?(a.each(b,a.proxy(function(b,c){this.option(a.trim(b),c)},this)),void 0):(this.options[b]=c,\"disabled\"===b?c?this.disable():this.enable():(\"value\"===b&&this.setValue(c),this.container&&this.container.option(b,c),this.input.option&&this.input.option(b,c),void 0))},handleEmpty:function(b){this.options.display!==!1&&(this.isEmpty=void 0!==b?b:\"function\"==typeof this.input.isEmpty?this.input.isEmpty(this.$element):\"\"===a.trim(this.$element.html()),this.options.disabled?this.isEmpty&&(this.$element.empty(),this.options.emptyclass&&this.$element.removeClass(this.options.emptyclass)):this.isEmpty?(this.$element.html(this.options.emptytext),this.options.emptyclass&&this.$element.addClass(this.options.emptyclass)):this.options.emptyclass&&this.$element.removeClass(this.options.emptyclass))},show:function(b){if(!this.options.disabled){if(this.container){if(this.container.tip().is(\":visible\"))return}else{var c=a.extend({},this.options,{value:this.value,input:this.input});this.$element.editableContainer(c),this.$element.on(\"save.internal\",a.proxy(this.save,this)),this.container=this.$element.data(\"editableContainer\")}this.container.show(b)}},hide:function(){this.container&&this.container.hide()},toggle:function(a){this.container&&this.container.tip().is(\":visible\")?this.hide():this.show(a)},save:function(a,b){if(this.options.unsavedclass){var c=!1;c=c||\"function\"==typeof this.options.url,c=c||this.options.display===!1,c=c||void 0!==b.response,c=c||this.options.savenochange&&this.input.value2str(this.value)!==this.input.value2str(b.newValue),c?this.$element.removeClass(this.options.unsavedclass):this.$element.addClass(this.options.unsavedclass)}if(this.options.highlight){var d=this.$element,e=d.css(\"background-color\");d.css(\"background-color\",this.options.highlight),setTimeout(function(){\"transparent\"===e&&(e=\"\"),d.css(\"background-color\",e),d.addClass(\"editable-bg-transition\"),setTimeout(function(){d.removeClass(\"editable-bg-transition\")},1700)},10)}this.setValue(b.newValue,!1,b.response)},validate:function(){return\"function\"==typeof this.options.validate?this.options.validate.call(this,this.value):void 0},setValue:function(b,c,d){this.value=c?this.input.str2value(b):b,this.container&&this.container.option(\"value\",this.value),a.when(this.render(d)).then(a.proxy(function(){this.handleEmpty()},this))},activate:function(){this.container&&this.container.activate()},destroy:function(){this.disable(),this.container&&this.container.destroy(),this.input.destroy(),\"manual\"!==this.options.toggle&&(this.$element.removeClass(\"editable-click\"),this.$element.off(this.options.toggle+\".editable\")),this.$element.off(\"save.internal\"),this.$element.removeClass(\"editable editable-open editable-disabled\"),this.$element.removeData(\"editable\")}},a.fn.editable=function(c){var d={},e=arguments,f=\"editable\";switch(c){case\"validate\":return this.each(function(){var b,c=a(this),e=c.data(f);e&&(b=e.validate())&&(d[e.options.name]=b)}),d;case\"getValue\":return 2===arguments.length&&arguments[1]===!0?d=this.eq(0).data(f).value:this.each(function(){var b=a(this),c=b.data(f);c&&void 0!==c.value&&null!==c.value&&(d[c.options.name]=c.input.value2submit(c.value))}),d;case\"submit\":var g=arguments[1]||{},h=this,i=this.editable(\"validate\");if(a.isEmptyObject(i)){var j={};if(1===h.length){var k=h.data(\"editable\"),l={name:k.options.name||\"\",value:k.input.value2submit(k.value),pk:\"function\"==typeof k.options.pk?k.options.pk.call(k.options.scope):k.options.pk};\"function\"==typeof k.options.params?l=k.options.params.call(k.options.scope,l):(k.options.params=a.fn.editableutils.tryParseJson(k.options.params,!0),a.extend(l,k.options.params)),j={url:k.options.url,data:l,type:\"POST\"},g.success=g.success||k.options.success,g.error=g.error||k.options.error}else{var m=this.editable(\"getValue\");j={url:g.url,data:m,type:\"POST\"}}j.success=\"function\"==typeof g.success?function(a){g.success.call(h,a,g)}:a.noop,j.error=\"function\"==typeof g.error?function(){g.error.apply(h,arguments)}:a.noop,g.ajaxOptions&&a.extend(j,g.ajaxOptions),g.data&&a.extend(j.data,g.data),a.ajax(j)}else\"function\"==typeof g.error&&g.error.call(h,i);return this}return this.each(function(){var d=a(this),g=d.data(f),h=\"object\"==typeof c&&c;return h&&h.selector?(g=new b(this,h),void 0):(g||d.data(f,g=new b(this,h)),\"string\"==typeof c&&g[c].apply(g,Array.prototype.slice.call(e,1)),void 0)})},a.fn.editable.defaults={type:\"text\",disabled:!1,toggle:\"click\",emptytext:\"Empty\",autotext:\"auto\",value:null,display:null,emptyclass:\"editable-empty\",unsavedclass:\"editable-unsaved\",selector:null,highlight:\"#FFFF80\"}}(window.jQuery),function(a){\"use strict\";a.fn.editabletypes={};var b=function(){};b.prototype={init:function(b,c,d){this.type=b,this.options=a.extend({},d,c)},prerender:function(){this.$tpl=a(this.options.tpl),this.$input=this.$tpl,this.$clear=null,this.error=null},render:function(){},value2html:function(b,c){a(c)[this.options.escape?\"text\":\"html\"](a.trim(b))},html2value:function(b){return a(\"<div>\").html(b).text()},value2str:function(a){return a},str2value:function(a){return a},value2submit:function(a){return a},value2input:function(a){this.$input.val(a)},input2value:function(){return this.$input.val()},activate:function(){this.$input.is(\":visible\")&&this.$input.focus()},clear:function(){this.$input.val(null)},escape:function(b){return a(\"<div>\").text(b).html()},autosubmit:function(){},destroy:function(){},setClass:function(){this.options.inputclass&&this.$input.addClass(this.options.inputclass)},setAttr:function(a){void 0!==this.options[a]&&null!==this.options[a]&&this.$input.attr(a,this.options[a])},option:function(a,b){this.options[a]=b}},b.defaults={tpl:\"\",inputclass:null,escape:!0,scope:null,showbuttons:!0},a.extend(a.fn.editabletypes,{abstractinput:b})}(window.jQuery),function(a){\"use strict\";var b=function(){};a.fn.editableutils.inherit(b,a.fn.editabletypes.abstractinput),a.extend(b.prototype,{render:function(){var b=a.Deferred();return this.error=null,this.onSourceReady(function(){this.renderList(),b.resolve()},function(){this.error=this.options.sourceError,b.resolve()}),b.promise()},html2value:function(){return null},value2html:function(b,c,d,e){var f=a.Deferred(),g=function(){\"function\"==typeof d?d.call(c,b,this.sourceData,e):this.value2htmlFinal(b,c),f.resolve()};return null===b?g.call(this):this.onSourceReady(g,function(){f.resolve()}),f.promise()},onSourceReady:function(b,c){var d;if(a.isFunction(this.options.source)?(d=this.options.source.call(this.options.scope),this.sourceData=null):d=this.options.source,this.options.sourceCache&&a.isArray(this.sourceData))return b.call(this),void 0;try{d=a.fn.editableutils.tryParseJson(d,!1)}catch(e){return c.call(this),void 0}if(\"string\"==typeof d){if(this.options.sourceCache){var f,g=d;if(a(document).data(g)||a(document).data(g,{}),f=a(document).data(g),f.loading===!1&&f.sourceData)return this.sourceData=f.sourceData,this.doPrepend(),b.call(this),void 0;if(f.loading===!0)return f.callbacks.push(a.proxy(function(){this.sourceData=f.sourceData,this.doPrepend(),b.call(this)},this)),f.err_callbacks.push(a.proxy(c,this)),void 0;f.loading=!0,f.callbacks=[],f.err_callbacks=[]}var h=a.extend({url:d,type:\"get\",cache:!1,dataType:\"json\",success:a.proxy(function(d){f&&(f.loading=!1),this.sourceData=this.makeArray(d),a.isArray(this.sourceData)?(f&&(f.sourceData=this.sourceData,a.each(f.callbacks,function(){this.call()})),this.doPrepend(),b.call(this)):(c.call(this),f&&a.each(f.err_callbacks,function(){this.call()}))},this),error:a.proxy(function(){c.call(this),f&&(f.loading=!1,a.each(f.err_callbacks,function(){this.call()}))},this)},this.options.sourceOptions);a.ajax(h)}else this.sourceData=this.makeArray(d),a.isArray(this.sourceData)?(this.doPrepend(),b.call(this)):c.call(this)},doPrepend:function(){null!==this.options.prepend&&void 0!==this.options.prepend&&(a.isArray(this.prependData)||(a.isFunction(this.options.prepend)&&(this.options.prepend=this.options.prepend.call(this.options.scope)),this.options.prepend=a.fn.editableutils.tryParseJson(this.options.prepend,!0),\"string\"==typeof this.options.prepend&&(this.options.prepend={\"\":this.options.prepend}),this.prependData=this.makeArray(this.options.prepend)),a.isArray(this.prependData)&&a.isArray(this.sourceData)&&(this.sourceData=this.prependData.concat(this.sourceData)))},renderList:function(){},value2htmlFinal:function(){},makeArray:function(b){var c,d,e,f,g=[];if(!b||\"string\"==typeof b)return null;if(a.isArray(b)){f=function(a,b){return d={value:a,text:b},c++>=2?!1:void 0};for(var h=0;h<b.length;h++)e=b[h],\"object\"==typeof e?(c=0,a.each(e,f),1===c?g.push(d):c>1&&(e.children&&(e.children=this.makeArray(e.children)),g.push(e))):g.push({value:e,text:e})}else a.each(b,function(a,b){g.push({value:a,text:b})});return g},option:function(a,b){this.options[a]=b,\"source\"===a&&(this.sourceData=null),\"prepend\"===a&&(this.prependData=null)}}),b.defaults=a.extend({},a.fn.editabletypes.abstractinput.defaults,{source:null,prepend:!1,sourceError:\"Error when loading list\",sourceCache:!0,sourceOptions:null}),a.fn.editabletypes.list=b}(window.jQuery),function(a){\"use strict\";var b=function(a){this.init(\"text\",a,b.defaults)};a.fn.editableutils.inherit(b,a.fn.editabletypes.abstractinput),a.extend(b.prototype,{render:function(){this.renderClear(),this.setClass(),this.setAttr(\"placeholder\")},activate:function(){this.$input.is(\":visible\")&&(this.$input.focus(),a.fn.editableutils.setCursorPosition(this.$input.get(0),this.$input.val().length),this.toggleClear&&this.toggleClear())},renderClear:function(){this.options.clear&&(this.$clear=a('<span class=\"editable-clear-x\"></span>'),this.$input.after(this.$clear).css(\"padding-right\",24).keyup(a.proxy(function(b){if(!~a.inArray(b.keyCode,[40,38,9,13,27])){clearTimeout(this.t);var c=this;this.t=setTimeout(function(){c.toggleClear(b)},100)}},this)).parent().css(\"position\",\"relative\"),this.$clear.click(a.proxy(this.clear,this)))},postrender:function(){},toggleClear:function(){if(this.$clear){var a=this.$input.val().length,b=this.$clear.is(\":visible\");a&&!b&&this.$clear.show(),!a&&b&&this.$clear.hide()}},clear:function(){this.$clear.hide(),this.$input.val(\"\").focus()}}),b.defaults=a.extend({},a.fn.editabletypes.abstractinput.defaults,{tpl:'<input type=\"text\">',placeholder:null,clear:!0}),a.fn.editabletypes.text=b}(window.jQuery),function(a){\"use strict\";var b=function(a){this.init(\"textarea\",a,b.defaults)};a.fn.editableutils.inherit(b,a.fn.editabletypes.abstractinput),a.extend(b.prototype,{render:function(){this.setClass(),this.setAttr(\"placeholder\"),this.setAttr(\"rows\"),this.$input.keydown(function(b){b.ctrlKey&&13===b.which&&a(this).closest(\"form\").submit()})},activate:function(){a.fn.editabletypes.text.prototype.activate.call(this)}}),b.defaults=a.extend({},a.fn.editabletypes.abstractinput.defaults,{tpl:\"<textarea></textarea>\",inputclass:\"input-large\",placeholder:null,rows:7}),a.fn.editabletypes.textarea=b}(window.jQuery),function(a){\"use strict\";var b=function(a){this.init(\"select\",a,b.defaults)};a.fn.editableutils.inherit(b,a.fn.editabletypes.list),a.extend(b.prototype,{renderList:function(){this.$input.empty();var b=function(c,d){var e;if(a.isArray(d))for(var f=0;f<d.length;f++)e={},d[f].children?(e.label=d[f].text,c.append(b(a(\"<optgroup>\",e),d[f].children))):(e.value=d[f].value,d[f].disabled&&(e.disabled=!0),c.append(a(\"<option>\",e).text(d[f].text)));return c};b(this.$input,this.sourceData),this.setClass(),this.$input.on(\"keydown.editable\",function(b){13===b.which&&a(this).closest(\"form\").submit()})},value2htmlFinal:function(b,c){var d=\"\",e=a.fn.editableutils.itemsByValue(b,this.sourceData);e.length&&(d=e[0].text),a.fn.editabletypes.abstractinput.prototype.value2html.call(this,d,c)},autosubmit:function(){this.$input.off(\"keydown.editable\").on(\"change.editable\",function(){a(this).closest(\"form\").submit()})}}),b.defaults=a.extend({},a.fn.editabletypes.list.defaults,{tpl:\"<select></select>\"}),a.fn.editabletypes.select=b}(window.jQuery),function(a){\"use strict\";var b=function(a){this.init(\"checklist\",a,b.defaults)};a.fn.editableutils.inherit(b,a.fn.editabletypes.list),a.extend(b.prototype,{renderList:function(){var b;if(this.$tpl.empty(),a.isArray(this.sourceData)){for(var c=0;c<this.sourceData.length;c++)b=a(\"<label>\").append(a(\"<input>\",{type:\"checkbox\",value:this.sourceData[c].value})).append(a(\"<span>\").text(\" \"+this.sourceData[c].text)),a(\"<div>\").append(b).appendTo(this.$tpl);this.$input=this.$tpl.find('input[type=\"checkbox\"]'),this.setClass()}},value2str:function(b){return a.isArray(b)?b.sort().join(a.trim(this.options.separator)):\"\"},str2value:function(b){var c,d=null;return\"string\"==typeof b&&b.length?(c=new RegExp(\"\\\\s*\"+a.trim(this.options.separator)+\"\\\\s*\"),d=b.split(c)):d=a.isArray(b)?b:[b],d},value2input:function(b){this.$input.prop(\"checked\",!1),a.isArray(b)&&b.length&&this.$input.each(function(c,d){var e=a(d);a.each(b,function(a,b){e.val()==b&&e.prop(\"checked\",!0)})})},input2value:function(){var b=[];return this.$input.filter(\":checked\").each(function(c,d){b.push(a(d).val())}),b},value2htmlFinal:function(b,c){var d=[],e=a.fn.editableutils.itemsByValue(b,this.sourceData),f=this.options.escape;e.length?(a.each(e,function(b,c){var e=f?a.fn.editableutils.escape(c.text):c.text;d.push(e)}),a(c).html(d.join(\"<br>\"))):a(c).empty()},activate:function(){this.$input.first().focus()},autosubmit:function(){this.$input.on(\"keydown\",function(b){13===b.which&&a(this).closest(\"form\").submit()})}}),b.defaults=a.extend({},a.fn.editabletypes.list.defaults,{tpl:'<div class=\"editable-checklist\"></div>',inputclass:null,separator:\",\"}),a.fn.editabletypes.checklist=b}(window.jQuery),function(a){\"use strict\";var b=function(a){this.init(\"password\",a,b.defaults)};a.fn.editableutils.inherit(b,a.fn.editabletypes.text),a.extend(b.prototype,{value2html:function(b,c){b?a(c).text(\"[hidden]\"):a(c).empty()},html2value:function(){return null}}),b.defaults=a.extend({},a.fn.editabletypes.text.defaults,{tpl:'<input type=\"password\">'}),a.fn.editabletypes.password=b}(window.jQuery),function(a){\"use strict\";var b=function(a){this.init(\"email\",a,b.defaults)};a.fn.editableutils.inherit(b,a.fn.editabletypes.text),b.defaults=a.extend({},a.fn.editabletypes.text.defaults,{tpl:'<input type=\"email\">'}),a.fn.editabletypes.email=b}(window.jQuery),function(a){\"use strict\";var b=function(a){this.init(\"url\",a,b.defaults)};a.fn.editableutils.inherit(b,a.fn.editabletypes.text),b.defaults=a.extend({},a.fn.editabletypes.text.defaults,{tpl:'<input type=\"url\">'}),a.fn.editabletypes.url=b}(window.jQuery),function(a){\"use strict\";var b=function(a){this.init(\"tel\",a,b.defaults)};a.fn.editableutils.inherit(b,a.fn.editabletypes.text),b.defaults=a.extend({},a.fn.editabletypes.text.defaults,{tpl:'<input type=\"tel\">'}),a.fn.editabletypes.tel=b}(window.jQuery),function(a){\"use strict\";var b=function(a){this.init(\"number\",a,b.defaults)};a.fn.editableutils.inherit(b,a.fn.editabletypes.text),a.extend(b.prototype,{render:function(){b.superclass.render.call(this),this.setAttr(\"min\"),this.setAttr(\"max\"),this.setAttr(\"step\")},postrender:function(){this.$clear&&this.$clear.css({right:24})}}),b.defaults=a.extend({},a.fn.editabletypes.text.defaults,{tpl:'<input type=\"number\">',inputclass:\"input-mini\",min:null,max:null,step:null}),a.fn.editabletypes.number=b}(window.jQuery),function(a){\"use strict\";\nvar b=function(a){this.init(\"range\",a,b.defaults)};a.fn.editableutils.inherit(b,a.fn.editabletypes.number),a.extend(b.prototype,{render:function(){this.$input=this.$tpl.filter(\"input\"),this.setClass(),this.setAttr(\"min\"),this.setAttr(\"max\"),this.setAttr(\"step\"),this.$input.on(\"input\",function(){a(this).siblings(\"output\").text(a(this).val())})},activate:function(){this.$input.focus()}}),b.defaults=a.extend({},a.fn.editabletypes.number.defaults,{tpl:'<input type=\"range\"><output style=\"width: 30px; display: inline-block\"></output>',inputclass:\"input-medium\"}),a.fn.editabletypes.range=b}(window.jQuery),function(a){\"use strict\";var b=function(a){this.init(\"time\",a,b.defaults)};a.fn.editableutils.inherit(b,a.fn.editabletypes.abstractinput),a.extend(b.prototype,{render:function(){this.setClass()}}),b.defaults=a.extend({},a.fn.editabletypes.abstractinput.defaults,{tpl:'<input type=\"time\">'}),a.fn.editabletypes.time=b}(window.jQuery),function(a){\"use strict\";var b=function(c){if(this.init(\"select2\",c,b.defaults),c.select2=c.select2||{},this.sourceData=null,c.placeholder&&(c.select2.placeholder=c.placeholder),!c.select2.tags&&c.source){var d=c.source;a.isFunction(c.source)&&(d=c.source.call(c.scope)),\"string\"==typeof d?(c.select2.ajax=c.select2.ajax||{},c.select2.ajax.data||(c.select2.ajax.data=function(a){return{query:a}}),c.select2.ajax.results||(c.select2.ajax.results=function(a){return{results:a}}),c.select2.ajax.url=d):(this.sourceData=this.convertSource(d),c.select2.data=this.sourceData)}if(this.options.select2=a.extend({},b.defaults.select2,c.select2),this.isMultiple=this.options.select2.tags||this.options.select2.multiple,this.isRemote=\"ajax\"in this.options.select2,this.idFunc=this.options.select2.id,\"function\"!=typeof this.idFunc){var e=this.idFunc||\"id\";this.idFunc=function(a){return a[e]}}this.formatSelection=this.options.select2.formatSelection,\"function\"!=typeof this.formatSelection&&(this.formatSelection=function(a){return a.text})};a.fn.editableutils.inherit(b,a.fn.editabletypes.abstractinput),a.extend(b.prototype,{render:function(){this.setClass(),this.isRemote&&this.$input.on(\"select2-loaded\",a.proxy(function(a){this.sourceData=a.items.results},this)),this.isMultiple&&this.$input.on(\"change\",function(){a(this).closest(\"form\").parent().triggerHandler(\"resize\")})},value2html:function(c,d){var e,f=\"\",g=this;this.options.select2.tags?e=c:this.sourceData&&(e=a.fn.editableutils.itemsByValue(c,this.sourceData,this.idFunc)),a.isArray(e)?(f=[],a.each(e,function(a,b){f.push(b&&\"object\"==typeof b?g.formatSelection(b):b)})):e&&(f=g.formatSelection(e)),f=a.isArray(f)?f.join(this.options.viewseparator):f,b.superclass.value2html.call(this,f,d)},html2value:function(a){return this.options.select2.tags?this.str2value(a,this.options.viewseparator):null},value2input:function(b){if(a.isArray(b)&&(b=b.join(this.getSeparator())),this.$input.data(\"select2\")?this.$input.val(b).trigger(\"change\",!0):(this.$input.val(b),this.$input.select2(this.options.select2)),this.isRemote&&!this.isMultiple&&!this.options.select2.initSelection){var c=this.options.select2.id,d=this.options.select2.formatSelection;if(!c&&!d){var e=a(this.options.scope);if(!e.data(\"editable\").isEmpty){var f={id:b,text:e.text()};this.$input.select2(\"data\",f)}}}},input2value:function(){return this.$input.select2(\"val\")},str2value:function(b,c){if(\"string\"!=typeof b||!this.isMultiple)return b;c=c||this.getSeparator();var d,e,f;if(null===b||b.length<1)return null;for(d=b.split(c),e=0,f=d.length;f>e;e+=1)d[e]=a.trim(d[e]);return d},autosubmit:function(){this.$input.on(\"change\",function(b,c){c||a(this).closest(\"form\").submit()})},getSeparator:function(){return this.options.select2.separator||a.fn.select2.defaults.separator},convertSource:function(b){if(a.isArray(b)&&b.length&&void 0!==b[0].value)for(var c=0;c<b.length;c++)void 0!==b[c].value&&(b[c].id=b[c].value,delete b[c].value);return b},destroy:function(){this.$input.data(\"select2\")&&this.$input.select2(\"destroy\")}}),b.defaults=a.extend({},a.fn.editabletypes.abstractinput.defaults,{tpl:'<input type=\"hidden\">',select2:null,placeholder:null,source:null,viewseparator:\", \"}),a.fn.editabletypes.select2=b}(window.jQuery),function(a){var b=function(b,c){return this.$element=a(b),this.$element.is(\"input\")?(this.options=a.extend({},a.fn.combodate.defaults,c,this.$element.data()),this.init(),void 0):(a.error(\"Combodate should be applied to INPUT element\"),void 0)};b.prototype={constructor:b,init:function(){this.map={day:[\"D\",\"date\"],month:[\"M\",\"month\"],year:[\"Y\",\"year\"],hour:[\"[Hh]\",\"hours\"],minute:[\"m\",\"minutes\"],second:[\"s\",\"seconds\"],ampm:[\"[Aa]\",\"\"]},this.$widget=a('<span class=\"combodate\"></span>').html(this.getTemplate()),this.initCombos(),this.$widget.on(\"change\",\"select\",a.proxy(function(b){this.$element.val(this.getValue()).change(),this.options.smartDays&&(a(b.target).is(\".month\")||a(b.target).is(\".year\"))&&this.fillCombo(\"day\")},this)),this.$widget.find(\"select\").css(\"width\",\"auto\"),this.$element.hide().after(this.$widget),this.setValue(this.$element.val()||this.options.value)},getTemplate:function(){var b=this.options.template;return a.each(this.map,function(a,c){c=c[0];var d=new RegExp(c+\"+\"),e=c.length>1?c.substring(1,2):c;b=b.replace(d,\"{\"+e+\"}\")}),b=b.replace(/ /g,\"&nbsp;\"),a.each(this.map,function(a,c){c=c[0];var d=c.length>1?c.substring(1,2):c;b=b.replace(\"{\"+d+\"}\",'<select class=\"'+a+'\"></select>')}),b},initCombos:function(){for(var a in this.map){var b=this.$widget.find(\".\"+a);this[\"$\"+a]=b.length?b:null,this.fillCombo(a)}},fillCombo:function(a){var b=this[\"$\"+a];if(b){var c=\"fill\"+a.charAt(0).toUpperCase()+a.slice(1),d=this[c](),e=b.val();b.empty();for(var f=0;f<d.length;f++)b.append('<option value=\"'+d[f][0]+'\">'+d[f][1]+\"</option>\");b.val(e)}},fillCommon:function(a){var b,c=[];if(\"name\"===this.options.firstItem){b=moment.relativeTime||moment.langData()._relativeTime;var d=\"function\"==typeof b[a]?b[a](1,!0,a,!1):b[a];d=d.split(\" \").reverse()[0],c.push([\"\",d])}else\"empty\"===this.options.firstItem&&c.push([\"\",\"\"]);return c},fillDay:function(){var a,b,c=this.fillCommon(\"d\"),d=-1!==this.options.template.indexOf(\"DD\"),e=31;if(this.options.smartDays&&this.$month&&this.$year){var f=parseInt(this.$month.val(),10),g=parseInt(this.$year.val(),10);isNaN(f)||isNaN(g)||(e=moment([g,f]).daysInMonth())}for(b=1;e>=b;b++)a=d?this.leadZero(b):b,c.push([b,a]);return c},fillMonth:function(){var a,b,c=this.fillCommon(\"M\"),d=-1!==this.options.template.indexOf(\"MMMM\"),e=-1!==this.options.template.indexOf(\"MMM\"),f=-1!==this.options.template.indexOf(\"MM\");for(b=0;11>=b;b++)a=d?moment().date(1).month(b).format(\"MMMM\"):e?moment().date(1).month(b).format(\"MMM\"):f?this.leadZero(b+1):b+1,c.push([b,a]);return c},fillYear:function(){var a,b,c=[],d=-1!==this.options.template.indexOf(\"YYYY\");for(b=this.options.maxYear;b>=this.options.minYear;b--)a=d?b:(b+\"\").substring(2),c[this.options.yearDescending?\"push\":\"unshift\"]([b,a]);return c=this.fillCommon(\"y\").concat(c)},fillHour:function(){var a,b,c=this.fillCommon(\"h\"),d=-1!==this.options.template.indexOf(\"h\"),e=(-1!==this.options.template.indexOf(\"H\"),-1!==this.options.template.toLowerCase().indexOf(\"hh\")),f=d?1:0,g=d?12:23;for(b=f;g>=b;b++)a=e?this.leadZero(b):b,c.push([b,a]);return c},fillMinute:function(){var a,b,c=this.fillCommon(\"m\"),d=-1!==this.options.template.indexOf(\"mm\");for(b=0;59>=b;b+=this.options.minuteStep)a=d?this.leadZero(b):b,c.push([b,a]);return c},fillSecond:function(){var a,b,c=this.fillCommon(\"s\"),d=-1!==this.options.template.indexOf(\"ss\");for(b=0;59>=b;b+=this.options.secondStep)a=d?this.leadZero(b):b,c.push([b,a]);return c},fillAmpm:function(){var a=-1!==this.options.template.indexOf(\"a\"),b=(-1!==this.options.template.indexOf(\"A\"),[[\"am\",a?\"am\":\"AM\"],[\"pm\",a?\"pm\":\"PM\"]]);return b},getValue:function(b){var c,d={},e=this,f=!1;return a.each(this.map,function(a){if(\"ampm\"!==a){var b=\"day\"===a?1:0;return d[a]=e[\"$\"+a]?parseInt(e[\"$\"+a].val(),10):b,isNaN(d[a])?(f=!0,!1):void 0}}),f?\"\":(this.$ampm&&(d.hour=12===d.hour?\"am\"===this.$ampm.val()?0:12:\"am\"===this.$ampm.val()?d.hour:d.hour+12),c=moment([d.year,d.month,d.day,d.hour,d.minute,d.second]),this.highlight(c),b=void 0===b?this.options.format:b,null===b?c.isValid()?c:null:c.isValid()?c.format(b):\"\")},setValue:function(b){function c(b,c){var d={};return b.children(\"option\").each(function(b,e){var f,g=a(e).attr(\"value\");\"\"!==g&&(f=Math.abs(g-c),(\"undefined\"==typeof d.distance||f<d.distance)&&(d={value:g,distance:f}))}),d.value}if(b){var d=\"string\"==typeof b?moment(b,this.options.format):moment(b),e=this,f={};d.isValid()&&(a.each(this.map,function(a,b){\"ampm\"!==a&&(f[a]=d[b[1]]())}),this.$ampm&&(f.hour>=12?(f.ampm=\"pm\",f.hour>12&&(f.hour-=12)):(f.ampm=\"am\",0===f.hour&&(f.hour=12))),a.each(f,function(a,b){e[\"$\"+a]&&(\"minute\"===a&&e.options.minuteStep>1&&e.options.roundTime&&(b=c(e[\"$\"+a],b)),\"second\"===a&&e.options.secondStep>1&&e.options.roundTime&&(b=c(e[\"$\"+a],b)),e[\"$\"+a].val(b))}),this.options.smartDays&&this.fillCombo(\"day\"),this.$element.val(d.format(this.options.format)).change())}},highlight:function(a){a.isValid()?this.options.errorClass?this.$widget.removeClass(this.options.errorClass):this.$widget.find(\"select\").css(\"border-color\",this.borderColor):this.options.errorClass?this.$widget.addClass(this.options.errorClass):(this.borderColor||(this.borderColor=this.$widget.find(\"select\").css(\"border-color\")),this.$widget.find(\"select\").css(\"border-color\",\"red\"))},leadZero:function(a){return 9>=a?\"0\"+a:a},destroy:function(){this.$widget.remove(),this.$element.removeData(\"combodate\").show()}},a.fn.combodate=function(c){var d,e=Array.apply(null,arguments);return e.shift(),\"getValue\"===c&&this.length&&(d=this.eq(0).data(\"combodate\"))?d.getValue.apply(d,e):this.each(function(){var d=a(this),f=d.data(\"combodate\"),g=\"object\"==typeof c&&c;f||d.data(\"combodate\",f=new b(this,g)),\"string\"==typeof c&&\"function\"==typeof f[c]&&f[c].apply(f,e)})},a.fn.combodate.defaults={format:\"DD-MM-YYYY HH:mm\",template:\"D / MMM / YYYY   H : mm\",value:null,minYear:1970,maxYear:2015,yearDescending:!0,minuteStep:5,secondStep:1,firstItem:\"empty\",errorClass:null,roundTime:!0,smartDays:!1}}(window.jQuery),function(a){\"use strict\";var b=function(c){this.init(\"combodate\",c,b.defaults),this.options.viewformat||(this.options.viewformat=this.options.format),c.combodate=a.fn.editableutils.tryParseJson(c.combodate,!0),this.options.combodate=a.extend({},b.defaults.combodate,c.combodate,{format:this.options.format,template:this.options.template})};a.fn.editableutils.inherit(b,a.fn.editabletypes.abstractinput),a.extend(b.prototype,{render:function(){this.$input.combodate(this.options.combodate),\"bs3\"===a.fn.editableform.engine&&this.$input.siblings().find(\"select\").addClass(\"form-control\"),this.options.inputclass&&this.$input.siblings().find(\"select\").addClass(this.options.inputclass)},value2html:function(a,c){var d=a?a.format(this.options.viewformat):\"\";b.superclass.value2html.call(this,d,c)},html2value:function(a){return a?moment(a,this.options.viewformat):null},value2str:function(a){return a?a.format(this.options.format):\"\"},str2value:function(a){return a?moment(a,this.options.format):null},value2submit:function(a){return this.value2str(a)},value2input:function(a){this.$input.combodate(\"setValue\",a)},input2value:function(){return this.$input.combodate(\"getValue\",null)},activate:function(){this.$input.siblings(\".combodate\").find(\"select\").eq(0).focus()},autosubmit:function(){}}),b.defaults=a.extend({},a.fn.editabletypes.abstractinput.defaults,{tpl:'<input type=\"text\">',inputclass:null,format:\"YYYY-MM-DD\",viewformat:null,template:\"D / MMM / YYYY\",combodate:null}),a.fn.editabletypes.combodate=b}(window.jQuery),function(a){\"use strict\";var b=a.fn.editableform.Constructor.prototype.initInput;a.extend(a.fn.editableform.Constructor.prototype,{initTemplate:function(){this.$form=a(a.fn.editableform.template),this.$form.find(\".control-group\").addClass(\"form-group\"),this.$form.find(\".editable-error-block\").addClass(\"help-block\")},initInput:function(){b.apply(this);var c=null===this.input.options.inputclass||this.input.options.inputclass===!1,d=\"input-sm\",e=\"text,select,textarea,password,email,url,tel,number,range,time,typeaheadjs\".split(\",\");~a.inArray(this.input.type,e)&&(this.input.$input.addClass(\"form-control\"),c&&(this.input.options.inputclass=d,this.input.$input.addClass(d)));for(var f=this.$form.find(\".editable-buttons\"),g=c?[d]:this.input.options.inputclass.split(\" \"),h=0;h<g.length;h++)\"input-lg\"===g[h].toLowerCase()&&f.find(\"button\").removeClass(\"btn-sm\").addClass(\"btn-lg\")}}),a.fn.editableform.buttons='<button type=\"submit\" class=\"btn btn-primary btn-sm editable-submit\"><i class=\"glyphicon glyphicon-ok\"></i></button><button type=\"button\" class=\"btn btn-default btn-sm editable-cancel\"><i class=\"glyphicon glyphicon-remove\"></i></button>',a.fn.editableform.errorGroupClass=\"has-error\",a.fn.editableform.errorBlockClass=null,a.fn.editableform.engine=\"bs3\"}(window.jQuery),function(a){\"use strict\";a.extend(a.fn.editableContainer.Popup.prototype,{containerName:\"popover\",containerDataName:\"bs.popover\",innerCss:\".popover-content\",defaults:a.fn.popover.Constructor.DEFAULTS,initContainer:function(){a.extend(this.containerOptions,{trigger:\"manual\",selector:!1,content:\" \",template:this.defaults.template});var b;this.$element.data(\"template\")&&(b=this.$element.data(\"template\"),this.$element.removeData(\"template\")),this.call(this.containerOptions),b&&this.$element.data(\"template\",b)},innerShow:function(){this.call(\"show\")},innerHide:function(){this.call(\"hide\")},innerDestroy:function(){this.call(\"destroy\")},setContainerOption:function(a,b){this.container().options[a]=b},setPosition:function(){!function(){var a=this.tip(),b=\"function\"==typeof this.options.placement?this.options.placement.call(this,a[0],this.$element[0]):this.options.placement,c=/\\s?auto?\\s?/i,d=c.test(b);d&&(b=b.replace(c,\"\")||\"top\");var e=this.getPosition(),f=a[0].offsetWidth,g=a[0].offsetHeight;if(d){var h=this.$element.parent(),i=b,j=document.documentElement.scrollTop||document.body.scrollTop,k=\"body\"==this.options.container?window.innerWidth:h.outerWidth(),l=\"body\"==this.options.container?window.innerHeight:h.outerHeight(),m=\"body\"==this.options.container?0:h.offset().left;b=\"bottom\"==b&&e.top+e.height+g-j>l?\"top\":\"top\"==b&&e.top-j-g<0?\"bottom\":\"right\"==b&&e.right+f>k?\"left\":\"left\"==b&&e.left-f<m?\"right\":b,a.removeClass(i).addClass(b)}var n=this.getCalculatedOffset(b,e,f,g);this.applyPlacement(n,b)}.call(this.container())}})}(window.jQuery),function(a){function b(){return new Date(Date.UTC.apply(Date,arguments))}function c(b,c){var d,e=a(b).data(),f={},g=new RegExp(\"^\"+c.toLowerCase()+\"([A-Z])\"),c=new RegExp(\"^\"+c.toLowerCase());for(var h in e)c.test(h)&&(d=h.replace(g,function(a,b){return b.toLowerCase()}),f[d]=e[h]);return f}function d(b){var c={};if(k[b]||(b=b.split(\"-\")[0],k[b])){var d=k[b];return a.each(j,function(a,b){b in d&&(c[b]=d[b])}),c}}var e=function(b,c){this._process_options(c),this.element=a(b),this.isInline=!1,this.isInput=this.element.is(\"input\"),this.component=this.element.is(\".date\")?this.element.find(\".add-on, .btn\"):!1,this.hasInput=this.component&&this.element.find(\"input\").length,this.component&&0===this.component.length&&(this.component=!1),this.picker=a(l.template),this._buildEvents(),this._attachEvents(),this.isInline?this.picker.addClass(\"datepicker-inline\").appendTo(this.element):this.picker.addClass(\"datepicker-dropdown dropdown-menu\"),this.o.rtl&&(this.picker.addClass(\"datepicker-rtl\"),this.picker.find(\".prev i, .next i\").toggleClass(\"icon-arrow-left icon-arrow-right\")),this.viewMode=this.o.startView,this.o.calendarWeeks&&this.picker.find(\"tfoot th.today\").attr(\"colspan\",function(a,b){return parseInt(b)+1}),this._allow_update=!1,this.setStartDate(this.o.startDate),this.setEndDate(this.o.endDate),this.setDaysOfWeekDisabled(this.o.daysOfWeekDisabled),this.fillDow(),this.fillMonths(),this._allow_update=!0,this.update(),this.showMode(),this.isInline&&this.show()};e.prototype={constructor:e,_process_options:function(b){this._o=a.extend({},this._o,b);var c=this.o=a.extend({},this._o),d=c.language;switch(k[d]||(d=d.split(\"-\")[0],k[d]||(d=i.language)),c.language=d,c.startView){case 2:case\"decade\":c.startView=2;break;case 1:case\"year\":c.startView=1;break;default:c.startView=0}switch(c.minViewMode){case 1:case\"months\":c.minViewMode=1;break;case 2:case\"years\":c.minViewMode=2;break;default:c.minViewMode=0}c.startView=Math.max(c.startView,c.minViewMode),c.weekStart%=7,c.weekEnd=(c.weekStart+6)%7;var e=l.parseFormat(c.format);c.startDate!==-1/0&&(c.startDate=l.parseDate(c.startDate,e,c.language)),1/0!==c.endDate&&(c.endDate=l.parseDate(c.endDate,e,c.language)),c.daysOfWeekDisabled=c.daysOfWeekDisabled||[],a.isArray(c.daysOfWeekDisabled)||(c.daysOfWeekDisabled=c.daysOfWeekDisabled.split(/[,\\s]*/)),c.daysOfWeekDisabled=a.map(c.daysOfWeekDisabled,function(a){return parseInt(a,10)})},_events:[],_secondaryEvents:[],_applyEvents:function(a){for(var b,c,d=0;d<a.length;d++)b=a[d][0],c=a[d][1],b.on(c)},_unapplyEvents:function(a){for(var b,c,d=0;d<a.length;d++)b=a[d][0],c=a[d][1],b.off(c)},_buildEvents:function(){this.isInput?this._events=[[this.element,{focus:a.proxy(this.show,this),keyup:a.proxy(this.update,this),keydown:a.proxy(this.keydown,this)}]]:this.component&&this.hasInput?this._events=[[this.element.find(\"input\"),{focus:a.proxy(this.show,this),keyup:a.proxy(this.update,this),keydown:a.proxy(this.keydown,this)}],[this.component,{click:a.proxy(this.show,this)}]]:this.element.is(\"div\")?this.isInline=!0:this._events=[[this.element,{click:a.proxy(this.show,this)}]],this._secondaryEvents=[[this.picker,{click:a.proxy(this.click,this)}],[a(window),{resize:a.proxy(this.place,this)}],[a(document),{mousedown:a.proxy(function(a){this.element.is(a.target)||this.element.find(a.target).size()||this.picker.is(a.target)||this.picker.find(a.target).size()||this.hide()},this)}]]},_attachEvents:function(){this._detachEvents(),this._applyEvents(this._events)},_detachEvents:function(){this._unapplyEvents(this._events)},_attachSecondaryEvents:function(){this._detachSecondaryEvents(),this._applyEvents(this._secondaryEvents)},_detachSecondaryEvents:function(){this._unapplyEvents(this._secondaryEvents)},_trigger:function(b,c){var d=c||this.date,e=new Date(d.getTime()+6e4*d.getTimezoneOffset());this.element.trigger({type:b,date:e,format:a.proxy(function(a){var b=a||this.o.format;return l.formatDate(d,b,this.o.language)},this)})},show:function(a){this.isInline||this.picker.appendTo(\"body\"),this.picker.show(),this.height=this.component?this.component.outerHeight():this.element.outerHeight(),this.place(),this._attachSecondaryEvents(),a&&a.preventDefault(),this._trigger(\"show\")},hide:function(){this.isInline||this.picker.is(\":visible\")&&(this.picker.hide().detach(),this._detachSecondaryEvents(),this.viewMode=this.o.startView,this.showMode(),this.o.forceParse&&(this.isInput&&this.element.val()||this.hasInput&&this.element.find(\"input\").val())&&this.setValue(),this._trigger(\"hide\"))},remove:function(){this.hide(),this._detachEvents(),this._detachSecondaryEvents(),this.picker.remove(),delete this.element.data().datepicker,this.isInput||delete this.element.data().date},getDate:function(){var a=this.getUTCDate();return new Date(a.getTime()+6e4*a.getTimezoneOffset())},getUTCDate:function(){return this.date},setDate:function(a){this.setUTCDate(new Date(a.getTime()-6e4*a.getTimezoneOffset()))},setUTCDate:function(a){this.date=a,this.setValue()},setValue:function(){var a=this.getFormattedDate();this.isInput?this.element.val(a):this.component&&this.element.find(\"input\").val(a)},getFormattedDate:function(a){return void 0===a&&(a=this.o.format),l.formatDate(this.date,a,this.o.language)},setStartDate:function(a){this._process_options({startDate:a}),this.update(),this.updateNavArrows()},setEndDate:function(a){this._process_options({endDate:a}),this.update(),this.updateNavArrows()},setDaysOfWeekDisabled:function(a){this._process_options({daysOfWeekDisabled:a}),this.update(),this.updateNavArrows()},place:function(){if(!this.isInline){var b=parseInt(this.element.parents().filter(function(){return\"auto\"!=a(this).css(\"z-index\")}).first().css(\"z-index\"))+10,c=this.component?this.component.parent().offset():this.element.offset(),d=this.component?this.component.outerHeight(!0):this.element.outerHeight(!0);this.picker.css({top:c.top+d,left:c.left,zIndex:b})}},_allow_update:!0,update:function(){if(this._allow_update){var a,b=!1;arguments&&arguments.length&&(\"string\"==typeof arguments[0]||arguments[0]instanceof Date)?(a=arguments[0],b=!0):(a=this.isInput?this.element.val():this.element.data(\"date\")||this.element.find(\"input\").val(),delete this.element.data().date),this.date=l.parseDate(a,this.o.format,this.o.language),b&&this.setValue(),this.viewDate=this.date<this.o.startDate?new Date(this.o.startDate):this.date>this.o.endDate?new Date(this.o.endDate):new Date(this.date),this.fill()}},fillDow:function(){var a=this.o.weekStart,b=\"<tr>\";if(this.o.calendarWeeks){var c='<th class=\"cw\">&nbsp;</th>';b+=c,this.picker.find(\".datepicker-days thead tr:first-child\").prepend(c)}for(;a<this.o.weekStart+7;)b+='<th class=\"dow\">'+k[this.o.language].daysMin[a++%7]+\"</th>\";b+=\"</tr>\",this.picker.find(\".datepicker-days thead\").append(b)},fillMonths:function(){for(var a=\"\",b=0;12>b;)a+='<span class=\"month\">'+k[this.o.language].monthsShort[b++]+\"</span>\";this.picker.find(\".datepicker-months td\").html(a)},setRange:function(b){b&&b.length?this.range=a.map(b,function(a){return a.valueOf()}):delete this.range,this.fill()},getClassNames:function(b){var c=[],d=this.viewDate.getUTCFullYear(),e=this.viewDate.getUTCMonth(),f=this.date.valueOf(),g=new Date;return b.getUTCFullYear()<d||b.getUTCFullYear()==d&&b.getUTCMonth()<e?c.push(\"old\"):(b.getUTCFullYear()>d||b.getUTCFullYear()==d&&b.getUTCMonth()>e)&&c.push(\"new\"),this.o.todayHighlight&&b.getUTCFullYear()==g.getFullYear()&&b.getUTCMonth()==g.getMonth()&&b.getUTCDate()==g.getDate()&&c.push(\"today\"),f&&b.valueOf()==f&&c.push(\"active\"),(b.valueOf()<this.o.startDate||b.valueOf()>this.o.endDate||-1!==a.inArray(b.getUTCDay(),this.o.daysOfWeekDisabled))&&c.push(\"disabled\"),this.range&&(b>this.range[0]&&b<this.range[this.range.length-1]&&c.push(\"range\"),-1!=a.inArray(b.valueOf(),this.range)&&c.push(\"selected\")),c},fill:function(){var c,d=new Date(this.viewDate),e=d.getUTCFullYear(),f=d.getUTCMonth(),g=this.o.startDate!==-1/0?this.o.startDate.getUTCFullYear():-1/0,h=this.o.startDate!==-1/0?this.o.startDate.getUTCMonth():-1/0,i=1/0!==this.o.endDate?this.o.endDate.getUTCFullYear():1/0,j=1/0!==this.o.endDate?this.o.endDate.getUTCMonth():1/0;this.date&&this.date.valueOf(),this.picker.find(\".datepicker-days thead th.datepicker-switch\").text(k[this.o.language].months[f]+\" \"+e),this.picker.find(\"tfoot th.today\").text(k[this.o.language].today).toggle(this.o.todayBtn!==!1),this.picker.find(\"tfoot th.clear\").text(k[this.o.language].clear).toggle(this.o.clearBtn!==!1),this.updateNavArrows(),this.fillMonths();var m=b(e,f-1,28,0,0,0,0),n=l.getDaysInMonth(m.getUTCFullYear(),m.getUTCMonth());m.setUTCDate(n),m.setUTCDate(n-(m.getUTCDay()-this.o.weekStart+7)%7);var o=new Date(m);o.setUTCDate(o.getUTCDate()+42),o=o.valueOf();for(var p,q=[];m.valueOf()<o;){if(m.getUTCDay()==this.o.weekStart&&(q.push(\"<tr>\"),this.o.calendarWeeks)){var r=new Date(+m+864e5*((this.o.weekStart-m.getUTCDay()-7)%7)),s=new Date(+r+864e5*((11-r.getUTCDay())%7)),t=new Date(+(t=b(s.getUTCFullYear(),0,1))+864e5*((11-t.getUTCDay())%7)),u=(s-t)/864e5/7+1;q.push('<td class=\"cw\">'+u+\"</td>\")}p=this.getClassNames(m),p.push(\"day\");var v=this.o.beforeShowDay(m);void 0===v?v={}:\"boolean\"==typeof v?v={enabled:v}:\"string\"==typeof v&&(v={classes:v}),v.enabled===!1&&p.push(\"disabled\"),v.classes&&(p=p.concat(v.classes.split(/\\s+/))),v.tooltip&&(c=v.tooltip),p=a.unique(p),q.push('<td class=\"'+p.join(\" \")+'\"'+(c?' title=\"'+c+'\"':\"\")+\">\"+m.getUTCDate()+\"</td>\"),m.getUTCDay()==this.o.weekEnd&&q.push(\"</tr>\"),m.setUTCDate(m.getUTCDate()+1)}this.picker.find(\".datepicker-days tbody\").empty().append(q.join(\"\"));var w=this.date&&this.date.getUTCFullYear(),x=this.picker.find(\".datepicker-months\").find(\"th:eq(1)\").text(e).end().find(\"span\").removeClass(\"active\");w&&w==e&&x.eq(this.date.getUTCMonth()).addClass(\"active\"),(g>e||e>i)&&x.addClass(\"disabled\"),e==g&&x.slice(0,h).addClass(\"disabled\"),e==i&&x.slice(j+1).addClass(\"disabled\"),q=\"\",e=10*parseInt(e/10,10);var y=this.picker.find(\".datepicker-years\").find(\"th:eq(1)\").text(e+\"-\"+(e+9)).end().find(\"td\");e-=1;for(var z=-1;11>z;z++)q+='<span class=\"year'+(-1==z?\" old\":10==z?\" new\":\"\")+(w==e?\" active\":\"\")+(g>e||e>i?\" disabled\":\"\")+'\">'+e+\"</span>\",e+=1;y.html(q)},updateNavArrows:function(){if(this._allow_update){var a=new Date(this.viewDate),b=a.getUTCFullYear(),c=a.getUTCMonth();switch(this.viewMode){case 0:this.o.startDate!==-1/0&&b<=this.o.startDate.getUTCFullYear()&&c<=this.o.startDate.getUTCMonth()?this.picker.find(\".prev\").css({visibility:\"hidden\"}):this.picker.find(\".prev\").css({visibility:\"visible\"}),1/0!==this.o.endDate&&b>=this.o.endDate.getUTCFullYear()&&c>=this.o.endDate.getUTCMonth()?this.picker.find(\".next\").css({visibility:\"hidden\"}):this.picker.find(\".next\").css({visibility:\"visible\"});break;case 1:case 2:this.o.startDate!==-1/0&&b<=this.o.startDate.getUTCFullYear()?this.picker.find(\".prev\").css({visibility:\"hidden\"}):this.picker.find(\".prev\").css({visibility:\"visible\"}),1/0!==this.o.endDate&&b>=this.o.endDate.getUTCFullYear()?this.picker.find(\".next\").css({visibility:\"hidden\"}):this.picker.find(\".next\").css({visibility:\"visible\"})}}},click:function(c){c.preventDefault();var d=a(c.target).closest(\"span, td, th\");if(1==d.length)switch(d[0].nodeName.toLowerCase()){case\"th\":switch(d[0].className){case\"datepicker-switch\":this.showMode(1);break;case\"prev\":case\"next\":var e=l.modes[this.viewMode].navStep*(\"prev\"==d[0].className?-1:1);switch(this.viewMode){case 0:this.viewDate=this.moveMonth(this.viewDate,e);break;case 1:case 2:this.viewDate=this.moveYear(this.viewDate,e)}this.fill();break;case\"today\":var f=new Date;f=b(f.getFullYear(),f.getMonth(),f.getDate(),0,0,0),this.showMode(-2);var g=\"linked\"==this.o.todayBtn?null:\"view\";this._setDate(f,g);break;case\"clear\":var h;this.isInput?h=this.element:this.component&&(h=this.element.find(\"input\")),h&&h.val(\"\").change(),this._trigger(\"changeDate\"),this.update(),this.o.autoclose&&this.hide()}break;case\"span\":if(!d.is(\".disabled\")){if(this.viewDate.setUTCDate(1),d.is(\".month\")){var i=1,j=d.parent().find(\"span\").index(d),k=this.viewDate.getUTCFullYear();this.viewDate.setUTCMonth(j),this._trigger(\"changeMonth\",this.viewDate),1===this.o.minViewMode&&this._setDate(b(k,j,i,0,0,0,0))}else{var k=parseInt(d.text(),10)||0,i=1,j=0;this.viewDate.setUTCFullYear(k),this._trigger(\"changeYear\",this.viewDate),2===this.o.minViewMode&&this._setDate(b(k,j,i,0,0,0,0))}this.showMode(-1),this.fill()}break;case\"td\":if(d.is(\".day\")&&!d.is(\".disabled\")){var i=parseInt(d.text(),10)||1,k=this.viewDate.getUTCFullYear(),j=this.viewDate.getUTCMonth();d.is(\".old\")?0===j?(j=11,k-=1):j-=1:d.is(\".new\")&&(11==j?(j=0,k+=1):j+=1),this._setDate(b(k,j,i,0,0,0,0))}}},_setDate:function(a,b){b&&\"date\"!=b||(this.date=new Date(a)),b&&\"view\"!=b||(this.viewDate=new Date(a)),this.fill(),this.setValue(),this._trigger(\"changeDate\");var c;this.isInput?c=this.element:this.component&&(c=this.element.find(\"input\")),c&&(c.change(),!this.o.autoclose||b&&\"date\"!=b||this.hide())},moveMonth:function(a,b){if(!b)return a;var c,d,e=new Date(a.valueOf()),f=e.getUTCDate(),g=e.getUTCMonth(),h=Math.abs(b);if(b=b>0?1:-1,1==h)d=-1==b?function(){return e.getUTCMonth()==g}:function(){return e.getUTCMonth()!=c},c=g+b,e.setUTCMonth(c),(0>c||c>11)&&(c=(c+12)%12);else{for(var i=0;h>i;i++)e=this.moveMonth(e,b);c=e.getUTCMonth(),e.setUTCDate(f),d=function(){return c!=e.getUTCMonth()}}for(;d();)e.setUTCDate(--f),e.setUTCMonth(c);return e},moveYear:function(a,b){return this.moveMonth(a,12*b)},dateWithinRange:function(a){return a>=this.o.startDate&&a<=this.o.endDate},keydown:function(a){if(this.picker.is(\":not(:visible)\"))return 27==a.keyCode&&this.show(),void 0;var b,c,d,e=!1;switch(a.keyCode){case 27:this.hide(),a.preventDefault();break;case 37:case 39:if(!this.o.keyboardNavigation)break;b=37==a.keyCode?-1:1,a.ctrlKey?(c=this.moveYear(this.date,b),d=this.moveYear(this.viewDate,b)):a.shiftKey?(c=this.moveMonth(this.date,b),d=this.moveMonth(this.viewDate,b)):(c=new Date(this.date),c.setUTCDate(this.date.getUTCDate()+b),d=new Date(this.viewDate),d.setUTCDate(this.viewDate.getUTCDate()+b)),this.dateWithinRange(c)&&(this.date=c,this.viewDate=d,this.setValue(),this.update(),a.preventDefault(),e=!0);break;case 38:case 40:if(!this.o.keyboardNavigation)break;b=38==a.keyCode?-1:1,a.ctrlKey?(c=this.moveYear(this.date,b),d=this.moveYear(this.viewDate,b)):a.shiftKey?(c=this.moveMonth(this.date,b),d=this.moveMonth(this.viewDate,b)):(c=new Date(this.date),c.setUTCDate(this.date.getUTCDate()+7*b),d=new Date(this.viewDate),d.setUTCDate(this.viewDate.getUTCDate()+7*b)),this.dateWithinRange(c)&&(this.date=c,this.viewDate=d,this.setValue(),this.update(),a.preventDefault(),e=!0);break;case 13:this.hide(),a.preventDefault();break;case 9:this.hide()}if(e){this._trigger(\"changeDate\");var f;this.isInput?f=this.element:this.component&&(f=this.element.find(\"input\")),f&&f.change()}},showMode:function(a){a&&(this.viewMode=Math.max(this.o.minViewMode,Math.min(2,this.viewMode+a))),this.picker.find(\">div\").hide().filter(\".datepicker-\"+l.modes[this.viewMode].clsName).css(\"display\",\"block\"),this.updateNavArrows()}};var f=function(b,c){this.element=a(b),this.inputs=a.map(c.inputs,function(a){return a.jquery?a[0]:a}),delete c.inputs,a(this.inputs).datepicker(c).bind(\"changeDate\",a.proxy(this.dateUpdated,this)),this.pickers=a.map(this.inputs,function(b){return a(b).data(\"datepicker\")}),this.updateDates()};f.prototype={updateDates:function(){this.dates=a.map(this.pickers,function(a){return a.date}),this.updateRanges()},updateRanges:function(){var b=a.map(this.dates,function(a){return a.valueOf()});a.each(this.pickers,function(a,c){c.setRange(b)})},dateUpdated:function(b){var c=a(b.target).data(\"datepicker\"),d=c.getUTCDate(),e=a.inArray(b.target,this.inputs),f=this.inputs.length;if(-1!=e){if(d<this.dates[e])for(;e>=0&&d<this.dates[e];)this.pickers[e--].setUTCDate(d);else if(d>this.dates[e])for(;f>e&&d>this.dates[e];)this.pickers[e++].setUTCDate(d);this.updateDates()}},remove:function(){a.map(this.pickers,function(a){a.remove()}),delete this.element.data().datepicker}};var g=a.fn.datepicker,h=a.fn.datepicker=function(b){var g=Array.apply(null,arguments);g.shift();var h;return this.each(function(){var j=a(this),k=j.data(\"datepicker\"),l=\"object\"==typeof b&&b;if(!k){var m=c(this,\"date\"),n=a.extend({},i,m,l),o=d(n.language),p=a.extend({},i,o,m,l);if(j.is(\".input-daterange\")||p.inputs){var q={inputs:p.inputs||j.find(\"input\").toArray()};j.data(\"datepicker\",k=new f(this,a.extend(p,q)))}else j.data(\"datepicker\",k=new e(this,p))}return\"string\"==typeof b&&\"function\"==typeof k[b]&&(h=k[b].apply(k,g),void 0!==h)?!1:void 0}),void 0!==h?h:this},i=a.fn.datepicker.defaults={autoclose:!1,beforeShowDay:a.noop,calendarWeeks:!1,clearBtn:!1,daysOfWeekDisabled:[],endDate:1/0,forceParse:!0,format:\"mm/dd/yyyy\",keyboardNavigation:!0,language:\"en\",minViewMode:0,rtl:!1,startDate:-1/0,startView:0,todayBtn:!1,todayHighlight:!1,weekStart:0},j=a.fn.datepicker.locale_opts=[\"format\",\"rtl\",\"weekStart\"];a.fn.datepicker.Constructor=e;var k=a.fn.datepicker.dates={en:{days:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\",\"Sunday\"],daysShort:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\",\"Sun\"],daysMin:[\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\",\"Su\"],months:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],monthsShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],today:\"Today\",clear:\"Clear\"}},l={modes:[{clsName:\"days\",navFnc:\"Month\",navStep:1},{clsName:\"months\",navFnc:\"FullYear\",navStep:1},{clsName:\"years\",navFnc:\"FullYear\",navStep:10}],isLeapYear:function(a){return 0===a%4&&0!==a%100||0===a%400\n},getDaysInMonth:function(a,b){return[31,l.isLeapYear(a)?29:28,31,30,31,30,31,31,30,31,30,31][b]},validParts:/dd?|DD?|mm?|MM?|yy(?:yy)?/g,nonpunctuation:/[^ -\\/:-@\\[\\u3400-\\u9fff-`{-~\\t\\n\\r]+/g,parseFormat:function(a){var b=a.replace(this.validParts,\"\\0\").split(\"\\0\"),c=a.match(this.validParts);if(!b||!b.length||!c||0===c.length)throw new Error(\"Invalid date format.\");return{separators:b,parts:c}},parseDate:function(c,d,f){if(c instanceof Date)return c;if(\"string\"==typeof d&&(d=l.parseFormat(d)),/^[\\-+]\\d+[dmwy]([\\s,]+[\\-+]\\d+[dmwy])*$/.test(c)){var g,h,i=/([\\-+]\\d+)([dmwy])/,j=c.match(/([\\-+]\\d+)([dmwy])/g);c=new Date;for(var m=0;m<j.length;m++)switch(g=i.exec(j[m]),h=parseInt(g[1]),g[2]){case\"d\":c.setUTCDate(c.getUTCDate()+h);break;case\"m\":c=e.prototype.moveMonth.call(e.prototype,c,h);break;case\"w\":c.setUTCDate(c.getUTCDate()+7*h);break;case\"y\":c=e.prototype.moveYear.call(e.prototype,c,h)}return b(c.getUTCFullYear(),c.getUTCMonth(),c.getUTCDate(),0,0,0)}var n,o,g,j=c&&c.match(this.nonpunctuation)||[],c=new Date,p={},q=[\"yyyy\",\"yy\",\"M\",\"MM\",\"m\",\"mm\",\"d\",\"dd\"],r={yyyy:function(a,b){return a.setUTCFullYear(b)},yy:function(a,b){return a.setUTCFullYear(2e3+b)},m:function(a,b){for(b-=1;0>b;)b+=12;for(b%=12,a.setUTCMonth(b);a.getUTCMonth()!=b;)a.setUTCDate(a.getUTCDate()-1);return a},d:function(a,b){return a.setUTCDate(b)}};r.M=r.MM=r.mm=r.m,r.dd=r.d,c=b(c.getFullYear(),c.getMonth(),c.getDate(),0,0,0);var s=d.parts.slice();if(j.length!=s.length&&(s=a(s).filter(function(b,c){return-1!==a.inArray(c,q)}).toArray()),j.length==s.length){for(var m=0,t=s.length;t>m;m++){if(n=parseInt(j[m],10),g=s[m],isNaN(n))switch(g){case\"MM\":o=a(k[f].months).filter(function(){var a=this.slice(0,j[m].length),b=j[m].slice(0,a.length);return a==b}),n=a.inArray(o[0],k[f].months)+1;break;case\"M\":o=a(k[f].monthsShort).filter(function(){var a=this.slice(0,j[m].length),b=j[m].slice(0,a.length);return a==b}),n=a.inArray(o[0],k[f].monthsShort)+1}p[g]=n}for(var u,m=0;m<q.length;m++)u=q[m],u in p&&!isNaN(p[u])&&r[u](c,p[u])}return c},formatDate:function(b,c,d){\"string\"==typeof c&&(c=l.parseFormat(c));var e={d:b.getUTCDate(),D:k[d].daysShort[b.getUTCDay()],DD:k[d].days[b.getUTCDay()],m:b.getUTCMonth()+1,M:k[d].monthsShort[b.getUTCMonth()],MM:k[d].months[b.getUTCMonth()],yy:b.getUTCFullYear().toString().substring(2),yyyy:b.getUTCFullYear()};e.dd=(e.d<10?\"0\":\"\")+e.d,e.mm=(e.m<10?\"0\":\"\")+e.m;for(var b=[],f=a.extend([],c.separators),g=0,h=c.parts.length;h>=g;g++)f.length&&b.push(f.shift()),b.push(e[c.parts[g]]);return b.join(\"\")},headTemplate:'<thead><tr><th class=\"prev\"><i class=\"icon-arrow-left\"/></th><th colspan=\"5\" class=\"datepicker-switch\"></th><th class=\"next\"><i class=\"icon-arrow-right\"/></th></tr></thead>',contTemplate:'<tbody><tr><td colspan=\"7\"></td></tr></tbody>',footTemplate:'<tfoot><tr><th colspan=\"7\" class=\"today\"></th></tr><tr><th colspan=\"7\" class=\"clear\"></th></tr></tfoot>'};l.template='<div class=\"datepicker\"><div class=\"datepicker-days\"><table class=\" table-condensed\">'+l.headTemplate+\"<tbody></tbody>\"+l.footTemplate+\"</table>\"+\"</div>\"+'<div class=\"datepicker-months\">'+'<table class=\"table-condensed\">'+l.headTemplate+l.contTemplate+l.footTemplate+\"</table>\"+\"</div>\"+'<div class=\"datepicker-years\">'+'<table class=\"table-condensed\">'+l.headTemplate+l.contTemplate+l.footTemplate+\"</table>\"+\"</div>\"+\"</div>\",a.fn.datepicker.DPGlobal=l,a.fn.datepicker.noConflict=function(){return a.fn.datepicker=g,this},a(document).on(\"focus.datepicker.data-api click.datepicker.data-api\",'[data-provide=\"datepicker\"]',function(b){var c=a(this);c.data(\"datepicker\")||(b.preventDefault(),h.call(c,\"show\"))}),a(function(){h.call(a('[data-provide=\"datepicker-inline\"]'))})}(window.jQuery),function(a){\"use strict\";a.fn.bdatepicker=a.fn.datepicker.noConflict(),a.fn.datepicker||(a.fn.datepicker=a.fn.bdatepicker);var b=function(a){this.init(\"date\",a,b.defaults),this.initPicker(a,b.defaults)};a.fn.editableutils.inherit(b,a.fn.editabletypes.abstractinput),a.extend(b.prototype,{initPicker:function(b,c){this.options.viewformat||(this.options.viewformat=this.options.format),b.datepicker=a.fn.editableutils.tryParseJson(b.datepicker,!0),this.options.datepicker=a.extend({},c.datepicker,b.datepicker,{format:this.options.viewformat}),this.options.datepicker.language=this.options.datepicker.language||\"en\",this.dpg=a.fn.bdatepicker.DPGlobal,this.parsedFormat=this.dpg.parseFormat(this.options.format),this.parsedViewFormat=this.dpg.parseFormat(this.options.viewformat)},render:function(){this.$input.bdatepicker(this.options.datepicker),this.options.clear&&(this.$clear=a('<a href=\"#\"></a>').html(this.options.clear).click(a.proxy(function(a){a.preventDefault(),a.stopPropagation(),this.clear()},this)),this.$tpl.parent().append(a('<div class=\"editable-clear\">').append(this.$clear)))},value2html:function(a,c){var d=a?this.dpg.formatDate(a,this.parsedViewFormat,this.options.datepicker.language):\"\";b.superclass.value2html.call(this,d,c)},html2value:function(a){return this.parseDate(a,this.parsedViewFormat)},value2str:function(a){return a?this.dpg.formatDate(a,this.parsedFormat,this.options.datepicker.language):\"\"},str2value:function(a){return this.parseDate(a,this.parsedFormat)},value2submit:function(a){return this.value2str(a)},value2input:function(a){this.$input.bdatepicker(\"update\",a)},input2value:function(){return this.$input.data(\"datepicker\").date},activate:function(){},clear:function(){this.$input.data(\"datepicker\").date=null,this.$input.find(\".active\").removeClass(\"active\"),this.options.showbuttons||this.$input.closest(\"form\").submit()},autosubmit:function(){this.$input.on(\"mouseup\",\".day\",function(b){if(!a(b.currentTarget).is(\".old\")&&!a(b.currentTarget).is(\".new\")){var c=a(this).closest(\"form\");setTimeout(function(){c.submit()},200)}})},parseDate:function(a,b){var c,d=null;return a&&(d=this.dpg.parseDate(a,b,this.options.datepicker.language),\"string\"==typeof a&&(c=this.dpg.formatDate(d,b,this.options.datepicker.language),a!==c&&(d=null))),d}}),b.defaults=a.extend({},a.fn.editabletypes.abstractinput.defaults,{tpl:'<div class=\"editable-date well\"></div>',inputclass:null,format:\"yyyy-mm-dd\",viewformat:null,datepicker:{weekStart:0,startView:0,minViewMode:0,autoclose:!1},clear:\"&times; clear\"}),a.fn.editabletypes.date=b}(window.jQuery),function(a){\"use strict\";var b=function(a){this.init(\"datefield\",a,b.defaults),this.initPicker(a,b.defaults)};a.fn.editableutils.inherit(b,a.fn.editabletypes.date),a.extend(b.prototype,{render:function(){this.$input=this.$tpl.find(\"input\"),this.setClass(),this.setAttr(\"placeholder\"),this.$tpl.bdatepicker(this.options.datepicker),this.$input.off(\"focus keydown\"),this.$input.keyup(a.proxy(function(){this.$tpl.removeData(\"date\"),this.$tpl.bdatepicker(\"update\")},this))},value2input:function(a){this.$input.val(a?this.dpg.formatDate(a,this.parsedViewFormat,this.options.datepicker.language):\"\"),this.$tpl.bdatepicker(\"update\")},input2value:function(){return this.html2value(this.$input.val())},activate:function(){a.fn.editabletypes.text.prototype.activate.call(this)},autosubmit:function(){}}),b.defaults=a.extend({},a.fn.editabletypes.date.defaults,{tpl:'<div class=\"input-append date\"><input type=\"text\"/><span class=\"add-on\"><i class=\"icon-th\"></i></span></div>',inputclass:\"input-small\",datepicker:{weekStart:0,startView:0,minViewMode:0,autoclose:!0}}),a.fn.editabletypes.datefield=b}(window.jQuery),function(a){\"use strict\";var b=function(a){this.init(\"datetime\",a,b.defaults),this.initPicker(a,b.defaults)};a.fn.editableutils.inherit(b,a.fn.editabletypes.abstractinput),a.extend(b.prototype,{initPicker:function(b,c){this.options.viewformat||(this.options.viewformat=this.options.format),b.datetimepicker=a.fn.editableutils.tryParseJson(b.datetimepicker,!0),this.options.datetimepicker=a.extend({},c.datetimepicker,b.datetimepicker,{format:this.options.viewformat}),this.options.datetimepicker.language=this.options.datetimepicker.language||\"en\",this.dpg=a.fn.datetimepicker.DPGlobal,this.parsedFormat=this.dpg.parseFormat(this.options.format,this.options.formatType),this.parsedViewFormat=this.dpg.parseFormat(this.options.viewformat,this.options.formatType)},render:function(){this.$input.datetimepicker(this.options.datetimepicker),this.$input.on(\"changeMode\",function(){var b=a(this).closest(\"form\").parent();setTimeout(function(){b.triggerHandler(\"resize\")},0)}),this.options.clear&&(this.$clear=a('<a href=\"#\"></a>').html(this.options.clear).click(a.proxy(function(a){a.preventDefault(),a.stopPropagation(),this.clear()},this)),this.$tpl.parent().append(a('<div class=\"editable-clear\">').append(this.$clear)))},value2html:function(a,c){var d=a?this.dpg.formatDate(this.toUTC(a),this.parsedViewFormat,this.options.datetimepicker.language,this.options.formatType):\"\";return c?(b.superclass.value2html.call(this,d,c),void 0):d},html2value:function(a){var b=this.parseDate(a,this.parsedViewFormat);return b?this.fromUTC(b):null},value2str:function(a){return a?this.dpg.formatDate(this.toUTC(a),this.parsedFormat,this.options.datetimepicker.language,this.options.formatType):\"\"},str2value:function(a){var b=this.parseDate(a,this.parsedFormat);return b?this.fromUTC(b):null},value2submit:function(a){return this.value2str(a)},value2input:function(a){a&&this.$input.data(\"datetimepicker\").setDate(a)},input2value:function(){var a=this.$input.data(\"datetimepicker\");return a.date?a.getDate():null},activate:function(){},clear:function(){this.$input.data(\"datetimepicker\").date=null,this.$input.find(\".active\").removeClass(\"active\"),this.options.showbuttons||this.$input.closest(\"form\").submit()},autosubmit:function(){this.$input.on(\"mouseup\",\".minute\",function(){var b=a(this).closest(\"form\");setTimeout(function(){b.submit()},200)})},toUTC:function(a){return a?new Date(a.valueOf()-6e4*a.getTimezoneOffset()):a},fromUTC:function(a){return a?new Date(a.valueOf()+6e4*a.getTimezoneOffset()):a},parseDate:function(a,b){var c,d=null;return a&&(d=this.dpg.parseDate(a,b,this.options.datetimepicker.language,this.options.formatType),\"string\"==typeof a&&(c=this.dpg.formatDate(d,b,this.options.datetimepicker.language,this.options.formatType),a!==c&&(d=null))),d}}),b.defaults=a.extend({},a.fn.editabletypes.abstractinput.defaults,{tpl:'<div class=\"editable-date well\"></div>',inputclass:null,format:\"yyyy-mm-dd hh:ii\",formatType:\"standard\",viewformat:null,datetimepicker:{todayHighlight:!1,autoclose:!1},clear:\"&times; clear\"}),a.fn.editabletypes.datetime=b}(window.jQuery),function(a){\"use strict\";var b=function(a){this.init(\"datetimefield\",a,b.defaults),this.initPicker(a,b.defaults)};a.fn.editableutils.inherit(b,a.fn.editabletypes.datetime),a.extend(b.prototype,{render:function(){this.$input=this.$tpl.find(\"input\"),this.setClass(),this.setAttr(\"placeholder\"),this.$tpl.datetimepicker(this.options.datetimepicker),this.$input.off(\"focus keydown\"),this.$input.keyup(a.proxy(function(){this.$tpl.removeData(\"date\"),this.$tpl.datetimepicker(\"update\")},this))},value2input:function(a){this.$input.val(this.value2html(a)),this.$tpl.datetimepicker(\"update\")},input2value:function(){return this.html2value(this.$input.val())},activate:function(){a.fn.editabletypes.text.prototype.activate.call(this)},autosubmit:function(){}}),b.defaults=a.extend({},a.fn.editabletypes.datetime.defaults,{tpl:'<div class=\"input-append date\"><input type=\"text\"/><span class=\"add-on\"><i class=\"icon-th\"></i></span></div>',inputclass:\"input-medium\",datetimepicker:{todayHighlight:!1,autoclose:!0}}),a.fn.editabletypes.datetimefield=b}(window.jQuery);"
  },
  {
    "path": "public/admin/js/c3-charts/c3-active.js",
    "content": "(function ($) {\n \"use strict\";\n  \n\n            c3.generate({\n                bindto: '#lineChart',\n                data:{\n                    columns: [\n                        ['data1', 30, 200, 100, 400, 150, 250],\n                        ['data2', 50, 20, 10, 40, 15, 25]\n                    ],\n                    colors:{\n                        data1: '#03a9f4',\n                        data2: '#303030'\n                    }\n                }\n            });\n\n            c3.generate({\n                bindto: '#slineChart',\n                data:{\n                    columns: [\n                        ['data1', 30, 200, 100, 400, 150, 250],\n                        ['data2', 130, 100, 140, 200, 150, 50]\n                    ],\n                    colors:{\n                        data1: '#03a9f4',\n                        data2: '#303030'\n                    },\n                    type: 'spline'\n                }\n            });\n\n            c3.generate({\n                bindto: '#scatter',\n                data:{\n                    xs:{\n                        data1: 'data1_x',\n                        data2: 'data2_x'\n                    },\n                    columns: [\n                        [\"data1_x\", 3.2, 3.2, 3.1, 2.3, 2.8, 2.8, 3.3, 2.4, 2.9, 2.7, 2.0, 3.0, 2.2, 2.9, 2.9, 3.1, 3.0, 2.7, 2.2, 2.5, 3.2, 2.8, 2.5, 2.8, 2.9, 3.0, 2.8, 3.0, 2.9, 2.6, 2.4, 2.4, 2.7, 2.7, 3.0, 3.4, 3.1, 2.3, 3.0, 2.5, 2.6, 3.0, 2.6, 2.3, 2.7, 3.0, 2.9, 2.9, 2.5, 2.8],\n                        [\"data2_x\", 3.3, 2.7, 3.0, 2.9, 3.0, 3.0, 2.5, 2.9, 2.5, 3.6, 3.2, 2.7, 3.0, 2.5, 2.8, 3.2, 3.0, 3.8, 2.6, 2.2, 3.2, 2.8, 2.8, 2.7, 3.3, 3.2, 2.8, 3.0, 2.8, 3.0, 2.8, 3.8, 2.8, 2.8, 2.6, 3.0, 3.4, 3.1, 3.0, 3.1, 3.1, 3.1, 2.7, 3.2, 3.3, 3.0, 2.5, 3.0, 3.4, 3.0],\n                        [\"data1\", 1.4, 1.5, 1.5, 1.3, 1.5, 1.3, 1.6, 1.0, 1.3, 1.4, 1.0, 1.5, 1.0, 1.4, 1.3, 1.4, 1.5, 1.0, 1.5, 1.1, 1.8, 1.3, 1.5, 1.2, 1.3, 1.4, 1.4, 1.7, 1.5, 1.0, 1.1, 1.0, 1.2, 1.6, 1.5, 1.6, 1.5, 1.3, 1.3, 1.3, 1.2, 1.4, 1.2, 1.0, 1.3, 1.2, 1.3, 1.3, 1.1, 1.3],\n                        [\"data2\", 2.5, 1.9, 2.1, 1.8, 2.2, 2.1, 1.7, 1.8, 1.8, 2.5, 2.0, 1.9, 2.1, 2.0, 2.4, 2.3, 1.8, 2.2, 2.3, 1.5, 2.3, 2.0, 2.0, 1.8, 2.1, 1.8, 1.8, 1.8, 2.1, 1.6, 1.9, 2.0, 2.2, 1.5, 1.4, 2.3, 2.4, 1.8, 1.8, 2.1, 2.4, 2.3, 1.9, 2.3, 2.5, 2.3, 1.9, 2.0, 2.3, 1.8]\n                    ],\n                    colors:{\n                        data1: '#03a9f4',\n                        data2: '#303030'\n                    },\n                    type: 'scatter'\n                }\n            });\n\n            c3.generate({\n                bindto: '#stocked',\n                data:{\n                    columns: [\n                        ['data1', 30,200,100,400,150,250],\n                        ['data2', 50,20,10,40,15,25]\n                    ],\n                    colors:{\n                        data1: '#03a9f4',\n                        data2: '#303030'\n                    },\n                    type: 'bar',\n                    groups: [\n                        ['data1', 'data2']\n                    ]\n                }\n            });\n\n            c3.generate({\n                bindto: '#gauge',\n                data:{\n                    columns: [\n                        ['data', 91.4]\n                    ],\n\n                    type: 'gauge'\n                },\n                color:{\n                    pattern: ['#03a9f4', '#303030']\n\n                }\n            });\n\n            c3.generate({\n                bindto: '#pie',\n                data:{\n                    columns: [\n                        ['data1', 30],\n                        ['data2', 120]\n                    ],\n                    colors:{\n                        data1: '#03a9f4',\n                        data2: '#303030'\n                    },\n                    type : 'pie'\n                }\n            });\n\n\n\n})(jQuery); \n"
  },
  {
    "path": "public/admin/js/charts/Chart.js",
    "content": "/*!\n * Chart.js\n * http://chartjs.org/\n * Version: 2.6.0\n *\n * Copyright 2017 Nick Downie\n * Released under the MIT license\n * https://github.com/chartjs/Chart.js/blob/master/LICENSE.md\n */\n(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.Chart = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){\n\n},{}],2:[function(require,module,exports){\n/* MIT license */\nvar colorNames = require(6);\n\nmodule.exports = {\n   getRgba: getRgba,\n   getHsla: getHsla,\n   getRgb: getRgb,\n   getHsl: getHsl,\n   getHwb: getHwb,\n   getAlpha: getAlpha,\n\n   hexString: hexString,\n   rgbString: rgbString,\n   rgbaString: rgbaString,\n   percentString: percentString,\n   percentaString: percentaString,\n   hslString: hslString,\n   hslaString: hslaString,\n   hwbString: hwbString,\n   keyword: keyword\n}\n\nfunction getRgba(string) {\n   if (!string) {\n      return;\n   }\n   var abbr =  /^#([a-fA-F0-9]{3})$/,\n       hex =  /^#([a-fA-F0-9]{6})$/,\n       rgba = /^rgba?\\(\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/,\n       per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/,\n       keyword = /(\\w+)/;\n\n   var rgb = [0, 0, 0],\n       a = 1,\n       match = string.match(abbr);\n   if (match) {\n      match = match[1];\n      for (var i = 0; i < rgb.length; i++) {\n         rgb[i] = parseInt(match[i] + match[i], 16);\n      }\n   }\n   else if (match = string.match(hex)) {\n      match = match[1];\n      for (var i = 0; i < rgb.length; i++) {\n         rgb[i] = parseInt(match.slice(i * 2, i * 2 + 2), 16);\n      }\n   }\n   else if (match = string.match(rgba)) {\n      for (var i = 0; i < rgb.length; i++) {\n         rgb[i] = parseInt(match[i + 1]);\n      }\n      a = parseFloat(match[4]);\n   }\n   else if (match = string.match(per)) {\n      for (var i = 0; i < rgb.length; i++) {\n         rgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n      }\n      a = parseFloat(match[4]);\n   }\n   else if (match = string.match(keyword)) {\n      if (match[1] == \"transparent\") {\n         return [0, 0, 0, 0];\n      }\n      rgb = colorNames[match[1]];\n      if (!rgb) {\n         return;\n      }\n   }\n\n   for (var i = 0; i < rgb.length; i++) {\n      rgb[i] = scale(rgb[i], 0, 255);\n   }\n   if (!a && a != 0) {\n      a = 1;\n   }\n   else {\n      a = scale(a, 0, 1);\n   }\n   rgb[3] = a;\n   return rgb;\n}\n\nfunction getHsla(string) {\n   if (!string) {\n      return;\n   }\n   var hsl = /^hsla?\\(\\s*([+-]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)/;\n   var match = string.match(hsl);\n   if (match) {\n      var alpha = parseFloat(match[4]);\n      var h = scale(parseInt(match[1]), 0, 360),\n          s = scale(parseFloat(match[2]), 0, 100),\n          l = scale(parseFloat(match[3]), 0, 100),\n          a = scale(isNaN(alpha) ? 1 : alpha, 0, 1);\n      return [h, s, l, a];\n   }\n}\n\nfunction getHwb(string) {\n   if (!string) {\n      return;\n   }\n   var hwb = /^hwb\\(\\s*([+-]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)/;\n   var match = string.match(hwb);\n   if (match) {\n    var alpha = parseFloat(match[4]);\n      var h = scale(parseInt(match[1]), 0, 360),\n          w = scale(parseFloat(match[2]), 0, 100),\n          b = scale(parseFloat(match[3]), 0, 100),\n          a = scale(isNaN(alpha) ? 1 : alpha, 0, 1);\n      return [h, w, b, a];\n   }\n}\n\nfunction getRgb(string) {\n   var rgba = getRgba(string);\n   return rgba && rgba.slice(0, 3);\n}\n\nfunction getHsl(string) {\n  var hsla = getHsla(string);\n  return hsla && hsla.slice(0, 3);\n}\n\nfunction getAlpha(string) {\n   var vals = getRgba(string);\n   if (vals) {\n      return vals[3];\n   }\n   else if (vals = getHsla(string)) {\n      return vals[3];\n   }\n   else if (vals = getHwb(string)) {\n      return vals[3];\n   }\n}\n\n// generators\nfunction hexString(rgb) {\n   return \"#\" + hexDouble(rgb[0]) + hexDouble(rgb[1])\n              + hexDouble(rgb[2]);\n}\n\nfunction rgbString(rgba, alpha) {\n   if (alpha < 1 || (rgba[3] && rgba[3] < 1)) {\n      return rgbaString(rgba, alpha);\n   }\n   return \"rgb(\" + rgba[0] + \", \" + rgba[1] + \", \" + rgba[2] + \")\";\n}\n\nfunction rgbaString(rgba, alpha) {\n   if (alpha === undefined) {\n      alpha = (rgba[3] !== undefined ? rgba[3] : 1);\n   }\n   return \"rgba(\" + rgba[0] + \", \" + rgba[1] + \", \" + rgba[2]\n           + \", \" + alpha + \")\";\n}\n\nfunction percentString(rgba, alpha) {\n   if (alpha < 1 || (rgba[3] && rgba[3] < 1)) {\n      return percentaString(rgba, alpha);\n   }\n   var r = Math.round(rgba[0]/255 * 100),\n       g = Math.round(rgba[1]/255 * 100),\n       b = Math.round(rgba[2]/255 * 100);\n\n   return \"rgb(\" + r + \"%, \" + g + \"%, \" + b + \"%)\";\n}\n\nfunction percentaString(rgba, alpha) {\n   var r = Math.round(rgba[0]/255 * 100),\n       g = Math.round(rgba[1]/255 * 100),\n       b = Math.round(rgba[2]/255 * 100);\n   return \"rgba(\" + r + \"%, \" + g + \"%, \" + b + \"%, \" + (alpha || rgba[3] || 1) + \")\";\n}\n\nfunction hslString(hsla, alpha) {\n   if (alpha < 1 || (hsla[3] && hsla[3] < 1)) {\n      return hslaString(hsla, alpha);\n   }\n   return \"hsl(\" + hsla[0] + \", \" + hsla[1] + \"%, \" + hsla[2] + \"%)\";\n}\n\nfunction hslaString(hsla, alpha) {\n   if (alpha === undefined) {\n      alpha = (hsla[3] !== undefined ? hsla[3] : 1);\n   }\n   return \"hsla(\" + hsla[0] + \", \" + hsla[1] + \"%, \" + hsla[2] + \"%, \"\n           + alpha + \")\";\n}\n\n// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\nfunction hwbString(hwb, alpha) {\n   if (alpha === undefined) {\n      alpha = (hwb[3] !== undefined ? hwb[3] : 1);\n   }\n   return \"hwb(\" + hwb[0] + \", \" + hwb[1] + \"%, \" + hwb[2] + \"%\"\n           + (alpha !== undefined && alpha !== 1 ? \", \" + alpha : \"\") + \")\";\n}\n\nfunction keyword(rgb) {\n  return reverseNames[rgb.slice(0, 3)];\n}\n\n// helpers\nfunction scale(num, min, max) {\n   return Math.min(Math.max(min, num), max);\n}\n\nfunction hexDouble(num) {\n  var str = num.toString(16).toUpperCase();\n  return (str.length < 2) ? \"0\" + str : str;\n}\n\n\n//create a list of reverse color names\nvar reverseNames = {};\nfor (var name in colorNames) {\n   reverseNames[colorNames[name]] = name;\n}\n\n},{\"6\":6}],3:[function(require,module,exports){\n/* MIT license */\nvar convert = require(5);\nvar string = require(2);\n\nvar Color = function (obj) {\n\tif (obj instanceof Color) {\n\t\treturn obj;\n\t}\n\tif (!(this instanceof Color)) {\n\t\treturn new Color(obj);\n\t}\n\n\tthis.valid = false;\n\tthis.values = {\n\t\trgb: [0, 0, 0],\n\t\thsl: [0, 0, 0],\n\t\thsv: [0, 0, 0],\n\t\thwb: [0, 0, 0],\n\t\tcmyk: [0, 0, 0, 0],\n\t\talpha: 1\n\t};\n\n\t// parse Color() argument\n\tvar vals;\n\tif (typeof obj === 'string') {\n\t\tvals = string.getRgba(obj);\n\t\tif (vals) {\n\t\t\tthis.setValues('rgb', vals);\n\t\t} else if (vals = string.getHsla(obj)) {\n\t\t\tthis.setValues('hsl', vals);\n\t\t} else if (vals = string.getHwb(obj)) {\n\t\t\tthis.setValues('hwb', vals);\n\t\t}\n\t} else if (typeof obj === 'object') {\n\t\tvals = obj;\n\t\tif (vals.r !== undefined || vals.red !== undefined) {\n\t\t\tthis.setValues('rgb', vals);\n\t\t} else if (vals.l !== undefined || vals.lightness !== undefined) {\n\t\t\tthis.setValues('hsl', vals);\n\t\t} else if (vals.v !== undefined || vals.value !== undefined) {\n\t\t\tthis.setValues('hsv', vals);\n\t\t} else if (vals.w !== undefined || vals.whiteness !== undefined) {\n\t\t\tthis.setValues('hwb', vals);\n\t\t} else if (vals.c !== undefined || vals.cyan !== undefined) {\n\t\t\tthis.setValues('cmyk', vals);\n\t\t}\n\t}\n};\n\nColor.prototype = {\n\tisValid: function () {\n\t\treturn this.valid;\n\t},\n\trgb: function () {\n\t\treturn this.setSpace('rgb', arguments);\n\t},\n\thsl: function () {\n\t\treturn this.setSpace('hsl', arguments);\n\t},\n\thsv: function () {\n\t\treturn this.setSpace('hsv', arguments);\n\t},\n\thwb: function () {\n\t\treturn this.setSpace('hwb', arguments);\n\t},\n\tcmyk: function () {\n\t\treturn this.setSpace('cmyk', arguments);\n\t},\n\n\trgbArray: function () {\n\t\treturn this.values.rgb;\n\t},\n\thslArray: function () {\n\t\treturn this.values.hsl;\n\t},\n\thsvArray: function () {\n\t\treturn this.values.hsv;\n\t},\n\thwbArray: function () {\n\t\tvar values = this.values;\n\t\tif (values.alpha !== 1) {\n\t\t\treturn values.hwb.concat([values.alpha]);\n\t\t}\n\t\treturn values.hwb;\n\t},\n\tcmykArray: function () {\n\t\treturn this.values.cmyk;\n\t},\n\trgbaArray: function () {\n\t\tvar values = this.values;\n\t\treturn values.rgb.concat([values.alpha]);\n\t},\n\thslaArray: function () {\n\t\tvar values = this.values;\n\t\treturn values.hsl.concat([values.alpha]);\n\t},\n\talpha: function (val) {\n\t\tif (val === undefined) {\n\t\t\treturn this.values.alpha;\n\t\t}\n\t\tthis.setValues('alpha', val);\n\t\treturn this;\n\t},\n\n\tred: function (val) {\n\t\treturn this.setChannel('rgb', 0, val);\n\t},\n\tgreen: function (val) {\n\t\treturn this.setChannel('rgb', 1, val);\n\t},\n\tblue: function (val) {\n\t\treturn this.setChannel('rgb', 2, val);\n\t},\n\thue: function (val) {\n\t\tif (val) {\n\t\t\tval %= 360;\n\t\t\tval = val < 0 ? 360 + val : val;\n\t\t}\n\t\treturn this.setChannel('hsl', 0, val);\n\t},\n\tsaturation: function (val) {\n\t\treturn this.setChannel('hsl', 1, val);\n\t},\n\tlightness: function (val) {\n\t\treturn this.setChannel('hsl', 2, val);\n\t},\n\tsaturationv: function (val) {\n\t\treturn this.setChannel('hsv', 1, val);\n\t},\n\twhiteness: function (val) {\n\t\treturn this.setChannel('hwb', 1, val);\n\t},\n\tblackness: function (val) {\n\t\treturn this.setChannel('hwb', 2, val);\n\t},\n\tvalue: function (val) {\n\t\treturn this.setChannel('hsv', 2, val);\n\t},\n\tcyan: function (val) {\n\t\treturn this.setChannel('cmyk', 0, val);\n\t},\n\tmagenta: function (val) {\n\t\treturn this.setChannel('cmyk', 1, val);\n\t},\n\tyellow: function (val) {\n\t\treturn this.setChannel('cmyk', 2, val);\n\t},\n\tblack: function (val) {\n\t\treturn this.setChannel('cmyk', 3, val);\n\t},\n\n\thexString: function () {\n\t\treturn string.hexString(this.values.rgb);\n\t},\n\trgbString: function () {\n\t\treturn string.rgbString(this.values.rgb, this.values.alpha);\n\t},\n\trgbaString: function () {\n\t\treturn string.rgbaString(this.values.rgb, this.values.alpha);\n\t},\n\tpercentString: function () {\n\t\treturn string.percentString(this.values.rgb, this.values.alpha);\n\t},\n\thslString: function () {\n\t\treturn string.hslString(this.values.hsl, this.values.alpha);\n\t},\n\thslaString: function () {\n\t\treturn string.hslaString(this.values.hsl, this.values.alpha);\n\t},\n\thwbString: function () {\n\t\treturn string.hwbString(this.values.hwb, this.values.alpha);\n\t},\n\tkeyword: function () {\n\t\treturn string.keyword(this.values.rgb, this.values.alpha);\n\t},\n\n\trgbNumber: function () {\n\t\tvar rgb = this.values.rgb;\n\t\treturn (rgb[0] << 16) | (rgb[1] << 8) | rgb[2];\n\t},\n\n\tluminosity: function () {\n\t\t// http://www.w3.org/TR/WCAG20/#relativeluminancedef\n\t\tvar rgb = this.values.rgb;\n\t\tvar lum = [];\n\t\tfor (var i = 0; i < rgb.length; i++) {\n\t\t\tvar chan = rgb[i] / 255;\n\t\t\tlum[i] = (chan <= 0.03928) ? chan / 12.92 : Math.pow(((chan + 0.055) / 1.055), 2.4);\n\t\t}\n\t\treturn 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n\t},\n\n\tcontrast: function (color2) {\n\t\t// http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n\t\tvar lum1 = this.luminosity();\n\t\tvar lum2 = color2.luminosity();\n\t\tif (lum1 > lum2) {\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\n\t\t}\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\n\t},\n\n\tlevel: function (color2) {\n\t\tvar contrastRatio = this.contrast(color2);\n\t\tif (contrastRatio >= 7.1) {\n\t\t\treturn 'AAA';\n\t\t}\n\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\n\t},\n\n\tdark: function () {\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\n\t\tvar rgb = this.values.rgb;\n\t\tvar yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n\t\treturn yiq < 128;\n\t},\n\n\tlight: function () {\n\t\treturn !this.dark();\n\t},\n\n\tnegate: function () {\n\t\tvar rgb = [];\n\t\tfor (var i = 0; i < 3; i++) {\n\t\t\trgb[i] = 255 - this.values.rgb[i];\n\t\t}\n\t\tthis.setValues('rgb', rgb);\n\t\treturn this;\n\t},\n\n\tlighten: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[2] += hsl[2] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tdarken: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[2] -= hsl[2] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tsaturate: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[1] += hsl[1] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tdesaturate: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[1] -= hsl[1] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\twhiten: function (ratio) {\n\t\tvar hwb = this.values.hwb;\n\t\thwb[1] += hwb[1] * ratio;\n\t\tthis.setValues('hwb', hwb);\n\t\treturn this;\n\t},\n\n\tblacken: function (ratio) {\n\t\tvar hwb = this.values.hwb;\n\t\thwb[2] += hwb[2] * ratio;\n\t\tthis.setValues('hwb', hwb);\n\t\treturn this;\n\t},\n\n\tgreyscale: function () {\n\t\tvar rgb = this.values.rgb;\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n\t\tvar val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n\t\tthis.setValues('rgb', [val, val, val]);\n\t\treturn this;\n\t},\n\n\tclearer: function (ratio) {\n\t\tvar alpha = this.values.alpha;\n\t\tthis.setValues('alpha', alpha - (alpha * ratio));\n\t\treturn this;\n\t},\n\n\topaquer: function (ratio) {\n\t\tvar alpha = this.values.alpha;\n\t\tthis.setValues('alpha', alpha + (alpha * ratio));\n\t\treturn this;\n\t},\n\n\trotate: function (degrees) {\n\t\tvar hsl = this.values.hsl;\n\t\tvar hue = (hsl[0] + degrees) % 360;\n\t\thsl[0] = hue < 0 ? 360 + hue : hue;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\t/**\n\t * Ported from sass implementation in C\n\t * https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n\t */\n\tmix: function (mixinColor, weight) {\n\t\tvar color1 = this;\n\t\tvar color2 = mixinColor;\n\t\tvar p = weight === undefined ? 0.5 : weight;\n\n\t\tvar w = 2 * p - 1;\n\t\tvar a = color1.alpha() - color2.alpha();\n\n\t\tvar w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n\t\tvar w2 = 1 - w1;\n\n\t\treturn this\n\t\t\t.rgb(\n\t\t\t\tw1 * color1.red() + w2 * color2.red(),\n\t\t\t\tw1 * color1.green() + w2 * color2.green(),\n\t\t\t\tw1 * color1.blue() + w2 * color2.blue()\n\t\t\t)\n\t\t\t.alpha(color1.alpha() * p + color2.alpha() * (1 - p));\n\t},\n\n\ttoJSON: function () {\n\t\treturn this.rgb();\n\t},\n\n\tclone: function () {\n\t\t// NOTE(SB): using node-clone creates a dependency to Buffer when using browserify,\n\t\t// making the final build way to big to embed in Chart.js. So let's do it manually,\n\t\t// assuming that values to clone are 1 dimension arrays containing only numbers,\n\t\t// except 'alpha' which is a number.\n\t\tvar result = new Color();\n\t\tvar source = this.values;\n\t\tvar target = result.values;\n\t\tvar value, type;\n\n\t\tfor (var prop in source) {\n\t\t\tif (source.hasOwnProperty(prop)) {\n\t\t\t\tvalue = source[prop];\n\t\t\t\ttype = ({}).toString.call(value);\n\t\t\t\tif (type === '[object Array]') {\n\t\t\t\t\ttarget[prop] = value.slice(0);\n\t\t\t\t} else if (type === '[object Number]') {\n\t\t\t\t\ttarget[prop] = value;\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error('unexpected color value:', value);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n};\n\nColor.prototype.spaces = {\n\trgb: ['red', 'green', 'blue'],\n\thsl: ['hue', 'saturation', 'lightness'],\n\thsv: ['hue', 'saturation', 'value'],\n\thwb: ['hue', 'whiteness', 'blackness'],\n\tcmyk: ['cyan', 'magenta', 'yellow', 'black']\n};\n\nColor.prototype.maxes = {\n\trgb: [255, 255, 255],\n\thsl: [360, 100, 100],\n\thsv: [360, 100, 100],\n\thwb: [360, 100, 100],\n\tcmyk: [100, 100, 100, 100]\n};\n\nColor.prototype.getValues = function (space) {\n\tvar values = this.values;\n\tvar vals = {};\n\n\tfor (var i = 0; i < space.length; i++) {\n\t\tvals[space.charAt(i)] = values[space][i];\n\t}\n\n\tif (values.alpha !== 1) {\n\t\tvals.a = values.alpha;\n\t}\n\n\t// {r: 255, g: 255, b: 255, a: 0.4}\n\treturn vals;\n};\n\nColor.prototype.setValues = function (space, vals) {\n\tvar values = this.values;\n\tvar spaces = this.spaces;\n\tvar maxes = this.maxes;\n\tvar alpha = 1;\n\tvar i;\n\n\tthis.valid = true;\n\n\tif (space === 'alpha') {\n\t\talpha = vals;\n\t} else if (vals.length) {\n\t\t// [10, 10, 10]\n\t\tvalues[space] = vals.slice(0, space.length);\n\t\talpha = vals[space.length];\n\t} else if (vals[space.charAt(0)] !== undefined) {\n\t\t// {r: 10, g: 10, b: 10}\n\t\tfor (i = 0; i < space.length; i++) {\n\t\t\tvalues[space][i] = vals[space.charAt(i)];\n\t\t}\n\n\t\talpha = vals.a;\n\t} else if (vals[spaces[space][0]] !== undefined) {\n\t\t// {red: 10, green: 10, blue: 10}\n\t\tvar chans = spaces[space];\n\n\t\tfor (i = 0; i < space.length; i++) {\n\t\t\tvalues[space][i] = vals[chans[i]];\n\t\t}\n\n\t\talpha = vals.alpha;\n\t}\n\n\tvalues.alpha = Math.max(0, Math.min(1, (alpha === undefined ? values.alpha : alpha)));\n\n\tif (space === 'alpha') {\n\t\treturn false;\n\t}\n\n\tvar capped;\n\n\t// cap values of the space prior converting all values\n\tfor (i = 0; i < space.length; i++) {\n\t\tcapped = Math.max(0, Math.min(maxes[space][i], values[space][i]));\n\t\tvalues[space][i] = Math.round(capped);\n\t}\n\n\t// convert to all the other color spaces\n\tfor (var sname in spaces) {\n\t\tif (sname !== space) {\n\t\t\tvalues[sname] = convert[space][sname](values[space]);\n\t\t}\n\t}\n\n\treturn true;\n};\n\nColor.prototype.setSpace = function (space, args) {\n\tvar vals = args[0];\n\n\tif (vals === undefined) {\n\t\t// color.rgb()\n\t\treturn this.getValues(space);\n\t}\n\n\t// color.rgb(10, 10, 10)\n\tif (typeof vals === 'number') {\n\t\tvals = Array.prototype.slice.call(args);\n\t}\n\n\tthis.setValues(space, vals);\n\treturn this;\n};\n\nColor.prototype.setChannel = function (space, index, val) {\n\tvar svalues = this.values[space];\n\tif (val === undefined) {\n\t\t// color.red()\n\t\treturn svalues[index];\n\t} else if (val === svalues[index]) {\n\t\t// color.red(color.red())\n\t\treturn this;\n\t}\n\n\t// color.red(100)\n\tsvalues[index] = val;\n\tthis.setValues(space, svalues);\n\n\treturn this;\n};\n\nif (typeof window !== 'undefined') {\n\twindow.Color = Color;\n}\n\nmodule.exports = Color;\n\n},{\"2\":2,\"5\":5}],4:[function(require,module,exports){\n/* MIT license */\n\nmodule.exports = {\n  rgb2hsl: rgb2hsl,\n  rgb2hsv: rgb2hsv,\n  rgb2hwb: rgb2hwb,\n  rgb2cmyk: rgb2cmyk,\n  rgb2keyword: rgb2keyword,\n  rgb2xyz: rgb2xyz,\n  rgb2lab: rgb2lab,\n  rgb2lch: rgb2lch,\n\n  hsl2rgb: hsl2rgb,\n  hsl2hsv: hsl2hsv,\n  hsl2hwb: hsl2hwb,\n  hsl2cmyk: hsl2cmyk,\n  hsl2keyword: hsl2keyword,\n\n  hsv2rgb: hsv2rgb,\n  hsv2hsl: hsv2hsl,\n  hsv2hwb: hsv2hwb,\n  hsv2cmyk: hsv2cmyk,\n  hsv2keyword: hsv2keyword,\n\n  hwb2rgb: hwb2rgb,\n  hwb2hsl: hwb2hsl,\n  hwb2hsv: hwb2hsv,\n  hwb2cmyk: hwb2cmyk,\n  hwb2keyword: hwb2keyword,\n\n  cmyk2rgb: cmyk2rgb,\n  cmyk2hsl: cmyk2hsl,\n  cmyk2hsv: cmyk2hsv,\n  cmyk2hwb: cmyk2hwb,\n  cmyk2keyword: cmyk2keyword,\n\n  keyword2rgb: keyword2rgb,\n  keyword2hsl: keyword2hsl,\n  keyword2hsv: keyword2hsv,\n  keyword2hwb: keyword2hwb,\n  keyword2cmyk: keyword2cmyk,\n  keyword2lab: keyword2lab,\n  keyword2xyz: keyword2xyz,\n\n  xyz2rgb: xyz2rgb,\n  xyz2lab: xyz2lab,\n  xyz2lch: xyz2lch,\n\n  lab2xyz: lab2xyz,\n  lab2rgb: lab2rgb,\n  lab2lch: lab2lch,\n\n  lch2lab: lch2lab,\n  lch2xyz: lch2xyz,\n  lch2rgb: lch2rgb\n}\n\n\nfunction rgb2hsl(rgb) {\n  var r = rgb[0]/255,\n      g = rgb[1]/255,\n      b = rgb[2]/255,\n      min = Math.min(r, g, b),\n      max = Math.max(r, g, b),\n      delta = max - min,\n      h, s, l;\n\n  if (max == min)\n    h = 0;\n  else if (r == max)\n    h = (g - b) / delta;\n  else if (g == max)\n    h = 2 + (b - r) / delta;\n  else if (b == max)\n    h = 4 + (r - g)/ delta;\n\n  h = Math.min(h * 60, 360);\n\n  if (h < 0)\n    h += 360;\n\n  l = (min + max) / 2;\n\n  if (max == min)\n    s = 0;\n  else if (l <= 0.5)\n    s = delta / (max + min);\n  else\n    s = delta / (2 - max - min);\n\n  return [h, s * 100, l * 100];\n}\n\nfunction rgb2hsv(rgb) {\n  var r = rgb[0],\n      g = rgb[1],\n      b = rgb[2],\n      min = Math.min(r, g, b),\n      max = Math.max(r, g, b),\n      delta = max - min,\n      h, s, v;\n\n  if (max == 0)\n    s = 0;\n  else\n    s = (delta/max * 1000)/10;\n\n  if (max == min)\n    h = 0;\n  else if (r == max)\n    h = (g - b) / delta;\n  else if (g == max)\n    h = 2 + (b - r) / delta;\n  else if (b == max)\n    h = 4 + (r - g) / delta;\n\n  h = Math.min(h * 60, 360);\n\n  if (h < 0)\n    h += 360;\n\n  v = ((max / 255) * 1000) / 10;\n\n  return [h, s, v];\n}\n\nfunction rgb2hwb(rgb) {\n  var r = rgb[0],\n      g = rgb[1],\n      b = rgb[2],\n      h = rgb2hsl(rgb)[0],\n      w = 1/255 * Math.min(r, Math.min(g, b)),\n      b = 1 - 1/255 * Math.max(r, Math.max(g, b));\n\n  return [h, w * 100, b * 100];\n}\n\nfunction rgb2cmyk(rgb) {\n  var r = rgb[0] / 255,\n      g = rgb[1] / 255,\n      b = rgb[2] / 255,\n      c, m, y, k;\n\n  k = Math.min(1 - r, 1 - g, 1 - b);\n  c = (1 - r - k) / (1 - k) || 0;\n  m = (1 - g - k) / (1 - k) || 0;\n  y = (1 - b - k) / (1 - k) || 0;\n  return [c * 100, m * 100, y * 100, k * 100];\n}\n\nfunction rgb2keyword(rgb) {\n  return reverseKeywords[JSON.stringify(rgb)];\n}\n\nfunction rgb2xyz(rgb) {\n  var r = rgb[0] / 255,\n      g = rgb[1] / 255,\n      b = rgb[2] / 255;\n\n  // assume sRGB\n  r = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n  g = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n  b = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n  var x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n  var y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n  var z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n  return [x * 100, y *100, z * 100];\n}\n\nfunction rgb2lab(rgb) {\n  var xyz = rgb2xyz(rgb),\n        x = xyz[0],\n        y = xyz[1],\n        z = xyz[2],\n        l, a, b;\n\n  x /= 95.047;\n  y /= 100;\n  z /= 108.883;\n\n  x = x > 0.008856 ? Math.pow(x, 1/3) : (7.787 * x) + (16 / 116);\n  y = y > 0.008856 ? Math.pow(y, 1/3) : (7.787 * y) + (16 / 116);\n  z = z > 0.008856 ? Math.pow(z, 1/3) : (7.787 * z) + (16 / 116);\n\n  l = (116 * y) - 16;\n  a = 500 * (x - y);\n  b = 200 * (y - z);\n\n  return [l, a, b];\n}\n\nfunction rgb2lch(args) {\n  return lab2lch(rgb2lab(args));\n}\n\nfunction hsl2rgb(hsl) {\n  var h = hsl[0] / 360,\n      s = hsl[1] / 100,\n      l = hsl[2] / 100,\n      t1, t2, t3, rgb, val;\n\n  if (s == 0) {\n    val = l * 255;\n    return [val, val, val];\n  }\n\n  if (l < 0.5)\n    t2 = l * (1 + s);\n  else\n    t2 = l + s - l * s;\n  t1 = 2 * l - t2;\n\n  rgb = [0, 0, 0];\n  for (var i = 0; i < 3; i++) {\n    t3 = h + 1 / 3 * - (i - 1);\n    t3 < 0 && t3++;\n    t3 > 1 && t3--;\n\n    if (6 * t3 < 1)\n      val = t1 + (t2 - t1) * 6 * t3;\n    else if (2 * t3 < 1)\n      val = t2;\n    else if (3 * t3 < 2)\n      val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n    else\n      val = t1;\n\n    rgb[i] = val * 255;\n  }\n\n  return rgb;\n}\n\nfunction hsl2hsv(hsl) {\n  var h = hsl[0],\n      s = hsl[1] / 100,\n      l = hsl[2] / 100,\n      sv, v;\n\n  if(l === 0) {\n      // no need to do calc on black\n      // also avoids divide by 0 error\n      return [0, 0, 0];\n  }\n\n  l *= 2;\n  s *= (l <= 1) ? l : 2 - l;\n  v = (l + s) / 2;\n  sv = (2 * s) / (l + s);\n  return [h, sv * 100, v * 100];\n}\n\nfunction hsl2hwb(args) {\n  return rgb2hwb(hsl2rgb(args));\n}\n\nfunction hsl2cmyk(args) {\n  return rgb2cmyk(hsl2rgb(args));\n}\n\nfunction hsl2keyword(args) {\n  return rgb2keyword(hsl2rgb(args));\n}\n\n\nfunction hsv2rgb(hsv) {\n  var h = hsv[0] / 60,\n      s = hsv[1] / 100,\n      v = hsv[2] / 100,\n      hi = Math.floor(h) % 6;\n\n  var f = h - Math.floor(h),\n      p = 255 * v * (1 - s),\n      q = 255 * v * (1 - (s * f)),\n      t = 255 * v * (1 - (s * (1 - f))),\n      v = 255 * v;\n\n  switch(hi) {\n    case 0:\n      return [v, t, p];\n    case 1:\n      return [q, v, p];\n    case 2:\n      return [p, v, t];\n    case 3:\n      return [p, q, v];\n    case 4:\n      return [t, p, v];\n    case 5:\n      return [v, p, q];\n  }\n}\n\nfunction hsv2hsl(hsv) {\n  var h = hsv[0],\n      s = hsv[1] / 100,\n      v = hsv[2] / 100,\n      sl, l;\n\n  l = (2 - s) * v;\n  sl = s * v;\n  sl /= (l <= 1) ? l : 2 - l;\n  sl = sl || 0;\n  l /= 2;\n  return [h, sl * 100, l * 100];\n}\n\nfunction hsv2hwb(args) {\n  return rgb2hwb(hsv2rgb(args))\n}\n\nfunction hsv2cmyk(args) {\n  return rgb2cmyk(hsv2rgb(args));\n}\n\nfunction hsv2keyword(args) {\n  return rgb2keyword(hsv2rgb(args));\n}\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nfunction hwb2rgb(hwb) {\n  var h = hwb[0] / 360,\n      wh = hwb[1] / 100,\n      bl = hwb[2] / 100,\n      ratio = wh + bl,\n      i, v, f, n;\n\n  // wh + bl cant be > 1\n  if (ratio > 1) {\n    wh /= ratio;\n    bl /= ratio;\n  }\n\n  i = Math.floor(6 * h);\n  v = 1 - bl;\n  f = 6 * h - i;\n  if ((i & 0x01) != 0) {\n    f = 1 - f;\n  }\n  n = wh + f * (v - wh);  // linear interpolation\n\n  switch (i) {\n    default:\n    case 6:\n    case 0: r = v; g = n; b = wh; break;\n    case 1: r = n; g = v; b = wh; break;\n    case 2: r = wh; g = v; b = n; break;\n    case 3: r = wh; g = n; b = v; break;\n    case 4: r = n; g = wh; b = v; break;\n    case 5: r = v; g = wh; b = n; break;\n  }\n\n  return [r * 255, g * 255, b * 255];\n}\n\nfunction hwb2hsl(args) {\n  return rgb2hsl(hwb2rgb(args));\n}\n\nfunction hwb2hsv(args) {\n  return rgb2hsv(hwb2rgb(args));\n}\n\nfunction hwb2cmyk(args) {\n  return rgb2cmyk(hwb2rgb(args));\n}\n\nfunction hwb2keyword(args) {\n  return rgb2keyword(hwb2rgb(args));\n}\n\nfunction cmyk2rgb(cmyk) {\n  var c = cmyk[0] / 100,\n      m = cmyk[1] / 100,\n      y = cmyk[2] / 100,\n      k = cmyk[3] / 100,\n      r, g, b;\n\n  r = 1 - Math.min(1, c * (1 - k) + k);\n  g = 1 - Math.min(1, m * (1 - k) + k);\n  b = 1 - Math.min(1, y * (1 - k) + k);\n  return [r * 255, g * 255, b * 255];\n}\n\nfunction cmyk2hsl(args) {\n  return rgb2hsl(cmyk2rgb(args));\n}\n\nfunction cmyk2hsv(args) {\n  return rgb2hsv(cmyk2rgb(args));\n}\n\nfunction cmyk2hwb(args) {\n  return rgb2hwb(cmyk2rgb(args));\n}\n\nfunction cmyk2keyword(args) {\n  return rgb2keyword(cmyk2rgb(args));\n}\n\n\nfunction xyz2rgb(xyz) {\n  var x = xyz[0] / 100,\n      y = xyz[1] / 100,\n      z = xyz[2] / 100,\n      r, g, b;\n\n  r = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n  g = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n  b = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n  // assume sRGB\n  r = r > 0.0031308 ? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n    : r = (r * 12.92);\n\n  g = g > 0.0031308 ? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n    : g = (g * 12.92);\n\n  b = b > 0.0031308 ? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n    : b = (b * 12.92);\n\n  r = Math.min(Math.max(0, r), 1);\n  g = Math.min(Math.max(0, g), 1);\n  b = Math.min(Math.max(0, b), 1);\n\n  return [r * 255, g * 255, b * 255];\n}\n\nfunction xyz2lab(xyz) {\n  var x = xyz[0],\n      y = xyz[1],\n      z = xyz[2],\n      l, a, b;\n\n  x /= 95.047;\n  y /= 100;\n  z /= 108.883;\n\n  x = x > 0.008856 ? Math.pow(x, 1/3) : (7.787 * x) + (16 / 116);\n  y = y > 0.008856 ? Math.pow(y, 1/3) : (7.787 * y) + (16 / 116);\n  z = z > 0.008856 ? Math.pow(z, 1/3) : (7.787 * z) + (16 / 116);\n\n  l = (116 * y) - 16;\n  a = 500 * (x - y);\n  b = 200 * (y - z);\n\n  return [l, a, b];\n}\n\nfunction xyz2lch(args) {\n  return lab2lch(xyz2lab(args));\n}\n\nfunction lab2xyz(lab) {\n  var l = lab[0],\n      a = lab[1],\n      b = lab[2],\n      x, y, z, y2;\n\n  if (l <= 8) {\n    y = (l * 100) / 903.3;\n    y2 = (7.787 * (y / 100)) + (16 / 116);\n  } else {\n    y = 100 * Math.pow((l + 16) / 116, 3);\n    y2 = Math.pow(y / 100, 1/3);\n  }\n\n  x = x / 95.047 <= 0.008856 ? x = (95.047 * ((a / 500) + y2 - (16 / 116))) / 7.787 : 95.047 * Math.pow((a / 500) + y2, 3);\n\n  z = z / 108.883 <= 0.008859 ? z = (108.883 * (y2 - (b / 200) - (16 / 116))) / 7.787 : 108.883 * Math.pow(y2 - (b / 200), 3);\n\n  return [x, y, z];\n}\n\nfunction lab2lch(lab) {\n  var l = lab[0],\n      a = lab[1],\n      b = lab[2],\n      hr, h, c;\n\n  hr = Math.atan2(b, a);\n  h = hr * 360 / 2 / Math.PI;\n  if (h < 0) {\n    h += 360;\n  }\n  c = Math.sqrt(a * a + b * b);\n  return [l, c, h];\n}\n\nfunction lab2rgb(args) {\n  return xyz2rgb(lab2xyz(args));\n}\n\nfunction lch2lab(lch) {\n  var l = lch[0],\n      c = lch[1],\n      h = lch[2],\n      a, b, hr;\n\n  hr = h / 360 * 2 * Math.PI;\n  a = c * Math.cos(hr);\n  b = c * Math.sin(hr);\n  return [l, a, b];\n}\n\nfunction lch2xyz(args) {\n  return lab2xyz(lch2lab(args));\n}\n\nfunction lch2rgb(args) {\n  return lab2rgb(lch2lab(args));\n}\n\nfunction keyword2rgb(keyword) {\n  return cssKeywords[keyword];\n}\n\nfunction keyword2hsl(args) {\n  return rgb2hsl(keyword2rgb(args));\n}\n\nfunction keyword2hsv(args) {\n  return rgb2hsv(keyword2rgb(args));\n}\n\nfunction keyword2hwb(args) {\n  return rgb2hwb(keyword2rgb(args));\n}\n\nfunction keyword2cmyk(args) {\n  return rgb2cmyk(keyword2rgb(args));\n}\n\nfunction keyword2lab(args) {\n  return rgb2lab(keyword2rgb(args));\n}\n\nfunction keyword2xyz(args) {\n  return rgb2xyz(keyword2rgb(args));\n}\n\nvar cssKeywords = {\n  aliceblue:  [240,248,255],\n  antiquewhite: [250,235,215],\n  aqua: [0,255,255],\n  aquamarine: [127,255,212],\n  azure:  [240,255,255],\n  beige:  [245,245,220],\n  bisque: [255,228,196],\n  black:  [0,0,0],\n  blanchedalmond: [255,235,205],\n  blue: [0,0,255],\n  blueviolet: [138,43,226],\n  brown:  [165,42,42],\n  burlywood:  [222,184,135],\n  cadetblue:  [95,158,160],\n  chartreuse: [127,255,0],\n  chocolate:  [210,105,30],\n  coral:  [255,127,80],\n  cornflowerblue: [100,149,237],\n  cornsilk: [255,248,220],\n  crimson:  [220,20,60],\n  cyan: [0,255,255],\n  darkblue: [0,0,139],\n  darkcyan: [0,139,139],\n  darkgoldenrod:  [184,134,11],\n  darkgray: [169,169,169],\n  darkgreen:  [0,100,0],\n  darkgrey: [169,169,169],\n  darkkhaki:  [189,183,107],\n  darkmagenta:  [139,0,139],\n  darkolivegreen: [85,107,47],\n  darkorange: [255,140,0],\n  darkorchid: [153,50,204],\n  darkred:  [139,0,0],\n  darksalmon: [233,150,122],\n  darkseagreen: [143,188,143],\n  darkslateblue:  [72,61,139],\n  darkslategray:  [47,79,79],\n  darkslategrey:  [47,79,79],\n  darkturquoise:  [0,206,209],\n  darkviolet: [148,0,211],\n  deeppink: [255,20,147],\n  deepskyblue:  [0,191,255],\n  dimgray:  [105,105,105],\n  dimgrey:  [105,105,105],\n  dodgerblue: [30,144,255],\n  firebrick:  [178,34,34],\n  floralwhite:  [255,250,240],\n  forestgreen:  [34,139,34],\n  fuchsia:  [255,0,255],\n  gainsboro:  [220,220,220],\n  ghostwhite: [248,248,255],\n  gold: [255,215,0],\n  goldenrod:  [218,165,32],\n  gray: [128,128,128],\n  green:  [0,128,0],\n  greenyellow:  [173,255,47],\n  grey: [128,128,128],\n  honeydew: [240,255,240],\n  hotpink:  [255,105,180],\n  indianred:  [205,92,92],\n  indigo: [75,0,130],\n  ivory:  [255,255,240],\n  khaki:  [240,230,140],\n  lavender: [230,230,250],\n  lavenderblush:  [255,240,245],\n  lawngreen:  [124,252,0],\n  lemonchiffon: [255,250,205],\n  lightblue:  [173,216,230],\n  lightcoral: [240,128,128],\n  lightcyan:  [224,255,255],\n  lightgoldenrodyellow: [250,250,210],\n  lightgray:  [211,211,211],\n  lightgreen: [144,238,144],\n  lightgrey:  [211,211,211],\n  lightpink:  [255,182,193],\n  lightsalmon:  [255,160,122],\n  lightseagreen:  [32,178,170],\n  lightskyblue: [135,206,250],\n  lightslategray: [119,136,153],\n  lightslategrey: [119,136,153],\n  lightsteelblue: [176,196,222],\n  lightyellow:  [255,255,224],\n  lime: [0,255,0],\n  limegreen:  [50,205,50],\n  linen:  [250,240,230],\n  magenta:  [255,0,255],\n  maroon: [128,0,0],\n  mediumaquamarine: [102,205,170],\n  mediumblue: [0,0,205],\n  mediumorchid: [186,85,211],\n  mediumpurple: [147,112,219],\n  mediumseagreen: [60,179,113],\n  mediumslateblue:  [123,104,238],\n  mediumspringgreen:  [0,250,154],\n  mediumturquoise:  [72,209,204],\n  mediumvioletred:  [199,21,133],\n  midnightblue: [25,25,112],\n  mintcream:  [245,255,250],\n  mistyrose:  [255,228,225],\n  moccasin: [255,228,181],\n  navajowhite:  [255,222,173],\n  navy: [0,0,128],\n  oldlace:  [253,245,230],\n  olive:  [128,128,0],\n  olivedrab:  [107,142,35],\n  orange: [255,165,0],\n  orangered:  [255,69,0],\n  orchid: [218,112,214],\n  palegoldenrod:  [238,232,170],\n  palegreen:  [152,251,152],\n  paleturquoise:  [175,238,238],\n  palevioletred:  [219,112,147],\n  papayawhip: [255,239,213],\n  peachpuff:  [255,218,185],\n  peru: [205,133,63],\n  pink: [255,192,203],\n  plum: [221,160,221],\n  powderblue: [176,224,230],\n  purple: [128,0,128],\n  rebeccapurple: [102, 51, 153],\n  red:  [255,0,0],\n  rosybrown:  [188,143,143],\n  royalblue:  [65,105,225],\n  saddlebrown:  [139,69,19],\n  salmon: [250,128,114],\n  sandybrown: [244,164,96],\n  seagreen: [46,139,87],\n  seashell: [255,245,238],\n  sienna: [160,82,45],\n  silver: [192,192,192],\n  skyblue:  [135,206,235],\n  slateblue:  [106,90,205],\n  slategray:  [112,128,144],\n  slategrey:  [112,128,144],\n  snow: [255,250,250],\n  springgreen:  [0,255,127],\n  steelblue:  [70,130,180],\n  tan:  [210,180,140],\n  teal: [0,128,128],\n  thistle:  [216,191,216],\n  tomato: [255,99,71],\n  turquoise:  [64,224,208],\n  violet: [238,130,238],\n  wheat:  [245,222,179],\n  white:  [255,255,255],\n  whitesmoke: [245,245,245],\n  yellow: [255,255,0],\n  yellowgreen:  [154,205,50]\n};\n\nvar reverseKeywords = {};\nfor (var key in cssKeywords) {\n  reverseKeywords[JSON.stringify(cssKeywords[key])] = key;\n}\n\n},{}],5:[function(require,module,exports){\nvar conversions = require(4);\n\nvar convert = function() {\n   return new Converter();\n}\n\nfor (var func in conversions) {\n  // export Raw versions\n  convert[func + \"Raw\"] =  (function(func) {\n    // accept array or plain args\n    return function(arg) {\n      if (typeof arg == \"number\")\n        arg = Array.prototype.slice.call(arguments);\n      return conversions[func](arg);\n    }\n  })(func);\n\n  var pair = /(\\w+)2(\\w+)/.exec(func),\n      from = pair[1],\n      to = pair[2];\n\n  // export rgb2hsl and [\"rgb\"][\"hsl\"]\n  convert[from] = convert[from] || {};\n\n  convert[from][to] = convert[func] = (function(func) { \n    return function(arg) {\n      if (typeof arg == \"number\")\n        arg = Array.prototype.slice.call(arguments);\n      \n      var val = conversions[func](arg);\n      if (typeof val == \"string\" || val === undefined)\n        return val; // keyword\n\n      for (var i = 0; i < val.length; i++)\n        val[i] = Math.round(val[i]);\n      return val;\n    }\n  })(func);\n}\n\n\n/* Converter does lazy conversion and caching */\nvar Converter = function() {\n   this.convs = {};\n};\n\n/* Either get the values for a space or\n  set the values for a space, depending on args */\nConverter.prototype.routeSpace = function(space, args) {\n   var values = args[0];\n   if (values === undefined) {\n      // color.rgb()\n      return this.getValues(space);\n   }\n   // color.rgb(10, 10, 10)\n   if (typeof values == \"number\") {\n      values = Array.prototype.slice.call(args);        \n   }\n\n   return this.setValues(space, values);\n};\n  \n/* Set the values for a space, invalidating cache */\nConverter.prototype.setValues = function(space, values) {\n   this.space = space;\n   this.convs = {};\n   this.convs[space] = values;\n   return this;\n};\n\n/* Get the values for a space. If there's already\n  a conversion for the space, fetch it, otherwise\n  compute it */\nConverter.prototype.getValues = function(space) {\n   var vals = this.convs[space];\n   if (!vals) {\n      var fspace = this.space,\n          from = this.convs[fspace];\n      vals = convert[fspace][space](from);\n\n      this.convs[space] = vals;\n   }\n  return vals;\n};\n\n[\"rgb\", \"hsl\", \"hsv\", \"cmyk\", \"keyword\"].forEach(function(space) {\n   Converter.prototype[space] = function(vals) {\n      return this.routeSpace(space, arguments);\n   }\n});\n\nmodule.exports = convert;\n},{\"4\":4}],6:[function(require,module,exports){\nmodule.exports = {\n\t\"aliceblue\": [240, 248, 255],\n\t\"antiquewhite\": [250, 235, 215],\n\t\"aqua\": [0, 255, 255],\n\t\"aquamarine\": [127, 255, 212],\n\t\"azure\": [240, 255, 255],\n\t\"beige\": [245, 245, 220],\n\t\"bisque\": [255, 228, 196],\n\t\"black\": [0, 0, 0],\n\t\"blanchedalmond\": [255, 235, 205],\n\t\"blue\": [0, 0, 255],\n\t\"blueviolet\": [138, 43, 226],\n\t\"brown\": [165, 42, 42],\n\t\"burlywood\": [222, 184, 135],\n\t\"cadetblue\": [95, 158, 160],\n\t\"chartreuse\": [127, 255, 0],\n\t\"chocolate\": [210, 105, 30],\n\t\"coral\": [255, 127, 80],\n\t\"cornflowerblue\": [100, 149, 237],\n\t\"cornsilk\": [255, 248, 220],\n\t\"crimson\": [220, 20, 60],\n\t\"cyan\": [0, 255, 255],\n\t\"darkblue\": [0, 0, 139],\n\t\"darkcyan\": [0, 139, 139],\n\t\"darkgoldenrod\": [184, 134, 11],\n\t\"darkgray\": [169, 169, 169],\n\t\"darkgreen\": [0, 100, 0],\n\t\"darkgrey\": [169, 169, 169],\n\t\"darkkhaki\": [189, 183, 107],\n\t\"darkmagenta\": [139, 0, 139],\n\t\"darkolivegreen\": [85, 107, 47],\n\t\"darkorange\": [255, 140, 0],\n\t\"darkorchid\": [153, 50, 204],\n\t\"darkred\": [139, 0, 0],\n\t\"darksalmon\": [233, 150, 122],\n\t\"darkseagreen\": [143, 188, 143],\n\t\"darkslateblue\": [72, 61, 139],\n\t\"darkslategray\": [47, 79, 79],\n\t\"darkslategrey\": [47, 79, 79],\n\t\"darkturquoise\": [0, 206, 209],\n\t\"darkviolet\": [148, 0, 211],\n\t\"deeppink\": [255, 20, 147],\n\t\"deepskyblue\": [0, 191, 255],\n\t\"dimgray\": [105, 105, 105],\n\t\"dimgrey\": [105, 105, 105],\n\t\"dodgerblue\": [30, 144, 255],\n\t\"firebrick\": [178, 34, 34],\n\t\"floralwhite\": [255, 250, 240],\n\t\"forestgreen\": [34, 139, 34],\n\t\"fuchsia\": [255, 0, 255],\n\t\"gainsboro\": [220, 220, 220],\n\t\"ghostwhite\": [248, 248, 255],\n\t\"gold\": [255, 215, 0],\n\t\"goldenrod\": [218, 165, 32],\n\t\"gray\": [128, 128, 128],\n\t\"green\": [0, 128, 0],\n\t\"greenyellow\": [173, 255, 47],\n\t\"grey\": [128, 128, 128],\n\t\"honeydew\": [240, 255, 240],\n\t\"hotpink\": [255, 105, 180],\n\t\"indianred\": [205, 92, 92],\n\t\"indigo\": [75, 0, 130],\n\t\"ivory\": [255, 255, 240],\n\t\"khaki\": [240, 230, 140],\n\t\"lavender\": [230, 230, 250],\n\t\"lavenderblush\": [255, 240, 245],\n\t\"lawngreen\": [124, 252, 0],\n\t\"lemonchiffon\": [255, 250, 205],\n\t\"lightblue\": [173, 216, 230],\n\t\"lightcoral\": [240, 128, 128],\n\t\"lightcyan\": [224, 255, 255],\n\t\"lightgoldenrodyellow\": [250, 250, 210],\n\t\"lightgray\": [211, 211, 211],\n\t\"lightgreen\": [144, 238, 144],\n\t\"lightgrey\": [211, 211, 211],\n\t\"lightpink\": [255, 182, 193],\n\t\"lightsalmon\": [255, 160, 122],\n\t\"lightseagreen\": [32, 178, 170],\n\t\"lightskyblue\": [135, 206, 250],\n\t\"lightslategray\": [119, 136, 153],\n\t\"lightslategrey\": [119, 136, 153],\n\t\"lightsteelblue\": [176, 196, 222],\n\t\"lightyellow\": [255, 255, 224],\n\t\"lime\": [0, 255, 0],\n\t\"limegreen\": [50, 205, 50],\n\t\"linen\": [250, 240, 230],\n\t\"magenta\": [255, 0, 255],\n\t\"maroon\": [128, 0, 0],\n\t\"mediumaquamarine\": [102, 205, 170],\n\t\"mediumblue\": [0, 0, 205],\n\t\"mediumorchid\": [186, 85, 211],\n\t\"mediumpurple\": [147, 112, 219],\n\t\"mediumseagreen\": [60, 179, 113],\n\t\"mediumslateblue\": [123, 104, 238],\n\t\"mediumspringgreen\": [0, 250, 154],\n\t\"mediumturquoise\": [72, 209, 204],\n\t\"mediumvioletred\": [199, 21, 133],\n\t\"midnightblue\": [25, 25, 112],\n\t\"mintcream\": [245, 255, 250],\n\t\"mistyrose\": [255, 228, 225],\n\t\"moccasin\": [255, 228, 181],\n\t\"navajowhite\": [255, 222, 173],\n\t\"navy\": [0, 0, 128],\n\t\"oldlace\": [253, 245, 230],\n\t\"olive\": [128, 128, 0],\n\t\"olivedrab\": [107, 142, 35],\n\t\"orange\": [255, 165, 0],\n\t\"orangered\": [255, 69, 0],\n\t\"orchid\": [218, 112, 214],\n\t\"palegoldenrod\": [238, 232, 170],\n\t\"palegreen\": [152, 251, 152],\n\t\"paleturquoise\": [175, 238, 238],\n\t\"palevioletred\": [219, 112, 147],\n\t\"papayawhip\": [255, 239, 213],\n\t\"peachpuff\": [255, 218, 185],\n\t\"peru\": [205, 133, 63],\n\t\"pink\": [255, 192, 203],\n\t\"plum\": [221, 160, 221],\n\t\"powderblue\": [176, 224, 230],\n\t\"purple\": [128, 0, 128],\n\t\"rebeccapurple\": [102, 51, 153],\n\t\"red\": [255, 0, 0],\n\t\"rosybrown\": [188, 143, 143],\n\t\"royalblue\": [65, 105, 225],\n\t\"saddlebrown\": [139, 69, 19],\n\t\"salmon\": [250, 128, 114],\n\t\"sandybrown\": [244, 164, 96],\n\t\"seagreen\": [46, 139, 87],\n\t\"seashell\": [255, 245, 238],\n\t\"sienna\": [160, 82, 45],\n\t\"silver\": [192, 192, 192],\n\t\"skyblue\": [135, 206, 235],\n\t\"slateblue\": [106, 90, 205],\n\t\"slategray\": [112, 128, 144],\n\t\"slategrey\": [112, 128, 144],\n\t\"snow\": [255, 250, 250],\n\t\"springgreen\": [0, 255, 127],\n\t\"steelblue\": [70, 130, 180],\n\t\"tan\": [210, 180, 140],\n\t\"teal\": [0, 128, 128],\n\t\"thistle\": [216, 191, 216],\n\t\"tomato\": [255, 99, 71],\n\t\"turquoise\": [64, 224, 208],\n\t\"violet\": [238, 130, 238],\n\t\"wheat\": [245, 222, 179],\n\t\"white\": [255, 255, 255],\n\t\"whitesmoke\": [245, 245, 245],\n\t\"yellow\": [255, 255, 0],\n\t\"yellowgreen\": [154, 205, 50]\n};\n},{}],7:[function(require,module,exports){\n/**\n * @namespace Chart\n */\nvar Chart = require(28)();\n\nrequire(26)(Chart);\nrequire(40)(Chart);\nrequire(22)(Chart);\nrequire(25)(Chart);\nrequire(30)(Chart);\nrequire(21)(Chart);\nrequire(23)(Chart);\nrequire(24)(Chart);\nrequire(29)(Chart);\nrequire(32)(Chart);\nrequire(33)(Chart);\nrequire(31)(Chart);\nrequire(27)(Chart);\nrequire(34)(Chart);\n\nrequire(35)(Chart);\nrequire(36)(Chart);\nrequire(37)(Chart);\nrequire(38)(Chart);\n\nrequire(46)(Chart);\nrequire(44)(Chart);\nrequire(45)(Chart);\nrequire(47)(Chart);\nrequire(48)(Chart);\nrequire(49)(Chart);\n\n// Controllers must be loaded after elements\n// See Chart.core.datasetController.dataElementType\nrequire(15)(Chart);\nrequire(16)(Chart);\nrequire(17)(Chart);\nrequire(18)(Chart);\nrequire(19)(Chart);\nrequire(20)(Chart);\n\nrequire(8)(Chart);\nrequire(9)(Chart);\nrequire(10)(Chart);\nrequire(11)(Chart);\nrequire(12)(Chart);\nrequire(13)(Chart);\nrequire(14)(Chart);\n\n// Loading built-it plugins\nvar plugins = [];\n\nplugins.push(\n    require(41)(Chart),\n    require(42)(Chart),\n    require(43)(Chart)\n);\n\nChart.plugins.register(plugins);\n\nmodule.exports = Chart;\nif (typeof window !== 'undefined') {\n\twindow.Chart = Chart;\n}\n\n},{\"10\":10,\"11\":11,\"12\":12,\"13\":13,\"14\":14,\"15\":15,\"16\":16,\"17\":17,\"18\":18,\"19\":19,\"20\":20,\"21\":21,\"22\":22,\"23\":23,\"24\":24,\"25\":25,\"26\":26,\"27\":27,\"28\":28,\"29\":29,\"30\":30,\"31\":31,\"32\":32,\"33\":33,\"34\":34,\"35\":35,\"36\":36,\"37\":37,\"38\":38,\"40\":40,\"41\":41,\"42\":42,\"43\":43,\"44\":44,\"45\":45,\"46\":46,\"47\":47,\"48\":48,\"49\":49,\"8\":8,\"9\":9}],8:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\n\tChart.Bar = function(context, config) {\n\t\tconfig.type = 'bar';\n\n\t\treturn new Chart(context, config);\n\t};\n\n};\n\n},{}],9:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\n\tChart.Bubble = function(context, config) {\n\t\tconfig.type = 'bubble';\n\t\treturn new Chart(context, config);\n\t};\n\n};\n\n},{}],10:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\n\tChart.Doughnut = function(context, config) {\n\t\tconfig.type = 'doughnut';\n\n\t\treturn new Chart(context, config);\n\t};\n\n};\n\n},{}],11:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\n\tChart.Line = function(context, config) {\n\t\tconfig.type = 'line';\n\n\t\treturn new Chart(context, config);\n\t};\n\n};\n\n},{}],12:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\n\tChart.PolarArea = function(context, config) {\n\t\tconfig.type = 'polarArea';\n\n\t\treturn new Chart(context, config);\n\t};\n\n};\n\n},{}],13:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\n\tChart.Radar = function(context, config) {\n\t\tconfig.type = 'radar';\n\n\t\treturn new Chart(context, config);\n\t};\n\n};\n\n},{}],14:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\n\tvar defaultConfig = {\n\t\thover: {\n\t\t\tmode: 'single'\n\t\t},\n\n\t\tscales: {\n\t\t\txAxes: [{\n\t\t\t\ttype: 'linear', // scatter should not use a category axis\n\t\t\t\tposition: 'bottom',\n\t\t\t\tid: 'x-axis-1' // need an ID so datasets can reference the scale\n\t\t\t}],\n\t\t\tyAxes: [{\n\t\t\t\ttype: 'linear',\n\t\t\t\tposition: 'left',\n\t\t\t\tid: 'y-axis-1'\n\t\t\t}]\n\t\t},\n\n\t\ttooltips: {\n\t\t\tcallbacks: {\n\t\t\t\ttitle: function() {\n\t\t\t\t\t// Title doesn't make sense for scatter since we format the data as a point\n\t\t\t\t\treturn '';\n\t\t\t\t},\n\t\t\t\tlabel: function(tooltipItem) {\n\t\t\t\t\treturn '(' + tooltipItem.xLabel + ', ' + tooltipItem.yLabel + ')';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\t// Register the default config for this type\n\tChart.defaults.scatter = defaultConfig;\n\n\t// Scatter charts use line controllers\n\tChart.controllers.scatter = Chart.controllers.line;\n\n\tChart.Scatter = function(context, config) {\n\t\tconfig.type = 'scatter';\n\t\treturn new Chart(context, config);\n\t};\n\n};\n\n},{}],15:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\n\tvar helpers = Chart.helpers;\n\n\tChart.defaults.bar = {\n\t\thover: {\n\t\t\tmode: 'label'\n\t\t},\n\n\t\tscales: {\n\t\t\txAxes: [{\n\t\t\t\ttype: 'category',\n\n\t\t\t\t// Specific to Bar Controller\n\t\t\t\tcategoryPercentage: 0.8,\n\t\t\t\tbarPercentage: 0.9,\n\n\t\t\t\t// grid line settings\n\t\t\t\tgridLines: {\n\t\t\t\t\toffsetGridLines: true\n\t\t\t\t}\n\t\t\t}],\n\t\t\tyAxes: [{\n\t\t\t\ttype: 'linear'\n\t\t\t}]\n\t\t}\n\t};\n\n\tChart.controllers.bar = Chart.DatasetController.extend({\n\n\t\tdataElementType: Chart.elements.Rectangle,\n\n\t\tinitialize: function() {\n\t\t\tvar me = this;\n\t\t\tvar meta;\n\n\t\t\tChart.DatasetController.prototype.initialize.apply(me, arguments);\n\n\t\t\tmeta = me.getMeta();\n\t\t\tmeta.stack = me.getDataset().stack;\n\t\t\tmeta.bar = true;\n\t\t},\n\n\t\tupdate: function(reset) {\n\t\t\tvar me = this;\n\t\t\tvar elements = me.getMeta().data;\n\t\t\tvar i, ilen;\n\n\t\t\tme._ruler = me.getRuler();\n\n\t\t\tfor (i = 0, ilen = elements.length; i < ilen; ++i) {\n\t\t\t\tme.updateElement(elements[i], i, reset);\n\t\t\t}\n\t\t},\n\n\t\tupdateElement: function(rectangle, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar custom = rectangle.custom || {};\n\t\t\tvar rectangleOptions = chart.options.elements.rectangle;\n\n\t\t\trectangle._xScale = me.getScaleForId(meta.xAxisID);\n\t\t\trectangle._yScale = me.getScaleForId(meta.yAxisID);\n\t\t\trectangle._datasetIndex = me.index;\n\t\t\trectangle._index = index;\n\n\t\t\trectangle._model = {\n\t\t\t\tdatasetLabel: dataset.label,\n\t\t\t\tlabel: chart.data.labels[index],\n\t\t\t\tborderSkipped: custom.borderSkipped ? custom.borderSkipped : rectangleOptions.borderSkipped,\n\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : helpers.getValueAtIndexOrDefault(dataset.backgroundColor, index, rectangleOptions.backgroundColor),\n\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : helpers.getValueAtIndexOrDefault(dataset.borderColor, index, rectangleOptions.borderColor),\n\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : helpers.getValueAtIndexOrDefault(dataset.borderWidth, index, rectangleOptions.borderWidth)\n\t\t\t};\n\n\t\t\tme.updateElementGeometry(rectangle, index, reset);\n\n\t\t\trectangle.pivot();\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tupdateElementGeometry: function(rectangle, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar model = rectangle._model;\n\t\t\tvar vscale = me.getValueScale();\n\t\t\tvar base = vscale.getBasePixel();\n\t\t\tvar horizontal = vscale.isHorizontal();\n\t\t\tvar ruler = me._ruler || me.getRuler();\n\t\t\tvar vpixels = me.calculateBarValuePixels(me.index, index);\n\t\t\tvar ipixels = me.calculateBarIndexPixels(me.index, index, ruler);\n\n\t\t\tmodel.horizontal = horizontal;\n\t\t\tmodel.base = reset? base : vpixels.base;\n\t\t\tmodel.x = horizontal? reset? base : vpixels.head : ipixels.center;\n\t\t\tmodel.y = horizontal? ipixels.center : reset? base : vpixels.head;\n\t\t\tmodel.height = horizontal? ipixels.size : undefined;\n\t\t\tmodel.width = horizontal? undefined : ipixels.size;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetValueScaleId: function() {\n\t\t\treturn this.getMeta().yAxisID;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetIndexScaleId: function() {\n\t\t\treturn this.getMeta().xAxisID;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetValueScale: function() {\n\t\t\treturn this.getScaleForId(this.getValueScaleId());\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetIndexScale: function() {\n\t\t\treturn this.getScaleForId(this.getIndexScaleId());\n\t\t},\n\n\t\t/**\n\t\t * Returns the effective number of stacks based on groups and bar visibility.\n\t\t * @private\n\t\t */\n\t\tgetStackCount: function(last) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar scale = me.getIndexScale();\n\t\t\tvar stacked = scale.options.stacked;\n\t\t\tvar ilen = last === undefined? chart.data.datasets.length : last + 1;\n\t\t\tvar stacks = [];\n\t\t\tvar i, meta;\n\n\t\t\tfor (i = 0; i < ilen; ++i) {\n\t\t\t\tmeta = chart.getDatasetMeta(i);\n\t\t\t\tif (meta.bar && chart.isDatasetVisible(i) &&\n\t\t\t\t\t(stacked === false ||\n\t\t\t\t\t(stacked === true && stacks.indexOf(meta.stack) === -1) ||\n\t\t\t\t\t(stacked === undefined && (meta.stack === undefined || stacks.indexOf(meta.stack) === -1)))) {\n\t\t\t\t\tstacks.push(meta.stack);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn stacks.length;\n\t\t},\n\n\t\t/**\n\t\t * Returns the stack index for the given dataset based on groups and bar visibility.\n\t\t * @private\n\t\t */\n\t\tgetStackIndex: function(datasetIndex) {\n\t\t\treturn this.getStackCount(datasetIndex) - 1;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetRuler: function() {\n\t\t\tvar me = this;\n\t\t\tvar scale = me.getIndexScale();\n\t\t\tvar options = scale.options;\n\t\t\tvar stackCount = me.getStackCount();\n\t\t\tvar fullSize = scale.isHorizontal()? scale.width : scale.height;\n\t\t\tvar tickSize = fullSize / scale.ticks.length;\n\t\t\tvar categorySize = tickSize * options.categoryPercentage;\n\t\t\tvar fullBarSize = categorySize / stackCount;\n\t\t\tvar barSize = fullBarSize * options.barPercentage;\n\n\t\t\tbarSize = Math.min(\n\t\t\t\thelpers.getValueOrDefault(options.barThickness, barSize),\n\t\t\t\thelpers.getValueOrDefault(options.maxBarThickness, Infinity));\n\n\t\t\treturn {\n\t\t\t\tstackCount: stackCount,\n\t\t\t\ttickSize: tickSize,\n\t\t\t\tcategorySize: categorySize,\n\t\t\t\tcategorySpacing: tickSize - categorySize,\n\t\t\t\tfullBarSize: fullBarSize,\n\t\t\t\tbarSize: barSize,\n\t\t\t\tbarSpacing: fullBarSize - barSize,\n\t\t\t\tscale: scale\n\t\t\t};\n\t\t},\n\n\t\t/**\n\t\t * Note: pixel values are not clamped to the scale area.\n\t\t * @private\n\t\t */\n\t\tcalculateBarValuePixels: function(datasetIndex, index) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar scale = me.getValueScale();\n\t\t\tvar datasets = chart.data.datasets;\n\t\t\tvar value = Number(datasets[datasetIndex].data[index]);\n\t\t\tvar stacked = scale.options.stacked;\n\t\t\tvar stack = meta.stack;\n\t\t\tvar start = 0;\n\t\t\tvar i, imeta, ivalue, base, head, size;\n\n\t\t\tif (stacked || (stacked === undefined && stack !== undefined)) {\n\t\t\t\tfor (i = 0; i < datasetIndex; ++i) {\n\t\t\t\t\timeta = chart.getDatasetMeta(i);\n\n\t\t\t\t\tif (imeta.bar &&\n\t\t\t\t\t\timeta.stack === stack &&\n\t\t\t\t\t\timeta.controller.getValueScaleId() === scale.id &&\n\t\t\t\t\t\tchart.isDatasetVisible(i)) {\n\n\t\t\t\t\t\tivalue = Number(datasets[i].data[index]);\n\t\t\t\t\t\tif ((value < 0 && ivalue < 0) || (value >= 0 && ivalue > 0)) {\n\t\t\t\t\t\t\tstart += ivalue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tbase = scale.getPixelForValue(start);\n\t\t\thead = scale.getPixelForValue(start + value);\n\t\t\tsize = (head - base) / 2;\n\n\t\t\treturn {\n\t\t\t\tsize: size,\n\t\t\t\tbase: base,\n\t\t\t\thead: head,\n\t\t\t\tcenter: head + size / 2\n\t\t\t};\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tcalculateBarIndexPixels: function(datasetIndex, index, ruler) {\n\t\t\tvar me = this;\n\t\t\tvar scale = ruler.scale;\n\t\t\tvar isCombo = me.chart.isCombo;\n\t\t\tvar stackIndex = me.getStackIndex(datasetIndex);\n\t\t\tvar base = scale.getPixelForValue(null, index, datasetIndex, isCombo);\n\t\t\tvar size = ruler.barSize;\n\n\t\t\tbase -= isCombo? ruler.tickSize / 2 : 0;\n\t\t\tbase += ruler.fullBarSize * stackIndex;\n\t\t\tbase += ruler.categorySpacing / 2;\n\t\t\tbase += ruler.barSpacing / 2;\n\n\t\t\treturn {\n\t\t\t\tsize: size,\n\t\t\t\tbase: base,\n\t\t\t\thead: base + size,\n\t\t\t\tcenter: base + size / 2\n\t\t\t};\n\t\t},\n\n\t\tdraw: function() {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar elements = me.getMeta().data;\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar ilen = elements.length;\n\t\t\tvar i = 0;\n\t\t\tvar d;\n\n\t\t\thelpers.canvas.clipArea(chart.ctx, chart.chartArea);\n\n\t\t\tfor (; i<ilen; ++i) {\n\t\t\t\td = dataset.data[i];\n\t\t\t\tif (d !== null && d !== undefined && !isNaN(d)) {\n\t\t\t\t\telements[i].draw();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\thelpers.canvas.unclipArea(chart.ctx);\n\t\t},\n\n\t\tsetHoverStyle: function(rectangle) {\n\t\t\tvar dataset = this.chart.data.datasets[rectangle._datasetIndex];\n\t\t\tvar index = rectangle._index;\n\t\t\tvar custom = rectangle.custom || {};\n\t\t\tvar model = rectangle._model;\n\n\t\t\tmodel.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : helpers.getValueAtIndexOrDefault(dataset.hoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor));\n\t\t\tmodel.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : helpers.getValueAtIndexOrDefault(dataset.hoverBorderColor, index, helpers.getHoverColor(model.borderColor));\n\t\t\tmodel.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : helpers.getValueAtIndexOrDefault(dataset.hoverBorderWidth, index, model.borderWidth);\n\t\t},\n\n\t\tremoveHoverStyle: function(rectangle) {\n\t\t\tvar dataset = this.chart.data.datasets[rectangle._datasetIndex];\n\t\t\tvar index = rectangle._index;\n\t\t\tvar custom = rectangle.custom || {};\n\t\t\tvar model = rectangle._model;\n\t\t\tvar rectangleElementOptions = this.chart.options.elements.rectangle;\n\n\t\t\tmodel.backgroundColor = custom.backgroundColor ? custom.backgroundColor : helpers.getValueAtIndexOrDefault(dataset.backgroundColor, index, rectangleElementOptions.backgroundColor);\n\t\t\tmodel.borderColor = custom.borderColor ? custom.borderColor : helpers.getValueAtIndexOrDefault(dataset.borderColor, index, rectangleElementOptions.borderColor);\n\t\t\tmodel.borderWidth = custom.borderWidth ? custom.borderWidth : helpers.getValueAtIndexOrDefault(dataset.borderWidth, index, rectangleElementOptions.borderWidth);\n\t\t}\n\t});\n\n\n\t// including horizontalBar in the bar file, instead of a file of its own\n\t// it extends bar (like pie extends doughnut)\n\tChart.defaults.horizontalBar = {\n\t\thover: {\n\t\t\tmode: 'label'\n\t\t},\n\n\t\tscales: {\n\t\t\txAxes: [{\n\t\t\t\ttype: 'linear',\n\t\t\t\tposition: 'bottom'\n\t\t\t}],\n\t\t\tyAxes: [{\n\t\t\t\tposition: 'left',\n\t\t\t\ttype: 'category',\n\n\t\t\t\t// Specific to Horizontal Bar Controller\n\t\t\t\tcategoryPercentage: 0.8,\n\t\t\t\tbarPercentage: 0.9,\n\n\t\t\t\t// grid line settings\n\t\t\t\tgridLines: {\n\t\t\t\t\toffsetGridLines: true\n\t\t\t\t}\n\t\t\t}]\n\t\t},\n\t\telements: {\n\t\t\trectangle: {\n\t\t\t\tborderSkipped: 'left'\n\t\t\t}\n\t\t},\n\t\ttooltips: {\n\t\t\tcallbacks: {\n\t\t\t\ttitle: function(tooltipItems, data) {\n\t\t\t\t\t// Pick first xLabel for now\n\t\t\t\t\tvar title = '';\n\n\t\t\t\t\tif (tooltipItems.length > 0) {\n\t\t\t\t\t\tif (tooltipItems[0].yLabel) {\n\t\t\t\t\t\t\ttitle = tooltipItems[0].yLabel;\n\t\t\t\t\t\t} else if (data.labels.length > 0 && tooltipItems[0].index < data.labels.length) {\n\t\t\t\t\t\t\ttitle = data.labels[tooltipItems[0].index];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn title;\n\t\t\t\t},\n\t\t\t\tlabel: function(tooltipItem, data) {\n\t\t\t\t\tvar datasetLabel = data.datasets[tooltipItem.datasetIndex].label || '';\n\t\t\t\t\treturn datasetLabel + ': ' + tooltipItem.xLabel;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tChart.controllers.horizontalBar = Chart.controllers.bar.extend({\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetValueScaleId: function() {\n\t\t\treturn this.getMeta().xAxisID;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetIndexScaleId: function() {\n\t\t\treturn this.getMeta().yAxisID;\n\t\t}\n\t});\n};\n\n},{}],16:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\n\tvar helpers = Chart.helpers;\n\n\tChart.defaults.bubble = {\n\t\thover: {\n\t\t\tmode: 'single'\n\t\t},\n\n\t\tscales: {\n\t\t\txAxes: [{\n\t\t\t\ttype: 'linear', // bubble should probably use a linear scale by default\n\t\t\t\tposition: 'bottom',\n\t\t\t\tid: 'x-axis-0' // need an ID so datasets can reference the scale\n\t\t\t}],\n\t\t\tyAxes: [{\n\t\t\t\ttype: 'linear',\n\t\t\t\tposition: 'left',\n\t\t\t\tid: 'y-axis-0'\n\t\t\t}]\n\t\t},\n\n\t\ttooltips: {\n\t\t\tcallbacks: {\n\t\t\t\ttitle: function() {\n\t\t\t\t\t// Title doesn't make sense for scatter since we format the data as a point\n\t\t\t\t\treturn '';\n\t\t\t\t},\n\t\t\t\tlabel: function(tooltipItem, data) {\n\t\t\t\t\tvar datasetLabel = data.datasets[tooltipItem.datasetIndex].label || '';\n\t\t\t\t\tvar dataPoint = data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index];\n\t\t\t\t\treturn datasetLabel + ': (' + tooltipItem.xLabel + ', ' + tooltipItem.yLabel + ', ' + dataPoint.r + ')';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tChart.controllers.bubble = Chart.DatasetController.extend({\n\n\t\tdataElementType: Chart.elements.Point,\n\n\t\tupdate: function(reset) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar points = meta.data;\n\n\t\t\t// Update Points\n\t\t\thelpers.each(points, function(point, index) {\n\t\t\t\tme.updateElement(point, index, reset);\n\t\t\t});\n\t\t},\n\n\t\tupdateElement: function(point, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar xScale = me.getScaleForId(meta.xAxisID);\n\t\t\tvar yScale = me.getScaleForId(meta.yAxisID);\n\n\t\t\tvar custom = point.custom || {};\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar data = dataset.data[index];\n\t\t\tvar pointElementOptions = me.chart.options.elements.point;\n\t\t\tvar dsIndex = me.index;\n\n\t\t\thelpers.extend(point, {\n\t\t\t\t// Utility\n\t\t\t\t_xScale: xScale,\n\t\t\t\t_yScale: yScale,\n\t\t\t\t_datasetIndex: dsIndex,\n\t\t\t\t_index: index,\n\n\t\t\t\t// Desired view properties\n\t\t\t\t_model: {\n\t\t\t\t\tx: reset ? xScale.getPixelForDecimal(0.5) : xScale.getPixelForValue(typeof data === 'object' ? data : NaN, index, dsIndex, me.chart.isCombo),\n\t\t\t\t\ty: reset ? yScale.getBasePixel() : yScale.getPixelForValue(data, index, dsIndex),\n\t\t\t\t\t// Appearance\n\t\t\t\t\tradius: reset ? 0 : custom.radius ? custom.radius : me.getRadius(data),\n\n\t\t\t\t\t// Tooltip\n\t\t\t\t\thitRadius: custom.hitRadius ? custom.hitRadius : helpers.getValueAtIndexOrDefault(dataset.hitRadius, index, pointElementOptions.hitRadius)\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// Trick to reset the styles of the point\n\t\t\tChart.DatasetController.prototype.removeHoverStyle.call(me, point, pointElementOptions);\n\n\t\t\tvar model = point._model;\n\t\t\tmodel.skip = custom.skip ? custom.skip : (isNaN(model.x) || isNaN(model.y));\n\n\t\t\tpoint.pivot();\n\t\t},\n\n\t\tgetRadius: function(value) {\n\t\t\treturn value.r || this.chart.options.elements.point.radius;\n\t\t},\n\n\t\tsetHoverStyle: function(point) {\n\t\t\tvar me = this;\n\t\t\tChart.DatasetController.prototype.setHoverStyle.call(me, point);\n\n\t\t\t// Radius\n\t\t\tvar dataset = me.chart.data.datasets[point._datasetIndex];\n\t\t\tvar index = point._index;\n\t\t\tvar custom = point.custom || {};\n\t\t\tvar model = point._model;\n\t\t\tmodel.radius = custom.hoverRadius ? custom.hoverRadius : (helpers.getValueAtIndexOrDefault(dataset.hoverRadius, index, me.chart.options.elements.point.hoverRadius)) + me.getRadius(dataset.data[index]);\n\t\t},\n\n\t\tremoveHoverStyle: function(point) {\n\t\t\tvar me = this;\n\t\t\tChart.DatasetController.prototype.removeHoverStyle.call(me, point, me.chart.options.elements.point);\n\n\t\t\tvar dataVal = me.chart.data.datasets[point._datasetIndex].data[point._index];\n\t\t\tvar custom = point.custom || {};\n\t\t\tvar model = point._model;\n\n\t\t\tmodel.radius = custom.radius ? custom.radius : me.getRadius(dataVal);\n\t\t}\n\t});\n};\n\n},{}],17:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\n\tvar helpers = Chart.helpers,\n\t\tdefaults = Chart.defaults;\n\n\tdefaults.doughnut = {\n\t\tanimation: {\n\t\t\t// Boolean - Whether we animate the rotation of the Doughnut\n\t\t\tanimateRotate: true,\n\t\t\t// Boolean - Whether we animate scaling the Doughnut from the centre\n\t\t\tanimateScale: false\n\t\t},\n\t\taspectRatio: 1,\n\t\thover: {\n\t\t\tmode: 'single'\n\t\t},\n\t\tlegendCallback: function(chart) {\n\t\t\tvar text = [];\n\t\t\ttext.push('<ul class=\"' + chart.id + '-legend\">');\n\n\t\t\tvar data = chart.data;\n\t\t\tvar datasets = data.datasets;\n\t\t\tvar labels = data.labels;\n\n\t\t\tif (datasets.length) {\n\t\t\t\tfor (var i = 0; i < datasets[0].data.length; ++i) {\n\t\t\t\t\ttext.push('<li><span style=\"background-color:' + datasets[0].backgroundColor[i] + '\"></span>');\n\t\t\t\t\tif (labels[i]) {\n\t\t\t\t\t\ttext.push(labels[i]);\n\t\t\t\t\t}\n\t\t\t\t\ttext.push('</li>');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttext.push('</ul>');\n\t\t\treturn text.join('');\n\t\t},\n\t\tlegend: {\n\t\t\tlabels: {\n\t\t\t\tgenerateLabels: function(chart) {\n\t\t\t\t\tvar data = chart.data;\n\t\t\t\t\tif (data.labels.length && data.datasets.length) {\n\t\t\t\t\t\treturn data.labels.map(function(label, i) {\n\t\t\t\t\t\t\tvar meta = chart.getDatasetMeta(0);\n\t\t\t\t\t\t\tvar ds = data.datasets[0];\n\t\t\t\t\t\t\tvar arc = meta.data[i];\n\t\t\t\t\t\t\tvar custom = arc && arc.custom || {};\n\t\t\t\t\t\t\tvar getValueAtIndexOrDefault = helpers.getValueAtIndexOrDefault;\n\t\t\t\t\t\t\tvar arcOpts = chart.options.elements.arc;\n\t\t\t\t\t\t\tvar fill = custom.backgroundColor ? custom.backgroundColor : getValueAtIndexOrDefault(ds.backgroundColor, i, arcOpts.backgroundColor);\n\t\t\t\t\t\t\tvar stroke = custom.borderColor ? custom.borderColor : getValueAtIndexOrDefault(ds.borderColor, i, arcOpts.borderColor);\n\t\t\t\t\t\t\tvar bw = custom.borderWidth ? custom.borderWidth : getValueAtIndexOrDefault(ds.borderWidth, i, arcOpts.borderWidth);\n\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\ttext: label,\n\t\t\t\t\t\t\t\tfillStyle: fill,\n\t\t\t\t\t\t\t\tstrokeStyle: stroke,\n\t\t\t\t\t\t\t\tlineWidth: bw,\n\t\t\t\t\t\t\t\thidden: isNaN(ds.data[i]) || meta.data[i].hidden,\n\n\t\t\t\t\t\t\t\t// Extra data used for toggling the correct item\n\t\t\t\t\t\t\t\tindex: i\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\treturn [];\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tonClick: function(e, legendItem) {\n\t\t\t\tvar index = legendItem.index;\n\t\t\t\tvar chart = this.chart;\n\t\t\t\tvar i, ilen, meta;\n\n\t\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\n\t\t\t\t\tmeta = chart.getDatasetMeta(i);\n\t\t\t\t\t// toggle visibility of index if exists\n\t\t\t\t\tif (meta.data[index]) {\n\t\t\t\t\t\tmeta.data[index].hidden = !meta.data[index].hidden;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tchart.update();\n\t\t\t}\n\t\t},\n\n\t\t// The percentage of the chart that we cut out of the middle.\n\t\tcutoutPercentage: 50,\n\n\t\t// The rotation of the chart, where the first data arc begins.\n\t\trotation: Math.PI * -0.5,\n\n\t\t// The total circumference of the chart.\n\t\tcircumference: Math.PI * 2.0,\n\n\t\t// Need to override these to give a nice default\n\t\ttooltips: {\n\t\t\tcallbacks: {\n\t\t\t\ttitle: function() {\n\t\t\t\t\treturn '';\n\t\t\t\t},\n\t\t\t\tlabel: function(tooltipItem, data) {\n\t\t\t\t\tvar dataLabel = data.labels[tooltipItem.index];\n\t\t\t\t\tvar value = ': ' + data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index];\n\n\t\t\t\t\tif (helpers.isArray(dataLabel)) {\n\t\t\t\t\t\t// show value on first line of multiline label\n\t\t\t\t\t\t// need to clone because we are changing the value\n\t\t\t\t\t\tdataLabel = dataLabel.slice();\n\t\t\t\t\t\tdataLabel[0] += value;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdataLabel += value;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn dataLabel;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tdefaults.pie = helpers.clone(defaults.doughnut);\n\thelpers.extend(defaults.pie, {\n\t\tcutoutPercentage: 0\n\t});\n\n\n\tChart.controllers.doughnut = Chart.controllers.pie = Chart.DatasetController.extend({\n\n\t\tdataElementType: Chart.elements.Arc,\n\n\t\tlinkScales: helpers.noop,\n\n\t\t// Get index of the dataset in relation to the visible datasets. This allows determining the inner and outer radius correctly\n\t\tgetRingIndex: function(datasetIndex) {\n\t\t\tvar ringIndex = 0;\n\n\t\t\tfor (var j = 0; j < datasetIndex; ++j) {\n\t\t\t\tif (this.chart.isDatasetVisible(j)) {\n\t\t\t\t\t++ringIndex;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn ringIndex;\n\t\t},\n\n\t\tupdate: function(reset) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart,\n\t\t\t\tchartArea = chart.chartArea,\n\t\t\t\topts = chart.options,\n\t\t\t\tarcOpts = opts.elements.arc,\n\t\t\t\tavailableWidth = chartArea.right - chartArea.left - arcOpts.borderWidth,\n\t\t\t\tavailableHeight = chartArea.bottom - chartArea.top - arcOpts.borderWidth,\n\t\t\t\tminSize = Math.min(availableWidth, availableHeight),\n\t\t\t\toffset = {\n\t\t\t\t\tx: 0,\n\t\t\t\t\ty: 0\n\t\t\t\t},\n\t\t\t\tmeta = me.getMeta(),\n\t\t\t\tcutoutPercentage = opts.cutoutPercentage,\n\t\t\t\tcircumference = opts.circumference;\n\n\t\t\t// If the chart's circumference isn't a full circle, calculate minSize as a ratio of the width/height of the arc\n\t\t\tif (circumference < Math.PI * 2.0) {\n\t\t\t\tvar startAngle = opts.rotation % (Math.PI * 2.0);\n\t\t\t\tstartAngle += Math.PI * 2.0 * (startAngle >= Math.PI ? -1 : startAngle < -Math.PI ? 1 : 0);\n\t\t\t\tvar endAngle = startAngle + circumference;\n\t\t\t\tvar start = {x: Math.cos(startAngle), y: Math.sin(startAngle)};\n\t\t\t\tvar end = {x: Math.cos(endAngle), y: Math.sin(endAngle)};\n\t\t\t\tvar contains0 = (startAngle <= 0 && 0 <= endAngle) || (startAngle <= Math.PI * 2.0 && Math.PI * 2.0 <= endAngle);\n\t\t\t\tvar contains90 = (startAngle <= Math.PI * 0.5 && Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 2.5 && Math.PI * 2.5 <= endAngle);\n\t\t\t\tvar contains180 = (startAngle <= -Math.PI && -Math.PI <= endAngle) || (startAngle <= Math.PI && Math.PI <= endAngle);\n\t\t\t\tvar contains270 = (startAngle <= -Math.PI * 0.5 && -Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 1.5 && Math.PI * 1.5 <= endAngle);\n\t\t\t\tvar cutout = cutoutPercentage / 100.0;\n\t\t\t\tvar min = {x: contains180 ? -1 : Math.min(start.x * (start.x < 0 ? 1 : cutout), end.x * (end.x < 0 ? 1 : cutout)), y: contains270 ? -1 : Math.min(start.y * (start.y < 0 ? 1 : cutout), end.y * (end.y < 0 ? 1 : cutout))};\n\t\t\t\tvar max = {x: contains0 ? 1 : Math.max(start.x * (start.x > 0 ? 1 : cutout), end.x * (end.x > 0 ? 1 : cutout)), y: contains90 ? 1 : Math.max(start.y * (start.y > 0 ? 1 : cutout), end.y * (end.y > 0 ? 1 : cutout))};\n\t\t\t\tvar size = {width: (max.x - min.x) * 0.5, height: (max.y - min.y) * 0.5};\n\t\t\t\tminSize = Math.min(availableWidth / size.width, availableHeight / size.height);\n\t\t\t\toffset = {x: (max.x + min.x) * -0.5, y: (max.y + min.y) * -0.5};\n\t\t\t}\n\n\t\t\tchart.borderWidth = me.getMaxBorderWidth(meta.data);\n\t\t\tchart.outerRadius = Math.max((minSize - chart.borderWidth) / 2, 0);\n\t\t\tchart.innerRadius = Math.max(cutoutPercentage ? (chart.outerRadius / 100) * (cutoutPercentage) : 0, 0);\n\t\t\tchart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount();\n\t\t\tchart.offsetX = offset.x * chart.outerRadius;\n\t\t\tchart.offsetY = offset.y * chart.outerRadius;\n\n\t\t\tmeta.total = me.calculateTotal();\n\n\t\t\tme.outerRadius = chart.outerRadius - (chart.radiusLength * me.getRingIndex(me.index));\n\t\t\tme.innerRadius = Math.max(me.outerRadius - chart.radiusLength, 0);\n\n\t\t\thelpers.each(meta.data, function(arc, index) {\n\t\t\t\tme.updateElement(arc, index, reset);\n\t\t\t});\n\t\t},\n\n\t\tupdateElement: function(arc, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart,\n\t\t\t\tchartArea = chart.chartArea,\n\t\t\t\topts = chart.options,\n\t\t\t\tanimationOpts = opts.animation,\n\t\t\t\tcenterX = (chartArea.left + chartArea.right) / 2,\n\t\t\t\tcenterY = (chartArea.top + chartArea.bottom) / 2,\n\t\t\t\tstartAngle = opts.rotation, // non reset case handled later\n\t\t\t\tendAngle = opts.rotation, // non reset case handled later\n\t\t\t\tdataset = me.getDataset(),\n\t\t\t\tcircumference = reset && animationOpts.animateRotate ? 0 : arc.hidden ? 0 : me.calculateCircumference(dataset.data[index]) * (opts.circumference / (2.0 * Math.PI)),\n\t\t\t\tinnerRadius = reset && animationOpts.animateScale ? 0 : me.innerRadius,\n\t\t\t\touterRadius = reset && animationOpts.animateScale ? 0 : me.outerRadius,\n\t\t\t\tvalueAtIndexOrDefault = helpers.getValueAtIndexOrDefault;\n\n\t\t\thelpers.extend(arc, {\n\t\t\t\t// Utility\n\t\t\t\t_datasetIndex: me.index,\n\t\t\t\t_index: index,\n\n\t\t\t\t// Desired view properties\n\t\t\t\t_model: {\n\t\t\t\t\tx: centerX + chart.offsetX,\n\t\t\t\t\ty: centerY + chart.offsetY,\n\t\t\t\t\tstartAngle: startAngle,\n\t\t\t\t\tendAngle: endAngle,\n\t\t\t\t\tcircumference: circumference,\n\t\t\t\t\touterRadius: outerRadius,\n\t\t\t\t\tinnerRadius: innerRadius,\n\t\t\t\t\tlabel: valueAtIndexOrDefault(dataset.label, index, chart.data.labels[index])\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tvar model = arc._model;\n\t\t\t// Resets the visual styles\n\t\t\tthis.removeHoverStyle(arc);\n\n\t\t\t// Set correct angles if not resetting\n\t\t\tif (!reset || !animationOpts.animateRotate) {\n\t\t\t\tif (index === 0) {\n\t\t\t\t\tmodel.startAngle = opts.rotation;\n\t\t\t\t} else {\n\t\t\t\t\tmodel.startAngle = me.getMeta().data[index - 1]._model.endAngle;\n\t\t\t\t}\n\n\t\t\t\tmodel.endAngle = model.startAngle + model.circumference;\n\t\t\t}\n\n\t\t\tarc.pivot();\n\t\t},\n\n\t\tremoveHoverStyle: function(arc) {\n\t\t\tChart.DatasetController.prototype.removeHoverStyle.call(this, arc, this.chart.options.elements.arc);\n\t\t},\n\n\t\tcalculateTotal: function() {\n\t\t\tvar dataset = this.getDataset();\n\t\t\tvar meta = this.getMeta();\n\t\t\tvar total = 0;\n\t\t\tvar value;\n\n\t\t\thelpers.each(meta.data, function(element, index) {\n\t\t\t\tvalue = dataset.data[index];\n\t\t\t\tif (!isNaN(value) && !element.hidden) {\n\t\t\t\t\ttotal += Math.abs(value);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t/* if (total === 0) {\n\t\t\t\ttotal = NaN;\n\t\t\t}*/\n\n\t\t\treturn total;\n\t\t},\n\n\t\tcalculateCircumference: function(value) {\n\t\t\tvar total = this.getMeta().total;\n\t\t\tif (total > 0 && !isNaN(value)) {\n\t\t\t\treturn (Math.PI * 2.0) * (value / total);\n\t\t\t}\n\t\t\treturn 0;\n\t\t},\n\n\t\t// gets the max border or hover width to properly scale pie charts\n\t\tgetMaxBorderWidth: function(elements) {\n\t\t\tvar max = 0,\n\t\t\t\tindex = this.index,\n\t\t\t\tlength = elements.length,\n\t\t\t\tborderWidth,\n\t\t\t\thoverWidth;\n\n\t\t\tfor (var i = 0; i < length; i++) {\n\t\t\t\tborderWidth = elements[i]._model ? elements[i]._model.borderWidth : 0;\n\t\t\t\thoverWidth = elements[i]._chart ? elements[i]._chart.config.data.datasets[index].hoverBorderWidth : 0;\n\n\t\t\t\tmax = borderWidth > max ? borderWidth : max;\n\t\t\t\tmax = hoverWidth > max ? hoverWidth : max;\n\t\t\t}\n\t\t\treturn max;\n\t\t}\n\t});\n};\n\n},{}],18:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\n\tvar helpers = Chart.helpers;\n\n\tChart.defaults.line = {\n\t\tshowLines: true,\n\t\tspanGaps: false,\n\n\t\thover: {\n\t\t\tmode: 'label'\n\t\t},\n\n\t\tscales: {\n\t\t\txAxes: [{\n\t\t\t\ttype: 'category',\n\t\t\t\tid: 'x-axis-0'\n\t\t\t}],\n\t\t\tyAxes: [{\n\t\t\t\ttype: 'linear',\n\t\t\t\tid: 'y-axis-0'\n\t\t\t}]\n\t\t}\n\t};\n\n\tfunction lineEnabled(dataset, options) {\n\t\treturn helpers.getValueOrDefault(dataset.showLine, options.showLines);\n\t}\n\n\tChart.controllers.line = Chart.DatasetController.extend({\n\n\t\tdatasetElementType: Chart.elements.Line,\n\n\t\tdataElementType: Chart.elements.Point,\n\n\t\tupdate: function(reset) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar line = meta.dataset;\n\t\t\tvar points = meta.data || [];\n\t\t\tvar options = me.chart.options;\n\t\t\tvar lineElementOptions = options.elements.line;\n\t\t\tvar scale = me.getScaleForId(meta.yAxisID);\n\t\t\tvar i, ilen, custom;\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar showLine = lineEnabled(dataset, options);\n\n\t\t\t// Update Line\n\t\t\tif (showLine) {\n\t\t\t\tcustom = line.custom || {};\n\n\t\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\n\t\t\t\tif ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) {\n\t\t\t\t\tdataset.lineTension = dataset.tension;\n\t\t\t\t}\n\n\t\t\t\t// Utility\n\t\t\t\tline._scale = scale;\n\t\t\t\tline._datasetIndex = me.index;\n\t\t\t\t// Data\n\t\t\t\tline._children = points;\n\t\t\t\t// Model\n\t\t\t\tline._model = {\n\t\t\t\t\t// Appearance\n\t\t\t\t\t// The default behavior of lines is to break at null values, according\n\t\t\t\t\t// to https://github.com/chartjs/Chart.js/issues/2435#issuecomment-216718158\n\t\t\t\t\t// This option gives lines the ability to span gaps\n\t\t\t\t\tspanGaps: dataset.spanGaps ? dataset.spanGaps : options.spanGaps,\n\t\t\t\t\ttension: custom.tension ? custom.tension : helpers.getValueOrDefault(dataset.lineTension, lineElementOptions.tension),\n\t\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : (dataset.backgroundColor || lineElementOptions.backgroundColor),\n\t\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : (dataset.borderWidth || lineElementOptions.borderWidth),\n\t\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : (dataset.borderColor || lineElementOptions.borderColor),\n\t\t\t\t\tborderCapStyle: custom.borderCapStyle ? custom.borderCapStyle : (dataset.borderCapStyle || lineElementOptions.borderCapStyle),\n\t\t\t\t\tborderDash: custom.borderDash ? custom.borderDash : (dataset.borderDash || lineElementOptions.borderDash),\n\t\t\t\t\tborderDashOffset: custom.borderDashOffset ? custom.borderDashOffset : (dataset.borderDashOffset || lineElementOptions.borderDashOffset),\n\t\t\t\t\tborderJoinStyle: custom.borderJoinStyle ? custom.borderJoinStyle : (dataset.borderJoinStyle || lineElementOptions.borderJoinStyle),\n\t\t\t\t\tfill: custom.fill ? custom.fill : (dataset.fill !== undefined ? dataset.fill : lineElementOptions.fill),\n\t\t\t\t\tsteppedLine: custom.steppedLine ? custom.steppedLine : helpers.getValueOrDefault(dataset.steppedLine, lineElementOptions.stepped),\n\t\t\t\t\tcubicInterpolationMode: custom.cubicInterpolationMode ? custom.cubicInterpolationMode : helpers.getValueOrDefault(dataset.cubicInterpolationMode, lineElementOptions.cubicInterpolationMode),\n\t\t\t\t};\n\n\t\t\t\tline.pivot();\n\t\t\t}\n\n\t\t\t// Update Points\n\t\t\tfor (i=0, ilen=points.length; i<ilen; ++i) {\n\t\t\t\tme.updateElement(points[i], i, reset);\n\t\t\t}\n\n\t\t\tif (showLine && line._model.tension !== 0) {\n\t\t\t\tme.updateBezierControlPoints();\n\t\t\t}\n\n\t\t\t// Now pivot the point for animation\n\t\t\tfor (i=0, ilen=points.length; i<ilen; ++i) {\n\t\t\t\tpoints[i].pivot();\n\t\t\t}\n\t\t},\n\n\t\tgetPointBackgroundColor: function(point, index) {\n\t\t\tvar backgroundColor = this.chart.options.elements.point.backgroundColor;\n\t\t\tvar dataset = this.getDataset();\n\t\t\tvar custom = point.custom || {};\n\n\t\t\tif (custom.backgroundColor) {\n\t\t\t\tbackgroundColor = custom.backgroundColor;\n\t\t\t} else if (dataset.pointBackgroundColor) {\n\t\t\t\tbackgroundColor = helpers.getValueAtIndexOrDefault(dataset.pointBackgroundColor, index, backgroundColor);\n\t\t\t} else if (dataset.backgroundColor) {\n\t\t\t\tbackgroundColor = dataset.backgroundColor;\n\t\t\t}\n\n\t\t\treturn backgroundColor;\n\t\t},\n\n\t\tgetPointBorderColor: function(point, index) {\n\t\t\tvar borderColor = this.chart.options.elements.point.borderColor;\n\t\t\tvar dataset = this.getDataset();\n\t\t\tvar custom = point.custom || {};\n\n\t\t\tif (custom.borderColor) {\n\t\t\t\tborderColor = custom.borderColor;\n\t\t\t} else if (dataset.pointBorderColor) {\n\t\t\t\tborderColor = helpers.getValueAtIndexOrDefault(dataset.pointBorderColor, index, borderColor);\n\t\t\t} else if (dataset.borderColor) {\n\t\t\t\tborderColor = dataset.borderColor;\n\t\t\t}\n\n\t\t\treturn borderColor;\n\t\t},\n\n\t\tgetPointBorderWidth: function(point, index) {\n\t\t\tvar borderWidth = this.chart.options.elements.point.borderWidth;\n\t\t\tvar dataset = this.getDataset();\n\t\t\tvar custom = point.custom || {};\n\n\t\t\tif (!isNaN(custom.borderWidth)) {\n\t\t\t\tborderWidth = custom.borderWidth;\n\t\t\t} else if (!isNaN(dataset.pointBorderWidth)) {\n\t\t\t\tborderWidth = helpers.getValueAtIndexOrDefault(dataset.pointBorderWidth, index, borderWidth);\n\t\t\t} else if (!isNaN(dataset.borderWidth)) {\n\t\t\t\tborderWidth = dataset.borderWidth;\n\t\t\t}\n\n\t\t\treturn borderWidth;\n\t\t},\n\n\t\tupdateElement: function(point, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar custom = point.custom || {};\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar datasetIndex = me.index;\n\t\t\tvar value = dataset.data[index];\n\t\t\tvar yScale = me.getScaleForId(meta.yAxisID);\n\t\t\tvar xScale = me.getScaleForId(meta.xAxisID);\n\t\t\tvar pointOptions = me.chart.options.elements.point;\n\t\t\tvar x, y;\n\t\t\tvar labels = me.chart.data.labels || [];\n\t\t\tvar includeOffset = (labels.length === 1 || dataset.data.length === 1) || me.chart.isCombo;\n\n\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\n\t\t\tif ((dataset.radius !== undefined) && (dataset.pointRadius === undefined)) {\n\t\t\t\tdataset.pointRadius = dataset.radius;\n\t\t\t}\n\t\t\tif ((dataset.hitRadius !== undefined) && (dataset.pointHitRadius === undefined)) {\n\t\t\t\tdataset.pointHitRadius = dataset.hitRadius;\n\t\t\t}\n\n\t\t\tx = xScale.getPixelForValue(typeof value === 'object' ? value : NaN, index, datasetIndex, includeOffset);\n\t\t\ty = reset ? yScale.getBasePixel() : me.calculatePointY(value, index, datasetIndex);\n\n\t\t\t// Utility\n\t\t\tpoint._xScale = xScale;\n\t\t\tpoint._yScale = yScale;\n\t\t\tpoint._datasetIndex = datasetIndex;\n\t\t\tpoint._index = index;\n\n\t\t\t// Desired view properties\n\t\t\tpoint._model = {\n\t\t\t\tx: x,\n\t\t\t\ty: y,\n\t\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\n\t\t\t\t// Appearance\n\t\t\t\tradius: custom.radius || helpers.getValueAtIndexOrDefault(dataset.pointRadius, index, pointOptions.radius),\n\t\t\t\tpointStyle: custom.pointStyle || helpers.getValueAtIndexOrDefault(dataset.pointStyle, index, pointOptions.pointStyle),\n\t\t\t\tbackgroundColor: me.getPointBackgroundColor(point, index),\n\t\t\t\tborderColor: me.getPointBorderColor(point, index),\n\t\t\t\tborderWidth: me.getPointBorderWidth(point, index),\n\t\t\t\ttension: meta.dataset._model ? meta.dataset._model.tension : 0,\n\t\t\t\tsteppedLine: meta.dataset._model ? meta.dataset._model.steppedLine : false,\n\t\t\t\t// Tooltip\n\t\t\t\thitRadius: custom.hitRadius || helpers.getValueAtIndexOrDefault(dataset.pointHitRadius, index, pointOptions.hitRadius)\n\t\t\t};\n\t\t},\n\n\t\tcalculatePointY: function(value, index, datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar yScale = me.getScaleForId(meta.yAxisID);\n\t\t\tvar sumPos = 0;\n\t\t\tvar sumNeg = 0;\n\t\t\tvar i, ds, dsMeta;\n\n\t\t\tif (yScale.options.stacked) {\n\t\t\t\tfor (i = 0; i < datasetIndex; i++) {\n\t\t\t\t\tds = chart.data.datasets[i];\n\t\t\t\t\tdsMeta = chart.getDatasetMeta(i);\n\t\t\t\t\tif (dsMeta.type === 'line' && dsMeta.yAxisID === yScale.id && chart.isDatasetVisible(i)) {\n\t\t\t\t\t\tvar stackedRightValue = Number(yScale.getRightValue(ds.data[index]));\n\t\t\t\t\t\tif (stackedRightValue < 0) {\n\t\t\t\t\t\t\tsumNeg += stackedRightValue || 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsumPos += stackedRightValue || 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvar rightValue = Number(yScale.getRightValue(value));\n\t\t\t\tif (rightValue < 0) {\n\t\t\t\t\treturn yScale.getPixelForValue(sumNeg + rightValue);\n\t\t\t\t}\n\t\t\t\treturn yScale.getPixelForValue(sumPos + rightValue);\n\t\t\t}\n\n\t\t\treturn yScale.getPixelForValue(value);\n\t\t},\n\n\t\tupdateBezierControlPoints: function() {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar area = me.chart.chartArea;\n\t\t\tvar points = (meta.data || []);\n\t\t\tvar i, ilen, point, model, controlPoints;\n\n\t\t\t// Only consider points that are drawn in case the spanGaps option is used\n\t\t\tif (meta.dataset._model.spanGaps) {\n\t\t\t\tpoints = points.filter(function(pt) {\n\t\t\t\t\treturn !pt._model.skip;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tfunction capControlPoint(pt, min, max) {\n\t\t\t\treturn Math.max(Math.min(pt, max), min);\n\t\t\t}\n\n\t\t\tif (meta.dataset._model.cubicInterpolationMode === 'monotone') {\n\t\t\t\thelpers.splineCurveMonotone(points);\n\t\t\t} else {\n\t\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\t\t\tpoint = points[i];\n\t\t\t\t\tmodel = point._model;\n\t\t\t\t\tcontrolPoints = helpers.splineCurve(\n\t\t\t\t\t\thelpers.previousItem(points, i)._model,\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\thelpers.nextItem(points, i)._model,\n\t\t\t\t\t\tmeta.dataset._model.tension\n\t\t\t\t\t);\n\t\t\t\t\tmodel.controlPointPreviousX = controlPoints.previous.x;\n\t\t\t\t\tmodel.controlPointPreviousY = controlPoints.previous.y;\n\t\t\t\t\tmodel.controlPointNextX = controlPoints.next.x;\n\t\t\t\t\tmodel.controlPointNextY = controlPoints.next.y;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (me.chart.options.elements.line.capBezierPoints) {\n\t\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\t\t\tmodel = points[i]._model;\n\t\t\t\t\tmodel.controlPointPreviousX = capControlPoint(model.controlPointPreviousX, area.left, area.right);\n\t\t\t\t\tmodel.controlPointPreviousY = capControlPoint(model.controlPointPreviousY, area.top, area.bottom);\n\t\t\t\t\tmodel.controlPointNextX = capControlPoint(model.controlPointNextX, area.left, area.right);\n\t\t\t\t\tmodel.controlPointNextY = capControlPoint(model.controlPointNextY, area.top, area.bottom);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tdraw: function() {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar points = meta.data || [];\n\t\t\tvar area = chart.chartArea;\n\t\t\tvar ilen = points.length;\n\t\t\tvar i = 0;\n\n\t\t\tChart.canvasHelpers.clipArea(chart.ctx, area);\n\n\t\t\tif (lineEnabled(me.getDataset(), chart.options)) {\n\t\t\t\tmeta.dataset.draw();\n\t\t\t}\n\n\t\t\tChart.canvasHelpers.unclipArea(chart.ctx);\n\n\t\t\t// Draw the points\n\t\t\tfor (; i<ilen; ++i) {\n\t\t\t\tpoints[i].draw(area);\n\t\t\t}\n\t\t},\n\n\t\tsetHoverStyle: function(point) {\n\t\t\t// Point\n\t\t\tvar dataset = this.chart.data.datasets[point._datasetIndex];\n\t\t\tvar index = point._index;\n\t\t\tvar custom = point.custom || {};\n\t\t\tvar model = point._model;\n\n\t\t\tmodel.radius = custom.hoverRadius || helpers.getValueAtIndexOrDefault(dataset.pointHoverRadius, index, this.chart.options.elements.point.hoverRadius);\n\t\t\tmodel.backgroundColor = custom.hoverBackgroundColor || helpers.getValueAtIndexOrDefault(dataset.pointHoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor));\n\t\t\tmodel.borderColor = custom.hoverBorderColor || helpers.getValueAtIndexOrDefault(dataset.pointHoverBorderColor, index, helpers.getHoverColor(model.borderColor));\n\t\t\tmodel.borderWidth = custom.hoverBorderWidth || helpers.getValueAtIndexOrDefault(dataset.pointHoverBorderWidth, index, model.borderWidth);\n\t\t},\n\n\t\tremoveHoverStyle: function(point) {\n\t\t\tvar me = this;\n\t\t\tvar dataset = me.chart.data.datasets[point._datasetIndex];\n\t\t\tvar index = point._index;\n\t\t\tvar custom = point.custom || {};\n\t\t\tvar model = point._model;\n\n\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\n\t\t\tif ((dataset.radius !== undefined) && (dataset.pointRadius === undefined)) {\n\t\t\t\tdataset.pointRadius = dataset.radius;\n\t\t\t}\n\n\t\t\tmodel.radius = custom.radius || helpers.getValueAtIndexOrDefault(dataset.pointRadius, index, me.chart.options.elements.point.radius);\n\t\t\tmodel.backgroundColor = me.getPointBackgroundColor(point, index);\n\t\t\tmodel.borderColor = me.getPointBorderColor(point, index);\n\t\t\tmodel.borderWidth = me.getPointBorderWidth(point, index);\n\t\t}\n\t});\n};\n\n},{}],19:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\n\tvar helpers = Chart.helpers;\n\n\tChart.defaults.polarArea = {\n\n\t\tscale: {\n\t\t\ttype: 'radialLinear',\n\t\t\tangleLines: {\n\t\t\t\tdisplay: false\n\t\t\t},\n\t\t\tgridLines: {\n\t\t\t\tcircular: true\n\t\t\t},\n\t\t\tpointLabels: {\n\t\t\t\tdisplay: false\n\t\t\t},\n\t\t\tticks: {\n\t\t\t\tbeginAtZero: true\n\t\t\t}\n\t\t},\n\n\t\t// Boolean - Whether to animate the rotation of the chart\n\t\tanimation: {\n\t\t\tanimateRotate: true,\n\t\t\tanimateScale: true\n\t\t},\n\n\t\tstartAngle: -0.5 * Math.PI,\n\t\taspectRatio: 1,\n\t\tlegendCallback: function(chart) {\n\t\t\tvar text = [];\n\t\t\ttext.push('<ul class=\"' + chart.id + '-legend\">');\n\n\t\t\tvar data = chart.data;\n\t\t\tvar datasets = data.datasets;\n\t\t\tvar labels = data.labels;\n\n\t\t\tif (datasets.length) {\n\t\t\t\tfor (var i = 0; i < datasets[0].data.length; ++i) {\n\t\t\t\t\ttext.push('<li><span style=\"background-color:' + datasets[0].backgroundColor[i] + '\"></span>');\n\t\t\t\t\tif (labels[i]) {\n\t\t\t\t\t\ttext.push(labels[i]);\n\t\t\t\t\t}\n\t\t\t\t\ttext.push('</li>');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttext.push('</ul>');\n\t\t\treturn text.join('');\n\t\t},\n\t\tlegend: {\n\t\t\tlabels: {\n\t\t\t\tgenerateLabels: function(chart) {\n\t\t\t\t\tvar data = chart.data;\n\t\t\t\t\tif (data.labels.length && data.datasets.length) {\n\t\t\t\t\t\treturn data.labels.map(function(label, i) {\n\t\t\t\t\t\t\tvar meta = chart.getDatasetMeta(0);\n\t\t\t\t\t\t\tvar ds = data.datasets[0];\n\t\t\t\t\t\t\tvar arc = meta.data[i];\n\t\t\t\t\t\t\tvar custom = arc.custom || {};\n\t\t\t\t\t\t\tvar getValueAtIndexOrDefault = helpers.getValueAtIndexOrDefault;\n\t\t\t\t\t\t\tvar arcOpts = chart.options.elements.arc;\n\t\t\t\t\t\t\tvar fill = custom.backgroundColor ? custom.backgroundColor : getValueAtIndexOrDefault(ds.backgroundColor, i, arcOpts.backgroundColor);\n\t\t\t\t\t\t\tvar stroke = custom.borderColor ? custom.borderColor : getValueAtIndexOrDefault(ds.borderColor, i, arcOpts.borderColor);\n\t\t\t\t\t\t\tvar bw = custom.borderWidth ? custom.borderWidth : getValueAtIndexOrDefault(ds.borderWidth, i, arcOpts.borderWidth);\n\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\ttext: label,\n\t\t\t\t\t\t\t\tfillStyle: fill,\n\t\t\t\t\t\t\t\tstrokeStyle: stroke,\n\t\t\t\t\t\t\t\tlineWidth: bw,\n\t\t\t\t\t\t\t\thidden: isNaN(ds.data[i]) || meta.data[i].hidden,\n\n\t\t\t\t\t\t\t\t// Extra data used for toggling the correct item\n\t\t\t\t\t\t\t\tindex: i\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\treturn [];\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tonClick: function(e, legendItem) {\n\t\t\t\tvar index = legendItem.index;\n\t\t\t\tvar chart = this.chart;\n\t\t\t\tvar i, ilen, meta;\n\n\t\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\n\t\t\t\t\tmeta = chart.getDatasetMeta(i);\n\t\t\t\t\tmeta.data[index].hidden = !meta.data[index].hidden;\n\t\t\t\t}\n\n\t\t\t\tchart.update();\n\t\t\t}\n\t\t},\n\n\t\t// Need to override these to give a nice default\n\t\ttooltips: {\n\t\t\tcallbacks: {\n\t\t\t\ttitle: function() {\n\t\t\t\t\treturn '';\n\t\t\t\t},\n\t\t\t\tlabel: function(tooltipItem, data) {\n\t\t\t\t\treturn data.labels[tooltipItem.index] + ': ' + tooltipItem.yLabel;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tChart.controllers.polarArea = Chart.DatasetController.extend({\n\n\t\tdataElementType: Chart.elements.Arc,\n\n\t\tlinkScales: helpers.noop,\n\n\t\tupdate: function(reset) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar chartArea = chart.chartArea;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar opts = chart.options;\n\t\t\tvar arcOpts = opts.elements.arc;\n\t\t\tvar minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n\t\t\tchart.outerRadius = Math.max((minSize - arcOpts.borderWidth / 2) / 2, 0);\n\t\t\tchart.innerRadius = Math.max(opts.cutoutPercentage ? (chart.outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\n\t\t\tchart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount();\n\n\t\t\tme.outerRadius = chart.outerRadius - (chart.radiusLength * me.index);\n\t\t\tme.innerRadius = me.outerRadius - chart.radiusLength;\n\n\t\t\tmeta.count = me.countVisibleElements();\n\n\t\t\thelpers.each(meta.data, function(arc, index) {\n\t\t\t\tme.updateElement(arc, index, reset);\n\t\t\t});\n\t\t},\n\n\t\tupdateElement: function(arc, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar opts = chart.options;\n\t\t\tvar animationOpts = opts.animation;\n\t\t\tvar scale = chart.scale;\n\t\t\tvar getValueAtIndexOrDefault = helpers.getValueAtIndexOrDefault;\n\t\t\tvar labels = chart.data.labels;\n\n\t\t\tvar circumference = me.calculateCircumference(dataset.data[index]);\n\t\t\tvar centerX = scale.xCenter;\n\t\t\tvar centerY = scale.yCenter;\n\n\t\t\t// If there is NaN data before us, we need to calculate the starting angle correctly.\n\t\t\t// We could be way more efficient here, but its unlikely that the polar area chart will have a lot of data\n\t\t\tvar visibleCount = 0;\n\t\t\tvar meta = me.getMeta();\n\t\t\tfor (var i = 0; i < index; ++i) {\n\t\t\t\tif (!isNaN(dataset.data[i]) && !meta.data[i].hidden) {\n\t\t\t\t\t++visibleCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// var negHalfPI = -0.5 * Math.PI;\n\t\t\tvar datasetStartAngle = opts.startAngle;\n\t\t\tvar distance = arc.hidden ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\n\t\t\tvar startAngle = datasetStartAngle + (circumference * visibleCount);\n\t\t\tvar endAngle = startAngle + (arc.hidden ? 0 : circumference);\n\n\t\t\tvar resetRadius = animationOpts.animateScale ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\n\n\t\t\thelpers.extend(arc, {\n\t\t\t\t// Utility\n\t\t\t\t_datasetIndex: me.index,\n\t\t\t\t_index: index,\n\t\t\t\t_scale: scale,\n\n\t\t\t\t// Desired view properties\n\t\t\t\t_model: {\n\t\t\t\t\tx: centerX,\n\t\t\t\t\ty: centerY,\n\t\t\t\t\tinnerRadius: 0,\n\t\t\t\t\touterRadius: reset ? resetRadius : distance,\n\t\t\t\t\tstartAngle: reset && animationOpts.animateRotate ? datasetStartAngle : startAngle,\n\t\t\t\t\tendAngle: reset && animationOpts.animateRotate ? datasetStartAngle : endAngle,\n\t\t\t\t\tlabel: getValueAtIndexOrDefault(labels, index, labels[index])\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// Apply border and fill style\n\t\t\tme.removeHoverStyle(arc);\n\n\t\t\tarc.pivot();\n\t\t},\n\n\t\tremoveHoverStyle: function(arc) {\n\t\t\tChart.DatasetController.prototype.removeHoverStyle.call(this, arc, this.chart.options.elements.arc);\n\t\t},\n\n\t\tcountVisibleElements: function() {\n\t\t\tvar dataset = this.getDataset();\n\t\t\tvar meta = this.getMeta();\n\t\t\tvar count = 0;\n\n\t\t\thelpers.each(meta.data, function(element, index) {\n\t\t\t\tif (!isNaN(dataset.data[index]) && !element.hidden) {\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn count;\n\t\t},\n\n\t\tcalculateCircumference: function(value) {\n\t\t\tvar count = this.getMeta().count;\n\t\t\tif (count > 0 && !isNaN(value)) {\n\t\t\t\treturn (2 * Math.PI) / count;\n\t\t\t}\n\t\t\treturn 0;\n\t\t}\n\t});\n};\n\n},{}],20:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\n\tvar helpers = Chart.helpers;\n\n\tChart.defaults.radar = {\n\t\taspectRatio: 1,\n\t\tscale: {\n\t\t\ttype: 'radialLinear'\n\t\t},\n\t\telements: {\n\t\t\tline: {\n\t\t\t\ttension: 0 // no bezier in radar\n\t\t\t}\n\t\t}\n\t};\n\n\tChart.controllers.radar = Chart.DatasetController.extend({\n\n\t\tdatasetElementType: Chart.elements.Line,\n\n\t\tdataElementType: Chart.elements.Point,\n\n\t\tlinkScales: helpers.noop,\n\n\t\tupdate: function(reset) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar line = meta.dataset;\n\t\t\tvar points = meta.data;\n\t\t\tvar custom = line.custom || {};\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar lineElementOptions = me.chart.options.elements.line;\n\t\t\tvar scale = me.chart.scale;\n\n\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\n\t\t\tif ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) {\n\t\t\t\tdataset.lineTension = dataset.tension;\n\t\t\t}\n\n\t\t\thelpers.extend(meta.dataset, {\n\t\t\t\t// Utility\n\t\t\t\t_datasetIndex: me.index,\n\t\t\t\t_scale: scale,\n\t\t\t\t// Data\n\t\t\t\t_children: points,\n\t\t\t\t_loop: true,\n\t\t\t\t// Model\n\t\t\t\t_model: {\n\t\t\t\t\t// Appearance\n\t\t\t\t\ttension: custom.tension ? custom.tension : helpers.getValueOrDefault(dataset.lineTension, lineElementOptions.tension),\n\t\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : (dataset.backgroundColor || lineElementOptions.backgroundColor),\n\t\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : (dataset.borderWidth || lineElementOptions.borderWidth),\n\t\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : (dataset.borderColor || lineElementOptions.borderColor),\n\t\t\t\t\tfill: custom.fill ? custom.fill : (dataset.fill !== undefined ? dataset.fill : lineElementOptions.fill),\n\t\t\t\t\tborderCapStyle: custom.borderCapStyle ? custom.borderCapStyle : (dataset.borderCapStyle || lineElementOptions.borderCapStyle),\n\t\t\t\t\tborderDash: custom.borderDash ? custom.borderDash : (dataset.borderDash || lineElementOptions.borderDash),\n\t\t\t\t\tborderDashOffset: custom.borderDashOffset ? custom.borderDashOffset : (dataset.borderDashOffset || lineElementOptions.borderDashOffset),\n\t\t\t\t\tborderJoinStyle: custom.borderJoinStyle ? custom.borderJoinStyle : (dataset.borderJoinStyle || lineElementOptions.borderJoinStyle),\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tmeta.dataset.pivot();\n\n\t\t\t// Update Points\n\t\t\thelpers.each(points, function(point, index) {\n\t\t\t\tme.updateElement(point, index, reset);\n\t\t\t}, me);\n\n\t\t\t// Update bezier control points\n\t\t\tme.updateBezierControlPoints();\n\t\t},\n\t\tupdateElement: function(point, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar custom = point.custom || {};\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar scale = me.chart.scale;\n\t\t\tvar pointElementOptions = me.chart.options.elements.point;\n\t\t\tvar pointPosition = scale.getPointPositionForValue(index, dataset.data[index]);\n\n\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\n\t\t\tif ((dataset.radius !== undefined) && (dataset.pointRadius === undefined)) {\n\t\t\t\tdataset.pointRadius = dataset.radius;\n\t\t\t}\n\t\t\tif ((dataset.hitRadius !== undefined) && (dataset.pointHitRadius === undefined)) {\n\t\t\t\tdataset.pointHitRadius = dataset.hitRadius;\n\t\t\t}\n\n\t\t\thelpers.extend(point, {\n\t\t\t\t// Utility\n\t\t\t\t_datasetIndex: me.index,\n\t\t\t\t_index: index,\n\t\t\t\t_scale: scale,\n\n\t\t\t\t// Desired view properties\n\t\t\t\t_model: {\n\t\t\t\t\tx: reset ? scale.xCenter : pointPosition.x, // value not used in dataset scale, but we want a consistent API between scales\n\t\t\t\t\ty: reset ? scale.yCenter : pointPosition.y,\n\n\t\t\t\t\t// Appearance\n\t\t\t\t\ttension: custom.tension ? custom.tension : helpers.getValueOrDefault(dataset.lineTension, me.chart.options.elements.line.tension),\n\t\t\t\t\tradius: custom.radius ? custom.radius : helpers.getValueAtIndexOrDefault(dataset.pointRadius, index, pointElementOptions.radius),\n\t\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : helpers.getValueAtIndexOrDefault(dataset.pointBackgroundColor, index, pointElementOptions.backgroundColor),\n\t\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : helpers.getValueAtIndexOrDefault(dataset.pointBorderColor, index, pointElementOptions.borderColor),\n\t\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : helpers.getValueAtIndexOrDefault(dataset.pointBorderWidth, index, pointElementOptions.borderWidth),\n\t\t\t\t\tpointStyle: custom.pointStyle ? custom.pointStyle : helpers.getValueAtIndexOrDefault(dataset.pointStyle, index, pointElementOptions.pointStyle),\n\n\t\t\t\t\t// Tooltip\n\t\t\t\t\thitRadius: custom.hitRadius ? custom.hitRadius : helpers.getValueAtIndexOrDefault(dataset.pointHitRadius, index, pointElementOptions.hitRadius)\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tpoint._model.skip = custom.skip ? custom.skip : (isNaN(point._model.x) || isNaN(point._model.y));\n\t\t},\n\t\tupdateBezierControlPoints: function() {\n\t\t\tvar chartArea = this.chart.chartArea;\n\t\t\tvar meta = this.getMeta();\n\n\t\t\thelpers.each(meta.data, function(point, index) {\n\t\t\t\tvar model = point._model;\n\t\t\t\tvar controlPoints = helpers.splineCurve(\n\t\t\t\t\thelpers.previousItem(meta.data, index, true)._model,\n\t\t\t\t\tmodel,\n\t\t\t\t\thelpers.nextItem(meta.data, index, true)._model,\n\t\t\t\t\tmodel.tension\n\t\t\t\t);\n\n\t\t\t\t// Prevent the bezier going outside of the bounds of the graph\n\t\t\t\tmodel.controlPointPreviousX = Math.max(Math.min(controlPoints.previous.x, chartArea.right), chartArea.left);\n\t\t\t\tmodel.controlPointPreviousY = Math.max(Math.min(controlPoints.previous.y, chartArea.bottom), chartArea.top);\n\n\t\t\t\tmodel.controlPointNextX = Math.max(Math.min(controlPoints.next.x, chartArea.right), chartArea.left);\n\t\t\t\tmodel.controlPointNextY = Math.max(Math.min(controlPoints.next.y, chartArea.bottom), chartArea.top);\n\n\t\t\t\t// Now pivot the point for animation\n\t\t\t\tpoint.pivot();\n\t\t\t});\n\t\t},\n\n\t\tsetHoverStyle: function(point) {\n\t\t\t// Point\n\t\t\tvar dataset = this.chart.data.datasets[point._datasetIndex];\n\t\t\tvar custom = point.custom || {};\n\t\t\tvar index = point._index;\n\t\t\tvar model = point._model;\n\n\t\t\tmodel.radius = custom.hoverRadius ? custom.hoverRadius : helpers.getValueAtIndexOrDefault(dataset.pointHoverRadius, index, this.chart.options.elements.point.hoverRadius);\n\t\t\tmodel.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : helpers.getValueAtIndexOrDefault(dataset.pointHoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor));\n\t\t\tmodel.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : helpers.getValueAtIndexOrDefault(dataset.pointHoverBorderColor, index, helpers.getHoverColor(model.borderColor));\n\t\t\tmodel.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : helpers.getValueAtIndexOrDefault(dataset.pointHoverBorderWidth, index, model.borderWidth);\n\t\t},\n\n\t\tremoveHoverStyle: function(point) {\n\t\t\tvar dataset = this.chart.data.datasets[point._datasetIndex];\n\t\t\tvar custom = point.custom || {};\n\t\t\tvar index = point._index;\n\t\t\tvar model = point._model;\n\t\t\tvar pointElementOptions = this.chart.options.elements.point;\n\n\t\t\tmodel.radius = custom.radius ? custom.radius : helpers.getValueAtIndexOrDefault(dataset.pointRadius, index, pointElementOptions.radius);\n\t\t\tmodel.backgroundColor = custom.backgroundColor ? custom.backgroundColor : helpers.getValueAtIndexOrDefault(dataset.pointBackgroundColor, index, pointElementOptions.backgroundColor);\n\t\t\tmodel.borderColor = custom.borderColor ? custom.borderColor : helpers.getValueAtIndexOrDefault(dataset.pointBorderColor, index, pointElementOptions.borderColor);\n\t\t\tmodel.borderWidth = custom.borderWidth ? custom.borderWidth : helpers.getValueAtIndexOrDefault(dataset.pointBorderWidth, index, pointElementOptions.borderWidth);\n\t\t}\n\t});\n};\n\n},{}],21:[function(require,module,exports){\n/* global window: false */\n'use strict';\n\nmodule.exports = function(Chart) {\n\n\tvar helpers = Chart.helpers;\n\n\tChart.defaults.global.animation = {\n\t\tduration: 1000,\n\t\teasing: 'easeOutQuart',\n\t\tonProgress: helpers.noop,\n\t\tonComplete: helpers.noop\n\t};\n\n\tChart.Animation = Chart.Element.extend({\n\t\tchart: null, // the animation associated chart instance\n\t\tcurrentStep: 0, // the current animation step\n\t\tnumSteps: 60, // default number of steps\n\t\teasing: '', // the easing to use for this animation\n\t\trender: null, // render function used by the animation service\n\n\t\tonAnimationProgress: null, // user specified callback to fire on each step of the animation\n\t\tonAnimationComplete: null, // user specified callback to fire when the animation finishes\n\t});\n\n\tChart.animationService = {\n\t\tframeDuration: 17,\n\t\tanimations: [],\n\t\tdropFrames: 0,\n\t\trequest: null,\n\n\t\t/**\n\t\t * @param {Chart} chart - The chart to animate.\n\t\t * @param {Chart.Animation} animation - The animation that we will animate.\n\t\t * @param {Number} duration - The animation duration in ms.\n\t\t * @param {Boolean} lazy - if true, the chart is not marked as animating to enable more responsive interactions\n\t\t */\n\t\taddAnimation: function(chart, animation, duration, lazy) {\n\t\t\tvar animations = this.animations;\n\t\t\tvar i, ilen;\n\n\t\t\tanimation.chart = chart;\n\n\t\t\tif (!lazy) {\n\t\t\t\tchart.animating = true;\n\t\t\t}\n\n\t\t\tfor (i=0, ilen=animations.length; i < ilen; ++i) {\n\t\t\t\tif (animations[i].chart === chart) {\n\t\t\t\t\tanimations[i] = animation;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tanimations.push(animation);\n\n\t\t\t// If there are no animations queued, manually kickstart a digest, for lack of a better word\n\t\t\tif (animations.length === 1) {\n\t\t\t\tthis.requestAnimationFrame();\n\t\t\t}\n\t\t},\n\n\t\tcancelAnimation: function(chart) {\n\t\t\tvar index = helpers.findIndex(this.animations, function(animation) {\n\t\t\t\treturn animation.chart === chart;\n\t\t\t});\n\n\t\t\tif (index !== -1) {\n\t\t\t\tthis.animations.splice(index, 1);\n\t\t\t\tchart.animating = false;\n\t\t\t}\n\t\t},\n\n\t\trequestAnimationFrame: function() {\n\t\t\tvar me = this;\n\t\t\tif (me.request === null) {\n\t\t\t\t// Skip animation frame requests until the active one is executed.\n\t\t\t\t// This can happen when processing mouse events, e.g. 'mousemove'\n\t\t\t\t// and 'mouseout' events will trigger multiple renders.\n\t\t\t\tme.request = helpers.requestAnimFrame.call(window, function() {\n\t\t\t\t\tme.request = null;\n\t\t\t\t\tme.startDigest();\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tstartDigest: function() {\n\t\t\tvar me = this;\n\t\t\tvar startTime = Date.now();\n\t\t\tvar framesToDrop = 0;\n\n\t\t\tif (me.dropFrames > 1) {\n\t\t\t\tframesToDrop = Math.floor(me.dropFrames);\n\t\t\t\tme.dropFrames = me.dropFrames % 1;\n\t\t\t}\n\n\t\t\tme.advance(1 + framesToDrop);\n\n\t\t\tvar endTime = Date.now();\n\n\t\t\tme.dropFrames += (endTime - startTime) / me.frameDuration;\n\n\t\t\t// Do we have more stuff to animate?\n\t\t\tif (me.animations.length > 0) {\n\t\t\t\tme.requestAnimationFrame();\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tadvance: function(count) {\n\t\t\tvar animations = this.animations;\n\t\t\tvar animation, chart;\n\t\t\tvar i = 0;\n\n\t\t\twhile (i < animations.length) {\n\t\t\t\tanimation = animations[i];\n\t\t\t\tchart = animation.chart;\n\n\t\t\t\tanimation.currentStep = (animation.currentStep || 0) + count;\n\t\t\t\tanimation.currentStep = Math.min(animation.currentStep, animation.numSteps);\n\n\t\t\t\thelpers.callback(animation.render, [chart, animation], chart);\n\t\t\t\thelpers.callback(animation.onAnimationProgress, [animation], chart);\n\n\t\t\t\tif (animation.currentStep >= animation.numSteps) {\n\t\t\t\t\thelpers.callback(animation.onAnimationComplete, [animation], chart);\n\t\t\t\t\tchart.animating = false;\n\t\t\t\t\tanimations.splice(i, 1);\n\t\t\t\t} else {\n\t\t\t\t\t++i;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\t/**\n\t * Provided for backward compatibility, use Chart.Animation instead\n\t * @prop Chart.Animation#animationObject\n\t * @deprecated since version 2.6.0\n\t * @todo remove at version 3\n\t */\n\tObject.defineProperty(Chart.Animation.prototype, 'animationObject', {\n\t\tget: function() {\n\t\t\treturn this;\n\t\t}\n\t});\n\n\t/**\n\t * Provided for backward compatibility, use Chart.Animation#chart instead\n\t * @prop Chart.Animation#chartInstance\n\t * @deprecated since version 2.6.0\n\t * @todo remove at version 3\n\t */\n\tObject.defineProperty(Chart.Animation.prototype, 'chartInstance', {\n\t\tget: function() {\n\t\t\treturn this.chart;\n\t\t},\n\t\tset: function(value) {\n\t\t\tthis.chart = value;\n\t\t}\n\t});\n\n};\n\n},{}],22:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\t// Global Chart canvas helpers object for drawing items to canvas\n\tvar helpers = Chart.canvasHelpers = {};\n\n\thelpers.drawPoint = function(ctx, pointStyle, radius, x, y) {\n\t\tvar type, edgeLength, xOffset, yOffset, height, size;\n\n\t\tif (typeof pointStyle === 'object') {\n\t\t\ttype = pointStyle.toString();\n\t\t\tif (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n\t\t\t\tctx.drawImage(pointStyle, x - pointStyle.width / 2, y - pointStyle.height / 2, pointStyle.width, pointStyle.height);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif (isNaN(radius) || radius <= 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tswitch (pointStyle) {\n\t\t// Default includes circle\n\t\tdefault:\n\t\t\tctx.beginPath();\n\t\t\tctx.arc(x, y, radius, 0, Math.PI * 2);\n\t\t\tctx.closePath();\n\t\t\tctx.fill();\n\t\t\tbreak;\n\t\tcase 'triangle':\n\t\t\tctx.beginPath();\n\t\t\tedgeLength = 3 * radius / Math.sqrt(3);\n\t\t\theight = edgeLength * Math.sqrt(3) / 2;\n\t\t\tctx.moveTo(x - edgeLength / 2, y + height / 3);\n\t\t\tctx.lineTo(x + edgeLength / 2, y + height / 3);\n\t\t\tctx.lineTo(x, y - 2 * height / 3);\n\t\t\tctx.closePath();\n\t\t\tctx.fill();\n\t\t\tbreak;\n\t\tcase 'rect':\n\t\t\tsize = 1 / Math.SQRT2 * radius;\n\t\t\tctx.beginPath();\n\t\t\tctx.fillRect(x - size, y - size, 2 * size, 2 * size);\n\t\t\tctx.strokeRect(x - size, y - size, 2 * size, 2 * size);\n\t\t\tbreak;\n\t\tcase 'rectRounded':\n\t\t\tvar offset = radius / Math.SQRT2;\n\t\t\tvar leftX = x - offset;\n\t\t\tvar topY = y - offset;\n\t\t\tvar sideSize = Math.SQRT2 * radius;\n\t\t\tChart.helpers.drawRoundedRectangle(ctx, leftX, topY, sideSize, sideSize, radius / 2);\n\t\t\tctx.fill();\n\t\t\tbreak;\n\t\tcase 'rectRot':\n\t\t\tsize = 1 / Math.SQRT2 * radius;\n\t\t\tctx.beginPath();\n\t\t\tctx.moveTo(x - size, y);\n\t\t\tctx.lineTo(x, y + size);\n\t\t\tctx.lineTo(x + size, y);\n\t\t\tctx.lineTo(x, y - size);\n\t\t\tctx.closePath();\n\t\t\tctx.fill();\n\t\t\tbreak;\n\t\tcase 'cross':\n\t\t\tctx.beginPath();\n\t\t\tctx.moveTo(x, y + radius);\n\t\t\tctx.lineTo(x, y - radius);\n\t\t\tctx.moveTo(x - radius, y);\n\t\t\tctx.lineTo(x + radius, y);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\tcase 'crossRot':\n\t\t\tctx.beginPath();\n\t\t\txOffset = Math.cos(Math.PI / 4) * radius;\n\t\t\tyOffset = Math.sin(Math.PI / 4) * radius;\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\n\t\t\tctx.moveTo(x - xOffset, y + yOffset);\n\t\t\tctx.lineTo(x + xOffset, y - yOffset);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\tcase 'star':\n\t\t\tctx.beginPath();\n\t\t\tctx.moveTo(x, y + radius);\n\t\t\tctx.lineTo(x, y - radius);\n\t\t\tctx.moveTo(x - radius, y);\n\t\t\tctx.lineTo(x + radius, y);\n\t\t\txOffset = Math.cos(Math.PI / 4) * radius;\n\t\t\tyOffset = Math.sin(Math.PI / 4) * radius;\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\n\t\t\tctx.moveTo(x - xOffset, y + yOffset);\n\t\t\tctx.lineTo(x + xOffset, y - yOffset);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\tcase 'line':\n\t\t\tctx.beginPath();\n\t\t\tctx.moveTo(x - radius, y);\n\t\t\tctx.lineTo(x + radius, y);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\tcase 'dash':\n\t\t\tctx.beginPath();\n\t\t\tctx.moveTo(x, y);\n\t\t\tctx.lineTo(x + radius, y);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\t}\n\n\t\tctx.stroke();\n\t};\n\n\thelpers.clipArea = function(ctx, clipArea) {\n\t\tctx.save();\n\t\tctx.beginPath();\n\t\tctx.rect(clipArea.left, clipArea.top, clipArea.right - clipArea.left, clipArea.bottom - clipArea.top);\n\t\tctx.clip();\n\t};\n\n\thelpers.unclipArea = function(ctx) {\n\t\tctx.restore();\n\t};\n\n\thelpers.lineTo = function(ctx, previous, target, flip) {\n\t\tif (target.steppedLine) {\n\t\t\tif (target.steppedLine === 'after') {\n\t\t\t\tctx.lineTo(previous.x, target.y);\n\t\t\t} else {\n\t\t\t\tctx.lineTo(target.x, previous.y);\n\t\t\t}\n\t\t\tctx.lineTo(target.x, target.y);\n\t\t\treturn;\n\t\t}\n\n\t\tif (!target.tension) {\n\t\t\tctx.lineTo(target.x, target.y);\n\t\t\treturn;\n\t\t}\n\n\t\tctx.bezierCurveTo(\n\t\t\tflip? previous.controlPointPreviousX : previous.controlPointNextX,\n\t\t\tflip? previous.controlPointPreviousY : previous.controlPointNextY,\n\t\t\tflip? target.controlPointNextX : target.controlPointPreviousX,\n\t\t\tflip? target.controlPointNextY : target.controlPointPreviousY,\n\t\t\ttarget.x,\n\t\t\ttarget.y);\n\t};\n\n\tChart.helpers.canvas = helpers;\n};\n\n},{}],23:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\n\tvar helpers = Chart.helpers;\n\tvar plugins = Chart.plugins;\n\tvar platform = Chart.platform;\n\n\t// Create a dictionary of chart types, to allow for extension of existing types\n\tChart.types = {};\n\n\t// Store a reference to each instance - allowing us to globally resize chart instances on window resize.\n\t// Destroy method on the chart will remove the instance of the chart from this reference.\n\tChart.instances = {};\n\n\t// Controllers available for dataset visualization eg. bar, line, slice, etc.\n\tChart.controllers = {};\n\n\t/**\n\t * Initializes the given config with global and chart default values.\n\t */\n\tfunction initConfig(config) {\n\t\tconfig = config || {};\n\n\t\t// Do NOT use configMerge() for the data object because this method merges arrays\n\t\t// and so would change references to labels and datasets, preventing data updates.\n\t\tvar data = config.data = config.data || {};\n\t\tdata.datasets = data.datasets || [];\n\t\tdata.labels = data.labels || [];\n\n\t\tconfig.options = helpers.configMerge(\n\t\t\tChart.defaults.global,\n\t\t\tChart.defaults[config.type],\n\t\t\tconfig.options || {});\n\n\t\treturn config;\n\t}\n\n\t/**\n\t * Updates the config of the chart\n\t * @param chart {Chart} chart to update the options for\n\t */\n\tfunction updateConfig(chart) {\n\t\tvar newOptions = chart.options;\n\n\t\t// Update Scale(s) with options\n\t\tif (newOptions.scale) {\n\t\t\tchart.scale.options = newOptions.scale;\n\t\t} else if (newOptions.scales) {\n\t\t\tnewOptions.scales.xAxes.concat(newOptions.scales.yAxes).forEach(function(scaleOptions) {\n\t\t\t\tchart.scales[scaleOptions.id].options = scaleOptions;\n\t\t\t});\n\t\t}\n\n\t\t// Tooltip\n\t\tchart.tooltip._options = newOptions.tooltips;\n\t}\n\n\tfunction positionIsHorizontal(position) {\n\t\treturn position === 'top' || position === 'bottom';\n\t}\n\n\thelpers.extend(Chart.prototype, /** @lends Chart */ {\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tconstruct: function(item, config) {\n\t\t\tvar me = this;\n\n\t\t\tconfig = initConfig(config);\n\n\t\t\tvar context = platform.acquireContext(item, config);\n\t\t\tvar canvas = context && context.canvas;\n\t\t\tvar height = canvas && canvas.height;\n\t\t\tvar width = canvas && canvas.width;\n\n\t\t\tme.id = helpers.uid();\n\t\t\tme.ctx = context;\n\t\t\tme.canvas = canvas;\n\t\t\tme.config = config;\n\t\t\tme.width = width;\n\t\t\tme.height = height;\n\t\t\tme.aspectRatio = height? width / height : null;\n\t\t\tme.options = config.options;\n\t\t\tme._bufferedRender = false;\n\n\t\t\t/**\n\t\t\t * Provided for backward compatibility, Chart and Chart.Controller have been merged,\n\t\t\t * the \"instance\" still need to be defined since it might be called from plugins.\n\t\t\t * @prop Chart#chart\n\t\t\t * @deprecated since version 2.6.0\n\t\t\t * @todo remove at version 3\n\t\t\t * @private\n\t\t\t */\n\t\t\tme.chart = me;\n\t\t\tme.controller = me;  // chart.chart.controller #inception\n\n\t\t\t// Add the chart instance to the global namespace\n\t\t\tChart.instances[me.id] = me;\n\n\t\t\t// Define alias to the config data: `chart.data === chart.config.data`\n\t\t\tObject.defineProperty(me, 'data', {\n\t\t\t\tget: function() {\n\t\t\t\t\treturn me.config.data;\n\t\t\t\t},\n\t\t\t\tset: function(value) {\n\t\t\t\t\tme.config.data = value;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (!context || !canvas) {\n\t\t\t\t// The given item is not a compatible context2d element, let's return before finalizing\n\t\t\t\t// the chart initialization but after setting basic chart / controller properties that\n\t\t\t\t// can help to figure out that the chart is not valid (e.g chart.canvas !== null);\n\t\t\t\t// https://github.com/chartjs/Chart.js/issues/2807\n\t\t\t\tconsole.error(\"Failed to create chart: can't acquire context from the given item\");\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tme.initialize();\n\t\t\tme.update();\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tinitialize: function() {\n\t\t\tvar me = this;\n\n\t\t\t// Before init plugin notification\n\t\t\tplugins.notify(me, 'beforeInit');\n\n\t\t\thelpers.retinaScale(me);\n\n\t\t\tme.bindEvents();\n\n\t\t\tif (me.options.responsive) {\n\t\t\t\t// Initial resize before chart draws (must be silent to preserve initial animations).\n\t\t\t\tme.resize(true);\n\t\t\t}\n\n\t\t\t// Make sure scales have IDs and are built before we build any controllers.\n\t\t\tme.ensureScalesHaveIDs();\n\t\t\tme.buildScales();\n\t\t\tme.initToolTip();\n\n\t\t\t// After init plugin notification\n\t\t\tplugins.notify(me, 'afterInit');\n\n\t\t\treturn me;\n\t\t},\n\n\t\tclear: function() {\n\t\t\thelpers.clear(this);\n\t\t\treturn this;\n\t\t},\n\n\t\tstop: function() {\n\t\t\t// Stops any current animation loop occurring\n\t\t\tChart.animationService.cancelAnimation(this);\n\t\t\treturn this;\n\t\t},\n\n\t\tresize: function(silent) {\n\t\t\tvar me = this;\n\t\t\tvar options = me.options;\n\t\t\tvar canvas = me.canvas;\n\t\t\tvar aspectRatio = (options.maintainAspectRatio && me.aspectRatio) || null;\n\n\t\t\t// the canvas render width and height will be casted to integers so make sure that\n\t\t\t// the canvas display style uses the same integer values to avoid blurring effect.\n\t\t\tvar newWidth = Math.floor(helpers.getMaximumWidth(canvas));\n\t\t\tvar newHeight = Math.floor(aspectRatio? newWidth / aspectRatio : helpers.getMaximumHeight(canvas));\n\n\t\t\tif (me.width === newWidth && me.height === newHeight) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcanvas.width = me.width = newWidth;\n\t\t\tcanvas.height = me.height = newHeight;\n\t\t\tcanvas.style.width = newWidth + 'px';\n\t\t\tcanvas.style.height = newHeight + 'px';\n\n\t\t\thelpers.retinaScale(me);\n\n\t\t\tif (!silent) {\n\t\t\t\t// Notify any plugins about the resize\n\t\t\t\tvar newSize = {width: newWidth, height: newHeight};\n\t\t\t\tplugins.notify(me, 'resize', [newSize]);\n\n\t\t\t\t// Notify of resize\n\t\t\t\tif (me.options.onResize) {\n\t\t\t\t\tme.options.onResize(me, newSize);\n\t\t\t\t}\n\n\t\t\t\tme.stop();\n\t\t\t\tme.update(me.options.responsiveAnimationDuration);\n\t\t\t}\n\t\t},\n\n\t\tensureScalesHaveIDs: function() {\n\t\t\tvar options = this.options;\n\t\t\tvar scalesOptions = options.scales || {};\n\t\t\tvar scaleOptions = options.scale;\n\n\t\t\thelpers.each(scalesOptions.xAxes, function(xAxisOptions, index) {\n\t\t\t\txAxisOptions.id = xAxisOptions.id || ('x-axis-' + index);\n\t\t\t});\n\n\t\t\thelpers.each(scalesOptions.yAxes, function(yAxisOptions, index) {\n\t\t\t\tyAxisOptions.id = yAxisOptions.id || ('y-axis-' + index);\n\t\t\t});\n\n\t\t\tif (scaleOptions) {\n\t\t\t\tscaleOptions.id = scaleOptions.id || 'scale';\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Builds a map of scale ID to scale object for future lookup.\n\t\t */\n\t\tbuildScales: function() {\n\t\t\tvar me = this;\n\t\t\tvar options = me.options;\n\t\t\tvar scales = me.scales = {};\n\t\t\tvar items = [];\n\n\t\t\tif (options.scales) {\n\t\t\t\titems = items.concat(\n\t\t\t\t\t(options.scales.xAxes || []).map(function(xAxisOptions) {\n\t\t\t\t\t\treturn {options: xAxisOptions, dtype: 'category', dposition: 'bottom'};\n\t\t\t\t\t}),\n\t\t\t\t\t(options.scales.yAxes || []).map(function(yAxisOptions) {\n\t\t\t\t\t\treturn {options: yAxisOptions, dtype: 'linear', dposition: 'left'};\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (options.scale) {\n\t\t\t\titems.push({\n\t\t\t\t\toptions: options.scale,\n\t\t\t\t\tdtype: 'radialLinear',\n\t\t\t\t\tisDefault: true,\n\t\t\t\t\tdposition: 'chartArea'\n\t\t\t\t});\n\t\t\t}\n\n\t\t\thelpers.each(items, function(item) {\n\t\t\t\tvar scaleOptions = item.options;\n\t\t\t\tvar scaleType = helpers.getValueOrDefault(scaleOptions.type, item.dtype);\n\t\t\t\tvar scaleClass = Chart.scaleService.getScaleConstructor(scaleType);\n\t\t\t\tif (!scaleClass) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (positionIsHorizontal(scaleOptions.position) !== positionIsHorizontal(item.dposition)) {\n\t\t\t\t\tscaleOptions.position = item.dposition;\n\t\t\t\t}\n\n\t\t\t\tvar scale = new scaleClass({\n\t\t\t\t\tid: scaleOptions.id,\n\t\t\t\t\toptions: scaleOptions,\n\t\t\t\t\tctx: me.ctx,\n\t\t\t\t\tchart: me\n\t\t\t\t});\n\n\t\t\t\tscales[scale.id] = scale;\n\n\t\t\t\t// TODO(SB): I think we should be able to remove this custom case (options.scale)\n\t\t\t\t// and consider it as a regular scale part of the \"scales\"\" map only! This would\n\t\t\t\t// make the logic easier and remove some useless? custom code.\n\t\t\t\tif (item.isDefault) {\n\t\t\t\t\tme.scale = scale;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tChart.scaleService.addScalesToLayout(this);\n\t\t},\n\n\t\tbuildOrUpdateControllers: function() {\n\t\t\tvar me = this;\n\t\t\tvar types = [];\n\t\t\tvar newControllers = [];\n\n\t\t\thelpers.each(me.data.datasets, function(dataset, datasetIndex) {\n\t\t\t\tvar meta = me.getDatasetMeta(datasetIndex);\n\t\t\t\tif (!meta.type) {\n\t\t\t\t\tmeta.type = dataset.type || me.config.type;\n\t\t\t\t}\n\n\t\t\t\ttypes.push(meta.type);\n\n\t\t\t\tif (meta.controller) {\n\t\t\t\t\tmeta.controller.updateIndex(datasetIndex);\n\t\t\t\t} else {\n\t\t\t\t\tvar ControllerClass = Chart.controllers[meta.type];\n\t\t\t\t\tif (ControllerClass === undefined) {\n\t\t\t\t\t\tthrow new Error('\"' + meta.type + '\" is not a chart type.');\n\t\t\t\t\t}\n\n\t\t\t\t\tmeta.controller = new ControllerClass(me, datasetIndex);\n\t\t\t\t\tnewControllers.push(meta.controller);\n\t\t\t\t}\n\t\t\t}, me);\n\n\t\t\tif (types.length > 1) {\n\t\t\t\tfor (var i = 1; i < types.length; i++) {\n\t\t\t\t\tif (types[i] !== types[i - 1]) {\n\t\t\t\t\t\tme.isCombo = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn newControllers;\n\t\t},\n\n\t\t/**\n\t\t * Reset the elements of all datasets\n\t\t * @private\n\t\t */\n\t\tresetElements: function() {\n\t\t\tvar me = this;\n\t\t\thelpers.each(me.data.datasets, function(dataset, datasetIndex) {\n\t\t\t\tme.getDatasetMeta(datasetIndex).controller.reset();\n\t\t\t}, me);\n\t\t},\n\n\t\t/**\n\t\t* Resets the chart back to it's state before the initial animation\n\t\t*/\n\t\treset: function() {\n\t\t\tthis.resetElements();\n\t\t\tthis.tooltip.initialize();\n\t\t},\n\n\t\tupdate: function(animationDuration, lazy) {\n\t\t\tvar me = this;\n\n\t\t\tupdateConfig(me);\n\n\t\t\tif (plugins.notify(me, 'beforeUpdate') === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// In case the entire data object changed\n\t\t\tme.tooltip._data = me.data;\n\n\t\t\t// Make sure dataset controllers are updated and new controllers are reset\n\t\t\tvar newControllers = me.buildOrUpdateControllers();\n\n\t\t\t// Make sure all dataset controllers have correct meta data counts\n\t\t\thelpers.each(me.data.datasets, function(dataset, datasetIndex) {\n\t\t\t\tme.getDatasetMeta(datasetIndex).controller.buildOrUpdateElements();\n\t\t\t}, me);\n\n\t\t\tme.updateLayout();\n\n\t\t\t// Can only reset the new controllers after the scales have been updated\n\t\t\thelpers.each(newControllers, function(controller) {\n\t\t\t\tcontroller.reset();\n\t\t\t});\n\n\t\t\tme.updateDatasets();\n\n\t\t\t// Do this before render so that any plugins that need final scale updates can use it\n\t\t\tplugins.notify(me, 'afterUpdate');\n\n\t\t\tif (me._bufferedRender) {\n\t\t\t\tme._bufferedRequest = {\n\t\t\t\t\tlazy: lazy,\n\t\t\t\t\tduration: animationDuration\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tme.render(animationDuration, lazy);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Updates the chart layout unless a plugin returns `false` to the `beforeLayout`\n\t\t * hook, in which case, plugins will not be called on `afterLayout`.\n\t\t * @private\n\t\t */\n\t\tupdateLayout: function() {\n\t\t\tvar me = this;\n\n\t\t\tif (plugins.notify(me, 'beforeLayout') === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tChart.layoutService.update(this, this.width, this.height);\n\n\t\t\t/**\n\t\t\t * Provided for backward compatibility, use `afterLayout` instead.\n\t\t\t * @method IPlugin#afterScaleUpdate\n\t\t\t * @deprecated since version 2.5.0\n\t\t\t * @todo remove at version 3\n\t\t\t * @private\n\t\t\t */\n\t\t\tplugins.notify(me, 'afterScaleUpdate');\n\t\t\tplugins.notify(me, 'afterLayout');\n\t\t},\n\n\t\t/**\n\t\t * Updates all datasets unless a plugin returns `false` to the `beforeDatasetsUpdate`\n\t\t * hook, in which case, plugins will not be called on `afterDatasetsUpdate`.\n\t\t * @private\n\t\t */\n\t\tupdateDatasets: function() {\n\t\t\tvar me = this;\n\n\t\t\tif (plugins.notify(me, 'beforeDatasetsUpdate') === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (var i = 0, ilen = me.data.datasets.length; i < ilen; ++i) {\n\t\t\t\tme.updateDataset(i);\n\t\t\t}\n\n\t\t\tplugins.notify(me, 'afterDatasetsUpdate');\n\t\t},\n\n\t\t/**\n\t\t * Updates dataset at index unless a plugin returns `false` to the `beforeDatasetUpdate`\n\t\t * hook, in which case, plugins will not be called on `afterDatasetUpdate`.\n\t\t * @private\n\t\t */\n\t\tupdateDataset: function(index) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getDatasetMeta(index);\n\t\t\tvar args = {\n\t\t\t\tmeta: meta,\n\t\t\t\tindex: index\n\t\t\t};\n\n\t\t\tif (plugins.notify(me, 'beforeDatasetUpdate', [args]) === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmeta.controller.update();\n\n\t\t\tplugins.notify(me, 'afterDatasetUpdate', [args]);\n\t\t},\n\n\t\trender: function(duration, lazy) {\n\t\t\tvar me = this;\n\n\t\t\tif (plugins.notify(me, 'beforeRender') === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar animationOptions = me.options.animation;\n\t\t\tvar onComplete = function(animation) {\n\t\t\t\tplugins.notify(me, 'afterRender');\n\t\t\t\thelpers.callback(animationOptions && animationOptions.onComplete, [animation], me);\n\t\t\t};\n\n\t\t\tif (animationOptions && ((typeof duration !== 'undefined' && duration !== 0) || (typeof duration === 'undefined' && animationOptions.duration !== 0))) {\n\t\t\t\tvar animation = new Chart.Animation({\n\t\t\t\t\tnumSteps: (duration || animationOptions.duration) / 16.66, // 60 fps\n\t\t\t\t\teasing: animationOptions.easing,\n\n\t\t\t\t\trender: function(chart, animationObject) {\n\t\t\t\t\t\tvar easingFunction = helpers.easingEffects[animationObject.easing];\n\t\t\t\t\t\tvar currentStep = animationObject.currentStep;\n\t\t\t\t\t\tvar stepDecimal = currentStep / animationObject.numSteps;\n\n\t\t\t\t\t\tchart.draw(easingFunction(stepDecimal), stepDecimal, currentStep);\n\t\t\t\t\t},\n\n\t\t\t\t\tonAnimationProgress: animationOptions.onProgress,\n\t\t\t\t\tonAnimationComplete: onComplete\n\t\t\t\t});\n\n\t\t\t\tChart.animationService.addAnimation(me, animation, duration, lazy);\n\t\t\t} else {\n\t\t\t\tme.draw();\n\n\t\t\t\t// See https://github.com/chartjs/Chart.js/issues/3781\n\t\t\t\tonComplete(new Chart.Animation({numSteps: 0, chart: me}));\n\t\t\t}\n\n\t\t\treturn me;\n\t\t},\n\n\t\tdraw: function(easingValue) {\n\t\t\tvar me = this;\n\n\t\t\tme.clear();\n\n\t\t\tif (easingValue === undefined || easingValue === null) {\n\t\t\t\teasingValue = 1;\n\t\t\t}\n\n\t\t\tme.transition(easingValue);\n\n\t\t\tif (plugins.notify(me, 'beforeDraw', [easingValue]) === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Draw all the scales\n\t\t\thelpers.each(me.boxes, function(box) {\n\t\t\t\tbox.draw(me.chartArea);\n\t\t\t}, me);\n\n\t\t\tif (me.scale) {\n\t\t\t\tme.scale.draw();\n\t\t\t}\n\n\t\t\tme.drawDatasets(easingValue);\n\n\t\t\t// Finally draw the tooltip\n\t\t\tme.tooltip.draw();\n\n\t\t\tplugins.notify(me, 'afterDraw', [easingValue]);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\ttransition: function(easingValue) {\n\t\t\tvar me = this;\n\n\t\t\tfor (var i=0, ilen=(me.data.datasets || []).length; i<ilen; ++i) {\n\t\t\t\tif (me.isDatasetVisible(i)) {\n\t\t\t\t\tme.getDatasetMeta(i).controller.transition(easingValue);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tme.tooltip.transition(easingValue);\n\t\t},\n\n\t\t/**\n\t\t * Draws all datasets unless a plugin returns `false` to the `beforeDatasetsDraw`\n\t\t * hook, in which case, plugins will not be called on `afterDatasetsDraw`.\n\t\t * @private\n\t\t */\n\t\tdrawDatasets: function(easingValue) {\n\t\t\tvar me = this;\n\n\t\t\tif (plugins.notify(me, 'beforeDatasetsDraw', [easingValue]) === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Draw datasets reversed to support proper line stacking\n\t\t\tfor (var i=(me.data.datasets || []).length - 1; i >= 0; --i) {\n\t\t\t\tif (me.isDatasetVisible(i)) {\n\t\t\t\t\tme.drawDataset(i, easingValue);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tplugins.notify(me, 'afterDatasetsDraw', [easingValue]);\n\t\t},\n\n\t\t/**\n\t\t * Draws dataset at index unless a plugin returns `false` to the `beforeDatasetDraw`\n\t\t * hook, in which case, plugins will not be called on `afterDatasetDraw`.\n\t\t * @private\n\t\t */\n\t\tdrawDataset: function(index, easingValue) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getDatasetMeta(index);\n\t\t\tvar args = {\n\t\t\t\tmeta: meta,\n\t\t\t\tindex: index,\n\t\t\t\teasingValue: easingValue\n\t\t\t};\n\n\t\t\tif (plugins.notify(me, 'beforeDatasetDraw', [args]) === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmeta.controller.draw(easingValue);\n\n\t\t\tplugins.notify(me, 'afterDatasetDraw', [args]);\n\t\t},\n\n\t\t// Get the single element that was clicked on\n\t\t// @return : An object containing the dataset index and element index of the matching element. Also contains the rectangle that was draw\n\t\tgetElementAtEvent: function(e) {\n\t\t\treturn Chart.Interaction.modes.single(this, e);\n\t\t},\n\n\t\tgetElementsAtEvent: function(e) {\n\t\t\treturn Chart.Interaction.modes.label(this, e, {intersect: true});\n\t\t},\n\n\t\tgetElementsAtXAxis: function(e) {\n\t\t\treturn Chart.Interaction.modes['x-axis'](this, e, {intersect: true});\n\t\t},\n\n\t\tgetElementsAtEventForMode: function(e, mode, options) {\n\t\t\tvar method = Chart.Interaction.modes[mode];\n\t\t\tif (typeof method === 'function') {\n\t\t\t\treturn method(this, e, options);\n\t\t\t}\n\n\t\t\treturn [];\n\t\t},\n\n\t\tgetDatasetAtEvent: function(e) {\n\t\t\treturn Chart.Interaction.modes.dataset(this, e, {intersect: true});\n\t\t},\n\n\t\tgetDatasetMeta: function(datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tvar dataset = me.data.datasets[datasetIndex];\n\t\t\tif (!dataset._meta) {\n\t\t\t\tdataset._meta = {};\n\t\t\t}\n\n\t\t\tvar meta = dataset._meta[me.id];\n\t\t\tif (!meta) {\n\t\t\t\tmeta = dataset._meta[me.id] = {\n\t\t\t\t\ttype: null,\n\t\t\t\t\tdata: [],\n\t\t\t\t\tdataset: null,\n\t\t\t\t\tcontroller: null,\n\t\t\t\t\thidden: null,\t\t\t// See isDatasetVisible() comment\n\t\t\t\t\txAxisID: null,\n\t\t\t\t\tyAxisID: null\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn meta;\n\t\t},\n\n\t\tgetVisibleDatasetCount: function() {\n\t\t\tvar count = 0;\n\t\t\tfor (var i = 0, ilen = this.data.datasets.length; i<ilen; ++i) {\n\t\t\t\tif (this.isDatasetVisible(i)) {\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn count;\n\t\t},\n\n\t\tisDatasetVisible: function(datasetIndex) {\n\t\t\tvar meta = this.getDatasetMeta(datasetIndex);\n\n\t\t\t// meta.hidden is a per chart dataset hidden flag override with 3 states: if true or false,\n\t\t\t// the dataset.hidden value is ignored, else if null, the dataset hidden state is returned.\n\t\t\treturn typeof meta.hidden === 'boolean'? !meta.hidden : !this.data.datasets[datasetIndex].hidden;\n\t\t},\n\n\t\tgenerateLegend: function() {\n\t\t\treturn this.options.legendCallback(this);\n\t\t},\n\n\t\tdestroy: function() {\n\t\t\tvar me = this;\n\t\t\tvar canvas = me.canvas;\n\t\t\tvar meta, i, ilen;\n\n\t\t\tme.stop();\n\n\t\t\t// dataset controllers need to cleanup associated data\n\t\t\tfor (i = 0, ilen = me.data.datasets.length; i < ilen; ++i) {\n\t\t\t\tmeta = me.getDatasetMeta(i);\n\t\t\t\tif (meta.controller) {\n\t\t\t\t\tmeta.controller.destroy();\n\t\t\t\t\tmeta.controller = null;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (canvas) {\n\t\t\t\tme.unbindEvents();\n\t\t\t\thelpers.clear(me);\n\t\t\t\tplatform.releaseContext(me.ctx);\n\t\t\t\tme.canvas = null;\n\t\t\t\tme.ctx = null;\n\t\t\t}\n\n\t\t\tplugins.notify(me, 'destroy');\n\n\t\t\tdelete Chart.instances[me.id];\n\t\t},\n\n\t\ttoBase64Image: function() {\n\t\t\treturn this.canvas.toDataURL.apply(this.canvas, arguments);\n\t\t},\n\n\t\tinitToolTip: function() {\n\t\t\tvar me = this;\n\t\t\tme.tooltip = new Chart.Tooltip({\n\t\t\t\t_chart: me,\n\t\t\t\t_chartInstance: me,            // deprecated, backward compatibility\n\t\t\t\t_data: me.data,\n\t\t\t\t_options: me.options.tooltips\n\t\t\t}, me);\n\t\t\tme.tooltip.initialize();\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tbindEvents: function() {\n\t\t\tvar me = this;\n\t\t\tvar listeners = me._listeners = {};\n\t\t\tvar listener = function() {\n\t\t\t\tme.eventHandler.apply(me, arguments);\n\t\t\t};\n\n\t\t\thelpers.each(me.options.events, function(type) {\n\t\t\t\tplatform.addEventListener(me, type, listener);\n\t\t\t\tlisteners[type] = listener;\n\t\t\t});\n\n\t\t\t// Responsiveness is currently based on the use of an iframe, however this method causes\n\t\t\t// performance issues and could be troublesome when used with ad blockers. So make sure\n\t\t\t// that the user is still able to create a chart without iframe when responsive is false.\n\t\t\t// See https://github.com/chartjs/Chart.js/issues/2210\n\t\t\tif (me.options.responsive) {\n\t\t\t\tlistener = function() {\n\t\t\t\t\tme.resize();\n\t\t\t\t};\n\n\t\t\t\tplatform.addEventListener(me, 'resize', listener);\n\t\t\t\tlisteners.resize = listener;\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tunbindEvents: function() {\n\t\t\tvar me = this;\n\t\t\tvar listeners = me._listeners;\n\t\t\tif (!listeners) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdelete me._listeners;\n\t\t\thelpers.each(listeners, function(listener, type) {\n\t\t\t\tplatform.removeEventListener(me, type, listener);\n\t\t\t});\n\t\t},\n\n\t\tupdateHoverStyle: function(elements, mode, enabled) {\n\t\t\tvar method = enabled? 'setHoverStyle' : 'removeHoverStyle';\n\t\t\tvar element, i, ilen;\n\n\t\t\tfor (i=0, ilen=elements.length; i<ilen; ++i) {\n\t\t\t\telement = elements[i];\n\t\t\t\tif (element) {\n\t\t\t\t\tthis.getDatasetMeta(element._datasetIndex).controller[method](element);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\teventHandler: function(e) {\n\t\t\tvar me = this;\n\t\t\tvar tooltip = me.tooltip;\n\n\t\t\tif (plugins.notify(me, 'beforeEvent', [e]) === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Buffer any update calls so that renders do not occur\n\t\t\tme._bufferedRender = true;\n\t\t\tme._bufferedRequest = null;\n\n\t\t\tvar changed = me.handleEvent(e);\n\t\t\tchanged |= tooltip && tooltip.handleEvent(e);\n\n\t\t\tplugins.notify(me, 'afterEvent', [e]);\n\n\t\t\tvar bufferedRequest = me._bufferedRequest;\n\t\t\tif (bufferedRequest) {\n\t\t\t\t// If we have an update that was triggered, we need to do a normal render\n\t\t\t\tme.render(bufferedRequest.duration, bufferedRequest.lazy);\n\t\t\t} else if (changed && !me.animating) {\n\t\t\t\t// If entering, leaving, or changing elements, animate the change via pivot\n\t\t\t\tme.stop();\n\n\t\t\t\t// We only need to render at this point. Updating will cause scales to be\n\t\t\t\t// recomputed generating flicker & using more memory than necessary.\n\t\t\t\tme.render(me.options.hover.animationDuration, true);\n\t\t\t}\n\n\t\t\tme._bufferedRender = false;\n\t\t\tme._bufferedRequest = null;\n\n\t\t\treturn me;\n\t\t},\n\n\t\t/**\n\t\t * Handle an event\n\t\t * @private\n\t\t * @param {IEvent} event the event to handle\n\t\t * @return {Boolean} true if the chart needs to re-render\n\t\t */\n\t\thandleEvent: function(e) {\n\t\t\tvar me = this;\n\t\t\tvar options = me.options || {};\n\t\t\tvar hoverOptions = options.hover;\n\t\t\tvar changed = false;\n\n\t\t\tme.lastActive = me.lastActive || [];\n\n\t\t\t// Find Active Elements for hover and tooltips\n\t\t\tif (e.type === 'mouseout') {\n\t\t\t\tme.active = [];\n\t\t\t} else {\n\t\t\t\tme.active = me.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions);\n\t\t\t}\n\n\t\t\t// On Hover hook\n\t\t\tif (hoverOptions.onHover) {\n\t\t\t\t// Need to call with native event here to not break backwards compatibility\n\t\t\t\thoverOptions.onHover.call(me, e.native, me.active);\n\t\t\t}\n\n\t\t\tif (e.type === 'mouseup' || e.type === 'click') {\n\t\t\t\tif (options.onClick) {\n\t\t\t\t\t// Use e.native here for backwards compatibility\n\t\t\t\t\toptions.onClick.call(me, e.native, me.active);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove styling for last active (even if it may still be active)\n\t\t\tif (me.lastActive.length) {\n\t\t\t\tme.updateHoverStyle(me.lastActive, hoverOptions.mode, false);\n\t\t\t}\n\n\t\t\t// Built in hover styling\n\t\t\tif (me.active.length && hoverOptions.mode) {\n\t\t\t\tme.updateHoverStyle(me.active, hoverOptions.mode, true);\n\t\t\t}\n\n\t\t\tchanged = !helpers.arrayEquals(me.active, me.lastActive);\n\n\t\t\t// Remember Last Actives\n\t\t\tme.lastActive = me.active;\n\n\t\t\treturn changed;\n\t\t}\n\t});\n\n\t/**\n\t * Provided for backward compatibility, use Chart instead.\n\t * @class Chart.Controller\n\t * @deprecated since version 2.6.0\n\t * @todo remove at version 3\n\t * @private\n\t */\n\tChart.Controller = Chart;\n};\n\n},{}],24:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\n\tvar helpers = Chart.helpers;\n\n\tvar arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\n\n\t/**\n\t * Hooks the array methods that add or remove values ('push', pop', 'shift', 'splice',\n\t * 'unshift') and notify the listener AFTER the array has been altered. Listeners are\n\t * called on the 'onData*' callbacks (e.g. onDataPush, etc.) with same arguments.\n\t */\n\tfunction listenArrayEvents(array, listener) {\n\t\tif (array._chartjs) {\n\t\t\tarray._chartjs.listeners.push(listener);\n\t\t\treturn;\n\t\t}\n\n\t\tObject.defineProperty(array, '_chartjs', {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: {\n\t\t\t\tlisteners: [listener]\n\t\t\t}\n\t\t});\n\n\t\tarrayEvents.forEach(function(key) {\n\t\t\tvar method = 'onData' + key.charAt(0).toUpperCase() + key.slice(1);\n\t\t\tvar base = array[key];\n\n\t\t\tObject.defineProperty(array, key, {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: false,\n\t\t\t\tvalue: function() {\n\t\t\t\t\tvar args = Array.prototype.slice.call(arguments);\n\t\t\t\t\tvar res = base.apply(this, args);\n\n\t\t\t\t\thelpers.each(array._chartjs.listeners, function(object) {\n\t\t\t\t\t\tif (typeof object[method] === 'function') {\n\t\t\t\t\t\t\tobject[method].apply(object, args);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\treturn res;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Removes the given array event listener and cleanup extra attached properties (such as\n\t * the _chartjs stub and overridden methods) if array doesn't have any more listeners.\n\t */\n\tfunction unlistenArrayEvents(array, listener) {\n\t\tvar stub = array._chartjs;\n\t\tif (!stub) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar listeners = stub.listeners;\n\t\tvar index = listeners.indexOf(listener);\n\t\tif (index !== -1) {\n\t\t\tlisteners.splice(index, 1);\n\t\t}\n\n\t\tif (listeners.length > 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tarrayEvents.forEach(function(key) {\n\t\t\tdelete array[key];\n\t\t});\n\n\t\tdelete array._chartjs;\n\t}\n\n\t// Base class for all dataset controllers (line, bar, etc)\n\tChart.DatasetController = function(chart, datasetIndex) {\n\t\tthis.initialize(chart, datasetIndex);\n\t};\n\n\thelpers.extend(Chart.DatasetController.prototype, {\n\n\t\t/**\n\t\t * Element type used to generate a meta dataset (e.g. Chart.element.Line).\n\t\t * @type {Chart.core.element}\n\t\t */\n\t\tdatasetElementType: null,\n\n\t\t/**\n\t\t * Element type used to generate a meta data (e.g. Chart.element.Point).\n\t\t * @type {Chart.core.element}\n\t\t */\n\t\tdataElementType: null,\n\n\t\tinitialize: function(chart, datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tme.chart = chart;\n\t\t\tme.index = datasetIndex;\n\t\t\tme.linkScales();\n\t\t\tme.addElements();\n\t\t},\n\n\t\tupdateIndex: function(datasetIndex) {\n\t\t\tthis.index = datasetIndex;\n\t\t},\n\n\t\tlinkScales: function() {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar dataset = me.getDataset();\n\n\t\t\tif (meta.xAxisID === null) {\n\t\t\t\tmeta.xAxisID = dataset.xAxisID || me.chart.options.scales.xAxes[0].id;\n\t\t\t}\n\t\t\tif (meta.yAxisID === null) {\n\t\t\t\tmeta.yAxisID = dataset.yAxisID || me.chart.options.scales.yAxes[0].id;\n\t\t\t}\n\t\t},\n\n\t\tgetDataset: function() {\n\t\t\treturn this.chart.data.datasets[this.index];\n\t\t},\n\n\t\tgetMeta: function() {\n\t\t\treturn this.chart.getDatasetMeta(this.index);\n\t\t},\n\n\t\tgetScaleForId: function(scaleID) {\n\t\t\treturn this.chart.scales[scaleID];\n\t\t},\n\n\t\treset: function() {\n\t\t\tthis.update(true);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tdestroy: function() {\n\t\t\tif (this._data) {\n\t\t\t\tunlistenArrayEvents(this._data, this);\n\t\t\t}\n\t\t},\n\n\t\tcreateMetaDataset: function() {\n\t\t\tvar me = this;\n\t\t\tvar type = me.datasetElementType;\n\t\t\treturn type && new type({\n\t\t\t\t_chart: me.chart,\n\t\t\t\t_datasetIndex: me.index\n\t\t\t});\n\t\t},\n\n\t\tcreateMetaData: function(index) {\n\t\t\tvar me = this;\n\t\t\tvar type = me.dataElementType;\n\t\t\treturn type && new type({\n\t\t\t\t_chart: me.chart,\n\t\t\t\t_datasetIndex: me.index,\n\t\t\t\t_index: index\n\t\t\t});\n\t\t},\n\n\t\taddElements: function() {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar data = me.getDataset().data || [];\n\t\t\tvar metaData = meta.data;\n\t\t\tvar i, ilen;\n\n\t\t\tfor (i=0, ilen=data.length; i<ilen; ++i) {\n\t\t\t\tmetaData[i] = metaData[i] || me.createMetaData(i);\n\t\t\t}\n\n\t\t\tmeta.dataset = meta.dataset || me.createMetaDataset();\n\t\t},\n\n\t\taddElementAndReset: function(index) {\n\t\t\tvar element = this.createMetaData(index);\n\t\t\tthis.getMeta().data.splice(index, 0, element);\n\t\t\tthis.updateElement(element, index, true);\n\t\t},\n\n\t\tbuildOrUpdateElements: function() {\n\t\t\tvar me = this;\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar data = dataset.data || (dataset.data = []);\n\n\t\t\t// In order to correctly handle data addition/deletion animation (an thus simulate\n\t\t\t// real-time charts), we need to monitor these data modifications and synchronize\n\t\t\t// the internal meta data accordingly.\n\t\t\tif (me._data !== data) {\n\t\t\t\tif (me._data) {\n\t\t\t\t\t// This case happens when the user replaced the data array instance.\n\t\t\t\t\tunlistenArrayEvents(me._data, me);\n\t\t\t\t}\n\n\t\t\t\tlistenArrayEvents(data, me);\n\t\t\t\tme._data = data;\n\t\t\t}\n\n\t\t\t// Re-sync meta data in case the user replaced the data array or if we missed\n\t\t\t// any updates and so make sure that we handle number of datapoints changing.\n\t\t\tme.resyncElements();\n\t\t},\n\n\t\tupdate: helpers.noop,\n\n\t\ttransition: function(easingValue) {\n\t\t\tvar meta = this.getMeta();\n\t\t\tvar elements = meta.data || [];\n\t\t\tvar ilen = elements.length;\n\t\t\tvar i = 0;\n\n\t\t\tfor (; i<ilen; ++i) {\n\t\t\t\telements[i].transition(easingValue);\n\t\t\t}\n\n\t\t\tif (meta.dataset) {\n\t\t\t\tmeta.dataset.transition(easingValue);\n\t\t\t}\n\t\t},\n\n\t\tdraw: function() {\n\t\t\tvar meta = this.getMeta();\n\t\t\tvar elements = meta.data || [];\n\t\t\tvar ilen = elements.length;\n\t\t\tvar i = 0;\n\n\t\t\tif (meta.dataset) {\n\t\t\t\tmeta.dataset.draw();\n\t\t\t}\n\n\t\t\tfor (; i<ilen; ++i) {\n\t\t\t\telements[i].draw();\n\t\t\t}\n\t\t},\n\n\t\tremoveHoverStyle: function(element, elementOpts) {\n\t\t\tvar dataset = this.chart.data.datasets[element._datasetIndex],\n\t\t\t\tindex = element._index,\n\t\t\t\tcustom = element.custom || {},\n\t\t\t\tvalueOrDefault = helpers.getValueAtIndexOrDefault,\n\t\t\t\tmodel = element._model;\n\n\t\t\tmodel.backgroundColor = custom.backgroundColor ? custom.backgroundColor : valueOrDefault(dataset.backgroundColor, index, elementOpts.backgroundColor);\n\t\t\tmodel.borderColor = custom.borderColor ? custom.borderColor : valueOrDefault(dataset.borderColor, index, elementOpts.borderColor);\n\t\t\tmodel.borderWidth = custom.borderWidth ? custom.borderWidth : valueOrDefault(dataset.borderWidth, index, elementOpts.borderWidth);\n\t\t},\n\n\t\tsetHoverStyle: function(element) {\n\t\t\tvar dataset = this.chart.data.datasets[element._datasetIndex],\n\t\t\t\tindex = element._index,\n\t\t\t\tcustom = element.custom || {},\n\t\t\t\tvalueOrDefault = helpers.getValueAtIndexOrDefault,\n\t\t\t\tgetHoverColor = helpers.getHoverColor,\n\t\t\t\tmodel = element._model;\n\n\t\t\tmodel.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : valueOrDefault(dataset.hoverBackgroundColor, index, getHoverColor(model.backgroundColor));\n\t\t\tmodel.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : valueOrDefault(dataset.hoverBorderColor, index, getHoverColor(model.borderColor));\n\t\t\tmodel.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : valueOrDefault(dataset.hoverBorderWidth, index, model.borderWidth);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tresyncElements: function() {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar data = me.getDataset().data;\n\t\t\tvar numMeta = meta.data.length;\n\t\t\tvar numData = data.length;\n\n\t\t\tif (numData < numMeta) {\n\t\t\t\tmeta.data.splice(numData, numMeta - numData);\n\t\t\t} else if (numData > numMeta) {\n\t\t\t\tme.insertElements(numMeta, numData - numMeta);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tinsertElements: function(start, count) {\n\t\t\tfor (var i=0; i<count; ++i) {\n\t\t\t\tthis.addElementAndReset(start + i);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tonDataPush: function() {\n\t\t\tthis.insertElements(this.getDataset().data.length-1, arguments.length);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tonDataPop: function() {\n\t\t\tthis.getMeta().data.pop();\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tonDataShift: function() {\n\t\t\tthis.getMeta().data.shift();\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tonDataSplice: function(start, count) {\n\t\t\tthis.getMeta().data.splice(start, count);\n\t\t\tthis.insertElements(start, arguments.length - 2);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tonDataUnshift: function() {\n\t\t\tthis.insertElements(0, arguments.length);\n\t\t}\n\t});\n\n\tChart.DatasetController.extend = helpers.inherits;\n};\n\n},{}],25:[function(require,module,exports){\n'use strict';\n\nvar color = require(3);\n\nmodule.exports = function(Chart) {\n\n\tvar helpers = Chart.helpers;\n\n\tfunction interpolate(start, view, model, ease) {\n\t\tvar keys = Object.keys(model);\n\t\tvar i, ilen, key, actual, origin, target, type, c0, c1;\n\n\t\tfor (i=0, ilen=keys.length; i<ilen; ++i) {\n\t\t\tkey = keys[i];\n\n\t\t\ttarget = model[key];\n\n\t\t\t// if a value is added to the model after pivot() has been called, the view\n\t\t\t// doesn't contain it, so let's initialize the view to the target value.\n\t\t\tif (!view.hasOwnProperty(key)) {\n\t\t\t\tview[key] = target;\n\t\t\t}\n\n\t\t\tactual = view[key];\n\n\t\t\tif (actual === target || key[0] === '_') {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (!start.hasOwnProperty(key)) {\n\t\t\t\tstart[key] = actual;\n\t\t\t}\n\n\t\t\torigin = start[key];\n\n\t\t\ttype = typeof(target);\n\n\t\t\tif (type === typeof(origin)) {\n\t\t\t\tif (type === 'string') {\n\t\t\t\t\tc0 = color(origin);\n\t\t\t\t\tif (c0.valid) {\n\t\t\t\t\t\tc1 = color(target);\n\t\t\t\t\t\tif (c1.valid) {\n\t\t\t\t\t\t\tview[key] = c1.mix(c0, ease).rgbString();\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else if (type === 'number' && isFinite(origin) && isFinite(target)) {\n\t\t\t\t\tview[key] = origin + (target - origin) * ease;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tview[key] = target;\n\t\t}\n\t}\n\n\tChart.elements = {};\n\n\tChart.Element = function(configuration) {\n\t\thelpers.extend(this, configuration);\n\t\tthis.initialize.apply(this, arguments);\n\t};\n\n\thelpers.extend(Chart.Element.prototype, {\n\n\t\tinitialize: function() {\n\t\t\tthis.hidden = false;\n\t\t},\n\n\t\tpivot: function() {\n\t\t\tvar me = this;\n\t\t\tif (!me._view) {\n\t\t\t\tme._view = helpers.clone(me._model);\n\t\t\t}\n\t\t\tme._start = {};\n\t\t\treturn me;\n\t\t},\n\n\t\ttransition: function(ease) {\n\t\t\tvar me = this;\n\t\t\tvar model = me._model;\n\t\t\tvar start = me._start;\n\t\t\tvar view = me._view;\n\n\t\t\t// No animation -> No Transition\n\t\t\tif (!model || ease === 1) {\n\t\t\t\tme._view = model;\n\t\t\t\tme._start = null;\n\t\t\t\treturn me;\n\t\t\t}\n\n\t\t\tif (!view) {\n\t\t\t\tview = me._view = {};\n\t\t\t}\n\n\t\t\tif (!start) {\n\t\t\t\tstart = me._start = {};\n\t\t\t}\n\n\t\t\tinterpolate(start, view, model, ease);\n\n\t\t\treturn me;\n\t\t},\n\n\t\ttooltipPosition: function() {\n\t\t\treturn {\n\t\t\t\tx: this._model.x,\n\t\t\t\ty: this._model.y\n\t\t\t};\n\t\t},\n\n\t\thasValue: function() {\n\t\t\treturn helpers.isNumber(this._model.x) && helpers.isNumber(this._model.y);\n\t\t}\n\t});\n\n\tChart.Element.extend = helpers.inherits;\n};\n\n},{\"3\":3}],26:[function(require,module,exports){\n/* global window: false */\n/* global document: false */\n'use strict';\n\nvar color = require(3);\n\nmodule.exports = function(Chart) {\n\t// Global Chart helpers object for utility methods and classes\n\tvar helpers = Chart.helpers = {};\n\n\t// -- Basic js utility methods\n\thelpers.each = function(loopable, callback, self, reverse) {\n\t\t// Check to see if null or undefined firstly.\n\t\tvar i, len;\n\t\tif (helpers.isArray(loopable)) {\n\t\t\tlen = loopable.length;\n\t\t\tif (reverse) {\n\t\t\t\tfor (i = len - 1; i >= 0; i--) {\n\t\t\t\t\tcallback.call(self, loopable[i], i);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\t\tcallback.call(self, loopable[i], i);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (typeof loopable === 'object') {\n\t\t\tvar keys = Object.keys(loopable);\n\t\t\tlen = keys.length;\n\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\tcallback.call(self, loopable[keys[i]], keys[i]);\n\t\t\t}\n\t\t}\n\t};\n\thelpers.clone = function(obj) {\n\t\tvar objClone = {};\n\t\thelpers.each(obj, function(value, key) {\n\t\t\tif (helpers.isArray(value)) {\n\t\t\t\tobjClone[key] = value.slice(0);\n\t\t\t} else if (typeof value === 'object' && value !== null) {\n\t\t\t\tobjClone[key] = helpers.clone(value);\n\t\t\t} else {\n\t\t\t\tobjClone[key] = value;\n\t\t\t}\n\t\t});\n\t\treturn objClone;\n\t};\n\thelpers.extend = function(base) {\n\t\tvar setFn = function(value, key) {\n\t\t\tbase[key] = value;\n\t\t};\n\t\tfor (var i = 1, ilen = arguments.length; i < ilen; i++) {\n\t\t\thelpers.each(arguments[i], setFn);\n\t\t}\n\t\treturn base;\n\t};\n\t// Need a special merge function to chart configs since they are now grouped\n\thelpers.configMerge = function(_base) {\n\t\tvar base = helpers.clone(_base);\n\t\thelpers.each(Array.prototype.slice.call(arguments, 1), function(extension) {\n\t\t\thelpers.each(extension, function(value, key) {\n\t\t\t\tvar baseHasProperty = base.hasOwnProperty(key);\n\t\t\t\tvar baseVal = baseHasProperty ? base[key] : {};\n\n\t\t\t\tif (key === 'scales') {\n\t\t\t\t\t// Scale config merging is complex. Add our own function here for that\n\t\t\t\t\tbase[key] = helpers.scaleMerge(baseVal, value);\n\t\t\t\t} else if (key === 'scale') {\n\t\t\t\t\t// Used in polar area & radar charts since there is only one scale\n\t\t\t\t\tbase[key] = helpers.configMerge(baseVal, Chart.scaleService.getScaleDefaults(value.type), value);\n\t\t\t\t} else if (baseHasProperty\n\t\t\t\t\t\t&& typeof baseVal === 'object'\n\t\t\t\t\t\t&& !helpers.isArray(baseVal)\n\t\t\t\t\t\t&& baseVal !== null\n\t\t\t\t\t\t&& typeof value === 'object'\n\t\t\t\t\t\t&& !helpers.isArray(value)) {\n\t\t\t\t\t// If we are overwriting an object with an object, do a merge of the properties.\n\t\t\t\t\tbase[key] = helpers.configMerge(baseVal, value);\n\t\t\t\t} else {\n\t\t\t\t\t// can just overwrite the value in this case\n\t\t\t\t\tbase[key] = value;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\treturn base;\n\t};\n\thelpers.scaleMerge = function(_base, extension) {\n\t\tvar base = helpers.clone(_base);\n\n\t\thelpers.each(extension, function(value, key) {\n\t\t\tif (key === 'xAxes' || key === 'yAxes') {\n\t\t\t\t// These properties are arrays of items\n\t\t\t\tif (base.hasOwnProperty(key)) {\n\t\t\t\t\thelpers.each(value, function(valueObj, index) {\n\t\t\t\t\t\tvar axisType = helpers.getValueOrDefault(valueObj.type, key === 'xAxes' ? 'category' : 'linear');\n\t\t\t\t\t\tvar axisDefaults = Chart.scaleService.getScaleDefaults(axisType);\n\t\t\t\t\t\tif (index >= base[key].length || !base[key][index].type) {\n\t\t\t\t\t\t\tbase[key].push(helpers.configMerge(axisDefaults, valueObj));\n\t\t\t\t\t\t} else if (valueObj.type && valueObj.type !== base[key][index].type) {\n\t\t\t\t\t\t\t// Type changed. Bring in the new defaults before we bring in valueObj so that valueObj can override the correct scale defaults\n\t\t\t\t\t\t\tbase[key][index] = helpers.configMerge(base[key][index], axisDefaults, valueObj);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Type is the same\n\t\t\t\t\t\t\tbase[key][index] = helpers.configMerge(base[key][index], valueObj);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tbase[key] = [];\n\t\t\t\t\thelpers.each(value, function(valueObj) {\n\t\t\t\t\t\tvar axisType = helpers.getValueOrDefault(valueObj.type, key === 'xAxes' ? 'category' : 'linear');\n\t\t\t\t\t\tbase[key].push(helpers.configMerge(Chart.scaleService.getScaleDefaults(axisType), valueObj));\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else if (base.hasOwnProperty(key) && typeof base[key] === 'object' && base[key] !== null && typeof value === 'object') {\n\t\t\t\t// If we are overwriting an object with an object, do a merge of the properties.\n\t\t\t\tbase[key] = helpers.configMerge(base[key], value);\n\n\t\t\t} else {\n\t\t\t\t// can just overwrite the value in this case\n\t\t\t\tbase[key] = value;\n\t\t\t}\n\t\t});\n\n\t\treturn base;\n\t};\n\thelpers.getValueAtIndexOrDefault = function(value, index, defaultValue) {\n\t\tif (value === undefined || value === null) {\n\t\t\treturn defaultValue;\n\t\t}\n\n\t\tif (helpers.isArray(value)) {\n\t\t\treturn index < value.length ? value[index] : defaultValue;\n\t\t}\n\n\t\treturn value;\n\t};\n\thelpers.getValueOrDefault = function(value, defaultValue) {\n\t\treturn value === undefined ? defaultValue : value;\n\t};\n\thelpers.indexOf = Array.prototype.indexOf?\n\t\tfunction(array, item) {\n\t\t\treturn array.indexOf(item);\n\t\t}:\n\t\tfunction(array, item) {\n\t\t\tfor (var i = 0, ilen = array.length; i < ilen; ++i) {\n\t\t\t\tif (array[i] === item) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn -1;\n\t\t};\n\thelpers.where = function(collection, filterCallback) {\n\t\tif (helpers.isArray(collection) && Array.prototype.filter) {\n\t\t\treturn collection.filter(filterCallback);\n\t\t}\n\t\tvar filtered = [];\n\n\t\thelpers.each(collection, function(item) {\n\t\t\tif (filterCallback(item)) {\n\t\t\t\tfiltered.push(item);\n\t\t\t}\n\t\t});\n\n\t\treturn filtered;\n\t};\n\thelpers.findIndex = Array.prototype.findIndex?\n\t\tfunction(array, callback, scope) {\n\t\t\treturn array.findIndex(callback, scope);\n\t\t} :\n\t\tfunction(array, callback, scope) {\n\t\t\tscope = scope === undefined? array : scope;\n\t\t\tfor (var i = 0, ilen = array.length; i < ilen; ++i) {\n\t\t\t\tif (callback.call(scope, array[i], i, array)) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn -1;\n\t\t};\n\thelpers.findNextWhere = function(arrayToSearch, filterCallback, startIndex) {\n\t\t// Default to start of the array\n\t\tif (startIndex === undefined || startIndex === null) {\n\t\t\tstartIndex = -1;\n\t\t}\n\t\tfor (var i = startIndex + 1; i < arrayToSearch.length; i++) {\n\t\t\tvar currentItem = arrayToSearch[i];\n\t\t\tif (filterCallback(currentItem)) {\n\t\t\t\treturn currentItem;\n\t\t\t}\n\t\t}\n\t};\n\thelpers.findPreviousWhere = function(arrayToSearch, filterCallback, startIndex) {\n\t\t// Default to end of the array\n\t\tif (startIndex === undefined || startIndex === null) {\n\t\t\tstartIndex = arrayToSearch.length;\n\t\t}\n\t\tfor (var i = startIndex - 1; i >= 0; i--) {\n\t\t\tvar currentItem = arrayToSearch[i];\n\t\t\tif (filterCallback(currentItem)) {\n\t\t\t\treturn currentItem;\n\t\t\t}\n\t\t}\n\t};\n\thelpers.inherits = function(extensions) {\n\t\t// Basic javascript inheritance based on the model created in Backbone.js\n\t\tvar me = this;\n\t\tvar ChartElement = (extensions && extensions.hasOwnProperty('constructor')) ? extensions.constructor : function() {\n\t\t\treturn me.apply(this, arguments);\n\t\t};\n\n\t\tvar Surrogate = function() {\n\t\t\tthis.constructor = ChartElement;\n\t\t};\n\t\tSurrogate.prototype = me.prototype;\n\t\tChartElement.prototype = new Surrogate();\n\n\t\tChartElement.extend = helpers.inherits;\n\n\t\tif (extensions) {\n\t\t\thelpers.extend(ChartElement.prototype, extensions);\n\t\t}\n\n\t\tChartElement.__super__ = me.prototype;\n\n\t\treturn ChartElement;\n\t};\n\thelpers.noop = function() {};\n\thelpers.uid = (function() {\n\t\tvar id = 0;\n\t\treturn function() {\n\t\t\treturn id++;\n\t\t};\n\t}());\n\t// -- Math methods\n\thelpers.isNumber = function(n) {\n\t\treturn !isNaN(parseFloat(n)) && isFinite(n);\n\t};\n\thelpers.almostEquals = function(x, y, epsilon) {\n\t\treturn Math.abs(x - y) < epsilon;\n\t};\n\thelpers.almostWhole = function(x, epsilon) {\n\t\tvar rounded = Math.round(x);\n\t\treturn (((rounded - epsilon) < x) && ((rounded + epsilon) > x));\n\t};\n\thelpers.max = function(array) {\n\t\treturn array.reduce(function(max, value) {\n\t\t\tif (!isNaN(value)) {\n\t\t\t\treturn Math.max(max, value);\n\t\t\t}\n\t\t\treturn max;\n\t\t}, Number.NEGATIVE_INFINITY);\n\t};\n\thelpers.min = function(array) {\n\t\treturn array.reduce(function(min, value) {\n\t\t\tif (!isNaN(value)) {\n\t\t\t\treturn Math.min(min, value);\n\t\t\t}\n\t\t\treturn min;\n\t\t}, Number.POSITIVE_INFINITY);\n\t};\n\thelpers.sign = Math.sign?\n\t\tfunction(x) {\n\t\t\treturn Math.sign(x);\n\t\t} :\n\t\tfunction(x) {\n\t\t\tx = +x; // convert to a number\n\t\t\tif (x === 0 || isNaN(x)) {\n\t\t\t\treturn x;\n\t\t\t}\n\t\t\treturn x > 0 ? 1 : -1;\n\t\t};\n\thelpers.log10 = Math.log10?\n\t\tfunction(x) {\n\t\t\treturn Math.log10(x);\n\t\t} :\n\t\tfunction(x) {\n\t\t\treturn Math.log(x) / Math.LN10;\n\t\t};\n\thelpers.toRadians = function(degrees) {\n\t\treturn degrees * (Math.PI / 180);\n\t};\n\thelpers.toDegrees = function(radians) {\n\t\treturn radians * (180 / Math.PI);\n\t};\n\t// Gets the angle from vertical upright to the point about a centre.\n\thelpers.getAngleFromPoint = function(centrePoint, anglePoint) {\n\t\tvar distanceFromXCenter = anglePoint.x - centrePoint.x,\n\t\t\tdistanceFromYCenter = anglePoint.y - centrePoint.y,\n\t\t\tradialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n\n\t\tvar angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n\n\t\tif (angle < (-0.5 * Math.PI)) {\n\t\t\tangle += 2.0 * Math.PI; // make sure the returned angle is in the range of (-PI/2, 3PI/2]\n\t\t}\n\n\t\treturn {\n\t\t\tangle: angle,\n\t\t\tdistance: radialDistanceFromCenter\n\t\t};\n\t};\n\thelpers.distanceBetweenPoints = function(pt1, pt2) {\n\t\treturn Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n\t};\n\thelpers.aliasPixel = function(pixelWidth) {\n\t\treturn (pixelWidth % 2 === 0) ? 0 : 0.5;\n\t};\n\thelpers.splineCurve = function(firstPoint, middlePoint, afterPoint, t) {\n\t\t// Props to Rob Spencer at scaled innovation for his post on splining between points\n\t\t// http://scaledinnovation.com/analytics/splines/aboutSplines.html\n\n\t\t// This function must also respect \"skipped\" points\n\n\t\tvar previous = firstPoint.skip ? middlePoint : firstPoint,\n\t\t\tcurrent = middlePoint,\n\t\t\tnext = afterPoint.skip ? middlePoint : afterPoint;\n\n\t\tvar d01 = Math.sqrt(Math.pow(current.x - previous.x, 2) + Math.pow(current.y - previous.y, 2));\n\t\tvar d12 = Math.sqrt(Math.pow(next.x - current.x, 2) + Math.pow(next.y - current.y, 2));\n\n\t\tvar s01 = d01 / (d01 + d12);\n\t\tvar s12 = d12 / (d01 + d12);\n\n\t\t// If all points are the same, s01 & s02 will be inf\n\t\ts01 = isNaN(s01) ? 0 : s01;\n\t\ts12 = isNaN(s12) ? 0 : s12;\n\n\t\tvar fa = t * s01; // scaling factor for triangle Ta\n\t\tvar fb = t * s12;\n\n\t\treturn {\n\t\t\tprevious: {\n\t\t\t\tx: current.x - fa * (next.x - previous.x),\n\t\t\t\ty: current.y - fa * (next.y - previous.y)\n\t\t\t},\n\t\t\tnext: {\n\t\t\t\tx: current.x + fb * (next.x - previous.x),\n\t\t\t\ty: current.y + fb * (next.y - previous.y)\n\t\t\t}\n\t\t};\n\t};\n\thelpers.EPSILON = Number.EPSILON || 1e-14;\n\thelpers.splineCurveMonotone = function(points) {\n\t\t// This function calculates Bézier control points in a similar way than |splineCurve|,\n\t\t// but preserves monotonicity of the provided data and ensures no local extremums are added\n\t\t// between the dataset discrete points due to the interpolation.\n\t\t// See : https://en.wikipedia.org/wiki/Monotone_cubic_interpolation\n\n\t\tvar pointsWithTangents = (points || []).map(function(point) {\n\t\t\treturn {\n\t\t\t\tmodel: point._model,\n\t\t\t\tdeltaK: 0,\n\t\t\t\tmK: 0\n\t\t\t};\n\t\t});\n\n\t\t// Calculate slopes (deltaK) and initialize tangents (mK)\n\t\tvar pointsLen = pointsWithTangents.length;\n\t\tvar i, pointBefore, pointCurrent, pointAfter;\n\t\tfor (i = 0; i < pointsLen; ++i) {\n\t\t\tpointCurrent = pointsWithTangents[i];\n\t\t\tif (pointCurrent.model.skip) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tpointBefore = i > 0 ? pointsWithTangents[i - 1] : null;\n\t\t\tpointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null;\n\t\t\tif (pointAfter && !pointAfter.model.skip) {\n\t\t\t\tvar slopeDeltaX = (pointAfter.model.x - pointCurrent.model.x);\n\n\t\t\t\t// In the case of two points that appear at the same x pixel, slopeDeltaX is 0\n\t\t\t\tpointCurrent.deltaK = slopeDeltaX !== 0 ? (pointAfter.model.y - pointCurrent.model.y) / slopeDeltaX : 0;\n\t\t\t}\n\n\t\t\tif (!pointBefore || pointBefore.model.skip) {\n\t\t\t\tpointCurrent.mK = pointCurrent.deltaK;\n\t\t\t} else if (!pointAfter || pointAfter.model.skip) {\n\t\t\t\tpointCurrent.mK = pointBefore.deltaK;\n\t\t\t} else if (this.sign(pointBefore.deltaK) !== this.sign(pointCurrent.deltaK)) {\n\t\t\t\tpointCurrent.mK = 0;\n\t\t\t} else {\n\t\t\t\tpointCurrent.mK = (pointBefore.deltaK + pointCurrent.deltaK) / 2;\n\t\t\t}\n\t\t}\n\n\t\t// Adjust tangents to ensure monotonic properties\n\t\tvar alphaK, betaK, tauK, squaredMagnitude;\n\t\tfor (i = 0; i < pointsLen - 1; ++i) {\n\t\t\tpointCurrent = pointsWithTangents[i];\n\t\t\tpointAfter = pointsWithTangents[i + 1];\n\t\t\tif (pointCurrent.model.skip || pointAfter.model.skip) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (helpers.almostEquals(pointCurrent.deltaK, 0, this.EPSILON)) {\n\t\t\t\tpointCurrent.mK = pointAfter.mK = 0;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\talphaK = pointCurrent.mK / pointCurrent.deltaK;\n\t\t\tbetaK = pointAfter.mK / pointCurrent.deltaK;\n\t\t\tsquaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n\t\t\tif (squaredMagnitude <= 9) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\ttauK = 3 / Math.sqrt(squaredMagnitude);\n\t\t\tpointCurrent.mK = alphaK * tauK * pointCurrent.deltaK;\n\t\t\tpointAfter.mK = betaK * tauK * pointCurrent.deltaK;\n\t\t}\n\n\t\t// Compute control points\n\t\tvar deltaX;\n\t\tfor (i = 0; i < pointsLen; ++i) {\n\t\t\tpointCurrent = pointsWithTangents[i];\n\t\t\tif (pointCurrent.model.skip) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tpointBefore = i > 0 ? pointsWithTangents[i - 1] : null;\n\t\t\tpointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null;\n\t\t\tif (pointBefore && !pointBefore.model.skip) {\n\t\t\t\tdeltaX = (pointCurrent.model.x - pointBefore.model.x) / 3;\n\t\t\t\tpointCurrent.model.controlPointPreviousX = pointCurrent.model.x - deltaX;\n\t\t\t\tpointCurrent.model.controlPointPreviousY = pointCurrent.model.y - deltaX * pointCurrent.mK;\n\t\t\t}\n\t\t\tif (pointAfter && !pointAfter.model.skip) {\n\t\t\t\tdeltaX = (pointAfter.model.x - pointCurrent.model.x) / 3;\n\t\t\t\tpointCurrent.model.controlPointNextX = pointCurrent.model.x + deltaX;\n\t\t\t\tpointCurrent.model.controlPointNextY = pointCurrent.model.y + deltaX * pointCurrent.mK;\n\t\t\t}\n\t\t}\n\t};\n\thelpers.nextItem = function(collection, index, loop) {\n\t\tif (loop) {\n\t\t\treturn index >= collection.length - 1 ? collection[0] : collection[index + 1];\n\t\t}\n\t\treturn index >= collection.length - 1 ? collection[collection.length - 1] : collection[index + 1];\n\t};\n\thelpers.previousItem = function(collection, index, loop) {\n\t\tif (loop) {\n\t\t\treturn index <= 0 ? collection[collection.length - 1] : collection[index - 1];\n\t\t}\n\t\treturn index <= 0 ? collection[0] : collection[index - 1];\n\t};\n\t// Implementation of the nice number algorithm used in determining where axis labels will go\n\thelpers.niceNum = function(range, round) {\n\t\tvar exponent = Math.floor(helpers.log10(range));\n\t\tvar fraction = range / Math.pow(10, exponent);\n\t\tvar niceFraction;\n\n\t\tif (round) {\n\t\t\tif (fraction < 1.5) {\n\t\t\t\tniceFraction = 1;\n\t\t\t} else if (fraction < 3) {\n\t\t\t\tniceFraction = 2;\n\t\t\t} else if (fraction < 7) {\n\t\t\t\tniceFraction = 5;\n\t\t\t} else {\n\t\t\t\tniceFraction = 10;\n\t\t\t}\n\t\t} else if (fraction <= 1.0) {\n\t\t\tniceFraction = 1;\n\t\t} else if (fraction <= 2) {\n\t\t\tniceFraction = 2;\n\t\t} else if (fraction <= 5) {\n\t\t\tniceFraction = 5;\n\t\t} else {\n\t\t\tniceFraction = 10;\n\t\t}\n\n\t\treturn niceFraction * Math.pow(10, exponent);\n\t};\n\t// Easing functions adapted from Robert Penner's easing equations\n\t// http://www.robertpenner.com/easing/\n\tvar easingEffects = helpers.easingEffects = {\n\t\tlinear: function(t) {\n\t\t\treturn t;\n\t\t},\n\t\teaseInQuad: function(t) {\n\t\t\treturn t * t;\n\t\t},\n\t\teaseOutQuad: function(t) {\n\t\t\treturn -1 * t * (t - 2);\n\t\t},\n\t\teaseInOutQuad: function(t) {\n\t\t\tif ((t /= 1 / 2) < 1) {\n\t\t\t\treturn 1 / 2 * t * t;\n\t\t\t}\n\t\t\treturn -1 / 2 * ((--t) * (t - 2) - 1);\n\t\t},\n\t\teaseInCubic: function(t) {\n\t\t\treturn t * t * t;\n\t\t},\n\t\teaseOutCubic: function(t) {\n\t\t\treturn 1 * ((t = t / 1 - 1) * t * t + 1);\n\t\t},\n\t\teaseInOutCubic: function(t) {\n\t\t\tif ((t /= 1 / 2) < 1) {\n\t\t\t\treturn 1 / 2 * t * t * t;\n\t\t\t}\n\t\t\treturn 1 / 2 * ((t -= 2) * t * t + 2);\n\t\t},\n\t\teaseInQuart: function(t) {\n\t\t\treturn t * t * t * t;\n\t\t},\n\t\teaseOutQuart: function(t) {\n\t\t\treturn -1 * ((t = t / 1 - 1) * t * t * t - 1);\n\t\t},\n\t\teaseInOutQuart: function(t) {\n\t\t\tif ((t /= 1 / 2) < 1) {\n\t\t\t\treturn 1 / 2 * t * t * t * t;\n\t\t\t}\n\t\t\treturn -1 / 2 * ((t -= 2) * t * t * t - 2);\n\t\t},\n\t\teaseInQuint: function(t) {\n\t\t\treturn 1 * (t /= 1) * t * t * t * t;\n\t\t},\n\t\teaseOutQuint: function(t) {\n\t\t\treturn 1 * ((t = t / 1 - 1) * t * t * t * t + 1);\n\t\t},\n\t\teaseInOutQuint: function(t) {\n\t\t\tif ((t /= 1 / 2) < 1) {\n\t\t\t\treturn 1 / 2 * t * t * t * t * t;\n\t\t\t}\n\t\t\treturn 1 / 2 * ((t -= 2) * t * t * t * t + 2);\n\t\t},\n\t\teaseInSine: function(t) {\n\t\t\treturn -1 * Math.cos(t / 1 * (Math.PI / 2)) + 1;\n\t\t},\n\t\teaseOutSine: function(t) {\n\t\t\treturn 1 * Math.sin(t / 1 * (Math.PI / 2));\n\t\t},\n\t\teaseInOutSine: function(t) {\n\t\t\treturn -1 / 2 * (Math.cos(Math.PI * t / 1) - 1);\n\t\t},\n\t\teaseInExpo: function(t) {\n\t\t\treturn (t === 0) ? 1 : 1 * Math.pow(2, 10 * (t / 1 - 1));\n\t\t},\n\t\teaseOutExpo: function(t) {\n\t\t\treturn (t === 1) ? 1 : 1 * (-Math.pow(2, -10 * t / 1) + 1);\n\t\t},\n\t\teaseInOutExpo: function(t) {\n\t\t\tif (t === 0) {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\tif (t === 1) {\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t\tif ((t /= 1 / 2) < 1) {\n\t\t\t\treturn 1 / 2 * Math.pow(2, 10 * (t - 1));\n\t\t\t}\n\t\t\treturn 1 / 2 * (-Math.pow(2, -10 * --t) + 2);\n\t\t},\n\t\teaseInCirc: function(t) {\n\t\t\tif (t >= 1) {\n\t\t\t\treturn t;\n\t\t\t}\n\t\t\treturn -1 * (Math.sqrt(1 - (t /= 1) * t) - 1);\n\t\t},\n\t\teaseOutCirc: function(t) {\n\t\t\treturn 1 * Math.sqrt(1 - (t = t / 1 - 1) * t);\n\t\t},\n\t\teaseInOutCirc: function(t) {\n\t\t\tif ((t /= 1 / 2) < 1) {\n\t\t\t\treturn -1 / 2 * (Math.sqrt(1 - t * t) - 1);\n\t\t\t}\n\t\t\treturn 1 / 2 * (Math.sqrt(1 - (t -= 2) * t) + 1);\n\t\t},\n\t\teaseInElastic: function(t) {\n\t\t\tvar s = 1.70158;\n\t\t\tvar p = 0;\n\t\t\tvar a = 1;\n\t\t\tif (t === 0) {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\tif ((t /= 1) === 1) {\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t\tif (!p) {\n\t\t\t\tp = 1 * 0.3;\n\t\t\t}\n\t\t\tif (a < Math.abs(1)) {\n\t\t\t\ta = 1;\n\t\t\t\ts = p / 4;\n\t\t\t} else {\n\t\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\n\t\t\t}\n\t\t\treturn -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * 1 - s) * (2 * Math.PI) / p));\n\t\t},\n\t\teaseOutElastic: function(t) {\n\t\t\tvar s = 1.70158;\n\t\t\tvar p = 0;\n\t\t\tvar a = 1;\n\t\t\tif (t === 0) {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\tif ((t /= 1) === 1) {\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t\tif (!p) {\n\t\t\t\tp = 1 * 0.3;\n\t\t\t}\n\t\t\tif (a < Math.abs(1)) {\n\t\t\t\ta = 1;\n\t\t\t\ts = p / 4;\n\t\t\t} else {\n\t\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\n\t\t\t}\n\t\t\treturn a * Math.pow(2, -10 * t) * Math.sin((t * 1 - s) * (2 * Math.PI) / p) + 1;\n\t\t},\n\t\teaseInOutElastic: function(t) {\n\t\t\tvar s = 1.70158;\n\t\t\tvar p = 0;\n\t\t\tvar a = 1;\n\t\t\tif (t === 0) {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\tif ((t /= 1 / 2) === 2) {\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t\tif (!p) {\n\t\t\t\tp = 1 * (0.3 * 1.5);\n\t\t\t}\n\t\t\tif (a < Math.abs(1)) {\n\t\t\t\ta = 1;\n\t\t\t\ts = p / 4;\n\t\t\t} else {\n\t\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\n\t\t\t}\n\t\t\tif (t < 1) {\n\t\t\t\treturn -0.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * 1 - s) * (2 * Math.PI) / p));\n\t\t\t}\n\t\t\treturn a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t * 1 - s) * (2 * Math.PI) / p) * 0.5 + 1;\n\t\t},\n\t\teaseInBack: function(t) {\n\t\t\tvar s = 1.70158;\n\t\t\treturn 1 * (t /= 1) * t * ((s + 1) * t - s);\n\t\t},\n\t\teaseOutBack: function(t) {\n\t\t\tvar s = 1.70158;\n\t\t\treturn 1 * ((t = t / 1 - 1) * t * ((s + 1) * t + s) + 1);\n\t\t},\n\t\teaseInOutBack: function(t) {\n\t\t\tvar s = 1.70158;\n\t\t\tif ((t /= 1 / 2) < 1) {\n\t\t\t\treturn 1 / 2 * (t * t * (((s *= (1.525)) + 1) * t - s));\n\t\t\t}\n\t\t\treturn 1 / 2 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\n\t\t},\n\t\teaseInBounce: function(t) {\n\t\t\treturn 1 - easingEffects.easeOutBounce(1 - t);\n\t\t},\n\t\teaseOutBounce: function(t) {\n\t\t\tif ((t /= 1) < (1 / 2.75)) {\n\t\t\t\treturn 1 * (7.5625 * t * t);\n\t\t\t} else if (t < (2 / 2.75)) {\n\t\t\t\treturn 1 * (7.5625 * (t -= (1.5 / 2.75)) * t + 0.75);\n\t\t\t} else if (t < (2.5 / 2.75)) {\n\t\t\t\treturn 1 * (7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375);\n\t\t\t}\n\t\t\treturn 1 * (7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375);\n\t\t},\n\t\teaseInOutBounce: function(t) {\n\t\t\tif (t < 1 / 2) {\n\t\t\t\treturn easingEffects.easeInBounce(t * 2) * 0.5;\n\t\t\t}\n\t\t\treturn easingEffects.easeOutBounce(t * 2 - 1) * 0.5 + 1 * 0.5;\n\t\t}\n\t};\n\t// Request animation polyfill - http://www.paulirish.com/2011/requestanimationframe-for-smart-animating/\n\thelpers.requestAnimFrame = (function() {\n\t\tif (typeof window === 'undefined') {\n\t\t\treturn function(callback) {\n\t\t\t\tcallback();\n\t\t\t};\n\t\t}\n\t\treturn window.requestAnimationFrame ||\n\t\t\twindow.webkitRequestAnimationFrame ||\n\t\t\twindow.mozRequestAnimationFrame ||\n\t\t\twindow.oRequestAnimationFrame ||\n\t\t\twindow.msRequestAnimationFrame ||\n\t\t\tfunction(callback) {\n\t\t\t\treturn window.setTimeout(callback, 1000 / 60);\n\t\t\t};\n\t}());\n\t// -- DOM methods\n\thelpers.getRelativePosition = function(evt, chart) {\n\t\tvar mouseX, mouseY;\n\t\tvar e = evt.originalEvent || evt,\n\t\t\tcanvas = evt.currentTarget || evt.srcElement,\n\t\t\tboundingRect = canvas.getBoundingClientRect();\n\n\t\tvar touches = e.touches;\n\t\tif (touches && touches.length > 0) {\n\t\t\tmouseX = touches[0].clientX;\n\t\t\tmouseY = touches[0].clientY;\n\n\t\t} else {\n\t\t\tmouseX = e.clientX;\n\t\t\tmouseY = e.clientY;\n\t\t}\n\n\t\t// Scale mouse coordinates into canvas coordinates\n\t\t// by following the pattern laid out by 'jerryj' in the comments of\n\t\t// http://www.html5canvastutorials.com/advanced/html5-canvas-mouse-coordinates/\n\t\tvar paddingLeft = parseFloat(helpers.getStyle(canvas, 'padding-left'));\n\t\tvar paddingTop = parseFloat(helpers.getStyle(canvas, 'padding-top'));\n\t\tvar paddingRight = parseFloat(helpers.getStyle(canvas, 'padding-right'));\n\t\tvar paddingBottom = parseFloat(helpers.getStyle(canvas, 'padding-bottom'));\n\t\tvar width = boundingRect.right - boundingRect.left - paddingLeft - paddingRight;\n\t\tvar height = boundingRect.bottom - boundingRect.top - paddingTop - paddingBottom;\n\n\t\t// We divide by the current device pixel ratio, because the canvas is scaled up by that amount in each direction. However\n\t\t// the backend model is in unscaled coordinates. Since we are going to deal with our model coordinates, we go back here\n\t\tmouseX = Math.round((mouseX - boundingRect.left - paddingLeft) / (width) * canvas.width / chart.currentDevicePixelRatio);\n\t\tmouseY = Math.round((mouseY - boundingRect.top - paddingTop) / (height) * canvas.height / chart.currentDevicePixelRatio);\n\n\t\treturn {\n\t\t\tx: mouseX,\n\t\t\ty: mouseY\n\t\t};\n\n\t};\n\thelpers.addEvent = function(node, eventType, method) {\n\t\tif (node.addEventListener) {\n\t\t\tnode.addEventListener(eventType, method);\n\t\t} else if (node.attachEvent) {\n\t\t\tnode.attachEvent('on' + eventType, method);\n\t\t} else {\n\t\t\tnode['on' + eventType] = method;\n\t\t}\n\t};\n\thelpers.removeEvent = function(node, eventType, handler) {\n\t\tif (node.removeEventListener) {\n\t\t\tnode.removeEventListener(eventType, handler, false);\n\t\t} else if (node.detachEvent) {\n\t\t\tnode.detachEvent('on' + eventType, handler);\n\t\t} else {\n\t\t\tnode['on' + eventType] = helpers.noop;\n\t\t}\n\t};\n\n\t// Private helper function to convert max-width/max-height values that may be percentages into a number\n\tfunction parseMaxStyle(styleValue, node, parentProperty) {\n\t\tvar valueInPixels;\n\t\tif (typeof(styleValue) === 'string') {\n\t\t\tvalueInPixels = parseInt(styleValue, 10);\n\n\t\t\tif (styleValue.indexOf('%') !== -1) {\n\t\t\t\t// percentage * size in dimension\n\t\t\t\tvalueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\n\t\t\t}\n\t\t} else {\n\t\t\tvalueInPixels = styleValue;\n\t\t}\n\n\t\treturn valueInPixels;\n\t}\n\n\t/**\n\t * Returns if the given value contains an effective constraint.\n\t * @private\n\t */\n\tfunction isConstrainedValue(value) {\n\t\treturn value !== undefined && value !== null && value !== 'none';\n\t}\n\n\t// Private helper to get a constraint dimension\n\t// @param domNode : the node to check the constraint on\n\t// @param maxStyle : the style that defines the maximum for the direction we are using (maxWidth / maxHeight)\n\t// @param percentageProperty : property of parent to use when calculating width as a percentage\n\t// @see http://www.nathanaeljones.com/blog/2013/reading-max-width-cross-browser\n\tfunction getConstraintDimension(domNode, maxStyle, percentageProperty) {\n\t\tvar view = document.defaultView;\n\t\tvar parentNode = domNode.parentNode;\n\t\tvar constrainedNode = view.getComputedStyle(domNode)[maxStyle];\n\t\tvar constrainedContainer = view.getComputedStyle(parentNode)[maxStyle];\n\t\tvar hasCNode = isConstrainedValue(constrainedNode);\n\t\tvar hasCContainer = isConstrainedValue(constrainedContainer);\n\t\tvar infinity = Number.POSITIVE_INFINITY;\n\n\t\tif (hasCNode || hasCContainer) {\n\t\t\treturn Math.min(\n\t\t\t\thasCNode? parseMaxStyle(constrainedNode, domNode, percentageProperty) : infinity,\n\t\t\t\thasCContainer? parseMaxStyle(constrainedContainer, parentNode, percentageProperty) : infinity);\n\t\t}\n\n\t\treturn 'none';\n\t}\n\t// returns Number or undefined if no constraint\n\thelpers.getConstraintWidth = function(domNode) {\n\t\treturn getConstraintDimension(domNode, 'max-width', 'clientWidth');\n\t};\n\t// returns Number or undefined if no constraint\n\thelpers.getConstraintHeight = function(domNode) {\n\t\treturn getConstraintDimension(domNode, 'max-height', 'clientHeight');\n\t};\n\thelpers.getMaximumWidth = function(domNode) {\n\t\tvar container = domNode.parentNode;\n\t\tvar paddingLeft = parseInt(helpers.getStyle(container, 'padding-left'), 10);\n\t\tvar paddingRight = parseInt(helpers.getStyle(container, 'padding-right'), 10);\n\t\tvar w = container.clientWidth - paddingLeft - paddingRight;\n\t\tvar cw = helpers.getConstraintWidth(domNode);\n\t\treturn isNaN(cw)? w : Math.min(w, cw);\n\t};\n\thelpers.getMaximumHeight = function(domNode) {\n\t\tvar container = domNode.parentNode;\n\t\tvar paddingTop = parseInt(helpers.getStyle(container, 'padding-top'), 10);\n\t\tvar paddingBottom = parseInt(helpers.getStyle(container, 'padding-bottom'), 10);\n\t\tvar h = container.clientHeight - paddingTop - paddingBottom;\n\t\tvar ch = helpers.getConstraintHeight(domNode);\n\t\treturn isNaN(ch)? h : Math.min(h, ch);\n\t};\n\thelpers.getStyle = function(el, property) {\n\t\treturn el.currentStyle ?\n\t\t\tel.currentStyle[property] :\n\t\t\tdocument.defaultView.getComputedStyle(el, null).getPropertyValue(property);\n\t};\n\thelpers.retinaScale = function(chart) {\n\t\tvar pixelRatio = chart.currentDevicePixelRatio = window.devicePixelRatio || 1;\n\t\tif (pixelRatio === 1) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar canvas = chart.canvas;\n\t\tvar height = chart.height;\n\t\tvar width = chart.width;\n\n\t\tcanvas.height = height * pixelRatio;\n\t\tcanvas.width = width * pixelRatio;\n\t\tchart.ctx.scale(pixelRatio, pixelRatio);\n\n\t\t// If no style has been set on the canvas, the render size is used as display size,\n\t\t// making the chart visually bigger, so let's enforce it to the \"correct\" values.\n\t\t// See https://github.com/chartjs/Chart.js/issues/3575\n\t\tcanvas.style.height = height + 'px';\n\t\tcanvas.style.width = width + 'px';\n\t};\n\t// -- Canvas methods\n\thelpers.clear = function(chart) {\n\t\tchart.ctx.clearRect(0, 0, chart.width, chart.height);\n\t};\n\thelpers.fontString = function(pixelSize, fontStyle, fontFamily) {\n\t\treturn fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n\t};\n\thelpers.longestText = function(ctx, font, arrayOfThings, cache) {\n\t\tcache = cache || {};\n\t\tvar data = cache.data = cache.data || {};\n\t\tvar gc = cache.garbageCollect = cache.garbageCollect || [];\n\n\t\tif (cache.font !== font) {\n\t\t\tdata = cache.data = {};\n\t\t\tgc = cache.garbageCollect = [];\n\t\t\tcache.font = font;\n\t\t}\n\n\t\tctx.font = font;\n\t\tvar longest = 0;\n\t\thelpers.each(arrayOfThings, function(thing) {\n\t\t\t// Undefined strings and arrays should not be measured\n\t\t\tif (thing !== undefined && thing !== null && helpers.isArray(thing) !== true) {\n\t\t\t\tlongest = helpers.measureText(ctx, data, gc, longest, thing);\n\t\t\t} else if (helpers.isArray(thing)) {\n\t\t\t\t// if it is an array lets measure each element\n\t\t\t\t// to do maybe simplify this function a bit so we can do this more recursively?\n\t\t\t\thelpers.each(thing, function(nestedThing) {\n\t\t\t\t\t// Undefined strings and arrays should not be measured\n\t\t\t\t\tif (nestedThing !== undefined && nestedThing !== null && !helpers.isArray(nestedThing)) {\n\t\t\t\t\t\tlongest = helpers.measureText(ctx, data, gc, longest, nestedThing);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\tvar gcLen = gc.length / 2;\n\t\tif (gcLen > arrayOfThings.length) {\n\t\t\tfor (var i = 0; i < gcLen; i++) {\n\t\t\t\tdelete data[gc[i]];\n\t\t\t}\n\t\t\tgc.splice(0, gcLen);\n\t\t}\n\t\treturn longest;\n\t};\n\thelpers.measureText = function(ctx, data, gc, longest, string) {\n\t\tvar textWidth = data[string];\n\t\tif (!textWidth) {\n\t\t\ttextWidth = data[string] = ctx.measureText(string).width;\n\t\t\tgc.push(string);\n\t\t}\n\t\tif (textWidth > longest) {\n\t\t\tlongest = textWidth;\n\t\t}\n\t\treturn longest;\n\t};\n\thelpers.numberOfLabelLines = function(arrayOfThings) {\n\t\tvar numberOfLines = 1;\n\t\thelpers.each(arrayOfThings, function(thing) {\n\t\t\tif (helpers.isArray(thing)) {\n\t\t\t\tif (thing.length > numberOfLines) {\n\t\t\t\t\tnumberOfLines = thing.length;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\treturn numberOfLines;\n\t};\n\thelpers.drawRoundedRectangle = function(ctx, x, y, width, height, radius) {\n\t\tctx.beginPath();\n\t\tctx.moveTo(x + radius, y);\n\t\tctx.lineTo(x + width - radius, y);\n\t\tctx.quadraticCurveTo(x + width, y, x + width, y + radius);\n\t\tctx.lineTo(x + width, y + height - radius);\n\t\tctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height);\n\t\tctx.lineTo(x + radius, y + height);\n\t\tctx.quadraticCurveTo(x, y + height, x, y + height - radius);\n\t\tctx.lineTo(x, y + radius);\n\t\tctx.quadraticCurveTo(x, y, x + radius, y);\n\t\tctx.closePath();\n\t};\n\n\thelpers.color = !color?\n\t\tfunction(value) {\n\t\t\tconsole.error('Color.js not found!');\n\t\t\treturn value;\n\t\t} :\n\t\tfunction(value) {\n\t\t\t/* global CanvasGradient */\n\t\t\tif (value instanceof CanvasGradient) {\n\t\t\t\tvalue = Chart.defaults.global.defaultColor;\n\t\t\t}\n\n\t\t\treturn color(value);\n\t\t};\n\n\thelpers.isArray = Array.isArray?\n\t\tfunction(obj) {\n\t\t\treturn Array.isArray(obj);\n\t\t} :\n\t\tfunction(obj) {\n\t\t\treturn Object.prototype.toString.call(obj) === '[object Array]';\n\t\t};\n\t// ! @see http://stackoverflow.com/a/14853974\n\thelpers.arrayEquals = function(a0, a1) {\n\t\tvar i, ilen, v0, v1;\n\n\t\tif (!a0 || !a1 || a0.length !== a1.length) {\n\t\t\treturn false;\n\t\t}\n\n\t\tfor (i = 0, ilen=a0.length; i < ilen; ++i) {\n\t\t\tv0 = a0[i];\n\t\t\tv1 = a1[i];\n\n\t\t\tif (v0 instanceof Array && v1 instanceof Array) {\n\t\t\t\tif (!helpers.arrayEquals(v0, v1)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} else if (v0 !== v1) {\n\t\t\t\t// NOTE: two different object instances will never be equal: {x:20} != {x:20}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t};\n\thelpers.callback = function(fn, args, thisArg) {\n\t\tif (fn && typeof fn.call === 'function') {\n\t\t\tfn.apply(thisArg, args);\n\t\t}\n\t};\n\thelpers.getHoverColor = function(colorValue) {\n\t\t/* global CanvasPattern */\n\t\treturn (colorValue instanceof CanvasPattern) ?\n\t\t\tcolorValue :\n\t\t\thelpers.color(colorValue).saturate(0.5).darken(0.1).rgbString();\n\t};\n\n\t/**\n\t * Provided for backward compatibility, use Chart.helpers#callback instead.\n\t * @function Chart.helpers#callCallback\n\t * @deprecated since version 2.6.0\n\t * @todo remove at version 3\n\t */\n\thelpers.callCallback = helpers.callback;\n};\n\n},{\"3\":3}],27:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\tvar helpers = Chart.helpers;\n\n\t/**\n\t * Helper function to get relative position for an event\n\t * @param {Event|IEvent} event - The event to get the position for\n\t * @param {Chart} chart - The chart\n\t * @returns {Point} the event position\n\t */\n\tfunction getRelativePosition(e, chart) {\n\t\tif (e.native) {\n\t\t\treturn {\n\t\t\t\tx: e.x,\n\t\t\t\ty: e.y\n\t\t\t};\n\t\t}\n\n\t\treturn helpers.getRelativePosition(e, chart);\n\t}\n\n\t/**\n\t * Helper function to traverse all of the visible elements in the chart\n\t * @param chart {chart} the chart\n\t * @param handler {Function} the callback to execute for each visible item\n\t */\n\tfunction parseVisibleItems(chart, handler) {\n\t\tvar datasets = chart.data.datasets;\n\t\tvar meta, i, j, ilen, jlen;\n\n\t\tfor (i = 0, ilen = datasets.length; i < ilen; ++i) {\n\t\t\tif (!chart.isDatasetVisible(i)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tmeta = chart.getDatasetMeta(i);\n\t\t\tfor (j = 0, jlen = meta.data.length; j < jlen; ++j) {\n\t\t\t\tvar element = meta.data[j];\n\t\t\t\tif (!element._view.skip) {\n\t\t\t\t\thandler(element);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Helper function to get the items that intersect the event position\n\t * @param items {ChartElement[]} elements to filter\n\t * @param position {Point} the point to be nearest to\n\t * @return {ChartElement[]} the nearest items\n\t */\n\tfunction getIntersectItems(chart, position) {\n\t\tvar elements = [];\n\n\t\tparseVisibleItems(chart, function(element) {\n\t\t\tif (element.inRange(position.x, position.y)) {\n\t\t\t\telements.push(element);\n\t\t\t}\n\t\t});\n\n\t\treturn elements;\n\t}\n\n\t/**\n\t * Helper function to get the items nearest to the event position considering all visible items in teh chart\n\t * @param chart {Chart} the chart to look at elements from\n\t * @param position {Point} the point to be nearest to\n\t * @param intersect {Boolean} if true, only consider items that intersect the position\n\t * @param distanceMetric {Function} Optional function to provide the distance between\n\t * @return {ChartElement[]} the nearest items\n\t */\n\tfunction getNearestItems(chart, position, intersect, distanceMetric) {\n\t\tvar minDistance = Number.POSITIVE_INFINITY;\n\t\tvar nearestItems = [];\n\n\t\tif (!distanceMetric) {\n\t\t\tdistanceMetric = helpers.distanceBetweenPoints;\n\t\t}\n\n\t\tparseVisibleItems(chart, function(element) {\n\t\t\tif (intersect && !element.inRange(position.x, position.y)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar center = element.getCenterPoint();\n\t\t\tvar distance = distanceMetric(position, center);\n\n\t\t\tif (distance < minDistance) {\n\t\t\t\tnearestItems = [element];\n\t\t\t\tminDistance = distance;\n\t\t\t} else if (distance === minDistance) {\n\t\t\t\t// Can have multiple items at the same distance in which case we sort by size\n\t\t\t\tnearestItems.push(element);\n\t\t\t}\n\t\t});\n\n\t\treturn nearestItems;\n\t}\n\n\tfunction indexMode(chart, e, options) {\n\t\tvar position = getRelativePosition(e, chart);\n\t\tvar distanceMetric = function(pt1, pt2) {\n\t\t\treturn Math.abs(pt1.x - pt2.x);\n\t\t};\n\t\tvar items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric);\n\t\tvar elements = [];\n\n\t\tif (!items.length) {\n\t\t\treturn [];\n\t\t}\n\n\t\tchart.data.datasets.forEach(function(dataset, datasetIndex) {\n\t\t\tif (chart.isDatasetVisible(datasetIndex)) {\n\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex),\n\t\t\t\t\telement = meta.data[items[0]._index];\n\n\t\t\t\t// don't count items that are skipped (null data)\n\t\t\t\tif (element && !element._view.skip) {\n\t\t\t\t\telements.push(element);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn elements;\n\t}\n\n\t/**\n\t * @interface IInteractionOptions\n\t */\n\t/**\n\t * If true, only consider items that intersect the point\n\t * @name IInterfaceOptions#boolean\n\t * @type Boolean\n\t */\n\n\t/**\n\t * Contains interaction related functions\n\t * @namespace Chart.Interaction\n\t */\n\tChart.Interaction = {\n\t\t// Helper function for different modes\n\t\tmodes: {\n\t\t\tsingle: function(chart, e) {\n\t\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\t\tvar elements = [];\n\n\t\t\t\tparseVisibleItems(chart, function(element) {\n\t\t\t\t\tif (element.inRange(position.x, position.y)) {\n\t\t\t\t\t\telements.push(element);\n\t\t\t\t\t\treturn elements;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn elements.slice(0, 1);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * @function Chart.Interaction.modes.label\n\t\t\t * @deprecated since version 2.4.0\n\t \t\t * @todo remove at version 3\n\t\t\t * @private\n\t\t\t */\n\t\t\tlabel: indexMode,\n\n\t\t\t/**\n\t\t\t * Returns items at the same index. If the options.intersect parameter is true, we only return items if we intersect something\n\t\t\t * If the options.intersect mode is false, we find the nearest item and return the items at the same index as that item\n\t\t\t * @function Chart.Interaction.modes.index\n\t\t\t * @since v2.4.0\n\t\t\t * @param chart {chart} the chart we are returning items from\n\t\t\t * @param e {Event} the event we are find things at\n\t\t\t * @param options {IInteractionOptions} options to use during interaction\n\t\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t\t */\n\t\t\tindex: indexMode,\n\n\t\t\t/**\n\t\t\t * Returns items in the same dataset. If the options.intersect parameter is true, we only return items if we intersect something\n\t\t\t * If the options.intersect is false, we find the nearest item and return the items in that dataset\n\t\t\t * @function Chart.Interaction.modes.dataset\n\t\t\t * @param chart {chart} the chart we are returning items from\n\t\t\t * @param e {Event} the event we are find things at\n\t\t\t * @param options {IInteractionOptions} options to use during interaction\n\t\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t\t */\n\t\t\tdataset: function(chart, e, options) {\n\t\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\t\tvar items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false);\n\n\t\t\t\tif (items.length > 0) {\n\t\t\t\t\titems = chart.getDatasetMeta(items[0]._datasetIndex).data;\n\t\t\t\t}\n\n\t\t\t\treturn items;\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * @function Chart.Interaction.modes.x-axis\n\t\t\t * @deprecated since version 2.4.0. Use index mode and intersect == true\n\t\t\t * @todo remove at version 3\n\t\t\t * @private\n\t\t\t */\n\t\t\t'x-axis': function(chart, e) {\n\t\t\t\treturn indexMode(chart, e, true);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Point mode returns all elements that hit test based on the event position\n\t\t\t * of the event\n\t\t\t * @function Chart.Interaction.modes.intersect\n\t\t\t * @param chart {chart} the chart we are returning items from\n\t\t\t * @param e {Event} the event we are find things at\n\t\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t\t */\n\t\t\tpoint: function(chart, e) {\n\t\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\t\treturn getIntersectItems(chart, position);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * nearest mode returns the element closest to the point\n\t\t\t * @function Chart.Interaction.modes.intersect\n\t\t\t * @param chart {chart} the chart we are returning items from\n\t\t\t * @param e {Event} the event we are find things at\n\t\t\t * @param options {IInteractionOptions} options to use\n\t\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t\t */\n\t\t\tnearest: function(chart, e, options) {\n\t\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\t\tvar nearestItems = getNearestItems(chart, position, options.intersect);\n\n\t\t\t\t// We have multiple items at the same distance from the event. Now sort by smallest\n\t\t\t\tif (nearestItems.length > 1) {\n\t\t\t\t\tnearestItems.sort(function(a, b) {\n\t\t\t\t\t\tvar sizeA = a.getArea();\n\t\t\t\t\t\tvar sizeB = b.getArea();\n\t\t\t\t\t\tvar ret = sizeA - sizeB;\n\n\t\t\t\t\t\tif (ret === 0) {\n\t\t\t\t\t\t\t// if equal sort by dataset index\n\t\t\t\t\t\t\tret = a._datasetIndex - b._datasetIndex;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn ret;\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// Return only 1 item\n\t\t\t\treturn nearestItems.slice(0, 1);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * x mode returns the elements that hit-test at the current x coordinate\n\t\t\t * @function Chart.Interaction.modes.x\n\t\t\t * @param chart {chart} the chart we are returning items from\n\t\t\t * @param e {Event} the event we are find things at\n\t\t\t * @param options {IInteractionOptions} options to use\n\t\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t\t */\n\t\t\tx: function(chart, e, options) {\n\t\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\t\tvar items = [];\n\t\t\t\tvar intersectsItem = false;\n\n\t\t\t\tparseVisibleItems(chart, function(element) {\n\t\t\t\t\tif (element.inXRange(position.x)) {\n\t\t\t\t\t\titems.push(element);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (element.inRange(position.x, position.y)) {\n\t\t\t\t\t\tintersectsItem = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t// If we want to trigger on an intersect and we don't have any items\n\t\t\t\t// that intersect the position, return nothing\n\t\t\t\tif (options.intersect && !intersectsItem) {\n\t\t\t\t\titems = [];\n\t\t\t\t}\n\t\t\t\treturn items;\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * y mode returns the elements that hit-test at the current y coordinate\n\t\t\t * @function Chart.Interaction.modes.y\n\t\t\t * @param chart {chart} the chart we are returning items from\n\t\t\t * @param e {Event} the event we are find things at\n\t\t\t * @param options {IInteractionOptions} options to use\n\t\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t\t */\n\t\t\ty: function(chart, e, options) {\n\t\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\t\tvar items = [];\n\t\t\t\tvar intersectsItem = false;\n\n\t\t\t\tparseVisibleItems(chart, function(element) {\n\t\t\t\t\tif (element.inYRange(position.y)) {\n\t\t\t\t\t\titems.push(element);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (element.inRange(position.x, position.y)) {\n\t\t\t\t\t\tintersectsItem = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t// If we want to trigger on an intersect and we don't have any items\n\t\t\t\t// that intersect the position, return nothing\n\t\t\t\tif (options.intersect && !intersectsItem) {\n\t\t\t\t\titems = [];\n\t\t\t\t}\n\t\t\t\treturn items;\n\t\t\t}\n\t\t}\n\t};\n};\n\n},{}],28:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function() {\n\n\t// Occupy the global variable of Chart, and create a simple base class\n\tvar Chart = function(item, config) {\n\t\tthis.construct(item, config);\n\t\treturn this;\n\t};\n\n\t// Globally expose the defaults to allow for user updating/changing\n\tChart.defaults = {\n\t\tglobal: {\n\t\t\tresponsive: true,\n\t\t\tresponsiveAnimationDuration: 0,\n\t\t\tmaintainAspectRatio: true,\n\t\t\tevents: ['mousemove', 'mouseout', 'click', 'touchstart', 'touchmove'],\n\t\t\thover: {\n\t\t\t\tonHover: null,\n\t\t\t\tmode: 'nearest',\n\t\t\t\tintersect: true,\n\t\t\t\tanimationDuration: 400\n\t\t\t},\n\t\t\tonClick: null,\n\t\t\tdefaultColor: 'rgba(0,0,0,0.1)',\n\t\t\tdefaultFontColor: '#666',\n\t\t\tdefaultFontFamily: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n\t\t\tdefaultFontSize: 12,\n\t\t\tdefaultFontStyle: 'normal',\n\t\t\tshowLines: true,\n\n\t\t\t// Element defaults defined in element extensions\n\t\t\telements: {},\n\n\t\t\t// Legend callback string\n\t\t\tlegendCallback: function(chart) {\n\t\t\t\tvar text = [];\n\t\t\t\ttext.push('<ul class=\"' + chart.id + '-legend\">');\n\t\t\t\tfor (var i = 0; i < chart.data.datasets.length; i++) {\n\t\t\t\t\ttext.push('<li><span style=\"background-color:' + chart.data.datasets[i].backgroundColor + '\"></span>');\n\t\t\t\t\tif (chart.data.datasets[i].label) {\n\t\t\t\t\t\ttext.push(chart.data.datasets[i].label);\n\t\t\t\t\t}\n\t\t\t\t\ttext.push('</li>');\n\t\t\t\t}\n\t\t\t\ttext.push('</ul>');\n\n\t\t\t\treturn text.join('');\n\t\t\t}\n\t\t}\n\t};\n\n\tChart.Chart = Chart;\n\n\treturn Chart;\n};\n\n},{}],29:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\n\tvar helpers = Chart.helpers;\n\n\tfunction filterByPosition(array, position) {\n\t\treturn helpers.where(array, function(v) {\n\t\t\treturn v.position === position;\n\t\t});\n\t}\n\n\tfunction sortByWeight(array, reverse) {\n\t\tarray.forEach(function(v, i) {\n\t\t\tv._tmpIndex_ = i;\n\t\t\treturn v;\n\t\t});\n\t\tarray.sort(function(a, b) {\n\t\t\tvar v0 = reverse ? b : a;\n\t\t\tvar v1 = reverse ? a : b;\n\t\t\treturn v0.weight === v1.weight ?\n\t\t\t\tv0._tmpIndex_ - v1._tmpIndex_ :\n\t\t\t\tv0.weight - v1.weight;\n\t\t});\n\t\tarray.forEach(function(v) {\n\t\t\tdelete v._tmpIndex_;\n\t\t});\n\t}\n\n\t/**\n\t * @interface ILayoutItem\n\t * @prop {String} position - The position of the item in the chart layout. Possible values are\n\t * 'left', 'top', 'right', 'bottom', and 'chartArea'\n\t * @prop {Number} weight - The weight used to sort the item. Higher weights are further away from the chart area\n\t * @prop {Boolean} fullWidth - if true, and the item is horizontal, then push vertical boxes down\n\t * @prop {Function} isHorizontal - returns true if the layout item is horizontal (ie. top or bottom)\n\t * @prop {Function} update - Takes two parameters: width and height. Returns size of item\n\t * @prop {Function} getPadding -  Returns an object with padding on the edges\n\t * @prop {Number} width - Width of item. Must be valid after update()\n\t * @prop {Number} height - Height of item. Must be valid after update()\n\t * @prop {Number} left - Left edge of the item. Set by layout system and cannot be used in update\n\t * @prop {Number} top - Top edge of the item. Set by layout system and cannot be used in update\n\t * @prop {Number} right - Right edge of the item. Set by layout system and cannot be used in update\n\t * @prop {Number} bottom - Bottom edge of the item. Set by layout system and cannot be used in update\n\t */\n\n\t// The layout service is very self explanatory.  It's responsible for the layout within a chart.\n\t// Scales, Legends and Plugins all rely on the layout service and can easily register to be placed anywhere they need\n\t// It is this service's responsibility of carrying out that layout.\n\tChart.layoutService = {\n\t\tdefaults: {},\n\n\t\t/**\n\t\t * Register a box to a chart.\n\t\t * A box is simply a reference to an object that requires layout. eg. Scales, Legend, Title.\n\t\t * @param {Chart} chart - the chart to use\n\t\t * @param {ILayoutItem} item - the item to add to be layed out\n\t\t */\n\t\taddBox: function(chart, item) {\n\t\t\tif (!chart.boxes) {\n\t\t\t\tchart.boxes = [];\n\t\t\t}\n\n\t\t\t// initialize item with default values\n\t\t\titem.fullWidth = item.fullWidth || false;\n\t\t\titem.position = item.position || 'top';\n\t\t\titem.weight = item.weight || 0;\n\n\t\t\tchart.boxes.push(item);\n\t\t},\n\n\t\t/**\n\t\t * Remove a layoutItem from a chart\n\t\t * @param {Chart} chart - the chart to remove the box from\n\t\t * @param {Object} layoutItem - the item to remove from the layout\n\t\t */\n\t\tremoveBox: function(chart, layoutItem) {\n\t\t\tvar index = chart.boxes? chart.boxes.indexOf(layoutItem) : -1;\n\t\t\tif (index !== -1) {\n\t\t\t\tchart.boxes.splice(index, 1);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Sets (or updates) options on the given `item`.\n\t\t * @param {Chart} chart - the chart in which the item lives (or will be added to)\n\t\t * @param {Object} item - the item to configure with the given options\n\t\t * @param {Object} options - the new item options.\n\t\t */\n\t\tconfigure: function(chart, item, options) {\n\t\t\tvar props = ['fullWidth', 'position', 'weight'];\n\t\t\tvar ilen = props.length;\n\t\t\tvar i = 0;\n\t\t\tvar prop;\n\n\t\t\tfor (; i<ilen; ++i) {\n\t\t\t\tprop = props[i];\n\t\t\t\tif (options.hasOwnProperty(prop)) {\n\t\t\t\t\titem[prop] = options[prop];\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Fits boxes of the given chart into the given size by having each box measure itself\n\t\t * then running a fitting algorithm\n\t\t * @param {Chart} chart - the chart\n\t\t * @param {Number} width - the width to fit into\n\t\t * @param {Number} height - the height to fit into\n\t\t */\n\t\tupdate: function(chart, width, height) {\n\t\t\tif (!chart) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar layoutOptions = chart.options.layout;\n\t\t\tvar padding = layoutOptions ? layoutOptions.padding : null;\n\n\t\t\tvar leftPadding = 0;\n\t\t\tvar rightPadding = 0;\n\t\t\tvar topPadding = 0;\n\t\t\tvar bottomPadding = 0;\n\n\t\t\tif (!isNaN(padding)) {\n\t\t\t\t// options.layout.padding is a number. assign to all\n\t\t\t\tleftPadding = padding;\n\t\t\t\trightPadding = padding;\n\t\t\t\ttopPadding = padding;\n\t\t\t\tbottomPadding = padding;\n\t\t\t} else {\n\t\t\t\tleftPadding = padding.left || 0;\n\t\t\t\trightPadding = padding.right || 0;\n\t\t\t\ttopPadding = padding.top || 0;\n\t\t\t\tbottomPadding = padding.bottom || 0;\n\t\t\t}\n\n\t\t\tvar leftBoxes = filterByPosition(chart.boxes, 'left');\n\t\t\tvar rightBoxes = filterByPosition(chart.boxes, 'right');\n\t\t\tvar topBoxes = filterByPosition(chart.boxes, 'top');\n\t\t\tvar bottomBoxes = filterByPosition(chart.boxes, 'bottom');\n\t\t\tvar chartAreaBoxes = filterByPosition(chart.boxes, 'chartArea');\n\n\t\t\t// Sort boxes by weight. A higher weight is further away from the chart area\n\t\t\tsortByWeight(leftBoxes, true);\n\t\t\tsortByWeight(rightBoxes, false);\n\t\t\tsortByWeight(topBoxes, true);\n\t\t\tsortByWeight(bottomBoxes, false);\n\n\t\t\t// Essentially we now have any number of boxes on each of the 4 sides.\n\t\t\t// Our canvas looks like the following.\n\t\t\t// The areas L1 and L2 are the left axes. R1 is the right axis, T1 is the top axis and\n\t\t\t// B1 is the bottom axis\n\t\t\t// There are also 4 quadrant-like locations (left to right instead of clockwise) reserved for chart overlays\n\t\t\t// These locations are single-box locations only, when trying to register a chartArea location that is already taken,\n\t\t\t// an error will be thrown.\n\t\t\t//\n\t\t\t// |----------------------------------------------------|\n\t\t\t// |                  T1 (Full Width)                   |\n\t\t\t// |----------------------------------------------------|\n\t\t\t// |    |    |                 T2                  |    |\n\t\t\t// |    |----|-------------------------------------|----|\n\t\t\t// |    |    | C1 |                           | C2 |    |\n\t\t\t// |    |    |----|                           |----|    |\n\t\t\t// |    |    |                                     |    |\n\t\t\t// | L1 | L2 |           ChartArea (C0)            | R1 |\n\t\t\t// |    |    |                                     |    |\n\t\t\t// |    |    |----|                           |----|    |\n\t\t\t// |    |    | C3 |                           | C4 |    |\n\t\t\t// |    |----|-------------------------------------|----|\n\t\t\t// |    |    |                 B1                  |    |\n\t\t\t// |----------------------------------------------------|\n\t\t\t// |                  B2 (Full Width)                   |\n\t\t\t// |----------------------------------------------------|\n\t\t\t//\n\t\t\t// What we do to find the best sizing, we do the following\n\t\t\t// 1. Determine the minimum size of the chart area.\n\t\t\t// 2. Split the remaining width equally between each vertical axis\n\t\t\t// 3. Split the remaining height equally between each horizontal axis\n\t\t\t// 4. Give each layout the maximum size it can be. The layout will return it's minimum size\n\t\t\t// 5. Adjust the sizes of each axis based on it's minimum reported size.\n\t\t\t// 6. Refit each axis\n\t\t\t// 7. Position each axis in the final location\n\t\t\t// 8. Tell the chart the final location of the chart area\n\t\t\t// 9. Tell any axes that overlay the chart area the positions of the chart area\n\n\t\t\t// Step 1\n\t\t\tvar chartWidth = width - leftPadding - rightPadding;\n\t\t\tvar chartHeight = height - topPadding - bottomPadding;\n\t\t\tvar chartAreaWidth = chartWidth / 2; // min 50%\n\t\t\tvar chartAreaHeight = chartHeight / 2; // min 50%\n\n\t\t\t// Step 2\n\t\t\tvar verticalBoxWidth = (width - chartAreaWidth) / (leftBoxes.length + rightBoxes.length);\n\n\t\t\t// Step 3\n\t\t\tvar horizontalBoxHeight = (height - chartAreaHeight) / (topBoxes.length + bottomBoxes.length);\n\n\t\t\t// Step 4\n\t\t\tvar maxChartAreaWidth = chartWidth;\n\t\t\tvar maxChartAreaHeight = chartHeight;\n\t\t\tvar minBoxSizes = [];\n\n\t\t\tfunction getMinimumBoxSize(box) {\n\t\t\t\tvar minSize;\n\t\t\t\tvar isHorizontal = box.isHorizontal();\n\n\t\t\t\tif (isHorizontal) {\n\t\t\t\t\tminSize = box.update(box.fullWidth ? chartWidth : maxChartAreaWidth, horizontalBoxHeight);\n\t\t\t\t\tmaxChartAreaHeight -= minSize.height;\n\t\t\t\t} else {\n\t\t\t\t\tminSize = box.update(verticalBoxWidth, chartAreaHeight);\n\t\t\t\t\tmaxChartAreaWidth -= minSize.width;\n\t\t\t\t}\n\n\t\t\t\tminBoxSizes.push({\n\t\t\t\t\thorizontal: isHorizontal,\n\t\t\t\t\tminSize: minSize,\n\t\t\t\t\tbox: box,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\thelpers.each(leftBoxes.concat(rightBoxes, topBoxes, bottomBoxes), getMinimumBoxSize);\n\n\t\t\t// If a horizontal box has padding, we move the left boxes over to avoid ugly charts (see issue #2478)\n\t\t\tvar maxHorizontalLeftPadding = 0;\n\t\t\tvar maxHorizontalRightPadding = 0;\n\t\t\tvar maxVerticalTopPadding = 0;\n\t\t\tvar maxVerticalBottomPadding = 0;\n\n\t\t\thelpers.each(topBoxes.concat(bottomBoxes), function(horizontalBox) {\n\t\t\t\tif (horizontalBox.getPadding) {\n\t\t\t\t\tvar boxPadding = horizontalBox.getPadding();\n\t\t\t\t\tmaxHorizontalLeftPadding = Math.max(maxHorizontalLeftPadding, boxPadding.left);\n\t\t\t\t\tmaxHorizontalRightPadding = Math.max(maxHorizontalRightPadding, boxPadding.right);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\thelpers.each(leftBoxes.concat(rightBoxes), function(verticalBox) {\n\t\t\t\tif (verticalBox.getPadding) {\n\t\t\t\t\tvar boxPadding = verticalBox.getPadding();\n\t\t\t\t\tmaxVerticalTopPadding = Math.max(maxVerticalTopPadding, boxPadding.top);\n\t\t\t\t\tmaxVerticalBottomPadding = Math.max(maxVerticalBottomPadding, boxPadding.bottom);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// At this point, maxChartAreaHeight and maxChartAreaWidth are the size the chart area could\n\t\t\t// be if the axes are drawn at their minimum sizes.\n\t\t\t// Steps 5 & 6\n\t\t\tvar totalLeftBoxesWidth = leftPadding;\n\t\t\tvar totalRightBoxesWidth = rightPadding;\n\t\t\tvar totalTopBoxesHeight = topPadding;\n\t\t\tvar totalBottomBoxesHeight = bottomPadding;\n\n\t\t\t// Function to fit a box\n\t\t\tfunction fitBox(box) {\n\t\t\t\tvar minBoxSize = helpers.findNextWhere(minBoxSizes, function(minBox) {\n\t\t\t\t\treturn minBox.box === box;\n\t\t\t\t});\n\n\t\t\t\tif (minBoxSize) {\n\t\t\t\t\tif (box.isHorizontal()) {\n\t\t\t\t\t\tvar scaleMargin = {\n\t\t\t\t\t\t\tleft: Math.max(totalLeftBoxesWidth, maxHorizontalLeftPadding),\n\t\t\t\t\t\t\tright: Math.max(totalRightBoxesWidth, maxHorizontalRightPadding),\n\t\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\t\tbottom: 0\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\t// Don't use min size here because of label rotation. When the labels are rotated, their rotation highly depends\n\t\t\t\t\t\t// on the margin. Sometimes they need to increase in size slightly\n\t\t\t\t\t\tbox.update(box.fullWidth ? chartWidth : maxChartAreaWidth, chartHeight / 2, scaleMargin);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbox.update(minBoxSize.minSize.width, maxChartAreaHeight);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Update, and calculate the left and right margins for the horizontal boxes\n\t\t\thelpers.each(leftBoxes.concat(rightBoxes), fitBox);\n\n\t\t\thelpers.each(leftBoxes, function(box) {\n\t\t\t\ttotalLeftBoxesWidth += box.width;\n\t\t\t});\n\n\t\t\thelpers.each(rightBoxes, function(box) {\n\t\t\t\ttotalRightBoxesWidth += box.width;\n\t\t\t});\n\n\t\t\t// Set the Left and Right margins for the horizontal boxes\n\t\t\thelpers.each(topBoxes.concat(bottomBoxes), fitBox);\n\n\t\t\t// Figure out how much margin is on the top and bottom of the vertical boxes\n\t\t\thelpers.each(topBoxes, function(box) {\n\t\t\t\ttotalTopBoxesHeight += box.height;\n\t\t\t});\n\n\t\t\thelpers.each(bottomBoxes, function(box) {\n\t\t\t\ttotalBottomBoxesHeight += box.height;\n\t\t\t});\n\n\t\t\tfunction finalFitVerticalBox(box) {\n\t\t\t\tvar minBoxSize = helpers.findNextWhere(minBoxSizes, function(minSize) {\n\t\t\t\t\treturn minSize.box === box;\n\t\t\t\t});\n\n\t\t\t\tvar scaleMargin = {\n\t\t\t\t\tleft: 0,\n\t\t\t\t\tright: 0,\n\t\t\t\t\ttop: totalTopBoxesHeight,\n\t\t\t\t\tbottom: totalBottomBoxesHeight\n\t\t\t\t};\n\n\t\t\t\tif (minBoxSize) {\n\t\t\t\t\tbox.update(minBoxSize.minSize.width, maxChartAreaHeight, scaleMargin);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Let the left layout know the final margin\n\t\t\thelpers.each(leftBoxes.concat(rightBoxes), finalFitVerticalBox);\n\n\t\t\t// Recalculate because the size of each layout might have changed slightly due to the margins (label rotation for instance)\n\t\t\ttotalLeftBoxesWidth = leftPadding;\n\t\t\ttotalRightBoxesWidth = rightPadding;\n\t\t\ttotalTopBoxesHeight = topPadding;\n\t\t\ttotalBottomBoxesHeight = bottomPadding;\n\n\t\t\thelpers.each(leftBoxes, function(box) {\n\t\t\t\ttotalLeftBoxesWidth += box.width;\n\t\t\t});\n\n\t\t\thelpers.each(rightBoxes, function(box) {\n\t\t\t\ttotalRightBoxesWidth += box.width;\n\t\t\t});\n\n\t\t\thelpers.each(topBoxes, function(box) {\n\t\t\t\ttotalTopBoxesHeight += box.height;\n\t\t\t});\n\t\t\thelpers.each(bottomBoxes, function(box) {\n\t\t\t\ttotalBottomBoxesHeight += box.height;\n\t\t\t});\n\n\t\t\t// We may be adding some padding to account for rotated x axis labels\n\t\t\tvar leftPaddingAddition = Math.max(maxHorizontalLeftPadding - totalLeftBoxesWidth, 0);\n\t\t\ttotalLeftBoxesWidth += leftPaddingAddition;\n\t\t\ttotalRightBoxesWidth += Math.max(maxHorizontalRightPadding - totalRightBoxesWidth, 0);\n\n\t\t\tvar topPaddingAddition = Math.max(maxVerticalTopPadding - totalTopBoxesHeight, 0);\n\t\t\ttotalTopBoxesHeight += topPaddingAddition;\n\t\t\ttotalBottomBoxesHeight += Math.max(maxVerticalBottomPadding - totalBottomBoxesHeight, 0);\n\n\t\t\t// Figure out if our chart area changed. This would occur if the dataset layout label rotation\n\t\t\t// changed due to the application of the margins in step 6. Since we can only get bigger, this is safe to do\n\t\t\t// without calling `fit` again\n\t\t\tvar newMaxChartAreaHeight = height - totalTopBoxesHeight - totalBottomBoxesHeight;\n\t\t\tvar newMaxChartAreaWidth = width - totalLeftBoxesWidth - totalRightBoxesWidth;\n\n\t\t\tif (newMaxChartAreaWidth !== maxChartAreaWidth || newMaxChartAreaHeight !== maxChartAreaHeight) {\n\t\t\t\thelpers.each(leftBoxes, function(box) {\n\t\t\t\t\tbox.height = newMaxChartAreaHeight;\n\t\t\t\t});\n\n\t\t\t\thelpers.each(rightBoxes, function(box) {\n\t\t\t\t\tbox.height = newMaxChartAreaHeight;\n\t\t\t\t});\n\n\t\t\t\thelpers.each(topBoxes, function(box) {\n\t\t\t\t\tif (!box.fullWidth) {\n\t\t\t\t\t\tbox.width = newMaxChartAreaWidth;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\thelpers.each(bottomBoxes, function(box) {\n\t\t\t\t\tif (!box.fullWidth) {\n\t\t\t\t\t\tbox.width = newMaxChartAreaWidth;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tmaxChartAreaHeight = newMaxChartAreaHeight;\n\t\t\t\tmaxChartAreaWidth = newMaxChartAreaWidth;\n\t\t\t}\n\n\t\t\t// Step 7 - Position the boxes\n\t\t\tvar left = leftPadding + leftPaddingAddition;\n\t\t\tvar top = topPadding + topPaddingAddition;\n\n\t\t\tfunction placeBox(box) {\n\t\t\t\tif (box.isHorizontal()) {\n\t\t\t\t\tbox.left = box.fullWidth ? leftPadding : totalLeftBoxesWidth;\n\t\t\t\t\tbox.right = box.fullWidth ? width - rightPadding : totalLeftBoxesWidth + maxChartAreaWidth;\n\t\t\t\t\tbox.top = top;\n\t\t\t\t\tbox.bottom = top + box.height;\n\n\t\t\t\t\t// Move to next point\n\t\t\t\t\ttop = box.bottom;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbox.left = left;\n\t\t\t\t\tbox.right = left + box.width;\n\t\t\t\t\tbox.top = totalTopBoxesHeight;\n\t\t\t\t\tbox.bottom = totalTopBoxesHeight + maxChartAreaHeight;\n\n\t\t\t\t\t// Move to next point\n\t\t\t\t\tleft = box.right;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\thelpers.each(leftBoxes.concat(topBoxes), placeBox);\n\n\t\t\t// Account for chart width and height\n\t\t\tleft += maxChartAreaWidth;\n\t\t\ttop += maxChartAreaHeight;\n\n\t\t\thelpers.each(rightBoxes, placeBox);\n\t\t\thelpers.each(bottomBoxes, placeBox);\n\n\t\t\t// Step 8\n\t\t\tchart.chartArea = {\n\t\t\t\tleft: totalLeftBoxesWidth,\n\t\t\t\ttop: totalTopBoxesHeight,\n\t\t\t\tright: totalLeftBoxesWidth + maxChartAreaWidth,\n\t\t\t\tbottom: totalTopBoxesHeight + maxChartAreaHeight\n\t\t\t};\n\n\t\t\t// Step 9\n\t\t\thelpers.each(chartAreaBoxes, function(box) {\n\t\t\t\tbox.left = chart.chartArea.left;\n\t\t\t\tbox.top = chart.chartArea.top;\n\t\t\t\tbox.right = chart.chartArea.right;\n\t\t\t\tbox.bottom = chart.chartArea.bottom;\n\n\t\t\t\tbox.update(maxChartAreaWidth, maxChartAreaHeight);\n\t\t\t});\n\t\t}\n\t};\n};\n\n},{}],30:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\n\tvar helpers = Chart.helpers;\n\n\tChart.defaults.global.plugins = {};\n\n\t/**\n\t * The plugin service singleton\n\t * @namespace Chart.plugins\n\t * @since 2.1.0\n\t */\n\tChart.plugins = {\n\t\t/**\n\t\t * Globally registered plugins.\n\t\t * @private\n\t\t */\n\t\t_plugins: [],\n\n\t\t/**\n\t\t * This identifier is used to invalidate the descriptors cache attached to each chart\n\t\t * when a global plugin is registered or unregistered. In this case, the cache ID is\n\t\t * incremented and descriptors are regenerated during following API calls.\n\t\t * @private\n\t\t */\n\t\t_cacheId: 0,\n\n\t\t/**\n\t\t * Registers the given plugin(s) if not already registered.\n\t\t * @param {Array|Object} plugins plugin instance(s).\n\t\t */\n\t\tregister: function(plugins) {\n\t\t\tvar p = this._plugins;\n\t\t\t([]).concat(plugins).forEach(function(plugin) {\n\t\t\t\tif (p.indexOf(plugin) === -1) {\n\t\t\t\t\tp.push(plugin);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis._cacheId++;\n\t\t},\n\n\t\t/**\n\t\t * Unregisters the given plugin(s) only if registered.\n\t\t * @param {Array|Object} plugins plugin instance(s).\n\t\t */\n\t\tunregister: function(plugins) {\n\t\t\tvar p = this._plugins;\n\t\t\t([]).concat(plugins).forEach(function(plugin) {\n\t\t\t\tvar idx = p.indexOf(plugin);\n\t\t\t\tif (idx !== -1) {\n\t\t\t\t\tp.splice(idx, 1);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis._cacheId++;\n\t\t},\n\n\t\t/**\n\t\t * Remove all registered plugins.\n\t\t * @since 2.1.5\n\t\t */\n\t\tclear: function() {\n\t\t\tthis._plugins = [];\n\t\t\tthis._cacheId++;\n\t\t},\n\n\t\t/**\n\t\t * Returns the number of registered plugins?\n\t\t * @returns {Number}\n\t\t * @since 2.1.5\n\t\t */\n\t\tcount: function() {\n\t\t\treturn this._plugins.length;\n\t\t},\n\n\t\t/**\n\t\t * Returns all registered plugin instances.\n\t\t * @returns {Array} array of plugin objects.\n\t\t * @since 2.1.5\n\t\t */\n\t\tgetAll: function() {\n\t\t\treturn this._plugins;\n\t\t},\n\n\t\t/**\n\t\t * Calls enabled plugins for `chart` on the specified hook and with the given args.\n\t\t * This method immediately returns as soon as a plugin explicitly returns false. The\n\t\t * returned value can be used, for instance, to interrupt the current action.\n\t\t * @param {Object} chart - The chart instance for which plugins should be called.\n\t\t * @param {String} hook - The name of the plugin method to call (e.g. 'beforeUpdate').\n\t\t * @param {Array} [args] - Extra arguments to apply to the hook call.\n\t\t * @returns {Boolean} false if any of the plugins return false, else returns true.\n\t\t */\n\t\tnotify: function(chart, hook, args) {\n\t\t\tvar descriptors = this.descriptors(chart);\n\t\t\tvar ilen = descriptors.length;\n\t\t\tvar i, descriptor, plugin, params, method;\n\n\t\t\tfor (i=0; i<ilen; ++i) {\n\t\t\t\tdescriptor = descriptors[i];\n\t\t\t\tplugin = descriptor.plugin;\n\t\t\t\tmethod = plugin[hook];\n\t\t\t\tif (typeof method === 'function') {\n\t\t\t\t\tparams = [chart].concat(args || []);\n\t\t\t\t\tparams.push(descriptor.options);\n\t\t\t\t\tif (method.apply(plugin, params) === false) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn true;\n\t\t},\n\n\t\t/**\n\t\t * Returns descriptors of enabled plugins for the given chart.\n\t\t * @returns {Array} [{ plugin, options }]\n\t\t * @private\n\t\t */\n\t\tdescriptors: function(chart) {\n\t\t\tvar cache = chart._plugins || (chart._plugins = {});\n\t\t\tif (cache.id === this._cacheId) {\n\t\t\t\treturn cache.descriptors;\n\t\t\t}\n\n\t\t\tvar plugins = [];\n\t\t\tvar descriptors = [];\n\t\t\tvar config = (chart && chart.config) || {};\n\t\t\tvar defaults = Chart.defaults.global.plugins;\n\t\t\tvar options = (config.options && config.options.plugins) || {};\n\n\t\t\tthis._plugins.concat(config.plugins || []).forEach(function(plugin) {\n\t\t\t\tvar idx = plugins.indexOf(plugin);\n\t\t\t\tif (idx !== -1) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar id = plugin.id;\n\t\t\t\tvar opts = options[id];\n\t\t\t\tif (opts === false) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (opts === true) {\n\t\t\t\t\topts = helpers.clone(defaults[id]);\n\t\t\t\t}\n\n\t\t\t\tplugins.push(plugin);\n\t\t\t\tdescriptors.push({\n\t\t\t\t\tplugin: plugin,\n\t\t\t\t\toptions: opts || {}\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tcache.descriptors = descriptors;\n\t\t\tcache.id = this._cacheId;\n\t\t\treturn descriptors;\n\t\t}\n\t};\n\n\t/**\n\t * Plugin extension hooks.\n\t * @interface IPlugin\n\t * @since 2.1.0\n\t */\n\t/**\n\t * @method IPlugin#beforeInit\n\t * @desc Called before initializing `chart`.\n\t * @param {Chart.Controller} chart - The chart instance.\n\t * @param {Object} options - The plugin options.\n\t */\n\t/**\n\t * @method IPlugin#afterInit\n\t * @desc Called after `chart` has been initialized and before the first update.\n\t * @param {Chart.Controller} chart - The chart instance.\n\t * @param {Object} options - The plugin options.\n\t */\n\t/**\n\t * @method IPlugin#beforeUpdate\n\t * @desc Called before updating `chart`. If any plugin returns `false`, the update\n\t * is cancelled (and thus subsequent render(s)) until another `update` is triggered.\n\t * @param {Chart.Controller} chart - The chart instance.\n\t * @param {Object} options - The plugin options.\n\t * @returns {Boolean} `false` to cancel the chart update.\n\t */\n\t/**\n\t * @method IPlugin#afterUpdate\n\t * @desc Called after `chart` has been updated and before rendering. Note that this\n\t * hook will not be called if the chart update has been previously cancelled.\n\t * @param {Chart.Controller} chart - The chart instance.\n\t * @param {Object} options - The plugin options.\n\t */\n\t/**\n\t * @method IPlugin#beforeDatasetsUpdate\n \t * @desc Called before updating the `chart` datasets. If any plugin returns `false`,\n\t * the datasets update is cancelled until another `update` is triggered.\n\t * @param {Chart.Controller} chart - The chart instance.\n\t * @param {Object} options - The plugin options.\n\t * @returns {Boolean} false to cancel the datasets update.\n\t * @since version 2.1.5\n\t */\n\t/**\n\t * @method IPlugin#afterDatasetsUpdate\n\t * @desc Called after the `chart` datasets have been updated. Note that this hook\n\t * will not be called if the datasets update has been previously cancelled.\n\t * @param {Chart.Controller} chart - The chart instance.\n\t * @param {Object} options - The plugin options.\n\t * @since version 2.1.5\n\t */\n\t/**\n\t * @method IPlugin#beforeDatasetUpdate\n \t * @desc Called before updating the `chart` dataset at the given `args.index`. If any plugin\n\t * returns `false`, the datasets update is cancelled until another `update` is triggered.\n\t * @param {Chart} chart - The chart instance.\n\t * @param {Object} args - The call arguments.\n\t * @param {Object} args.index - The dataset index.\n\t * @param {Number} args.meta - The dataset metadata.\n\t * @param {Object} options - The plugin options.\n\t * @returns {Boolean} `false` to cancel the chart datasets drawing.\n\t */\n\t/**\n\t * @method IPlugin#afterDatasetUpdate\n \t * @desc Called after the `chart` datasets at the given `args.index` has been updated. Note\n\t * that this hook will not be called if the datasets update has been previously cancelled.\n\t * @param {Chart} chart - The chart instance.\n\t * @param {Object} args - The call arguments.\n\t * @param {Object} args.index - The dataset index.\n\t * @param {Number} args.meta - The dataset metadata.\n\t * @param {Object} options - The plugin options.\n\t */\n\t/**\n\t * @method IPlugin#beforeLayout\n\t * @desc Called before laying out `chart`. If any plugin returns `false`,\n\t * the layout update is cancelled until another `update` is triggered.\n\t * @param {Chart.Controller} chart - The chart instance.\n\t * @param {Object} options - The plugin options.\n\t * @returns {Boolean} `false` to cancel the chart layout.\n\t */\n\t/**\n\t * @method IPlugin#afterLayout\n\t * @desc Called after the `chart` has been layed out. Note that this hook will not\n\t * be called if the layout update has been previously cancelled.\n\t * @param {Chart.Controller} chart - The chart instance.\n\t * @param {Object} options - The plugin options.\n\t */\n\t/**\n\t * @method IPlugin#beforeRender\n\t * @desc Called before rendering `chart`. If any plugin returns `false`,\n\t * the rendering is cancelled until another `render` is triggered.\n\t * @param {Chart.Controller} chart - The chart instance.\n\t * @param {Object} options - The plugin options.\n\t * @returns {Boolean} `false` to cancel the chart rendering.\n\t */\n\t/**\n\t * @method IPlugin#afterRender\n\t * @desc Called after the `chart` has been fully rendered (and animation completed). Note\n\t * that this hook will not be called if the rendering has been previously cancelled.\n\t * @param {Chart.Controller} chart - The chart instance.\n\t * @param {Object} options - The plugin options.\n\t */\n\t/**\n\t * @method IPlugin#beforeDraw\n\t * @desc Called before drawing `chart` at every animation frame specified by the given\n\t * easing value. If any plugin returns `false`, the frame drawing is cancelled until\n\t * another `render` is triggered.\n\t * @param {Chart.Controller} chart - The chart instance.\n\t * @param {Number} easingValue - The current animation value, between 0.0 and 1.0.\n\t * @param {Object} options - The plugin options.\n\t * @returns {Boolean} `false` to cancel the chart drawing.\n\t */\n\t/**\n\t * @method IPlugin#afterDraw\n\t * @desc Called after the `chart` has been drawn for the specific easing value. Note\n\t * that this hook will not be called if the drawing has been previously cancelled.\n\t * @param {Chart.Controller} chart - The chart instance.\n\t * @param {Number} easingValue - The current animation value, between 0.0 and 1.0.\n\t * @param {Object} options - The plugin options.\n\t */\n\t/**\n\t * @method IPlugin#beforeDatasetsDraw\n \t * @desc Called before drawing the `chart` datasets. If any plugin returns `false`,\n\t * the datasets drawing is cancelled until another `render` is triggered.\n\t * @param {Chart.Controller} chart - The chart instance.\n\t * @param {Number} easingValue - The current animation value, between 0.0 and 1.0.\n\t * @param {Object} options - The plugin options.\n\t * @returns {Boolean} `false` to cancel the chart datasets drawing.\n\t */\n\t/**\n\t * @method IPlugin#afterDatasetsDraw\n\t * @desc Called after the `chart` datasets have been drawn. Note that this hook\n\t * will not be called if the datasets drawing has been previously cancelled.\n\t * @param {Chart.Controller} chart - The chart instance.\n\t * @param {Number} easingValue - The current animation value, between 0.0 and 1.0.\n\t * @param {Object} options - The plugin options.\n\t */\n\t/**\n\t * @method IPlugin#beforeDatasetDraw\n \t * @desc Called before drawing the `chart` dataset at the given `args.index` (datasets\n\t * are drawn in the reverse order). If any plugin returns `false`, the datasets drawing\n\t * is cancelled until another `render` is triggered.\n\t * @param {Chart} chart - The chart instance.\n\t * @param {Object} args - The call arguments.\n\t * @param {Object} args.index - The dataset index.\n\t * @param {Number} args.meta - The dataset metadata.\n\t * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0.\n\t * @param {Object} options - The plugin options.\n\t * @returns {Boolean} `false` to cancel the chart datasets drawing.\n\t */\n\t/**\n\t * @method IPlugin#afterDatasetDraw\n \t * @desc Called after the `chart` datasets at the given `args.index` have been drawn\n\t * (datasets are drawn in the reverse order). Note that this hook will not be called\n\t * if the datasets drawing has been previously cancelled.\n\t * @param {Chart} chart - The chart instance.\n\t * @param {Object} args - The call arguments.\n\t * @param {Object} args.index - The dataset index.\n\t * @param {Number} args.meta - The dataset metadata.\n\t * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0.\n\t * @param {Object} options - The plugin options.\n\t */\n\t/**\n\t * @method IPlugin#beforeEvent\n \t * @desc Called before processing the specified `event`. If any plugin returns `false`,\n\t * the event will be discarded.\n\t * @param {Chart.Controller} chart - The chart instance.\n\t * @param {IEvent} event - The event object.\n\t * @param {Object} options - The plugin options.\n\t */\n\t/**\n\t * @method IPlugin#afterEvent\n\t * @desc Called after the `event` has been consumed. Note that this hook\n\t * will not be called if the `event` has been previously discarded.\n\t * @param {Chart.Controller} chart - The chart instance.\n\t * @param {IEvent} event - The event object.\n\t * @param {Object} options - The plugin options.\n\t */\n\t/**\n\t * @method IPlugin#resize\n\t * @desc Called after the chart as been resized.\n\t * @param {Chart.Controller} chart - The chart instance.\n\t * @param {Number} size - The new canvas display size (eq. canvas.style width & height).\n\t * @param {Object} options - The plugin options.\n\t */\n\t/**\n\t * @method IPlugin#destroy\n\t * @desc Called after the chart as been destroyed.\n\t * @param {Chart.Controller} chart - The chart instance.\n\t * @param {Object} options - The plugin options.\n\t */\n\n\t/**\n\t * Provided for backward compatibility, use Chart.plugins instead\n\t * @namespace Chart.pluginService\n\t * @deprecated since version 2.1.5\n\t * @todo remove at version 3\n\t * @private\n\t */\n\tChart.pluginService = Chart.plugins;\n\n\t/**\n\t * Provided for backward compatibility, inheriting from Chart.PlugingBase has no\n\t * effect, instead simply create/register plugins via plain JavaScript objects.\n\t * @interface Chart.PluginBase\n\t * @deprecated since version 2.5.0\n\t * @todo remove at version 3\n\t * @private\n\t */\n\tChart.PluginBase = Chart.Element.extend({});\n};\n\n},{}],31:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\n\tvar helpers = Chart.helpers;\n\n\tChart.defaults.scale = {\n\t\tdisplay: true,\n\t\tposition: 'left',\n\n\t\t// grid line settings\n\t\tgridLines: {\n\t\t\tdisplay: true,\n\t\t\tcolor: 'rgba(0, 0, 0, 0.1)',\n\t\t\tlineWidth: 1,\n\t\t\tdrawBorder: true,\n\t\t\tdrawOnChartArea: true,\n\t\t\tdrawTicks: true,\n\t\t\ttickMarkLength: 10,\n\t\t\tzeroLineWidth: 1,\n\t\t\tzeroLineColor: 'rgba(0,0,0,0.25)',\n\t\t\tzeroLineBorderDash: [],\n\t\t\tzeroLineBorderDashOffset: 0.0,\n\t\t\toffsetGridLines: false,\n\t\t\tborderDash: [],\n\t\t\tborderDashOffset: 0.0\n\t\t},\n\n\t\t// scale label\n\t\tscaleLabel: {\n\t\t\t// actual label\n\t\t\tlabelString: '',\n\n\t\t\t// display property\n\t\t\tdisplay: false\n\t\t},\n\n\t\t// label settings\n\t\tticks: {\n\t\t\tbeginAtZero: false,\n\t\t\tminRotation: 0,\n\t\t\tmaxRotation: 50,\n\t\t\tmirror: false,\n\t\t\tpadding: 0,\n\t\t\treverse: false,\n\t\t\tdisplay: true,\n\t\t\tautoSkip: true,\n\t\t\tautoSkipPadding: 0,\n\t\t\tlabelOffset: 0,\n\t\t\t// We pass through arrays to be rendered as multiline labels, we convert Others to strings here.\n\t\t\tcallback: Chart.Ticks.formatters.values\n\t\t}\n\t};\n\n\tfunction computeTextSize(context, tick, font) {\n\t\treturn helpers.isArray(tick) ?\n\t\t\thelpers.longestText(context, font, tick) :\n\t\t\tcontext.measureText(tick).width;\n\t}\n\n\tfunction parseFontOptions(options) {\n\t\tvar getValueOrDefault = helpers.getValueOrDefault;\n\t\tvar globalDefaults = Chart.defaults.global;\n\t\tvar size = getValueOrDefault(options.fontSize, globalDefaults.defaultFontSize);\n\t\tvar style = getValueOrDefault(options.fontStyle, globalDefaults.defaultFontStyle);\n\t\tvar family = getValueOrDefault(options.fontFamily, globalDefaults.defaultFontFamily);\n\n\t\treturn {\n\t\t\tsize: size,\n\t\t\tstyle: style,\n\t\t\tfamily: family,\n\t\t\tfont: helpers.fontString(size, style, family)\n\t\t};\n\t}\n\n\tChart.Scale = Chart.Element.extend({\n\t\t/**\n\t\t * Get the padding needed for the scale\n\t\t * @method getPadding\n\t\t * @private\n\t\t * @returns {Padding} the necessary padding\n\t\t */\n\t\tgetPadding: function() {\n\t\t\tvar me = this;\n\t\t\treturn {\n\t\t\t\tleft: me.paddingLeft || 0,\n\t\t\t\ttop: me.paddingTop || 0,\n\t\t\t\tright: me.paddingRight || 0,\n\t\t\t\tbottom: me.paddingBottom || 0\n\t\t\t};\n\t\t},\n\n\t\t// These methods are ordered by lifecyle. Utilities then follow.\n\t\t// Any function defined here is inherited by all scale types.\n\t\t// Any function can be extended by the scale type\n\n\t\tbeforeUpdate: function() {\n\t\t\thelpers.callback(this.options.beforeUpdate, [this]);\n\t\t},\n\t\tupdate: function(maxWidth, maxHeight, margins) {\n\t\t\tvar me = this;\n\n\t\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n\t\t\tme.beforeUpdate();\n\n\t\t\t// Absorb the master measurements\n\t\t\tme.maxWidth = maxWidth;\n\t\t\tme.maxHeight = maxHeight;\n\t\t\tme.margins = helpers.extend({\n\t\t\t\tleft: 0,\n\t\t\t\tright: 0,\n\t\t\t\ttop: 0,\n\t\t\t\tbottom: 0\n\t\t\t}, margins);\n\t\t\tme.longestTextCache = me.longestTextCache || {};\n\n\t\t\t// Dimensions\n\t\t\tme.beforeSetDimensions();\n\t\t\tme.setDimensions();\n\t\t\tme.afterSetDimensions();\n\n\t\t\t// Data min/max\n\t\t\tme.beforeDataLimits();\n\t\t\tme.determineDataLimits();\n\t\t\tme.afterDataLimits();\n\n\t\t\t// Ticks\n\t\t\tme.beforeBuildTicks();\n\t\t\tme.buildTicks();\n\t\t\tme.afterBuildTicks();\n\n\t\t\tme.beforeTickToLabelConversion();\n\t\t\tme.convertTicksToLabels();\n\t\t\tme.afterTickToLabelConversion();\n\n\t\t\t// Tick Rotation\n\t\t\tme.beforeCalculateTickRotation();\n\t\t\tme.calculateTickRotation();\n\t\t\tme.afterCalculateTickRotation();\n\t\t\t// Fit\n\t\t\tme.beforeFit();\n\t\t\tme.fit();\n\t\t\tme.afterFit();\n\t\t\t//\n\t\t\tme.afterUpdate();\n\n\t\t\treturn me.minSize;\n\n\t\t},\n\t\tafterUpdate: function() {\n\t\t\thelpers.callback(this.options.afterUpdate, [this]);\n\t\t},\n\n\t\t//\n\n\t\tbeforeSetDimensions: function() {\n\t\t\thelpers.callback(this.options.beforeSetDimensions, [this]);\n\t\t},\n\t\tsetDimensions: function() {\n\t\t\tvar me = this;\n\t\t\t// Set the unconstrained dimension before label rotation\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\t// Reset position before calculating rotation\n\t\t\t\tme.width = me.maxWidth;\n\t\t\t\tme.left = 0;\n\t\t\t\tme.right = me.width;\n\t\t\t} else {\n\t\t\t\tme.height = me.maxHeight;\n\n\t\t\t\t// Reset position before calculating rotation\n\t\t\t\tme.top = 0;\n\t\t\t\tme.bottom = me.height;\n\t\t\t}\n\n\t\t\t// Reset padding\n\t\t\tme.paddingLeft = 0;\n\t\t\tme.paddingTop = 0;\n\t\t\tme.paddingRight = 0;\n\t\t\tme.paddingBottom = 0;\n\t\t},\n\t\tafterSetDimensions: function() {\n\t\t\thelpers.callback(this.options.afterSetDimensions, [this]);\n\t\t},\n\n\t\t// Data limits\n\t\tbeforeDataLimits: function() {\n\t\t\thelpers.callback(this.options.beforeDataLimits, [this]);\n\t\t},\n\t\tdetermineDataLimits: helpers.noop,\n\t\tafterDataLimits: function() {\n\t\t\thelpers.callback(this.options.afterDataLimits, [this]);\n\t\t},\n\n\t\t//\n\t\tbeforeBuildTicks: function() {\n\t\t\thelpers.callback(this.options.beforeBuildTicks, [this]);\n\t\t},\n\t\tbuildTicks: helpers.noop,\n\t\tafterBuildTicks: function() {\n\t\t\thelpers.callback(this.options.afterBuildTicks, [this]);\n\t\t},\n\n\t\tbeforeTickToLabelConversion: function() {\n\t\t\thelpers.callback(this.options.beforeTickToLabelConversion, [this]);\n\t\t},\n\t\tconvertTicksToLabels: function() {\n\t\t\tvar me = this;\n\t\t\t// Convert ticks to strings\n\t\t\tvar tickOpts = me.options.ticks;\n\t\t\tme.ticks = me.ticks.map(tickOpts.userCallback || tickOpts.callback);\n\t\t},\n\t\tafterTickToLabelConversion: function() {\n\t\t\thelpers.callback(this.options.afterTickToLabelConversion, [this]);\n\t\t},\n\n\t\t//\n\n\t\tbeforeCalculateTickRotation: function() {\n\t\t\thelpers.callback(this.options.beforeCalculateTickRotation, [this]);\n\t\t},\n\t\tcalculateTickRotation: function() {\n\t\t\tvar me = this;\n\t\t\tvar context = me.ctx;\n\t\t\tvar tickOpts = me.options.ticks;\n\n\t\t\t// Get the width of each grid by calculating the difference\n\t\t\t// between x offsets between 0 and 1.\n\t\t\tvar tickFont = parseFontOptions(tickOpts);\n\t\t\tcontext.font = tickFont.font;\n\n\t\t\tvar labelRotation = tickOpts.minRotation || 0;\n\n\t\t\tif (me.options.display && me.isHorizontal()) {\n\t\t\t\tvar originalLabelWidth = helpers.longestText(context, tickFont.font, me.ticks, me.longestTextCache);\n\t\t\t\tvar labelWidth = originalLabelWidth;\n\t\t\t\tvar cosRotation;\n\t\t\t\tvar sinRotation;\n\n\t\t\t\t// Allow 3 pixels x2 padding either side for label readability\n\t\t\t\tvar tickWidth = me.getPixelForTick(1) - me.getPixelForTick(0) - 6;\n\n\t\t\t\t// Max label rotation can be set or default to 90 - also act as a loop counter\n\t\t\t\twhile (labelWidth > tickWidth && labelRotation < tickOpts.maxRotation) {\n\t\t\t\t\tvar angleRadians = helpers.toRadians(labelRotation);\n\t\t\t\t\tcosRotation = Math.cos(angleRadians);\n\t\t\t\t\tsinRotation = Math.sin(angleRadians);\n\n\t\t\t\t\tif (sinRotation * originalLabelWidth > me.maxHeight) {\n\t\t\t\t\t\t// go back one step\n\t\t\t\t\t\tlabelRotation--;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tlabelRotation++;\n\t\t\t\t\tlabelWidth = cosRotation * originalLabelWidth;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tme.labelRotation = labelRotation;\n\t\t},\n\t\tafterCalculateTickRotation: function() {\n\t\t\thelpers.callback(this.options.afterCalculateTickRotation, [this]);\n\t\t},\n\n\t\t//\n\n\t\tbeforeFit: function() {\n\t\t\thelpers.callback(this.options.beforeFit, [this]);\n\t\t},\n\t\tfit: function() {\n\t\t\tvar me = this;\n\t\t\t// Reset\n\t\t\tvar minSize = me.minSize = {\n\t\t\t\twidth: 0,\n\t\t\t\theight: 0\n\t\t\t};\n\n\t\t\tvar opts = me.options;\n\t\t\tvar tickOpts = opts.ticks;\n\t\t\tvar scaleLabelOpts = opts.scaleLabel;\n\t\t\tvar gridLineOpts = opts.gridLines;\n\t\t\tvar display = opts.display;\n\t\t\tvar isHorizontal = me.isHorizontal();\n\n\t\t\tvar tickFont = parseFontOptions(tickOpts);\n\t\t\tvar scaleLabelFontSize = parseFontOptions(scaleLabelOpts).size * 1.5;\n\t\t\tvar tickMarkLength = opts.gridLines.tickMarkLength;\n\n\t\t\t// Width\n\t\t\tif (isHorizontal) {\n\t\t\t\t// subtract the margins to line up with the chartArea if we are a full width scale\n\t\t\t\tminSize.width = me.isFullWidth() ? me.maxWidth - me.margins.left - me.margins.right : me.maxWidth;\n\t\t\t} else {\n\t\t\t\tminSize.width = display && gridLineOpts.drawTicks ? tickMarkLength : 0;\n\t\t\t}\n\n\t\t\t// height\n\t\t\tif (isHorizontal) {\n\t\t\t\tminSize.height = display && gridLineOpts.drawTicks ? tickMarkLength : 0;\n\t\t\t} else {\n\t\t\t\tminSize.height = me.maxHeight; // fill all the height\n\t\t\t}\n\n\t\t\t// Are we showing a title for the scale?\n\t\t\tif (scaleLabelOpts.display && display) {\n\t\t\t\tif (isHorizontal) {\n\t\t\t\t\tminSize.height += scaleLabelFontSize;\n\t\t\t\t} else {\n\t\t\t\t\tminSize.width += scaleLabelFontSize;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Don't bother fitting the ticks if we are not showing them\n\t\t\tif (tickOpts.display && display) {\n\t\t\t\tvar largestTextWidth = helpers.longestText(me.ctx, tickFont.font, me.ticks, me.longestTextCache);\n\t\t\t\tvar tallestLabelHeightInLines = helpers.numberOfLabelLines(me.ticks);\n\t\t\t\tvar lineSpace = tickFont.size * 0.5;\n\n\t\t\t\tif (isHorizontal) {\n\t\t\t\t\t// A horizontal axis is more constrained by the height.\n\t\t\t\t\tme.longestLabelWidth = largestTextWidth;\n\n\t\t\t\t\tvar angleRadians = helpers.toRadians(me.labelRotation);\n\t\t\t\t\tvar cosRotation = Math.cos(angleRadians);\n\t\t\t\t\tvar sinRotation = Math.sin(angleRadians);\n\n\t\t\t\t\t// TODO - improve this calculation\n\t\t\t\t\tvar labelHeight = (sinRotation * largestTextWidth)\n\t\t\t\t\t\t+ (tickFont.size * tallestLabelHeightInLines)\n\t\t\t\t\t\t+ (lineSpace * tallestLabelHeightInLines);\n\n\t\t\t\t\tminSize.height = Math.min(me.maxHeight, minSize.height + labelHeight);\n\t\t\t\t\tme.ctx.font = tickFont.font;\n\n\t\t\t\t\tvar firstTick = me.ticks[0];\n\t\t\t\t\tvar firstLabelWidth = computeTextSize(me.ctx, firstTick, tickFont.font);\n\n\t\t\t\t\tvar lastTick = me.ticks[me.ticks.length - 1];\n\t\t\t\t\tvar lastLabelWidth = computeTextSize(me.ctx, lastTick, tickFont.font);\n\n\t\t\t\t\t// Ensure that our ticks are always inside the canvas. When rotated, ticks are right aligned which means that the right padding is dominated\n\t\t\t\t\t// by the font height\n\t\t\t\t\tif (me.labelRotation !== 0) {\n\t\t\t\t\t\tme.paddingLeft = opts.position === 'bottom'? (cosRotation * firstLabelWidth) + 3: (cosRotation * lineSpace) + 3; // add 3 px to move away from canvas edges\n\t\t\t\t\t\tme.paddingRight = opts.position === 'bottom'? (cosRotation * lineSpace) + 3: (cosRotation * lastLabelWidth) + 3;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tme.paddingLeft = firstLabelWidth / 2 + 3; // add 3 px to move away from canvas edges\n\t\t\t\t\t\tme.paddingRight = lastLabelWidth / 2 + 3;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// A vertical axis is more constrained by the width. Labels are the dominant factor here, so get that length first\n\t\t\t\t\t// Account for padding\n\n\t\t\t\t\tif (tickOpts.mirror) {\n\t\t\t\t\t\tlargestTextWidth = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlargestTextWidth += me.options.ticks.padding;\n\t\t\t\t\t}\n\t\t\t\t\tminSize.width = Math.min(me.maxWidth, minSize.width + largestTextWidth);\n\t\t\t\t\tme.paddingTop = tickFont.size / 2;\n\t\t\t\t\tme.paddingBottom = tickFont.size / 2;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tme.handleMargins();\n\n\t\t\tme.width = minSize.width;\n\t\t\tme.height = minSize.height;\n\t\t},\n\n\t\t/**\n\t\t * Handle margins and padding interactions\n\t\t * @private\n\t\t */\n\t\thandleMargins: function() {\n\t\t\tvar me = this;\n\t\t\tif (me.margins) {\n\t\t\t\tme.paddingLeft = Math.max(me.paddingLeft - me.margins.left, 0);\n\t\t\t\tme.paddingTop = Math.max(me.paddingTop - me.margins.top, 0);\n\t\t\t\tme.paddingRight = Math.max(me.paddingRight - me.margins.right, 0);\n\t\t\t\tme.paddingBottom = Math.max(me.paddingBottom - me.margins.bottom, 0);\n\t\t\t}\n\t\t},\n\n\t\tafterFit: function() {\n\t\t\thelpers.callback(this.options.afterFit, [this]);\n\t\t},\n\n\t\t// Shared Methods\n\t\tisHorizontal: function() {\n\t\t\treturn this.options.position === 'top' || this.options.position === 'bottom';\n\t\t},\n\t\tisFullWidth: function() {\n\t\t\treturn (this.options.fullWidth);\n\t\t},\n\n\t\t// Get the correct value. NaN bad inputs, If the value type is object get the x or y based on whether we are horizontal or not\n\t\tgetRightValue: function(rawValue) {\n\t\t\t// Null and undefined values first\n\t\t\tif (rawValue === null || typeof(rawValue) === 'undefined') {\n\t\t\t\treturn NaN;\n\t\t\t}\n\t\t\t// isNaN(object) returns true, so make sure NaN is checking for a number; Discard Infinite values\n\t\t\tif (typeof(rawValue) === 'number' && !isFinite(rawValue)) {\n\t\t\t\treturn NaN;\n\t\t\t}\n\t\t\t// If it is in fact an object, dive in one more level\n\t\t\tif (typeof(rawValue) === 'object') {\n\t\t\t\tif ((rawValue instanceof Date) || (rawValue.isValid)) {\n\t\t\t\t\treturn rawValue;\n\t\t\t\t}\n\t\t\t\treturn this.getRightValue(this.isHorizontal() ? rawValue.x : rawValue.y);\n\t\t\t}\n\n\t\t\t// Value is good, return it\n\t\t\treturn rawValue;\n\t\t},\n\n\t\t// Used to get the value to display in the tooltip for the data at the given index\n\t\t// function getLabelForIndex(index, datasetIndex)\n\t\tgetLabelForIndex: helpers.noop,\n\n\t\t// Used to get data value locations.  Value can either be an index or a numerical value\n\t\tgetPixelForValue: helpers.noop,\n\n\t\t// Used to get the data value from a given pixel. This is the inverse of getPixelForValue\n\t\tgetValueForPixel: helpers.noop,\n\n\t\t// Used for tick location, should\n\t\tgetPixelForTick: function(index, includeOffset) {\n\t\t\tvar me = this;\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\tvar innerWidth = me.width - (me.paddingLeft + me.paddingRight);\n\t\t\t\tvar tickWidth = innerWidth / Math.max((me.ticks.length - ((me.options.gridLines.offsetGridLines) ? 0 : 1)), 1);\n\t\t\t\tvar pixel = (tickWidth * index) + me.paddingLeft;\n\n\t\t\t\tif (includeOffset) {\n\t\t\t\t\tpixel += tickWidth / 2;\n\t\t\t\t}\n\n\t\t\t\tvar finalVal = me.left + Math.round(pixel);\n\t\t\t\tfinalVal += me.isFullWidth() ? me.margins.left : 0;\n\t\t\t\treturn finalVal;\n\t\t\t}\n\t\t\tvar innerHeight = me.height - (me.paddingTop + me.paddingBottom);\n\t\t\treturn me.top + (index * (innerHeight / (me.ticks.length - 1)));\n\t\t},\n\n\t\t// Utility for getting the pixel location of a percentage of scale\n\t\tgetPixelForDecimal: function(decimal /* , includeOffset*/) {\n\t\t\tvar me = this;\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\tvar innerWidth = me.width - (me.paddingLeft + me.paddingRight);\n\t\t\t\tvar valueOffset = (innerWidth * decimal) + me.paddingLeft;\n\n\t\t\t\tvar finalVal = me.left + Math.round(valueOffset);\n\t\t\t\tfinalVal += me.isFullWidth() ? me.margins.left : 0;\n\t\t\t\treturn finalVal;\n\t\t\t}\n\t\t\treturn me.top + (decimal * me.height);\n\t\t},\n\n\t\tgetBasePixel: function() {\n\t\t\treturn this.getPixelForValue(this.getBaseValue());\n\t\t},\n\n\t\tgetBaseValue: function() {\n\t\t\tvar me = this;\n\t\t\tvar min = me.min;\n\t\t\tvar max = me.max;\n\n\t\t\treturn me.beginAtZero ? 0:\n\t\t\t\tmin < 0 && max < 0? max :\n\t\t\t\tmin > 0 && max > 0? min :\n\t\t\t\t0;\n\t\t},\n\n\t\t// Actually draw the scale on the canvas\n\t\t// @param {rectangle} chartArea : the area of the chart to draw full grid lines on\n\t\tdraw: function(chartArea) {\n\t\t\tvar me = this;\n\t\t\tvar options = me.options;\n\t\t\tif (!options.display) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar context = me.ctx;\n\t\t\tvar globalDefaults = Chart.defaults.global;\n\t\t\tvar optionTicks = options.ticks;\n\t\t\tvar gridLines = options.gridLines;\n\t\t\tvar scaleLabel = options.scaleLabel;\n\n\t\t\tvar isRotated = me.labelRotation !== 0;\n\t\t\tvar skipRatio;\n\t\t\tvar useAutoskipper = optionTicks.autoSkip;\n\t\t\tvar isHorizontal = me.isHorizontal();\n\n\t\t\t// figure out the maximum number of gridlines to show\n\t\t\tvar maxTicks;\n\t\t\tif (optionTicks.maxTicksLimit) {\n\t\t\t\tmaxTicks = optionTicks.maxTicksLimit;\n\t\t\t}\n\n\t\t\tvar tickFontColor = helpers.getValueOrDefault(optionTicks.fontColor, globalDefaults.defaultFontColor);\n\t\t\tvar tickFont = parseFontOptions(optionTicks);\n\n\t\t\tvar tl = gridLines.drawTicks ? gridLines.tickMarkLength : 0;\n\n\t\t\tvar scaleLabelFontColor = helpers.getValueOrDefault(scaleLabel.fontColor, globalDefaults.defaultFontColor);\n\t\t\tvar scaleLabelFont = parseFontOptions(scaleLabel);\n\n\t\t\tvar labelRotationRadians = helpers.toRadians(me.labelRotation);\n\t\t\tvar cosRotation = Math.cos(labelRotationRadians);\n\t\t\tvar longestRotatedLabel = me.longestLabelWidth * cosRotation;\n\n\t\t\t// Make sure we draw text in the correct color and font\n\t\t\tcontext.fillStyle = tickFontColor;\n\n\t\t\tvar itemsToDraw = [];\n\n\t\t\tif (isHorizontal) {\n\t\t\t\tskipRatio = false;\n\n\t\t\t\tif ((longestRotatedLabel + optionTicks.autoSkipPadding) * me.ticks.length > (me.width - (me.paddingLeft + me.paddingRight))) {\n\t\t\t\t\tskipRatio = 1 + Math.floor(((longestRotatedLabel + optionTicks.autoSkipPadding) * me.ticks.length) / (me.width - (me.paddingLeft + me.paddingRight)));\n\t\t\t\t}\n\n\t\t\t\t// if they defined a max number of optionTicks,\n\t\t\t\t// increase skipRatio until that number is met\n\t\t\t\tif (maxTicks && me.ticks.length > maxTicks) {\n\t\t\t\t\twhile (!skipRatio || me.ticks.length / (skipRatio || 1) > maxTicks) {\n\t\t\t\t\t\tif (!skipRatio) {\n\t\t\t\t\t\t\tskipRatio = 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tskipRatio += 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (!useAutoskipper) {\n\t\t\t\t\tskipRatio = false;\n\t\t\t\t}\n\t\t\t}\n\n\n\t\t\tvar xTickStart = options.position === 'right' ? me.left : me.right - tl;\n\t\t\tvar xTickEnd = options.position === 'right' ? me.left + tl : me.right;\n\t\t\tvar yTickStart = options.position === 'bottom' ? me.top : me.bottom - tl;\n\t\t\tvar yTickEnd = options.position === 'bottom' ? me.top + tl : me.bottom;\n\n\t\t\thelpers.each(me.ticks, function(label, index) {\n\t\t\t\t// If the callback returned a null or undefined value, do not draw this line\n\t\t\t\tif (label === undefined || label === null) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar isLastTick = me.ticks.length === index + 1;\n\n\t\t\t\t// Since we always show the last tick,we need may need to hide the last shown one before\n\t\t\t\tvar shouldSkip = (skipRatio > 1 && index % skipRatio > 0) || (index % skipRatio === 0 && index + skipRatio >= me.ticks.length);\n\t\t\t\tif (shouldSkip && !isLastTick || (label === undefined || label === null)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar lineWidth, lineColor, borderDash, borderDashOffset;\n\t\t\t\tif (index === (typeof me.zeroLineIndex !== 'undefined' ? me.zeroLineIndex : 0)) {\n\t\t\t\t\t// Draw the first index specially\n\t\t\t\t\tlineWidth = gridLines.zeroLineWidth;\n\t\t\t\t\tlineColor = gridLines.zeroLineColor;\n\t\t\t\t\tborderDash = gridLines.zeroLineBorderDash;\n\t\t\t\t\tborderDashOffset = gridLines.zeroLineBorderDashOffset;\n\t\t\t\t} else {\n\t\t\t\t\tlineWidth = helpers.getValueAtIndexOrDefault(gridLines.lineWidth, index);\n\t\t\t\t\tlineColor = helpers.getValueAtIndexOrDefault(gridLines.color, index);\n\t\t\t\t\tborderDash = helpers.getValueOrDefault(gridLines.borderDash, globalDefaults.borderDash);\n\t\t\t\t\tborderDashOffset = helpers.getValueOrDefault(gridLines.borderDashOffset, globalDefaults.borderDashOffset);\n\t\t\t\t}\n\n\t\t\t\t// Common properties\n\t\t\t\tvar tx1, ty1, tx2, ty2, x1, y1, x2, y2, labelX, labelY;\n\t\t\t\tvar textAlign = 'middle';\n\t\t\t\tvar textBaseline = 'middle';\n\n\t\t\t\tif (isHorizontal) {\n\n\t\t\t\t\tif (options.position === 'bottom') {\n\t\t\t\t\t\t// bottom\n\t\t\t\t\t\ttextBaseline = !isRotated? 'top':'middle';\n\t\t\t\t\t\ttextAlign = !isRotated? 'center': 'right';\n\t\t\t\t\t\tlabelY = me.top + tl;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// top\n\t\t\t\t\t\ttextBaseline = !isRotated? 'bottom':'middle';\n\t\t\t\t\t\ttextAlign = !isRotated? 'center': 'left';\n\t\t\t\t\t\tlabelY = me.bottom - tl;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar xLineValue = me.getPixelForTick(index) + helpers.aliasPixel(lineWidth); // xvalues for grid lines\n\t\t\t\t\tlabelX = me.getPixelForTick(index, gridLines.offsetGridLines) + optionTicks.labelOffset; // x values for optionTicks (need to consider offsetLabel option)\n\n\t\t\t\t\ttx1 = tx2 = x1 = x2 = xLineValue;\n\t\t\t\t\tty1 = yTickStart;\n\t\t\t\t\tty2 = yTickEnd;\n\t\t\t\t\ty1 = chartArea.top;\n\t\t\t\t\ty2 = chartArea.bottom;\n\t\t\t\t} else {\n\t\t\t\t\tvar isLeft = options.position === 'left';\n\t\t\t\t\tvar tickPadding = optionTicks.padding;\n\t\t\t\t\tvar labelXOffset;\n\n\t\t\t\t\tif (optionTicks.mirror) {\n\t\t\t\t\t\ttextAlign = isLeft ? 'left' : 'right';\n\t\t\t\t\t\tlabelXOffset = tickPadding;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttextAlign = isLeft ? 'right' : 'left';\n\t\t\t\t\t\tlabelXOffset = tl + tickPadding;\n\t\t\t\t\t}\n\n\t\t\t\t\tlabelX = isLeft ? me.right - labelXOffset : me.left + labelXOffset;\n\n\t\t\t\t\tvar yLineValue = me.getPixelForTick(index); // xvalues for grid lines\n\t\t\t\t\tyLineValue += helpers.aliasPixel(lineWidth);\n\t\t\t\t\tlabelY = me.getPixelForTick(index, gridLines.offsetGridLines);\n\n\t\t\t\t\ttx1 = xTickStart;\n\t\t\t\t\ttx2 = xTickEnd;\n\t\t\t\t\tx1 = chartArea.left;\n\t\t\t\t\tx2 = chartArea.right;\n\t\t\t\t\tty1 = ty2 = y1 = y2 = yLineValue;\n\t\t\t\t}\n\n\t\t\t\titemsToDraw.push({\n\t\t\t\t\ttx1: tx1,\n\t\t\t\t\tty1: ty1,\n\t\t\t\t\ttx2: tx2,\n\t\t\t\t\tty2: ty2,\n\t\t\t\t\tx1: x1,\n\t\t\t\t\ty1: y1,\n\t\t\t\t\tx2: x2,\n\t\t\t\t\ty2: y2,\n\t\t\t\t\tlabelX: labelX,\n\t\t\t\t\tlabelY: labelY,\n\t\t\t\t\tglWidth: lineWidth,\n\t\t\t\t\tglColor: lineColor,\n\t\t\t\t\tglBorderDash: borderDash,\n\t\t\t\t\tglBorderDashOffset: borderDashOffset,\n\t\t\t\t\trotation: -1 * labelRotationRadians,\n\t\t\t\t\tlabel: label,\n\t\t\t\t\ttextBaseline: textBaseline,\n\t\t\t\t\ttextAlign: textAlign\n\t\t\t\t});\n\t\t\t});\n\n\t\t\t// Draw all of the tick labels, tick marks, and grid lines at the correct places\n\t\t\thelpers.each(itemsToDraw, function(itemToDraw) {\n\t\t\t\tif (gridLines.display) {\n\t\t\t\t\tcontext.save();\n\t\t\t\t\tcontext.lineWidth = itemToDraw.glWidth;\n\t\t\t\t\tcontext.strokeStyle = itemToDraw.glColor;\n\t\t\t\t\tif (context.setLineDash) {\n\t\t\t\t\t\tcontext.setLineDash(itemToDraw.glBorderDash);\n\t\t\t\t\t\tcontext.lineDashOffset = itemToDraw.glBorderDashOffset;\n\t\t\t\t\t}\n\n\t\t\t\t\tcontext.beginPath();\n\n\t\t\t\t\tif (gridLines.drawTicks) {\n\t\t\t\t\t\tcontext.moveTo(itemToDraw.tx1, itemToDraw.ty1);\n\t\t\t\t\t\tcontext.lineTo(itemToDraw.tx2, itemToDraw.ty2);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (gridLines.drawOnChartArea) {\n\t\t\t\t\t\tcontext.moveTo(itemToDraw.x1, itemToDraw.y1);\n\t\t\t\t\t\tcontext.lineTo(itemToDraw.x2, itemToDraw.y2);\n\t\t\t\t\t}\n\n\t\t\t\t\tcontext.stroke();\n\t\t\t\t\tcontext.restore();\n\t\t\t\t}\n\n\t\t\t\tif (optionTicks.display) {\n\t\t\t\t\tcontext.save();\n\t\t\t\t\tcontext.translate(itemToDraw.labelX, itemToDraw.labelY);\n\t\t\t\t\tcontext.rotate(itemToDraw.rotation);\n\t\t\t\t\tcontext.font = tickFont.font;\n\t\t\t\t\tcontext.textBaseline = itemToDraw.textBaseline;\n\t\t\t\t\tcontext.textAlign = itemToDraw.textAlign;\n\n\t\t\t\t\tvar label = itemToDraw.label;\n\t\t\t\t\tif (helpers.isArray(label)) {\n\t\t\t\t\t\tfor (var i = 0, y = 0; i < label.length; ++i) {\n\t\t\t\t\t\t\t// We just make sure the multiline element is a string here..\n\t\t\t\t\t\t\tcontext.fillText('' + label[i], 0, y);\n\t\t\t\t\t\t\t// apply same lineSpacing as calculated @ L#320\n\t\t\t\t\t\t\ty += (tickFont.size * 1.5);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext.fillText(label, 0, 0);\n\t\t\t\t\t}\n\t\t\t\t\tcontext.restore();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (scaleLabel.display) {\n\t\t\t\t// Draw the scale label\n\t\t\t\tvar scaleLabelX;\n\t\t\t\tvar scaleLabelY;\n\t\t\t\tvar rotation = 0;\n\n\t\t\t\tif (isHorizontal) {\n\t\t\t\t\tscaleLabelX = me.left + ((me.right - me.left) / 2); // midpoint of the width\n\t\t\t\t\tscaleLabelY = options.position === 'bottom' ? me.bottom - (scaleLabelFont.size / 2) : me.top + (scaleLabelFont.size / 2);\n\t\t\t\t} else {\n\t\t\t\t\tvar isLeft = options.position === 'left';\n\t\t\t\t\tscaleLabelX = isLeft ? me.left + (scaleLabelFont.size / 2) : me.right - (scaleLabelFont.size / 2);\n\t\t\t\t\tscaleLabelY = me.top + ((me.bottom - me.top) / 2);\n\t\t\t\t\trotation = isLeft ? -0.5 * Math.PI : 0.5 * Math.PI;\n\t\t\t\t}\n\n\t\t\t\tcontext.save();\n\t\t\t\tcontext.translate(scaleLabelX, scaleLabelY);\n\t\t\t\tcontext.rotate(rotation);\n\t\t\t\tcontext.textAlign = 'center';\n\t\t\t\tcontext.textBaseline = 'middle';\n\t\t\t\tcontext.fillStyle = scaleLabelFontColor; // render in correct colour\n\t\t\t\tcontext.font = scaleLabelFont.font;\n\t\t\t\tcontext.fillText(scaleLabel.labelString, 0, 0);\n\t\t\t\tcontext.restore();\n\t\t\t}\n\n\t\t\tif (gridLines.drawBorder) {\n\t\t\t\t// Draw the line at the edge of the axis\n\t\t\t\tcontext.lineWidth = helpers.getValueAtIndexOrDefault(gridLines.lineWidth, 0);\n\t\t\t\tcontext.strokeStyle = helpers.getValueAtIndexOrDefault(gridLines.color, 0);\n\t\t\t\tvar x1 = me.left,\n\t\t\t\t\tx2 = me.right,\n\t\t\t\t\ty1 = me.top,\n\t\t\t\t\ty2 = me.bottom;\n\n\t\t\t\tvar aliasPixel = helpers.aliasPixel(context.lineWidth);\n\t\t\t\tif (isHorizontal) {\n\t\t\t\t\ty1 = y2 = options.position === 'top' ? me.bottom : me.top;\n\t\t\t\t\ty1 += aliasPixel;\n\t\t\t\t\ty2 += aliasPixel;\n\t\t\t\t} else {\n\t\t\t\t\tx1 = x2 = options.position === 'left' ? me.right : me.left;\n\t\t\t\t\tx1 += aliasPixel;\n\t\t\t\t\tx2 += aliasPixel;\n\t\t\t\t}\n\n\t\t\t\tcontext.beginPath();\n\t\t\t\tcontext.moveTo(x1, y1);\n\t\t\t\tcontext.lineTo(x2, y2);\n\t\t\t\tcontext.stroke();\n\t\t\t}\n\t\t}\n\t});\n};\n\n},{}],32:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\n\tvar helpers = Chart.helpers;\n\n\tChart.scaleService = {\n\t\t// Scale registration object. Extensions can register new scale types (such as log or DB scales) and then\n\t\t// use the new chart options to grab the correct scale\n\t\tconstructors: {},\n\t\t// Use a registration function so that we can move to an ES6 map when we no longer need to support\n\t\t// old browsers\n\n\t\t// Scale config defaults\n\t\tdefaults: {},\n\t\tregisterScaleType: function(type, scaleConstructor, defaults) {\n\t\t\tthis.constructors[type] = scaleConstructor;\n\t\t\tthis.defaults[type] = helpers.clone(defaults);\n\t\t},\n\t\tgetScaleConstructor: function(type) {\n\t\t\treturn this.constructors.hasOwnProperty(type) ? this.constructors[type] : undefined;\n\t\t},\n\t\tgetScaleDefaults: function(type) {\n\t\t\t// Return the scale defaults merged with the global settings so that we always use the latest ones\n\t\t\treturn this.defaults.hasOwnProperty(type) ? helpers.scaleMerge(Chart.defaults.scale, this.defaults[type]) : {};\n\t\t},\n\t\tupdateScaleDefaults: function(type, additions) {\n\t\t\tvar defaults = this.defaults;\n\t\t\tif (defaults.hasOwnProperty(type)) {\n\t\t\t\tdefaults[type] = helpers.extend(defaults[type], additions);\n\t\t\t}\n\t\t},\n\t\taddScalesToLayout: function(chart) {\n\t\t\t// Adds each scale to the chart.boxes array to be sized accordingly\n\t\t\thelpers.each(chart.scales, function(scale) {\n\t\t\t\t// Set ILayoutItem parameters for backwards compatibility\n\t\t\t\tscale.fullWidth = scale.options.fullWidth;\n\t\t\t\tscale.position = scale.options.position;\n\t\t\t\tscale.weight = scale.options.weight;\n\t\t\t\tChart.layoutService.addBox(chart, scale);\n\t\t\t});\n\t\t}\n\t};\n};\n\n},{}],33:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\n\tvar helpers = Chart.helpers;\n\n\t/**\n\t * Namespace to hold static tick generation functions\n\t * @namespace Chart.Ticks\n\t */\n\tChart.Ticks = {\n\t\t/**\n\t\t * Namespace to hold generators for different types of ticks\n\t\t * @namespace Chart.Ticks.generators\n\t\t */\n\t\tgenerators: {\n\t\t\t/**\n\t\t\t * Interface for the options provided to the numeric tick generator\n\t\t\t * @interface INumericTickGenerationOptions\n\t\t\t */\n\t\t\t/**\n\t\t\t * The maximum number of ticks to display\n\t\t\t * @name INumericTickGenerationOptions#maxTicks\n\t\t\t * @type Number\n\t\t\t */\n\t\t\t/**\n\t\t\t * The distance between each tick.\n\t\t\t * @name INumericTickGenerationOptions#stepSize\n\t\t\t * @type Number\n\t\t\t * @optional\n\t\t\t */\n\t\t\t/**\n\t\t\t * Forced minimum for the ticks. If not specified, the minimum of the data range is used to calculate the tick minimum\n\t\t\t * @name INumericTickGenerationOptions#min\n\t\t\t * @type Number\n\t\t\t * @optional\n\t\t\t */\n\t\t\t/**\n\t\t\t * The maximum value of the ticks. If not specified, the maximum of the data range is used to calculate the tick maximum\n\t\t\t * @name INumericTickGenerationOptions#max\n\t\t\t * @type Number\n\t\t\t * @optional\n\t\t\t */\n\n\t\t\t/**\n\t\t\t * Generate a set of linear ticks\n\t\t\t * @method Chart.Ticks.generators.linear\n\t\t\t * @param generationOptions {INumericTickGenerationOptions} the options used to generate the ticks\n\t\t\t * @param dataRange {IRange} the range of the data\n\t\t\t * @returns {Array<Number>} array of tick values\n\t\t\t */\n\t\t\tlinear: function(generationOptions, dataRange) {\n\t\t\t\tvar ticks = [];\n\t\t\t\t// To get a \"nice\" value for the tick spacing, we will use the appropriately named\n\t\t\t\t// \"nice number\" algorithm. See http://stackoverflow.com/questions/8506881/nice-label-algorithm-for-charts-with-minimum-ticks\n\t\t\t\t// for details.\n\n\t\t\t\tvar spacing;\n\t\t\t\tif (generationOptions.stepSize && generationOptions.stepSize > 0) {\n\t\t\t\t\tspacing = generationOptions.stepSize;\n\t\t\t\t} else {\n\t\t\t\t\tvar niceRange = helpers.niceNum(dataRange.max - dataRange.min, false);\n\t\t\t\t\tspacing = helpers.niceNum(niceRange / (generationOptions.maxTicks - 1), true);\n\t\t\t\t}\n\t\t\t\tvar niceMin = Math.floor(dataRange.min / spacing) * spacing;\n\t\t\t\tvar niceMax = Math.ceil(dataRange.max / spacing) * spacing;\n\n\t\t\t\t// If min, max and stepSize is set and they make an evenly spaced scale use it.\n\t\t\t\tif (generationOptions.min && generationOptions.max && generationOptions.stepSize) {\n\t\t\t\t\t// If very close to our whole number, use it.\n\t\t\t\t\tif (helpers.almostWhole((generationOptions.max - generationOptions.min) / generationOptions.stepSize, spacing / 1000)) {\n\t\t\t\t\t\tniceMin = generationOptions.min;\n\t\t\t\t\t\tniceMax = generationOptions.max;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvar numSpaces = (niceMax - niceMin) / spacing;\n\t\t\t\t// If very close to our rounded value, use it.\n\t\t\t\tif (helpers.almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n\t\t\t\t\tnumSpaces = Math.round(numSpaces);\n\t\t\t\t} else {\n\t\t\t\t\tnumSpaces = Math.ceil(numSpaces);\n\t\t\t\t}\n\n\t\t\t\t// Put the values into the ticks array\n\t\t\t\tticks.push(generationOptions.min !== undefined ? generationOptions.min : niceMin);\n\t\t\t\tfor (var j = 1; j < numSpaces; ++j) {\n\t\t\t\t\tticks.push(niceMin + (j * spacing));\n\t\t\t\t}\n\t\t\t\tticks.push(generationOptions.max !== undefined ? generationOptions.max : niceMax);\n\n\t\t\t\treturn ticks;\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Generate a set of logarithmic ticks\n\t\t\t * @method Chart.Ticks.generators.logarithmic\n\t\t\t * @param generationOptions {INumericTickGenerationOptions} the options used to generate the ticks\n\t\t\t * @param dataRange {IRange} the range of the data\n\t\t\t * @returns {Array<Number>} array of tick values\n\t\t\t */\n\t\t\tlogarithmic: function(generationOptions, dataRange) {\n\t\t\t\tvar ticks = [];\n\t\t\t\tvar getValueOrDefault = helpers.getValueOrDefault;\n\n\t\t\t\t// Figure out what the max number of ticks we can support it is based on the size of\n\t\t\t\t// the axis area. For now, we say that the minimum tick spacing in pixels must be 50\n\t\t\t\t// We also limit the maximum number of ticks to 11 which gives a nice 10 squares on\n\t\t\t\t// the graph\n\t\t\t\tvar tickVal = getValueOrDefault(generationOptions.min, Math.pow(10, Math.floor(helpers.log10(dataRange.min))));\n\n\t\t\t\tvar endExp = Math.floor(helpers.log10(dataRange.max));\n\t\t\t\tvar endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp));\n\t\t\t\tvar exp;\n\t\t\t\tvar significand;\n\n\t\t\t\tif (tickVal === 0) {\n\t\t\t\t\texp = Math.floor(helpers.log10(dataRange.minNotZero));\n\t\t\t\t\tsignificand = Math.floor(dataRange.minNotZero / Math.pow(10, exp));\n\n\t\t\t\t\tticks.push(tickVal);\n\t\t\t\t\ttickVal = significand * Math.pow(10, exp);\n\t\t\t\t} else {\n\t\t\t\t\texp = Math.floor(helpers.log10(tickVal));\n\t\t\t\t\tsignificand = Math.floor(tickVal / Math.pow(10, exp));\n\t\t\t\t}\n\n\t\t\t\tdo {\n\t\t\t\t\tticks.push(tickVal);\n\n\t\t\t\t\t++significand;\n\t\t\t\t\tif (significand === 10) {\n\t\t\t\t\t\tsignificand = 1;\n\t\t\t\t\t\t++exp;\n\t\t\t\t\t}\n\n\t\t\t\t\ttickVal = significand * Math.pow(10, exp);\n\t\t\t\t} while (exp < endExp || (exp === endExp && significand < endSignificand));\n\n\t\t\t\tvar lastTick = getValueOrDefault(generationOptions.max, tickVal);\n\t\t\t\tticks.push(lastTick);\n\n\t\t\t\treturn ticks;\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Namespace to hold formatters for different types of ticks\n\t\t * @namespace Chart.Ticks.formatters\n\t\t */\n\t\tformatters: {\n\t\t\t/**\n\t\t\t * Formatter for value labels\n\t\t\t * @method Chart.Ticks.formatters.values\n\t\t\t * @param value the value to display\n\t\t\t * @return {String|Array} the label to display\n\t\t\t */\n\t\t\tvalues: function(value) {\n\t\t\t\treturn helpers.isArray(value) ? value : '' + value;\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Formatter for linear numeric ticks\n\t\t\t * @method Chart.Ticks.formatters.linear\n\t\t\t * @param tickValue {Number} the value to be formatted\n\t\t\t * @param index {Number} the position of the tickValue parameter in the ticks array\n\t\t\t * @param ticks {Array<Number>} the list of ticks being converted\n\t\t\t * @return {String} string representation of the tickValue parameter\n\t\t\t */\n\t\t\tlinear: function(tickValue, index, ticks) {\n\t\t\t\t// If we have lots of ticks, don't use the ones\n\t\t\t\tvar delta = ticks.length > 3 ? ticks[2] - ticks[1] : ticks[1] - ticks[0];\n\n\t\t\t\t// If we have a number like 2.5 as the delta, figure out how many decimal places we need\n\t\t\t\tif (Math.abs(delta) > 1) {\n\t\t\t\t\tif (tickValue !== Math.floor(tickValue)) {\n\t\t\t\t\t\t// not an integer\n\t\t\t\t\t\tdelta = tickValue - Math.floor(tickValue);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvar logDelta = helpers.log10(Math.abs(delta));\n\t\t\t\tvar tickString = '';\n\n\t\t\t\tif (tickValue !== 0) {\n\t\t\t\t\tvar numDecimal = -1 * Math.floor(logDelta);\n\t\t\t\t\tnumDecimal = Math.max(Math.min(numDecimal, 20), 0); // toFixed has a max of 20 decimal places\n\t\t\t\t\ttickString = tickValue.toFixed(numDecimal);\n\t\t\t\t} else {\n\t\t\t\t\ttickString = '0'; // never show decimal places for 0\n\t\t\t\t}\n\n\t\t\t\treturn tickString;\n\t\t\t},\n\n\t\t\tlogarithmic: function(tickValue, index, ticks) {\n\t\t\t\tvar remain = tickValue / (Math.pow(10, Math.floor(helpers.log10(tickValue))));\n\n\t\t\t\tif (tickValue === 0) {\n\t\t\t\t\treturn '0';\n\t\t\t\t} else if (remain === 1 || remain === 2 || remain === 5 || index === 0 || index === ticks.length - 1) {\n\t\t\t\t\treturn tickValue.toExponential();\n\t\t\t\t}\n\t\t\t\treturn '';\n\t\t\t}\n\t\t}\n\t};\n};\n\n},{}],34:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\n\tvar helpers = Chart.helpers;\n\n\t/**\n \t * Helper method to merge the opacity into a color\n \t */\n\tfunction mergeOpacity(colorString, opacity) {\n\t\tvar color = helpers.color(colorString);\n\t\treturn color.alpha(opacity * color.alpha()).rgbaString();\n\t}\n\n\tChart.defaults.global.tooltips = {\n\t\tenabled: true,\n\t\tcustom: null,\n\t\tmode: 'nearest',\n\t\tposition: 'average',\n\t\tintersect: true,\n\t\tbackgroundColor: 'rgba(0,0,0,0.8)',\n\t\ttitleFontStyle: 'bold',\n\t\ttitleSpacing: 2,\n\t\ttitleMarginBottom: 6,\n\t\ttitleFontColor: '#fff',\n\t\ttitleAlign: 'left',\n\t\tbodySpacing: 2,\n\t\tbodyFontColor: '#fff',\n\t\tbodyAlign: 'left',\n\t\tfooterFontStyle: 'bold',\n\t\tfooterSpacing: 2,\n\t\tfooterMarginTop: 6,\n\t\tfooterFontColor: '#fff',\n\t\tfooterAlign: 'left',\n\t\tyPadding: 6,\n\t\txPadding: 6,\n\t\tcaretPadding: 2,\n\t\tcaretSize: 5,\n\t\tcornerRadius: 6,\n\t\tmultiKeyBackground: '#fff',\n\t\tdisplayColors: true,\n\t\tborderColor: 'rgba(0,0,0,0)',\n\t\tborderWidth: 0,\n\t\tcallbacks: {\n\t\t\t// Args are: (tooltipItems, data)\n\t\t\tbeforeTitle: helpers.noop,\n\t\t\ttitle: function(tooltipItems, data) {\n\t\t\t\t// Pick first xLabel for now\n\t\t\t\tvar title = '';\n\t\t\t\tvar labels = data.labels;\n\t\t\t\tvar labelCount = labels ? labels.length : 0;\n\n\t\t\t\tif (tooltipItems.length > 0) {\n\t\t\t\t\tvar item = tooltipItems[0];\n\n\t\t\t\t\tif (item.xLabel) {\n\t\t\t\t\t\ttitle = item.xLabel;\n\t\t\t\t\t} else if (labelCount > 0 && item.index < labelCount) {\n\t\t\t\t\t\ttitle = labels[item.index];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn title;\n\t\t\t},\n\t\t\tafterTitle: helpers.noop,\n\n\t\t\t// Args are: (tooltipItems, data)\n\t\t\tbeforeBody: helpers.noop,\n\n\t\t\t// Args are: (tooltipItem, data)\n\t\t\tbeforeLabel: helpers.noop,\n\t\t\tlabel: function(tooltipItem, data) {\n\t\t\t\tvar label = data.datasets[tooltipItem.datasetIndex].label || '';\n\n\t\t\t\tif (label) {\n\t\t\t\t\tlabel += ': ';\n\t\t\t\t}\n\t\t\t\tlabel += tooltipItem.yLabel;\n\t\t\t\treturn label;\n\t\t\t},\n\t\t\tlabelColor: function(tooltipItem, chart) {\n\t\t\t\tvar meta = chart.getDatasetMeta(tooltipItem.datasetIndex);\n\t\t\t\tvar activeElement = meta.data[tooltipItem.index];\n\t\t\t\tvar view = activeElement._view;\n\t\t\t\treturn {\n\t\t\t\t\tborderColor: view.borderColor,\n\t\t\t\t\tbackgroundColor: view.backgroundColor\n\t\t\t\t};\n\t\t\t},\n\t\t\tafterLabel: helpers.noop,\n\n\t\t\t// Args are: (tooltipItems, data)\n\t\t\tafterBody: helpers.noop,\n\n\t\t\t// Args are: (tooltipItems, data)\n\t\t\tbeforeFooter: helpers.noop,\n\t\t\tfooter: helpers.noop,\n\t\t\tafterFooter: helpers.noop\n\t\t}\n\t};\n\n\t// Helper to push or concat based on if the 2nd parameter is an array or not\n\tfunction pushOrConcat(base, toPush) {\n\t\tif (toPush) {\n\t\t\tif (helpers.isArray(toPush)) {\n\t\t\t\t// base = base.concat(toPush);\n\t\t\t\tArray.prototype.push.apply(base, toPush);\n\t\t\t} else {\n\t\t\t\tbase.push(toPush);\n\t\t\t}\n\t\t}\n\n\t\treturn base;\n\t}\n\n\t// Private helper to create a tooltip item model\n\t// @param element : the chart element (point, arc, bar) to create the tooltip item for\n\t// @return : new tooltip item\n\tfunction createTooltipItem(element) {\n\t\tvar xScale = element._xScale;\n\t\tvar yScale = element._yScale || element._scale; // handle radar || polarArea charts\n\t\tvar index = element._index,\n\t\t\tdatasetIndex = element._datasetIndex;\n\n\t\treturn {\n\t\t\txLabel: xScale ? xScale.getLabelForIndex(index, datasetIndex) : '',\n\t\t\tyLabel: yScale ? yScale.getLabelForIndex(index, datasetIndex) : '',\n\t\t\tindex: index,\n\t\t\tdatasetIndex: datasetIndex,\n\t\t\tx: element._model.x,\n\t\t\ty: element._model.y\n\t\t};\n\t}\n\n\t/**\n\t * Helper to get the reset model for the tooltip\n\t * @param tooltipOpts {Object} the tooltip options\n\t */\n\tfunction getBaseModel(tooltipOpts) {\n\t\tvar globalDefaults = Chart.defaults.global;\n\t\tvar getValueOrDefault = helpers.getValueOrDefault;\n\n\t\treturn {\n\t\t\t// Positioning\n\t\t\txPadding: tooltipOpts.xPadding,\n\t\t\tyPadding: tooltipOpts.yPadding,\n\t\t\txAlign: tooltipOpts.xAlign,\n\t\t\tyAlign: tooltipOpts.yAlign,\n\n\t\t\t// Body\n\t\t\tbodyFontColor: tooltipOpts.bodyFontColor,\n\t\t\t_bodyFontFamily: getValueOrDefault(tooltipOpts.bodyFontFamily, globalDefaults.defaultFontFamily),\n\t\t\t_bodyFontStyle: getValueOrDefault(tooltipOpts.bodyFontStyle, globalDefaults.defaultFontStyle),\n\t\t\t_bodyAlign: tooltipOpts.bodyAlign,\n\t\t\tbodyFontSize: getValueOrDefault(tooltipOpts.bodyFontSize, globalDefaults.defaultFontSize),\n\t\t\tbodySpacing: tooltipOpts.bodySpacing,\n\n\t\t\t// Title\n\t\t\ttitleFontColor: tooltipOpts.titleFontColor,\n\t\t\t_titleFontFamily: getValueOrDefault(tooltipOpts.titleFontFamily, globalDefaults.defaultFontFamily),\n\t\t\t_titleFontStyle: getValueOrDefault(tooltipOpts.titleFontStyle, globalDefaults.defaultFontStyle),\n\t\t\ttitleFontSize: getValueOrDefault(tooltipOpts.titleFontSize, globalDefaults.defaultFontSize),\n\t\t\t_titleAlign: tooltipOpts.titleAlign,\n\t\t\ttitleSpacing: tooltipOpts.titleSpacing,\n\t\t\ttitleMarginBottom: tooltipOpts.titleMarginBottom,\n\n\t\t\t// Footer\n\t\t\tfooterFontColor: tooltipOpts.footerFontColor,\n\t\t\t_footerFontFamily: getValueOrDefault(tooltipOpts.footerFontFamily, globalDefaults.defaultFontFamily),\n\t\t\t_footerFontStyle: getValueOrDefault(tooltipOpts.footerFontStyle, globalDefaults.defaultFontStyle),\n\t\t\tfooterFontSize: getValueOrDefault(tooltipOpts.footerFontSize, globalDefaults.defaultFontSize),\n\t\t\t_footerAlign: tooltipOpts.footerAlign,\n\t\t\tfooterSpacing: tooltipOpts.footerSpacing,\n\t\t\tfooterMarginTop: tooltipOpts.footerMarginTop,\n\n\t\t\t// Appearance\n\t\t\tcaretSize: tooltipOpts.caretSize,\n\t\t\tcornerRadius: tooltipOpts.cornerRadius,\n\t\t\tbackgroundColor: tooltipOpts.backgroundColor,\n\t\t\topacity: 0,\n\t\t\tlegendColorBackground: tooltipOpts.multiKeyBackground,\n\t\t\tdisplayColors: tooltipOpts.displayColors,\n\t\t\tborderColor: tooltipOpts.borderColor,\n\t\t\tborderWidth: tooltipOpts.borderWidth\n\t\t};\n\t}\n\n\t/**\n\t * Get the size of the tooltip\n\t */\n\tfunction getTooltipSize(tooltip, model) {\n\t\tvar ctx = tooltip._chart.ctx;\n\n\t\tvar height = model.yPadding * 2; // Tooltip Padding\n\t\tvar width = 0;\n\n\t\t// Count of all lines in the body\n\t\tvar body = model.body;\n\t\tvar combinedBodyLength = body.reduce(function(count, bodyItem) {\n\t\t\treturn count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length;\n\t\t}, 0);\n\t\tcombinedBodyLength += model.beforeBody.length + model.afterBody.length;\n\n\t\tvar titleLineCount = model.title.length;\n\t\tvar footerLineCount = model.footer.length;\n\t\tvar titleFontSize = model.titleFontSize,\n\t\t\tbodyFontSize = model.bodyFontSize,\n\t\t\tfooterFontSize = model.footerFontSize;\n\n\t\theight += titleLineCount * titleFontSize; // Title Lines\n\t\theight += titleLineCount ? (titleLineCount - 1) * model.titleSpacing : 0; // Title Line Spacing\n\t\theight += titleLineCount ? model.titleMarginBottom : 0; // Title's bottom Margin\n\t\theight += combinedBodyLength * bodyFontSize; // Body Lines\n\t\theight += combinedBodyLength ? (combinedBodyLength - 1) * model.bodySpacing : 0; // Body Line Spacing\n\t\theight += footerLineCount ? model.footerMarginTop : 0; // Footer Margin\n\t\theight += footerLineCount * (footerFontSize); // Footer Lines\n\t\theight += footerLineCount ? (footerLineCount - 1) * model.footerSpacing : 0; // Footer Line Spacing\n\n\t\t// Title width\n\t\tvar widthPadding = 0;\n\t\tvar maxLineWidth = function(line) {\n\t\t\twidth = Math.max(width, ctx.measureText(line).width + widthPadding);\n\t\t};\n\n\t\tctx.font = helpers.fontString(titleFontSize, model._titleFontStyle, model._titleFontFamily);\n\t\thelpers.each(model.title, maxLineWidth);\n\n\t\t// Body width\n\t\tctx.font = helpers.fontString(bodyFontSize, model._bodyFontStyle, model._bodyFontFamily);\n\t\thelpers.each(model.beforeBody.concat(model.afterBody), maxLineWidth);\n\n\t\t// Body lines may include some extra width due to the color box\n\t\twidthPadding = model.displayColors ? (bodyFontSize + 2) : 0;\n\t\thelpers.each(body, function(bodyItem) {\n\t\t\thelpers.each(bodyItem.before, maxLineWidth);\n\t\t\thelpers.each(bodyItem.lines, maxLineWidth);\n\t\t\thelpers.each(bodyItem.after, maxLineWidth);\n\t\t});\n\n\t\t// Reset back to 0\n\t\twidthPadding = 0;\n\n\t\t// Footer width\n\t\tctx.font = helpers.fontString(footerFontSize, model._footerFontStyle, model._footerFontFamily);\n\t\thelpers.each(model.footer, maxLineWidth);\n\n\t\t// Add padding\n\t\twidth += 2 * model.xPadding;\n\n\t\treturn {\n\t\t\twidth: width,\n\t\t\theight: height\n\t\t};\n\t}\n\n\t/**\n\t * Helper to get the alignment of a tooltip given the size\n\t */\n\tfunction determineAlignment(tooltip, size) {\n\t\tvar model = tooltip._model;\n\t\tvar chart = tooltip._chart;\n\t\tvar chartArea = tooltip._chart.chartArea;\n\t\tvar xAlign = 'center';\n\t\tvar yAlign = 'center';\n\n\t\tif (model.y < size.height) {\n\t\t\tyAlign = 'top';\n\t\t} else if (model.y > (chart.height - size.height)) {\n\t\t\tyAlign = 'bottom';\n\t\t}\n\n\t\tvar lf, rf; // functions to determine left, right alignment\n\t\tvar olf, orf; // functions to determine if left/right alignment causes tooltip to go outside chart\n\t\tvar yf; // function to get the y alignment if the tooltip goes outside of the left or right edges\n\t\tvar midX = (chartArea.left + chartArea.right) / 2;\n\t\tvar midY = (chartArea.top + chartArea.bottom) / 2;\n\n\t\tif (yAlign === 'center') {\n\t\t\tlf = function(x) {\n\t\t\t\treturn x <= midX;\n\t\t\t};\n\t\t\trf = function(x) {\n\t\t\t\treturn x > midX;\n\t\t\t};\n\t\t} else {\n\t\t\tlf = function(x) {\n\t\t\t\treturn x <= (size.width / 2);\n\t\t\t};\n\t\t\trf = function(x) {\n\t\t\t\treturn x >= (chart.width - (size.width / 2));\n\t\t\t};\n\t\t}\n\n\t\tolf = function(x) {\n\t\t\treturn x + size.width > chart.width;\n\t\t};\n\t\torf = function(x) {\n\t\t\treturn x - size.width < 0;\n\t\t};\n\t\tyf = function(y) {\n\t\t\treturn y <= midY ? 'top' : 'bottom';\n\t\t};\n\n\t\tif (lf(model.x)) {\n\t\t\txAlign = 'left';\n\n\t\t\t// Is tooltip too wide and goes over the right side of the chart.?\n\t\t\tif (olf(model.x)) {\n\t\t\t\txAlign = 'center';\n\t\t\t\tyAlign = yf(model.y);\n\t\t\t}\n\t\t} else if (rf(model.x)) {\n\t\t\txAlign = 'right';\n\n\t\t\t// Is tooltip too wide and goes outside left edge of canvas?\n\t\t\tif (orf(model.x)) {\n\t\t\t\txAlign = 'center';\n\t\t\t\tyAlign = yf(model.y);\n\t\t\t}\n\t\t}\n\n\t\tvar opts = tooltip._options;\n\t\treturn {\n\t\t\txAlign: opts.xAlign ? opts.xAlign : xAlign,\n\t\t\tyAlign: opts.yAlign ? opts.yAlign : yAlign\n\t\t};\n\t}\n\n\t/**\n\t * @Helper to get the location a tooltip needs to be placed at given the initial position (via the vm) and the size and alignment\n\t */\n\tfunction getBackgroundPoint(vm, size, alignment) {\n\t\t// Background Position\n\t\tvar x = vm.x;\n\t\tvar y = vm.y;\n\n\t\tvar caretSize = vm.caretSize,\n\t\t\tcaretPadding = vm.caretPadding,\n\t\t\tcornerRadius = vm.cornerRadius,\n\t\t\txAlign = alignment.xAlign,\n\t\t\tyAlign = alignment.yAlign,\n\t\t\tpaddingAndSize = caretSize + caretPadding,\n\t\t\tradiusAndPadding = cornerRadius + caretPadding;\n\n\t\tif (xAlign === 'right') {\n\t\t\tx -= size.width;\n\t\t} else if (xAlign === 'center') {\n\t\t\tx -= (size.width / 2);\n\t\t}\n\n\t\tif (yAlign === 'top') {\n\t\t\ty += paddingAndSize;\n\t\t} else if (yAlign === 'bottom') {\n\t\t\ty -= size.height + paddingAndSize;\n\t\t} else {\n\t\t\ty -= (size.height / 2);\n\t\t}\n\n\t\tif (yAlign === 'center') {\n\t\t\tif (xAlign === 'left') {\n\t\t\t\tx += paddingAndSize;\n\t\t\t} else if (xAlign === 'right') {\n\t\t\t\tx -= paddingAndSize;\n\t\t\t}\n\t\t} else if (xAlign === 'left') {\n\t\t\tx -= radiusAndPadding;\n\t\t} else if (xAlign === 'right') {\n\t\t\tx += radiusAndPadding;\n\t\t}\n\n\t\treturn {\n\t\t\tx: x,\n\t\t\ty: y\n\t\t};\n\t}\n\n\tChart.Tooltip = Chart.Element.extend({\n\t\tinitialize: function() {\n\t\t\tthis._model = getBaseModel(this._options);\n\t\t},\n\n\t\t// Get the title\n\t\t// Args are: (tooltipItem, data)\n\t\tgetTitle: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me._options;\n\t\t\tvar callbacks = opts.callbacks;\n\n\t\t\tvar beforeTitle = callbacks.beforeTitle.apply(me, arguments),\n\t\t\t\ttitle = callbacks.title.apply(me, arguments),\n\t\t\t\tafterTitle = callbacks.afterTitle.apply(me, arguments);\n\n\t\t\tvar lines = [];\n\t\t\tlines = pushOrConcat(lines, beforeTitle);\n\t\t\tlines = pushOrConcat(lines, title);\n\t\t\tlines = pushOrConcat(lines, afterTitle);\n\n\t\t\treturn lines;\n\t\t},\n\n\t\t// Args are: (tooltipItem, data)\n\t\tgetBeforeBody: function() {\n\t\t\tvar lines = this._options.callbacks.beforeBody.apply(this, arguments);\n\t\t\treturn helpers.isArray(lines) ? lines : lines !== undefined ? [lines] : [];\n\t\t},\n\n\t\t// Args are: (tooltipItem, data)\n\t\tgetBody: function(tooltipItems, data) {\n\t\t\tvar me = this;\n\t\t\tvar callbacks = me._options.callbacks;\n\t\t\tvar bodyItems = [];\n\n\t\t\thelpers.each(tooltipItems, function(tooltipItem) {\n\t\t\t\tvar bodyItem = {\n\t\t\t\t\tbefore: [],\n\t\t\t\t\tlines: [],\n\t\t\t\t\tafter: []\n\t\t\t\t};\n\t\t\t\tpushOrConcat(bodyItem.before, callbacks.beforeLabel.call(me, tooltipItem, data));\n\t\t\t\tpushOrConcat(bodyItem.lines, callbacks.label.call(me, tooltipItem, data));\n\t\t\t\tpushOrConcat(bodyItem.after, callbacks.afterLabel.call(me, tooltipItem, data));\n\n\t\t\t\tbodyItems.push(bodyItem);\n\t\t\t});\n\n\t\t\treturn bodyItems;\n\t\t},\n\n\t\t// Args are: (tooltipItem, data)\n\t\tgetAfterBody: function() {\n\t\t\tvar lines = this._options.callbacks.afterBody.apply(this, arguments);\n\t\t\treturn helpers.isArray(lines) ? lines : lines !== undefined ? [lines] : [];\n\t\t},\n\n\t\t// Get the footer and beforeFooter and afterFooter lines\n\t\t// Args are: (tooltipItem, data)\n\t\tgetFooter: function() {\n\t\t\tvar me = this;\n\t\t\tvar callbacks = me._options.callbacks;\n\n\t\t\tvar beforeFooter = callbacks.beforeFooter.apply(me, arguments);\n\t\t\tvar footer = callbacks.footer.apply(me, arguments);\n\t\t\tvar afterFooter = callbacks.afterFooter.apply(me, arguments);\n\n\t\t\tvar lines = [];\n\t\t\tlines = pushOrConcat(lines, beforeFooter);\n\t\t\tlines = pushOrConcat(lines, footer);\n\t\t\tlines = pushOrConcat(lines, afterFooter);\n\n\t\t\treturn lines;\n\t\t},\n\n\t\tupdate: function(changed) {\n\t\t\tvar me = this;\n\t\t\tvar opts = me._options;\n\n\t\t\t// Need to regenerate the model because its faster than using extend and it is necessary due to the optimization in Chart.Element.transition\n\t\t\t// that does _view = _model if ease === 1. This causes the 2nd tooltip update to set properties in both the view and model at the same time\n\t\t\t// which breaks any animations.\n\t\t\tvar existingModel = me._model;\n\t\t\tvar model = me._model = getBaseModel(opts);\n\t\t\tvar active = me._active;\n\n\t\t\tvar data = me._data;\n\n\t\t\t// In the case where active.length === 0 we need to keep these at existing values for good animations\n\t\t\tvar alignment = {\n\t\t\t\txAlign: existingModel.xAlign,\n\t\t\t\tyAlign: existingModel.yAlign\n\t\t\t};\n\t\t\tvar backgroundPoint = {\n\t\t\t\tx: existingModel.x,\n\t\t\t\ty: existingModel.y\n\t\t\t};\n\t\t\tvar tooltipSize = {\n\t\t\t\twidth: existingModel.width,\n\t\t\t\theight: existingModel.height\n\t\t\t};\n\t\t\tvar tooltipPosition = {\n\t\t\t\tx: existingModel.caretX,\n\t\t\t\ty: existingModel.caretY\n\t\t\t};\n\n\t\t\tvar i, len;\n\n\t\t\tif (active.length) {\n\t\t\t\tmodel.opacity = 1;\n\n\t\t\t\tvar labelColors = [];\n\t\t\t\ttooltipPosition = Chart.Tooltip.positioners[opts.position](active, me._eventPosition);\n\n\t\t\t\tvar tooltipItems = [];\n\t\t\t\tfor (i = 0, len = active.length; i < len; ++i) {\n\t\t\t\t\ttooltipItems.push(createTooltipItem(active[i]));\n\t\t\t\t}\n\n\t\t\t\t// If the user provided a filter function, use it to modify the tooltip items\n\t\t\t\tif (opts.filter) {\n\t\t\t\t\ttooltipItems = tooltipItems.filter(function(a) {\n\t\t\t\t\t\treturn opts.filter(a, data);\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// If the user provided a sorting function, use it to modify the tooltip items\n\t\t\t\tif (opts.itemSort) {\n\t\t\t\t\ttooltipItems = tooltipItems.sort(function(a, b) {\n\t\t\t\t\t\treturn opts.itemSort(a, b, data);\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// Determine colors for boxes\n\t\t\t\thelpers.each(tooltipItems, function(tooltipItem) {\n\t\t\t\t\tlabelColors.push(opts.callbacks.labelColor.call(me, tooltipItem, me._chart));\n\t\t\t\t});\n\n\t\t\t\t// Build the Text Lines\n\t\t\t\tmodel.title = me.getTitle(tooltipItems, data);\n\t\t\t\tmodel.beforeBody = me.getBeforeBody(tooltipItems, data);\n\t\t\t\tmodel.body = me.getBody(tooltipItems, data);\n\t\t\t\tmodel.afterBody = me.getAfterBody(tooltipItems, data);\n\t\t\t\tmodel.footer = me.getFooter(tooltipItems, data);\n\n\t\t\t\t// Initial positioning and colors\n\t\t\t\tmodel.x = Math.round(tooltipPosition.x);\n\t\t\t\tmodel.y = Math.round(tooltipPosition.y);\n\t\t\t\tmodel.caretPadding = opts.caretPadding;\n\t\t\t\tmodel.labelColors = labelColors;\n\n\t\t\t\t// data points\n\t\t\t\tmodel.dataPoints = tooltipItems;\n\n\t\t\t\t// We need to determine alignment of the tooltip\n\t\t\t\ttooltipSize = getTooltipSize(this, model);\n\t\t\t\talignment = determineAlignment(this, tooltipSize);\n\t\t\t\t// Final Size and Position\n\t\t\t\tbackgroundPoint = getBackgroundPoint(model, tooltipSize, alignment);\n\t\t\t} else {\n\t\t\t\tmodel.opacity = 0;\n\t\t\t}\n\n\t\t\tmodel.xAlign = alignment.xAlign;\n\t\t\tmodel.yAlign = alignment.yAlign;\n\t\t\tmodel.x = backgroundPoint.x;\n\t\t\tmodel.y = backgroundPoint.y;\n\t\t\tmodel.width = tooltipSize.width;\n\t\t\tmodel.height = tooltipSize.height;\n\n\t\t\t// Point where the caret on the tooltip points to\n\t\t\tmodel.caretX = tooltipPosition.x;\n\t\t\tmodel.caretY = tooltipPosition.y;\n\n\t\t\tme._model = model;\n\n\t\t\tif (changed && opts.custom) {\n\t\t\t\topts.custom.call(me, model);\n\t\t\t}\n\n\t\t\treturn me;\n\t\t},\n\t\tdrawCaret: function(tooltipPoint, size) {\n\t\t\tvar ctx = this._chart.ctx;\n\t\t\tvar vm = this._view;\n\t\t\tvar caretPosition = this.getCaretPosition(tooltipPoint, size, vm);\n\n\t\t\tctx.lineTo(caretPosition.x1, caretPosition.y1);\n\t\t\tctx.lineTo(caretPosition.x2, caretPosition.y2);\n\t\t\tctx.lineTo(caretPosition.x3, caretPosition.y3);\n\t\t},\n\t\tgetCaretPosition: function(tooltipPoint, size, vm) {\n\t\t\tvar x1, x2, x3;\n\t\t\tvar y1, y2, y3;\n\t\t\tvar caretSize = vm.caretSize;\n\t\t\tvar cornerRadius = vm.cornerRadius;\n\t\t\tvar xAlign = vm.xAlign,\n\t\t\t\tyAlign = vm.yAlign;\n\t\t\tvar ptX = tooltipPoint.x,\n\t\t\t\tptY = tooltipPoint.y;\n\t\t\tvar width = size.width,\n\t\t\t\theight = size.height;\n\n\t\t\tif (yAlign === 'center') {\n\t\t\t\ty2 = ptY + (height / 2);\n\n\t\t\t\tif (xAlign === 'left') {\n\t\t\t\t\tx1 = ptX;\n\t\t\t\t\tx2 = x1 - caretSize;\n\t\t\t\t\tx3 = x1;\n\n\t\t\t\t\ty1 = y2 + caretSize;\n\t\t\t\t\ty3 = y2 - caretSize;\n\t\t\t\t} else {\n\t\t\t\t\tx1 = ptX + width;\n\t\t\t\t\tx2 = x1 + caretSize;\n\t\t\t\t\tx3 = x1;\n\n\t\t\t\t\ty1 = y2 - caretSize;\n\t\t\t\t\ty3 = y2 + caretSize;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (xAlign === 'left') {\n\t\t\t\t\tx2 = ptX + cornerRadius + (caretSize);\n\t\t\t\t\tx1 = x2 - caretSize;\n\t\t\t\t\tx3 = x2 + caretSize;\n\t\t\t\t} else if (xAlign === 'right') {\n\t\t\t\t\tx2 = ptX + width - cornerRadius - caretSize;\n\t\t\t\t\tx1 = x2 - caretSize;\n\t\t\t\t\tx3 = x2 + caretSize;\n\t\t\t\t} else {\n\t\t\t\t\tx2 = ptX + (width / 2);\n\t\t\t\t\tx1 = x2 - caretSize;\n\t\t\t\t\tx3 = x2 + caretSize;\n\t\t\t\t}\n\t\t\t\tif (yAlign === 'top') {\n\t\t\t\t\ty1 = ptY;\n\t\t\t\t\ty2 = y1 - caretSize;\n\t\t\t\t\ty3 = y1;\n\t\t\t\t} else {\n\t\t\t\t\ty1 = ptY + height;\n\t\t\t\t\ty2 = y1 + caretSize;\n\t\t\t\t\ty3 = y1;\n\t\t\t\t\t// invert drawing order\n\t\t\t\t\tvar tmp = x3;\n\t\t\t\t\tx3 = x1;\n\t\t\t\t\tx1 = tmp;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn {x1: x1, x2: x2, x3: x3, y1: y1, y2: y2, y3: y3};\n\t\t},\n\t\tdrawTitle: function(pt, vm, ctx, opacity) {\n\t\t\tvar title = vm.title;\n\n\t\t\tif (title.length) {\n\t\t\t\tctx.textAlign = vm._titleAlign;\n\t\t\t\tctx.textBaseline = 'top';\n\n\t\t\t\tvar titleFontSize = vm.titleFontSize,\n\t\t\t\t\ttitleSpacing = vm.titleSpacing;\n\n\t\t\t\tctx.fillStyle = mergeOpacity(vm.titleFontColor, opacity);\n\t\t\t\tctx.font = helpers.fontString(titleFontSize, vm._titleFontStyle, vm._titleFontFamily);\n\n\t\t\t\tvar i, len;\n\t\t\t\tfor (i = 0, len = title.length; i < len; ++i) {\n\t\t\t\t\tctx.fillText(title[i], pt.x, pt.y);\n\t\t\t\t\tpt.y += titleFontSize + titleSpacing; // Line Height and spacing\n\n\t\t\t\t\tif (i + 1 === title.length) {\n\t\t\t\t\t\tpt.y += vm.titleMarginBottom - titleSpacing; // If Last, add margin, remove spacing\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tdrawBody: function(pt, vm, ctx, opacity) {\n\t\t\tvar bodyFontSize = vm.bodyFontSize;\n\t\t\tvar bodySpacing = vm.bodySpacing;\n\t\t\tvar body = vm.body;\n\n\t\t\tctx.textAlign = vm._bodyAlign;\n\t\t\tctx.textBaseline = 'top';\n\n\t\t\tvar textColor = mergeOpacity(vm.bodyFontColor, opacity);\n\t\t\tctx.fillStyle = textColor;\n\t\t\tctx.font = helpers.fontString(bodyFontSize, vm._bodyFontStyle, vm._bodyFontFamily);\n\n\t\t\t// Before Body\n\t\t\tvar xLinePadding = 0;\n\t\t\tvar fillLineOfText = function(line) {\n\t\t\t\tctx.fillText(line, pt.x + xLinePadding, pt.y);\n\t\t\t\tpt.y += bodyFontSize + bodySpacing;\n\t\t\t};\n\n\t\t\t// Before body lines\n\t\t\thelpers.each(vm.beforeBody, fillLineOfText);\n\n\t\t\tvar drawColorBoxes = vm.displayColors;\n\t\t\txLinePadding = drawColorBoxes ? (bodyFontSize + 2) : 0;\n\n\t\t\t// Draw body lines now\n\t\t\thelpers.each(body, function(bodyItem, i) {\n\t\t\t\thelpers.each(bodyItem.before, fillLineOfText);\n\n\t\t\t\thelpers.each(bodyItem.lines, function(line) {\n\t\t\t\t\t// Draw Legend-like boxes if needed\n\t\t\t\t\tif (drawColorBoxes) {\n\t\t\t\t\t\t// Fill a white rect so that colours merge nicely if the opacity is < 1\n\t\t\t\t\t\tctx.fillStyle = mergeOpacity(vm.legendColorBackground, opacity);\n\t\t\t\t\t\tctx.fillRect(pt.x, pt.y, bodyFontSize, bodyFontSize);\n\n\t\t\t\t\t\t// Border\n\t\t\t\t\t\tctx.strokeStyle = mergeOpacity(vm.labelColors[i].borderColor, opacity);\n\t\t\t\t\t\tctx.strokeRect(pt.x, pt.y, bodyFontSize, bodyFontSize);\n\n\t\t\t\t\t\t// Inner square\n\t\t\t\t\t\tctx.fillStyle = mergeOpacity(vm.labelColors[i].backgroundColor, opacity);\n\t\t\t\t\t\tctx.fillRect(pt.x + 1, pt.y + 1, bodyFontSize - 2, bodyFontSize - 2);\n\n\t\t\t\t\t\tctx.fillStyle = textColor;\n\t\t\t\t\t}\n\n\t\t\t\t\tfillLineOfText(line);\n\t\t\t\t});\n\n\t\t\t\thelpers.each(bodyItem.after, fillLineOfText);\n\t\t\t});\n\n\t\t\t// Reset back to 0 for after body\n\t\t\txLinePadding = 0;\n\n\t\t\t// After body lines\n\t\t\thelpers.each(vm.afterBody, fillLineOfText);\n\t\t\tpt.y -= bodySpacing; // Remove last body spacing\n\t\t},\n\t\tdrawFooter: function(pt, vm, ctx, opacity) {\n\t\t\tvar footer = vm.footer;\n\n\t\t\tif (footer.length) {\n\t\t\t\tpt.y += vm.footerMarginTop;\n\n\t\t\t\tctx.textAlign = vm._footerAlign;\n\t\t\t\tctx.textBaseline = 'top';\n\n\t\t\t\tctx.fillStyle = mergeOpacity(vm.footerFontColor, opacity);\n\t\t\t\tctx.font = helpers.fontString(vm.footerFontSize, vm._footerFontStyle, vm._footerFontFamily);\n\n\t\t\t\thelpers.each(footer, function(line) {\n\t\t\t\t\tctx.fillText(line, pt.x, pt.y);\n\t\t\t\t\tpt.y += vm.footerFontSize + vm.footerSpacing;\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tdrawBackground: function(pt, vm, ctx, tooltipSize, opacity) {\n\t\t\tctx.fillStyle = mergeOpacity(vm.backgroundColor, opacity);\n\t\t\tctx.strokeStyle = mergeOpacity(vm.borderColor, opacity);\n\t\t\tctx.lineWidth = vm.borderWidth;\n\t\t\tvar xAlign = vm.xAlign;\n\t\t\tvar yAlign = vm.yAlign;\n\t\t\tvar x = pt.x;\n\t\t\tvar y = pt.y;\n\t\t\tvar width = tooltipSize.width;\n\t\t\tvar height = tooltipSize.height;\n\t\t\tvar radius = vm.cornerRadius;\n\n\t\t\tctx.beginPath();\n\t\t\tctx.moveTo(x + radius, y);\n\t\t\tif (yAlign === 'top') {\n\t\t\t\tthis.drawCaret(pt, tooltipSize);\n\t\t\t}\n\t\t\tctx.lineTo(x + width - radius, y);\n\t\t\tctx.quadraticCurveTo(x + width, y, x + width, y + radius);\n\t\t\tif (yAlign === 'center' && xAlign === 'right') {\n\t\t\t\tthis.drawCaret(pt, tooltipSize);\n\t\t\t}\n\t\t\tctx.lineTo(x + width, y + height - radius);\n\t\t\tctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height);\n\t\t\tif (yAlign === 'bottom') {\n\t\t\t\tthis.drawCaret(pt, tooltipSize);\n\t\t\t}\n\t\t\tctx.lineTo(x + radius, y + height);\n\t\t\tctx.quadraticCurveTo(x, y + height, x, y + height - radius);\n\t\t\tif (yAlign === 'center' && xAlign === 'left') {\n\t\t\t\tthis.drawCaret(pt, tooltipSize);\n\t\t\t}\n\t\t\tctx.lineTo(x, y + radius);\n\t\t\tctx.quadraticCurveTo(x, y, x + radius, y);\n\t\t\tctx.closePath();\n\n\t\t\tctx.fill();\n\n\t\t\tif (vm.borderWidth > 0) {\n\t\t\t\tctx.stroke();\n\t\t\t}\n\t\t},\n\t\tdraw: function() {\n\t\t\tvar ctx = this._chart.ctx;\n\t\t\tvar vm = this._view;\n\n\t\t\tif (vm.opacity === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar tooltipSize = {\n\t\t\t\twidth: vm.width,\n\t\t\t\theight: vm.height\n\t\t\t};\n\t\t\tvar pt = {\n\t\t\t\tx: vm.x,\n\t\t\t\ty: vm.y\n\t\t\t};\n\n\t\t\t// IE11/Edge does not like very small opacities, so snap to 0\n\t\t\tvar opacity = Math.abs(vm.opacity < 1e-3) ? 0 : vm.opacity;\n\n\t\t\t// Truthy/falsey value for empty tooltip\n\t\t\tvar hasTooltipContent = vm.title.length || vm.beforeBody.length || vm.body.length || vm.afterBody.length || vm.footer.length;\n\n\t\t\tif (this._options.enabled && hasTooltipContent) {\n\t\t\t\t// Draw Background\n\t\t\t\tthis.drawBackground(pt, vm, ctx, tooltipSize, opacity);\n\n\t\t\t\t// Draw Title, Body, and Footer\n\t\t\t\tpt.x += vm.xPadding;\n\t\t\t\tpt.y += vm.yPadding;\n\n\t\t\t\t// Titles\n\t\t\t\tthis.drawTitle(pt, vm, ctx, opacity);\n\n\t\t\t\t// Body\n\t\t\t\tthis.drawBody(pt, vm, ctx, opacity);\n\n\t\t\t\t// Footer\n\t\t\t\tthis.drawFooter(pt, vm, ctx, opacity);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Handle an event\n\t\t * @private\n\t\t * @param {IEvent} event - The event to handle\n\t\t * @returns {Boolean} true if the tooltip changed\n\t\t */\n\t\thandleEvent: function(e) {\n\t\t\tvar me = this;\n\t\t\tvar options = me._options;\n\t\t\tvar changed = false;\n\n\t\t\tme._lastActive = me._lastActive || [];\n\n\t\t\t// Find Active Elements for tooltips\n\t\t\tif (e.type === 'mouseout') {\n\t\t\t\tme._active = [];\n\t\t\t} else {\n\t\t\t\tme._active = me._chart.getElementsAtEventForMode(e, options.mode, options);\n\t\t\t}\n\n\t\t\t// Remember Last Actives\n\t\t\tchanged = !helpers.arrayEquals(me._active, me._lastActive);\n\n\t\t\t// If tooltip didn't change, do not handle the target event\n\t\t\tif (!changed) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tme._lastActive = me._active;\n\n\t\t\tif (options.enabled || options.custom) {\n\t\t\t\tme._eventPosition = {\n\t\t\t\t\tx: e.x,\n\t\t\t\t\ty: e.y\n\t\t\t\t};\n\n\t\t\t\tvar model = me._model;\n\t\t\t\tme.update(true);\n\t\t\t\tme.pivot();\n\n\t\t\t\t// See if our tooltip position changed\n\t\t\t\tchanged |= (model.x !== me._model.x) || (model.y !== me._model.y);\n\t\t\t}\n\n\t\t\treturn changed;\n\t\t}\n\t});\n\n\t/**\n\t * @namespace Chart.Tooltip.positioners\n\t */\n\tChart.Tooltip.positioners = {\n\t\t/**\n\t\t * Average mode places the tooltip at the average position of the elements shown\n\t\t * @function Chart.Tooltip.positioners.average\n\t\t * @param elements {ChartElement[]} the elements being displayed in the tooltip\n\t\t * @returns {Point} tooltip position\n\t\t */\n\t\taverage: function(elements) {\n\t\t\tif (!elements.length) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tvar i, len;\n\t\t\tvar x = 0;\n\t\t\tvar y = 0;\n\t\t\tvar count = 0;\n\n\t\t\tfor (i = 0, len = elements.length; i < len; ++i) {\n\t\t\t\tvar el = elements[i];\n\t\t\t\tif (el && el.hasValue()) {\n\t\t\t\t\tvar pos = el.tooltipPosition();\n\t\t\t\t\tx += pos.x;\n\t\t\t\t\ty += pos.y;\n\t\t\t\t\t++count;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tx: Math.round(x / count),\n\t\t\t\ty: Math.round(y / count)\n\t\t\t};\n\t\t},\n\n\t\t/**\n\t\t * Gets the tooltip position nearest of the item nearest to the event position\n\t\t * @function Chart.Tooltip.positioners.nearest\n\t\t * @param elements {Chart.Element[]} the tooltip elements\n\t\t * @param eventPosition {Point} the position of the event in canvas coordinates\n\t\t * @returns {Point} the tooltip position\n\t\t */\n\t\tnearest: function(elements, eventPosition) {\n\t\t\tvar x = eventPosition.x;\n\t\t\tvar y = eventPosition.y;\n\n\t\t\tvar nearestElement;\n\t\t\tvar minDistance = Number.POSITIVE_INFINITY;\n\t\t\tvar i, len;\n\t\t\tfor (i = 0, len = elements.length; i < len; ++i) {\n\t\t\t\tvar el = elements[i];\n\t\t\t\tif (el && el.hasValue()) {\n\t\t\t\t\tvar center = el.getCenterPoint();\n\t\t\t\t\tvar d = helpers.distanceBetweenPoints(eventPosition, center);\n\n\t\t\t\t\tif (d < minDistance) {\n\t\t\t\t\t\tminDistance = d;\n\t\t\t\t\t\tnearestElement = el;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (nearestElement) {\n\t\t\t\tvar tp = nearestElement.tooltipPosition();\n\t\t\t\tx = tp.x;\n\t\t\t\ty = tp.y;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tx: x,\n\t\t\t\ty: y\n\t\t\t};\n\t\t}\n\t};\n};\n\n},{}],35:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\n\tvar helpers = Chart.helpers,\n\t\tglobalOpts = Chart.defaults.global;\n\n\tglobalOpts.elements.arc = {\n\t\tbackgroundColor: globalOpts.defaultColor,\n\t\tborderColor: '#fff',\n\t\tborderWidth: 2\n\t};\n\n\tChart.elements.Arc = Chart.Element.extend({\n\t\tinLabelRange: function(mouseX) {\n\t\t\tvar vm = this._view;\n\n\t\t\tif (vm) {\n\t\t\t\treturn (Math.pow(mouseX - vm.x, 2) < Math.pow(vm.radius + vm.hoverRadius, 2));\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tinRange: function(chartX, chartY) {\n\t\t\tvar vm = this._view;\n\n\t\t\tif (vm) {\n\t\t\t\tvar pointRelativePosition = helpers.getAngleFromPoint(vm, {\n\t\t\t\t\t\tx: chartX,\n\t\t\t\t\t\ty: chartY\n\t\t\t\t\t}),\n\t\t\t\t\tangle = pointRelativePosition.angle,\n\t\t\t\t\tdistance = pointRelativePosition.distance;\n\n\t\t\t\t// Sanitise angle range\n\t\t\t\tvar startAngle = vm.startAngle;\n\t\t\t\tvar endAngle = vm.endAngle;\n\t\t\t\twhile (endAngle < startAngle) {\n\t\t\t\t\tendAngle += 2.0 * Math.PI;\n\t\t\t\t}\n\t\t\t\twhile (angle > endAngle) {\n\t\t\t\t\tangle -= 2.0 * Math.PI;\n\t\t\t\t}\n\t\t\t\twhile (angle < startAngle) {\n\t\t\t\t\tangle += 2.0 * Math.PI;\n\t\t\t\t}\n\n\t\t\t\t// Check if within the range of the open/close angle\n\t\t\t\tvar betweenAngles = (angle >= startAngle && angle <= endAngle),\n\t\t\t\t\twithinRadius = (distance >= vm.innerRadius && distance <= vm.outerRadius);\n\n\t\t\t\treturn (betweenAngles && withinRadius);\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tgetCenterPoint: function() {\n\t\t\tvar vm = this._view;\n\t\t\tvar halfAngle = (vm.startAngle + vm.endAngle) / 2;\n\t\t\tvar halfRadius = (vm.innerRadius + vm.outerRadius) / 2;\n\t\t\treturn {\n\t\t\t\tx: vm.x + Math.cos(halfAngle) * halfRadius,\n\t\t\t\ty: vm.y + Math.sin(halfAngle) * halfRadius\n\t\t\t};\n\t\t},\n\t\tgetArea: function() {\n\t\t\tvar vm = this._view;\n\t\t\treturn Math.PI * ((vm.endAngle - vm.startAngle) / (2 * Math.PI)) * (Math.pow(vm.outerRadius, 2) - Math.pow(vm.innerRadius, 2));\n\t\t},\n\t\ttooltipPosition: function() {\n\t\t\tvar vm = this._view;\n\n\t\t\tvar centreAngle = vm.startAngle + ((vm.endAngle - vm.startAngle) / 2),\n\t\t\t\trangeFromCentre = (vm.outerRadius - vm.innerRadius) / 2 + vm.innerRadius;\n\t\t\treturn {\n\t\t\t\tx: vm.x + (Math.cos(centreAngle) * rangeFromCentre),\n\t\t\t\ty: vm.y + (Math.sin(centreAngle) * rangeFromCentre)\n\t\t\t};\n\t\t},\n\t\tdraw: function() {\n\n\t\t\tvar ctx = this._chart.ctx,\n\t\t\t\tvm = this._view,\n\t\t\t\tsA = vm.startAngle,\n\t\t\t\teA = vm.endAngle;\n\n\t\t\tctx.beginPath();\n\n\t\t\tctx.arc(vm.x, vm.y, vm.outerRadius, sA, eA);\n\t\t\tctx.arc(vm.x, vm.y, vm.innerRadius, eA, sA, true);\n\n\t\t\tctx.closePath();\n\t\t\tctx.strokeStyle = vm.borderColor;\n\t\t\tctx.lineWidth = vm.borderWidth;\n\n\t\t\tctx.fillStyle = vm.backgroundColor;\n\n\t\t\tctx.fill();\n\t\t\tctx.lineJoin = 'bevel';\n\n\t\t\tif (vm.borderWidth) {\n\t\t\t\tctx.stroke();\n\t\t\t}\n\t\t}\n\t});\n};\n\n},{}],36:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\n\tvar helpers = Chart.helpers;\n\tvar globalDefaults = Chart.defaults.global;\n\n\tChart.defaults.global.elements.line = {\n\t\ttension: 0.4,\n\t\tbackgroundColor: globalDefaults.defaultColor,\n\t\tborderWidth: 3,\n\t\tborderColor: globalDefaults.defaultColor,\n\t\tborderCapStyle: 'butt',\n\t\tborderDash: [],\n\t\tborderDashOffset: 0.0,\n\t\tborderJoinStyle: 'miter',\n\t\tcapBezierPoints: true,\n\t\tfill: true, // do we fill in the area between the line and its base axis\n\t};\n\n\tChart.elements.Line = Chart.Element.extend({\n\t\tdraw: function() {\n\t\t\tvar me = this;\n\t\t\tvar vm = me._view;\n\t\t\tvar ctx = me._chart.ctx;\n\t\t\tvar spanGaps = vm.spanGaps;\n\t\t\tvar points = me._children.slice(); // clone array\n\t\t\tvar globalOptionLineElements = globalDefaults.elements.line;\n\t\t\tvar lastDrawnIndex = -1;\n\t\t\tvar index, current, previous, currentVM;\n\n\t\t\t// If we are looping, adding the first point again\n\t\t\tif (me._loop && points.length) {\n\t\t\t\tpoints.push(points[0]);\n\t\t\t}\n\n\t\t\tctx.save();\n\n\t\t\t// Stroke Line Options\n\t\t\tctx.lineCap = vm.borderCapStyle || globalOptionLineElements.borderCapStyle;\n\n\t\t\t// IE 9 and 10 do not support line dash\n\t\t\tif (ctx.setLineDash) {\n\t\t\t\tctx.setLineDash(vm.borderDash || globalOptionLineElements.borderDash);\n\t\t\t}\n\n\t\t\tctx.lineDashOffset = vm.borderDashOffset || globalOptionLineElements.borderDashOffset;\n\t\t\tctx.lineJoin = vm.borderJoinStyle || globalOptionLineElements.borderJoinStyle;\n\t\t\tctx.lineWidth = vm.borderWidth || globalOptionLineElements.borderWidth;\n\t\t\tctx.strokeStyle = vm.borderColor || globalDefaults.defaultColor;\n\n\t\t\t// Stroke Line\n\t\t\tctx.beginPath();\n\t\t\tlastDrawnIndex = -1;\n\n\t\t\tfor (index = 0; index < points.length; ++index) {\n\t\t\t\tcurrent = points[index];\n\t\t\t\tprevious = helpers.previousItem(points, index);\n\t\t\t\tcurrentVM = current._view;\n\n\t\t\t\t// First point moves to it's starting position no matter what\n\t\t\t\tif (index === 0) {\n\t\t\t\t\tif (!currentVM.skip) {\n\t\t\t\t\t\tctx.moveTo(currentVM.x, currentVM.y);\n\t\t\t\t\t\tlastDrawnIndex = index;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tprevious = lastDrawnIndex === -1 ? previous : points[lastDrawnIndex];\n\n\t\t\t\t\tif (!currentVM.skip) {\n\t\t\t\t\t\tif ((lastDrawnIndex !== (index - 1) && !spanGaps) || lastDrawnIndex === -1) {\n\t\t\t\t\t\t\t// There was a gap and this is the first point after the gap\n\t\t\t\t\t\t\tctx.moveTo(currentVM.x, currentVM.y);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Line to next point\n\t\t\t\t\t\t\thelpers.canvas.lineTo(ctx, previous._view, current._view);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlastDrawnIndex = index;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tctx.stroke();\n\t\t\tctx.restore();\n\t\t}\n\t});\n};\n\n},{}],37:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\n\tvar helpers = Chart.helpers,\n\t\tglobalOpts = Chart.defaults.global,\n\t\tdefaultColor = globalOpts.defaultColor;\n\n\tglobalOpts.elements.point = {\n\t\tradius: 3,\n\t\tpointStyle: 'circle',\n\t\tbackgroundColor: defaultColor,\n\t\tborderWidth: 1,\n\t\tborderColor: defaultColor,\n\t\t// Hover\n\t\thitRadius: 1,\n\t\thoverRadius: 4,\n\t\thoverBorderWidth: 1\n\t};\n\n\tfunction xRange(mouseX) {\n\t\tvar vm = this._view;\n\t\treturn vm ? (Math.pow(mouseX - vm.x, 2) < Math.pow(vm.radius + vm.hitRadius, 2)) : false;\n\t}\n\n\tfunction yRange(mouseY) {\n\t\tvar vm = this._view;\n\t\treturn vm ? (Math.pow(mouseY - vm.y, 2) < Math.pow(vm.radius + vm.hitRadius, 2)) : false;\n\t}\n\n\tChart.elements.Point = Chart.Element.extend({\n\t\tinRange: function(mouseX, mouseY) {\n\t\t\tvar vm = this._view;\n\t\t\treturn vm ? ((Math.pow(mouseX - vm.x, 2) + Math.pow(mouseY - vm.y, 2)) < Math.pow(vm.hitRadius + vm.radius, 2)) : false;\n\t\t},\n\n\t\tinLabelRange: xRange,\n\t\tinXRange: xRange,\n\t\tinYRange: yRange,\n\n\t\tgetCenterPoint: function() {\n\t\t\tvar vm = this._view;\n\t\t\treturn {\n\t\t\t\tx: vm.x,\n\t\t\t\ty: vm.y\n\t\t\t};\n\t\t},\n\t\tgetArea: function() {\n\t\t\treturn Math.PI * Math.pow(this._view.radius, 2);\n\t\t},\n\t\ttooltipPosition: function() {\n\t\t\tvar vm = this._view;\n\t\t\treturn {\n\t\t\t\tx: vm.x,\n\t\t\t\ty: vm.y,\n\t\t\t\tpadding: vm.radius + vm.borderWidth\n\t\t\t};\n\t\t},\n\t\tdraw: function(chartArea) {\n\t\t\tvar vm = this._view;\n\t\t\tvar model = this._model;\n\t\t\tvar ctx = this._chart.ctx;\n\t\t\tvar pointStyle = vm.pointStyle;\n\t\t\tvar radius = vm.radius;\n\t\t\tvar x = vm.x;\n\t\t\tvar y = vm.y;\n\t\t\tvar color = Chart.helpers.color;\n\t\t\tvar errMargin = 1.01; // 1.01 is margin for Accumulated error. (Especially Edge, IE.)\n\t\t\tvar ratio = 0;\n\n\t\t\tif (vm.skip) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tctx.strokeStyle = vm.borderColor || defaultColor;\n\t\t\tctx.lineWidth = helpers.getValueOrDefault(vm.borderWidth, globalOpts.elements.point.borderWidth);\n\t\t\tctx.fillStyle = vm.backgroundColor || defaultColor;\n\n\t\t\t// Cliping for Points.\n\t\t\t// going out from inner charArea?\n\t\t\tif ((chartArea !== undefined) && ((model.x < chartArea.left) || (chartArea.right*errMargin < model.x) || (model.y < chartArea.top) || (chartArea.bottom*errMargin < model.y))) {\n\t\t\t\t// Point fade out\n\t\t\t\tif (model.x < chartArea.left) {\n\t\t\t\t\tratio = (x - model.x) / (chartArea.left - model.x);\n\t\t\t\t} else if (chartArea.right*errMargin < model.x) {\n\t\t\t\t\tratio = (model.x - x) / (model.x - chartArea.right);\n\t\t\t\t} else if (model.y < chartArea.top) {\n\t\t\t\t\tratio = (y - model.y) / (chartArea.top - model.y);\n\t\t\t\t} else if (chartArea.bottom*errMargin < model.y) {\n\t\t\t\t\tratio = (model.y - y) / (model.y - chartArea.bottom);\n\t\t\t\t}\n\t\t\t\tratio = Math.round(ratio*100) / 100;\n\t\t\t\tctx.strokeStyle = color(ctx.strokeStyle).alpha(ratio).rgbString();\n\t\t\t\tctx.fillStyle = color(ctx.fillStyle).alpha(ratio).rgbString();\n\t\t\t}\n\n\t\t\tChart.canvasHelpers.drawPoint(ctx, pointStyle, radius, x, y);\n\t\t}\n\t});\n};\n\n},{}],38:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\n\tvar globalOpts = Chart.defaults.global;\n\n\tglobalOpts.elements.rectangle = {\n\t\tbackgroundColor: globalOpts.defaultColor,\n\t\tborderWidth: 0,\n\t\tborderColor: globalOpts.defaultColor,\n\t\tborderSkipped: 'bottom'\n\t};\n\n\tfunction isVertical(bar) {\n\t\treturn bar._view.width !== undefined;\n\t}\n\n\t/**\n\t * Helper function to get the bounds of the bar regardless of the orientation\n\t * @private\n\t * @param bar {Chart.Element.Rectangle} the bar\n\t * @return {Bounds} bounds of the bar\n\t */\n\tfunction getBarBounds(bar) {\n\t\tvar vm = bar._view;\n\t\tvar x1, x2, y1, y2;\n\n\t\tif (isVertical(bar)) {\n\t\t\t// vertical\n\t\t\tvar halfWidth = vm.width / 2;\n\t\t\tx1 = vm.x - halfWidth;\n\t\t\tx2 = vm.x + halfWidth;\n\t\t\ty1 = Math.min(vm.y, vm.base);\n\t\t\ty2 = Math.max(vm.y, vm.base);\n\t\t} else {\n\t\t\t// horizontal bar\n\t\t\tvar halfHeight = vm.height / 2;\n\t\t\tx1 = Math.min(vm.x, vm.base);\n\t\t\tx2 = Math.max(vm.x, vm.base);\n\t\t\ty1 = vm.y - halfHeight;\n\t\t\ty2 = vm.y + halfHeight;\n\t\t}\n\n\t\treturn {\n\t\t\tleft: x1,\n\t\t\ttop: y1,\n\t\t\tright: x2,\n\t\t\tbottom: y2\n\t\t};\n\t}\n\n\tChart.elements.Rectangle = Chart.Element.extend({\n\t\tdraw: function() {\n\t\t\tvar ctx = this._chart.ctx;\n\t\t\tvar vm = this._view;\n\t\t\tvar left, right, top, bottom, signX, signY, borderSkipped;\n\t\t\tvar borderWidth = vm.borderWidth;\n\n\t\t\tif (!vm.horizontal) {\n\t\t\t\t// bar\n\t\t\t\tleft = vm.x - vm.width / 2;\n\t\t\t\tright = vm.x + vm.width / 2;\n\t\t\t\ttop = vm.y;\n\t\t\t\tbottom = vm.base;\n\t\t\t\tsignX = 1;\n\t\t\t\tsignY = bottom > top? 1: -1;\n\t\t\t\tborderSkipped = vm.borderSkipped || 'bottom';\n\t\t\t} else {\n\t\t\t\t// horizontal bar\n\t\t\t\tleft = vm.base;\n\t\t\t\tright = vm.x;\n\t\t\t\ttop = vm.y - vm.height / 2;\n\t\t\t\tbottom = vm.y + vm.height / 2;\n\t\t\t\tsignX = right > left? 1: -1;\n\t\t\t\tsignY = 1;\n\t\t\t\tborderSkipped = vm.borderSkipped || 'left';\n\t\t\t}\n\n\t\t\t// Canvas doesn't allow us to stroke inside the width so we can\n\t\t\t// adjust the sizes to fit if we're setting a stroke on the line\n\t\t\tif (borderWidth) {\n\t\t\t\t// borderWidth shold be less than bar width and bar height.\n\t\t\t\tvar barSize = Math.min(Math.abs(left - right), Math.abs(top - bottom));\n\t\t\t\tborderWidth = borderWidth > barSize? barSize: borderWidth;\n\t\t\t\tvar halfStroke = borderWidth / 2;\n\t\t\t\t// Adjust borderWidth when bar top position is near vm.base(zero).\n\t\t\t\tvar borderLeft = left + (borderSkipped !== 'left'? halfStroke * signX: 0);\n\t\t\t\tvar borderRight = right + (borderSkipped !== 'right'? -halfStroke * signX: 0);\n\t\t\t\tvar borderTop = top + (borderSkipped !== 'top'? halfStroke * signY: 0);\n\t\t\t\tvar borderBottom = bottom + (borderSkipped !== 'bottom'? -halfStroke * signY: 0);\n\t\t\t\t// not become a vertical line?\n\t\t\t\tif (borderLeft !== borderRight) {\n\t\t\t\t\ttop = borderTop;\n\t\t\t\t\tbottom = borderBottom;\n\t\t\t\t}\n\t\t\t\t// not become a horizontal line?\n\t\t\t\tif (borderTop !== borderBottom) {\n\t\t\t\t\tleft = borderLeft;\n\t\t\t\t\tright = borderRight;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tctx.beginPath();\n\t\t\tctx.fillStyle = vm.backgroundColor;\n\t\t\tctx.strokeStyle = vm.borderColor;\n\t\t\tctx.lineWidth = borderWidth;\n\n\t\t\t// Corner points, from bottom-left to bottom-right clockwise\n\t\t\t// | 1 2 |\n\t\t\t// | 0 3 |\n\t\t\tvar corners = [\n\t\t\t\t[left, bottom],\n\t\t\t\t[left, top],\n\t\t\t\t[right, top],\n\t\t\t\t[right, bottom]\n\t\t\t];\n\n\t\t\t// Find first (starting) corner with fallback to 'bottom'\n\t\t\tvar borders = ['bottom', 'left', 'top', 'right'];\n\t\t\tvar startCorner = borders.indexOf(borderSkipped, 0);\n\t\t\tif (startCorner === -1) {\n\t\t\t\tstartCorner = 0;\n\t\t\t}\n\n\t\t\tfunction cornerAt(index) {\n\t\t\t\treturn corners[(startCorner + index) % 4];\n\t\t\t}\n\n\t\t\t// Draw rectangle from 'startCorner'\n\t\t\tvar corner = cornerAt(0);\n\t\t\tctx.moveTo(corner[0], corner[1]);\n\n\t\t\tfor (var i = 1; i < 4; i++) {\n\t\t\t\tcorner = cornerAt(i);\n\t\t\t\tctx.lineTo(corner[0], corner[1]);\n\t\t\t}\n\n\t\t\tctx.fill();\n\t\t\tif (borderWidth) {\n\t\t\t\tctx.stroke();\n\t\t\t}\n\t\t},\n\t\theight: function() {\n\t\t\tvar vm = this._view;\n\t\t\treturn vm.base - vm.y;\n\t\t},\n\t\tinRange: function(mouseX, mouseY) {\n\t\t\tvar inRange = false;\n\n\t\t\tif (this._view) {\n\t\t\t\tvar bounds = getBarBounds(this);\n\t\t\t\tinRange = mouseX >= bounds.left && mouseX <= bounds.right && mouseY >= bounds.top && mouseY <= bounds.bottom;\n\t\t\t}\n\n\t\t\treturn inRange;\n\t\t},\n\t\tinLabelRange: function(mouseX, mouseY) {\n\t\t\tvar me = this;\n\t\t\tif (!me._view) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tvar inRange = false;\n\t\t\tvar bounds = getBarBounds(me);\n\n\t\t\tif (isVertical(me)) {\n\t\t\t\tinRange = mouseX >= bounds.left && mouseX <= bounds.right;\n\t\t\t} else {\n\t\t\t\tinRange = mouseY >= bounds.top && mouseY <= bounds.bottom;\n\t\t\t}\n\n\t\t\treturn inRange;\n\t\t},\n\t\tinXRange: function(mouseX) {\n\t\t\tvar bounds = getBarBounds(this);\n\t\t\treturn mouseX >= bounds.left && mouseX <= bounds.right;\n\t\t},\n\t\tinYRange: function(mouseY) {\n\t\t\tvar bounds = getBarBounds(this);\n\t\t\treturn mouseY >= bounds.top && mouseY <= bounds.bottom;\n\t\t},\n\t\tgetCenterPoint: function() {\n\t\t\tvar vm = this._view;\n\t\t\tvar x, y;\n\t\t\tif (isVertical(this)) {\n\t\t\t\tx = vm.x;\n\t\t\t\ty = (vm.y + vm.base) / 2;\n\t\t\t} else {\n\t\t\t\tx = (vm.x + vm.base) / 2;\n\t\t\t\ty = vm.y;\n\t\t\t}\n\n\t\t\treturn {x: x, y: y};\n\t\t},\n\t\tgetArea: function() {\n\t\t\tvar vm = this._view;\n\t\t\treturn vm.width * Math.abs(vm.y - vm.base);\n\t\t},\n\t\ttooltipPosition: function() {\n\t\t\tvar vm = this._view;\n\t\t\treturn {\n\t\t\t\tx: vm.x,\n\t\t\t\ty: vm.y\n\t\t\t};\n\t\t}\n\t});\n\n};\n\n},{}],39:[function(require,module,exports){\n'use strict';\n\n// Chart.Platform implementation for targeting a web browser\nmodule.exports = function(Chart) {\n\tvar helpers = Chart.helpers;\n\n\t// DOM event types -> Chart.js event types.\n\t// Note: only events with different types are mapped.\n\t// https://developer.mozilla.org/en-US/docs/Web/Events\n\tvar eventTypeMap = {\n\t\t// Touch events\n\t\ttouchstart: 'mousedown',\n\t\ttouchmove: 'mousemove',\n\t\ttouchend: 'mouseup',\n\n\t\t// Pointer events\n\t\tpointerenter: 'mouseenter',\n\t\tpointerdown: 'mousedown',\n\t\tpointermove: 'mousemove',\n\t\tpointerup: 'mouseup',\n\t\tpointerleave: 'mouseout',\n\t\tpointerout: 'mouseout'\n\t};\n\n\t/**\n\t * The \"used\" size is the final value of a dimension property after all calculations have\n\t * been performed. This method uses the computed style of `element` but returns undefined\n\t * if the computed style is not expressed in pixels. That can happen in some cases where\n\t * `element` has a size relative to its parent and this last one is not yet displayed,\n\t * for example because of `display: none` on a parent node.\n\t * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value\n\t * @returns {Number} Size in pixels or undefined if unknown.\n\t */\n\tfunction readUsedSize(element, property) {\n\t\tvar value = helpers.getStyle(element, property);\n\t\tvar matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n\t\treturn matches? Number(matches[1]) : undefined;\n\t}\n\n\t/**\n\t * Initializes the canvas style and render size without modifying the canvas display size,\n\t * since responsiveness is handled by the controller.resize() method. The config is used\n\t * to determine the aspect ratio to apply in case no explicit height has been specified.\n\t */\n\tfunction initCanvas(canvas, config) {\n\t\tvar style = canvas.style;\n\n\t\t// NOTE(SB) canvas.getAttribute('width') !== canvas.width: in the first case it\n\t\t// returns null or '' if no explicit value has been set to the canvas attribute.\n\t\tvar renderHeight = canvas.getAttribute('height');\n\t\tvar renderWidth = canvas.getAttribute('width');\n\n\t\t// Chart.js modifies some canvas values that we want to restore on destroy\n\t\tcanvas._chartjs = {\n\t\t\tinitial: {\n\t\t\t\theight: renderHeight,\n\t\t\t\twidth: renderWidth,\n\t\t\t\tstyle: {\n\t\t\t\t\tdisplay: style.display,\n\t\t\t\t\theight: style.height,\n\t\t\t\t\twidth: style.width\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t// Force canvas to display as block to avoid extra space caused by inline\n\t\t// elements, which would interfere with the responsive resize process.\n\t\t// https://github.com/chartjs/Chart.js/issues/2538\n\t\tstyle.display = style.display || 'block';\n\n\t\tif (renderWidth === null || renderWidth === '') {\n\t\t\tvar displayWidth = readUsedSize(canvas, 'width');\n\t\t\tif (displayWidth !== undefined) {\n\t\t\t\tcanvas.width = displayWidth;\n\t\t\t}\n\t\t}\n\n\t\tif (renderHeight === null || renderHeight === '') {\n\t\t\tif (canvas.style.height === '') {\n\t\t\t\t// If no explicit render height and style height, let's apply the aspect ratio,\n\t\t\t\t// which one can be specified by the user but also by charts as default option\n\t\t\t\t// (i.e. options.aspectRatio). If not specified, use canvas aspect ratio of 2.\n\t\t\t\tcanvas.height = canvas.width / (config.options.aspectRatio || 2);\n\t\t\t} else {\n\t\t\t\tvar displayHeight = readUsedSize(canvas, 'height');\n\t\t\t\tif (displayWidth !== undefined) {\n\t\t\t\t\tcanvas.height = displayHeight;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn canvas;\n\t}\n\n\tfunction createEvent(type, chart, x, y, nativeEvent) {\n\t\treturn {\n\t\t\ttype: type,\n\t\t\tchart: chart,\n\t\t\tnative: nativeEvent || null,\n\t\t\tx: x !== undefined? x : null,\n\t\t\ty: y !== undefined? y : null,\n\t\t};\n\t}\n\n\tfunction fromNativeEvent(event, chart) {\n\t\tvar type = eventTypeMap[event.type] || event.type;\n\t\tvar pos = helpers.getRelativePosition(event, chart);\n\t\treturn createEvent(type, chart, pos.x, pos.y, event);\n\t}\n\n\tfunction createResizer(handler) {\n\t\tvar iframe = document.createElement('iframe');\n\t\tiframe.className = 'chartjs-hidden-iframe';\n\t\tiframe.style.cssText =\n\t\t\t'display:block;'+\n\t\t\t'overflow:hidden;'+\n\t\t\t'border:0;'+\n\t\t\t'margin:0;'+\n\t\t\t'top:0;'+\n\t\t\t'left:0;'+\n\t\t\t'bottom:0;'+\n\t\t\t'right:0;'+\n\t\t\t'height:100%;'+\n\t\t\t'width:100%;'+\n\t\t\t'position:absolute;'+\n\t\t\t'pointer-events:none;'+\n\t\t\t'z-index:-1;';\n\n\t\t// Prevent the iframe to gain focus on tab.\n\t\t// https://github.com/chartjs/Chart.js/issues/3090\n\t\tiframe.tabIndex = -1;\n\n\t\t// If the iframe is re-attached to the DOM, the resize listener is removed because the\n\t\t// content is reloaded, so make sure to install the handler after the iframe is loaded.\n\t\t// https://github.com/chartjs/Chart.js/issues/3521\n\t\thelpers.addEvent(iframe, 'load', function() {\n\t\t\thelpers.addEvent(iframe.contentWindow || iframe, 'resize', handler);\n\n\t\t\t// The iframe size might have changed while loading, which can also\n\t\t\t// happen if the size has been changed while detached from the DOM.\n\t\t\thandler();\n\t\t});\n\n\t\treturn iframe;\n\t}\n\n\tfunction addResizeListener(node, listener, chart) {\n\t\tvar stub = node._chartjs = {\n\t\t\tticking: false\n\t\t};\n\n\t\t// Throttle the callback notification until the next animation frame.\n\t\tvar notify = function() {\n\t\t\tif (!stub.ticking) {\n\t\t\t\tstub.ticking = true;\n\t\t\t\thelpers.requestAnimFrame.call(window, function() {\n\t\t\t\t\tif (stub.resizer) {\n\t\t\t\t\t\tstub.ticking = false;\n\t\t\t\t\t\treturn listener(createEvent('resize', chart));\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\n\t\t// Let's keep track of this added iframe and thus avoid DOM query when removing it.\n\t\tstub.resizer = createResizer(notify);\n\n\t\tnode.insertBefore(stub.resizer, node.firstChild);\n\t}\n\n\tfunction removeResizeListener(node) {\n\t\tif (!node || !node._chartjs) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar resizer = node._chartjs.resizer;\n\t\tif (resizer) {\n\t\t\tresizer.parentNode.removeChild(resizer);\n\t\t\tnode._chartjs.resizer = null;\n\t\t}\n\n\t\tdelete node._chartjs;\n\t}\n\n\treturn {\n\t\tacquireContext: function(item, config) {\n\t\t\tif (typeof item === 'string') {\n\t\t\t\titem = document.getElementById(item);\n\t\t\t} else if (item.length) {\n\t\t\t\t// Support for array based queries (such as jQuery)\n\t\t\t\titem = item[0];\n\t\t\t}\n\n\t\t\tif (item && item.canvas) {\n\t\t\t\t// Support for any object associated to a canvas (including a context2d)\n\t\t\t\titem = item.canvas;\n\t\t\t}\n\n\t\t\t// To prevent canvas fingerprinting, some add-ons undefine the getContext\n\t\t\t// method, for example: https://github.com/kkapsner/CanvasBlocker\n\t\t\t// https://github.com/chartjs/Chart.js/issues/2807\n\t\t\tvar context = item && item.getContext && item.getContext('2d');\n\n\t\t\t// `instanceof HTMLCanvasElement/CanvasRenderingContext2D` fails when the item is\n\t\t\t// inside an iframe or when running in a protected environment. We could guess the\n\t\t\t// types from their toString() value but let's keep things flexible and assume it's\n\t\t\t// a sufficient condition if the item has a context2D which has item as `canvas`.\n\t\t\t// https://github.com/chartjs/Chart.js/issues/3887\n\t\t\t// https://github.com/chartjs/Chart.js/issues/4102\n\t\t\t// https://github.com/chartjs/Chart.js/issues/4152\n\t\t\tif (context && context.canvas === item) {\n\t\t\t\tinitCanvas(item, config);\n\t\t\t\treturn context;\n\t\t\t}\n\n\t\t\treturn null;\n\t\t},\n\n\t\treleaseContext: function(context) {\n\t\t\tvar canvas = context.canvas;\n\t\t\tif (!canvas._chartjs) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar initial = canvas._chartjs.initial;\n\t\t\t['height', 'width'].forEach(function(prop) {\n\t\t\t\tvar value = initial[prop];\n\t\t\t\tif (value === undefined || value === null) {\n\t\t\t\t\tcanvas.removeAttribute(prop);\n\t\t\t\t} else {\n\t\t\t\t\tcanvas.setAttribute(prop, value);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\thelpers.each(initial.style || {}, function(value, key) {\n\t\t\t\tcanvas.style[key] = value;\n\t\t\t});\n\n\t\t\t// The canvas render size might have been changed (and thus the state stack discarded),\n\t\t\t// we can't use save() and restore() to restore the initial state. So make sure that at\n\t\t\t// least the canvas context is reset to the default state by setting the canvas width.\n\t\t\t// https://www.w3.org/TR/2011/WD-html5-20110525/the-canvas-element.html\n\t\t\tcanvas.width = canvas.width;\n\n\t\t\tdelete canvas._chartjs;\n\t\t},\n\n\t\taddEventListener: function(chart, type, listener) {\n\t\t\tvar canvas = chart.canvas;\n\t\t\tif (type === 'resize') {\n\t\t\t\t// Note: the resize event is not supported on all browsers.\n\t\t\t\taddResizeListener(canvas.parentNode, listener, chart);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar stub = listener._chartjs || (listener._chartjs = {});\n\t\t\tvar proxies = stub.proxies || (stub.proxies = {});\n\t\t\tvar proxy = proxies[chart.id + '_' + type] = function(event) {\n\t\t\t\tlistener(fromNativeEvent(event, chart));\n\t\t\t};\n\n\t\t\thelpers.addEvent(canvas, type, proxy);\n\t\t},\n\n\t\tremoveEventListener: function(chart, type, listener) {\n\t\t\tvar canvas = chart.canvas;\n\t\t\tif (type === 'resize') {\n\t\t\t\t// Note: the resize event is not supported on all browsers.\n\t\t\t\tremoveResizeListener(canvas.parentNode, listener);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar stub = listener._chartjs || {};\n\t\t\tvar proxies = stub.proxies || {};\n\t\t\tvar proxy = proxies[chart.id + '_' + type];\n\t\t\tif (!proxy) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\thelpers.removeEvent(canvas, type, proxy);\n\t\t}\n\t};\n};\n\n},{}],40:[function(require,module,exports){\n'use strict';\n\n// By default, select the browser (DOM) platform.\n// @TODO Make possible to select another platform at build time.\nvar implementation = require(39);\n\nmodule.exports = function(Chart) {\n\t/**\n\t * @namespace Chart.platform\n\t * @see https://chartjs.gitbooks.io/proposals/content/Platform.html\n\t * @since 2.4.0\n\t */\n\tChart.platform = {\n\t\t/**\n\t\t * Called at chart construction time, returns a context2d instance implementing\n\t\t * the [W3C Canvas 2D Context API standard]{@link https://www.w3.org/TR/2dcontext/}.\n\t\t * @param {*} item - The native item from which to acquire context (platform specific)\n\t\t * @param {Object} options - The chart options\n\t\t * @returns {CanvasRenderingContext2D} context2d instance\n\t\t */\n\t\tacquireContext: function() {},\n\n\t\t/**\n\t\t * Called at chart destruction time, releases any resources associated to the context\n\t\t * previously returned by the acquireContext() method.\n\t\t * @param {CanvasRenderingContext2D} context - The context2d instance\n\t\t * @returns {Boolean} true if the method succeeded, else false\n\t\t */\n\t\treleaseContext: function() {},\n\n\t\t/**\n\t\t * Registers the specified listener on the given chart.\n\t\t * @param {Chart} chart - Chart from which to listen for event\n\t\t * @param {String} type - The ({@link IEvent}) type to listen for\n\t\t * @param {Function} listener - Receives a notification (an object that implements\n\t\t * the {@link IEvent} interface) when an event of the specified type occurs.\n\t\t */\n\t\taddEventListener: function() {},\n\n\t\t/**\n\t\t * Removes the specified listener previously registered with addEventListener.\n\t\t * @param {Chart} chart -Chart from which to remove the listener\n\t\t * @param {String} type - The ({@link IEvent}) type to remove\n\t\t * @param {Function} listener - The listener function to remove from the event target.\n\t\t */\n\t\tremoveEventListener: function() {}\n\t};\n\n\t/**\n\t * @interface IPlatform\n\t * Allows abstracting platform dependencies away from the chart\n\t * @borrows Chart.platform.acquireContext as acquireContext\n\t * @borrows Chart.platform.releaseContext as releaseContext\n\t * @borrows Chart.platform.addEventListener as addEventListener\n\t * @borrows Chart.platform.removeEventListener as removeEventListener\n\t */\n\n\t/**\n\t * @interface IEvent\n\t * @prop {String} type - The event type name, possible values are:\n\t * 'contextmenu', 'mouseenter', 'mousedown', 'mousemove', 'mouseup', 'mouseout',\n\t * 'click', 'dblclick', 'keydown', 'keypress', 'keyup' and 'resize'\n\t * @prop {*} native - The original native event (null for emulated events, e.g. 'resize')\n\t * @prop {Number} x - The mouse x position, relative to the canvas (null for incompatible events)\n\t * @prop {Number} y - The mouse y position, relative to the canvas (null for incompatible events)\n\t */\n\n\tChart.helpers.extend(Chart.platform, implementation(Chart));\n};\n\n},{\"39\":39}],41:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\t/**\n\t * Plugin based on discussion from the following Chart.js issues:\n\t * @see https://github.com/chartjs/Chart.js/issues/2380#issuecomment-279961569\n\t * @see https://github.com/chartjs/Chart.js/issues/2440#issuecomment-256461897\n\t */\n\tChart.defaults.global.plugins.filler = {\n\t\tpropagate: true\n\t};\n\n\tvar defaults = Chart.defaults;\n\tvar helpers = Chart.helpers;\n\tvar mappers = {\n\t\tdataset: function(source) {\n\t\t\tvar index = source.fill;\n\t\t\tvar chart = source.chart;\n\t\t\tvar meta = chart.getDatasetMeta(index);\n\t\t\tvar visible = meta && chart.isDatasetVisible(index);\n\t\t\tvar points = (visible && meta.dataset._children) || [];\n\n\t\t\treturn !points.length? null : function(point, i) {\n\t\t\t\treturn points[i]._view || null;\n\t\t\t};\n\t\t},\n\n\t\tboundary: function(source) {\n\t\t\tvar boundary = source.boundary;\n\t\t\tvar x = boundary? boundary.x : null;\n\t\t\tvar y = boundary? boundary.y : null;\n\n\t\t\treturn function(point) {\n\t\t\t\treturn {\n\t\t\t\t\tx: x === null? point.x : x,\n\t\t\t\t\ty: y === null? point.y : y,\n\t\t\t\t};\n\t\t\t};\n\t\t}\n\t};\n\n\t// @todo if (fill[0] === '#')\n\tfunction decodeFill(el, index, count) {\n\t\tvar model = el._model || {};\n\t\tvar fill = model.fill;\n\t\tvar target;\n\n\t\tif (fill === undefined) {\n\t\t\tfill = !!model.backgroundColor;\n\t\t}\n\n\t\tif (fill === false || fill === null) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (fill === true) {\n\t\t\treturn 'origin';\n\t\t}\n\n\t\ttarget = parseFloat(fill, 10);\n\t\tif (isFinite(target) && Math.floor(target) === target) {\n\t\t\tif (fill[0] === '-' || fill[0] === '+') {\n\t\t\t\ttarget = index + target;\n\t\t\t}\n\n\t\t\tif (target === index || target < 0 || target >= count) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn target;\n\t\t}\n\n\t\tswitch (fill) {\n\t\t// compatibility\n\t\tcase 'bottom':\n\t\t\treturn 'start';\n\t\tcase 'top':\n\t\t\treturn 'end';\n\t\tcase 'zero':\n\t\t\treturn 'origin';\n\t\t// supported boundaries\n\t\tcase 'origin':\n\t\tcase 'start':\n\t\tcase 'end':\n\t\t\treturn fill;\n\t\t// invalid fill values\n\t\tdefault:\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tfunction computeBoundary(source) {\n\t\tvar model = source.el._model || {};\n\t\tvar scale = source.el._scale || {};\n\t\tvar fill = source.fill;\n\t\tvar target = null;\n\t\tvar horizontal;\n\n\t\tif (isFinite(fill)) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Backward compatibility: until v3, we still need to support boundary values set on\n\t\t// the model (scaleTop, scaleBottom and scaleZero) because some external plugins and\n\t\t// controllers might still use it (e.g. the Smith chart).\n\n\t\tif (fill === 'start') {\n\t\t\ttarget = model.scaleBottom === undefined? scale.bottom : model.scaleBottom;\n\t\t} else if (fill === 'end') {\n\t\t\ttarget = model.scaleTop === undefined? scale.top : model.scaleTop;\n\t\t} else if (model.scaleZero !== undefined) {\n\t\t\ttarget = model.scaleZero;\n\t\t} else if (scale.getBasePosition) {\n\t\t\ttarget = scale.getBasePosition();\n\t\t} else if (scale.getBasePixel) {\n\t\t\ttarget = scale.getBasePixel();\n\t\t}\n\n\t\tif (target !== undefined && target !== null) {\n\t\t\tif (target.x !== undefined && target.y !== undefined) {\n\t\t\t\treturn target;\n\t\t\t}\n\n\t\t\tif (typeof target === 'number' && isFinite(target)) {\n\t\t\t\thorizontal = scale.isHorizontal();\n\t\t\t\treturn {\n\t\t\t\t\tx: horizontal? target : null,\n\t\t\t\t\ty: horizontal? null : target\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tfunction resolveTarget(sources, index, propagate) {\n\t\tvar source = sources[index];\n\t\tvar fill = source.fill;\n\t\tvar visited = [index];\n\t\tvar target;\n\n\t\tif (!propagate) {\n\t\t\treturn fill;\n\t\t}\n\n\t\twhile (fill !== false && visited.indexOf(fill) === -1) {\n\t\t\tif (!isFinite(fill)) {\n\t\t\t\treturn fill;\n\t\t\t}\n\n\t\t\ttarget = sources[fill];\n\t\t\tif (!target) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (target.visible) {\n\t\t\t\treturn fill;\n\t\t\t}\n\n\t\t\tvisited.push(fill);\n\t\t\tfill = target.fill;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tfunction createMapper(source) {\n\t\tvar fill = source.fill;\n\t\tvar type = 'dataset';\n\n\t\tif (fill === false) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif (!isFinite(fill)) {\n\t\t\ttype = 'boundary';\n\t\t}\n\n\t\treturn mappers[type](source);\n\t}\n\n\tfunction isDrawable(point) {\n\t\treturn point && !point.skip;\n\t}\n\n\tfunction drawArea(ctx, curve0, curve1, len0, len1) {\n\t\tvar i;\n\n\t\tif (!len0 || !len1) {\n\t\t\treturn;\n\t\t}\n\n\t\t// building first area curve (normal)\n\t\tctx.moveTo(curve0[0].x, curve0[0].y);\n\t\tfor (i=1; i<len0; ++i) {\n\t\t\thelpers.canvas.lineTo(ctx, curve0[i-1], curve0[i]);\n\t\t}\n\n\t\t// joining the two area curves\n\t\tctx.lineTo(curve1[len1-1].x, curve1[len1-1].y);\n\n\t\t// building opposite area curve (reverse)\n\t\tfor (i=len1-1; i>0; --i) {\n\t\t\thelpers.canvas.lineTo(ctx, curve1[i], curve1[i-1], true);\n\t\t}\n\t}\n\n\tfunction doFill(ctx, points, mapper, view, color, loop) {\n\t\tvar count = points.length;\n\t\tvar span = view.spanGaps;\n\t\tvar curve0 = [];\n\t\tvar curve1 = [];\n\t\tvar len0 = 0;\n\t\tvar len1 = 0;\n\t\tvar i, ilen, index, p0, p1, d0, d1;\n\n\t\tctx.beginPath();\n\n\t\tfor (i = 0, ilen = (count + !!loop); i < ilen; ++i) {\n\t\t\tindex = i%count;\n\t\t\tp0 = points[index]._view;\n\t\t\tp1 = mapper(p0, index, view);\n\t\t\td0 = isDrawable(p0);\n\t\t\td1 = isDrawable(p1);\n\n\t\t\tif (d0 && d1) {\n\t\t\t\tlen0 = curve0.push(p0);\n\t\t\t\tlen1 = curve1.push(p1);\n\t\t\t} else if (len0 && len1) {\n\t\t\t\tif (!span) {\n\t\t\t\t\tdrawArea(ctx, curve0, curve1, len0, len1);\n\t\t\t\t\tlen0 = len1 = 0;\n\t\t\t\t\tcurve0 = [];\n\t\t\t\t\tcurve1 = [];\n\t\t\t\t} else {\n\t\t\t\t\tif (d0) {\n\t\t\t\t\t\tcurve0.push(p0);\n\t\t\t\t\t}\n\t\t\t\t\tif (d1) {\n\t\t\t\t\t\tcurve1.push(p1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdrawArea(ctx, curve0, curve1, len0, len1);\n\n\t\tctx.closePath();\n\t\tctx.fillStyle = color;\n\t\tctx.fill();\n\t}\n\n\treturn {\n\t\tid: 'filler',\n\n\t\tafterDatasetsUpdate: function(chart, options) {\n\t\t\tvar count = (chart.data.datasets || []).length;\n\t\t\tvar propagate = options.propagate;\n\t\t\tvar sources = [];\n\t\t\tvar meta, i, el, source;\n\n\t\t\tfor (i = 0; i < count; ++i) {\n\t\t\t\tmeta = chart.getDatasetMeta(i);\n\t\t\t\tel = meta.dataset;\n\t\t\t\tsource = null;\n\n\t\t\t\tif (el && el._model && el instanceof Chart.elements.Line) {\n\t\t\t\t\tsource = {\n\t\t\t\t\t\tvisible: chart.isDatasetVisible(i),\n\t\t\t\t\t\tfill: decodeFill(el, i, count),\n\t\t\t\t\t\tchart: chart,\n\t\t\t\t\t\tel: el\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tmeta.$filler = source;\n\t\t\t\tsources.push(source);\n\t\t\t}\n\n\t\t\tfor (i=0; i<count; ++i) {\n\t\t\t\tsource = sources[i];\n\t\t\t\tif (!source) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tsource.fill = resolveTarget(sources, i, propagate);\n\t\t\t\tsource.boundary = computeBoundary(source);\n\t\t\t\tsource.mapper = createMapper(source);\n\t\t\t}\n\t\t},\n\n\t\tbeforeDatasetDraw: function(chart, args) {\n\t\t\tvar meta = args.meta.$filler;\n\t\t\tif (!meta) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar el = meta.el;\n\t\t\tvar view = el._view;\n\t\t\tvar points = el._children || [];\n\t\t\tvar mapper = meta.mapper;\n\t\t\tvar color = view.backgroundColor || defaults.global.defaultColor;\n\n\t\t\tif (mapper && color && points.length) {\n\t\t\t\tdoFill(chart.ctx, points, mapper, view, color, el._loop);\n\t\t\t}\n\t\t}\n\t};\n};\n\n},{}],42:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\n\tvar helpers = Chart.helpers;\n\tvar layout = Chart.layoutService;\n\tvar noop = helpers.noop;\n\n\tChart.defaults.global.legend = {\n\t\tdisplay: true,\n\t\tposition: 'top',\n\t\tfullWidth: true,\n\t\treverse: false,\n\t\tweight: 1000,\n\n\t\t// a callback that will handle\n\t\tonClick: function(e, legendItem) {\n\t\t\tvar index = legendItem.datasetIndex;\n\t\t\tvar ci = this.chart;\n\t\t\tvar meta = ci.getDatasetMeta(index);\n\n\t\t\t// See controller.isDatasetVisible comment\n\t\t\tmeta.hidden = meta.hidden === null? !ci.data.datasets[index].hidden : null;\n\n\t\t\t// We hid a dataset ... rerender the chart\n\t\t\tci.update();\n\t\t},\n\n\t\tonHover: null,\n\n\t\tlabels: {\n\t\t\tboxWidth: 40,\n\t\t\tpadding: 10,\n\t\t\t// Generates labels shown in the legend\n\t\t\t// Valid properties to return:\n\t\t\t// text : text to display\n\t\t\t// fillStyle : fill of coloured box\n\t\t\t// strokeStyle: stroke of coloured box\n\t\t\t// hidden : if this legend item refers to a hidden item\n\t\t\t// lineCap : cap style for line\n\t\t\t// lineDash\n\t\t\t// lineDashOffset :\n\t\t\t// lineJoin :\n\t\t\t// lineWidth :\n\t\t\tgenerateLabels: function(chart) {\n\t\t\t\tvar data = chart.data;\n\t\t\t\treturn helpers.isArray(data.datasets) ? data.datasets.map(function(dataset, i) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttext: dataset.label,\n\t\t\t\t\t\tfillStyle: (!helpers.isArray(dataset.backgroundColor) ? dataset.backgroundColor : dataset.backgroundColor[0]),\n\t\t\t\t\t\thidden: !chart.isDatasetVisible(i),\n\t\t\t\t\t\tlineCap: dataset.borderCapStyle,\n\t\t\t\t\t\tlineDash: dataset.borderDash,\n\t\t\t\t\t\tlineDashOffset: dataset.borderDashOffset,\n\t\t\t\t\t\tlineJoin: dataset.borderJoinStyle,\n\t\t\t\t\t\tlineWidth: dataset.borderWidth,\n\t\t\t\t\t\tstrokeStyle: dataset.borderColor,\n\t\t\t\t\t\tpointStyle: dataset.pointStyle,\n\n\t\t\t\t\t\t// Below is extra data used for toggling the datasets\n\t\t\t\t\t\tdatasetIndex: i\n\t\t\t\t\t};\n\t\t\t\t}, this) : [];\n\t\t\t}\n\t\t}\n\t};\n\n\t/**\n\t * Helper function to get the box width based on the usePointStyle option\n\t * @param labelopts {Object} the label options on the legend\n\t * @param fontSize {Number} the label font size\n\t * @return {Number} width of the color box area\n\t */\n\tfunction getBoxWidth(labelOpts, fontSize) {\n\t\treturn labelOpts.usePointStyle ?\n\t\t\tfontSize * Math.SQRT2 :\n\t\t\tlabelOpts.boxWidth;\n\t}\n\n\tChart.Legend = Chart.Element.extend({\n\n\t\tinitialize: function(config) {\n\t\t\thelpers.extend(this, config);\n\n\t\t\t// Contains hit boxes for each dataset (in dataset order)\n\t\t\tthis.legendHitBoxes = [];\n\n\t\t\t// Are we in doughnut mode which has a different data type\n\t\t\tthis.doughnutMode = false;\n\t\t},\n\n\t\t// These methods are ordered by lifecycle. Utilities then follow.\n\t\t// Any function defined here is inherited by all legend types.\n\t\t// Any function can be extended by the legend type\n\n\t\tbeforeUpdate: noop,\n\t\tupdate: function(maxWidth, maxHeight, margins) {\n\t\t\tvar me = this;\n\n\t\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n\t\t\tme.beforeUpdate();\n\n\t\t\t// Absorb the master measurements\n\t\t\tme.maxWidth = maxWidth;\n\t\t\tme.maxHeight = maxHeight;\n\t\t\tme.margins = margins;\n\n\t\t\t// Dimensions\n\t\t\tme.beforeSetDimensions();\n\t\t\tme.setDimensions();\n\t\t\tme.afterSetDimensions();\n\t\t\t// Labels\n\t\t\tme.beforeBuildLabels();\n\t\t\tme.buildLabels();\n\t\t\tme.afterBuildLabels();\n\n\t\t\t// Fit\n\t\t\tme.beforeFit();\n\t\t\tme.fit();\n\t\t\tme.afterFit();\n\t\t\t//\n\t\t\tme.afterUpdate();\n\n\t\t\treturn me.minSize;\n\t\t},\n\t\tafterUpdate: noop,\n\n\t\t//\n\n\t\tbeforeSetDimensions: noop,\n\t\tsetDimensions: function() {\n\t\t\tvar me = this;\n\t\t\t// Set the unconstrained dimension before label rotation\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\t// Reset position before calculating rotation\n\t\t\t\tme.width = me.maxWidth;\n\t\t\t\tme.left = 0;\n\t\t\t\tme.right = me.width;\n\t\t\t} else {\n\t\t\t\tme.height = me.maxHeight;\n\n\t\t\t\t// Reset position before calculating rotation\n\t\t\t\tme.top = 0;\n\t\t\t\tme.bottom = me.height;\n\t\t\t}\n\n\t\t\t// Reset padding\n\t\t\tme.paddingLeft = 0;\n\t\t\tme.paddingTop = 0;\n\t\t\tme.paddingRight = 0;\n\t\t\tme.paddingBottom = 0;\n\n\t\t\t// Reset minSize\n\t\t\tme.minSize = {\n\t\t\t\twidth: 0,\n\t\t\t\theight: 0\n\t\t\t};\n\t\t},\n\t\tafterSetDimensions: noop,\n\n\t\t//\n\n\t\tbeforeBuildLabels: noop,\n\t\tbuildLabels: function() {\n\t\t\tvar me = this;\n\t\t\tvar labelOpts = me.options.labels;\n\t\t\tvar legendItems = labelOpts.generateLabels.call(me, me.chart);\n\n\t\t\tif (labelOpts.filter) {\n\t\t\t\tlegendItems = legendItems.filter(function(item) {\n\t\t\t\t\treturn labelOpts.filter(item, me.chart.data);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (me.options.reverse) {\n\t\t\t\tlegendItems.reverse();\n\t\t\t}\n\n\t\t\tme.legendItems = legendItems;\n\t\t},\n\t\tafterBuildLabels: noop,\n\n\t\t//\n\n\t\tbeforeFit: noop,\n\t\tfit: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar labelOpts = opts.labels;\n\t\t\tvar display = opts.display;\n\n\t\t\tvar ctx = me.ctx;\n\n\t\t\tvar globalDefault = Chart.defaults.global,\n\t\t\t\titemOrDefault = helpers.getValueOrDefault,\n\t\t\t\tfontSize = itemOrDefault(labelOpts.fontSize, globalDefault.defaultFontSize),\n\t\t\t\tfontStyle = itemOrDefault(labelOpts.fontStyle, globalDefault.defaultFontStyle),\n\t\t\t\tfontFamily = itemOrDefault(labelOpts.fontFamily, globalDefault.defaultFontFamily),\n\t\t\t\tlabelFont = helpers.fontString(fontSize, fontStyle, fontFamily);\n\n\t\t\t// Reset hit boxes\n\t\t\tvar hitboxes = me.legendHitBoxes = [];\n\n\t\t\tvar minSize = me.minSize;\n\t\t\tvar isHorizontal = me.isHorizontal();\n\n\t\t\tif (isHorizontal) {\n\t\t\t\tminSize.width = me.maxWidth; // fill all the width\n\t\t\t\tminSize.height = display ? 10 : 0;\n\t\t\t} else {\n\t\t\t\tminSize.width = display ? 10 : 0;\n\t\t\t\tminSize.height = me.maxHeight; // fill all the height\n\t\t\t}\n\n\t\t\t// Increase sizes here\n\t\t\tif (display) {\n\t\t\t\tctx.font = labelFont;\n\n\t\t\t\tif (isHorizontal) {\n\t\t\t\t\t// Labels\n\n\t\t\t\t\t// Width of each line of legend boxes. Labels wrap onto multiple lines when there are too many to fit on one\n\t\t\t\t\tvar lineWidths = me.lineWidths = [0];\n\t\t\t\t\tvar totalHeight = me.legendItems.length ? fontSize + (labelOpts.padding) : 0;\n\n\t\t\t\t\tctx.textAlign = 'left';\n\t\t\t\t\tctx.textBaseline = 'top';\n\n\t\t\t\t\thelpers.each(me.legendItems, function(legendItem, i) {\n\t\t\t\t\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\n\t\t\t\t\t\tvar width = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n\n\t\t\t\t\t\tif (lineWidths[lineWidths.length - 1] + width + labelOpts.padding >= me.width) {\n\t\t\t\t\t\t\ttotalHeight += fontSize + (labelOpts.padding);\n\t\t\t\t\t\t\tlineWidths[lineWidths.length] = me.left;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Store the hitbox width and height here. Final position will be updated in `draw`\n\t\t\t\t\t\thitboxes[i] = {\n\t\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\t\twidth: width,\n\t\t\t\t\t\t\theight: fontSize\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tlineWidths[lineWidths.length - 1] += width + labelOpts.padding;\n\t\t\t\t\t});\n\n\t\t\t\t\tminSize.height += totalHeight;\n\n\t\t\t\t} else {\n\t\t\t\t\tvar vPadding = labelOpts.padding;\n\t\t\t\t\tvar columnWidths = me.columnWidths = [];\n\t\t\t\t\tvar totalWidth = labelOpts.padding;\n\t\t\t\t\tvar currentColWidth = 0;\n\t\t\t\t\tvar currentColHeight = 0;\n\t\t\t\t\tvar itemHeight = fontSize + vPadding;\n\n\t\t\t\t\thelpers.each(me.legendItems, function(legendItem, i) {\n\t\t\t\t\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\n\t\t\t\t\t\tvar itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n\n\t\t\t\t\t\t// If too tall, go to new column\n\t\t\t\t\t\tif (currentColHeight + itemHeight > minSize.height) {\n\t\t\t\t\t\t\ttotalWidth += currentColWidth + labelOpts.padding;\n\t\t\t\t\t\t\tcolumnWidths.push(currentColWidth); // previous column width\n\n\t\t\t\t\t\t\tcurrentColWidth = 0;\n\t\t\t\t\t\t\tcurrentColHeight = 0;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Get max width\n\t\t\t\t\t\tcurrentColWidth = Math.max(currentColWidth, itemWidth);\n\t\t\t\t\t\tcurrentColHeight += itemHeight;\n\n\t\t\t\t\t\t// Store the hitbox width and height here. Final position will be updated in `draw`\n\t\t\t\t\t\thitboxes[i] = {\n\t\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\t\twidth: itemWidth,\n\t\t\t\t\t\t\theight: fontSize\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\n\t\t\t\t\ttotalWidth += currentColWidth;\n\t\t\t\t\tcolumnWidths.push(currentColWidth);\n\t\t\t\t\tminSize.width += totalWidth;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tme.width = minSize.width;\n\t\t\tme.height = minSize.height;\n\t\t},\n\t\tafterFit: noop,\n\n\t\t// Shared Methods\n\t\tisHorizontal: function() {\n\t\t\treturn this.options.position === 'top' || this.options.position === 'bottom';\n\t\t},\n\n\t\t// Actually draw the legend on the canvas\n\t\tdraw: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar labelOpts = opts.labels;\n\t\t\tvar globalDefault = Chart.defaults.global,\n\t\t\t\tlineDefault = globalDefault.elements.line,\n\t\t\t\tlegendWidth = me.width,\n\t\t\t\tlineWidths = me.lineWidths;\n\n\t\t\tif (opts.display) {\n\t\t\t\tvar ctx = me.ctx,\n\t\t\t\t\tcursor,\n\t\t\t\t\titemOrDefault = helpers.getValueOrDefault,\n\t\t\t\t\tfontColor = itemOrDefault(labelOpts.fontColor, globalDefault.defaultFontColor),\n\t\t\t\t\tfontSize = itemOrDefault(labelOpts.fontSize, globalDefault.defaultFontSize),\n\t\t\t\t\tfontStyle = itemOrDefault(labelOpts.fontStyle, globalDefault.defaultFontStyle),\n\t\t\t\t\tfontFamily = itemOrDefault(labelOpts.fontFamily, globalDefault.defaultFontFamily),\n\t\t\t\t\tlabelFont = helpers.fontString(fontSize, fontStyle, fontFamily);\n\n\t\t\t\t// Canvas setup\n\t\t\t\tctx.textAlign = 'left';\n\t\t\t\tctx.textBaseline = 'top';\n\t\t\t\tctx.lineWidth = 0.5;\n\t\t\t\tctx.strokeStyle = fontColor; // for strikethrough effect\n\t\t\t\tctx.fillStyle = fontColor; // render in correct colour\n\t\t\t\tctx.font = labelFont;\n\n\t\t\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize),\n\t\t\t\t\thitboxes = me.legendHitBoxes;\n\n\t\t\t\t// current position\n\t\t\t\tvar drawLegendBox = function(x, y, legendItem) {\n\t\t\t\t\tif (isNaN(boxWidth) || boxWidth <= 0) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Set the ctx for the box\n\t\t\t\t\tctx.save();\n\n\t\t\t\t\tctx.fillStyle = itemOrDefault(legendItem.fillStyle, globalDefault.defaultColor);\n\t\t\t\t\tctx.lineCap = itemOrDefault(legendItem.lineCap, lineDefault.borderCapStyle);\n\t\t\t\t\tctx.lineDashOffset = itemOrDefault(legendItem.lineDashOffset, lineDefault.borderDashOffset);\n\t\t\t\t\tctx.lineJoin = itemOrDefault(legendItem.lineJoin, lineDefault.borderJoinStyle);\n\t\t\t\t\tctx.lineWidth = itemOrDefault(legendItem.lineWidth, lineDefault.borderWidth);\n\t\t\t\t\tctx.strokeStyle = itemOrDefault(legendItem.strokeStyle, globalDefault.defaultColor);\n\t\t\t\t\tvar isLineWidthZero = (itemOrDefault(legendItem.lineWidth, lineDefault.borderWidth) === 0);\n\n\t\t\t\t\tif (ctx.setLineDash) {\n\t\t\t\t\t\t// IE 9 and 10 do not support line dash\n\t\t\t\t\t\tctx.setLineDash(itemOrDefault(legendItem.lineDash, lineDefault.borderDash));\n\t\t\t\t\t}\n\n\t\t\t\t\tif (opts.labels && opts.labels.usePointStyle) {\n\t\t\t\t\t\t// Recalculate x and y for drawPoint() because its expecting\n\t\t\t\t\t\t// x and y to be center of figure (instead of top left)\n\t\t\t\t\t\tvar radius = fontSize * Math.SQRT2 / 2;\n\t\t\t\t\t\tvar offSet = radius / Math.SQRT2;\n\t\t\t\t\t\tvar centerX = x + offSet;\n\t\t\t\t\t\tvar centerY = y + offSet;\n\n\t\t\t\t\t\t// Draw pointStyle as legend symbol\n\t\t\t\t\t\tChart.canvasHelpers.drawPoint(ctx, legendItem.pointStyle, radius, centerX, centerY);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Draw box as legend symbol\n\t\t\t\t\t\tif (!isLineWidthZero) {\n\t\t\t\t\t\t\tctx.strokeRect(x, y, boxWidth, fontSize);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tctx.fillRect(x, y, boxWidth, fontSize);\n\t\t\t\t\t}\n\n\t\t\t\t\tctx.restore();\n\t\t\t\t};\n\t\t\t\tvar fillText = function(x, y, legendItem, textWidth) {\n\t\t\t\t\tctx.fillText(legendItem.text, boxWidth + (fontSize / 2) + x, y);\n\n\t\t\t\t\tif (legendItem.hidden) {\n\t\t\t\t\t\t// Strikethrough the text if hidden\n\t\t\t\t\t\tctx.beginPath();\n\t\t\t\t\t\tctx.lineWidth = 2;\n\t\t\t\t\t\tctx.moveTo(boxWidth + (fontSize / 2) + x, y + (fontSize / 2));\n\t\t\t\t\t\tctx.lineTo(boxWidth + (fontSize / 2) + x + textWidth, y + (fontSize / 2));\n\t\t\t\t\t\tctx.stroke();\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\t// Horizontal\n\t\t\t\tvar isHorizontal = me.isHorizontal();\n\t\t\t\tif (isHorizontal) {\n\t\t\t\t\tcursor = {\n\t\t\t\t\t\tx: me.left + ((legendWidth - lineWidths[0]) / 2),\n\t\t\t\t\t\ty: me.top + labelOpts.padding,\n\t\t\t\t\t\tline: 0\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\tcursor = {\n\t\t\t\t\t\tx: me.left + labelOpts.padding,\n\t\t\t\t\t\ty: me.top + labelOpts.padding,\n\t\t\t\t\t\tline: 0\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tvar itemHeight = fontSize + labelOpts.padding;\n\t\t\t\thelpers.each(me.legendItems, function(legendItem, i) {\n\t\t\t\t\tvar textWidth = ctx.measureText(legendItem.text).width,\n\t\t\t\t\t\twidth = boxWidth + (fontSize / 2) + textWidth,\n\t\t\t\t\t\tx = cursor.x,\n\t\t\t\t\t\ty = cursor.y;\n\n\t\t\t\t\tif (isHorizontal) {\n\t\t\t\t\t\tif (x + width >= legendWidth) {\n\t\t\t\t\t\t\ty = cursor.y += itemHeight;\n\t\t\t\t\t\t\tcursor.line++;\n\t\t\t\t\t\t\tx = cursor.x = me.left + ((legendWidth - lineWidths[cursor.line]) / 2);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (y + itemHeight > me.bottom) {\n\t\t\t\t\t\tx = cursor.x = x + me.columnWidths[cursor.line] + labelOpts.padding;\n\t\t\t\t\t\ty = cursor.y = me.top + labelOpts.padding;\n\t\t\t\t\t\tcursor.line++;\n\t\t\t\t\t}\n\n\t\t\t\t\tdrawLegendBox(x, y, legendItem);\n\n\t\t\t\t\thitboxes[i].left = x;\n\t\t\t\t\thitboxes[i].top = y;\n\n\t\t\t\t\t// Fill the actual label\n\t\t\t\t\tfillText(x, y, legendItem, textWidth);\n\n\t\t\t\t\tif (isHorizontal) {\n\t\t\t\t\t\tcursor.x += width + (labelOpts.padding);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcursor.y += itemHeight;\n\t\t\t\t\t}\n\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Handle an event\n\t\t * @private\n\t\t * @param {IEvent} event - The event to handle\n\t\t * @return {Boolean} true if a change occured\n\t\t */\n\t\thandleEvent: function(e) {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar type = e.type === 'mouseup' ? 'click' : e.type;\n\t\t\tvar changed = false;\n\n\t\t\tif (type === 'mousemove') {\n\t\t\t\tif (!opts.onHover) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else if (type === 'click') {\n\t\t\t\tif (!opts.onClick) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Chart event already has relative position in it\n\t\t\tvar x = e.x,\n\t\t\t\ty = e.y;\n\n\t\t\tif (x >= me.left && x <= me.right && y >= me.top && y <= me.bottom) {\n\t\t\t\t// See if we are touching one of the dataset boxes\n\t\t\t\tvar lh = me.legendHitBoxes;\n\t\t\t\tfor (var i = 0; i < lh.length; ++i) {\n\t\t\t\t\tvar hitBox = lh[i];\n\n\t\t\t\t\tif (x >= hitBox.left && x <= hitBox.left + hitBox.width && y >= hitBox.top && y <= hitBox.top + hitBox.height) {\n\t\t\t\t\t\t// Touching an element\n\t\t\t\t\t\tif (type === 'click') {\n\t\t\t\t\t\t\t// use e.native for backwards compatibility\n\t\t\t\t\t\t\topts.onClick.call(me, e.native, me.legendItems[i]);\n\t\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t} else if (type === 'mousemove') {\n\t\t\t\t\t\t\t// use e.native for backwards compatibility\n\t\t\t\t\t\t\topts.onHover.call(me, e.native, me.legendItems[i]);\n\t\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn changed;\n\t\t}\n\t});\n\n\tfunction createNewLegendAndAttach(chart, legendOpts) {\n\t\tvar legend = new Chart.Legend({\n\t\t\tctx: chart.ctx,\n\t\t\toptions: legendOpts,\n\t\t\tchart: chart\n\t\t});\n\n\t\tlayout.configure(chart, legend, legendOpts);\n\t\tlayout.addBox(chart, legend);\n\t\tchart.legend = legend;\n\t}\n\n\treturn {\n\t\tid: 'legend',\n\n\t\tbeforeInit: function(chart) {\n\t\t\tvar legendOpts = chart.options.legend;\n\n\t\t\tif (legendOpts) {\n\t\t\t\tcreateNewLegendAndAttach(chart, legendOpts);\n\t\t\t}\n\t\t},\n\n\t\tbeforeUpdate: function(chart) {\n\t\t\tvar legendOpts = chart.options.legend;\n\t\t\tvar legend = chart.legend;\n\n\t\t\tif (legendOpts) {\n\t\t\t\tlegendOpts = helpers.configMerge(Chart.defaults.global.legend, legendOpts);\n\n\t\t\t\tif (legend) {\n\t\t\t\t\tlayout.configure(chart, legend, legendOpts);\n\t\t\t\t\tlegend.options = legendOpts;\n\t\t\t\t} else {\n\t\t\t\t\tcreateNewLegendAndAttach(chart, legendOpts);\n\t\t\t\t}\n\t\t\t} else if (legend) {\n\t\t\t\tlayout.removeBox(chart, legend);\n\t\t\t\tdelete chart.legend;\n\t\t\t}\n\t\t},\n\n\t\tafterEvent: function(chart, e) {\n\t\t\tvar legend = chart.legend;\n\t\t\tif (legend) {\n\t\t\t\tlegend.handleEvent(e);\n\t\t\t}\n\t\t}\n\t};\n};\n\n},{}],43:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\n\tvar helpers = Chart.helpers;\n\tvar layout = Chart.layoutService;\n\tvar noop = helpers.noop;\n\n\tChart.defaults.global.title = {\n\t\tdisplay: false,\n\t\tposition: 'top',\n\t\tfullWidth: true,\n\t\tweight: 2000,        // by default greater than legend (1000) to be above\n\t\tfontStyle: 'bold',\n\t\tpadding: 10,\n\n\t\t// actual title\n\t\ttext: ''\n\t};\n\n\tChart.Title = Chart.Element.extend({\n\t\tinitialize: function(config) {\n\t\t\tvar me = this;\n\t\t\thelpers.extend(me, config);\n\n\t\t\t// Contains hit boxes for each dataset (in dataset order)\n\t\t\tme.legendHitBoxes = [];\n\t\t},\n\n\t\t// These methods are ordered by lifecycle. Utilities then follow.\n\n\t\tbeforeUpdate: noop,\n\t\tupdate: function(maxWidth, maxHeight, margins) {\n\t\t\tvar me = this;\n\n\t\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n\t\t\tme.beforeUpdate();\n\n\t\t\t// Absorb the master measurements\n\t\t\tme.maxWidth = maxWidth;\n\t\t\tme.maxHeight = maxHeight;\n\t\t\tme.margins = margins;\n\n\t\t\t// Dimensions\n\t\t\tme.beforeSetDimensions();\n\t\t\tme.setDimensions();\n\t\t\tme.afterSetDimensions();\n\t\t\t// Labels\n\t\t\tme.beforeBuildLabels();\n\t\t\tme.buildLabels();\n\t\t\tme.afterBuildLabels();\n\n\t\t\t// Fit\n\t\t\tme.beforeFit();\n\t\t\tme.fit();\n\t\t\tme.afterFit();\n\t\t\t//\n\t\t\tme.afterUpdate();\n\n\t\t\treturn me.minSize;\n\n\t\t},\n\t\tafterUpdate: noop,\n\n\t\t//\n\n\t\tbeforeSetDimensions: noop,\n\t\tsetDimensions: function() {\n\t\t\tvar me = this;\n\t\t\t// Set the unconstrained dimension before label rotation\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\t// Reset position before calculating rotation\n\t\t\t\tme.width = me.maxWidth;\n\t\t\t\tme.left = 0;\n\t\t\t\tme.right = me.width;\n\t\t\t} else {\n\t\t\t\tme.height = me.maxHeight;\n\n\t\t\t\t// Reset position before calculating rotation\n\t\t\t\tme.top = 0;\n\t\t\t\tme.bottom = me.height;\n\t\t\t}\n\n\t\t\t// Reset padding\n\t\t\tme.paddingLeft = 0;\n\t\t\tme.paddingTop = 0;\n\t\t\tme.paddingRight = 0;\n\t\t\tme.paddingBottom = 0;\n\n\t\t\t// Reset minSize\n\t\t\tme.minSize = {\n\t\t\t\twidth: 0,\n\t\t\t\theight: 0\n\t\t\t};\n\t\t},\n\t\tafterSetDimensions: noop,\n\n\t\t//\n\n\t\tbeforeBuildLabels: noop,\n\t\tbuildLabels: noop,\n\t\tafterBuildLabels: noop,\n\n\t\t//\n\n\t\tbeforeFit: noop,\n\t\tfit: function() {\n\t\t\tvar me = this,\n\t\t\t\tvalueOrDefault = helpers.getValueOrDefault,\n\t\t\t\topts = me.options,\n\t\t\t\tglobalDefaults = Chart.defaults.global,\n\t\t\t\tdisplay = opts.display,\n\t\t\t\tfontSize = valueOrDefault(opts.fontSize, globalDefaults.defaultFontSize),\n\t\t\t\tminSize = me.minSize;\n\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\tminSize.width = me.maxWidth; // fill all the width\n\t\t\t\tminSize.height = display ? fontSize + (opts.padding * 2) : 0;\n\t\t\t} else {\n\t\t\t\tminSize.width = display ? fontSize + (opts.padding * 2) : 0;\n\t\t\t\tminSize.height = me.maxHeight; // fill all the height\n\t\t\t}\n\n\t\t\tme.width = minSize.width;\n\t\t\tme.height = minSize.height;\n\n\t\t},\n\t\tafterFit: noop,\n\n\t\t// Shared Methods\n\t\tisHorizontal: function() {\n\t\t\tvar pos = this.options.position;\n\t\t\treturn pos === 'top' || pos === 'bottom';\n\t\t},\n\n\t\t// Actually draw the title block on the canvas\n\t\tdraw: function() {\n\t\t\tvar me = this,\n\t\t\t\tctx = me.ctx,\n\t\t\t\tvalueOrDefault = helpers.getValueOrDefault,\n\t\t\t\topts = me.options,\n\t\t\t\tglobalDefaults = Chart.defaults.global;\n\n\t\t\tif (opts.display) {\n\t\t\t\tvar fontSize = valueOrDefault(opts.fontSize, globalDefaults.defaultFontSize),\n\t\t\t\t\tfontStyle = valueOrDefault(opts.fontStyle, globalDefaults.defaultFontStyle),\n\t\t\t\t\tfontFamily = valueOrDefault(opts.fontFamily, globalDefaults.defaultFontFamily),\n\t\t\t\t\ttitleFont = helpers.fontString(fontSize, fontStyle, fontFamily),\n\t\t\t\t\trotation = 0,\n\t\t\t\t\ttitleX,\n\t\t\t\t\ttitleY,\n\t\t\t\t\ttop = me.top,\n\t\t\t\t\tleft = me.left,\n\t\t\t\t\tbottom = me.bottom,\n\t\t\t\t\tright = me.right,\n\t\t\t\t\tmaxWidth;\n\n\t\t\t\tctx.fillStyle = valueOrDefault(opts.fontColor, globalDefaults.defaultFontColor); // render in correct colour\n\t\t\t\tctx.font = titleFont;\n\n\t\t\t\t// Horizontal\n\t\t\t\tif (me.isHorizontal()) {\n\t\t\t\t\ttitleX = left + ((right - left) / 2); // midpoint of the width\n\t\t\t\t\ttitleY = top + ((bottom - top) / 2); // midpoint of the height\n\t\t\t\t\tmaxWidth = right - left;\n\t\t\t\t} else {\n\t\t\t\t\ttitleX = opts.position === 'left' ? left + (fontSize / 2) : right - (fontSize / 2);\n\t\t\t\t\ttitleY = top + ((bottom - top) / 2);\n\t\t\t\t\tmaxWidth = bottom - top;\n\t\t\t\t\trotation = Math.PI * (opts.position === 'left' ? -0.5 : 0.5);\n\t\t\t\t}\n\n\t\t\t\tctx.save();\n\t\t\t\tctx.translate(titleX, titleY);\n\t\t\t\tctx.rotate(rotation);\n\t\t\t\tctx.textAlign = 'center';\n\t\t\t\tctx.textBaseline = 'middle';\n\t\t\t\tctx.fillText(opts.text, 0, 0, maxWidth);\n\t\t\t\tctx.restore();\n\t\t\t}\n\t\t}\n\t});\n\n\tfunction createNewTitleBlockAndAttach(chart, titleOpts) {\n\t\tvar title = new Chart.Title({\n\t\t\tctx: chart.ctx,\n\t\t\toptions: titleOpts,\n\t\t\tchart: chart\n\t\t});\n\n\t\tlayout.configure(chart, title, titleOpts);\n\t\tlayout.addBox(chart, title);\n\t\tchart.titleBlock = title;\n\t}\n\n\treturn {\n\t\tid: 'title',\n\n\t\tbeforeInit: function(chart) {\n\t\t\tvar titleOpts = chart.options.title;\n\n\t\t\tif (titleOpts) {\n\t\t\t\tcreateNewTitleBlockAndAttach(chart, titleOpts);\n\t\t\t}\n\t\t},\n\n\t\tbeforeUpdate: function(chart) {\n\t\t\tvar titleOpts = chart.options.title;\n\t\t\tvar titleBlock = chart.titleBlock;\n\n\t\t\tif (titleOpts) {\n\t\t\t\ttitleOpts = helpers.configMerge(Chart.defaults.global.title, titleOpts);\n\n\t\t\t\tif (titleBlock) {\n\t\t\t\t\tlayout.configure(chart, titleBlock, titleOpts);\n\t\t\t\t\ttitleBlock.options = titleOpts;\n\t\t\t\t} else {\n\t\t\t\t\tcreateNewTitleBlockAndAttach(chart, titleOpts);\n\t\t\t\t}\n\t\t\t} else if (titleBlock) {\n\t\t\t\tChart.layoutService.removeBox(chart, titleBlock);\n\t\t\t\tdelete chart.titleBlock;\n\t\t\t}\n\t\t}\n\t};\n};\n\n},{}],44:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\n\tvar helpers = Chart.helpers;\n\t// Default config for a category scale\n\tvar defaultConfig = {\n\t\tposition: 'bottom'\n\t};\n\n\tvar DatasetScale = Chart.Scale.extend({\n\t\t/**\n\t\t* Internal function to get the correct labels. If data.xLabels or data.yLabels are defined, use those\n\t\t* else fall back to data.labels\n\t\t* @private\n\t\t*/\n\t\tgetLabels: function() {\n\t\t\tvar data = this.chart.data;\n\t\t\treturn (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels;\n\t\t},\n\n\t\tdetermineDataLimits: function() {\n\t\t\tvar me = this;\n\t\t\tvar labels = me.getLabels();\n\t\t\tme.minIndex = 0;\n\t\t\tme.maxIndex = labels.length - 1;\n\t\t\tvar findIndex;\n\n\t\t\tif (me.options.ticks.min !== undefined) {\n\t\t\t\t// user specified min value\n\t\t\t\tfindIndex = helpers.indexOf(labels, me.options.ticks.min);\n\t\t\t\tme.minIndex = findIndex !== -1 ? findIndex : me.minIndex;\n\t\t\t}\n\n\t\t\tif (me.options.ticks.max !== undefined) {\n\t\t\t\t// user specified max value\n\t\t\t\tfindIndex = helpers.indexOf(labels, me.options.ticks.max);\n\t\t\t\tme.maxIndex = findIndex !== -1 ? findIndex : me.maxIndex;\n\t\t\t}\n\n\t\t\tme.min = labels[me.minIndex];\n\t\t\tme.max = labels[me.maxIndex];\n\t\t},\n\n\t\tbuildTicks: function() {\n\t\t\tvar me = this;\n\t\t\tvar labels = me.getLabels();\n\t\t\t// If we are viewing some subset of labels, slice the original array\n\t\t\tme.ticks = (me.minIndex === 0 && me.maxIndex === labels.length - 1) ? labels : labels.slice(me.minIndex, me.maxIndex + 1);\n\t\t},\n\n\t\tgetLabelForIndex: function(index, datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tvar data = me.chart.data;\n\t\t\tvar isHorizontal = me.isHorizontal();\n\n\t\t\tif (data.yLabels && !isHorizontal) {\n\t\t\t\treturn me.getRightValue(data.datasets[datasetIndex].data[index]);\n\t\t\t}\n\t\t\treturn me.ticks[index - me.minIndex];\n\t\t},\n\n\t\t// Used to get data value locations.  Value can either be an index or a numerical value\n\t\tgetPixelForValue: function(value, index, datasetIndex, includeOffset) {\n\t\t\tvar me = this;\n\t\t\t// 1 is added because we need the length but we have the indexes\n\t\t\tvar offsetAmt = Math.max((me.maxIndex + 1 - me.minIndex - ((me.options.gridLines.offsetGridLines) ? 0 : 1)), 1);\n\n\t\t\t// If value is a data object, then index is the index in the data array,\n\t\t\t// not the index of the scale. We need to change that.\n\t\t\tvar valueCategory;\n\t\t\tif (value !== undefined && value !== null) {\n\t\t\t\tvalueCategory = me.isHorizontal() ? value.x : value.y;\n\t\t\t}\n\t\t\tif (valueCategory !== undefined || (value !== undefined && isNaN(index))) {\n\t\t\t\tvar labels = me.getLabels();\n\t\t\t\tvalue = valueCategory || value;\n\t\t\t\tvar idx = labels.indexOf(value);\n\t\t\t\tindex = idx !== -1 ? idx : index;\n\t\t\t}\n\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\tvar valueWidth = me.width / offsetAmt;\n\t\t\t\tvar widthOffset = (valueWidth * (index - me.minIndex));\n\n\t\t\t\tif (me.options.gridLines.offsetGridLines && includeOffset || me.maxIndex === me.minIndex && includeOffset) {\n\t\t\t\t\twidthOffset += (valueWidth / 2);\n\t\t\t\t}\n\n\t\t\t\treturn me.left + Math.round(widthOffset);\n\t\t\t}\n\t\t\tvar valueHeight = me.height / offsetAmt;\n\t\t\tvar heightOffset = (valueHeight * (index - me.minIndex));\n\n\t\t\tif (me.options.gridLines.offsetGridLines && includeOffset) {\n\t\t\t\theightOffset += (valueHeight / 2);\n\t\t\t}\n\n\t\t\treturn me.top + Math.round(heightOffset);\n\t\t},\n\t\tgetPixelForTick: function(index, includeOffset) {\n\t\t\treturn this.getPixelForValue(this.ticks[index], index + this.minIndex, null, includeOffset);\n\t\t},\n\t\tgetValueForPixel: function(pixel) {\n\t\t\tvar me = this;\n\t\t\tvar value;\n\t\t\tvar offsetAmt = Math.max((me.ticks.length - ((me.options.gridLines.offsetGridLines) ? 0 : 1)), 1);\n\t\t\tvar horz = me.isHorizontal();\n\t\t\tvar valueDimension = (horz ? me.width : me.height) / offsetAmt;\n\n\t\t\tpixel -= horz ? me.left : me.top;\n\n\t\t\tif (me.options.gridLines.offsetGridLines) {\n\t\t\t\tpixel -= (valueDimension / 2);\n\t\t\t}\n\n\t\t\tif (pixel <= 0) {\n\t\t\t\tvalue = 0;\n\t\t\t} else {\n\t\t\t\tvalue = Math.round(pixel / valueDimension);\n\t\t\t}\n\n\t\t\treturn value;\n\t\t},\n\t\tgetBasePixel: function() {\n\t\t\treturn this.bottom;\n\t\t}\n\t});\n\n\tChart.scaleService.registerScaleType('category', DatasetScale, defaultConfig);\n\n};\n\n},{}],45:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\n\tvar helpers = Chart.helpers;\n\n\tvar defaultConfig = {\n\t\tposition: 'left',\n\t\tticks: {\n\t\t\tcallback: Chart.Ticks.formatters.linear\n\t\t}\n\t};\n\n\tvar LinearScale = Chart.LinearScaleBase.extend({\n\n\t\tdetermineDataLimits: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar chart = me.chart;\n\t\t\tvar data = chart.data;\n\t\t\tvar datasets = data.datasets;\n\t\t\tvar isHorizontal = me.isHorizontal();\n\t\t\tvar DEFAULT_MIN = 0;\n\t\t\tvar DEFAULT_MAX = 1;\n\n\t\t\tfunction IDMatches(meta) {\n\t\t\t\treturn isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id;\n\t\t\t}\n\n\t\t\t// First Calculate the range\n\t\t\tme.min = null;\n\t\t\tme.max = null;\n\n\t\t\tvar hasStacks = opts.stacked;\n\t\t\tif (hasStacks === undefined) {\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tif (hasStacks) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta) &&\n\t\t\t\t\t\tmeta.stack !== undefined) {\n\t\t\t\t\t\thasStacks = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (opts.stacked || hasStacks) {\n\t\t\t\tvar valuesPerStack = {};\n\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\t\tvar key = [\n\t\t\t\t\t\tmeta.type,\n\t\t\t\t\t\t// we have a separate stack for stack=undefined datasets when the opts.stacked is undefined\n\t\t\t\t\t\t((opts.stacked === undefined && meta.stack === undefined) ? datasetIndex : ''),\n\t\t\t\t\t\tmeta.stack\n\t\t\t\t\t].join('.');\n\n\t\t\t\t\tif (valuesPerStack[key] === undefined) {\n\t\t\t\t\t\tvaluesPerStack[key] = {\n\t\t\t\t\t\t\tpositiveValues: [],\n\t\t\t\t\t\t\tnegativeValues: []\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Store these per type\n\t\t\t\t\tvar positiveValues = valuesPerStack[key].positiveValues;\n\t\t\t\t\tvar negativeValues = valuesPerStack[key].negativeValues;\n\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\n\t\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\n\t\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\n\t\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tpositiveValues[index] = positiveValues[index] || 0;\n\t\t\t\t\t\t\tnegativeValues[index] = negativeValues[index] || 0;\n\n\t\t\t\t\t\t\tif (opts.relativePoints) {\n\t\t\t\t\t\t\t\tpositiveValues[index] = 100;\n\t\t\t\t\t\t\t} else if (value < 0) {\n\t\t\t\t\t\t\t\tnegativeValues[index] += value;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tpositiveValues[index] += value;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\thelpers.each(valuesPerStack, function(valuesForType) {\n\t\t\t\t\tvar values = valuesForType.positiveValues.concat(valuesForType.negativeValues);\n\t\t\t\t\tvar minVal = helpers.min(values);\n\t\t\t\t\tvar maxVal = helpers.max(values);\n\t\t\t\t\tme.min = me.min === null ? minVal : Math.min(me.min, minVal);\n\t\t\t\t\tme.max = me.max === null ? maxVal : Math.max(me.max, maxVal);\n\t\t\t\t});\n\n\t\t\t} else {\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\n\t\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\n\t\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\n\t\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (me.min === null) {\n\t\t\t\t\t\t\t\tme.min = value;\n\t\t\t\t\t\t\t} else if (value < me.min) {\n\t\t\t\t\t\t\t\tme.min = value;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (me.max === null) {\n\t\t\t\t\t\t\t\tme.max = value;\n\t\t\t\t\t\t\t} else if (value > me.max) {\n\t\t\t\t\t\t\t\tme.max = value;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tme.min = isFinite(me.min) ? me.min : DEFAULT_MIN;\n\t\t\tme.max = isFinite(me.max) ? me.max : DEFAULT_MAX;\n\n\t\t\t// Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero\n\t\t\tthis.handleTickRangeOptions();\n\t\t},\n\t\tgetTickLimit: function() {\n\t\t\tvar maxTicks;\n\t\t\tvar me = this;\n\t\t\tvar tickOpts = me.options.ticks;\n\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\tmaxTicks = Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(me.width / 50));\n\t\t\t} else {\n\t\t\t\t// The factor of 2 used to scale the font size has been experimentally determined.\n\t\t\t\tvar tickFontSize = helpers.getValueOrDefault(tickOpts.fontSize, Chart.defaults.global.defaultFontSize);\n\t\t\t\tmaxTicks = Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(me.height / (2 * tickFontSize)));\n\t\t\t}\n\n\t\t\treturn maxTicks;\n\t\t},\n\t\t// Called after the ticks are built. We need\n\t\thandleDirectionalChanges: function() {\n\t\t\tif (!this.isHorizontal()) {\n\t\t\t\t// We are in a vertical orientation. The top value is the highest. So reverse the array\n\t\t\t\tthis.ticks.reverse();\n\t\t\t}\n\t\t},\n\t\tgetLabelForIndex: function(index, datasetIndex) {\n\t\t\treturn +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);\n\t\t},\n\t\t// Utils\n\t\tgetPixelForValue: function(value) {\n\t\t\t// This must be called after fit has been run so that\n\t\t\t// this.left, this.top, this.right, and this.bottom have been defined\n\t\t\tvar me = this;\n\t\t\tvar start = me.start;\n\n\t\t\tvar rightValue = +me.getRightValue(value);\n\t\t\tvar pixel;\n\t\t\tvar range = me.end - start;\n\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\tpixel = me.left + (me.width / range * (rightValue - start));\n\t\t\t\treturn Math.round(pixel);\n\t\t\t}\n\n\t\t\tpixel = me.bottom - (me.height / range * (rightValue - start));\n\t\t\treturn Math.round(pixel);\n\t\t},\n\t\tgetValueForPixel: function(pixel) {\n\t\t\tvar me = this;\n\t\t\tvar isHorizontal = me.isHorizontal();\n\t\t\tvar innerDimension = isHorizontal ? me.width : me.height;\n\t\t\tvar offset = (isHorizontal ? pixel - me.left : me.bottom - pixel) / innerDimension;\n\t\t\treturn me.start + ((me.end - me.start) * offset);\n\t\t},\n\t\tgetPixelForTick: function(index) {\n\t\t\treturn this.getPixelForValue(this.ticksAsNumbers[index]);\n\t\t}\n\t});\n\tChart.scaleService.registerScaleType('linear', LinearScale, defaultConfig);\n\n};\n\n},{}],46:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\n\tvar helpers = Chart.helpers,\n\t\tnoop = helpers.noop;\n\n\tChart.LinearScaleBase = Chart.Scale.extend({\n\t\thandleTickRangeOptions: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar tickOpts = opts.ticks;\n\n\t\t\t// If we are forcing it to begin at 0, but 0 will already be rendered on the chart,\n\t\t\t// do nothing since that would make the chart weird. If the user really wants a weird chart\n\t\t\t// axis, they can manually override it\n\t\t\tif (tickOpts.beginAtZero) {\n\t\t\t\tvar minSign = helpers.sign(me.min);\n\t\t\t\tvar maxSign = helpers.sign(me.max);\n\n\t\t\t\tif (minSign < 0 && maxSign < 0) {\n\t\t\t\t\t// move the top up to 0\n\t\t\t\t\tme.max = 0;\n\t\t\t\t} else if (minSign > 0 && maxSign > 0) {\n\t\t\t\t\t// move the bottom down to 0\n\t\t\t\t\tme.min = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (tickOpts.min !== undefined) {\n\t\t\t\tme.min = tickOpts.min;\n\t\t\t} else if (tickOpts.suggestedMin !== undefined) {\n\t\t\t\tif (me.min === null) {\n\t\t\t\t\tme.min = tickOpts.suggestedMin;\n\t\t\t\t} else {\n\t\t\t\t\tme.min = Math.min(me.min, tickOpts.suggestedMin);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (tickOpts.max !== undefined) {\n\t\t\t\tme.max = tickOpts.max;\n\t\t\t} else if (tickOpts.suggestedMax !== undefined) {\n\t\t\t\tif (me.max === null) {\n\t\t\t\t\tme.max = tickOpts.suggestedMax;\n\t\t\t\t} else {\n\t\t\t\t\tme.max = Math.max(me.max, tickOpts.suggestedMax);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (me.min === me.max) {\n\t\t\t\tme.max++;\n\n\t\t\t\tif (!tickOpts.beginAtZero) {\n\t\t\t\t\tme.min--;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tgetTickLimit: noop,\n\t\thandleDirectionalChanges: noop,\n\n\t\tbuildTicks: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar tickOpts = opts.ticks;\n\n\t\t\t// Figure out what the max number of ticks we can support it is based on the size of\n\t\t\t// the axis area. For now, we say that the minimum tick spacing in pixels must be 50\n\t\t\t// We also limit the maximum number of ticks to 11 which gives a nice 10 squares on\n\t\t\t// the graph. Make sure we always have at least 2 ticks\n\t\t\tvar maxTicks = me.getTickLimit();\n\t\t\tmaxTicks = Math.max(2, maxTicks);\n\n\t\t\tvar numericGeneratorOptions = {\n\t\t\t\tmaxTicks: maxTicks,\n\t\t\t\tmin: tickOpts.min,\n\t\t\t\tmax: tickOpts.max,\n\t\t\t\tstepSize: helpers.getValueOrDefault(tickOpts.fixedStepSize, tickOpts.stepSize)\n\t\t\t};\n\t\t\tvar ticks = me.ticks = Chart.Ticks.generators.linear(numericGeneratorOptions, me);\n\n\t\t\tme.handleDirectionalChanges();\n\n\t\t\t// At this point, we need to update our max and min given the tick values since we have expanded the\n\t\t\t// range of the scale\n\t\t\tme.max = helpers.max(ticks);\n\t\t\tme.min = helpers.min(ticks);\n\n\t\t\tif (tickOpts.reverse) {\n\t\t\t\tticks.reverse();\n\n\t\t\t\tme.start = me.max;\n\t\t\t\tme.end = me.min;\n\t\t\t} else {\n\t\t\t\tme.start = me.min;\n\t\t\t\tme.end = me.max;\n\t\t\t}\n\t\t},\n\t\tconvertTicksToLabels: function() {\n\t\t\tvar me = this;\n\t\t\tme.ticksAsNumbers = me.ticks.slice();\n\t\t\tme.zeroLineIndex = me.ticks.indexOf(0);\n\n\t\t\tChart.Scale.prototype.convertTicksToLabels.call(me);\n\t\t}\n\t});\n};\n\n},{}],47:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\n\tvar helpers = Chart.helpers;\n\n\tvar defaultConfig = {\n\t\tposition: 'left',\n\n\t\t// label settings\n\t\tticks: {\n\t\t\tcallback: Chart.Ticks.formatters.logarithmic\n\t\t}\n\t};\n\n\tvar LogarithmicScale = Chart.Scale.extend({\n\t\tdetermineDataLimits: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar tickOpts = opts.ticks;\n\t\t\tvar chart = me.chart;\n\t\t\tvar data = chart.data;\n\t\t\tvar datasets = data.datasets;\n\t\t\tvar getValueOrDefault = helpers.getValueOrDefault;\n\t\t\tvar isHorizontal = me.isHorizontal();\n\t\t\tfunction IDMatches(meta) {\n\t\t\t\treturn isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id;\n\t\t\t}\n\n\t\t\t// Calculate Range\n\t\t\tme.min = null;\n\t\t\tme.max = null;\n\t\t\tme.minNotZero = null;\n\n\t\t\tvar hasStacks = opts.stacked;\n\t\t\tif (hasStacks === undefined) {\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tif (hasStacks) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta) &&\n\t\t\t\t\t\tmeta.stack !== undefined) {\n\t\t\t\t\t\thasStacks = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (opts.stacked || hasStacks) {\n\t\t\t\tvar valuesPerStack = {};\n\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\t\tvar key = [\n\t\t\t\t\t\tmeta.type,\n\t\t\t\t\t\t// we have a separate stack for stack=undefined datasets when the opts.stacked is undefined\n\t\t\t\t\t\t((opts.stacked === undefined && meta.stack === undefined) ? datasetIndex : ''),\n\t\t\t\t\t\tmeta.stack\n\t\t\t\t\t].join('.');\n\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\n\t\t\t\t\t\tif (valuesPerStack[key] === undefined) {\n\t\t\t\t\t\t\tvaluesPerStack[key] = [];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\n\t\t\t\t\t\t\tvar values = valuesPerStack[key];\n\t\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\n\t\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tvalues[index] = values[index] || 0;\n\n\t\t\t\t\t\t\tif (opts.relativePoints) {\n\t\t\t\t\t\t\t\tvalues[index] = 100;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// Don't need to split positive and negative since the log scale can't handle a 0 crossing\n\t\t\t\t\t\t\t\tvalues[index] += value;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\thelpers.each(valuesPerStack, function(valuesForType) {\n\t\t\t\t\tvar minVal = helpers.min(valuesForType);\n\t\t\t\t\tvar maxVal = helpers.max(valuesForType);\n\t\t\t\t\tme.min = me.min === null ? minVal : Math.min(me.min, minVal);\n\t\t\t\t\tme.max = me.max === null ? maxVal : Math.max(me.max, maxVal);\n\t\t\t\t});\n\n\t\t\t} else {\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\n\t\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\n\t\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\n\t\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (me.min === null) {\n\t\t\t\t\t\t\t\tme.min = value;\n\t\t\t\t\t\t\t} else if (value < me.min) {\n\t\t\t\t\t\t\t\tme.min = value;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (me.max === null) {\n\t\t\t\t\t\t\t\tme.max = value;\n\t\t\t\t\t\t\t} else if (value > me.max) {\n\t\t\t\t\t\t\t\tme.max = value;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (value !== 0 && (me.minNotZero === null || value < me.minNotZero)) {\n\t\t\t\t\t\t\t\tme.minNotZero = value;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tme.min = getValueOrDefault(tickOpts.min, me.min);\n\t\t\tme.max = getValueOrDefault(tickOpts.max, me.max);\n\n\t\t\tif (me.min === me.max) {\n\t\t\t\tif (me.min !== 0 && me.min !== null) {\n\t\t\t\t\tme.min = Math.pow(10, Math.floor(helpers.log10(me.min)) - 1);\n\t\t\t\t\tme.max = Math.pow(10, Math.floor(helpers.log10(me.max)) + 1);\n\t\t\t\t} else {\n\t\t\t\t\tme.min = 1;\n\t\t\t\t\tme.max = 10;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tbuildTicks: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar tickOpts = opts.ticks;\n\n\t\t\tvar generationOptions = {\n\t\t\t\tmin: tickOpts.min,\n\t\t\t\tmax: tickOpts.max\n\t\t\t};\n\t\t\tvar ticks = me.ticks = Chart.Ticks.generators.logarithmic(generationOptions, me);\n\n\t\t\tif (!me.isHorizontal()) {\n\t\t\t\t// We are in a vertical orientation. The top value is the highest. So reverse the array\n\t\t\t\tticks.reverse();\n\t\t\t}\n\n\t\t\t// At this point, we need to update our max and min given the tick values since we have expanded the\n\t\t\t// range of the scale\n\t\t\tme.max = helpers.max(ticks);\n\t\t\tme.min = helpers.min(ticks);\n\n\t\t\tif (tickOpts.reverse) {\n\t\t\t\tticks.reverse();\n\n\t\t\t\tme.start = me.max;\n\t\t\t\tme.end = me.min;\n\t\t\t} else {\n\t\t\t\tme.start = me.min;\n\t\t\t\tme.end = me.max;\n\t\t\t}\n\t\t},\n\t\tconvertTicksToLabels: function() {\n\t\t\tthis.tickValues = this.ticks.slice();\n\n\t\t\tChart.Scale.prototype.convertTicksToLabels.call(this);\n\t\t},\n\t\t// Get the correct tooltip label\n\t\tgetLabelForIndex: function(index, datasetIndex) {\n\t\t\treturn +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);\n\t\t},\n\t\tgetPixelForTick: function(index) {\n\t\t\treturn this.getPixelForValue(this.tickValues[index]);\n\t\t},\n\t\tgetPixelForValue: function(value) {\n\t\t\tvar me = this;\n\t\t\tvar innerDimension;\n\t\t\tvar pixel;\n\n\t\t\tvar start = me.start;\n\t\t\tvar newVal = +me.getRightValue(value);\n\t\t\tvar range;\n\t\t\tvar opts = me.options;\n\t\t\tvar tickOpts = opts.ticks;\n\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\trange = helpers.log10(me.end) - helpers.log10(start); // todo: if start === 0\n\t\t\t\tif (newVal === 0) {\n\t\t\t\t\tpixel = me.left;\n\t\t\t\t} else {\n\t\t\t\t\tinnerDimension = me.width;\n\t\t\t\t\tpixel = me.left + (innerDimension / range * (helpers.log10(newVal) - helpers.log10(start)));\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Bottom - top since pixels increase downward on a screen\n\t\t\t\tinnerDimension = me.height;\n\t\t\t\tif (start === 0 && !tickOpts.reverse) {\n\t\t\t\t\trange = helpers.log10(me.end) - helpers.log10(me.minNotZero);\n\t\t\t\t\tif (newVal === start) {\n\t\t\t\t\t\tpixel = me.bottom;\n\t\t\t\t\t} else if (newVal === me.minNotZero) {\n\t\t\t\t\t\tpixel = me.bottom - innerDimension * 0.02;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpixel = me.bottom - innerDimension * 0.02 - (innerDimension * 0.98/ range * (helpers.log10(newVal)-helpers.log10(me.minNotZero)));\n\t\t\t\t\t}\n\t\t\t\t} else if (me.end === 0 && tickOpts.reverse) {\n\t\t\t\t\trange = helpers.log10(me.start) - helpers.log10(me.minNotZero);\n\t\t\t\t\tif (newVal === me.end) {\n\t\t\t\t\t\tpixel = me.top;\n\t\t\t\t\t} else if (newVal === me.minNotZero) {\n\t\t\t\t\t\tpixel = me.top + innerDimension * 0.02;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpixel = me.top + innerDimension * 0.02 + (innerDimension * 0.98/ range * (helpers.log10(newVal)-helpers.log10(me.minNotZero)));\n\t\t\t\t\t}\n\t\t\t\t} else if (newVal === 0) {\n\t\t\t\t\tpixel = tickOpts.reverse ? me.top : me.bottom;\n\t\t\t\t} else {\n\t\t\t\t\trange = helpers.log10(me.end) - helpers.log10(start);\n\t\t\t\t\tinnerDimension = me.height;\n\t\t\t\t\tpixel = me.bottom - (innerDimension / range * (helpers.log10(newVal) - helpers.log10(start)));\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn pixel;\n\t\t},\n\t\tgetValueForPixel: function(pixel) {\n\t\t\tvar me = this;\n\t\t\tvar range = helpers.log10(me.end) - helpers.log10(me.start);\n\t\t\tvar value, innerDimension;\n\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\tinnerDimension = me.width;\n\t\t\t\tvalue = me.start * Math.pow(10, (pixel - me.left) * range / innerDimension);\n\t\t\t} else {  // todo: if start === 0\n\t\t\t\tinnerDimension = me.height;\n\t\t\t\tvalue = Math.pow(10, (me.bottom - pixel) * range / innerDimension) / me.start;\n\t\t\t}\n\t\t\treturn value;\n\t\t}\n\t});\n\tChart.scaleService.registerScaleType('logarithmic', LogarithmicScale, defaultConfig);\n\n};\n\n},{}],48:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\n\tvar helpers = Chart.helpers;\n\tvar globalDefaults = Chart.defaults.global;\n\n\tvar defaultConfig = {\n\t\tdisplay: true,\n\n\t\t// Boolean - Whether to animate scaling the chart from the centre\n\t\tanimate: true,\n\t\tposition: 'chartArea',\n\n\t\tangleLines: {\n\t\t\tdisplay: true,\n\t\t\tcolor: 'rgba(0, 0, 0, 0.1)',\n\t\t\tlineWidth: 1\n\t\t},\n\n\t\tgridLines: {\n\t\t\tcircular: false\n\t\t},\n\n\t\t// label settings\n\t\tticks: {\n\t\t\t// Boolean - Show a backdrop to the scale label\n\t\t\tshowLabelBackdrop: true,\n\n\t\t\t// String - The colour of the label backdrop\n\t\t\tbackdropColor: 'rgba(255,255,255,0.75)',\n\n\t\t\t// Number - The backdrop padding above & below the label in pixels\n\t\t\tbackdropPaddingY: 2,\n\n\t\t\t// Number - The backdrop padding to the side of the label in pixels\n\t\t\tbackdropPaddingX: 2,\n\n\t\t\tcallback: Chart.Ticks.formatters.linear\n\t\t},\n\n\t\tpointLabels: {\n\t\t\t// Boolean - if true, show point labels\n\t\t\tdisplay: true,\n\n\t\t\t// Number - Point label font size in pixels\n\t\t\tfontSize: 10,\n\n\t\t\t// Function - Used to convert point labels\n\t\t\tcallback: function(label) {\n\t\t\t\treturn label;\n\t\t\t}\n\t\t}\n\t};\n\n\tfunction getValueCount(scale) {\n\t\tvar opts = scale.options;\n\t\treturn opts.angleLines.display || opts.pointLabels.display ? scale.chart.data.labels.length : 0;\n\t}\n\n\tfunction getPointLabelFontOptions(scale) {\n\t\tvar pointLabelOptions = scale.options.pointLabels;\n\t\tvar fontSize = helpers.getValueOrDefault(pointLabelOptions.fontSize, globalDefaults.defaultFontSize);\n\t\tvar fontStyle = helpers.getValueOrDefault(pointLabelOptions.fontStyle, globalDefaults.defaultFontStyle);\n\t\tvar fontFamily = helpers.getValueOrDefault(pointLabelOptions.fontFamily, globalDefaults.defaultFontFamily);\n\t\tvar font = helpers.fontString(fontSize, fontStyle, fontFamily);\n\n\t\treturn {\n\t\t\tsize: fontSize,\n\t\t\tstyle: fontStyle,\n\t\t\tfamily: fontFamily,\n\t\t\tfont: font\n\t\t};\n\t}\n\n\tfunction measureLabelSize(ctx, fontSize, label) {\n\t\tif (helpers.isArray(label)) {\n\t\t\treturn {\n\t\t\t\tw: helpers.longestText(ctx, ctx.font, label),\n\t\t\t\th: (label.length * fontSize) + ((label.length - 1) * 1.5 * fontSize)\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\tw: ctx.measureText(label).width,\n\t\t\th: fontSize\n\t\t};\n\t}\n\n\tfunction determineLimits(angle, pos, size, min, max) {\n\t\tif (angle === min || angle === max) {\n\t\t\treturn {\n\t\t\t\tstart: pos - (size / 2),\n\t\t\t\tend: pos + (size / 2)\n\t\t\t};\n\t\t} else if (angle < min || angle > max) {\n\t\t\treturn {\n\t\t\t\tstart: pos - size - 5,\n\t\t\t\tend: pos\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\tstart: pos,\n\t\t\tend: pos + size + 5\n\t\t};\n\t}\n\n\t/**\n\t * Helper function to fit a radial linear scale with point labels\n\t */\n\tfunction fitWithPointLabels(scale) {\n\t\t/*\n\t\t * Right, this is really confusing and there is a lot of maths going on here\n\t\t * The gist of the problem is here: https://gist.github.com/nnnick/696cc9c55f4b0beb8fe9\n\t\t *\n\t\t * Reaction: https://dl.dropboxusercontent.com/u/34601363/toomuchscience.gif\n\t\t *\n\t\t * Solution:\n\t\t *\n\t\t * We assume the radius of the polygon is half the size of the canvas at first\n\t\t * at each index we check if the text overlaps.\n\t\t *\n\t\t * Where it does, we store that angle and that index.\n\t\t *\n\t\t * After finding the largest index and angle we calculate how much we need to remove\n\t\t * from the shape radius to move the point inwards by that x.\n\t\t *\n\t\t * We average the left and right distances to get the maximum shape radius that can fit in the box\n\t\t * along with labels.\n\t\t *\n\t\t * Once we have that, we can find the centre point for the chart, by taking the x text protrusion\n\t\t * on each side, removing that from the size, halving it and adding the left x protrusion width.\n\t\t *\n\t\t * This will mean we have a shape fitted to the canvas, as large as it can be with the labels\n\t\t * and position it in the most space efficient manner\n\t\t *\n\t\t * https://dl.dropboxusercontent.com/u/34601363/yeahscience.gif\n\t\t */\n\n\t\tvar plFont = getPointLabelFontOptions(scale);\n\n\t\t// Get maximum radius of the polygon. Either half the height (minus the text width) or half the width.\n\t\t// Use this to calculate the offset + change. - Make sure L/R protrusion is at least 0 to stop issues with centre points\n\t\tvar largestPossibleRadius = Math.min(scale.height / 2, scale.width / 2);\n\t\tvar furthestLimits = {\n\t\t\tr: scale.width,\n\t\t\tl: 0,\n\t\t\tt: scale.height,\n\t\t\tb: 0\n\t\t};\n\t\tvar furthestAngles = {};\n\t\tvar i;\n\t\tvar textSize;\n\t\tvar pointPosition;\n\n\t\tscale.ctx.font = plFont.font;\n\t\tscale._pointLabelSizes = [];\n\n\t\tvar valueCount = getValueCount(scale);\n\t\tfor (i = 0; i < valueCount; i++) {\n\t\t\tpointPosition = scale.getPointPosition(i, largestPossibleRadius);\n\t\t\ttextSize = measureLabelSize(scale.ctx, plFont.size, scale.pointLabels[i] || '');\n\t\t\tscale._pointLabelSizes[i] = textSize;\n\n\t\t\t// Add quarter circle to make degree 0 mean top of circle\n\t\t\tvar angleRadians = scale.getIndexAngle(i);\n\t\t\tvar angle = helpers.toDegrees(angleRadians) % 360;\n\t\t\tvar hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n\t\t\tvar vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n\n\t\t\tif (hLimits.start < furthestLimits.l) {\n\t\t\t\tfurthestLimits.l = hLimits.start;\n\t\t\t\tfurthestAngles.l = angleRadians;\n\t\t\t}\n\n\t\t\tif (hLimits.end > furthestLimits.r) {\n\t\t\t\tfurthestLimits.r = hLimits.end;\n\t\t\t\tfurthestAngles.r = angleRadians;\n\t\t\t}\n\n\t\t\tif (vLimits.start < furthestLimits.t) {\n\t\t\t\tfurthestLimits.t = vLimits.start;\n\t\t\t\tfurthestAngles.t = angleRadians;\n\t\t\t}\n\n\t\t\tif (vLimits.end > furthestLimits.b) {\n\t\t\t\tfurthestLimits.b = vLimits.end;\n\t\t\t\tfurthestAngles.b = angleRadians;\n\t\t\t}\n\t\t}\n\n\t\tscale.setReductions(largestPossibleRadius, furthestLimits, furthestAngles);\n\t}\n\n\t/**\n\t * Helper function to fit a radial linear scale with no point labels\n\t */\n\tfunction fit(scale) {\n\t\tvar largestPossibleRadius = Math.min(scale.height / 2, scale.width / 2);\n\t\tscale.drawingArea = Math.round(largestPossibleRadius);\n\t\tscale.setCenterPoint(0, 0, 0, 0);\n\t}\n\n\tfunction getTextAlignForAngle(angle) {\n\t\tif (angle === 0 || angle === 180) {\n\t\t\treturn 'center';\n\t\t} else if (angle < 180) {\n\t\t\treturn 'left';\n\t\t}\n\n\t\treturn 'right';\n\t}\n\n\tfunction fillText(ctx, text, position, fontSize) {\n\t\tif (helpers.isArray(text)) {\n\t\t\tvar y = position.y;\n\t\t\tvar spacing = 1.5 * fontSize;\n\n\t\t\tfor (var i = 0; i < text.length; ++i) {\n\t\t\t\tctx.fillText(text[i], position.x, y);\n\t\t\t\ty+= spacing;\n\t\t\t}\n\t\t} else {\n\t\t\tctx.fillText(text, position.x, position.y);\n\t\t}\n\t}\n\n\tfunction adjustPointPositionForLabelHeight(angle, textSize, position) {\n\t\tif (angle === 90 || angle === 270) {\n\t\t\tposition.y -= (textSize.h / 2);\n\t\t} else if (angle > 270 || angle < 90) {\n\t\t\tposition.y -= textSize.h;\n\t\t}\n\t}\n\n\tfunction drawPointLabels(scale) {\n\t\tvar ctx = scale.ctx;\n\t\tvar getValueOrDefault = helpers.getValueOrDefault;\n\t\tvar opts = scale.options;\n\t\tvar angleLineOpts = opts.angleLines;\n\t\tvar pointLabelOpts = opts.pointLabels;\n\n\t\tctx.lineWidth = angleLineOpts.lineWidth;\n\t\tctx.strokeStyle = angleLineOpts.color;\n\n\t\tvar outerDistance = scale.getDistanceFromCenterForValue(opts.reverse ? scale.min : scale.max);\n\n\t\t// Point Label Font\n\t\tvar plFont = getPointLabelFontOptions(scale);\n\n\t\tctx.textBaseline = 'top';\n\n\t\tfor (var i = getValueCount(scale) - 1; i >= 0; i--) {\n\t\t\tif (angleLineOpts.display) {\n\t\t\t\tvar outerPosition = scale.getPointPosition(i, outerDistance);\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.moveTo(scale.xCenter, scale.yCenter);\n\t\t\t\tctx.lineTo(outerPosition.x, outerPosition.y);\n\t\t\t\tctx.stroke();\n\t\t\t\tctx.closePath();\n\t\t\t}\n\n\t\t\tif (pointLabelOpts.display) {\n\t\t\t\t// Extra 3px out for some label spacing\n\t\t\t\tvar pointLabelPosition = scale.getPointPosition(i, outerDistance + 5);\n\n\t\t\t\t// Keep this in loop since we may support array properties here\n\t\t\t\tvar pointLabelFontColor = getValueOrDefault(pointLabelOpts.fontColor, globalDefaults.defaultFontColor);\n\t\t\t\tctx.font = plFont.font;\n\t\t\t\tctx.fillStyle = pointLabelFontColor;\n\n\t\t\t\tvar angleRadians = scale.getIndexAngle(i);\n\t\t\t\tvar angle = helpers.toDegrees(angleRadians);\n\t\t\t\tctx.textAlign = getTextAlignForAngle(angle);\n\t\t\t\tadjustPointPositionForLabelHeight(angle, scale._pointLabelSizes[i], pointLabelPosition);\n\t\t\t\tfillText(ctx, scale.pointLabels[i] || '', pointLabelPosition, plFont.size);\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction drawRadiusLine(scale, gridLineOpts, radius, index) {\n\t\tvar ctx = scale.ctx;\n\t\tctx.strokeStyle = helpers.getValueAtIndexOrDefault(gridLineOpts.color, index - 1);\n\t\tctx.lineWidth = helpers.getValueAtIndexOrDefault(gridLineOpts.lineWidth, index - 1);\n\n\t\tif (scale.options.gridLines.circular) {\n\t\t\t// Draw circular arcs between the points\n\t\t\tctx.beginPath();\n\t\t\tctx.arc(scale.xCenter, scale.yCenter, radius, 0, Math.PI * 2);\n\t\t\tctx.closePath();\n\t\t\tctx.stroke();\n\t\t} else {\n\t\t\t// Draw straight lines connecting each index\n\t\t\tvar valueCount = getValueCount(scale);\n\n\t\t\tif (valueCount === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tctx.beginPath();\n\t\t\tvar pointPosition = scale.getPointPosition(0, radius);\n\t\t\tctx.moveTo(pointPosition.x, pointPosition.y);\n\n\t\t\tfor (var i = 1; i < valueCount; i++) {\n\t\t\t\tpointPosition = scale.getPointPosition(i, radius);\n\t\t\t\tctx.lineTo(pointPosition.x, pointPosition.y);\n\t\t\t}\n\n\t\t\tctx.closePath();\n\t\t\tctx.stroke();\n\t\t}\n\t}\n\n\tfunction numberOrZero(param) {\n\t\treturn helpers.isNumber(param) ? param : 0;\n\t}\n\n\tvar LinearRadialScale = Chart.LinearScaleBase.extend({\n\t\tsetDimensions: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar tickOpts = opts.ticks;\n\t\t\t// Set the unconstrained dimension before label rotation\n\t\t\tme.width = me.maxWidth;\n\t\t\tme.height = me.maxHeight;\n\t\t\tme.xCenter = Math.round(me.width / 2);\n\t\t\tme.yCenter = Math.round(me.height / 2);\n\n\t\t\tvar minSize = helpers.min([me.height, me.width]);\n\t\t\tvar tickFontSize = helpers.getValueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize);\n\t\t\tme.drawingArea = opts.display ? (minSize / 2) - (tickFontSize / 2 + tickOpts.backdropPaddingY) : (minSize / 2);\n\t\t},\n\t\tdetermineDataLimits: function() {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar min = Number.POSITIVE_INFINITY;\n\t\t\tvar max = Number.NEGATIVE_INFINITY;\n\n\t\t\thelpers.each(chart.data.datasets, function(dataset, datasetIndex) {\n\t\t\t\tif (chart.isDatasetVisible(datasetIndex)) {\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\n\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\n\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\n\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmin = Math.min(value, min);\n\t\t\t\t\t\tmax = Math.max(value, max);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tme.min = (min === Number.POSITIVE_INFINITY ? 0 : min);\n\t\t\tme.max = (max === Number.NEGATIVE_INFINITY ? 0 : max);\n\n\t\t\t// Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero\n\t\t\tme.handleTickRangeOptions();\n\t\t},\n\t\tgetTickLimit: function() {\n\t\t\tvar tickOpts = this.options.ticks;\n\t\t\tvar tickFontSize = helpers.getValueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize);\n\t\t\treturn Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(this.drawingArea / (1.5 * tickFontSize)));\n\t\t},\n\t\tconvertTicksToLabels: function() {\n\t\t\tvar me = this;\n\t\t\tChart.LinearScaleBase.prototype.convertTicksToLabels.call(me);\n\n\t\t\t// Point labels\n\t\t\tme.pointLabels = me.chart.data.labels.map(me.options.pointLabels.callback, me);\n\t\t},\n\t\tgetLabelForIndex: function(index, datasetIndex) {\n\t\t\treturn +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);\n\t\t},\n\t\tfit: function() {\n\t\t\tif (this.options.pointLabels.display) {\n\t\t\t\tfitWithPointLabels(this);\n\t\t\t} else {\n\t\t\t\tfit(this);\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Set radius reductions and determine new radius and center point\n\t\t * @private\n\t\t */\n\t\tsetReductions: function(largestPossibleRadius, furthestLimits, furthestAngles) {\n\t\t\tvar me = this;\n\t\t\tvar radiusReductionLeft = furthestLimits.l / Math.sin(furthestAngles.l);\n\t\t\tvar radiusReductionRight = Math.max(furthestLimits.r - me.width, 0) / Math.sin(furthestAngles.r);\n\t\t\tvar radiusReductionTop = -furthestLimits.t / Math.cos(furthestAngles.t);\n\t\t\tvar radiusReductionBottom = -Math.max(furthestLimits.b - me.height, 0) / Math.cos(furthestAngles.b);\n\n\t\t\tradiusReductionLeft = numberOrZero(radiusReductionLeft);\n\t\t\tradiusReductionRight = numberOrZero(radiusReductionRight);\n\t\t\tradiusReductionTop = numberOrZero(radiusReductionTop);\n\t\t\tradiusReductionBottom = numberOrZero(radiusReductionBottom);\n\n\t\t\tme.drawingArea = Math.min(\n\t\t\t\tMath.round(largestPossibleRadius - (radiusReductionLeft + radiusReductionRight) / 2),\n\t\t\t\tMath.round(largestPossibleRadius - (radiusReductionTop + radiusReductionBottom) / 2));\n\t\t\tme.setCenterPoint(radiusReductionLeft, radiusReductionRight, radiusReductionTop, radiusReductionBottom);\n\t\t},\n\t\tsetCenterPoint: function(leftMovement, rightMovement, topMovement, bottomMovement) {\n\t\t\tvar me = this;\n\t\t\tvar maxRight = me.width - rightMovement - me.drawingArea,\n\t\t\t\tmaxLeft = leftMovement + me.drawingArea,\n\t\t\t\tmaxTop = topMovement + me.drawingArea,\n\t\t\t\tmaxBottom = me.height - bottomMovement - me.drawingArea;\n\n\t\t\tme.xCenter = Math.round(((maxLeft + maxRight) / 2) + me.left);\n\t\t\tme.yCenter = Math.round(((maxTop + maxBottom) / 2) + me.top);\n\t\t},\n\n\t\tgetIndexAngle: function(index) {\n\t\t\tvar angleMultiplier = (Math.PI * 2) / getValueCount(this);\n\t\t\tvar startAngle = this.chart.options && this.chart.options.startAngle ?\n\t\t\t\tthis.chart.options.startAngle :\n\t\t\t\t0;\n\n\t\t\tvar startAngleRadians = startAngle * Math.PI * 2 / 360;\n\n\t\t\t// Start from the top instead of right, so remove a quarter of the circle\n\t\t\treturn index * angleMultiplier + startAngleRadians;\n\t\t},\n\t\tgetDistanceFromCenterForValue: function(value) {\n\t\t\tvar me = this;\n\n\t\t\tif (value === null) {\n\t\t\t\treturn 0; // null always in center\n\t\t\t}\n\n\t\t\t// Take into account half font size + the yPadding of the top value\n\t\t\tvar scalingFactor = me.drawingArea / (me.max - me.min);\n\t\t\tif (me.options.reverse) {\n\t\t\t\treturn (me.max - value) * scalingFactor;\n\t\t\t}\n\t\t\treturn (value - me.min) * scalingFactor;\n\t\t},\n\t\tgetPointPosition: function(index, distanceFromCenter) {\n\t\t\tvar me = this;\n\t\t\tvar thisAngle = me.getIndexAngle(index) - (Math.PI / 2);\n\t\t\treturn {\n\t\t\t\tx: Math.round(Math.cos(thisAngle) * distanceFromCenter) + me.xCenter,\n\t\t\t\ty: Math.round(Math.sin(thisAngle) * distanceFromCenter) + me.yCenter\n\t\t\t};\n\t\t},\n\t\tgetPointPositionForValue: function(index, value) {\n\t\t\treturn this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n\t\t},\n\n\t\tgetBasePosition: function() {\n\t\t\tvar me = this;\n\t\t\tvar min = me.min;\n\t\t\tvar max = me.max;\n\n\t\t\treturn me.getPointPositionForValue(0,\n\t\t\t\tme.beginAtZero? 0:\n\t\t\t\tmin < 0 && max < 0? max :\n\t\t\t\tmin > 0 && max > 0? min :\n\t\t\t\t0);\n\t\t},\n\n\t\tdraw: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar gridLineOpts = opts.gridLines;\n\t\t\tvar tickOpts = opts.ticks;\n\t\t\tvar getValueOrDefault = helpers.getValueOrDefault;\n\n\t\t\tif (opts.display) {\n\t\t\t\tvar ctx = me.ctx;\n\n\t\t\t\t// Tick Font\n\t\t\t\tvar tickFontSize = getValueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize);\n\t\t\t\tvar tickFontStyle = getValueOrDefault(tickOpts.fontStyle, globalDefaults.defaultFontStyle);\n\t\t\t\tvar tickFontFamily = getValueOrDefault(tickOpts.fontFamily, globalDefaults.defaultFontFamily);\n\t\t\t\tvar tickLabelFont = helpers.fontString(tickFontSize, tickFontStyle, tickFontFamily);\n\n\t\t\t\thelpers.each(me.ticks, function(label, index) {\n\t\t\t\t\t// Don't draw a centre value (if it is minimum)\n\t\t\t\t\tif (index > 0 || opts.reverse) {\n\t\t\t\t\t\tvar yCenterOffset = me.getDistanceFromCenterForValue(me.ticksAsNumbers[index]);\n\t\t\t\t\t\tvar yHeight = me.yCenter - yCenterOffset;\n\n\t\t\t\t\t\t// Draw circular lines around the scale\n\t\t\t\t\t\tif (gridLineOpts.display && index !== 0) {\n\t\t\t\t\t\t\tdrawRadiusLine(me, gridLineOpts, yCenterOffset, index);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (tickOpts.display) {\n\t\t\t\t\t\t\tvar tickFontColor = getValueOrDefault(tickOpts.fontColor, globalDefaults.defaultFontColor);\n\t\t\t\t\t\t\tctx.font = tickLabelFont;\n\n\t\t\t\t\t\t\tif (tickOpts.showLabelBackdrop) {\n\t\t\t\t\t\t\t\tvar labelWidth = ctx.measureText(label).width;\n\t\t\t\t\t\t\t\tctx.fillStyle = tickOpts.backdropColor;\n\t\t\t\t\t\t\t\tctx.fillRect(\n\t\t\t\t\t\t\t\t\tme.xCenter - labelWidth / 2 - tickOpts.backdropPaddingX,\n\t\t\t\t\t\t\t\t\tyHeight - tickFontSize / 2 - tickOpts.backdropPaddingY,\n\t\t\t\t\t\t\t\t\tlabelWidth + tickOpts.backdropPaddingX * 2,\n\t\t\t\t\t\t\t\t\ttickFontSize + tickOpts.backdropPaddingY * 2\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tctx.textAlign = 'center';\n\t\t\t\t\t\t\tctx.textBaseline = 'middle';\n\t\t\t\t\t\t\tctx.fillStyle = tickFontColor;\n\t\t\t\t\t\t\tctx.fillText(label, me.xCenter, yHeight);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif (opts.angleLines.display || opts.pointLabels.display) {\n\t\t\t\t\tdrawPointLabels(me);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\tChart.scaleService.registerScaleType('radialLinear', LinearRadialScale, defaultConfig);\n\n};\n\n},{}],49:[function(require,module,exports){\n/* global window: false */\n'use strict';\n\nvar moment = require(1);\nmoment = typeof(moment) === 'function' ? moment : window.moment;\n\nmodule.exports = function(Chart) {\n\n\tvar helpers = Chart.helpers;\n\tvar interval = {\n\t\tmillisecond: {\n\t\t\tsize: 1,\n\t\t\tsteps: [1, 2, 5, 10, 20, 50, 100, 250, 500]\n\t\t},\n\t\tsecond: {\n\t\t\tsize: 1000,\n\t\t\tsteps: [1, 2, 5, 10, 30]\n\t\t},\n\t\tminute: {\n\t\t\tsize: 60000,\n\t\t\tsteps: [1, 2, 5, 10, 30]\n\t\t},\n\t\thour: {\n\t\t\tsize: 3600000,\n\t\t\tsteps: [1, 2, 3, 6, 12]\n\t\t},\n\t\tday: {\n\t\t\tsize: 86400000,\n\t\t\tsteps: [1, 2, 5]\n\t\t},\n\t\tweek: {\n\t\t\tsize: 604800000,\n\t\t\tmaxStep: 4\n\t\t},\n\t\tmonth: {\n\t\t\tsize: 2.628e9,\n\t\t\tmaxStep: 3\n\t\t},\n\t\tquarter: {\n\t\t\tsize: 7.884e9,\n\t\t\tmaxStep: 4\n\t\t},\n\t\tyear: {\n\t\t\tsize: 3.154e10,\n\t\t\tmaxStep: false\n\t\t}\n\t};\n\n\tvar defaultConfig = {\n\t\tposition: 'bottom',\n\n\t\ttime: {\n\t\t\tparser: false, // false == a pattern string from http://momentjs.com/docs/#/parsing/string-format/ or a custom callback that converts its argument to a moment\n\t\t\tformat: false, // DEPRECATED false == date objects, moment object, callback or a pattern string from http://momentjs.com/docs/#/parsing/string-format/\n\t\t\tunit: false, // false == automatic or override with week, month, year, etc.\n\t\t\tround: false, // none, or override with week, month, year, etc.\n\t\t\tdisplayFormat: false, // DEPRECATED\n\t\t\tisoWeekday: false, // override week start day - see http://momentjs.com/docs/#/get-set/iso-weekday/\n\t\t\tminUnit: 'millisecond',\n\n\t\t\t// defaults to unit's corresponding unitFormat below or override using pattern string from http://momentjs.com/docs/#/displaying/format/\n\t\t\tdisplayFormats: {\n\t\t\t\tmillisecond: 'h:mm:ss.SSS a', // 11:20:01.123 AM,\n\t\t\t\tsecond: 'h:mm:ss a', // 11:20:01 AM\n\t\t\t\tminute: 'h:mm:ss a', // 11:20:01 AM\n\t\t\t\thour: 'MMM D, hA', // Sept 4, 5PM\n\t\t\t\tday: 'll', // Sep 4 2015\n\t\t\t\tweek: 'll', // Week 46, or maybe \"[W]WW - YYYY\" ?\n\t\t\t\tmonth: 'MMM YYYY', // Sept 2015\n\t\t\t\tquarter: '[Q]Q - YYYY', // Q3\n\t\t\t\tyear: 'YYYY' // 2015\n\t\t\t},\n\t\t},\n\t\tticks: {\n\t\t\tautoSkip: false\n\t\t}\n\t};\n\n\t/**\n\t * Helper function to parse time to a moment object\n\t * @param axis {TimeAxis} the time axis\n\t * @param label {Date|string|number|Moment} The thing to parse\n\t * @return {Moment} parsed time\n\t */\n\tfunction parseTime(axis, label) {\n\t\tvar timeOpts = axis.options.time;\n\t\tif (typeof timeOpts.parser === 'string') {\n\t\t\treturn moment(label, timeOpts.parser);\n\t\t}\n\t\tif (typeof timeOpts.parser === 'function') {\n\t\t\treturn timeOpts.parser(label);\n\t\t}\n\t\tif (typeof label.getMonth === 'function' || typeof label === 'number') {\n\t\t\t// Date objects\n\t\t\treturn moment(label);\n\t\t}\n\t\tif (label.isValid && label.isValid()) {\n\t\t\t// Moment support\n\t\t\treturn label;\n\t\t}\n\t\tvar format = timeOpts.format;\n\t\tif (typeof format !== 'string' && format.call) {\n\t\t\t// Custom parsing (return an instance of moment)\n\t\t\tconsole.warn('options.time.format is deprecated and replaced by options.time.parser.');\n\t\t\treturn format(label);\n\t\t}\n\t\t// Moment format parsing\n\t\treturn moment(label, format);\n\t}\n\n\t/**\n\t * Figure out which is the best unit for the scale\n\t * @param minUnit {String} minimum unit to use\n\t * @param min {Number} scale minimum\n\t * @param max {Number} scale maximum\n\t * @return {String} the unit to use\n\t */\n\tfunction determineUnit(minUnit, min, max, maxTicks) {\n\t\tvar units = Object.keys(interval);\n\t\tvar unit;\n\t\tvar numUnits = units.length;\n\n\t\tfor (var i = units.indexOf(minUnit); i < numUnits; i++) {\n\t\t\tunit = units[i];\n\t\t\tvar unitDetails = interval[unit];\n\t\t\tvar steps = (unitDetails.steps && unitDetails.steps[unitDetails.steps.length - 1]) || unitDetails.maxStep;\n\t\t\tif (steps === undefined || Math.ceil((max - min) / (steps * unitDetails.size)) <= maxTicks) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn unit;\n\t}\n\n\t/**\n\t * Determines how we scale the unit\n\t * @param min {Number} the scale minimum\n\t * @param max {Number} the scale maximum\n\t * @param unit {String} the unit determined by the {@see determineUnit} method\n\t * @return {Number} the axis step size as a multiple of unit\n\t */\n\tfunction determineStepSize(min, max, unit, maxTicks) {\n\t\t// Using our unit, figoure out what we need to scale as\n\t\tvar unitDefinition = interval[unit];\n\t\tvar unitSizeInMilliSeconds = unitDefinition.size;\n\t\tvar sizeInUnits = Math.ceil((max - min) / unitSizeInMilliSeconds);\n\t\tvar multiplier = 1;\n\t\tvar range = max - min;\n\n\t\tif (unitDefinition.steps) {\n\t\t\t// Have an array of steps\n\t\t\tvar numSteps = unitDefinition.steps.length;\n\t\t\tfor (var i = 0; i < numSteps && sizeInUnits > maxTicks; i++) {\n\t\t\t\tmultiplier = unitDefinition.steps[i];\n\t\t\t\tsizeInUnits = Math.ceil(range / (unitSizeInMilliSeconds * multiplier));\n\t\t\t}\n\t\t} else {\n\t\t\twhile (sizeInUnits > maxTicks && maxTicks > 0) {\n\t\t\t\t++multiplier;\n\t\t\t\tsizeInUnits = Math.ceil(range / (unitSizeInMilliSeconds * multiplier));\n\t\t\t}\n\t\t}\n\n\t\treturn multiplier;\n\t}\n\n\t/**\n\t * Helper for generating axis labels.\n\t * @param options {ITimeGeneratorOptions} the options for generation\n\t * @param dataRange {IRange} the data range\n\t * @param niceRange {IRange} the pretty range to display\n\t * @return {Number[]} ticks\n\t */\n\tfunction generateTicks(options, dataRange, niceRange) {\n\t\tvar ticks = [];\n\t\tif (options.maxTicks) {\n\t\t\tvar stepSize = options.stepSize;\n\t\t\tticks.push(options.min !== undefined ? options.min : niceRange.min);\n\t\t\tvar cur = moment(niceRange.min);\n\t\t\twhile (cur.add(stepSize, options.unit).valueOf() < niceRange.max) {\n\t\t\t\tticks.push(cur.valueOf());\n\t\t\t}\n\t\t\tvar realMax = options.max || niceRange.max;\n\t\t\tif (ticks[ticks.length - 1] !== realMax) {\n\t\t\t\tticks.push(realMax);\n\t\t\t}\n\t\t}\n\t\treturn ticks;\n\t}\n\n\t/**\n\t * @function Chart.Ticks.generators.time\n\t * @param options {ITimeGeneratorOptions} the options for generation\n\t * @param dataRange {IRange} the data range\n\t * @return {Number[]} ticks\n\t */\n\tChart.Ticks.generators.time = function(options, dataRange) {\n\t\tvar niceMin;\n\t\tvar niceMax;\n\t\tvar isoWeekday = options.isoWeekday;\n\t\tif (options.unit === 'week' && isoWeekday !== false) {\n\t\t\tniceMin = moment(dataRange.min).startOf('isoWeek').isoWeekday(isoWeekday).valueOf();\n\t\t\tniceMax = moment(dataRange.max).startOf('isoWeek').isoWeekday(isoWeekday);\n\t\t\tif (dataRange.max - niceMax > 0) {\n\t\t\t\tniceMax.add(1, 'week');\n\t\t\t}\n\t\t\tniceMax = niceMax.valueOf();\n\t\t} else {\n\t\t\tniceMin = moment(dataRange.min).startOf(options.unit).valueOf();\n\t\t\tniceMax = moment(dataRange.max).startOf(options.unit);\n\t\t\tif (dataRange.max - niceMax > 0) {\n\t\t\t\tniceMax.add(1, options.unit);\n\t\t\t}\n\t\t\tniceMax = niceMax.valueOf();\n\t\t}\n\t\treturn generateTicks(options, dataRange, {\n\t\t\tmin: niceMin,\n\t\t\tmax: niceMax\n\t\t});\n\t};\n\n\tvar TimeScale = Chart.Scale.extend({\n\t\tinitialize: function() {\n\t\t\tif (!moment) {\n\t\t\t\tthrow new Error('Chart.js - Moment.js could not be found! You must include it before Chart.js to use the time scale. Download at https://momentjs.com');\n\t\t\t}\n\n\t\t\tChart.Scale.prototype.initialize.call(this);\n\t\t},\n\t\tdetermineDataLimits: function() {\n\t\t\tvar me = this;\n\t\t\tvar timeOpts = me.options.time;\n\n\t\t\t// We store the data range as unix millisecond timestamps so dataMin and dataMax will always be integers.\n\t\t\tvar dataMin = Number.MAX_SAFE_INTEGER;\n\t\t\tvar dataMax = Number.MIN_SAFE_INTEGER;\n\n\t\t\tvar chartData = me.chart.data;\n\t\t\tvar parsedData = {\n\t\t\t\tlabels: [],\n\t\t\t\tdatasets: []\n\t\t\t};\n\n\t\t\tvar timestamp;\n\n\t\t\thelpers.each(chartData.labels, function(label, labelIndex) {\n\t\t\t\tvar labelMoment = parseTime(me, label);\n\n\t\t\t\tif (labelMoment.isValid()) {\n\t\t\t\t\t// We need to round the time\n\t\t\t\t\tif (timeOpts.round) {\n\t\t\t\t\t\tlabelMoment.startOf(timeOpts.round);\n\t\t\t\t\t}\n\n\t\t\t\t\ttimestamp = labelMoment.valueOf();\n\t\t\t\t\tdataMin = Math.min(timestamp, dataMin);\n\t\t\t\t\tdataMax = Math.max(timestamp, dataMax);\n\n\t\t\t\t\t// Store this value for later\n\t\t\t\t\tparsedData.labels[labelIndex] = timestamp;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\thelpers.each(chartData.datasets, function(dataset, datasetIndex) {\n\t\t\t\tvar timestamps = [];\n\n\t\t\t\tif (typeof dataset.data[0] === 'object' && dataset.data[0] !== null && me.chart.isDatasetVisible(datasetIndex)) {\n\t\t\t\t\t// We have potential point data, so we need to parse this\n\t\t\t\t\thelpers.each(dataset.data, function(value, dataIndex) {\n\t\t\t\t\t\tvar dataMoment = parseTime(me, me.getRightValue(value));\n\n\t\t\t\t\t\tif (dataMoment.isValid()) {\n\t\t\t\t\t\t\tif (timeOpts.round) {\n\t\t\t\t\t\t\t\tdataMoment.startOf(timeOpts.round);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\ttimestamp = dataMoment.valueOf();\n\t\t\t\t\t\t\tdataMin = Math.min(timestamp, dataMin);\n\t\t\t\t\t\t\tdataMax = Math.max(timestamp, dataMax);\n\t\t\t\t\t\t\ttimestamps[dataIndex] = timestamp;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t// We have no x coordinates, so use the ones from the labels\n\t\t\t\t\ttimestamps = parsedData.labels.slice();\n\t\t\t\t}\n\n\t\t\t\tparsedData.datasets[datasetIndex] = timestamps;\n\t\t\t});\n\n\t\t\tme.dataMin = dataMin;\n\t\t\tme.dataMax = dataMax;\n\t\t\tme._parsedData = parsedData;\n\t\t},\n\t\tbuildTicks: function() {\n\t\t\tvar me = this;\n\t\t\tvar timeOpts = me.options.time;\n\n\t\t\tvar minTimestamp;\n\t\t\tvar maxTimestamp;\n\t\t\tvar dataMin = me.dataMin;\n\t\t\tvar dataMax = me.dataMax;\n\n\t\t\tif (timeOpts.min) {\n\t\t\t\tvar minMoment = parseTime(me, timeOpts.min);\n\t\t\t\tif (timeOpts.round) {\n\t\t\t\t\tminMoment.round(timeOpts.round);\n\t\t\t\t}\n\t\t\t\tminTimestamp = minMoment.valueOf();\n\t\t\t}\n\n\t\t\tif (timeOpts.max) {\n\t\t\t\tmaxTimestamp = parseTime(me, timeOpts.max).valueOf();\n\t\t\t}\n\n\t\t\tvar maxTicks = me.getLabelCapacity(minTimestamp || dataMin);\n\t\t\tvar unit = timeOpts.unit || determineUnit(timeOpts.minUnit, minTimestamp || dataMin, maxTimestamp || dataMax, maxTicks);\n\t\t\tme.displayFormat = timeOpts.displayFormats[unit];\n\n\t\t\tvar stepSize = timeOpts.stepSize || determineStepSize(minTimestamp || dataMin, maxTimestamp || dataMax, unit, maxTicks);\n\t\t\tme.ticks = Chart.Ticks.generators.time({\n\t\t\t\tmaxTicks: maxTicks,\n\t\t\t\tmin: minTimestamp,\n\t\t\t\tmax: maxTimestamp,\n\t\t\t\tstepSize: stepSize,\n\t\t\t\tunit: unit,\n\t\t\t\tisoWeekday: timeOpts.isoWeekday\n\t\t\t}, {\n\t\t\t\tmin: dataMin,\n\t\t\t\tmax: dataMax\n\t\t\t});\n\n\t\t\t// At this point, we need to update our max and min given the tick values since we have expanded the\n\t\t\t// range of the scale\n\t\t\tme.max = helpers.max(me.ticks);\n\t\t\tme.min = helpers.min(me.ticks);\n\t\t},\n\t\t// Get tooltip label\n\t\tgetLabelForIndex: function(index, datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tvar label = me.chart.data.labels && index < me.chart.data.labels.length ? me.chart.data.labels[index] : '';\n\t\t\tvar value = me.chart.data.datasets[datasetIndex].data[index];\n\n\t\t\tif (value !== null && typeof value === 'object') {\n\t\t\t\tlabel = me.getRightValue(value);\n\t\t\t}\n\n\t\t\t// Format nicely\n\t\t\tif (me.options.time.tooltipFormat) {\n\t\t\t\tlabel = parseTime(me, label).format(me.options.time.tooltipFormat);\n\t\t\t}\n\n\t\t\treturn label;\n\t\t},\n\t\t// Function to format an individual tick mark\n\t\ttickFormatFunction: function(tick, index, ticks) {\n\t\t\tvar formattedTick = tick.format(this.displayFormat);\n\t\t\tvar tickOpts = this.options.ticks;\n\t\t\tvar callback = helpers.getValueOrDefault(tickOpts.callback, tickOpts.userCallback);\n\n\t\t\tif (callback) {\n\t\t\t\treturn callback(formattedTick, index, ticks);\n\t\t\t}\n\t\t\treturn formattedTick;\n\t\t},\n\t\tconvertTicksToLabels: function() {\n\t\t\tvar me = this;\n\t\t\tme.ticksAsTimestamps = me.ticks;\n\t\t\tme.ticks = me.ticks.map(function(tick) {\n\t\t\t\treturn moment(tick);\n\t\t\t}).map(me.tickFormatFunction, me);\n\t\t},\n\t\tgetPixelForOffset: function(offset) {\n\t\t\tvar me = this;\n\t\t\tvar epochWidth = me.max - me.min;\n\t\t\tvar decimal = epochWidth ? (offset - me.min) / epochWidth : 0;\n\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\tvar valueOffset = (me.width * decimal);\n\t\t\t\treturn me.left + Math.round(valueOffset);\n\t\t\t}\n\n\t\t\tvar heightOffset = (me.height * decimal);\n\t\t\treturn me.top + Math.round(heightOffset);\n\t\t},\n\t\tgetPixelForValue: function(value, index, datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tvar offset = null;\n\t\t\tif (index !== undefined && datasetIndex !== undefined) {\n\t\t\t\toffset = me._parsedData.datasets[datasetIndex][index];\n\t\t\t}\n\n\t\t\tif (offset === null) {\n\t\t\t\tif (!value || !value.isValid) {\n\t\t\t\t\t// not already a moment object\n\t\t\t\t\tvalue = parseTime(me, me.getRightValue(value));\n\t\t\t\t}\n\n\t\t\t\tif (value && value.isValid && value.isValid()) {\n\t\t\t\t\toffset = value.valueOf();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (offset !== null) {\n\t\t\t\treturn me.getPixelForOffset(offset);\n\t\t\t}\n\t\t},\n\t\tgetPixelForTick: function(index) {\n\t\t\treturn this.getPixelForOffset(this.ticksAsTimestamps[index]);\n\t\t},\n\t\tgetValueForPixel: function(pixel) {\n\t\t\tvar me = this;\n\t\t\tvar innerDimension = me.isHorizontal() ? me.width : me.height;\n\t\t\tvar offset = (pixel - (me.isHorizontal() ? me.left : me.top)) / innerDimension;\n\t\t\treturn moment(me.min + (offset * (me.max - me.min)));\n\t\t},\n\t\t// Crude approximation of what the label width might be\n\t\tgetLabelWidth: function(label) {\n\t\t\tvar me = this;\n\t\t\tvar ticks = me.options.ticks;\n\n\t\t\tvar tickLabelWidth = me.ctx.measureText(label).width;\n\t\t\tvar cosRotation = Math.cos(helpers.toRadians(ticks.maxRotation));\n\t\t\tvar sinRotation = Math.sin(helpers.toRadians(ticks.maxRotation));\n\t\t\tvar tickFontSize = helpers.getValueOrDefault(ticks.fontSize, Chart.defaults.global.defaultFontSize);\n\t\t\treturn (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation);\n\t\t},\n\t\tgetLabelCapacity: function(exampleTime) {\n\t\t\tvar me = this;\n\n\t\t\tme.displayFormat = me.options.time.displayFormats.millisecond;\t// Pick the longest format for guestimation\n\t\t\tvar exampleLabel = me.tickFormatFunction(moment(exampleTime), 0, []);\n\t\t\tvar tickLabelWidth = me.getLabelWidth(exampleLabel);\n\n\t\t\tvar innerWidth = me.isHorizontal() ? me.width : me.height;\n\t\t\tvar labelCapacity = innerWidth / tickLabelWidth;\n\t\t\treturn labelCapacity;\n\t\t}\n\t});\n\tChart.scaleService.registerScaleType('time', TimeScale, defaultConfig);\n\n};\n\n},{\"1\":1}]},{},[7])(7)\n});"
  },
  {
    "path": "public/admin/js/charts/area-chart.js",
    "content": "(function ($) {\n \"use strict\";\n \n\t /*----------------------------------------*/\n\t/*  1.  Area Chart\n\t/*----------------------------------------*/\n\tvar ctx = document.getElementById(\"areachartfalse\");\n\tvar areachartfalse = new Chart(ctx, {\n\t\ttype: 'line',\n\t\tdata: {\n\t\t\tlabels: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\"],\n\t\t\tdatasets: [{\n\t\t\t\tlabel: \"My First dataset\",\n\t\t\t\tfill: false,\n                backgroundColor: '#303030',\n\t\t\t\tborderColor: '#303030',\n\t\t\t\tdata: [0, -20, 20, -20, 20, -20, 20]\n            }]\n\t\t},\n\t\toptions: {\n\t\t\tresponsive: true,\n\t\t\tmaintainAspectRatio: false,\n\t\t\tspanGaps: false,\n\t\t\ttitle:{\n\t\t\t\tdisplay:true,\n\t\t\t\ttext:'Area Chart Fill False'\n\t\t\t},\n\t\t\telements: {\n\t\t\t\tline: {\n\t\t\t\t\ttension: 0.000001\n\t\t\t\t}\n\t\t\t},\n\t\t\tplugins: {\n\t\t\t\tfiller: {\n\t\t\t\t\tpropagate: false\n\t\t\t\t}\n\t\t\t},\n\t\t\tscales: {\n\t\t\t\txAxes: [{\n\t\t\t\t\tticks: {\n\t\t\t\t\t\tautoSkip: false,\n\t\t\t\t\t\tmaxRotation: 0\n\t\t\t\t\t},\n\t\t\t\t\tticks: {\n\t\t\t\t\t  fontColor: \"#fff\", // this here\n\t\t\t\t\t}\n\t\t\t\t}],\n\t\t\t\tyAxes: [{\n\t\t\t\t\tticks: {\n\t\t\t\t\t\tautoSkip: false,\n\t\t\t\t\t\tmaxRotation: 0\n\t\t\t\t\t},\n\t\t\t\t\tticks: {\n\t\t\t\t\t  fontColor: \"#fff\", // this here\n\t\t\t\t\t}\n\t\t\t\t}]\n\t\t\t}\n\t\t}\n\t});\n\t\n\t /*----------------------------------------*/\n\t/*  1.  Area Chart origin\n\t/*----------------------------------------*/\n\tvar ctx = document.getElementById(\"areachartorigin\");\n\tvar areachartorigin = new Chart(ctx, {\n\t\ttype: 'line',\n\t\tdata: {\n\t\t\tlabels: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\"],\n\t\t\tdatasets: [{\n\t\t\t\tlabel: \"My First dataset\",\n\t\t\t\tfill: 'origin',\n                backgroundColor: '#03a9f4',\n\t\t\t\tborderColor: '#03a9f4',\n\t\t\t\tdata: [0, -20, 20, -20, 20, -20, 20]\n            }]\n\t\t},\n\t\toptions: {\n\t\t\tresponsive: true,\n\t\t\tmaintainAspectRatio: false,\n\t\t\tspanGaps: false,\n\t\t\ttitle:{\n\t\t\t\tdisplay:true,\n\t\t\t\ttext:'Area Chart Fill origin'\n\t\t\t},\n\t\t\telements: {\n\t\t\t\tline: {\n\t\t\t\t\ttension: 0.000001\n\t\t\t\t}\n\t\t\t},\n\t\t\tplugins: {\n\t\t\t\tfiller: {\n\t\t\t\t\tpropagate: false\n\t\t\t\t}\n\t\t\t},\n\t\t\tscales: {\n\t\t\t\txAxes: [{\n\t\t\t\t\tticks: {\n\t\t\t\t\t\tautoSkip: false,\n\t\t\t\t\t\tmaxRotation: 0\n\t\t\t\t\t},\n\t\t\t\t\tticks: {\n\t\t\t\t\t  fontColor: \"#fff\", // this here\n\t\t\t\t\t}\n\t\t\t\t}],\n\t\t\t\tyAxes: [{\n\t\t\t\t\tticks: {\n\t\t\t\t\t\tautoSkip: false,\n\t\t\t\t\t\tmaxRotation: 0\n\t\t\t\t\t},\n\t\t\t\t\tticks: {\n\t\t\t\t\t  fontColor: \"#fff\", // this here\n\t\t\t\t\t}\n\t\t\t\t}]\n\t\t\t}\n\t\t}\n\t});\n\t /*----------------------------------------*/\n\t/*  1.  Area Chart start\n\t/*----------------------------------------*/\n\tvar ctx = document.getElementById(\"areachartfillstart\");\n\tvar areachartfillstart = new Chart(ctx, {\n\t\ttype: 'line',\n\t\tdata: {\n\t\t\tlabels: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\"],\n\t\t\tdatasets: [{\n\t\t\t\tlabel: \"My First dataset\",\n\t\t\t\tfill: 'start',\n                backgroundColor: '#03a9f4',\n\t\t\t\tborderColor: '#03a9f4',\n\t\t\t\tdata: [0, 10, 20, 30, 40, 50, 100]\n            }]\n\t\t},\n\t\toptions: {\n\t\t\tresponsive: true,\n\t\t\tmaintainAspectRatio: false,\n\t\t\tspanGaps: false,\n\t\t\ttitle:{\n\t\t\t\tdisplay:true,\n\t\t\t\ttext:'Area Chart Fill start'\n\t\t\t},\n\t\t\telements: {\n\t\t\t\tline: {\n\t\t\t\t\ttension: 0.000001\n\t\t\t\t}\n\t\t\t},\n\t\t\tplugins: {\n\t\t\t\tfiller: {\n\t\t\t\t\tpropagate: false\n\t\t\t\t}\n\t\t\t},\n\t\t\tscales: {\n\t\t\t\txAxes: [{\n\t\t\t\t\tticks: {\n\t\t\t\t\t\tautoSkip: false,\n\t\t\t\t\t\tmaxRotation: 0\n\t\t\t\t\t},\n\t\t\t\t\tticks: {\n\t\t\t\t\t  fontColor: \"#fff\", // this here\n\t\t\t\t\t}\n\t\t\t\t}],\n\t\t\t\tyAxes: [{\n\t\t\t\t\tticks: {\n\t\t\t\t\t\tautoSkip: false,\n\t\t\t\t\t\tmaxRotation: 0\n\t\t\t\t\t},\n\t\t\t\t\tticks: {\n\t\t\t\t\t  fontColor: \"#fff\", // this here\n\t\t\t\t\t}\n\t\t\t\t}]\n\t\t\t}\n\t\t}\n\t});\n\t\n\t\n\t /*----------------------------------------*/\n\t/*  1.  Area Chart end\n\t/*----------------------------------------*/\n\tvar ctx = document.getElementById(\"areachartend\");\n\tvar areachartend = new Chart(ctx, {\n\t\ttype: 'line',\n\t\tdata: {\n\t\t\tlabels: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\"],\n\t\t\tdatasets: [{\n\t\t\t\tlabel: \"My First dataset\",\n\t\t\t\tfill: 'end',\n                backgroundColor: '#303030',\n\t\t\t\tborderColor: '#303030',\n\t\t\t\tdata: [100, 90, 70, 60, 50, 40, 0]\n            }]\n\t\t},\n\t\toptions: {\n\t\t\tresponsive: true,\n\t\t\tmaintainAspectRatio: false,\n\t\t\tspanGaps: false,\n\t\t\ttitle:{\n\t\t\t\tdisplay:true,\n\t\t\t\ttext:'Area Chart Fill end'\n\t\t\t},\n\t\t\telements: {\n\t\t\t\tline: {\n\t\t\t\t\ttension: 0.000001\n\t\t\t\t}\n\t\t\t},\n\t\t\tplugins: {\n\t\t\t\tfiller: {\n\t\t\t\t\tpropagate: false\n\t\t\t\t}\n\t\t\t},\n\t\t\tscales: {\n\t\t\t\txAxes: [{\n\t\t\t\t\tticks: {\n\t\t\t\t\t\tautoSkip: false,\n\t\t\t\t\t\tmaxRotation: 0\n\t\t\t\t\t},\n\t\t\t\t\tticks: {\n\t\t\t\t\t  fontColor: \"#fff\", // this here\n\t\t\t\t\t}\n\t\t\t\t}],\n\t\t\t\tyAxes: [{\n\t\t\t\t\tticks: {\n\t\t\t\t\t\tautoSkip: false,\n\t\t\t\t\t\tmaxRotation: 0\n\t\t\t\t\t},\n\t\t\t\t\tticks: {\n\t\t\t\t\t  fontColor: \"#fff\", // this here\n\t\t\t\t\t}\n\t\t\t\t}]\n\t\t\t}\n\t\t}\n\t});\n\t\n\t /*----------------------------------------*/\n\t/*  1.  Area Chart Datasets\n\t/*----------------------------------------*/\n\tvar ctx = document.getElementById(\"areachartDatasets\");\n\tvar areachartDatasets = new Chart(ctx, {\n\t\ttype: 'line',\n\t\tdata: {\n\t\t\tlabels: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\"],\n\t\t\tdatasets: [{\n\t\t\t\tlabel: 'D0',\n                backgroundColor: '#303030',\n\t\t\t\tborderColor: '#303030',\n\t\t\t\tdata: [100, 90, 70, 60, 50, 40, 0]\n            },{\n\t\t\t\tlabel: 'D1',\n\t\t\t\tfill: true,\n                backgroundColor: '#03a9f4',\n\t\t\t\tborderColor: '#03a9f4',\n\t\t\t\tdata: [100, 90, 70, 60, 50, 40, 0]\n            },{\n\t\t\t\tlabel: 'D2',\n\t\t\t\tfill: true,\n                backgroundColor: '#ff0000',\n\t\t\t\tborderColor: '#ff0000',\n\t\t\t\tdata: [100, 90, 70, 60, 50, 40, 0]\n            }]\n\t\t},\n\t\toptions:{\n\t\t\tmaintainAspectRatio: false,\n\t\t\tspanGaps: false,\n\t\t\telements: {\n\t\t\t\tline: {\n\t\t\t\t\ttension: 0.000001\n\t\t\t\t}\n\t\t\t},\n\t\t\tscales: {\n\t\t\t\txAxes: [{\n\t\t\t\t\tticks: {\n\t\t\t\t\t\tautoSkip: false,\n\t\t\t\t\t\tmaxRotation: 0\n\t\t\t\t\t},\n\t\t\t\t\tticks: {\n\t\t\t\t\t  fontColor: \"#fff\", // this here\n\t\t\t\t\t}\n\t\t\t\t}],\n\t\t\t\tyAxes: [{\n\t\t\t\t\tticks: {\n\t\t\t\t\t\tautoSkip: false,\n\t\t\t\t\t\tmaxRotation: 0\n\t\t\t\t\t},\n\t\t\t\t\tticks: {\n\t\t\t\t\t  fontColor: \"#fff\", // this here\n\t\t\t\t\t}\n\t\t\t\t}]\n\t\t\t},\n\t\t\tplugins: {\n\t\t\t\tfiller: {\n\t\t\t\t\tpropagate: false\n\t\t\t\t},\n\t\t\t\tsamples_filler_analyser: {\n\t\t\t\t\ttarget: 'chart-analyser'\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\t\n\t /*----------------------------------------*/\n\t/*  1.  Area Chart Legend\n\t/*----------------------------------------*/\n\tvar ctx = document.getElementById(\"areachartLegend\");\n\tvar areachartLegend = new Chart(ctx, {\n\t\ttype: 'line',\n\t\tdata: {\n\t\t\tlabels: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\"],\n\t\t\tdatasets: [{\n\t\t\t\tlabel: \"My First dataset\",\n                backgroundColor: 'rgb(255, 99, 132)',\n\t\t\t\tborderColor: 'rgb(255, 159, 64)',\n\t\t\t\tdata: [100, 90, 70, 60, 50, 40, 0],\n\t\t\t\tborderWidth: 1,\n\t\t\t\tpointStyle: 'rectRot',\n\t\t\t\tpointRadius: 5,\n\t\t\t\tpointBorderColor: 'rgb(0, 0, 0)'\n            }]\n\t\t},\n\t\toptions: {\n\t\t\tresponsive: true,\n\t\t\tlegend: {\n\t\t\t\tlabels: {\n\t\t\t\t\tusePointStyle: false\n\t\t\t\t}\n\t\t\t},\n\t\t\tscales: {\n\t\t\t\txAxes: [{\n\t\t\t\t\tticks: {\n\t\t\t\t\t\tautoSkip: false,\n\t\t\t\t\t\tmaxRotation: 0\n\t\t\t\t\t},\n\t\t\t\t\tticks: {\n\t\t\t\t\t  fontColor: \"#fff\", // this here\n\t\t\t\t\t}\n\t\t\t\t}],\n\t\t\t\tyAxes: [{\n\t\t\t\t\tticks: {\n\t\t\t\t\t\tautoSkip: false,\n\t\t\t\t\t\tmaxRotation: 0\n\t\t\t\t\t},\n\t\t\t\t\tticks: {\n\t\t\t\t\t  fontColor: \"#fff\", // this here\n\t\t\t\t\t}\n\t\t\t\t}]\n\t\t\t},\n\t\t\ttitle: {\n\t\t\t\tdisplay: true,\n\t\t\t\ttext: 'Normal Legend'\n\t\t\t}\n\t\t}\n\t});\n\t\n\t\n\n\n\t\n\t\t\n})(jQuery); "
  },
  {
    "path": "public/admin/js/charts/bar-chart.js",
    "content": "(function ($) {\n \"use strict\";\n\t /*----------------------------------------*/\n\t/*  1.  Bar Chart\n\t/*----------------------------------------*/\n\n\tvar ctx = document.getElementById(\"barchart1\");\n\tvar barchart1 = new Chart(ctx, {\n\t\ttype: 'bar',\n\t\tdata: {\n\t\t\tlabels: [\"Red\", \"Blue\", \"Yellow\", \"Green\", \"Purple\", \"Orange\"],\n\t\t\tdatasets: [{\n\t\t\t\tlabel: 'Bar Chart',\n\t\t\t\tdata: [12, 19, 3, 5, 2, 3],\n\t\t\t\tbackgroundColor: [\n\t\t\t\t\t'rgba(255, 99, 132, 0.2)',\n\t\t\t\t\t'rgba(54, 162, 235, 0.2)',\n\t\t\t\t\t'rgba(255, 206, 86, 0.2)',\n\t\t\t\t\t'rgba(75, 192, 192, 0.2)',\n\t\t\t\t\t'rgba(153, 102, 255, 0.2)',\n\t\t\t\t\t'rgba(255, 159, 64, 0.2)'\n\t\t\t\t],\n\t\t\t\tborderColor: [\n\t\t\t\t\t'rgba(255,99,132,1)',\n\t\t\t\t\t'rgba(54, 162, 235, 1)',\n\t\t\t\t\t'rgba(255, 206, 86, 1)',\n\t\t\t\t\t'rgba(75, 192, 192, 1)',\n\t\t\t\t\t'rgba(153, 102, 255, 1)',\n\t\t\t\t\t'rgba(255, 159, 64, 1)'\n\t\t\t\t],\n\t\t\t\tborderWidth: 1\n\t\t\t}]\n\t\t},\n\t\toptions: {\n\t\t\tscales: {\n\t\t\t\txAxes: [{\n\t\t\t\t\tticks: {\n\t\t\t\t\t\tautoSkip: false,\n\t\t\t\t\t\tmaxRotation: 0\n\t\t\t\t\t},\n\t\t\t\t\tticks: {\n\t\t\t\t\t  fontColor: \"#fff\", // this here\n\t\t\t\t\t}\n\t\t\t\t}],\n\t\t\t\tyAxes: [{\n\t\t\t\t\tticks: {\n\t\t\t\t\t\tautoSkip: false,\n\t\t\t\t\t\tmaxRotation: 0\n\t\t\t\t\t},\n\t\t\t\t\tticks: {\n\t\t\t\t\t  fontColor: \"#fff\", // this here\n\t\t\t\t\t}\n\t\t\t\t}]\n\t\t\t}\n\t\t}\n\t});\n\t/*----------------------------------------*/\n\t/*  2.  Bar Chart vertical\n\t/*----------------------------------------*/\n\tvar ctx = document.getElementById(\"barchart2\");\n\tvar barchart2 = new Chart(ctx, {\n\t\ttype: 'bar',\n\t\tdata: {\n\t\t\tlabels: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\"],\n\t\t\tdatasets: [{\n                label: 'Dataset 1',\n\t\t\t\tdata: [12, 19, 3, 5, 2, 3, 9],\n\t\t\t\tborderWidth: 1,\n                backgroundColor: [\n\t\t\t\t\t'rgba(255, 99, 132, 0.2)',\n\t\t\t\t\t'rgba(54, 162, 235, 0.2)',\n\t\t\t\t\t'rgba(255, 206, 86, 0.2)',\n\t\t\t\t\t'rgba(75, 192, 192, 0.2)',\n\t\t\t\t\t'rgba(153, 102, 255, 0.2)',\n\t\t\t\t\t'rgba(255, 159, 64, 0.2)'\n\t\t\t\t],\n\t\t\t\tborderColor: [\n\t\t\t\t\t'rgba(255,99,132,1)',\n\t\t\t\t\t'rgba(54, 162, 235, 1)',\n\t\t\t\t\t'rgba(255, 206, 86, 1)',\n\t\t\t\t\t'rgba(75, 192, 192, 1)',\n\t\t\t\t\t'rgba(153, 102, 255, 1)',\n\t\t\t\t\t'rgba(255, 159, 64, 1)'\n\t\t\t\t],\n            }, {\n                label: 'Dataset 2',\n\t\t\t\tdata: [-3, -6, -5, -9, -15, -20],\n                backgroundColor: [\n\t\t\t\t\t'rgba(255, 99, 132, 0.2)',\n\t\t\t\t\t'rgba(54, 162, 235, 0.2)',\n\t\t\t\t\t'rgba(255, 206, 86, 0.2)',\n\t\t\t\t\t'rgba(75, 192, 192, 0.2)',\n\t\t\t\t\t'rgba(153, 102, 255, 0.2)',\n\t\t\t\t\t'rgba(255, 159, 64, 0.2)'\n\t\t\t\t],\n\t\t\t\tborderColor: [\n\t\t\t\t\t'rgba(255,99,132,1)',\n\t\t\t\t\t'rgba(54, 162, 235, 1)',\n\t\t\t\t\t'rgba(255, 206, 86, 1)',\n\t\t\t\t\t'rgba(75, 192, 192, 1)',\n\t\t\t\t\t'rgba(153, 102, 255, 1)',\n\t\t\t\t\t'rgba(255, 159, 64, 1)'\n\t\t\t\t],\n\t\t\t\tborderWidth: 1\n            }]\n\t\t},\n\t\toptions: {\n\t\t\tresponsive: true,\n\t\t\tlegend: {\n\t\t\t\tposition: 'top',\n\t\t\t},\n\t\t\ttitle: {\n\t\t\t\tdisplay: true,\n\t\t\t\ttext: 'Bar Chart Vertical'\n\t\t\t},\n\t\t\tscales: {\n\t\t\t\txAxes: [{\n\t\t\t\t\tticks: {\n\t\t\t\t\t\tautoSkip: false,\n\t\t\t\t\t\tmaxRotation: 0\n\t\t\t\t\t},\n\t\t\t\t\tticks: {\n\t\t\t\t\t  fontColor: \"#fff\", // this here\n\t\t\t\t\t}\n\t\t\t\t}],\n\t\t\t\tyAxes: [{\n\t\t\t\t\tticks: {\n\t\t\t\t\t\tautoSkip: false,\n\t\t\t\t\t\tmaxRotation: 0\n\t\t\t\t\t},\n\t\t\t\t\tticks: {\n\t\t\t\t\t  fontColor: \"#fff\", // this here\n\t\t\t\t\t}\n\t\t\t\t}]\n\t\t\t}\n\t\t}\n\t});\n\t/*----------------------------------------*/\n\t/*  3.  Bar Chart Horizontal\n\t/*----------------------------------------*/\n\tvar ctx = document.getElementById(\"barchart3\");\n\tvar barchart3 = new Chart(ctx, {\n\t\ttype: 'horizontalBar',\n\t\tdata: {\n\t\t\tlabels: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\"],\n\t\t\tdatasets: [{\n                label: 'Dataset 1',\n\t\t\t\tdata: [12, 19, 3, 5, 2, 3, 9],\n\t\t\t\tborderWidth: 1,\n                backgroundColor: [\n\t\t\t\t\t'rgba(255, 99, 132, 0.2)',\n\t\t\t\t\t'rgba(54, 162, 235, 0.2)',\n\t\t\t\t\t'rgba(255, 206, 86, 0.2)',\n\t\t\t\t\t'rgba(75, 192, 192, 0.2)',\n\t\t\t\t\t'rgba(153, 102, 255, 0.2)',\n\t\t\t\t\t'rgba(255, 159, 64, 0.2)'\n\t\t\t\t],\n\t\t\t\tborderColor: [\n\t\t\t\t\t'rgba(255,99,132,1)',\n\t\t\t\t\t'rgba(54, 162, 235, 1)',\n\t\t\t\t\t'rgba(255, 206, 86, 1)',\n\t\t\t\t\t'rgba(75, 192, 192, 1)',\n\t\t\t\t\t'rgba(153, 102, 255, 1)',\n\t\t\t\t\t'rgba(255, 159, 64, 1)'\n\t\t\t\t],\n            }, {\n                label: 'Dataset 2',\n\t\t\t\tdata: [-3, -6, -5, -9, -15, -20],\n                backgroundColor: [\n\t\t\t\t\t'rgba(255, 99, 132, 0.2)',\n\t\t\t\t\t'rgba(54, 162, 235, 0.2)',\n\t\t\t\t\t'rgba(255, 206, 86, 0.2)',\n\t\t\t\t\t'rgba(75, 192, 192, 0.2)',\n\t\t\t\t\t'rgba(153, 102, 255, 0.2)',\n\t\t\t\t\t'rgba(255, 159, 64, 0.2)'\n\t\t\t\t],\n\t\t\t\tborderColor: [\n\t\t\t\t\t'rgba(255,99,132,1)',\n\t\t\t\t\t'rgba(54, 162, 235, 1)',\n\t\t\t\t\t'rgba(255, 206, 86, 1)',\n\t\t\t\t\t'rgba(75, 192, 192, 1)',\n\t\t\t\t\t'rgba(153, 102, 255, 1)',\n\t\t\t\t\t'rgba(255, 159, 64, 1)'\n\t\t\t\t],\n\t\t\t\tborderWidth: 1\n            }]\n\t\t},\n\t\toptions: {\n\t\t\tresponsive: true,\n\t\t\tlegend: {\n\t\t\t\tposition: 'top',\n\t\t\t},\n\t\t\ttitle: {\n\t\t\t\tdisplay: true,\n\t\t\t\ttext: 'Bar Chart horizontal'\n\t\t\t},\n\t\t\tscales: {\n\t\t\t\txAxes: [{\n\t\t\t\t\tticks: {\n\t\t\t\t\t\tautoSkip: false,\n\t\t\t\t\t\tmaxRotation: 0\n\t\t\t\t\t},\n\t\t\t\t\tticks: {\n\t\t\t\t\t  fontColor: \"#fff\", // this here\n\t\t\t\t\t}\n\t\t\t\t}],\n\t\t\t\tyAxes: [{\n\t\t\t\t\tticks: {\n\t\t\t\t\t\tautoSkip: false,\n\t\t\t\t\t\tmaxRotation: 0\n\t\t\t\t\t},\n\t\t\t\t\tticks: {\n\t\t\t\t\t  fontColor: \"#fff\", // this here\n\t\t\t\t\t}\n\t\t\t\t}]\n\t\t\t}\n\t\t}\n\t});\n\t\n\t/*----------------------------------------*/\n\t/*  4.  Bar Chart Multi axis\n\t/*----------------------------------------*/\n\tvar ctx = document.getElementById(\"barchart4\");\n\tvar barchart4 = new Chart(ctx, {\n\t\ttype: 'bar',\n\t\tdata: {\n\t\t\tlabels: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\"],\n\t\t\tdatasets: [{\n                label: 'Dataset 1',\n\t\t\t\tdata: [12, 19, 3, 5, 2, 3, 9],\n\t\t\t\tborderWidth: 1,\n\t\t\t\tyAxisID: \"y-axis-1\",\n                backgroundColor: [\n\t\t\t\t\t'rgba(255, 99, 132, 0.2)',\n\t\t\t\t\t'rgba(54, 162, 235, 0.2)',\n\t\t\t\t\t'rgba(255, 206, 86, 0.2)',\n\t\t\t\t\t'rgba(75, 192, 192, 0.2)',\n\t\t\t\t\t'rgba(153, 102, 255, 0.2)',\n\t\t\t\t\t'rgba(255, 159, 64, 0.2)'\n\t\t\t\t],\n\t\t\t\tborderColor: [\n\t\t\t\t\t'rgba(255,99,132,1)',\n\t\t\t\t\t'rgba(54, 162, 235, 1)',\n\t\t\t\t\t'rgba(255, 206, 86, 1)',\n\t\t\t\t\t'rgba(75, 192, 192, 1)',\n\t\t\t\t\t'rgba(153, 102, 255, 1)',\n\t\t\t\t\t'rgba(255, 159, 64, 1)'\n\t\t\t\t],\n            }, {\n                label: 'Dataset 2',\n\t\t\t\tdata: [-3, -6, -5, -9, -15, -20],\n\t\t\t\tborderWidth: 1,\n\t\t\t\tyAxisID: \"y-axis-2\",\n                backgroundColor: [\n\t\t\t\t\t'rgba(255, 99, 132, 0.2)',\n\t\t\t\t\t'rgba(54, 162, 235, 0.2)',\n\t\t\t\t\t'rgba(255, 206, 86, 0.2)',\n\t\t\t\t\t'rgba(75, 192, 192, 0.2)',\n\t\t\t\t\t'rgba(153, 102, 255, 0.2)',\n\t\t\t\t\t'rgba(255, 159, 64, 0.2)'\n\t\t\t\t],\n\t\t\t\tborderColor: [\n\t\t\t\t\t'rgba(255,99,132,1)',\n\t\t\t\t\t'rgba(54, 162, 235, 1)',\n\t\t\t\t\t'rgba(255, 206, 86, 1)',\n\t\t\t\t\t'rgba(75, 192, 192, 1)',\n\t\t\t\t\t'rgba(153, 102, 255, 1)',\n\t\t\t\t\t'rgba(255, 159, 64, 1)'\n\t\t\t\t],\n\t\t\t\t\n            }]\n\t\t},\n\t\toptions: {\n\t\t\tresponsive: true,\n\t\t\ttitle:{\n\t\t\t\tdisplay:true,\n\t\t\t\ttext:\"Bar Chart Multi Axis\"\n\t\t\t},\n\t\t\ttooltips: {\n\t\t\t\tmode: 'index',\n\t\t\t\tintersect: true\n\t\t\t},\n\t\t\tscales: {\n\t\t\t\tyAxes: [{\n\t\t\t\t\ttype: \"linear\",\n\t\t\t\t\tdisplay: true,\n\t\t\t\t\tposition: \"left\",\n\t\t\t\t\tid: \"y-axis-1\",\n\t\t\t\t}, {\n\t\t\t\t\ttype: \"linear\",\n\t\t\t\t\tdisplay: true,\n\t\t\t\t\tposition: \"right\",\n\t\t\t\t\tid: \"y-axis-2\",\n\t\t\t\t\tgridLines: {\n\t\t\t\t\t\tdrawOnChartArea: false\n\t\t\t\t\t}\n\t\t\t\t}],\n\t\t\t}\n\t\t}\n\t});\n\t\n\t/*----------------------------------------*/\n\t/*  5.  Bar Chart Stacked\n\t/*----------------------------------------*/\n\t\n\tvar ctx = document.getElementById(\"barchart5\");\n\tvar barchart5 = new Chart(ctx, {\n\t\ttype: 'bar',\n\t\tdata: {\n\t\t\tlabels: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\"],\n\t\t\tdatasets: [{\n                label: 'Dataset 1',\n                backgroundColor: '#303030',\n\t\t\t\tdata: [12, 19, 3, -5, -2, 3, 9]\n            }, {\n                label: 'Dataset 2',\n                backgroundColor: '#03a9f4',\n\t\t\t\tdata: [-10, 15, -7, 7, -2, 4, 9]\n\t\t\t\t\n            }, {\n                label: 'Dataset 3',\n               backgroundColor: '#FFC13B',\n\t\t\t   data: [15, -18, 3, 6, 5, -3, 7]\n\t\t\t\t\n            }]\n\t\t},\n\t\toptions: {\n\t\t\ttitle:{\n\t\t\t\tdisplay:true,\n\t\t\t\ttext:\"Bar Chart Stacked\"\n\t\t\t},\n\t\t\ttooltips: {\n\t\t\t\tmode: 'index',\n\t\t\t\tintersect: false\n\t\t\t},\n\t\t\tresponsive: true,\n\t\t\tscales: {\n\t\t\t\txAxes: [{\n\t\t\t\t\tticks: {\n\t\t\t\t\t\tautoSkip: false,\n\t\t\t\t\t\tmaxRotation: 0\n\t\t\t\t\t},\n\t\t\t\t\tticks: {\n\t\t\t\t\t  fontColor: \"#fff\", // this here\n\t\t\t\t\t}\n\t\t\t\t}],\n\t\t\t\tyAxes: [{\n\t\t\t\t\tticks: {\n\t\t\t\t\t\tautoSkip: false,\n\t\t\t\t\t\tmaxRotation: 0\n\t\t\t\t\t},\n\t\t\t\t\tticks: {\n\t\t\t\t\t  fontColor: \"#fff\", // this here\n\t\t\t\t\t}\n\t\t\t\t}]\n\t\t\t}\n\t\t}\n\t});\n\t\n\t\n\t\t\n\t\t\n})(jQuery); "
  },
  {
    "path": "public/admin/js/charts/line-chart.js",
    "content": "(function ($) {\n \"use strict\";\n \n\t /*----------------------------------------*/\n\t/*  1.  Basic Line Chart\n\t/*----------------------------------------*/\n\tlet draw = Chart.controllers.line.prototype.draw;\nChart.controllers.line.prototype.draw = function() {\n    draw.apply(this, arguments);\n    let ctx = this.chart.chart.ctx;\n    let _stroke = ctx.stroke;\n    ctx.stroke = function() {\n        ctx.save();\n        ctx.shadowColor = '#07C';\n        ctx.shadowBlur = 20;\n        ctx.shadowOffsetX = 2;\n        ctx.shadowOffsetY = 20;\n        _stroke.apply(this, arguments);\n        ctx.restore();\n    }\n};\n\nvar ctx = document.getElementById(\"basiclinechart\");\nlet myChart = new Chart(ctx, {\n    type: 'line',\n\t\n    data: {\n        labels: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\"],\n        datasets: [{\n            data: [65, 59, 75, 64, 70, 30, 40],\n            borderColor: '#07C',\n            pointBackgroundColor: \"#FFF\",\n            pointBorderColor: \"#07C\",\n            pointHoverBackgroundColor: \"#07C\",\n            pointHoverBorderColor: \"#FFF\",\n            pointRadius: 4,\n            pointHoverRadius: 4,\n            fill: false,\n            tension: 0.15\n        }]\n    },\n    options: {\n        responsive: false,\n        tooltips: {\n            displayColors: false,\n            callbacks: {\n                label: function(e, d) {\n                    return;\n                },\n                title: function() {\n                    return;\n                }\n            }\n        },\n        legend: {\n            display: false\n        },\n        scales: {\n            yAxes: [{\n                ticks: {\n                    max: 90\n                }\n            }]\n        }\n    }\n});\n\n\n\t /*----------------------------------------*/\n\t/*  2.  Line Chart Multi axis\n\t/*----------------------------------------*/\n\tvar ctx = document.getElementById(\"linechartmultiaxis\");\n\tvar linechartmultiaxis = new Chart(ctx, {\n\t\ttype: 'line',\n\t\tdata: {\n\t\t\tlabels: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\"],\n\t\t\tdatasets: [{\n\t\t\t\tlabel: \"My First dataset\",\n\t\t\t\tfill: false,\n                backgroundColor: '#303030',\n\t\t\t\tborderColor: '#303030',\n\t\t\t\tdata: [3, -5, -2, 3, 9, 12, 19],\n\t\t\t\tyAxisID: \"y-axis-1\"\n            }, {\n                label: \"My Second dataset\",\n\t\t\t\tfill: false,\n                backgroundColor: '#03a9f4',\n\t\t\t\tborderColor: '#03a9f4',\n\t\t\t\tdata: [-12, -3, -4, 6, 3, 7, -20],\n\t\t\t\tyAxisID: \"y-axis-2\"\n\t\t\t\t\n\t\t}]\n\t\t},\n\t\toptions: {\n\t\t\tresponsive: true,\n\t\t\thoverMode: 'index',\n\t\t\tstacked: false,\n\t\t\ttitle:{\n\t\t\t\tdisplay: true,\n\t\t\t\ttext:'Line Chart Multi Axis'\n\t\t\t},\n\t\t\tscales: {\n\t\t\t\tyAxes: [{\n\t\t\t\t\ttype: \"linear\",\n\t\t\t\t\tdisplay: true,\n\t\t\t\t\tposition: \"left\",\n\t\t\t\t\tid: \"y-axis-1\",\n\t\t\t\t}, {\n\t\t\t\t\ttype: \"linear\", \n\t\t\t\t\tdisplay: true,\n\t\t\t\t\tposition: \"right\",\n\t\t\t\t\tid: \"y-axis-2\",\n\t\t\t\t\tgridLines: {\n\t\t\t\t\t\tdrawOnChartArea: false,\n\t\t\t\t\t},\n\t\t\t\t}],\n\t\t\t}\n\t\t}\n\t});\n\t\n\t /*----------------------------------------*/\n\t/*  3.  Line Chart stepped\n\t/*----------------------------------------*/\n\tvar ctx = document.getElementById(\"linechartstepped\");\n\tvar linechartstepped = new Chart(ctx, {\n\t\ttype: 'line',\n\t\tdata: {\n\t\t\tlabels: ['Day 1', 'Day 2', 'Day 3', 'Day 4', 'Day 5', 'Day 6'],\n\t\t\tdatasets: [{\n\t\t\t\tlabel: \"steppedLine\",\n\t\t\t\tfill: false,\n                backgroundColor: '#303030',\n\t\t\t\tborderColor: '#303030',\n\t\t\t\tdata: [3, -5, -2, 3, 9, 12, 19]\n            }]\n\t\t},\n\t\toptions: {\n\t\t\tresponsive: true,\n\t\t\ttitle: {\n\t\t\t\tdisplay: true,\n\t\t\t\ttext:'Line Chart stepped',\n\t\t\t},\n\t\t\tscales: {\n\t\t\t\txAxes: [{\n\t\t\t\t\tticks: {\n\t\t\t\t\t\tautoSkip: false,\n\t\t\t\t\t\tmaxRotation: 0\n\t\t\t\t\t},\n\t\t\t\t\tticks: {\n\t\t\t\t\t  fontColor: \"#fff\", // this here\n\t\t\t\t\t}\n\t\t\t\t}],\n\t\t\t\tyAxes: [{\n\t\t\t\t\tticks: {\n\t\t\t\t\t\tautoSkip: false,\n\t\t\t\t\t\tmaxRotation: 0\n\t\t\t\t\t},\n\t\t\t\t\tticks: {\n\t\t\t\t\t  fontColor: \"#fff\", // this here\n\t\t\t\t\t}\n\t\t\t\t}]\n\t\t\t}\n\t\t}\n\t});\n\t\n\t/*----------------------------------------*/\n\t/*  4.  Line Chart Interpolation\n\t/*----------------------------------------*/\n\t\n\tvar ctx = document.getElementById(\"linechartinterpolation\");\n\tvar linechartinterpolation = new Chart(ctx, {\n\t\ttype: 'line',\n\t\tdata: {\n\t\t\tlabels: [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"10\", \"11\", \"12\"],\n\t\t\tdatasets: [{\n\t\t\t\tlabel: \"Cubic interpolation\",\n\t\t\t\tfill: false,\n                backgroundColor: '#303030',\n\t\t\t\tborderColor: '#303030',\n\t\t\t\tdata: [0, 15, 17, 200, 0, 12, -200, 5, 200, 8, 200, 12, 200],\n\t\t\t\tcubicInterpolationMode: 'monotone'\n            }, {\n                label: \"Cubic interpolation\",\n\t\t\t\tfill: false,\n                backgroundColor: '#03a9f4',\n\t\t\t\tborderColor: '#03a9f4',\n\t\t\t\tdata: [-100, 200, 12, -200, 12, 200, 8, -200, 9, 200, -200, -12, -200]\n\t\t\t\t\n\t\t}, {\n                label: \"Linear interpolation\",\n\t\t\t\tfill: false,\n                backgroundColor: '#ff0000',\n\t\t\t\tborderColor: '#ff0000',\n\t\t\t\tdata: [-8, -9, -10, -11, 0, 0, 0, 12, 10, 8, 9, 7, 12],\n\t\t\t\tlineTension: 0\n\t\t\t\t\n\t\t}]\n\t\t},\n\t\toptions: {\n\t\t\tresponsive: true,\n\t\t\ttitle:{\n\t\t\t\tdisplay:true,\n\t\t\t\ttext:'Line Chart interpolation'\n\t\t\t},\n\t\t\ttooltips: {\n\t\t\t\tmode: 'index'\n\t\t\t},\n\t\t\tscales: {\n\t\t\t\txAxes: [{\n\t\t\t\t\tticks: {\n\t\t\t\t\t\tautoSkip: false,\n\t\t\t\t\t\tmaxRotation: 0\n\t\t\t\t\t},\n\t\t\t\t\tticks: {\n\t\t\t\t\t  fontColor: \"#fff\", // this here\n\t\t\t\t\t}\n\t\t\t\t}],\n\t\t\t\tyAxes: [{\n\t\t\t\t\tticks: {\n\t\t\t\t\t\tautoSkip: false,\n\t\t\t\t\t\tmaxRotation: 0\n\t\t\t\t\t},\n\t\t\t\t\tticks: {\n\t\t\t\t\t  fontColor: \"#fff\", // this here\n\t\t\t\t\t}\n\t\t\t\t}]\n\t\t\t}\n\t\t}\n\t});\n\t\n\t\n\t/*----------------------------------------*/\n\t/*  5.  Line Chart styles\n\t/*----------------------------------------*/\n\t\n\tvar ctx = document.getElementById(\"linechartstyles\");\n\tvar linechartstyles = new Chart(ctx, {\n\t\ttype: 'line',\n\t\tdata: {\n\t\t\tlabels: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\"],\n\t\t\tdatasets: [{\n\t\t\t\tlabel: \"Unfilled\",\n\t\t\t\tfill: false,\n                backgroundColor: '#303030',\n\t\t\t\tborderColor: '#303030',\n\t\t\t\tdata: [0, 15, 17, 200, 0, 12, -200, 5]\n            }, {\n                label: \"Dashed\",\n\t\t\t\tfill: false,\n                backgroundColor: '#03a9f4',\n\t\t\t\tborderColor: '#03a9f4',\n\t\t\t\tborderDash: [5, 5],\n\t\t\t\tdata: [-100, 200, 12, -200, 12, 200, 8]\n\t\t\t\t\n\t\t}, {\n                label: \"Filled\",\n\t\t\t\tfill: true,\n                backgroundColor: '#ff0000',\n\t\t\t\tborderColor: '#ff0000',\n\t\t\t\tdata: [-200, -9, 200, -11, 0, -200, 0]\n\t\t\t\t\n\t\t}]\n\t\t},\n\t\toptions: {\n\t\t\tresponsive: true,\n\t\t\ttitle:{\n\t\t\t\tdisplay:true,\n\t\t\t\ttext:'Line Chart Style'\n\t\t\t},\n\t\t\ttooltips: {\n\t\t\t\tmode: 'index',\n\t\t\t\tintersect: false,\n\t\t\t},\n\t\t\thover: {\n\t\t\t\tmode: 'nearest',\n\t\t\t\tintersect: true\n\t\t\t},\n\t\t\tscales: {\n\t\t\t\txAxes: [{\n\t\t\t\t\tticks: {\n\t\t\t\t\t\tautoSkip: false,\n\t\t\t\t\t\tmaxRotation: 0\n\t\t\t\t\t},\n\t\t\t\t\tticks: {\n\t\t\t\t\t  fontColor: \"#fff\", // this here\n\t\t\t\t\t}\n\t\t\t\t}],\n\t\t\t\tyAxes: [{\n\t\t\t\t\tticks: {\n\t\t\t\t\t\tautoSkip: false,\n\t\t\t\t\t\tmaxRotation: 0\n\t\t\t\t\t},\n\t\t\t\t\tticks: {\n\t\t\t\t\t  fontColor: \"#fff\", // this here\n\t\t\t\t\t}\n\t\t\t\t}]\n\t\t\t}\n\t\t}\n\t});\n\t/*----------------------------------------*/\n\t/*  6.  Line Chart point circle\n\t/*----------------------------------------*/\n\t\n\tvar ctx = document.getElementById(\"linechartpointcircle\");\n\tvar linechartpointcircle = new Chart(ctx, {\n\t\ttype: 'line',\n\t\tdata: {\n\t\t\tlabels: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\"],\n\t\t\tdatasets: [{\n\t\t\t\tlabel: \"My First dataset\",\n\t\t\t\tbackgroundColor: '#03a9f4',\n\t\t\t\tborderColor: '#03a9f4',\n\t\t\t\tdata: [0, 10, 20, 30, 40, 50, 60],\n\t\t\t\tfill: false,\n\t\t\t\tpointRadius: 4,\n\t\t\t\tpointHoverRadius: 10,\n\t\t\t\tshowLine: false \n\t\t\t}]\n\t\t},\n\t\toptions: {\n\t\t\tresponsive: true,\n\t\t\ttitle:{\n\t\t\t\tdisplay:true,\n\t\t\t\ttext:'Line Chart Point Circle'\n\t\t\t},\n\t\t\tlegend: {\n\t\t\t\tdisplay: false\n\t\t\t},\n\t\t\telements: {\n\t\t\t\tpoint: {\n\t\t\t\t\tpointStyle: 'circle',\n\t\t\t\t}\n\t\t\t},\n\t\t\tscales: {\n\t\t\t\txAxes: [{\n\t\t\t\t\tticks: {\n\t\t\t\t\t\tautoSkip: false,\n\t\t\t\t\t\tmaxRotation: 0\n\t\t\t\t\t},\n\t\t\t\t\tticks: {\n\t\t\t\t\t  fontColor: \"#fff\", // this here\n\t\t\t\t\t}\n\t\t\t\t}],\n\t\t\t\tyAxes: [{\n\t\t\t\t\tticks: {\n\t\t\t\t\t\tautoSkip: false,\n\t\t\t\t\t\tmaxRotation: 0\n\t\t\t\t\t},\n\t\t\t\t\tticks: {\n\t\t\t\t\t  fontColor: \"#fff\", // this here\n\t\t\t\t\t}\n\t\t\t\t}]\n\t\t\t}\n\t\t}\n\t});\n\t/*----------------------------------------*/\n\t/*  6.  Line Chart point rectRot\n\t/*----------------------------------------*/\n\t\n\tvar ctx = document.getElementById(\"linechartpointrectRot\");\n\tvar linechartpointrectRot = new Chart(ctx, {\n\t\ttype: 'line',\n\t\tdata: {\n\t\t\tlabels: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\"],\n\t\t\tdatasets: [{\n\t\t\t\tlabel: \"My First dataset\",\n\t\t\t\tbackgroundColor: '#03a9f4',\n\t\t\t\tborderColor: '#03a9f4',\n\t\t\t\tdata: [60, 50, 40, 30, 20, 10, 0],\n\t\t\t\tfill: false,\n\t\t\t\tpointRadius: 6,\n\t\t\t\tpointHoverRadius: 10,\n\t\t\t\tshowLine: false \n\t\t\t}]\n\t\t},\n\t\toptions: {\n\t\t\tresponsive: true,\n\t\t\ttitle:{\n\t\t\t\tdisplay:true,\n\t\t\t\ttext:'Line Chart Point rectRot'\n\t\t\t},\n\t\t\tlegend: {\n\t\t\t\tdisplay: false\n\t\t\t},\n\t\t\telements: {\n\t\t\t\tpoint: {\n\t\t\t\t\tpointStyle: 'rectRot',\n\t\t\t\t}\n\t\t\t},\n\t\t\tscales: {\n\t\t\t\txAxes: [{\n\t\t\t\t\tticks: {\n\t\t\t\t\t\tautoSkip: false,\n\t\t\t\t\t\tmaxRotation: 0\n\t\t\t\t\t},\n\t\t\t\t\tticks: {\n\t\t\t\t\t  fontColor: \"#fff\", // this here\n\t\t\t\t\t}\n\t\t\t\t}],\n\t\t\t\tyAxes: [{\n\t\t\t\t\tticks: {\n\t\t\t\t\t\tautoSkip: false,\n\t\t\t\t\t\tmaxRotation: 0\n\t\t\t\t\t},\n\t\t\t\t\tticks: {\n\t\t\t\t\t  fontColor: \"#fff\", // this here\n\t\t\t\t\t}\n\t\t\t\t}]\n\t\t\t}\n\t\t}\n\t});\n\t/*----------------------------------------*/\n\t/*  6.  Line Chart point cross\n\t/*----------------------------------------*/\n\t\n\tvar ctx = document.getElementById(\"linechartpointcross\");\n\tvar linechartpointcross = new Chart(ctx, {\n\t\ttype: 'line',\n\t\tdata: {\n\t\t\tlabels: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\"],\n\t\t\tdatasets: [{\n\t\t\t\tlabel: \"My First dataset\",\n\t\t\t\tbackgroundColor: '#03a9f4',\n\t\t\t\tborderColor: '#03a9f4',\n\t\t\t\tdata: [0, 10, 60, 30, 0, 80, 60],\n\t\t\t\tfill: false,\n\t\t\t\tpointRadius: 6,\n\t\t\t\tpointHoverRadius: 10,\n\t\t\t\tshowLine: false \n\t\t\t}]\n\t\t},\n\t\toptions: {\n\t\t\tresponsive: true,\n\t\t\ttitle:{\n\t\t\t\tdisplay:true,\n\t\t\t\ttext:'Line Chart Point cross'\n\t\t\t},\n\t\t\tlegend: {\n\t\t\t\tdisplay: false\n\t\t\t},\n\t\t\telements: {\n\t\t\t\tpoint: {\n\t\t\t\t\tpointStyle: 'cross',\n\t\t\t\t}\n\t\t\t},\n\t\t\tscales: {\n\t\t\t\txAxes: [{\n\t\t\t\t\tticks: {\n\t\t\t\t\t\tautoSkip: false,\n\t\t\t\t\t\tmaxRotation: 0\n\t\t\t\t\t},\n\t\t\t\t\tticks: {\n\t\t\t\t\t  fontColor: \"#fff\", // this here\n\t\t\t\t\t}\n\t\t\t\t}],\n\t\t\t\tyAxes: [{\n\t\t\t\t\tticks: {\n\t\t\t\t\t\tautoSkip: false,\n\t\t\t\t\t\tmaxRotation: 0\n\t\t\t\t\t},\n\t\t\t\t\tticks: {\n\t\t\t\t\t  fontColor: \"#fff\", // this here\n\t\t\t\t\t}\n\t\t\t\t}]\n\t\t\t}\n\t\t}\n\t});\n\t\n\t\n\t\t\n})(jQuery); "
  },
  {
    "path": "public/admin/js/charts/rounded-chart.js",
    "content": "(function ($) {\n \"use strict\";\n \n\t /*----------------------------------------*/\n\t/*  1.  pie Chart\n\t/*----------------------------------------*/\n\tvar ctx = document.getElementById(\"piechart\");\n\tvar piechart = new Chart(ctx, {\n\t\ttype: 'pie',\n\t\tdata: {\n\t\t\tlabels: [\"Red\", \"Orange\", \"Yellow\", \"Green\", \"Blue\"],\n\t\t\tdatasets: [{\n\t\t\t\tlabel: 'pie Chart',\n                backgroundColor: [\n\t\t\t\t\t'rgb(255, 99, 132)',\n\t\t\t\t\t'rgb(255, 159, 64)',\n\t\t\t\t\t'rgb(255, 205, 86)',\n\t\t\t\t\t'#03a9f4',\n\t\t\t\t\t'#303030'\n\t\t\t\t],\n\t\t\t\tdata: [10, 20, 30, 40, 60]\n            }]\n\t\t},\n\t\toptions: {\n\t\t\tresponsive: true\n\t\t}\n\t});\n\t /*----------------------------------------*/\n\t/*  2.  polar Chart\n\t/*----------------------------------------*/\n\tvar ctx = document.getElementById(\"polarchart\");\n\tvar polarchart = new Chart(ctx, {\n\t\ttype: 'polarArea',\n\t\tdata: {\n\t\t\tlabels: [\"Red\", \"Orange\", \"Yellow\", \"Green\", \"Blue\"],\n\t\t\tdatasets: [{\n\t\t\t\tlabel: 'pie Chart',\n\t\t\t\tdata: [10, 20, 30, 40, 60],\n                backgroundColor: [\n\t\t\t\t\t'rgb(255, 99, 132)',\n\t\t\t\t\t'rgb(255, 159, 64)',\n\t\t\t\t\t'rgb(255, 205, 86)',\n\t\t\t\t\t'#03a9f4',\n\t\t\t\t\t'rgb(201, 203, 207)'\n\t\t\t\t],\n\t\t\t\t\n            }]\n\t\t},\n\t\toptions: {\n            responsive: true,\n            legend: {\n                 position: 'right',\n            },\n            title: {\n                display: true,\n                text: 'Polar Chart'\n            },\n            scale: {\n              ticks: {\n                beginAtZero: true\n              },\n              reverse: false\n            },\n            animation: {\n                animateRotate: false,\n                animateScale: true\n            }\n        }\n\t});\n\t\n\t /*----------------------------------------*/\n\t/*  3.  radar Chart\n\t/*----------------------------------------*/\n\tvar ctx = document.getElementById(\"radarchart\");\n\tvar radarchart = new Chart(ctx, {\n\t\ttype: 'radar',\n\t\tdata: {\n\t\t\tlabels: [\"Design\", \"Development\", \"Graphic\", \"Android\", \"Games\"],\n\t\t\tdatasets: [{\n\t\t\t\tlabel: \"My First dataset\",\n\t\t\t\tdata: [90, 20, 30, 40, 10],\n                backgroundColor: 'rgb(255, 99, 132)',\n                borderColor: 'rgb(255, 99, 132)',\n                pointBackgroundColor: '#ff0000',\n\t\t\t\t\n            },{\n\t\t\t\tlabel: \"My Second dataset\",\n\t\t\t\tdata: [50, 20, 10, 30, 90],\n                backgroundColor: 'rgb(255, 159, 64)',\n                borderColor: 'rgb(255, 159, 64)',\n                pointBackgroundColor: '#ff0000',\n\t\t\t\t\n            }]\n\t\t},\n\t\toptions: {\n            legend: {\n                position: 'top',\n            },\n            title: {\n                display: true,\n                text: 'Radar Chart'\n            },\n            scale: {\n              ticks: {\n                beginAtZero: true\n              }\n            }\n        }\n\t});\n\t /*----------------------------------------*/\n\t/*  3.  Doughnut Chart\n\t/*----------------------------------------*/\n\tvar ctx = document.getElementById(\"Doughnutchart\");\n\tvar Doughnutchart = new Chart(ctx, {\n\t\ttype: 'radar',\n\t\tdata: {\n\t\t\tlabels: [\"Red\", \"Orange\", \"Yellow\", \"Green\", \"Blue\"],\n\t\t\tdatasets: [{\n\t\t\t\tlabel: 'Dataset 1',\n\t\t\t\tdata: [10, 20, 30, 40, 90],\n                backgroundColor: 'rgb(255, 99, 132)'\n\t\t\t\t\n            }]\n\t\t},\n\t\toptions: {\n            responsive: true,\n            legend: {\n                position: 'top',\n            },\n            title: {\n                display: true,\n                text: 'Doughnut Chart'\n            },\n            animation: {\n                animateScale: true,\n                animateRotate: true\n            }\n        }\n\t});\n\t\n\t\n\n\t \n\t\t\n})(jQuery); "
  },
  {
    "path": "public/admin/js/chat-active/jquery.chat.js",
    "content": "/**\n* Theme: Adminpro Template\n* Author: Mamunur Roshid\n* Chat application \n*/\n\n!function($) {\n    \"use strict\";\n\n    var ChatApp = function() {\n        this.$body = $(\"body\"),\n        this.$chatInput = $('.chat-input'),\n        this.$chatList = $('.conversation-list'),\n        this.$chatSendBtn = $('.chat-send .btn')\n    };\n\n    //saves chat entry - You should send ajax call to server in order to save chat enrty\n    ChatApp.prototype.save = function() {\n        var chatText = this.$chatInput.val();\n        var chatTime = moment().format(\"h:mm\");\n        if (chatText == \"\") {\n            sweetAlert(\"Oops...\", \"You forgot to enter your chat message\", \"error\");\n            this.$chatInput.focus();\n        } else {\n            $('<li class=\"clearfix\"><div class=\"chat-avatar\"><img src=\"img/notification/5.jpg\" alt=\"male\"><i>' + chatTime + '</i></div><div class=\"conversation-text\"><div class=\"ctext-wrap\"><i>John Deo</i><p>' + chatText + '</p></div></div></li>').appendTo('ul.conversation-list');\n            this.$chatInput.val('');\n            this.$chatInput.focus();\n            this.$chatList.scrollTo('100%', '100%', {\n                easing: 'swing'\n            });\n        }\n    },\n    ChatApp.prototype.init = function () {\n        var $this = this;\n        //binding keypress event on chat input box - on enter we are adding the chat into chat list - \n        $this.$chatInput.keypress(function (ev) {\n            var p = ev.which;\n            if (p == 13) {\n                $this.save();\n                return false;\n            }\n        });\n\n\n        //binding send button click\n        $this.$chatSendBtn.click(function (ev) {\n           $this.save();\n           return false;\n        });\n    },\n    //init ChatApp\n    $.ChatApp = new ChatApp, $.ChatApp.Constructor = ChatApp\n    \n}(window.jQuery),\n\n//initializing main application module\nfunction($) {\n    \"use strict\";\n    $.ChatApp.init();\n}(window.jQuery);"
  },
  {
    "path": "public/admin/js/chosen/chosen-active.js",
    "content": "(function ($) {\n \"use strict\";\n \n\t$('.chosen-select').chosen({width: \"100%\"});\n\t\n \n})(jQuery); "
  },
  {
    "path": "public/admin/js/chosen/chosen.jquery.js",
    "content": "/*!\n Chosen, a Select Box Enhancer for jQuery and Prototype\n by Patrick Filler for Harvest, http://getharvest.com\n\n Version 1.1.0\n Full source at https://github.com/harvesthq/chosen\n Copyright (c) 2011 Harvest http://getharvest.com\n\n MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md\n This file is generated by `grunt build`, do not edit it by hand.\n */\n\n(function() {\n    var $, AbstractChosen, Chosen, SelectParser, _ref,\n        __hasProp = {}.hasOwnProperty,\n        __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };\n\n    SelectParser = (function() {\n        function SelectParser() {\n            this.options_index = 0;\n            this.parsed = [];\n        }\n\n        SelectParser.prototype.add_node = function(child) {\n            if (child.nodeName.toUpperCase() === \"OPTGROUP\") {\n                return this.add_group(child);\n            } else {\n                return this.add_option(child);\n            }\n        };\n\n        SelectParser.prototype.add_group = function(group) {\n            var group_position, option, _i, _len, _ref, _results;\n            group_position = this.parsed.length;\n            this.parsed.push({\n                array_index: group_position,\n                group: true,\n                label: this.escapeExpression(group.label),\n                children: 0,\n                disabled: group.disabled\n            });\n            _ref = group.childNodes;\n            _results = [];\n            for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n                option = _ref[_i];\n                _results.push(this.add_option(option, group_position, group.disabled));\n            }\n            return _results;\n        };\n\n        SelectParser.prototype.add_option = function(option, group_position, group_disabled) {\n            if (option.nodeName.toUpperCase() === \"OPTION\") {\n                if (option.text !== \"\") {\n                    if (group_position != null) {\n                        this.parsed[group_position].children += 1;\n                    }\n                    this.parsed.push({\n                        array_index: this.parsed.length,\n                        options_index: this.options_index,\n                        value: option.value,\n                        text: option.text,\n                        html: option.innerHTML,\n                        selected: option.selected,\n                        disabled: group_disabled === true ? group_disabled : option.disabled,\n                        group_array_index: group_position,\n                        classes: option.className,\n                        style: option.style.cssText\n                    });\n                } else {\n                    this.parsed.push({\n                        array_index: this.parsed.length,\n                        options_index: this.options_index,\n                        empty: true\n                    });\n                }\n                return this.options_index += 1;\n            }\n        };\n\n        SelectParser.prototype.escapeExpression = function(text) {\n            var map, unsafe_chars;\n            if ((text == null) || text === false) {\n                return \"\";\n            }\n            if (!/[\\&\\<\\>\\\"\\'\\`]/.test(text)) {\n                return text;\n            }\n            map = {\n                \"<\": \"&lt;\",\n                \">\": \"&gt;\",\n                '\"': \"&quot;\",\n                \"'\": \"&#x27;\",\n                \"`\": \"&#x60;\"\n            };\n            unsafe_chars = /&(?!\\w+;)|[\\<\\>\\\"\\'\\`]/g;\n            return text.replace(unsafe_chars, function(chr) {\n                return map[chr] || \"&amp;\";\n            });\n        };\n\n        return SelectParser;\n\n    })();\n\n    SelectParser.select_to_array = function(select) {\n        var child, parser, _i, _len, _ref;\n        parser = new SelectParser();\n        _ref = select.childNodes;\n        for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n            child = _ref[_i];\n            parser.add_node(child);\n        }\n        return parser.parsed;\n    };\n\n    AbstractChosen = (function() {\n        function AbstractChosen(form_field, options) {\n            this.form_field = form_field;\n            this.options = options != null ? options : {};\n            if (!AbstractChosen.browser_is_supported()) {\n                return;\n            }\n            this.is_multiple = this.form_field.multiple;\n            this.set_default_text();\n            this.set_default_values();\n            this.setup();\n            this.set_up_html();\n            this.register_observers();\n        }\n\n        AbstractChosen.prototype.set_default_values = function() {\n            var _this = this;\n            this.click_test_action = function(evt) {\n                return _this.test_active_click(evt);\n            };\n            this.activate_action = function(evt) {\n                return _this.activate_field(evt);\n            };\n            this.active_field = false;\n            this.mouse_on_container = false;\n            this.results_showing = false;\n            this.result_highlighted = null;\n            this.allow_single_deselect = (this.options.allow_single_deselect != null) && (this.form_field.options[0] != null) && this.form_field.options[0].text === \"\" ? this.options.allow_single_deselect : false;\n            this.disable_search_threshold = this.options.disable_search_threshold || 0;\n            this.disable_search = this.options.disable_search || false;\n            this.enable_split_word_search = this.options.enable_split_word_search != null ? this.options.enable_split_word_search : true;\n            this.group_search = this.options.group_search != null ? this.options.group_search : true;\n            this.search_contains = this.options.search_contains || false;\n            this.single_backstroke_delete = this.options.single_backstroke_delete != null ? this.options.single_backstroke_delete : true;\n            this.max_selected_options = this.options.max_selected_options || Infinity;\n            this.inherit_select_classes = this.options.inherit_select_classes || false;\n            this.display_selected_options = this.options.display_selected_options != null ? this.options.display_selected_options : true;\n            return this.display_disabled_options = this.options.display_disabled_options != null ? this.options.display_disabled_options : true;\n        };\n\n        AbstractChosen.prototype.set_default_text = function() {\n            if (this.form_field.getAttribute(\"data-placeholder\")) {\n                this.default_text = this.form_field.getAttribute(\"data-placeholder\");\n            } else if (this.is_multiple) {\n                this.default_text = this.options.placeholder_text_multiple || this.options.placeholder_text || AbstractChosen.default_multiple_text;\n            } else {\n                this.default_text = this.options.placeholder_text_single || this.options.placeholder_text || AbstractChosen.default_single_text;\n            }\n            return this.results_none_found = this.form_field.getAttribute(\"data-no_results_text\") || this.options.no_results_text || AbstractChosen.default_no_result_text;\n        };\n\n        AbstractChosen.prototype.mouse_enter = function() {\n            return this.mouse_on_container = true;\n        };\n\n        AbstractChosen.prototype.mouse_leave = function() {\n            return this.mouse_on_container = false;\n        };\n\n        AbstractChosen.prototype.input_focus = function(evt) {\n            var _this = this;\n            if (this.is_multiple) {\n                if (!this.active_field) {\n                    return setTimeout((function() {\n                        return _this.container_mousedown();\n                    }), 50);\n                }\n            } else {\n                if (!this.active_field) {\n                    return this.activate_field();\n                }\n            }\n        };\n\n        AbstractChosen.prototype.input_blur = function(evt) {\n            var _this = this;\n            if (!this.mouse_on_container) {\n                this.active_field = false;\n                return setTimeout((function() {\n                    return _this.blur_test();\n                }), 100);\n            }\n        };\n\n        AbstractChosen.prototype.results_option_build = function(options) {\n            var content, data, _i, _len, _ref;\n            content = '';\n            _ref = this.results_data;\n            for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n                data = _ref[_i];\n                if (data.group) {\n                    content += this.result_add_group(data);\n                } else {\n                    content += this.result_add_option(data);\n                }\n                if (options != null ? options.first : void 0) {\n                    if (data.selected && this.is_multiple) {\n                        this.choice_build(data);\n                    } else if (data.selected && !this.is_multiple) {\n                        this.single_set_selected_text(data.text);\n                    }\n                }\n            }\n            return content;\n        };\n\n        AbstractChosen.prototype.result_add_option = function(option) {\n            var classes, option_el;\n            if (!option.search_match) {\n                return '';\n            }\n            if (!this.include_option_in_results(option)) {\n                return '';\n            }\n            classes = [];\n            if (!option.disabled && !(option.selected && this.is_multiple)) {\n                classes.push(\"active-result\");\n            }\n            if (option.disabled && !(option.selected && this.is_multiple)) {\n                classes.push(\"disabled-result\");\n            }\n            if (option.selected) {\n                classes.push(\"result-selected\");\n            }\n            if (option.group_array_index != null) {\n                classes.push(\"group-option\");\n            }\n            if (option.classes !== \"\") {\n                classes.push(option.classes);\n            }\n            option_el = document.createElement(\"li\");\n            option_el.className = classes.join(\" \");\n            option_el.style.cssText = option.style;\n            option_el.setAttribute(\"data-option-array-index\", option.array_index);\n            option_el.innerHTML = option.search_text;\n            return this.outerHTML(option_el);\n        };\n\n        AbstractChosen.prototype.result_add_group = function(group) {\n            var group_el;\n            if (!(group.search_match || group.group_match)) {\n                return '';\n            }\n            if (!(group.active_options > 0)) {\n                return '';\n            }\n            group_el = document.createElement(\"li\");\n            group_el.className = \"group-result\";\n            group_el.innerHTML = group.search_text;\n            return this.outerHTML(group_el);\n        };\n\n        AbstractChosen.prototype.results_update_field = function() {\n            this.set_default_text();\n            if (!this.is_multiple) {\n                this.results_reset_cleanup();\n            }\n            this.result_clear_highlight();\n            this.results_build();\n            if (this.results_showing) {\n                return this.winnow_results();\n            }\n        };\n\n        AbstractChosen.prototype.reset_single_select_options = function() {\n            var result, _i, _len, _ref, _results;\n            _ref = this.results_data;\n            _results = [];\n            for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n                result = _ref[_i];\n                if (result.selected) {\n                    _results.push(result.selected = false);\n                } else {\n                    _results.push(void 0);\n                }\n            }\n            return _results;\n        };\n\n        AbstractChosen.prototype.results_toggle = function() {\n            if (this.results_showing) {\n                return this.results_hide();\n            } else {\n                return this.results_show();\n            }\n        };\n\n        AbstractChosen.prototype.results_search = function(evt) {\n            if (this.results_showing) {\n                return this.winnow_results();\n            } else {\n                return this.results_show();\n            }\n        };\n\n        AbstractChosen.prototype.winnow_results = function() {\n            var escapedSearchText, option, regex, regexAnchor, results, results_group, searchText, startpos, text, zregex, _i, _len, _ref;\n            this.no_results_clear();\n            results = 0;\n            searchText = this.get_search_text();\n            escapedSearchText = searchText.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, \"\\\\$&\");\n            regexAnchor = this.search_contains ? \"\" : \"^\";\n            regex = new RegExp(regexAnchor + escapedSearchText, 'i');\n            zregex = new RegExp(escapedSearchText, 'i');\n            _ref = this.results_data;\n            for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n                option = _ref[_i];\n                option.search_match = false;\n                results_group = null;\n                if (this.include_option_in_results(option)) {\n                    if (option.group) {\n                        option.group_match = false;\n                        option.active_options = 0;\n                    }\n                    if ((option.group_array_index != null) && this.results_data[option.group_array_index]) {\n                        results_group = this.results_data[option.group_array_index];\n                        if (results_group.active_options === 0 && results_group.search_match) {\n                            results += 1;\n                        }\n                        results_group.active_options += 1;\n                    }\n                    if (!(option.group && !this.group_search)) {\n                        option.search_text = option.group ? option.label : option.html;\n                        option.search_match = this.search_string_match(option.search_text, regex);\n                        if (option.search_match && !option.group) {\n                            results += 1;\n                        }\n                        if (option.search_match) {\n                            if (searchText.length) {\n                                startpos = option.search_text.search(zregex);\n                                text = option.search_text.substr(0, startpos + searchText.length) + '</em>' + option.search_text.substr(startpos + searchText.length);\n                                option.search_text = text.substr(0, startpos) + '<em>' + text.substr(startpos);\n                            }\n                            if (results_group != null) {\n                                results_group.group_match = true;\n                            }\n                        } else if ((option.group_array_index != null) && this.results_data[option.group_array_index].search_match) {\n                            option.search_match = true;\n                        }\n                    }\n                }\n            }\n            this.result_clear_highlight();\n            if (results < 1 && searchText.length) {\n                this.update_results_content(\"\");\n                return this.no_results(searchText);\n            } else {\n                this.update_results_content(this.results_option_build());\n                return this.winnow_results_set_highlight();\n            }\n        };\n\n        AbstractChosen.prototype.search_string_match = function(search_string, regex) {\n            var part, parts, _i, _len;\n            if (regex.test(search_string)) {\n                return true;\n            } else if (this.enable_split_word_search && (search_string.indexOf(\" \") >= 0 || search_string.indexOf(\"[\") === 0)) {\n                parts = search_string.replace(/\\[|\\]/g, \"\").split(\" \");\n                if (parts.length) {\n                    for (_i = 0, _len = parts.length; _i < _len; _i++) {\n                        part = parts[_i];\n                        if (regex.test(part)) {\n                            return true;\n                        }\n                    }\n                }\n            }\n        };\n\n        AbstractChosen.prototype.choices_count = function() {\n            var option, _i, _len, _ref;\n            if (this.selected_option_count != null) {\n                return this.selected_option_count;\n            }\n            this.selected_option_count = 0;\n            _ref = this.form_field.options;\n            for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n                option = _ref[_i];\n                if (option.selected) {\n                    this.selected_option_count += 1;\n                }\n            }\n            return this.selected_option_count;\n        };\n\n        AbstractChosen.prototype.choices_click = function(evt) {\n            evt.preventDefault();\n            if (!(this.results_showing || this.is_disabled)) {\n                return this.results_show();\n            }\n        };\n\n        AbstractChosen.prototype.keyup_checker = function(evt) {\n            var stroke, _ref;\n            stroke = (_ref = evt.which) != null ? _ref : evt.keyCode;\n            this.search_field_scale();\n            switch (stroke) {\n                case 8:\n                    if (this.is_multiple && this.backstroke_length < 1 && this.choices_count() > 0) {\n                        return this.keydown_backstroke();\n                    } else if (!this.pending_backstroke) {\n                        this.result_clear_highlight();\n                        return this.results_search();\n                    }\n                    break;\n                case 13:\n                    evt.preventDefault();\n                    if (this.results_showing) {\n                        return this.result_select(evt);\n                    }\n                    break;\n                case 27:\n                    if (this.results_showing) {\n                        this.results_hide();\n                    }\n                    return true;\n                case 9:\n                case 38:\n                case 40:\n                case 16:\n                case 91:\n                case 17:\n                    break;\n                default:\n                    return this.results_search();\n            }\n        };\n\n        AbstractChosen.prototype.clipboard_event_checker = function(evt) {\n            var _this = this;\n            return setTimeout((function() {\n                return _this.results_search();\n            }), 50);\n        };\n\n        AbstractChosen.prototype.container_width = function() {\n            if (this.options.width != null) {\n                return this.options.width;\n            } else {\n                return \"\" + this.form_field.offsetWidth + \"px\";\n            }\n        };\n\n        AbstractChosen.prototype.include_option_in_results = function(option) {\n            if (this.is_multiple && (!this.display_selected_options && option.selected)) {\n                return false;\n            }\n            if (!this.display_disabled_options && option.disabled) {\n                return false;\n            }\n            if (option.empty) {\n                return false;\n            }\n            return true;\n        };\n\n        AbstractChosen.prototype.search_results_touchstart = function(evt) {\n            this.touch_started = true;\n            return this.search_results_mouseover(evt);\n        };\n\n        AbstractChosen.prototype.search_results_touchmove = function(evt) {\n            this.touch_started = false;\n            return this.search_results_mouseout(evt);\n        };\n\n        AbstractChosen.prototype.search_results_touchend = function(evt) {\n            if (this.touch_started) {\n                return this.search_results_mouseup(evt);\n            }\n        };\n\n        AbstractChosen.prototype.outerHTML = function(element) {\n            var tmp;\n            if (element.outerHTML) {\n                return element.outerHTML;\n            }\n            tmp = document.createElement(\"div\");\n            tmp.appendChild(element);\n            return tmp.innerHTML;\n        };\n\n        AbstractChosen.browser_is_supported = function() {\n            if (window.navigator.appName === \"Microsoft Internet Explorer\") {\n                return document.documentMode >= 8;\n            }\n            if (/iP(od|hone)/i.test(window.navigator.userAgent)) {\n                return false;\n            }\n            if (/Android/i.test(window.navigator.userAgent)) {\n                if (/Mobile/i.test(window.navigator.userAgent)) {\n                    return false;\n                }\n            }\n            return true;\n        };\n\n        AbstractChosen.default_multiple_text = \"Select Some Options\";\n\n        AbstractChosen.default_single_text = \"Select an Option\";\n\n        AbstractChosen.default_no_result_text = \"No results match\";\n\n        return AbstractChosen;\n\n    })();\n\n    $ = jQuery;\n\n    $.fn.extend({\n        chosen: function(options) {\n            if (!AbstractChosen.browser_is_supported()) {\n                return this;\n            }\n            return this.each(function(input_field) {\n                var $this, chosen;\n                $this = $(this);\n                chosen = $this.data('chosen');\n                if (options === 'destroy' && chosen) {\n                    chosen.destroy();\n                } else if (!chosen) {\n                    $this.data('chosen', new Chosen(this, options));\n                }\n            });\n        }\n    });\n\n    Chosen = (function(_super) {\n        __extends(Chosen, _super);\n\n        function Chosen() {\n            _ref = Chosen.__super__.constructor.apply(this, arguments);\n            return _ref;\n        }\n\n        Chosen.prototype.setup = function() {\n            this.form_field_jq = $(this.form_field);\n            this.current_selectedIndex = this.form_field.selectedIndex;\n            return this.is_rtl = this.form_field_jq.hasClass(\"chosen-rtl\");\n        };\n\n        Chosen.prototype.set_up_html = function() {\n            var container_classes, container_props;\n            container_classes = [\"chosen-container\"];\n            container_classes.push(\"chosen-container-\" + (this.is_multiple ? \"multi\" : \"single\"));\n            if (this.inherit_select_classes && this.form_field.className) {\n                container_classes.push(this.form_field.className);\n            }\n            if (this.is_rtl) {\n                container_classes.push(\"chosen-rtl\");\n            }\n            container_props = {\n                'class': container_classes.join(' '),\n                'style': \"width: \" + (this.container_width()) + \";\",\n                'title': this.form_field.title\n            };\n            if (this.form_field.id.length) {\n                container_props.id = this.form_field.id.replace(/[^\\w]/g, '_') + \"_chosen\";\n            }\n            this.container = $(\"<div />\", container_props);\n            if (this.is_multiple) {\n                this.container.html('<ul class=\"chosen-choices\"><li class=\"search-field\"><input type=\"text\" value=\"' + this.default_text + '\" class=\"default\" autocomplete=\"off\" style=\"width:25px;\" /></li></ul><div class=\"chosen-drop\"><ul class=\"chosen-results\"></ul></div>');\n            } else {\n                this.container.html('<a class=\"chosen-single chosen-default\" tabindex=\"-1\"><span>' + this.default_text + '</span><div><b></b></div></a><div class=\"chosen-drop\"><div class=\"chosen-search\"><input type=\"text\" autocomplete=\"off\" /></div><ul class=\"chosen-results\"></ul></div>');\n            }\n            this.form_field_jq.hide().after(this.container);\n            this.dropdown = this.container.find('div.chosen-drop').first();\n            this.search_field = this.container.find('input').first();\n            this.search_results = this.container.find('ul.chosen-results').first();\n            this.search_field_scale();\n            this.search_no_results = this.container.find('li.no-results').first();\n            if (this.is_multiple) {\n                this.search_choices = this.container.find('ul.chosen-choices').first();\n                this.search_container = this.container.find('li.search-field').first();\n            } else {\n                this.search_container = this.container.find('div.chosen-search').first();\n                this.selected_item = this.container.find('.chosen-single').first();\n            }\n            this.results_build();\n            this.set_tab_index();\n            this.set_label_behavior();\n            return this.form_field_jq.trigger(\"chosen:ready\", {\n                chosen: this\n            });\n        };\n\n        Chosen.prototype.register_observers = function() {\n            var _this = this;\n            this.container.bind('mousedown.chosen', function(evt) {\n                _this.container_mousedown(evt);\n            });\n            this.container.bind('mouseup.chosen', function(evt) {\n                _this.container_mouseup(evt);\n            });\n            this.container.bind('mouseenter.chosen', function(evt) {\n                _this.mouse_enter(evt);\n            });\n            this.container.bind('mouseleave.chosen', function(evt) {\n                _this.mouse_leave(evt);\n            });\n            this.search_results.bind('mouseup.chosen', function(evt) {\n                _this.search_results_mouseup(evt);\n            });\n            this.search_results.bind('mouseover.chosen', function(evt) {\n                _this.search_results_mouseover(evt);\n            });\n            this.search_results.bind('mouseout.chosen', function(evt) {\n                _this.search_results_mouseout(evt);\n            });\n            this.search_results.bind('mousewheel.chosen DOMMouseScroll.chosen', function(evt) {\n                _this.search_results_mousewheel(evt);\n            });\n            this.search_results.bind('touchstart.chosen', function(evt) {\n                _this.search_results_touchstart(evt);\n            });\n            this.search_results.bind('touchmove.chosen', function(evt) {\n                _this.search_results_touchmove(evt);\n            });\n            this.search_results.bind('touchend.chosen', function(evt) {\n                _this.search_results_touchend(evt);\n            });\n            this.form_field_jq.bind(\"chosen:updated.chosen\", function(evt) {\n                _this.results_update_field(evt);\n            });\n            this.form_field_jq.bind(\"chosen:activate.chosen\", function(evt) {\n                _this.activate_field(evt);\n            });\n            this.form_field_jq.bind(\"chosen:open.chosen\", function(evt) {\n                _this.container_mousedown(evt);\n            });\n            this.form_field_jq.bind(\"chosen:close.chosen\", function(evt) {\n                _this.input_blur(evt);\n            });\n            this.search_field.bind('blur.chosen', function(evt) {\n                _this.input_blur(evt);\n            });\n            this.search_field.bind('keyup.chosen', function(evt) {\n                _this.keyup_checker(evt);\n            });\n            this.search_field.bind('keydown.chosen', function(evt) {\n                _this.keydown_checker(evt);\n            });\n            this.search_field.bind('focus.chosen', function(evt) {\n                _this.input_focus(evt);\n            });\n            this.search_field.bind('cut.chosen', function(evt) {\n                _this.clipboard_event_checker(evt);\n            });\n            this.search_field.bind('paste.chosen', function(evt) {\n                _this.clipboard_event_checker(evt);\n            });\n            if (this.is_multiple) {\n                return this.search_choices.bind('click.chosen', function(evt) {\n                    _this.choices_click(evt);\n                });\n            } else {\n                return this.container.bind('click.chosen', function(evt) {\n                    evt.preventDefault();\n                });\n            }\n        };\n\n        Chosen.prototype.destroy = function() {\n            $(this.container[0].ownerDocument).unbind(\"click.chosen\", this.click_test_action);\n            if (this.search_field[0].tabIndex) {\n                this.form_field_jq[0].tabIndex = this.search_field[0].tabIndex;\n            }\n            this.container.remove();\n            this.form_field_jq.removeData('chosen');\n            return this.form_field_jq.show();\n        };\n\n        Chosen.prototype.search_field_disabled = function() {\n            this.is_disabled = this.form_field_jq[0].disabled;\n            if (this.is_disabled) {\n                this.container.addClass('chosen-disabled');\n                this.search_field[0].disabled = true;\n                if (!this.is_multiple) {\n                    this.selected_item.unbind(\"focus.chosen\", this.activate_action);\n                }\n                return this.close_field();\n            } else {\n                this.container.removeClass('chosen-disabled');\n                this.search_field[0].disabled = false;\n                if (!this.is_multiple) {\n                    return this.selected_item.bind(\"focus.chosen\", this.activate_action);\n                }\n            }\n        };\n\n        Chosen.prototype.container_mousedown = function(evt) {\n            if (!this.is_disabled) {\n                if (evt && evt.type === \"mousedown\" && !this.results_showing) {\n                    evt.preventDefault();\n                }\n                if (!((evt != null) && ($(evt.target)).hasClass(\"search-choice-close\"))) {\n                    if (!this.active_field) {\n                        if (this.is_multiple) {\n                            this.search_field.val(\"\");\n                        }\n                        $(this.container[0].ownerDocument).bind('click.chosen', this.click_test_action);\n                        this.results_show();\n                    } else if (!this.is_multiple && evt && (($(evt.target)[0] === this.selected_item[0]) || $(evt.target).parents(\"a.chosen-single\").length)) {\n                        evt.preventDefault();\n                        this.results_toggle();\n                    }\n                    return this.activate_field();\n                }\n            }\n        };\n\n        Chosen.prototype.container_mouseup = function(evt) {\n            if (evt.target.nodeName === \"ABBR\" && !this.is_disabled) {\n                return this.results_reset(evt);\n            }\n        };\n\n        Chosen.prototype.search_results_mousewheel = function(evt) {\n            var delta;\n            if (evt.originalEvent) {\n                delta = -evt.originalEvent.wheelDelta || evt.originalEvent.detail;\n            }\n            if (delta != null) {\n                evt.preventDefault();\n                if (evt.type === 'DOMMouseScroll') {\n                    delta = delta * 40;\n                }\n                return this.search_results.scrollTop(delta + this.search_results.scrollTop());\n            }\n        };\n\n        Chosen.prototype.blur_test = function(evt) {\n            if (!this.active_field && this.container.hasClass(\"chosen-container-active\")) {\n                return this.close_field();\n            }\n        };\n\n        Chosen.prototype.close_field = function() {\n            $(this.container[0].ownerDocument).unbind(\"click.chosen\", this.click_test_action);\n            this.active_field = false;\n            this.results_hide();\n            this.container.removeClass(\"chosen-container-active\");\n            this.clear_backstroke();\n            this.show_search_field_default();\n            return this.search_field_scale();\n        };\n\n        Chosen.prototype.activate_field = function() {\n            this.container.addClass(\"chosen-container-active\");\n            this.active_field = true;\n            this.search_field.val(this.search_field.val());\n            return this.search_field.focus();\n        };\n\n        Chosen.prototype.test_active_click = function(evt) {\n            var active_container;\n            active_container = $(evt.target).closest('.chosen-container');\n            if (active_container.length && this.container[0] === active_container[0]) {\n                return this.active_field = true;\n            } else {\n                return this.close_field();\n            }\n        };\n\n        Chosen.prototype.results_build = function() {\n            this.parsing = true;\n            this.selected_option_count = null;\n            this.results_data = SelectParser.select_to_array(this.form_field);\n            if (this.is_multiple) {\n                this.search_choices.find(\"li.search-choice\").remove();\n            } else if (!this.is_multiple) {\n                this.single_set_selected_text();\n                if (this.disable_search || this.form_field.options.length <= this.disable_search_threshold) {\n                    this.search_field[0].readOnly = true;\n                    this.container.addClass(\"chosen-container-single-nosearch\");\n                } else {\n                    this.search_field[0].readOnly = false;\n                    this.container.removeClass(\"chosen-container-single-nosearch\");\n                }\n            }\n            this.update_results_content(this.results_option_build({\n                first: true\n            }));\n            this.search_field_disabled();\n            this.show_search_field_default();\n            this.search_field_scale();\n            return this.parsing = false;\n        };\n\n        Chosen.prototype.result_do_highlight = function(el) {\n            var high_bottom, high_top, maxHeight, visible_bottom, visible_top;\n            if (el.length) {\n                this.result_clear_highlight();\n                this.result_highlight = el;\n                this.result_highlight.addClass(\"highlighted\");\n                maxHeight = parseInt(this.search_results.css(\"maxHeight\"), 10);\n                visible_top = this.search_results.scrollTop();\n                visible_bottom = maxHeight + visible_top;\n                high_top = this.result_highlight.position().top + this.search_results.scrollTop();\n                high_bottom = high_top + this.result_highlight.outerHeight();\n                if (high_bottom >= visible_bottom) {\n                    return this.search_results.scrollTop((high_bottom - maxHeight) > 0 ? high_bottom - maxHeight : 0);\n                } else if (high_top < visible_top) {\n                    return this.search_results.scrollTop(high_top);\n                }\n            }\n        };\n\n        Chosen.prototype.result_clear_highlight = function() {\n            if (this.result_highlight) {\n                this.result_highlight.removeClass(\"highlighted\");\n            }\n            return this.result_highlight = null;\n        };\n\n        Chosen.prototype.results_show = function() {\n            if (this.is_multiple && this.max_selected_options <= this.choices_count()) {\n                this.form_field_jq.trigger(\"chosen:maxselected\", {\n                    chosen: this\n                });\n                return false;\n            }\n            this.container.addClass(\"chosen-with-drop\");\n            this.results_showing = true;\n            this.search_field.focus();\n            this.search_field.val(this.search_field.val());\n            this.winnow_results();\n            return this.form_field_jq.trigger(\"chosen:showing_dropdown\", {\n                chosen: this\n            });\n        };\n\n        Chosen.prototype.update_results_content = function(content) {\n            return this.search_results.html(content);\n        };\n\n        Chosen.prototype.results_hide = function() {\n            if (this.results_showing) {\n                this.result_clear_highlight();\n                this.container.removeClass(\"chosen-with-drop\");\n                this.form_field_jq.trigger(\"chosen:hiding_dropdown\", {\n                    chosen: this\n                });\n            }\n            return this.results_showing = false;\n        };\n\n        Chosen.prototype.set_tab_index = function(el) {\n            var ti;\n            if (this.form_field.tabIndex) {\n                ti = this.form_field.tabIndex;\n                this.form_field.tabIndex = -1;\n                return this.search_field[0].tabIndex = ti;\n            }\n        };\n\n        Chosen.prototype.set_label_behavior = function() {\n            var _this = this;\n            this.form_field_label = this.form_field_jq.parents(\"label\");\n            if (!this.form_field_label.length && this.form_field.id.length) {\n                this.form_field_label = $(\"label[for='\" + this.form_field.id + \"']\");\n            }\n            if (this.form_field_label.length > 0) {\n                return this.form_field_label.bind('click.chosen', function(evt) {\n                    if (_this.is_multiple) {\n                        return _this.container_mousedown(evt);\n                    } else {\n                        return _this.activate_field();\n                    }\n                });\n            }\n        };\n\n        Chosen.prototype.show_search_field_default = function() {\n            if (this.is_multiple && this.choices_count() < 1 && !this.active_field) {\n                this.search_field.val(this.default_text);\n                return this.search_field.addClass(\"default\");\n            } else {\n                this.search_field.val(\"\");\n                return this.search_field.removeClass(\"default\");\n            }\n        };\n\n        Chosen.prototype.search_results_mouseup = function(evt) {\n            var target;\n            target = $(evt.target).hasClass(\"active-result\") ? $(evt.target) : $(evt.target).parents(\".active-result\").first();\n            if (target.length) {\n                this.result_highlight = target;\n                this.result_select(evt);\n                return this.search_field.focus();\n            }\n        };\n\n        Chosen.prototype.search_results_mouseover = function(evt) {\n            var target;\n            target = $(evt.target).hasClass(\"active-result\") ? $(evt.target) : $(evt.target).parents(\".active-result\").first();\n            if (target) {\n                return this.result_do_highlight(target);\n            }\n        };\n\n        Chosen.prototype.search_results_mouseout = function(evt) {\n            if ($(evt.target).hasClass(\"active-result\" || $(evt.target).parents('.active-result').first())) {\n                return this.result_clear_highlight();\n            }\n        };\n\n        Chosen.prototype.choice_build = function(item) {\n            var choice, close_link,\n                _this = this;\n            choice = $('<li />', {\n                \"class\": \"search-choice\"\n            }).html(\"<span>\" + item.html + \"</span>\");\n            if (item.disabled) {\n                choice.addClass('search-choice-disabled');\n            } else {\n                close_link = $('<a />', {\n                    \"class\": 'search-choice-close',\n                    'data-option-array-index': item.array_index\n                });\n                close_link.bind('click.chosen', function(evt) {\n                    return _this.choice_destroy_link_click(evt);\n                });\n                choice.append(close_link);\n            }\n            return this.search_container.before(choice);\n        };\n\n        Chosen.prototype.choice_destroy_link_click = function(evt) {\n            evt.preventDefault();\n            evt.stopPropagation();\n            if (!this.is_disabled) {\n                return this.choice_destroy($(evt.target));\n            }\n        };\n\n        Chosen.prototype.choice_destroy = function(link) {\n            if (this.result_deselect(link[0].getAttribute(\"data-option-array-index\"))) {\n                this.show_search_field_default();\n                if (this.is_multiple && this.choices_count() > 0 && this.search_field.val().length < 1) {\n                    this.results_hide();\n                }\n                link.parents('li').first().remove();\n                return this.search_field_scale();\n            }\n        };\n\n        Chosen.prototype.results_reset = function() {\n            this.reset_single_select_options();\n            this.form_field.options[0].selected = true;\n            this.single_set_selected_text();\n            this.show_search_field_default();\n            this.results_reset_cleanup();\n            this.form_field_jq.trigger(\"change\");\n            if (this.active_field) {\n                return this.results_hide();\n            }\n        };\n\n        Chosen.prototype.results_reset_cleanup = function() {\n            this.current_selectedIndex = this.form_field.selectedIndex;\n            return this.selected_item.find(\"abbr\").remove();\n        };\n\n        Chosen.prototype.result_select = function(evt) {\n            var high, item;\n            if (this.result_highlight) {\n                high = this.result_highlight;\n                this.result_clear_highlight();\n                if (this.is_multiple && this.max_selected_options <= this.choices_count()) {\n                    this.form_field_jq.trigger(\"chosen:maxselected\", {\n                        chosen: this\n                    });\n                    return false;\n                }\n                if (this.is_multiple) {\n                    high.removeClass(\"active-result\");\n                } else {\n                    this.reset_single_select_options();\n                }\n                item = this.results_data[high[0].getAttribute(\"data-option-array-index\")];\n                item.selected = true;\n                this.form_field.options[item.options_index].selected = true;\n                this.selected_option_count = null;\n                if (this.is_multiple) {\n                    this.choice_build(item);\n                } else {\n                    this.single_set_selected_text(item.text);\n                }\n                if (!((evt.metaKey || evt.ctrlKey) && this.is_multiple)) {\n                    this.results_hide();\n                }\n                this.search_field.val(\"\");\n                if (this.is_multiple || this.form_field.selectedIndex !== this.current_selectedIndex) {\n                    this.form_field_jq.trigger(\"change\", {\n                        'selected': this.form_field.options[item.options_index].value\n                    });\n                }\n                this.current_selectedIndex = this.form_field.selectedIndex;\n                return this.search_field_scale();\n            }\n        };\n\n        Chosen.prototype.single_set_selected_text = function(text) {\n            if (text == null) {\n                text = this.default_text;\n            }\n            if (text === this.default_text) {\n                this.selected_item.addClass(\"chosen-default\");\n            } else {\n                this.single_deselect_control_build();\n                this.selected_item.removeClass(\"chosen-default\");\n            }\n            return this.selected_item.find(\"span\").text(text);\n        };\n\n        Chosen.prototype.result_deselect = function(pos) {\n            var result_data;\n            result_data = this.results_data[pos];\n            if (!this.form_field.options[result_data.options_index].disabled) {\n                result_data.selected = false;\n                this.form_field.options[result_data.options_index].selected = false;\n                this.selected_option_count = null;\n                this.result_clear_highlight();\n                if (this.results_showing) {\n                    this.winnow_results();\n                }\n                this.form_field_jq.trigger(\"change\", {\n                    deselected: this.form_field.options[result_data.options_index].value\n                });\n                this.search_field_scale();\n                return true;\n            } else {\n                return false;\n            }\n        };\n\n        Chosen.prototype.single_deselect_control_build = function() {\n            if (!this.allow_single_deselect) {\n                return;\n            }\n            if (!this.selected_item.find(\"abbr\").length) {\n                this.selected_item.find(\"span\").first().after(\"<abbr class=\\\"search-choice-close\\\"></abbr>\");\n            }\n            return this.selected_item.addClass(\"chosen-single-with-deselect\");\n        };\n\n        Chosen.prototype.get_search_text = function() {\n            if (this.search_field.val() === this.default_text) {\n                return \"\";\n            } else {\n                return $('<div/>').text($.trim(this.search_field.val())).html();\n            }\n        };\n\n        Chosen.prototype.winnow_results_set_highlight = function() {\n            var do_high, selected_results;\n            selected_results = !this.is_multiple ? this.search_results.find(\".result-selected.active-result\") : [];\n            do_high = selected_results.length ? selected_results.first() : this.search_results.find(\".active-result\").first();\n            if (do_high != null) {\n                return this.result_do_highlight(do_high);\n            }\n        };\n\n        Chosen.prototype.no_results = function(terms) {\n            var no_results_html;\n            no_results_html = $('<li class=\"no-results\">' + this.results_none_found + ' \"<span></span>\"</li>');\n            no_results_html.find(\"span\").first().html(terms);\n            this.search_results.append(no_results_html);\n            return this.form_field_jq.trigger(\"chosen:no_results\", {\n                chosen: this\n            });\n        };\n\n        Chosen.prototype.no_results_clear = function() {\n            return this.search_results.find(\".no-results\").remove();\n        };\n\n        Chosen.prototype.keydown_arrow = function() {\n            var next_sib;\n            if (this.results_showing && this.result_highlight) {\n                next_sib = this.result_highlight.nextAll(\"li.active-result\").first();\n                if (next_sib) {\n                    return this.result_do_highlight(next_sib);\n                }\n            } else {\n                return this.results_show();\n            }\n        };\n\n        Chosen.prototype.keyup_arrow = function() {\n            var prev_sibs;\n            if (!this.results_showing && !this.is_multiple) {\n                return this.results_show();\n            } else if (this.result_highlight) {\n                prev_sibs = this.result_highlight.prevAll(\"li.active-result\");\n                if (prev_sibs.length) {\n                    return this.result_do_highlight(prev_sibs.first());\n                } else {\n                    if (this.choices_count() > 0) {\n                        this.results_hide();\n                    }\n                    return this.result_clear_highlight();\n                }\n            }\n        };\n\n        Chosen.prototype.keydown_backstroke = function() {\n            var next_available_destroy;\n            if (this.pending_backstroke) {\n                this.choice_destroy(this.pending_backstroke.find(\"a\").first());\n                return this.clear_backstroke();\n            } else {\n                next_available_destroy = this.search_container.siblings(\"li.search-choice\").last();\n                if (next_available_destroy.length && !next_available_destroy.hasClass(\"search-choice-disabled\")) {\n                    this.pending_backstroke = next_available_destroy;\n                    if (this.single_backstroke_delete) {\n                        return this.keydown_backstroke();\n                    } else {\n                        return this.pending_backstroke.addClass(\"search-choice-focus\");\n                    }\n                }\n            }\n        };\n\n        Chosen.prototype.clear_backstroke = function() {\n            if (this.pending_backstroke) {\n                this.pending_backstroke.removeClass(\"search-choice-focus\");\n            }\n            return this.pending_backstroke = null;\n        };\n\n        Chosen.prototype.keydown_checker = function(evt) {\n            var stroke, _ref1;\n            stroke = (_ref1 = evt.which) != null ? _ref1 : evt.keyCode;\n            this.search_field_scale();\n            if (stroke !== 8 && this.pending_backstroke) {\n                this.clear_backstroke();\n            }\n            switch (stroke) {\n                case 8:\n                    this.backstroke_length = this.search_field.val().length;\n                    break;\n                case 9:\n                    if (this.results_showing && !this.is_multiple) {\n                        this.result_select(evt);\n                    }\n                    this.mouse_on_container = false;\n                    break;\n                case 13:\n                    evt.preventDefault();\n                    break;\n                case 38:\n                    evt.preventDefault();\n                    this.keyup_arrow();\n                    break;\n                case 40:\n                    evt.preventDefault();\n                    this.keydown_arrow();\n                    break;\n            }\n        };\n\n        Chosen.prototype.search_field_scale = function() {\n            var div, f_width, h, style, style_block, styles, w, _i, _len;\n            if (this.is_multiple) {\n                h = 0;\n                w = 0;\n                style_block = \"position:absolute; left: -1000px; top: -1000px; display:none;\";\n                styles = ['font-size', 'font-style', 'font-weight', 'font-family', 'line-height', 'text-transform', 'letter-spacing'];\n                for (_i = 0, _len = styles.length; _i < _len; _i++) {\n                    style = styles[_i];\n                    style_block += style + \":\" + this.search_field.css(style) + \";\";\n                }\n                div = $('<div />', {\n                    'style': style_block\n                });\n                div.text(this.search_field.val());\n                $('body').append(div);\n                w = div.width() + 25;\n                div.remove();\n                f_width = this.container.outerWidth();\n                if (w > f_width - 10) {\n                    w = f_width - 10;\n                }\n                return this.search_field.css({\n                    'width': w + 'px'\n                });\n            }\n        };\n\n        return Chosen;\n\n    })(AbstractChosen);\n\n}).call(this);"
  },
  {
    "path": "public/admin/js/code-editor/code-editor-active.js",
    "content": "(function ($) {\n \"use strict\";\n\n\t\tvar editor_one = CodeMirror.fromTextArea(document.getElementById(\"code1\"), {\n\t\t\t\t\t lineNumbers: true,\n\t\t\t\t\t matchBrackets: true,\n\t\t\t\t\t styleActiveLine: true,\n\t\t\t\t\t theme:\"ambiance\"\n\t\t\t\t });\n\n\t\t\t\t var editor_two = CodeMirror.fromTextArea(document.getElementById(\"code2\"), {\n\t\t\t\t\t lineNumbers: true,\n\t\t\t\t\t matchBrackets: true,\n\t\t\t\t\t styleActiveLine: true\n\t\t\t\t });\n\t\t \n \n})(jQuery); "
  },
  {
    "path": "public/admin/js/code-editor/code-editor.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n// TODO actually recognize syntax of TypeScript constructs\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"javascript\", function(config, parserConfig) {\n  var indentUnit = config.indentUnit;\n  var statementIndent = parserConfig.statementIndent;\n  var jsonldMode = parserConfig.jsonld;\n  var jsonMode = parserConfig.json || jsonldMode;\n  var isTS = parserConfig.typescript;\n  var wordRE = parserConfig.wordCharacters || /[\\w$\\xa1-\\uffff]/;\n\n  // Tokenizer\n\n  var keywords = function(){\n    function kw(type) {return {type: type, style: \"keyword\"};}\n    var A = kw(\"keyword a\"), B = kw(\"keyword b\"), C = kw(\"keyword c\");\n    var operator = kw(\"operator\"), atom = {type: \"atom\", style: \"atom\"};\n\n    var jsKeywords = {\n      \"if\": kw(\"if\"), \"while\": A, \"with\": A, \"else\": B, \"do\": B, \"try\": B, \"finally\": B,\n      \"return\": C, \"break\": C, \"continue\": C, \"new\": C, \"delete\": C, \"throw\": C, \"debugger\": C,\n      \"var\": kw(\"var\"), \"const\": kw(\"var\"), \"let\": kw(\"var\"),\n      \"function\": kw(\"function\"), \"catch\": kw(\"catch\"),\n      \"for\": kw(\"for\"), \"switch\": kw(\"switch\"), \"case\": kw(\"case\"), \"default\": kw(\"default\"),\n      \"in\": operator, \"typeof\": operator, \"instanceof\": operator,\n      \"true\": atom, \"false\": atom, \"null\": atom, \"undefined\": atom, \"NaN\": atom, \"Infinity\": atom,\n      \"this\": kw(\"this\"), \"module\": kw(\"module\"), \"class\": kw(\"class\"), \"super\": kw(\"atom\"),\n      \"yield\": C, \"export\": kw(\"export\"), \"import\": kw(\"import\"), \"extends\": C\n    };\n\n    // Extend the 'normal' keywords with the TypeScript language extensions\n    if (isTS) {\n      var type = {type: \"variable\", style: \"variable-3\"};\n      var tsKeywords = {\n        // object-like things\n        \"interface\": kw(\"interface\"),\n        \"extends\": kw(\"extends\"),\n        \"constructor\": kw(\"constructor\"),\n\n        // scope modifiers\n        \"public\": kw(\"public\"),\n        \"private\": kw(\"private\"),\n        \"protected\": kw(\"protected\"),\n        \"static\": kw(\"static\"),\n\n        // types\n        \"string\": type, \"number\": type, \"bool\": type, \"any\": type\n      };\n\n      for (var attr in tsKeywords) {\n        jsKeywords[attr] = tsKeywords[attr];\n      }\n    }\n\n    return jsKeywords;\n  }();\n\n  var isOperatorChar = /[+\\-*&%=<>!?|~^]/;\n  var isJsonldKeyword = /^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)\"/;\n\n  function readRegexp(stream) {\n    var escaped = false, next, inSet = false;\n    while ((next = stream.next()) != null) {\n      if (!escaped) {\n        if (next == \"/\" && !inSet) return;\n        if (next == \"[\") inSet = true;\n        else if (inSet && next == \"]\") inSet = false;\n      }\n      escaped = !escaped && next == \"\\\\\";\n    }\n  }\n\n  // Used as scratch variables to communicate multiple values without\n  // consing up tons of objects.\n  var type, content;\n  function ret(tp, style, cont) {\n    type = tp; content = cont;\n    return style;\n  }\n  function tokenBase(stream, state) {\n    var ch = stream.next();\n    if (ch == '\"' || ch == \"'\") {\n      state.tokenize = tokenString(ch);\n      return state.tokenize(stream, state);\n    } else if (ch == \".\" && stream.match(/^\\d+(?:[eE][+\\-]?\\d+)?/)) {\n      return ret(\"number\", \"number\");\n    } else if (ch == \".\" && stream.match(\"..\")) {\n      return ret(\"spread\", \"meta\");\n    } else if (/[\\[\\]{}\\(\\),;\\:\\.]/.test(ch)) {\n      return ret(ch);\n    } else if (ch == \"=\" && stream.eat(\">\")) {\n      return ret(\"=>\", \"operator\");\n    } else if (ch == \"0\" && stream.eat(/x/i)) {\n      stream.eatWhile(/[\\da-f]/i);\n      return ret(\"number\", \"number\");\n    } else if (/\\d/.test(ch)) {\n      stream.match(/^\\d*(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/);\n      return ret(\"number\", \"number\");\n    } else if (ch == \"/\") {\n      if (stream.eat(\"*\")) {\n        state.tokenize = tokenComment;\n        return tokenComment(stream, state);\n      } else if (stream.eat(\"/\")) {\n        stream.skipToEnd();\n        return ret(\"comment\", \"comment\");\n      } else if (state.lastType == \"operator\" || state.lastType == \"keyword c\" ||\n               state.lastType == \"sof\" || /^[\\[{}\\(,;:]$/.test(state.lastType)) {\n        readRegexp(stream);\n        stream.eatWhile(/[gimy]/); // 'y' is \"sticky\" option in Mozilla\n        return ret(\"regexp\", \"string-2\");\n      } else {\n        stream.eatWhile(isOperatorChar);\n        return ret(\"operator\", \"operator\", stream.current());\n      }\n    } else if (ch == \"`\") {\n      state.tokenize = tokenQuasi;\n      return tokenQuasi(stream, state);\n    } else if (ch == \"#\") {\n      stream.skipToEnd();\n      return ret(\"error\", \"error\");\n    } else if (isOperatorChar.test(ch)) {\n      stream.eatWhile(isOperatorChar);\n      return ret(\"operator\", \"operator\", stream.current());\n    } else if (wordRE.test(ch)) {\n      stream.eatWhile(wordRE);\n      var word = stream.current(), known = keywords.propertyIsEnumerable(word) && keywords[word];\n      return (known && state.lastType != \".\") ? ret(known.type, known.style, word) :\n                     ret(\"variable\", \"variable\", word);\n    }\n  }\n\n  function tokenString(quote) {\n    return function(stream, state) {\n      var escaped = false, next;\n      if (jsonldMode && stream.peek() == \"@\" && stream.match(isJsonldKeyword)){\n        state.tokenize = tokenBase;\n        return ret(\"jsonld-keyword\", \"meta\");\n      }\n      while ((next = stream.next()) != null) {\n        if (next == quote && !escaped) break;\n        escaped = !escaped && next == \"\\\\\";\n      }\n      if (!escaped) state.tokenize = tokenBase;\n      return ret(\"string\", \"string\");\n    };\n  }\n\n  function tokenComment(stream, state) {\n    var maybeEnd = false, ch;\n    while (ch = stream.next()) {\n      if (ch == \"/\" && maybeEnd) {\n        state.tokenize = tokenBase;\n        break;\n      }\n      maybeEnd = (ch == \"*\");\n    }\n    return ret(\"comment\", \"comment\");\n  }\n\n  function tokenQuasi(stream, state) {\n    var escaped = false, next;\n    while ((next = stream.next()) != null) {\n      if (!escaped && (next == \"`\" || next == \"$\" && stream.eat(\"{\"))) {\n        state.tokenize = tokenBase;\n        break;\n      }\n      escaped = !escaped && next == \"\\\\\";\n    }\n    return ret(\"quasi\", \"string-2\", stream.current());\n  }\n\n  var brackets = \"([{}])\";\n  // This is a crude lookahead trick to try and notice that we're\n  // parsing the argument patterns for a fat-arrow function before we\n  // actually hit the arrow token. It only works if the arrow is on\n  // the same line as the arguments and there's no strange noise\n  // (comments) in between. Fallback is to only notice when we hit the\n  // arrow, and not declare the arguments as locals for the arrow\n  // body.\n  function findFatArrow(stream, state) {\n    if (state.fatArrowAt) state.fatArrowAt = null;\n    var arrow = stream.string.indexOf(\"=>\", stream.start);\n    if (arrow < 0) return;\n\n    var depth = 0, sawSomething = false;\n    for (var pos = arrow - 1; pos >= 0; --pos) {\n      var ch = stream.string.charAt(pos);\n      var bracket = brackets.indexOf(ch);\n      if (bracket >= 0 && bracket < 3) {\n        if (!depth) { ++pos; break; }\n        if (--depth == 0) break;\n      } else if (bracket >= 3 && bracket < 6) {\n        ++depth;\n      } else if (wordRE.test(ch)) {\n        sawSomething = true;\n      } else if (sawSomething && !depth) {\n        ++pos;\n        break;\n      }\n    }\n    if (sawSomething && !depth) state.fatArrowAt = pos;\n  }\n\n  // Parser\n\n  var atomicTypes = {\"atom\": true, \"number\": true, \"variable\": true, \"string\": true, \"regexp\": true, \"this\": true, \"jsonld-keyword\": true};\n\n  function JSLexical(indented, column, type, align, prev, info) {\n    this.indented = indented;\n    this.column = column;\n    this.type = type;\n    this.prev = prev;\n    this.info = info;\n    if (align != null) this.align = align;\n  }\n\n  function inScope(state, varname) {\n    for (var v = state.localVars; v; v = v.next)\n      if (v.name == varname) return true;\n    for (var cx = state.context; cx; cx = cx.prev) {\n      for (var v = cx.vars; v; v = v.next)\n        if (v.name == varname) return true;\n    }\n  }\n\n  function parseJS(state, style, type, content, stream) {\n    var cc = state.cc;\n    // Communicate our context to the combinators.\n    // (Less wasteful than consing up a hundred closures on every call.)\n    cx.state = state; cx.stream = stream; cx.marked = null, cx.cc = cc; cx.style = style;\n\n    if (!state.lexical.hasOwnProperty(\"align\"))\n      state.lexical.align = true;\n\n    while(true) {\n      var combinator = cc.length ? cc.pop() : jsonMode ? expression : statement;\n      if (combinator(type, content)) {\n        while(cc.length && cc[cc.length - 1].lex)\n          cc.pop()();\n        if (cx.marked) return cx.marked;\n        if (type == \"variable\" && inScope(state, content)) return \"variable-2\";\n        return style;\n      }\n    }\n  }\n\n  // Combinator utils\n\n  var cx = {state: null, column: null, marked: null, cc: null};\n  function pass() {\n    for (var i = arguments.length - 1; i >= 0; i--) cx.cc.push(arguments[i]);\n  }\n  function cont() {\n    pass.apply(null, arguments);\n    return true;\n  }\n  function register(varname) {\n    function inList(list) {\n      for (var v = list; v; v = v.next)\n        if (v.name == varname) return true;\n      return false;\n    }\n    var state = cx.state;\n    if (state.context) {\n      cx.marked = \"def\";\n      if (inList(state.localVars)) return;\n      state.localVars = {name: varname, next: state.localVars};\n    } else {\n      if (inList(state.globalVars)) return;\n      if (parserConfig.globalVars)\n        state.globalVars = {name: varname, next: state.globalVars};\n    }\n  }\n\n  // Combinators\n\n  var defaultVars = {name: \"this\", next: {name: \"arguments\"}};\n  function pushcontext() {\n    cx.state.context = {prev: cx.state.context, vars: cx.state.localVars};\n    cx.state.localVars = defaultVars;\n  }\n  function popcontext() {\n    cx.state.localVars = cx.state.context.vars;\n    cx.state.context = cx.state.context.prev;\n  }\n  function pushlex(type, info) {\n    var result = function() {\n      var state = cx.state, indent = state.indented;\n      if (state.lexical.type == \"stat\") indent = state.lexical.indented;\n      else for (var outer = state.lexical; outer && outer.type == \")\" && outer.align; outer = outer.prev)\n        indent = outer.indented;\n      state.lexical = new JSLexical(indent, cx.stream.column(), type, null, state.lexical, info);\n    };\n    result.lex = true;\n    return result;\n  }\n  function poplex() {\n    var state = cx.state;\n    if (state.lexical.prev) {\n      if (state.lexical.type == \")\")\n        state.indented = state.lexical.indented;\n      state.lexical = state.lexical.prev;\n    }\n  }\n  poplex.lex = true;\n\n  function expect(wanted) {\n    function exp(type) {\n      if (type == wanted) return cont();\n      else if (wanted == \";\") return pass();\n      else return cont(exp);\n    };\n    return exp;\n  }\n\n  function statement(type, value) {\n    if (type == \"var\") return cont(pushlex(\"vardef\", value.length), vardef, expect(\";\"), poplex);\n    if (type == \"keyword a\") return cont(pushlex(\"form\"), expression, statement, poplex);\n    if (type == \"keyword b\") return cont(pushlex(\"form\"), statement, poplex);\n    if (type == \"{\") return cont(pushlex(\"}\"), block, poplex);\n    if (type == \";\") return cont();\n    if (type == \"if\") {\n      if (cx.state.lexical.info == \"else\" && cx.state.cc[cx.state.cc.length - 1] == poplex)\n        cx.state.cc.pop()();\n      return cont(pushlex(\"form\"), expression, statement, poplex, maybeelse);\n    }\n    if (type == \"function\") return cont(functiondef);\n    if (type == \"for\") return cont(pushlex(\"form\"), forspec, statement, poplex);\n    if (type == \"variable\") return cont(pushlex(\"stat\"), maybelabel);\n    if (type == \"switch\") return cont(pushlex(\"form\"), expression, pushlex(\"}\", \"switch\"), expect(\"{\"),\n                                      block, poplex, poplex);\n    if (type == \"case\") return cont(expression, expect(\":\"));\n    if (type == \"default\") return cont(expect(\":\"));\n    if (type == \"catch\") return cont(pushlex(\"form\"), pushcontext, expect(\"(\"), funarg, expect(\")\"),\n                                     statement, poplex, popcontext);\n    if (type == \"module\") return cont(pushlex(\"form\"), pushcontext, afterModule, popcontext, poplex);\n    if (type == \"class\") return cont(pushlex(\"form\"), className, poplex);\n    if (type == \"export\") return cont(pushlex(\"form\"), afterExport, poplex);\n    if (type == \"import\") return cont(pushlex(\"form\"), afterImport, poplex);\n    return pass(pushlex(\"stat\"), expression, expect(\";\"), poplex);\n  }\n  function expression(type) {\n    return expressionInner(type, false);\n  }\n  function expressionNoComma(type) {\n    return expressionInner(type, true);\n  }\n  function expressionInner(type, noComma) {\n    if (cx.state.fatArrowAt == cx.stream.start) {\n      var body = noComma ? arrowBodyNoComma : arrowBody;\n      if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(pattern, \")\"), poplex, expect(\"=>\"), body, popcontext);\n      else if (type == \"variable\") return pass(pushcontext, pattern, expect(\"=>\"), body, popcontext);\n    }\n\n    var maybeop = noComma ? maybeoperatorNoComma : maybeoperatorComma;\n    if (atomicTypes.hasOwnProperty(type)) return cont(maybeop);\n    if (type == \"function\") return cont(functiondef, maybeop);\n    if (type == \"keyword c\") return cont(noComma ? maybeexpressionNoComma : maybeexpression);\n    if (type == \"(\") return cont(pushlex(\")\"), maybeexpression, comprehension, expect(\")\"), poplex, maybeop);\n    if (type == \"operator\" || type == \"spread\") return cont(noComma ? expressionNoComma : expression);\n    if (type == \"[\") return cont(pushlex(\"]\"), arrayLiteral, poplex, maybeop);\n    if (type == \"{\") return contCommasep(objprop, \"}\", null, maybeop);\n    if (type == \"quasi\") { return pass(quasi, maybeop); }\n    return cont();\n  }\n  function maybeexpression(type) {\n    if (type.match(/[;\\}\\)\\],]/)) return pass();\n    return pass(expression);\n  }\n  function maybeexpressionNoComma(type) {\n    if (type.match(/[;\\}\\)\\],]/)) return pass();\n    return pass(expressionNoComma);\n  }\n\n  function maybeoperatorComma(type, value) {\n    if (type == \",\") return cont(expression);\n    return maybeoperatorNoComma(type, value, false);\n  }\n  function maybeoperatorNoComma(type, value, noComma) {\n    var me = noComma == false ? maybeoperatorComma : maybeoperatorNoComma;\n    var expr = noComma == false ? expression : expressionNoComma;\n    if (type == \"=>\") return cont(pushcontext, noComma ? arrowBodyNoComma : arrowBody, popcontext);\n    if (type == \"operator\") {\n      if (/\\+\\+|--/.test(value)) return cont(me);\n      if (value == \"?\") return cont(expression, expect(\":\"), expr);\n      return cont(expr);\n    }\n    if (type == \"quasi\") { return pass(quasi, me); }\n    if (type == \";\") return;\n    if (type == \"(\") return contCommasep(expressionNoComma, \")\", \"call\", me);\n    if (type == \".\") return cont(property, me);\n    if (type == \"[\") return cont(pushlex(\"]\"), maybeexpression, expect(\"]\"), poplex, me);\n  }\n  function quasi(type, value) {\n    if (type != \"quasi\") return pass();\n    if (value.slice(value.length - 2) != \"${\") return cont(quasi);\n    return cont(expression, continueQuasi);\n  }\n  function continueQuasi(type) {\n    if (type == \"}\") {\n      cx.marked = \"string-2\";\n      cx.state.tokenize = tokenQuasi;\n      return cont(quasi);\n    }\n  }\n  function arrowBody(type) {\n    findFatArrow(cx.stream, cx.state);\n    return pass(type == \"{\" ? statement : expression);\n  }\n  function arrowBodyNoComma(type) {\n    findFatArrow(cx.stream, cx.state);\n    return pass(type == \"{\" ? statement : expressionNoComma);\n  }\n  function maybelabel(type) {\n    if (type == \":\") return cont(poplex, statement);\n    return pass(maybeoperatorComma, expect(\";\"), poplex);\n  }\n  function property(type) {\n    if (type == \"variable\") {cx.marked = \"property\"; return cont();}\n  }\n  function objprop(type, value) {\n    if (type == \"variable\" || cx.style == \"keyword\") {\n      cx.marked = \"property\";\n      if (value == \"get\" || value == \"set\") return cont(getterSetter);\n      return cont(afterprop);\n    } else if (type == \"number\" || type == \"string\") {\n      cx.marked = jsonldMode ? \"property\" : (cx.style + \" property\");\n      return cont(afterprop);\n    } else if (type == \"jsonld-keyword\") {\n      return cont(afterprop);\n    } else if (type == \"[\") {\n      return cont(expression, expect(\"]\"), afterprop);\n    }\n  }\n  function getterSetter(type) {\n    if (type != \"variable\") return pass(afterprop);\n    cx.marked = \"property\";\n    return cont(functiondef);\n  }\n  function afterprop(type) {\n    if (type == \":\") return cont(expressionNoComma);\n    if (type == \"(\") return pass(functiondef);\n  }\n  function commasep(what, end) {\n    function proceed(type) {\n      if (type == \",\") {\n        var lex = cx.state.lexical;\n        if (lex.info == \"call\") lex.pos = (lex.pos || 0) + 1;\n        return cont(what, proceed);\n      }\n      if (type == end) return cont();\n      return cont(expect(end));\n    }\n    return function(type) {\n      if (type == end) return cont();\n      return pass(what, proceed);\n    };\n  }\n  function contCommasep(what, end, info) {\n    for (var i = 3; i < arguments.length; i++)\n      cx.cc.push(arguments[i]);\n    return cont(pushlex(end, info), commasep(what, end), poplex);\n  }\n  function block(type) {\n    if (type == \"}\") return cont();\n    return pass(statement, block);\n  }\n  function maybetype(type) {\n    if (isTS && type == \":\") return cont(typedef);\n  }\n  function typedef(type) {\n    if (type == \"variable\"){cx.marked = \"variable-3\"; return cont();}\n  }\n  function vardef() {\n    return pass(pattern, maybetype, maybeAssign, vardefCont);\n  }\n  function pattern(type, value) {\n    if (type == \"variable\") { register(value); return cont(); }\n    if (type == \"[\") return contCommasep(pattern, \"]\");\n    if (type == \"{\") return contCommasep(proppattern, \"}\");\n  }\n  function proppattern(type, value) {\n    if (type == \"variable\" && !cx.stream.match(/^\\s*:/, false)) {\n      register(value);\n      return cont(maybeAssign);\n    }\n    if (type == \"variable\") cx.marked = \"property\";\n    return cont(expect(\":\"), pattern, maybeAssign);\n  }\n  function maybeAssign(_type, value) {\n    if (value == \"=\") return cont(expressionNoComma);\n  }\n  function vardefCont(type) {\n    if (type == \",\") return cont(vardef);\n  }\n  function maybeelse(type, value) {\n    if (type == \"keyword b\" && value == \"else\") return cont(pushlex(\"form\", \"else\"), statement, poplex);\n  }\n  function forspec(type) {\n    if (type == \"(\") return cont(pushlex(\")\"), forspec1, expect(\")\"), poplex);\n  }\n  function forspec1(type) {\n    if (type == \"var\") return cont(vardef, expect(\";\"), forspec2);\n    if (type == \";\") return cont(forspec2);\n    if (type == \"variable\") return cont(formaybeinof);\n    return pass(expression, expect(\";\"), forspec2);\n  }\n  function formaybeinof(_type, value) {\n    if (value == \"in\" || value == \"of\") { cx.marked = \"keyword\"; return cont(expression); }\n    return cont(maybeoperatorComma, forspec2);\n  }\n  function forspec2(type, value) {\n    if (type == \";\") return cont(forspec3);\n    if (value == \"in\" || value == \"of\") { cx.marked = \"keyword\"; return cont(expression); }\n    return pass(expression, expect(\";\"), forspec3);\n  }\n  function forspec3(type) {\n    if (type != \")\") cont(expression);\n  }\n  function functiondef(type, value) {\n    if (value == \"*\") {cx.marked = \"keyword\"; return cont(functiondef);}\n    if (type == \"variable\") {register(value); return cont(functiondef);}\n    if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, statement, popcontext);\n  }\n  function funarg(type) {\n    if (type == \"spread\") return cont(funarg);\n    return pass(pattern, maybetype);\n  }\n  function className(type, value) {\n    if (type == \"variable\") {register(value); return cont(classNameAfter);}\n  }\n  function classNameAfter(type, value) {\n    if (value == \"extends\") return cont(expression, classNameAfter);\n    if (type == \"{\") return cont(pushlex(\"}\"), classBody, poplex);\n  }\n  function classBody(type, value) {\n    if (type == \"variable\" || cx.style == \"keyword\") {\n      cx.marked = \"property\";\n      if (value == \"get\" || value == \"set\") return cont(classGetterSetter, functiondef, classBody);\n      return cont(functiondef, classBody);\n    }\n    if (value == \"*\") {\n      cx.marked = \"keyword\";\n      return cont(classBody);\n    }\n    if (type == \";\") return cont(classBody);\n    if (type == \"}\") return cont();\n  }\n  function classGetterSetter(type) {\n    if (type != \"variable\") return pass();\n    cx.marked = \"property\";\n    return cont();\n  }\n  function afterModule(type, value) {\n    if (type == \"string\") return cont(statement);\n    if (type == \"variable\") { register(value); return cont(maybeFrom); }\n  }\n  function afterExport(_type, value) {\n    if (value == \"*\") { cx.marked = \"keyword\"; return cont(maybeFrom, expect(\";\")); }\n    if (value == \"default\") { cx.marked = \"keyword\"; return cont(expression, expect(\";\")); }\n    return pass(statement);\n  }\n  function afterImport(type) {\n    if (type == \"string\") return cont();\n    return pass(importSpec, maybeFrom);\n  }\n  function importSpec(type, value) {\n    if (type == \"{\") return contCommasep(importSpec, \"}\");\n    if (type == \"variable\") register(value);\n    return cont();\n  }\n  function maybeFrom(_type, value) {\n    if (value == \"from\") { cx.marked = \"keyword\"; return cont(expression); }\n  }\n  function arrayLiteral(type) {\n    if (type == \"]\") return cont();\n    return pass(expressionNoComma, maybeArrayComprehension);\n  }\n  function maybeArrayComprehension(type) {\n    if (type == \"for\") return pass(comprehension, expect(\"]\"));\n    if (type == \",\") return cont(commasep(maybeexpressionNoComma, \"]\"));\n    return pass(commasep(expressionNoComma, \"]\"));\n  }\n  function comprehension(type) {\n    if (type == \"for\") return cont(forspec, comprehension);\n    if (type == \"if\") return cont(expression, comprehension);\n  }\n\n  // Interface\n\n  return {\n    startState: function(basecolumn) {\n      var state = {\n        tokenize: tokenBase,\n        lastType: \"sof\",\n        cc: [],\n        lexical: new JSLexical((basecolumn || 0) - indentUnit, 0, \"block\", false),\n        localVars: parserConfig.localVars,\n        context: parserConfig.localVars && {vars: parserConfig.localVars},\n        indented: 0\n      };\n      if (parserConfig.globalVars && typeof parserConfig.globalVars == \"object\")\n        state.globalVars = parserConfig.globalVars;\n      return state;\n    },\n\n    token: function(stream, state) {\n      if (stream.sol()) {\n        if (!state.lexical.hasOwnProperty(\"align\"))\n          state.lexical.align = false;\n        state.indented = stream.indentation();\n        findFatArrow(stream, state);\n      }\n      if (state.tokenize != tokenComment && stream.eatSpace()) return null;\n      var style = state.tokenize(stream, state);\n      if (type == \"comment\") return style;\n      state.lastType = type == \"operator\" && (content == \"++\" || content == \"--\") ? \"incdec\" : type;\n      return parseJS(state, style, type, content, stream);\n    },\n\n    indent: function(state, textAfter) {\n      if (state.tokenize == tokenComment) return CodeMirror.Pass;\n      if (state.tokenize != tokenBase) return 0;\n      var firstChar = textAfter && textAfter.charAt(0), lexical = state.lexical;\n      // Kludge to prevent 'maybelse' from blocking lexical scope pops\n      if (!/^\\s*else\\b/.test(textAfter)) for (var i = state.cc.length - 1; i >= 0; --i) {\n        var c = state.cc[i];\n        if (c == poplex) lexical = lexical.prev;\n        else if (c != maybeelse) break;\n      }\n      if (lexical.type == \"stat\" && firstChar == \"}\") lexical = lexical.prev;\n      if (statementIndent && lexical.type == \")\" && lexical.prev.type == \"stat\")\n        lexical = lexical.prev;\n      var type = lexical.type, closing = firstChar == type;\n\n      if (type == \"vardef\") return lexical.indented + (state.lastType == \"operator\" || state.lastType == \",\" ? lexical.info + 1 : 0);\n      else if (type == \"form\" && firstChar == \"{\") return lexical.indented;\n      else if (type == \"form\") return lexical.indented + indentUnit;\n      else if (type == \"stat\")\n        return lexical.indented + (state.lastType == \"operator\" || state.lastType == \",\" ? statementIndent || indentUnit : 0);\n      else if (lexical.info == \"switch\" && !closing && parserConfig.doubleIndentSwitch != false)\n        return lexical.indented + (/^(?:case|default)\\b/.test(textAfter) ? indentUnit : 2 * indentUnit);\n      else if (lexical.align) return lexical.column + (closing ? 0 : 1);\n      else return lexical.indented + (closing ? 0 : indentUnit);\n    },\n\n    electricInput: /^\\s*(?:case .*?:|default:|\\{|\\})$/,\n    blockCommentStart: jsonMode ? null : \"/*\",\n    blockCommentEnd: jsonMode ? null : \"*/\",\n    lineComment: jsonMode ? null : \"//\",\n    fold: \"brace\",\n\n    helperType: jsonMode ? \"json\" : \"javascript\",\n    jsonldMode: jsonldMode,\n    jsonMode: jsonMode\n  };\n});\n\nCodeMirror.registerHelper(\"wordChars\", \"javascript\", /[\\w$]/);\n\nCodeMirror.defineMIME(\"text/javascript\", \"javascript\");\nCodeMirror.defineMIME(\"text/ecmascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/javascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/x-javascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/ecmascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/json\", {name: \"javascript\", json: true});\nCodeMirror.defineMIME(\"application/x-json\", {name: \"javascript\", json: true});\nCodeMirror.defineMIME(\"application/ld+json\", {name: \"javascript\", jsonld: true});\nCodeMirror.defineMIME(\"text/typescript\", { name: \"javascript\", typescript: true });\nCodeMirror.defineMIME(\"application/typescript\", { name: \"javascript\", typescript: true });\n\n});"
  },
  {
    "path": "public/admin/js/code-editor/codemirror.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n// This is CodeMirror (http://codemirror.net), a code editor\n// implemented in JavaScript on top of the browser's DOM.\n//\n// You can find some technical background for some of the code below\n// at http://marijnhaverbeke.nl/blog/#cm-internals .\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    module.exports = mod();\n  else if (typeof define == \"function\" && define.amd) // AMD\n    return define([], mod);\n  else // Plain browser env\n    this.CodeMirror = mod();\n})(function() {\n  \"use strict\";\n\n  // BROWSER SNIFFING\n\n  // Kludges for bugs and behavior differences that can't be feature\n  // detected are enabled based on userAgent etc sniffing.\n\n  var gecko = /gecko\\/\\d/i.test(navigator.userAgent);\n  // ie_uptoN means Internet Explorer version N or lower\n  var ie_upto10 = /MSIE \\d/.test(navigator.userAgent);\n  var ie_11up = /Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(navigator.userAgent);\n  var ie = ie_upto10 || ie_11up;\n  var ie_version = ie && (ie_upto10 ? document.documentMode || 6 : ie_11up[1]);\n  var webkit = /WebKit\\//.test(navigator.userAgent);\n  var qtwebkit = webkit && /Qt\\/\\d+\\.\\d+/.test(navigator.userAgent);\n  var chrome = /Chrome\\//.test(navigator.userAgent);\n  var presto = /Opera\\//.test(navigator.userAgent);\n  var safari = /Apple Computer/.test(navigator.vendor);\n  var khtml = /KHTML\\//.test(navigator.userAgent);\n  var mac_geMountainLion = /Mac OS X 1\\d\\D([8-9]|\\d\\d)\\D/.test(navigator.userAgent);\n  var phantom = /PhantomJS/.test(navigator.userAgent);\n\n  var ios = /AppleWebKit/.test(navigator.userAgent) && /Mobile\\/\\w+/.test(navigator.userAgent);\n  // This is woefully incomplete. Suggestions for alternative methods welcome.\n  var mobile = ios || /Android|webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(navigator.userAgent);\n  var mac = ios || /Mac/.test(navigator.platform);\n  var windows = /win/i.test(navigator.platform);\n\n  var presto_version = presto && navigator.userAgent.match(/Version\\/(\\d*\\.\\d*)/);\n  if (presto_version) presto_version = Number(presto_version[1]);\n  if (presto_version && presto_version >= 15) { presto = false; webkit = true; }\n  // Some browsers use the wrong event properties to signal cmd/ctrl on OS X\n  var flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11));\n  var captureRightClick = gecko || (ie && ie_version >= 9);\n\n  // Optimize some code when these features are not used.\n  var sawReadOnlySpans = false, sawCollapsedSpans = false;\n\n  // EDITOR CONSTRUCTOR\n\n  // A CodeMirror instance represents an editor. This is the object\n  // that user code is usually dealing with.\n\n  function CodeMirror(place, options) {\n    if (!(this instanceof CodeMirror)) return new CodeMirror(place, options);\n\n    this.options = options = options ? copyObj(options) : {};\n    // Determine effective options based on given values and defaults.\n    copyObj(defaults, options, false);\n    setGuttersForLineNumbers(options);\n\n    var doc = options.value;\n    if (typeof doc == \"string\") doc = new Doc(doc, options.mode);\n    this.doc = doc;\n\n    var display = this.display = new Display(place, doc);\n    display.wrapper.CodeMirror = this;\n    updateGutters(this);\n    themeChanged(this);\n    if (options.lineWrapping)\n      this.display.wrapper.className += \" CodeMirror-wrap\";\n    if (options.autofocus && !mobile) focusInput(this);\n\n    this.state = {\n      keyMaps: [],  // stores maps added by addKeyMap\n      overlays: [], // highlighting overlays, as added by addOverlay\n      modeGen: 0,   // bumped when mode/overlay changes, used to invalidate highlighting info\n      overwrite: false, focused: false,\n      suppressEdits: false, // used to disable editing during key handlers when in readOnly mode\n      pasteIncoming: false, cutIncoming: false, // help recognize paste/cut edits in readInput\n      draggingText: false,\n      highlight: new Delayed() // stores highlight worker timeout\n    };\n\n    // Override magic textarea content restore that IE sometimes does\n    // on our hidden textarea on reload\n    if (ie && ie_version < 11) setTimeout(bind(resetInput, this, true), 20);\n\n    registerEventHandlers(this);\n    ensureGlobalHandlers();\n\n    startOperation(this);\n    this.curOp.forceUpdate = true;\n    attachDoc(this, doc);\n\n    if ((options.autofocus && !mobile) || activeElt() == display.input)\n      setTimeout(bind(onFocus, this), 20);\n    else\n      onBlur(this);\n\n    for (var opt in optionHandlers) if (optionHandlers.hasOwnProperty(opt))\n      optionHandlers[opt](this, options[opt], Init);\n    maybeUpdateLineNumberWidth(this);\n    for (var i = 0; i < initHooks.length; ++i) initHooks[i](this);\n    endOperation(this);\n  }\n\n  // DISPLAY CONSTRUCTOR\n\n  // The display handles the DOM integration, both for input reading\n  // and content drawing. It holds references to DOM nodes and\n  // display-related state.\n\n  function Display(place, doc) {\n    var d = this;\n\n    // The semihidden textarea that is focused when the editor is\n    // focused, and receives input.\n    var input = d.input = elt(\"textarea\", null, null, \"position: absolute; padding: 0; width: 1px; height: 1em; outline: none\");\n    // The textarea is kept positioned near the cursor to prevent the\n    // fact that it'll be scrolled into view on input from scrolling\n    // our fake cursor out of view. On webkit, when wrap=off, paste is\n    // very slow. So make the area wide instead.\n    if (webkit) input.style.width = \"1000px\";\n    else input.setAttribute(\"wrap\", \"off\");\n    // If border: 0; -- iOS fails to open keyboard (issue #1287)\n    if (ios) input.style.border = \"1px solid black\";\n    input.setAttribute(\"autocorrect\", \"off\"); input.setAttribute(\"autocapitalize\", \"off\"); input.setAttribute(\"spellcheck\", \"false\");\n\n    // Wraps and hides input textarea\n    d.inputDiv = elt(\"div\", [input], null, \"overflow: hidden; position: relative; width: 3px; height: 0px;\");\n    // The fake scrollbar elements.\n    d.scrollbarH = elt(\"div\", [elt(\"div\", null, null, \"height: 100%; min-height: 1px\")], \"CodeMirror-hscrollbar\");\n    d.scrollbarV = elt(\"div\", [elt(\"div\", null, null, \"min-width: 1px\")], \"CodeMirror-vscrollbar\");\n    // Covers bottom-right square when both scrollbars are present.\n    d.scrollbarFiller = elt(\"div\", null, \"CodeMirror-scrollbar-filler\");\n    // Covers bottom of gutter when coverGutterNextToScrollbar is on\n    // and h scrollbar is present.\n    d.gutterFiller = elt(\"div\", null, \"CodeMirror-gutter-filler\");\n    // Will contain the actual code, positioned to cover the viewport.\n    d.lineDiv = elt(\"div\", null, \"CodeMirror-code\");\n    // Elements are added to these to represent selection and cursors.\n    d.selectionDiv = elt(\"div\", null, null, \"position: relative; z-index: 1\");\n    d.cursorDiv = elt(\"div\", null, \"CodeMirror-cursors\");\n    // A visibility: hidden element used to find the size of things.\n    d.measure = elt(\"div\", null, \"CodeMirror-measure\");\n    // When lines outside of the viewport are measured, they are drawn in this.\n    d.lineMeasure = elt(\"div\", null, \"CodeMirror-measure\");\n    // Wraps everything that needs to exist inside the vertically-padded coordinate system\n    d.lineSpace = elt(\"div\", [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv],\n                      null, \"position: relative; outline: none\");\n    // Moved around its parent to cover visible view.\n    d.mover = elt(\"div\", [elt(\"div\", [d.lineSpace], \"CodeMirror-lines\")], null, \"position: relative\");\n    // Set to the height of the document, allowing scrolling.\n    d.sizer = elt(\"div\", [d.mover], \"CodeMirror-sizer\");\n    // Behavior of elts with overflow: auto and padding is\n    // inconsistent across browsers. This is used to ensure the\n    // scrollable area is big enough.\n    d.heightForcer = elt(\"div\", null, null, \"position: absolute; height: \" + scrollerCutOff + \"px; width: 1px;\");\n    // Will contain the gutters, if any.\n    d.gutters = elt(\"div\", null, \"CodeMirror-gutters\");\n    d.lineGutter = null;\n    // Actual scrollable element.\n    d.scroller = elt(\"div\", [d.sizer, d.heightForcer, d.gutters], \"CodeMirror-scroll\");\n    d.scroller.setAttribute(\"tabIndex\", \"-1\");\n    // The element in which the editor lives.\n    d.wrapper = elt(\"div\", [d.inputDiv, d.scrollbarH, d.scrollbarV,\n                            d.scrollbarFiller, d.gutterFiller, d.scroller], \"CodeMirror\");\n\n    // Work around IE7 z-index bug (not perfect, hence IE7 not really being supported)\n    if (ie && ie_version < 8) { d.gutters.style.zIndex = -1; d.scroller.style.paddingRight = 0; }\n    // Needed to hide big blue blinking cursor on Mobile Safari\n    if (ios) input.style.width = \"0px\";\n    if (!webkit) d.scroller.draggable = true;\n    // Needed to handle Tab key in KHTML\n    if (khtml) { d.inputDiv.style.height = \"1px\"; d.inputDiv.style.position = \"absolute\"; }\n    // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8).\n    if (ie && ie_version < 8) d.scrollbarH.style.minHeight = d.scrollbarV.style.minWidth = \"18px\";\n\n    if (place.appendChild) place.appendChild(d.wrapper);\n    else place(d.wrapper);\n\n    // Current rendered range (may be bigger than the view window).\n    d.viewFrom = d.viewTo = doc.first;\n    // Information about the rendered lines.\n    d.view = [];\n    // Holds info about a single rendered line when it was rendered\n    // for measurement, while not in view.\n    d.externalMeasured = null;\n    // Empty space (in pixels) above the view\n    d.viewOffset = 0;\n    d.lastSizeC = 0;\n    d.updateLineNumbers = null;\n\n    // Used to only resize the line number gutter when necessary (when\n    // the amount of lines crosses a boundary that makes its width change)\n    d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null;\n    // See readInput and resetInput\n    d.prevInput = \"\";\n    // Set to true when a non-horizontal-scrolling line widget is\n    // added. As an optimization, line widget aligning is skipped when\n    // this is false.\n    d.alignWidgets = false;\n    // Flag that indicates whether we expect input to appear real soon\n    // now (after some event like 'keypress' or 'input') and are\n    // polling intensively.\n    d.pollingFast = false;\n    // Self-resetting timeout for the poller\n    d.poll = new Delayed();\n\n    d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n\n    // Tracks when resetInput has punted to just putting a short\n    // string into the textarea instead of the full selection.\n    d.inaccurateSelection = false;\n\n    // Tracks the maximum line length so that the horizontal scrollbar\n    // can be kept static when scrolling.\n    d.maxLine = null;\n    d.maxLineLength = 0;\n    d.maxLineChanged = false;\n\n    // Used for measuring wheel scrolling granularity\n    d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null;\n\n    // True when shift is held down.\n    d.shift = false;\n\n    // Used to track whether anything happened since the context menu\n    // was opened.\n    d.selForContextMenu = null;\n  }\n\n  // STATE UPDATES\n\n  // Used to get the editor into a consistent state again when options change.\n\n  function loadMode(cm) {\n    cm.doc.mode = CodeMirror.getMode(cm.options, cm.doc.modeOption);\n    resetModeState(cm);\n  }\n\n  function resetModeState(cm) {\n    cm.doc.iter(function(line) {\n      if (line.stateAfter) line.stateAfter = null;\n      if (line.styles) line.styles = null;\n    });\n    cm.doc.frontier = cm.doc.first;\n    startWorker(cm, 100);\n    cm.state.modeGen++;\n    if (cm.curOp) regChange(cm);\n  }\n\n  function wrappingChanged(cm) {\n    if (cm.options.lineWrapping) {\n      addClass(cm.display.wrapper, \"CodeMirror-wrap\");\n      cm.display.sizer.style.minWidth = \"\";\n    } else {\n      rmClass(cm.display.wrapper, \"CodeMirror-wrap\");\n      findMaxLine(cm);\n    }\n    estimateLineHeights(cm);\n    regChange(cm);\n    clearCaches(cm);\n    setTimeout(function(){updateScrollbars(cm);}, 100);\n  }\n\n  // Returns a function that estimates the height of a line, to use as\n  // first approximation until the line becomes visible (and is thus\n  // properly measurable).\n  function estimateHeight(cm) {\n    var th = textHeight(cm.display), wrapping = cm.options.lineWrapping;\n    var perLine = wrapping && Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3);\n    return function(line) {\n      if (lineIsHidden(cm.doc, line)) return 0;\n\n      var widgetsHeight = 0;\n      if (line.widgets) for (var i = 0; i < line.widgets.length; i++) {\n        if (line.widgets[i].height) widgetsHeight += line.widgets[i].height;\n      }\n\n      if (wrapping)\n        return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th;\n      else\n        return widgetsHeight + th;\n    };\n  }\n\n  function estimateLineHeights(cm) {\n    var doc = cm.doc, est = estimateHeight(cm);\n    doc.iter(function(line) {\n      var estHeight = est(line);\n      if (estHeight != line.height) updateLineHeight(line, estHeight);\n    });\n  }\n\n  function keyMapChanged(cm) {\n    var map = keyMap[cm.options.keyMap], style = map.style;\n    cm.display.wrapper.className = cm.display.wrapper.className.replace(/\\s*cm-keymap-\\S+/g, \"\") +\n      (style ? \" cm-keymap-\" + style : \"\");\n  }\n\n  function themeChanged(cm) {\n    cm.display.wrapper.className = cm.display.wrapper.className.replace(/\\s*cm-s-\\S+/g, \"\") +\n      cm.options.theme.replace(/(^|\\s)\\s*/g, \" cm-s-\");\n    clearCaches(cm);\n  }\n\n  function guttersChanged(cm) {\n    updateGutters(cm);\n    regChange(cm);\n    setTimeout(function(){alignHorizontally(cm);}, 20);\n  }\n\n  // Rebuild the gutter elements, ensure the margin to the left of the\n  // code matches their width.\n  function updateGutters(cm) {\n    var gutters = cm.display.gutters, specs = cm.options.gutters;\n    removeChildren(gutters);\n    for (var i = 0; i < specs.length; ++i) {\n      var gutterClass = specs[i];\n      var gElt = gutters.appendChild(elt(\"div\", null, \"CodeMirror-gutter \" + gutterClass));\n      if (gutterClass == \"CodeMirror-linenumbers\") {\n        cm.display.lineGutter = gElt;\n        gElt.style.width = (cm.display.lineNumWidth || 1) + \"px\";\n      }\n    }\n    gutters.style.display = i ? \"\" : \"none\";\n    updateGutterSpace(cm);\n  }\n\n  function updateGutterSpace(cm) {\n    var width = cm.display.gutters.offsetWidth;\n    cm.display.sizer.style.marginLeft = width + \"px\";\n    cm.display.scrollbarH.style.left = cm.options.fixedGutter ? width + \"px\" : 0;\n  }\n\n  // Compute the character length of a line, taking into account\n  // collapsed ranges (see markText) that might hide parts, and join\n  // other lines onto it.\n  function lineLength(line) {\n    if (line.height == 0) return 0;\n    var len = line.text.length, merged, cur = line;\n    while (merged = collapsedSpanAtStart(cur)) {\n      var found = merged.find(0, true);\n      cur = found.from.line;\n      len += found.from.ch - found.to.ch;\n    }\n    cur = line;\n    while (merged = collapsedSpanAtEnd(cur)) {\n      var found = merged.find(0, true);\n      len -= cur.text.length - found.from.ch;\n      cur = found.to.line;\n      len += cur.text.length - found.to.ch;\n    }\n    return len;\n  }\n\n  // Find the longest line in the document.\n  function findMaxLine(cm) {\n    var d = cm.display, doc = cm.doc;\n    d.maxLine = getLine(doc, doc.first);\n    d.maxLineLength = lineLength(d.maxLine);\n    d.maxLineChanged = true;\n    doc.iter(function(line) {\n      var len = lineLength(line);\n      if (len > d.maxLineLength) {\n        d.maxLineLength = len;\n        d.maxLine = line;\n      }\n    });\n  }\n\n  // Make sure the gutters options contains the element\n  // \"CodeMirror-linenumbers\" when the lineNumbers option is true.\n  function setGuttersForLineNumbers(options) {\n    var found = indexOf(options.gutters, \"CodeMirror-linenumbers\");\n    if (found == -1 && options.lineNumbers) {\n      options.gutters = options.gutters.concat([\"CodeMirror-linenumbers\"]);\n    } else if (found > -1 && !options.lineNumbers) {\n      options.gutters = options.gutters.slice(0);\n      options.gutters.splice(found, 1);\n    }\n  }\n\n  // SCROLLBARS\n\n  function hScrollbarTakesSpace(cm) {\n    return cm.display.scroller.clientHeight - cm.display.wrapper.clientHeight < scrollerCutOff - 3;\n  }\n\n  // Prepare DOM reads needed to update the scrollbars. Done in one\n  // shot to minimize update/measure roundtrips.\n  function measureForScrollbars(cm) {\n    var scroll = cm.display.scroller;\n    return {\n      clientHeight: scroll.clientHeight,\n      barHeight: cm.display.scrollbarV.clientHeight,\n      scrollWidth: scroll.scrollWidth, clientWidth: scroll.clientWidth,\n      hScrollbarTakesSpace: hScrollbarTakesSpace(cm),\n      barWidth: cm.display.scrollbarH.clientWidth,\n      docHeight: Math.round(cm.doc.height + paddingVert(cm.display))\n    };\n  }\n\n  // Re-synchronize the fake scrollbars with the actual size of the\n  // content.\n  function updateScrollbars(cm, measure) {\n    if (!measure) measure = measureForScrollbars(cm);\n    var d = cm.display, sWidth = scrollbarWidth(d.measure);\n    var scrollHeight = measure.docHeight + scrollerCutOff;\n    var needsH = measure.scrollWidth > measure.clientWidth;\n    if (needsH && measure.scrollWidth <= measure.clientWidth + 1 &&\n        sWidth > 0 && !measure.hScrollbarTakesSpace)\n      needsH = false; // (Issue #2562)\n    var needsV = scrollHeight > measure.clientHeight;\n\n    if (needsV) {\n      d.scrollbarV.style.display = \"block\";\n      d.scrollbarV.style.bottom = needsH ? sWidth + \"px\" : \"0\";\n      // A bug in IE8 can cause this value to be negative, so guard it.\n      d.scrollbarV.firstChild.style.height =\n        Math.max(0, scrollHeight - measure.clientHeight + (measure.barHeight || d.scrollbarV.clientHeight)) + \"px\";\n    } else {\n      d.scrollbarV.style.display = \"\";\n      d.scrollbarV.firstChild.style.height = \"0\";\n    }\n    if (needsH) {\n      d.scrollbarH.style.display = \"block\";\n      d.scrollbarH.style.right = needsV ? sWidth + \"px\" : \"0\";\n      d.scrollbarH.firstChild.style.width =\n        (measure.scrollWidth - measure.clientWidth + (measure.barWidth || d.scrollbarH.clientWidth)) + \"px\";\n    } else {\n      d.scrollbarH.style.display = \"\";\n      d.scrollbarH.firstChild.style.width = \"0\";\n    }\n    if (needsH && needsV) {\n      d.scrollbarFiller.style.display = \"block\";\n      d.scrollbarFiller.style.height = d.scrollbarFiller.style.width = sWidth + \"px\";\n    } else d.scrollbarFiller.style.display = \"\";\n    if (needsH && cm.options.coverGutterNextToScrollbar && cm.options.fixedGutter) {\n      d.gutterFiller.style.display = \"block\";\n      d.gutterFiller.style.height = sWidth + \"px\";\n      d.gutterFiller.style.width = d.gutters.offsetWidth + \"px\";\n    } else d.gutterFiller.style.display = \"\";\n\n    if (!cm.state.checkedOverlayScrollbar && measure.clientHeight > 0) {\n      if (sWidth === 0) {\n        var w = mac && !mac_geMountainLion ? \"12px\" : \"18px\";\n        d.scrollbarV.style.minWidth = d.scrollbarH.style.minHeight = w;\n        var barMouseDown = function(e) {\n          if (e_target(e) != d.scrollbarV && e_target(e) != d.scrollbarH)\n            operation(cm, onMouseDown)(e);\n        };\n        on(d.scrollbarV, \"mousedown\", barMouseDown);\n        on(d.scrollbarH, \"mousedown\", barMouseDown);\n      }\n      cm.state.checkedOverlayScrollbar = true;\n    }\n  }\n\n  // Compute the lines that are visible in a given viewport (defaults\n  // the the current scroll position). viewport may contain top,\n  // height, and ensure (see op.scrollToPos) properties.\n  function visibleLines(display, doc, viewport) {\n    var top = viewport && viewport.top != null ? Math.max(0, viewport.top) : display.scroller.scrollTop;\n    top = Math.floor(top - paddingTop(display));\n    var bottom = viewport && viewport.bottom != null ? viewport.bottom : top + display.wrapper.clientHeight;\n\n    var from = lineAtHeight(doc, top), to = lineAtHeight(doc, bottom);\n    // Ensure is a {from: {line, ch}, to: {line, ch}} object, and\n    // forces those lines into the viewport (if possible).\n    if (viewport && viewport.ensure) {\n      var ensureFrom = viewport.ensure.from.line, ensureTo = viewport.ensure.to.line;\n      if (ensureFrom < from)\n        return {from: ensureFrom,\n                to: lineAtHeight(doc, heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight)};\n      if (Math.min(ensureTo, doc.lastLine()) >= to)\n        return {from: lineAtHeight(doc, heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight),\n                to: ensureTo};\n    }\n    return {from: from, to: Math.max(to, from + 1)};\n  }\n\n  // LINE NUMBERS\n\n  // Re-align line numbers and gutter marks to compensate for\n  // horizontal scrolling.\n  function alignHorizontally(cm) {\n    var display = cm.display, view = display.view;\n    if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) return;\n    var comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft;\n    var gutterW = display.gutters.offsetWidth, left = comp + \"px\";\n    for (var i = 0; i < view.length; i++) if (!view[i].hidden) {\n      if (cm.options.fixedGutter && view[i].gutter)\n        view[i].gutter.style.left = left;\n      var align = view[i].alignable;\n      if (align) for (var j = 0; j < align.length; j++)\n        align[j].style.left = left;\n    }\n    if (cm.options.fixedGutter)\n      display.gutters.style.left = (comp + gutterW) + \"px\";\n  }\n\n  // Used to ensure that the line number gutter is still the right\n  // size for the current document size. Returns true when an update\n  // is needed.\n  function maybeUpdateLineNumberWidth(cm) {\n    if (!cm.options.lineNumbers) return false;\n    var doc = cm.doc, last = lineNumberFor(cm.options, doc.first + doc.size - 1), display = cm.display;\n    if (last.length != display.lineNumChars) {\n      var test = display.measure.appendChild(elt(\"div\", [elt(\"div\", last)],\n                                                 \"CodeMirror-linenumber CodeMirror-gutter-elt\"));\n      var innerW = test.firstChild.offsetWidth, padding = test.offsetWidth - innerW;\n      display.lineGutter.style.width = \"\";\n      display.lineNumInnerWidth = Math.max(innerW, display.lineGutter.offsetWidth - padding);\n      display.lineNumWidth = display.lineNumInnerWidth + padding;\n      display.lineNumChars = display.lineNumInnerWidth ? last.length : -1;\n      display.lineGutter.style.width = display.lineNumWidth + \"px\";\n      updateGutterSpace(cm);\n      return true;\n    }\n    return false;\n  }\n\n  function lineNumberFor(options, i) {\n    return String(options.lineNumberFormatter(i + options.firstLineNumber));\n  }\n\n  // Computes display.scroller.scrollLeft + display.gutters.offsetWidth,\n  // but using getBoundingClientRect to get a sub-pixel-accurate\n  // result.\n  function compensateForHScroll(display) {\n    return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left;\n  }\n\n  // DISPLAY DRAWING\n\n  function DisplayUpdate(cm, viewport, force) {\n    var display = cm.display;\n\n    this.viewport = viewport;\n    // Store some values that we'll need later (but don't want to force a relayout for)\n    this.visible = visibleLines(display, cm.doc, viewport);\n    this.editorIsHidden = !display.wrapper.offsetWidth;\n    this.wrapperHeight = display.wrapper.clientHeight;\n    this.oldViewFrom = display.viewFrom; this.oldViewTo = display.viewTo;\n    this.oldScrollerWidth = display.scroller.clientWidth;\n    this.force = force;\n    this.dims = getDimensions(cm);\n  }\n\n  // Does the actual updating of the line display. Bails out\n  // (returning false) when there is nothing to be done and forced is\n  // false.\n  function updateDisplayIfNeeded(cm, update) {\n    var display = cm.display, doc = cm.doc;\n    if (update.editorIsHidden) {\n      resetView(cm);\n      return false;\n    }\n\n    // Bail out if the visible area is already rendered and nothing changed.\n    if (!update.force &&\n        update.visible.from >= display.viewFrom && update.visible.to <= display.viewTo &&\n        (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo) &&\n        countDirtyView(cm) == 0)\n      return false;\n\n    if (maybeUpdateLineNumberWidth(cm)) {\n      resetView(cm);\n      update.dims = getDimensions(cm);\n    }\n\n    // Compute a suitable new viewport (from & to)\n    var end = doc.first + doc.size;\n    var from = Math.max(update.visible.from - cm.options.viewportMargin, doc.first);\n    var to = Math.min(end, update.visible.to + cm.options.viewportMargin);\n    if (display.viewFrom < from && from - display.viewFrom < 20) from = Math.max(doc.first, display.viewFrom);\n    if (display.viewTo > to && display.viewTo - to < 20) to = Math.min(end, display.viewTo);\n    if (sawCollapsedSpans) {\n      from = visualLineNo(cm.doc, from);\n      to = visualLineEndNo(cm.doc, to);\n    }\n\n    var different = from != display.viewFrom || to != display.viewTo ||\n      display.lastSizeC != update.wrapperHeight;\n    adjustView(cm, from, to);\n\n    display.viewOffset = heightAtLine(getLine(cm.doc, display.viewFrom));\n    // Position the mover div to align with the current scroll position\n    cm.display.mover.style.top = display.viewOffset + \"px\";\n\n    var toUpdate = countDirtyView(cm);\n    if (!different && toUpdate == 0 && !update.force &&\n        (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo))\n      return false;\n\n    // For big changes, we hide the enclosing element during the\n    // update, since that speeds up the operations on most browsers.\n    var focused = activeElt();\n    if (toUpdate > 4) display.lineDiv.style.display = \"none\";\n    patchDisplay(cm, display.updateLineNumbers, update.dims);\n    if (toUpdate > 4) display.lineDiv.style.display = \"\";\n    // There might have been a widget with a focused element that got\n    // hidden or updated, if so re-focus it.\n    if (focused && activeElt() != focused && focused.offsetHeight) focused.focus();\n\n    // Prevent selection and cursors from interfering with the scroll\n    // width.\n    removeChildren(display.cursorDiv);\n    removeChildren(display.selectionDiv);\n\n    if (different) {\n      display.lastSizeC = update.wrapperHeight;\n      startWorker(cm, 400);\n    }\n\n    display.updateLineNumbers = null;\n\n    return true;\n  }\n\n  function postUpdateDisplay(cm, update) {\n    var force = update.force, viewport = update.viewport;\n    for (var first = true;; first = false) {\n      if (first && cm.options.lineWrapping && update.oldScrollerWidth != cm.display.scroller.clientWidth) {\n        force = true;\n      } else {\n        force = false;\n        // Clip forced viewport to actual scrollable area.\n        if (viewport && viewport.top != null)\n          viewport = {top: Math.min(cm.doc.height + paddingVert(cm.display) - scrollerCutOff -\n                                    cm.display.scroller.clientHeight, viewport.top)};\n        // Updated line heights might result in the drawn area not\n        // actually covering the viewport. Keep looping until it does.\n        update.visible = visibleLines(cm.display, cm.doc, viewport);\n        if (update.visible.from >= cm.display.viewFrom && update.visible.to <= cm.display.viewTo)\n          break;\n      }\n      if (!updateDisplayIfNeeded(cm, update)) break;\n      updateHeightsInViewport(cm);\n      var barMeasure = measureForScrollbars(cm);\n      updateSelection(cm);\n      setDocumentHeight(cm, barMeasure);\n      updateScrollbars(cm, barMeasure);\n    }\n\n    signalLater(cm, \"update\", cm);\n    if (cm.display.viewFrom != update.oldViewFrom || cm.display.viewTo != update.oldViewTo)\n      signalLater(cm, \"viewportChange\", cm, cm.display.viewFrom, cm.display.viewTo);\n  }\n\n  function updateDisplaySimple(cm, viewport) {\n    var update = new DisplayUpdate(cm, viewport);\n    if (updateDisplayIfNeeded(cm, update)) {\n      updateHeightsInViewport(cm);\n      postUpdateDisplay(cm, update);\n      var barMeasure = measureForScrollbars(cm);\n      updateSelection(cm);\n      setDocumentHeight(cm, barMeasure);\n      updateScrollbars(cm, barMeasure);\n    }\n  }\n\n  function setDocumentHeight(cm, measure) {\n    cm.display.sizer.style.minHeight = cm.display.heightForcer.style.top = measure.docHeight + \"px\";\n    cm.display.gutters.style.height = Math.max(measure.docHeight, measure.clientHeight - scrollerCutOff) + \"px\";\n  }\n\n  function checkForWebkitWidthBug(cm, measure) {\n    // Work around Webkit bug where it sometimes reserves space for a\n    // non-existing phantom scrollbar in the scroller (Issue #2420)\n    if (cm.display.sizer.offsetWidth + cm.display.gutters.offsetWidth < cm.display.scroller.clientWidth - 1) {\n      cm.display.sizer.style.minHeight = cm.display.heightForcer.style.top = \"0px\";\n      cm.display.gutters.style.height = measure.docHeight + \"px\";\n    }\n  }\n\n  // Read the actual heights of the rendered lines, and update their\n  // stored heights to match.\n  function updateHeightsInViewport(cm) {\n    var display = cm.display;\n    var prevBottom = display.lineDiv.offsetTop;\n    for (var i = 0; i < display.view.length; i++) {\n      var cur = display.view[i], height;\n      if (cur.hidden) continue;\n      if (ie && ie_version < 8) {\n        var bot = cur.node.offsetTop + cur.node.offsetHeight;\n        height = bot - prevBottom;\n        prevBottom = bot;\n      } else {\n        var box = cur.node.getBoundingClientRect();\n        height = box.bottom - box.top;\n      }\n      var diff = cur.line.height - height;\n      if (height < 2) height = textHeight(display);\n      if (diff > .001 || diff < -.001) {\n        updateLineHeight(cur.line, height);\n        updateWidgetHeight(cur.line);\n        if (cur.rest) for (var j = 0; j < cur.rest.length; j++)\n          updateWidgetHeight(cur.rest[j]);\n      }\n    }\n  }\n\n  // Read and store the height of line widgets associated with the\n  // given line.\n  function updateWidgetHeight(line) {\n    if (line.widgets) for (var i = 0; i < line.widgets.length; ++i)\n      line.widgets[i].height = line.widgets[i].node.offsetHeight;\n  }\n\n  // Do a bulk-read of the DOM positions and sizes needed to draw the\n  // view, so that we don't interleave reading and writing to the DOM.\n  function getDimensions(cm) {\n    var d = cm.display, left = {}, width = {};\n    var gutterLeft = d.gutters.clientLeft;\n    for (var n = d.gutters.firstChild, i = 0; n; n = n.nextSibling, ++i) {\n      left[cm.options.gutters[i]] = n.offsetLeft + n.clientLeft + gutterLeft;\n      width[cm.options.gutters[i]] = n.clientWidth;\n    }\n    return {fixedPos: compensateForHScroll(d),\n            gutterTotalWidth: d.gutters.offsetWidth,\n            gutterLeft: left,\n            gutterWidth: width,\n            wrapperWidth: d.wrapper.clientWidth};\n  }\n\n  // Sync the actual display DOM structure with display.view, removing\n  // nodes for lines that are no longer in view, and creating the ones\n  // that are not there yet, and updating the ones that are out of\n  // date.\n  function patchDisplay(cm, updateNumbersFrom, dims) {\n    var display = cm.display, lineNumbers = cm.options.lineNumbers;\n    var container = display.lineDiv, cur = container.firstChild;\n\n    function rm(node) {\n      var next = node.nextSibling;\n      // Works around a throw-scroll bug in OS X Webkit\n      if (webkit && mac && cm.display.currentWheelTarget == node)\n        node.style.display = \"none\";\n      else\n        node.parentNode.removeChild(node);\n      return next;\n    }\n\n    var view = display.view, lineN = display.viewFrom;\n    // Loop over the elements in the view, syncing cur (the DOM nodes\n    // in display.lineDiv) with the view as we go.\n    for (var i = 0; i < view.length; i++) {\n      var lineView = view[i];\n      if (lineView.hidden) {\n      } else if (!lineView.node) { // Not drawn yet\n        var node = buildLineElement(cm, lineView, lineN, dims);\n        container.insertBefore(node, cur);\n      } else { // Already drawn\n        while (cur != lineView.node) cur = rm(cur);\n        var updateNumber = lineNumbers && updateNumbersFrom != null &&\n          updateNumbersFrom <= lineN && lineView.lineNumber;\n        if (lineView.changes) {\n          if (indexOf(lineView.changes, \"gutter\") > -1) updateNumber = false;\n          updateLineForChanges(cm, lineView, lineN, dims);\n        }\n        if (updateNumber) {\n          removeChildren(lineView.lineNumber);\n          lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN)));\n        }\n        cur = lineView.node.nextSibling;\n      }\n      lineN += lineView.size;\n    }\n    while (cur) cur = rm(cur);\n  }\n\n  // When an aspect of a line changes, a string is added to\n  // lineView.changes. This updates the relevant part of the line's\n  // DOM structure.\n  function updateLineForChanges(cm, lineView, lineN, dims) {\n    for (var j = 0; j < lineView.changes.length; j++) {\n      var type = lineView.changes[j];\n      if (type == \"text\") updateLineText(cm, lineView);\n      else if (type == \"gutter\") updateLineGutter(cm, lineView, lineN, dims);\n      else if (type == \"class\") updateLineClasses(lineView);\n      else if (type == \"widget\") updateLineWidgets(lineView, dims);\n    }\n    lineView.changes = null;\n  }\n\n  // Lines with gutter elements, widgets or a background class need to\n  // be wrapped, and have the extra elements added to the wrapper div\n  function ensureLineWrapped(lineView) {\n    if (lineView.node == lineView.text) {\n      lineView.node = elt(\"div\", null, null, \"position: relative\");\n      if (lineView.text.parentNode)\n        lineView.text.parentNode.replaceChild(lineView.node, lineView.text);\n      lineView.node.appendChild(lineView.text);\n      if (ie && ie_version < 8) lineView.node.style.zIndex = 2;\n    }\n    return lineView.node;\n  }\n\n  function updateLineBackground(lineView) {\n    var cls = lineView.bgClass ? lineView.bgClass + \" \" + (lineView.line.bgClass || \"\") : lineView.line.bgClass;\n    if (cls) cls += \" CodeMirror-linebackground\";\n    if (lineView.background) {\n      if (cls) lineView.background.className = cls;\n      else { lineView.background.parentNode.removeChild(lineView.background); lineView.background = null; }\n    } else if (cls) {\n      var wrap = ensureLineWrapped(lineView);\n      lineView.background = wrap.insertBefore(elt(\"div\", null, cls), wrap.firstChild);\n    }\n  }\n\n  // Wrapper around buildLineContent which will reuse the structure\n  // in display.externalMeasured when possible.\n  function getLineContent(cm, lineView) {\n    var ext = cm.display.externalMeasured;\n    if (ext && ext.line == lineView.line) {\n      cm.display.externalMeasured = null;\n      lineView.measure = ext.measure;\n      return ext.built;\n    }\n    return buildLineContent(cm, lineView);\n  }\n\n  // Redraw the line's text. Interacts with the background and text\n  // classes because the mode may output tokens that influence these\n  // classes.\n  function updateLineText(cm, lineView) {\n    var cls = lineView.text.className;\n    var built = getLineContent(cm, lineView);\n    if (lineView.text == lineView.node) lineView.node = built.pre;\n    lineView.text.parentNode.replaceChild(built.pre, lineView.text);\n    lineView.text = built.pre;\n    if (built.bgClass != lineView.bgClass || built.textClass != lineView.textClass) {\n      lineView.bgClass = built.bgClass;\n      lineView.textClass = built.textClass;\n      updateLineClasses(lineView);\n    } else if (cls) {\n      lineView.text.className = cls;\n    }\n  }\n\n  function updateLineClasses(lineView) {\n    updateLineBackground(lineView);\n    if (lineView.line.wrapClass)\n      ensureLineWrapped(lineView).className = lineView.line.wrapClass;\n    else if (lineView.node != lineView.text)\n      lineView.node.className = \"\";\n    var textClass = lineView.textClass ? lineView.textClass + \" \" + (lineView.line.textClass || \"\") : lineView.line.textClass;\n    lineView.text.className = textClass || \"\";\n  }\n\n  function updateLineGutter(cm, lineView, lineN, dims) {\n    if (lineView.gutter) {\n      lineView.node.removeChild(lineView.gutter);\n      lineView.gutter = null;\n    }\n    var markers = lineView.line.gutterMarkers;\n    if (cm.options.lineNumbers || markers) {\n      var wrap = ensureLineWrapped(lineView);\n      var gutterWrap = lineView.gutter =\n        wrap.insertBefore(elt(\"div\", null, \"CodeMirror-gutter-wrapper\", \"position: absolute; left: \" +\n                              (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px\"),\n                          lineView.text);\n      if (cm.options.lineNumbers && (!markers || !markers[\"CodeMirror-linenumbers\"]))\n        lineView.lineNumber = gutterWrap.appendChild(\n          elt(\"div\", lineNumberFor(cm.options, lineN),\n              \"CodeMirror-linenumber CodeMirror-gutter-elt\",\n              \"left: \" + dims.gutterLeft[\"CodeMirror-linenumbers\"] + \"px; width: \"\n              + cm.display.lineNumInnerWidth + \"px\"));\n      if (markers) for (var k = 0; k < cm.options.gutters.length; ++k) {\n        var id = cm.options.gutters[k], found = markers.hasOwnProperty(id) && markers[id];\n        if (found)\n          gutterWrap.appendChild(elt(\"div\", [found], \"CodeMirror-gutter-elt\", \"left: \" +\n                                     dims.gutterLeft[id] + \"px; width: \" + dims.gutterWidth[id] + \"px\"));\n      }\n    }\n  }\n\n  function updateLineWidgets(lineView, dims) {\n    if (lineView.alignable) lineView.alignable = null;\n    for (var node = lineView.node.firstChild, next; node; node = next) {\n      var next = node.nextSibling;\n      if (node.className == \"CodeMirror-linewidget\")\n        lineView.node.removeChild(node);\n    }\n    insertLineWidgets(lineView, dims);\n  }\n\n  // Build a line's DOM representation from scratch\n  function buildLineElement(cm, lineView, lineN, dims) {\n    var built = getLineContent(cm, lineView);\n    lineView.text = lineView.node = built.pre;\n    if (built.bgClass) lineView.bgClass = built.bgClass;\n    if (built.textClass) lineView.textClass = built.textClass;\n\n    updateLineClasses(lineView);\n    updateLineGutter(cm, lineView, lineN, dims);\n    insertLineWidgets(lineView, dims);\n    return lineView.node;\n  }\n\n  // A lineView may contain multiple logical lines (when merged by\n  // collapsed spans). The widgets for all of them need to be drawn.\n  function insertLineWidgets(lineView, dims) {\n    insertLineWidgetsFor(lineView.line, lineView, dims, true);\n    if (lineView.rest) for (var i = 0; i < lineView.rest.length; i++)\n      insertLineWidgetsFor(lineView.rest[i], lineView, dims, false);\n  }\n\n  function insertLineWidgetsFor(line, lineView, dims, allowAbove) {\n    if (!line.widgets) return;\n    var wrap = ensureLineWrapped(lineView);\n    for (var i = 0, ws = line.widgets; i < ws.length; ++i) {\n      var widget = ws[i], node = elt(\"div\", [widget.node], \"CodeMirror-linewidget\");\n      if (!widget.handleMouseEvents) node.ignoreEvents = true;\n      positionLineWidget(widget, node, lineView, dims);\n      if (allowAbove && widget.above)\n        wrap.insertBefore(node, lineView.gutter || lineView.text);\n      else\n        wrap.appendChild(node);\n      signalLater(widget, \"redraw\");\n    }\n  }\n\n  function positionLineWidget(widget, node, lineView, dims) {\n    if (widget.noHScroll) {\n      (lineView.alignable || (lineView.alignable = [])).push(node);\n      var width = dims.wrapperWidth;\n      node.style.left = dims.fixedPos + \"px\";\n      if (!widget.coverGutter) {\n        width -= dims.gutterTotalWidth;\n        node.style.paddingLeft = dims.gutterTotalWidth + \"px\";\n      }\n      node.style.width = width + \"px\";\n    }\n    if (widget.coverGutter) {\n      node.style.zIndex = 5;\n      node.style.position = \"relative\";\n      if (!widget.noHScroll) node.style.marginLeft = -dims.gutterTotalWidth + \"px\";\n    }\n  }\n\n  // POSITION OBJECT\n\n  // A Pos instance represents a position within the text.\n  var Pos = CodeMirror.Pos = function(line, ch) {\n    if (!(this instanceof Pos)) return new Pos(line, ch);\n    this.line = line; this.ch = ch;\n  };\n\n  // Compare two positions, return 0 if they are the same, a negative\n  // number when a is less, and a positive number otherwise.\n  var cmp = CodeMirror.cmpPos = function(a, b) { return a.line - b.line || a.ch - b.ch; };\n\n  function copyPos(x) {return Pos(x.line, x.ch);}\n  function maxPos(a, b) { return cmp(a, b) < 0 ? b : a; }\n  function minPos(a, b) { return cmp(a, b) < 0 ? a : b; }\n\n  // SELECTION / CURSOR\n\n  // Selection objects are immutable. A new one is created every time\n  // the selection changes. A selection is one or more non-overlapping\n  // (and non-touching) ranges, sorted, and an integer that indicates\n  // which one is the primary selection (the one that's scrolled into\n  // view, that getCursor returns, etc).\n  function Selection(ranges, primIndex) {\n    this.ranges = ranges;\n    this.primIndex = primIndex;\n  }\n\n  Selection.prototype = {\n    primary: function() { return this.ranges[this.primIndex]; },\n    equals: function(other) {\n      if (other == this) return true;\n      if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) return false;\n      for (var i = 0; i < this.ranges.length; i++) {\n        var here = this.ranges[i], there = other.ranges[i];\n        if (cmp(here.anchor, there.anchor) != 0 || cmp(here.head, there.head) != 0) return false;\n      }\n      return true;\n    },\n    deepCopy: function() {\n      for (var out = [], i = 0; i < this.ranges.length; i++)\n        out[i] = new Range(copyPos(this.ranges[i].anchor), copyPos(this.ranges[i].head));\n      return new Selection(out, this.primIndex);\n    },\n    somethingSelected: function() {\n      for (var i = 0; i < this.ranges.length; i++)\n        if (!this.ranges[i].empty()) return true;\n      return false;\n    },\n    contains: function(pos, end) {\n      if (!end) end = pos;\n      for (var i = 0; i < this.ranges.length; i++) {\n        var range = this.ranges[i];\n        if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0)\n          return i;\n      }\n      return -1;\n    }\n  };\n\n  function Range(anchor, head) {\n    this.anchor = anchor; this.head = head;\n  }\n\n  Range.prototype = {\n    from: function() { return minPos(this.anchor, this.head); },\n    to: function() { return maxPos(this.anchor, this.head); },\n    empty: function() {\n      return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch;\n    }\n  };\n\n  // Take an unsorted, potentially overlapping set of ranges, and\n  // build a selection out of it. 'Consumes' ranges array (modifying\n  // it).\n  function normalizeSelection(ranges, primIndex) {\n    var prim = ranges[primIndex];\n    ranges.sort(function(a, b) { return cmp(a.from(), b.from()); });\n    primIndex = indexOf(ranges, prim);\n    for (var i = 1; i < ranges.length; i++) {\n      var cur = ranges[i], prev = ranges[i - 1];\n      if (cmp(prev.to(), cur.from()) >= 0) {\n        var from = minPos(prev.from(), cur.from()), to = maxPos(prev.to(), cur.to());\n        var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head;\n        if (i <= primIndex) --primIndex;\n        ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to));\n      }\n    }\n    return new Selection(ranges, primIndex);\n  }\n\n  function simpleSelection(anchor, head) {\n    return new Selection([new Range(anchor, head || anchor)], 0);\n  }\n\n  // Most of the external API clips given positions to make sure they\n  // actually exist within the document.\n  function clipLine(doc, n) {return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1));}\n  function clipPos(doc, pos) {\n    if (pos.line < doc.first) return Pos(doc.first, 0);\n    var last = doc.first + doc.size - 1;\n    if (pos.line > last) return Pos(last, getLine(doc, last).text.length);\n    return clipToLen(pos, getLine(doc, pos.line).text.length);\n  }\n  function clipToLen(pos, linelen) {\n    var ch = pos.ch;\n    if (ch == null || ch > linelen) return Pos(pos.line, linelen);\n    else if (ch < 0) return Pos(pos.line, 0);\n    else return pos;\n  }\n  function isLine(doc, l) {return l >= doc.first && l < doc.first + doc.size;}\n  function clipPosArray(doc, array) {\n    for (var out = [], i = 0; i < array.length; i++) out[i] = clipPos(doc, array[i]);\n    return out;\n  }\n\n  // SELECTION UPDATES\n\n  // The 'scroll' parameter given to many of these indicated whether\n  // the new cursor position should be scrolled into view after\n  // modifying the selection.\n\n  // If shift is held or the extend flag is set, extends a range to\n  // include a given position (and optionally a second position).\n  // Otherwise, simply returns the range between the given positions.\n  // Used for cursor motion and such.\n  function extendRange(doc, range, head, other) {\n    if (doc.cm && doc.cm.display.shift || doc.extend) {\n      var anchor = range.anchor;\n      if (other) {\n        var posBefore = cmp(head, anchor) < 0;\n        if (posBefore != (cmp(other, anchor) < 0)) {\n          anchor = head;\n          head = other;\n        } else if (posBefore != (cmp(head, other) < 0)) {\n          head = other;\n        }\n      }\n      return new Range(anchor, head);\n    } else {\n      return new Range(other || head, head);\n    }\n  }\n\n  // Extend the primary selection range, discard the rest.\n  function extendSelection(doc, head, other, options) {\n    setSelection(doc, new Selection([extendRange(doc, doc.sel.primary(), head, other)], 0), options);\n  }\n\n  // Extend all selections (pos is an array of selections with length\n  // equal the number of selections)\n  function extendSelections(doc, heads, options) {\n    for (var out = [], i = 0; i < doc.sel.ranges.length; i++)\n      out[i] = extendRange(doc, doc.sel.ranges[i], heads[i], null);\n    var newSel = normalizeSelection(out, doc.sel.primIndex);\n    setSelection(doc, newSel, options);\n  }\n\n  // Updates a single range in the selection.\n  function replaceOneSelection(doc, i, range, options) {\n    var ranges = doc.sel.ranges.slice(0);\n    ranges[i] = range;\n    setSelection(doc, normalizeSelection(ranges, doc.sel.primIndex), options);\n  }\n\n  // Reset the selection to a single range.\n  function setSimpleSelection(doc, anchor, head, options) {\n    setSelection(doc, simpleSelection(anchor, head), options);\n  }\n\n  // Give beforeSelectionChange handlers a change to influence a\n  // selection update.\n  function filterSelectionChange(doc, sel) {\n    var obj = {\n      ranges: sel.ranges,\n      update: function(ranges) {\n        this.ranges = [];\n        for (var i = 0; i < ranges.length; i++)\n          this.ranges[i] = new Range(clipPos(doc, ranges[i].anchor),\n                                     clipPos(doc, ranges[i].head));\n      }\n    };\n    signal(doc, \"beforeSelectionChange\", doc, obj);\n    if (doc.cm) signal(doc.cm, \"beforeSelectionChange\", doc.cm, obj);\n    if (obj.ranges != sel.ranges) return normalizeSelection(obj.ranges, obj.ranges.length - 1);\n    else return sel;\n  }\n\n  function setSelectionReplaceHistory(doc, sel, options) {\n    var done = doc.history.done, last = lst(done);\n    if (last && last.ranges) {\n      done[done.length - 1] = sel;\n      setSelectionNoUndo(doc, sel, options);\n    } else {\n      setSelection(doc, sel, options);\n    }\n  }\n\n  // Set a new selection.\n  function setSelection(doc, sel, options) {\n    setSelectionNoUndo(doc, sel, options);\n    addSelectionToHistory(doc, doc.sel, doc.cm ? doc.cm.curOp.id : NaN, options);\n  }\n\n  function setSelectionNoUndo(doc, sel, options) {\n    if (hasHandler(doc, \"beforeSelectionChange\") || doc.cm && hasHandler(doc.cm, \"beforeSelectionChange\"))\n      sel = filterSelectionChange(doc, sel);\n\n    var bias = options && options.bias ||\n      (cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1);\n    setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true));\n\n    if (!(options && options.scroll === false) && doc.cm)\n      ensureCursorVisible(doc.cm);\n  }\n\n  function setSelectionInner(doc, sel) {\n    if (sel.equals(doc.sel)) return;\n\n    doc.sel = sel;\n\n    if (doc.cm) {\n      doc.cm.curOp.updateInput = doc.cm.curOp.selectionChanged = true;\n      signalCursorActivity(doc.cm);\n    }\n    signalLater(doc, \"cursorActivity\", doc);\n  }\n\n  // Verify that the selection does not partially select any atomic\n  // marked ranges.\n  function reCheckSelection(doc) {\n    setSelectionInner(doc, skipAtomicInSelection(doc, doc.sel, null, false), sel_dontScroll);\n  }\n\n  // Return a selection that does not partially select any atomic\n  // ranges.\n  function skipAtomicInSelection(doc, sel, bias, mayClear) {\n    var out;\n    for (var i = 0; i < sel.ranges.length; i++) {\n      var range = sel.ranges[i];\n      var newAnchor = skipAtomic(doc, range.anchor, bias, mayClear);\n      var newHead = skipAtomic(doc, range.head, bias, mayClear);\n      if (out || newAnchor != range.anchor || newHead != range.head) {\n        if (!out) out = sel.ranges.slice(0, i);\n        out[i] = new Range(newAnchor, newHead);\n      }\n    }\n    return out ? normalizeSelection(out, sel.primIndex) : sel;\n  }\n\n  // Ensure a given position is not inside an atomic range.\n  function skipAtomic(doc, pos, bias, mayClear) {\n    var flipped = false, curPos = pos;\n    var dir = bias || 1;\n    doc.cantEdit = false;\n    search: for (;;) {\n      var line = getLine(doc, curPos.line);\n      if (line.markedSpans) {\n        for (var i = 0; i < line.markedSpans.length; ++i) {\n          var sp = line.markedSpans[i], m = sp.marker;\n          if ((sp.from == null || (m.inclusiveLeft ? sp.from <= curPos.ch : sp.from < curPos.ch)) &&\n              (sp.to == null || (m.inclusiveRight ? sp.to >= curPos.ch : sp.to > curPos.ch))) {\n            if (mayClear) {\n              signal(m, \"beforeCursorEnter\");\n              if (m.explicitlyCleared) {\n                if (!line.markedSpans) break;\n                else {--i; continue;}\n              }\n            }\n            if (!m.atomic) continue;\n            var newPos = m.find(dir < 0 ? -1 : 1);\n            if (cmp(newPos, curPos) == 0) {\n              newPos.ch += dir;\n              if (newPos.ch < 0) {\n                if (newPos.line > doc.first) newPos = clipPos(doc, Pos(newPos.line - 1));\n                else newPos = null;\n              } else if (newPos.ch > line.text.length) {\n                if (newPos.line < doc.first + doc.size - 1) newPos = Pos(newPos.line + 1, 0);\n                else newPos = null;\n              }\n              if (!newPos) {\n                if (flipped) {\n                  // Driven in a corner -- no valid cursor position found at all\n                  // -- try again *with* clearing, if we didn't already\n                  if (!mayClear) return skipAtomic(doc, pos, bias, true);\n                  // Otherwise, turn off editing until further notice, and return the start of the doc\n                  doc.cantEdit = true;\n                  return Pos(doc.first, 0);\n                }\n                flipped = true; newPos = pos; dir = -dir;\n              }\n            }\n            curPos = newPos;\n            continue search;\n          }\n        }\n      }\n      return curPos;\n    }\n  }\n\n  // SELECTION DRAWING\n\n  // Redraw the selection and/or cursor\n  function drawSelection(cm) {\n    var display = cm.display, doc = cm.doc, result = {};\n    var curFragment = result.cursors = document.createDocumentFragment();\n    var selFragment = result.selection = document.createDocumentFragment();\n\n    for (var i = 0; i < doc.sel.ranges.length; i++) {\n      var range = doc.sel.ranges[i];\n      var collapsed = range.empty();\n      if (collapsed || cm.options.showCursorWhenSelecting)\n        drawSelectionCursor(cm, range, curFragment);\n      if (!collapsed)\n        drawSelectionRange(cm, range, selFragment);\n    }\n\n    // Move the hidden textarea near the cursor to prevent scrolling artifacts\n    if (cm.options.moveInputWithCursor) {\n      var headPos = cursorCoords(cm, doc.sel.primary().head, \"div\");\n      var wrapOff = display.wrapper.getBoundingClientRect(), lineOff = display.lineDiv.getBoundingClientRect();\n      result.teTop = Math.max(0, Math.min(display.wrapper.clientHeight - 10,\n                                          headPos.top + lineOff.top - wrapOff.top));\n      result.teLeft = Math.max(0, Math.min(display.wrapper.clientWidth - 10,\n                                           headPos.left + lineOff.left - wrapOff.left));\n    }\n\n    return result;\n  }\n\n  function showSelection(cm, drawn) {\n    removeChildrenAndAdd(cm.display.cursorDiv, drawn.cursors);\n    removeChildrenAndAdd(cm.display.selectionDiv, drawn.selection);\n    if (drawn.teTop != null) {\n      cm.display.inputDiv.style.top = drawn.teTop + \"px\";\n      cm.display.inputDiv.style.left = drawn.teLeft + \"px\";\n    }\n  }\n\n  function updateSelection(cm) {\n    showSelection(cm, drawSelection(cm));\n  }\n\n  // Draws a cursor for the given range\n  function drawSelectionCursor(cm, range, output) {\n    var pos = cursorCoords(cm, range.head, \"div\", null, null, !cm.options.singleCursorHeightPerLine);\n\n    var cursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor\"));\n    cursor.style.left = pos.left + \"px\";\n    cursor.style.top = pos.top + \"px\";\n    cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + \"px\";\n\n    if (pos.other) {\n      // Secondary cursor, shown when on a 'jump' in bi-directional text\n      var otherCursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor CodeMirror-secondarycursor\"));\n      otherCursor.style.display = \"\";\n      otherCursor.style.left = pos.other.left + \"px\";\n      otherCursor.style.top = pos.other.top + \"px\";\n      otherCursor.style.height = (pos.other.bottom - pos.other.top) * .85 + \"px\";\n    }\n  }\n\n  // Draws the given range as a highlighted selection\n  function drawSelectionRange(cm, range, output) {\n    var display = cm.display, doc = cm.doc;\n    var fragment = document.createDocumentFragment();\n    var padding = paddingH(cm.display), leftSide = padding.left, rightSide = display.lineSpace.offsetWidth - padding.right;\n\n    function add(left, top, width, bottom) {\n      if (top < 0) top = 0;\n      top = Math.round(top);\n      bottom = Math.round(bottom);\n      fragment.appendChild(elt(\"div\", null, \"CodeMirror-selected\", \"position: absolute; left: \" + left +\n                               \"px; top: \" + top + \"px; width: \" + (width == null ? rightSide - left : width) +\n                               \"px; height: \" + (bottom - top) + \"px\"));\n    }\n\n    function drawForLine(line, fromArg, toArg) {\n      var lineObj = getLine(doc, line);\n      var lineLen = lineObj.text.length;\n      var start, end;\n      function coords(ch, bias) {\n        return charCoords(cm, Pos(line, ch), \"div\", lineObj, bias);\n      }\n\n      iterateBidiSections(getOrder(lineObj), fromArg || 0, toArg == null ? lineLen : toArg, function(from, to, dir) {\n        var leftPos = coords(from, \"left\"), rightPos, left, right;\n        if (from == to) {\n          rightPos = leftPos;\n          left = right = leftPos.left;\n        } else {\n          rightPos = coords(to - 1, \"right\");\n          if (dir == \"rtl\") { var tmp = leftPos; leftPos = rightPos; rightPos = tmp; }\n          left = leftPos.left;\n          right = rightPos.right;\n        }\n        if (fromArg == null && from == 0) left = leftSide;\n        if (rightPos.top - leftPos.top > 3) { // Different lines, draw top part\n          add(left, leftPos.top, null, leftPos.bottom);\n          left = leftSide;\n          if (leftPos.bottom < rightPos.top) add(left, leftPos.bottom, null, rightPos.top);\n        }\n        if (toArg == null && to == lineLen) right = rightSide;\n        if (!start || leftPos.top < start.top || leftPos.top == start.top && leftPos.left < start.left)\n          start = leftPos;\n        if (!end || rightPos.bottom > end.bottom || rightPos.bottom == end.bottom && rightPos.right > end.right)\n          end = rightPos;\n        if (left < leftSide + 1) left = leftSide;\n        add(left, rightPos.top, right - left, rightPos.bottom);\n      });\n      return {start: start, end: end};\n    }\n\n    var sFrom = range.from(), sTo = range.to();\n    if (sFrom.line == sTo.line) {\n      drawForLine(sFrom.line, sFrom.ch, sTo.ch);\n    } else {\n      var fromLine = getLine(doc, sFrom.line), toLine = getLine(doc, sTo.line);\n      var singleVLine = visualLine(fromLine) == visualLine(toLine);\n      var leftEnd = drawForLine(sFrom.line, sFrom.ch, singleVLine ? fromLine.text.length + 1 : null).end;\n      var rightStart = drawForLine(sTo.line, singleVLine ? 0 : null, sTo.ch).start;\n      if (singleVLine) {\n        if (leftEnd.top < rightStart.top - 2) {\n          add(leftEnd.right, leftEnd.top, null, leftEnd.bottom);\n          add(leftSide, rightStart.top, rightStart.left, rightStart.bottom);\n        } else {\n          add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right, leftEnd.bottom);\n        }\n      }\n      if (leftEnd.bottom < rightStart.top)\n        add(leftSide, leftEnd.bottom, null, rightStart.top);\n    }\n\n    output.appendChild(fragment);\n  }\n\n  // Cursor-blinking\n  function restartBlink(cm) {\n    if (!cm.state.focused) return;\n    var display = cm.display;\n    clearInterval(display.blinker);\n    var on = true;\n    display.cursorDiv.style.visibility = \"\";\n    if (cm.options.cursorBlinkRate > 0)\n      display.blinker = setInterval(function() {\n        display.cursorDiv.style.visibility = (on = !on) ? \"\" : \"hidden\";\n      }, cm.options.cursorBlinkRate);\n    else if (cm.options.cursorBlinkRate < 0)\n      display.cursorDiv.style.visibility = \"hidden\";\n  }\n\n  // HIGHLIGHT WORKER\n\n  function startWorker(cm, time) {\n    if (cm.doc.mode.startState && cm.doc.frontier < cm.display.viewTo)\n      cm.state.highlight.set(time, bind(highlightWorker, cm));\n  }\n\n  function highlightWorker(cm) {\n    var doc = cm.doc;\n    if (doc.frontier < doc.first) doc.frontier = doc.first;\n    if (doc.frontier >= cm.display.viewTo) return;\n    var end = +new Date + cm.options.workTime;\n    var state = copyState(doc.mode, getStateBefore(cm, doc.frontier));\n    var changedLines = [];\n\n    doc.iter(doc.frontier, Math.min(doc.first + doc.size, cm.display.viewTo + 500), function(line) {\n      if (doc.frontier >= cm.display.viewFrom) { // Visible\n        var oldStyles = line.styles;\n        var highlighted = highlightLine(cm, line, state, true);\n        line.styles = highlighted.styles;\n        var oldCls = line.styleClasses, newCls = highlighted.classes;\n        if (newCls) line.styleClasses = newCls;\n        else if (oldCls) line.styleClasses = null;\n        var ischange = !oldStyles || oldStyles.length != line.styles.length ||\n          oldCls != newCls && (!oldCls || !newCls || oldCls.bgClass != newCls.bgClass || oldCls.textClass != newCls.textClass);\n        for (var i = 0; !ischange && i < oldStyles.length; ++i) ischange = oldStyles[i] != line.styles[i];\n        if (ischange) changedLines.push(doc.frontier);\n        line.stateAfter = copyState(doc.mode, state);\n      } else {\n        processLine(cm, line.text, state);\n        line.stateAfter = doc.frontier % 5 == 0 ? copyState(doc.mode, state) : null;\n      }\n      ++doc.frontier;\n      if (+new Date > end) {\n        startWorker(cm, cm.options.workDelay);\n        return true;\n      }\n    });\n    if (changedLines.length) runInOp(cm, function() {\n      for (var i = 0; i < changedLines.length; i++)\n        regLineChange(cm, changedLines[i], \"text\");\n    });\n  }\n\n  // Finds the line to start with when starting a parse. Tries to\n  // find a line with a stateAfter, so that it can start with a\n  // valid state. If that fails, it returns the line with the\n  // smallest indentation, which tends to need the least context to\n  // parse correctly.\n  function findStartLine(cm, n, precise) {\n    var minindent, minline, doc = cm.doc;\n    var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100);\n    for (var search = n; search > lim; --search) {\n      if (search <= doc.first) return doc.first;\n      var line = getLine(doc, search - 1);\n      if (line.stateAfter && (!precise || search <= doc.frontier)) return search;\n      var indented = countColumn(line.text, null, cm.options.tabSize);\n      if (minline == null || minindent > indented) {\n        minline = search - 1;\n        minindent = indented;\n      }\n    }\n    return minline;\n  }\n\n  function getStateBefore(cm, n, precise) {\n    var doc = cm.doc, display = cm.display;\n    if (!doc.mode.startState) return true;\n    var pos = findStartLine(cm, n, precise), state = pos > doc.first && getLine(doc, pos-1).stateAfter;\n    if (!state) state = startState(doc.mode);\n    else state = copyState(doc.mode, state);\n    doc.iter(pos, n, function(line) {\n      processLine(cm, line.text, state);\n      var save = pos == n - 1 || pos % 5 == 0 || pos >= display.viewFrom && pos < display.viewTo;\n      line.stateAfter = save ? copyState(doc.mode, state) : null;\n      ++pos;\n    });\n    if (precise) doc.frontier = pos;\n    return state;\n  }\n\n  // POSITION MEASUREMENT\n\n  function paddingTop(display) {return display.lineSpace.offsetTop;}\n  function paddingVert(display) {return display.mover.offsetHeight - display.lineSpace.offsetHeight;}\n  function paddingH(display) {\n    if (display.cachedPaddingH) return display.cachedPaddingH;\n    var e = removeChildrenAndAdd(display.measure, elt(\"pre\", \"x\"));\n    var style = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle;\n    var data = {left: parseInt(style.paddingLeft), right: parseInt(style.paddingRight)};\n    if (!isNaN(data.left) && !isNaN(data.right)) display.cachedPaddingH = data;\n    return data;\n  }\n\n  // Ensure the lineView.wrapping.heights array is populated. This is\n  // an array of bottom offsets for the lines that make up a drawn\n  // line. When lineWrapping is on, there might be more than one\n  // height.\n  function ensureLineHeights(cm, lineView, rect) {\n    var wrapping = cm.options.lineWrapping;\n    var curWidth = wrapping && cm.display.scroller.clientWidth;\n    if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) {\n      var heights = lineView.measure.heights = [];\n      if (wrapping) {\n        lineView.measure.width = curWidth;\n        var rects = lineView.text.firstChild.getClientRects();\n        for (var i = 0; i < rects.length - 1; i++) {\n          var cur = rects[i], next = rects[i + 1];\n          if (Math.abs(cur.bottom - next.bottom) > 2)\n            heights.push((cur.bottom + next.top) / 2 - rect.top);\n        }\n      }\n      heights.push(rect.bottom - rect.top);\n    }\n  }\n\n  // Find a line map (mapping character offsets to text nodes) and a\n  // measurement cache for the given line number. (A line view might\n  // contain multiple lines when collapsed ranges are present.)\n  function mapFromLineView(lineView, line, lineN) {\n    if (lineView.line == line)\n      return {map: lineView.measure.map, cache: lineView.measure.cache};\n    for (var i = 0; i < lineView.rest.length; i++)\n      if (lineView.rest[i] == line)\n        return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i]};\n    for (var i = 0; i < lineView.rest.length; i++)\n      if (lineNo(lineView.rest[i]) > lineN)\n        return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i], before: true};\n  }\n\n  // Render a line into the hidden node display.externalMeasured. Used\n  // when measurement is needed for a line that's not in the viewport.\n  function updateExternalMeasurement(cm, line) {\n    line = visualLine(line);\n    var lineN = lineNo(line);\n    var view = cm.display.externalMeasured = new LineView(cm.doc, line, lineN);\n    view.lineN = lineN;\n    var built = view.built = buildLineContent(cm, view);\n    view.text = built.pre;\n    removeChildrenAndAdd(cm.display.lineMeasure, built.pre);\n    return view;\n  }\n\n  // Get a {top, bottom, left, right} box (in line-local coordinates)\n  // for a given character.\n  function measureChar(cm, line, ch, bias) {\n    return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias);\n  }\n\n  // Find a line view that corresponds to the given line number.\n  function findViewForLine(cm, lineN) {\n    if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo)\n      return cm.display.view[findViewIndex(cm, lineN)];\n    var ext = cm.display.externalMeasured;\n    if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size)\n      return ext;\n  }\n\n  // Measurement can be split in two steps, the set-up work that\n  // applies to the whole line, and the measurement of the actual\n  // character. Functions like coordsChar, that need to do a lot of\n  // measurements in a row, can thus ensure that the set-up work is\n  // only done once.\n  function prepareMeasureForLine(cm, line) {\n    var lineN = lineNo(line);\n    var view = findViewForLine(cm, lineN);\n    if (view && !view.text)\n      view = null;\n    else if (view && view.changes)\n      updateLineForChanges(cm, view, lineN, getDimensions(cm));\n    if (!view)\n      view = updateExternalMeasurement(cm, line);\n\n    var info = mapFromLineView(view, line, lineN);\n    return {\n      line: line, view: view, rect: null,\n      map: info.map, cache: info.cache, before: info.before,\n      hasHeights: false\n    };\n  }\n\n  // Given a prepared measurement object, measures the position of an\n  // actual character (or fetches it from the cache).\n  function measureCharPrepared(cm, prepared, ch, bias, varHeight) {\n    if (prepared.before) ch = -1;\n    var key = ch + (bias || \"\"), found;\n    if (prepared.cache.hasOwnProperty(key)) {\n      found = prepared.cache[key];\n    } else {\n      if (!prepared.rect)\n        prepared.rect = prepared.view.text.getBoundingClientRect();\n      if (!prepared.hasHeights) {\n        ensureLineHeights(cm, prepared.view, prepared.rect);\n        prepared.hasHeights = true;\n      }\n      found = measureCharInner(cm, prepared, ch, bias);\n      if (!found.bogus) prepared.cache[key] = found;\n    }\n    return {left: found.left, right: found.right,\n            top: varHeight ? found.rtop : found.top,\n            bottom: varHeight ? found.rbottom : found.bottom};\n  }\n\n  var nullRect = {left: 0, right: 0, top: 0, bottom: 0};\n\n  function measureCharInner(cm, prepared, ch, bias) {\n    var map = prepared.map;\n\n    var node, start, end, collapse;\n    // First, search the line map for the text node corresponding to,\n    // or closest to, the target character.\n    for (var i = 0; i < map.length; i += 3) {\n      var mStart = map[i], mEnd = map[i + 1];\n      if (ch < mStart) {\n        start = 0; end = 1;\n        collapse = \"left\";\n      } else if (ch < mEnd) {\n        start = ch - mStart;\n        end = start + 1;\n      } else if (i == map.length - 3 || ch == mEnd && map[i + 3] > ch) {\n        end = mEnd - mStart;\n        start = end - 1;\n        if (ch >= mEnd) collapse = \"right\";\n      }\n      if (start != null) {\n        node = map[i + 2];\n        if (mStart == mEnd && bias == (node.insertLeft ? \"left\" : \"right\"))\n          collapse = bias;\n        if (bias == \"left\" && start == 0)\n          while (i && map[i - 2] == map[i - 3] && map[i - 1].insertLeft) {\n            node = map[(i -= 3) + 2];\n            collapse = \"left\";\n          }\n        if (bias == \"right\" && start == mEnd - mStart)\n          while (i < map.length - 3 && map[i + 3] == map[i + 4] && !map[i + 5].insertLeft) {\n            node = map[(i += 3) + 2];\n            collapse = \"right\";\n          }\n        break;\n      }\n    }\n\n    var rect;\n    if (node.nodeType == 3) { // If it is a text node, use a range to retrieve the coordinates.\n      for (var i = 0; i < 4; i++) { // Retry a maximum of 4 times when nonsense rectangles are returned\n        while (start && isExtendingChar(prepared.line.text.charAt(mStart + start))) --start;\n        while (mStart + end < mEnd && isExtendingChar(prepared.line.text.charAt(mStart + end))) ++end;\n        if (ie && ie_version < 9 && start == 0 && end == mEnd - mStart) {\n          rect = node.parentNode.getBoundingClientRect();\n        } else if (ie && cm.options.lineWrapping) {\n          var rects = range(node, start, end).getClientRects();\n          if (rects.length)\n            rect = rects[bias == \"right\" ? rects.length - 1 : 0];\n          else\n            rect = nullRect;\n        } else {\n          rect = range(node, start, end).getBoundingClientRect() || nullRect;\n        }\n        if (rect.left || rect.right || start == 0) break;\n        end = start;\n        start = start - 1;\n        collapse = \"right\";\n      }\n      if (ie && ie_version < 11) rect = maybeUpdateRectForZooming(cm.display.measure, rect);\n    } else { // If it is a widget, simply get the box for the whole widget.\n      if (start > 0) collapse = bias = \"right\";\n      var rects;\n      if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1)\n        rect = rects[bias == \"right\" ? rects.length - 1 : 0];\n      else\n        rect = node.getBoundingClientRect();\n    }\n    if (ie && ie_version < 9 && !start && (!rect || !rect.left && !rect.right)) {\n      var rSpan = node.parentNode.getClientRects()[0];\n      if (rSpan)\n        rect = {left: rSpan.left, right: rSpan.left + charWidth(cm.display), top: rSpan.top, bottom: rSpan.bottom};\n      else\n        rect = nullRect;\n    }\n\n    var rtop = rect.top - prepared.rect.top, rbot = rect.bottom - prepared.rect.top;\n    var mid = (rtop + rbot) / 2;\n    var heights = prepared.view.measure.heights;\n    for (var i = 0; i < heights.length - 1; i++)\n      if (mid < heights[i]) break;\n    var top = i ? heights[i - 1] : 0, bot = heights[i];\n    var result = {left: (collapse == \"right\" ? rect.right : rect.left) - prepared.rect.left,\n                  right: (collapse == \"left\" ? rect.left : rect.right) - prepared.rect.left,\n                  top: top, bottom: bot};\n    if (!rect.left && !rect.right) result.bogus = true;\n    if (!cm.options.singleCursorHeightPerLine) { result.rtop = rtop; result.rbottom = rbot; }\n\n    return result;\n  }\n\n  // Work around problem with bounding client rects on ranges being\n  // returned incorrectly when zoomed on IE10 and below.\n  function maybeUpdateRectForZooming(measure, rect) {\n    if (!window.screen || screen.logicalXDPI == null ||\n        screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(measure))\n      return rect;\n    var scaleX = screen.logicalXDPI / screen.deviceXDPI;\n    var scaleY = screen.logicalYDPI / screen.deviceYDPI;\n    return {left: rect.left * scaleX, right: rect.right * scaleX,\n            top: rect.top * scaleY, bottom: rect.bottom * scaleY};\n  }\n\n  function clearLineMeasurementCacheFor(lineView) {\n    if (lineView.measure) {\n      lineView.measure.cache = {};\n      lineView.measure.heights = null;\n      if (lineView.rest) for (var i = 0; i < lineView.rest.length; i++)\n        lineView.measure.caches[i] = {};\n    }\n  }\n\n  function clearLineMeasurementCache(cm) {\n    cm.display.externalMeasure = null;\n    removeChildren(cm.display.lineMeasure);\n    for (var i = 0; i < cm.display.view.length; i++)\n      clearLineMeasurementCacheFor(cm.display.view[i]);\n  }\n\n  function clearCaches(cm) {\n    clearLineMeasurementCache(cm);\n    cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null;\n    if (!cm.options.lineWrapping) cm.display.maxLineChanged = true;\n    cm.display.lineNumChars = null;\n  }\n\n  function pageScrollX() { return window.pageXOffset || (document.documentElement || document.body).scrollLeft; }\n  function pageScrollY() { return window.pageYOffset || (document.documentElement || document.body).scrollTop; }\n\n  // Converts a {top, bottom, left, right} box from line-local\n  // coordinates into another coordinate system. Context may be one of\n  // \"line\", \"div\" (display.lineDiv), \"local\"/null (editor), or \"page\".\n  function intoCoordSystem(cm, lineObj, rect, context) {\n    if (lineObj.widgets) for (var i = 0; i < lineObj.widgets.length; ++i) if (lineObj.widgets[i].above) {\n      var size = widgetHeight(lineObj.widgets[i]);\n      rect.top += size; rect.bottom += size;\n    }\n    if (context == \"line\") return rect;\n    if (!context) context = \"local\";\n    var yOff = heightAtLine(lineObj);\n    if (context == \"local\") yOff += paddingTop(cm.display);\n    else yOff -= cm.display.viewOffset;\n    if (context == \"page\" || context == \"window\") {\n      var lOff = cm.display.lineSpace.getBoundingClientRect();\n      yOff += lOff.top + (context == \"window\" ? 0 : pageScrollY());\n      var xOff = lOff.left + (context == \"window\" ? 0 : pageScrollX());\n      rect.left += xOff; rect.right += xOff;\n    }\n    rect.top += yOff; rect.bottom += yOff;\n    return rect;\n  }\n\n  // Coverts a box from \"div\" coords to another coordinate system.\n  // Context may be \"window\", \"page\", \"div\", or \"local\"/null.\n  function fromCoordSystem(cm, coords, context) {\n    if (context == \"div\") return coords;\n    var left = coords.left, top = coords.top;\n    // First move into \"page\" coordinate system\n    if (context == \"page\") {\n      left -= pageScrollX();\n      top -= pageScrollY();\n    } else if (context == \"local\" || !context) {\n      var localBox = cm.display.sizer.getBoundingClientRect();\n      left += localBox.left;\n      top += localBox.top;\n    }\n\n    var lineSpaceBox = cm.display.lineSpace.getBoundingClientRect();\n    return {left: left - lineSpaceBox.left, top: top - lineSpaceBox.top};\n  }\n\n  function charCoords(cm, pos, context, lineObj, bias) {\n    if (!lineObj) lineObj = getLine(cm.doc, pos.line);\n    return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context);\n  }\n\n  // Returns a box for a given cursor position, which may have an\n  // 'other' property containing the position of the secondary cursor\n  // on a bidi boundary.\n  function cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHeight) {\n    lineObj = lineObj || getLine(cm.doc, pos.line);\n    if (!preparedMeasure) preparedMeasure = prepareMeasureForLine(cm, lineObj);\n    function get(ch, right) {\n      var m = measureCharPrepared(cm, preparedMeasure, ch, right ? \"right\" : \"left\", varHeight);\n      if (right) m.left = m.right; else m.right = m.left;\n      return intoCoordSystem(cm, lineObj, m, context);\n    }\n    function getBidi(ch, partPos) {\n      var part = order[partPos], right = part.level % 2;\n      if (ch == bidiLeft(part) && partPos && part.level < order[partPos - 1].level) {\n        part = order[--partPos];\n        ch = bidiRight(part) - (part.level % 2 ? 0 : 1);\n        right = true;\n      } else if (ch == bidiRight(part) && partPos < order.length - 1 && part.level < order[partPos + 1].level) {\n        part = order[++partPos];\n        ch = bidiLeft(part) - part.level % 2;\n        right = false;\n      }\n      if (right && ch == part.to && ch > part.from) return get(ch - 1);\n      return get(ch, right);\n    }\n    var order = getOrder(lineObj), ch = pos.ch;\n    if (!order) return get(ch);\n    var partPos = getBidiPartAt(order, ch);\n    var val = getBidi(ch, partPos);\n    if (bidiOther != null) val.other = getBidi(ch, bidiOther);\n    return val;\n  }\n\n  // Used to cheaply estimate the coordinates for a position. Used for\n  // intermediate scroll updates.\n  function estimateCoords(cm, pos) {\n    var left = 0, pos = clipPos(cm.doc, pos);\n    if (!cm.options.lineWrapping) left = charWidth(cm.display) * pos.ch;\n    var lineObj = getLine(cm.doc, pos.line);\n    var top = heightAtLine(lineObj) + paddingTop(cm.display);\n    return {left: left, right: left, top: top, bottom: top + lineObj.height};\n  }\n\n  // Positions returned by coordsChar contain some extra information.\n  // xRel is the relative x position of the input coordinates compared\n  // to the found position (so xRel > 0 means the coordinates are to\n  // the right of the character position, for example). When outside\n  // is true, that means the coordinates lie outside the line's\n  // vertical range.\n  function PosWithInfo(line, ch, outside, xRel) {\n    var pos = Pos(line, ch);\n    pos.xRel = xRel;\n    if (outside) pos.outside = true;\n    return pos;\n  }\n\n  // Compute the character position closest to the given coordinates.\n  // Input must be lineSpace-local (\"div\" coordinate system).\n  function coordsChar(cm, x, y) {\n    var doc = cm.doc;\n    y += cm.display.viewOffset;\n    if (y < 0) return PosWithInfo(doc.first, 0, true, -1);\n    var lineN = lineAtHeight(doc, y), last = doc.first + doc.size - 1;\n    if (lineN > last)\n      return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, true, 1);\n    if (x < 0) x = 0;\n\n    var lineObj = getLine(doc, lineN);\n    for (;;) {\n      var found = coordsCharInner(cm, lineObj, lineN, x, y);\n      var merged = collapsedSpanAtEnd(lineObj);\n      var mergedPos = merged && merged.find(0, true);\n      if (merged && (found.ch > mergedPos.from.ch || found.ch == mergedPos.from.ch && found.xRel > 0))\n        lineN = lineNo(lineObj = mergedPos.to.line);\n      else\n        return found;\n    }\n  }\n\n  function coordsCharInner(cm, lineObj, lineNo, x, y) {\n    var innerOff = y - heightAtLine(lineObj);\n    var wrongLine = false, adjust = 2 * cm.display.wrapper.clientWidth;\n    var preparedMeasure = prepareMeasureForLine(cm, lineObj);\n\n    function getX(ch) {\n      var sp = cursorCoords(cm, Pos(lineNo, ch), \"line\", lineObj, preparedMeasure);\n      wrongLine = true;\n      if (innerOff > sp.bottom) return sp.left - adjust;\n      else if (innerOff < sp.top) return sp.left + adjust;\n      else wrongLine = false;\n      return sp.left;\n    }\n\n    var bidi = getOrder(lineObj), dist = lineObj.text.length;\n    var from = lineLeft(lineObj), to = lineRight(lineObj);\n    var fromX = getX(from), fromOutside = wrongLine, toX = getX(to), toOutside = wrongLine;\n\n    if (x > toX) return PosWithInfo(lineNo, to, toOutside, 1);\n    // Do a binary search between these bounds.\n    for (;;) {\n      if (bidi ? to == from || to == moveVisually(lineObj, from, 1) : to - from <= 1) {\n        var ch = x < fromX || x - fromX <= toX - x ? from : to;\n        var xDiff = x - (ch == from ? fromX : toX);\n        while (isExtendingChar(lineObj.text.charAt(ch))) ++ch;\n        var pos = PosWithInfo(lineNo, ch, ch == from ? fromOutside : toOutside,\n                              xDiff < -1 ? -1 : xDiff > 1 ? 1 : 0);\n        return pos;\n      }\n      var step = Math.ceil(dist / 2), middle = from + step;\n      if (bidi) {\n        middle = from;\n        for (var i = 0; i < step; ++i) middle = moveVisually(lineObj, middle, 1);\n      }\n      var middleX = getX(middle);\n      if (middleX > x) {to = middle; toX = middleX; if (toOutside = wrongLine) toX += 1000; dist = step;}\n      else {from = middle; fromX = middleX; fromOutside = wrongLine; dist -= step;}\n    }\n  }\n\n  var measureText;\n  // Compute the default text height.\n  function textHeight(display) {\n    if (display.cachedTextHeight != null) return display.cachedTextHeight;\n    if (measureText == null) {\n      measureText = elt(\"pre\");\n      // Measure a bunch of lines, for browsers that compute\n      // fractional heights.\n      for (var i = 0; i < 49; ++i) {\n        measureText.appendChild(document.createTextNode(\"x\"));\n        measureText.appendChild(elt(\"br\"));\n      }\n      measureText.appendChild(document.createTextNode(\"x\"));\n    }\n    removeChildrenAndAdd(display.measure, measureText);\n    var height = measureText.offsetHeight / 50;\n    if (height > 3) display.cachedTextHeight = height;\n    removeChildren(display.measure);\n    return height || 1;\n  }\n\n  // Compute the default character width.\n  function charWidth(display) {\n    if (display.cachedCharWidth != null) return display.cachedCharWidth;\n    var anchor = elt(\"span\", \"xxxxxxxxxx\");\n    var pre = elt(\"pre\", [anchor]);\n    removeChildrenAndAdd(display.measure, pre);\n    var rect = anchor.getBoundingClientRect(), width = (rect.right - rect.left) / 10;\n    if (width > 2) display.cachedCharWidth = width;\n    return width || 10;\n  }\n\n  // OPERATIONS\n\n  // Operations are used to wrap a series of changes to the editor\n  // state in such a way that each change won't have to update the\n  // cursor and display (which would be awkward, slow, and\n  // error-prone). Instead, display updates are batched and then all\n  // combined and executed at once.\n\n  var operationGroup = null;\n\n  var nextOpId = 0;\n  // Start a new operation.\n  function startOperation(cm) {\n    cm.curOp = {\n      cm: cm,\n      viewChanged: false,      // Flag that indicates that lines might need to be redrawn\n      startHeight: cm.doc.height, // Used to detect need to update scrollbar\n      forceUpdate: false,      // Used to force a redraw\n      updateInput: null,       // Whether to reset the input textarea\n      typing: false,           // Whether this reset should be careful to leave existing text (for compositing)\n      changeObjs: null,        // Accumulated changes, for firing change events\n      cursorActivityHandlers: null, // Set of handlers to fire cursorActivity on\n      cursorActivityCalled: 0, // Tracks which cursorActivity handlers have been called already\n      selectionChanged: false, // Whether the selection needs to be redrawn\n      updateMaxLine: false,    // Set when the widest line needs to be determined anew\n      scrollLeft: null, scrollTop: null, // Intermediate scroll position, not pushed to DOM yet\n      scrollToPos: null,       // Used to scroll to a specific position\n      id: ++nextOpId           // Unique ID\n    };\n    if (operationGroup) {\n      operationGroup.ops.push(cm.curOp);\n    } else {\n      cm.curOp.ownsGroup = operationGroup = {\n        ops: [cm.curOp],\n        delayedCallbacks: []\n      };\n    }\n  }\n\n  function fireCallbacksForOps(group) {\n    // Calls delayed callbacks and cursorActivity handlers until no\n    // new ones appear\n    var callbacks = group.delayedCallbacks, i = 0;\n    do {\n      for (; i < callbacks.length; i++)\n        callbacks[i]();\n      for (var j = 0; j < group.ops.length; j++) {\n        var op = group.ops[j];\n        if (op.cursorActivityHandlers)\n          while (op.cursorActivityCalled < op.cursorActivityHandlers.length)\n            op.cursorActivityHandlers[op.cursorActivityCalled++](op.cm);\n      }\n    } while (i < callbacks.length);\n  }\n\n  // Finish an operation, updating the display and signalling delayed events\n  function endOperation(cm) {\n    var op = cm.curOp, group = op.ownsGroup;\n    if (!group) return;\n\n    try { fireCallbacksForOps(group); }\n    finally {\n      operationGroup = null;\n      for (var i = 0; i < group.ops.length; i++)\n        group.ops[i].cm.curOp = null;\n      endOperations(group);\n    }\n  }\n\n  // The DOM updates done when an operation finishes are batched so\n  // that the minimum number of relayouts are required.\n  function endOperations(group) {\n    var ops = group.ops;\n    for (var i = 0; i < ops.length; i++) // Read DOM\n      endOperation_R1(ops[i]);\n    for (var i = 0; i < ops.length; i++) // Write DOM (maybe)\n      endOperation_W1(ops[i]);\n    for (var i = 0; i < ops.length; i++) // Read DOM\n      endOperation_R2(ops[i]);\n    for (var i = 0; i < ops.length; i++) // Write DOM (maybe)\n      endOperation_W2(ops[i]);\n    for (var i = 0; i < ops.length; i++) // Read DOM\n      endOperation_finish(ops[i]);\n  }\n\n  function endOperation_R1(op) {\n    var cm = op.cm, display = cm.display;\n    if (op.updateMaxLine) findMaxLine(cm);\n\n    op.mustUpdate = op.viewChanged || op.forceUpdate || op.scrollTop != null ||\n      op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom ||\n                         op.scrollToPos.to.line >= display.viewTo) ||\n      display.maxLineChanged && cm.options.lineWrapping;\n    op.update = op.mustUpdate &&\n      new DisplayUpdate(cm, op.mustUpdate && {top: op.scrollTop, ensure: op.scrollToPos}, op.forceUpdate);\n  }\n\n  function endOperation_W1(op) {\n    op.updatedDisplay = op.mustUpdate && updateDisplayIfNeeded(op.cm, op.update);\n  }\n\n  function endOperation_R2(op) {\n    var cm = op.cm, display = cm.display;\n    if (op.updatedDisplay) updateHeightsInViewport(cm);\n\n    op.barMeasure = measureForScrollbars(cm);\n\n    // If the max line changed since it was last measured, measure it,\n    // and ensure the document's width matches it.\n    // updateDisplay_W2 will use these properties to do the actual resizing\n    if (display.maxLineChanged && !cm.options.lineWrapping) {\n      op.adjustWidthTo = measureChar(cm, display.maxLine, display.maxLine.text.length).left + 3;\n      op.maxScrollLeft = Math.max(0, display.sizer.offsetLeft + op.adjustWidthTo +\n                                  scrollerCutOff - display.scroller.clientWidth);\n    }\n\n    if (op.updatedDisplay || op.selectionChanged)\n      op.newSelectionNodes = drawSelection(cm);\n  }\n\n  function endOperation_W2(op) {\n    var cm = op.cm;\n\n    if (op.adjustWidthTo != null) {\n      cm.display.sizer.style.minWidth = op.adjustWidthTo + \"px\";\n      if (op.maxScrollLeft < cm.doc.scrollLeft)\n        setScrollLeft(cm, Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), true);\n      cm.display.maxLineChanged = false;\n    }\n\n    if (op.newSelectionNodes)\n      showSelection(cm, op.newSelectionNodes);\n    if (op.updatedDisplay)\n      setDocumentHeight(cm, op.barMeasure);\n    if (op.updatedDisplay || op.startHeight != cm.doc.height)\n      updateScrollbars(cm, op.barMeasure);\n\n    if (op.selectionChanged) restartBlink(cm);\n\n    if (cm.state.focused && op.updateInput)\n      resetInput(cm, op.typing);\n  }\n\n  function endOperation_finish(op) {\n    var cm = op.cm, display = cm.display, doc = cm.doc;\n\n    if (op.adjustWidthTo != null && Math.abs(op.barMeasure.scrollWidth - cm.display.scroller.scrollWidth) > 1)\n      updateScrollbars(cm);\n\n    if (op.updatedDisplay) postUpdateDisplay(cm, op.update);\n\n    // Abort mouse wheel delta measurement, when scrolling explicitly\n    if (display.wheelStartX != null && (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos))\n      display.wheelStartX = display.wheelStartY = null;\n\n    // Propagate the scroll position to the actual DOM scroller\n    if (op.scrollTop != null && (display.scroller.scrollTop != op.scrollTop || op.forceScroll)) {\n      var top = Math.max(0, Math.min(display.scroller.scrollHeight - display.scroller.clientHeight, op.scrollTop));\n      display.scroller.scrollTop = display.scrollbarV.scrollTop = doc.scrollTop = top;\n    }\n    if (op.scrollLeft != null && (display.scroller.scrollLeft != op.scrollLeft || op.forceScroll)) {\n      var left = Math.max(0, Math.min(display.scroller.scrollWidth - display.scroller.clientWidth, op.scrollLeft));\n      display.scroller.scrollLeft = display.scrollbarH.scrollLeft = doc.scrollLeft = left;\n      alignHorizontally(cm);\n    }\n    // If we need to scroll a specific position into view, do so.\n    if (op.scrollToPos) {\n      var coords = scrollPosIntoView(cm, clipPos(doc, op.scrollToPos.from),\n                                     clipPos(doc, op.scrollToPos.to), op.scrollToPos.margin);\n      if (op.scrollToPos.isCursor && cm.state.focused) maybeScrollWindow(cm, coords);\n    }\n\n    // Fire events for markers that are hidden/unidden by editing or\n    // undoing\n    var hidden = op.maybeHiddenMarkers, unhidden = op.maybeUnhiddenMarkers;\n    if (hidden) for (var i = 0; i < hidden.length; ++i)\n      if (!hidden[i].lines.length) signal(hidden[i], \"hide\");\n    if (unhidden) for (var i = 0; i < unhidden.length; ++i)\n      if (unhidden[i].lines.length) signal(unhidden[i], \"unhide\");\n\n    if (display.wrapper.offsetHeight)\n      doc.scrollTop = cm.display.scroller.scrollTop;\n\n    // Apply workaround for two webkit bugs\n    if (op.updatedDisplay && webkit) {\n      if (cm.options.lineWrapping)\n        checkForWebkitWidthBug(cm, op.barMeasure); // (Issue #2420)\n      if (op.barMeasure.scrollWidth > op.barMeasure.clientWidth &&\n          op.barMeasure.scrollWidth < op.barMeasure.clientWidth + 1 &&\n          !hScrollbarTakesSpace(cm))\n        updateScrollbars(cm); // (Issue #2562)\n    }\n\n    // Fire change events, and delayed event handlers\n    if (op.changeObjs)\n      signal(cm, \"changes\", cm, op.changeObjs);\n  }\n\n  // Run the given function in an operation\n  function runInOp(cm, f) {\n    if (cm.curOp) return f();\n    startOperation(cm);\n    try { return f(); }\n    finally { endOperation(cm); }\n  }\n  // Wraps a function in an operation. Returns the wrapped function.\n  function operation(cm, f) {\n    return function() {\n      if (cm.curOp) return f.apply(cm, arguments);\n      startOperation(cm);\n      try { return f.apply(cm, arguments); }\n      finally { endOperation(cm); }\n    };\n  }\n  // Used to add methods to editor and doc instances, wrapping them in\n  // operations.\n  function methodOp(f) {\n    return function() {\n      if (this.curOp) return f.apply(this, arguments);\n      startOperation(this);\n      try { return f.apply(this, arguments); }\n      finally { endOperation(this); }\n    };\n  }\n  function docMethodOp(f) {\n    return function() {\n      var cm = this.cm;\n      if (!cm || cm.curOp) return f.apply(this, arguments);\n      startOperation(cm);\n      try { return f.apply(this, arguments); }\n      finally { endOperation(cm); }\n    };\n  }\n\n  // VIEW TRACKING\n\n  // These objects are used to represent the visible (currently drawn)\n  // part of the document. A LineView may correspond to multiple\n  // logical lines, if those are connected by collapsed ranges.\n  function LineView(doc, line, lineN) {\n    // The starting line\n    this.line = line;\n    // Continuing lines, if any\n    this.rest = visualLineContinued(line);\n    // Number of logical lines in this visual line\n    this.size = this.rest ? lineNo(lst(this.rest)) - lineN + 1 : 1;\n    this.node = this.text = null;\n    this.hidden = lineIsHidden(doc, line);\n  }\n\n  // Create a range of LineView objects for the given lines.\n  function buildViewArray(cm, from, to) {\n    var array = [], nextPos;\n    for (var pos = from; pos < to; pos = nextPos) {\n      var view = new LineView(cm.doc, getLine(cm.doc, pos), pos);\n      nextPos = pos + view.size;\n      array.push(view);\n    }\n    return array;\n  }\n\n  // Updates the display.view data structure for a given change to the\n  // document. From and to are in pre-change coordinates. Lendiff is\n  // the amount of lines added or subtracted by the change. This is\n  // used for changes that span multiple lines, or change the way\n  // lines are divided into visual lines. regLineChange (below)\n  // registers single-line changes.\n  function regChange(cm, from, to, lendiff) {\n    if (from == null) from = cm.doc.first;\n    if (to == null) to = cm.doc.first + cm.doc.size;\n    if (!lendiff) lendiff = 0;\n\n    var display = cm.display;\n    if (lendiff && to < display.viewTo &&\n        (display.updateLineNumbers == null || display.updateLineNumbers > from))\n      display.updateLineNumbers = from;\n\n    cm.curOp.viewChanged = true;\n\n    if (from >= display.viewTo) { // Change after\n      if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo)\n        resetView(cm);\n    } else if (to <= display.viewFrom) { // Change before\n      if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) {\n        resetView(cm);\n      } else {\n        display.viewFrom += lendiff;\n        display.viewTo += lendiff;\n      }\n    } else if (from <= display.viewFrom && to >= display.viewTo) { // Full overlap\n      resetView(cm);\n    } else if (from <= display.viewFrom) { // Top overlap\n      var cut = viewCuttingPoint(cm, to, to + lendiff, 1);\n      if (cut) {\n        display.view = display.view.slice(cut.index);\n        display.viewFrom = cut.lineN;\n        display.viewTo += lendiff;\n      } else {\n        resetView(cm);\n      }\n    } else if (to >= display.viewTo) { // Bottom overlap\n      var cut = viewCuttingPoint(cm, from, from, -1);\n      if (cut) {\n        display.view = display.view.slice(0, cut.index);\n        display.viewTo = cut.lineN;\n      } else {\n        resetView(cm);\n      }\n    } else { // Gap in the middle\n      var cutTop = viewCuttingPoint(cm, from, from, -1);\n      var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1);\n      if (cutTop && cutBot) {\n        display.view = display.view.slice(0, cutTop.index)\n          .concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN))\n          .concat(display.view.slice(cutBot.index));\n        display.viewTo += lendiff;\n      } else {\n        resetView(cm);\n      }\n    }\n\n    var ext = display.externalMeasured;\n    if (ext) {\n      if (to < ext.lineN)\n        ext.lineN += lendiff;\n      else if (from < ext.lineN + ext.size)\n        display.externalMeasured = null;\n    }\n  }\n\n  // Register a change to a single line. Type must be one of \"text\",\n  // \"gutter\", \"class\", \"widget\"\n  function regLineChange(cm, line, type) {\n    cm.curOp.viewChanged = true;\n    var display = cm.display, ext = cm.display.externalMeasured;\n    if (ext && line >= ext.lineN && line < ext.lineN + ext.size)\n      display.externalMeasured = null;\n\n    if (line < display.viewFrom || line >= display.viewTo) return;\n    var lineView = display.view[findViewIndex(cm, line)];\n    if (lineView.node == null) return;\n    var arr = lineView.changes || (lineView.changes = []);\n    if (indexOf(arr, type) == -1) arr.push(type);\n  }\n\n  // Clear the view.\n  function resetView(cm) {\n    cm.display.viewFrom = cm.display.viewTo = cm.doc.first;\n    cm.display.view = [];\n    cm.display.viewOffset = 0;\n  }\n\n  // Find the view element corresponding to a given line. Return null\n  // when the line isn't visible.\n  function findViewIndex(cm, n) {\n    if (n >= cm.display.viewTo) return null;\n    n -= cm.display.viewFrom;\n    if (n < 0) return null;\n    var view = cm.display.view;\n    for (var i = 0; i < view.length; i++) {\n      n -= view[i].size;\n      if (n < 0) return i;\n    }\n  }\n\n  function viewCuttingPoint(cm, oldN, newN, dir) {\n    var index = findViewIndex(cm, oldN), diff, view = cm.display.view;\n    if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size)\n      return {index: index, lineN: newN};\n    for (var i = 0, n = cm.display.viewFrom; i < index; i++)\n      n += view[i].size;\n    if (n != oldN) {\n      if (dir > 0) {\n        if (index == view.length - 1) return null;\n        diff = (n + view[index].size) - oldN;\n        index++;\n      } else {\n        diff = n - oldN;\n      }\n      oldN += diff; newN += diff;\n    }\n    while (visualLineNo(cm.doc, newN) != newN) {\n      if (index == (dir < 0 ? 0 : view.length - 1)) return null;\n      newN += dir * view[index - (dir < 0 ? 1 : 0)].size;\n      index += dir;\n    }\n    return {index: index, lineN: newN};\n  }\n\n  // Force the view to cover a given range, adding empty view element\n  // or clipping off existing ones as needed.\n  function adjustView(cm, from, to) {\n    var display = cm.display, view = display.view;\n    if (view.length == 0 || from >= display.viewTo || to <= display.viewFrom) {\n      display.view = buildViewArray(cm, from, to);\n      display.viewFrom = from;\n    } else {\n      if (display.viewFrom > from)\n        display.view = buildViewArray(cm, from, display.viewFrom).concat(display.view);\n      else if (display.viewFrom < from)\n        display.view = display.view.slice(findViewIndex(cm, from));\n      display.viewFrom = from;\n      if (display.viewTo < to)\n        display.view = display.view.concat(buildViewArray(cm, display.viewTo, to));\n      else if (display.viewTo > to)\n        display.view = display.view.slice(0, findViewIndex(cm, to));\n    }\n    display.viewTo = to;\n  }\n\n  // Count the number of lines in the view whose DOM representation is\n  // out of date (or nonexistent).\n  function countDirtyView(cm) {\n    var view = cm.display.view, dirty = 0;\n    for (var i = 0; i < view.length; i++) {\n      var lineView = view[i];\n      if (!lineView.hidden && (!lineView.node || lineView.changes)) ++dirty;\n    }\n    return dirty;\n  }\n\n  // INPUT HANDLING\n\n  // Poll for input changes, using the normal rate of polling. This\n  // runs as long as the editor is focused.\n  function slowPoll(cm) {\n    if (cm.display.pollingFast) return;\n    cm.display.poll.set(cm.options.pollInterval, function() {\n      readInput(cm);\n      if (cm.state.focused) slowPoll(cm);\n    });\n  }\n\n  // When an event has just come in that is likely to add or change\n  // something in the input textarea, we poll faster, to ensure that\n  // the change appears on the screen quickly.\n  function fastPoll(cm) {\n    var missed = false;\n    cm.display.pollingFast = true;\n    function p() {\n      var changed = readInput(cm);\n      if (!changed && !missed) {missed = true; cm.display.poll.set(60, p);}\n      else {cm.display.pollingFast = false; slowPoll(cm);}\n    }\n    cm.display.poll.set(20, p);\n  }\n\n  // This will be set to an array of strings when copying, so that,\n  // when pasting, we know what kind of selections the copied text\n  // was made out of.\n  var lastCopied = null;\n\n  // Read input from the textarea, and update the document to match.\n  // When something is selected, it is present in the textarea, and\n  // selected (unless it is huge, in which case a placeholder is\n  // used). When nothing is selected, the cursor sits after previously\n  // seen text (can be empty), which is stored in prevInput (we must\n  // not reset the textarea when typing, because that breaks IME).\n  function readInput(cm) {\n    var input = cm.display.input, prevInput = cm.display.prevInput, doc = cm.doc;\n    // Since this is called a *lot*, try to bail out as cheaply as\n    // possible when it is clear that nothing happened. hasSelection\n    // will be the case when there is a lot of text in the textarea,\n    // in which case reading its value would be expensive.\n    if (!cm.state.focused || (hasSelection(input) && !prevInput) || isReadOnly(cm) || cm.options.disableInput)\n      return false;\n    // See paste handler for more on the fakedLastChar kludge\n    if (cm.state.pasteIncoming && cm.state.fakedLastChar) {\n      input.value = input.value.substring(0, input.value.length - 1);\n      cm.state.fakedLastChar = false;\n    }\n    var text = input.value;\n    // If nothing changed, bail.\n    if (text == prevInput && !cm.somethingSelected()) return false;\n    // Work around nonsensical selection resetting in IE9/10, and\n    // inexplicable appearance of private area unicode characters on\n    // some key combos in Mac (#2689).\n    if (ie && ie_version >= 9 && cm.display.inputHasSelection === text ||\n        mac && /[\\uf700-\\uf7ff]/.test(text)) {\n      resetInput(cm);\n      return false;\n    }\n\n    var withOp = !cm.curOp;\n    if (withOp) startOperation(cm);\n    cm.display.shift = false;\n\n    if (text.charCodeAt(0) == 0x200b && doc.sel == cm.display.selForContextMenu && !prevInput)\n      prevInput = \"\\u200b\";\n    // Find the part of the input that is actually new\n    var same = 0, l = Math.min(prevInput.length, text.length);\n    while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) ++same;\n    var inserted = text.slice(same), textLines = splitLines(inserted);\n\n    // When pasing N lines into N selections, insert one line per selection\n    var multiPaste = null;\n    if (cm.state.pasteIncoming && doc.sel.ranges.length > 1) {\n      if (lastCopied && lastCopied.join(\"\\n\") == inserted)\n        multiPaste = doc.sel.ranges.length % lastCopied.length == 0 && map(lastCopied, splitLines);\n      else if (textLines.length == doc.sel.ranges.length)\n        multiPaste = map(textLines, function(l) { return [l]; });\n    }\n\n    // Normal behavior is to insert the new text into every selection\n    for (var i = doc.sel.ranges.length - 1; i >= 0; i--) {\n      var range = doc.sel.ranges[i];\n      var from = range.from(), to = range.to();\n      // Handle deletion\n      if (same < prevInput.length)\n        from = Pos(from.line, from.ch - (prevInput.length - same));\n      // Handle overwrite\n      else if (cm.state.overwrite && range.empty() && !cm.state.pasteIncoming)\n        to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + lst(textLines).length));\n      var updateInput = cm.curOp.updateInput;\n      var changeEvent = {from: from, to: to, text: multiPaste ? multiPaste[i % multiPaste.length] : textLines,\n                         origin: cm.state.pasteIncoming ? \"paste\" : cm.state.cutIncoming ? \"cut\" : \"+input\"};\n      makeChange(cm.doc, changeEvent);\n      signalLater(cm, \"inputRead\", cm, changeEvent);\n      // When an 'electric' character is inserted, immediately trigger a reindent\n      if (inserted && !cm.state.pasteIncoming && cm.options.electricChars &&\n          cm.options.smartIndent && range.head.ch < 100 &&\n          (!i || doc.sel.ranges[i - 1].head.line != range.head.line)) {\n        var mode = cm.getModeAt(range.head);\n        var end = changeEnd(changeEvent);\n        if (mode.electricChars) {\n          for (var j = 0; j < mode.electricChars.length; j++)\n            if (inserted.indexOf(mode.electricChars.charAt(j)) > -1) {\n              indentLine(cm, end.line, \"smart\");\n              break;\n            }\n        } else if (mode.electricInput) {\n          if (mode.electricInput.test(getLine(doc, end.line).text.slice(0, end.ch)))\n            indentLine(cm, end.line, \"smart\");\n        }\n      }\n    }\n    ensureCursorVisible(cm);\n    cm.curOp.updateInput = updateInput;\n    cm.curOp.typing = true;\n\n    // Don't leave long text in the textarea, since it makes further polling slow\n    if (text.length > 1000 || text.indexOf(\"\\n\") > -1) input.value = cm.display.prevInput = \"\";\n    else cm.display.prevInput = text;\n    if (withOp) endOperation(cm);\n    cm.state.pasteIncoming = cm.state.cutIncoming = false;\n    return true;\n  }\n\n  // Reset the input to correspond to the selection (or to be empty,\n  // when not typing and nothing is selected)\n  function resetInput(cm, typing) {\n    var minimal, selected, doc = cm.doc;\n    if (cm.somethingSelected()) {\n      cm.display.prevInput = \"\";\n      var range = doc.sel.primary();\n      minimal = hasCopyEvent &&\n        (range.to().line - range.from().line > 100 || (selected = cm.getSelection()).length > 1000);\n      var content = minimal ? \"-\" : selected || cm.getSelection();\n      cm.display.input.value = content;\n      if (cm.state.focused) selectInput(cm.display.input);\n      if (ie && ie_version >= 9) cm.display.inputHasSelection = content;\n    } else if (!typing) {\n      cm.display.prevInput = cm.display.input.value = \"\";\n      if (ie && ie_version >= 9) cm.display.inputHasSelection = null;\n    }\n    cm.display.inaccurateSelection = minimal;\n  }\n\n  function focusInput(cm) {\n    if (cm.options.readOnly != \"nocursor\" && (!mobile || activeElt() != cm.display.input))\n      cm.display.input.focus();\n  }\n\n  function ensureFocus(cm) {\n    if (!cm.state.focused) { focusInput(cm); onFocus(cm); }\n  }\n\n  function isReadOnly(cm) {\n    return cm.options.readOnly || cm.doc.cantEdit;\n  }\n\n  // EVENT HANDLERS\n\n  // Attach the necessary event handlers when initializing the editor\n  function registerEventHandlers(cm) {\n    var d = cm.display;\n    on(d.scroller, \"mousedown\", operation(cm, onMouseDown));\n    // Older IE's will not fire a second mousedown for a double click\n    if (ie && ie_version < 11)\n      on(d.scroller, \"dblclick\", operation(cm, function(e) {\n        if (signalDOMEvent(cm, e)) return;\n        var pos = posFromMouse(cm, e);\n        if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) return;\n        e_preventDefault(e);\n        var word = cm.findWordAt(pos);\n        extendSelection(cm.doc, word.anchor, word.head);\n      }));\n    else\n      on(d.scroller, \"dblclick\", function(e) { signalDOMEvent(cm, e) || e_preventDefault(e); });\n    // Prevent normal selection in the editor (we handle our own)\n    on(d.lineSpace, \"selectstart\", function(e) {\n      if (!eventInWidget(d, e)) e_preventDefault(e);\n    });\n    // Some browsers fire contextmenu *after* opening the menu, at\n    // which point we can't mess with it anymore. Context menu is\n    // handled in onMouseDown for these browsers.\n    if (!captureRightClick) on(d.scroller, \"contextmenu\", function(e) {onContextMenu(cm, e);});\n\n    // Sync scrolling between fake scrollbars and real scrollable\n    // area, ensure viewport is updated when scrolling.\n    on(d.scroller, \"scroll\", function() {\n      if (d.scroller.clientHeight) {\n        setScrollTop(cm, d.scroller.scrollTop);\n        setScrollLeft(cm, d.scroller.scrollLeft, true);\n        signal(cm, \"scroll\", cm);\n      }\n    });\n    on(d.scrollbarV, \"scroll\", function() {\n      if (d.scroller.clientHeight) setScrollTop(cm, d.scrollbarV.scrollTop);\n    });\n    on(d.scrollbarH, \"scroll\", function() {\n      if (d.scroller.clientHeight) setScrollLeft(cm, d.scrollbarH.scrollLeft);\n    });\n\n    // Listen to wheel events in order to try and update the viewport on time.\n    on(d.scroller, \"mousewheel\", function(e){onScrollWheel(cm, e);});\n    on(d.scroller, \"DOMMouseScroll\", function(e){onScrollWheel(cm, e);});\n\n    // Prevent clicks in the scrollbars from killing focus\n    function reFocus() { if (cm.state.focused) setTimeout(bind(focusInput, cm), 0); }\n    on(d.scrollbarH, \"mousedown\", reFocus);\n    on(d.scrollbarV, \"mousedown\", reFocus);\n    // Prevent wrapper from ever scrolling\n    on(d.wrapper, \"scroll\", function() { d.wrapper.scrollTop = d.wrapper.scrollLeft = 0; });\n\n    on(d.input, \"keyup\", function(e) { onKeyUp.call(cm, e); });\n    on(d.input, \"input\", function() {\n      if (ie && ie_version >= 9 && cm.display.inputHasSelection) cm.display.inputHasSelection = null;\n      fastPoll(cm);\n    });\n    on(d.input, \"keydown\", operation(cm, onKeyDown));\n    on(d.input, \"keypress\", operation(cm, onKeyPress));\n    on(d.input, \"focus\", bind(onFocus, cm));\n    on(d.input, \"blur\", bind(onBlur, cm));\n\n    function drag_(e) {\n      if (!signalDOMEvent(cm, e)) e_stop(e);\n    }\n    if (cm.options.dragDrop) {\n      on(d.scroller, \"dragstart\", function(e){onDragStart(cm, e);});\n      on(d.scroller, \"dragenter\", drag_);\n      on(d.scroller, \"dragover\", drag_);\n      on(d.scroller, \"drop\", operation(cm, onDrop));\n    }\n    on(d.scroller, \"paste\", function(e) {\n      if (eventInWidget(d, e)) return;\n      cm.state.pasteIncoming = true;\n      focusInput(cm);\n      fastPoll(cm);\n    });\n    on(d.input, \"paste\", function() {\n      // Workaround for webkit bug https://bugs.webkit.org/show_bug.cgi?id=90206\n      // Add a char to the end of textarea before paste occur so that\n      // selection doesn't span to the end of textarea.\n      if (webkit && !cm.state.fakedLastChar && !(new Date - cm.state.lastMiddleDown < 200)) {\n        var start = d.input.selectionStart, end = d.input.selectionEnd;\n        d.input.value += \"$\";\n        // The selection end needs to be set before the start, otherwise there\n        // can be an intermediate non-empty selection between the two, which\n        // can override the middle-click paste buffer on linux and cause the\n        // wrong thing to get pasted.\n        d.input.selectionEnd = end;\n        d.input.selectionStart = start;\n        cm.state.fakedLastChar = true;\n      }\n      cm.state.pasteIncoming = true;\n      fastPoll(cm);\n    });\n\n    function prepareCopyCut(e) {\n      if (cm.somethingSelected()) {\n        lastCopied = cm.getSelections();\n        if (d.inaccurateSelection) {\n          d.prevInput = \"\";\n          d.inaccurateSelection = false;\n          d.input.value = lastCopied.join(\"\\n\");\n          selectInput(d.input);\n        }\n      } else {\n        var text = [], ranges = [];\n        for (var i = 0; i < cm.doc.sel.ranges.length; i++) {\n          var line = cm.doc.sel.ranges[i].head.line;\n          var lineRange = {anchor: Pos(line, 0), head: Pos(line + 1, 0)};\n          ranges.push(lineRange);\n          text.push(cm.getRange(lineRange.anchor, lineRange.head));\n        }\n        if (e.type == \"cut\") {\n          cm.setSelections(ranges, null, sel_dontScroll);\n        } else {\n          d.prevInput = \"\";\n          d.input.value = text.join(\"\\n\");\n          selectInput(d.input);\n        }\n        lastCopied = text;\n      }\n      if (e.type == \"cut\") cm.state.cutIncoming = true;\n    }\n    on(d.input, \"cut\", prepareCopyCut);\n    on(d.input, \"copy\", prepareCopyCut);\n\n    // Needed to handle Tab key in KHTML\n    if (khtml) on(d.sizer, \"mouseup\", function() {\n      if (activeElt() == d.input) d.input.blur();\n      focusInput(cm);\n    });\n  }\n\n  // Called when the window resizes\n  function onResize(cm) {\n    // Might be a text scaling operation, clear size caches.\n    var d = cm.display;\n    d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n    cm.setSize();\n  }\n\n  // MOUSE EVENTS\n\n  // Return true when the given mouse event happened in a widget\n  function eventInWidget(display, e) {\n    for (var n = e_target(e); n != display.wrapper; n = n.parentNode) {\n      if (!n || n.ignoreEvents || n.parentNode == display.sizer && n != display.mover) return true;\n    }\n  }\n\n  // Given a mouse event, find the corresponding position. If liberal\n  // is false, it checks whether a gutter or scrollbar was clicked,\n  // and returns null if it was. forRect is used by rectangular\n  // selections, and tries to estimate a character position even for\n  // coordinates beyond the right of the text.\n  function posFromMouse(cm, e, liberal, forRect) {\n    var display = cm.display;\n    if (!liberal) {\n      var target = e_target(e);\n      if (target == display.scrollbarH || target == display.scrollbarV ||\n          target == display.scrollbarFiller || target == display.gutterFiller) return null;\n    }\n    var x, y, space = display.lineSpace.getBoundingClientRect();\n    // Fails unpredictably on IE[67] when mouse is dragged around quickly.\n    try { x = e.clientX - space.left; y = e.clientY - space.top; }\n    catch (e) { return null; }\n    var coords = coordsChar(cm, x, y), line;\n    if (forRect && coords.xRel == 1 && (line = getLine(cm.doc, coords.line).text).length == coords.ch) {\n      var colDiff = countColumn(line, line.length, cm.options.tabSize) - line.length;\n      coords = Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff));\n    }\n    return coords;\n  }\n\n  // A mouse down can be a single click, double click, triple click,\n  // start of selection drag, start of text drag, new cursor\n  // (ctrl-click), rectangle drag (alt-drag), or xwin\n  // middle-click-paste. Or it might be a click on something we should\n  // not interfere with, such as a scrollbar or widget.\n  function onMouseDown(e) {\n    if (signalDOMEvent(this, e)) return;\n    var cm = this, display = cm.display;\n    display.shift = e.shiftKey;\n\n    if (eventInWidget(display, e)) {\n      if (!webkit) {\n        // Briefly turn off draggability, to allow widgets to do\n        // normal dragging things.\n        display.scroller.draggable = false;\n        setTimeout(function(){display.scroller.draggable = true;}, 100);\n      }\n      return;\n    }\n    if (clickInGutter(cm, e)) return;\n    var start = posFromMouse(cm, e);\n    window.focus();\n\n    switch (e_button(e)) {\n    case 1:\n      if (start)\n        leftButtonDown(cm, e, start);\n      else if (e_target(e) == display.scroller)\n        e_preventDefault(e);\n      break;\n    case 2:\n      if (webkit) cm.state.lastMiddleDown = +new Date;\n      if (start) extendSelection(cm.doc, start);\n      setTimeout(bind(focusInput, cm), 20);\n      e_preventDefault(e);\n      break;\n    case 3:\n      if (captureRightClick) onContextMenu(cm, e);\n      break;\n    }\n  }\n\n  var lastClick, lastDoubleClick;\n  function leftButtonDown(cm, e, start) {\n    setTimeout(bind(ensureFocus, cm), 0);\n\n    var now = +new Date, type;\n    if (lastDoubleClick && lastDoubleClick.time > now - 400 && cmp(lastDoubleClick.pos, start) == 0) {\n      type = \"triple\";\n    } else if (lastClick && lastClick.time > now - 400 && cmp(lastClick.pos, start) == 0) {\n      type = \"double\";\n      lastDoubleClick = {time: now, pos: start};\n    } else {\n      type = \"single\";\n      lastClick = {time: now, pos: start};\n    }\n\n    var sel = cm.doc.sel, modifier = mac ? e.metaKey : e.ctrlKey;\n    if (cm.options.dragDrop && dragAndDrop && !isReadOnly(cm) &&\n        type == \"single\" && sel.contains(start) > -1 && sel.somethingSelected())\n      leftButtonStartDrag(cm, e, start, modifier);\n    else\n      leftButtonSelect(cm, e, start, type, modifier);\n  }\n\n  // Start a text drag. When it ends, see if any dragging actually\n  // happen, and treat as a click if it didn't.\n  function leftButtonStartDrag(cm, e, start, modifier) {\n    var display = cm.display;\n    var dragEnd = operation(cm, function(e2) {\n      if (webkit) display.scroller.draggable = false;\n      cm.state.draggingText = false;\n      off(document, \"mouseup\", dragEnd);\n      off(display.scroller, \"drop\", dragEnd);\n      if (Math.abs(e.clientX - e2.clientX) + Math.abs(e.clientY - e2.clientY) < 10) {\n        e_preventDefault(e2);\n        if (!modifier)\n          extendSelection(cm.doc, start);\n        focusInput(cm);\n        // Work around unexplainable focus problem in IE9 (#2127)\n        if (ie && ie_version == 9)\n          setTimeout(function() {document.body.focus(); focusInput(cm);}, 20);\n      }\n    });\n    // Let the drag handler handle this.\n    if (webkit) display.scroller.draggable = true;\n    cm.state.draggingText = dragEnd;\n    // IE's approach to draggable\n    if (display.scroller.dragDrop) display.scroller.dragDrop();\n    on(document, \"mouseup\", dragEnd);\n    on(display.scroller, \"drop\", dragEnd);\n  }\n\n  // Normal selection, as opposed to text dragging.\n  function leftButtonSelect(cm, e, start, type, addNew) {\n    var display = cm.display, doc = cm.doc;\n    e_preventDefault(e);\n\n    var ourRange, ourIndex, startSel = doc.sel;\n    if (addNew && !e.shiftKey) {\n      ourIndex = doc.sel.contains(start);\n      if (ourIndex > -1)\n        ourRange = doc.sel.ranges[ourIndex];\n      else\n        ourRange = new Range(start, start);\n    } else {\n      ourRange = doc.sel.primary();\n    }\n\n    if (e.altKey) {\n      type = \"rect\";\n      if (!addNew) ourRange = new Range(start, start);\n      start = posFromMouse(cm, e, true, true);\n      ourIndex = -1;\n    } else if (type == \"double\") {\n      var word = cm.findWordAt(start);\n      if (cm.display.shift || doc.extend)\n        ourRange = extendRange(doc, ourRange, word.anchor, word.head);\n      else\n        ourRange = word;\n    } else if (type == \"triple\") {\n      var line = new Range(Pos(start.line, 0), clipPos(doc, Pos(start.line + 1, 0)));\n      if (cm.display.shift || doc.extend)\n        ourRange = extendRange(doc, ourRange, line.anchor, line.head);\n      else\n        ourRange = line;\n    } else {\n      ourRange = extendRange(doc, ourRange, start);\n    }\n\n    if (!addNew) {\n      ourIndex = 0;\n      setSelection(doc, new Selection([ourRange], 0), sel_mouse);\n      startSel = doc.sel;\n    } else if (ourIndex > -1) {\n      replaceOneSelection(doc, ourIndex, ourRange, sel_mouse);\n    } else {\n      ourIndex = doc.sel.ranges.length;\n      setSelection(doc, normalizeSelection(doc.sel.ranges.concat([ourRange]), ourIndex),\n                   {scroll: false, origin: \"*mouse\"});\n    }\n\n    var lastPos = start;\n    function extendTo(pos) {\n      if (cmp(lastPos, pos) == 0) return;\n      lastPos = pos;\n\n      if (type == \"rect\") {\n        var ranges = [], tabSize = cm.options.tabSize;\n        var startCol = countColumn(getLine(doc, start.line).text, start.ch, tabSize);\n        var posCol = countColumn(getLine(doc, pos.line).text, pos.ch, tabSize);\n        var left = Math.min(startCol, posCol), right = Math.max(startCol, posCol);\n        for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line));\n             line <= end; line++) {\n          var text = getLine(doc, line).text, leftPos = findColumn(text, left, tabSize);\n          if (left == right)\n            ranges.push(new Range(Pos(line, leftPos), Pos(line, leftPos)));\n          else if (text.length > leftPos)\n            ranges.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize))));\n        }\n        if (!ranges.length) ranges.push(new Range(start, start));\n        setSelection(doc, normalizeSelection(startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex),\n                     {origin: \"*mouse\", scroll: false});\n        cm.scrollIntoView(pos);\n      } else {\n        var oldRange = ourRange;\n        var anchor = oldRange.anchor, head = pos;\n        if (type != \"single\") {\n          if (type == \"double\")\n            var range = cm.findWordAt(pos);\n          else\n            var range = new Range(Pos(pos.line, 0), clipPos(doc, Pos(pos.line + 1, 0)));\n          if (cmp(range.anchor, anchor) > 0) {\n            head = range.head;\n            anchor = minPos(oldRange.from(), range.anchor);\n          } else {\n            head = range.anchor;\n            anchor = maxPos(oldRange.to(), range.head);\n          }\n        }\n        var ranges = startSel.ranges.slice(0);\n        ranges[ourIndex] = new Range(clipPos(doc, anchor), head);\n        setSelection(doc, normalizeSelection(ranges, ourIndex), sel_mouse);\n      }\n    }\n\n    var editorSize = display.wrapper.getBoundingClientRect();\n    // Used to ensure timeout re-tries don't fire when another extend\n    // happened in the meantime (clearTimeout isn't reliable -- at\n    // least on Chrome, the timeouts still happen even when cleared,\n    // if the clear happens after their scheduled firing time).\n    var counter = 0;\n\n    function extend(e) {\n      var curCount = ++counter;\n      var cur = posFromMouse(cm, e, true, type == \"rect\");\n      if (!cur) return;\n      if (cmp(cur, lastPos) != 0) {\n        ensureFocus(cm);\n        extendTo(cur);\n        var visible = visibleLines(display, doc);\n        if (cur.line >= visible.to || cur.line < visible.from)\n          setTimeout(operation(cm, function(){if (counter == curCount) extend(e);}), 150);\n      } else {\n        var outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0;\n        if (outside) setTimeout(operation(cm, function() {\n          if (counter != curCount) return;\n          display.scroller.scrollTop += outside;\n          extend(e);\n        }), 50);\n      }\n    }\n\n    function done(e) {\n      counter = Infinity;\n      e_preventDefault(e);\n      focusInput(cm);\n      off(document, \"mousemove\", move);\n      off(document, \"mouseup\", up);\n      doc.history.lastSelOrigin = null;\n    }\n\n    var move = operation(cm, function(e) {\n      if (!e_button(e)) done(e);\n      else extend(e);\n    });\n    var up = operation(cm, done);\n    on(document, \"mousemove\", move);\n    on(document, \"mouseup\", up);\n  }\n\n  // Determines whether an event happened in the gutter, and fires the\n  // handlers for the corresponding event.\n  function gutterEvent(cm, e, type, prevent, signalfn) {\n    try { var mX = e.clientX, mY = e.clientY; }\n    catch(e) { return false; }\n    if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) return false;\n    if (prevent) e_preventDefault(e);\n\n    var display = cm.display;\n    var lineBox = display.lineDiv.getBoundingClientRect();\n\n    if (mY > lineBox.bottom || !hasHandler(cm, type)) return e_defaultPrevented(e);\n    mY -= lineBox.top - display.viewOffset;\n\n    for (var i = 0; i < cm.options.gutters.length; ++i) {\n      var g = display.gutters.childNodes[i];\n      if (g && g.getBoundingClientRect().right >= mX) {\n        var line = lineAtHeight(cm.doc, mY);\n        var gutter = cm.options.gutters[i];\n        signalfn(cm, type, cm, line, gutter, e);\n        return e_defaultPrevented(e);\n      }\n    }\n  }\n\n  function clickInGutter(cm, e) {\n    return gutterEvent(cm, e, \"gutterClick\", true, signalLater);\n  }\n\n  // Kludge to work around strange IE behavior where it'll sometimes\n  // re-fire a series of drag-related events right after the drop (#1551)\n  var lastDrop = 0;\n\n  function onDrop(e) {\n    var cm = this;\n    if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e))\n      return;\n    e_preventDefault(e);\n    if (ie) lastDrop = +new Date;\n    var pos = posFromMouse(cm, e, true), files = e.dataTransfer.files;\n    if (!pos || isReadOnly(cm)) return;\n    // Might be a file drop, in which case we simply extract the text\n    // and insert it.\n    if (files && files.length && window.FileReader && window.File) {\n      var n = files.length, text = Array(n), read = 0;\n      var loadFile = function(file, i) {\n        var reader = new FileReader;\n        reader.onload = operation(cm, function() {\n          text[i] = reader.result;\n          if (++read == n) {\n            pos = clipPos(cm.doc, pos);\n            var change = {from: pos, to: pos, text: splitLines(text.join(\"\\n\")), origin: \"paste\"};\n            makeChange(cm.doc, change);\n            setSelectionReplaceHistory(cm.doc, simpleSelection(pos, changeEnd(change)));\n          }\n        });\n        reader.readAsText(file);\n      };\n      for (var i = 0; i < n; ++i) loadFile(files[i], i);\n    } else { // Normal drop\n      // Don't do a replace if the drop happened inside of the selected text.\n      if (cm.state.draggingText && cm.doc.sel.contains(pos) > -1) {\n        cm.state.draggingText(e);\n        // Ensure the editor is re-focused\n        setTimeout(bind(focusInput, cm), 20);\n        return;\n      }\n      try {\n        var text = e.dataTransfer.getData(\"Text\");\n        if (text) {\n          if (cm.state.draggingText && !(mac ? e.metaKey : e.ctrlKey))\n            var selected = cm.listSelections();\n          setSelectionNoUndo(cm.doc, simpleSelection(pos, pos));\n          if (selected) for (var i = 0; i < selected.length; ++i)\n            replaceRange(cm.doc, \"\", selected[i].anchor, selected[i].head, \"drag\");\n          cm.replaceSelection(text, \"around\", \"paste\");\n          focusInput(cm);\n        }\n      }\n      catch(e){}\n    }\n  }\n\n  function onDragStart(cm, e) {\n    if (ie && (!cm.state.draggingText || +new Date - lastDrop < 100)) { e_stop(e); return; }\n    if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) return;\n\n    e.dataTransfer.setData(\"Text\", cm.getSelection());\n\n    // Use dummy image instead of default browsers image.\n    // Recent Safari (~6.0.2) have a tendency to segfault when this happens, so we don't do it there.\n    if (e.dataTransfer.setDragImage && !safari) {\n      var img = elt(\"img\", null, null, \"position: fixed; left: 0; top: 0;\");\n      img.src = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n      if (presto) {\n        img.width = img.height = 1;\n        cm.display.wrapper.appendChild(img);\n        // Force a relayout, or Opera won't use our image for some obscure reason\n        img._top = img.offsetTop;\n      }\n      e.dataTransfer.setDragImage(img, 0, 0);\n      if (presto) img.parentNode.removeChild(img);\n    }\n  }\n\n  // SCROLL EVENTS\n\n  // Sync the scrollable area and scrollbars, ensure the viewport\n  // covers the visible area.\n  function setScrollTop(cm, val) {\n    if (Math.abs(cm.doc.scrollTop - val) < 2) return;\n    cm.doc.scrollTop = val;\n    if (!gecko) updateDisplaySimple(cm, {top: val});\n    if (cm.display.scroller.scrollTop != val) cm.display.scroller.scrollTop = val;\n    if (cm.display.scrollbarV.scrollTop != val) cm.display.scrollbarV.scrollTop = val;\n    if (gecko) updateDisplaySimple(cm);\n    startWorker(cm, 100);\n  }\n  // Sync scroller and scrollbar, ensure the gutter elements are\n  // aligned.\n  function setScrollLeft(cm, val, isScroller) {\n    if (isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) return;\n    val = Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth);\n    cm.doc.scrollLeft = val;\n    alignHorizontally(cm);\n    if (cm.display.scroller.scrollLeft != val) cm.display.scroller.scrollLeft = val;\n    if (cm.display.scrollbarH.scrollLeft != val) cm.display.scrollbarH.scrollLeft = val;\n  }\n\n  // Since the delta values reported on mouse wheel events are\n  // unstandardized between browsers and even browser versions, and\n  // generally horribly unpredictable, this code starts by measuring\n  // the scroll effect that the first few mouse wheel events have,\n  // and, from that, detects the way it can convert deltas to pixel\n  // offsets afterwards.\n  //\n  // The reason we want to know the amount a wheel event will scroll\n  // is that it gives us a chance to update the display before the\n  // actual scrolling happens, reducing flickering.\n\n  var wheelSamples = 0, wheelPixelsPerUnit = null;\n  // Fill in a browser-detected starting value on browsers where we\n  // know one. These don't have to be accurate -- the result of them\n  // being wrong would just be a slight flicker on the first wheel\n  // scroll (if it is large enough).\n  if (ie) wheelPixelsPerUnit = -.53;\n  else if (gecko) wheelPixelsPerUnit = 15;\n  else if (chrome) wheelPixelsPerUnit = -.7;\n  else if (safari) wheelPixelsPerUnit = -1/3;\n\n  function onScrollWheel(cm, e) {\n    var dx = e.wheelDeltaX, dy = e.wheelDeltaY;\n    if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) dx = e.detail;\n    if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) dy = e.detail;\n    else if (dy == null) dy = e.wheelDelta;\n\n    var display = cm.display, scroll = display.scroller;\n    // Quit if there's nothing to scroll here\n    if (!(dx && scroll.scrollWidth > scroll.clientWidth ||\n          dy && scroll.scrollHeight > scroll.clientHeight)) return;\n\n    // Webkit browsers on OS X abort momentum scrolls when the target\n    // of the scroll event is removed from the scrollable element.\n    // This hack (see related code in patchDisplay) makes sure the\n    // element is kept around.\n    if (dy && mac && webkit) {\n      outer: for (var cur = e.target, view = display.view; cur != scroll; cur = cur.parentNode) {\n        for (var i = 0; i < view.length; i++) {\n          if (view[i].node == cur) {\n            cm.display.currentWheelTarget = cur;\n            break outer;\n          }\n        }\n      }\n    }\n\n    // On some browsers, horizontal scrolling will cause redraws to\n    // happen before the gutter has been realigned, causing it to\n    // wriggle around in a most unseemly way. When we have an\n    // estimated pixels/delta value, we just handle horizontal\n    // scrolling entirely here. It'll be slightly off from native, but\n    // better than glitching out.\n    if (dx && !gecko && !presto && wheelPixelsPerUnit != null) {\n      if (dy)\n        setScrollTop(cm, Math.max(0, Math.min(scroll.scrollTop + dy * wheelPixelsPerUnit, scroll.scrollHeight - scroll.clientHeight)));\n      setScrollLeft(cm, Math.max(0, Math.min(scroll.scrollLeft + dx * wheelPixelsPerUnit, scroll.scrollWidth - scroll.clientWidth)));\n      e_preventDefault(e);\n      display.wheelStartX = null; // Abort measurement, if in progress\n      return;\n    }\n\n    // 'Project' the visible viewport to cover the area that is being\n    // scrolled into view (if we know enough to estimate it).\n    if (dy && wheelPixelsPerUnit != null) {\n      var pixels = dy * wheelPixelsPerUnit;\n      var top = cm.doc.scrollTop, bot = top + display.wrapper.clientHeight;\n      if (pixels < 0) top = Math.max(0, top + pixels - 50);\n      else bot = Math.min(cm.doc.height, bot + pixels + 50);\n      updateDisplaySimple(cm, {top: top, bottom: bot});\n    }\n\n    if (wheelSamples < 20) {\n      if (display.wheelStartX == null) {\n        display.wheelStartX = scroll.scrollLeft; display.wheelStartY = scroll.scrollTop;\n        display.wheelDX = dx; display.wheelDY = dy;\n        setTimeout(function() {\n          if (display.wheelStartX == null) return;\n          var movedX = scroll.scrollLeft - display.wheelStartX;\n          var movedY = scroll.scrollTop - display.wheelStartY;\n          var sample = (movedY && display.wheelDY && movedY / display.wheelDY) ||\n            (movedX && display.wheelDX && movedX / display.wheelDX);\n          display.wheelStartX = display.wheelStartY = null;\n          if (!sample) return;\n          wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1);\n          ++wheelSamples;\n        }, 200);\n      } else {\n        display.wheelDX += dx; display.wheelDY += dy;\n      }\n    }\n  }\n\n  // KEY EVENTS\n\n  // Run a handler that was bound to a key.\n  function doHandleBinding(cm, bound, dropShift) {\n    if (typeof bound == \"string\") {\n      bound = commands[bound];\n      if (!bound) return false;\n    }\n    // Ensure previous input has been read, so that the handler sees a\n    // consistent view of the document\n    if (cm.display.pollingFast && readInput(cm)) cm.display.pollingFast = false;\n    var prevShift = cm.display.shift, done = false;\n    try {\n      if (isReadOnly(cm)) cm.state.suppressEdits = true;\n      if (dropShift) cm.display.shift = false;\n      done = bound(cm) != Pass;\n    } finally {\n      cm.display.shift = prevShift;\n      cm.state.suppressEdits = false;\n    }\n    return done;\n  }\n\n  // Collect the currently active keymaps.\n  function allKeyMaps(cm) {\n    var maps = cm.state.keyMaps.slice(0);\n    if (cm.options.extraKeys) maps.push(cm.options.extraKeys);\n    maps.push(cm.options.keyMap);\n    return maps;\n  }\n\n  var maybeTransition;\n  // Handle a key from the keydown event.\n  function handleKeyBinding(cm, e) {\n    // Handle automatic keymap transitions\n    var startMap = getKeyMap(cm.options.keyMap), next = startMap.auto;\n    clearTimeout(maybeTransition);\n    if (next && !isModifierKey(e)) maybeTransition = setTimeout(function() {\n      if (getKeyMap(cm.options.keyMap) == startMap) {\n        cm.options.keyMap = (next.call ? next.call(null, cm) : next);\n        keyMapChanged(cm);\n      }\n    }, 50);\n\n    var name = keyName(e, true), handled = false;\n    if (!name) return false;\n    var keymaps = allKeyMaps(cm);\n\n    if (e.shiftKey) {\n      // First try to resolve full name (including 'Shift-'). Failing\n      // that, see if there is a cursor-motion command (starting with\n      // 'go') bound to the keyname without 'Shift-'.\n      handled = lookupKey(\"Shift-\" + name, keymaps, function(b) {return doHandleBinding(cm, b, true);})\n             || lookupKey(name, keymaps, function(b) {\n                  if (typeof b == \"string\" ? /^go[A-Z]/.test(b) : b.motion)\n                    return doHandleBinding(cm, b);\n                });\n    } else {\n      handled = lookupKey(name, keymaps, function(b) { return doHandleBinding(cm, b); });\n    }\n\n    if (handled) {\n      e_preventDefault(e);\n      restartBlink(cm);\n      signalLater(cm, \"keyHandled\", cm, name, e);\n    }\n    return handled;\n  }\n\n  // Handle a key from the keypress event\n  function handleCharBinding(cm, e, ch) {\n    var handled = lookupKey(\"'\" + ch + \"'\", allKeyMaps(cm),\n                            function(b) { return doHandleBinding(cm, b, true); });\n    if (handled) {\n      e_preventDefault(e);\n      restartBlink(cm);\n      signalLater(cm, \"keyHandled\", cm, \"'\" + ch + \"'\", e);\n    }\n    return handled;\n  }\n\n  var lastStoppedKey = null;\n  function onKeyDown(e) {\n    var cm = this;\n    ensureFocus(cm);\n    if (signalDOMEvent(cm, e)) return;\n    // IE does strange things with escape.\n    if (ie && ie_version < 11 && e.keyCode == 27) e.returnValue = false;\n    var code = e.keyCode;\n    cm.display.shift = code == 16 || e.shiftKey;\n    var handled = handleKeyBinding(cm, e);\n    if (presto) {\n      lastStoppedKey = handled ? code : null;\n      // Opera has no cut event... we try to at least catch the key combo\n      if (!handled && code == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey))\n        cm.replaceSelection(\"\", null, \"cut\");\n    }\n\n    // Turn mouse into crosshair when Alt is held on Mac.\n    if (code == 18 && !/\\bCodeMirror-crosshair\\b/.test(cm.display.lineDiv.className))\n      showCrossHair(cm);\n  }\n\n  function showCrossHair(cm) {\n    var lineDiv = cm.display.lineDiv;\n    addClass(lineDiv, \"CodeMirror-crosshair\");\n\n    function up(e) {\n      if (e.keyCode == 18 || !e.altKey) {\n        rmClass(lineDiv, \"CodeMirror-crosshair\");\n        off(document, \"keyup\", up);\n        off(document, \"mouseover\", up);\n      }\n    }\n    on(document, \"keyup\", up);\n    on(document, \"mouseover\", up);\n  }\n\n  function onKeyUp(e) {\n    if (e.keyCode == 16) this.doc.sel.shift = false;\n    signalDOMEvent(this, e);\n  }\n\n  function onKeyPress(e) {\n    var cm = this;\n    if (signalDOMEvent(cm, e) || e.ctrlKey && !e.altKey || mac && e.metaKey) return;\n    var keyCode = e.keyCode, charCode = e.charCode;\n    if (presto && keyCode == lastStoppedKey) {lastStoppedKey = null; e_preventDefault(e); return;}\n    if (((presto && (!e.which || e.which < 10)) || khtml) && handleKeyBinding(cm, e)) return;\n    var ch = String.fromCharCode(charCode == null ? keyCode : charCode);\n    if (handleCharBinding(cm, e, ch)) return;\n    if (ie && ie_version >= 9) cm.display.inputHasSelection = null;\n    fastPoll(cm);\n  }\n\n  // FOCUS/BLUR EVENTS\n\n  function onFocus(cm) {\n    if (cm.options.readOnly == \"nocursor\") return;\n    if (!cm.state.focused) {\n      signal(cm, \"focus\", cm);\n      cm.state.focused = true;\n      addClass(cm.display.wrapper, \"CodeMirror-focused\");\n      // The prevInput test prevents this from firing when a context\n      // menu is closed (since the resetInput would kill the\n      // select-all detection hack)\n      if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel) {\n        resetInput(cm);\n        if (webkit) setTimeout(bind(resetInput, cm, true), 0); // Issue #1730\n      }\n    }\n    slowPoll(cm);\n    restartBlink(cm);\n  }\n  function onBlur(cm) {\n    if (cm.state.focused) {\n      signal(cm, \"blur\", cm);\n      cm.state.focused = false;\n      rmClass(cm.display.wrapper, \"CodeMirror-focused\");\n    }\n    clearInterval(cm.display.blinker);\n    setTimeout(function() {if (!cm.state.focused) cm.display.shift = false;}, 150);\n  }\n\n  // CONTEXT MENU HANDLING\n\n  // To make the context menu work, we need to briefly unhide the\n  // textarea (making it as unobtrusive as possible) to let the\n  // right-click take effect on it.\n  function onContextMenu(cm, e) {\n    if (signalDOMEvent(cm, e, \"contextmenu\")) return;\n    var display = cm.display;\n    if (eventInWidget(display, e) || contextMenuInGutter(cm, e)) return;\n\n    var pos = posFromMouse(cm, e), scrollPos = display.scroller.scrollTop;\n    if (!pos || presto) return; // Opera is difficult.\n\n    // Reset the current text selection only if the click is done outside of the selection\n    // and 'resetSelectionOnContextMenu' option is true.\n    var reset = cm.options.resetSelectionOnContextMenu;\n    if (reset && cm.doc.sel.contains(pos) == -1)\n      operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll);\n\n    var oldCSS = display.input.style.cssText;\n    display.inputDiv.style.position = \"absolute\";\n    display.input.style.cssText = \"position: fixed; width: 30px; height: 30px; top: \" + (e.clientY - 5) +\n      \"px; left: \" + (e.clientX - 5) + \"px; z-index: 1000; background: \" +\n      (ie ? \"rgba(255, 255, 255, .05)\" : \"transparent\") +\n      \"; outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);\";\n    if (webkit) var oldScrollY = window.scrollY; // Work around Chrome issue (#2712)\n    focusInput(cm);\n    if (webkit) window.scrollTo(null, oldScrollY);\n    resetInput(cm);\n    // Adds \"Select all\" to context menu in FF\n    if (!cm.somethingSelected()) display.input.value = display.prevInput = \" \";\n    display.selForContextMenu = cm.doc.sel;\n    clearTimeout(display.detectingSelectAll);\n\n    // Select-all will be greyed out if there's nothing to select, so\n    // this adds a zero-width space so that we can later check whether\n    // it got selected.\n    function prepareSelectAllHack() {\n      if (display.input.selectionStart != null) {\n        var selected = cm.somethingSelected();\n        var extval = display.input.value = \"\\u200b\" + (selected ? display.input.value : \"\");\n        display.prevInput = selected ? \"\" : \"\\u200b\";\n        display.input.selectionStart = 1; display.input.selectionEnd = extval.length;\n        // Re-set this, in case some other handler touched the\n        // selection in the meantime.\n        display.selForContextMenu = cm.doc.sel;\n      }\n    }\n    function rehide() {\n      display.inputDiv.style.position = \"relative\";\n      display.input.style.cssText = oldCSS;\n      if (ie && ie_version < 9) display.scrollbarV.scrollTop = display.scroller.scrollTop = scrollPos;\n      slowPoll(cm);\n\n      // Try to detect the user choosing select-all\n      if (display.input.selectionStart != null) {\n        if (!ie || (ie && ie_version < 9)) prepareSelectAllHack();\n        var i = 0, poll = function() {\n          if (display.selForContextMenu == cm.doc.sel && display.input.selectionStart == 0)\n            operation(cm, commands.selectAll)(cm);\n          else if (i++ < 10) display.detectingSelectAll = setTimeout(poll, 500);\n          else resetInput(cm);\n        };\n        display.detectingSelectAll = setTimeout(poll, 200);\n      }\n    }\n\n    if (ie && ie_version >= 9) prepareSelectAllHack();\n    if (captureRightClick) {\n      e_stop(e);\n      var mouseup = function() {\n        off(window, \"mouseup\", mouseup);\n        setTimeout(rehide, 20);\n      };\n      on(window, \"mouseup\", mouseup);\n    } else {\n      setTimeout(rehide, 50);\n    }\n  }\n\n  function contextMenuInGutter(cm, e) {\n    if (!hasHandler(cm, \"gutterContextMenu\")) return false;\n    return gutterEvent(cm, e, \"gutterContextMenu\", false, signal);\n  }\n\n  // UPDATING\n\n  // Compute the position of the end of a change (its 'to' property\n  // refers to the pre-change end).\n  var changeEnd = CodeMirror.changeEnd = function(change) {\n    if (!change.text) return change.to;\n    return Pos(change.from.line + change.text.length - 1,\n               lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0));\n  };\n\n  // Adjust a position to refer to the post-change position of the\n  // same text, or the end of the change if the change covers it.\n  function adjustForChange(pos, change) {\n    if (cmp(pos, change.from) < 0) return pos;\n    if (cmp(pos, change.to) <= 0) return changeEnd(change);\n\n    var line = pos.line + change.text.length - (change.to.line - change.from.line) - 1, ch = pos.ch;\n    if (pos.line == change.to.line) ch += changeEnd(change).ch - change.to.ch;\n    return Pos(line, ch);\n  }\n\n  function computeSelAfterChange(doc, change) {\n    var out = [];\n    for (var i = 0; i < doc.sel.ranges.length; i++) {\n      var range = doc.sel.ranges[i];\n      out.push(new Range(adjustForChange(range.anchor, change),\n                         adjustForChange(range.head, change)));\n    }\n    return normalizeSelection(out, doc.sel.primIndex);\n  }\n\n  function offsetPos(pos, old, nw) {\n    if (pos.line == old.line)\n      return Pos(nw.line, pos.ch - old.ch + nw.ch);\n    else\n      return Pos(nw.line + (pos.line - old.line), pos.ch);\n  }\n\n  // Used by replaceSelections to allow moving the selection to the\n  // start or around the replaced test. Hint may be \"start\" or \"around\".\n  function computeReplacedSel(doc, changes, hint) {\n    var out = [];\n    var oldPrev = Pos(doc.first, 0), newPrev = oldPrev;\n    for (var i = 0; i < changes.length; i++) {\n      var change = changes[i];\n      var from = offsetPos(change.from, oldPrev, newPrev);\n      var to = offsetPos(changeEnd(change), oldPrev, newPrev);\n      oldPrev = change.to;\n      newPrev = to;\n      if (hint == \"around\") {\n        var range = doc.sel.ranges[i], inv = cmp(range.head, range.anchor) < 0;\n        out[i] = new Range(inv ? to : from, inv ? from : to);\n      } else {\n        out[i] = new Range(from, from);\n      }\n    }\n    return new Selection(out, doc.sel.primIndex);\n  }\n\n  // Allow \"beforeChange\" event handlers to influence a change\n  function filterChange(doc, change, update) {\n    var obj = {\n      canceled: false,\n      from: change.from,\n      to: change.to,\n      text: change.text,\n      origin: change.origin,\n      cancel: function() { this.canceled = true; }\n    };\n    if (update) obj.update = function(from, to, text, origin) {\n      if (from) this.from = clipPos(doc, from);\n      if (to) this.to = clipPos(doc, to);\n      if (text) this.text = text;\n      if (origin !== undefined) this.origin = origin;\n    };\n    signal(doc, \"beforeChange\", doc, obj);\n    if (doc.cm) signal(doc.cm, \"beforeChange\", doc.cm, obj);\n\n    if (obj.canceled) return null;\n    return {from: obj.from, to: obj.to, text: obj.text, origin: obj.origin};\n  }\n\n  // Apply a change to a document, and add it to the document's\n  // history, and propagating it to all linked documents.\n  function makeChange(doc, change, ignoreReadOnly) {\n    if (doc.cm) {\n      if (!doc.cm.curOp) return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly);\n      if (doc.cm.state.suppressEdits) return;\n    }\n\n    if (hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\")) {\n      change = filterChange(doc, change, true);\n      if (!change) return;\n    }\n\n    // Possibly split or suppress the update based on the presence\n    // of read-only spans in its range.\n    var split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to);\n    if (split) {\n      for (var i = split.length - 1; i >= 0; --i)\n        makeChangeInner(doc, {from: split[i].from, to: split[i].to, text: i ? [\"\"] : change.text});\n    } else {\n      makeChangeInner(doc, change);\n    }\n  }\n\n  function makeChangeInner(doc, change) {\n    if (change.text.length == 1 && change.text[0] == \"\" && cmp(change.from, change.to) == 0) return;\n    var selAfter = computeSelAfterChange(doc, change);\n    addChangeToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN);\n\n    makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change));\n    var rebased = [];\n\n    linkedDocs(doc, function(doc, sharedHist) {\n      if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n        rebaseHist(doc.history, change);\n        rebased.push(doc.history);\n      }\n      makeChangeSingleDoc(doc, change, null, stretchSpansOverChange(doc, change));\n    });\n  }\n\n  // Revert a change stored in a document's history.\n  function makeChangeFromHistory(doc, type, allowSelectionOnly) {\n    if (doc.cm && doc.cm.state.suppressEdits) return;\n\n    var hist = doc.history, event, selAfter = doc.sel;\n    var source = type == \"undo\" ? hist.done : hist.undone, dest = type == \"undo\" ? hist.undone : hist.done;\n\n    // Verify that there is a useable event (so that ctrl-z won't\n    // needlessly clear selection events)\n    for (var i = 0; i < source.length; i++) {\n      event = source[i];\n      if (allowSelectionOnly ? event.ranges && !event.equals(doc.sel) : !event.ranges)\n        break;\n    }\n    if (i == source.length) return;\n    hist.lastOrigin = hist.lastSelOrigin = null;\n\n    for (;;) {\n      event = source.pop();\n      if (event.ranges) {\n        pushSelectionToHistory(event, dest);\n        if (allowSelectionOnly && !event.equals(doc.sel)) {\n          setSelection(doc, event, {clearRedo: false});\n          return;\n        }\n        selAfter = event;\n      }\n      else break;\n    }\n\n    // Build up a reverse change object to add to the opposite history\n    // stack (redo when undoing, and vice versa).\n    var antiChanges = [];\n    pushSelectionToHistory(selAfter, dest);\n    dest.push({changes: antiChanges, generation: hist.generation});\n    hist.generation = event.generation || ++hist.maxGeneration;\n\n    var filter = hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\");\n\n    for (var i = event.changes.length - 1; i >= 0; --i) {\n      var change = event.changes[i];\n      change.origin = type;\n      if (filter && !filterChange(doc, change, false)) {\n        source.length = 0;\n        return;\n      }\n\n      antiChanges.push(historyChangeFromChange(doc, change));\n\n      var after = i ? computeSelAfterChange(doc, change) : lst(source);\n      makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change));\n      if (!i && doc.cm) doc.cm.scrollIntoView({from: change.from, to: changeEnd(change)});\n      var rebased = [];\n\n      // Propagate to the linked documents\n      linkedDocs(doc, function(doc, sharedHist) {\n        if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n          rebaseHist(doc.history, change);\n          rebased.push(doc.history);\n        }\n        makeChangeSingleDoc(doc, change, null, mergeOldSpans(doc, change));\n      });\n    }\n  }\n\n  // Sub-views need their line numbers shifted when text is added\n  // above or below them in the parent document.\n  function shiftDoc(doc, distance) {\n    if (distance == 0) return;\n    doc.first += distance;\n    doc.sel = new Selection(map(doc.sel.ranges, function(range) {\n      return new Range(Pos(range.anchor.line + distance, range.anchor.ch),\n                       Pos(range.head.line + distance, range.head.ch));\n    }), doc.sel.primIndex);\n    if (doc.cm) {\n      regChange(doc.cm, doc.first, doc.first - distance, distance);\n      for (var d = doc.cm.display, l = d.viewFrom; l < d.viewTo; l++)\n        regLineChange(doc.cm, l, \"gutter\");\n    }\n  }\n\n  // More lower-level change function, handling only a single document\n  // (not linked ones).\n  function makeChangeSingleDoc(doc, change, selAfter, spans) {\n    if (doc.cm && !doc.cm.curOp)\n      return operation(doc.cm, makeChangeSingleDoc)(doc, change, selAfter, spans);\n\n    if (change.to.line < doc.first) {\n      shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line));\n      return;\n    }\n    if (change.from.line > doc.lastLine()) return;\n\n    // Clip the change to the size of this doc\n    if (change.from.line < doc.first) {\n      var shift = change.text.length - 1 - (doc.first - change.from.line);\n      shiftDoc(doc, shift);\n      change = {from: Pos(doc.first, 0), to: Pos(change.to.line + shift, change.to.ch),\n                text: [lst(change.text)], origin: change.origin};\n    }\n    var last = doc.lastLine();\n    if (change.to.line > last) {\n      change = {from: change.from, to: Pos(last, getLine(doc, last).text.length),\n                text: [change.text[0]], origin: change.origin};\n    }\n\n    change.removed = getBetween(doc, change.from, change.to);\n\n    if (!selAfter) selAfter = computeSelAfterChange(doc, change);\n    if (doc.cm) makeChangeSingleDocInEditor(doc.cm, change, spans);\n    else updateDoc(doc, change, spans);\n    setSelectionNoUndo(doc, selAfter, sel_dontScroll);\n  }\n\n  // Handle the interaction of a change to a document with the editor\n  // that this document is part of.\n  function makeChangeSingleDocInEditor(cm, change, spans) {\n    var doc = cm.doc, display = cm.display, from = change.from, to = change.to;\n\n    var recomputeMaxLength = false, checkWidthStart = from.line;\n    if (!cm.options.lineWrapping) {\n      checkWidthStart = lineNo(visualLine(getLine(doc, from.line)));\n      doc.iter(checkWidthStart, to.line + 1, function(line) {\n        if (line == display.maxLine) {\n          recomputeMaxLength = true;\n          return true;\n        }\n      });\n    }\n\n    if (doc.sel.contains(change.from, change.to) > -1)\n      signalCursorActivity(cm);\n\n    updateDoc(doc, change, spans, estimateHeight(cm));\n\n    if (!cm.options.lineWrapping) {\n      doc.iter(checkWidthStart, from.line + change.text.length, function(line) {\n        var len = lineLength(line);\n        if (len > display.maxLineLength) {\n          display.maxLine = line;\n          display.maxLineLength = len;\n          display.maxLineChanged = true;\n          recomputeMaxLength = false;\n        }\n      });\n      if (recomputeMaxLength) cm.curOp.updateMaxLine = true;\n    }\n\n    // Adjust frontier, schedule worker\n    doc.frontier = Math.min(doc.frontier, from.line);\n    startWorker(cm, 400);\n\n    var lendiff = change.text.length - (to.line - from.line) - 1;\n    // Remember that these lines changed, for updating the display\n    if (from.line == to.line && change.text.length == 1 && !isWholeLineUpdate(cm.doc, change))\n      regLineChange(cm, from.line, \"text\");\n    else\n      regChange(cm, from.line, to.line + 1, lendiff);\n\n    var changesHandler = hasHandler(cm, \"changes\"), changeHandler = hasHandler(cm, \"change\");\n    if (changeHandler || changesHandler) {\n      var obj = {\n        from: from, to: to,\n        text: change.text,\n        removed: change.removed,\n        origin: change.origin\n      };\n      if (changeHandler) signalLater(cm, \"change\", cm, obj);\n      if (changesHandler) (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj);\n    }\n    cm.display.selForContextMenu = null;\n  }\n\n  function replaceRange(doc, code, from, to, origin) {\n    if (!to) to = from;\n    if (cmp(to, from) < 0) { var tmp = to; to = from; from = tmp; }\n    if (typeof code == \"string\") code = splitLines(code);\n    makeChange(doc, {from: from, to: to, text: code, origin: origin});\n  }\n\n  // SCROLLING THINGS INTO VIEW\n\n  // If an editor sits on the top or bottom of the window, partially\n  // scrolled out of view, this ensures that the cursor is visible.\n  function maybeScrollWindow(cm, coords) {\n    var display = cm.display, box = display.sizer.getBoundingClientRect(), doScroll = null;\n    if (coords.top + box.top < 0) doScroll = true;\n    else if (coords.bottom + box.top > (window.innerHeight || document.documentElement.clientHeight)) doScroll = false;\n    if (doScroll != null && !phantom) {\n      var scrollNode = elt(\"div\", \"\\u200b\", null, \"position: absolute; top: \" +\n                           (coords.top - display.viewOffset - paddingTop(cm.display)) + \"px; height: \" +\n                           (coords.bottom - coords.top + scrollerCutOff) + \"px; left: \" +\n                           coords.left + \"px; width: 2px;\");\n      cm.display.lineSpace.appendChild(scrollNode);\n      scrollNode.scrollIntoView(doScroll);\n      cm.display.lineSpace.removeChild(scrollNode);\n    }\n  }\n\n  // Scroll a given position into view (immediately), verifying that\n  // it actually became visible (as line heights are accurately\n  // measured, the position of something may 'drift' during drawing).\n  function scrollPosIntoView(cm, pos, end, margin) {\n    if (margin == null) margin = 0;\n    for (var limit = 0; limit < 5; limit++) {\n      var changed = false, coords = cursorCoords(cm, pos);\n      var endCoords = !end || end == pos ? coords : cursorCoords(cm, end);\n      var scrollPos = calculateScrollPos(cm, Math.min(coords.left, endCoords.left),\n                                         Math.min(coords.top, endCoords.top) - margin,\n                                         Math.max(coords.left, endCoords.left),\n                                         Math.max(coords.bottom, endCoords.bottom) + margin);\n      var startTop = cm.doc.scrollTop, startLeft = cm.doc.scrollLeft;\n      if (scrollPos.scrollTop != null) {\n        setScrollTop(cm, scrollPos.scrollTop);\n        if (Math.abs(cm.doc.scrollTop - startTop) > 1) changed = true;\n      }\n      if (scrollPos.scrollLeft != null) {\n        setScrollLeft(cm, scrollPos.scrollLeft);\n        if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) changed = true;\n      }\n      if (!changed) return coords;\n    }\n  }\n\n  // Scroll a given set of coordinates into view (immediately).\n  function scrollIntoView(cm, x1, y1, x2, y2) {\n    var scrollPos = calculateScrollPos(cm, x1, y1, x2, y2);\n    if (scrollPos.scrollTop != null) setScrollTop(cm, scrollPos.scrollTop);\n    if (scrollPos.scrollLeft != null) setScrollLeft(cm, scrollPos.scrollLeft);\n  }\n\n  // Calculate a new scroll position needed to scroll the given\n  // rectangle into view. Returns an object with scrollTop and\n  // scrollLeft properties. When these are undefined, the\n  // vertical/horizontal position does not need to be adjusted.\n  function calculateScrollPos(cm, x1, y1, x2, y2) {\n    var display = cm.display, snapMargin = textHeight(cm.display);\n    if (y1 < 0) y1 = 0;\n    var screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop;\n    var screen = display.scroller.clientHeight - scrollerCutOff, result = {};\n    if (y2 - y1 > screen) y2 = y1 + screen;\n    var docBottom = cm.doc.height + paddingVert(display);\n    var atTop = y1 < snapMargin, atBottom = y2 > docBottom - snapMargin;\n    if (y1 < screentop) {\n      result.scrollTop = atTop ? 0 : y1;\n    } else if (y2 > screentop + screen) {\n      var newTop = Math.min(y1, (atBottom ? docBottom : y2) - screen);\n      if (newTop != screentop) result.scrollTop = newTop;\n    }\n\n    var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft;\n    var screenw = display.scroller.clientWidth - scrollerCutOff - display.gutters.offsetWidth;\n    var tooWide = x2 - x1 > screenw;\n    if (tooWide) x2 = x1 + screenw;\n    if (x1 < 10)\n      result.scrollLeft = 0;\n    else if (x1 < screenleft)\n      result.scrollLeft = Math.max(0, x1 - (tooWide ? 0 : 10));\n    else if (x2 > screenw + screenleft - 3)\n      result.scrollLeft = x2 + (tooWide ? 0 : 10) - screenw;\n\n    return result;\n  }\n\n  // Store a relative adjustment to the scroll position in the current\n  // operation (to be applied when the operation finishes).\n  function addToScrollPos(cm, left, top) {\n    if (left != null || top != null) resolveScrollToPos(cm);\n    if (left != null)\n      cm.curOp.scrollLeft = (cm.curOp.scrollLeft == null ? cm.doc.scrollLeft : cm.curOp.scrollLeft) + left;\n    if (top != null)\n      cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top;\n  }\n\n  // Make sure that at the end of the operation the current cursor is\n  // shown.\n  function ensureCursorVisible(cm) {\n    resolveScrollToPos(cm);\n    var cur = cm.getCursor(), from = cur, to = cur;\n    if (!cm.options.lineWrapping) {\n      from = cur.ch ? Pos(cur.line, cur.ch - 1) : cur;\n      to = Pos(cur.line, cur.ch + 1);\n    }\n    cm.curOp.scrollToPos = {from: from, to: to, margin: cm.options.cursorScrollMargin, isCursor: true};\n  }\n\n  // When an operation has its scrollToPos property set, and another\n  // scroll action is applied before the end of the operation, this\n  // 'simulates' scrolling that position into view in a cheap way, so\n  // that the effect of intermediate scroll commands is not ignored.\n  function resolveScrollToPos(cm) {\n    var range = cm.curOp.scrollToPos;\n    if (range) {\n      cm.curOp.scrollToPos = null;\n      var from = estimateCoords(cm, range.from), to = estimateCoords(cm, range.to);\n      var sPos = calculateScrollPos(cm, Math.min(from.left, to.left),\n                                    Math.min(from.top, to.top) - range.margin,\n                                    Math.max(from.right, to.right),\n                                    Math.max(from.bottom, to.bottom) + range.margin);\n      cm.scrollTo(sPos.scrollLeft, sPos.scrollTop);\n    }\n  }\n\n  // API UTILITIES\n\n  // Indent the given line. The how parameter can be \"smart\",\n  // \"add\"/null, \"subtract\", or \"prev\". When aggressive is false\n  // (typically set to true for forced single-line indents), empty\n  // lines are not indented, and places where the mode returns Pass\n  // are left alone.\n  function indentLine(cm, n, how, aggressive) {\n    var doc = cm.doc, state;\n    if (how == null) how = \"add\";\n    if (how == \"smart\") {\n      // Fall back to \"prev\" when the mode doesn't have an indentation\n      // method.\n      if (!doc.mode.indent) how = \"prev\";\n      else state = getStateBefore(cm, n);\n    }\n\n    var tabSize = cm.options.tabSize;\n    var line = getLine(doc, n), curSpace = countColumn(line.text, null, tabSize);\n    if (line.stateAfter) line.stateAfter = null;\n    var curSpaceString = line.text.match(/^\\s*/)[0], indentation;\n    if (!aggressive && !/\\S/.test(line.text)) {\n      indentation = 0;\n      how = \"not\";\n    } else if (how == \"smart\") {\n      indentation = doc.mode.indent(state, line.text.slice(curSpaceString.length), line.text);\n      if (indentation == Pass || indentation > 150) {\n        if (!aggressive) return;\n        how = \"prev\";\n      }\n    }\n    if (how == \"prev\") {\n      if (n > doc.first) indentation = countColumn(getLine(doc, n-1).text, null, tabSize);\n      else indentation = 0;\n    } else if (how == \"add\") {\n      indentation = curSpace + cm.options.indentUnit;\n    } else if (how == \"subtract\") {\n      indentation = curSpace - cm.options.indentUnit;\n    } else if (typeof how == \"number\") {\n      indentation = curSpace + how;\n    }\n    indentation = Math.max(0, indentation);\n\n    var indentString = \"\", pos = 0;\n    if (cm.options.indentWithTabs)\n      for (var i = Math.floor(indentation / tabSize); i; --i) {pos += tabSize; indentString += \"\\t\";}\n    if (pos < indentation) indentString += spaceStr(indentation - pos);\n\n    if (indentString != curSpaceString) {\n      replaceRange(doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), \"+input\");\n    } else {\n      // Ensure that, if the cursor was in the whitespace at the start\n      // of the line, it is moved to the end of that space.\n      for (var i = 0; i < doc.sel.ranges.length; i++) {\n        var range = doc.sel.ranges[i];\n        if (range.head.line == n && range.head.ch < curSpaceString.length) {\n          var pos = Pos(n, curSpaceString.length);\n          replaceOneSelection(doc, i, new Range(pos, pos));\n          break;\n        }\n      }\n    }\n    line.stateAfter = null;\n  }\n\n  // Utility for applying a change to a line by handle or number,\n  // returning the number and optionally registering the line as\n  // changed.\n  function changeLine(doc, handle, changeType, op) {\n    var no = handle, line = handle;\n    if (typeof handle == \"number\") line = getLine(doc, clipLine(doc, handle));\n    else no = lineNo(handle);\n    if (no == null) return null;\n    if (op(line, no) && doc.cm) regLineChange(doc.cm, no, changeType);\n    return line;\n  }\n\n  // Helper for deleting text near the selection(s), used to implement\n  // backspace, delete, and similar functionality.\n  function deleteNearSelection(cm, compute) {\n    var ranges = cm.doc.sel.ranges, kill = [];\n    // Build up a set of ranges to kill first, merging overlapping\n    // ranges.\n    for (var i = 0; i < ranges.length; i++) {\n      var toKill = compute(ranges[i]);\n      while (kill.length && cmp(toKill.from, lst(kill).to) <= 0) {\n        var replaced = kill.pop();\n        if (cmp(replaced.from, toKill.from) < 0) {\n          toKill.from = replaced.from;\n          break;\n        }\n      }\n      kill.push(toKill);\n    }\n    // Next, remove those actual ranges.\n    runInOp(cm, function() {\n      for (var i = kill.length - 1; i >= 0; i--)\n        replaceRange(cm.doc, \"\", kill[i].from, kill[i].to, \"+delete\");\n      ensureCursorVisible(cm);\n    });\n  }\n\n  // Used for horizontal relative motion. Dir is -1 or 1 (left or\n  // right), unit can be \"char\", \"column\" (like char, but doesn't\n  // cross line boundaries), \"word\" (across next word), or \"group\" (to\n  // the start of next group of word or non-word-non-whitespace\n  // chars). The visually param controls whether, in right-to-left\n  // text, direction 1 means to move towards the next index in the\n  // string, or towards the character to the right of the current\n  // position. The resulting position will have a hitSide=true\n  // property if it reached the end of the document.\n  function findPosH(doc, pos, dir, unit, visually) {\n    var line = pos.line, ch = pos.ch, origDir = dir;\n    var lineObj = getLine(doc, line);\n    var possible = true;\n    function findNextLine() {\n      var l = line + dir;\n      if (l < doc.first || l >= doc.first + doc.size) return (possible = false);\n      line = l;\n      return lineObj = getLine(doc, l);\n    }\n    function moveOnce(boundToLine) {\n      var next = (visually ? moveVisually : moveLogically)(lineObj, ch, dir, true);\n      if (next == null) {\n        if (!boundToLine && findNextLine()) {\n          if (visually) ch = (dir < 0 ? lineRight : lineLeft)(lineObj);\n          else ch = dir < 0 ? lineObj.text.length : 0;\n        } else return (possible = false);\n      } else ch = next;\n      return true;\n    }\n\n    if (unit == \"char\") moveOnce();\n    else if (unit == \"column\") moveOnce(true);\n    else if (unit == \"word\" || unit == \"group\") {\n      var sawType = null, group = unit == \"group\";\n      var helper = doc.cm && doc.cm.getHelper(pos, \"wordChars\");\n      for (var first = true;; first = false) {\n        if (dir < 0 && !moveOnce(!first)) break;\n        var cur = lineObj.text.charAt(ch) || \"\\n\";\n        var type = isWordChar(cur, helper) ? \"w\"\n          : group && cur == \"\\n\" ? \"n\"\n          : !group || /\\s/.test(cur) ? null\n          : \"p\";\n        if (group && !first && !type) type = \"s\";\n        if (sawType && sawType != type) {\n          if (dir < 0) {dir = 1; moveOnce();}\n          break;\n        }\n\n        if (type) sawType = type;\n        if (dir > 0 && !moveOnce(!first)) break;\n      }\n    }\n    var result = skipAtomic(doc, Pos(line, ch), origDir, true);\n    if (!possible) result.hitSide = true;\n    return result;\n  }\n\n  // For relative vertical movement. Dir may be -1 or 1. Unit can be\n  // \"page\" or \"line\". The resulting position will have a hitSide=true\n  // property if it reached the end of the document.\n  function findPosV(cm, pos, dir, unit) {\n    var doc = cm.doc, x = pos.left, y;\n    if (unit == \"page\") {\n      var pageSize = Math.min(cm.display.wrapper.clientHeight, window.innerHeight || document.documentElement.clientHeight);\n      y = pos.top + dir * (pageSize - (dir < 0 ? 1.5 : .5) * textHeight(cm.display));\n    } else if (unit == \"line\") {\n      y = dir > 0 ? pos.bottom + 3 : pos.top - 3;\n    }\n    for (;;) {\n      var target = coordsChar(cm, x, y);\n      if (!target.outside) break;\n      if (dir < 0 ? y <= 0 : y >= doc.height) { target.hitSide = true; break; }\n      y += dir * 5;\n    }\n    return target;\n  }\n\n  // EDITOR METHODS\n\n  // The publicly visible API. Note that methodOp(f) means\n  // 'wrap f in an operation, performed on its `this` parameter'.\n\n  // This is not the complete set of editor methods. Most of the\n  // methods defined on the Doc type are also injected into\n  // CodeMirror.prototype, for backwards compatibility and\n  // convenience.\n\n  CodeMirror.prototype = {\n    constructor: CodeMirror,\n    focus: function(){window.focus(); focusInput(this); fastPoll(this);},\n\n    setOption: function(option, value) {\n      var options = this.options, old = options[option];\n      if (options[option] == value && option != \"mode\") return;\n      options[option] = value;\n      if (optionHandlers.hasOwnProperty(option))\n        operation(this, optionHandlers[option])(this, value, old);\n    },\n\n    getOption: function(option) {return this.options[option];},\n    getDoc: function() {return this.doc;},\n\n    addKeyMap: function(map, bottom) {\n      this.state.keyMaps[bottom ? \"push\" : \"unshift\"](map);\n    },\n    removeKeyMap: function(map) {\n      var maps = this.state.keyMaps;\n      for (var i = 0; i < maps.length; ++i)\n        if (maps[i] == map || (typeof maps[i] != \"string\" && maps[i].name == map)) {\n          maps.splice(i, 1);\n          return true;\n        }\n    },\n\n    addOverlay: methodOp(function(spec, options) {\n      var mode = spec.token ? spec : CodeMirror.getMode(this.options, spec);\n      if (mode.startState) throw new Error(\"Overlays may not be stateful.\");\n      this.state.overlays.push({mode: mode, modeSpec: spec, opaque: options && options.opaque});\n      this.state.modeGen++;\n      regChange(this);\n    }),\n    removeOverlay: methodOp(function(spec) {\n      var overlays = this.state.overlays;\n      for (var i = 0; i < overlays.length; ++i) {\n        var cur = overlays[i].modeSpec;\n        if (cur == spec || typeof spec == \"string\" && cur.name == spec) {\n          overlays.splice(i, 1);\n          this.state.modeGen++;\n          regChange(this);\n          return;\n        }\n      }\n    }),\n\n    indentLine: methodOp(function(n, dir, aggressive) {\n      if (typeof dir != \"string\" && typeof dir != \"number\") {\n        if (dir == null) dir = this.options.smartIndent ? \"smart\" : \"prev\";\n        else dir = dir ? \"add\" : \"subtract\";\n      }\n      if (isLine(this.doc, n)) indentLine(this, n, dir, aggressive);\n    }),\n    indentSelection: methodOp(function(how) {\n      var ranges = this.doc.sel.ranges, end = -1;\n      for (var i = 0; i < ranges.length; i++) {\n        var range = ranges[i];\n        if (!range.empty()) {\n          var from = range.from(), to = range.to();\n          var start = Math.max(end, from.line);\n          end = Math.min(this.lastLine(), to.line - (to.ch ? 0 : 1)) + 1;\n          for (var j = start; j < end; ++j)\n            indentLine(this, j, how);\n          var newRanges = this.doc.sel.ranges;\n          if (from.ch == 0 && ranges.length == newRanges.length && newRanges[i].from().ch > 0)\n            replaceOneSelection(this.doc, i, new Range(from, newRanges[i].to()), sel_dontScroll);\n        } else if (range.head.line > end) {\n          indentLine(this, range.head.line, how, true);\n          end = range.head.line;\n          if (i == this.doc.sel.primIndex) ensureCursorVisible(this);\n        }\n      }\n    }),\n\n    // Fetch the parser token for a given character. Useful for hacks\n    // that want to inspect the mode state (say, for completion).\n    getTokenAt: function(pos, precise) {\n      var doc = this.doc;\n      pos = clipPos(doc, pos);\n      var state = getStateBefore(this, pos.line, precise), mode = this.doc.mode;\n      var line = getLine(doc, pos.line);\n      var stream = new StringStream(line.text, this.options.tabSize);\n      while (stream.pos < pos.ch && !stream.eol()) {\n        stream.start = stream.pos;\n        var style = readToken(mode, stream, state);\n      }\n      return {start: stream.start,\n              end: stream.pos,\n              string: stream.current(),\n              type: style || null,\n              state: state};\n    },\n\n    getTokenTypeAt: function(pos) {\n      pos = clipPos(this.doc, pos);\n      var styles = getLineStyles(this, getLine(this.doc, pos.line));\n      var before = 0, after = (styles.length - 1) / 2, ch = pos.ch;\n      var type;\n      if (ch == 0) type = styles[2];\n      else for (;;) {\n        var mid = (before + after) >> 1;\n        if ((mid ? styles[mid * 2 - 1] : 0) >= ch) after = mid;\n        else if (styles[mid * 2 + 1] < ch) before = mid + 1;\n        else { type = styles[mid * 2 + 2]; break; }\n      }\n      var cut = type ? type.indexOf(\"cm-overlay \") : -1;\n      return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1);\n    },\n\n    getModeAt: function(pos) {\n      var mode = this.doc.mode;\n      if (!mode.innerMode) return mode;\n      return CodeMirror.innerMode(mode, this.getTokenAt(pos).state).mode;\n    },\n\n    getHelper: function(pos, type) {\n      return this.getHelpers(pos, type)[0];\n    },\n\n    getHelpers: function(pos, type) {\n      var found = [];\n      if (!helpers.hasOwnProperty(type)) return helpers;\n      var help = helpers[type], mode = this.getModeAt(pos);\n      if (typeof mode[type] == \"string\") {\n        if (help[mode[type]]) found.push(help[mode[type]]);\n      } else if (mode[type]) {\n        for (var i = 0; i < mode[type].length; i++) {\n          var val = help[mode[type][i]];\n          if (val) found.push(val);\n        }\n      } else if (mode.helperType && help[mode.helperType]) {\n        found.push(help[mode.helperType]);\n      } else if (help[mode.name]) {\n        found.push(help[mode.name]);\n      }\n      for (var i = 0; i < help._global.length; i++) {\n        var cur = help._global[i];\n        if (cur.pred(mode, this) && indexOf(found, cur.val) == -1)\n          found.push(cur.val);\n      }\n      return found;\n    },\n\n    getStateAfter: function(line, precise) {\n      var doc = this.doc;\n      line = clipLine(doc, line == null ? doc.first + doc.size - 1: line);\n      return getStateBefore(this, line + 1, precise);\n    },\n\n    cursorCoords: function(start, mode) {\n      var pos, range = this.doc.sel.primary();\n      if (start == null) pos = range.head;\n      else if (typeof start == \"object\") pos = clipPos(this.doc, start);\n      else pos = start ? range.from() : range.to();\n      return cursorCoords(this, pos, mode || \"page\");\n    },\n\n    charCoords: function(pos, mode) {\n      return charCoords(this, clipPos(this.doc, pos), mode || \"page\");\n    },\n\n    coordsChar: function(coords, mode) {\n      coords = fromCoordSystem(this, coords, mode || \"page\");\n      return coordsChar(this, coords.left, coords.top);\n    },\n\n    lineAtHeight: function(height, mode) {\n      height = fromCoordSystem(this, {top: height, left: 0}, mode || \"page\").top;\n      return lineAtHeight(this.doc, height + this.display.viewOffset);\n    },\n    heightAtLine: function(line, mode) {\n      var end = false, last = this.doc.first + this.doc.size - 1;\n      if (line < this.doc.first) line = this.doc.first;\n      else if (line > last) { line = last; end = true; }\n      var lineObj = getLine(this.doc, line);\n      return intoCoordSystem(this, lineObj, {top: 0, left: 0}, mode || \"page\").top +\n        (end ? this.doc.height - heightAtLine(lineObj) : 0);\n    },\n\n    defaultTextHeight: function() { return textHeight(this.display); },\n    defaultCharWidth: function() { return charWidth(this.display); },\n\n    setGutterMarker: methodOp(function(line, gutterID, value) {\n      return changeLine(this.doc, line, \"gutter\", function(line) {\n        var markers = line.gutterMarkers || (line.gutterMarkers = {});\n        markers[gutterID] = value;\n        if (!value && isEmpty(markers)) line.gutterMarkers = null;\n        return true;\n      });\n    }),\n\n    clearGutter: methodOp(function(gutterID) {\n      var cm = this, doc = cm.doc, i = doc.first;\n      doc.iter(function(line) {\n        if (line.gutterMarkers && line.gutterMarkers[gutterID]) {\n          line.gutterMarkers[gutterID] = null;\n          regLineChange(cm, i, \"gutter\");\n          if (isEmpty(line.gutterMarkers)) line.gutterMarkers = null;\n        }\n        ++i;\n      });\n    }),\n\n    addLineWidget: methodOp(function(handle, node, options) {\n      return addLineWidget(this, handle, node, options);\n    }),\n\n    removeLineWidget: function(widget) { widget.clear(); },\n\n    lineInfo: function(line) {\n      if (typeof line == \"number\") {\n        if (!isLine(this.doc, line)) return null;\n        var n = line;\n        line = getLine(this.doc, line);\n        if (!line) return null;\n      } else {\n        var n = lineNo(line);\n        if (n == null) return null;\n      }\n      return {line: n, handle: line, text: line.text, gutterMarkers: line.gutterMarkers,\n              textClass: line.textClass, bgClass: line.bgClass, wrapClass: line.wrapClass,\n              widgets: line.widgets};\n    },\n\n    getViewport: function() { return {from: this.display.viewFrom, to: this.display.viewTo};},\n\n    addWidget: function(pos, node, scroll, vert, horiz) {\n      var display = this.display;\n      pos = cursorCoords(this, clipPos(this.doc, pos));\n      var top = pos.bottom, left = pos.left;\n      node.style.position = \"absolute\";\n      display.sizer.appendChild(node);\n      if (vert == \"over\") {\n        top = pos.top;\n      } else if (vert == \"above\" || vert == \"near\") {\n        var vspace = Math.max(display.wrapper.clientHeight, this.doc.height),\n        hspace = Math.max(display.sizer.clientWidth, display.lineSpace.clientWidth);\n        // Default to positioning above (if specified and possible); otherwise default to positioning below\n        if ((vert == 'above' || pos.bottom + node.offsetHeight > vspace) && pos.top > node.offsetHeight)\n          top = pos.top - node.offsetHeight;\n        else if (pos.bottom + node.offsetHeight <= vspace)\n          top = pos.bottom;\n        if (left + node.offsetWidth > hspace)\n          left = hspace - node.offsetWidth;\n      }\n      node.style.top = top + \"px\";\n      node.style.left = node.style.right = \"\";\n      if (horiz == \"right\") {\n        left = display.sizer.clientWidth - node.offsetWidth;\n        node.style.right = \"0px\";\n      } else {\n        if (horiz == \"left\") left = 0;\n        else if (horiz == \"middle\") left = (display.sizer.clientWidth - node.offsetWidth) / 2;\n        node.style.left = left + \"px\";\n      }\n      if (scroll)\n        scrollIntoView(this, left, top, left + node.offsetWidth, top + node.offsetHeight);\n    },\n\n    triggerOnKeyDown: methodOp(onKeyDown),\n    triggerOnKeyPress: methodOp(onKeyPress),\n    triggerOnKeyUp: onKeyUp,\n\n    execCommand: function(cmd) {\n      if (commands.hasOwnProperty(cmd))\n        return commands[cmd](this);\n    },\n\n    findPosH: function(from, amount, unit, visually) {\n      var dir = 1;\n      if (amount < 0) { dir = -1; amount = -amount; }\n      for (var i = 0, cur = clipPos(this.doc, from); i < amount; ++i) {\n        cur = findPosH(this.doc, cur, dir, unit, visually);\n        if (cur.hitSide) break;\n      }\n      return cur;\n    },\n\n    moveH: methodOp(function(dir, unit) {\n      var cm = this;\n      cm.extendSelectionsBy(function(range) {\n        if (cm.display.shift || cm.doc.extend || range.empty())\n          return findPosH(cm.doc, range.head, dir, unit, cm.options.rtlMoveVisually);\n        else\n          return dir < 0 ? range.from() : range.to();\n      }, sel_move);\n    }),\n\n    deleteH: methodOp(function(dir, unit) {\n      var sel = this.doc.sel, doc = this.doc;\n      if (sel.somethingSelected())\n        doc.replaceSelection(\"\", null, \"+delete\");\n      else\n        deleteNearSelection(this, function(range) {\n          var other = findPosH(doc, range.head, dir, unit, false);\n          return dir < 0 ? {from: other, to: range.head} : {from: range.head, to: other};\n        });\n    }),\n\n    findPosV: function(from, amount, unit, goalColumn) {\n      var dir = 1, x = goalColumn;\n      if (amount < 0) { dir = -1; amount = -amount; }\n      for (var i = 0, cur = clipPos(this.doc, from); i < amount; ++i) {\n        var coords = cursorCoords(this, cur, \"div\");\n        if (x == null) x = coords.left;\n        else coords.left = x;\n        cur = findPosV(this, coords, dir, unit);\n        if (cur.hitSide) break;\n      }\n      return cur;\n    },\n\n    moveV: methodOp(function(dir, unit) {\n      var cm = this, doc = this.doc, goals = [];\n      var collapse = !cm.display.shift && !doc.extend && doc.sel.somethingSelected();\n      doc.extendSelectionsBy(function(range) {\n        if (collapse)\n          return dir < 0 ? range.from() : range.to();\n        var headPos = cursorCoords(cm, range.head, \"div\");\n        if (range.goalColumn != null) headPos.left = range.goalColumn;\n        goals.push(headPos.left);\n        var pos = findPosV(cm, headPos, dir, unit);\n        if (unit == \"page\" && range == doc.sel.primary())\n          addToScrollPos(cm, null, charCoords(cm, pos, \"div\").top - headPos.top);\n        return pos;\n      }, sel_move);\n      if (goals.length) for (var i = 0; i < doc.sel.ranges.length; i++)\n        doc.sel.ranges[i].goalColumn = goals[i];\n    }),\n\n    // Find the word at the given position (as returned by coordsChar).\n    findWordAt: function(pos) {\n      var doc = this.doc, line = getLine(doc, pos.line).text;\n      var start = pos.ch, end = pos.ch;\n      if (line) {\n        var helper = this.getHelper(pos, \"wordChars\");\n        if ((pos.xRel < 0 || end == line.length) && start) --start; else ++end;\n        var startChar = line.charAt(start);\n        var check = isWordChar(startChar, helper)\n          ? function(ch) { return isWordChar(ch, helper); }\n          : /\\s/.test(startChar) ? function(ch) {return /\\s/.test(ch);}\n          : function(ch) {return !/\\s/.test(ch) && !isWordChar(ch);};\n        while (start > 0 && check(line.charAt(start - 1))) --start;\n        while (end < line.length && check(line.charAt(end))) ++end;\n      }\n      return new Range(Pos(pos.line, start), Pos(pos.line, end));\n    },\n\n    toggleOverwrite: function(value) {\n      if (value != null && value == this.state.overwrite) return;\n      if (this.state.overwrite = !this.state.overwrite)\n        addClass(this.display.cursorDiv, \"CodeMirror-overwrite\");\n      else\n        rmClass(this.display.cursorDiv, \"CodeMirror-overwrite\");\n\n      signal(this, \"overwriteToggle\", this, this.state.overwrite);\n    },\n    hasFocus: function() { return activeElt() == this.display.input; },\n\n    scrollTo: methodOp(function(x, y) {\n      if (x != null || y != null) resolveScrollToPos(this);\n      if (x != null) this.curOp.scrollLeft = x;\n      if (y != null) this.curOp.scrollTop = y;\n    }),\n    getScrollInfo: function() {\n      var scroller = this.display.scroller, co = scrollerCutOff;\n      return {left: scroller.scrollLeft, top: scroller.scrollTop,\n              height: scroller.scrollHeight - co, width: scroller.scrollWidth - co,\n              clientHeight: scroller.clientHeight - co, clientWidth: scroller.clientWidth - co};\n    },\n\n    scrollIntoView: methodOp(function(range, margin) {\n      if (range == null) {\n        range = {from: this.doc.sel.primary().head, to: null};\n        if (margin == null) margin = this.options.cursorScrollMargin;\n      } else if (typeof range == \"number\") {\n        range = {from: Pos(range, 0), to: null};\n      } else if (range.from == null) {\n        range = {from: range, to: null};\n      }\n      if (!range.to) range.to = range.from;\n      range.margin = margin || 0;\n\n      if (range.from.line != null) {\n        resolveScrollToPos(this);\n        this.curOp.scrollToPos = range;\n      } else {\n        var sPos = calculateScrollPos(this, Math.min(range.from.left, range.to.left),\n                                      Math.min(range.from.top, range.to.top) - range.margin,\n                                      Math.max(range.from.right, range.to.right),\n                                      Math.max(range.from.bottom, range.to.bottom) + range.margin);\n        this.scrollTo(sPos.scrollLeft, sPos.scrollTop);\n      }\n    }),\n\n    setSize: methodOp(function(width, height) {\n      var cm = this;\n      function interpret(val) {\n        return typeof val == \"number\" || /^\\d+$/.test(String(val)) ? val + \"px\" : val;\n      }\n      if (width != null) cm.display.wrapper.style.width = interpret(width);\n      if (height != null) cm.display.wrapper.style.height = interpret(height);\n      if (cm.options.lineWrapping) clearLineMeasurementCache(this);\n      var lineNo = cm.display.viewFrom;\n      cm.doc.iter(lineNo, cm.display.viewTo, function(line) {\n        if (line.widgets) for (var i = 0; i < line.widgets.length; i++)\n          if (line.widgets[i].noHScroll) { regLineChange(cm, lineNo, \"widget\"); break; }\n        ++lineNo;\n      });\n      cm.curOp.forceUpdate = true;\n      signal(cm, \"refresh\", this);\n    }),\n\n    operation: function(f){return runInOp(this, f);},\n\n    refresh: methodOp(function() {\n      var oldHeight = this.display.cachedTextHeight;\n      regChange(this);\n      this.curOp.forceUpdate = true;\n      clearCaches(this);\n      this.scrollTo(this.doc.scrollLeft, this.doc.scrollTop);\n      updateGutterSpace(this);\n      if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > .5)\n        estimateLineHeights(this);\n      signal(this, \"refresh\", this);\n    }),\n\n    swapDoc: methodOp(function(doc) {\n      var old = this.doc;\n      old.cm = null;\n      attachDoc(this, doc);\n      clearCaches(this);\n      resetInput(this);\n      this.scrollTo(doc.scrollLeft, doc.scrollTop);\n      this.curOp.forceScroll = true;\n      signalLater(this, \"swapDoc\", this, old);\n      return old;\n    }),\n\n    getInputField: function(){return this.display.input;},\n    getWrapperElement: function(){return this.display.wrapper;},\n    getScrollerElement: function(){return this.display.scroller;},\n    getGutterElement: function(){return this.display.gutters;}\n  };\n  eventMixin(CodeMirror);\n\n  // OPTION DEFAULTS\n\n  // The default configuration options.\n  var defaults = CodeMirror.defaults = {};\n  // Functions to run when options are changed.\n  var optionHandlers = CodeMirror.optionHandlers = {};\n\n  function option(name, deflt, handle, notOnInit) {\n    CodeMirror.defaults[name] = deflt;\n    if (handle) optionHandlers[name] =\n      notOnInit ? function(cm, val, old) {if (old != Init) handle(cm, val, old);} : handle;\n  }\n\n  // Passed to option handlers when there is no old value.\n  var Init = CodeMirror.Init = {toString: function(){return \"CodeMirror.Init\";}};\n\n  // These two are, on init, called from the constructor because they\n  // have to be initialized before the editor can start at all.\n  option(\"value\", \"\", function(cm, val) {\n    cm.setValue(val);\n  }, true);\n  option(\"mode\", null, function(cm, val) {\n    cm.doc.modeOption = val;\n    loadMode(cm);\n  }, true);\n\n  option(\"indentUnit\", 2, loadMode, true);\n  option(\"indentWithTabs\", false);\n  option(\"smartIndent\", true);\n  option(\"tabSize\", 4, function(cm) {\n    resetModeState(cm);\n    clearCaches(cm);\n    regChange(cm);\n  }, true);\n  option(\"specialChars\", /[\\t\\u0000-\\u0019\\u00ad\\u200b-\\u200f\\u2028\\u2029\\ufeff]/g, function(cm, val) {\n    cm.options.specialChars = new RegExp(val.source + (val.test(\"\\t\") ? \"\" : \"|\\t\"), \"g\");\n    cm.refresh();\n  }, true);\n  option(\"specialCharPlaceholder\", defaultSpecialCharPlaceholder, function(cm) {cm.refresh();}, true);\n  option(\"electricChars\", true);\n  option(\"rtlMoveVisually\", !windows);\n  option(\"wholeLineUpdateBefore\", true);\n\n  option(\"theme\", \"default\", function(cm) {\n    themeChanged(cm);\n    guttersChanged(cm);\n  }, true);\n  option(\"keyMap\", \"default\", keyMapChanged);\n  option(\"extraKeys\", null);\n\n  option(\"lineWrapping\", false, wrappingChanged, true);\n  option(\"gutters\", [], function(cm) {\n    setGuttersForLineNumbers(cm.options);\n    guttersChanged(cm);\n  }, true);\n  option(\"fixedGutter\", true, function(cm, val) {\n    cm.display.gutters.style.left = val ? compensateForHScroll(cm.display) + \"px\" : \"0\";\n    cm.refresh();\n  }, true);\n  option(\"coverGutterNextToScrollbar\", false, updateScrollbars, true);\n  option(\"lineNumbers\", false, function(cm) {\n    setGuttersForLineNumbers(cm.options);\n    guttersChanged(cm);\n  }, true);\n  option(\"firstLineNumber\", 1, guttersChanged, true);\n  option(\"lineNumberFormatter\", function(integer) {return integer;}, guttersChanged, true);\n  option(\"showCursorWhenSelecting\", false, updateSelection, true);\n\n  option(\"resetSelectionOnContextMenu\", true);\n\n  option(\"readOnly\", false, function(cm, val) {\n    if (val == \"nocursor\") {\n      onBlur(cm);\n      cm.display.input.blur();\n      cm.display.disabled = true;\n    } else {\n      cm.display.disabled = false;\n      if (!val) resetInput(cm);\n    }\n  });\n  option(\"disableInput\", false, function(cm, val) {if (!val) resetInput(cm);}, true);\n  option(\"dragDrop\", true);\n\n  option(\"cursorBlinkRate\", 530);\n  option(\"cursorScrollMargin\", 0);\n  option(\"cursorHeight\", 1, updateSelection, true);\n  option(\"singleCursorHeightPerLine\", true, updateSelection, true);\n  option(\"workTime\", 100);\n  option(\"workDelay\", 100);\n  option(\"flattenSpans\", true, resetModeState, true);\n  option(\"addModeClass\", false, resetModeState, true);\n  option(\"pollInterval\", 100);\n  option(\"undoDepth\", 200, function(cm, val){cm.doc.history.undoDepth = val;});\n  option(\"historyEventDelay\", 1250);\n  option(\"viewportMargin\", 10, function(cm){cm.refresh();}, true);\n  option(\"maxHighlightLength\", 10000, resetModeState, true);\n  option(\"moveInputWithCursor\", true, function(cm, val) {\n    if (!val) cm.display.inputDiv.style.top = cm.display.inputDiv.style.left = 0;\n  });\n\n  option(\"tabindex\", null, function(cm, val) {\n    cm.display.input.tabIndex = val || \"\";\n  });\n  option(\"autofocus\", null);\n\n  // MODE DEFINITION AND QUERYING\n\n  // Known modes, by name and by MIME\n  var modes = CodeMirror.modes = {}, mimeModes = CodeMirror.mimeModes = {};\n\n  // Extra arguments are stored as the mode's dependencies, which is\n  // used by (legacy) mechanisms like loadmode.js to automatically\n  // load a mode. (Preferred mechanism is the require/define calls.)\n  CodeMirror.defineMode = function(name, mode) {\n    if (!CodeMirror.defaults.mode && name != \"null\") CodeMirror.defaults.mode = name;\n    if (arguments.length > 2)\n      mode.dependencies = Array.prototype.slice.call(arguments, 2);\n    modes[name] = mode;\n  };\n\n  CodeMirror.defineMIME = function(mime, spec) {\n    mimeModes[mime] = spec;\n  };\n\n  // Given a MIME type, a {name, ...options} config object, or a name\n  // string, return a mode config object.\n  CodeMirror.resolveMode = function(spec) {\n    if (typeof spec == \"string\" && mimeModes.hasOwnProperty(spec)) {\n      spec = mimeModes[spec];\n    } else if (spec && typeof spec.name == \"string\" && mimeModes.hasOwnProperty(spec.name)) {\n      var found = mimeModes[spec.name];\n      if (typeof found == \"string\") found = {name: found};\n      spec = createObj(found, spec);\n      spec.name = found.name;\n    } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+xml$/.test(spec)) {\n      return CodeMirror.resolveMode(\"application/xml\");\n    }\n    if (typeof spec == \"string\") return {name: spec};\n    else return spec || {name: \"null\"};\n  };\n\n  // Given a mode spec (anything that resolveMode accepts), find and\n  // initialize an actual mode object.\n  CodeMirror.getMode = function(options, spec) {\n    var spec = CodeMirror.resolveMode(spec);\n    var mfactory = modes[spec.name];\n    if (!mfactory) return CodeMirror.getMode(options, \"text/plain\");\n    var modeObj = mfactory(options, spec);\n    if (modeExtensions.hasOwnProperty(spec.name)) {\n      var exts = modeExtensions[spec.name];\n      for (var prop in exts) {\n        if (!exts.hasOwnProperty(prop)) continue;\n        if (modeObj.hasOwnProperty(prop)) modeObj[\"_\" + prop] = modeObj[prop];\n        modeObj[prop] = exts[prop];\n      }\n    }\n    modeObj.name = spec.name;\n    if (spec.helperType) modeObj.helperType = spec.helperType;\n    if (spec.modeProps) for (var prop in spec.modeProps)\n      modeObj[prop] = spec.modeProps[prop];\n\n    return modeObj;\n  };\n\n  // Minimal default mode.\n  CodeMirror.defineMode(\"null\", function() {\n    return {token: function(stream) {stream.skipToEnd();}};\n  });\n  CodeMirror.defineMIME(\"text/plain\", \"null\");\n\n  // This can be used to attach properties to mode objects from\n  // outside the actual mode definition.\n  var modeExtensions = CodeMirror.modeExtensions = {};\n  CodeMirror.extendMode = function(mode, properties) {\n    var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] : (modeExtensions[mode] = {});\n    copyObj(properties, exts);\n  };\n\n  // EXTENSIONS\n\n  CodeMirror.defineExtension = function(name, func) {\n    CodeMirror.prototype[name] = func;\n  };\n  CodeMirror.defineDocExtension = function(name, func) {\n    Doc.prototype[name] = func;\n  };\n  CodeMirror.defineOption = option;\n\n  var initHooks = [];\n  CodeMirror.defineInitHook = function(f) {initHooks.push(f);};\n\n  var helpers = CodeMirror.helpers = {};\n  CodeMirror.registerHelper = function(type, name, value) {\n    if (!helpers.hasOwnProperty(type)) helpers[type] = CodeMirror[type] = {_global: []};\n    helpers[type][name] = value;\n  };\n  CodeMirror.registerGlobalHelper = function(type, name, predicate, value) {\n    CodeMirror.registerHelper(type, name, value);\n    helpers[type]._global.push({pred: predicate, val: value});\n  };\n\n  // MODE STATE HANDLING\n\n  // Utility functions for working with state. Exported because nested\n  // modes need to do this for their inner modes.\n\n  var copyState = CodeMirror.copyState = function(mode, state) {\n    if (state === true) return state;\n    if (mode.copyState) return mode.copyState(state);\n    var nstate = {};\n    for (var n in state) {\n      var val = state[n];\n      if (val instanceof Array) val = val.concat([]);\n      nstate[n] = val;\n    }\n    return nstate;\n  };\n\n  var startState = CodeMirror.startState = function(mode, a1, a2) {\n    return mode.startState ? mode.startState(a1, a2) : true;\n  };\n\n  // Given a mode and a state (for that mode), find the inner mode and\n  // state at the position that the state refers to.\n  CodeMirror.innerMode = function(mode, state) {\n    while (mode.innerMode) {\n      var info = mode.innerMode(state);\n      if (!info || info.mode == mode) break;\n      state = info.state;\n      mode = info.mode;\n    }\n    return info || {mode: mode, state: state};\n  };\n\n  // STANDARD COMMANDS\n\n  // Commands are parameter-less actions that can be performed on an\n  // editor, mostly used for keybindings.\n  var commands = CodeMirror.commands = {\n    selectAll: function(cm) {cm.setSelection(Pos(cm.firstLine(), 0), Pos(cm.lastLine()), sel_dontScroll);},\n    singleSelection: function(cm) {\n      cm.setSelection(cm.getCursor(\"anchor\"), cm.getCursor(\"head\"), sel_dontScroll);\n    },\n    killLine: function(cm) {\n      deleteNearSelection(cm, function(range) {\n        if (range.empty()) {\n          var len = getLine(cm.doc, range.head.line).text.length;\n          if (range.head.ch == len && range.head.line < cm.lastLine())\n            return {from: range.head, to: Pos(range.head.line + 1, 0)};\n          else\n            return {from: range.head, to: Pos(range.head.line, len)};\n        } else {\n          return {from: range.from(), to: range.to()};\n        }\n      });\n    },\n    deleteLine: function(cm) {\n      deleteNearSelection(cm, function(range) {\n        return {from: Pos(range.from().line, 0),\n                to: clipPos(cm.doc, Pos(range.to().line + 1, 0))};\n      });\n    },\n    delLineLeft: function(cm) {\n      deleteNearSelection(cm, function(range) {\n        return {from: Pos(range.from().line, 0), to: range.from()};\n      });\n    },\n    delWrappedLineLeft: function(cm) {\n      deleteNearSelection(cm, function(range) {\n        var top = cm.charCoords(range.head, \"div\").top + 5;\n        var leftPos = cm.coordsChar({left: 0, top: top}, \"div\");\n        return {from: leftPos, to: range.from()};\n      });\n    },\n    delWrappedLineRight: function(cm) {\n      deleteNearSelection(cm, function(range) {\n        var top = cm.charCoords(range.head, \"div\").top + 5;\n        var rightPos = cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\");\n        return {from: range.from(), to: rightPos };\n      });\n    },\n    undo: function(cm) {cm.undo();},\n    redo: function(cm) {cm.redo();},\n    undoSelection: function(cm) {cm.undoSelection();},\n    redoSelection: function(cm) {cm.redoSelection();},\n    goDocStart: function(cm) {cm.extendSelection(Pos(cm.firstLine(), 0));},\n    goDocEnd: function(cm) {cm.extendSelection(Pos(cm.lastLine()));},\n    goLineStart: function(cm) {\n      cm.extendSelectionsBy(function(range) { return lineStart(cm, range.head.line); },\n                            {origin: \"+move\", bias: 1});\n    },\n    goLineStartSmart: function(cm) {\n      cm.extendSelectionsBy(function(range) {\n        return lineStartSmart(cm, range.head);\n      }, {origin: \"+move\", bias: 1});\n    },\n    goLineEnd: function(cm) {\n      cm.extendSelectionsBy(function(range) { return lineEnd(cm, range.head.line); },\n                            {origin: \"+move\", bias: -1});\n    },\n    goLineRight: function(cm) {\n      cm.extendSelectionsBy(function(range) {\n        var top = cm.charCoords(range.head, \"div\").top + 5;\n        return cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\");\n      }, sel_move);\n    },\n    goLineLeft: function(cm) {\n      cm.extendSelectionsBy(function(range) {\n        var top = cm.charCoords(range.head, \"div\").top + 5;\n        return cm.coordsChar({left: 0, top: top}, \"div\");\n      }, sel_move);\n    },\n    goLineLeftSmart: function(cm) {\n      cm.extendSelectionsBy(function(range) {\n        var top = cm.charCoords(range.head, \"div\").top + 5;\n        var pos = cm.coordsChar({left: 0, top: top}, \"div\");\n        if (pos.ch < cm.getLine(pos.line).search(/\\S/)) return lineStartSmart(cm, range.head);\n        return pos;\n      }, sel_move);\n    },\n    goLineUp: function(cm) {cm.moveV(-1, \"line\");},\n    goLineDown: function(cm) {cm.moveV(1, \"line\");},\n    goPageUp: function(cm) {cm.moveV(-1, \"page\");},\n    goPageDown: function(cm) {cm.moveV(1, \"page\");},\n    goCharLeft: function(cm) {cm.moveH(-1, \"char\");},\n    goCharRight: function(cm) {cm.moveH(1, \"char\");},\n    goColumnLeft: function(cm) {cm.moveH(-1, \"column\");},\n    goColumnRight: function(cm) {cm.moveH(1, \"column\");},\n    goWordLeft: function(cm) {cm.moveH(-1, \"word\");},\n    goGroupRight: function(cm) {cm.moveH(1, \"group\");},\n    goGroupLeft: function(cm) {cm.moveH(-1, \"group\");},\n    goWordRight: function(cm) {cm.moveH(1, \"word\");},\n    delCharBefore: function(cm) {cm.deleteH(-1, \"char\");},\n    delCharAfter: function(cm) {cm.deleteH(1, \"char\");},\n    delWordBefore: function(cm) {cm.deleteH(-1, \"word\");},\n    delWordAfter: function(cm) {cm.deleteH(1, \"word\");},\n    delGroupBefore: function(cm) {cm.deleteH(-1, \"group\");},\n    delGroupAfter: function(cm) {cm.deleteH(1, \"group\");},\n    indentAuto: function(cm) {cm.indentSelection(\"smart\");},\n    indentMore: function(cm) {cm.indentSelection(\"add\");},\n    indentLess: function(cm) {cm.indentSelection(\"subtract\");},\n    insertTab: function(cm) {cm.replaceSelection(\"\\t\");},\n    insertSoftTab: function(cm) {\n      var spaces = [], ranges = cm.listSelections(), tabSize = cm.options.tabSize;\n      for (var i = 0; i < ranges.length; i++) {\n        var pos = ranges[i].from();\n        var col = countColumn(cm.getLine(pos.line), pos.ch, tabSize);\n        spaces.push(new Array(tabSize - col % tabSize + 1).join(\" \"));\n      }\n      cm.replaceSelections(spaces);\n    },\n    defaultTab: function(cm) {\n      if (cm.somethingSelected()) cm.indentSelection(\"add\");\n      else cm.execCommand(\"insertTab\");\n    },\n    transposeChars: function(cm) {\n      runInOp(cm, function() {\n        var ranges = cm.listSelections(), newSel = [];\n        for (var i = 0; i < ranges.length; i++) {\n          var cur = ranges[i].head, line = getLine(cm.doc, cur.line).text;\n          if (line) {\n            if (cur.ch == line.length) cur = new Pos(cur.line, cur.ch - 1);\n            if (cur.ch > 0) {\n              cur = new Pos(cur.line, cur.ch + 1);\n              cm.replaceRange(line.charAt(cur.ch - 1) + line.charAt(cur.ch - 2),\n                              Pos(cur.line, cur.ch - 2), cur, \"+transpose\");\n            } else if (cur.line > cm.doc.first) {\n              var prev = getLine(cm.doc, cur.line - 1).text;\n              if (prev)\n                cm.replaceRange(line.charAt(0) + \"\\n\" + prev.charAt(prev.length - 1),\n                                Pos(cur.line - 1, prev.length - 1), Pos(cur.line, 1), \"+transpose\");\n            }\n          }\n          newSel.push(new Range(cur, cur));\n        }\n        cm.setSelections(newSel);\n      });\n    },\n    newlineAndIndent: function(cm) {\n      runInOp(cm, function() {\n        var len = cm.listSelections().length;\n        for (var i = 0; i < len; i++) {\n          var range = cm.listSelections()[i];\n          cm.replaceRange(\"\\n\", range.anchor, range.head, \"+input\");\n          cm.indentLine(range.from().line + 1, null, true);\n          ensureCursorVisible(cm);\n        }\n      });\n    },\n    toggleOverwrite: function(cm) {cm.toggleOverwrite();}\n  };\n\n  // STANDARD KEYMAPS\n\n  var keyMap = CodeMirror.keyMap = {};\n  keyMap.basic = {\n    \"Left\": \"goCharLeft\", \"Right\": \"goCharRight\", \"Up\": \"goLineUp\", \"Down\": \"goLineDown\",\n    \"End\": \"goLineEnd\", \"Home\": \"goLineStartSmart\", \"PageUp\": \"goPageUp\", \"PageDown\": \"goPageDown\",\n    \"Delete\": \"delCharAfter\", \"Backspace\": \"delCharBefore\", \"Shift-Backspace\": \"delCharBefore\",\n    \"Tab\": \"defaultTab\", \"Shift-Tab\": \"indentAuto\",\n    \"Enter\": \"newlineAndIndent\", \"Insert\": \"toggleOverwrite\",\n    \"Esc\": \"singleSelection\"\n  };\n  // Note that the save and find-related commands aren't defined by\n  // default. User code or addons can define them. Unknown commands\n  // are simply ignored.\n  keyMap.pcDefault = {\n    \"Ctrl-A\": \"selectAll\", \"Ctrl-D\": \"deleteLine\", \"Ctrl-Z\": \"undo\", \"Shift-Ctrl-Z\": \"redo\", \"Ctrl-Y\": \"redo\",\n    \"Ctrl-Home\": \"goDocStart\", \"Ctrl-End\": \"goDocEnd\", \"Ctrl-Up\": \"goLineUp\", \"Ctrl-Down\": \"goLineDown\",\n    \"Ctrl-Left\": \"goGroupLeft\", \"Ctrl-Right\": \"goGroupRight\", \"Alt-Left\": \"goLineStart\", \"Alt-Right\": \"goLineEnd\",\n    \"Ctrl-Backspace\": \"delGroupBefore\", \"Ctrl-Delete\": \"delGroupAfter\", \"Ctrl-S\": \"save\", \"Ctrl-F\": \"find\",\n    \"Ctrl-G\": \"findNext\", \"Shift-Ctrl-G\": \"findPrev\", \"Shift-Ctrl-F\": \"replace\", \"Shift-Ctrl-R\": \"replaceAll\",\n    \"Ctrl-[\": \"indentLess\", \"Ctrl-]\": \"indentMore\",\n    \"Ctrl-U\": \"undoSelection\", \"Shift-Ctrl-U\": \"redoSelection\", \"Alt-U\": \"redoSelection\",\n    fallthrough: \"basic\"\n  };\n  keyMap.macDefault = {\n    \"Cmd-A\": \"selectAll\", \"Cmd-D\": \"deleteLine\", \"Cmd-Z\": \"undo\", \"Shift-Cmd-Z\": \"redo\", \"Cmd-Y\": \"redo\",\n    \"Cmd-Home\": \"goDocStart\", \"Cmd-Up\": \"goDocStart\", \"Cmd-End\": \"goDocEnd\", \"Cmd-Down\": \"goDocEnd\", \"Alt-Left\": \"goGroupLeft\",\n    \"Alt-Right\": \"goGroupRight\", \"Cmd-Left\": \"goLineLeft\", \"Cmd-Right\": \"goLineRight\", \"Alt-Backspace\": \"delGroupBefore\",\n    \"Ctrl-Alt-Backspace\": \"delGroupAfter\", \"Alt-Delete\": \"delGroupAfter\", \"Cmd-S\": \"save\", \"Cmd-F\": \"find\",\n    \"Cmd-G\": \"findNext\", \"Shift-Cmd-G\": \"findPrev\", \"Cmd-Alt-F\": \"replace\", \"Shift-Cmd-Alt-F\": \"replaceAll\",\n    \"Cmd-[\": \"indentLess\", \"Cmd-]\": \"indentMore\", \"Cmd-Backspace\": \"delWrappedLineLeft\", \"Cmd-Delete\": \"delWrappedLineRight\",\n    \"Cmd-U\": \"undoSelection\", \"Shift-Cmd-U\": \"redoSelection\", \"Ctrl-Up\": \"goDocStart\", \"Ctrl-Down\": \"goDocEnd\",\n    fallthrough: [\"basic\", \"emacsy\"]\n  };\n  // Very basic readline/emacs-style bindings, which are standard on Mac.\n  keyMap.emacsy = {\n    \"Ctrl-F\": \"goCharRight\", \"Ctrl-B\": \"goCharLeft\", \"Ctrl-P\": \"goLineUp\", \"Ctrl-N\": \"goLineDown\",\n    \"Alt-F\": \"goWordRight\", \"Alt-B\": \"goWordLeft\", \"Ctrl-A\": \"goLineStart\", \"Ctrl-E\": \"goLineEnd\",\n    \"Ctrl-V\": \"goPageDown\", \"Shift-Ctrl-V\": \"goPageUp\", \"Ctrl-D\": \"delCharAfter\", \"Ctrl-H\": \"delCharBefore\",\n    \"Alt-D\": \"delWordAfter\", \"Alt-Backspace\": \"delWordBefore\", \"Ctrl-K\": \"killLine\", \"Ctrl-T\": \"transposeChars\"\n  };\n  keyMap[\"default\"] = mac ? keyMap.macDefault : keyMap.pcDefault;\n\n  // KEYMAP DISPATCH\n\n  function getKeyMap(val) {\n    if (typeof val == \"string\") return keyMap[val];\n    else return val;\n  }\n\n  // Given an array of keymaps and a key name, call handle on any\n  // bindings found, until that returns a truthy value, at which point\n  // we consider the key handled. Implements things like binding a key\n  // to false stopping further handling and keymap fallthrough.\n  var lookupKey = CodeMirror.lookupKey = function(name, maps, handle) {\n    function lookup(map) {\n      map = getKeyMap(map);\n      var found = map[name];\n      if (found === false) return \"stop\";\n      if (found != null && handle(found)) return true;\n      if (map.nofallthrough) return \"stop\";\n\n      var fallthrough = map.fallthrough;\n      if (fallthrough == null) return false;\n      if (Object.prototype.toString.call(fallthrough) != \"[object Array]\")\n        return lookup(fallthrough);\n      for (var i = 0; i < fallthrough.length; ++i) {\n        var done = lookup(fallthrough[i]);\n        if (done) return done;\n      }\n      return false;\n    }\n\n    for (var i = 0; i < maps.length; ++i) {\n      var done = lookup(maps[i]);\n      if (done) return done != \"stop\";\n    }\n  };\n\n  // Modifier key presses don't count as 'real' key presses for the\n  // purpose of keymap fallthrough.\n  var isModifierKey = CodeMirror.isModifierKey = function(event) {\n    var name = keyNames[event.keyCode];\n    return name == \"Ctrl\" || name == \"Alt\" || name == \"Shift\" || name == \"Mod\";\n  };\n\n  // Look up the name of a key as indicated by an event object.\n  var keyName = CodeMirror.keyName = function(event, noShift) {\n    if (presto && event.keyCode == 34 && event[\"char\"]) return false;\n    var name = keyNames[event.keyCode];\n    if (name == null || event.altGraphKey) return false;\n    if (event.altKey) name = \"Alt-\" + name;\n    if (flipCtrlCmd ? event.metaKey : event.ctrlKey) name = \"Ctrl-\" + name;\n    if (flipCtrlCmd ? event.ctrlKey : event.metaKey) name = \"Cmd-\" + name;\n    if (!noShift && event.shiftKey) name = \"Shift-\" + name;\n    return name;\n  };\n\n  // FROMTEXTAREA\n\n  CodeMirror.fromTextArea = function(textarea, options) {\n    if (!options) options = {};\n    options.value = textarea.value;\n    if (!options.tabindex && textarea.tabindex)\n      options.tabindex = textarea.tabindex;\n    if (!options.placeholder && textarea.placeholder)\n      options.placeholder = textarea.placeholder;\n    // Set autofocus to true if this textarea is focused, or if it has\n    // autofocus and no other element is focused.\n    if (options.autofocus == null) {\n      var hasFocus = activeElt();\n      options.autofocus = hasFocus == textarea ||\n        textarea.getAttribute(\"autofocus\") != null && hasFocus == document.body;\n    }\n\n    function save() {textarea.value = cm.getValue();}\n    if (textarea.form) {\n      on(textarea.form, \"submit\", save);\n      // Deplorable hack to make the submit method do the right thing.\n      if (!options.leaveSubmitMethodAlone) {\n        var form = textarea.form, realSubmit = form.submit;\n        try {\n          var wrappedSubmit = form.submit = function() {\n            save();\n            form.submit = realSubmit;\n            form.submit();\n            form.submit = wrappedSubmit;\n          };\n        } catch(e) {}\n      }\n    }\n\n    textarea.style.display = \"none\";\n    var cm = CodeMirror(function(node) {\n      textarea.parentNode.insertBefore(node, textarea.nextSibling);\n    }, options);\n    cm.save = save;\n    cm.getTextArea = function() { return textarea; };\n    cm.toTextArea = function() {\n      cm.toTextArea = isNaN; // Prevent this from being ran twice\n      save();\n      textarea.parentNode.removeChild(cm.getWrapperElement());\n      textarea.style.display = \"\";\n      if (textarea.form) {\n        off(textarea.form, \"submit\", save);\n        if (typeof textarea.form.submit == \"function\")\n          textarea.form.submit = realSubmit;\n      }\n    };\n    return cm;\n  };\n\n  // STRING STREAM\n\n  // Fed to the mode parsers, provides helper functions to make\n  // parsers more succinct.\n\n  var StringStream = CodeMirror.StringStream = function(string, tabSize) {\n    this.pos = this.start = 0;\n    this.string = string;\n    this.tabSize = tabSize || 8;\n    this.lastColumnPos = this.lastColumnValue = 0;\n    this.lineStart = 0;\n  };\n\n  StringStream.prototype = {\n    eol: function() {return this.pos >= this.string.length;},\n    sol: function() {return this.pos == this.lineStart;},\n    peek: function() {return this.string.charAt(this.pos) || undefined;},\n    next: function() {\n      if (this.pos < this.string.length)\n        return this.string.charAt(this.pos++);\n    },\n    eat: function(match) {\n      var ch = this.string.charAt(this.pos);\n      if (typeof match == \"string\") var ok = ch == match;\n      else var ok = ch && (match.test ? match.test(ch) : match(ch));\n      if (ok) {++this.pos; return ch;}\n    },\n    eatWhile: function(match) {\n      var start = this.pos;\n      while (this.eat(match)){}\n      return this.pos > start;\n    },\n    eatSpace: function() {\n      var start = this.pos;\n      while (/[\\s\\u00a0]/.test(this.string.charAt(this.pos))) ++this.pos;\n      return this.pos > start;\n    },\n    skipToEnd: function() {this.pos = this.string.length;},\n    skipTo: function(ch) {\n      var found = this.string.indexOf(ch, this.pos);\n      if (found > -1) {this.pos = found; return true;}\n    },\n    backUp: function(n) {this.pos -= n;},\n    column: function() {\n      if (this.lastColumnPos < this.start) {\n        this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue);\n        this.lastColumnPos = this.start;\n      }\n      return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0);\n    },\n    indentation: function() {\n      return countColumn(this.string, null, this.tabSize) -\n        (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0);\n    },\n    match: function(pattern, consume, caseInsensitive) {\n      if (typeof pattern == \"string\") {\n        var cased = function(str) {return caseInsensitive ? str.toLowerCase() : str;};\n        var substr = this.string.substr(this.pos, pattern.length);\n        if (cased(substr) == cased(pattern)) {\n          if (consume !== false) this.pos += pattern.length;\n          return true;\n        }\n      } else {\n        var match = this.string.slice(this.pos).match(pattern);\n        if (match && match.index > 0) return null;\n        if (match && consume !== false) this.pos += match[0].length;\n        return match;\n      }\n    },\n    current: function(){return this.string.slice(this.start, this.pos);},\n    hideFirstChars: function(n, inner) {\n      this.lineStart += n;\n      try { return inner(); }\n      finally { this.lineStart -= n; }\n    }\n  };\n\n  // TEXTMARKERS\n\n  // Created with markText and setBookmark methods. A TextMarker is a\n  // handle that can be used to clear or find a marked position in the\n  // document. Line objects hold arrays (markedSpans) containing\n  // {from, to, marker} object pointing to such marker objects, and\n  // indicating that such a marker is present on that line. Multiple\n  // lines may point to the same marker when it spans across lines.\n  // The spans will have null for their from/to properties when the\n  // marker continues beyond the start/end of the line. Markers have\n  // links back to the lines they currently touch.\n\n  var TextMarker = CodeMirror.TextMarker = function(doc, type) {\n    this.lines = [];\n    this.type = type;\n    this.doc = doc;\n  };\n  eventMixin(TextMarker);\n\n  // Clear the marker.\n  TextMarker.prototype.clear = function() {\n    if (this.explicitlyCleared) return;\n    var cm = this.doc.cm, withOp = cm && !cm.curOp;\n    if (withOp) startOperation(cm);\n    if (hasHandler(this, \"clear\")) {\n      var found = this.find();\n      if (found) signalLater(this, \"clear\", found.from, found.to);\n    }\n    var min = null, max = null;\n    for (var i = 0; i < this.lines.length; ++i) {\n      var line = this.lines[i];\n      var span = getMarkedSpanFor(line.markedSpans, this);\n      if (cm && !this.collapsed) regLineChange(cm, lineNo(line), \"text\");\n      else if (cm) {\n        if (span.to != null) max = lineNo(line);\n        if (span.from != null) min = lineNo(line);\n      }\n      line.markedSpans = removeMarkedSpan(line.markedSpans, span);\n      if (span.from == null && this.collapsed && !lineIsHidden(this.doc, line) && cm)\n        updateLineHeight(line, textHeight(cm.display));\n    }\n    if (cm && this.collapsed && !cm.options.lineWrapping) for (var i = 0; i < this.lines.length; ++i) {\n      var visual = visualLine(this.lines[i]), len = lineLength(visual);\n      if (len > cm.display.maxLineLength) {\n        cm.display.maxLine = visual;\n        cm.display.maxLineLength = len;\n        cm.display.maxLineChanged = true;\n      }\n    }\n\n    if (min != null && cm && this.collapsed) regChange(cm, min, max + 1);\n    this.lines.length = 0;\n    this.explicitlyCleared = true;\n    if (this.atomic && this.doc.cantEdit) {\n      this.doc.cantEdit = false;\n      if (cm) reCheckSelection(cm.doc);\n    }\n    if (cm) signalLater(cm, \"markerCleared\", cm, this);\n    if (withOp) endOperation(cm);\n    if (this.parent) this.parent.clear();\n  };\n\n  // Find the position of the marker in the document. Returns a {from,\n  // to} object by default. Side can be passed to get a specific side\n  // -- 0 (both), -1 (left), or 1 (right). When lineObj is true, the\n  // Pos objects returned contain a line object, rather than a line\n  // number (used to prevent looking up the same line twice).\n  TextMarker.prototype.find = function(side, lineObj) {\n    if (side == null && this.type == \"bookmark\") side = 1;\n    var from, to;\n    for (var i = 0; i < this.lines.length; ++i) {\n      var line = this.lines[i];\n      var span = getMarkedSpanFor(line.markedSpans, this);\n      if (span.from != null) {\n        from = Pos(lineObj ? line : lineNo(line), span.from);\n        if (side == -1) return from;\n      }\n      if (span.to != null) {\n        to = Pos(lineObj ? line : lineNo(line), span.to);\n        if (side == 1) return to;\n      }\n    }\n    return from && {from: from, to: to};\n  };\n\n  // Signals that the marker's widget changed, and surrounding layout\n  // should be recomputed.\n  TextMarker.prototype.changed = function() {\n    var pos = this.find(-1, true), widget = this, cm = this.doc.cm;\n    if (!pos || !cm) return;\n    runInOp(cm, function() {\n      var line = pos.line, lineN = lineNo(pos.line);\n      var view = findViewForLine(cm, lineN);\n      if (view) {\n        clearLineMeasurementCacheFor(view);\n        cm.curOp.selectionChanged = cm.curOp.forceUpdate = true;\n      }\n      cm.curOp.updateMaxLine = true;\n      if (!lineIsHidden(widget.doc, line) && widget.height != null) {\n        var oldHeight = widget.height;\n        widget.height = null;\n        var dHeight = widgetHeight(widget) - oldHeight;\n        if (dHeight)\n          updateLineHeight(line, line.height + dHeight);\n      }\n    });\n  };\n\n  TextMarker.prototype.attachLine = function(line) {\n    if (!this.lines.length && this.doc.cm) {\n      var op = this.doc.cm.curOp;\n      if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1)\n        (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this);\n    }\n    this.lines.push(line);\n  };\n  TextMarker.prototype.detachLine = function(line) {\n    this.lines.splice(indexOf(this.lines, line), 1);\n    if (!this.lines.length && this.doc.cm) {\n      var op = this.doc.cm.curOp;\n      (op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this);\n    }\n  };\n\n  // Collapsed markers have unique ids, in order to be able to order\n  // them, which is needed for uniquely determining an outer marker\n  // when they overlap (they may nest, but not partially overlap).\n  var nextMarkerId = 0;\n\n  // Create a marker, wire it up to the right lines, and\n  function markText(doc, from, to, options, type) {\n    // Shared markers (across linked documents) are handled separately\n    // (markTextShared will call out to this again, once per\n    // document).\n    if (options && options.shared) return markTextShared(doc, from, to, options, type);\n    // Ensure we are in an operation.\n    if (doc.cm && !doc.cm.curOp) return operation(doc.cm, markText)(doc, from, to, options, type);\n\n    var marker = new TextMarker(doc, type), diff = cmp(from, to);\n    if (options) copyObj(options, marker, false);\n    // Don't connect empty markers unless clearWhenEmpty is false\n    if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false)\n      return marker;\n    if (marker.replacedWith) {\n      // Showing up as a widget implies collapsed (widget replaces text)\n      marker.collapsed = true;\n      marker.widgetNode = elt(\"span\", [marker.replacedWith], \"CodeMirror-widget\");\n      if (!options.handleMouseEvents) marker.widgetNode.ignoreEvents = true;\n      if (options.insertLeft) marker.widgetNode.insertLeft = true;\n    }\n    if (marker.collapsed) {\n      if (conflictingCollapsedRange(doc, from.line, from, to, marker) ||\n          from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker))\n        throw new Error(\"Inserting collapsed marker partially overlapping an existing one\");\n      sawCollapsedSpans = true;\n    }\n\n    if (marker.addToHistory)\n      addChangeToHistory(doc, {from: from, to: to, origin: \"markText\"}, doc.sel, NaN);\n\n    var curLine = from.line, cm = doc.cm, updateMaxLine;\n    doc.iter(curLine, to.line + 1, function(line) {\n      if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(line) == cm.display.maxLine)\n        updateMaxLine = true;\n      if (marker.collapsed && curLine != from.line) updateLineHeight(line, 0);\n      addMarkedSpan(line, new MarkedSpan(marker,\n                                         curLine == from.line ? from.ch : null,\n                                         curLine == to.line ? to.ch : null));\n      ++curLine;\n    });\n    // lineIsHidden depends on the presence of the spans, so needs a second pass\n    if (marker.collapsed) doc.iter(from.line, to.line + 1, function(line) {\n      if (lineIsHidden(doc, line)) updateLineHeight(line, 0);\n    });\n\n    if (marker.clearOnEnter) on(marker, \"beforeCursorEnter\", function() { marker.clear(); });\n\n    if (marker.readOnly) {\n      sawReadOnlySpans = true;\n      if (doc.history.done.length || doc.history.undone.length)\n        doc.clearHistory();\n    }\n    if (marker.collapsed) {\n      marker.id = ++nextMarkerId;\n      marker.atomic = true;\n    }\n    if (cm) {\n      // Sync editor state\n      if (updateMaxLine) cm.curOp.updateMaxLine = true;\n      if (marker.collapsed)\n        regChange(cm, from.line, to.line + 1);\n      else if (marker.className || marker.title || marker.startStyle || marker.endStyle)\n        for (var i = from.line; i <= to.line; i++) regLineChange(cm, i, \"text\");\n      if (marker.atomic) reCheckSelection(cm.doc);\n      signalLater(cm, \"markerAdded\", cm, marker);\n    }\n    return marker;\n  }\n\n  // SHARED TEXTMARKERS\n\n  // A shared marker spans multiple linked documents. It is\n  // implemented as a meta-marker-object controlling multiple normal\n  // markers.\n  var SharedTextMarker = CodeMirror.SharedTextMarker = function(markers, primary) {\n    this.markers = markers;\n    this.primary = primary;\n    for (var i = 0; i < markers.length; ++i)\n      markers[i].parent = this;\n  };\n  eventMixin(SharedTextMarker);\n\n  SharedTextMarker.prototype.clear = function() {\n    if (this.explicitlyCleared) return;\n    this.explicitlyCleared = true;\n    for (var i = 0; i < this.markers.length; ++i)\n      this.markers[i].clear();\n    signalLater(this, \"clear\");\n  };\n  SharedTextMarker.prototype.find = function(side, lineObj) {\n    return this.primary.find(side, lineObj);\n  };\n\n  function markTextShared(doc, from, to, options, type) {\n    options = copyObj(options);\n    options.shared = false;\n    var markers = [markText(doc, from, to, options, type)], primary = markers[0];\n    var widget = options.widgetNode;\n    linkedDocs(doc, function(doc) {\n      if (widget) options.widgetNode = widget.cloneNode(true);\n      markers.push(markText(doc, clipPos(doc, from), clipPos(doc, to), options, type));\n      for (var i = 0; i < doc.linked.length; ++i)\n        if (doc.linked[i].isParent) return;\n      primary = lst(markers);\n    });\n    return new SharedTextMarker(markers, primary);\n  }\n\n  function findSharedMarkers(doc) {\n    return doc.findMarks(Pos(doc.first, 0), doc.clipPos(Pos(doc.lastLine())),\n                         function(m) { return m.parent; });\n  }\n\n  function copySharedMarkers(doc, markers) {\n    for (var i = 0; i < markers.length; i++) {\n      var marker = markers[i], pos = marker.find();\n      var mFrom = doc.clipPos(pos.from), mTo = doc.clipPos(pos.to);\n      if (cmp(mFrom, mTo)) {\n        var subMark = markText(doc, mFrom, mTo, marker.primary, marker.primary.type);\n        marker.markers.push(subMark);\n        subMark.parent = marker;\n      }\n    }\n  }\n\n  function detachSharedMarkers(markers) {\n    for (var i = 0; i < markers.length; i++) {\n      var marker = markers[i], linked = [marker.primary.doc];;\n      linkedDocs(marker.primary.doc, function(d) { linked.push(d); });\n      for (var j = 0; j < marker.markers.length; j++) {\n        var subMarker = marker.markers[j];\n        if (indexOf(linked, subMarker.doc) == -1) {\n          subMarker.parent = null;\n          marker.markers.splice(j--, 1);\n        }\n      }\n    }\n  }\n\n  // TEXTMARKER SPANS\n\n  function MarkedSpan(marker, from, to) {\n    this.marker = marker;\n    this.from = from; this.to = to;\n  }\n\n  // Search an array of spans for a span matching the given marker.\n  function getMarkedSpanFor(spans, marker) {\n    if (spans) for (var i = 0; i < spans.length; ++i) {\n      var span = spans[i];\n      if (span.marker == marker) return span;\n    }\n  }\n  // Remove a span from an array, returning undefined if no spans are\n  // left (we don't store arrays for lines without spans).\n  function removeMarkedSpan(spans, span) {\n    for (var r, i = 0; i < spans.length; ++i)\n      if (spans[i] != span) (r || (r = [])).push(spans[i]);\n    return r;\n  }\n  // Add a span to a line.\n  function addMarkedSpan(line, span) {\n    line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span];\n    span.marker.attachLine(line);\n  }\n\n  // Used for the algorithm that adjusts markers for a change in the\n  // document. These functions cut an array of spans at a given\n  // character position, returning an array of remaining chunks (or\n  // undefined if nothing remains).\n  function markedSpansBefore(old, startCh, isInsert) {\n    if (old) for (var i = 0, nw; i < old.length; ++i) {\n      var span = old[i], marker = span.marker;\n      var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh);\n      if (startsBefore || span.from == startCh && marker.type == \"bookmark\" && (!isInsert || !span.marker.insertLeft)) {\n        var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh);\n        (nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to));\n      }\n    }\n    return nw;\n  }\n  function markedSpansAfter(old, endCh, isInsert) {\n    if (old) for (var i = 0, nw; i < old.length; ++i) {\n      var span = old[i], marker = span.marker;\n      var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh);\n      if (endsAfter || span.from == endCh && marker.type == \"bookmark\" && (!isInsert || span.marker.insertLeft)) {\n        var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh);\n        (nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh,\n                                              span.to == null ? null : span.to - endCh));\n      }\n    }\n    return nw;\n  }\n\n  // Given a change object, compute the new set of marker spans that\n  // cover the line in which the change took place. Removes spans\n  // entirely within the change, reconnects spans belonging to the\n  // same marker that appear on both sides of the change, and cuts off\n  // spans partially within the change. Returns an array of span\n  // arrays with one element for each line in (after) the change.\n  function stretchSpansOverChange(doc, change) {\n    var oldFirst = isLine(doc, change.from.line) && getLine(doc, change.from.line).markedSpans;\n    var oldLast = isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans;\n    if (!oldFirst && !oldLast) return null;\n\n    var startCh = change.from.ch, endCh = change.to.ch, isInsert = cmp(change.from, change.to) == 0;\n    // Get the spans that 'stick out' on both sides\n    var first = markedSpansBefore(oldFirst, startCh, isInsert);\n    var last = markedSpansAfter(oldLast, endCh, isInsert);\n\n    // Next, merge those two ends\n    var sameLine = change.text.length == 1, offset = lst(change.text).length + (sameLine ? startCh : 0);\n    if (first) {\n      // Fix up .to properties of first\n      for (var i = 0; i < first.length; ++i) {\n        var span = first[i];\n        if (span.to == null) {\n          var found = getMarkedSpanFor(last, span.marker);\n          if (!found) span.to = startCh;\n          else if (sameLine) span.to = found.to == null ? null : found.to + offset;\n        }\n      }\n    }\n    if (last) {\n      // Fix up .from in last (or move them into first in case of sameLine)\n      for (var i = 0; i < last.length; ++i) {\n        var span = last[i];\n        if (span.to != null) span.to += offset;\n        if (span.from == null) {\n          var found = getMarkedSpanFor(first, span.marker);\n          if (!found) {\n            span.from = offset;\n            if (sameLine) (first || (first = [])).push(span);\n          }\n        } else {\n          span.from += offset;\n          if (sameLine) (first || (first = [])).push(span);\n        }\n      }\n    }\n    // Make sure we didn't create any zero-length spans\n    if (first) first = clearEmptySpans(first);\n    if (last && last != first) last = clearEmptySpans(last);\n\n    var newMarkers = [first];\n    if (!sameLine) {\n      // Fill gap with whole-line-spans\n      var gap = change.text.length - 2, gapMarkers;\n      if (gap > 0 && first)\n        for (var i = 0; i < first.length; ++i)\n          if (first[i].to == null)\n            (gapMarkers || (gapMarkers = [])).push(new MarkedSpan(first[i].marker, null, null));\n      for (var i = 0; i < gap; ++i)\n        newMarkers.push(gapMarkers);\n      newMarkers.push(last);\n    }\n    return newMarkers;\n  }\n\n  // Remove spans that are empty and don't have a clearWhenEmpty\n  // option of false.\n  function clearEmptySpans(spans) {\n    for (var i = 0; i < spans.length; ++i) {\n      var span = spans[i];\n      if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false)\n        spans.splice(i--, 1);\n    }\n    if (!spans.length) return null;\n    return spans;\n  }\n\n  // Used for un/re-doing changes from the history. Combines the\n  // result of computing the existing spans with the set of spans that\n  // existed in the history (so that deleting around a span and then\n  // undoing brings back the span).\n  function mergeOldSpans(doc, change) {\n    var old = getOldSpans(doc, change);\n    var stretched = stretchSpansOverChange(doc, change);\n    if (!old) return stretched;\n    if (!stretched) return old;\n\n    for (var i = 0; i < old.length; ++i) {\n      var oldCur = old[i], stretchCur = stretched[i];\n      if (oldCur && stretchCur) {\n        spans: for (var j = 0; j < stretchCur.length; ++j) {\n          var span = stretchCur[j];\n          for (var k = 0; k < oldCur.length; ++k)\n            if (oldCur[k].marker == span.marker) continue spans;\n          oldCur.push(span);\n        }\n      } else if (stretchCur) {\n        old[i] = stretchCur;\n      }\n    }\n    return old;\n  }\n\n  // Used to 'clip' out readOnly ranges when making a change.\n  function removeReadOnlyRanges(doc, from, to) {\n    var markers = null;\n    doc.iter(from.line, to.line + 1, function(line) {\n      if (line.markedSpans) for (var i = 0; i < line.markedSpans.length; ++i) {\n        var mark = line.markedSpans[i].marker;\n        if (mark.readOnly && (!markers || indexOf(markers, mark) == -1))\n          (markers || (markers = [])).push(mark);\n      }\n    });\n    if (!markers) return null;\n    var parts = [{from: from, to: to}];\n    for (var i = 0; i < markers.length; ++i) {\n      var mk = markers[i], m = mk.find(0);\n      for (var j = 0; j < parts.length; ++j) {\n        var p = parts[j];\n        if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) continue;\n        var newParts = [j, 1], dfrom = cmp(p.from, m.from), dto = cmp(p.to, m.to);\n        if (dfrom < 0 || !mk.inclusiveLeft && !dfrom)\n          newParts.push({from: p.from, to: m.from});\n        if (dto > 0 || !mk.inclusiveRight && !dto)\n          newParts.push({from: m.to, to: p.to});\n        parts.splice.apply(parts, newParts);\n        j += newParts.length - 1;\n      }\n    }\n    return parts;\n  }\n\n  // Connect or disconnect spans from a line.\n  function detachMarkedSpans(line) {\n    var spans = line.markedSpans;\n    if (!spans) return;\n    for (var i = 0; i < spans.length; ++i)\n      spans[i].marker.detachLine(line);\n    line.markedSpans = null;\n  }\n  function attachMarkedSpans(line, spans) {\n    if (!spans) return;\n    for (var i = 0; i < spans.length; ++i)\n      spans[i].marker.attachLine(line);\n    line.markedSpans = spans;\n  }\n\n  // Helpers used when computing which overlapping collapsed span\n  // counts as the larger one.\n  function extraLeft(marker) { return marker.inclusiveLeft ? -1 : 0; }\n  function extraRight(marker) { return marker.inclusiveRight ? 1 : 0; }\n\n  // Returns a number indicating which of two overlapping collapsed\n  // spans is larger (and thus includes the other). Falls back to\n  // comparing ids when the spans cover exactly the same range.\n  function compareCollapsedMarkers(a, b) {\n    var lenDiff = a.lines.length - b.lines.length;\n    if (lenDiff != 0) return lenDiff;\n    var aPos = a.find(), bPos = b.find();\n    var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b);\n    if (fromCmp) return -fromCmp;\n    var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b);\n    if (toCmp) return toCmp;\n    return b.id - a.id;\n  }\n\n  // Find out whether a line ends or starts in a collapsed span. If\n  // so, return the marker for that span.\n  function collapsedSpanAtSide(line, start) {\n    var sps = sawCollapsedSpans && line.markedSpans, found;\n    if (sps) for (var sp, i = 0; i < sps.length; ++i) {\n      sp = sps[i];\n      if (sp.marker.collapsed && (start ? sp.from : sp.to) == null &&\n          (!found || compareCollapsedMarkers(found, sp.marker) < 0))\n        found = sp.marker;\n    }\n    return found;\n  }\n  function collapsedSpanAtStart(line) { return collapsedSpanAtSide(line, true); }\n  function collapsedSpanAtEnd(line) { return collapsedSpanAtSide(line, false); }\n\n  // Test whether there exists a collapsed span that partially\n  // overlaps (covers the start or end, but not both) of a new span.\n  // Such overlap is not allowed.\n  function conflictingCollapsedRange(doc, lineNo, from, to, marker) {\n    var line = getLine(doc, lineNo);\n    var sps = sawCollapsedSpans && line.markedSpans;\n    if (sps) for (var i = 0; i < sps.length; ++i) {\n      var sp = sps[i];\n      if (!sp.marker.collapsed) continue;\n      var found = sp.marker.find(0);\n      var fromCmp = cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker);\n      var toCmp = cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker);\n      if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) continue;\n      if (fromCmp <= 0 && (cmp(found.to, from) > 0 || (sp.marker.inclusiveRight && marker.inclusiveLeft)) ||\n          fromCmp >= 0 && (cmp(found.from, to) < 0 || (sp.marker.inclusiveLeft && marker.inclusiveRight)))\n        return true;\n    }\n  }\n\n  // A visual line is a line as drawn on the screen. Folding, for\n  // example, can cause multiple logical lines to appear on the same\n  // visual line. This finds the start of the visual line that the\n  // given line is part of (usually that is the line itself).\n  function visualLine(line) {\n    var merged;\n    while (merged = collapsedSpanAtStart(line))\n      line = merged.find(-1, true).line;\n    return line;\n  }\n\n  // Returns an array of logical lines that continue the visual line\n  // started by the argument, or undefined if there are no such lines.\n  function visualLineContinued(line) {\n    var merged, lines;\n    while (merged = collapsedSpanAtEnd(line)) {\n      line = merged.find(1, true).line;\n      (lines || (lines = [])).push(line);\n    }\n    return lines;\n  }\n\n  // Get the line number of the start of the visual line that the\n  // given line number is part of.\n  function visualLineNo(doc, lineN) {\n    var line = getLine(doc, lineN), vis = visualLine(line);\n    if (line == vis) return lineN;\n    return lineNo(vis);\n  }\n  // Get the line number of the start of the next visual line after\n  // the given line.\n  function visualLineEndNo(doc, lineN) {\n    if (lineN > doc.lastLine()) return lineN;\n    var line = getLine(doc, lineN), merged;\n    if (!lineIsHidden(doc, line)) return lineN;\n    while (merged = collapsedSpanAtEnd(line))\n      line = merged.find(1, true).line;\n    return lineNo(line) + 1;\n  }\n\n  // Compute whether a line is hidden. Lines count as hidden when they\n  // are part of a visual line that starts with another line, or when\n  // they are entirely covered by collapsed, non-widget span.\n  function lineIsHidden(doc, line) {\n    var sps = sawCollapsedSpans && line.markedSpans;\n    if (sps) for (var sp, i = 0; i < sps.length; ++i) {\n      sp = sps[i];\n      if (!sp.marker.collapsed) continue;\n      if (sp.from == null) return true;\n      if (sp.marker.widgetNode) continue;\n      if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp))\n        return true;\n    }\n  }\n  function lineIsHiddenInner(doc, line, span) {\n    if (span.to == null) {\n      var end = span.marker.find(1, true);\n      return lineIsHiddenInner(doc, end.line, getMarkedSpanFor(end.line.markedSpans, span.marker));\n    }\n    if (span.marker.inclusiveRight && span.to == line.text.length)\n      return true;\n    for (var sp, i = 0; i < line.markedSpans.length; ++i) {\n      sp = line.markedSpans[i];\n      if (sp.marker.collapsed && !sp.marker.widgetNode && sp.from == span.to &&\n          (sp.to == null || sp.to != span.from) &&\n          (sp.marker.inclusiveLeft || span.marker.inclusiveRight) &&\n          lineIsHiddenInner(doc, line, sp)) return true;\n    }\n  }\n\n  // LINE WIDGETS\n\n  // Line widgets are block elements displayed above or below a line.\n\n  var LineWidget = CodeMirror.LineWidget = function(cm, node, options) {\n    if (options) for (var opt in options) if (options.hasOwnProperty(opt))\n      this[opt] = options[opt];\n    this.cm = cm;\n    this.node = node;\n  };\n  eventMixin(LineWidget);\n\n  function adjustScrollWhenAboveVisible(cm, line, diff) {\n    if (heightAtLine(line) < ((cm.curOp && cm.curOp.scrollTop) || cm.doc.scrollTop))\n      addToScrollPos(cm, null, diff);\n  }\n\n  LineWidget.prototype.clear = function() {\n    var cm = this.cm, ws = this.line.widgets, line = this.line, no = lineNo(line);\n    if (no == null || !ws) return;\n    for (var i = 0; i < ws.length; ++i) if (ws[i] == this) ws.splice(i--, 1);\n    if (!ws.length) line.widgets = null;\n    var height = widgetHeight(this);\n    runInOp(cm, function() {\n      adjustScrollWhenAboveVisible(cm, line, -height);\n      regLineChange(cm, no, \"widget\");\n      updateLineHeight(line, Math.max(0, line.height - height));\n    });\n  };\n  LineWidget.prototype.changed = function() {\n    var oldH = this.height, cm = this.cm, line = this.line;\n    this.height = null;\n    var diff = widgetHeight(this) - oldH;\n    if (!diff) return;\n    runInOp(cm, function() {\n      cm.curOp.forceUpdate = true;\n      adjustScrollWhenAboveVisible(cm, line, diff);\n      updateLineHeight(line, line.height + diff);\n    });\n  };\n\n  function widgetHeight(widget) {\n    if (widget.height != null) return widget.height;\n    if (!contains(document.body, widget.node)) {\n      var parentStyle = \"position: relative;\";\n      if (widget.coverGutter)\n        parentStyle += \"margin-left: -\" + widget.cm.getGutterElement().offsetWidth + \"px;\";\n      removeChildrenAndAdd(widget.cm.display.measure, elt(\"div\", [widget.node], null, parentStyle));\n    }\n    return widget.height = widget.node.offsetHeight;\n  }\n\n  function addLineWidget(cm, handle, node, options) {\n    var widget = new LineWidget(cm, node, options);\n    if (widget.noHScroll) cm.display.alignWidgets = true;\n    changeLine(cm.doc, handle, \"widget\", function(line) {\n      var widgets = line.widgets || (line.widgets = []);\n      if (widget.insertAt == null) widgets.push(widget);\n      else widgets.splice(Math.min(widgets.length - 1, Math.max(0, widget.insertAt)), 0, widget);\n      widget.line = line;\n      if (!lineIsHidden(cm.doc, line)) {\n        var aboveVisible = heightAtLine(line) < cm.doc.scrollTop;\n        updateLineHeight(line, line.height + widgetHeight(widget));\n        if (aboveVisible) addToScrollPos(cm, null, widget.height);\n        cm.curOp.forceUpdate = true;\n      }\n      return true;\n    });\n    return widget;\n  }\n\n  // LINE DATA STRUCTURE\n\n  // Line objects. These hold state related to a line, including\n  // highlighting info (the styles array).\n  var Line = CodeMirror.Line = function(text, markedSpans, estimateHeight) {\n    this.text = text;\n    attachMarkedSpans(this, markedSpans);\n    this.height = estimateHeight ? estimateHeight(this) : 1;\n  };\n  eventMixin(Line);\n  Line.prototype.lineNo = function() { return lineNo(this); };\n\n  // Change the content (text, markers) of a line. Automatically\n  // invalidates cached information and tries to re-estimate the\n  // line's height.\n  function updateLine(line, text, markedSpans, estimateHeight) {\n    line.text = text;\n    if (line.stateAfter) line.stateAfter = null;\n    if (line.styles) line.styles = null;\n    if (line.order != null) line.order = null;\n    detachMarkedSpans(line);\n    attachMarkedSpans(line, markedSpans);\n    var estHeight = estimateHeight ? estimateHeight(line) : 1;\n    if (estHeight != line.height) updateLineHeight(line, estHeight);\n  }\n\n  // Detach a line from the document tree and its markers.\n  function cleanUpLine(line) {\n    line.parent = null;\n    detachMarkedSpans(line);\n  }\n\n  function extractLineClasses(type, output) {\n    if (type) for (;;) {\n      var lineClass = type.match(/(?:^|\\s+)line-(background-)?(\\S+)/);\n      if (!lineClass) break;\n      type = type.slice(0, lineClass.index) + type.slice(lineClass.index + lineClass[0].length);\n      var prop = lineClass[1] ? \"bgClass\" : \"textClass\";\n      if (output[prop] == null)\n        output[prop] = lineClass[2];\n      else if (!(new RegExp(\"(?:^|\\s)\" + lineClass[2] + \"(?:$|\\s)\")).test(output[prop]))\n        output[prop] += \" \" + lineClass[2];\n    }\n    return type;\n  }\n\n  function callBlankLine(mode, state) {\n    if (mode.blankLine) return mode.blankLine(state);\n    if (!mode.innerMode) return;\n    var inner = CodeMirror.innerMode(mode, state);\n    if (inner.mode.blankLine) return inner.mode.blankLine(inner.state);\n  }\n\n  function readToken(mode, stream, state) {\n    for (var i = 0; i < 10; i++) {\n      var style = mode.token(stream, state);\n      if (stream.pos > stream.start) return style;\n    }\n    throw new Error(\"Mode \" + mode.name + \" failed to advance stream.\");\n  }\n\n  // Run the given mode's parser over a line, calling f for each token.\n  function runMode(cm, text, mode, state, f, lineClasses, forceToEnd) {\n    var flattenSpans = mode.flattenSpans;\n    if (flattenSpans == null) flattenSpans = cm.options.flattenSpans;\n    var curStart = 0, curStyle = null;\n    var stream = new StringStream(text, cm.options.tabSize), style;\n    if (text == \"\") extractLineClasses(callBlankLine(mode, state), lineClasses);\n    while (!stream.eol()) {\n      if (stream.pos > cm.options.maxHighlightLength) {\n        flattenSpans = false;\n        if (forceToEnd) processLine(cm, text, state, stream.pos);\n        stream.pos = text.length;\n        style = null;\n      } else {\n        style = extractLineClasses(readToken(mode, stream, state), lineClasses);\n      }\n      if (cm.options.addModeClass) {\n        var mName = CodeMirror.innerMode(mode, state).mode.name;\n        if (mName) style = \"m-\" + (style ? mName + \" \" + style : mName);\n      }\n      if (!flattenSpans || curStyle != style) {\n        if (curStart < stream.start) f(stream.start, curStyle);\n        curStart = stream.start; curStyle = style;\n      }\n      stream.start = stream.pos;\n    }\n    while (curStart < stream.pos) {\n      // Webkit seems to refuse to render text nodes longer than 57444 characters\n      var pos = Math.min(stream.pos, curStart + 50000);\n      f(pos, curStyle);\n      curStart = pos;\n    }\n  }\n\n  // Compute a style array (an array starting with a mode generation\n  // -- for invalidation -- followed by pairs of end positions and\n  // style strings), which is used to highlight the tokens on the\n  // line.\n  function highlightLine(cm, line, state, forceToEnd) {\n    // A styles array always starts with a number identifying the\n    // mode/overlays that it is based on (for easy invalidation).\n    var st = [cm.state.modeGen], lineClasses = {};\n    // Compute the base array of styles\n    runMode(cm, line.text, cm.doc.mode, state, function(end, style) {\n      st.push(end, style);\n    }, lineClasses, forceToEnd);\n\n    // Run overlays, adjust style array.\n    for (var o = 0; o < cm.state.overlays.length; ++o) {\n      var overlay = cm.state.overlays[o], i = 1, at = 0;\n      runMode(cm, line.text, overlay.mode, true, function(end, style) {\n        var start = i;\n        // Ensure there's a token end at the current position, and that i points at it\n        while (at < end) {\n          var i_end = st[i];\n          if (i_end > end)\n            st.splice(i, 1, end, st[i+1], i_end);\n          i += 2;\n          at = Math.min(end, i_end);\n        }\n        if (!style) return;\n        if (overlay.opaque) {\n          st.splice(start, i - start, end, \"cm-overlay \" + style);\n          i = start + 2;\n        } else {\n          for (; start < i; start += 2) {\n            var cur = st[start+1];\n            st[start+1] = (cur ? cur + \" \" : \"\") + \"cm-overlay \" + style;\n          }\n        }\n      }, lineClasses);\n    }\n\n    return {styles: st, classes: lineClasses.bgClass || lineClasses.textClass ? lineClasses : null};\n  }\n\n  function getLineStyles(cm, line) {\n    if (!line.styles || line.styles[0] != cm.state.modeGen) {\n      var result = highlightLine(cm, line, line.stateAfter = getStateBefore(cm, lineNo(line)));\n      line.styles = result.styles;\n      if (result.classes) line.styleClasses = result.classes;\n      else if (line.styleClasses) line.styleClasses = null;\n    }\n    return line.styles;\n  }\n\n  // Lightweight form of highlight -- proceed over this line and\n  // update state, but don't save a style array. Used for lines that\n  // aren't currently visible.\n  function processLine(cm, text, state, startAt) {\n    var mode = cm.doc.mode;\n    var stream = new StringStream(text, cm.options.tabSize);\n    stream.start = stream.pos = startAt || 0;\n    if (text == \"\") callBlankLine(mode, state);\n    while (!stream.eol() && stream.pos <= cm.options.maxHighlightLength) {\n      readToken(mode, stream, state);\n      stream.start = stream.pos;\n    }\n  }\n\n  // Convert a style as returned by a mode (either null, or a string\n  // containing one or more styles) to a CSS style. This is cached,\n  // and also looks for line-wide styles.\n  var styleToClassCache = {}, styleToClassCacheWithMode = {};\n  function interpretTokenStyle(style, options) {\n    if (!style || /^\\s*$/.test(style)) return null;\n    var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache;\n    return cache[style] ||\n      (cache[style] = style.replace(/\\S+/g, \"cm-$&\"));\n  }\n\n  // Render the DOM representation of the text of a line. Also builds\n  // up a 'line map', which points at the DOM nodes that represent\n  // specific stretches of text, and is used by the measuring code.\n  // The returned object contains the DOM node, this map, and\n  // information about line-wide styles that were set by the mode.\n  function buildLineContent(cm, lineView) {\n    // The padding-right forces the element to have a 'border', which\n    // is needed on Webkit to be able to get line-level bounding\n    // rectangles for it (in measureChar).\n    var content = elt(\"span\", null, null, webkit ? \"padding-right: .1px\" : null);\n    var builder = {pre: elt(\"pre\", [content]), content: content, col: 0, pos: 0, cm: cm};\n    lineView.measure = {};\n\n    // Iterate over the logical lines that make up this visual line.\n    for (var i = 0; i <= (lineView.rest ? lineView.rest.length : 0); i++) {\n      var line = i ? lineView.rest[i - 1] : lineView.line, order;\n      builder.pos = 0;\n      builder.addToken = buildToken;\n      // Optionally wire in some hacks into the token-rendering\n      // algorithm, to deal with browser quirks.\n      if ((ie || webkit) && cm.getOption(\"lineWrapping\"))\n        builder.addToken = buildTokenSplitSpaces(builder.addToken);\n      if (hasBadBidiRects(cm.display.measure) && (order = getOrder(line)))\n        builder.addToken = buildTokenBadBidi(builder.addToken, order);\n      builder.map = [];\n      insertLineContent(line, builder, getLineStyles(cm, line));\n      if (line.styleClasses) {\n        if (line.styleClasses.bgClass)\n          builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || \"\");\n        if (line.styleClasses.textClass)\n          builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || \"\");\n      }\n\n      // Ensure at least a single node is present, for measuring.\n      if (builder.map.length == 0)\n        builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure)));\n\n      // Store the map and a cache object for the current logical line\n      if (i == 0) {\n        lineView.measure.map = builder.map;\n        lineView.measure.cache = {};\n      } else {\n        (lineView.measure.maps || (lineView.measure.maps = [])).push(builder.map);\n        (lineView.measure.caches || (lineView.measure.caches = [])).push({});\n      }\n    }\n\n    signal(cm, \"renderLine\", cm, lineView.line, builder.pre);\n    if (builder.pre.className)\n      builder.textClass = joinClasses(builder.pre.className, builder.textClass || \"\");\n    return builder;\n  }\n\n  function defaultSpecialCharPlaceholder(ch) {\n    var token = elt(\"span\", \"\\u2022\", \"cm-invalidchar\");\n    token.title = \"\\\\u\" + ch.charCodeAt(0).toString(16);\n    return token;\n  }\n\n  // Build up the DOM representation for a single token, and add it to\n  // the line map. Takes care to render special characters separately.\n  function buildToken(builder, text, style, startStyle, endStyle, title) {\n    if (!text) return;\n    var special = builder.cm.options.specialChars, mustWrap = false;\n    if (!special.test(text)) {\n      builder.col += text.length;\n      var content = document.createTextNode(text);\n      builder.map.push(builder.pos, builder.pos + text.length, content);\n      if (ie && ie_version < 9) mustWrap = true;\n      builder.pos += text.length;\n    } else {\n      var content = document.createDocumentFragment(), pos = 0;\n      while (true) {\n        special.lastIndex = pos;\n        var m = special.exec(text);\n        var skipped = m ? m.index - pos : text.length - pos;\n        if (skipped) {\n          var txt = document.createTextNode(text.slice(pos, pos + skipped));\n          if (ie && ie_version < 9) content.appendChild(elt(\"span\", [txt]));\n          else content.appendChild(txt);\n          builder.map.push(builder.pos, builder.pos + skipped, txt);\n          builder.col += skipped;\n          builder.pos += skipped;\n        }\n        if (!m) break;\n        pos += skipped + 1;\n        if (m[0] == \"\\t\") {\n          var tabSize = builder.cm.options.tabSize, tabWidth = tabSize - builder.col % tabSize;\n          var txt = content.appendChild(elt(\"span\", spaceStr(tabWidth), \"cm-tab\"));\n          builder.col += tabWidth;\n        } else {\n          var txt = builder.cm.options.specialCharPlaceholder(m[0]);\n          if (ie && ie_version < 9) content.appendChild(elt(\"span\", [txt]));\n          else content.appendChild(txt);\n          builder.col += 1;\n        }\n        builder.map.push(builder.pos, builder.pos + 1, txt);\n        builder.pos++;\n      }\n    }\n    if (style || startStyle || endStyle || mustWrap) {\n      var fullStyle = style || \"\";\n      if (startStyle) fullStyle += startStyle;\n      if (endStyle) fullStyle += endStyle;\n      var token = elt(\"span\", [content], fullStyle);\n      if (title) token.title = title;\n      return builder.content.appendChild(token);\n    }\n    builder.content.appendChild(content);\n  }\n\n  function buildTokenSplitSpaces(inner) {\n    function split(old) {\n      var out = \" \";\n      for (var i = 0; i < old.length - 2; ++i) out += i % 2 ? \" \" : \"\\u00a0\";\n      out += \" \";\n      return out;\n    }\n    return function(builder, text, style, startStyle, endStyle, title) {\n      inner(builder, text.replace(/ {3,}/g, split), style, startStyle, endStyle, title);\n    };\n  }\n\n  // Work around nonsense dimensions being reported for stretches of\n  // right-to-left text.\n  function buildTokenBadBidi(inner, order) {\n    return function(builder, text, style, startStyle, endStyle, title) {\n      style = style ? style + \" cm-force-border\" : \"cm-force-border\";\n      var start = builder.pos, end = start + text.length;\n      for (;;) {\n        // Find the part that overlaps with the start of this text\n        for (var i = 0; i < order.length; i++) {\n          var part = order[i];\n          if (part.to > start && part.from <= start) break;\n        }\n        if (part.to >= end) return inner(builder, text, style, startStyle, endStyle, title);\n        inner(builder, text.slice(0, part.to - start), style, startStyle, null, title);\n        startStyle = null;\n        text = text.slice(part.to - start);\n        start = part.to;\n      }\n    };\n  }\n\n  function buildCollapsedSpan(builder, size, marker, ignoreWidget) {\n    var widget = !ignoreWidget && marker.widgetNode;\n    if (widget) {\n      builder.map.push(builder.pos, builder.pos + size, widget);\n      builder.content.appendChild(widget);\n    }\n    builder.pos += size;\n  }\n\n  // Outputs a number of spans to make up a line, taking highlighting\n  // and marked text into account.\n  function insertLineContent(line, builder, styles) {\n    var spans = line.markedSpans, allText = line.text, at = 0;\n    if (!spans) {\n      for (var i = 1; i < styles.length; i+=2)\n        builder.addToken(builder, allText.slice(at, at = styles[i]), interpretTokenStyle(styles[i+1], builder.cm.options));\n      return;\n    }\n\n    var len = allText.length, pos = 0, i = 1, text = \"\", style;\n    var nextChange = 0, spanStyle, spanEndStyle, spanStartStyle, title, collapsed;\n    for (;;) {\n      if (nextChange == pos) { // Update current marker set\n        spanStyle = spanEndStyle = spanStartStyle = title = \"\";\n        collapsed = null; nextChange = Infinity;\n        var foundBookmarks = [];\n        for (var j = 0; j < spans.length; ++j) {\n          var sp = spans[j], m = sp.marker;\n          if (sp.from <= pos && (sp.to == null || sp.to > pos)) {\n            if (sp.to != null && nextChange > sp.to) { nextChange = sp.to; spanEndStyle = \"\"; }\n            if (m.className) spanStyle += \" \" + m.className;\n            if (m.startStyle && sp.from == pos) spanStartStyle += \" \" + m.startStyle;\n            if (m.endStyle && sp.to == nextChange) spanEndStyle += \" \" + m.endStyle;\n            if (m.title && !title) title = m.title;\n            if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0))\n              collapsed = sp;\n          } else if (sp.from > pos && nextChange > sp.from) {\n            nextChange = sp.from;\n          }\n          if (m.type == \"bookmark\" && sp.from == pos && m.widgetNode) foundBookmarks.push(m);\n        }\n        if (collapsed && (collapsed.from || 0) == pos) {\n          buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos,\n                             collapsed.marker, collapsed.from == null);\n          if (collapsed.to == null) return;\n        }\n        if (!collapsed && foundBookmarks.length) for (var j = 0; j < foundBookmarks.length; ++j)\n          buildCollapsedSpan(builder, 0, foundBookmarks[j]);\n      }\n      if (pos >= len) break;\n\n      var upto = Math.min(len, nextChange);\n      while (true) {\n        if (text) {\n          var end = pos + text.length;\n          if (!collapsed) {\n            var tokenText = end > upto ? text.slice(0, upto - pos) : text;\n            builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle,\n                             spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : \"\", title);\n          }\n          if (end >= upto) {text = text.slice(upto - pos); pos = upto; break;}\n          pos = end;\n          spanStartStyle = \"\";\n        }\n        text = allText.slice(at, at = styles[i++]);\n        style = interpretTokenStyle(styles[i++], builder.cm.options);\n      }\n    }\n  }\n\n  // DOCUMENT DATA STRUCTURE\n\n  // By default, updates that start and end at the beginning of a line\n  // are treated specially, in order to make the association of line\n  // widgets and marker elements with the text behave more intuitive.\n  function isWholeLineUpdate(doc, change) {\n    return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == \"\" &&\n      (!doc.cm || doc.cm.options.wholeLineUpdateBefore);\n  }\n\n  // Perform a change on the document data structure.\n  function updateDoc(doc, change, markedSpans, estimateHeight) {\n    function spansFor(n) {return markedSpans ? markedSpans[n] : null;}\n    function update(line, text, spans) {\n      updateLine(line, text, spans, estimateHeight);\n      signalLater(line, \"change\", line, change);\n    }\n\n    var from = change.from, to = change.to, text = change.text;\n    var firstLine = getLine(doc, from.line), lastLine = getLine(doc, to.line);\n    var lastText = lst(text), lastSpans = spansFor(text.length - 1), nlines = to.line - from.line;\n\n    // Adjust the line structure\n    if (isWholeLineUpdate(doc, change)) {\n      // This is a whole-line replace. Treated specially to make\n      // sure line objects move the way they are supposed to.\n      for (var i = 0, added = []; i < text.length - 1; ++i)\n        added.push(new Line(text[i], spansFor(i), estimateHeight));\n      update(lastLine, lastLine.text, lastSpans);\n      if (nlines) doc.remove(from.line, nlines);\n      if (added.length) doc.insert(from.line, added);\n    } else if (firstLine == lastLine) {\n      if (text.length == 1) {\n        update(firstLine, firstLine.text.slice(0, from.ch) + lastText + firstLine.text.slice(to.ch), lastSpans);\n      } else {\n        for (var added = [], i = 1; i < text.length - 1; ++i)\n          added.push(new Line(text[i], spansFor(i), estimateHeight));\n        added.push(new Line(lastText + firstLine.text.slice(to.ch), lastSpans, estimateHeight));\n        update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n        doc.insert(from.line + 1, added);\n      }\n    } else if (text.length == 1) {\n      update(firstLine, firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), spansFor(0));\n      doc.remove(from.line + 1, nlines);\n    } else {\n      update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n      update(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans);\n      for (var i = 1, added = []; i < text.length - 1; ++i)\n        added.push(new Line(text[i], spansFor(i), estimateHeight));\n      if (nlines > 1) doc.remove(from.line + 1, nlines - 1);\n      doc.insert(from.line + 1, added);\n    }\n\n    signalLater(doc, \"change\", doc, change);\n  }\n\n  // The document is represented as a BTree consisting of leaves, with\n  // chunk of lines in them, and branches, with up to ten leaves or\n  // other branch nodes below them. The top node is always a branch\n  // node, and is the document object itself (meaning it has\n  // additional methods and properties).\n  //\n  // All nodes have parent links. The tree is used both to go from\n  // line numbers to line objects, and to go from objects to numbers.\n  // It also indexes by height, and is used to convert between height\n  // and line object, and to find the total height of the document.\n  //\n  // See also http://marijnhaverbeke.nl/blog/codemirror-line-tree.html\n\n  function LeafChunk(lines) {\n    this.lines = lines;\n    this.parent = null;\n    for (var i = 0, height = 0; i < lines.length; ++i) {\n      lines[i].parent = this;\n      height += lines[i].height;\n    }\n    this.height = height;\n  }\n\n  LeafChunk.prototype = {\n    chunkSize: function() { return this.lines.length; },\n    // Remove the n lines at offset 'at'.\n    removeInner: function(at, n) {\n      for (var i = at, e = at + n; i < e; ++i) {\n        var line = this.lines[i];\n        this.height -= line.height;\n        cleanUpLine(line);\n        signalLater(line, \"delete\");\n      }\n      this.lines.splice(at, n);\n    },\n    // Helper used to collapse a small branch into a single leaf.\n    collapse: function(lines) {\n      lines.push.apply(lines, this.lines);\n    },\n    // Insert the given array of lines at offset 'at', count them as\n    // having the given height.\n    insertInner: function(at, lines, height) {\n      this.height += height;\n      this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at));\n      for (var i = 0; i < lines.length; ++i) lines[i].parent = this;\n    },\n    // Used to iterate over a part of the tree.\n    iterN: function(at, n, op) {\n      for (var e = at + n; at < e; ++at)\n        if (op(this.lines[at])) return true;\n    }\n  };\n\n  function BranchChunk(children) {\n    this.children = children;\n    var size = 0, height = 0;\n    for (var i = 0; i < children.length; ++i) {\n      var ch = children[i];\n      size += ch.chunkSize(); height += ch.height;\n      ch.parent = this;\n    }\n    this.size = size;\n    this.height = height;\n    this.parent = null;\n  }\n\n  BranchChunk.prototype = {\n    chunkSize: function() { return this.size; },\n    removeInner: function(at, n) {\n      this.size -= n;\n      for (var i = 0; i < this.children.length; ++i) {\n        var child = this.children[i], sz = child.chunkSize();\n        if (at < sz) {\n          var rm = Math.min(n, sz - at), oldHeight = child.height;\n          child.removeInner(at, rm);\n          this.height -= oldHeight - child.height;\n          if (sz == rm) { this.children.splice(i--, 1); child.parent = null; }\n          if ((n -= rm) == 0) break;\n          at = 0;\n        } else at -= sz;\n      }\n      // If the result is smaller than 25 lines, ensure that it is a\n      // single leaf node.\n      if (this.size - n < 25 &&\n          (this.children.length > 1 || !(this.children[0] instanceof LeafChunk))) {\n        var lines = [];\n        this.collapse(lines);\n        this.children = [new LeafChunk(lines)];\n        this.children[0].parent = this;\n      }\n    },\n    collapse: function(lines) {\n      for (var i = 0; i < this.children.length; ++i) this.children[i].collapse(lines);\n    },\n    insertInner: function(at, lines, height) {\n      this.size += lines.length;\n      this.height += height;\n      for (var i = 0; i < this.children.length; ++i) {\n        var child = this.children[i], sz = child.chunkSize();\n        if (at <= sz) {\n          child.insertInner(at, lines, height);\n          if (child.lines && child.lines.length > 50) {\n            while (child.lines.length > 50) {\n              var spilled = child.lines.splice(child.lines.length - 25, 25);\n              var newleaf = new LeafChunk(spilled);\n              child.height -= newleaf.height;\n              this.children.splice(i + 1, 0, newleaf);\n              newleaf.parent = this;\n            }\n            this.maybeSpill();\n          }\n          break;\n        }\n        at -= sz;\n      }\n    },\n    // When a node has grown, check whether it should be split.\n    maybeSpill: function() {\n      if (this.children.length <= 10) return;\n      var me = this;\n      do {\n        var spilled = me.children.splice(me.children.length - 5, 5);\n        var sibling = new BranchChunk(spilled);\n        if (!me.parent) { // Become the parent node\n          var copy = new BranchChunk(me.children);\n          copy.parent = me;\n          me.children = [copy, sibling];\n          me = copy;\n        } else {\n          me.size -= sibling.size;\n          me.height -= sibling.height;\n          var myIndex = indexOf(me.parent.children, me);\n          me.parent.children.splice(myIndex + 1, 0, sibling);\n        }\n        sibling.parent = me.parent;\n      } while (me.children.length > 10);\n      me.parent.maybeSpill();\n    },\n    iterN: function(at, n, op) {\n      for (var i = 0; i < this.children.length; ++i) {\n        var child = this.children[i], sz = child.chunkSize();\n        if (at < sz) {\n          var used = Math.min(n, sz - at);\n          if (child.iterN(at, used, op)) return true;\n          if ((n -= used) == 0) break;\n          at = 0;\n        } else at -= sz;\n      }\n    }\n  };\n\n  var nextDocId = 0;\n  var Doc = CodeMirror.Doc = function(text, mode, firstLine) {\n    if (!(this instanceof Doc)) return new Doc(text, mode, firstLine);\n    if (firstLine == null) firstLine = 0;\n\n    BranchChunk.call(this, [new LeafChunk([new Line(\"\", null)])]);\n    this.first = firstLine;\n    this.scrollTop = this.scrollLeft = 0;\n    this.cantEdit = false;\n    this.cleanGeneration = 1;\n    this.frontier = firstLine;\n    var start = Pos(firstLine, 0);\n    this.sel = simpleSelection(start);\n    this.history = new History(null);\n    this.id = ++nextDocId;\n    this.modeOption = mode;\n\n    if (typeof text == \"string\") text = splitLines(text);\n    updateDoc(this, {from: start, to: start, text: text});\n    setSelection(this, simpleSelection(start), sel_dontScroll);\n  };\n\n  Doc.prototype = createObj(BranchChunk.prototype, {\n    constructor: Doc,\n    // Iterate over the document. Supports two forms -- with only one\n    // argument, it calls that for each line in the document. With\n    // three, it iterates over the range given by the first two (with\n    // the second being non-inclusive).\n    iter: function(from, to, op) {\n      if (op) this.iterN(from - this.first, to - from, op);\n      else this.iterN(this.first, this.first + this.size, from);\n    },\n\n    // Non-public interface for adding and removing lines.\n    insert: function(at, lines) {\n      var height = 0;\n      for (var i = 0; i < lines.length; ++i) height += lines[i].height;\n      this.insertInner(at - this.first, lines, height);\n    },\n    remove: function(at, n) { this.removeInner(at - this.first, n); },\n\n    // From here, the methods are part of the public interface. Most\n    // are also available from CodeMirror (editor) instances.\n\n    getValue: function(lineSep) {\n      var lines = getLines(this, this.first, this.first + this.size);\n      if (lineSep === false) return lines;\n      return lines.join(lineSep || \"\\n\");\n    },\n    setValue: docMethodOp(function(code) {\n      var top = Pos(this.first, 0), last = this.first + this.size - 1;\n      makeChange(this, {from: top, to: Pos(last, getLine(this, last).text.length),\n                        text: splitLines(code), origin: \"setValue\"}, true);\n      setSelection(this, simpleSelection(top));\n    }),\n    replaceRange: function(code, from, to, origin) {\n      from = clipPos(this, from);\n      to = to ? clipPos(this, to) : from;\n      replaceRange(this, code, from, to, origin);\n    },\n    getRange: function(from, to, lineSep) {\n      var lines = getBetween(this, clipPos(this, from), clipPos(this, to));\n      if (lineSep === false) return lines;\n      return lines.join(lineSep || \"\\n\");\n    },\n\n    getLine: function(line) {var l = this.getLineHandle(line); return l && l.text;},\n\n    getLineHandle: function(line) {if (isLine(this, line)) return getLine(this, line);},\n    getLineNumber: function(line) {return lineNo(line);},\n\n    getLineHandleVisualStart: function(line) {\n      if (typeof line == \"number\") line = getLine(this, line);\n      return visualLine(line);\n    },\n\n    lineCount: function() {return this.size;},\n    firstLine: function() {return this.first;},\n    lastLine: function() {return this.first + this.size - 1;},\n\n    clipPos: function(pos) {return clipPos(this, pos);},\n\n    getCursor: function(start) {\n      var range = this.sel.primary(), pos;\n      if (start == null || start == \"head\") pos = range.head;\n      else if (start == \"anchor\") pos = range.anchor;\n      else if (start == \"end\" || start == \"to\" || start === false) pos = range.to();\n      else pos = range.from();\n      return pos;\n    },\n    listSelections: function() { return this.sel.ranges; },\n    somethingSelected: function() {return this.sel.somethingSelected();},\n\n    setCursor: docMethodOp(function(line, ch, options) {\n      setSimpleSelection(this, clipPos(this, typeof line == \"number\" ? Pos(line, ch || 0) : line), null, options);\n    }),\n    setSelection: docMethodOp(function(anchor, head, options) {\n      setSimpleSelection(this, clipPos(this, anchor), clipPos(this, head || anchor), options);\n    }),\n    extendSelection: docMethodOp(function(head, other, options) {\n      extendSelection(this, clipPos(this, head), other && clipPos(this, other), options);\n    }),\n    extendSelections: docMethodOp(function(heads, options) {\n      extendSelections(this, clipPosArray(this, heads, options));\n    }),\n    extendSelectionsBy: docMethodOp(function(f, options) {\n      extendSelections(this, map(this.sel.ranges, f), options);\n    }),\n    setSelections: docMethodOp(function(ranges, primary, options) {\n      if (!ranges.length) return;\n      for (var i = 0, out = []; i < ranges.length; i++)\n        out[i] = new Range(clipPos(this, ranges[i].anchor),\n                           clipPos(this, ranges[i].head));\n      if (primary == null) primary = Math.min(ranges.length - 1, this.sel.primIndex);\n      setSelection(this, normalizeSelection(out, primary), options);\n    }),\n    addSelection: docMethodOp(function(anchor, head, options) {\n      var ranges = this.sel.ranges.slice(0);\n      ranges.push(new Range(clipPos(this, anchor), clipPos(this, head || anchor)));\n      setSelection(this, normalizeSelection(ranges, ranges.length - 1), options);\n    }),\n\n    getSelection: function(lineSep) {\n      var ranges = this.sel.ranges, lines;\n      for (var i = 0; i < ranges.length; i++) {\n        var sel = getBetween(this, ranges[i].from(), ranges[i].to());\n        lines = lines ? lines.concat(sel) : sel;\n      }\n      if (lineSep === false) return lines;\n      else return lines.join(lineSep || \"\\n\");\n    },\n    getSelections: function(lineSep) {\n      var parts = [], ranges = this.sel.ranges;\n      for (var i = 0; i < ranges.length; i++) {\n        var sel = getBetween(this, ranges[i].from(), ranges[i].to());\n        if (lineSep !== false) sel = sel.join(lineSep || \"\\n\");\n        parts[i] = sel;\n      }\n      return parts;\n    },\n    replaceSelection: function(code, collapse, origin) {\n      var dup = [];\n      for (var i = 0; i < this.sel.ranges.length; i++)\n        dup[i] = code;\n      this.replaceSelections(dup, collapse, origin || \"+input\");\n    },\n    replaceSelections: docMethodOp(function(code, collapse, origin) {\n      var changes = [], sel = this.sel;\n      for (var i = 0; i < sel.ranges.length; i++) {\n        var range = sel.ranges[i];\n        changes[i] = {from: range.from(), to: range.to(), text: splitLines(code[i]), origin: origin};\n      }\n      var newSel = collapse && collapse != \"end\" && computeReplacedSel(this, changes, collapse);\n      for (var i = changes.length - 1; i >= 0; i--)\n        makeChange(this, changes[i]);\n      if (newSel) setSelectionReplaceHistory(this, newSel);\n      else if (this.cm) ensureCursorVisible(this.cm);\n    }),\n    undo: docMethodOp(function() {makeChangeFromHistory(this, \"undo\");}),\n    redo: docMethodOp(function() {makeChangeFromHistory(this, \"redo\");}),\n    undoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"undo\", true);}),\n    redoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"redo\", true);}),\n\n    setExtending: function(val) {this.extend = val;},\n    getExtending: function() {return this.extend;},\n\n    historySize: function() {\n      var hist = this.history, done = 0, undone = 0;\n      for (var i = 0; i < hist.done.length; i++) if (!hist.done[i].ranges) ++done;\n      for (var i = 0; i < hist.undone.length; i++) if (!hist.undone[i].ranges) ++undone;\n      return {undo: done, redo: undone};\n    },\n    clearHistory: function() {this.history = new History(this.history.maxGeneration);},\n\n    markClean: function() {\n      this.cleanGeneration = this.changeGeneration(true);\n    },\n    changeGeneration: function(forceSplit) {\n      if (forceSplit)\n        this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null;\n      return this.history.generation;\n    },\n    isClean: function (gen) {\n      return this.history.generation == (gen || this.cleanGeneration);\n    },\n\n    getHistory: function() {\n      return {done: copyHistoryArray(this.history.done),\n              undone: copyHistoryArray(this.history.undone)};\n    },\n    setHistory: function(histData) {\n      var hist = this.history = new History(this.history.maxGeneration);\n      hist.done = copyHistoryArray(histData.done.slice(0), null, true);\n      hist.undone = copyHistoryArray(histData.undone.slice(0), null, true);\n    },\n\n    addLineClass: docMethodOp(function(handle, where, cls) {\n      return changeLine(this, handle, \"class\", function(line) {\n        var prop = where == \"text\" ? \"textClass\" : where == \"background\" ? \"bgClass\" : \"wrapClass\";\n        if (!line[prop]) line[prop] = cls;\n        else if (new RegExp(\"(?:^|\\\\s)\" + cls + \"(?:$|\\\\s)\").test(line[prop])) return false;\n        else line[prop] += \" \" + cls;\n        return true;\n      });\n    }),\n    removeLineClass: docMethodOp(function(handle, where, cls) {\n      return changeLine(this, handle, \"class\", function(line) {\n        var prop = where == \"text\" ? \"textClass\" : where == \"background\" ? \"bgClass\" : \"wrapClass\";\n        var cur = line[prop];\n        if (!cur) return false;\n        else if (cls == null) line[prop] = null;\n        else {\n          var found = cur.match(new RegExp(\"(?:^|\\\\s+)\" + cls + \"(?:$|\\\\s+)\"));\n          if (!found) return false;\n          var end = found.index + found[0].length;\n          line[prop] = cur.slice(0, found.index) + (!found.index || end == cur.length ? \"\" : \" \") + cur.slice(end) || null;\n        }\n        return true;\n      });\n    }),\n\n    markText: function(from, to, options) {\n      return markText(this, clipPos(this, from), clipPos(this, to), options, \"range\");\n    },\n    setBookmark: function(pos, options) {\n      var realOpts = {replacedWith: options && (options.nodeType == null ? options.widget : options),\n                      insertLeft: options && options.insertLeft,\n                      clearWhenEmpty: false, shared: options && options.shared};\n      pos = clipPos(this, pos);\n      return markText(this, pos, pos, realOpts, \"bookmark\");\n    },\n    findMarksAt: function(pos) {\n      pos = clipPos(this, pos);\n      var markers = [], spans = getLine(this, pos.line).markedSpans;\n      if (spans) for (var i = 0; i < spans.length; ++i) {\n        var span = spans[i];\n        if ((span.from == null || span.from <= pos.ch) &&\n            (span.to == null || span.to >= pos.ch))\n          markers.push(span.marker.parent || span.marker);\n      }\n      return markers;\n    },\n    findMarks: function(from, to, filter) {\n      from = clipPos(this, from); to = clipPos(this, to);\n      var found = [], lineNo = from.line;\n      this.iter(from.line, to.line + 1, function(line) {\n        var spans = line.markedSpans;\n        if (spans) for (var i = 0; i < spans.length; i++) {\n          var span = spans[i];\n          if (!(lineNo == from.line && from.ch > span.to ||\n                span.from == null && lineNo != from.line||\n                lineNo == to.line && span.from > to.ch) &&\n              (!filter || filter(span.marker)))\n            found.push(span.marker.parent || span.marker);\n        }\n        ++lineNo;\n      });\n      return found;\n    },\n    getAllMarks: function() {\n      var markers = [];\n      this.iter(function(line) {\n        var sps = line.markedSpans;\n        if (sps) for (var i = 0; i < sps.length; ++i)\n          if (sps[i].from != null) markers.push(sps[i].marker);\n      });\n      return markers;\n    },\n\n    posFromIndex: function(off) {\n      var ch, lineNo = this.first;\n      this.iter(function(line) {\n        var sz = line.text.length + 1;\n        if (sz > off) { ch = off; return true; }\n        off -= sz;\n        ++lineNo;\n      });\n      return clipPos(this, Pos(lineNo, ch));\n    },\n    indexFromPos: function (coords) {\n      coords = clipPos(this, coords);\n      var index = coords.ch;\n      if (coords.line < this.first || coords.ch < 0) return 0;\n      this.iter(this.first, coords.line, function (line) {\n        index += line.text.length + 1;\n      });\n      return index;\n    },\n\n    copy: function(copyHistory) {\n      var doc = new Doc(getLines(this, this.first, this.first + this.size), this.modeOption, this.first);\n      doc.scrollTop = this.scrollTop; doc.scrollLeft = this.scrollLeft;\n      doc.sel = this.sel;\n      doc.extend = false;\n      if (copyHistory) {\n        doc.history.undoDepth = this.history.undoDepth;\n        doc.setHistory(this.getHistory());\n      }\n      return doc;\n    },\n\n    linkedDoc: function(options) {\n      if (!options) options = {};\n      var from = this.first, to = this.first + this.size;\n      if (options.from != null && options.from > from) from = options.from;\n      if (options.to != null && options.to < to) to = options.to;\n      var copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from);\n      if (options.sharedHist) copy.history = this.history;\n      (this.linked || (this.linked = [])).push({doc: copy, sharedHist: options.sharedHist});\n      copy.linked = [{doc: this, isParent: true, sharedHist: options.sharedHist}];\n      copySharedMarkers(copy, findSharedMarkers(this));\n      return copy;\n    },\n    unlinkDoc: function(other) {\n      if (other instanceof CodeMirror) other = other.doc;\n      if (this.linked) for (var i = 0; i < this.linked.length; ++i) {\n        var link = this.linked[i];\n        if (link.doc != other) continue;\n        this.linked.splice(i, 1);\n        other.unlinkDoc(this);\n        detachSharedMarkers(findSharedMarkers(this));\n        break;\n      }\n      // If the histories were shared, split them again\n      if (other.history == this.history) {\n        var splitIds = [other.id];\n        linkedDocs(other, function(doc) {splitIds.push(doc.id);}, true);\n        other.history = new History(null);\n        other.history.done = copyHistoryArray(this.history.done, splitIds);\n        other.history.undone = copyHistoryArray(this.history.undone, splitIds);\n      }\n    },\n    iterLinkedDocs: function(f) {linkedDocs(this, f);},\n\n    getMode: function() {return this.mode;},\n    getEditor: function() {return this.cm;}\n  });\n\n  // Public alias.\n  Doc.prototype.eachLine = Doc.prototype.iter;\n\n  // Set up methods on CodeMirror's prototype to redirect to the editor's document.\n  var dontDelegate = \"iter insert remove copy getEditor\".split(\" \");\n  for (var prop in Doc.prototype) if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0)\n    CodeMirror.prototype[prop] = (function(method) {\n      return function() {return method.apply(this.doc, arguments);};\n    })(Doc.prototype[prop]);\n\n  eventMixin(Doc);\n\n  // Call f for all linked documents.\n  function linkedDocs(doc, f, sharedHistOnly) {\n    function propagate(doc, skip, sharedHist) {\n      if (doc.linked) for (var i = 0; i < doc.linked.length; ++i) {\n        var rel = doc.linked[i];\n        if (rel.doc == skip) continue;\n        var shared = sharedHist && rel.sharedHist;\n        if (sharedHistOnly && !shared) continue;\n        f(rel.doc, shared);\n        propagate(rel.doc, doc, shared);\n      }\n    }\n    propagate(doc, null, true);\n  }\n\n  // Attach a document to an editor.\n  function attachDoc(cm, doc) {\n    if (doc.cm) throw new Error(\"This document is already in use.\");\n    cm.doc = doc;\n    doc.cm = cm;\n    estimateLineHeights(cm);\n    loadMode(cm);\n    if (!cm.options.lineWrapping) findMaxLine(cm);\n    cm.options.mode = doc.modeOption;\n    regChange(cm);\n  }\n\n  // LINE UTILITIES\n\n  // Find the line object corresponding to the given line number.\n  function getLine(doc, n) {\n    n -= doc.first;\n    if (n < 0 || n >= doc.size) throw new Error(\"There is no line \" + (n + doc.first) + \" in the document.\");\n    for (var chunk = doc; !chunk.lines;) {\n      for (var i = 0;; ++i) {\n        var child = chunk.children[i], sz = child.chunkSize();\n        if (n < sz) { chunk = child; break; }\n        n -= sz;\n      }\n    }\n    return chunk.lines[n];\n  }\n\n  // Get the part of a document between two positions, as an array of\n  // strings.\n  function getBetween(doc, start, end) {\n    var out = [], n = start.line;\n    doc.iter(start.line, end.line + 1, function(line) {\n      var text = line.text;\n      if (n == end.line) text = text.slice(0, end.ch);\n      if (n == start.line) text = text.slice(start.ch);\n      out.push(text);\n      ++n;\n    });\n    return out;\n  }\n  // Get the lines between from and to, as array of strings.\n  function getLines(doc, from, to) {\n    var out = [];\n    doc.iter(from, to, function(line) { out.push(line.text); });\n    return out;\n  }\n\n  // Update the height of a line, propagating the height change\n  // upwards to parent nodes.\n  function updateLineHeight(line, height) {\n    var diff = height - line.height;\n    if (diff) for (var n = line; n; n = n.parent) n.height += diff;\n  }\n\n  // Given a line object, find its line number by walking up through\n  // its parent links.\n  function lineNo(line) {\n    if (line.parent == null) return null;\n    var cur = line.parent, no = indexOf(cur.lines, line);\n    for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) {\n      for (var i = 0;; ++i) {\n        if (chunk.children[i] == cur) break;\n        no += chunk.children[i].chunkSize();\n      }\n    }\n    return no + cur.first;\n  }\n\n  // Find the line at the given vertical position, using the height\n  // information in the document tree.\n  function lineAtHeight(chunk, h) {\n    var n = chunk.first;\n    outer: do {\n      for (var i = 0; i < chunk.children.length; ++i) {\n        var child = chunk.children[i], ch = child.height;\n        if (h < ch) { chunk = child; continue outer; }\n        h -= ch;\n        n += child.chunkSize();\n      }\n      return n;\n    } while (!chunk.lines);\n    for (var i = 0; i < chunk.lines.length; ++i) {\n      var line = chunk.lines[i], lh = line.height;\n      if (h < lh) break;\n      h -= lh;\n    }\n    return n + i;\n  }\n\n\n  // Find the height above the given line.\n  function heightAtLine(lineObj) {\n    lineObj = visualLine(lineObj);\n\n    var h = 0, chunk = lineObj.parent;\n    for (var i = 0; i < chunk.lines.length; ++i) {\n      var line = chunk.lines[i];\n      if (line == lineObj) break;\n      else h += line.height;\n    }\n    for (var p = chunk.parent; p; chunk = p, p = chunk.parent) {\n      for (var i = 0; i < p.children.length; ++i) {\n        var cur = p.children[i];\n        if (cur == chunk) break;\n        else h += cur.height;\n      }\n    }\n    return h;\n  }\n\n  // Get the bidi ordering for the given line (and cache it). Returns\n  // false for lines that are fully left-to-right, and an array of\n  // BidiSpan objects otherwise.\n  function getOrder(line) {\n    var order = line.order;\n    if (order == null) order = line.order = bidiOrdering(line.text);\n    return order;\n  }\n\n  // HISTORY\n\n  function History(startGen) {\n    // Arrays of change events and selections. Doing something adds an\n    // event to done and clears undo. Undoing moves events from done\n    // to undone, redoing moves them in the other direction.\n    this.done = []; this.undone = [];\n    this.undoDepth = Infinity;\n    // Used to track when changes can be merged into a single undo\n    // event\n    this.lastModTime = this.lastSelTime = 0;\n    this.lastOp = this.lastSelOp = null;\n    this.lastOrigin = this.lastSelOrigin = null;\n    // Used by the isClean() method\n    this.generation = this.maxGeneration = startGen || 1;\n  }\n\n  // Create a history change event from an updateDoc-style change\n  // object.\n  function historyChangeFromChange(doc, change) {\n    var histChange = {from: copyPos(change.from), to: changeEnd(change), text: getBetween(doc, change.from, change.to)};\n    attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);\n    linkedDocs(doc, function(doc) {attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);}, true);\n    return histChange;\n  }\n\n  // Pop all selection events off the end of a history array. Stop at\n  // a change event.\n  function clearSelectionEvents(array) {\n    while (array.length) {\n      var last = lst(array);\n      if (last.ranges) array.pop();\n      else break;\n    }\n  }\n\n  // Find the top change event in the history. Pop off selection\n  // events that are in the way.\n  function lastChangeEvent(hist, force) {\n    if (force) {\n      clearSelectionEvents(hist.done);\n      return lst(hist.done);\n    } else if (hist.done.length && !lst(hist.done).ranges) {\n      return lst(hist.done);\n    } else if (hist.done.length > 1 && !hist.done[hist.done.length - 2].ranges) {\n      hist.done.pop();\n      return lst(hist.done);\n    }\n  }\n\n  // Register a change in the history. Merges changes that are within\n  // a single operation, ore are close together with an origin that\n  // allows merging (starting with \"+\") into a single event.\n  function addChangeToHistory(doc, change, selAfter, opId) {\n    var hist = doc.history;\n    hist.undone.length = 0;\n    var time = +new Date, cur;\n\n    if ((hist.lastOp == opId ||\n         hist.lastOrigin == change.origin && change.origin &&\n         ((change.origin.charAt(0) == \"+\" && doc.cm && hist.lastModTime > time - doc.cm.options.historyEventDelay) ||\n          change.origin.charAt(0) == \"*\")) &&\n        (cur = lastChangeEvent(hist, hist.lastOp == opId))) {\n      // Merge this change into the last event\n      var last = lst(cur.changes);\n      if (cmp(change.from, change.to) == 0 && cmp(change.from, last.to) == 0) {\n        // Optimized case for simple insertion -- don't want to add\n        // new changesets for every character typed\n        last.to = changeEnd(change);\n      } else {\n        // Add new sub-event\n        cur.changes.push(historyChangeFromChange(doc, change));\n      }\n    } else {\n      // Can not be merged, start a new event.\n      var before = lst(hist.done);\n      if (!before || !before.ranges)\n        pushSelectionToHistory(doc.sel, hist.done);\n      cur = {changes: [historyChangeFromChange(doc, change)],\n             generation: hist.generation};\n      hist.done.push(cur);\n      while (hist.done.length > hist.undoDepth) {\n        hist.done.shift();\n        if (!hist.done[0].ranges) hist.done.shift();\n      }\n    }\n    hist.done.push(selAfter);\n    hist.generation = ++hist.maxGeneration;\n    hist.lastModTime = hist.lastSelTime = time;\n    hist.lastOp = hist.lastSelOp = opId;\n    hist.lastOrigin = hist.lastSelOrigin = change.origin;\n\n    if (!last) signal(doc, \"historyAdded\");\n  }\n\n  function selectionEventCanBeMerged(doc, origin, prev, sel) {\n    var ch = origin.charAt(0);\n    return ch == \"*\" ||\n      ch == \"+\" &&\n      prev.ranges.length == sel.ranges.length &&\n      prev.somethingSelected() == sel.somethingSelected() &&\n      new Date - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500);\n  }\n\n  // Called whenever the selection changes, sets the new selection as\n  // the pending selection in the history, and pushes the old pending\n  // selection into the 'done' array when it was significantly\n  // different (in number of selected ranges, emptiness, or time).\n  function addSelectionToHistory(doc, sel, opId, options) {\n    var hist = doc.history, origin = options && options.origin;\n\n    // A new event is started when the previous origin does not match\n    // the current, or the origins don't allow matching. Origins\n    // starting with * are always merged, those starting with + are\n    // merged when similar and close together in time.\n    if (opId == hist.lastSelOp ||\n        (origin && hist.lastSelOrigin == origin &&\n         (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin ||\n          selectionEventCanBeMerged(doc, origin, lst(hist.done), sel))))\n      hist.done[hist.done.length - 1] = sel;\n    else\n      pushSelectionToHistory(sel, hist.done);\n\n    hist.lastSelTime = +new Date;\n    hist.lastSelOrigin = origin;\n    hist.lastSelOp = opId;\n    if (options && options.clearRedo !== false)\n      clearSelectionEvents(hist.undone);\n  }\n\n  function pushSelectionToHistory(sel, dest) {\n    var top = lst(dest);\n    if (!(top && top.ranges && top.equals(sel)))\n      dest.push(sel);\n  }\n\n  // Used to store marked span information in the history.\n  function attachLocalSpans(doc, change, from, to) {\n    var existing = change[\"spans_\" + doc.id], n = 0;\n    doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), function(line) {\n      if (line.markedSpans)\n        (existing || (existing = change[\"spans_\" + doc.id] = {}))[n] = line.markedSpans;\n      ++n;\n    });\n  }\n\n  // When un/re-doing restores text containing marked spans, those\n  // that have been explicitly cleared should not be restored.\n  function removeClearedSpans(spans) {\n    if (!spans) return null;\n    for (var i = 0, out; i < spans.length; ++i) {\n      if (spans[i].marker.explicitlyCleared) { if (!out) out = spans.slice(0, i); }\n      else if (out) out.push(spans[i]);\n    }\n    return !out ? spans : out.length ? out : null;\n  }\n\n  // Retrieve and filter the old marked spans stored in a change event.\n  function getOldSpans(doc, change) {\n    var found = change[\"spans_\" + doc.id];\n    if (!found) return null;\n    for (var i = 0, nw = []; i < change.text.length; ++i)\n      nw.push(removeClearedSpans(found[i]));\n    return nw;\n  }\n\n  // Used both to provide a JSON-safe object in .getHistory, and, when\n  // detaching a document, to split the history in two\n  function copyHistoryArray(events, newGroup, instantiateSel) {\n    for (var i = 0, copy = []; i < events.length; ++i) {\n      var event = events[i];\n      if (event.ranges) {\n        copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event);\n        continue;\n      }\n      var changes = event.changes, newChanges = [];\n      copy.push({changes: newChanges});\n      for (var j = 0; j < changes.length; ++j) {\n        var change = changes[j], m;\n        newChanges.push({from: change.from, to: change.to, text: change.text});\n        if (newGroup) for (var prop in change) if (m = prop.match(/^spans_(\\d+)$/)) {\n          if (indexOf(newGroup, Number(m[1])) > -1) {\n            lst(newChanges)[prop] = change[prop];\n            delete change[prop];\n          }\n        }\n      }\n    }\n    return copy;\n  }\n\n  // Rebasing/resetting history to deal with externally-sourced changes\n\n  function rebaseHistSelSingle(pos, from, to, diff) {\n    if (to < pos.line) {\n      pos.line += diff;\n    } else if (from < pos.line) {\n      pos.line = from;\n      pos.ch = 0;\n    }\n  }\n\n  // Tries to rebase an array of history events given a change in the\n  // document. If the change touches the same lines as the event, the\n  // event, and everything 'behind' it, is discarded. If the change is\n  // before the event, the event's positions are updated. Uses a\n  // copy-on-write scheme for the positions, to avoid having to\n  // reallocate them all on every rebase, but also avoid problems with\n  // shared position objects being unsafely updated.\n  function rebaseHistArray(array, from, to, diff) {\n    for (var i = 0; i < array.length; ++i) {\n      var sub = array[i], ok = true;\n      if (sub.ranges) {\n        if (!sub.copied) { sub = array[i] = sub.deepCopy(); sub.copied = true; }\n        for (var j = 0; j < sub.ranges.length; j++) {\n          rebaseHistSelSingle(sub.ranges[j].anchor, from, to, diff);\n          rebaseHistSelSingle(sub.ranges[j].head, from, to, diff);\n        }\n        continue;\n      }\n      for (var j = 0; j < sub.changes.length; ++j) {\n        var cur = sub.changes[j];\n        if (to < cur.from.line) {\n          cur.from = Pos(cur.from.line + diff, cur.from.ch);\n          cur.to = Pos(cur.to.line + diff, cur.to.ch);\n        } else if (from <= cur.to.line) {\n          ok = false;\n          break;\n        }\n      }\n      if (!ok) {\n        array.splice(0, i + 1);\n        i = 0;\n      }\n    }\n  }\n\n  function rebaseHist(hist, change) {\n    var from = change.from.line, to = change.to.line, diff = change.text.length - (to - from) - 1;\n    rebaseHistArray(hist.done, from, to, diff);\n    rebaseHistArray(hist.undone, from, to, diff);\n  }\n\n  // EVENT UTILITIES\n\n  // Due to the fact that we still support jurassic IE versions, some\n  // compatibility wrappers are needed.\n\n  var e_preventDefault = CodeMirror.e_preventDefault = function(e) {\n    if (e.preventDefault) e.preventDefault();\n    else e.returnValue = false;\n  };\n  var e_stopPropagation = CodeMirror.e_stopPropagation = function(e) {\n    if (e.stopPropagation) e.stopPropagation();\n    else e.cancelBubble = true;\n  };\n  function e_defaultPrevented(e) {\n    return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false;\n  }\n  var e_stop = CodeMirror.e_stop = function(e) {e_preventDefault(e); e_stopPropagation(e);};\n\n  function e_target(e) {return e.target || e.srcElement;}\n  function e_button(e) {\n    var b = e.which;\n    if (b == null) {\n      if (e.button & 1) b = 1;\n      else if (e.button & 2) b = 3;\n      else if (e.button & 4) b = 2;\n    }\n    if (mac && e.ctrlKey && b == 1) b = 3;\n    return b;\n  }\n\n  // EVENT HANDLING\n\n  // Lightweight event framework. on/off also work on DOM nodes,\n  // registering native DOM handlers.\n\n  var on = CodeMirror.on = function(emitter, type, f) {\n    if (emitter.addEventListener)\n      emitter.addEventListener(type, f, false);\n    else if (emitter.attachEvent)\n      emitter.attachEvent(\"on\" + type, f);\n    else {\n      var map = emitter._handlers || (emitter._handlers = {});\n      var arr = map[type] || (map[type] = []);\n      arr.push(f);\n    }\n  };\n\n  var off = CodeMirror.off = function(emitter, type, f) {\n    if (emitter.removeEventListener)\n      emitter.removeEventListener(type, f, false);\n    else if (emitter.detachEvent)\n      emitter.detachEvent(\"on\" + type, f);\n    else {\n      var arr = emitter._handlers && emitter._handlers[type];\n      if (!arr) return;\n      for (var i = 0; i < arr.length; ++i)\n        if (arr[i] == f) { arr.splice(i, 1); break; }\n    }\n  };\n\n  var signal = CodeMirror.signal = function(emitter, type /*, values...*/) {\n    var arr = emitter._handlers && emitter._handlers[type];\n    if (!arr) return;\n    var args = Array.prototype.slice.call(arguments, 2);\n    for (var i = 0; i < arr.length; ++i) arr[i].apply(null, args);\n  };\n\n  var orphanDelayedCallbacks = null;\n\n  // Often, we want to signal events at a point where we are in the\n  // middle of some work, but don't want the handler to start calling\n  // other methods on the editor, which might be in an inconsistent\n  // state or simply not expect any other events to happen.\n  // signalLater looks whether there are any handlers, and schedules\n  // them to be executed when the last operation ends, or, if no\n  // operation is active, when a timeout fires.\n  function signalLater(emitter, type /*, values...*/) {\n    var arr = emitter._handlers && emitter._handlers[type];\n    if (!arr) return;\n    var args = Array.prototype.slice.call(arguments, 2), list;\n    if (operationGroup) {\n      list = operationGroup.delayedCallbacks;\n    } else if (orphanDelayedCallbacks) {\n      list = orphanDelayedCallbacks;\n    } else {\n      list = orphanDelayedCallbacks = [];\n      setTimeout(fireOrphanDelayed, 0);\n    }\n    function bnd(f) {return function(){f.apply(null, args);};};\n    for (var i = 0; i < arr.length; ++i)\n      list.push(bnd(arr[i]));\n  }\n\n  function fireOrphanDelayed() {\n    var delayed = orphanDelayedCallbacks;\n    orphanDelayedCallbacks = null;\n    for (var i = 0; i < delayed.length; ++i) delayed[i]();\n  }\n\n  // The DOM events that CodeMirror handles can be overridden by\n  // registering a (non-DOM) handler on the editor for the event name,\n  // and preventDefault-ing the event in that handler.\n  function signalDOMEvent(cm, e, override) {\n    signal(cm, override || e.type, cm, e);\n    return e_defaultPrevented(e) || e.codemirrorIgnore;\n  }\n\n  function signalCursorActivity(cm) {\n    var arr = cm._handlers && cm._handlers.cursorActivity;\n    if (!arr) return;\n    var set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []);\n    for (var i = 0; i < arr.length; ++i) if (indexOf(set, arr[i]) == -1)\n      set.push(arr[i]);\n  }\n\n  function hasHandler(emitter, type) {\n    var arr = emitter._handlers && emitter._handlers[type];\n    return arr && arr.length > 0;\n  }\n\n  // Add on and off methods to a constructor's prototype, to make\n  // registering events on such objects more convenient.\n  function eventMixin(ctor) {\n    ctor.prototype.on = function(type, f) {on(this, type, f);};\n    ctor.prototype.off = function(type, f) {off(this, type, f);};\n  }\n\n  // MISC UTILITIES\n\n  // Number of pixels added to scroller and sizer to hide scrollbar\n  var scrollerCutOff = 30;\n\n  // Returned or thrown by various protocols to signal 'I'm not\n  // handling this'.\n  var Pass = CodeMirror.Pass = {toString: function(){return \"CodeMirror.Pass\";}};\n\n  // Reused option objects for setSelection & friends\n  var sel_dontScroll = {scroll: false}, sel_mouse = {origin: \"*mouse\"}, sel_move = {origin: \"+move\"};\n\n  function Delayed() {this.id = null;}\n  Delayed.prototype.set = function(ms, f) {\n    clearTimeout(this.id);\n    this.id = setTimeout(f, ms);\n  };\n\n  // Counts the column offset in a string, taking tabs into account.\n  // Used mostly to find indentation.\n  var countColumn = CodeMirror.countColumn = function(string, end, tabSize, startIndex, startValue) {\n    if (end == null) {\n      end = string.search(/[^\\s\\u00a0]/);\n      if (end == -1) end = string.length;\n    }\n    for (var i = startIndex || 0, n = startValue || 0;;) {\n      var nextTab = string.indexOf(\"\\t\", i);\n      if (nextTab < 0 || nextTab >= end)\n        return n + (end - i);\n      n += nextTab - i;\n      n += tabSize - (n % tabSize);\n      i = nextTab + 1;\n    }\n  };\n\n  // The inverse of countColumn -- find the offset that corresponds to\n  // a particular column.\n  function findColumn(string, goal, tabSize) {\n    for (var pos = 0, col = 0;;) {\n      var nextTab = string.indexOf(\"\\t\", pos);\n      if (nextTab == -1) nextTab = string.length;\n      var skipped = nextTab - pos;\n      if (nextTab == string.length || col + skipped >= goal)\n        return pos + Math.min(skipped, goal - col);\n      col += nextTab - pos;\n      col += tabSize - (col % tabSize);\n      pos = nextTab + 1;\n      if (col >= goal) return pos;\n    }\n  }\n\n  var spaceStrs = [\"\"];\n  function spaceStr(n) {\n    while (spaceStrs.length <= n)\n      spaceStrs.push(lst(spaceStrs) + \" \");\n    return spaceStrs[n];\n  }\n\n  function lst(arr) { return arr[arr.length-1]; }\n\n  var selectInput = function(node) { node.select(); };\n  if (ios) // Mobile Safari apparently has a bug where select() is broken.\n    selectInput = function(node) { node.selectionStart = 0; node.selectionEnd = node.value.length; };\n  else if (ie) // Suppress mysterious IE10 errors\n    selectInput = function(node) { try { node.select(); } catch(_e) {} };\n\n  function indexOf(array, elt) {\n    for (var i = 0; i < array.length; ++i)\n      if (array[i] == elt) return i;\n    return -1;\n  }\n  if ([].indexOf) indexOf = function(array, elt) { return array.indexOf(elt); };\n  function map(array, f) {\n    var out = [];\n    for (var i = 0; i < array.length; i++) out[i] = f(array[i], i);\n    return out;\n  }\n  if ([].map) map = function(array, f) { return array.map(f); };\n\n  function createObj(base, props) {\n    var inst;\n    if (Object.create) {\n      inst = Object.create(base);\n    } else {\n      var ctor = function() {};\n      ctor.prototype = base;\n      inst = new ctor();\n    }\n    if (props) copyObj(props, inst);\n    return inst;\n  };\n\n  function copyObj(obj, target, overwrite) {\n    if (!target) target = {};\n    for (var prop in obj)\n      if (obj.hasOwnProperty(prop) && (overwrite !== false || !target.hasOwnProperty(prop)))\n        target[prop] = obj[prop];\n    return target;\n  }\n\n  function bind(f) {\n    var args = Array.prototype.slice.call(arguments, 1);\n    return function(){return f.apply(null, args);};\n  }\n\n  var nonASCIISingleCaseWordChar = /[\\u00df\\u0590-\\u05f4\\u0600-\\u06ff\\u3040-\\u309f\\u30a0-\\u30ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\uac00-\\ud7af]/;\n  var isWordCharBasic = CodeMirror.isWordChar = function(ch) {\n    return /\\w/.test(ch) || ch > \"\\x80\" &&\n      (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch));\n  };\n  function isWordChar(ch, helper) {\n    if (!helper) return isWordCharBasic(ch);\n    if (helper.source.indexOf(\"\\\\w\") > -1 && isWordCharBasic(ch)) return true;\n    return helper.test(ch);\n  }\n\n  function isEmpty(obj) {\n    for (var n in obj) if (obj.hasOwnProperty(n) && obj[n]) return false;\n    return true;\n  }\n\n  // Extending unicode characters. A series of a non-extending char +\n  // any number of extending chars is treated as a single unit as far\n  // as editing and measuring is concerned. This is not fully correct,\n  // since some scripts/fonts/browsers also treat other configurations\n  // of code points as a group.\n  var extendingChars = /[\\u0300-\\u036f\\u0483-\\u0489\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u065e\\u0670\\u06d6-\\u06dc\\u06de-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07eb-\\u07f3\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0900-\\u0902\\u093c\\u0941-\\u0948\\u094d\\u0951-\\u0955\\u0962\\u0963\\u0981\\u09bc\\u09be\\u09c1-\\u09c4\\u09cd\\u09d7\\u09e2\\u09e3\\u0a01\\u0a02\\u0a3c\\u0a41\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a70\\u0a71\\u0a75\\u0a81\\u0a82\\u0abc\\u0ac1-\\u0ac5\\u0ac7\\u0ac8\\u0acd\\u0ae2\\u0ae3\\u0b01\\u0b3c\\u0b3e\\u0b3f\\u0b41-\\u0b44\\u0b4d\\u0b56\\u0b57\\u0b62\\u0b63\\u0b82\\u0bbe\\u0bc0\\u0bcd\\u0bd7\\u0c3e-\\u0c40\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0cbc\\u0cbf\\u0cc2\\u0cc6\\u0ccc\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0d3e\\u0d41-\\u0d44\\u0d4d\\u0d57\\u0d62\\u0d63\\u0dca\\u0dcf\\u0dd2-\\u0dd4\\u0dd6\\u0ddf\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0eb1\\u0eb4-\\u0eb9\\u0ebb\\u0ebc\\u0ec8-\\u0ecd\\u0f18\\u0f19\\u0f35\\u0f37\\u0f39\\u0f71-\\u0f7e\\u0f80-\\u0f84\\u0f86\\u0f87\\u0f90-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102d-\\u1030\\u1032-\\u1037\\u1039\\u103a\\u103d\\u103e\\u1058\\u1059\\u105e-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108d\\u109d\\u135f\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b7-\\u17bd\\u17c6\\u17c9-\\u17d3\\u17dd\\u180b-\\u180d\\u18a9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193b\\u1a17\\u1a18\\u1a56\\u1a58-\\u1a5e\\u1a60\\u1a62\\u1a65-\\u1a6c\\u1a73-\\u1a7c\\u1a7f\\u1b00-\\u1b03\\u1b34\\u1b36-\\u1b3a\\u1b3c\\u1b42\\u1b6b-\\u1b73\\u1b80\\u1b81\\u1ba2-\\u1ba5\\u1ba8\\u1ba9\\u1c2c-\\u1c33\\u1c36\\u1c37\\u1cd0-\\u1cd2\\u1cd4-\\u1ce0\\u1ce2-\\u1ce8\\u1ced\\u1dc0-\\u1de6\\u1dfd-\\u1dff\\u200c\\u200d\\u20d0-\\u20f0\\u2cef-\\u2cf1\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua66f-\\ua672\\ua67c\\ua67d\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua825\\ua826\\ua8c4\\ua8e0-\\ua8f1\\ua926-\\ua92d\\ua947-\\ua951\\ua980-\\ua982\\ua9b3\\ua9b6-\\ua9b9\\ua9bc\\uaa29-\\uaa2e\\uaa31\\uaa32\\uaa35\\uaa36\\uaa43\\uaa4c\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uabe5\\uabe8\\uabed\\udc00-\\udfff\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe26\\uff9e\\uff9f]/;\n  function isExtendingChar(ch) { return ch.charCodeAt(0) >= 768 && extendingChars.test(ch); }\n\n  // DOM UTILITIES\n\n  function elt(tag, content, className, style) {\n    var e = document.createElement(tag);\n    if (className) e.className = className;\n    if (style) e.style.cssText = style;\n    if (typeof content == \"string\") e.appendChild(document.createTextNode(content));\n    else if (content) for (var i = 0; i < content.length; ++i) e.appendChild(content[i]);\n    return e;\n  }\n\n  var range;\n  if (document.createRange) range = function(node, start, end) {\n    var r = document.createRange();\n    r.setEnd(node, end);\n    r.setStart(node, start);\n    return r;\n  };\n  else range = function(node, start, end) {\n    var r = document.body.createTextRange();\n    r.moveToElementText(node.parentNode);\n    r.collapse(true);\n    r.moveEnd(\"character\", end);\n    r.moveStart(\"character\", start);\n    return r;\n  };\n\n  function removeChildren(e) {\n    for (var count = e.childNodes.length; count > 0; --count)\n      e.removeChild(e.firstChild);\n    return e;\n  }\n\n  function removeChildrenAndAdd(parent, e) {\n    return removeChildren(parent).appendChild(e);\n  }\n\n  function contains(parent, child) {\n    if (parent.contains)\n      return parent.contains(child);\n    while (child = child.parentNode)\n      if (child == parent) return true;\n  }\n\n  function activeElt() { return document.activeElement; }\n  // Older versions of IE throws unspecified error when touching\n  // document.activeElement in some cases (during loading, in iframe)\n  if (ie && ie_version < 11) activeElt = function() {\n    try { return document.activeElement; }\n    catch(e) { return document.body; }\n  };\n\n  function classTest(cls) { return new RegExp(\"\\\\b\" + cls + \"\\\\b\\\\s*\"); }\n  function rmClass(node, cls) {\n    var test = classTest(cls);\n    if (test.test(node.className)) node.className = node.className.replace(test, \"\");\n  }\n  function addClass(node, cls) {\n    if (!classTest(cls).test(node.className)) node.className += \" \" + cls;\n  }\n  function joinClasses(a, b) {\n    var as = a.split(\" \");\n    for (var i = 0; i < as.length; i++)\n      if (as[i] && !classTest(as[i]).test(b)) b += \" \" + as[i];\n    return b;\n  }\n\n  // WINDOW-WIDE EVENTS\n\n  // These must be handled carefully, because naively registering a\n  // handler for each editor will cause the editors to never be\n  // garbage collected.\n\n  function forEachCodeMirror(f) {\n    if (!document.body.getElementsByClassName) return;\n    var byClass = document.body.getElementsByClassName(\"CodeMirror\");\n    for (var i = 0; i < byClass.length; i++) {\n      var cm = byClass[i].CodeMirror;\n      if (cm) f(cm);\n    }\n  }\n\n  var globalsRegistered = false;\n  function ensureGlobalHandlers() {\n    if (globalsRegistered) return;\n    registerGlobalHandlers();\n    globalsRegistered = true;\n  }\n  function registerGlobalHandlers() {\n    // When the window resizes, we need to refresh active editors.\n    var resizeTimer;\n    on(window, \"resize\", function() {\n      if (resizeTimer == null) resizeTimer = setTimeout(function() {\n        resizeTimer = null;\n        knownScrollbarWidth = null;\n        forEachCodeMirror(onResize);\n      }, 100);\n    });\n    // When the window loses focus, we want to show the editor as blurred\n    on(window, \"blur\", function() {\n      forEachCodeMirror(onBlur);\n    });\n  }\n\n  // FEATURE DETECTION\n\n  // Detect drag-and-drop\n  var dragAndDrop = function() {\n    // There is *some* kind of drag-and-drop support in IE6-8, but I\n    // couldn't get it to work yet.\n    if (ie && ie_version < 9) return false;\n    var div = elt('div');\n    return \"draggable\" in div || \"dragDrop\" in div;\n  }();\n\n  var knownScrollbarWidth;\n  function scrollbarWidth(measure) {\n    if (knownScrollbarWidth != null) return knownScrollbarWidth;\n    var test = elt(\"div\", null, null, \"width: 50px; height: 50px; overflow-x: scroll\");\n    removeChildrenAndAdd(measure, test);\n    if (test.offsetWidth)\n      knownScrollbarWidth = test.offsetHeight - test.clientHeight;\n    return knownScrollbarWidth || 0;\n  }\n\n  var zwspSupported;\n  function zeroWidthElement(measure) {\n    if (zwspSupported == null) {\n      var test = elt(\"span\", \"\\u200b\");\n      removeChildrenAndAdd(measure, elt(\"span\", [test, document.createTextNode(\"x\")]));\n      if (measure.firstChild.offsetHeight != 0)\n        zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !(ie && ie_version < 8);\n    }\n    if (zwspSupported) return elt(\"span\", \"\\u200b\");\n    else return elt(\"span\", \"\\u00a0\", null, \"display: inline-block; width: 1px; margin-right: -1px\");\n  }\n\n  // Feature-detect IE's crummy client rect reporting for bidi text\n  var badBidiRects;\n  function hasBadBidiRects(measure) {\n    if (badBidiRects != null) return badBidiRects;\n    var txt = removeChildrenAndAdd(measure, document.createTextNode(\"A\\u062eA\"));\n    var r0 = range(txt, 0, 1).getBoundingClientRect();\n    if (!r0 || r0.left == r0.right) return false; // Safari returns null in some cases (#2780)\n    var r1 = range(txt, 1, 2).getBoundingClientRect();\n    return badBidiRects = (r1.right - r0.right < 3);\n  }\n\n  // See if \"\".split is the broken IE version, if so, provide an\n  // alternative way to split lines.\n  var splitLines = CodeMirror.splitLines = \"\\n\\nb\".split(/\\n/).length != 3 ? function(string) {\n    var pos = 0, result = [], l = string.length;\n    while (pos <= l) {\n      var nl = string.indexOf(\"\\n\", pos);\n      if (nl == -1) nl = string.length;\n      var line = string.slice(pos, string.charAt(nl - 1) == \"\\r\" ? nl - 1 : nl);\n      var rt = line.indexOf(\"\\r\");\n      if (rt != -1) {\n        result.push(line.slice(0, rt));\n        pos += rt + 1;\n      } else {\n        result.push(line);\n        pos = nl + 1;\n      }\n    }\n    return result;\n  } : function(string){return string.split(/\\r\\n?|\\n/);};\n\n  var hasSelection = window.getSelection ? function(te) {\n    try { return te.selectionStart != te.selectionEnd; }\n    catch(e) { return false; }\n  } : function(te) {\n    try {var range = te.ownerDocument.selection.createRange();}\n    catch(e) {}\n    if (!range || range.parentElement() != te) return false;\n    return range.compareEndPoints(\"StartToEnd\", range) != 0;\n  };\n\n  var hasCopyEvent = (function() {\n    var e = elt(\"div\");\n    if (\"oncopy\" in e) return true;\n    e.setAttribute(\"oncopy\", \"return;\");\n    return typeof e.oncopy == \"function\";\n  })();\n\n  var badZoomedRects = null;\n  function hasBadZoomedRects(measure) {\n    if (badZoomedRects != null) return badZoomedRects;\n    var node = removeChildrenAndAdd(measure, elt(\"span\", \"x\"));\n    var normal = node.getBoundingClientRect();\n    var fromRange = range(node, 0, 1).getBoundingClientRect();\n    return badZoomedRects = Math.abs(normal.left - fromRange.left) > 1;\n  }\n\n  // KEY NAMES\n\n  var keyNames = {3: \"Enter\", 8: \"Backspace\", 9: \"Tab\", 13: \"Enter\", 16: \"Shift\", 17: \"Ctrl\", 18: \"Alt\",\n                  19: \"Pause\", 20: \"CapsLock\", 27: \"Esc\", 32: \"Space\", 33: \"PageUp\", 34: \"PageDown\", 35: \"End\",\n                  36: \"Home\", 37: \"Left\", 38: \"Up\", 39: \"Right\", 40: \"Down\", 44: \"PrintScrn\", 45: \"Insert\",\n                  46: \"Delete\", 59: \";\", 61: \"=\", 91: \"Mod\", 92: \"Mod\", 93: \"Mod\", 107: \"=\", 109: \"-\", 127: \"Delete\",\n                  173: \"-\", 186: \";\", 187: \"=\", 188: \",\", 189: \"-\", 190: \".\", 191: \"/\", 192: \"`\", 219: \"[\", 220: \"\\\\\",\n                  221: \"]\", 222: \"'\", 63232: \"Up\", 63233: \"Down\", 63234: \"Left\", 63235: \"Right\", 63272: \"Delete\",\n                  63273: \"Home\", 63275: \"End\", 63276: \"PageUp\", 63277: \"PageDown\", 63302: \"Insert\"};\n  CodeMirror.keyNames = keyNames;\n  (function() {\n    // Number keys\n    for (var i = 0; i < 10; i++) keyNames[i + 48] = keyNames[i + 96] = String(i);\n    // Alphabetic keys\n    for (var i = 65; i <= 90; i++) keyNames[i] = String.fromCharCode(i);\n    // Function keys\n    for (var i = 1; i <= 12; i++) keyNames[i + 111] = keyNames[i + 63235] = \"F\" + i;\n  })();\n\n  // BIDI HELPERS\n\n  function iterateBidiSections(order, from, to, f) {\n    if (!order) return f(from, to, \"ltr\");\n    var found = false;\n    for (var i = 0; i < order.length; ++i) {\n      var part = order[i];\n      if (part.from < to && part.to > from || from == to && part.to == from) {\n        f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? \"rtl\" : \"ltr\");\n        found = true;\n      }\n    }\n    if (!found) f(from, to, \"ltr\");\n  }\n\n  function bidiLeft(part) { return part.level % 2 ? part.to : part.from; }\n  function bidiRight(part) { return part.level % 2 ? part.from : part.to; }\n\n  function lineLeft(line) { var order = getOrder(line); return order ? bidiLeft(order[0]) : 0; }\n  function lineRight(line) {\n    var order = getOrder(line);\n    if (!order) return line.text.length;\n    return bidiRight(lst(order));\n  }\n\n  function lineStart(cm, lineN) {\n    var line = getLine(cm.doc, lineN);\n    var visual = visualLine(line);\n    if (visual != line) lineN = lineNo(visual);\n    var order = getOrder(visual);\n    var ch = !order ? 0 : order[0].level % 2 ? lineRight(visual) : lineLeft(visual);\n    return Pos(lineN, ch);\n  }\n  function lineEnd(cm, lineN) {\n    var merged, line = getLine(cm.doc, lineN);\n    while (merged = collapsedSpanAtEnd(line)) {\n      line = merged.find(1, true).line;\n      lineN = null;\n    }\n    var order = getOrder(line);\n    var ch = !order ? line.text.length : order[0].level % 2 ? lineLeft(line) : lineRight(line);\n    return Pos(lineN == null ? lineNo(line) : lineN, ch);\n  }\n  function lineStartSmart(cm, pos) {\n    var start = lineStart(cm, pos.line);\n    var line = getLine(cm.doc, start.line);\n    var order = getOrder(line);\n    if (!order || order[0].level == 0) {\n      var firstNonWS = Math.max(0, line.text.search(/\\S/));\n      var inWS = pos.line == start.line && pos.ch <= firstNonWS && pos.ch;\n      return Pos(start.line, inWS ? 0 : firstNonWS);\n    }\n    return start;\n  }\n\n  function compareBidiLevel(order, a, b) {\n    var linedir = order[0].level;\n    if (a == linedir) return true;\n    if (b == linedir) return false;\n    return a < b;\n  }\n  var bidiOther;\n  function getBidiPartAt(order, pos) {\n    bidiOther = null;\n    for (var i = 0, found; i < order.length; ++i) {\n      var cur = order[i];\n      if (cur.from < pos && cur.to > pos) return i;\n      if ((cur.from == pos || cur.to == pos)) {\n        if (found == null) {\n          found = i;\n        } else if (compareBidiLevel(order, cur.level, order[found].level)) {\n          if (cur.from != cur.to) bidiOther = found;\n          return i;\n        } else {\n          if (cur.from != cur.to) bidiOther = i;\n          return found;\n        }\n      }\n    }\n    return found;\n  }\n\n  function moveInLine(line, pos, dir, byUnit) {\n    if (!byUnit) return pos + dir;\n    do pos += dir;\n    while (pos > 0 && isExtendingChar(line.text.charAt(pos)));\n    return pos;\n  }\n\n  // This is needed in order to move 'visually' through bi-directional\n  // text -- i.e., pressing left should make the cursor go left, even\n  // when in RTL text. The tricky part is the 'jumps', where RTL and\n  // LTR text touch each other. This often requires the cursor offset\n  // to move more than one unit, in order to visually move one unit.\n  function moveVisually(line, start, dir, byUnit) {\n    var bidi = getOrder(line);\n    if (!bidi) return moveLogically(line, start, dir, byUnit);\n    var pos = getBidiPartAt(bidi, start), part = bidi[pos];\n    var target = moveInLine(line, start, part.level % 2 ? -dir : dir, byUnit);\n\n    for (;;) {\n      if (target > part.from && target < part.to) return target;\n      if (target == part.from || target == part.to) {\n        if (getBidiPartAt(bidi, target) == pos) return target;\n        part = bidi[pos += dir];\n        return (dir > 0) == part.level % 2 ? part.to : part.from;\n      } else {\n        part = bidi[pos += dir];\n        if (!part) return null;\n        if ((dir > 0) == part.level % 2)\n          target = moveInLine(line, part.to, -1, byUnit);\n        else\n          target = moveInLine(line, part.from, 1, byUnit);\n      }\n    }\n  }\n\n  function moveLogically(line, start, dir, byUnit) {\n    var target = start + dir;\n    if (byUnit) while (target > 0 && isExtendingChar(line.text.charAt(target))) target += dir;\n    return target < 0 || target > line.text.length ? null : target;\n  }\n\n  // Bidirectional ordering algorithm\n  // See http://unicode.org/reports/tr9/tr9-13.html for the algorithm\n  // that this (partially) implements.\n\n  // One-char codes used for character types:\n  // L (L):   Left-to-Right\n  // R (R):   Right-to-Left\n  // r (AL):  Right-to-Left Arabic\n  // 1 (EN):  European Number\n  // + (ES):  European Number Separator\n  // % (ET):  European Number Terminator\n  // n (AN):  Arabic Number\n  // , (CS):  Common Number Separator\n  // m (NSM): Non-Spacing Mark\n  // b (BN):  Boundary Neutral\n  // s (B):   Paragraph Separator\n  // t (S):   Segment Separator\n  // w (WS):  Whitespace\n  // N (ON):  Other Neutrals\n\n  // Returns null if characters are ordered as they appear\n  // (left-to-right), or an array of sections ({from, to, level}\n  // objects) in the order in which they occur visually.\n  var bidiOrdering = (function() {\n    // Character types for codepoints 0 to 0xff\n    var lowTypes = \"bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN\";\n    // Character types for codepoints 0x600 to 0x6ff\n    var arabicTypes = \"rrrrrrrrrrrr,rNNmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmrrrrrrrnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmNmmmm\";\n    function charType(code) {\n      if (code <= 0xf7) return lowTypes.charAt(code);\n      else if (0x590 <= code && code <= 0x5f4) return \"R\";\n      else if (0x600 <= code && code <= 0x6ed) return arabicTypes.charAt(code - 0x600);\n      else if (0x6ee <= code && code <= 0x8ac) return \"r\";\n      else if (0x2000 <= code && code <= 0x200b) return \"w\";\n      else if (code == 0x200c) return \"b\";\n      else return \"L\";\n    }\n\n    var bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/;\n    var isNeutral = /[stwN]/, isStrong = /[LRr]/, countsAsLeft = /[Lb1n]/, countsAsNum = /[1n]/;\n    // Browsers seem to always treat the boundaries of block elements as being L.\n    var outerType = \"L\";\n\n    function BidiSpan(level, from, to) {\n      this.level = level;\n      this.from = from; this.to = to;\n    }\n\n    return function(str) {\n      if (!bidiRE.test(str)) return false;\n      var len = str.length, types = [];\n      for (var i = 0, type; i < len; ++i)\n        types.push(type = charType(str.charCodeAt(i)));\n\n      // W1. Examine each non-spacing mark (NSM) in the level run, and\n      // change the type of the NSM to the type of the previous\n      // character. If the NSM is at the start of the level run, it will\n      // get the type of sor.\n      for (var i = 0, prev = outerType; i < len; ++i) {\n        var type = types[i];\n        if (type == \"m\") types[i] = prev;\n        else prev = type;\n      }\n\n      // W2. Search backwards from each instance of a European number\n      // until the first strong type (R, L, AL, or sor) is found. If an\n      // AL is found, change the type of the European number to Arabic\n      // number.\n      // W3. Change all ALs to R.\n      for (var i = 0, cur = outerType; i < len; ++i) {\n        var type = types[i];\n        if (type == \"1\" && cur == \"r\") types[i] = \"n\";\n        else if (isStrong.test(type)) { cur = type; if (type == \"r\") types[i] = \"R\"; }\n      }\n\n      // W4. A single European separator between two European numbers\n      // changes to a European number. A single common separator between\n      // two numbers of the same type changes to that type.\n      for (var i = 1, prev = types[0]; i < len - 1; ++i) {\n        var type = types[i];\n        if (type == \"+\" && prev == \"1\" && types[i+1] == \"1\") types[i] = \"1\";\n        else if (type == \",\" && prev == types[i+1] &&\n                 (prev == \"1\" || prev == \"n\")) types[i] = prev;\n        prev = type;\n      }\n\n      // W5. A sequence of European terminators adjacent to European\n      // numbers changes to all European numbers.\n      // W6. Otherwise, separators and terminators change to Other\n      // Neutral.\n      for (var i = 0; i < len; ++i) {\n        var type = types[i];\n        if (type == \",\") types[i] = \"N\";\n        else if (type == \"%\") {\n          for (var end = i + 1; end < len && types[end] == \"%\"; ++end) {}\n          var replace = (i && types[i-1] == \"!\") || (end < len && types[end] == \"1\") ? \"1\" : \"N\";\n          for (var j = i; j < end; ++j) types[j] = replace;\n          i = end - 1;\n        }\n      }\n\n      // W7. Search backwards from each instance of a European number\n      // until the first strong type (R, L, or sor) is found. If an L is\n      // found, then change the type of the European number to L.\n      for (var i = 0, cur = outerType; i < len; ++i) {\n        var type = types[i];\n        if (cur == \"L\" && type == \"1\") types[i] = \"L\";\n        else if (isStrong.test(type)) cur = type;\n      }\n\n      // N1. A sequence of neutrals takes the direction of the\n      // surrounding strong text if the text on both sides has the same\n      // direction. European and Arabic numbers act as if they were R in\n      // terms of their influence on neutrals. Start-of-level-run (sor)\n      // and end-of-level-run (eor) are used at level run boundaries.\n      // N2. Any remaining neutrals take the embedding direction.\n      for (var i = 0; i < len; ++i) {\n        if (isNeutral.test(types[i])) {\n          for (var end = i + 1; end < len && isNeutral.test(types[end]); ++end) {}\n          var before = (i ? types[i-1] : outerType) == \"L\";\n          var after = (end < len ? types[end] : outerType) == \"L\";\n          var replace = before || after ? \"L\" : \"R\";\n          for (var j = i; j < end; ++j) types[j] = replace;\n          i = end - 1;\n        }\n      }\n\n      // Here we depart from the documented algorithm, in order to avoid\n      // building up an actual levels array. Since there are only three\n      // levels (0, 1, 2) in an implementation that doesn't take\n      // explicit embedding into account, we can build up the order on\n      // the fly, without following the level-based algorithm.\n      var order = [], m;\n      for (var i = 0; i < len;) {\n        if (countsAsLeft.test(types[i])) {\n          var start = i;\n          for (++i; i < len && countsAsLeft.test(types[i]); ++i) {}\n          order.push(new BidiSpan(0, start, i));\n        } else {\n          var pos = i, at = order.length;\n          for (++i; i < len && types[i] != \"L\"; ++i) {}\n          for (var j = pos; j < i;) {\n            if (countsAsNum.test(types[j])) {\n              if (pos < j) order.splice(at, 0, new BidiSpan(1, pos, j));\n              var nstart = j;\n              for (++j; j < i && countsAsNum.test(types[j]); ++j) {}\n              order.splice(at, 0, new BidiSpan(2, nstart, j));\n              pos = j;\n            } else ++j;\n          }\n          if (pos < i) order.splice(at, 0, new BidiSpan(1, pos, i));\n        }\n      }\n      if (order[0].level == 1 && (m = str.match(/^\\s+/))) {\n        order[0].from = m[0].length;\n        order.unshift(new BidiSpan(0, 0, m[0].length));\n      }\n      if (lst(order).level == 1 && (m = str.match(/\\s+$/))) {\n        lst(order).to -= m[0].length;\n        order.push(new BidiSpan(0, len - m[0].length, len));\n      }\n      if (order[0].level != lst(order).level)\n        order.push(new BidiSpan(order[0].level, len, len));\n\n      return order;\n    };\n  })();\n\n  // THE END\n\n  CodeMirror.version = \"4.7.0\";\n\n  return CodeMirror;\n});"
  },
  {
    "path": "public/admin/js/colorpicker/color-picker-active.js",
    "content": "(function ($) {\n \"use strict\";\n \n\t // HEX\n\t\t\t$(\"#hex\").spectrum({\n\t\t\t\tcolor: \"#f00\",\n\t\t\t\tpreferredFormat: \"hex\",\n\t\t\t\tshowInput: true\n\t\t\t});\n\t\t\t// HSL\n\t\t\t$(\"#hsl\").spectrum({\n\t\t\t\tcolor: \"#c34040\",\n\t\t\t\tpreferredFormat: \"hsl\",\n\t\t\t\tshowInput: true\n\t\t\t});\n\t\t\t// RGB\n\t\t\t$(\"#rgb\").spectrum({\n\t\t\t\tcolor: \"#dbc75e\",\n\t\t\t\tpreferredFormat: \"rgb\",\n\t\t\t\tshowInput: true\n\t\t\t});\n\t\t\t// Alpha RGB\n\t\t\t$(\"#a-rgb\").spectrum({\n\t\t\t\tshowAlpha: true,\n\t\t\t\tcolor: \"#3dbb8f\",\n\t\t\t\tpreferredFormat: \"rgb\",\n\t\t\t\tshowInput: true\n\t\t\t});\n\t\t\t// Alpha HSL\n\t\t\t$(\"#a-hsl\").spectrum({\n\t\t\t\tshowAlpha: true,\n\t\t\t\tcolor: \"#8bc177\",\n\t\t\t\tpreferredFormat: \"hsl\",\n\t\t\t\tshowInput: true\n\t\t\t});\n\t\t\t// Palette\n\t\t\t$(\"#palette1\").spectrum({\n\t\t\t\tcolor: \"#9257b4\",\n\t\t\t\tpreferredFormat: \"hex\",\n\t\t\t\tshowInput: true,\n\t\t\t\tshowPalette: true,\n\t\t\t\tpalette: [\n\t\t\t\t\t['#000', '#fff', '#ffebcd'],\n\t\t\t\t\t['#ff8000', '#448026', '#ffffe0']\n\t\t\t\t]\n\t\t\t});\n\t\t\t// Palette only\n\t\t\t$(\"#palette2\").spectrum({\n\t\t\t\tshowPaletteOnly: true,\n\t\t\t\tshowPalette:true,\n\t\t\t\tcolor: '#780707',\n\t\t\t\tpalette: [\n\t\t\t\t\t['#000', '#fff', '#ffebcd','#ff8000', '#448026'],\n\t\t\t\t\t['#ff0000', '#fff700', '#75b274', '#1d31c3', '#9257b4']\n\t\t\t\t]\n\t\t\t});\n\t\t\t// Method \"show\"\n\t\t\t$(\"#hex, #hsl, #rgb, #a-hsl, #a-rgb, #palette1, #palette2\").show();\n\n\n\n\t\n\t\n \n})(jQuery); "
  },
  {
    "path": "public/admin/js/counterup/counterup-active.js",
    "content": "(function ($) {\n \"use strict\";\n\t\t\t/*----------------------------\n\t\t counterUp js active\n\t\t------------------------------ */\n\t\t  $('.counter').counterUp({\n            delay: 10,\n            time: 1000\n        });\t\n \n})(jQuery); "
  },
  {
    "path": "public/admin/js/cropper/cropper-actice.js",
    "content": "(function ($) {\n \"use strict\";\n \n \n\t\tvar $image = $(\".image-crop > img\")\n            $($image).cropper({\n                aspectRatio: 1.618,\n                preview: \".img-preview\",\n                done: function(data) {\n                    // Output the result data for cropping image.\n                }\n            });\n\n            var $inputImage = $(\"#inputImage\");\n            if (window.FileReader) {\n                $inputImage.change(function() {\n                    var fileReader = new FileReader(),\n                            files = this.files,\n                            file;\n\n                    if (!files.length) {\n                        return;\n                    }\n\n                    file = files[0];\n\n                    if (/^image\\/\\w+$/.test(file.type)) {\n                        fileReader.readAsDataURL(file);\n                        fileReader.onload = function () {\n                            $inputImage.val(\"\");\n                            $image.cropper(\"reset\", true).cropper(\"replace\", this.result);\n                        };\n                    } else {\n                        showMessage(\"Please choose an image file.\");\n                    }\n                });\n            } else {\n                $inputImage.addClass(\"hide\");\n            }\n\n            $(\"#download\").on('click', function() {\n                window.open($image.cropper(\"getDataURL\"));\n            });\n\n            $(\"#zoomIn\").on('click', function() {\n                $image.cropper(\"zoom\", 0.1);\n            });\n\n            $(\"#zoomOut\").on('click', function() {\n                $image.cropper(\"zoom\", -0.1);\n            });\n\n            $(\"#rotateLeft\").on('click', function() {\n                $image.cropper(\"rotate\", 45);\n            });\n\n            $(\"#rotateRight\").on('click', function() {\n                $image.cropper(\"rotate\", -45);\n            });\n\n            $(\"#setDrag\").on('click', function() {\n                $image.cropper(\"setDragMode\", \"crop\");\n            });\n\n\t\n\t\n \n})(jQuery); "
  },
  {
    "path": "public/admin/js/data-map/data-maps-active.js",
    "content": "(function ($) {\n \"use strict\";\n\t\n\tvar basic_choropleth = new Datamap({\n\t\t\t  element: document.getElementById(\"basic_choropleth\"),\n\t\t\t  projection: 'mercator',\n\t\t\t  fills: {\n\t\t\t\tdefaultFill: \"#ABDDA4\",\n\t\t\t\tauthorHasTraveledTo: \"#fa0fa0\"\n\t\t\t  },\n\t\t\t  data: {\n\t\t\t\tUSA: { fillKey: \"authorHasTraveledTo\" },\n\t\t\t\tJPN: { fillKey: \"authorHasTraveledTo\" },\n\t\t\t\tITA: { fillKey: \"authorHasTraveledTo\" },\n\t\t\t\tCRI: { fillKey: \"authorHasTraveledTo\" },\n\t\t\t\tKOR: { fillKey: \"authorHasTraveledTo\" },\n\t\t\t\tDEU: { fillKey: \"authorHasTraveledTo\" },\n\t\t\t  }\n\t\t\t});\n\n\t\t\tvar colors = d3.scale.category10();\n\n\t\t\twindow.setInterval(function() {\n\t\t\t  basic_choropleth.updateChoropleth({\n\t\t\t\tUSA: colors(Math.random() * 10),\n\t\t\t\tRUS: colors(Math.random() * 100),\n\t\t\t\tAUS: { fillKey: 'authorHasTraveledTo' },\n\t\t\t\tBRA: colors(Math.random() * 50),\n\t\t\t\tCAN: colors(Math.random() * 50),\n\t\t\t\tZAF: colors(Math.random() * 50),\n\t\t\t\tIND: colors(Math.random() * 50),\n\t\t\t  });\n\t\t\t}, 2000);\n\t\n\t\n        \n\t\n\t\tvar basic = new Datamap({\n                element: document.getElementById(\"basic_map\"),\n                responsive: true,\n                fills: {\n                    defaultFill: \"#DBDAD6\"\n                },\n                geographyConfig: {\n                    highlightFillColor: '#03a9f4',\n                    highlightBorderWidth: 0,\n                },\n            });\n\n            var selected_map = new Datamap({\n                element: document.getElementById(\"selected_map\"),\n                responsive: true,\n                fills: {\n                    defaultFill: \"#DBDAD6\",\n                    active: \"#03a9f4\"\n                },\n                geographyConfig: {\n                    highlightFillColor: '#03a9f4',\n                    highlightBorderWidth: 0,\n                },\n                data: {\n                    USA: { fillKey: \"active\" },\n                    RUS: { fillKey: \"active\" },\n                    DEU: { fillKey: \"active\" },\n                    BRA: { fillKey: \"active\" }\n                }\n            });\n\n            var usa_map = new Datamap({\n                element: document.getElementById(\"usa_map\"),\n                responsive: true,\n                scope: 'usa',\n                fills: {\n                    defaultFill: \"#DBDAD6\",\n                    active: \"#03a9f4\"\n                },\n                geographyConfig: {\n                    highlightFillColor: '#03a9f4',\n                    highlightBorderWidth: 0\n                },\n                data: {\n                    NE: { fillKey: \"active\" },\n                    CA: { fillKey: \"active\" },\n                    NY: { fillKey: \"active\" },\n                }\n            });\n\n\t\t\t\n\t\t\tvar map = new Datamap({\n        scope: 'world',\n        element: document.getElementById('projection_map'),\n        projection: 'orthographic',\n        fills: {\n          defaultFill: \"#ABDDA4\",\n          gt50: colors(Math.random() * 20),\n          eq50: colors(Math.random() * 20),\n          lt25: colors(Math.random() * 10),\n          gt75: colors(Math.random() * 200),\n          lt50: colors(Math.random() * 20),\n          eq0: colors(Math.random() * 1),\n          pink: '#0fa0fa',\n          gt500: colors(Math.random() * 1)\n        },\n        projectionConfig: {\n          rotation: [97,-30]\n        },\n        data: {\n          'USA': {fillKey: 'lt50' },\n          'MEX': {fillKey: 'lt25' },\n          'CAN': {fillKey: 'gt50' },\n          'GTM': {fillKey: 'gt500'},\n          'HND': {fillKey: 'eq50' },\n          'BLZ': {fillKey: 'pink' },\n          'GRL': {fillKey: 'eq0' },\n          'CAN': {fillKey: 'gt50' }\n        }\n      });\n\n      map.graticule();\n\n      map.arc([{\n        origin: {\n          latitude: 61,\n          longitude: -149\n        },\n        destination: {\n          latitude: -22,\n          longitude: -43\n        }\n      }], {\n        greatArc: true,\n        animationSpeed: 2000\n      });\n \n\t\t\t\n            var arc_map = new Datamap({\n                element: document.getElementById(\"arc_map\"),\n                responsive: true,\n                fills: {\n                    defaultFill: \"#F2F2F0\",\n                    active: \"#03a9f4\",\n                    usa: \"#03a9f4\"\n                },\n                geographyConfig: {\n                    highlightFillColor: '#03a9f4',\n                    highlightBorderWidth: 0\n                },\n                data: {\n                    USA: {fillKey: \"usa\"},\n                    RUS: {fillKey: \"active\"},\n                    DEU: {fillKey: \"active\"},\n                    POL: {fillKey: \"active\"},\n                    JAP: {fillKey: \"active\"},\n                    AUS: {fillKey: \"active\"},\n                    BRA: {fillKey: \"active\"}\n                }\n            });\n\n            arc_map.arc(\n                    [\n                        { origin: 'USA', destination: 'RUS'},\n                        { origin: 'USA', destination: 'DEU'},\n                        { origin: 'USA', destination: 'POL'},\n                        { origin: 'USA', destination: 'JAP'},\n                        { origin: 'USA', destination: 'AUS'},\n                        { origin: 'USA', destination: 'BRA'}\n                    ],\n                    { strokeColor: '#03a9f4', strokeWidth: 1}\n            );\n\n         \n\t\t\t\n\t\t\t\n\n\n\t\t\t\n\t\t\t\n\t\n})(jQuery); "
  },
  {
    "path": "public/admin/js/data-map/topojson.js",
    "content": "!function() {\n    var topojson = {\n        version: \"1.6.20\",\n        mesh: function(topology) { return object(topology, meshArcs.apply(this, arguments)); },\n        meshArcs: meshArcs,\n        merge: function(topology) { return object(topology, mergeArcs.apply(this, arguments)); },\n        mergeArcs: mergeArcs,\n        feature: featureOrCollection,\n        neighbors: neighbors,\n        presimplify: presimplify\n    };\n\n    function stitchArcs(topology, arcs) {\n        var stitchedArcs = {},\n            fragmentByStart = {},\n            fragmentByEnd = {},\n            fragments = [],\n            emptyIndex = -1;\n\n        // Stitch empty arcs first, since they may be subsumed by other arcs.\n        arcs.forEach(function(i, j) {\n            var arc = topology.arcs[i < 0 ? ~i : i], t;\n            if (arc.length < 3 && !arc[1][0] && !arc[1][1]) {\n                t = arcs[++emptyIndex], arcs[emptyIndex] = i, arcs[j] = t;\n            }\n        });\n\n        arcs.forEach(function(i) {\n            var e = ends(i),\n                start = e[0],\n                end = e[1],\n                f, g;\n\n            if (f = fragmentByEnd[start]) {\n                delete fragmentByEnd[f.end];\n                f.push(i);\n                f.end = end;\n                if (g = fragmentByStart[end]) {\n                    delete fragmentByStart[g.start];\n                    var fg = g === f ? f : f.concat(g);\n                    fragmentByStart[fg.start = f.start] = fragmentByEnd[fg.end = g.end] = fg;\n                } else {\n                    fragmentByStart[f.start] = fragmentByEnd[f.end] = f;\n                }\n            } else if (f = fragmentByStart[end]) {\n                delete fragmentByStart[f.start];\n                f.unshift(i);\n                f.start = start;\n                if (g = fragmentByEnd[start]) {\n                    delete fragmentByEnd[g.end];\n                    var gf = g === f ? f : g.concat(f);\n                    fragmentByStart[gf.start = g.start] = fragmentByEnd[gf.end = f.end] = gf;\n                } else {\n                    fragmentByStart[f.start] = fragmentByEnd[f.end] = f;\n                }\n            } else {\n                f = [i];\n                fragmentByStart[f.start = start] = fragmentByEnd[f.end = end] = f;\n            }\n        });\n\n        function ends(i) {\n            var arc = topology.arcs[i < 0 ? ~i : i], p0 = arc[0], p1;\n            if (topology.transform) p1 = [0, 0], arc.forEach(function(dp) { p1[0] += dp[0], p1[1] += dp[1]; });\n            else p1 = arc[arc.length - 1];\n            return i < 0 ? [p1, p0] : [p0, p1];\n        }\n\n        function flush(fragmentByEnd, fragmentByStart) {\n            for (var k in fragmentByEnd) {\n                var f = fragmentByEnd[k];\n                delete fragmentByStart[f.start];\n                delete f.start;\n                delete f.end;\n                f.forEach(function(i) { stitchedArcs[i < 0 ? ~i : i] = 1; });\n                fragments.push(f);\n            }\n        }\n\n        flush(fragmentByEnd, fragmentByStart);\n        flush(fragmentByStart, fragmentByEnd);\n        arcs.forEach(function(i) { if (!stitchedArcs[i < 0 ? ~i : i]) fragments.push([i]); });\n\n        return fragments;\n    }\n\n    function meshArcs(topology, o, filter) {\n        var arcs = [];\n\n        if (arguments.length > 1) {\n            var geomsByArc = [],\n                geom;\n\n            function arc(i) {\n                var j = i < 0 ? ~i : i;\n                (geomsByArc[j] || (geomsByArc[j] = [])).push({i: i, g: geom});\n            }\n\n            function line(arcs) {\n                arcs.forEach(arc);\n            }\n\n            function polygon(arcs) {\n                arcs.forEach(line);\n            }\n\n            function geometry(o) {\n                if (o.type === \"GeometryCollection\") o.geometries.forEach(geometry);\n                else if (o.type in geometryType) geom = o, geometryType[o.type](o.arcs);\n            }\n\n            var geometryType = {\n                LineString: line,\n                MultiLineString: polygon,\n                Polygon: polygon,\n                MultiPolygon: function(arcs) { arcs.forEach(polygon); }\n            };\n\n            geometry(o);\n\n            geomsByArc.forEach(arguments.length < 3\n                ? function(geoms) { arcs.push(geoms[0].i); }\n                : function(geoms) { if (filter(geoms[0].g, geoms[geoms.length - 1].g)) arcs.push(geoms[0].i); });\n        } else {\n            for (var i = 0, n = topology.arcs.length; i < n; ++i) arcs.push(i);\n        }\n\n        return {type: \"MultiLineString\", arcs: stitchArcs(topology, arcs)};\n    }\n\n    function mergeArcs(topology, objects) {\n        var polygonsByArc = {},\n            polygons = [],\n            components = [];\n\n        objects.forEach(function(o) {\n            if (o.type === \"Polygon\") register(o.arcs);\n            else if (o.type === \"MultiPolygon\") o.arcs.forEach(register);\n        });\n\n        function register(polygon) {\n            polygon.forEach(function(ring) {\n                ring.forEach(function(arc) {\n                    (polygonsByArc[arc = arc < 0 ? ~arc : arc] || (polygonsByArc[arc] = [])).push(polygon);\n                });\n            });\n            polygons.push(polygon);\n        }\n\n        function exterior(ring) {\n            return cartesianRingArea(object(topology, {type: \"Polygon\", arcs: [ring]}).coordinates[0]) > 0; // TODO allow spherical?\n        }\n\n        polygons.forEach(function(polygon) {\n            if (!polygon._) {\n                var component = [],\n                    neighbors = [polygon];\n                polygon._ = 1;\n                components.push(component);\n                while (polygon = neighbors.pop()) {\n                    component.push(polygon);\n                    polygon.forEach(function(ring) {\n                        ring.forEach(function(arc) {\n                            polygonsByArc[arc < 0 ? ~arc : arc].forEach(function(polygon) {\n                                if (!polygon._) {\n                                    polygon._ = 1;\n                                    neighbors.push(polygon);\n                                }\n                            });\n                        });\n                    });\n                }\n            }\n        });\n\n        polygons.forEach(function(polygon) {\n            delete polygon._;\n        });\n\n        return {\n            type: \"MultiPolygon\",\n            arcs: components.map(function(polygons) {\n                var arcs = [], n;\n\n                // Extract the exterior (unique) arcs.\n                polygons.forEach(function(polygon) {\n                    polygon.forEach(function(ring) {\n                        ring.forEach(function(arc) {\n                            if (polygonsByArc[arc < 0 ? ~arc : arc].length < 2) {\n                                arcs.push(arc);\n                            }\n                        });\n                    });\n                });\n\n                // Stitch the arcs into one or more rings.\n                arcs = stitchArcs(topology, arcs);\n\n                // If more than one ring is returned,\n                // at most one of these rings can be the exterior;\n                // this exterior ring has the same winding order\n                // as any exterior ring in the original polygons.\n                if ((n = arcs.length) > 1) {\n                    var sgn = exterior(polygons[0][0]);\n                    for (var i = 0, t; i < n; ++i) {\n                        if (sgn === exterior(arcs[i])) {\n                            t = arcs[0], arcs[0] = arcs[i], arcs[i] = t;\n                            break;\n                        }\n                    }\n                }\n\n                return arcs;\n            })\n        };\n    }\n\n    function featureOrCollection(topology, o) {\n        return o.type === \"GeometryCollection\" ? {\n            type: \"FeatureCollection\",\n            features: o.geometries.map(function(o) { return feature(topology, o); })\n        } : feature(topology, o);\n    }\n\n    function feature(topology, o) {\n        var f = {\n            type: \"Feature\",\n            id: o.id,\n            properties: o.properties || {},\n            geometry: object(topology, o)\n        };\n        if (o.id == null) delete f.id;\n        return f;\n    }\n\n    function object(topology, o) {\n        var absolute = transformAbsolute(topology.transform),\n            arcs = topology.arcs;\n\n        function arc(i, points) {\n            if (points.length) points.pop();\n            for (var a = arcs[i < 0 ? ~i : i], k = 0, n = a.length, p; k < n; ++k) {\n                points.push(p = a[k].slice());\n                absolute(p, k);\n            }\n            if (i < 0) reverse(points, n);\n        }\n\n        function point(p) {\n            p = p.slice();\n            absolute(p, 0);\n            return p;\n        }\n\n        function line(arcs) {\n            var points = [];\n            for (var i = 0, n = arcs.length; i < n; ++i) arc(arcs[i], points);\n            if (points.length < 2) points.push(points[0].slice());\n            return points;\n        }\n\n        function ring(arcs) {\n            var points = line(arcs);\n            while (points.length < 4) points.push(points[0].slice());\n            return points;\n        }\n\n        function polygon(arcs) {\n            return arcs.map(ring);\n        }\n\n        function geometry(o) {\n            var t = o.type;\n            return t === \"GeometryCollection\" ? {type: t, geometries: o.geometries.map(geometry)}\n                : t in geometryType ? {type: t, coordinates: geometryType[t](o)}\n                : null;\n        }\n\n        var geometryType = {\n            Point: function(o) { return point(o.coordinates); },\n            MultiPoint: function(o) { return o.coordinates.map(point); },\n            LineString: function(o) { return line(o.arcs); },\n            MultiLineString: function(o) { return o.arcs.map(line); },\n            Polygon: function(o) { return polygon(o.arcs); },\n            MultiPolygon: function(o) { return o.arcs.map(polygon); }\n        };\n\n        return geometry(o);\n    }\n\n    function reverse(array, n) {\n        var t, j = array.length, i = j - n; while (i < --j) t = array[i], array[i++] = array[j], array[j] = t;\n    }\n\n    function bisect(a, x) {\n        var lo = 0, hi = a.length;\n        while (lo < hi) {\n            var mid = lo + hi >>> 1;\n            if (a[mid] < x) lo = mid + 1;\n            else hi = mid;\n        }\n        return lo;\n    }\n\n    function neighbors(objects) {\n        var indexesByArc = {}, // arc index -> array of object indexes\n            neighbors = objects.map(function() { return []; });\n\n        function line(arcs, i) {\n            arcs.forEach(function(a) {\n                if (a < 0) a = ~a;\n                var o = indexesByArc[a];\n                if (o) o.push(i);\n                else indexesByArc[a] = [i];\n            });\n        }\n\n        function polygon(arcs, i) {\n            arcs.forEach(function(arc) { line(arc, i); });\n        }\n\n        function geometry(o, i) {\n            if (o.type === \"GeometryCollection\") o.geometries.forEach(function(o) { geometry(o, i); });\n            else if (o.type in geometryType) geometryType[o.type](o.arcs, i);\n        }\n\n        var geometryType = {\n            LineString: line,\n            MultiLineString: polygon,\n            Polygon: polygon,\n            MultiPolygon: function(arcs, i) { arcs.forEach(function(arc) { polygon(arc, i); }); }\n        };\n\n        objects.forEach(geometry);\n\n        for (var i in indexesByArc) {\n            for (var indexes = indexesByArc[i], m = indexes.length, j = 0; j < m; ++j) {\n                for (var k = j + 1; k < m; ++k) {\n                    var ij = indexes[j], ik = indexes[k], n;\n                    if ((n = neighbors[ij])[i = bisect(n, ik)] !== ik) n.splice(i, 0, ik);\n                    if ((n = neighbors[ik])[i = bisect(n, ij)] !== ij) n.splice(i, 0, ij);\n                }\n            }\n        }\n\n        return neighbors;\n    }\n\n    function presimplify(topology, triangleArea) {\n        var absolute = transformAbsolute(topology.transform),\n            relative = transformRelative(topology.transform),\n            heap = minAreaHeap();\n\n        if (!triangleArea) triangleArea = cartesianTriangleArea;\n\n        topology.arcs.forEach(function(arc) {\n            var triangles = [],\n                maxArea = 0,\n                triangle;\n\n            // To store each point’s effective area, we create a new array rather than\n            // extending the passed-in point to workaround a Chrome/V8 bug (getting\n            // stuck in smi mode). For midpoints, the initial effective area of\n            // Infinity will be computed in the next step.\n            for (var i = 0, n = arc.length, p; i < n; ++i) {\n                p = arc[i];\n                absolute(arc[i] = [p[0], p[1], Infinity], i);\n            }\n\n            for (var i = 1, n = arc.length - 1; i < n; ++i) {\n                triangle = arc.slice(i - 1, i + 2);\n                triangle[1][2] = triangleArea(triangle);\n                triangles.push(triangle);\n                heap.push(triangle);\n            }\n\n            for (var i = 0, n = triangles.length; i < n; ++i) {\n                triangle = triangles[i];\n                triangle.previous = triangles[i - 1];\n                triangle.next = triangles[i + 1];\n            }\n\n            while (triangle = heap.pop()) {\n                var previous = triangle.previous,\n                    next = triangle.next;\n\n                // If the area of the current point is less than that of the previous point\n                // to be eliminated, use the latter's area instead. This ensures that the\n                // current point cannot be eliminated without eliminating previously-\n                // eliminated points.\n                if (triangle[1][2] < maxArea) triangle[1][2] = maxArea;\n                else maxArea = triangle[1][2];\n\n                if (previous) {\n                    previous.next = next;\n                    previous[2] = triangle[2];\n                    update(previous);\n                }\n\n                if (next) {\n                    next.previous = previous;\n                    next[0] = triangle[0];\n                    update(next);\n                }\n            }\n\n            arc.forEach(relative);\n        });\n\n        function update(triangle) {\n            heap.remove(triangle);\n            triangle[1][2] = triangleArea(triangle);\n            heap.push(triangle);\n        }\n\n        return topology;\n    }\n\n    function cartesianRingArea(ring) {\n        var i = -1,\n            n = ring.length,\n            a,\n            b = ring[n - 1],\n            area = 0;\n\n        while (++i < n) {\n            a = b;\n            b = ring[i];\n            area += a[0] * b[1] - a[1] * b[0];\n        }\n\n        return area / 2;\n    }\n\n    function cartesianTriangleArea(triangle) {\n        var a = triangle[0], b = triangle[1], c = triangle[2];\n        return Math.abs((a[0] - c[0]) * (b[1] - a[1]) - (a[0] - b[0]) * (c[1] - a[1]));\n    }\n\n    function compareArea(a, b) {\n        return a[1][2] - b[1][2];\n    }\n\n    function minAreaHeap() {\n        var heap = {},\n            array = [],\n            size = 0;\n\n        heap.push = function(object) {\n            up(array[object._ = size] = object, size++);\n            return size;\n        };\n\n        heap.pop = function() {\n            if (size <= 0) return;\n            var removed = array[0], object;\n            if (--size > 0) object = array[size], down(array[object._ = 0] = object, 0);\n            return removed;\n        };\n\n        heap.remove = function(removed) {\n            var i = removed._, object;\n            if (array[i] !== removed) return; // invalid request\n            if (i !== --size) object = array[size], (compareArea(object, removed) < 0 ? up : down)(array[object._ = i] = object, i);\n            return i;\n        };\n\n        function up(object, i) {\n            while (i > 0) {\n                var j = ((i + 1) >> 1) - 1,\n                    parent = array[j];\n                if (compareArea(object, parent) >= 0) break;\n                array[parent._ = i] = parent;\n                array[object._ = i = j] = object;\n            }\n        }\n\n        function down(object, i) {\n            while (true) {\n                var r = (i + 1) << 1,\n                    l = r - 1,\n                    j = i,\n                    child = array[j];\n                if (l < size && compareArea(array[l], child) < 0) child = array[j = l];\n                if (r < size && compareArea(array[r], child) < 0) child = array[j = r];\n                if (j === i) break;\n                array[child._ = i] = child;\n                array[object._ = i = j] = object;\n            }\n        }\n\n        return heap;\n    }\n\n    function transformAbsolute(transform) {\n        if (!transform) return noop;\n        var x0,\n            y0,\n            kx = transform.scale[0],\n            ky = transform.scale[1],\n            dx = transform.translate[0],\n            dy = transform.translate[1];\n        return function(point, i) {\n            if (!i) x0 = y0 = 0;\n            point[0] = (x0 += point[0]) * kx + dx;\n            point[1] = (y0 += point[1]) * ky + dy;\n        };\n    }\n\n    function transformRelative(transform) {\n        if (!transform) return noop;\n        var x0,\n            y0,\n            kx = transform.scale[0],\n            ky = transform.scale[1],\n            dx = transform.translate[0],\n            dy = transform.translate[1];\n        return function(point, i) {\n            if (!i) x0 = y0 = 0;\n            var x1 = (point[0] - dx) / kx | 0,\n                y1 = (point[1] - dy) / ky | 0;\n            point[0] = x1 - x0;\n            point[1] = y1 - y0;\n            x0 = x1;\n            y0 = y1;\n        };\n    }\n\n    function noop() {}\n\n    if (typeof define === \"function\" && define.amd) define(topojson);\n    else if (typeof module === \"object\" && module.exports) module.exports = topojson;\n    else this.topojson = topojson;\n}();"
  },
  {
    "path": "public/admin/js/data-table/bootstrap-editable.js",
    "content": "/*! X-editable - v1.5.1 \n* In-place editing with Twitter Bootstrap, jQuery UI or pure jQuery\n* http://github.com/vitalets/x-editable\n* Copyright (c) 2013 Vitaliy Potapov; Licensed MIT */\n/**\nForm with single input element, two buttons and two states: normal/loading.\nApplied as jQuery method to DIV tag (not to form tag!). This is because form can be in loading state when spinner shown.\nEditableform is linked with one of input types, e.g. 'text', 'select' etc.\n\n@class editableform\n@uses text\n@uses textarea\n**/\n(function ($) {\n    \"use strict\";\n    \n    var EditableForm = function (div, options) {\n        this.options = $.extend({}, $.fn.editableform.defaults, options);\n        this.$div = $(div); //div, containing form. Not form tag. Not editable-element.\n        if(!this.options.scope) {\n            this.options.scope = this;\n        }\n        //nothing shown after init\n    };\n\n    EditableForm.prototype = {\n        constructor: EditableForm,\n        initInput: function() {  //called once\n            //take input from options (as it is created in editable-element)\n            this.input = this.options.input;\n            \n            //set initial value\n            //todo: may be add check: typeof str === 'string' ? \n            this.value = this.input.str2value(this.options.value); \n            \n            //prerender: get input.$input\n            this.input.prerender();\n        },\n        initTemplate: function() {\n            this.$form = $($.fn.editableform.template); \n        },\n        initButtons: function() {\n            var $btn = this.$form.find('.editable-buttons');\n            $btn.append($.fn.editableform.buttons);\n            if(this.options.showbuttons === 'bottom') {\n                $btn.addClass('editable-buttons-bottom');\n            }\n        },\n        /**\n        Renders editableform\n\n        @method render\n        **/        \n        render: function() {\n            //init loader\n            this.$loading = $($.fn.editableform.loading);        \n            this.$div.empty().append(this.$loading);\n            \n            //init form template and buttons\n            this.initTemplate();\n            if(this.options.showbuttons) {\n                this.initButtons();\n            } else {\n                this.$form.find('.editable-buttons').remove();\n            }\n\n            //show loading state\n            this.showLoading();            \n            \n            //flag showing is form now saving value to server. \n            //It is needed to wait when closing form.\n            this.isSaving = false;\n            \n            /**        \n            Fired when rendering starts\n            @event rendering \n            @param {Object} event event object\n            **/            \n            this.$div.triggerHandler('rendering');\n            \n            //init input\n            this.initInput();\n            \n            //append input to form\n            this.$form.find('div.editable-input').append(this.input.$tpl);            \n            \n            //append form to container\n            this.$div.append(this.$form);\n            \n            //render input\n            $.when(this.input.render())\n            .then($.proxy(function () {\n                //setup input to submit automatically when no buttons shown\n                if(!this.options.showbuttons) {\n                    this.input.autosubmit(); \n                }\n                 \n                //attach 'cancel' handler\n                this.$form.find('.editable-cancel').click($.proxy(this.cancel, this));\n                \n                if(this.input.error) {\n                    this.error(this.input.error);\n                    this.$form.find('.editable-submit').attr('disabled', true);\n                    this.input.$input.attr('disabled', true);\n                    //prevent form from submitting\n                    this.$form.submit(function(e){ e.preventDefault(); });\n                } else {\n                    this.error(false);\n                    this.input.$input.removeAttr('disabled');\n                    this.$form.find('.editable-submit').removeAttr('disabled');\n                    var value = (this.value === null || this.value === undefined || this.value === '') ? this.options.defaultValue : this.value;\n                    this.input.value2input(value);\n                    //attach submit handler\n                    this.$form.submit($.proxy(this.submit, this));\n                }\n\n                /**        \n                Fired when form is rendered\n                @event rendered\n                @param {Object} event event object\n                **/            \n                this.$div.triggerHandler('rendered');                \n\n                this.showForm();\n                \n                //call postrender method to perform actions required visibility of form\n                if(this.input.postrender) {\n                    this.input.postrender();\n                }                \n            }, this));\n        },\n        cancel: function() {   \n            /**        \n            Fired when form was cancelled by user\n            @event cancel \n            @param {Object} event event object\n            **/              \n            this.$div.triggerHandler('cancel');\n        },\n        showLoading: function() {\n            var w, h;\n            if(this.$form) {\n                //set loading size equal to form\n                w = this.$form.outerWidth();\n                h = this.$form.outerHeight(); \n                if(w) {\n                    this.$loading.width(w);\n                }\n                if(h) {\n                    this.$loading.height(h);\n                }\n                this.$form.hide();\n            } else {\n                //stretch loading to fill container width\n                w = this.$loading.parent().width();\n                if(w) {\n                    this.$loading.width(w);\n                }\n            }\n            this.$loading.show(); \n        },\n\n        showForm: function(activate) {\n            this.$loading.hide();\n            this.$form.show();\n            if(activate !== false) {\n                this.input.activate(); \n            }\n            /**        \n            Fired when form is shown\n            @event show \n            @param {Object} event event object\n            **/                    \n            this.$div.triggerHandler('show');\n        },\n\n        error: function(msg) {\n            var $group = this.$form.find('.control-group'),\n                $block = this.$form.find('.editable-error-block'),\n                lines;\n\n            if(msg === false) {\n                $group.removeClass($.fn.editableform.errorGroupClass);\n                $block.removeClass($.fn.editableform.errorBlockClass).empty().hide(); \n            } else {\n                //convert newline to <br> for more pretty error display\n                if(msg) {\n                    lines = (''+msg).split('\\n');\n                    for (var i = 0; i < lines.length; i++) {\n                        lines[i] = $('<div>').text(lines[i]).html();\n                    }\n                    msg = lines.join('<br>');\n                }\n                $group.addClass($.fn.editableform.errorGroupClass);\n                $block.addClass($.fn.editableform.errorBlockClass).html(msg).show();\n            }\n        },\n\n        submit: function(e) {\n            e.stopPropagation();\n            e.preventDefault();\n            \n            //get new value from input\n            var newValue = this.input.input2value(); \n\n            //validation: if validate returns string or truthy value - means error\n            //if returns object like {newValue: '...'} => submitted value is reassigned to it\n            var error = this.validate(newValue);\n            if ($.type(error) === 'object' && error.newValue !== undefined) {\n                newValue = error.newValue;\n                this.input.value2input(newValue);\n                if(typeof error.msg === 'string') {\n                    this.error(error.msg);\n                    this.showForm();\n                    return;\n                }\n            } else if (error) {\n                this.error(error);\n                this.showForm();\n                return;\n            } \n            \n            //if value not changed --> trigger 'nochange' event and return\n            /*jslint eqeq: true*/\n            if (!this.options.savenochange && this.input.value2str(newValue) == this.input.value2str(this.value)) {\n            /*jslint eqeq: false*/                \n                /**        \n                Fired when value not changed but form is submitted. Requires savenochange = false.\n                @event nochange \n                @param {Object} event event object\n                **/                    \n                this.$div.triggerHandler('nochange');            \n                return;\n            } \n\n            //convert value for submitting to server\n            var submitValue = this.input.value2submit(newValue);\n            \n            this.isSaving = true;\n            \n            //sending data to server\n            $.when(this.save(submitValue))\n            .done($.proxy(function(response) {\n                this.isSaving = false;\n\n                //run success callback\n                var res = typeof this.options.success === 'function' ? this.options.success.call(this.options.scope, response, newValue) : null;\n\n                //if success callback returns false --> keep form open and do not activate input\n                if(res === false) {\n                    this.error(false);\n                    this.showForm(false);\n                    return;\n                }\n\n                //if success callback returns string -->  keep form open, show error and activate input               \n                if(typeof res === 'string') {\n                    this.error(res);\n                    this.showForm();\n                    return;\n                }\n\n                //if success callback returns object like {newValue: <something>} --> use that value instead of submitted\n                //it is usefull if you want to chnage value in url-function\n                if(res && typeof res === 'object' && res.hasOwnProperty('newValue')) {\n                    newValue = res.newValue;\n                }\n\n                //clear error message\n                this.error(false);   \n                this.value = newValue;\n                /**        \n                Fired when form is submitted\n                @event save \n                @param {Object} event event object\n                @param {Object} params additional params\n                @param {mixed} params.newValue raw new value\n                @param {mixed} params.submitValue submitted value as string\n                @param {Object} params.response ajax response\n\n                @example\n                $('#form-div').on('save'), function(e, params){\n                    if(params.newValue === 'username') {...}\n                });\n                **/\n                this.$div.triggerHandler('save', {newValue: newValue, submitValue: submitValue, response: response});\n            }, this))\n            .fail($.proxy(function(xhr) {\n                this.isSaving = false;\n\n                var msg;\n                if(typeof this.options.error === 'function') {\n                    msg = this.options.error.call(this.options.scope, xhr, newValue);\n                } else {\n                    msg = typeof xhr === 'string' ? xhr : xhr.responseText || xhr.statusText || 'Unknown error!';\n                }\n\n                this.error(msg);\n                this.showForm();\n            }, this));\n        },\n\n        save: function(submitValue) {\n            //try parse composite pk defined as json string in data-pk \n            this.options.pk = $.fn.editableutils.tryParseJson(this.options.pk, true); \n            \n            var pk = (typeof this.options.pk === 'function') ? this.options.pk.call(this.options.scope) : this.options.pk,\n            /*\n              send on server in following cases:\n              1. url is function\n              2. url is string AND (pk defined OR send option = always) \n            */\n            send = !!(typeof this.options.url === 'function' || (this.options.url && ((this.options.send === 'always') || (this.options.send === 'auto' && pk !== null && pk !== undefined)))),\n            params;\n\n            if (send) { //send to server\n                this.showLoading();\n\n                //standard params\n                params = {\n                    name: this.options.name || '',\n                    value: submitValue,\n                    pk: pk \n                };\n\n                //additional params\n                if(typeof this.options.params === 'function') {\n                    params = this.options.params.call(this.options.scope, params);  \n                } else {\n                    //try parse json in single quotes (from data-params attribute)\n                    this.options.params = $.fn.editableutils.tryParseJson(this.options.params, true);   \n                    $.extend(params, this.options.params);\n                }\n\n                if(typeof this.options.url === 'function') { //user's function\n                    return this.options.url.call(this.options.scope, params);\n                } else {  \n                    //send ajax to server and return deferred object\n                    return $.ajax($.extend({\n                        url     : this.options.url,\n                        data    : params,\n                        type    : 'POST'\n                    }, this.options.ajaxOptions));\n                }\n            }\n        }, \n\n        validate: function (value) {\n            if (value === undefined) {\n                value = this.value;\n            }\n            if (typeof this.options.validate === 'function') {\n                return this.options.validate.call(this.options.scope, value);\n            }\n        },\n\n        option: function(key, value) {\n            if(key in this.options) {\n                this.options[key] = value;\n            }\n            \n            if(key === 'value') {\n                this.setValue(value);\n            }\n            \n            //do not pass option to input as it is passed in editable-element\n        },\n\n        setValue: function(value, convertStr) {\n            if(convertStr) {\n                this.value = this.input.str2value(value);\n            } else {\n                this.value = value;\n            }\n            \n            //if form is visible, update input\n            if(this.$form && this.$form.is(':visible')) {\n                this.input.value2input(this.value);\n            }            \n        }               \n    };\n\n    /*\n    Initialize editableform. Applied to jQuery object.\n\n    @method $().editableform(options)\n    @params {Object} options\n    @example\n    var $form = $('&lt;div&gt;').editableform({\n        type: 'text',\n        name: 'username',\n        url: '/post',\n        value: 'vitaliy'\n    });\n\n    //to display form you should call 'render' method\n    $form.editableform('render');     \n    */\n    $.fn.editableform = function (option) {\n        var args = arguments;\n        return this.each(function () {\n            var $this = $(this), \n            data = $this.data('editableform'), \n            options = typeof option === 'object' && option; \n            if (!data) {\n                $this.data('editableform', (data = new EditableForm(this, options)));\n            }\n\n            if (typeof option === 'string') { //call method \n                data[option].apply(data, Array.prototype.slice.call(args, 1));\n            } \n        });\n    };\n\n    //keep link to constructor to allow inheritance\n    $.fn.editableform.Constructor = EditableForm;    \n\n    //defaults\n    $.fn.editableform.defaults = {\n        /* see also defaults for input */\n\n        /**\n        Type of input. Can be <code>text|textarea|select|date|checklist</code>\n\n        @property type \n        @type string\n        @default 'text'\n        **/\n        type: 'text',\n        /**\n        Url for submit, e.g. <code>'/post'</code>  \n        If function - it will be called instead of ajax. Function should return deferred object to run fail/done callbacks.\n\n        @property url \n        @type string|function\n        @default null\n        @example\n        url: function(params) {\n            var d = new $.Deferred;\n            if(params.value === 'abc') {\n                return d.reject('error message'); //returning error via deferred object\n            } else {\n                //async saving data in js model\n                someModel.asyncSaveMethod({\n                   ..., \n                   success: function(){\n                      d.resolve();\n                   }\n                }); \n                return d.promise();\n            }\n        } \n        **/        \n        url:null,\n        /**\n        Additional params for submit. If defined as <code>object</code> - it is **appended** to original ajax data (pk, name and value).  \n        If defined as <code>function</code> - returned object **overwrites** original ajax data.\n        @example\n        params: function(params) {\n            //originally params contain pk, name and value\n            params.a = 1;\n            return params;\n        }\n\n        @property params \n        @type object|function\n        @default null\n        **/          \n        params:null,\n        /**\n        Name of field. Will be submitted on server. Can be taken from <code>id</code> attribute\n\n        @property name \n        @type string\n        @default null\n        **/         \n        name: null,\n        /**\n        Primary key of editable object (e.g. record id in database). For composite keys use object, e.g. <code>{id: 1, lang: 'en'}</code>.\n        Can be calculated dynamically via function.\n\n        @property pk \n        @type string|object|function\n        @default null\n        **/         \n        pk: null,\n        /**\n        Initial value. If not defined - will be taken from element's content.\n        For __select__ type should be defined (as it is ID of shown text).\n\n        @property value \n        @type string|object\n        @default null\n        **/        \n        value: null,\n        /**\n        Value that will be displayed in input if original field value is empty (`null|undefined|''`).\n\n        @property defaultValue \n        @type string|object\n        @default null\n        @since 1.4.6\n        **/        \n        defaultValue: null,\n        /**\n        Strategy for sending data on server. Can be `auto|always|never`.\n        When 'auto' data will be sent on server **only if pk and url defined**, otherwise new value will be stored locally.\n\n        @property send \n        @type string\n        @default 'auto'\n        **/          \n        send: 'auto', \n        /**\n        Function for client-side validation. If returns string - means validation not passed and string showed as error.\n        Since 1.5.1 you can modify submitted value by returning object from `validate`: \n        `{newValue: '...'}` or `{newValue: '...', msg: '...'}`\n\n        @property validate \n        @type function\n        @default null\n        @example\n        validate: function(value) {\n            if($.trim(value) == '') {\n                return 'This field is required';\n            }\n        }\n        **/         \n        validate: null,\n        /**\n        Success callback. Called when value successfully sent on server and **response status = 200**.  \n        Usefull to work with json response. For example, if your backend response can be <code>{success: true}</code>\n        or <code>{success: false, msg: \"server error\"}</code> you can check it inside this callback.  \n        If it returns **string** - means error occured and string is shown as error message.  \n        If it returns **object like** <code>{newValue: &lt;something&gt;}</code> - it overwrites value, submitted by user.  \n        Otherwise newValue simply rendered into element.\n        \n        @property success \n        @type function\n        @default null\n        @example\n        success: function(response, newValue) {\n            if(!response.success) return response.msg;\n        }\n        **/          \n        success: null,\n        /**\n        Error callback. Called when request failed (response status != 200).  \n        Usefull when you want to parse error response and display a custom message.\n        Must return **string** - the message to be displayed in the error block.\n                \n        @property error \n        @type function\n        @default null\n        @since 1.4.4\n        @example\n        error: function(response, newValue) {\n            if(response.status === 500) {\n                return 'Service unavailable. Please try later.';\n            } else {\n                return response.responseText;\n            }\n        }\n        **/          \n        error: null,\n        /**\n        Additional options for submit ajax request.\n        List of values: http://api.jquery.com/jQuery.ajax\n        \n        @property ajaxOptions \n        @type object\n        @default null\n        @since 1.1.1        \n        @example \n        ajaxOptions: {\n            type: 'put',\n            dataType: 'json'\n        }        \n        **/        \n        ajaxOptions: null,\n        /**\n        Where to show buttons: left(true)|bottom|false  \n        Form without buttons is auto-submitted.\n\n        @property showbuttons \n        @type boolean|string\n        @default true\n        @since 1.1.1\n        **/         \n        showbuttons: true,\n        /**\n        Scope for callback methods (success, validate).  \n        If <code>null</code> means editableform instance itself. \n\n        @property scope \n        @type DOMElement|object\n        @default null\n        @since 1.2.0\n        @private\n        **/            \n        scope: null,\n        /**\n        Whether to save or cancel value when it was not changed but form was submitted\n\n        @property savenochange \n        @type boolean\n        @default false\n        @since 1.2.0\n        **/\n        savenochange: false\n    };   \n\n    /*\n    Note: following params could redefined in engine: bootstrap or jqueryui:\n    Classes 'control-group' and 'editable-error-block' must always present!\n    */      \n    $.fn.editableform.template = '<form class=\"form-inline editableform\">'+\n    '<div class=\"control-group\">' + \n    '<div><div class=\"editable-input\"></div><div class=\"editable-buttons\"></div></div>'+\n    '<div class=\"editable-error-block\"></div>' + \n    '</div>' + \n    '</form>';\n\n    //loading div\n    $.fn.editableform.loading = '<div class=\"editableform-loading\"></div>';\n\n    //buttons\n    $.fn.editableform.buttons = '<button type=\"submit\" class=\"editable-submit\">ok</button>'+\n    '<button type=\"button\" class=\"editable-cancel\">cancel</button>';      \n\n    //error class attached to control-group\n    $.fn.editableform.errorGroupClass = null;  \n\n    //error class attached to editable-error-block\n    $.fn.editableform.errorBlockClass = 'editable-error';\n    \n    //engine\n    $.fn.editableform.engine = 'jquery';\n}(window.jQuery));\n\n/**\n* EditableForm utilites\n*/\n(function ($) {\n    \"use strict\";\n    \n    //utils\n    $.fn.editableutils = {\n        /**\n        * classic JS inheritance function\n        */  \n        inherit: function (Child, Parent) {\n            var F = function() { };\n            F.prototype = Parent.prototype;\n            Child.prototype = new F();\n            Child.prototype.constructor = Child;\n            Child.superclass = Parent.prototype;\n        },\n\n        /**\n        * set caret position in input\n        * see http://stackoverflow.com/questions/499126/jquery-set-cursor-position-in-text-area\n        */        \n        setCursorPosition: function(elem, pos) {\n            if (elem.setSelectionRange) {\n                elem.setSelectionRange(pos, pos);\n            } else if (elem.createTextRange) {\n                var range = elem.createTextRange();\n                range.collapse(true);\n                range.moveEnd('character', pos);\n                range.moveStart('character', pos);\n                range.select();\n            }\n        },\n\n        /**\n        * function to parse JSON in *single* quotes. (jquery automatically parse only double quotes)\n        * That allows such code as: <a data-source=\"{'a': 'b', 'c': 'd'}\">\n        * safe = true --> means no exception will be thrown\n        * for details see http://stackoverflow.com/questions/7410348/how-to-set-json-format-to-html5-data-attributes-in-the-jquery\n        */\n        tryParseJson: function(s, safe) {\n            if (typeof s === 'string' && s.length && s.match(/^[\\{\\[].*[\\}\\]]$/)) {\n                if (safe) {\n                    try {\n                        /*jslint evil: true*/\n                        s = (new Function('return ' + s))();\n                        /*jslint evil: false*/\n                    } catch (e) {} finally {\n                        return s;\n                    }\n                } else {\n                    /*jslint evil: true*/\n                    s = (new Function('return ' + s))();\n                    /*jslint evil: false*/\n                }\n            }\n            return s;\n        },\n\n        /**\n        * slice object by specified keys\n        */\n        sliceObj: function(obj, keys, caseSensitive /* default: false */) {\n            var key, keyLower, newObj = {};\n\n            if (!$.isArray(keys) || !keys.length) {\n                return newObj;\n            }\n\n            for (var i = 0; i < keys.length; i++) {\n                key = keys[i];\n                if (obj.hasOwnProperty(key)) {\n                    newObj[key] = obj[key];\n                }\n\n                if(caseSensitive === true) {\n                    continue;\n                }\n\n                //when getting data-* attributes via $.data() it's converted to lowercase.\n                //details: http://stackoverflow.com/questions/7602565/using-data-attributes-with-jquery\n                //workaround is code below.\n                keyLower = key.toLowerCase();\n                if (obj.hasOwnProperty(keyLower)) {\n                    newObj[key] = obj[keyLower];\n                }\n            }\n\n            return newObj;\n        },\n\n        /*\n        exclude complex objects from $.data() before pass to config\n        */\n        getConfigData: function($element) {\n            var data = {};\n            $.each($element.data(), function(k, v) {\n                if(typeof v !== 'object' || (v && typeof v === 'object' && (v.constructor === Object || v.constructor === Array))) {\n                    data[k] = v;\n                }\n            });\n            return data;\n        },\n\n        /*\n         returns keys of object\n        */\n        objectKeys: function(o) {\n            if (Object.keys) {\n                return Object.keys(o);  \n            } else {\n                if (o !== Object(o)) {\n                    throw new TypeError('Object.keys called on a non-object');\n                }\n                var k=[], p;\n                for (p in o) {\n                    if (Object.prototype.hasOwnProperty.call(o,p)) {\n                        k.push(p);\n                    }\n                }\n                return k;\n            }\n\n        },\n        \n       /**\n        method to escape html.\n       **/\n       escape: function(str) {\n           return $('<div>').text(str).html();\n       },\n       \n       /*\n        returns array items from sourceData having value property equal or inArray of 'value'\n       */\n       itemsByValue: function(value, sourceData, valueProp) {\n           if(!sourceData || value === null) {\n               return [];\n           }\n           \n           if (typeof(valueProp) !== \"function\") {\n               var idKey = valueProp || 'value';\n               valueProp = function (e) { return e[idKey]; };\n           }\n                      \n           var isValArray = $.isArray(value),\n           result = [], \n           that = this;\n\n           $.each(sourceData, function(i, o) {\n               if(o.children) {\n                   result = result.concat(that.itemsByValue(value, o.children, valueProp));\n               } else {\n                   /*jslint eqeq: true*/\n                   if(isValArray) {\n                       if($.grep(value, function(v){  return v == (o && typeof o === 'object' ? valueProp(o) : o); }).length) {\n                           result.push(o); \n                       }\n                   } else {\n                       var itemValue = (o && (typeof o === 'object')) ? valueProp(o) : o;\n                       if(value == itemValue) {\n                           result.push(o); \n                       }\n                   }\n                   /*jslint eqeq: false*/\n               }\n           });\n           \n           return result;\n       },\n       \n       /*\n       Returns input by options: type, mode. \n       */\n       createInput: function(options) {\n           var TypeConstructor, typeOptions, input,\n           type = options.type;\n\n           //`date` is some kind of virtual type that is transformed to one of exact types\n           //depending on mode and core lib\n           if(type === 'date') {\n               //inline\n               if(options.mode === 'inline') {\n                   if($.fn.editabletypes.datefield) {\n                       type = 'datefield';\n                   } else if($.fn.editabletypes.dateuifield) {\n                       type = 'dateuifield';\n                   }\n               //popup\n               } else {\n                   if($.fn.editabletypes.date) {\n                       type = 'date';\n                   } else if($.fn.editabletypes.dateui) {\n                       type = 'dateui';\n                   }\n               }\n               \n               //if type still `date` and not exist in types, replace with `combodate` that is base input\n               if(type === 'date' && !$.fn.editabletypes.date) {\n                   type = 'combodate';\n               } \n           }\n           \n           //`datetime` should be datetimefield in 'inline' mode\n           if(type === 'datetime' && options.mode === 'inline') {\n             type = 'datetimefield';  \n           }           \n\n           //change wysihtml5 to textarea for jquery UI and plain versions\n           if(type === 'wysihtml5' && !$.fn.editabletypes[type]) {\n               type = 'textarea';\n           }\n\n           //create input of specified type. Input will be used for converting value, not in form\n           if(typeof $.fn.editabletypes[type] === 'function') {\n               TypeConstructor = $.fn.editabletypes[type];\n               typeOptions = this.sliceObj(options, this.objectKeys(TypeConstructor.defaults));\n               input = new TypeConstructor(typeOptions);\n               return input;\n           } else {\n               $.error('Unknown type: '+ type);\n               return false; \n           }  \n       },\n       \n       //see http://stackoverflow.com/questions/7264899/detect-css-transitions-using-javascript-and-without-modernizr\n       supportsTransitions: function () {\n           var b = document.body || document.documentElement,\n               s = b.style,\n               p = 'transition',\n               v = ['Moz', 'Webkit', 'Khtml', 'O', 'ms'];\n               \n           if(typeof s[p] === 'string') {\n               return true; \n           }\n\n           // Tests for vendor specific prop\n           p = p.charAt(0).toUpperCase() + p.substr(1);\n           for(var i=0; i<v.length; i++) {\n               if(typeof s[v[i] + p] === 'string') { \n                   return true; \n               }\n           }\n           return false;\n       }            \n       \n    };      \n}(window.jQuery));\n\n/**\nAttaches stand-alone container with editable-form to HTML element. Element is used only for positioning, value is not stored anywhere.<br>\nThis method applied internally in <code>$().editable()</code>. You should subscribe on it's events (save / cancel) to get profit of it.<br>\nFinal realization can be different: bootstrap-popover, jqueryui-tooltip, poshytip, inline-div. It depends on which js file you include.<br>\nApplied as jQuery method.\n\n@class editableContainer\n@uses editableform\n**/\n(function ($) {\n    \"use strict\";\n\n    var Popup = function (element, options) {\n        this.init(element, options);\n    };\n    \n    var Inline = function (element, options) {\n        this.init(element, options);\n    };    \n\n    //methods\n    Popup.prototype = {\n        containerName: null, //method to call container on element\n        containerDataName: null, //object name in element's .data()\n        innerCss: null, //tbd in child class\n        containerClass: 'editable-container editable-popup', //css class applied to container element\n        defaults: {}, //container itself defaults\n        \n        init: function(element, options) {\n            this.$element = $(element);\n            //since 1.4.1 container do not use data-* directly as they already merged into options.\n            this.options = $.extend({}, $.fn.editableContainer.defaults, options);         \n            this.splitOptions();\n            \n            //set scope of form callbacks to element\n            this.formOptions.scope = this.$element[0]; \n            \n            this.initContainer();\n            \n            //flag to hide container, when saving value will finish\n            this.delayedHide = false;\n\n            //bind 'destroyed' listener to destroy container when element is removed from dom\n            this.$element.on('destroyed', $.proxy(function(){\n                this.destroy();\n            }, this)); \n            \n            //attach document handler to close containers on click / escape\n            if(!$(document).data('editable-handlers-attached')) {\n                //close all on escape\n                $(document).on('keyup.editable', function (e) {\n                    if (e.which === 27) {\n                        $('.editable-open').editableContainer('hide');\n                        //todo: return focus on element \n                    }\n                });\n\n                //close containers when click outside \n                //(mousedown could be better than click, it closes everything also on drag drop)\n                $(document).on('click.editable', function(e) {\n                    var $target = $(e.target), i,\n                        exclude_classes = ['.editable-container', \n                                           '.ui-datepicker-header', \n                                           '.datepicker', //in inline mode datepicker is rendered into body\n                                           '.modal-backdrop', \n                                           '.bootstrap-wysihtml5-insert-image-modal', \n                                           '.bootstrap-wysihtml5-insert-link-modal'\n                                           ];\n                    \n                    //check if element is detached. It occurs when clicking in bootstrap datepicker\n                    if (!$.contains(document.documentElement, e.target)) {\n                      return;\n                    }\n\n                    //for some reason FF 20 generates extra event (click) in select2 widget with e.target = document\n                    //we need to filter it via construction below. See https://github.com/vitalets/x-editable/issues/199\n                    //Possibly related to http://stackoverflow.com/questions/10119793/why-does-firefox-react-differently-from-webkit-and-ie-to-click-event-on-selec\n                    if($target.is(document)) {\n                       return; \n                    }\n                    \n                    //if click inside one of exclude classes --> no nothing\n                    for(i=0; i<exclude_classes.length; i++) {\n                         if($target.is(exclude_classes[i]) || $target.parents(exclude_classes[i]).length) {\n                             return;\n                         }\n                    }\n                      \n                    //close all open containers (except one - target)\n                    Popup.prototype.closeOthers(e.target);\n                });\n                \n                $(document).data('editable-handlers-attached', true);\n            }                        \n        },\n\n        //split options on containerOptions and formOptions\n        splitOptions: function() {\n            this.containerOptions = {};\n            this.formOptions = {};\n            \n            if(!$.fn[this.containerName]) {\n                throw new Error(this.containerName + ' not found. Have you included corresponding js file?');   \n            }\n            \n            //keys defined in container defaults go to container, others go to form\n            for(var k in this.options) {\n              if(k in this.defaults) {\n                 this.containerOptions[k] = this.options[k];\n              } else {\n                 this.formOptions[k] = this.options[k];\n              } \n            }\n        },\n        \n        /*\n        Returns jquery object of container\n        @method tip()\n        */         \n        tip: function() {\n            return this.container() ? this.container().$tip : null;\n        },\n\n        /* returns container object */\n        container: function() {\n            var container;\n            //first, try get it by `containerDataName`\n            if(this.containerDataName) {\n                if(container = this.$element.data(this.containerDataName)) {\n                    return container;\n                }\n            }\n            //second, try `containerName`\n            container = this.$element.data(this.containerName);\n            return container;\n        },\n\n        /* call native method of underlying container, e.g. this.$element.popover('method') */ \n        call: function() {\n            this.$element[this.containerName].apply(this.$element, arguments); \n        },        \n        \n        initContainer: function(){\n            this.call(this.containerOptions);\n        },\n\n        renderForm: function() {\n            this.$form\n            .editableform(this.formOptions)\n            .on({\n                save: $.proxy(this.save, this), //click on submit button (value changed)\n                nochange: $.proxy(function(){ this.hide('nochange'); }, this), //click on submit button (value NOT changed)                \n                cancel: $.proxy(function(){ this.hide('cancel'); }, this), //click on calcel button\n                show: $.proxy(function() {\n                    if(this.delayedHide) {\n                        this.hide(this.delayedHide.reason);\n                        this.delayedHide = false;\n                    } else {\n                        this.setPosition();\n                    }\n                }, this), //re-position container every time form is shown (occurs each time after loading state)\n                rendering: $.proxy(this.setPosition, this), //this allows to place container correctly when loading shown\n                resize: $.proxy(this.setPosition, this), //this allows to re-position container when form size is changed \n                rendered: $.proxy(function(){\n                    /**        \n                    Fired when container is shown and form is rendered (for select will wait for loading dropdown options).  \n                    **Note:** Bootstrap popover has own `shown` event that now cannot be separated from x-editable's one.\n                    The workaround is to check `arguments.length` that is always `2` for x-editable.                     \n                    \n                    @event shown \n                    @param {Object} event event object\n                    @example\n                    $('#username').on('shown', function(e, editable) {\n                        editable.input.$input.val('overwriting value of input..');\n                    });                     \n                    **/                      \n                    /*\n                     TODO: added second param mainly to distinguish from bootstrap's shown event. It's a hotfix that will be solved in future versions via namespaced events.  \n                    */\n                    this.$element.triggerHandler('shown', $(this.options.scope).data('editable')); \n                }, this) \n            })\n            .editableform('render');\n        },        \n\n        /**\n        Shows container with form\n        @method show()\n        @param {boolean} closeAll Whether to close all other editable containers when showing this one. Default true.\n        **/\n        /* Note: poshytip owerwrites this method totally! */          \n        show: function (closeAll) {\n            this.$element.addClass('editable-open');\n            if(closeAll !== false) {\n                //close all open containers (except this)\n                this.closeOthers(this.$element[0]);  \n            }\n            \n            //show container itself\n            this.innerShow();\n            this.tip().addClass(this.containerClass);\n\n            /*\n            Currently, form is re-rendered on every show. \n            The main reason is that we dont know, what will container do with content when closed:\n            remove(), detach() or just hide() - it depends on container.\n            \n            Detaching form itself before hide and re-insert before show is good solution, \n            but visually it looks ugly --> container changes size before hide.  \n            */             \n            \n            //if form already exist - delete previous data \n            if(this.$form) {\n                //todo: destroy prev data!\n                //this.$form.destroy();\n            }\n\n            this.$form = $('<div>');\n            \n            //insert form into container body\n            if(this.tip().is(this.innerCss)) {\n                //for inline container\n                this.tip().append(this.$form); \n            } else {\n                this.tip().find(this.innerCss).append(this.$form);\n            } \n            \n            //render form\n            this.renderForm();\n        },\n\n        /**\n        Hides container with form\n        @method hide()\n        @param {string} reason Reason caused hiding. Can be <code>save|cancel|onblur|nochange|undefined (=manual)</code>\n        **/         \n        hide: function(reason) {  \n            if(!this.tip() || !this.tip().is(':visible') || !this.$element.hasClass('editable-open')) {\n                return;\n            }\n            \n            //if form is saving value, schedule hide\n            if(this.$form.data('editableform').isSaving) {\n                this.delayedHide = {reason: reason};\n                return;    \n            } else {\n                this.delayedHide = false;\n            }\n\n            this.$element.removeClass('editable-open');   \n            this.innerHide();\n\n            /**\n            Fired when container was hidden. It occurs on both save or cancel.  \n            **Note:** Bootstrap popover has own `hidden` event that now cannot be separated from x-editable's one.\n            The workaround is to check `arguments.length` that is always `2` for x-editable. \n\n            @event hidden \n            @param {object} event event object\n            @param {string} reason Reason caused hiding. Can be <code>save|cancel|onblur|nochange|manual</code>\n            @example\n            $('#username').on('hidden', function(e, reason) {\n                if(reason === 'save' || reason === 'cancel') {\n                    //auto-open next editable\n                    $(this).closest('tr').next().find('.editable').editable('show');\n                } \n            });\n            **/\n            this.$element.triggerHandler('hidden', reason || 'manual');   \n        },\n\n        /* internal show method. To be overwritten in child classes */\n        innerShow: function () {\n             \n        },        \n\n        /* internal hide method. To be overwritten in child classes */\n        innerHide: function () {\n\n        },\n        \n        /**\n        Toggles container visibility (show / hide)\n        @method toggle()\n        @param {boolean} closeAll Whether to close all other editable containers when showing this one. Default true.\n        **/          \n        toggle: function(closeAll) {\n            if(this.container() && this.tip() && this.tip().is(':visible')) {\n                this.hide();\n            } else {\n                this.show(closeAll);\n            } \n        },\n\n        /*\n        Updates the position of container when content changed.\n        @method setPosition()\n        */       \n        setPosition: function() {\n            //tbd in child class\n        },\n\n        save: function(e, params) {\n            /**        \n            Fired when new value was submitted. You can use <code>$(this).data('editableContainer')</code> inside handler to access to editableContainer instance\n            \n            @event save \n            @param {Object} event event object\n            @param {Object} params additional params\n            @param {mixed} params.newValue submitted value\n            @param {Object} params.response ajax response\n            @example\n            $('#username').on('save', function(e, params) {\n                //assuming server response: '{success: true}'\n                var pk = $(this).data('editableContainer').options.pk;\n                if(params.response && params.response.success) {\n                    alert('value: ' + params.newValue + ' with pk: ' + pk + ' saved!');\n                } else {\n                    alert('error!'); \n                } \n            });\n            **/             \n            this.$element.triggerHandler('save', params);\n            \n            //hide must be after trigger, as saving value may require methods of plugin, applied to input\n            this.hide('save');\n        },\n\n        /**\n        Sets new option\n        \n        @method option(key, value)\n        @param {string} key \n        @param {mixed} value \n        **/         \n        option: function(key, value) {\n            this.options[key] = value;\n            if(key in this.containerOptions) {\n                this.containerOptions[key] = value;\n                this.setContainerOption(key, value); \n            } else {\n                this.formOptions[key] = value;\n                if(this.$form) {\n                    this.$form.editableform('option', key, value);  \n                }\n            }\n        },\n        \n        setContainerOption: function(key, value) {\n            this.call('option', key, value);\n        },\n\n        /**\n        Destroys the container instance\n        @method destroy()\n        **/        \n        destroy: function() {\n            this.hide();\n            this.innerDestroy();\n            this.$element.off('destroyed');\n            this.$element.removeData('editableContainer');\n        },\n        \n        /* to be overwritten in child classes */\n        innerDestroy: function() {\n            \n        }, \n        \n        /*\n        Closes other containers except one related to passed element. \n        Other containers can be cancelled or submitted (depends on onblur option)\n        */\n        closeOthers: function(element) {\n            $('.editable-open').each(function(i, el){\n                //do nothing with passed element and it's children\n                if(el === element || $(el).find(element).length) {\n                    return;\n                }\n\n                //otherwise cancel or submit all open containers \n                var $el = $(el),\n                ec = $el.data('editableContainer');\n\n                if(!ec) {\n                    return;  \n                }\n                \n                if(ec.options.onblur === 'cancel') {\n                    $el.data('editableContainer').hide('onblur');\n                } else if(ec.options.onblur === 'submit') {\n                    $el.data('editableContainer').tip().find('form').submit();\n                }\n            });\n\n        },\n        \n        /**\n        Activates input of visible container (e.g. set focus)\n        @method activate()\n        **/         \n        activate: function() {\n            if(this.tip && this.tip().is(':visible') && this.$form) {\n               this.$form.data('editableform').input.activate(); \n            }\n        } \n\n    };\n\n    /**\n    jQuery method to initialize editableContainer.\n    \n    @method $().editableContainer(options)\n    @params {Object} options\n    @example\n    $('#edit').editableContainer({\n        type: 'text',\n        url: '/post',\n        pk: 1,\n        value: 'hello'\n    });\n    **/  \n    $.fn.editableContainer = function (option) {\n        var args = arguments;\n        return this.each(function () {\n            var $this = $(this),\n            dataKey = 'editableContainer', \n            data = $this.data(dataKey),\n            options = typeof option === 'object' && option,\n            Constructor = (options.mode === 'inline') ? Inline : Popup;             \n\n            if (!data) {\n                $this.data(dataKey, (data = new Constructor(this, options)));\n            }\n\n            if (typeof option === 'string') { //call method \n                data[option].apply(data, Array.prototype.slice.call(args, 1));\n            }            \n        });\n    };     \n\n    //store constructors\n    $.fn.editableContainer.Popup = Popup;\n    $.fn.editableContainer.Inline = Inline;\n\n    //defaults\n    $.fn.editableContainer.defaults = {\n        /**\n        Initial value of form input\n\n        @property value \n        @type mixed\n        @default null\n        @private\n        **/        \n        value: null,\n        /**\n        Placement of container relative to element. Can be <code>top|right|bottom|left</code>. Not used for inline container.\n\n        @property placement \n        @type string\n        @default 'top'\n        **/        \n        placement: 'top',\n        /**\n        Whether to hide container on save/cancel.\n\n        @property autohide \n        @type boolean\n        @default true\n        @private \n        **/        \n        autohide: true,\n        /**\n        Action when user clicks outside the container. Can be <code>cancel|submit|ignore</code>.  \n        Setting <code>ignore</code> allows to have several containers open. \n\n        @property onblur \n        @type string\n        @default 'cancel'\n        @since 1.1.1\n        **/        \n        onblur: 'cancel',\n        \n        /**\n        Animation speed (inline mode only)\n        @property anim \n        @type string\n        @default false\n        **/        \n        anim: false,\n        \n        /**\n        Mode of editable, can be `popup` or `inline` \n        \n        @property mode \n        @type string         \n        @default 'popup'\n        @since 1.4.0        \n        **/        \n        mode: 'popup'        \n    };\n\n    /* \n    * workaround to have 'destroyed' event to destroy popover when element is destroyed\n    * see http://stackoverflow.com/questions/2200494/jquery-trigger-event-when-an-element-is-removed-from-the-dom\n    */\n    jQuery.event.special.destroyed = {\n        remove: function(o) {\n            if (o.handler) {\n                o.handler();\n            }\n        }\n    };    \n\n}(window.jQuery));\n\n/**\n* Editable Inline \n* ---------------------\n*/\n(function ($) {\n    \"use strict\";\n    \n    //copy prototype from EditableContainer\n    //extend methods\n    $.extend($.fn.editableContainer.Inline.prototype, $.fn.editableContainer.Popup.prototype, {\n        containerName: 'editableform',\n        innerCss: '.editable-inline',\n        containerClass: 'editable-container editable-inline', //css class applied to container element\n                 \n        initContainer: function(){\n            //container is <span> element\n            this.$tip = $('<span></span>');\n            \n            //convert anim to miliseconds (int)\n            if(!this.options.anim) {\n                this.options.anim = 0;\n            }         \n        },\n        \n        splitOptions: function() {\n            //all options are passed to form\n            this.containerOptions = {};\n            this.formOptions = this.options;\n        },\n        \n        tip: function() {\n           return this.$tip; \n        },\n        \n        innerShow: function () {\n            this.$element.hide();\n            this.tip().insertAfter(this.$element).show();\n        }, \n        \n        innerHide: function () {\n            this.$tip.hide(this.options.anim, $.proxy(function() {\n                this.$element.show();\n                this.innerDestroy();\n            }, this)); \n        },\n        \n        innerDestroy: function() {\n            if(this.tip()) {\n                this.tip().empty().remove();\n            }\n        } \n    });\n\n}(window.jQuery));\n/**\nMakes editable any HTML element on the page. Applied as jQuery method.\n\n@class editable\n@uses editableContainer\n**/\n(function ($) {\n    \"use strict\";\n\n    var Editable = function (element, options) {\n        this.$element = $(element);\n        //data-* has more priority over js options: because dynamically created elements may change data-* \n        this.options = $.extend({}, $.fn.editable.defaults, options, $.fn.editableutils.getConfigData(this.$element));  \n        if(this.options.selector) {\n            this.initLive();\n        } else {\n            this.init();\n        }\n        \n        //check for transition support\n        if(this.options.highlight && !$.fn.editableutils.supportsTransitions()) {\n            this.options.highlight = false;\n        }\n    };\n\n    Editable.prototype = {\n        constructor: Editable, \n        init: function () {\n            var isValueByText = false, \n                doAutotext, finalize;\n\n            //name\n            this.options.name = this.options.name || this.$element.attr('id');\n             \n            //create input of specified type. Input needed already here to convert value for initial display (e.g. show text by id for select)\n            //also we set scope option to have access to element inside input specific callbacks (e. g. source as function)\n            this.options.scope = this.$element[0]; \n            this.input = $.fn.editableutils.createInput(this.options);\n            if(!this.input) {\n                return; \n            }            \n\n            //set value from settings or by element's text\n            if (this.options.value === undefined || this.options.value === null) {\n                this.value = this.input.html2value($.trim(this.$element.html()));\n                isValueByText = true;\n            } else {\n                /*\n                  value can be string when received from 'data-value' attribute\n                  for complext objects value can be set as json string in data-value attribute, \n                  e.g. data-value=\"{city: 'Moscow', street: 'Lenina'}\"\n                */\n                this.options.value = $.fn.editableutils.tryParseJson(this.options.value, true); \n                if(typeof this.options.value === 'string') {\n                    this.value = this.input.str2value(this.options.value);\n                } else {\n                    this.value = this.options.value;\n                }\n            }\n            \n            //add 'editable' class to every editable element\n            this.$element.addClass('editable');\n            \n            //specifically for \"textarea\" add class .editable-pre-wrapped to keep linebreaks\n            if(this.input.type === 'textarea') {\n                this.$element.addClass('editable-pre-wrapped');\n            }\n            \n            //attach handler activating editable. In disabled mode it just prevent default action (useful for links)\n            if(this.options.toggle !== 'manual') {\n                this.$element.addClass('editable-click');\n                this.$element.on(this.options.toggle + '.editable', $.proxy(function(e){\n                    //prevent following link if editable enabled\n                    if(!this.options.disabled) {\n                        e.preventDefault();\n                    }\n                    \n                    //stop propagation not required because in document click handler it checks event target\n                    //e.stopPropagation();\n                    \n                    if(this.options.toggle === 'mouseenter') {\n                        //for hover only show container\n                        this.show();\n                    } else {\n                        //when toggle='click' we should not close all other containers as they will be closed automatically in document click listener\n                        var closeAll = (this.options.toggle !== 'click');\n                        this.toggle(closeAll);\n                    }\n                }, this));\n            } else {\n                this.$element.attr('tabindex', -1); //do not stop focus on element when toggled manually\n            }\n            \n            //if display is function it's far more convinient to have autotext = always to render correctly on init\n            //see https://github.com/vitalets/x-editable-yii/issues/34\n            if(typeof this.options.display === 'function') {\n                this.options.autotext = 'always';\n            }\n            \n            //check conditions for autotext:\n            switch(this.options.autotext) {\n              case 'always':\n               doAutotext = true;\n              break;\n              case 'auto':\n                //if element text is empty and value is defined and value not generated by text --> run autotext\n                doAutotext = !$.trim(this.$element.text()).length && this.value !== null && this.value !== undefined && !isValueByText;\n              break;\n              default:\n               doAutotext = false;\n            }\n\n            //depending on autotext run render() or just finilize init\n            $.when(doAutotext ? this.render() : true).then($.proxy(function() {\n                if(this.options.disabled) {\n                    this.disable();\n                } else {\n                    this.enable(); \n                }\n               /**        \n               Fired when element was initialized by `$().editable()` method. \n               Please note that you should setup `init` handler **before** applying `editable`. \n                              \n               @event init \n               @param {Object} event event object\n               @param {Object} editable editable instance (as here it cannot accessed via data('editable'))\n               @since 1.2.0\n               @example\n               $('#username').on('init', function(e, editable) {\n                   alert('initialized ' + editable.options.name);\n               });\n               $('#username').editable();\n               **/                  \n                this.$element.triggerHandler('init', this);\n            }, this));\n        },\n\n        /*\n         Initializes parent element for live editables \n        */\n        initLive: function() {\n           //store selector \n           var selector = this.options.selector;\n           //modify options for child elements\n           this.options.selector = false; \n           this.options.autotext = 'never';\n           //listen toggle events\n           this.$element.on(this.options.toggle + '.editable', selector, $.proxy(function(e){\n               var $target = $(e.target);\n               if(!$target.data('editable')) {\n                   //if delegated element initially empty, we need to clear it's text (that was manually set to `empty` by user)\n                   //see https://github.com/vitalets/x-editable/issues/137 \n                   if($target.hasClass(this.options.emptyclass)) {\n                      $target.empty();\n                   }\n                   $target.editable(this.options).trigger(e);\n               }\n           }, this)); \n        },\n        \n        /*\n        Renders value into element's text.\n        Can call custom display method from options.\n        Can return deferred object.\n        @method render()\n        @param {mixed} response server response (if exist) to pass into display function\n        */          \n        render: function(response) {\n            //do not display anything\n            if(this.options.display === false) {\n                return;\n            }\n            \n            //if input has `value2htmlFinal` method, we pass callback in third param to be called when source is loaded\n            if(this.input.value2htmlFinal) {\n                return this.input.value2html(this.value, this.$element[0], this.options.display, response); \n            //if display method defined --> use it    \n            } else if(typeof this.options.display === 'function') {\n                return this.options.display.call(this.$element[0], this.value, response);\n            //else use input's original value2html() method    \n            } else {\n                return this.input.value2html(this.value, this.$element[0]); \n            }\n        },\n        \n        /**\n        Enables editable\n        @method enable()\n        **/          \n        enable: function() {\n            this.options.disabled = false;\n            this.$element.removeClass('editable-disabled');\n            this.handleEmpty(this.isEmpty);\n            if(this.options.toggle !== 'manual') {\n                if(this.$element.attr('tabindex') === '-1') {    \n                    this.$element.removeAttr('tabindex');                                \n                }\n            }\n        },\n        \n        /**\n        Disables editable\n        @method disable()\n        **/         \n        disable: function() {\n            this.options.disabled = true; \n            this.hide();           \n            this.$element.addClass('editable-disabled');\n            this.handleEmpty(this.isEmpty);\n            //do not stop focus on this element\n            this.$element.attr('tabindex', -1);                \n        },\n        \n        /**\n        Toggles enabled / disabled state of editable element\n        @method toggleDisabled()\n        **/         \n        toggleDisabled: function() {\n            if(this.options.disabled) {\n                this.enable();\n            } else { \n                this.disable(); \n            }\n        },  \n        \n        /**\n        Sets new option\n        \n        @method option(key, value)\n        @param {string|object} key option name or object with several options\n        @param {mixed} value option new value\n        @example\n        $('.editable').editable('option', 'pk', 2);\n        **/          \n        option: function(key, value) {\n            //set option(s) by object\n            if(key && typeof key === 'object') {\n               $.each(key, $.proxy(function(k, v){\n                  this.option($.trim(k), v); \n               }, this)); \n               return;\n            }\n\n            //set option by string             \n            this.options[key] = value;                          \n            \n            //disabled\n            if(key === 'disabled') {\n               return value ? this.disable() : this.enable();\n            } \n            \n            //value\n            if(key === 'value') {\n                this.setValue(value);\n            }\n            \n            //transfer new option to container! \n            if(this.container) {\n                this.container.option(key, value);  \n            }\n             \n            //pass option to input directly (as it points to the same in form)\n            if(this.input.option) {\n                this.input.option(key, value);\n            }\n            \n        },              \n        \n        /*\n        * set emptytext if element is empty\n        */\n        handleEmpty: function (isEmpty) {\n            //do not handle empty if we do not display anything\n            if(this.options.display === false) {\n                return;\n            }\n\n            /* \n            isEmpty may be set directly as param of method.\n            It is required when we enable/disable field and can't rely on content \n            as node content is text: \"Empty\" that is not empty %)\n            */\n            if(isEmpty !== undefined) { \n                this.isEmpty = isEmpty;\n            } else {\n                //detect empty\n                //for some inputs we need more smart check\n                //e.g. wysihtml5 may have <br>, <p></p>, <img>\n                if(typeof(this.input.isEmpty) === 'function') {\n                    this.isEmpty = this.input.isEmpty(this.$element);                    \n                } else {\n                    this.isEmpty = $.trim(this.$element.html()) === '';\n                }\n            }           \n            \n            //emptytext shown only for enabled\n            if(!this.options.disabled) {\n                if (this.isEmpty) {\n                    this.$element.html(this.options.emptytext);\n                    if(this.options.emptyclass) {\n                        this.$element.addClass(this.options.emptyclass);\n                    }\n                } else if(this.options.emptyclass) {\n                    this.$element.removeClass(this.options.emptyclass);\n                }\n            } else {\n                //below required if element disable property was changed\n                if(this.isEmpty) {\n                    this.$element.empty();\n                    if(this.options.emptyclass) {\n                        this.$element.removeClass(this.options.emptyclass);\n                    }\n                }\n            }\n        },        \n        \n        /**\n        Shows container with form\n        @method show()\n        @param {boolean} closeAll Whether to close all other editable containers when showing this one. Default true.\n        **/  \n        show: function (closeAll) {\n            if(this.options.disabled) {\n                return;\n            }\n            \n            //init editableContainer: popover, tooltip, inline, etc..\n            if(!this.container) {\n                var containerOptions = $.extend({}, this.options, {\n                    value: this.value,\n                    input: this.input //pass input to form (as it is already created)\n                });\n                this.$element.editableContainer(containerOptions);\n                //listen `save` event \n                this.$element.on(\"save.internal\", $.proxy(this.save, this));\n                this.container = this.$element.data('editableContainer'); \n            } else if(this.container.tip().is(':visible')) {\n                return;\n            }      \n            \n            //show container\n            this.container.show(closeAll);\n        },\n        \n        /**\n        Hides container with form\n        @method hide()\n        **/       \n        hide: function () {   \n            if(this.container) {  \n                this.container.hide();\n            }\n        },\n        \n        /**\n        Toggles container visibility (show / hide)\n        @method toggle()\n        @param {boolean} closeAll Whether to close all other editable containers when showing this one. Default true.\n        **/  \n        toggle: function(closeAll) {\n            if(this.container && this.container.tip().is(':visible')) {\n                this.hide();\n            } else {\n                this.show(closeAll);\n            }\n        },\n        \n        /*\n        * called when form was submitted\n        */          \n        save: function(e, params) {\n            //mark element with unsaved class if needed\n            if(this.options.unsavedclass) {\n                /*\n                 Add unsaved css to element if:\n                  - url is not user's function \n                  - value was not sent to server\n                  - params.response === undefined, that means data was not sent\n                  - value changed \n                */\n                var sent = false;\n                sent = sent || typeof this.options.url === 'function';\n                sent = sent || this.options.display === false; \n                sent = sent || params.response !== undefined; \n                sent = sent || (this.options.savenochange && this.input.value2str(this.value) !== this.input.value2str(params.newValue)); \n                \n                if(sent) {\n                    this.$element.removeClass(this.options.unsavedclass); \n                } else {\n                    this.$element.addClass(this.options.unsavedclass);                    \n                }\n            }\n            \n            //highlight when saving\n            if(this.options.highlight) {\n                var $e = this.$element,\n                    bgColor = $e.css('background-color');\n                    \n                $e.css('background-color', this.options.highlight);\n                setTimeout(function(){\n                    if(bgColor === 'transparent') {\n                        bgColor = ''; \n                    }\n                    $e.css('background-color', bgColor);\n                    $e.addClass('editable-bg-transition');\n                    setTimeout(function(){\n                       $e.removeClass('editable-bg-transition');  \n                    }, 1700);\n                }, 10);\n            }\n            \n            //set new value\n            this.setValue(params.newValue, false, params.response);\n            \n            /**        \n            Fired when new value was submitted. You can use <code>$(this).data('editable')</code> to access to editable instance\n            \n            @event save \n            @param {Object} event event object\n            @param {Object} params additional params\n            @param {mixed} params.newValue submitted value\n            @param {Object} params.response ajax response\n            @example\n            $('#username').on('save', function(e, params) {\n                alert('Saved value: ' + params.newValue);\n            });\n            **/\n            //event itself is triggered by editableContainer. Description here is only for documentation              \n        },\n\n        validate: function () {\n            if (typeof this.options.validate === 'function') {\n                return this.options.validate.call(this, this.value);\n            }\n        },\n        \n        /**\n        Sets new value of editable\n        @method setValue(value, convertStr)\n        @param {mixed} value new value \n        @param {boolean} convertStr whether to convert value from string to internal format\n        **/         \n        setValue: function(value, convertStr, response) {\n            if(convertStr) {\n                this.value = this.input.str2value(value);\n            } else {\n                this.value = value;\n            }\n            if(this.container) {\n                this.container.option('value', this.value);\n            }\n            $.when(this.render(response))\n            .then($.proxy(function() {\n                this.handleEmpty();\n            }, this));\n        },\n        \n        /**\n        Activates input of visible container (e.g. set focus)\n        @method activate()\n        **/         \n        activate: function() {\n            if(this.container) {\n               this.container.activate(); \n            }\n        },\n        \n        /**\n        Removes editable feature from element\n        @method destroy()\n        **/        \n        destroy: function() {\n            this.disable();\n            \n            if(this.container) {\n               this.container.destroy(); \n            }\n            \n            this.input.destroy();\n\n            if(this.options.toggle !== 'manual') {\n                this.$element.removeClass('editable-click');\n                this.$element.off(this.options.toggle + '.editable');\n            } \n            \n            this.$element.off(\"save.internal\");\n            \n            this.$element.removeClass('editable editable-open editable-disabled');\n            this.$element.removeData('editable');\n        }        \n    };\n\n    /* EDITABLE PLUGIN DEFINITION\n    * ======================= */\n\n    /**\n    jQuery method to initialize editable element.\n    \n    @method $().editable(options)\n    @params {Object} options\n    @example\n    $('#username').editable({\n        type: 'text',\n        url: '/post',\n        pk: 1\n    });\n    **/\n    $.fn.editable = function (option) {\n        //special API methods returning non-jquery object\n        var result = {}, args = arguments, datakey = 'editable';\n        switch (option) {\n            /**\n            Runs client-side validation for all matched editables\n            \n            @method validate()\n            @returns {Object} validation errors map\n            @example\n            $('#username, #fullname').editable('validate');\n            // possible result:\n            {\n              username: \"username is required\",\n              fullname: \"fullname should be minimum 3 letters length\"\n            }\n            **/\n            case 'validate':\n                this.each(function () {\n                    var $this = $(this), data = $this.data(datakey), error;\n                    if (data && (error = data.validate())) {\n                        result[data.options.name] = error;\n                    }\n                });\n            return result;\n\n            /**\n            Returns current values of editable elements.   \n            Note that it returns an **object** with name-value pairs, not a value itself. It allows to get data from several elements.    \n            If value of some editable is `null` or `undefined` it is excluded from result object.\n            When param `isSingle` is set to **true** - it is supposed you have single element and will return value of editable instead of object.   \n             \n            @method getValue()\n            @param {bool} isSingle whether to return just value of single element\n            @returns {Object} object of element names and values\n            @example\n            $('#username, #fullname').editable('getValue');\n            //result:\n            {\n            username: \"superuser\",\n            fullname: \"John\"\n            }\n            //isSingle = true\n            $('#username').editable('getValue', true);\n            //result \"superuser\" \n            **/\n            case 'getValue':\n                if(arguments.length === 2 && arguments[1] === true) { //isSingle = true\n                    result = this.eq(0).data(datakey).value;\n                } else {\n                    this.each(function () {\n                        var $this = $(this), data = $this.data(datakey);\n                        if (data && data.value !== undefined && data.value !== null) {\n                            result[data.options.name] = data.input.value2submit(data.value);\n                        }\n                    });\n                }\n            return result;\n\n            /**\n            This method collects values from several editable elements and submit them all to server.   \n            Internally it runs client-side validation for all fields and submits only in case of success.  \n            See <a href=\"#newrecord\">creating new records</a> for details.  \n            Since 1.5.1 `submit` can be applied to single element to send data programmatically. In that case\n            `url`, `success` and `error` is taken from initial options and you can just call `$('#username').editable('submit')`. \n            \n            @method submit(options)\n            @param {object} options \n            @param {object} options.url url to submit data \n            @param {object} options.data additional data to submit\n            @param {object} options.ajaxOptions additional ajax options\n            @param {function} options.error(obj) error handler \n            @param {function} options.success(obj,config) success handler\n            @returns {Object} jQuery object\n            **/\n            case 'submit':  //collects value, validate and submit to server for creating new record\n                var config = arguments[1] || {},\n                $elems = this,\n                errors = this.editable('validate');\n\n                // validation ok\n                if($.isEmptyObject(errors)) {\n                    var ajaxOptions = {};\n                                                      \n                    // for single element use url, success etc from options\n                    if($elems.length === 1) {\n                        var editable = $elems.data('editable');\n                        //standard params\n                        var params = {\n                            name: editable.options.name || '',\n                            value: editable.input.value2submit(editable.value),\n                            pk: (typeof editable.options.pk === 'function') ? \n                                editable.options.pk.call(editable.options.scope) : \n                                editable.options.pk \n                        };\n\n                        //additional params\n                        if(typeof editable.options.params === 'function') {\n                            params = editable.options.params.call(editable.options.scope, params);  \n                        } else {\n                            //try parse json in single quotes (from data-params attribute)\n                            editable.options.params = $.fn.editableutils.tryParseJson(editable.options.params, true);   \n                            $.extend(params, editable.options.params);\n                        }\n\n                        ajaxOptions = {\n                            url: editable.options.url,\n                            data: params,\n                            type: 'POST'  \n                        };\n                        \n                        // use success / error from options \n                        config.success = config.success || editable.options.success;\n                        config.error = config.error || editable.options.error;\n                        \n                    // multiple elements\n                    } else {\n                        var values = this.editable('getValue'); \n                        \n                        ajaxOptions = {\n                            url: config.url,\n                            data: values, \n                            type: 'POST'\n                        };                        \n                    }                    \n\n                    // ajax success callabck (response 200 OK)\n                    ajaxOptions.success = typeof config.success === 'function' ? function(response) {\n                            config.success.call($elems, response, config);\n                        } : $.noop;\n                                  \n                    // ajax error callabck\n                    ajaxOptions.error = typeof config.error === 'function' ? function() {\n                             config.error.apply($elems, arguments);\n                        } : $.noop;\n                       \n                    // extend ajaxOptions    \n                    if(config.ajaxOptions) { \n                        $.extend(ajaxOptions, config.ajaxOptions);\n                    }\n                    \n                    // extra data \n                    if(config.data) {\n                        $.extend(ajaxOptions.data, config.data);\n                    }                     \n                    \n                    // perform ajax request\n                    $.ajax(ajaxOptions);\n                } else { //client-side validation error\n                    if(typeof config.error === 'function') {\n                        config.error.call($elems, errors);\n                    }\n                }\n            return this;\n        }\n\n        //return jquery object\n        return this.each(function () {\n            var $this = $(this), \n                data = $this.data(datakey), \n                options = typeof option === 'object' && option;\n\n            //for delegated targets do not store `editable` object for element\n            //it's allows several different selectors.\n            //see: https://github.com/vitalets/x-editable/issues/312    \n            if(options && options.selector) {\n                data = new Editable(this, options);\n                return; \n            }    \n            \n            if (!data) {\n                $this.data(datakey, (data = new Editable(this, options)));\n            }\n\n            if (typeof option === 'string') { //call method \n                data[option].apply(data, Array.prototype.slice.call(args, 1));\n            } \n        });\n    };    \n            \n\n    $.fn.editable.defaults = {\n        /**\n        Type of input. Can be <code>text|textarea|select|date|checklist</code> and more\n\n        @property type \n        @type string\n        @default 'text'\n        **/\n        type: 'text',        \n        /**\n        Sets disabled state of editable\n\n        @property disabled \n        @type boolean\n        @default false\n        **/         \n        disabled: false,\n        /**\n        How to toggle editable. Can be <code>click|dblclick|mouseenter|manual</code>.   \n        When set to <code>manual</code> you should manually call <code>show/hide</code> methods of editable.    \n        **Note**: if you call <code>show</code> or <code>toggle</code> inside **click** handler of some DOM element, \n        you need to apply <code>e.stopPropagation()</code> because containers are being closed on any click on document.\n        \n        @example\n        $('#edit-button').click(function(e) {\n            e.stopPropagation();\n            $('#username').editable('toggle');\n        });\n\n        @property toggle \n        @type string\n        @default 'click'\n        **/          \n        toggle: 'click',\n        /**\n        Text shown when element is empty.\n\n        @property emptytext \n        @type string\n        @default 'Empty'\n        **/         \n        emptytext: 'Empty',\n        /**\n        Allows to automatically set element's text based on it's value. Can be <code>auto|always|never</code>. Useful for select and date.\n        For example, if dropdown list is <code>{1: 'a', 2: 'b'}</code> and element's value set to <code>1</code>, it's html will be automatically set to <code>'a'</code>.  \n        <code>auto</code> - text will be automatically set only if element is empty.  \n        <code>always|never</code> - always(never) try to set element's text.\n\n        @property autotext \n        @type string\n        @default 'auto'\n        **/          \n        autotext: 'auto', \n        /**\n        Initial value of input. If not set, taken from element's text.  \n        Note, that if element's text is empty - text is automatically generated from value and can be customized (see `autotext` option).  \n        For example, to display currency sign:\n        @example\n        <a id=\"price\" data-type=\"text\" data-value=\"100\"></a>\n        <script>\n        $('#price').editable({\n            ...\n            display: function(value) {\n              $(this).text(value + '$');\n            } \n        }) \n        </script>\n                \n        @property value \n        @type mixed\n        @default element's text\n        **/\n        value: null,\n        /**\n        Callback to perform custom displaying of value in element's text.  \n        If `null`, default input's display used.  \n        If `false`, no displaying methods will be called, element's text will never change.  \n        Runs under element's scope.  \n        _**Parameters:**_  \n        \n        * `value` current value to be displayed\n        * `response` server response (if display called after ajax submit), since 1.4.0\n         \n        For _inputs with source_ (select, checklist) parameters are different:  \n          \n        * `value` current value to be displayed\n        * `sourceData` array of items for current input (e.g. dropdown items) \n        * `response` server response (if display called after ajax submit), since 1.4.0\n                  \n        To get currently selected items use `$.fn.editableutils.itemsByValue(value, sourceData)`.\n        \n        @property display \n        @type function|boolean\n        @default null\n        @since 1.2.0\n        @example\n        display: function(value, sourceData) {\n           //display checklist as comma-separated values\n           var html = [],\n               checked = $.fn.editableutils.itemsByValue(value, sourceData);\n               \n           if(checked.length) {\n               $.each(checked, function(i, v) { html.push($.fn.editableutils.escape(v.text)); });\n               $(this).html(html.join(', '));\n           } else {\n               $(this).empty(); \n           }\n        }\n        **/          \n        display: null,\n        /**\n        Css class applied when editable text is empty.\n\n        @property emptyclass \n        @type string\n        @since 1.4.1        \n        @default editable-empty\n        **/        \n        emptyclass: 'editable-empty',\n        /**\n        Css class applied when value was stored but not sent to server (`pk` is empty or `send = 'never'`).  \n        You may set it to `null` if you work with editables locally and submit them together.  \n\n        @property unsavedclass \n        @type string\n        @since 1.4.1        \n        @default editable-unsaved\n        **/        \n        unsavedclass: 'editable-unsaved',\n        /**\n        If selector is provided, editable will be delegated to the specified targets.  \n        Usefull for dynamically generated DOM elements.  \n        **Please note**, that delegated targets can't be initialized with `emptytext` and `autotext` options, \n        as they actually become editable only after first click.  \n        You should manually set class `editable-click` to these elements.  \n        Also, if element originally empty you should add class `editable-empty`, set `data-value=\"\"` and write emptytext into element:\n\n        @property selector \n        @type string\n        @since 1.4.1        \n        @default null\n        @example\n        <div id=\"user\">\n          <!-- empty -->\n          <a href=\"#\" data-name=\"username\" data-type=\"text\" class=\"editable-click editable-empty\" data-value=\"\" title=\"Username\">Empty</a>\n          <!-- non-empty -->\n          <a href=\"#\" data-name=\"group\" data-type=\"select\" data-source=\"/groups\" data-value=\"1\" class=\"editable-click\" title=\"Group\">Operator</a>\n        </div>     \n        \n        <script>\n        $('#user').editable({\n            selector: 'a',\n            url: '/post',\n            pk: 1\n        });\n        </script>\n        **/         \n        selector: null,\n        /**\n        Color used to highlight element after update. Implemented via CSS3 transition, works in modern browsers.\n        \n        @property highlight \n        @type string|boolean\n        @since 1.4.5        \n        @default #FFFF80 \n        **/\n        highlight: '#FFFF80'\n    };\n    \n}(window.jQuery));\n\n/**\nAbstractInput - base class for all editable inputs.\nIt defines interface to be implemented by any input type.\nTo create your own input you can inherit from this class.\n\n@class abstractinput\n**/\n(function ($) {\n    \"use strict\";\n\n    //types\n    $.fn.editabletypes = {};\n\n    var AbstractInput = function () { };\n\n    AbstractInput.prototype = {\n       /**\n        Initializes input\n\n        @method init() \n        **/\n       init: function(type, options, defaults) {\n           this.type = type;\n           this.options = $.extend({}, defaults, options);\n       },\n\n       /*\n       this method called before render to init $tpl that is inserted in DOM\n       */\n       prerender: function() {\n           this.$tpl = $(this.options.tpl); //whole tpl as jquery object    \n           this.$input = this.$tpl;         //control itself, can be changed in render method\n           this.$clear = null;              //clear button\n           this.error = null;               //error message, if input cannot be rendered           \n       },\n       \n       /**\n        Renders input from tpl. Can return jQuery deferred object.\n        Can be overwritten in child objects\n\n        @method render()\n       **/\n       render: function() {\n\n       }, \n\n       /**\n        Sets element's html by value. \n\n        @method value2html(value, element)\n        @param {mixed} value\n        @param {DOMElement} element\n       **/\n       value2html: function(value, element) {\n           $(element)[this.options.escape ? 'text' : 'html']($.trim(value));\n       },\n\n       /**\n        Converts element's html to value\n\n        @method html2value(html)\n        @param {string} html\n        @returns {mixed}\n       **/\n       html2value: function(html) {\n           return $('<div>').html(html).text();\n       },\n\n       /**\n        Converts value to string (for internal compare). For submitting to server used value2submit().\n\n        @method value2str(value) \n        @param {mixed} value\n        @returns {string}\n       **/\n       value2str: function(value) {\n           return value;\n       }, \n\n       /**\n        Converts string received from server into value. Usually from `data-value` attribute.\n\n        @method str2value(str)\n        @param {string} str\n        @returns {mixed}\n       **/\n       str2value: function(str) {\n           return str;\n       }, \n       \n       /**\n        Converts value for submitting to server. Result can be string or object.\n\n        @method value2submit(value) \n        @param {mixed} value\n        @returns {mixed}\n       **/\n       value2submit: function(value) {\n           return value;\n       },\n\n       /**\n        Sets value of input.\n\n        @method value2input(value) \n        @param {mixed} value\n       **/\n       value2input: function(value) {\n           this.$input.val(value);\n       },\n\n       /**\n        Returns value of input. Value can be object (e.g. datepicker)\n\n        @method input2value() \n       **/\n       input2value: function() { \n           return this.$input.val();\n       }, \n\n       /**\n        Activates input. For text it sets focus.\n\n        @method activate() \n       **/\n       activate: function() {\n           if(this.$input.is(':visible')) {\n               this.$input.focus();\n           }\n       },\n\n       /**\n        Creates input.\n\n        @method clear() \n       **/        \n       clear: function() {\n           this.$input.val(null);\n       },\n\n       /**\n        method to escape html.\n       **/\n       escape: function(str) {\n           return $('<div>').text(str).html();\n       },\n       \n       /**\n        attach handler to automatically submit form when value changed (useful when buttons not shown)\n       **/\n       autosubmit: function() {\n        \n       },\n       \n       /**\n       Additional actions when destroying element \n       **/\n       destroy: function() {\n       },\n\n       // -------- helper functions --------\n       setClass: function() {          \n           if(this.options.inputclass) {\n               this.$input.addClass(this.options.inputclass); \n           } \n       },\n\n       setAttr: function(attr) {\n           if (this.options[attr] !== undefined && this.options[attr] !== null) {\n               this.$input.attr(attr, this.options[attr]);\n           } \n       },\n       \n       option: function(key, value) {\n            this.options[key] = value;\n       }\n       \n    };\n        \n    AbstractInput.defaults = {  \n        /**\n        HTML template of input. Normally you should not change it.\n\n        @property tpl \n        @type string\n        @default ''\n        **/   \n        tpl: '',\n        /**\n        CSS class automatically applied to input\n        \n        @property inputclass \n        @type string\n        @default null\n        **/         \n        inputclass: null,\n        \n        /**\n        If `true` - html will be escaped in content of element via $.text() method.  \n        If `false` - html will not be escaped, $.html() used.  \n        When you use own `display` function, this option obviosly has no effect.\n        \n        @property escape \n        @type boolean\n        @since 1.5.0\n        @default true\n        **/         \n        escape: true,\n                \n        //scope for external methods (e.g. source defined as function)\n        //for internal use only\n        scope: null,\n        \n        //need to re-declare showbuttons here to get it's value from common config (passed only options existing in defaults)\n        showbuttons: true \n    };\n    \n    $.extend($.fn.editabletypes, {abstractinput: AbstractInput});\n        \n}(window.jQuery));\n\n/**\nList - abstract class for inputs that have source option loaded from js array or via ajax\n\n@class list\n@extends abstractinput\n**/\n(function ($) {\n    \"use strict\";\n    \n    var List = function (options) {\n       \n    };\n\n    $.fn.editableutils.inherit(List, $.fn.editabletypes.abstractinput);\n\n    $.extend(List.prototype, {\n        render: function () {\n            var deferred = $.Deferred();\n\n            this.error = null;\n            this.onSourceReady(function () {\n                this.renderList();\n                deferred.resolve();\n            }, function () {\n                this.error = this.options.sourceError;\n                deferred.resolve();\n            });\n\n            return deferred.promise();\n        },\n\n        html2value: function (html) {\n            return null; //can't set value by text\n        },\n        \n        value2html: function (value, element, display, response) {\n            var deferred = $.Deferred(),\n                success = function () {\n                    if(typeof display === 'function') {\n                        //custom display method\n                        display.call(element, value, this.sourceData, response); \n                    } else {\n                        this.value2htmlFinal(value, element);\n                    }\n                    deferred.resolve();\n               };\n            \n            //for null value just call success without loading source\n            if(value === null) {\n               success.call(this);   \n            } else {\n               this.onSourceReady(success, function () { deferred.resolve(); });\n            }\n\n            return deferred.promise();\n        },  \n\n        // ------------- additional functions ------------\n\n        onSourceReady: function (success, error) {\n            //run source if it function\n            var source;\n            if ($.isFunction(this.options.source)) {\n                source = this.options.source.call(this.options.scope);\n                this.sourceData = null;\n                //note: if function returns the same source as URL - sourceData will be taken from cahce and no extra request performed\n            } else {\n                source = this.options.source;\n            }            \n            \n            //if allready loaded just call success\n            if(this.options.sourceCache && $.isArray(this.sourceData)) {\n                success.call(this);\n                return; \n            }\n\n            //try parse json in single quotes (for double quotes jquery does automatically)\n            try {\n                source = $.fn.editableutils.tryParseJson(source, false);\n            } catch (e) {\n                error.call(this);\n                return;\n            }\n\n            //loading from url\n            if (typeof source === 'string') {\n                //try to get sourceData from cache\n                if(this.options.sourceCache) {\n                    var cacheID = source,\n                    cache;\n\n                    if (!$(document).data(cacheID)) {\n                        $(document).data(cacheID, {});\n                    }\n                    cache = $(document).data(cacheID);\n\n                    //check for cached data\n                    if (cache.loading === false && cache.sourceData) { //take source from cache\n                        this.sourceData = cache.sourceData;\n                        this.doPrepend();\n                        success.call(this);\n                        return;\n                    } else if (cache.loading === true) { //cache is loading, put callback in stack to be called later\n                        cache.callbacks.push($.proxy(function () {\n                            this.sourceData = cache.sourceData;\n                            this.doPrepend();\n                            success.call(this);\n                        }, this));\n\n                        //also collecting error callbacks\n                        cache.err_callbacks.push($.proxy(error, this));\n                        return;\n                    } else { //no cache yet, activate it\n                        cache.loading = true;\n                        cache.callbacks = [];\n                        cache.err_callbacks = [];\n                    }\n                }\n                \n                //ajaxOptions for source. Can be overwritten bt options.sourceOptions\n                var ajaxOptions = $.extend({\n                    url: source,\n                    type: 'get',\n                    cache: false,\n                    dataType: 'json',\n                    success: $.proxy(function (data) {\n                        if(cache) {\n                            cache.loading = false;\n                        }\n                        this.sourceData = this.makeArray(data);\n                        if($.isArray(this.sourceData)) {\n                            if(cache) {\n                                //store result in cache\n                                cache.sourceData = this.sourceData;\n                                //run success callbacks for other fields waiting for this source\n                                $.each(cache.callbacks, function () { this.call(); }); \n                            }\n                            this.doPrepend();\n                            success.call(this);\n                        } else {\n                            error.call(this);\n                            if(cache) {\n                                //run error callbacks for other fields waiting for this source\n                                $.each(cache.err_callbacks, function () { this.call(); }); \n                            }\n                        }\n                    }, this),\n                    error: $.proxy(function () {\n                        error.call(this);\n                        if(cache) {\n                             cache.loading = false;\n                             //run error callbacks for other fields\n                             $.each(cache.err_callbacks, function () { this.call(); }); \n                        }\n                    }, this)\n                }, this.options.sourceOptions);\n                \n                //loading sourceData from server\n                $.ajax(ajaxOptions);\n                \n            } else { //options as json/array\n                this.sourceData = this.makeArray(source);\n                    \n                if($.isArray(this.sourceData)) {\n                    this.doPrepend();\n                    success.call(this);   \n                } else {\n                    error.call(this);\n                }\n            }\n        },\n\n        doPrepend: function () {\n            if(this.options.prepend === null || this.options.prepend === undefined) {\n                return;  \n            }\n            \n            if(!$.isArray(this.prependData)) {\n                //run prepend if it is function (once)\n                if ($.isFunction(this.options.prepend)) {\n                    this.options.prepend = this.options.prepend.call(this.options.scope);\n                }\n              \n                //try parse json in single quotes\n                this.options.prepend = $.fn.editableutils.tryParseJson(this.options.prepend, true);\n                \n                //convert prepend from string to object\n                if (typeof this.options.prepend === 'string') {\n                    this.options.prepend = {'': this.options.prepend};\n                }\n                \n                this.prependData = this.makeArray(this.options.prepend);\n            }\n\n            if($.isArray(this.prependData) && $.isArray(this.sourceData)) {\n                this.sourceData = this.prependData.concat(this.sourceData);\n            }\n        },\n\n        /*\n         renders input list\n        */\n        renderList: function() {\n            // this method should be overwritten in child class\n        },\n       \n         /*\n         set element's html by value\n        */\n        value2htmlFinal: function(value, element) {\n            // this method should be overwritten in child class\n        },        \n\n        /**\n        * convert data to array suitable for sourceData, e.g. [{value: 1, text: 'abc'}, {...}]\n        */\n        makeArray: function(data) {\n            var count, obj, result = [], item, iterateItem;\n            if(!data || typeof data === 'string') {\n                return null; \n            }\n\n            if($.isArray(data)) { //array\n                /* \n                   function to iterate inside item of array if item is object.\n                   Caclulates count of keys in item and store in obj. \n                */\n                iterateItem = function (k, v) {\n                    obj = {value: k, text: v};\n                    if(count++ >= 2) {\n                        return false;// exit from `each` if item has more than one key.\n                    }\n                };\n            \n                for(var i = 0; i < data.length; i++) {\n                    item = data[i]; \n                    if(typeof item === 'object') {\n                        count = 0; //count of keys inside item\n                        $.each(item, iterateItem);\n                        //case: [{val1: 'text1'}, {val2: 'text2} ...]\n                        if(count === 1) { \n                            result.push(obj); \n                            //case: [{value: 1, text: 'text1'}, {value: 2, text: 'text2'}, ...]\n                        } else if(count > 1) {\n                            //removed check of existance: item.hasOwnProperty('value') && item.hasOwnProperty('text')\n                            if(item.children) {\n                                item.children = this.makeArray(item.children);   \n                            }\n                            result.push(item);\n                        }\n                    } else {\n                        //case: ['text1', 'text2' ...]\n                        result.push({value: item, text: item}); \n                    }\n                }\n            } else {  //case: {val1: 'text1', val2: 'text2, ...}\n                $.each(data, function (k, v) {\n                    result.push({value: k, text: v});\n                });  \n            }\n            return result;\n        },\n        \n        option: function(key, value) {\n            this.options[key] = value;\n            if(key === 'source') {\n                this.sourceData = null;\n            }\n            if(key === 'prepend') {\n                this.prependData = null;\n            }            \n        }        \n\n    });      \n\n    List.defaults = $.extend({}, $.fn.editabletypes.abstractinput.defaults, {\n        /**\n        Source data for list.  \n        If **array** - it should be in format: `[{value: 1, text: \"text1\"}, {value: 2, text: \"text2\"}, ...]`  \n        For compability, object format is also supported: `{\"1\": \"text1\", \"2\": \"text2\" ...}` but it does not guarantee elements order.\n        \n        If **string** - considered ajax url to load items. In that case results will be cached for fields with the same source and name. See also `sourceCache` option.\n          \n        If **function**, it should return data in format above (since 1.4.0).\n        \n        Since 1.4.1 key `children` supported to render OPTGROUP (for **select** input only).  \n        `[{text: \"group1\", children: [{value: 1, text: \"text1\"}, {value: 2, text: \"text2\"}]}, ...]` \n\n\t\t\n        @property source \n        @type string | array | object | function\n        @default null\n        **/         \n        source: null, \n        /**\n        Data automatically prepended to the beginning of dropdown list.\n        \n        @property prepend \n        @type string | array | object | function\n        @default false\n        **/         \n        prepend: false,\n        /**\n        Error message when list cannot be loaded (e.g. ajax error)\n        \n        @property sourceError \n        @type string\n        @default Error when loading list\n        **/          \n        sourceError: 'Error when loading list',\n        /**\n        if <code>true</code> and source is **string url** - results will be cached for fields with the same source.    \n        Usefull for editable column in grid to prevent extra requests.\n        \n        @property sourceCache \n        @type boolean\n        @default true\n        @since 1.2.0\n        **/        \n        sourceCache: true,\n        /**\n        Additional ajax options to be used in $.ajax() when loading list from server.\n        Useful to send extra parameters (`data` key) or change request method (`type` key).\n        \n        @property sourceOptions \n        @type object|function\n        @default null\n        @since 1.5.0\n        **/        \n        sourceOptions: null\n    });\n\n    $.fn.editabletypes.list = List;      \n\n}(window.jQuery));\n\n/**\nText input\n\n@class text\n@extends abstractinput\n@final\n@example\n<a href=\"#\" id=\"username\" data-type=\"text\" data-pk=\"1\">awesome</a>\n<script>\n$(function(){\n    $('#username').editable({\n        url: '/post',\n        title: 'Enter username'\n    });\n});\n</script>\n**/\n(function ($) {\n    \"use strict\";\n    \n    var Text = function (options) {\n        this.init('text', options, Text.defaults);\n    };\n\n    $.fn.editableutils.inherit(Text, $.fn.editabletypes.abstractinput);\n\n    $.extend(Text.prototype, {\n        render: function() {\n           this.renderClear();\n           this.setClass();\n           this.setAttr('placeholder');\n        },\n        \n        activate: function() {\n            if(this.$input.is(':visible')) {\n                this.$input.focus();\n                $.fn.editableutils.setCursorPosition(this.$input.get(0), this.$input.val().length);\n                if(this.toggleClear) {\n                    this.toggleClear();\n                }\n            }\n        },\n        \n        //render clear button\n        renderClear:  function() {\n           if (this.options.clear) {\n               this.$clear = $('<span class=\"editable-clear-x\"></span>');\n               this.$input.after(this.$clear)\n                          .css('padding-right', 24)\n                          .keyup($.proxy(function(e) {\n                              //arrows, enter, tab, etc\n                              if(~$.inArray(e.keyCode, [40,38,9,13,27])) {\n                                return;\n                              }                            \n\n                              clearTimeout(this.t);\n                              var that = this;\n                              this.t = setTimeout(function() {\n                                that.toggleClear(e);\n                              }, 100);\n                              \n                          }, this))\n                          .parent().css('position', 'relative');\n                          \n               this.$clear.click($.proxy(this.clear, this));                       \n           }            \n        },\n        \n        postrender: function() {\n            /*\n            //now `clear` is positioned via css\n            if(this.$clear) {\n                //can position clear button only here, when form is shown and height can be calculated\n//                var h = this.$input.outerHeight(true) || 20,\n                var h = this.$clear.parent().height(),\n                    delta = (h - this.$clear.height()) / 2;\n                    \n                //this.$clear.css({bottom: delta, right: delta});\n            }\n            */ \n        },\n        \n        //show / hide clear button\n        toggleClear: function(e) {\n            if(!this.$clear) {\n                return;\n            }\n            \n            var len = this.$input.val().length,\n                visible = this.$clear.is(':visible');\n                 \n            if(len && !visible) {\n                this.$clear.show();\n            } \n            \n            if(!len && visible) {\n                this.$clear.hide();\n            } \n        },\n        \n        clear: function() {\n           this.$clear.hide();\n           this.$input.val('').focus();\n        }          \n    });\n\n    Text.defaults = $.extend({}, $.fn.editabletypes.abstractinput.defaults, {\n        /**\n        @property tpl \n        @default <input type=\"text\">\n        **/         \n        tpl: '<input type=\"text\">',\n        /**\n        Placeholder attribute of input. Shown when input is empty.\n\n        @property placeholder \n        @type string\n        @default null\n        **/             \n        placeholder: null,\n        \n        /**\n        Whether to show `clear` button \n        \n        @property clear \n        @type boolean\n        @default true        \n        **/\n        clear: true\n    });\n\n    $.fn.editabletypes.text = Text;\n\n}(window.jQuery));\n\n/**\nTextarea input\n\n@class textarea\n@extends abstractinput\n@final\n@example\n<a href=\"#\" id=\"comments\" data-type=\"textarea\" data-pk=\"1\">awesome comment!</a>\n<script>\n$(function(){\n    $('#comments').editable({\n        url: '/post',\n        title: 'Enter comments',\n        rows: 10\n    });\n});\n</script>\n**/\n(function ($) {\n    \"use strict\";\n    \n    var Textarea = function (options) {\n        this.init('textarea', options, Textarea.defaults);\n    };\n\n    $.fn.editableutils.inherit(Textarea, $.fn.editabletypes.abstractinput);\n\n    $.extend(Textarea.prototype, {\n        render: function () {\n            this.setClass();\n            this.setAttr('placeholder');\n            this.setAttr('rows');                        \n            \n            //ctrl + enter\n            this.$input.keydown(function (e) {\n                if (e.ctrlKey && e.which === 13) {\n                    $(this).closest('form').submit();\n                }\n            });\n        },\n        \n       //using `white-space: pre-wrap` solves \\n  <--> BR conversion very elegant!\n       /* \n       value2html: function(value, element) {\n            var html = '', lines;\n            if(value) {\n                lines = value.split(\"\\n\");\n                for (var i = 0; i < lines.length; i++) {\n                    lines[i] = $('<div>').text(lines[i]).html();\n                }\n                html = lines.join('<br>');\n            }\n            $(element).html(html);\n        },\n       \n        html2value: function(html) {\n            if(!html) {\n                return '';\n            }\n\n            var regex = new RegExp(String.fromCharCode(10), 'g');\n            var lines = html.split(/<br\\s*\\/?>/i);\n            for (var i = 0; i < lines.length; i++) {\n                var text = $('<div>').html(lines[i]).text();\n\n                // Remove newline characters (\\n) to avoid them being converted by value2html() method\n                // thus adding extra <br> tags\n                text = text.replace(regex, '');\n\n                lines[i] = text;\n            }\n            return lines.join(\"\\n\");\n        },\n         */\n        activate: function() {\n            $.fn.editabletypes.text.prototype.activate.call(this);\n        }\n    });\n\n    Textarea.defaults = $.extend({}, $.fn.editabletypes.abstractinput.defaults, {\n        /**\n        @property tpl\n        @default <textarea></textarea>\n        **/\n        tpl:'<textarea></textarea>',\n        /**\n        @property inputclass\n        @default input-large\n        **/\n        inputclass: 'input-large',\n        /**\n        Placeholder attribute of input. Shown when input is empty.\n\n        @property placeholder\n        @type string\n        @default null\n        **/\n        placeholder: null,\n        /**\n        Number of rows in textarea\n\n        @property rows\n        @type integer\n        @default 7\n        **/        \n        rows: 7        \n    });\n\n    $.fn.editabletypes.textarea = Textarea;\n\n}(window.jQuery));\n\n/**\nSelect (dropdown)\n\n@class select\n@extends list\n@final\n@example\n<a href=\"#\" id=\"status\" data-type=\"select\" data-pk=\"1\" data-url=\"/post\" data-title=\"Select status\"></a>\n<script>\n$(function(){\n    $('#status').editable({\n        value: 2,    \n        source: [\n              {value: 1, text: 'Active'},\n              {value: 2, text: 'Blocked'},\n              {value: 3, text: 'Deleted'}\n           ]\n    });\n});\n</script>\n**/\n(function ($) {\n    \"use strict\";\n    \n    var Select = function (options) {\n        this.init('select', options, Select.defaults);\n    };\n\n    $.fn.editableutils.inherit(Select, $.fn.editabletypes.list);\n\n    $.extend(Select.prototype, {\n        renderList: function() {\n            this.$input.empty();\n\n            var fillItems = function($el, data) {\n                var attr;\n                if($.isArray(data)) {\n                    for(var i=0; i<data.length; i++) {\n                        attr = {};\n                        if(data[i].children) {\n                            attr.label = data[i].text;\n                            $el.append(fillItems($('<optgroup>', attr), data[i].children)); \n                        } else {\n                            attr.value = data[i].value;\n                            if(data[i].disabled) {\n                                attr.disabled = true;\n                            }\n                            $el.append($('<option>', attr).text(data[i].text)); \n                        }\n                    }\n                }\n                return $el;\n            };        \n\n            fillItems(this.$input, this.sourceData);\n            \n            this.setClass();\n            \n            //enter submit\n            this.$input.on('keydown.editable', function (e) {\n                if (e.which === 13) {\n                    $(this).closest('form').submit();\n                }\n            });            \n        },\n       \n        value2htmlFinal: function(value, element) {\n            var text = '', \n                items = $.fn.editableutils.itemsByValue(value, this.sourceData);\n                \n            if(items.length) {\n                text = items[0].text;\n            }\n            \n            //$(element).text(text);\n            $.fn.editabletypes.abstractinput.prototype.value2html.call(this, text, element);\n        },\n        \n        autosubmit: function() {\n            this.$input.off('keydown.editable').on('change.editable', function(){\n                $(this).closest('form').submit();\n            });\n        }\n    });      \n\n    Select.defaults = $.extend({}, $.fn.editabletypes.list.defaults, {\n        /**\n        @property tpl \n        @default <select></select>\n        **/         \n        tpl:'<select></select>'\n    });\n\n    $.fn.editabletypes.select = Select;      \n\n}(window.jQuery));\n\n/**\nList of checkboxes. \nInternally value stored as javascript array of values.\n\n@class checklist\n@extends list\n@final\n@example\n<a href=\"#\" id=\"options\" data-type=\"checklist\" data-pk=\"1\" data-url=\"/post\" data-title=\"Select options\"></a>\n<script>\n$(function(){\n    $('#options').editable({\n        value: [2, 3],    \n        source: [\n              {value: 1, text: 'option1'},\n              {value: 2, text: 'option2'},\n              {value: 3, text: 'option3'}\n           ]\n    });\n});\n</script>\n**/\n(function ($) {\n    \"use strict\";\n    \n    var Checklist = function (options) {\n        this.init('checklist', options, Checklist.defaults);\n    };\n\n    $.fn.editableutils.inherit(Checklist, $.fn.editabletypes.list);\n\n    $.extend(Checklist.prototype, {\n        renderList: function() {\n            var $label, $div;\n            \n            this.$tpl.empty();\n            \n            if(!$.isArray(this.sourceData)) {\n                return;\n            }\n\n            for(var i=0; i<this.sourceData.length; i++) {\n                $label = $('<label>').append($('<input>', {\n                                           type: 'checkbox',\n                                           value: this.sourceData[i].value \n                                     }))\n                                     .append($('<span>').text(' '+this.sourceData[i].text));\n                \n                $('<div>').append($label).appendTo(this.$tpl);\n            }\n            \n            this.$input = this.$tpl.find('input[type=\"checkbox\"]');\n            this.setClass();\n        },\n       \n       value2str: function(value) {\n           return $.isArray(value) ? value.sort().join($.trim(this.options.separator)) : '';\n       },  \n       \n       //parse separated string\n        str2value: function(str) {\n           var reg, value = null;\n           if(typeof str === 'string' && str.length) {\n               reg = new RegExp('\\\\s*'+$.trim(this.options.separator)+'\\\\s*');\n               value = str.split(reg);\n           } else if($.isArray(str)) {\n               value = str; \n           } else {\n               value = [str];\n           }\n           return value;\n        },       \n       \n       //set checked on required checkboxes\n       value2input: function(value) {\n            this.$input.prop('checked', false);\n            if($.isArray(value) && value.length) {\n               this.$input.each(function(i, el) {\n                   var $el = $(el);\n                   // cannot use $.inArray as it performs strict comparison\n                   $.each(value, function(j, val){\n                       /*jslint eqeq: true*/\n                       if($el.val() == val) {\n                       /*jslint eqeq: false*/                           \n                           $el.prop('checked', true);\n                       }\n                   });\n               }); \n            }  \n        },  \n        \n       input2value: function() { \n           var checked = [];\n           this.$input.filter(':checked').each(function(i, el) {\n               checked.push($(el).val());\n           });\n           return checked;\n       },            \n          \n       //collect text of checked boxes\n        value2htmlFinal: function(value, element) {\n           var html = [],\n               checked = $.fn.editableutils.itemsByValue(value, this.sourceData),\n               escape = this.options.escape;\n               \n           if(checked.length) {\n               $.each(checked, function(i, v) {\n                   var text = escape ? $.fn.editableutils.escape(v.text) : v.text; \n                   html.push(text); \n               });\n               $(element).html(html.join('<br>'));\n           } else {\n               $(element).empty(); \n           }\n        },\n        \n       activate: function() {\n           this.$input.first().focus();\n       },\n       \n       autosubmit: function() {\n           this.$input.on('keydown', function(e){\n               if (e.which === 13) {\n                   $(this).closest('form').submit();\n               }\n           });\n       }\n    });      \n\n    Checklist.defaults = $.extend({}, $.fn.editabletypes.list.defaults, {\n        /**\n        @property tpl \n        @default <div></div>\n        **/         \n        tpl:'<div class=\"editable-checklist\"></div>',\n        \n        /**\n        @property inputclass \n        @type string\n        @default null\n        **/         \n        inputclass: null,        \n        \n        /**\n        Separator of values when reading from `data-value` attribute\n\n        @property separator \n        @type string\n        @default ','\n        **/         \n        separator: ','\n    });\n\n    $.fn.editabletypes.checklist = Checklist;      \n\n}(window.jQuery));\n\n/**\nHTML5 input types.\nFollowing types are supported:\n\n* password\n* email\n* url\n* tel\n* number\n* range\n* time\n\nLearn more about html5 inputs:  \nhttp://www.w3.org/wiki/HTML5_form_additions  \nTo check browser compatibility please see:  \nhttps://developer.mozilla.org/en-US/docs/HTML/Element/Input\n            \n@class html5types \n@extends text\n@final\n@since 1.3.0\n@example\n<a href=\"#\" id=\"email\" data-type=\"email\" data-pk=\"1\">admin@example.com</a>\n<script>\n$(function(){\n    $('#email').editable({\n        url: '/post',\n        title: 'Enter email'\n    });\n});\n</script>\n**/\n\n/**\n@property tpl \n@default depends on type\n**/ \n\n/*\nPassword\n*/\n(function ($) {\n    \"use strict\";\n    \n    var Password = function (options) {\n        this.init('password', options, Password.defaults);\n    };\n    $.fn.editableutils.inherit(Password, $.fn.editabletypes.text);\n    $.extend(Password.prototype, {\n       //do not display password, show '[hidden]' instead\n       value2html: function(value, element) {\n           if(value) {\n               $(element).text('[hidden]');\n           } else {\n               $(element).empty(); \n           }\n       },\n       //as password not displayed, should not set value by html\n       html2value: function(html) {\n           return null;\n       }       \n    });    \n    Password.defaults = $.extend({}, $.fn.editabletypes.text.defaults, {\n        tpl: '<input type=\"password\">'\n    });\n    $.fn.editabletypes.password = Password;\n}(window.jQuery));\n\n\n/*\nEmail\n*/\n(function ($) {\n    \"use strict\";\n    \n    var Email = function (options) {\n        this.init('email', options, Email.defaults);\n    };\n    $.fn.editableutils.inherit(Email, $.fn.editabletypes.text);\n    Email.defaults = $.extend({}, $.fn.editabletypes.text.defaults, {\n        tpl: '<input type=\"email\">'\n    });\n    $.fn.editabletypes.email = Email;\n}(window.jQuery));\n\n\n/*\nUrl\n*/\n(function ($) {\n    \"use strict\";\n    \n    var Url = function (options) {\n        this.init('url', options, Url.defaults);\n    };\n    $.fn.editableutils.inherit(Url, $.fn.editabletypes.text);\n    Url.defaults = $.extend({}, $.fn.editabletypes.text.defaults, {\n        tpl: '<input type=\"url\">'\n    });\n    $.fn.editabletypes.url = Url;\n}(window.jQuery));\n\n\n/*\nTel\n*/\n(function ($) {\n    \"use strict\";\n    \n    var Tel = function (options) {\n        this.init('tel', options, Tel.defaults);\n    };\n    $.fn.editableutils.inherit(Tel, $.fn.editabletypes.text);\n    Tel.defaults = $.extend({}, $.fn.editabletypes.text.defaults, {\n        tpl: '<input type=\"tel\">'\n    });\n    $.fn.editabletypes.tel = Tel;\n}(window.jQuery));\n\n\n/*\nNumber\n*/\n(function ($) {\n    \"use strict\";\n    \n    var NumberInput = function (options) {\n        this.init('number', options, NumberInput.defaults);\n    };\n    $.fn.editableutils.inherit(NumberInput, $.fn.editabletypes.text);\n    $.extend(NumberInput.prototype, {\n         render: function () {\n            NumberInput.superclass.render.call(this);\n            this.setAttr('min');\n            this.setAttr('max');\n            this.setAttr('step');\n        },\n        postrender: function() {\n            if(this.$clear) {\n                //increase right ffset  for up/down arrows\n                this.$clear.css({right: 24});\n                /*\n                //can position clear button only here, when form is shown and height can be calculated\n                var h = this.$input.outerHeight(true) || 20,\n                    delta = (h - this.$clear.height()) / 2;\n                \n                //add 12px to offset right for up/down arrows    \n                this.$clear.css({top: delta, right: delta + 16});\n                */\n            } \n        }        \n    });     \n    NumberInput.defaults = $.extend({}, $.fn.editabletypes.text.defaults, {\n        tpl: '<input type=\"number\">',\n        inputclass: 'input-mini',\n        min: null,\n        max: null,\n        step: null\n    });\n    $.fn.editabletypes.number = NumberInput;\n}(window.jQuery));\n\n\n/*\nRange (inherit from number)\n*/\n(function ($) {\n    \"use strict\";\n    \n    var Range = function (options) {\n        this.init('range', options, Range.defaults);\n    };\n    $.fn.editableutils.inherit(Range, $.fn.editabletypes.number);\n    $.extend(Range.prototype, {\n        render: function () {\n            this.$input = this.$tpl.filter('input');\n            \n            this.setClass();\n            this.setAttr('min');\n            this.setAttr('max');\n            this.setAttr('step');           \n            \n            this.$input.on('input', function(){\n                $(this).siblings('output').text($(this).val()); \n            });  \n        },\n        activate: function() {\n            this.$input.focus();\n        }         \n    });\n    Range.defaults = $.extend({}, $.fn.editabletypes.number.defaults, {\n        tpl: '<input type=\"range\"><output style=\"width: 30px; display: inline-block\"></output>',\n        inputclass: 'input-medium'\n    });\n    $.fn.editabletypes.range = Range;\n}(window.jQuery));\n\n/*\nTime\n*/\n(function ($) {\n    \"use strict\";\n\n    var Time = function (options) {\n        this.init('time', options, Time.defaults);\n    };\n    //inherit from abstract, as inheritance from text gives selection error.\n    $.fn.editableutils.inherit(Time, $.fn.editabletypes.abstractinput);\n    $.extend(Time.prototype, {\n        render: function() {\n           this.setClass();\n        }        \n    });\n    Time.defaults = $.extend({}, $.fn.editabletypes.abstractinput.defaults, {\n        tpl: '<input type=\"time\">'\n    });\n    $.fn.editabletypes.time = Time;\n}(window.jQuery));\n\n/**\nSelect2 input. Based on amazing work of Igor Vaynberg https://github.com/ivaynberg/select2.  \nPlease see [original select2 docs](http://ivaynberg.github.com/select2) for detailed description and options.  \n \nYou should manually download and include select2 distributive:  \n\n    <link href=\"select2/select2.css\" rel=\"stylesheet\" type=\"text/css\"></link>  \n    <script src=\"select2/select2.js\"></script>  \n    \nTo make it **bootstrap-styled** you can use css from [here](https://github.com/t0m/select2-bootstrap-css): \n\n    <link href=\"select2-bootstrap.css\" rel=\"stylesheet\" type=\"text/css\"></link>    \n    \n**Note:** currently `autotext` feature does not work for select2 with `ajax` remote source.    \nYou need initially put both `data-value` and element's text youself:    \n\n    <a href=\"#\" data-type=\"select2\" data-value=\"1\">Text1</a>\n    \n    \n@class select2\n@extends abstractinput\n@since 1.4.1\n@final\n@example\n<a href=\"#\" id=\"country\" data-type=\"select2\" data-pk=\"1\" data-value=\"ru\" data-url=\"/post\" data-title=\"Select country\"></a>\n<script>\n$(function(){\n    //local source\n    $('#country').editable({\n        source: [\n              {id: 'gb', text: 'Great Britain'},\n              {id: 'us', text: 'United States'},\n              {id: 'ru', text: 'Russia'}\n           ],\n        select2: {\n           multiple: true\n        }\n    });\n    //remote source (simple)\n    $('#country').editable({\n        source: '/getCountries',\n        select2: {\n            placeholder: 'Select Country',\n            minimumInputLength: 1\n        }\n    });\n    //remote source (advanced)\n    $('#country').editable({\n        select2: {\n            placeholder: 'Select Country',\n            allowClear: true,\n            minimumInputLength: 3,\n            id: function (item) {\n                return item.CountryId;\n            },\n            ajax: {\n                url: '/getCountries',\n                dataType: 'json',\n                data: function (term, page) {\n                    return { query: term };\n                },\n                results: function (data, page) {\n                    return { results: data };\n                }\n            },\n            formatResult: function (item) {\n                return item.CountryName;\n            },\n            formatSelection: function (item) {\n                return item.CountryName;\n            },\n            initSelection: function (element, callback) {\n                return $.get('/getCountryById', { query: element.val() }, function (data) {\n                    callback(data);\n                });\n            } \n        }  \n    });\n});\n</script>\n**/\n(function ($) {\n    \"use strict\";\n    \n    var Constructor = function (options) {\n        this.init('select2', options, Constructor.defaults);\n\n        options.select2 = options.select2 || {};\n\n        this.sourceData = null;\n        \n        //placeholder\n        if(options.placeholder) {\n            options.select2.placeholder = options.placeholder;\n        }\n       \n        //if not `tags` mode, use source\n        if(!options.select2.tags && options.source) {\n            var source = options.source;\n            //if source is function, call it (once!)\n            if ($.isFunction(options.source)) {\n                source = options.source.call(options.scope);\n            }               \n\n            if (typeof source === 'string') {\n                options.select2.ajax = options.select2.ajax || {};\n                //some default ajax params\n                if(!options.select2.ajax.data) {\n                    options.select2.ajax.data = function(term) {return { query:term };};\n                }\n                if(!options.select2.ajax.results) {\n                    options.select2.ajax.results = function(data) { return {results:data };};\n                }\n                options.select2.ajax.url = source;\n            } else {\n                //check format and convert x-editable format to select2 format (if needed)\n                this.sourceData = this.convertSource(source);\n                options.select2.data = this.sourceData;\n            }\n        } \n\n        //overriding objects in config (as by default jQuery extend() is not recursive)\n        this.options.select2 = $.extend({}, Constructor.defaults.select2, options.select2);\n\n        //detect whether it is multi-valued\n        this.isMultiple = this.options.select2.tags || this.options.select2.multiple;\n        this.isRemote = ('ajax' in this.options.select2);\n\n        //store function returning ID of item\n        //should be here as used inautotext for local source\n        this.idFunc = this.options.select2.id;\n        if (typeof(this.idFunc) !== \"function\") {\n            var idKey = this.idFunc || 'id';\n            this.idFunc = function (e) { return e[idKey]; };\n        }\n\n        //store function that renders text in select2\n        this.formatSelection = this.options.select2.formatSelection;\n        if (typeof(this.formatSelection) !== \"function\") {\n            this.formatSelection = function (e) { return e.text; };\n        }\n    };\n\n    $.fn.editableutils.inherit(Constructor, $.fn.editabletypes.abstractinput);\n\n    $.extend(Constructor.prototype, {\n        render: function() {\n            this.setClass();\n\n            //can not apply select2 here as it calls initSelection \n            //over input that does not have correct value yet.\n            //apply select2 only in value2input\n            //this.$input.select2(this.options.select2);\n\n            //when data is loaded via ajax, we need to know when it's done to populate listData\n            if(this.isRemote) {\n                //listen to loaded event to populate data\n                this.$input.on('select2-loaded', $.proxy(function(e) {\n                    this.sourceData = e.items.results;\n                }, this));\n            }\n\n            //trigger resize of editableform to re-position container in multi-valued mode\n            if(this.isMultiple) {\n               this.$input.on('change', function() {\n                   $(this).closest('form').parent().triggerHandler('resize');\n               });\n            }\n       },\n\n       value2html: function(value, element) {\n           var text = '', data,\n               that = this;\n\n           if(this.options.select2.tags) { //in tags mode just assign value\n              data = value; \n              //data = $.fn.editableutils.itemsByValue(value, this.options.select2.tags, this.idFunc);\n           } else if(this.sourceData) {\n              data = $.fn.editableutils.itemsByValue(value, this.sourceData, this.idFunc); \n           } else {\n              //can not get list of possible values \n              //(e.g. autotext for select2 with ajax source)\n           }\n\n           //data may be array (when multiple values allowed)\n           if($.isArray(data)) {\n               //collect selected data and show with separator\n               text = [];\n               $.each(data, function(k, v){\n                   text.push(v && typeof v === 'object' ? that.formatSelection(v) : v);\n               });\n           } else if(data) {\n               text = that.formatSelection(data);\n           }\n\n           text = $.isArray(text) ? text.join(this.options.viewseparator) : text;\n\n           //$(element).text(text);\n           Constructor.superclass.value2html.call(this, text, element); \n       },\n\n       html2value: function(html) {\n           return this.options.select2.tags ? this.str2value(html, this.options.viewseparator) : null;\n       },\n\n       value2input: function(value) {\n           // if value array => join it anyway\n           if($.isArray(value)) {\n              value = value.join(this.getSeparator());\n           }\n\n           //for remote source just set value, text is updated by initSelection\n           if(!this.$input.data('select2')) {\n               this.$input.val(value);\n               this.$input.select2(this.options.select2);\n           } else {\n               //second argument needed to separate initial change from user's click (for autosubmit)   \n               this.$input.val(value).trigger('change', true); \n\n               //Uncaught Error: cannot call val() if initSelection() is not defined\n               //this.$input.select2('val', value);\n           }\n\n           // if defined remote source AND no multiple mode AND no user's initSelection provided --> \n           // we should somehow get text for provided id.\n           // The solution is to use element's text as text for that id (exclude empty)\n           if(this.isRemote && !this.isMultiple && !this.options.select2.initSelection) {\n               // customId and customText are methods to extract `id` and `text` from data object\n               // we can use this workaround only if user did not define these methods\n               // otherwise we cant construct data object\n               var customId = this.options.select2.id,\n                   customText = this.options.select2.formatSelection;\n\n               if(!customId && !customText) {\n                   var $el = $(this.options.scope);\n                   if (!$el.data('editable').isEmpty) {\n                       var data = {id: value, text: $el.text()};\n                       this.$input.select2('data', data); \n                   }\n               }\n           }\n       },\n       \n       input2value: function() { \n           return this.$input.select2('val');\n       },\n\n       str2value: function(str, separator) {\n            if(typeof str !== 'string' || !this.isMultiple) {\n                return str;\n            }\n\n            separator = separator || this.getSeparator();\n\n            var val, i, l;\n\n            if (str === null || str.length < 1) {\n                return null;\n            }\n            val = str.split(separator);\n            for (i = 0, l = val.length; i < l; i = i + 1) {\n                val[i] = $.trim(val[i]);\n            }\n\n            return val;\n       },\n\n        autosubmit: function() {\n            this.$input.on('change', function(e, isInitial){\n                if(!isInitial) {\n                  $(this).closest('form').submit();\n                }\n            });\n        },\n\n        getSeparator: function() {\n            return this.options.select2.separator || $.fn.select2.defaults.separator;\n        },\n\n        /*\n        Converts source from x-editable format: {value: 1, text: \"1\"} to\n        select2 format: {id: 1, text: \"1\"}\n        */\n        convertSource: function(source) {\n            if($.isArray(source) && source.length && source[0].value !== undefined) {\n                for(var i = 0; i<source.length; i++) {\n                    if(source[i].value !== undefined) {\n                        source[i].id = source[i].value;\n                        delete source[i].value;\n                    }\n                }\n            }\n            return source;\n        },\n        \n        destroy: function() {\n            if(this.$input.data('select2')) {\n                this.$input.select2('destroy');\n            }\n        }\n        \n    });\n\n    Constructor.defaults = $.extend({}, $.fn.editabletypes.abstractinput.defaults, {\n        /**\n        @property tpl \n        @default <input type=\"hidden\">\n        **/\n        tpl:'<input type=\"hidden\">',\n        /**\n        Configuration of select2. [Full list of options](http://ivaynberg.github.com/select2).\n\n        @property select2 \n        @type object\n        @default null\n        **/\n        select2: null,\n        /**\n        Placeholder attribute of select\n\n        @property placeholder \n        @type string\n        @default null\n        **/\n        placeholder: null,\n        /**\n        Source data for select. It will be assigned to select2 `data` property and kept here just for convenience.\n        Please note, that format is different from simple `select` input: use 'id' instead of 'value'.\n        E.g. `[{id: 1, text: \"text1\"}, {id: 2, text: \"text2\"}, ...]`.\n\n        @property source \n        @type array|string|function\n        @default null        \n        **/\n        source: null,\n        /**\n        Separator used to display tags.\n\n        @property viewseparator \n        @type string\n        @default ', '        \n        **/\n        viewseparator: ', '\n    });\n\n    $.fn.editabletypes.select2 = Constructor;\n\n}(window.jQuery));\n\n/**\n* Combodate - 1.0.5\n* Dropdown date and time picker.\n* Converts text input into dropdowns to pick day, month, year, hour, minute and second.\n* Uses momentjs as datetime library http://momentjs.com.\n* For i18n include corresponding file from https://github.com/timrwood/moment/tree/master/lang \n*\n* Confusion at noon and midnight - see http://en.wikipedia.org/wiki/12-hour_clock#Confusion_at_noon_and_midnight\n* In combodate: \n* 12:00 pm --> 12:00 (24-h format, midday)\n* 12:00 am --> 00:00 (24-h format, midnight, start of day)\n* \n* Differs from momentjs parse rules:\n* 00:00 pm, 12:00 pm --> 12:00 (24-h format, day not change)\n* 00:00 am, 12:00 am --> 00:00 (24-h format, day not change)\n* \n* \n* Author: Vitaliy Potapov\n* Project page: http://github.com/vitalets/combodate\n* Copyright (c) 2012 Vitaliy Potapov. Released under MIT License.\n**/\n(function ($) {\n\n    var Combodate = function (element, options) {\n        this.$element = $(element);\n        if(!this.$element.is('input')) {\n            $.error('Combodate should be applied to INPUT element');\n            return;\n        }\n        this.options = $.extend({}, $.fn.combodate.defaults, options, this.$element.data());\n        this.init();  \n     };\n\n    Combodate.prototype = {\n        constructor: Combodate, \n        init: function () {\n            this.map = {\n                //key   regexp    moment.method\n                day:    ['D',    'date'], \n                month:  ['M',    'month'], \n                year:   ['Y',    'year'], \n                hour:   ['[Hh]', 'hours'],\n                minute: ['m',    'minutes'], \n                second: ['s',    'seconds'],\n                ampm:   ['[Aa]', ''] \n            };\n            \n            this.$widget = $('<span class=\"combodate\"></span>').html(this.getTemplate());\n                      \n            this.initCombos();\n            \n            //update original input on change \n            this.$widget.on('change', 'select', $.proxy(function(e) {\n                this.$element.val(this.getValue()).change();\n                // update days count if month or year changes\n                if (this.options.smartDays) {\n                    if ($(e.target).is('.month') || $(e.target).is('.year')) {\n                        this.fillCombo('day');\n                    }\n                }\n            }, this));\n            \n            this.$widget.find('select').css('width', 'auto');\n                                       \n            // hide original input and insert widget                                       \n            this.$element.hide().after(this.$widget);\n            \n            // set initial value\n            this.setValue(this.$element.val() || this.options.value);\n        },\n        \n        /*\n         Replace tokens in template with <select> elements \n        */         \n        getTemplate: function() {\n            var tpl = this.options.template;\n\n            //first pass\n            $.each(this.map, function(k, v) {\n                v = v[0]; \n                var r = new RegExp(v+'+'),\n                    token = v.length > 1 ? v.substring(1, 2) : v;\n                    \n                tpl = tpl.replace(r, '{'+token+'}');\n            });\n\n            //replace spaces with &nbsp;\n            tpl = tpl.replace(/ /g, '&nbsp;');\n\n            //second pass\n            $.each(this.map, function(k, v) {\n                v = v[0];\n                var token = v.length > 1 ? v.substring(1, 2) : v;\n                    \n                tpl = tpl.replace('{'+token+'}', '<select class=\"'+k+'\"></select>');\n            });   \n\n            return tpl;\n        },\n        \n        /*\n         Initialize combos that presents in template \n        */        \n        initCombos: function() {\n            for (var k in this.map) {\n                var $c = this.$widget.find('.'+k);\n                // set properties like this.$day, this.$month etc.\n                this['$'+k] = $c.length ? $c : null;\n                // fill with items\n                this.fillCombo(k);\n            }\n        },\n\n        /*\n         Fill combo with items \n        */        \n        fillCombo: function(k) {\n            var $combo = this['$'+k];\n            if (!$combo) {\n                return;\n            }\n\n            // define method name to fill items, e.g `fillDays`\n            var f = 'fill' + k.charAt(0).toUpperCase() + k.slice(1); \n            var items = this[f]();\n            var value = $combo.val();\n\n            $combo.empty();\n            for(var i=0; i<items.length; i++) {\n                $combo.append('<option value=\"'+items[i][0]+'\">'+items[i][1]+'</option>');\n            }\n\n            $combo.val(value);\n        },\n\n        /*\n         Initialize items of combos. Handles `firstItem` option \n        */\n        fillCommon: function(key) {\n            var values = [],\n                relTime;\n                \n            if(this.options.firstItem === 'name') {\n                //need both to support moment ver < 2 and  >= 2\n                relTime = moment.relativeTime || moment.langData()._relativeTime; \n                var header = typeof relTime[key] === 'function' ? relTime[key](1, true, key, false) : relTime[key];\n                //take last entry (see momentjs lang files structure) \n                header = header.split(' ').reverse()[0];                \n                values.push(['', header]);\n            } else if(this.options.firstItem === 'empty') {\n                values.push(['', '']);\n            }\n            return values;\n        },  \n\n\n        /*\n        fill day\n        */\n        fillDay: function() {\n            var items = this.fillCommon('d'), name, i,\n                twoDigit = this.options.template.indexOf('DD') !== -1,\n                daysCount = 31;\n\n            // detect days count (depends on month and year)\n            // originally https://github.com/vitalets/combodate/pull/7\n            if (this.options.smartDays && this.$month && this.$year) {\n                var month = parseInt(this.$month.val(), 10);\n                var year = parseInt(this.$year.val(), 10);\n\n                if (!isNaN(month) && !isNaN(year)) {\n                    daysCount = moment([year, month]).daysInMonth();\n                }\n            }\n\n            for (i = 1; i <= daysCount; i++) {\n                name = twoDigit ? this.leadZero(i) : i;\n                items.push([i, name]);\n            }\n            return items;        \n        },\n        \n        /*\n        fill month\n        */\n        fillMonth: function() {\n            var items = this.fillCommon('M'), name, i, \n                longNames = this.options.template.indexOf('MMMM') !== -1,\n                shortNames = this.options.template.indexOf('MMM') !== -1,\n                twoDigit = this.options.template.indexOf('MM') !== -1;\n                \n            for(i=0; i<=11; i++) {\n                if(longNames) {\n                    //see https://github.com/timrwood/momentjs.com/pull/36\n                    name = moment().date(1).month(i).format('MMMM');\n                } else if(shortNames) {\n                    name = moment().date(1).month(i).format('MMM');\n                } else if(twoDigit) {\n                    name = this.leadZero(i+1);\n                } else {\n                    name = i+1;\n                }\n                items.push([i, name]);\n            } \n            return items;\n        },  \n        \n        /*\n        fill year\n        */\n        fillYear: function() {\n            var items = [], name, i, \n                longNames = this.options.template.indexOf('YYYY') !== -1;\n           \n            for(i=this.options.maxYear; i>=this.options.minYear; i--) {\n                name = longNames ? i : (i+'').substring(2);\n                items[this.options.yearDescending ? 'push' : 'unshift']([i, name]);\n            }\n            \n            items = this.fillCommon('y').concat(items);\n            \n            return items;              \n        },    \n        \n        /*\n        fill hour\n        */\n        fillHour: function() {\n            var items = this.fillCommon('h'), name, i,\n                h12 = this.options.template.indexOf('h') !== -1,\n                h24 = this.options.template.indexOf('H') !== -1,\n                twoDigit = this.options.template.toLowerCase().indexOf('hh') !== -1,\n                min = h12 ? 1 : 0, \n                max = h12 ? 12 : 23;\n                \n            for(i=min; i<=max; i++) {\n                name = twoDigit ? this.leadZero(i) : i;\n                items.push([i, name]);\n            } \n            return items;                 \n        },    \n        \n        /*\n        fill minute\n        */\n        fillMinute: function() {\n            var items = this.fillCommon('m'), name, i,\n                twoDigit = this.options.template.indexOf('mm') !== -1;\n\n            for(i=0; i<=59; i+= this.options.minuteStep) {\n                name = twoDigit ? this.leadZero(i) : i;\n                items.push([i, name]);\n            }    \n            return items;              \n        },  \n        \n        /*\n        fill second\n        */\n        fillSecond: function() {\n            var items = this.fillCommon('s'), name, i,\n                twoDigit = this.options.template.indexOf('ss') !== -1;\n\n            for(i=0; i<=59; i+= this.options.secondStep) {\n                name = twoDigit ? this.leadZero(i) : i;\n                items.push([i, name]);\n            }    \n            return items;              \n        },  \n        \n        /*\n        fill ampm\n        */\n        fillAmpm: function() {\n            var ampmL = this.options.template.indexOf('a') !== -1,\n                ampmU = this.options.template.indexOf('A') !== -1,            \n                items = [\n                    ['am', ampmL ? 'am' : 'AM'],\n                    ['pm', ampmL ? 'pm' : 'PM']\n                ];\n            return items;                              \n        },                                       \n\n        /*\n         Returns current date value from combos. \n         If format not specified - `options.format` used.\n         If format = `null` - Moment object returned.\n        */\n        getValue: function(format) {\n            var dt, values = {}, \n                that = this,\n                notSelected = false;\n                \n            //getting selected values    \n            $.each(this.map, function(k, v) {\n                if(k === 'ampm') {\n                    return;\n                }\n                var def = k === 'day' ? 1 : 0;\n                  \n                values[k] = that['$'+k] ? parseInt(that['$'+k].val(), 10) : def; \n                \n                if(isNaN(values[k])) {\n                   notSelected = true;\n                   return false; \n                }\n            });\n            \n            //if at least one visible combo not selected - return empty string\n            if(notSelected) {\n               return '';\n            }\n            \n            //convert hours 12h --> 24h \n            if(this.$ampm) {\n                //12:00 pm --> 12:00 (24-h format, midday), 12:00 am --> 00:00 (24-h format, midnight, start of day)\n                if(values.hour === 12) {\n                    values.hour = this.$ampm.val() === 'am' ? 0 : 12;                    \n                } else {\n                    values.hour = this.$ampm.val() === 'am' ? values.hour : values.hour+12;\n                }\n            }    \n            \n            dt = moment([values.year, values.month, values.day, values.hour, values.minute, values.second]);\n            \n            //highlight invalid date\n            this.highlight(dt);\n                              \n            format = format === undefined ? this.options.format : format;\n            if(format === null) {\n               return dt.isValid() ? dt : null; \n            } else {\n               return dt.isValid() ? dt.format(format) : ''; \n            }           \n        },\n        \n        setValue: function(value) {\n            if(!value) {\n                return;\n            }\n            \n            var dt = typeof value === 'string' ? moment(value, this.options.format) : moment(value),\n                that = this,\n                values = {};\n            \n            //function to find nearest value in select options\n            function getNearest($select, value) {\n                var delta = {};\n                $select.children('option').each(function(i, opt){\n                    var optValue = $(opt).attr('value'),\n                    distance;\n\n                    if(optValue === '') return;\n                    distance = Math.abs(optValue - value); \n                    if(typeof delta.distance === 'undefined' || distance < delta.distance) {\n                        delta = {value: optValue, distance: distance};\n                    } \n                }); \n                return delta.value;\n            }             \n            \n            if(dt.isValid()) {\n                //read values from date object\n                $.each(this.map, function(k, v) {\n                    if(k === 'ampm') {\n                       return; \n                    }\n                    values[k] = dt[v[1]]();\n                });\n               \n                if(this.$ampm) {\n                    //12:00 pm --> 12:00 (24-h format, midday), 12:00 am --> 00:00 (24-h format, midnight, start of day)\n                    if(values.hour >= 12) {\n                        values.ampm = 'pm';\n                        if(values.hour > 12) {\n                            values.hour -= 12;\n                        }\n                    } else {\n                        values.ampm = 'am';\n                        if(values.hour === 0) {\n                            values.hour = 12;\n                        }\n                    } \n                }\n               \n                $.each(values, function(k, v) {\n                    //call val() for each existing combo, e.g. this.$hour.val()\n                    if(that['$'+k]) {\n                       \n                        if(k === 'minute' && that.options.minuteStep > 1 && that.options.roundTime) {\n                           v = getNearest(that['$'+k], v);\n                        }\n                       \n                        if(k === 'second' && that.options.secondStep > 1 && that.options.roundTime) {\n                           v = getNearest(that['$'+k], v);\n                        }                       \n                       \n                        that['$'+k].val(v);\n                    }\n                });\n\n                // update days count\n                if (this.options.smartDays) {\n                    this.fillCombo('day');\n                }\n               \n               this.$element.val(dt.format(this.options.format)).change();\n            }\n        },\n        \n        /*\n         highlight combos if date is invalid\n        */\n        highlight: function(dt) {\n            if(!dt.isValid()) {\n                if(this.options.errorClass) {\n                    this.$widget.addClass(this.options.errorClass);\n                } else {\n                    //store original border color\n                    if(!this.borderColor) {\n                        this.borderColor = this.$widget.find('select').css('border-color'); \n                    }\n                    this.$widget.find('select').css('border-color', 'red');\n                } \n            } else {\n                if(this.options.errorClass) {\n                    this.$widget.removeClass(this.options.errorClass);\n                } else {\n                    this.$widget.find('select').css('border-color', this.borderColor);\n                }  \n            }\n        },\n        \n        leadZero: function(v) {\n            return v <= 9 ? '0' + v : v; \n        },\n        \n        destroy: function() {\n            this.$widget.remove();\n            this.$element.removeData('combodate').show();\n        }\n        \n        //todo: clear method        \n    };\n\n    $.fn.combodate = function ( option ) {\n        var d, args = Array.apply(null, arguments);\n        args.shift();\n\n        //getValue returns date as string / object (not jQuery object)\n        if(option === 'getValue' && this.length && (d = this.eq(0).data('combodate'))) {\n          return d.getValue.apply(d, args);\n        }        \n        \n        return this.each(function () {\n            var $this = $(this),\n            data = $this.data('combodate'),\n            options = typeof option == 'object' && option;\n            if (!data) {\n                $this.data('combodate', (data = new Combodate(this, options)));\n            }\n            if (typeof option == 'string' && typeof data[option] == 'function') {\n                data[option].apply(data, args);\n            }\n        });\n    };  \n    \n    $.fn.combodate.defaults = {\n         //in this format value stored in original input\n        format: 'DD-MM-YYYY HH:mm',      \n        //in this format items in dropdowns are displayed\n        template: 'D / MMM / YYYY   H : mm',\n        //initial value, can be `new Date()`    \n        value: null,                       \n        minYear: 1970,\n        maxYear: new Date().getFullYear(),\n        yearDescending: true,\n        minuteStep: 5,\n        secondStep: 1,\n        firstItem: 'empty', //'name', 'empty', 'none'\n        errorClass: null,\n        roundTime: true, // whether to round minutes and seconds if step > 1\n        smartDays: false // whether days in combo depend on selected month: 31, 30, 28\n    };\n\n}(window.jQuery));\n/**\nCombodate input - dropdown date and time picker.    \nBased on [combodate](http://vitalets.github.com/combodate) plugin (included). To use it you should manually include [momentjs](http://momentjs.com).\n\n    <script src=\"js/moment.min.js\"></script>\n   \nAllows to input:\n\n* only date\n* only time \n* both date and time  \n\nPlease note, that format is taken from momentjs and **not compatible** with bootstrap-datepicker / jquery UI datepicker.  \nInternally value stored as `momentjs` object. \n\n@class combodate\n@extends abstractinput\n@final\n@since 1.4.0\n@example\n<a href=\"#\" id=\"dob\" data-type=\"combodate\" data-pk=\"1\" data-url=\"/post\" data-value=\"1984-05-15\" data-title=\"Select date\"></a>\n<script>\n$(function(){\n    $('#dob').editable({\n        format: 'YYYY-MM-DD',    \n        viewformat: 'DD.MM.YYYY',    \n        template: 'D / MMMM / YYYY',    \n        combodate: {\n                minYear: 2000,\n                maxYear: 2015,\n                minuteStep: 1\n           }\n        }\n    });\n});\n</script>\n**/\n\n/*global moment*/\n\n(function ($) {\n    \"use strict\";\n    \n    var Constructor = function (options) {\n        this.init('combodate', options, Constructor.defaults);\n        \n        //by default viewformat equals to format\n        if(!this.options.viewformat) {\n            this.options.viewformat = this.options.format;\n        }        \n        \n        //try parse combodate config defined as json string in data-combodate\n        options.combodate = $.fn.editableutils.tryParseJson(options.combodate, true);\n\n        //overriding combodate config (as by default jQuery extend() is not recursive)\n        this.options.combodate = $.extend({}, Constructor.defaults.combodate, options.combodate, {\n            format: this.options.format,\n            template: this.options.template\n        });\n    };\n\n    $.fn.editableutils.inherit(Constructor, $.fn.editabletypes.abstractinput);    \n    \n    $.extend(Constructor.prototype, {\n        render: function () {\n            this.$input.combodate(this.options.combodate);\n                    \n            if($.fn.editableform.engine === 'bs3') {\n                this.$input.siblings().find('select').addClass('form-control');\n            }\n            \n            if(this.options.inputclass) {\n                this.$input.siblings().find('select').addClass(this.options.inputclass);\n            }            \n            //\"clear\" link\n            /*\n            if(this.options.clear) {\n                this.$clear = $('<a href=\"#\"></a>').html(this.options.clear).click($.proxy(function(e){\n                    e.preventDefault();\n                    e.stopPropagation();\n                    this.clear();\n                }, this));\n                \n                this.$tpl.parent().append($('<div class=\"editable-clear\">').append(this.$clear));  \n            } \n            */               \n        },\n        \n        value2html: function(value, element) {\n            var text = value ? value.format(this.options.viewformat) : '';\n            //$(element).text(text);\n            Constructor.superclass.value2html.call(this, text, element);  \n        },\n\n        html2value: function(html) {\n            return html ? moment(html, this.options.viewformat) : null;\n        },   \n        \n        value2str: function(value) {\n            return value ? value.format(this.options.format) : '';\n       }, \n       \n       str2value: function(str) {\n           return str ? moment(str, this.options.format) : null;\n       }, \n       \n       value2submit: function(value) {\n           return this.value2str(value);\n       },                    \n\n       value2input: function(value) {\n           this.$input.combodate('setValue', value);\n       },\n        \n       input2value: function() { \n           return this.$input.combodate('getValue', null);\n       },       \n       \n       activate: function() {\n           this.$input.siblings('.combodate').find('select').eq(0).focus();\n       },\n       \n       /*\n       clear:  function() {\n          this.$input.data('datepicker').date = null;\n          this.$input.find('.active').removeClass('active');\n       },\n       */\n       \n       autosubmit: function() {\n           \n       }\n\n    });\n    \n    Constructor.defaults = $.extend({}, $.fn.editabletypes.abstractinput.defaults, {\n        /**\n        @property tpl \n        @default <input type=\"text\">\n        **/         \n        tpl:'<input type=\"text\">',\n        /**\n        @property inputclass \n        @default null\n        **/         \n        inputclass: null,\n        /**\n        Format used for sending value to server. Also applied when converting date from <code>data-value</code> attribute.<br>\n        See list of tokens in [momentjs docs](http://momentjs.com/docs/#/parsing/string-format)  \n        \n        @property format \n        @type string\n        @default YYYY-MM-DD\n        **/         \n        format:'YYYY-MM-DD',\n        /**\n        Format used for displaying date. Also applied when converting date from element's text on init.   \n        If not specified equals to `format`.\n        \n        @property viewformat \n        @type string\n        @default null\n        **/          \n        viewformat: null,        \n        /**\n        Template used for displaying dropdowns.\n        \n        @property template \n        @type string\n        @default D / MMM / YYYY\n        **/          \n        template: 'D / MMM / YYYY',  \n        /**\n        Configuration of combodate.\n        Full list of options: http://vitalets.github.com/combodate/#docs\n        \n        @property combodate \n        @type object\n        @default null\n        **/\n        combodate: null\n        \n        /*\n        (not implemented yet)\n        Text shown as clear date button. \n        If <code>false</code> clear button will not be rendered.\n        \n        @property clear \n        @type boolean|string\n        @default 'x clear'         \n        */\n        //clear: '&times; clear'\n    });   \n\n    $.fn.editabletypes.combodate = Constructor;\n\n}(window.jQuery));\n\n/*\nEditableform based on Twitter Bootstrap 3\n*/\n(function ($) {\n    \"use strict\";\n    \n    //store parent methods\n    var pInitInput = $.fn.editableform.Constructor.prototype.initInput;\n    \n    $.extend($.fn.editableform.Constructor.prototype, {\n        initTemplate: function() {\n            this.$form = $($.fn.editableform.template); \n            this.$form.find('.control-group').addClass('form-group');\n            this.$form.find('.editable-error-block').addClass('help-block');\n        },\n        initInput: function() {  \n            pInitInput.apply(this);\n\n            //for bs3 set default class `input-sm` to standard inputs\n            var emptyInputClass = this.input.options.inputclass === null || this.input.options.inputclass === false;\n            var defaultClass = 'input-sm';\n            \n            //bs3 add `form-control` class to standard inputs\n            var stdtypes = 'text,select,textarea,password,email,url,tel,number,range,time,typeaheadjs'.split(','); \n            if(~$.inArray(this.input.type, stdtypes)) {\n                this.input.$input.addClass('form-control');\n                if(emptyInputClass) {\n                    this.input.options.inputclass = defaultClass;\n                    this.input.$input.addClass(defaultClass);\n                }\n            }             \n        \n            //apply bs3 size class also to buttons (to fit size of control)\n            var $btn = this.$form.find('.editable-buttons');\n            var classes = emptyInputClass ? [defaultClass] : this.input.options.inputclass.split(' ');\n            for(var i=0; i<classes.length; i++) {\n                // `btn-sm` is default now\n                /*\n                if(classes[i].toLowerCase() === 'input-sm') { \n                    $btn.find('button').addClass('btn-sm');  \n                }\n                */\n                if(classes[i].toLowerCase() === 'input-lg') {\n                    $btn.find('button').removeClass('btn-sm').addClass('btn-lg'); \n                }\n            }\n        }\n    });    \n    \n    //buttons\n    $.fn.editableform.buttons = \n      '<button type=\"submit\" class=\"btn btn-primary btn-sm editable-submit\">'+\n        '<i class=\"glyphicon glyphicon-ok\"></i>'+\n      '</button>'+\n      '<button type=\"button\" class=\"btn btn-default btn-sm editable-cancel\">'+\n        '<i class=\"glyphicon glyphicon-remove\"></i>'+\n      '</button>';         \n    \n    //error classes\n    $.fn.editableform.errorGroupClass = 'has-error';\n    $.fn.editableform.errorBlockClass = null;  \n    //engine\n    $.fn.editableform.engine = 'bs3';  \n}(window.jQuery));\n/**\n* Editable Popover3 (for Bootstrap 3) \n* ---------------------\n* requires bootstrap-popover.js\n*/\n(function ($) {\n    \"use strict\";\n\n    //extend methods\n    $.extend($.fn.editableContainer.Popup.prototype, {\n        containerName: 'popover',\n        containerDataName: 'bs.popover',\n        innerCss: '.popover-content',\n        defaults: $.fn.popover.Constructor.DEFAULTS,\n\n        initContainer: function(){\n            $.extend(this.containerOptions, {\n                trigger: 'manual',\n                selector: false,\n                content: ' ',\n                template: this.defaults.template\n            });\n            \n            //as template property is used in inputs, hide it from popover\n            var t;\n            if(this.$element.data('template')) {\n               t = this.$element.data('template');\n               this.$element.removeData('template');  \n            } \n            \n            this.call(this.containerOptions);\n            \n            if(t) {\n               //restore data('template')\n               this.$element.data('template', t); \n            }\n        }, \n        \n        /* show */\n        innerShow: function () {\n            this.call('show');                \n        },  \n        \n        /* hide */\n        innerHide: function () {\n            this.call('hide');       \n        }, \n        \n        /* destroy */\n        innerDestroy: function() {\n            this.call('destroy');\n        },                               \n        \n        setContainerOption: function(key, value) {\n            this.container().options[key] = value; \n        },               \n\n        /**\n        * move popover to new position. This function mainly copied from bootstrap-popover.\n        */\n        /*jshint laxcomma: true, eqeqeq: false*/\n        setPosition: function () { \n\n            (function() {\n            /*    \n                var $tip = this.tip()\n                , inside\n                , pos\n                , actualWidth\n                , actualHeight\n                , placement\n                , tp\n                , tpt\n                , tpb\n                , tpl\n                , tpr;\n\n                placement = typeof this.options.placement === 'function' ?\n                this.options.placement.call(this, $tip[0], this.$element[0]) :\n                this.options.placement;\n\n                inside = /in/.test(placement);\n               \n                $tip\n              //  .detach()\n              //vitalets: remove any placement class because otherwise they dont influence on re-positioning of visible popover\n                .removeClass('top right bottom left')\n                .css({ top: 0, left: 0, display: 'block' });\n              //  .insertAfter(this.$element);\n               \n                pos = this.getPosition(inside);\n\n                actualWidth = $tip[0].offsetWidth;\n                actualHeight = $tip[0].offsetHeight;\n\n                placement = inside ? placement.split(' ')[1] : placement;\n\n                tpb = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2};\n                tpt = {top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2};\n                tpl = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth};\n                tpr = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width};\n\n                switch (placement) {\n                    case 'bottom':\n                        if ((tpb.top + actualHeight) > ($(window).scrollTop() + $(window).height())) {\n                            if (tpt.top > $(window).scrollTop()) {\n                                placement = 'top';\n                            } else if ((tpr.left + actualWidth) < ($(window).scrollLeft() + $(window).width())) {\n                                placement = 'right';\n                            } else if (tpl.left > $(window).scrollLeft()) {\n                                placement = 'left';\n                            } else {\n                                placement = 'right';\n                            }\n                        }\n                        break;\n                    case 'top':\n                        if (tpt.top < $(window).scrollTop()) {\n                            if ((tpb.top + actualHeight) < ($(window).scrollTop() + $(window).height())) {\n                                placement = 'bottom';\n                            } else if ((tpr.left + actualWidth) < ($(window).scrollLeft() + $(window).width())) {\n                                placement = 'right';\n                            } else if (tpl.left > $(window).scrollLeft()) {\n                                placement = 'left';\n                            } else {\n                                placement = 'right';\n                            }\n                        }\n                        break;\n                    case 'left':\n                        if (tpl.left < $(window).scrollLeft()) {\n                            if ((tpr.left + actualWidth) < ($(window).scrollLeft() + $(window).width())) {\n                                placement = 'right';\n                            } else if (tpt.top > $(window).scrollTop()) {\n                                placement = 'top';\n                            } else if (tpt.top > $(window).scrollTop()) {\n                                placement = 'bottom';\n                            } else {\n                                placement = 'right';\n                            }\n                        }\n                        break;\n                    case 'right':\n                        if ((tpr.left + actualWidth) > ($(window).scrollLeft() + $(window).width())) {\n                            if (tpl.left > $(window).scrollLeft()) {\n                                placement = 'left';\n                            } else if (tpt.top > $(window).scrollTop()) {\n                                placement = 'top';\n                            } else if (tpt.top > $(window).scrollTop()) {\n                                placement = 'bottom';\n                            }\n                        }\n                        break;\n                }\n\n                switch (placement) {\n                    case 'bottom':\n                        tp = tpb;\n                        break;\n                    case 'top':\n                        tp = tpt;\n                        break;\n                    case 'left':\n                        tp = tpl;\n                        break;\n                    case 'right':\n                        tp = tpr;\n                        break;\n                }\n\n                $tip\n                .offset(tp)\n                .addClass(placement)\n                .addClass('in');\n           */\n                     \n           \n            var $tip = this.tip();\n            \n            var placement = typeof this.options.placement == 'function' ?\n                this.options.placement.call(this, $tip[0], this.$element[0]) :\n                this.options.placement;            \n\n            var autoToken = /\\s?auto?\\s?/i;\n            var autoPlace = autoToken.test(placement);\n            if (autoPlace) {\n                placement = placement.replace(autoToken, '') || 'top';\n            }\n            \n            \n            var pos = this.getPosition();\n            var actualWidth = $tip[0].offsetWidth;\n            var actualHeight = $tip[0].offsetHeight;\n\n            if (autoPlace) {\n                var $parent = this.$element.parent();\n\n                var orgPlacement = placement;\n                var docScroll    = document.documentElement.scrollTop || document.body.scrollTop;\n                var parentWidth  = this.options.container == 'body' ? window.innerWidth  : $parent.outerWidth();\n                var parentHeight = this.options.container == 'body' ? window.innerHeight : $parent.outerHeight();\n                var parentLeft   = this.options.container == 'body' ? 0 : $parent.offset().left;\n\n                placement = placement == 'bottom' && pos.top   + pos.height  + actualHeight - docScroll > parentHeight  ? 'top'    :\n                            placement == 'top'    && pos.top   - docScroll   - actualHeight < 0                         ? 'bottom' :\n                            placement == 'right'  && pos.right + actualWidth > parentWidth                              ? 'left'   :\n                            placement == 'left'   && pos.left  - actualWidth < parentLeft                               ? 'right'  :\n                            placement;\n\n                $tip\n                  .removeClass(orgPlacement)\n                  .addClass(placement);\n            }\n\n\n            var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight);\n\n            this.applyPlacement(calculatedOffset, placement);            \n                     \n                \n            }).call(this.container());\n          /*jshint laxcomma: false, eqeqeq: true*/  \n        }            \n    });\n\n}(window.jQuery));\n\n/* =========================================================\n * bootstrap-datepicker.js\n * http://www.eyecon.ro/bootstrap-datepicker\n * =========================================================\n * Copyright 2012 Stefan Petre\n * Improvements by Andrew Rowls\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ========================================================= */\n\n(function( $ ) {\n\n\tfunction UTCDate(){\n\t\treturn new Date(Date.UTC.apply(Date, arguments));\n\t}\n\tfunction UTCToday(){\n\t\tvar today = new Date();\n\t\treturn UTCDate(today.getUTCFullYear(), today.getUTCMonth(), today.getUTCDate());\n\t}\n\n\t// Picker object\n\n\tvar Datepicker = function(element, options) {\n\t\tvar that = this;\n\n\t\tthis._process_options(options);\n\n\t\tthis.element = $(element);\n\t\tthis.isInline = false;\n\t\tthis.isInput = this.element.is('input');\n\t\tthis.component = this.element.is('.date') ? this.element.find('.add-on, .btn') : false;\n\t\tthis.hasInput = this.component && this.element.find('input').length;\n\t\tif(this.component && this.component.length === 0)\n\t\t\tthis.component = false;\n\n\t\tthis.picker = $(DPGlobal.template);\n\t\tthis._buildEvents();\n\t\tthis._attachEvents();\n\n\t\tif(this.isInline) {\n\t\t\tthis.picker.addClass('datepicker-inline').appendTo(this.element);\n\t\t} else {\n\t\t\tthis.picker.addClass('datepicker-dropdown dropdown-menu');\n\t\t}\n\n\t\tif (this.o.rtl){\n\t\t\tthis.picker.addClass('datepicker-rtl');\n\t\t\tthis.picker.find('.prev i, .next i')\n\t\t\t\t\t\t.toggleClass('icon-arrow-left icon-arrow-right');\n\t\t}\n\n\n\t\tthis.viewMode = this.o.startView;\n\n\t\tif (this.o.calendarWeeks)\n\t\t\tthis.picker.find('tfoot th.today')\n\t\t\t\t\t\t.attr('colspan', function(i, val){\n\t\t\t\t\t\t\treturn parseInt(val) + 1;\n\t\t\t\t\t\t});\n\n\t\tthis._allow_update = false;\n\n\t\tthis.setStartDate(this.o.startDate);\n\t\tthis.setEndDate(this.o.endDate);\n\t\tthis.setDaysOfWeekDisabled(this.o.daysOfWeekDisabled);\n\n\t\tthis.fillDow();\n\t\tthis.fillMonths();\n\n\t\tthis._allow_update = true;\n\n\t\tthis.update();\n\t\tthis.showMode();\n\n\t\tif(this.isInline) {\n\t\t\tthis.show();\n\t\t}\n\t};\n\n\tDatepicker.prototype = {\n\t\tconstructor: Datepicker,\n\n\t\t_process_options: function(opts){\n\t\t\t// Store raw options for reference\n\t\t\tthis._o = $.extend({}, this._o, opts);\n\t\t\t// Processed options\n\t\t\tvar o = this.o = $.extend({}, this._o);\n\n\t\t\t// Check if \"de-DE\" style date is available, if not language should\n\t\t\t// fallback to 2 letter code eg \"de\"\n\t\t\tvar lang = o.language;\n\t\t\tif (!dates[lang]) {\n\t\t\t\tlang = lang.split('-')[0];\n\t\t\t\tif (!dates[lang])\n\t\t\t\t\tlang = defaults.language;\n\t\t\t}\n\t\t\to.language = lang;\n\n\t\t\tswitch(o.startView){\n\t\t\t\tcase 2:\n\t\t\t\tcase 'decade':\n\t\t\t\t\to.startView = 2;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 1:\n\t\t\t\tcase 'year':\n\t\t\t\t\to.startView = 1;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\to.startView = 0;\n\t\t\t}\n\n\t\t\tswitch (o.minViewMode) {\n\t\t\t\tcase 1:\n\t\t\t\tcase 'months':\n\t\t\t\t\to.minViewMode = 1;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\tcase 'years':\n\t\t\t\t\to.minViewMode = 2;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\to.minViewMode = 0;\n\t\t\t}\n\n\t\t\to.startView = Math.max(o.startView, o.minViewMode);\n\n\t\t\to.weekStart %= 7;\n\t\t\to.weekEnd = ((o.weekStart + 6) % 7);\n\n\t\t\tvar format = DPGlobal.parseFormat(o.format)\n\t\t\tif (o.startDate !== -Infinity) {\n\t\t\t\to.startDate = DPGlobal.parseDate(o.startDate, format, o.language);\n\t\t\t}\n\t\t\tif (o.endDate !== Infinity) {\n\t\t\t\to.endDate = DPGlobal.parseDate(o.endDate, format, o.language);\n\t\t\t}\n\n\t\t\to.daysOfWeekDisabled = o.daysOfWeekDisabled||[];\n\t\t\tif (!$.isArray(o.daysOfWeekDisabled))\n\t\t\t\to.daysOfWeekDisabled = o.daysOfWeekDisabled.split(/[,\\s]*/);\n\t\t\to.daysOfWeekDisabled = $.map(o.daysOfWeekDisabled, function (d) {\n\t\t\t\treturn parseInt(d, 10);\n\t\t\t});\n\t\t},\n\t\t_events: [],\n\t\t_secondaryEvents: [],\n\t\t_applyEvents: function(evs){\n\t\t\tfor (var i=0, el, ev; i<evs.length; i++){\n\t\t\t\tel = evs[i][0];\n\t\t\t\tev = evs[i][1];\n\t\t\t\tel.on(ev);\n\t\t\t}\n\t\t},\n\t\t_unapplyEvents: function(evs){\n\t\t\tfor (var i=0, el, ev; i<evs.length; i++){\n\t\t\t\tel = evs[i][0];\n\t\t\t\tev = evs[i][1];\n\t\t\t\tel.off(ev);\n\t\t\t}\n\t\t},\n\t\t_buildEvents: function(){\n\t\t\tif (this.isInput) { // single input\n\t\t\t\tthis._events = [\n\t\t\t\t\t[this.element, {\n\t\t\t\t\t\tfocus: $.proxy(this.show, this),\n\t\t\t\t\t\tkeyup: $.proxy(this.update, this),\n\t\t\t\t\t\tkeydown: $.proxy(this.keydown, this)\n\t\t\t\t\t}]\n\t\t\t\t];\n\t\t\t}\n\t\t\telse if (this.component && this.hasInput){ // component: input + button\n\t\t\t\tthis._events = [\n\t\t\t\t\t// For components that are not readonly, allow keyboard nav\n\t\t\t\t\t[this.element.find('input'), {\n\t\t\t\t\t\tfocus: $.proxy(this.show, this),\n\t\t\t\t\t\tkeyup: $.proxy(this.update, this),\n\t\t\t\t\t\tkeydown: $.proxy(this.keydown, this)\n\t\t\t\t\t}],\n\t\t\t\t\t[this.component, {\n\t\t\t\t\t\tclick: $.proxy(this.show, this)\n\t\t\t\t\t}]\n\t\t\t\t];\n\t\t\t}\n\t\t\telse if (this.element.is('div')) {  // inline datepicker\n\t\t\t\tthis.isInline = true;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis._events = [\n\t\t\t\t\t[this.element, {\n\t\t\t\t\t\tclick: $.proxy(this.show, this)\n\t\t\t\t\t}]\n\t\t\t\t];\n\t\t\t}\n\n\t\t\tthis._secondaryEvents = [\n\t\t\t\t[this.picker, {\n\t\t\t\t\tclick: $.proxy(this.click, this)\n\t\t\t\t}],\n\t\t\t\t[$(window), {\n\t\t\t\t\tresize: $.proxy(this.place, this)\n\t\t\t\t}],\n\t\t\t\t[$(document), {\n\t\t\t\t\tmousedown: $.proxy(function (e) {\n\t\t\t\t\t\t// Clicked outside the datepicker, hide it\n\t\t\t\t\t\tif (!(\n\t\t\t\t\t\t\tthis.element.is(e.target) ||\n\t\t\t\t\t\t\tthis.element.find(e.target).size() ||\n\t\t\t\t\t\t\tthis.picker.is(e.target) ||\n\t\t\t\t\t\t\tthis.picker.find(e.target).size()\n\t\t\t\t\t\t)) {\n\t\t\t\t\t\t\tthis.hide();\n\t\t\t\t\t\t}\n\t\t\t\t\t}, this)\n\t\t\t\t}]\n\t\t\t];\n\t\t},\n\t\t_attachEvents: function(){\n\t\t\tthis._detachEvents();\n\t\t\tthis._applyEvents(this._events);\n\t\t},\n\t\t_detachEvents: function(){\n\t\t\tthis._unapplyEvents(this._events);\n\t\t},\n\t\t_attachSecondaryEvents: function(){\n\t\t\tthis._detachSecondaryEvents();\n\t\t\tthis._applyEvents(this._secondaryEvents);\n\t\t},\n\t\t_detachSecondaryEvents: function(){\n\t\t\tthis._unapplyEvents(this._secondaryEvents);\n\t\t},\n\t\t_trigger: function(event, altdate){\n\t\t\tvar date = altdate || this.date,\n\t\t\t\tlocal_date = new Date(date.getTime() + (date.getTimezoneOffset()*60000));\n\n\t\t\tthis.element.trigger({\n\t\t\t\ttype: event,\n\t\t\t\tdate: local_date,\n\t\t\t\tformat: $.proxy(function(altformat){\n\t\t\t\t\tvar format = altformat || this.o.format;\n\t\t\t\t\treturn DPGlobal.formatDate(date, format, this.o.language);\n\t\t\t\t}, this)\n\t\t\t});\n\t\t},\n\n\t\tshow: function(e) {\n\t\t\tif (!this.isInline)\n\t\t\t\tthis.picker.appendTo('body');\n\t\t\tthis.picker.show();\n\t\t\tthis.height = this.component ? this.component.outerHeight() : this.element.outerHeight();\n\t\t\tthis.place();\n\t\t\tthis._attachSecondaryEvents();\n\t\t\tif (e) {\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t\tthis._trigger('show');\n\t\t},\n\n\t\thide: function(e){\n\t\t\tif(this.isInline) return;\n\t\t\tif (!this.picker.is(':visible')) return;\n\t\t\tthis.picker.hide().detach();\n\t\t\tthis._detachSecondaryEvents();\n\t\t\tthis.viewMode = this.o.startView;\n\t\t\tthis.showMode();\n\n\t\t\tif (\n\t\t\t\tthis.o.forceParse &&\n\t\t\t\t(\n\t\t\t\t\tthis.isInput && this.element.val() ||\n\t\t\t\t\tthis.hasInput && this.element.find('input').val()\n\t\t\t\t)\n\t\t\t)\n\t\t\t\tthis.setValue();\n\t\t\tthis._trigger('hide');\n\t\t},\n\n\t\tremove: function() {\n\t\t\tthis.hide();\n\t\t\tthis._detachEvents();\n\t\t\tthis._detachSecondaryEvents();\n\t\t\tthis.picker.remove();\n\t\t\tdelete this.element.data().datepicker;\n\t\t\tif (!this.isInput) {\n\t\t\t\tdelete this.element.data().date;\n\t\t\t}\n\t\t},\n\n\t\tgetDate: function() {\n\t\t\tvar d = this.getUTCDate();\n\t\t\treturn new Date(d.getTime() + (d.getTimezoneOffset()*60000));\n\t\t},\n\n\t\tgetUTCDate: function() {\n\t\t\treturn this.date;\n\t\t},\n\n\t\tsetDate: function(d) {\n\t\t\tthis.setUTCDate(new Date(d.getTime() - (d.getTimezoneOffset()*60000)));\n\t\t},\n\n\t\tsetUTCDate: function(d) {\n\t\t\tthis.date = d;\n\t\t\tthis.setValue();\n\t\t},\n\n\t\tsetValue: function() {\n\t\t\tvar formatted = this.getFormattedDate();\n\t\t\tif (!this.isInput) {\n\t\t\t\tif (this.component){\n\t\t\t\t\tthis.element.find('input').val(formatted);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.element.val(formatted);\n\t\t\t}\n\t\t},\n\n\t\tgetFormattedDate: function(format) {\n\t\t\tif (format === undefined)\n\t\t\t\tformat = this.o.format;\n\t\t\treturn DPGlobal.formatDate(this.date, format, this.o.language);\n\t\t},\n\n\t\tsetStartDate: function(startDate){\n\t\t\tthis._process_options({startDate: startDate});\n\t\t\tthis.update();\n\t\t\tthis.updateNavArrows();\n\t\t},\n\n\t\tsetEndDate: function(endDate){\n\t\t\tthis._process_options({endDate: endDate});\n\t\t\tthis.update();\n\t\t\tthis.updateNavArrows();\n\t\t},\n\n\t\tsetDaysOfWeekDisabled: function(daysOfWeekDisabled){\n\t\t\tthis._process_options({daysOfWeekDisabled: daysOfWeekDisabled});\n\t\t\tthis.update();\n\t\t\tthis.updateNavArrows();\n\t\t},\n\n\t\tplace: function(){\n\t\t\t\t\t\tif(this.isInline) return;\n\t\t\tvar zIndex = parseInt(this.element.parents().filter(function() {\n\t\t\t\t\t\t\treturn $(this).css('z-index') != 'auto';\n\t\t\t\t\t\t}).first().css('z-index'))+10;\n\t\t\tvar offset = this.component ? this.component.parent().offset() : this.element.offset();\n\t\t\tvar height = this.component ? this.component.outerHeight(true) : this.element.outerHeight(true);\n\t\t\tthis.picker.css({\n\t\t\t\ttop: offset.top + height,\n\t\t\t\tleft: offset.left,\n\t\t\t\tzIndex: zIndex\n\t\t\t});\n\t\t},\n\n\t\t_allow_update: true,\n\t\tupdate: function(){\n\t\t\tif (!this._allow_update) return;\n\n\t\t\tvar date, fromArgs = false;\n\t\t\tif(arguments && arguments.length && (typeof arguments[0] === 'string' || arguments[0] instanceof Date)) {\n\t\t\t\tdate = arguments[0];\n\t\t\t\tfromArgs = true;\n\t\t\t} else {\n\t\t\t\tdate = this.isInput ? this.element.val() : this.element.data('date') || this.element.find('input').val();\n\t\t\t\tdelete this.element.data().date;\n\t\t\t}\n\n\t\t\tthis.date = DPGlobal.parseDate(date, this.o.format, this.o.language);\n\n\t\t\tif(fromArgs) this.setValue();\n\n\t\t\tif (this.date < this.o.startDate) {\n\t\t\t\tthis.viewDate = new Date(this.o.startDate);\n\t\t\t} else if (this.date > this.o.endDate) {\n\t\t\t\tthis.viewDate = new Date(this.o.endDate);\n\t\t\t} else {\n\t\t\t\tthis.viewDate = new Date(this.date);\n\t\t\t}\n\t\t\tthis.fill();\n\t\t},\n\n\t\tfillDow: function(){\n\t\t\tvar dowCnt = this.o.weekStart,\n\t\t\thtml = '<tr>';\n\t\t\tif(this.o.calendarWeeks){\n\t\t\t\tvar cell = '<th class=\"cw\">&nbsp;</th>';\n\t\t\t\thtml += cell;\n\t\t\t\tthis.picker.find('.datepicker-days thead tr:first-child').prepend(cell);\n\t\t\t}\n\t\t\twhile (dowCnt < this.o.weekStart + 7) {\n\t\t\t\thtml += '<th class=\"dow\">'+dates[this.o.language].daysMin[(dowCnt++)%7]+'</th>';\n\t\t\t}\n\t\t\thtml += '</tr>';\n\t\t\tthis.picker.find('.datepicker-days thead').append(html);\n\t\t},\n\n\t\tfillMonths: function(){\n\t\t\tvar html = '',\n\t\t\ti = 0;\n\t\t\twhile (i < 12) {\n\t\t\t\thtml += '<span class=\"month\">'+dates[this.o.language].monthsShort[i++]+'</span>';\n\t\t\t}\n\t\t\tthis.picker.find('.datepicker-months td').html(html);\n\t\t},\n\n\t\tsetRange: function(range){\n\t\t\tif (!range || !range.length)\n\t\t\t\tdelete this.range;\n\t\t\telse\n\t\t\t\tthis.range = $.map(range, function(d){ return d.valueOf(); });\n\t\t\tthis.fill();\n\t\t},\n\n\t\tgetClassNames: function(date){\n\t\t\tvar cls = [],\n\t\t\t\tyear = this.viewDate.getUTCFullYear(),\n\t\t\t\tmonth = this.viewDate.getUTCMonth(),\n\t\t\t\tcurrentDate = this.date.valueOf(),\n\t\t\t\ttoday = new Date();\n\t\t\tif (date.getUTCFullYear() < year || (date.getUTCFullYear() == year && date.getUTCMonth() < month)) {\n\t\t\t\tcls.push('old');\n\t\t\t} else if (date.getUTCFullYear() > year || (date.getUTCFullYear() == year && date.getUTCMonth() > month)) {\n\t\t\t\tcls.push('new');\n\t\t\t}\n\t\t\t// Compare internal UTC date with local today, not UTC today\n\t\t\tif (this.o.todayHighlight &&\n\t\t\t\tdate.getUTCFullYear() == today.getFullYear() &&\n\t\t\t\tdate.getUTCMonth() == today.getMonth() &&\n\t\t\t\tdate.getUTCDate() == today.getDate()) {\n\t\t\t\tcls.push('today');\n\t\t\t}\n\t\t\tif (currentDate && date.valueOf() == currentDate) {\n\t\t\t\tcls.push('active');\n\t\t\t}\n\t\t\tif (date.valueOf() < this.o.startDate || date.valueOf() > this.o.endDate ||\n\t\t\t\t$.inArray(date.getUTCDay(), this.o.daysOfWeekDisabled) !== -1) {\n\t\t\t\tcls.push('disabled');\n\t\t\t}\n\t\t\tif (this.range){\n\t\t\t\tif (date > this.range[0] && date < this.range[this.range.length-1]){\n\t\t\t\t\tcls.push('range');\n\t\t\t\t}\n\t\t\t\tif ($.inArray(date.valueOf(), this.range) != -1){\n\t\t\t\t\tcls.push('selected');\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn cls;\n\t\t},\n\n\t\tfill: function() {\n\t\t\tvar d = new Date(this.viewDate),\n\t\t\t\tyear = d.getUTCFullYear(),\n\t\t\t\tmonth = d.getUTCMonth(),\n\t\t\t\tstartYear = this.o.startDate !== -Infinity ? this.o.startDate.getUTCFullYear() : -Infinity,\n\t\t\t\tstartMonth = this.o.startDate !== -Infinity ? this.o.startDate.getUTCMonth() : -Infinity,\n\t\t\t\tendYear = this.o.endDate !== Infinity ? this.o.endDate.getUTCFullYear() : Infinity,\n\t\t\t\tendMonth = this.o.endDate !== Infinity ? this.o.endDate.getUTCMonth() : Infinity,\n\t\t\t\tcurrentDate = this.date && this.date.valueOf(),\n\t\t\t\ttooltip;\n\t\t\tthis.picker.find('.datepicker-days thead th.datepicker-switch')\n\t\t\t\t\t\t.text(dates[this.o.language].months[month]+' '+year);\n\t\t\tthis.picker.find('tfoot th.today')\n\t\t\t\t\t\t.text(dates[this.o.language].today)\n\t\t\t\t\t\t.toggle(this.o.todayBtn !== false);\n\t\t\tthis.picker.find('tfoot th.clear')\n\t\t\t\t\t\t.text(dates[this.o.language].clear)\n\t\t\t\t\t\t.toggle(this.o.clearBtn !== false);\n\t\t\tthis.updateNavArrows();\n\t\t\tthis.fillMonths();\n\t\t\tvar prevMonth = UTCDate(year, month-1, 28,0,0,0,0),\n\t\t\t\tday = DPGlobal.getDaysInMonth(prevMonth.getUTCFullYear(), prevMonth.getUTCMonth());\n\t\t\tprevMonth.setUTCDate(day);\n\t\t\tprevMonth.setUTCDate(day - (prevMonth.getUTCDay() - this.o.weekStart + 7)%7);\n\t\t\tvar nextMonth = new Date(prevMonth);\n\t\t\tnextMonth.setUTCDate(nextMonth.getUTCDate() + 42);\n\t\t\tnextMonth = nextMonth.valueOf();\n\t\t\tvar html = [];\n\t\t\tvar clsName;\n\t\t\twhile(prevMonth.valueOf() < nextMonth) {\n\t\t\t\tif (prevMonth.getUTCDay() == this.o.weekStart) {\n\t\t\t\t\thtml.push('<tr>');\n\t\t\t\t\tif(this.o.calendarWeeks){\n\t\t\t\t\t\t// ISO 8601: First week contains first thursday.\n\t\t\t\t\t\t// ISO also states week starts on Monday, but we can be more abstract here.\n\t\t\t\t\t\tvar\n\t\t\t\t\t\t\t// Start of current week: based on weekstart/current date\n\t\t\t\t\t\t\tws = new Date(+prevMonth + (this.o.weekStart - prevMonth.getUTCDay() - 7) % 7 * 864e5),\n\t\t\t\t\t\t\t// Thursday of this week\n\t\t\t\t\t\t\tth = new Date(+ws + (7 + 4 - ws.getUTCDay()) % 7 * 864e5),\n\t\t\t\t\t\t\t// First Thursday of year, year from thursday\n\t\t\t\t\t\t\tyth = new Date(+(yth = UTCDate(th.getUTCFullYear(), 0, 1)) + (7 + 4 - yth.getUTCDay())%7*864e5),\n\t\t\t\t\t\t\t// Calendar week: ms between thursdays, div ms per day, div 7 days\n\t\t\t\t\t\t\tcalWeek =  (th - yth) / 864e5 / 7 + 1;\n\t\t\t\t\t\thtml.push('<td class=\"cw\">'+ calWeek +'</td>');\n\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tclsName = this.getClassNames(prevMonth);\n\t\t\t\tclsName.push('day');\n\n\t\t\t\tvar before = this.o.beforeShowDay(prevMonth);\n\t\t\t\tif (before === undefined)\n\t\t\t\t\tbefore = {};\n\t\t\t\telse if (typeof(before) === 'boolean')\n\t\t\t\t\tbefore = {enabled: before};\n\t\t\t\telse if (typeof(before) === 'string')\n\t\t\t\t\tbefore = {classes: before};\n\t\t\t\tif (before.enabled === false)\n\t\t\t\t\tclsName.push('disabled');\n\t\t\t\tif (before.classes)\n\t\t\t\t\tclsName = clsName.concat(before.classes.split(/\\s+/));\n\t\t\t\tif (before.tooltip)\n\t\t\t\t\ttooltip = before.tooltip;\n\n\t\t\t\tclsName = $.unique(clsName);\n\t\t\t\thtml.push('<td class=\"'+clsName.join(' ')+'\"' + (tooltip ? ' title=\"'+tooltip+'\"' : '') + '>'+prevMonth.getUTCDate() + '</td>');\n\t\t\t\tif (prevMonth.getUTCDay() == this.o.weekEnd) {\n\t\t\t\t\thtml.push('</tr>');\n\t\t\t\t}\n\t\t\t\tprevMonth.setUTCDate(prevMonth.getUTCDate()+1);\n\t\t\t}\n\t\t\tthis.picker.find('.datepicker-days tbody').empty().append(html.join(''));\n\t\t\tvar currentYear = this.date && this.date.getUTCFullYear();\n\n\t\t\tvar months = this.picker.find('.datepicker-months')\n\t\t\t\t\t\t.find('th:eq(1)')\n\t\t\t\t\t\t\t.text(year)\n\t\t\t\t\t\t\t.end()\n\t\t\t\t\t\t.find('span').removeClass('active');\n\t\t\tif (currentYear && currentYear == year) {\n\t\t\t\tmonths.eq(this.date.getUTCMonth()).addClass('active');\n\t\t\t}\n\t\t\tif (year < startYear || year > endYear) {\n\t\t\t\tmonths.addClass('disabled');\n\t\t\t}\n\t\t\tif (year == startYear) {\n\t\t\t\tmonths.slice(0, startMonth).addClass('disabled');\n\t\t\t}\n\t\t\tif (year == endYear) {\n\t\t\t\tmonths.slice(endMonth+1).addClass('disabled');\n\t\t\t}\n\n\t\t\thtml = '';\n\t\t\tyear = parseInt(year/10, 10) * 10;\n\t\t\tvar yearCont = this.picker.find('.datepicker-years')\n\t\t\t\t\t\t\t\t.find('th:eq(1)')\n\t\t\t\t\t\t\t\t\t.text(year + '-' + (year + 9))\n\t\t\t\t\t\t\t\t\t.end()\n\t\t\t\t\t\t\t\t.find('td');\n\t\t\tyear -= 1;\n\t\t\tfor (var i = -1; i < 11; i++) {\n\t\t\t\thtml += '<span class=\"year'+(i == -1 ? ' old' : i == 10 ? ' new' : '')+(currentYear == year ? ' active' : '')+(year < startYear || year > endYear ? ' disabled' : '')+'\">'+year+'</span>';\n\t\t\t\tyear += 1;\n\t\t\t}\n\t\t\tyearCont.html(html);\n\t\t},\n\n\t\tupdateNavArrows: function() {\n\t\t\tif (!this._allow_update) return;\n\n\t\t\tvar d = new Date(this.viewDate),\n\t\t\t\tyear = d.getUTCFullYear(),\n\t\t\t\tmonth = d.getUTCMonth();\n\t\t\tswitch (this.viewMode) {\n\t\t\t\tcase 0:\n\t\t\t\t\tif (this.o.startDate !== -Infinity && year <= this.o.startDate.getUTCFullYear() && month <= this.o.startDate.getUTCMonth()) {\n\t\t\t\t\t\tthis.picker.find('.prev').css({visibility: 'hidden'});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.picker.find('.prev').css({visibility: 'visible'});\n\t\t\t\t\t}\n\t\t\t\t\tif (this.o.endDate !== Infinity && year >= this.o.endDate.getUTCFullYear() && month >= this.o.endDate.getUTCMonth()) {\n\t\t\t\t\t\tthis.picker.find('.next').css({visibility: 'hidden'});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.picker.find('.next').css({visibility: 'visible'});\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 1:\n\t\t\t\tcase 2:\n\t\t\t\t\tif (this.o.startDate !== -Infinity && year <= this.o.startDate.getUTCFullYear()) {\n\t\t\t\t\t\tthis.picker.find('.prev').css({visibility: 'hidden'});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.picker.find('.prev').css({visibility: 'visible'});\n\t\t\t\t\t}\n\t\t\t\t\tif (this.o.endDate !== Infinity && year >= this.o.endDate.getUTCFullYear()) {\n\t\t\t\t\t\tthis.picker.find('.next').css({visibility: 'hidden'});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.picker.find('.next').css({visibility: 'visible'});\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t},\n\n\t\tclick: function(e) {\n\t\t\te.preventDefault();\n\t\t\tvar target = $(e.target).closest('span, td, th');\n\t\t\tif (target.length == 1) {\n\t\t\t\tswitch(target[0].nodeName.toLowerCase()) {\n\t\t\t\t\tcase 'th':\n\t\t\t\t\t\tswitch(target[0].className) {\n\t\t\t\t\t\t\tcase 'datepicker-switch':\n\t\t\t\t\t\t\t\tthis.showMode(1);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'prev':\n\t\t\t\t\t\t\tcase 'next':\n\t\t\t\t\t\t\t\tvar dir = DPGlobal.modes[this.viewMode].navStep * (target[0].className == 'prev' ? -1 : 1);\n\t\t\t\t\t\t\t\tswitch(this.viewMode){\n\t\t\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\t\t\tthis.viewDate = this.moveMonth(this.viewDate, dir);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\t\t\tthis.viewDate = this.moveYear(this.viewDate, dir);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'today':\n\t\t\t\t\t\t\t\tvar date = new Date();\n\t\t\t\t\t\t\t\tdate = UTCDate(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);\n\n\t\t\t\t\t\t\t\tthis.showMode(-2);\n\t\t\t\t\t\t\t\tvar which = this.o.todayBtn == 'linked' ? null : 'view';\n\t\t\t\t\t\t\t\tthis._setDate(date, which);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'clear':\n\t\t\t\t\t\t\t\tvar element;\n\t\t\t\t\t\t\t\tif (this.isInput)\n\t\t\t\t\t\t\t\t\telement = this.element;\n\t\t\t\t\t\t\t\telse if (this.component)\n\t\t\t\t\t\t\t\t\telement = this.element.find('input');\n\t\t\t\t\t\t\t\tif (element)\n\t\t\t\t\t\t\t\t\telement.val(\"\").change();\n\t\t\t\t\t\t\t\tthis._trigger('changeDate');\n\t\t\t\t\t\t\t\tthis.update();\n\t\t\t\t\t\t\t\tif (this.o.autoclose)\n\t\t\t\t\t\t\t\t\tthis.hide();\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'span':\n\t\t\t\t\t\tif (!target.is('.disabled')) {\n\t\t\t\t\t\t\tthis.viewDate.setUTCDate(1);\n\t\t\t\t\t\t\tif (target.is('.month')) {\n\t\t\t\t\t\t\t\tvar day = 1;\n\t\t\t\t\t\t\t\tvar month = target.parent().find('span').index(target);\n\t\t\t\t\t\t\t\tvar year = this.viewDate.getUTCFullYear();\n\t\t\t\t\t\t\t\tthis.viewDate.setUTCMonth(month);\n\t\t\t\t\t\t\t\tthis._trigger('changeMonth', this.viewDate);\n\t\t\t\t\t\t\t\tif (this.o.minViewMode === 1) {\n\t\t\t\t\t\t\t\t\tthis._setDate(UTCDate(year, month, day,0,0,0,0));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tvar year = parseInt(target.text(), 10)||0;\n\t\t\t\t\t\t\t\tvar day = 1;\n\t\t\t\t\t\t\t\tvar month = 0;\n\t\t\t\t\t\t\t\tthis.viewDate.setUTCFullYear(year);\n\t\t\t\t\t\t\t\tthis._trigger('changeYear', this.viewDate);\n\t\t\t\t\t\t\t\tif (this.o.minViewMode === 2) {\n\t\t\t\t\t\t\t\t\tthis._setDate(UTCDate(year, month, day,0,0,0,0));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tthis.showMode(-1);\n\t\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'td':\n\t\t\t\t\t\tif (target.is('.day') && !target.is('.disabled')){\n\t\t\t\t\t\t\tvar day = parseInt(target.text(), 10)||1;\n\t\t\t\t\t\t\tvar year = this.viewDate.getUTCFullYear(),\n\t\t\t\t\t\t\t\tmonth = this.viewDate.getUTCMonth();\n\t\t\t\t\t\t\tif (target.is('.old')) {\n\t\t\t\t\t\t\t\tif (month === 0) {\n\t\t\t\t\t\t\t\t\tmonth = 11;\n\t\t\t\t\t\t\t\t\tyear -= 1;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tmonth -= 1;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if (target.is('.new')) {\n\t\t\t\t\t\t\t\tif (month == 11) {\n\t\t\t\t\t\t\t\t\tmonth = 0;\n\t\t\t\t\t\t\t\t\tyear += 1;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tmonth += 1;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tthis._setDate(UTCDate(year, month, day,0,0,0,0));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t_setDate: function(date, which){\n\t\t\tif (!which || which == 'date')\n\t\t\t\tthis.date = new Date(date);\n\t\t\tif (!which || which  == 'view')\n\t\t\t\tthis.viewDate = new Date(date);\n\t\t\tthis.fill();\n\t\t\tthis.setValue();\n\t\t\tthis._trigger('changeDate');\n\t\t\tvar element;\n\t\t\tif (this.isInput) {\n\t\t\t\telement = this.element;\n\t\t\t} else if (this.component){\n\t\t\t\telement = this.element.find('input');\n\t\t\t}\n\t\t\tif (element) {\n\t\t\t\telement.change();\n\t\t\t\tif (this.o.autoclose && (!which || which == 'date')) {\n\t\t\t\t\tthis.hide();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tmoveMonth: function(date, dir){\n\t\t\tif (!dir) return date;\n\t\t\tvar new_date = new Date(date.valueOf()),\n\t\t\t\tday = new_date.getUTCDate(),\n\t\t\t\tmonth = new_date.getUTCMonth(),\n\t\t\t\tmag = Math.abs(dir),\n\t\t\t\tnew_month, test;\n\t\t\tdir = dir > 0 ? 1 : -1;\n\t\t\tif (mag == 1){\n\t\t\t\ttest = dir == -1\n\t\t\t\t\t// If going back one month, make sure month is not current month\n\t\t\t\t\t// (eg, Mar 31 -> Feb 31 == Feb 28, not Mar 02)\n\t\t\t\t\t? function(){ return new_date.getUTCMonth() == month; }\n\t\t\t\t\t// If going forward one month, make sure month is as expected\n\t\t\t\t\t// (eg, Jan 31 -> Feb 31 == Feb 28, not Mar 02)\n\t\t\t\t\t: function(){ return new_date.getUTCMonth() != new_month; };\n\t\t\t\tnew_month = month + dir;\n\t\t\t\tnew_date.setUTCMonth(new_month);\n\t\t\t\t// Dec -> Jan (12) or Jan -> Dec (-1) -- limit expected date to 0-11\n\t\t\t\tif (new_month < 0 || new_month > 11)\n\t\t\t\t\tnew_month = (new_month + 12) % 12;\n\t\t\t} else {\n\t\t\t\t// For magnitudes >1, move one month at a time...\n\t\t\t\tfor (var i=0; i<mag; i++)\n\t\t\t\t\t// ...which might decrease the day (eg, Jan 31 to Feb 28, etc)...\n\t\t\t\t\tnew_date = this.moveMonth(new_date, dir);\n\t\t\t\t// ...then reset the day, keeping it in the new month\n\t\t\t\tnew_month = new_date.getUTCMonth();\n\t\t\t\tnew_date.setUTCDate(day);\n\t\t\t\ttest = function(){ return new_month != new_date.getUTCMonth(); };\n\t\t\t}\n\t\t\t// Common date-resetting loop -- if date is beyond end of month, make it\n\t\t\t// end of month\n\t\t\twhile (test()){\n\t\t\t\tnew_date.setUTCDate(--day);\n\t\t\t\tnew_date.setUTCMonth(new_month);\n\t\t\t}\n\t\t\treturn new_date;\n\t\t},\n\n\t\tmoveYear: function(date, dir){\n\t\t\treturn this.moveMonth(date, dir*12);\n\t\t},\n\n\t\tdateWithinRange: function(date){\n\t\t\treturn date >= this.o.startDate && date <= this.o.endDate;\n\t\t},\n\n\t\tkeydown: function(e){\n\t\t\tif (this.picker.is(':not(:visible)')){\n\t\t\t\tif (e.keyCode == 27) // allow escape to hide and re-show picker\n\t\t\t\t\tthis.show();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar dateChanged = false,\n\t\t\t\tdir, day, month,\n\t\t\t\tnewDate, newViewDate;\n\t\t\tswitch(e.keyCode){\n\t\t\t\tcase 27: // escape\n\t\t\t\t\tthis.hide();\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 37: // left\n\t\t\t\tcase 39: // right\n\t\t\t\t\tif (!this.o.keyboardNavigation) break;\n\t\t\t\t\tdir = e.keyCode == 37 ? -1 : 1;\n\t\t\t\t\tif (e.ctrlKey){\n\t\t\t\t\t\tnewDate = this.moveYear(this.date, dir);\n\t\t\t\t\t\tnewViewDate = this.moveYear(this.viewDate, dir);\n\t\t\t\t\t} else if (e.shiftKey){\n\t\t\t\t\t\tnewDate = this.moveMonth(this.date, dir);\n\t\t\t\t\t\tnewViewDate = this.moveMonth(this.viewDate, dir);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnewDate = new Date(this.date);\n\t\t\t\t\t\tnewDate.setUTCDate(this.date.getUTCDate() + dir);\n\t\t\t\t\t\tnewViewDate = new Date(this.viewDate);\n\t\t\t\t\t\tnewViewDate.setUTCDate(this.viewDate.getUTCDate() + dir);\n\t\t\t\t\t}\n\t\t\t\t\tif (this.dateWithinRange(newDate)){\n\t\t\t\t\t\tthis.date = newDate;\n\t\t\t\t\t\tthis.viewDate = newViewDate;\n\t\t\t\t\t\tthis.setValue();\n\t\t\t\t\t\tthis.update();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tdateChanged = true;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 38: // up\n\t\t\t\tcase 40: // down\n\t\t\t\t\tif (!this.o.keyboardNavigation) break;\n\t\t\t\t\tdir = e.keyCode == 38 ? -1 : 1;\n\t\t\t\t\tif (e.ctrlKey){\n\t\t\t\t\t\tnewDate = this.moveYear(this.date, dir);\n\t\t\t\t\t\tnewViewDate = this.moveYear(this.viewDate, dir);\n\t\t\t\t\t} else if (e.shiftKey){\n\t\t\t\t\t\tnewDate = this.moveMonth(this.date, dir);\n\t\t\t\t\t\tnewViewDate = this.moveMonth(this.viewDate, dir);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnewDate = new Date(this.date);\n\t\t\t\t\t\tnewDate.setUTCDate(this.date.getUTCDate() + dir * 7);\n\t\t\t\t\t\tnewViewDate = new Date(this.viewDate);\n\t\t\t\t\t\tnewViewDate.setUTCDate(this.viewDate.getUTCDate() + dir * 7);\n\t\t\t\t\t}\n\t\t\t\t\tif (this.dateWithinRange(newDate)){\n\t\t\t\t\t\tthis.date = newDate;\n\t\t\t\t\t\tthis.viewDate = newViewDate;\n\t\t\t\t\t\tthis.setValue();\n\t\t\t\t\t\tthis.update();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tdateChanged = true;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 13: // enter\n\t\t\t\t\tthis.hide();\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 9: // tab\n\t\t\t\t\tthis.hide();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (dateChanged){\n\t\t\t\tthis._trigger('changeDate');\n\t\t\t\tvar element;\n\t\t\t\tif (this.isInput) {\n\t\t\t\t\telement = this.element;\n\t\t\t\t} else if (this.component){\n\t\t\t\t\telement = this.element.find('input');\n\t\t\t\t}\n\t\t\t\tif (element) {\n\t\t\t\t\telement.change();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tshowMode: function(dir) {\n\t\t\tif (dir) {\n\t\t\t\tthis.viewMode = Math.max(this.o.minViewMode, Math.min(2, this.viewMode + dir));\n\t\t\t}\n\t\t\t/*\n\t\t\t\tvitalets: fixing bug of very special conditions:\n\t\t\t\tjquery 1.7.1 + webkit + show inline datepicker in bootstrap popover.\n\t\t\t\tMethod show() does not set display css correctly and datepicker is not shown.\n\t\t\t\tChanged to .css('display', 'block') solve the problem.\n\t\t\t\tSee https://github.com/vitalets/x-editable/issues/37\n\n\t\t\t\tIn jquery 1.7.2+ everything works fine.\n\t\t\t*/\n\t\t\t//this.picker.find('>div').hide().filter('.datepicker-'+DPGlobal.modes[this.viewMode].clsName).show();\n\t\t\tthis.picker.find('>div').hide().filter('.datepicker-'+DPGlobal.modes[this.viewMode].clsName).css('display', 'block');\n\t\t\tthis.updateNavArrows();\n\t\t}\n\t};\n\n\tvar DateRangePicker = function(element, options){\n\t\tthis.element = $(element);\n\t\tthis.inputs = $.map(options.inputs, function(i){ return i.jquery ? i[0] : i; });\n\t\tdelete options.inputs;\n\n\t\t$(this.inputs)\n\t\t\t.datepicker(options)\n\t\t\t.bind('changeDate', $.proxy(this.dateUpdated, this));\n\n\t\tthis.pickers = $.map(this.inputs, function(i){ return $(i).data('datepicker'); });\n\t\tthis.updateDates();\n\t};\n\tDateRangePicker.prototype = {\n\t\tupdateDates: function(){\n\t\t\tthis.dates = $.map(this.pickers, function(i){ return i.date; });\n\t\t\tthis.updateRanges();\n\t\t},\n\t\tupdateRanges: function(){\n\t\t\tvar range = $.map(this.dates, function(d){ return d.valueOf(); });\n\t\t\t$.each(this.pickers, function(i, p){\n\t\t\t\tp.setRange(range);\n\t\t\t});\n\t\t},\n\t\tdateUpdated: function(e){\n\t\t\tvar dp = $(e.target).data('datepicker'),\n\t\t\t\tnew_date = dp.getUTCDate(),\n\t\t\t\ti = $.inArray(e.target, this.inputs),\n\t\t\t\tl = this.inputs.length;\n\t\t\tif (i == -1) return;\n\n\t\t\tif (new_date < this.dates[i]){\n\t\t\t\t// Date being moved earlier/left\n\t\t\t\twhile (i>=0 && new_date < this.dates[i]){\n\t\t\t\t\tthis.pickers[i--].setUTCDate(new_date);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (new_date > this.dates[i]){\n\t\t\t\t// Date being moved later/right\n\t\t\t\twhile (i<l && new_date > this.dates[i]){\n\t\t\t\t\tthis.pickers[i++].setUTCDate(new_date);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.updateDates();\n\t\t},\n\t\tremove: function(){\n\t\t\t$.map(this.pickers, function(p){ p.remove(); });\n\t\t\tdelete this.element.data().datepicker;\n\t\t}\n\t};\n\n\tfunction opts_from_el(el, prefix){\n\t\t// Derive options from element data-attrs\n\t\tvar data = $(el).data(),\n\t\t\tout = {}, inkey,\n\t\t\treplace = new RegExp('^' + prefix.toLowerCase() + '([A-Z])'),\n\t\t\tprefix = new RegExp('^' + prefix.toLowerCase());\n\t\tfor (var key in data)\n\t\t\tif (prefix.test(key)){\n\t\t\t\tinkey = key.replace(replace, function(_,a){ return a.toLowerCase(); });\n\t\t\t\tout[inkey] = data[key];\n\t\t\t}\n\t\treturn out;\n\t}\n\n\tfunction opts_from_locale(lang){\n\t\t// Derive options from locale plugins\n\t\tvar out = {};\n\t\t// Check if \"de-DE\" style date is available, if not language should\n\t\t// fallback to 2 letter code eg \"de\"\n\t\tif (!dates[lang]) {\n\t\t\tlang = lang.split('-')[0]\n\t\t\tif (!dates[lang])\n\t\t\t\treturn;\n\t\t}\n\t\tvar d = dates[lang];\n\t\t$.each(locale_opts, function(i,k){\n\t\t\tif (k in d)\n\t\t\t\tout[k] = d[k];\n\t\t});\n\t\treturn out;\n\t}\n\n\tvar old = $.fn.datepicker;\n\tvar datepicker = $.fn.datepicker = function ( option ) {\n\t\tvar args = Array.apply(null, arguments);\n\t\targs.shift();\n\t\tvar internal_return,\n\t\t\tthis_return;\n\t\tthis.each(function () {\n\t\t\tvar $this = $(this),\n\t\t\t\tdata = $this.data('datepicker'),\n\t\t\t\toptions = typeof option == 'object' && option;\n\t\t\tif (!data) {\n\t\t\t\tvar elopts = opts_from_el(this, 'date'),\n\t\t\t\t\t// Preliminary otions\n\t\t\t\t\txopts = $.extend({}, defaults, elopts, options),\n\t\t\t\t\tlocopts = opts_from_locale(xopts.language),\n\t\t\t\t\t// Options priority: js args, data-attrs, locales, defaults\n\t\t\t\t\topts = $.extend({}, defaults, locopts, elopts, options);\n\t\t\t\tif ($this.is('.input-daterange') || opts.inputs){\n\t\t\t\t\tvar ropts = {\n\t\t\t\t\t\tinputs: opts.inputs || $this.find('input').toArray()\n\t\t\t\t\t};\n\t\t\t\t\t$this.data('datepicker', (data = new DateRangePicker(this, $.extend(opts, ropts))));\n\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t\t$this.data('datepicker', (data = new Datepicker(this, opts)));\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (typeof option == 'string' && typeof data[option] == 'function') {\n\t\t\t\tinternal_return = data[option].apply(data, args);\n\t\t\t\tif (internal_return !== undefined)\n\t\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t\tif (internal_return !== undefined)\n\t\t\treturn internal_return;\n\t\telse\n\t\t\treturn this;\n\t};\n\n\tvar defaults = $.fn.datepicker.defaults = {\n\t\tautoclose: false,\n\t\tbeforeShowDay: $.noop,\n\t\tcalendarWeeks: false,\n\t\tclearBtn: false,\n\t\tdaysOfWeekDisabled: [],\n\t\tendDate: Infinity,\n\t\tforceParse: true,\n\t\tformat: 'mm/dd/yyyy',\n\t\tkeyboardNavigation: true,\n\t\tlanguage: 'en',\n\t\tminViewMode: 0,\n\t\trtl: false,\n\t\tstartDate: -Infinity,\n\t\tstartView: 0,\n\t\ttodayBtn: false,\n\t\ttodayHighlight: false,\n\t\tweekStart: 0\n\t};\n\tvar locale_opts = $.fn.datepicker.locale_opts = [\n\t\t'format',\n\t\t'rtl',\n\t\t'weekStart'\n\t];\n\t$.fn.datepicker.Constructor = Datepicker;\n\tvar dates = $.fn.datepicker.dates = {\n\t\ten: {\n\t\t\tdays: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\", \"Sunday\"],\n\t\t\tdaysShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"],\n\t\t\tdaysMin: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\", \"Su\"],\n\t\t\tmonths: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n\t\t\tmonthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n\t\t\ttoday: \"Today\",\n\t\t\tclear: \"Clear\"\n\t\t}\n\t};\n\n\tvar DPGlobal = {\n\t\tmodes: [\n\t\t\t{\n\t\t\t\tclsName: 'days',\n\t\t\t\tnavFnc: 'Month',\n\t\t\t\tnavStep: 1\n\t\t\t},\n\t\t\t{\n\t\t\t\tclsName: 'months',\n\t\t\t\tnavFnc: 'FullYear',\n\t\t\t\tnavStep: 1\n\t\t\t},\n\t\t\t{\n\t\t\t\tclsName: 'years',\n\t\t\t\tnavFnc: 'FullYear',\n\t\t\t\tnavStep: 10\n\t\t}],\n\t\tisLeapYear: function (year) {\n\t\t\treturn (((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0));\n\t\t},\n\t\tgetDaysInMonth: function (year, month) {\n\t\t\treturn [31, (DPGlobal.isLeapYear(year) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month];\n\t\t},\n\t\tvalidParts: /dd?|DD?|mm?|MM?|yy(?:yy)?/g,\n\t\tnonpunctuation: /[^ -\\/:-@\\[\\u3400-\\u9fff-`{-~\\t\\n\\r]+/g,\n\t\tparseFormat: function(format){\n\t\t\t// IE treats \\0 as a string end in inputs (truncating the value),\n\t\t\t// so it's a bad format delimiter, anyway\n\t\t\tvar separators = format.replace(this.validParts, '\\0').split('\\0'),\n\t\t\t\tparts = format.match(this.validParts);\n\t\t\tif (!separators || !separators.length || !parts || parts.length === 0){\n\t\t\t\tthrow new Error(\"Invalid date format.\");\n\t\t\t}\n\t\t\treturn {separators: separators, parts: parts};\n\t\t},\n\t\tparseDate: function(date, format, language) {\n\t\t\tif (date instanceof Date) return date;\n\t\t\tif (typeof format === 'string')\n\t\t\t\tformat = DPGlobal.parseFormat(format);\n\t\t\tif (/^[\\-+]\\d+[dmwy]([\\s,]+[\\-+]\\d+[dmwy])*$/.test(date)) {\n\t\t\t\tvar part_re = /([\\-+]\\d+)([dmwy])/,\n\t\t\t\t\tparts = date.match(/([\\-+]\\d+)([dmwy])/g),\n\t\t\t\t\tpart, dir;\n\t\t\t\tdate = new Date();\n\t\t\t\tfor (var i=0; i<parts.length; i++) {\n\t\t\t\t\tpart = part_re.exec(parts[i]);\n\t\t\t\t\tdir = parseInt(part[1]);\n\t\t\t\t\tswitch(part[2]){\n\t\t\t\t\t\tcase 'd':\n\t\t\t\t\t\t\tdate.setUTCDate(date.getUTCDate() + dir);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'm':\n\t\t\t\t\t\t\tdate = Datepicker.prototype.moveMonth.call(Datepicker.prototype, date, dir);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'w':\n\t\t\t\t\t\t\tdate.setUTCDate(date.getUTCDate() + dir * 7);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'y':\n\t\t\t\t\t\t\tdate = Datepicker.prototype.moveYear.call(Datepicker.prototype, date, dir);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn UTCDate(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), 0, 0, 0);\n\t\t\t}\n\t\t\tvar parts = date && date.match(this.nonpunctuation) || [],\n\t\t\t\tdate = new Date(),\n\t\t\t\tparsed = {},\n\t\t\t\tsetters_order = ['yyyy', 'yy', 'M', 'MM', 'm', 'mm', 'd', 'dd'],\n\t\t\t\tsetters_map = {\n\t\t\t\t\tyyyy: function(d,v){ return d.setUTCFullYear(v); },\n\t\t\t\t\tyy: function(d,v){ return d.setUTCFullYear(2000+v); },\n\t\t\t\t\tm: function(d,v){\n\t\t\t\t\t\tv -= 1;\n\t\t\t\t\t\twhile (v<0) v += 12;\n\t\t\t\t\t\tv %= 12;\n\t\t\t\t\t\td.setUTCMonth(v);\n\t\t\t\t\t\twhile (d.getUTCMonth() != v)\n\t\t\t\t\t\t\td.setUTCDate(d.getUTCDate()-1);\n\t\t\t\t\t\treturn d;\n\t\t\t\t\t},\n\t\t\t\t\td: function(d,v){ return d.setUTCDate(v); }\n\t\t\t\t},\n\t\t\t\tval, filtered, part;\n\t\t\tsetters_map['M'] = setters_map['MM'] = setters_map['mm'] = setters_map['m'];\n\t\t\tsetters_map['dd'] = setters_map['d'];\n\t\t\tdate = UTCDate(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);\n\t\t\tvar fparts = format.parts.slice();\n\t\t\t// Remove noop parts\n\t\t\tif (parts.length != fparts.length) {\n\t\t\t\tfparts = $(fparts).filter(function(i,p){\n\t\t\t\t\treturn $.inArray(p, setters_order) !== -1;\n\t\t\t\t}).toArray();\n\t\t\t}\n\t\t\t// Process remainder\n\t\t\tif (parts.length == fparts.length) {\n\t\t\t\tfor (var i=0, cnt = fparts.length; i < cnt; i++) {\n\t\t\t\t\tval = parseInt(parts[i], 10);\n\t\t\t\t\tpart = fparts[i];\n\t\t\t\t\tif (isNaN(val)) {\n\t\t\t\t\t\tswitch(part) {\n\t\t\t\t\t\t\tcase 'MM':\n\t\t\t\t\t\t\t\tfiltered = $(dates[language].months).filter(function(){\n\t\t\t\t\t\t\t\t\tvar m = this.slice(0, parts[i].length),\n\t\t\t\t\t\t\t\t\t\tp = parts[i].slice(0, m.length);\n\t\t\t\t\t\t\t\t\treturn m == p;\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tval = $.inArray(filtered[0], dates[language].months) + 1;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'M':\n\t\t\t\t\t\t\t\tfiltered = $(dates[language].monthsShort).filter(function(){\n\t\t\t\t\t\t\t\t\tvar m = this.slice(0, parts[i].length),\n\t\t\t\t\t\t\t\t\t\tp = parts[i].slice(0, m.length);\n\t\t\t\t\t\t\t\t\treturn m == p;\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tval = $.inArray(filtered[0], dates[language].monthsShort) + 1;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tparsed[part] = val;\n\t\t\t\t}\n\t\t\t\tfor (var i=0, s; i<setters_order.length; i++){\n\t\t\t\t\ts = setters_order[i];\n\t\t\t\t\tif (s in parsed && !isNaN(parsed[s]))\n\t\t\t\t\t\tsetters_map[s](date, parsed[s]);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn date;\n\t\t},\n\t\tformatDate: function(date, format, language){\n\t\t\tif (typeof format === 'string')\n\t\t\t\tformat = DPGlobal.parseFormat(format);\n\t\t\tvar val = {\n\t\t\t\td: date.getUTCDate(),\n\t\t\t\tD: dates[language].daysShort[date.getUTCDay()],\n\t\t\t\tDD: dates[language].days[date.getUTCDay()],\n\t\t\t\tm: date.getUTCMonth() + 1,\n\t\t\t\tM: dates[language].monthsShort[date.getUTCMonth()],\n\t\t\t\tMM: dates[language].months[date.getUTCMonth()],\n\t\t\t\tyy: date.getUTCFullYear().toString().substring(2),\n\t\t\t\tyyyy: date.getUTCFullYear()\n\t\t\t};\n\t\t\tval.dd = (val.d < 10 ? '0' : '') + val.d;\n\t\t\tval.mm = (val.m < 10 ? '0' : '') + val.m;\n\t\t\tvar date = [],\n\t\t\t\tseps = $.extend([], format.separators);\n\t\t\tfor (var i=0, cnt = format.parts.length; i <= cnt; i++) {\n\t\t\t\tif (seps.length)\n\t\t\t\t\tdate.push(seps.shift());\n\t\t\t\tdate.push(val[format.parts[i]]);\n\t\t\t}\n\t\t\treturn date.join('');\n\t\t},\n\t\theadTemplate: '<thead>'+\n\t\t\t\t\t\t\t'<tr>'+\n\t\t\t\t\t\t\t\t'<th class=\"prev\"><i class=\"icon-arrow-left\"/></th>'+\n\t\t\t\t\t\t\t\t'<th colspan=\"5\" class=\"datepicker-switch\"></th>'+\n\t\t\t\t\t\t\t\t'<th class=\"next\"><i class=\"icon-arrow-right\"/></th>'+\n\t\t\t\t\t\t\t'</tr>'+\n\t\t\t\t\t\t'</thead>',\n\t\tcontTemplate: '<tbody><tr><td colspan=\"7\"></td></tr></tbody>',\n\t\tfootTemplate: '<tfoot><tr><th colspan=\"7\" class=\"today\"></th></tr><tr><th colspan=\"7\" class=\"clear\"></th></tr></tfoot>'\n\t};\n\tDPGlobal.template = '<div class=\"datepicker\">'+\n\t\t\t\t\t\t\t'<div class=\"datepicker-days\">'+\n\t\t\t\t\t\t\t\t'<table class=\" table-condensed\">'+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\t'<tbody></tbody>'+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'</table>'+\n\t\t\t\t\t\t\t'</div>'+\n\t\t\t\t\t\t\t'<div class=\"datepicker-months\">'+\n\t\t\t\t\t\t\t\t'<table class=\"table-condensed\">'+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.contTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'</table>'+\n\t\t\t\t\t\t\t'</div>'+\n\t\t\t\t\t\t\t'<div class=\"datepicker-years\">'+\n\t\t\t\t\t\t\t\t'<table class=\"table-condensed\">'+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.contTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'</table>'+\n\t\t\t\t\t\t\t'</div>'+\n\t\t\t\t\t\t'</div>';\n\n\t$.fn.datepicker.DPGlobal = DPGlobal;\n\n\n\t/* DATEPICKER NO CONFLICT\n\t* =================== */\n\n\t$.fn.datepicker.noConflict = function(){\n\t\t$.fn.datepicker = old;\n\t\treturn this;\n\t};\n\n\n\t/* DATEPICKER DATA-API\n\t* ================== */\n\n\t$(document).on(\n\t\t'focus.datepicker.data-api click.datepicker.data-api',\n\t\t'[data-provide=\"datepicker\"]',\n\t\tfunction(e){\n\t\t\tvar $this = $(this);\n\t\t\tif ($this.data('datepicker')) return;\n\t\t\te.preventDefault();\n\t\t\t// component click requires us to explicitly show it\n\t\t\tdatepicker.call($this, 'show');\n\t\t}\n\t);\n\t$(function(){\n\t\t//$('[data-provide=\"datepicker-inline\"]').datepicker();\n        //vit: changed to support noConflict()\n        datepicker.call($('[data-provide=\"datepicker-inline\"]'));\n\t});\n\n}( window.jQuery ));\n\n/**\nBootstrap-datepicker.  \nDescription and examples: https://github.com/eternicode/bootstrap-datepicker.  \nFor **i18n** you should include js file from here: https://github.com/eternicode/bootstrap-datepicker/tree/master/js/locales\nand set `language` option.  \nSince 1.4.0 date has different appearance in **popup** and **inline** modes. \n\n@class date\n@extends abstractinput\n@final\n@example\n<a href=\"#\" id=\"dob\" data-type=\"date\" data-pk=\"1\" data-url=\"/post\" data-title=\"Select date\">15/05/1984</a>\n<script>\n$(function(){\n    $('#dob').editable({\n        format: 'yyyy-mm-dd',    \n        viewformat: 'dd/mm/yyyy',    \n        datepicker: {\n                weekStart: 1\n           }\n        }\n    });\n});\n</script>\n**/\n(function ($) {\n    \"use strict\";\n    \n    //store bootstrap-datepicker as bdateicker to exclude conflict with jQuery UI one\n    $.fn.bdatepicker = $.fn.datepicker.noConflict();\n    if(!$.fn.datepicker) { //if there were no other datepickers, keep also original name\n        $.fn.datepicker = $.fn.bdatepicker;    \n    }    \n    \n    var Date = function (options) {\n        this.init('date', options, Date.defaults);\n        this.initPicker(options, Date.defaults);\n    };\n\n    $.fn.editableutils.inherit(Date, $.fn.editabletypes.abstractinput);    \n    \n    $.extend(Date.prototype, {\n        initPicker: function(options, defaults) {\n            //'format' is set directly from settings or data-* attributes\n\n            //by default viewformat equals to format\n            if(!this.options.viewformat) {\n                this.options.viewformat = this.options.format;\n            }\n            \n            //try parse datepicker config defined as json string in data-datepicker\n            options.datepicker = $.fn.editableutils.tryParseJson(options.datepicker, true);\n            \n            //overriding datepicker config (as by default jQuery extend() is not recursive)\n            //since 1.4 datepicker internally uses viewformat instead of format. Format is for submit only\n            this.options.datepicker = $.extend({}, defaults.datepicker, options.datepicker, {\n                format: this.options.viewformat\n            });\n            \n            //language\n            this.options.datepicker.language = this.options.datepicker.language || 'en'; \n\n            //store DPglobal\n            this.dpg = $.fn.bdatepicker.DPGlobal; \n\n            //store parsed formats\n            this.parsedFormat = this.dpg.parseFormat(this.options.format);\n            this.parsedViewFormat = this.dpg.parseFormat(this.options.viewformat);            \n        },\n        \n        render: function () {\n            this.$input.bdatepicker(this.options.datepicker);\n            \n            //\"clear\" link\n            if(this.options.clear) {\n                this.$clear = $('<a href=\"#\"></a>').html(this.options.clear).click($.proxy(function(e){\n                    e.preventDefault();\n                    e.stopPropagation();\n                    this.clear();\n                }, this));\n                \n                this.$tpl.parent().append($('<div class=\"editable-clear\">').append(this.$clear));  \n            }                \n        },\n        \n        value2html: function(value, element) {\n           var text = value ? this.dpg.formatDate(value, this.parsedViewFormat, this.options.datepicker.language) : '';\n           Date.superclass.value2html.call(this, text, element); \n        },\n\n        html2value: function(html) {\n            return this.parseDate(html, this.parsedViewFormat);\n        },   \n\n        value2str: function(value) {\n            return value ? this.dpg.formatDate(value, this.parsedFormat, this.options.datepicker.language) : '';\n        }, \n\n        str2value: function(str) {\n            return this.parseDate(str, this.parsedFormat);\n        }, \n\n        value2submit: function(value) {\n            return this.value2str(value);\n        },                    \n\n        value2input: function(value) {\n            this.$input.bdatepicker('update', value);\n        },\n\n        input2value: function() { \n            return this.$input.data('datepicker').date;\n        },       \n\n        activate: function() {\n        },\n\n        clear:  function() {\n            this.$input.data('datepicker').date = null;\n            this.$input.find('.active').removeClass('active');\n            if(!this.options.showbuttons) {\n                this.$input.closest('form').submit(); \n            }\n        },\n\n        autosubmit: function() {\n            this.$input.on('mouseup', '.day', function(e){\n                if($(e.currentTarget).is('.old') || $(e.currentTarget).is('.new')) {\n                    return;\n                }\n                var $form = $(this).closest('form');\n                setTimeout(function() {\n                    $form.submit();\n                }, 200);\n            });\n           //changedate is not suitable as it triggered when showing datepicker. see #149\n           /*\n           this.$input.on('changeDate', function(e){\n               var $form = $(this).closest('form');\n               setTimeout(function() {\n                   $form.submit();\n               }, 200);\n           });\n           */\n       },\n       \n       /*\n        For incorrect date bootstrap-datepicker returns current date that is not suitable\n        for datefield.\n        This function returns null for incorrect date.  \n       */\n       parseDate: function(str, format) {\n           var date = null, formattedBack;\n           if(str) {\n               date = this.dpg.parseDate(str, format, this.options.datepicker.language);\n               if(typeof str === 'string') {\n                   formattedBack = this.dpg.formatDate(date, format, this.options.datepicker.language);\n                   if(str !== formattedBack) {\n                       date = null;\n                   }\n               }\n           }\n           return date;\n       }\n\n    });\n\n    Date.defaults = $.extend({}, $.fn.editabletypes.abstractinput.defaults, {\n        /**\n        @property tpl \n        @default <div></div>\n        **/         \n        tpl:'<div class=\"editable-date well\"></div>',\n        /**\n        @property inputclass \n        @default null\n        **/\n        inputclass: null,\n        /**\n        Format used for sending value to server. Also applied when converting date from <code>data-value</code> attribute.<br>\n        Possible tokens are: <code>d, dd, m, mm, yy, yyyy</code>  \n\n        @property format \n        @type string\n        @default yyyy-mm-dd\n        **/\n        format:'yyyy-mm-dd',\n        /**\n        Format used for displaying date. Also applied when converting date from element's text on init.   \n        If not specified equals to <code>format</code>\n\n        @property viewformat \n        @type string\n        @default null\n        **/\n        viewformat: null,\n        /**\n        Configuration of datepicker.\n        Full list of options: http://bootstrap-datepicker.readthedocs.org/en/latest/options.html\n\n        @property datepicker \n        @type object\n        @default {\n            weekStart: 0,\n            startView: 0,\n            minViewMode: 0,\n            autoclose: false\n        }\n        **/\n        datepicker:{\n            weekStart: 0,\n            startView: 0,\n            minViewMode: 0,\n            autoclose: false\n        },\n        /**\n        Text shown as clear date button. \n        If <code>false</code> clear button will not be rendered.\n\n        @property clear \n        @type boolean|string\n        @default 'x clear'\n        **/\n        clear: '&times; clear'\n    });\n\n    $.fn.editabletypes.date = Date;\n\n}(window.jQuery));\n\n/**\nBootstrap datefield input - modification for inline mode.\nShows normal <input type=\"text\"> and binds popup datepicker.  \nAutomatically shown in inline mode.\n\n@class datefield\n@extends date\n\n@since 1.4.0\n**/\n(function ($) {\n    \"use strict\";\n    \n    var DateField = function (options) {\n        this.init('datefield', options, DateField.defaults);\n        this.initPicker(options, DateField.defaults);\n    };\n\n    $.fn.editableutils.inherit(DateField, $.fn.editabletypes.date);    \n    \n    $.extend(DateField.prototype, {\n        render: function () {\n            this.$input = this.$tpl.find('input');\n            this.setClass();\n            this.setAttr('placeholder');\n    \n            //bootstrap-datepicker is set `bdateicker` to exclude conflict with jQuery UI one. (in date.js)        \n            this.$tpl.bdatepicker(this.options.datepicker);\n            \n            //need to disable original event handlers\n            this.$input.off('focus keydown');\n            \n            //update value of datepicker\n            this.$input.keyup($.proxy(function(){\n               this.$tpl.removeData('date');\n               this.$tpl.bdatepicker('update');\n            }, this));\n            \n        },   \n        \n       value2input: function(value) {\n           this.$input.val(value ? this.dpg.formatDate(value, this.parsedViewFormat, this.options.datepicker.language) : '');\n           this.$tpl.bdatepicker('update');\n       },\n        \n       input2value: function() { \n           return this.html2value(this.$input.val());\n       },              \n        \n       activate: function() {\n           $.fn.editabletypes.text.prototype.activate.call(this);\n       },\n       \n       autosubmit: function() {\n         //reset autosubmit to empty  \n       }\n    });\n    \n    DateField.defaults = $.extend({}, $.fn.editabletypes.date.defaults, {\n        /**\n        @property tpl \n        **/         \n        tpl:'<div class=\"input-append date\"><input type=\"text\"/><span class=\"add-on\"><i class=\"icon-th\"></i></span></div>',\n        /**\n        @property inputclass \n        @default 'input-small'\n        **/         \n        inputclass: 'input-small',\n        \n        /* datepicker config */\n        datepicker: {\n            weekStart: 0,\n            startView: 0,\n            minViewMode: 0,\n            autoclose: true\n        }\n    });\n    \n    $.fn.editabletypes.datefield = DateField;\n\n}(window.jQuery));\n/**\nBootstrap-datetimepicker.  \nBased on [smalot bootstrap-datetimepicker plugin](https://github.com/smalot/bootstrap-datetimepicker). \nBefore usage you should manually include dependent js and css:\n\n    <link href=\"css/datetimepicker.css\" rel=\"stylesheet\" type=\"text/css\"></link> \n    <script src=\"js/bootstrap-datetimepicker.js\"></script>\n\nFor **i18n** you should include js file from here: https://github.com/smalot/bootstrap-datetimepicker/tree/master/js/locales\nand set `language` option.  \n\n@class datetime\n@extends abstractinput\n@final\n@since 1.4.4\n@example\n<a href=\"#\" id=\"last_seen\" data-type=\"datetime\" data-pk=\"1\" data-url=\"/post\" title=\"Select date & time\">15/03/2013 12:45</a>\n<script>\n$(function(){\n    $('#last_seen').editable({\n        format: 'yyyy-mm-dd hh:ii',    \n        viewformat: 'dd/mm/yyyy hh:ii',    \n        datetimepicker: {\n                weekStart: 1\n           }\n        }\n    });\n});\n</script>\n**/\n(function ($) {\n    \"use strict\";\n\n    var DateTime = function (options) {\n        this.init('datetime', options, DateTime.defaults);\n        this.initPicker(options, DateTime.defaults);\n    };\n\n    $.fn.editableutils.inherit(DateTime, $.fn.editabletypes.abstractinput);\n\n    $.extend(DateTime.prototype, {\n        initPicker: function(options, defaults) {\n            //'format' is set directly from settings or data-* attributes\n\n            //by default viewformat equals to format\n            if(!this.options.viewformat) {\n                this.options.viewformat = this.options.format;\n            }\n            \n            //try parse datetimepicker config defined as json string in data-datetimepicker\n            options.datetimepicker = $.fn.editableutils.tryParseJson(options.datetimepicker, true);\n\n            //overriding datetimepicker config (as by default jQuery extend() is not recursive)\n            //since 1.4 datetimepicker internally uses viewformat instead of format. Format is for submit only\n            this.options.datetimepicker = $.extend({}, defaults.datetimepicker, options.datetimepicker, {\n                format: this.options.viewformat\n            });\n\n            //language\n            this.options.datetimepicker.language = this.options.datetimepicker.language || 'en'; \n\n            //store DPglobal\n            this.dpg = $.fn.datetimepicker.DPGlobal; \n\n            //store parsed formats\n            this.parsedFormat = this.dpg.parseFormat(this.options.format, this.options.formatType);\n            this.parsedViewFormat = this.dpg.parseFormat(this.options.viewformat, this.options.formatType);\n        },\n\n        render: function () {\n            this.$input.datetimepicker(this.options.datetimepicker);\n\n            //adjust container position when viewMode changes\n            //see https://github.com/smalot/bootstrap-datetimepicker/pull/80\n            this.$input.on('changeMode', function(e) {\n                var f = $(this).closest('form').parent();\n                //timeout here, otherwise container changes position before form has new size\n                setTimeout(function(){\n                    f.triggerHandler('resize');\n                }, 0);\n            });\n\n            //\"clear\" link\n            if(this.options.clear) {\n                this.$clear = $('<a href=\"#\"></a>').html(this.options.clear).click($.proxy(function(e){\n                    e.preventDefault();\n                    e.stopPropagation();\n                    this.clear();\n                }, this));\n\n                this.$tpl.parent().append($('<div class=\"editable-clear\">').append(this.$clear));  \n            }\n        },\n\n        value2html: function(value, element) {\n            //formatDate works with UTCDate!\n            var text = value ? this.dpg.formatDate(this.toUTC(value), this.parsedViewFormat, this.options.datetimepicker.language, this.options.formatType) : '';\n            if(element) {\n                DateTime.superclass.value2html.call(this, text, element);\n            } else {\n                return text;\n            }\n        },\n\n        html2value: function(html) {\n            //parseDate return utc date!\n            var value = this.parseDate(html, this.parsedViewFormat); \n            return value ? this.fromUTC(value) : null;\n        },\n\n        value2str: function(value) {\n            //formatDate works with UTCDate!\n            return value ? this.dpg.formatDate(this.toUTC(value), this.parsedFormat, this.options.datetimepicker.language, this.options.formatType) : '';\n       },\n\n       str2value: function(str) {\n           //parseDate return utc date!\n           var value = this.parseDate(str, this.parsedFormat);\n           return value ? this.fromUTC(value) : null;\n       },\n\n       value2submit: function(value) {\n           return this.value2str(value);\n       },\n\n       value2input: function(value) {\n           if(value) {\n             this.$input.data('datetimepicker').setDate(value);\n           }\n       },\n\n       input2value: function() { \n           //date may be cleared, in that case getDate() triggers error\n           var dt = this.$input.data('datetimepicker');\n           return dt.date ? dt.getDate() : null;\n       },\n\n       activate: function() {\n       },\n\n       clear: function() {\n          this.$input.data('datetimepicker').date = null;\n          this.$input.find('.active').removeClass('active');\n          if(!this.options.showbuttons) {\n             this.$input.closest('form').submit(); \n          }          \n       },\n\n       autosubmit: function() {\n           this.$input.on('mouseup', '.minute', function(e){\n               var $form = $(this).closest('form');\n               setTimeout(function() {\n                   $form.submit();\n               }, 200);\n           });\n       },\n\n       //convert date from local to utc\n       toUTC: function(value) {\n         return value ? new Date(value.valueOf() - value.getTimezoneOffset() * 60000) : value;  \n       },\n\n       //convert date from utc to local\n       fromUTC: function(value) {\n         return value ? new Date(value.valueOf() + value.getTimezoneOffset() * 60000) : value;  \n       },\n\n       /*\n        For incorrect date bootstrap-datetimepicker returns current date that is not suitable\n        for datetimefield.\n        This function returns null for incorrect date.  \n       */\n       parseDate: function(str, format) {\n           var date = null, formattedBack;\n           if(str) {\n               date = this.dpg.parseDate(str, format, this.options.datetimepicker.language, this.options.formatType);\n               if(typeof str === 'string') {\n                   formattedBack = this.dpg.formatDate(date, format, this.options.datetimepicker.language, this.options.formatType);\n                   if(str !== formattedBack) {\n                       date = null;\n                   } \n               }\n           }\n           return date;\n       }\n\n    });\n\n    DateTime.defaults = $.extend({}, $.fn.editabletypes.abstractinput.defaults, {\n        /**\n        @property tpl \n        @default <div></div>\n        **/         \n        tpl:'<div class=\"editable-date well\"></div>',\n        /**\n        @property inputclass \n        @default null\n        **/\n        inputclass: null,\n        /**\n        Format used for sending value to server. Also applied when converting date from <code>data-value</code> attribute.<br>\n        Possible tokens are: <code>d, dd, m, mm, yy, yyyy, h, i</code>  \n        \n        @property format \n        @type string\n        @default yyyy-mm-dd hh:ii\n        **/         \n        format:'yyyy-mm-dd hh:ii',\n        formatType:'standard',\n        /**\n        Format used for displaying date. Also applied when converting date from element's text on init.   \n        If not specified equals to <code>format</code>\n        \n        @property viewformat \n        @type string\n        @default null\n        **/\n        viewformat: null,\n        /**\n        Configuration of datetimepicker.\n        Full list of options: https://github.com/smalot/bootstrap-datetimepicker\n\n        @property datetimepicker \n        @type object\n        @default { }\n        **/\n        datetimepicker:{\n            todayHighlight: false,\n            autoclose: false\n        },\n        /**\n        Text shown as clear date button. \n        If <code>false</code> clear button will not be rendered.\n\n        @property clear \n        @type boolean|string\n        @default 'x clear'\n        **/\n        clear: '&times; clear'\n    });\n\n    $.fn.editabletypes.datetime = DateTime;\n\n}(window.jQuery));\n/**\nBootstrap datetimefield input - datetime input for inline mode.\nShows normal <input type=\"text\"> and binds popup datetimepicker.  \nAutomatically shown in inline mode.\n\n@class datetimefield\n@extends datetime\n\n**/\n(function ($) {\n    \"use strict\";\n    \n    var DateTimeField = function (options) {\n        this.init('datetimefield', options, DateTimeField.defaults);\n        this.initPicker(options, DateTimeField.defaults);\n    };\n\n    $.fn.editableutils.inherit(DateTimeField, $.fn.editabletypes.datetime);\n    \n    $.extend(DateTimeField.prototype, {\n        render: function () {\n            this.$input = this.$tpl.find('input');\n            this.setClass();\n            this.setAttr('placeholder');\n            \n            this.$tpl.datetimepicker(this.options.datetimepicker);\n            \n            //need to disable original event handlers\n            this.$input.off('focus keydown');\n            \n            //update value of datepicker\n            this.$input.keyup($.proxy(function(){\n               this.$tpl.removeData('date');\n               this.$tpl.datetimepicker('update');\n            }, this));\n            \n        },   \n      \n       value2input: function(value) {\n           this.$input.val(this.value2html(value));\n           this.$tpl.datetimepicker('update');\n       },\n        \n       input2value: function() { \n           return this.html2value(this.$input.val());\n       },              \n        \n       activate: function() {\n           $.fn.editabletypes.text.prototype.activate.call(this);\n       },\n       \n       autosubmit: function() {\n         //reset autosubmit to empty  \n       }\n    });\n    \n    DateTimeField.defaults = $.extend({}, $.fn.editabletypes.datetime.defaults, {\n        /**\n        @property tpl \n        **/         \n        tpl:'<div class=\"input-append date\"><input type=\"text\"/><span class=\"add-on\"><i class=\"icon-th\"></i></span></div>',\n        /**\n        @property inputclass \n        @default 'input-medium'\n        **/         \n        inputclass: 'input-medium',\n        \n        /* datetimepicker config */\n        datetimepicker:{\n            todayHighlight: false,\n            autoclose: true\n        }\n    });\n    \n    $.fn.editabletypes.datetimefield = DateTimeField;\n\n}(window.jQuery));"
  },
  {
    "path": "public/admin/js/data-table/bootstrap-table-cookie.js",
    "content": "/**\n * @author: Dennis Hern?ndez\n * @webSite: http://djhvscf.github.io/Blog\n * @version: v1.2.2\n *\n * @update zhixin wen <wenzhixin2010@gmail.com>\n */\n\n(function ($) {\n    'use strict';\n\n    var cookieIds = {\n        sortOrder: 'bs.table.sortOrder',\n        sortName: 'bs.table.sortName',\n        pageNumber: 'bs.table.pageNumber',\n        pageList: 'bs.table.pageList',\n        columns: 'bs.table.columns',\n        searchText: 'bs.table.searchText',\n        filterControl: 'bs.table.filterControl'\n    };\n\n    var getCurrentHeader = function (that) {\n        var header = that.$header;\n        if (that.options.height) {\n            header = that.$tableHeader;\n        }\n\n        return header;\n    };\n\n    var getCurrentSearchControls = function (that) {\n        var searchControls = 'select, input';\n        if (that.options.height) {\n            searchControls = 'table select, table input';\n        }\n\n        return searchControls;\n    };\n\n    var cookieEnabled = function () {\n        return !!(navigator.cookieEnabled);\n    };\n\n    var inArrayCookiesEnabled = function (cookieName, cookiesEnabled) {\n        var index = -1;\n\n        for (var i = 0; i < cookiesEnabled.length; i++) {\n            if (cookieName.toLowerCase() === cookiesEnabled[i].toLowerCase()) {\n                index = i;\n                break;\n            }\n        }\n\n        return index;\n    };\n\n    var setCookie = function (that, cookieName, cookieValue) {\n        if ((!that.options.cookie) || (!cookieEnabled()) || (that.options.cookieIdTable === '')) {\n            return;\n        }\n\n        if (inArrayCookiesEnabled(cookieName, that.options.cookiesEnabled) === -1) {\n            return;\n        }\n\n        cookieName = that.options.cookieIdTable + '.' + cookieName;\n\n        switch(that.options.cookieStorage) {\n            case 'cookieStorage':\n                document.cookie = [\n                        cookieName, '=', cookieValue,\n                        '; expires=' + that.options.cookieExpire,\n                        that.options.cookiePath ? '; path=' + that.options.cookiePath : '',\n                        that.options.cookieDomain ? '; domain=' + that.options.cookieDomain : '',\n                        that.options.cookieSecure ? '; secure' : ''\n                    ].join('');\n            break;\n            case 'localStorage':\n                localStorage.setItem(cookieName, cookieValue);\n            break;\n            case 'sessionStorage':\n                sessionStorage.setItem(cookieName, cookieValue);\n            break;\n            default:\n                return false;\n        }\n\n        return true;\n    };\n\n    var getCookie = function (that, tableName, cookieName) {\n        if (!cookieName) {\n            return null;\n        }\n\n        if (inArrayCookiesEnabled(cookieName, that.options.cookiesEnabled) === -1) {\n            return null;\n        }\n\n        cookieName = tableName + '.' + cookieName;\n\n        switch(that.options.cookieStorage) {\n            case 'cookieStorage':\n                return decodeURIComponent(document.cookie.replace(new RegExp('(?:(?:^|.*;)\\\\s*' + encodeURIComponent(cookieName).replace(/[\\-\\.\\+\\*]/g, '\\\\$&') + '\\\\s*\\\\=\\\\s*([^;]*).*$)|^.*$'), '$1')) || null;\n            case 'localStorage':\n                return localStorage.getItem(cookieName);\n            case 'sessionStorage':\n                return sessionStorage.getItem(cookieName);\n            default:\n                return null;\n        }\n    };\n\n    var deleteCookie = function (that, tableName, cookieName) {\n        cookieName = tableName + '.' + cookieName;\n        \n        switch(that.options.cookieStorage) {\n            case 'cookieStorage':\n                document.cookie = [\n                        encodeURIComponent(cookieName), '=',\n                        '; expires=Thu, 01 Jan 1970 00:00:00 GMT',\n                        that.options.cookiePath ? '; path=' + that.options.cookiePath : '',\n                        that.options.cookieDomain ? '; domain=' + that.options.cookieDomain : '',\n                    ].join('');\n                break;\n            case 'localStorage':\n                localStorage.removeItem(cookieName);\n            break;\n            case 'sessionStorage':\n                sessionStorage.removeItem(cookieName);\n            break;\n\n        }\n        return true;\n    };\n\n    var calculateExpiration = function(cookieExpire) {\n        var time = cookieExpire.replace(/[0-9]*/, ''); //s,mi,h,d,m,y\n        cookieExpire = cookieExpire.replace(/[A-Za-z]{1,2}}/, ''); //number\n\n        switch (time.toLowerCase()) {\n            case 's':\n                cookieExpire = +cookieExpire;\n                break;\n            case 'mi':\n                cookieExpire = cookieExpire * 60;\n                break;\n            case 'h':\n                cookieExpire = cookieExpire * 60 * 60;\n                break;\n            case 'd':\n                cookieExpire = cookieExpire * 24 * 60 * 60;\n                break;\n            case 'm':\n                cookieExpire = cookieExpire * 30 * 24 * 60 * 60;\n                break;\n            case 'y':\n                cookieExpire = cookieExpire * 365 * 24 * 60 * 60;\n                break;\n            default:\n                cookieExpire = undefined;\n                break;\n        }\n\n        return cookieExpire === undefined ? '' : '; max-age=' + cookieExpire;\n    };\n\n    var initCookieFilters = function (bootstrapTable) {\n        setTimeout(function () {\n            var parsedCookieFilters = JSON.parse(getCookie(bootstrapTable, bootstrapTable.options.cookieIdTable, cookieIds.filterControl));\n\n            if (!bootstrapTable.options.filterControlValuesLoaded && parsedCookieFilters) {\n                bootstrapTable.options.filterControlValuesLoaded = true;\n\n                var cachedFilters = {},\n                    header = getCurrentHeader(bootstrapTable),\n                    searchControls = getCurrentSearchControls(bootstrapTable),\n\n                    applyCookieFilters = function (element, filteredCookies) {\n                        $(filteredCookies).each(function (i, cookie) {\n                            $(element).val(cookie.text);\n                            cachedFilters[cookie.field] = cookie.text;\n                        });\n                    };\n\n                header.find(searchControls).each(function () {\n                    var field = $(this).closest('[data-field]').data('field'),\n                        filteredCookies = $.grep(parsedCookieFilters, function (cookie) {\n                            return cookie.field === field;\n                        });\n\n                    applyCookieFilters(this, filteredCookies);\n                });\n\n                bootstrapTable.initColumnSearch(cachedFilters);\n            }\n        }, 250);\n    };\n\n    $.extend($.fn.bootstrapTable.defaults, {\n        cookie: false,\n        cookieExpire: '2h',\n        cookiePath: null,\n        cookieDomain: null,\n        cookieSecure: null,\n        cookieIdTable: '',\n        cookiesEnabled: [\n            'bs.table.sortOrder', 'bs.table.sortName',\n            'bs.table.pageNumber', 'bs.table.pageList',\n            'bs.table.columns', 'bs.table.searchText',\n            'bs.table.filterControl'\n        ],\n        cookieStorage: 'cookieStorage', //localStorage, sessionStorage\n        //internal variable\n        filterControls: [],\n        filterControlValuesLoaded: false\n    });\n\n    $.fn.bootstrapTable.methods.push('getCookies');\n    $.fn.bootstrapTable.methods.push('deleteCookie');\n\n    $.extend($.fn.bootstrapTable.utils, {\n        setCookie: setCookie,\n        getCookie: getCookie\n    });\n\n    var BootstrapTable = $.fn.bootstrapTable.Constructor,\n        _init = BootstrapTable.prototype.init,\n        _initTable = BootstrapTable.prototype.initTable,\n        _initServer = BootstrapTable.prototype.initServer,\n        _onSort = BootstrapTable.prototype.onSort,\n        _onPageNumber = BootstrapTable.prototype.onPageNumber,\n        _onPageListChange = BootstrapTable.prototype.onPageListChange,\n        _onPageFirst = BootstrapTable.prototype.onPageFirst,\n        _onPagePre = BootstrapTable.prototype.onPagePre,\n        _onPageNext = BootstrapTable.prototype.onPageNext,\n        _onPageLast = BootstrapTable.prototype.onPageLast,\n        _toggleColumn = BootstrapTable.prototype.toggleColumn,\n        _selectPage = BootstrapTable.prototype.selectPage,\n        _onSearch = BootstrapTable.prototype.onSearch;\n\n    BootstrapTable.prototype.init = function () {\n        var timeoutId = 0;\n        this.options.filterControls = [];\n        this.options.filterControlValuesLoaded = false;\n\n        this.options.cookiesEnabled = typeof this.options.cookiesEnabled === 'string' ?\n            this.options.cookiesEnabled.replace('[', '').replace(']', '')\n                .replace(/ /g, '').toLowerCase().split(',') :\n                this.options.cookiesEnabled;\n\n        if (this.options.filterControl) {\n            var that = this;\n            this.$el.on('column-search.bs.table', function (e, field, text) {\n                var isNewField = true;\n\n                for (var i = 0; i < that.options.filterControls.length; i++) {\n                    if (that.options.filterControls[i].field === field) {\n                        that.options.filterControls[i].text = text;\n                        isNewField = false;\n                        break;\n                    }\n                }\n                if (isNewField) {\n                    that.options.filterControls.push({\n                        field: field,\n                        text: text\n                    });\n                }\n\n                setCookie(that, cookieIds.filterControl, JSON.stringify(that.options.filterControls));\n            }).on('post-body.bs.table', initCookieFilters(that));\n        }\n        _init.apply(this, Array.prototype.slice.apply(arguments));\n    };\n\n    BootstrapTable.prototype.initServer = function () {\n        var bootstrapTable = this,\n            selectsWithoutDefaults = [],\n\n            columnHasSelectControl = function (column) {\n                return column.filterControl && column.filterControl === 'select';\n            },\n\n            columnHasDefaultSelectValues = function (column) {\n                return column.filterData && column.filterData !== 'column';\n            },\n\n            cookiesPresent = function() {\n                var cookie = JSON.parse(getCookie(bootstrapTable, bootstrapTable.options.cookieIdTable, cookieIds.filterControl));\n                return bootstrapTable.options.cookie && cookie;\n            };\n\n        selectsWithoutDefaults = $.grep(bootstrapTable.columns, function(column) {\n            return columnHasSelectControl(column) && !columnHasDefaultSelectValues(column);\n        });\n\n        // reset variable to original initServer function, so that future calls to initServer\n        // use the original function from this point on.\n        BootstrapTable.prototype.initServer = _initServer;\n\n        // early return if we don't need to populate any select values with cookie values\n        if (this.options.filterControl && cookiesPresent() && selectsWithoutDefaults.length === 0) {\n            return;\n        }\n\n        // call BootstrapTable.prototype.initServer\n        _initServer.apply(this, Array.prototype.slice.apply(arguments));\n    };\n\n\n    BootstrapTable.prototype.initTable = function () {\n        _initTable.apply(this, Array.prototype.slice.apply(arguments));\n        this.initCookie();\n    };\n\n    BootstrapTable.prototype.initCookie = function () {\n        if (!this.options.cookie) {\n            return;\n        }\n\n        if ((this.options.cookieIdTable === '') || (this.options.cookieExpire === '') || (!cookieEnabled())) {\n            throw new Error(\"Configuration error. Please review the cookieIdTable, cookieExpire properties, if those properties are ok, then this browser does not support the cookies\");\n        }\n\n        var sortOrderCookie = getCookie(this, this.options.cookieIdTable, cookieIds.sortOrder),\n            sortOrderNameCookie = getCookie(this, this.options.cookieIdTable, cookieIds.sortName),\n            pageNumberCookie = getCookie(this, this.options.cookieIdTable, cookieIds.pageNumber),\n            pageListCookie = getCookie(this, this.options.cookieIdTable, cookieIds.pageList),\n            columnsCookie = JSON.parse(getCookie(this, this.options.cookieIdTable, cookieIds.columns)),\n            searchTextCookie = getCookie(this, this.options.cookieIdTable, cookieIds.searchText);\n\n        //sortOrder\n        this.options.sortOrder = sortOrderCookie ? sortOrderCookie : this.options.sortOrder;\n        //sortName\n        this.options.sortName = sortOrderNameCookie ? sortOrderNameCookie : this.options.sortName;\n        //pageNumber\n        this.options.pageNumber = pageNumberCookie ? +pageNumberCookie : this.options.pageNumber;\n        //pageSize\n        this.options.pageSize = pageListCookie ? pageListCookie === this.options.formatAllRows() ? pageListCookie : +pageListCookie : this.options.pageSize;\n        //searchText\n        this.options.searchText = searchTextCookie ? searchTextCookie : '';\n\n        if (columnsCookie) {\n            $.each(this.columns, function (i, column) {\n                column.visible = $.inArray(column.field, columnsCookie) !== -1;\n            });\n        }\n    };\n\n    BootstrapTable.prototype.onSort = function () {\n        _onSort.apply(this, Array.prototype.slice.apply(arguments));\n        setCookie(this, cookieIds.sortOrder, this.options.sortOrder);\n        setCookie(this, cookieIds.sortName, this.options.sortName);\n    };\n\n    BootstrapTable.prototype.onPageNumber = function () {\n        _onPageNumber.apply(this, Array.prototype.slice.apply(arguments));\n        setCookie(this, cookieIds.pageNumber, this.options.pageNumber);\n    };\n\n    BootstrapTable.prototype.onPageListChange = function () {\n        _onPageListChange.apply(this, Array.prototype.slice.apply(arguments));\n        setCookie(this, cookieIds.pageList, this.options.pageSize);\n    };\n\n    BootstrapTable.prototype.onPageFirst = function () {\n        _onPageFirst.apply(this, Array.prototype.slice.apply(arguments));\n        setCookie(this, cookieIds.pageNumber, this.options.pageNumber);\n    };\n\n    BootstrapTable.prototype.onPagePre = function () {\n        _onPagePre.apply(this, Array.prototype.slice.apply(arguments));\n        setCookie(this, cookieIds.pageNumber, this.options.pageNumber);\n    };\n\n    BootstrapTable.prototype.onPageNext = function () {\n        _onPageNext.apply(this, Array.prototype.slice.apply(arguments));\n        setCookie(this, cookieIds.pageNumber, this.options.pageNumber);\n    };\n\n    BootstrapTable.prototype.onPageLast = function () {\n        _onPageLast.apply(this, Array.prototype.slice.apply(arguments));\n        setCookie(this, cookieIds.pageNumber, this.options.pageNumber);\n    };\n\n    BootstrapTable.prototype.toggleColumn = function () {\n        _toggleColumn.apply(this, Array.prototype.slice.apply(arguments));\n\n        var visibleColumns = [];\n\n        $.each(this.columns, function (i, column) {\n            if (column.visible) {\n                visibleColumns.push(column.field);\n            }\n        });\n\n        setCookie(this, cookieIds.columns, JSON.stringify(visibleColumns));\n    };\n\n    BootstrapTable.prototype.selectPage = function (page) {\n        _selectPage.apply(this, Array.prototype.slice.apply(arguments));\n        setCookie(this, cookieIds.pageNumber, page);\n    };\n\n    BootstrapTable.prototype.onSearch = function () {\n        var target = Array.prototype.slice.apply(arguments);\n        _onSearch.apply(this, target);\n\n        if ($(target[0].currentTarget).parent().hasClass('search')) {\n          setCookie(this, cookieIds.searchText, this.searchText);\n        }\n    };\n\n    BootstrapTable.prototype.getCookies = function () {\n        var bootstrapTable = this;\n        var cookies = {};\n        $.each(cookieIds, function(key, value) {\n            cookies[key] = getCookie(bootstrapTable, bootstrapTable.options.cookieIdTable, value);\n            if (key === 'columns') {\n                cookies[key] = JSON.parse(cookies[key]);\n            }\n        });\n        return cookies;\n    };\n\n    BootstrapTable.prototype.deleteCookie = function (cookieName) {\n        if ((cookieName === '') || (!cookieEnabled())) {\n            return;\n        }\n\n        deleteCookie(this, this.options.cookieIdTable, cookieIds[cookieName]);\n    };\n})(jQuery);"
  },
  {
    "path": "public/admin/js/data-table/bootstrap-table-editable.js",
    "content": "/**\n * @author zhixin wen <wenzhixin2010@gmail.com>\n * extensions: https://github.com/vitalets/x-editable\n */\n\n(function($) {\n\n    'use strict';\n\n    $.extend($.fn.bootstrapTable.defaults, {\n        editable: true,\n        onEditableInit: function() {\n            return false;\n        },\n        onEditableSave: function(field, row, oldValue, $el) {\n            return false;\n        },\n        onEditableShown: function(field, row, $el, editable) {\n            return false;\n        },\n        onEditableHidden: function(field, row, $el, reason) {\n            return false;\n        }\n    });\n\n    $.extend($.fn.bootstrapTable.Constructor.EVENTS, {\n        'editable-init.bs.table': 'onEditableInit',\n        'editable-save.bs.table': 'onEditableSave',\n        'editable-shown.bs.table': 'onEditableShown',\n        'editable-hidden.bs.table': 'onEditableHidden'\n    });\n\n    var BootstrapTable = $.fn.bootstrapTable.Constructor,\n        _initTable = BootstrapTable.prototype.initTable,\n        _initBody = BootstrapTable.prototype.initBody;\n\n    BootstrapTable.prototype.initTable = function() {\n        var that = this;\n        _initTable.apply(this, Array.prototype.slice.apply(arguments));\n\n        if (!this.options.editable) {\n            return;\n        }\n\n        $.each(this.columns, function(i, column) {\n            if (!column.editable) {\n                return;\n            }\n\n            var editableOptions = {},\n                editableDataMarkup = [],\n                editableDataPrefix = 'editable-';\n\n            var processDataOptions = function(key, value) {\n                // Replace camel case with dashes.\n                var dashKey = key.replace(/([A-Z])/g, function($1) {\n                    return \"-\" + $1.toLowerCase();\n                });\n                if (dashKey.slice(0, editableDataPrefix.length) == editableDataPrefix) {\n                    var dataKey = dashKey.replace(editableDataPrefix, 'data-');\n                    editableOptions[dataKey] = value;\n                }\n            };\n\n            $.each(that.options, processDataOptions);\n\n            column.formatter = column.formatter || function(value, row, index) {\n                return value;\n            };\n            column._formatter = column._formatter ? column._formatter : column.formatter;\n            column.formatter = function(value, row, index) {\n                var result = column._formatter ? column._formatter(value, row, index) : value;\n\n                $.each(column, processDataOptions);\n\n                $.each(editableOptions, function(key, value) {\n                    editableDataMarkup.push(' ' + key + '=\"' + value + '\"');\n                });\n\n                var _dont_edit_formatter = false;\n                if (column.editable.hasOwnProperty('noeditFormatter')) {\n                    _dont_edit_formatter = column.editable.noeditFormatter(value, row, index);\n                }\n\n                if (_dont_edit_formatter === false) {\n                    return ['<a href=\"javascript:void(0)\"',\n                        ' data-name=\"' + column.field + '\"',\n                        ' data-pk=\"' + row[that.options.idField] + '\"',\n                        ' data-value=\"' + result + '\"',\n                        editableDataMarkup.join(''),\n                        '>' + '</a>'\n                    ].join('');\n                } else {\n                    return _dont_edit_formatter;\n                }\n\n            };\n        });\n    };\n\n    BootstrapTable.prototype.initBody = function() {\n        var that = this;\n        _initBody.apply(this, Array.prototype.slice.apply(arguments));\n\n        if (!this.options.editable) {\n            return;\n        }\n\n        $.each(this.columns, function(i, column) {\n            if (!column.editable) {\n                return;\n            }\n\n            that.$body.find('a[data-name=\"' + column.field + '\"]').editable(column.editable)\n                .off('save').on('save', function(e, params) {\n                    var data = that.getData(),\n                        index = $(this).parents('tr[data-index]').data('index'),\n                        row = data[index],\n                        oldValue = row[column.field];\n\n                    $(this).data('value', params.submitValue);\n                    row[column.field] = params.submitValue;\n                    that.trigger('editable-save', column.field, row, oldValue, $(this));\n                    that.resetFooter();\n                });\n            that.$body.find('a[data-name=\"' + column.field + '\"]').editable(column.editable)\n                .off('shown').on('shown', function(e, editable) {\n                    var data = that.getData(),\n                        index = $(this).parents('tr[data-index]').data('index'),\n                        row = data[index];\n\n                    that.trigger('editable-shown', column.field, row, $(this), editable);\n                });\n            that.$body.find('a[data-name=\"' + column.field + '\"]').editable(column.editable)\n                .off('hidden').on('hidden', function(e, reason) {\n                    var data = that.getData(),\n                        index = $(this).parents('tr[data-index]').data('index'),\n                        row = data[index];\n\n                    that.trigger('editable-hidden', column.field, row, $(this), reason);\n                });\n        });\n        this.trigger('editable-init');\n    };\n\n})(jQuery);"
  },
  {
    "path": "public/admin/js/data-table/bootstrap-table-export.js",
    "content": "/**\n * @author zhixin wen <wenzhixin2010@gmail.com>\n * extensions: https://github.com/kayalshri/tableExport.jquery.plugin\n */\n\n(function ($) {\n    'use strict';\n    var sprintf = $.fn.bootstrapTable.utils.sprintf;\n\n    var TYPE_NAME = {\n        json: 'JSON',\n        xml: 'XML',\n        png: 'PNG',\n        csv: 'CSV',\n        txt: 'TXT',\n        sql: 'SQL',\n        doc: 'MS-Word',\n        excel: 'MS-Excel',\n        xlsx: 'MS-Excel (OpenXML)',\n        powerpoint: 'MS-Powerpoint',\n        pdf: 'PDF'\n    };\n\n    $.extend($.fn.bootstrapTable.defaults, {\n        showExport: false,\n        exportDataType: 'basic', // basic, all, selected\n        // 'json', 'xml', 'png', 'csv', 'txt', 'sql', 'doc', 'excel', 'powerpoint', 'pdf'\n        exportTypes: ['json', 'xml', 'csv', 'txt', 'sql', 'excel'],\n        exportOptions: {}\n    });\n\n    $.extend($.fn.bootstrapTable.defaults.icons, {\n        export: 'glyphicon-export icon-share'\n    });\n\n    $.extend($.fn.bootstrapTable.locales, {\n        formatExport: function () {\n            return 'Export data';\n        }\n    });\n    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales);\n\n    var BootstrapTable = $.fn.bootstrapTable.Constructor,\n        _initToolbar = BootstrapTable.prototype.initToolbar;\n\n    BootstrapTable.prototype.initToolbar = function () {\n        this.showToolbar = this.options.showExport;\n\n        _initToolbar.apply(this, Array.prototype.slice.apply(arguments));\n\n        if (this.options.showExport) {\n            var that = this,\n                $btnGroup = this.$toolbar.find('>.btn-group'),\n                $export = $btnGroup.find('div.export');\n\n            if (!$export.length) {\n                $export = $([\n                    '<div class=\"export btn-group\">',\n                        '<button class=\"btn' +\n                            sprintf(' btn-%s', this.options.buttonsClass) +\n                            sprintf(' btn-%s', this.options.iconSize) +\n                            ' dropdown-toggle\" aria-label=\"export type\" ' +\n                            'title=\"' + this.options.formatExport() + '\" ' +\n                            'data-toggle=\"dropdown\" type=\"button\">',\n                            sprintf('<i class=\"%s %s\"></i> ', this.options.iconsPrefix, this.options.icons.export),\n                            '<span class=\"caret\"></span>',\n                        '</button>',\n                        '<ul class=\"dropdown-menu\" role=\"menu\">',\n                        '</ul>',\n                    '</div>'].join('')).appendTo($btnGroup);\n\n                var $menu = $export.find('.dropdown-menu'),\n                    exportTypes = this.options.exportTypes;\n\n                if (typeof this.options.exportTypes === 'string') {\n                    var types = this.options.exportTypes.slice(1, -1).replace(/ /g, '').split(',');\n\n                    exportTypes = [];\n                    $.each(types, function (i, value) {\n                        exportTypes.push(value.slice(1, -1));\n                    });\n                }\n                $.each(exportTypes, function (i, type) {\n                    if (TYPE_NAME.hasOwnProperty(type)) {\n                        $menu.append(['<li role=\"menuitem\" data-type=\"' + type + '\">',\n                                '<a href=\"javascript:void(0)\">',\n                                    TYPE_NAME[type],\n                                '</a>',\n                            '</li>'].join(''));\n                    }\n                });\n\n                $menu.find('li').click(function () {\n                    var type = $(this).data('type'),\n                        doExport = function () {\n                            that.$el.tableExport($.extend({}, that.options.exportOptions, {\n                                type: type,\n                                escape: false\n                            }));\n                        };\n\n                    if (that.options.exportDataType === 'all' && that.options.pagination) {\n                        that.$el.one(that.options.sidePagination === 'server' ? 'post-body.bs.table' : 'page-change.bs.table', function () {\n                            doExport();\n                            that.togglePagination();\n                        });\n                        that.togglePagination();\n                    } else if (that.options.exportDataType === 'selected') {\n                        var data = that.getData(),\n                            selectedData = that.getAllSelections();\n\n                        // Quick fix #2220\n                        if (that.options.sidePagination === 'server') {\n                            data = {total: that.options.totalRows};\n                            data[that.options.dataField] = that.getData();\n\n                            selectedData = {total: that.options.totalRows};\n                            selectedData[that.options.dataField] = that.getAllSelections();\n                        }\n\n                        that.load(selectedData);\n                        doExport();\n                        that.load(data);\n                    } else {\n                        doExport();\n                    }\n                });\n            }\n        }\n    };\n})(jQuery);"
  },
  {
    "path": "public/admin/js/data-table/bootstrap-table-key-events.js",
    "content": "/**\n * @author: Dennis Hern?ndez\n * @webSite: http://djhvscf.github.io/Blog\n * @version: v1.0.0\n *\n * @update zhixin wen <wenzhixin2010@gmail.com>\n */\n\n!function ($) {\n\n    'use strict';\n\n    $.extend($.fn.bootstrapTable.defaults, {\n        keyEvents: false\n    });\n\n    var BootstrapTable = $.fn.bootstrapTable.Constructor,\n        _init = BootstrapTable.prototype.init;\n\n    BootstrapTable.prototype.init = function () {\n        _init.apply(this, Array.prototype.slice.apply(arguments));\n        this.initKeyEvents();\n    };\n\n    BootstrapTable.prototype.initKeyEvents = function () {\n        if (this.options.keyEvents) {\n            var that = this;\n\n            $(document).off('keydown').on('keydown', function (e) {\n                var $search = that.$toolbar.find('.search input'),\n                    $refresh = that.$toolbar.find('button[name=\"refresh\"]'),\n                    $toggle = that.$toolbar.find('button[name=\"toggle\"]'),\n                    $paginationSwitch = that.$toolbar.find('button[name=\"paginationSwitch\"]');\n\n                if (document.activeElement === $search.get(0) || !$.contains(document.activeElement ,that.$toolbar.get(0))) {\n                    return true;\n                }\n\n                switch (e.keyCode) {\n                    case 83: //s\n                        if (!that.options.search) {\n                            return;\n                        }\n                        $search.focus();\n                        return false;\n                    case 82: //r\n                        if (!that.options.showRefresh) {\n                            return;\n                        }\n                        $refresh.click();\n                        return false;\n                    case 84: //t\n                        if (!that.options.showToggle) {\n                            return;\n                        }\n                        $toggle.click();\n                        return false;\n                    case 80: //p\n                        if (!that.options.showPaginationSwitch) {\n                            return;\n                        }\n                        $paginationSwitch.click();\n                        return false;\n                    case 37: // left\n                        if (!that.options.pagination) {\n                            return;\n                        }\n                        that.prevPage();\n                        return false;\n                    case 39: // right\n                        if (!that.options.pagination) {\n                            return;\n                        }\n                        that.nextPage();\n                        return;\n                }\n            });\n        }\n    };\n}(jQuery);"
  },
  {
    "path": "public/admin/js/data-table/bootstrap-table-resizable.js",
    "content": "/**\n * @author: Dennis Hern?ndez\n * @webSite: http://djhvscf.github.io/Blog\n * @version: v1.0.0\n */\n\n(function ($) {\n    'use strict';\n\n    var initResizable = function (that) {\n        //Deletes the plugin to re-create it\n        that.$el.colResizable({disable: true});\n\n        //Creates the plugin\n        that.$el.colResizable({\n            liveDrag: that.options.liveDrag,\n            fixed: that.options.fixed,\n            headerOnly: that.options.headerOnly,\n            minWidth: that.options.minWidth,\n            hoverCursor: that.options.hoverCursor,\n            dragCursor: that.options.dragCursor,\n            onResize: that.onResize,\n            onDrag: that.options.onResizableDrag\n        });\n    };\n\n    $.extend($.fn.bootstrapTable.defaults, {\n        resizable: false,\n        liveDrag: false,\n        fixed: true,\n        headerOnly: false,\n        minWidth: 15,\n        hoverCursor: 'e-resize',\n        dragCursor: 'e-resize',\n        onResizableResize: function (e) {\n            return false;\n        },\n        onResizableDrag: function (e) {\n            return false;\n        }\n    });\n\n    var BootstrapTable = $.fn.bootstrapTable.Constructor,\n        _toggleView = BootstrapTable.prototype.toggleView,\n        _resetView = BootstrapTable.prototype.resetView;\n\n    BootstrapTable.prototype.toggleView = function () {\n        _toggleView.apply(this, Array.prototype.slice.apply(arguments));\n\n        if (this.options.resizable && this.options.cardView) {\n            //Deletes the plugin\n            $(this.$el).colResizable({disable: true});\n        }\n    };\n\n    BootstrapTable.prototype.resetView = function () {\n        var that = this;\n\n        _resetView.apply(this, Array.prototype.slice.apply(arguments));\n\n        if (this.options.resizable) {\n            // because in fitHeader function, we use setTimeout(func, 100);\n            setTimeout(function () {\n                initResizable(that);\n            }, 100);\n        }\n    };\n\n    BootstrapTable.prototype.onResize = function (e) {\n        var that = $(e.currentTarget);\n        that.bootstrapTable('resetView');\n        that.data('bootstrap.table').options.onResizableResize.apply(e);\n    }\n})(jQuery);"
  },
  {
    "path": "public/admin/js/data-table/bootstrap-table.js",
    "content": "/**\n * @author zhixin wen <wenzhixin2010@gmail.com>\n * version: 1.11.1\n * https://github.com/wenzhixin/bootstrap-table/\n */\n\n(function ($) {\n    'use strict';\n\n    // TOOLS DEFINITION\n    // ======================\n\n    var cachedWidth = null;\n\n    // it only does '%s', and return '' when arguments are undefined\n    var sprintf = function (str) {\n        var args = arguments,\n            flag = true,\n            i = 1;\n\n        str = str.replace(/%s/g, function () {\n            var arg = args[i++];\n\n            if (typeof arg === 'undefined') {\n                flag = false;\n                return '';\n            }\n            return arg;\n        });\n        return flag ? str : '';\n    };\n\n    var getPropertyFromOther = function (list, from, to, value) {\n        var result = '';\n        $.each(list, function (i, item) {\n            if (item[from] === value) {\n                result = item[to];\n                return false;\n            }\n            return true;\n        });\n        return result;\n    };\n\n    var getFieldIndex = function (columns, field) {\n        var index = -1;\n\n        $.each(columns, function (i, column) {\n            if (column.field === field) {\n                index = i;\n                return false;\n            }\n            return true;\n        });\n        return index;\n    };\n\n    // http://jsfiddle.net/wenyi/47nz7ez9/3/\n    var setFieldIndex = function (columns) {\n        var i, j, k,\n            totalCol = 0,\n            flag = [];\n\n        for (i = 0; i < columns[0].length; i++) {\n            totalCol += columns[0][i].colspan || 1;\n        }\n\n        for (i = 0; i < columns.length; i++) {\n            flag[i] = [];\n            for (j = 0; j < totalCol; j++) {\n                flag[i][j] = false;\n            }\n        }\n\n        for (i = 0; i < columns.length; i++) {\n            for (j = 0; j < columns[i].length; j++) {\n                var r = columns[i][j],\n                    rowspan = r.rowspan || 1,\n                    colspan = r.colspan || 1,\n                    index = $.inArray(false, flag[i]);\n\n                if (colspan === 1) {\n                    r.fieldIndex = index;\n                    // when field is undefined, use index instead\n                    if (typeof r.field === 'undefined') {\n                        r.field = index;\n                    }\n                }\n\n                for (k = 0; k < rowspan; k++) {\n                    flag[i + k][index] = true;\n                }\n                for (k = 0; k < colspan; k++) {\n                    flag[i][index + k] = true;\n                }\n            }\n        }\n    };\n\n    var getScrollBarWidth = function () {\n        if (cachedWidth === null) {\n            var inner = $('<p/>').addClass('fixed-table-scroll-inner'),\n                outer = $('<div/>').addClass('fixed-table-scroll-outer'),\n                w1, w2;\n\n            outer.append(inner);\n            $('body').append(outer);\n\n            w1 = inner[0].offsetWidth;\n            outer.css('overflow', 'scroll');\n            w2 = inner[0].offsetWidth;\n\n            if (w1 === w2) {\n                w2 = outer[0].clientWidth;\n            }\n\n            outer.remove();\n            cachedWidth = w1 - w2;\n        }\n        return cachedWidth;\n    };\n\n    var calculateObjectValue = function (self, name, args, defaultValue) {\n        var func = name;\n\n        if (typeof name === 'string') {\n            // support obj.func1.func2\n            var names = name.split('.');\n\n            if (names.length > 1) {\n                func = window;\n                $.each(names, function (i, f) {\n                    func = func[f];\n                });\n            } else {\n                func = window[name];\n            }\n        }\n        if (typeof func === 'object') {\n            return func;\n        }\n        if (typeof func === 'function') {\n            return func.apply(self, args || []);\n        }\n        if (!func && typeof name === 'string' && sprintf.apply(this, [name].concat(args))) {\n            return sprintf.apply(this, [name].concat(args));\n        }\n        return defaultValue;\n    };\n\n    var compareObjects = function (objectA, objectB, compareLength) {\n        // Create arrays of property names\n        var objectAProperties = Object.getOwnPropertyNames(objectA),\n            objectBProperties = Object.getOwnPropertyNames(objectB),\n            propName = '';\n\n        if (compareLength) {\n            // If number of properties is different, objects are not equivalent\n            if (objectAProperties.length !== objectBProperties.length) {\n                return false;\n            }\n        }\n\n        for (var i = 0; i < objectAProperties.length; i++) {\n            propName = objectAProperties[i];\n\n            // If the property is not in the object B properties, continue with the next property\n            if ($.inArray(propName, objectBProperties) > -1) {\n                // If values of same property are not equal, objects are not equivalent\n                if (objectA[propName] !== objectB[propName]) {\n                    return false;\n                }\n            }\n        }\n\n        // If we made it this far, objects are considered equivalent\n        return true;\n    };\n\n    var escapeHTML = function (text) {\n        if (typeof text === 'string') {\n            return text\n                .replace(/&/g, '&amp;')\n                .replace(/</g, '&lt;')\n                .replace(/>/g, '&gt;')\n                .replace(/\"/g, '&quot;')\n                .replace(/'/g, '&#039;')\n                .replace(/`/g, '&#x60;');\n        }\n        return text;\n    };\n\n    var getRealDataAttr = function (dataAttr) {\n        for (var attr in dataAttr) {\n            var auxAttr = attr.split(/(?=[A-Z])/).join('-').toLowerCase();\n            if (auxAttr !== attr) {\n                dataAttr[auxAttr] = dataAttr[attr];\n                delete dataAttr[attr];\n            }\n        }\n\n        return dataAttr;\n    };\n\n    var getItemField = function (item, field, escape) {\n        var value = item;\n\n        if (typeof field !== 'string' || item.hasOwnProperty(field)) {\n            return escape ? escapeHTML(item[field]) : item[field];\n        }\n        var props = field.split('.');\n        for (var p in props) {\n            if (props.hasOwnProperty(p)) {\n                value = value && value[props[p]];\n            }\n        }\n        return escape ? escapeHTML(value) : value;\n    };\n\n    var isIEBrowser = function () {\n        return !!(navigator.userAgent.indexOf(\"MSIE \") > 0 || !!navigator.userAgent.match(/Trident.*rv\\:11\\./));\n    };\n\n    var objectKeys = function () {\n        // From https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys\n        if (!Object.keys) {\n            Object.keys = (function() {\n                var hasOwnProperty = Object.prototype.hasOwnProperty,\n                    hasDontEnumBug = !({ toString: null }).propertyIsEnumerable('toString'),\n                    dontEnums = [\n                        'toString',\n                        'toLocaleString',\n                        'valueOf',\n                        'hasOwnProperty',\n                        'isPrototypeOf',\n                        'propertyIsEnumerable',\n                        'constructor'\n                    ],\n                    dontEnumsLength = dontEnums.length;\n\n                return function(obj) {\n                    if (typeof obj !== 'object' && (typeof obj !== 'function' || obj === null)) {\n                        throw new TypeError('Object.keys called on non-object');\n                    }\n\n                    var result = [], prop, i;\n\n                    for (prop in obj) {\n                        if (hasOwnProperty.call(obj, prop)) {\n                            result.push(prop);\n                        }\n                    }\n\n                    if (hasDontEnumBug) {\n                        for (i = 0; i < dontEnumsLength; i++) {\n                            if (hasOwnProperty.call(obj, dontEnums[i])) {\n                                result.push(dontEnums[i]);\n                            }\n                        }\n                    }\n                    return result;\n                };\n            }());\n        }\n    };\n\n    // BOOTSTRAP TABLE CLASS DEFINITION\n    // ======================\n\n    var BootstrapTable = function (el, options) {\n        this.options = options;\n        this.$el = $(el);\n        this.$el_ = this.$el.clone();\n        this.timeoutId_ = 0;\n        this.timeoutFooter_ = 0;\n\n        this.init();\n    };\n\n    BootstrapTable.DEFAULTS = {\n        classes: 'table table-hover',\n        sortClass: undefined,\n        locale: undefined,\n        height: undefined,\n        undefinedText: '-',\n        sortName: undefined,\n        sortOrder: 'asc',\n        sortStable: false,\n        striped: false,\n        columns: [[]],\n        data: [],\n        totalField: 'total',\n        dataField: 'rows',\n        method: 'get',\n        url: undefined,\n        ajax: undefined,\n        cache: true,\n        contentType: 'application/json',\n        dataType: 'json',\n        ajaxOptions: {},\n        queryParams: function (params) {\n            return params;\n        },\n        queryParamsType: 'limit', // undefined\n        responseHandler: function (res) {\n            return res;\n        },\n        pagination: false,\n        onlyInfoPagination: false,\n        paginationLoop: true,\n        sidePagination: 'client', // client or server\n        totalRows: 0, // server side need to set\n        pageNumber: 1,\n        pageSize: 10,\n        pageList: [10, 25, 50, 100],\n        paginationHAlign: 'right', //right, left\n        paginationVAlign: 'bottom', //bottom, top, both\n        paginationDetailHAlign: 'left', //right, left\n        paginationPreText: '&lsaquo;',\n        paginationNextText: '&rsaquo;',\n        search: false,\n        searchOnEnterKey: false,\n        strictSearch: false,\n        searchAlign: 'right',\n        selectItemName: 'btSelectItem',\n        showHeader: true,\n        showFooter: false,\n        showColumns: false,\n        showPaginationSwitch: false,\n        showRefresh: false,\n        showToggle: false,\n        buttonsAlign: 'right',\n        smartDisplay: true,\n        escape: false,\n        minimumCountColumns: 1,\n        idField: undefined,\n        uniqueId: undefined,\n        cardView: false,\n        detailView: false,\n        detailFormatter: function (index, row) {\n            return '';\n        },\n        trimOnSearch: true,\n        clickToSelect: false,\n        singleSelect: false,\n        toolbar: undefined,\n        toolbarAlign: 'left',\n        checkboxHeader: true,\n        sortable: true,\n        silentSort: true,\n        maintainSelected: false,\n        searchTimeOut: 500,\n        searchText: '',\n        iconSize: undefined,\n        buttonsClass: 'default',\n        iconsPrefix: 'glyphicon', // glyphicon of fa (font awesome)\n        icons: {\n            paginationSwitchDown: 'glyphicon-collapse-down icon-chevron-down',\n            paginationSwitchUp: 'glyphicon-collapse-up icon-chevron-up',\n            refresh: 'glyphicon-refresh icon-refresh',\n            toggle: 'glyphicon-list-alt icon-list-alt',\n            columns: 'glyphicon-th icon-th',\n            detailOpen: 'glyphicon-plus icon-plus',\n            detailClose: 'glyphicon-minus icon-minus'\n        },\n\n        customSearch: $.noop,\n\n        customSort: $.noop,\n\n        rowStyle: function (row, index) {\n            return {};\n        },\n\n        rowAttributes: function (row, index) {\n            return {};\n        },\n\n        footerStyle: function (row, index) {\n            return {};\n        },\n\n        onAll: function (name, args) {\n            return false;\n        },\n        onClickCell: function (field, value, row, $element) {\n            return false;\n        },\n        onDblClickCell: function (field, value, row, $element) {\n            return false;\n        },\n        onClickRow: function (item, $element) {\n            return false;\n        },\n        onDblClickRow: function (item, $element) {\n            return false;\n        },\n        onSort: function (name, order) {\n            return false;\n        },\n        onCheck: function (row) {\n            return false;\n        },\n        onUncheck: function (row) {\n            return false;\n        },\n        onCheckAll: function (rows) {\n            return false;\n        },\n        onUncheckAll: function (rows) {\n            return false;\n        },\n        onCheckSome: function (rows) {\n            return false;\n        },\n        onUncheckSome: function (rows) {\n            return false;\n        },\n        onLoadSuccess: function (data) {\n            return false;\n        },\n        onLoadError: function (status) {\n            return false;\n        },\n        onColumnSwitch: function (field, checked) {\n            return false;\n        },\n        onPageChange: function (number, size) {\n            return false;\n        },\n        onSearch: function (text) {\n            return false;\n        },\n        onToggle: function (cardView) {\n            return false;\n        },\n        onPreBody: function (data) {\n            return false;\n        },\n        onPostBody: function () {\n            return false;\n        },\n        onPostHeader: function () {\n            return false;\n        },\n        onExpandRow: function (index, row, $detail) {\n            return false;\n        },\n        onCollapseRow: function (index, row) {\n            return false;\n        },\n        onRefreshOptions: function (options) {\n            return false;\n        },\n        onRefresh: function (params) {\n          return false;\n        },\n        onResetView: function () {\n            return false;\n        }\n    };\n\n    BootstrapTable.LOCALES = {};\n\n    BootstrapTable.LOCALES['en-US'] = BootstrapTable.LOCALES.en = {\n        formatLoadingMessage: function () {\n            return 'Loading, please wait...';\n        },\n        formatRecordsPerPage: function (pageNumber) {\n            return sprintf('%s rows per page', pageNumber);\n        },\n        formatShowingRows: function (pageFrom, pageTo, totalRows) {\n            return sprintf('Showing %s to %s of %s rows', pageFrom, pageTo, totalRows);\n        },\n        formatDetailPagination: function (totalRows) {\n            return sprintf('Showing %s rows', totalRows);\n        },\n        formatSearch: function () {\n            return 'Search';\n        },\n        formatNoMatches: function () {\n            return 'No matching records found';\n        },\n        formatPaginationSwitch: function () {\n            return 'Hide/Show pagination';\n        },\n        formatRefresh: function () {\n            return 'Refresh';\n        },\n        formatToggle: function () {\n            return 'Toggle';\n        },\n        formatColumns: function () {\n            return 'Columns';\n        },\n        formatAllRows: function () {\n            return 'All';\n        }\n    };\n\n    $.extend(BootstrapTable.DEFAULTS, BootstrapTable.LOCALES['en-US']);\n\n    BootstrapTable.COLUMN_DEFAULTS = {\n        radio: false,\n        checkbox: false,\n        checkboxEnabled: true,\n        field: undefined,\n        title: undefined,\n        titleTooltip: undefined,\n        'class': undefined,\n        align: undefined, // left, right, center\n        halign: undefined, // left, right, center\n        falign: undefined, // left, right, center\n        valign: undefined, // top, middle, bottom\n        width: undefined,\n        sortable: false,\n        order: 'asc', // asc, desc\n        visible: true,\n        switchable: true,\n        clickToSelect: true,\n        formatter: undefined,\n        footerFormatter: undefined,\n        events: undefined,\n        sorter: undefined,\n        sortName: undefined,\n        cellStyle: undefined,\n        searchable: true,\n        searchFormatter: true,\n        cardVisible: true,\n        escape : false\n    };\n\n    BootstrapTable.EVENTS = {\n        'all.bs.table': 'onAll',\n        'click-cell.bs.table': 'onClickCell',\n        'dbl-click-cell.bs.table': 'onDblClickCell',\n        'click-row.bs.table': 'onClickRow',\n        'dbl-click-row.bs.table': 'onDblClickRow',\n        'sort.bs.table': 'onSort',\n        'check.bs.table': 'onCheck',\n        'uncheck.bs.table': 'onUncheck',\n        'check-all.bs.table': 'onCheckAll',\n        'uncheck-all.bs.table': 'onUncheckAll',\n        'check-some.bs.table': 'onCheckSome',\n        'uncheck-some.bs.table': 'onUncheckSome',\n        'load-success.bs.table': 'onLoadSuccess',\n        'load-error.bs.table': 'onLoadError',\n        'column-switch.bs.table': 'onColumnSwitch',\n        'page-change.bs.table': 'onPageChange',\n        'search.bs.table': 'onSearch',\n        'toggle.bs.table': 'onToggle',\n        'pre-body.bs.table': 'onPreBody',\n        'post-body.bs.table': 'onPostBody',\n        'post-header.bs.table': 'onPostHeader',\n        'expand-row.bs.table': 'onExpandRow',\n        'collapse-row.bs.table': 'onCollapseRow',\n        'refresh-options.bs.table': 'onRefreshOptions',\n        'reset-view.bs.table': 'onResetView',\n        'refresh.bs.table': 'onRefresh'\n    };\n\n    BootstrapTable.prototype.init = function () {\n        this.initLocale();\n        this.initContainer();\n        this.initTable();\n        this.initHeader();\n        this.initData();\n        this.initHiddenRows();\n        this.initFooter();\n        this.initToolbar();\n        this.initPagination();\n        this.initBody();\n        this.initSearchText();\n        this.initServer();\n    };\n\n    BootstrapTable.prototype.initLocale = function () {\n        if (this.options.locale) {\n            var parts = this.options.locale.split(/-|_/);\n            parts[0].toLowerCase();\n            if (parts[1]) parts[1].toUpperCase();\n            if ($.fn.bootstrapTable.locales[this.options.locale]) {\n                // locale as requested\n                $.extend(this.options, $.fn.bootstrapTable.locales[this.options.locale]);\n            } else if ($.fn.bootstrapTable.locales[parts.join('-')]) {\n                // locale with sep set to - (in case original was specified with _)\n                $.extend(this.options, $.fn.bootstrapTable.locales[parts.join('-')]);\n            } else if ($.fn.bootstrapTable.locales[parts[0]]) {\n                // short locale language code (i.e. 'en')\n                $.extend(this.options, $.fn.bootstrapTable.locales[parts[0]]);\n            }\n        }\n    };\n\n    BootstrapTable.prototype.initContainer = function () {\n        this.$container = $([\n            '<div class=\"bootstrap-table\">',\n            '<div class=\"fixed-table-toolbar\"></div>',\n            this.options.paginationVAlign === 'top' || this.options.paginationVAlign === 'both' ?\n                '<div class=\"fixed-table-pagination\" style=\"clear: both;\"></div>' :\n                '',\n            '<div class=\"fixed-table-container\">',\n            '<div class=\"fixed-table-header\"><table></table></div>',\n            '<div class=\"fixed-table-body\">',\n            '<div class=\"fixed-table-loading\">',\n            this.options.formatLoadingMessage(),\n            '</div>',\n            '</div>',\n            '<div class=\"fixed-table-footer\"><table><tr></tr></table></div>',\n            this.options.paginationVAlign === 'bottom' || this.options.paginationVAlign === 'both' ?\n                '<div class=\"fixed-table-pagination\"></div>' :\n                '',\n            '</div>',\n            '</div>'\n        ].join(''));\n\n        this.$container.insertAfter(this.$el);\n        this.$tableContainer = this.$container.find('.fixed-table-container');\n        this.$tableHeader = this.$container.find('.fixed-table-header');\n        this.$tableBody = this.$container.find('.fixed-table-body');\n        this.$tableLoading = this.$container.find('.fixed-table-loading');\n        this.$tableFooter = this.$container.find('.fixed-table-footer');\n        this.$toolbar = this.$container.find('.fixed-table-toolbar');\n        this.$pagination = this.$container.find('.fixed-table-pagination');\n\n        this.$tableBody.append(this.$el);\n        this.$container.after('<div class=\"clearfix\"></div>');\n\n        this.$el.addClass(this.options.classes);\n        if (this.options.striped) {\n            this.$el.addClass('table-striped');\n        }\n        if ($.inArray('table-no-bordered', this.options.classes.split(' ')) !== -1) {\n            this.$tableContainer.addClass('table-no-bordered');\n        }\n    };\n\n    BootstrapTable.prototype.initTable = function () {\n        var that = this,\n            columns = [],\n            data = [];\n\n        this.$header = this.$el.find('>thead');\n        if (!this.$header.length) {\n            this.$header = $('<thead></thead>').appendTo(this.$el);\n        }\n        this.$header.find('tr').each(function () {\n            var column = [];\n\n            $(this).find('th').each(function () {\n                // Fix #2014 - getFieldIndex and elsewhere assume this is string, causes issues if not\n                if (typeof $(this).data('field') !== 'undefined') {\n                    $(this).data('field', $(this).data('field') + '');\n                }\n                column.push($.extend({}, {\n                    title: $(this).html(),\n                    'class': $(this).attr('class'),\n                    titleTooltip: $(this).attr('title'),\n                    rowspan: $(this).attr('rowspan') ? +$(this).attr('rowspan') : undefined,\n                    colspan: $(this).attr('colspan') ? +$(this).attr('colspan') : undefined\n                }, $(this).data()));\n            });\n            columns.push(column);\n        });\n        if (!$.isArray(this.options.columns[0])) {\n            this.options.columns = [this.options.columns];\n        }\n        this.options.columns = $.extend(true, [], columns, this.options.columns);\n        this.columns = [];\n\n        setFieldIndex(this.options.columns);\n        $.each(this.options.columns, function (i, columns) {\n            $.each(columns, function (j, column) {\n                column = $.extend({}, BootstrapTable.COLUMN_DEFAULTS, column);\n\n                if (typeof column.fieldIndex !== 'undefined') {\n                    that.columns[column.fieldIndex] = column;\n                }\n\n                that.options.columns[i][j] = column;\n            });\n        });\n\n        // if options.data is setting, do not process tbody data\n        if (this.options.data.length) {\n            return;\n        }\n\n        var m = [];\n        this.$el.find('>tbody>tr').each(function (y) {\n            var row = {};\n\n            // save tr's id, class and data-* attributes\n            row._id = $(this).attr('id');\n            row._class = $(this).attr('class');\n            row._data = getRealDataAttr($(this).data());\n\n            $(this).find('>td').each(function (x) {\n                var $this = $(this),\n                    cspan = +$this.attr('colspan') || 1,\n                    rspan = +$this.attr('rowspan') || 1,\n                    tx, ty;\n\n                for (; m[y] && m[y][x]; x++); //skip already occupied cells in current row\n\n                for (tx = x; tx < x + cspan; tx++) { //mark matrix elements occupied by current cell with true\n                    for (ty = y; ty < y + rspan; ty++) {\n                        if (!m[ty]) { //fill missing rows\n                            m[ty] = [];\n                        }\n                        m[ty][tx] = true;\n                    }\n                }\n\n                var field = that.columns[x].field;\n\n                row[field] = $(this).html();\n                // save td's id, class and data-* attributes\n                row['_' + field + '_id'] = $(this).attr('id');\n                row['_' + field + '_class'] = $(this).attr('class');\n                row['_' + field + '_rowspan'] = $(this).attr('rowspan');\n                row['_' + field + '_colspan'] = $(this).attr('colspan');\n                row['_' + field + '_title'] = $(this).attr('title');\n                row['_' + field + '_data'] = getRealDataAttr($(this).data());\n            });\n            data.push(row);\n        });\n        this.options.data = data;\n        if (data.length) this.fromHtml = true;\n    };\n\n    BootstrapTable.prototype.initHeader = function () {\n        var that = this,\n            visibleColumns = {},\n            html = [];\n\n        this.header = {\n            fields: [],\n            styles: [],\n            classes: [],\n            formatters: [],\n            events: [],\n            sorters: [],\n            sortNames: [],\n            cellStyles: [],\n            searchables: []\n        };\n\n        $.each(this.options.columns, function (i, columns) {\n            html.push('<tr>');\n\n            if (i === 0 && !that.options.cardView && that.options.detailView) {\n                html.push(sprintf('<th class=\"detail\" rowspan=\"%s\"><div class=\"fht-cell\"></div></th>',\n                    that.options.columns.length));\n            }\n\n            $.each(columns, function (j, column) {\n                var text = '',\n                    halign = '', // header align style\n                    align = '', // body align style\n                    style = '',\n                    class_ = sprintf(' class=\"%s\"', column['class']),\n                    order = that.options.sortOrder || column.order,\n                    unitWidth = 'px',\n                    width = column.width;\n\n                if (column.width !== undefined && (!that.options.cardView)) {\n                    if (typeof column.width === 'string') {\n                        if (column.width.indexOf('%') !== -1) {\n                            unitWidth = '%';\n                        }\n                    }\n                }\n                if (column.width && typeof column.width === 'string') {\n                    width = column.width.replace('%', '').replace('px', '');\n                }\n\n                halign = sprintf('text-align: %s; ', column.halign ? column.halign : column.align);\n                align = sprintf('text-align: %s; ', column.align);\n                style = sprintf('vertical-align: %s; ', column.valign);\n                style += sprintf('width: %s; ', (column.checkbox || column.radio) && !width ?\n                    '36px' : (width ? width + unitWidth : undefined));\n\n                if (typeof column.fieldIndex !== 'undefined') {\n                    that.header.fields[column.fieldIndex] = column.field;\n                    that.header.styles[column.fieldIndex] = align + style;\n                    that.header.classes[column.fieldIndex] = class_;\n                    that.header.formatters[column.fieldIndex] = column.formatter;\n                    that.header.events[column.fieldIndex] = column.events;\n                    that.header.sorters[column.fieldIndex] = column.sorter;\n                    that.header.sortNames[column.fieldIndex] = column.sortName;\n                    that.header.cellStyles[column.fieldIndex] = column.cellStyle;\n                    that.header.searchables[column.fieldIndex] = column.searchable;\n\n                    if (!column.visible) {\n                        return;\n                    }\n\n                    if (that.options.cardView && (!column.cardVisible)) {\n                        return;\n                    }\n\n                    visibleColumns[column.field] = column;\n                }\n\n                html.push('<th' + sprintf(' title=\"%s\"', column.titleTooltip),\n                    column.checkbox || column.radio ?\n                        sprintf(' class=\"bs-checkbox %s\"', column['class'] || '') :\n                        class_,\n                    sprintf(' style=\"%s\"', halign + style),\n                    sprintf(' rowspan=\"%s\"', column.rowspan),\n                    sprintf(' colspan=\"%s\"', column.colspan),\n                    sprintf(' data-field=\"%s\"', column.field),\n                    \"tabindex='0'\",\n                    '>');\n\n                html.push(sprintf('<div class=\"th-inner %s\">', that.options.sortable && column.sortable ?\n                    'sortable both' : ''));\n\n                text = that.options.escape ? escapeHTML(column.title) : column.title;\n\n                if (column.checkbox) {\n                    if (!that.options.singleSelect && that.options.checkboxHeader) {\n                        text = '<input name=\"btSelectAll\" type=\"checkbox\" />';\n                    }\n                    that.header.stateField = column.field;\n                }\n                if (column.radio) {\n                    text = '';\n                    that.header.stateField = column.field;\n                    that.options.singleSelect = true;\n                }\n\n                html.push(text);\n                html.push('</div>');\n                html.push('<div class=\"fht-cell\"></div>');\n                html.push('</div>');\n                html.push('</th>');\n            });\n            html.push('</tr>');\n        });\n\n        this.$header.html(html.join(''));\n        this.$header.find('th[data-field]').each(function (i) {\n            $(this).data(visibleColumns[$(this).data('field')]);\n        });\n        this.$container.off('click', '.th-inner').on('click', '.th-inner', function (event) {\n            var target = $(this);\n\n            if (that.options.detailView) {\n                if (target.closest('.bootstrap-table')[0] !== that.$container[0])\n                    return false;\n            }\n\n            if (that.options.sortable && target.parent().data().sortable) {\n                that.onSort(event);\n            }\n        });\n\n        this.$header.children().children().off('keypress').on('keypress', function (event) {\n            if (that.options.sortable && $(this).data().sortable) {\n                var code = event.keyCode || event.which;\n                if (code == 13) { //Enter keycode\n                    that.onSort(event);\n                }\n            }\n        });\n\n        $(window).off('resize.bootstrap-table');\n        if (!this.options.showHeader || this.options.cardView) {\n            this.$header.hide();\n            this.$tableHeader.hide();\n            this.$tableLoading.css('top', 0);\n        } else {\n            this.$header.show();\n            this.$tableHeader.show();\n            this.$tableLoading.css('top', this.$header.outerHeight() + 1);\n            // Assign the correct sortable arrow\n            this.getCaret();\n            $(window).on('resize.bootstrap-table', $.proxy(this.resetWidth, this));\n        }\n\n        this.$selectAll = this.$header.find('[name=\"btSelectAll\"]');\n        this.$selectAll.off('click').on('click', function () {\n                var checked = $(this).prop('checked');\n                that[checked ? 'checkAll' : 'uncheckAll']();\n                that.updateSelected();\n            });\n    };\n\n    BootstrapTable.prototype.initFooter = function () {\n        if (!this.options.showFooter || this.options.cardView) {\n            this.$tableFooter.hide();\n        } else {\n            this.$tableFooter.show();\n        }\n    };\n\n    /**\n     * @param data\n     * @param type: append / prepend\n     */\n    BootstrapTable.prototype.initData = function (data, type) {\n        if (type === 'append') {\n            this.data = this.data.concat(data);\n        } else if (type === 'prepend') {\n            this.data = [].concat(data).concat(this.data);\n        } else {\n            this.data = data || this.options.data;\n        }\n\n        // Fix #839 Records deleted when adding new row on filtered table\n        if (type === 'append') {\n            this.options.data = this.options.data.concat(data);\n        } else if (type === 'prepend') {\n            this.options.data = [].concat(data).concat(this.options.data);\n        } else {\n            this.options.data = this.data;\n        }\n\n        if (this.options.sidePagination === 'server') {\n            return;\n        }\n        this.initSort();\n    };\n\n    BootstrapTable.prototype.initSort = function () {\n        var that = this,\n            name = this.options.sortName,\n            order = this.options.sortOrder === 'desc' ? -1 : 1,\n            index = $.inArray(this.options.sortName, this.header.fields),\n            timeoutId = 0;\n\n        if (this.options.customSort !== $.noop) {\n            this.options.customSort.apply(this, [this.options.sortName, this.options.sortOrder]);\n            return;\n        }\n\n        if (index !== -1) {\n            if (this.options.sortStable) {\n                $.each(this.data, function (i, row) {\n                    if (!row.hasOwnProperty('_position')) row._position = i;\n                });\n            }\n\n            this.data.sort(function (a, b) {\n                if (that.header.sortNames[index]) {\n                    name = that.header.sortNames[index];\n                }\n                var aa = getItemField(a, name, that.options.escape),\n                    bb = getItemField(b, name, that.options.escape),\n                    value = calculateObjectValue(that.header, that.header.sorters[index], [aa, bb]);\n\n                if (value !== undefined) {\n                    return order * value;\n                }\n\n                // Fix #161: undefined or null string sort bug.\n                if (aa === undefined || aa === null) {\n                    aa = '';\n                }\n                if (bb === undefined || bb === null) {\n                    bb = '';\n                }\n\n                if (that.options.sortStable && aa === bb) {\n                    aa = a._position;\n                    bb = b._position;\n                }\n\n                // IF both values are numeric, do a numeric comparison\n                if ($.isNumeric(aa) && $.isNumeric(bb)) {\n                    // Convert numerical values form string to float.\n                    aa = parseFloat(aa);\n                    bb = parseFloat(bb);\n                    if (aa < bb) {\n                        return order * -1;\n                    }\n                    return order;\n                }\n\n                if (aa === bb) {\n                    return 0;\n                }\n\n                // If value is not a string, convert to string\n                if (typeof aa !== 'string') {\n                    aa = aa.toString();\n                }\n\n                if (aa.localeCompare(bb) === -1) {\n                    return order * -1;\n                }\n\n                return order;\n            });\n\n            if (this.options.sortClass !== undefined) {\n                clearTimeout(timeoutId);\n                timeoutId = setTimeout(function () {\n                    that.$el.removeClass(that.options.sortClass);\n                    var index = that.$header.find(sprintf('[data-field=\"%s\"]',\n                        that.options.sortName).index() + 1);\n                    that.$el.find(sprintf('tr td:nth-child(%s)', index))\n                        .addClass(that.options.sortClass);\n                }, 250);\n            }\n        }\n    };\n\n    BootstrapTable.prototype.onSort = function (event) {\n        var $this = event.type === \"keypress\" ? $(event.currentTarget) : $(event.currentTarget).parent(),\n            $this_ = this.$header.find('th').eq($this.index());\n\n        this.$header.add(this.$header_).find('span.order').remove();\n\n        if (this.options.sortName === $this.data('field')) {\n            this.options.sortOrder = this.options.sortOrder === 'asc' ? 'desc' : 'asc';\n        } else {\n            this.options.sortName = $this.data('field');\n            this.options.sortOrder = $this.data('order') === 'asc' ? 'desc' : 'asc';\n        }\n        this.trigger('sort', this.options.sortName, this.options.sortOrder);\n\n        $this.add($this_).data('order', this.options.sortOrder);\n\n        // Assign the correct sortable arrow\n        this.getCaret();\n\n        if (this.options.sidePagination === 'server') {\n            this.initServer(this.options.silentSort);\n            return;\n        }\n\n        this.initSort();\n        this.initBody();\n    };\n\n    BootstrapTable.prototype.initToolbar = function () {\n        var that = this,\n            html = [],\n            timeoutId = 0,\n            $keepOpen,\n            $search,\n            switchableCount = 0;\n\n        if (this.$toolbar.find('.bs-bars').children().length) {\n            $('body').append($(this.options.toolbar));\n        }\n        this.$toolbar.html('');\n\n        if (typeof this.options.toolbar === 'string' || typeof this.options.toolbar === 'object') {\n            $(sprintf('<div class=\"bs-bars pull-%s\"></div>', this.options.toolbarAlign))\n                .appendTo(this.$toolbar)\n                .append($(this.options.toolbar));\n        }\n\n        // showColumns, showToggle, showRefresh\n        html = [sprintf('<div class=\"columns columns-%s btn-group pull-%s\">',\n            this.options.buttonsAlign, this.options.buttonsAlign)];\n\n        if (typeof this.options.icons === 'string') {\n            this.options.icons = calculateObjectValue(null, this.options.icons);\n        }\n\n        if (this.options.showPaginationSwitch) {\n            html.push(sprintf('<button class=\"btn' +\n                    sprintf(' btn-%s', this.options.buttonsClass) +\n                    sprintf(' btn-%s', this.options.iconSize) +\n                    '\" type=\"button\" name=\"paginationSwitch\" aria-label=\"pagination Switch\" title=\"%s\">',\n                    this.options.formatPaginationSwitch()),\n                sprintf('<i class=\"%s %s\"></i>', this.options.iconsPrefix, this.options.icons.paginationSwitchDown),\n                '</button>');\n        }\n\n        if (this.options.showRefresh) {\n            html.push(sprintf('<button class=\"btn' +\n                    sprintf(' btn-%s', this.options.buttonsClass) +\n                    sprintf(' btn-%s', this.options.iconSize) +\n                    '\" type=\"button\" name=\"refresh\" aria-label=\"refresh\" title=\"%s\">',\n                    this.options.formatRefresh()),\n                sprintf('<i class=\"%s %s\"></i>', this.options.iconsPrefix, this.options.icons.refresh),\n                '</button>');\n        }\n\n        if (this.options.showToggle) {\n            html.push(sprintf('<button class=\"btn' +\n                    sprintf(' btn-%s', this.options.buttonsClass) +\n                    sprintf(' btn-%s', this.options.iconSize) +\n                    '\" type=\"button\" name=\"toggle\" aria-label=\"toggle\" title=\"%s\">',\n                    this.options.formatToggle()),\n                sprintf('<i class=\"%s %s\"></i>', this.options.iconsPrefix, this.options.icons.toggle),\n                '</button>');\n        }\n\n        if (this.options.showColumns) {\n            html.push(sprintf('<div class=\"keep-open btn-group\" title=\"%s\">',\n                    this.options.formatColumns()),\n                '<button type=\"button\" aria-label=\"columns\" class=\"btn' +\n                sprintf(' btn-%s', this.options.buttonsClass) +\n                sprintf(' btn-%s', this.options.iconSize) +\n                ' dropdown-toggle\" data-toggle=\"dropdown\">',\n                sprintf('<i class=\"%s %s\"></i>', this.options.iconsPrefix, this.options.icons.columns),\n                ' <span class=\"caret\"></span>',\n                '</button>',\n                '<ul class=\"dropdown-menu\" role=\"menu\">');\n\n            $.each(this.columns, function (i, column) {\n                if (column.radio || column.checkbox) {\n                    return;\n                }\n\n                if (that.options.cardView && !column.cardVisible) {\n                    return;\n                }\n\n                var checked = column.visible ? ' checked=\"checked\"' : '';\n\n                if (column.switchable) {\n                    html.push(sprintf('<li role=\"menuitem\">' +\n                        '<label><input type=\"checkbox\" data-field=\"%s\" value=\"%s\"%s> %s</label>' +\n                        '</li>', column.field, i, checked, column.title));\n                    switchableCount++;\n                }\n            });\n            html.push('</ul>',\n                '</div>');\n        }\n\n        html.push('</div>');\n\n        // Fix #188: this.showToolbar is for extensions\n        if (this.showToolbar || html.length > 2) {\n            this.$toolbar.append(html.join(''));\n        }\n\n        if (this.options.showPaginationSwitch) {\n            this.$toolbar.find('button[name=\"paginationSwitch\"]')\n                .off('click').on('click', $.proxy(this.togglePagination, this));\n        }\n\n        if (this.options.showRefresh) {\n            this.$toolbar.find('button[name=\"refresh\"]')\n                .off('click').on('click', $.proxy(this.refresh, this));\n        }\n\n        if (this.options.showToggle) {\n            this.$toolbar.find('button[name=\"toggle\"]')\n                .off('click').on('click', function () {\n                    that.toggleView();\n                });\n        }\n\n        if (this.options.showColumns) {\n            $keepOpen = this.$toolbar.find('.keep-open');\n\n            if (switchableCount <= this.options.minimumCountColumns) {\n                $keepOpen.find('input').prop('disabled', true);\n            }\n\n            $keepOpen.find('li').off('click').on('click', function (event) {\n                event.stopImmediatePropagation();\n            });\n            $keepOpen.find('input').off('click').on('click', function () {\n                var $this = $(this);\n\n                that.toggleColumn($(this).val(), $this.prop('checked'), false);\n                that.trigger('column-switch', $(this).data('field'), $this.prop('checked'));\n            });\n        }\n\n        if (this.options.search) {\n            html = [];\n            html.push(\n                '<div class=\"pull-' + this.options.searchAlign + ' search\">',\n                sprintf('<input class=\"form-control' +\n                    sprintf(' input-%s', this.options.iconSize) +\n                    '\" type=\"text\" placeholder=\"%s\">',\n                    this.options.formatSearch()),\n                '</div>');\n\n            this.$toolbar.append(html.join(''));\n            $search = this.$toolbar.find('.search input');\n            $search.off('keyup drop blur').on('keyup drop blur', function (event) {\n                if (that.options.searchOnEnterKey && event.keyCode !== 13) {\n                    return;\n                }\n\n                if ($.inArray(event.keyCode, [37, 38, 39, 40]) > -1) {\n                    return;\n                }\n\n                clearTimeout(timeoutId); // doesn't matter if it's 0\n                timeoutId = setTimeout(function () {\n                    that.onSearch(event);\n                }, that.options.searchTimeOut);\n            });\n\n            if (isIEBrowser()) {\n                $search.off('mouseup').on('mouseup', function (event) {\n                    clearTimeout(timeoutId); // doesn't matter if it's 0\n                    timeoutId = setTimeout(function () {\n                        that.onSearch(event);\n                    }, that.options.searchTimeOut);\n                });\n            }\n        }\n    };\n\n    BootstrapTable.prototype.onSearch = function (event) {\n        var text = $.trim($(event.currentTarget).val());\n\n        // trim search input\n        if (this.options.trimOnSearch && $(event.currentTarget).val() !== text) {\n            $(event.currentTarget).val(text);\n        }\n\n        if (text === this.searchText) {\n            return;\n        }\n        this.searchText = text;\n        this.options.searchText = text;\n\n        this.options.pageNumber = 1;\n        this.initSearch();\n        this.updatePagination();\n        this.trigger('search', text);\n    };\n\n    BootstrapTable.prototype.initSearch = function () {\n        var that = this;\n\n        if (this.options.sidePagination !== 'server') {\n            if (this.options.customSearch !== $.noop) {\n                this.options.customSearch.apply(this, [this.searchText]);\n                return;\n            }\n\n            var s = this.searchText && (this.options.escape ?\n                escapeHTML(this.searchText) : this.searchText).toLowerCase();\n            var f = $.isEmptyObject(this.filterColumns) ? null : this.filterColumns;\n\n            // Check filter\n            this.data = f ? $.grep(this.options.data, function (item, i) {\n                for (var key in f) {\n                    if ($.isArray(f[key]) && $.inArray(item[key], f[key]) === -1 ||\n                            !$.isArray(f[key]) && item[key] !== f[key]) {\n                        return false;\n                    }\n                }\n                return true;\n            }) : this.options.data;\n\n            this.data = s ? $.grep(this.data, function (item, i) {\n                for (var j = 0; j < that.header.fields.length; j++) {\n\n                    if (!that.header.searchables[j]) {\n                        continue;\n                    }\n\n                    var key = $.isNumeric(that.header.fields[j]) ? parseInt(that.header.fields[j], 10) : that.header.fields[j];\n                    var column = that.columns[getFieldIndex(that.columns, key)];\n                    var value;\n\n                    if (typeof key === 'string') {\n                        value = item;\n                        var props = key.split('.');\n                        for (var prop_index = 0; prop_index < props.length; prop_index++) {\n                            value = value[props[prop_index]];\n                        }\n\n                        // Fix #142: respect searchForamtter boolean\n                        if (column && column.searchFormatter) {\n                            value = calculateObjectValue(column,\n                                that.header.formatters[j], [value, item, i], value);\n                        }\n                    } else {\n                        value = item[key];\n                    }\n\n                    if (typeof value === 'string' || typeof value === 'number') {\n                        if (that.options.strictSearch) {\n                            if ((value + '').toLowerCase() === s) {\n                                return true;\n                            }\n                        } else {\n                            if ((value + '').toLowerCase().indexOf(s) !== -1) {\n                                return true;\n                            }\n                        }\n                    }\n                }\n                return false;\n            }) : this.data;\n        }\n    };\n\n    BootstrapTable.prototype.initPagination = function () {\n        if (!this.options.pagination) {\n            this.$pagination.hide();\n            return;\n        } else {\n            this.$pagination.show();\n        }\n\n        var that = this,\n            html = [],\n            $allSelected = false,\n            i, from, to,\n            $pageList,\n            $first, $pre,\n            $next, $last,\n            $number,\n            data = this.getData(),\n            pageList = this.options.pageList;\n\n        if (this.options.sidePagination !== 'server') {\n            this.options.totalRows = data.length;\n        }\n\n        this.totalPages = 0;\n        if (this.options.totalRows) {\n            if (this.options.pageSize === this.options.formatAllRows()) {\n                this.options.pageSize = this.options.totalRows;\n                $allSelected = true;\n            } else if (this.options.pageSize === this.options.totalRows) {\n                // Fix #667 Table with pagination,\n                // multiple pages and a search that matches to one page throws exception\n                var pageLst = typeof this.options.pageList === 'string' ?\n                    this.options.pageList.replace('[', '').replace(']', '')\n                        .replace(/ /g, '').toLowerCase().split(',') : this.options.pageList;\n                if ($.inArray(this.options.formatAllRows().toLowerCase(), pageLst)  > -1) {\n                    $allSelected = true;\n                }\n            }\n\n            this.totalPages = ~~((this.options.totalRows - 1) / this.options.pageSize) + 1;\n\n            this.options.totalPages = this.totalPages;\n        }\n        if (this.totalPages > 0 && this.options.pageNumber > this.totalPages) {\n            this.options.pageNumber = this.totalPages;\n        }\n\n        this.pageFrom = (this.options.pageNumber - 1) * this.options.pageSize + 1;\n        this.pageTo = this.options.pageNumber * this.options.pageSize;\n        if (this.pageTo > this.options.totalRows) {\n            this.pageTo = this.options.totalRows;\n        }\n\n        html.push(\n            '<div class=\"pull-' + this.options.paginationDetailHAlign + ' pagination-detail\">',\n            '<span class=\"pagination-info\">',\n            this.options.onlyInfoPagination ? this.options.formatDetailPagination(this.options.totalRows) :\n            this.options.formatShowingRows(this.pageFrom, this.pageTo, this.options.totalRows),\n            '</span>');\n\n        if (!this.options.onlyInfoPagination) {\n            html.push('<span class=\"page-list\">');\n\n            var pageNumber = [\n                    sprintf('<span class=\"btn-group %s\">',\n                        this.options.paginationVAlign === 'top' || this.options.paginationVAlign === 'both' ?\n                            'dropdown' : 'dropup'),\n                    '<button type=\"button\" class=\"btn' +\n                    sprintf(' btn-%s', this.options.buttonsClass) +\n                    sprintf(' btn-%s', this.options.iconSize) +\n                    ' dropdown-toggle\" data-toggle=\"dropdown\">',\n                    '<span class=\"page-size\">',\n                    $allSelected ? this.options.formatAllRows() : this.options.pageSize,\n                    '</span>',\n                    ' <span class=\"caret\"></span>',\n                    '</button>',\n                    '<ul class=\"dropdown-menu\" role=\"menu\">'\n                ];\n\n            if (typeof this.options.pageList === 'string') {\n                var list = this.options.pageList.replace('[', '').replace(']', '')\n                    .replace(/ /g, '').split(',');\n\n                pageList = [];\n                $.each(list, function (i, value) {\n                    pageList.push(value.toUpperCase() === that.options.formatAllRows().toUpperCase() ?\n                        that.options.formatAllRows() : +value);\n                });\n            }\n\n            $.each(pageList, function (i, page) {\n                if (!that.options.smartDisplay || i === 0 || pageList[i - 1] < that.options.totalRows) {\n                    var active;\n                    if ($allSelected) {\n                        active = page === that.options.formatAllRows() ? ' class=\"active\"' : '';\n                    } else {\n                        active = page === that.options.pageSize ? ' class=\"active\"' : '';\n                    }\n                    pageNumber.push(sprintf('<li role=\"menuitem\"%s><a href=\"#\">%s</a></li>', active, page));\n                }\n            });\n            pageNumber.push('</ul></span>');\n\n            html.push(this.options.formatRecordsPerPage(pageNumber.join('')));\n            html.push('</span>');\n\n            html.push('</div>',\n                '<div class=\"pull-' + this.options.paginationHAlign + ' pagination\">',\n                '<ul class=\"pagination' + sprintf(' pagination-%s', this.options.iconSize) + '\">',\n                '<li class=\"page-pre\"><a href=\"#\">' + this.options.paginationPreText + '</a></li>');\n\n            if (this.totalPages < 5) {\n                from = 1;\n                to = this.totalPages;\n            } else {\n                from = this.options.pageNumber - 2;\n                to = from + 4;\n                if (from < 1) {\n                    from = 1;\n                    to = 5;\n                }\n                if (to > this.totalPages) {\n                    to = this.totalPages;\n                    from = to - 4;\n                }\n            }\n\n            if (this.totalPages >= 6) {\n                if (this.options.pageNumber >= 3) {\n                    html.push('<li class=\"page-first' + (1 === this.options.pageNumber ? ' active' : '') + '\">',\n                        '<a href=\"#\">', 1, '</a>',\n                        '</li>');\n\n                    from++;\n                }\n\n                if (this.options.pageNumber >= 4) {\n                    if (this.options.pageNumber == 4 || this.totalPages == 6 || this.totalPages == 7) {\n                        from--;\n                    } else {\n                        html.push('<li class=\"page-first-separator disabled\">',\n                            '<a href=\"#\">...</a>',\n                            '</li>');\n                    }\n\n                    to--;\n                }\n            }\n\n            if (this.totalPages >= 7) {\n                if (this.options.pageNumber >= (this.totalPages - 2)) {\n                    from--;\n                }\n            }\n\n            if (this.totalPages == 6) {\n                if (this.options.pageNumber >= (this.totalPages - 2)) {\n                    to++;\n                }\n            } else if (this.totalPages >= 7) {\n                if (this.totalPages == 7 || this.options.pageNumber >= (this.totalPages - 3)) {\n                    to++;\n                }\n            }\n\n            for (i = from; i <= to; i++) {\n                html.push('<li class=\"page-number' + (i === this.options.pageNumber ? ' active' : '') + '\">',\n                    '<a href=\"#\">', i, '</a>',\n                    '</li>');\n            }\n\n            if (this.totalPages >= 8) {\n                if (this.options.pageNumber <= (this.totalPages - 4)) {\n                    html.push('<li class=\"page-last-separator disabled\">',\n                        '<a href=\"#\">...</a>',\n                        '</li>');\n                }\n            }\n\n            if (this.totalPages >= 6) {\n                if (this.options.pageNumber <= (this.totalPages - 3)) {\n                    html.push('<li class=\"page-last' + (this.totalPages === this.options.pageNumber ? ' active' : '') + '\">',\n                        '<a href=\"#\">', this.totalPages, '</a>',\n                        '</li>');\n                }\n            }\n\n            html.push(\n                '<li class=\"page-next\"><a href=\"#\">' + this.options.paginationNextText + '</a></li>',\n                '</ul>',\n                '</div>');\n        }\n        this.$pagination.html(html.join(''));\n\n        if (!this.options.onlyInfoPagination) {\n            $pageList = this.$pagination.find('.page-list a');\n            $first = this.$pagination.find('.page-first');\n            $pre = this.$pagination.find('.page-pre');\n            $next = this.$pagination.find('.page-next');\n            $last = this.$pagination.find('.page-last');\n            $number = this.$pagination.find('.page-number');\n\n            if (this.options.smartDisplay) {\n                if (this.totalPages <= 1) {\n                    this.$pagination.find('div.pagination').hide();\n                }\n                if (pageList.length < 2 || this.options.totalRows <= pageList[0]) {\n                    this.$pagination.find('span.page-list').hide();\n                }\n\n                // when data is empty, hide the pagination\n                this.$pagination[this.getData().length ? 'show' : 'hide']();\n            }\n\n            if (!this.options.paginationLoop) {\n                if (this.options.pageNumber === 1) {\n                    $pre.addClass('disabled');\n                }\n                if (this.options.pageNumber === this.totalPages) {\n                    $next.addClass('disabled');\n                }\n            }\n\n            if ($allSelected) {\n                this.options.pageSize = this.options.formatAllRows();\n            }\n            $pageList.off('click').on('click', $.proxy(this.onPageListChange, this));\n            $first.off('click').on('click', $.proxy(this.onPageFirst, this));\n            $pre.off('click').on('click', $.proxy(this.onPagePre, this));\n            $next.off('click').on('click', $.proxy(this.onPageNext, this));\n            $last.off('click').on('click', $.proxy(this.onPageLast, this));\n            $number.off('click').on('click', $.proxy(this.onPageNumber, this));\n        }\n    };\n\n    BootstrapTable.prototype.updatePagination = function (event) {\n        // Fix #171: IE disabled button can be clicked bug.\n        if (event && $(event.currentTarget).hasClass('disabled')) {\n            return;\n        }\n\n        if (!this.options.maintainSelected) {\n            this.resetRows();\n        }\n\n        this.initPagination();\n        if (this.options.sidePagination === 'server') {\n            this.initServer();\n        } else {\n            this.initBody();\n        }\n\n        this.trigger('page-change', this.options.pageNumber, this.options.pageSize);\n    };\n\n    BootstrapTable.prototype.onPageListChange = function (event) {\n        var $this = $(event.currentTarget);\n\n        $this.parent().addClass('active').siblings().removeClass('active');\n        this.options.pageSize = $this.text().toUpperCase() === this.options.formatAllRows().toUpperCase() ?\n            this.options.formatAllRows() : +$this.text();\n        this.$toolbar.find('.page-size').text(this.options.pageSize);\n\n        this.updatePagination(event);\n        return false;\n    };\n\n    BootstrapTable.prototype.onPageFirst = function (event) {\n        this.options.pageNumber = 1;\n        this.updatePagination(event);\n        return false;\n    };\n\n    BootstrapTable.prototype.onPagePre = function (event) {\n        if ((this.options.pageNumber - 1) === 0) {\n            this.options.pageNumber = this.options.totalPages;\n        } else {\n            this.options.pageNumber--;\n        }\n        this.updatePagination(event);\n        return false;\n    };\n\n    BootstrapTable.prototype.onPageNext = function (event) {\n        if ((this.options.pageNumber + 1) > this.options.totalPages) {\n            this.options.pageNumber = 1;\n        } else {\n            this.options.pageNumber++;\n        }\n        this.updatePagination(event);\n        return false;\n    };\n\n    BootstrapTable.prototype.onPageLast = function (event) {\n        this.options.pageNumber = this.totalPages;\n        this.updatePagination(event);\n        return false;\n    };\n\n    BootstrapTable.prototype.onPageNumber = function (event) {\n        if (this.options.pageNumber === +$(event.currentTarget).text()) {\n            return;\n        }\n        this.options.pageNumber = +$(event.currentTarget).text();\n        this.updatePagination(event);\n        return false;\n    };\n\n    BootstrapTable.prototype.initRow = function(item, i, data, parentDom) {\n        var that=this,\n            key,\n            html = [],\n            style = {},\n            csses = [],\n            data_ = '',\n            attributes = {},\n            htmlAttributes = [];\n\n        if ($.inArray(item, this.hiddenRows) > -1) {\n            return;\n        }\n\n        style = calculateObjectValue(this.options, this.options.rowStyle, [item, i], style);\n\n        if (style && style.css) {\n            for (key in style.css) {\n                csses.push(key + ': ' + style.css[key]);\n            }\n        }\n\n        attributes = calculateObjectValue(this.options,\n            this.options.rowAttributes, [item, i], attributes);\n\n        if (attributes) {\n            for (key in attributes) {\n                htmlAttributes.push(sprintf('%s=\"%s\"', key, escapeHTML(attributes[key])));\n            }\n        }\n\n        if (item._data && !$.isEmptyObject(item._data)) {\n            $.each(item._data, function(k, v) {\n                // ignore data-index\n                if (k === 'index') {\n                    return;\n                }\n                data_ += sprintf(' data-%s=\"%s\"', k, v);\n            });\n        }\n\n        html.push('<tr',\n            sprintf(' %s', htmlAttributes.join(' ')),\n            sprintf(' id=\"%s\"', $.isArray(item) ? undefined : item._id),\n            sprintf(' class=\"%s\"', style.classes || ($.isArray(item) ? undefined : item._class)),\n            sprintf(' data-index=\"%s\"', i),\n            sprintf(' data-uniqueid=\"%s\"', item[this.options.uniqueId]),\n            sprintf('%s', data_),\n            '>'\n        );\n\n        if (this.options.cardView) {\n            html.push(sprintf('<td colspan=\"%s\"><div class=\"card-views\">', this.header.fields.length));\n        }\n\n        if (!this.options.cardView && this.options.detailView) {\n            html.push('<td>',\n                '<a class=\"detail-icon\" href=\"#\">',\n                sprintf('<i class=\"%s %s\"></i>', this.options.iconsPrefix, this.options.icons.detailOpen),\n                '</a>',\n                '</td>');\n        }\n\n        $.each(this.header.fields, function(j, field) {\n            var text = '',\n                value_ = getItemField(item, field, that.options.escape),\n                value = '',\n                type = '',\n                cellStyle = {},\n                id_ = '',\n                class_ = that.header.classes[j],\n                data_ = '',\n                rowspan_ = '',\n                colspan_ = '',\n                title_ = '',\n                column = that.columns[j];\n\n            if (that.fromHtml && typeof value_ === 'undefined') {\n                return;\n            }\n\n            if (!column.visible) {\n                return;\n            }\n\n            if (that.options.cardView && (!column.cardVisible)) {\n                return;\n            }\n\n            if (column.escape) {\n                value_ = escapeHTML(value_);\n            }\n\n            style = sprintf('style=\"%s\"', csses.concat(that.header.styles[j]).join('; '));\n\n            // handle td's id and class\n            if (item['_' + field + '_id']) {\n                id_ = sprintf(' id=\"%s\"', item['_' + field + '_id']);\n            }\n            if (item['_' + field + '_class']) {\n                class_ = sprintf(' class=\"%s\"', item['_' + field + '_class']);\n            }\n            if (item['_' + field + '_rowspan']) {\n                rowspan_ = sprintf(' rowspan=\"%s\"', item['_' + field + '_rowspan']);\n            }\n            if (item['_' + field + '_colspan']) {\n                colspan_ = sprintf(' colspan=\"%s\"', item['_' + field + '_colspan']);\n            }\n            if (item['_' + field + '_title']) {\n                title_ = sprintf(' title=\"%s\"', item['_' + field + '_title']);\n            }\n            cellStyle = calculateObjectValue(that.header,\n                that.header.cellStyles[j], [value_, item, i, field], cellStyle);\n            if (cellStyle.classes) {\n                class_ = sprintf(' class=\"%s\"', cellStyle.classes);\n            }\n            if (cellStyle.css) {\n                var csses_ = [];\n                for (var key in cellStyle.css) {\n                    csses_.push(key + ': ' + cellStyle.css[key]);\n                }\n                style = sprintf('style=\"%s\"', csses_.concat(that.header.styles[j]).join('; '));\n            }\n\n            value = calculateObjectValue(column,\n                that.header.formatters[j], [value_, item, i], value_);\n\n            if (item['_' + field + '_data'] && !$.isEmptyObject(item['_' + field + '_data'])) {\n                $.each(item['_' + field + '_data'], function(k, v) {\n                    // ignore data-index\n                    if (k === 'index') {\n                        return;\n                    }\n                    data_ += sprintf(' data-%s=\"%s\"', k, v);\n                });\n            }\n\n            if (column.checkbox || column.radio) {\n                type = column.checkbox ? 'checkbox' : type;\n                type = column.radio ? 'radio' : type;\n\n                text = [sprintf(that.options.cardView ?\n                        '<div class=\"card-view %s\">' : '<td class=\"bs-checkbox %s\">', column['class'] || ''),\n                    '<input' +\n                    sprintf(' data-index=\"%s\"', i) +\n                    sprintf(' name=\"%s\"', that.options.selectItemName) +\n                    sprintf(' type=\"%s\"', type) +\n                    sprintf(' value=\"%s\"', item[that.options.idField]) +\n                    sprintf(' checked=\"%s\"', value === true ||\n                        (value_ || value && value.checked) ? 'checked' : undefined) +\n                    sprintf(' disabled=\"%s\"', !column.checkboxEnabled ||\n                        (value && value.disabled) ? 'disabled' : undefined) +\n                    ' />',\n                    that.header.formatters[j] && typeof value === 'string' ? value : '',\n                    that.options.cardView ? '</div>' : '</td>'\n                ].join('');\n\n                item[that.header.stateField] = value === true || (value && value.checked);\n            } else {\n                value = typeof value === 'undefined' || value === null ?\n                    that.options.undefinedText : value;\n\n                text = that.options.cardView ? ['<div class=\"card-view\">',\n                    that.options.showHeader ? sprintf('<span class=\"title\" %s>%s</span>', style,\n                        getPropertyFromOther(that.columns, 'field', 'title', field)) : '',\n                    sprintf('<span class=\"value\">%s</span>', value),\n                    '</div>'\n                ].join('') : [sprintf('<td%s %s %s %s %s %s %s>',\n                        id_, class_, style, data_, rowspan_, colspan_, title_),\n                    value,\n                    '</td>'\n                ].join('');\n\n                // Hide empty data on Card view when smartDisplay is set to true.\n                if (that.options.cardView && that.options.smartDisplay && value === '') {\n                    // Should set a placeholder for event binding correct fieldIndex\n                    text = '<div class=\"card-view\"></div>';\n                }\n            }\n\n            html.push(text);\n        });\n\n        if (this.options.cardView) {\n            html.push('</div></td>');\n        }\n        html.push('</tr>');\n\n        return html.join(' ');\n    };\n\n    BootstrapTable.prototype.initBody = function (fixedScroll) {\n        var that = this,\n            html = [],\n            data = this.getData();\n\n        this.trigger('pre-body', data);\n\n        this.$body = this.$el.find('>tbody');\n        if (!this.$body.length) {\n            this.$body = $('<tbody></tbody>').appendTo(this.$el);\n        }\n\n        //Fix #389 Bootstrap-table-flatJSON is not working\n\n        if (!this.options.pagination || this.options.sidePagination === 'server') {\n            this.pageFrom = 1;\n            this.pageTo = data.length;\n        }\n\n        var trFragments = $(document.createDocumentFragment());\n        var hasTr;\n\n        for (var i = this.pageFrom - 1; i < this.pageTo; i++) {\n            var item = data[i];\n            var tr = this.initRow(item, i, data, trFragments);\n            hasTr = hasTr || !!tr;\n            if (tr&&tr!==true) {\n                trFragments.append(tr);\n            }\n        }\n\n        // show no records\n        if (!hasTr) {\n            trFragments.append('<tr class=\"no-records-found\">' +\n                sprintf('<td colspan=\"%s\">%s</td>',\n                this.$header.find('th').length,\n                this.options.formatNoMatches()) +\n                '</tr>');\n        }\n\n        this.$body.html(trFragments);\n\n        if (!fixedScroll) {\n            this.scrollTo(0);\n        }\n\n        // click to select by column\n        this.$body.find('> tr[data-index] > td').off('click dblclick').on('click dblclick', function (e) {\n            var $td = $(this),\n                $tr = $td.parent(),\n                item = that.data[$tr.data('index')],\n                index = $td[0].cellIndex,\n                fields = that.getVisibleFields(),\n                field = fields[that.options.detailView && !that.options.cardView ? index - 1 : index],\n                column = that.columns[getFieldIndex(that.columns, field)],\n                value = getItemField(item, field, that.options.escape);\n\n            if ($td.find('.detail-icon').length) {\n                return;\n            }\n\n            that.trigger(e.type === 'click' ? 'click-cell' : 'dbl-click-cell', field, value, item, $td);\n            that.trigger(e.type === 'click' ? 'click-row' : 'dbl-click-row', item, $tr, field);\n\n            // if click to select - then trigger the checkbox/radio click\n            if (e.type === 'click' && that.options.clickToSelect && column.clickToSelect) {\n                var $selectItem = $tr.find(sprintf('[name=\"%s\"]', that.options.selectItemName));\n                if ($selectItem.length) {\n                    $selectItem[0].click(); // #144: .trigger('click') bug\n                }\n            }\n        });\n\n        this.$body.find('> tr[data-index] > td > .detail-icon').off('click').on('click', function () {\n            var $this = $(this),\n                $tr = $this.parent().parent(),\n                index = $tr.data('index'),\n                row = data[index]; // Fix #980 Detail view, when searching, returns wrong row\n\n            // remove and update\n            if ($tr.next().is('tr.detail-view')) {\n                $this.find('i').attr('class', sprintf('%s %s', that.options.iconsPrefix, that.options.icons.detailOpen));\n                that.trigger('collapse-row', index, row);\n                $tr.next().remove();\n            } else {\n                $this.find('i').attr('class', sprintf('%s %s', that.options.iconsPrefix, that.options.icons.detailClose));\n                $tr.after(sprintf('<tr class=\"detail-view\"><td colspan=\"%s\"></td></tr>', $tr.find('td').length));\n                var $element = $tr.next().find('td');\n                var content = calculateObjectValue(that.options, that.options.detailFormatter, [index, row, $element], '');\n                if($element.length === 1) {\n                    $element.append(content);\n                }\n                that.trigger('expand-row', index, row, $element);\n            }\n            that.resetView();\n            return false;\n        });\n\n        this.$selectItem = this.$body.find(sprintf('[name=\"%s\"]', this.options.selectItemName));\n        this.$selectItem.off('click').on('click', function (event) {\n            event.stopImmediatePropagation();\n\n            var $this = $(this),\n                checked = $this.prop('checked'),\n                row = that.data[$this.data('index')];\n\n            if (that.options.maintainSelected && $(this).is(':radio')) {\n                $.each(that.options.data, function (i, row) {\n                    row[that.header.stateField] = false;\n                });\n            }\n\n            row[that.header.stateField] = checked;\n\n            if (that.options.singleSelect) {\n                that.$selectItem.not(this).each(function () {\n                    that.data[$(this).data('index')][that.header.stateField] = false;\n                });\n                that.$selectItem.filter(':checked').not(this).prop('checked', false);\n            }\n\n            that.updateSelected();\n            that.trigger(checked ? 'check' : 'uncheck', row, $this);\n        });\n\n        $.each(this.header.events, function (i, events) {\n            if (!events) {\n                return;\n            }\n            // fix bug, if events is defined with namespace\n            if (typeof events === 'string') {\n                events = calculateObjectValue(null, events);\n            }\n\n            var field = that.header.fields[i],\n                fieldIndex = $.inArray(field, that.getVisibleFields());\n\n            if (that.options.detailView && !that.options.cardView) {\n                fieldIndex += 1;\n            }\n\n            for (var key in events) {\n                that.$body.find('>tr:not(.no-records-found)').each(function () {\n                    var $tr = $(this),\n                        $td = $tr.find(that.options.cardView ? '.card-view' : 'td').eq(fieldIndex),\n                        index = key.indexOf(' '),\n                        name = key.substring(0, index),\n                        el = key.substring(index + 1),\n                        func = events[key];\n\n                    $td.find(el).off(name).on(name, function (e) {\n                        var index = $tr.data('index'),\n                            row = that.data[index],\n                            value = row[field];\n\n                        func.apply(this, [e, value, row, index]);\n                    });\n                });\n            }\n        });\n\n        this.updateSelected();\n        this.resetView();\n\n        this.trigger('post-body', data);\n    };\n\n    BootstrapTable.prototype.initServer = function (silent, query, url) {\n        var that = this,\n            data = {},\n            params = {\n                searchText: this.searchText,\n                sortName: this.options.sortName,\n                sortOrder: this.options.sortOrder\n            },\n            request;\n\n        if (this.options.pagination) {\n            params.pageSize = this.options.pageSize === this.options.formatAllRows() ?\n                this.options.totalRows : this.options.pageSize;\n            params.pageNumber = this.options.pageNumber;\n        }\n\n        if (!(url || this.options.url) && !this.options.ajax) {\n            return;\n        }\n\n        if (this.options.queryParamsType === 'limit') {\n            params = {\n                search: params.searchText,\n                sort: params.sortName,\n                order: params.sortOrder\n            };\n\n            if (this.options.pagination) {\n                params.offset = this.options.pageSize === this.options.formatAllRows() ?\n                    0 : this.options.pageSize * (this.options.pageNumber - 1);\n                params.limit = this.options.pageSize === this.options.formatAllRows() ?\n                    this.options.totalRows : this.options.pageSize;\n            }\n        }\n\n        if (!($.isEmptyObject(this.filterColumnsPartial))) {\n            params.filter = JSON.stringify(this.filterColumnsPartial, null);\n        }\n\n        data = calculateObjectValue(this.options, this.options.queryParams, [params], data);\n\n        $.extend(data, query || {});\n\n        // false to stop request\n        if (data === false) {\n            return;\n        }\n\n        if (!silent) {\n            this.$tableLoading.show();\n        }\n        request = $.extend({}, calculateObjectValue(null, this.options.ajaxOptions), {\n            type: this.options.method,\n            url:  url || this.options.url,\n            data: this.options.contentType === 'application/json' && this.options.method === 'post' ?\n                JSON.stringify(data) : data,\n            cache: this.options.cache,\n            contentType: this.options.contentType,\n            dataType: this.options.dataType,\n            success: function (res) {\n                res = calculateObjectValue(that.options, that.options.responseHandler, [res], res);\n\n                that.load(res);\n                that.trigger('load-success', res);\n                if (!silent) that.$tableLoading.hide();\n            },\n            error: function (res) {\n                that.trigger('load-error', res.status, res);\n                if (!silent) that.$tableLoading.hide();\n            }\n        });\n\n        if (this.options.ajax) {\n            calculateObjectValue(this, this.options.ajax, [request], null);\n        } else {\n            if (this._xhr && this._xhr.readyState !== 4) {\n                this._xhr.abort();\n            }\n            this._xhr = $.ajax(request);\n        }\n    };\n\n    BootstrapTable.prototype.initSearchText = function () {\n        if (this.options.search) {\n            if (this.options.searchText !== '') {\n                var $search = this.$toolbar.find('.search input');\n                $search.val(this.options.searchText);\n                this.onSearch({currentTarget: $search});\n            }\n        }\n    };\n\n    BootstrapTable.prototype.getCaret = function () {\n        var that = this;\n\n        $.each(this.$header.find('th'), function (i, th) {\n            $(th).find('.sortable').removeClass('desc asc').addClass($(th).data('field') === that.options.sortName ? that.options.sortOrder : 'both');\n        });\n    };\n\n    BootstrapTable.prototype.updateSelected = function () {\n        var checkAll = this.$selectItem.filter(':enabled').length &&\n            this.$selectItem.filter(':enabled').length ===\n            this.$selectItem.filter(':enabled').filter(':checked').length;\n\n        this.$selectAll.add(this.$selectAll_).prop('checked', checkAll);\n\n        this.$selectItem.each(function () {\n            $(this).closest('tr')[$(this).prop('checked') ? 'addClass' : 'removeClass']('selected');\n        });\n    };\n\n    BootstrapTable.prototype.updateRows = function () {\n        var that = this;\n\n        this.$selectItem.each(function () {\n            that.data[$(this).data('index')][that.header.stateField] = $(this).prop('checked');\n        });\n    };\n\n    BootstrapTable.prototype.resetRows = function () {\n        var that = this;\n\n        $.each(this.data, function (i, row) {\n            that.$selectAll.prop('checked', false);\n            that.$selectItem.prop('checked', false);\n            if (that.header.stateField) {\n                row[that.header.stateField] = false;\n            }\n        });\n        this.initHiddenRows();\n    };\n\n    BootstrapTable.prototype.trigger = function (name) {\n        var args = Array.prototype.slice.call(arguments, 1);\n\n        name += '.bs.table';\n        this.options[BootstrapTable.EVENTS[name]].apply(this.options, args);\n        this.$el.trigger($.Event(name), args);\n\n        this.options.onAll(name, args);\n        this.$el.trigger($.Event('all.bs.table'), [name, args]);\n    };\n\n    BootstrapTable.prototype.resetHeader = function () {\n        // fix #61: the hidden table reset header bug.\n        // fix bug: get $el.css('width') error sometime (height = 500)\n        clearTimeout(this.timeoutId_);\n        this.timeoutId_ = setTimeout($.proxy(this.fitHeader, this), this.$el.is(':hidden') ? 100 : 0);\n    };\n\n    BootstrapTable.prototype.fitHeader = function () {\n        var that = this,\n            fixedBody,\n            scrollWidth,\n            focused,\n            focusedTemp;\n\n        if (that.$el.is(':hidden')) {\n            that.timeoutId_ = setTimeout($.proxy(that.fitHeader, that), 100);\n            return;\n        }\n        fixedBody = this.$tableBody.get(0);\n\n        scrollWidth = fixedBody.scrollWidth > fixedBody.clientWidth &&\n        fixedBody.scrollHeight > fixedBody.clientHeight + this.$header.outerHeight() ?\n            getScrollBarWidth() : 0;\n\n        this.$el.css('margin-top', -this.$header.outerHeight());\n\n        focused = $(':focus');\n        if (focused.length > 0) {\n            var $th = focused.parents('th');\n            if ($th.length > 0) {\n                var dataField = $th.attr('data-field');\n                if (dataField !== undefined) {\n                    var $headerTh = this.$header.find(\"[data-field='\" + dataField + \"']\");\n                    if ($headerTh.length > 0) {\n                        $headerTh.find(\":input\").addClass(\"focus-temp\");\n                    }\n                }\n            }\n        }\n\n        this.$header_ = this.$header.clone(true, true);\n        this.$selectAll_ = this.$header_.find('[name=\"btSelectAll\"]');\n        this.$tableHeader.css({\n            'margin-right': scrollWidth\n        }).find('table').css('width', this.$el.outerWidth())\n            .html('').attr('class', this.$el.attr('class'))\n            .append(this.$header_);\n\n\n        focusedTemp = $('.focus-temp:visible:eq(0)');\n        if (focusedTemp.length > 0) {\n            focusedTemp.focus();\n            this.$header.find('.focus-temp').removeClass('focus-temp');\n        }\n\n        // fix bug: $.data() is not working as expected after $.append()\n        this.$header.find('th[data-field]').each(function (i) {\n            that.$header_.find(sprintf('th[data-field=\"%s\"]', $(this).data('field'))).data($(this).data());\n        });\n\n        var visibleFields = this.getVisibleFields(),\n            $ths = this.$header_.find('th');\n\n        this.$body.find('>tr:first-child:not(.no-records-found) > *').each(function (i) {\n            var $this = $(this),\n                index = i;\n\n            if (that.options.detailView && !that.options.cardView) {\n                if (i === 0) {\n                    that.$header_.find('th.detail').find('.fht-cell').width($this.innerWidth());\n                }\n                index = i - 1;\n            }\n\n            var $th = that.$header_.find(sprintf('th[data-field=\"%s\"]', visibleFields[index]));\n            if ($th.length > 1) {\n                $th = $($ths[$this[0].cellIndex]);\n            }\n\n            $th.find('.fht-cell').width($this.innerWidth());\n        });\n        // horizontal scroll event\n        // TODO: it's probably better improving the layout than binding to scroll event\n        this.$tableBody.off('scroll').on('scroll', function () {\n            that.$tableHeader.scrollLeft($(this).scrollLeft());\n\n            if (that.options.showFooter && !that.options.cardView) {\n                that.$tableFooter.scrollLeft($(this).scrollLeft());\n            }\n        });\n        that.trigger('post-header');\n    };\n\n    BootstrapTable.prototype.resetFooter = function () {\n        var that = this,\n            data = that.getData(),\n            html = [];\n\n        if (!this.options.showFooter || this.options.cardView) { //do nothing\n            return;\n        }\n\n        if (!this.options.cardView && this.options.detailView) {\n            html.push('<td><div class=\"th-inner\">&nbsp;</div><div class=\"fht-cell\"></div></td>');\n        }\n\n        $.each(this.columns, function (i, column) {\n            var key,\n                falign = '', // footer align style\n                valign = '',\n                csses = [],\n                style = {},\n                class_ = sprintf(' class=\"%s\"', column['class']);\n\n            if (!column.visible) {\n                return;\n            }\n\n            if (that.options.cardView && (!column.cardVisible)) {\n                return;\n            }\n\n            falign = sprintf('text-align: %s; ', column.falign ? column.falign : column.align);\n            valign = sprintf('vertical-align: %s; ', column.valign);\n\n            style = calculateObjectValue(null, that.options.footerStyle);\n\n            if (style && style.css) {\n                for (key in style.css) {\n                    csses.push(key + ': ' + style.css[key]);\n                }\n            }\n\n            html.push('<td', class_, sprintf(' style=\"%s\"', falign + valign + csses.concat().join('; ')), '>');\n            html.push('<div class=\"th-inner\">');\n\n            html.push(calculateObjectValue(column, column.footerFormatter, [data], '&nbsp;') || '&nbsp;');\n\n            html.push('</div>');\n            html.push('<div class=\"fht-cell\"></div>');\n            html.push('</div>');\n            html.push('</td>');\n        });\n\n        this.$tableFooter.find('tr').html(html.join(''));\n        this.$tableFooter.show();\n        clearTimeout(this.timeoutFooter_);\n        this.timeoutFooter_ = setTimeout($.proxy(this.fitFooter, this),\n            this.$el.is(':hidden') ? 100 : 0);\n    };\n\n    BootstrapTable.prototype.fitFooter = function () {\n        var that = this,\n            $footerTd,\n            elWidth,\n            scrollWidth;\n\n        clearTimeout(this.timeoutFooter_);\n        if (this.$el.is(':hidden')) {\n            this.timeoutFooter_ = setTimeout($.proxy(this.fitFooter, this), 100);\n            return;\n        }\n\n        elWidth = this.$el.css('width');\n        scrollWidth = elWidth > this.$tableBody.width() ? getScrollBarWidth() : 0;\n\n        this.$tableFooter.css({\n            'margin-right': scrollWidth\n        }).find('table').css('width', elWidth)\n            .attr('class', this.$el.attr('class'));\n\n        $footerTd = this.$tableFooter.find('td');\n\n        this.$body.find('>tr:first-child:not(.no-records-found) > *').each(function (i) {\n            var $this = $(this);\n\n            $footerTd.eq(i).find('.fht-cell').width($this.innerWidth());\n        });\n    };\n\n    BootstrapTable.prototype.toggleColumn = function (index, checked, needUpdate) {\n        if (index === -1) {\n            return;\n        }\n        this.columns[index].visible = checked;\n        this.initHeader();\n        this.initSearch();\n        this.initPagination();\n        this.initBody();\n\n        if (this.options.showColumns) {\n            var $items = this.$toolbar.find('.keep-open input').prop('disabled', false);\n\n            if (needUpdate) {\n                $items.filter(sprintf('[value=\"%s\"]', index)).prop('checked', checked);\n            }\n\n            if ($items.filter(':checked').length <= this.options.minimumCountColumns) {\n                $items.filter(':checked').prop('disabled', true);\n            }\n        }\n    };\n\n    BootstrapTable.prototype.getVisibleFields = function () {\n        var that = this,\n            visibleFields = [];\n\n        $.each(this.header.fields, function (j, field) {\n            var column = that.columns[getFieldIndex(that.columns, field)];\n\n            if (!column.visible) {\n                return;\n            }\n            visibleFields.push(field);\n        });\n        return visibleFields;\n    };\n\n    // PUBLIC FUNCTION DEFINITION\n    // =======================\n\n    BootstrapTable.prototype.resetView = function (params) {\n        var padding = 0;\n\n        if (params && params.height) {\n            this.options.height = params.height;\n        }\n\n        this.$selectAll.prop('checked', this.$selectItem.length > 0 &&\n            this.$selectItem.length === this.$selectItem.filter(':checked').length);\n\n        if (this.options.height) {\n            var toolbarHeight = this.$toolbar.outerHeight(true),\n                paginationHeight = this.$pagination.outerHeight(true),\n                height = this.options.height - toolbarHeight - paginationHeight;\n\n            this.$tableContainer.css('height', height + 'px');\n        }\n\n        if (this.options.cardView) {\n            // remove the element css\n            this.$el.css('margin-top', '0');\n            this.$tableContainer.css('padding-bottom', '0');\n            this.$tableFooter.hide();\n            return;\n        }\n\n        if (this.options.showHeader && this.options.height) {\n            this.$tableHeader.show();\n            this.resetHeader();\n            padding += this.$header.outerHeight();\n        } else {\n            this.$tableHeader.hide();\n            this.trigger('post-header');\n        }\n\n        if (this.options.showFooter) {\n            this.resetFooter();\n            if (this.options.height) {\n                padding += this.$tableFooter.outerHeight() + 1;\n            }\n        }\n\n        // Assign the correct sortable arrow\n        this.getCaret();\n        this.$tableContainer.css('padding-bottom', padding + 'px');\n        this.trigger('reset-view');\n    };\n\n    BootstrapTable.prototype.getData = function (useCurrentPage) {\n        return (this.searchText || !$.isEmptyObject(this.filterColumns) || !$.isEmptyObject(this.filterColumnsPartial)) ?\n            (useCurrentPage ? this.data.slice(this.pageFrom - 1, this.pageTo) : this.data) :\n            (useCurrentPage ? this.options.data.slice(this.pageFrom - 1, this.pageTo) : this.options.data);\n    };\n\n    BootstrapTable.prototype.load = function (data) {\n        var fixedScroll = false;\n\n        // #431: support pagination\n        if (this.options.sidePagination === 'server') {\n            this.options.totalRows = data[this.options.totalField];\n            fixedScroll = data.fixedScroll;\n            data = data[this.options.dataField];\n        } else if (!$.isArray(data)) { // support fixedScroll\n            fixedScroll = data.fixedScroll;\n            data = data.data;\n        }\n\n        this.initData(data);\n        this.initSearch();\n        this.initPagination();\n        this.initBody(fixedScroll);\n    };\n\n    BootstrapTable.prototype.append = function (data) {\n        this.initData(data, 'append');\n        this.initSearch();\n        this.initPagination();\n        this.initSort();\n        this.initBody(true);\n    };\n\n    BootstrapTable.prototype.prepend = function (data) {\n        this.initData(data, 'prepend');\n        this.initSearch();\n        this.initPagination();\n        this.initSort();\n        this.initBody(true);\n    };\n\n    BootstrapTable.prototype.remove = function (params) {\n        var len = this.options.data.length,\n            i, row;\n\n        if (!params.hasOwnProperty('field') || !params.hasOwnProperty('values')) {\n            return;\n        }\n\n        for (i = len - 1; i >= 0; i--) {\n            row = this.options.data[i];\n\n            if (!row.hasOwnProperty(params.field)) {\n                continue;\n            }\n            if ($.inArray(row[params.field], params.values) !== -1) {\n                this.options.data.splice(i, 1);\n                if (this.options.sidePagination === 'server') {\n                    this.options.totalRows -= 1;\n                }\n            }\n        }\n\n        if (len === this.options.data.length) {\n            return;\n        }\n\n        this.initSearch();\n        this.initPagination();\n        this.initSort();\n        this.initBody(true);\n    };\n\n    BootstrapTable.prototype.removeAll = function () {\n        if (this.options.data.length > 0) {\n            this.options.data.splice(0, this.options.data.length);\n            this.initSearch();\n            this.initPagination();\n            this.initBody(true);\n        }\n    };\n\n    BootstrapTable.prototype.getRowByUniqueId = function (id) {\n        var uniqueId = this.options.uniqueId,\n            len = this.options.data.length,\n            dataRow = null,\n            i, row, rowUniqueId;\n\n        for (i = len - 1; i >= 0; i--) {\n            row = this.options.data[i];\n\n            if (row.hasOwnProperty(uniqueId)) { // uniqueId is a column\n                rowUniqueId = row[uniqueId];\n            } else if(row._data.hasOwnProperty(uniqueId)) { // uniqueId is a row data property\n                rowUniqueId = row._data[uniqueId];\n            } else {\n                continue;\n            }\n\n            if (typeof rowUniqueId === 'string') {\n                id = id.toString();\n            } else if (typeof rowUniqueId === 'number') {\n                if ((Number(rowUniqueId) === rowUniqueId) && (rowUniqueId % 1 === 0)) {\n                    id = parseInt(id);\n                } else if ((rowUniqueId === Number(rowUniqueId)) && (rowUniqueId !== 0)) {\n                    id = parseFloat(id);\n                }\n            }\n\n            if (rowUniqueId === id) {\n                dataRow = row;\n                break;\n            }\n        }\n\n        return dataRow;\n    };\n\n    BootstrapTable.prototype.removeByUniqueId = function (id) {\n        var len = this.options.data.length,\n            row = this.getRowByUniqueId(id);\n\n        if (row) {\n            this.options.data.splice(this.options.data.indexOf(row), 1);\n        }\n\n        if (len === this.options.data.length) {\n            return;\n        }\n\n        this.initSearch();\n        this.initPagination();\n        this.initBody(true);\n    };\n\n    BootstrapTable.prototype.updateByUniqueId = function (params) {\n        var that = this;\n        var allParams = $.isArray(params) ? params : [ params ];\n\n        $.each(allParams, function(i, params) {\n            var rowId;\n\n            if (!params.hasOwnProperty('id') || !params.hasOwnProperty('row')) {\n                return;\n            }\n\n            rowId = $.inArray(that.getRowByUniqueId(params.id), that.options.data);\n\n            if (rowId === -1) {\n                return;\n            }\n            $.extend(that.options.data[rowId], params.row);\n        });\n\n        this.initSearch();\n        this.initPagination();\n        this.initSort();\n        this.initBody(true);\n    };\n\n    BootstrapTable.prototype.insertRow = function (params) {\n        if (!params.hasOwnProperty('index') || !params.hasOwnProperty('row')) {\n            return;\n        }\n        this.data.splice(params.index, 0, params.row);\n        this.initSearch();\n        this.initPagination();\n        this.initSort();\n        this.initBody(true);\n    };\n\n    BootstrapTable.prototype.updateRow = function (params) {\n        var that = this;\n        var allParams = $.isArray(params) ? params : [ params ];\n\n        $.each(allParams, function(i, params) {\n            if (!params.hasOwnProperty('index') || !params.hasOwnProperty('row')) {\n                return;\n            }\n            $.extend(that.options.data[params.index], params.row);\n        });\n\n        this.initSearch();\n        this.initPagination();\n        this.initSort();\n        this.initBody(true);\n    };\n\n    BootstrapTable.prototype.initHiddenRows = function () {\n        this.hiddenRows = [];\n    };\n\n    BootstrapTable.prototype.showRow = function (params) {\n        this.toggleRow(params, true);\n    };\n\n    BootstrapTable.prototype.hideRow = function (params) {\n        this.toggleRow(params, false);\n    };\n\n    BootstrapTable.prototype.toggleRow = function (params, visible) {\n        var row, index;\n\n        if (params.hasOwnProperty('index')) {\n            row = this.getData()[params.index];\n        } else if (params.hasOwnProperty('uniqueId')) {\n            row = this.getRowByUniqueId(params.uniqueId);\n        }\n\n        if (!row) {\n            return;\n        }\n\n        index = $.inArray(row, this.hiddenRows);\n\n        if (!visible && index === -1) {\n            this.hiddenRows.push(row);\n        } else if (visible && index > -1) {\n            this.hiddenRows.splice(index, 1);\n        }\n        this.initBody(true);\n    };\n\n    BootstrapTable.prototype.getHiddenRows = function (show) {\n        var that = this,\n            data = this.getData(),\n            rows = [];\n\n        $.each(data, function (i, row) {\n            if ($.inArray(row, that.hiddenRows) > -1) {\n                rows.push(row);\n            }\n        });\n        this.hiddenRows = rows;\n        return rows;\n    };\n\n    BootstrapTable.prototype.mergeCells = function (options) {\n        var row = options.index,\n            col = $.inArray(options.field, this.getVisibleFields()),\n            rowspan = options.rowspan || 1,\n            colspan = options.colspan || 1,\n            i, j,\n            $tr = this.$body.find('>tr'),\n            $td;\n\n        if (this.options.detailView && !this.options.cardView) {\n            col += 1;\n        }\n\n        $td = $tr.eq(row).find('>td').eq(col);\n\n        if (row < 0 || col < 0 || row >= this.data.length) {\n            return;\n        }\n\n        for (i = row; i < row + rowspan; i++) {\n            for (j = col; j < col + colspan; j++) {\n                $tr.eq(i).find('>td').eq(j).hide();\n            }\n        }\n\n        $td.attr('rowspan', rowspan).attr('colspan', colspan).show();\n    };\n\n    BootstrapTable.prototype.updateCell = function (params) {\n        if (!params.hasOwnProperty('index') ||\n            !params.hasOwnProperty('field') ||\n            !params.hasOwnProperty('value')) {\n            return;\n        }\n        this.data[params.index][params.field] = params.value;\n\n        if (params.reinit === false) {\n            return;\n        }\n        this.initSort();\n        this.initBody(true);\n    };\n\n    BootstrapTable.prototype.getOptions = function () {\n        return this.options;\n    };\n\n    BootstrapTable.prototype.getSelections = function () {\n        var that = this;\n\n        return $.grep(this.options.data, function (row) {\n            // fix #2424: from html with checkbox\n            return row[that.header.stateField] === true;\n        });\n    };\n\n    BootstrapTable.prototype.getAllSelections = function () {\n        var that = this;\n\n        return $.grep(this.options.data, function (row) {\n            return row[that.header.stateField];\n        });\n    };\n\n    BootstrapTable.prototype.checkAll = function () {\n        this.checkAll_(true);\n    };\n\n    BootstrapTable.prototype.uncheckAll = function () {\n        this.checkAll_(false);\n    };\n\n    BootstrapTable.prototype.checkInvert = function () {\n        var that = this;\n        var rows = that.$selectItem.filter(':enabled');\n        var checked = rows.filter(':checked');\n        rows.each(function() {\n            $(this).prop('checked', !$(this).prop('checked'));\n        });\n        that.updateRows();\n        that.updateSelected();\n        that.trigger('uncheck-some', checked);\n        checked = that.getSelections();\n        that.trigger('check-some', checked);\n    };\n\n    BootstrapTable.prototype.checkAll_ = function (checked) {\n        var rows;\n        if (!checked) {\n            rows = this.getSelections();\n        }\n        this.$selectAll.add(this.$selectAll_).prop('checked', checked);\n        this.$selectItem.filter(':enabled').prop('checked', checked);\n        this.updateRows();\n        if (checked) {\n            rows = this.getSelections();\n        }\n        this.trigger(checked ? 'check-all' : 'uncheck-all', rows);\n    };\n\n    BootstrapTable.prototype.check = function (index) {\n        this.check_(true, index);\n    };\n\n    BootstrapTable.prototype.uncheck = function (index) {\n        this.check_(false, index);\n    };\n\n    BootstrapTable.prototype.check_ = function (checked, index) {\n        var $el = this.$selectItem.filter(sprintf('[data-index=\"%s\"]', index)).prop('checked', checked);\n        this.data[index][this.header.stateField] = checked;\n        this.updateSelected();\n        this.trigger(checked ? 'check' : 'uncheck', this.data[index], $el);\n    };\n\n    BootstrapTable.prototype.checkBy = function (obj) {\n        this.checkBy_(true, obj);\n    };\n\n    BootstrapTable.prototype.uncheckBy = function (obj) {\n        this.checkBy_(false, obj);\n    };\n\n    BootstrapTable.prototype.checkBy_ = function (checked, obj) {\n        if (!obj.hasOwnProperty('field') || !obj.hasOwnProperty('values')) {\n            return;\n        }\n\n        var that = this,\n            rows = [];\n        $.each(this.options.data, function (index, row) {\n            if (!row.hasOwnProperty(obj.field)) {\n                return false;\n            }\n            if ($.inArray(row[obj.field], obj.values) !== -1) {\n                var $el = that.$selectItem.filter(':enabled')\n                    .filter(sprintf('[data-index=\"%s\"]', index)).prop('checked', checked);\n                row[that.header.stateField] = checked;\n                rows.push(row);\n                that.trigger(checked ? 'check' : 'uncheck', row, $el);\n            }\n        });\n        this.updateSelected();\n        this.trigger(checked ? 'check-some' : 'uncheck-some', rows);\n    };\n\n    BootstrapTable.prototype.destroy = function () {\n        this.$el.insertBefore(this.$container);\n        $(this.options.toolbar).insertBefore(this.$el);\n        this.$container.next().remove();\n        this.$container.remove();\n        this.$el.html(this.$el_.html())\n            .css('margin-top', '0')\n            .attr('class', this.$el_.attr('class') || ''); // reset the class\n    };\n\n    BootstrapTable.prototype.showLoading = function () {\n        this.$tableLoading.show();\n    };\n\n    BootstrapTable.prototype.hideLoading = function () {\n        this.$tableLoading.hide();\n    };\n\n    BootstrapTable.prototype.togglePagination = function () {\n        this.options.pagination = !this.options.pagination;\n        var button = this.$toolbar.find('button[name=\"paginationSwitch\"] i');\n        if (this.options.pagination) {\n            button.attr(\"class\", this.options.iconsPrefix + \" \" + this.options.icons.paginationSwitchDown);\n        } else {\n            button.attr(\"class\", this.options.iconsPrefix + \" \" + this.options.icons.paginationSwitchUp);\n        }\n        this.updatePagination();\n    };\n\n    BootstrapTable.prototype.refresh = function (params) {\n        if (params && params.url) {\n            this.options.url = params.url;\n        }\n        if (params && params.pageNumber) {\n            this.options.pageNumber = params.pageNumber;\n        }\n        if (params && params.pageSize) {\n            this.options.pageSize = params.pageSize;\n        }\n        this.initServer(params && params.silent,\n            params && params.query, params && params.url);\n        this.trigger('refresh', params);\n    };\n\n    BootstrapTable.prototype.resetWidth = function () {\n        if (this.options.showHeader && this.options.height) {\n            this.fitHeader();\n        }\n        if (this.options.showFooter) {\n            this.fitFooter();\n        }\n    };\n\n    BootstrapTable.prototype.showColumn = function (field) {\n        this.toggleColumn(getFieldIndex(this.columns, field), true, true);\n    };\n\n    BootstrapTable.prototype.hideColumn = function (field) {\n        this.toggleColumn(getFieldIndex(this.columns, field), false, true);\n    };\n\n    BootstrapTable.prototype.getHiddenColumns = function () {\n        return $.grep(this.columns, function (column) {\n            return !column.visible;\n        });\n    };\n\n    BootstrapTable.prototype.getVisibleColumns = function () {\n        return $.grep(this.columns, function (column) {\n            return column.visible;\n        });\n    };\n\n    BootstrapTable.prototype.toggleAllColumns = function (visible) {\n        $.each(this.columns, function (i, column) {\n            this.columns[i].visible = visible;\n        });\n\n        this.initHeader();\n        this.initSearch();\n        this.initPagination();\n        this.initBody();\n        if (this.options.showColumns) {\n            var $items = this.$toolbar.find('.keep-open input').prop('disabled', false);\n\n            if ($items.filter(':checked').length <= this.options.minimumCountColumns) {\n                $items.filter(':checked').prop('disabled', true);\n            }\n        }\n    };\n\n    BootstrapTable.prototype.showAllColumns = function () {\n        this.toggleAllColumns(true);\n    };\n\n    BootstrapTable.prototype.hideAllColumns = function () {\n        this.toggleAllColumns(false);\n    };\n\n    BootstrapTable.prototype.filterBy = function (columns) {\n        this.filterColumns = $.isEmptyObject(columns) ? {} : columns;\n        this.options.pageNumber = 1;\n        this.initSearch();\n        this.updatePagination();\n    };\n\n    BootstrapTable.prototype.scrollTo = function (value) {\n        if (typeof value === 'string') {\n            value = value === 'bottom' ? this.$tableBody[0].scrollHeight : 0;\n        }\n        if (typeof value === 'number') {\n            this.$tableBody.scrollTop(value);\n        }\n        if (typeof value === 'undefined') {\n            return this.$tableBody.scrollTop();\n        }\n    };\n\n    BootstrapTable.prototype.getScrollPosition = function () {\n        return this.scrollTo();\n    };\n\n    BootstrapTable.prototype.selectPage = function (page) {\n        if (page > 0 && page <= this.options.totalPages) {\n            this.options.pageNumber = page;\n            this.updatePagination();\n        }\n    };\n\n    BootstrapTable.prototype.prevPage = function () {\n        if (this.options.pageNumber > 1) {\n            this.options.pageNumber--;\n            this.updatePagination();\n        }\n    };\n\n    BootstrapTable.prototype.nextPage = function () {\n        if (this.options.pageNumber < this.options.totalPages) {\n            this.options.pageNumber++;\n            this.updatePagination();\n        }\n    };\n\n    BootstrapTable.prototype.toggleView = function () {\n        this.options.cardView = !this.options.cardView;\n        this.initHeader();\n        // Fixed remove toolbar when click cardView button.\n        //that.initToolbar();\n        this.initBody();\n        this.trigger('toggle', this.options.cardView);\n    };\n\n    BootstrapTable.prototype.refreshOptions = function (options) {\n        //If the objects are equivalent then avoid the call of destroy / init methods\n        if (compareObjects(this.options, options, true)) {\n            return;\n        }\n        this.options = $.extend(this.options, options);\n        this.trigger('refresh-options', this.options);\n        this.destroy();\n        this.init();\n    };\n\n    BootstrapTable.prototype.resetSearch = function (text) {\n        var $search = this.$toolbar.find('.search input');\n        $search.val(text || '');\n        this.onSearch({currentTarget: $search});\n    };\n\n    BootstrapTable.prototype.expandRow_ = function (expand, index) {\n        var $tr = this.$body.find(sprintf('> tr[data-index=\"%s\"]', index));\n        if ($tr.next().is('tr.detail-view') === (expand ? false : true)) {\n            $tr.find('> td > .detail-icon').click();\n        }\n    };\n\n    BootstrapTable.prototype.expandRow = function (index) {\n        this.expandRow_(true, index);\n    };\n\n    BootstrapTable.prototype.collapseRow = function (index) {\n        this.expandRow_(false, index);\n    };\n\n    BootstrapTable.prototype.expandAllRows = function (isSubTable) {\n        if (isSubTable) {\n            var $tr = this.$body.find(sprintf('> tr[data-index=\"%s\"]', 0)),\n                that = this,\n                detailIcon = null,\n                executeInterval = false,\n                idInterval = -1;\n\n            if (!$tr.next().is('tr.detail-view')) {\n                $tr.find('> td > .detail-icon').click();\n                executeInterval = true;\n            } else if (!$tr.next().next().is('tr.detail-view')) {\n                $tr.next().find(\".detail-icon\").click();\n                executeInterval = true;\n            }\n\n            if (executeInterval) {\n                try {\n                    idInterval = setInterval(function () {\n                        detailIcon = that.$body.find(\"tr.detail-view\").last().find(\".detail-icon\");\n                        if (detailIcon.length > 0) {\n                            detailIcon.click();\n                        } else {\n                            clearInterval(idInterval);\n                        }\n                    }, 1);\n                } catch (ex) {\n                    clearInterval(idInterval);\n                }\n            }\n        } else {\n            var trs = this.$body.children();\n            for (var i = 0; i < trs.length; i++) {\n                this.expandRow_(true, $(trs[i]).data(\"index\"));\n            }\n        }\n    };\n\n    BootstrapTable.prototype.collapseAllRows = function (isSubTable) {\n        if (isSubTable) {\n            this.expandRow_(false, 0);\n        } else {\n            var trs = this.$body.children();\n            for (var i = 0; i < trs.length; i++) {\n                this.expandRow_(false, $(trs[i]).data(\"index\"));\n            }\n        }\n    };\n\n    BootstrapTable.prototype.updateFormatText = function (name, text) {\n        if (this.options[sprintf('format%s', name)]) {\n            if (typeof text === 'string') {\n                this.options[sprintf('format%s', name)] = function () {\n                    return text;\n                };\n            } else if (typeof text === 'function') {\n                this.options[sprintf('format%s', name)] = text;\n            }\n        }\n        this.initToolbar();\n        this.initPagination();\n        this.initBody();\n    };\n\n    // BOOTSTRAP TABLE PLUGIN DEFINITION\n    // =======================\n\n    var allowedMethods = [\n        'getOptions',\n        'getSelections', 'getAllSelections', 'getData',\n        'load', 'append', 'prepend', 'remove', 'removeAll',\n        'insertRow', 'updateRow', 'updateCell', 'updateByUniqueId', 'removeByUniqueId',\n        'getRowByUniqueId', 'showRow', 'hideRow', 'getHiddenRows',\n        'mergeCells',\n        'checkAll', 'uncheckAll', 'checkInvert',\n        'check', 'uncheck',\n        'checkBy', 'uncheckBy',\n        'refresh',\n        'resetView',\n        'resetWidth',\n        'destroy',\n        'showLoading', 'hideLoading',\n        'showColumn', 'hideColumn', 'getHiddenColumns', 'getVisibleColumns',\n        'showAllColumns', 'hideAllColumns',\n        'filterBy',\n        'scrollTo',\n        'getScrollPosition',\n        'selectPage', 'prevPage', 'nextPage',\n        'togglePagination',\n        'toggleView',\n        'refreshOptions',\n        'resetSearch',\n        'expandRow', 'collapseRow', 'expandAllRows', 'collapseAllRows',\n        'updateFormatText'\n    ];\n\n    $.fn.bootstrapTable = function (option) {\n        var value,\n            args = Array.prototype.slice.call(arguments, 1);\n\n        this.each(function () {\n            var $this = $(this),\n                data = $this.data('bootstrap.table'),\n                options = $.extend({}, BootstrapTable.DEFAULTS, $this.data(),\n                    typeof option === 'object' && option);\n\n            if (typeof option === 'string') {\n                if ($.inArray(option, allowedMethods) < 0) {\n                    throw new Error(\"Unknown method: \" + option);\n                }\n\n                if (!data) {\n                    return;\n                }\n\n                value = data[option].apply(data, args);\n\n                if (option === 'destroy') {\n                    $this.removeData('bootstrap.table');\n                }\n            }\n\n            if (!data) {\n                $this.data('bootstrap.table', (data = new BootstrapTable(this, options)));\n            }\n        });\n\n        return typeof value === 'undefined' ? this : value;\n    };\n\n    $.fn.bootstrapTable.Constructor = BootstrapTable;\n    $.fn.bootstrapTable.defaults = BootstrapTable.DEFAULTS;\n    $.fn.bootstrapTable.columnDefaults = BootstrapTable.COLUMN_DEFAULTS;\n    $.fn.bootstrapTable.locales = BootstrapTable.LOCALES;\n    $.fn.bootstrapTable.methods = allowedMethods;\n    $.fn.bootstrapTable.utils = {\n        sprintf: sprintf,\n        getFieldIndex: getFieldIndex,\n        compareObjects: compareObjects,\n        calculateObjectValue: calculateObjectValue,\n        getItemField: getItemField,\n        objectKeys: objectKeys,\n        isIEBrowser: isIEBrowser\n    };\n\n    // BOOTSTRAP TABLE INIT\n    // =======================\n\n    $(function () {\n        $('[data-toggle=\"table\"]').bootstrapTable();\n    });\n})(jQuery);"
  },
  {
    "path": "public/admin/js/data-table/colResizable-1.5.source.js",
    "content": "/**\n               _ _____           _          _     _      \n              | |  __ \\         (_)        | |   | |     \n      ___ ___ | | |__) |___  ___ _ ______ _| |__ | | ___ \n     / __/ _ \\| |  _  // _ \\/ __| |_  / _` | '_ \\| |/ _ \\\n    | (_| (_) | | | \\ \\  __/\\__ \\ |/ / (_| | |_) | |  __/\n     \\___\\___/|_|_|  \\_\\___||___/_/___\\__,_|_.__/|_|\\___|\n\t \n\tv 1.5 - a jQuery plug-in by Alvaro Prieto Lauroba\n\t\n\tLicences: MIT & GPL\n\tFeel free to use or modify this plugin as far as my full name is kept\t\n\t\n\tIf you are going to use this plug-in in production environments it is \n\tstrongly recommended to use its minified version: colResizable.min.js\n\n*/\n\n(function($){ \t\n\t\n\tvar d = $(document); \t\t//window object\n\tvar h = $(\"head\");\t\t\t//head object\n\tvar drag = null;\t\t\t//reference to the current grip that is being dragged\n\tvar tables = [];\t\t\t//array of the already processed tables (table.id as key)\n\tvar\tcount = 0;\t\t\t\t//internal count to create unique IDs when needed.\t\n\t\n\t//common strings for packing\n\tvar ID = \"id\";\t\n\tvar PX = \"px\";\n\tvar SIGNATURE =\"JColResizer\";\n    var FLEX = \"JCLRFlex\";\n\t\n\t//short-cuts\n\tvar I = parseInt;\n\tvar M = Math;\n\tvar ie = navigator.userAgent.indexOf('Trident/4.0')>0;\n\tvar S;\n\ttry{S = sessionStorage;}catch(e){}\t//Firefox crashes when executed as local file system\n\t\n\t//append required CSS rules  \n\th.append(\"<style type='text/css'>  .JColResizer{/*table-layout:fixed;*/} .JColResizer td, .JColResizer th{overflow:hidden;padding-left:0!important; padding-right:0!important;}  .JCLRgrips{ height:0px; position:relative;} .JCLRgrip{margin-left:-5px; position:absolute; z-index:5; } .JCLRgrip .JColResizer{position:absolute;background-color:red;filter:alpha(opacity=1);opacity:0;width:10px;height:100%;cursor: e-resize;top:0px} .JCLRLastGrip{position:absolute; width:1px; } .JCLRgripDrag{ border-left:1px dotted black;\t} .JCLRFlex{width:auto!important;}</style>\");\n\n\t\n\t/**\n\t * Function to allow column resizing for table objects. It is the starting point to apply the plugin.\n\t * @param {DOM node} tb - reference to the DOM table object to be enhanced\n\t * @param {Object} options\t- some customization values\n\t */\n\tvar init = function( tb, options){\t\n\t\tvar t = $(tb);\t\t\t\t\t\t\t\t\t\t//the table object is wrapped\n\t\tt.opt = options;\n\t\tif(t.opt.disable) return destroy(t);\t\t\t\t//the user is asking to destroy a previously colResized table\n\t\tvar\tid = t.id = t.attr(ID) || SIGNATURE+count++;\t//its id is obtained, if null new one is generated\t\t\n\t\tt.p = t.opt.postbackSafe; \t\t\t\t\t\t\t//short-cut to detect postback safe \t\t\n\t\tif(!t.is(\"table\") || tables[id] && !t.opt.partialRefresh) return; \t\t//if the object is not a table or if it was already processed then it is ignored.\n\t\tt.addClass(SIGNATURE).attr(ID, id).before('<div class=\"JCLRgrips\"/>');\t//the grips container object is added. Signature class forces table rendering in fixed-layout mode to prevent column's min-width\n\t\tt.g = []; t.c = []; t.w = t.width(); t.gc = t.prev(); t.f=t.opt.fixed;\t//t.c and t.g are arrays of columns and grips respectively\t\t\t\t\n\t\tif(options.marginLeft) t.gc.css(\"marginLeft\", options.marginLeft);  \t//if the table contains margins, it must be specified\n\t\tif(options.marginRight) t.gc.css(\"marginRight\", options.marginRight);  \t//since there is no (direct) way to obtain margin values in its original units (%, em, ...)\n\t\tt.cs = I(ie? tb.cellSpacing || tb.currentStyle.borderSpacing :t.css('border-spacing'))||2;\t//table cellspacing (not even jQuery is fully cross-browser)\n\t\tt.b  = I(ie? tb.border || tb.currentStyle.borderLeftWidth :t.css('border-left-width'))||1;\t//outer border width (again cross-browser issues)\n\t\t// if(!(tb.style.width || tb.width)) t.width(t.width()); //I am not an IE fan at all, but it is a pity that only IE has the currentStyle attribute working as expected. For this reason I can not check easily if the table has an explicit width or if it is rendered as \"auto\"\n\t\ttables[id] = t; \t//the table object is stored using its id as key\t\n\t\tcreateGrips(t);\t\t//grips are created\n\t\n\t};\n\n\n\t/**\n\t * This function allows to remove any enhancements performed by this plugin on a previously processed table.\n\t * @param {jQuery ref} t - table object\n\t */\n\tvar destroy = function(t){\n\t\tvar id=t.attr(ID), t=tables[id];\t\t//its table object is found\n\t\tif(!t||!t.is(\"table\")) return;\t\t\t//if none, then it wasn't processed\t \n\t\tt.removeClass(SIGNATURE+\" \"+FLEX).gc.remove();\t//class and grips are removed\n\t\tdelete tables[id];\t\t\t\t\t\t//clean up data\n\t};\n\n\n\t/**\n\t * Function to create all the grips associated with the table given by parameters \n\t * @param {jQuery ref} t - table object\n\t */\n\tvar createGrips = function(t){\t\n\t\n\t\tvar th = t.find(\">thead>tr>th,>thead>tr>td\");\t//if table headers are specified in its semantically correct tag, are obtained\n\t\tif(!th.length) th = t.find(\">tbody>tr:first>th,>tr:first>th,>tbody>tr:first>td, >tr:first>td\");\t //but headers can also be included in different ways\n\t\tth = th.filter(\":visible\");\t\t\t\t\t//filter invisible columns\n\t\tt.cg = t.find(\"col\"); \t\t\t\t\t\t//a table can also contain a colgroup with col elements\t\t\n\t\tt.ln = th.length;\t\t\t\t\t\t\t//table length is stored\t\n\t\tif(t.p && S && S[t.id])memento(t,th);\t\t//if 'postbackSafe' is enabled and there is data for the current table, its coloumn layout is restored\n\t\tth.each(function(i){\t\t\t\t\t\t//iterate through the table column headers\t\t\t\n\t\t\tvar c = $(this); \t\t\t\t\t\t//jquery wrap for the current column\t\t\t\n\t\t\tvar g = $(t.gc.append('<div class=\"JCLRgrip\"></div>')[0].lastChild); //add the visual node to be used as grip\n            g.append(t.opt.gripInnerHtml).append('<div class=\"'+SIGNATURE+'\"></div>');\n            if(i == t.ln-1){\n                g.addClass(\"JCLRLastGrip\"); \n                if(t.f) g.html(\"\");\n            }\n            g.bind('touchstart mousedown', onGripMouseDown); //bind the mousedown event to start dragging \n\n\t\t\tg.t = t; g.i = i; g.c = c;\tc.w =c.width();\t\t//some values are stored in the grip's node data\n\t\t\tt.g.push(g); t.c.push(c);\t\t\t\t\t\t//the current grip and column are added to its table object\n\t\t\tc.width(c.w).removeAttr(\"width\");\t\t\t\t//the width of the column is converted into pixel-based measurements\n\t\t\tg.data(SIGNATURE, {i:i, t:t.attr(ID), last: i == t.ln-1});\t //grip index and its table name are stored in the HTML \t\t\t\t\t\t\t\t\t\t\t\t\n\t\t}); \t\n\t\tt.cg.removeAttr(\"width\");\t//remove the width attribute from elements in the colgroup \n\t\tsyncGrips(t); \t\t\t\t//the grips are positioned according to the current table layout\t\t\t\n\t\t//there is a small problem, some cells in the table could contain dimension values interfering with the \n\t\t//width value set by this plugin. Those values are removed\n\t\tt.find('td, th').not(th).not('table th, table td').each(function(){  \n\t\t\t$(this).removeAttr('width');\t//the width attribute is removed from all table cells which are not nested in other tables and dont belong to the header\n\t\t});\t\t\n        if(!t.f){\n            t.removeAttr('width').addClass(FLEX); //if not fixed, let the table grow as needed\n        }\n\n\t\t\n\t};\n\t\n    \n\t/**\n\t * Function to allow the persistence of columns dimensions after a browser postback. It is based in\n\t * the HTML5 sessionStorage object, which can be emulated for older browsers using sessionstorage.js\n\t * @param {jQuery ref} t - table object\n\t * @param {jQuery ref} th - reference to the first row elements (only set in deserialization)\n\t */\n\tvar memento = function(t, th){ \n\t\tvar w,m=0,i=0,aux =[],tw;\n\t\tif(th){\t\t\t\t\t\t\t\t\t\t//in deserialization mode (after a postback)\n\t\t\tt.cg.removeAttr(\"width\");\n\t\t\tif(t.opt.flush){ S[t.id] =\"\"; return;} \t//if flush is activated, stored data is removed\n\t\t\tw = S[t.id].split(\";\");\t\t\t\t\t//column widths is obtained\n\t\t\ttw = w[t.ln+1];\n\t\t\tif(!t.f && tw)\tt.width(tw);\t\t\t//it not fixed and table width data available its size is restored\n\t\t\tfor(;i<t.ln;i++){\t\t\t\t\t\t//for each column\n\t\t\t\taux.push(100*w[i]/w[t.ln]+\"%\"); \t//width is stored in an array since it will be required again a couple of lines ahead\n\t\t\t\tth.eq(i).css(\"width\", aux[i] ); \t//each column width in % is restored\n\t\t\t}\t\t\t\n\t\t\tfor(i=0;i<t.ln;i++)\n\t\t\t\tt.cg.eq(i).css(\"width\", aux[i]);\t//this code is required in order to create an inline CSS rule with higher precedence than an existing CSS class in the \"col\" elements\n\t\t}else{\t\t\t\t\t\t\t//in serialization mode (after resizing a column)\n\t\t\tS[t.id] =\"\";\t\t\t\t//clean up previous data\n\t\t\tfor(;i < t.c.length; i++){\t//iterate through columns\n\t\t\t\tw = t.c[i].width();\t\t//width is obtained\n\t\t\t\tS[t.id] += w+\";\";\t\t//width is appended to the sessionStorage object using ID as key\n\t\t\t\tm+=w;\t\t\t\t\t//carriage is updated to obtain the full size used by columns\n\t\t\t}\n\t\t\tS[t.id]+=m;\t\t\t\t\t\t\t//the last item of the serialized string is the table's active area (width), \n\t\t\t\t\t\t\t\t\t\t\t\t//to be able to obtain % width value of each columns while deserializing\n\t\t\tif(!t.f) S[t.id] += \";\"+t.width(); \t//if not fixed, table width is stored\n\t\t}\t\n\t};\n\t\n\t\n\t/**\n\t * Function that places each grip in the correct position according to the current table layout\t \n\t * @param {jQuery ref} t - table object\n\t */\n\tvar syncGrips = function (t){\t\n\t\tt.gc.width(t.w);\t\t\t//the grip's container width is updated\t\t\t\t\n\t\tfor(var i=0; i<t.ln; i++){\t//for each column\n\t\t\tvar c = t.c[i]; \t\t\t\n\t\t\tt.g[i].css({\t\t\t//height and position of the grip is updated according to the table layout\n\t\t\t\tleft: c.offset().left - t.offset().left + c.outerWidth(false) + t.cs / 2 + PX,\n\t\t\t\theight: t.opt.headerOnly? t.c[0].outerHeight(true) : t.outerHeight(true)\t\t\t\t\n\t\t\t});\t\t\t\n\t\t} \t\n\t};\n\t\n\t\n\t\n\t/**\n\t* This function updates column's width according to the horizontal position increment of the grip being\n\t* dragged. The function can be called while dragging if liveDragging is enabled and also from the onGripDragOver\n\t* event handler to synchronize grip's position with their related columns.\n\t* @param {jQuery ref} t - table object\n\t* @param {number} i - index of the grip being dragged\n\t* @param {bool} isOver - to identify when the function is being called from the onGripDragOver event\t\n\t*/\n\tvar syncCols = function(t,i,isOver){\n\t\tvar inc = drag.x-drag.l, c = t.c[i], c2 = t.c[i+1]; \t\t\t\n\t\tvar w = c.w + inc;\tvar w2= c2.w- inc;\t//their new width is obtained\t\t\t\t\t\n\t\tc.width( w + PX);\t\t\t\n\t\tt.cg.eq(i).width( w + PX); \n        if(t.f){ //if fixed mode\n            c2.width(w2 + PX);\n            t.cg.eq(i+1).width( w2 + PX);\n        }\n\t\tif(isOver){\n            c.w=w; \n            c2.w= t.f ? w2 : c2.w;\n        }\n\t};\n\n\t\n\t/**\n\t* This function updates all columns width according to its real width. It must be taken into account that the \n\t* sum of all columns can exceed the table width in some cases (if fixed is set to false and table has some kind \n\t* of max-width).\n\t* @param {jQuery ref} t - table object\t\n\t*/\n\tvar applyBounds = function(t){\n        var w = $.map(t.c, function(c){\t\t\t//obtain real widths\n            return c.width();\n        });\n        t.width(t.width()).removeClass(FLEX);\t//prevent table width changes\n        $.each(t.c, function(i,c){\n            c.width(w[i]).w = w[i];\t\t\t\t//set column widths applying bounds (table's max-width)\n        });\n\t\tt.addClass(FLEX);\t\t\t\t\t\t//allow table width changes\n\t};\n\t\n\t\n\t/**\n\t * Event handler used while dragging a grip. It checks if the next grip's position is valid and updates it. \n\t * @param {event} e - mousemove event binded to the window object\n\t */\n\tvar onGripDrag = function(e){\t\n\t\tif(!drag) return; \n        var t = drag.t;\t\t//table object reference \n        var oe = e.originalEvent.touches;\n        var ox = oe ? oe[0].pageX : e.pageX;    //original position (touch or mouse)\n        var x =  ox - drag.ox + drag.l;\t        //next position according to horizontal mouse position increment\n\t\tvar mw = t.opt.minWidth, i = drag.i ;\t//cell's min width\n\t\tvar l = t.cs*1.5 + mw + t.b;\n        var last = i == t.ln-1;                 \t\t\t//check if it is the last column's grip (usually hidden)\n        var min = i? t.g[i-1].position().left+t.cs+mw: l;\t//min position according to the contiguous cells\n\t\tvar max = t.f ? \t//fixed mode?\n\t\t\ti == t.ln-1? \n\t\t\t\tt.w-l: \n\t\t\t\tt.g[i+1].position().left-t.cs-mw:\n\t\t\tInfinity; \t\t\t\t\t\t\t\t//max position according to the contiguous cells \n\t\tx = M.max(min, M.min(max, x));\t\t\t\t//apply bounding\t\t\n\t\tdrag.x = x;\t drag.css(\"left\",  x + PX); \t//apply position increment\t\n        if(last){\t\t\t\t\t\t\t\t\t//if it is the last grip\n            var c = t.c[drag.i];\t\t\t\t\t//width of the last column is obtained\n\t\t\tdrag.w = c.w + x- drag.l;         \n        }              \n\t\tif(t.opt.liveDrag){ \t\t\t//if liveDrag is enabled\n\t\t\tif(last){\n\t\t\t    c.width(drag.w);\n                t.w = t.width();\n\t\t\t}else{\n\t\t\t\tsyncCols(t,i); \t\t\t//columns are synchronized\n\t\t\t}\n\t\t\tsyncGrips(t);\n\t\t\tvar cb = t.opt.onDrag;\t\t\t\t\t\t\t//check if there is an onDrag callback\n\t\t\tif (cb) { e.currentTarget = t[0]; cb(e); }\t\t//if any, it is fired\t\t\t\n\t\t}\n\t\treturn false; \t//prevent text selection while dragging\t\t\t\t\n\t};\n\t\n\n\t/**\n\t * Event handler fired when the dragging is over, updating table layout\n\t */\n\tvar onGripDragOver = function(e){\t\n\t\t\n\t\td.unbind('touchend.'+SIGNATURE+' mouseup.'+SIGNATURE).unbind('touchmove.'+SIGNATURE+' mousemove.'+SIGNATURE);\n\t\t$(\"head :last-child\").remove(); \t\t\t\t//remove the dragging cursor style\t\n\t\tif(!drag) return;\n\t\tdrag.removeClass(drag.t.opt.draggingClass);\t\t//remove the grip's dragging css-class\n\t\tvar t = drag.t;\n\t\tvar cb = t.opt.onResize; \t    //get some values\t\n        var i = drag.i;                 //column index\n        var last = i == t.ln-1;         //check if it is the last column's grip (usually hidden)\n        var c = t.g[i].c;               //the column being dragged\n        if(last){\n            c.width(drag.w);\n            c.w = drag.w;\n        }else{\n            syncCols(t, i, true);\t//the columns are updated\n        }\n        if(!t.f) applyBounds(t);\t//if not fixed mode, then apply bounds to obtain real width values\n        syncGrips(t);\t\t\t\t//the grips are updated\n        if (cb) { e.currentTarget = t[0]; cb(e); }\t//if there is a callback function, it is fired\n\t\tif(t.p && S) memento(t); \t\t\t\t\t\t//if postbackSafe is enabled and there is sessionStorage support, the new layout is serialized and stored\n\t\tdrag = null;\t\t\t\t\t\t\t\t\t//since the grip's dragging is over\t\t\t\t\t\t\t\t\t\n\t};\t\n\t\n\t\n\t/**\n\t * Event handler fired when the grip's dragging is about to start. Its main goal is to set up events \n\t * and store some values used while dragging.\n     * @param {event} e - grip's mousedown event\n\t */\n\tvar onGripMouseDown = function(e){\n\t\tvar o = $(this).data(SIGNATURE);\t\t\t//retrieve grip's data\n\t\tvar t = tables[o.t],  g = t.g[o.i];\t\t\t//shortcuts for the table and grip objects\n        var oe = e.originalEvent.touches;           //touch or mouse event?\n        g.ox = oe? oe[0].pageX: e.pageX;            //the initial position is kept\n\t\tg.l = g.position().left;\n\t\td.bind('touchmove.'+SIGNATURE+' mousemove.'+SIGNATURE, onGripDrag ).bind('touchend.'+SIGNATURE+' mouseup.'+SIGNATURE, onGripDragOver);\t//mousemove and mouseup events are bound\n\t\th.append(\"<style type='text/css'>*{cursor:\"+ t.opt.dragCursor +\"!important}</style>\"); \t//change the mouse cursor\n\t\tg.addClass(t.opt.draggingClass); \t//add the dragging class (to allow some visual feedback)\t\t\t\t\n\t\tdrag = g;\t\t\t\t\t\t\t//the current grip is stored as the current dragging object\n\t\tif(t.c[o.i].l) for(var i=0,c; i<t.ln; i++){ c=t.c[i]; c.l = false; c.w= c.width(); } \t//if the colum is locked (after browser resize), then c.w must be updated\t\t\n\t\treturn false; \t//prevent text selection\n\t};\n    \n    \n\t/**\n\t * Event handler fired when the browser is resized. The main purpose of this function is to update\n\t * table layout according to the browser's size synchronizing related grips \n\t */\n\tvar onResize = function(){\n\t\tfor(t in tables){\t\t\n\t\t\tvar t = tables[t], i, mw=0;\t\t\t\t\n\t\t\tt.removeClass(SIGNATURE);\t\t\t\t\t\t//firefox doesn't like layout-fixed in some cases\n\t\t\tif (t.f && t.w != t.width()) {\t\t\t\t\t//if the the table's width has changed and it is in fixed mode\n\t\t\t\tt.w = t.width();\t\t\t\t\t\t\t//its new value is kept the active cells area is obtained\n\t\t\t\tfor(i=0; i<t.ln; i++) mw+= t.c[i].w;\t\t\n\t\t\t\t//cell rendering is not as trivial as it might seem, and it is slightly different for\n\t\t\t\t//each browser. In the beginning i had a big switch for each browser, but since the code\n\t\t\t\t//was extremely ugly now I use a different approach with several re-flows. This works \n\t\t\t\t//pretty well but it's a bit slower. For now, lets keep things simple...   \n\t\t\t\tfor(i=0; i<t.ln; i++) t.c[i].css(\"width\", M.round(1000*t.c[i].w/mw)/10 + \"%\").l=true; \n\t\t\t\t//c.l locks the column, telling us that its c.w is outdated\t\t\t\t\t\t\t\t\t\n\t\t\t}\n\t\t\tsyncGrips(t.addClass(SIGNATURE));\n\t\t} \n\t\t\n\t};\t\t\n\n\n\t//bind resize event, to update grips position \n\t$(window).bind('resize.'+SIGNATURE, onResize); \n\n\n\t/**\n\t * The plugin is added to the jQuery library\n\t * @param {Object} options -  an object that holds some basic customization values \n\t */\n    $.fn.extend({  \n        colResizable: function(options) {           \n            var defaults = {\n\t\t\t\n\t\t\t\t//attributes:\n                draggingClass: 'JCLRgripDrag',\t//css-class used when a grip is being dragged (for visual feedback purposes)\n\t\t\t\tgripInnerHtml: '',\t\t\t\t//if it is required to use a custom grip it can be done using some custom HTML\t\t\t\t\n\t\t\t\tliveDrag: false,\t\t\t\t//enables table-layout updating while dragging\t\n                fixed: true,                    //table width does not change if columns are resized\n\t\t\t\tminWidth: 15, \t\t\t\t\t//minimum width value in pixels allowed for a column \n\t\t\t\theaderOnly: false,\t\t\t\t//specifies that the size of the the column resizing anchors will be bounded to the size of the first row \n\t\t\t\thoverCursor: \"e-resize\",  \t\t//cursor to be used on grip hover\n\t\t\t\tdragCursor: \"e-resize\",  \t\t//cursor to be used while dragging\n\t\t\t\tpostbackSafe: false, \t\t\t//when it is enabled, table layout can persist after postback or page refresh. It requires browsers with sessionStorage support (it can be emulated with sessionStorage.js). \n\t\t\t\tflush: false, \t\t\t\t\t//when postbakSafe is enabled, and it is required to prevent layout restoration after postback, 'flush' will remove its associated layout data \n\t\t\t\tmarginLeft: null,\t\t\t\t//in case the table contains any margins, colResizable needs to know the values used, e.g. \"10%\", \"15em\", \"5px\" ...\n\t\t\t\tmarginRight: null, \t\t\t\t//in case the table contains any margins, colResizable needs to know the values used, e.g. \"10%\", \"15em\", \"5px\" ...\n\t\t\t\tdisable: false,\t\t\t\t\t//disables all the enhancements performed in a previously colResized table\t\n\t\t\t\tpartialRefresh: false,\t\t\t//can be used in combination with postbackSafe when the table is inside of an updatePanel\n\t\t\t\t\n\t\t\t\t//events:\n\t\t\t\tonDrag: null, \t\t\t\t\t//callback function to be fired during the column resizing process if liveDrag is enabled\n\t\t\t\tonResize: null\t\t\t\t\t//callback function fired when the dragging process is over\n            }\t\t\t\n\t\t\tvar options =  $.extend(defaults, options);\t\t\t\n            return this.each(function() {\t\t\t\t\n             \tinit( this, options);             \n            });\n        }\n    });\n})(jQuery);\n"
  },
  {
    "path": "public/admin/js/data-table/data-table-active.js",
    "content": "(function ($) {\n \"use strict\";\n\n\t\tvar $table = $('#table');\n\t\t\t\t$('#toolbar').find('select').change(function () {\n\t\t\t\t\t$table.bootstrapTable('destroy').bootstrapTable({\n\t\t\t\t\t\texportDataType: $(this).val()\n\t\t\t\t\t});\n\t\t\t\t});\n \n})(jQuery); "
  },
  {
    "path": "public/admin/js/data-table/tableExport.js",
    "content": "/**\n * @preserve tableExport.jquery.plugin\n *\n * Copyright (c) 2015-2017 hhurz, https://github.com/hhurz\n *\n * Original Work Copyright (c) 2014 Giri Raj\n *\n * Licensed under the MIT License\n **/\n\n(function ($) {\n  $.fn.extend({\n    tableExport: function (options) {\n      var defaults = {\n        consoleLog:        false,\n        csvEnclosure:      '\"',\n        csvSeparator:      ',',\n        csvUseBOM:         true,\n        displayTableName:  false,\n        escape:            false,\n        excelFileFormat:   'xlshtml',     // xmlss = XML Spreadsheet 2003 file format (XMLSS), xlshtml = Excel 2000 html format\n        excelstyles:       [],            // e.g. ['border-bottom', 'border-top', 'border-left', 'border-right']\n        fileName:          'tableExport',\n        htmlContent:       false,\n        ignoreColumn:      [],\n        ignoreRow:         [],\n        jsonScope:         'all',         // head, data, all\n        jspdf: {\n          orientation:  'p',\n          unit:         'pt',\n          format:       'a4',             // jspdf page format or 'bestfit' for autmatic paper format selection\n          margins:      {left: 20, right: 10, top: 10, bottom: 10},\n          onDocCreated: null,\n          autotable: {\n            styles: {\n              cellPadding: 2,\n              rowHeight:   12,\n              fontSize:    8,\n              fillColor:   255,           // color value or 'inherit' to use css background-color from html table\n              textColor:   50,            // color value or 'inherit' to use css color from html table\n              fontStyle:   'normal',      // normal, bold, italic, bolditalic or 'inherit' to use css font-weight and fonst-style from html table\n              overflow:    'ellipsize',   // visible, hidden, ellipsize or linebreak\n              halign:      'left',        // left, center, right\n              valign:      'middle'       // top, middle, bottom\n            },\n            headerStyles: {\n              fillColor: [52, 73, 94],\n              textColor: 255,\n              fontStyle: 'bold',\n              halign:    'center'\n            },\n            alternateRowStyles: {\n              fillColor: 245\n            },\n            tableExport: {\n              doc:               null,    // jsPDF doc object. If set, an already created doc will be used to export to\n              onAfterAutotable:  null,\n              onBeforeAutotable: null,\n              onAutotableText:   null,\n              onTable:           null,\n              outputImages:      true\n            }\n          }\n        },\n        numbers: {\n          html: {\n            decimalMark:        '.',\n            thousandsSeparator: ','\n          },\n          output:                         // set to false to not format numbers in exported output\n                {\n                  decimalMark:        '.',\n                  thousandsSeparator: ','\n                }\n        },\n        onCellData:        null,\n        onCellHtmlData:    null,\n        onMsoNumberFormat: null,          // Excel 2000 html format only. See readme.md for more information about msonumberformat\n        outputMode:        'file',        // 'file', 'string', 'base64' or 'window' (experimental)\n        pdfmake: {\n          enabled: false,                 // true: use pdfmake instead of jspdf and jspdf-autotable (experimental)\n          docDefinition: {\n            pageOrientation: 'portrait',  // 'portrait' or 'landscape'\n            defaultStyle: {\n              font: 'Roboto'              // default is 'Roboto', for arabic font set this option to 'Mirza' and include mirza_fonts.js\n            }\n          },\n          fonts: {}\n        },\n        tbodySelector:     'tr',\n        tfootSelector:     'tr',          // set empty ('') to prevent export of tfoot rows\n        theadSelector:     'tr',\n        tableName:         'myTableName',\n        type:              'csv',         // 'csv', 'tsv', 'txt', 'sql', 'json', 'xml', 'excel', 'doc', 'png' or 'pdf'\n        worksheetName:     'Worksheet'\n      };\n\n      var FONT_ROW_RATIO = 1.15;\n      var el             = this;\n      var DownloadEvt    = null;\n      var $hrows         = [];\n      var $rows          = [];\n      var rowIndex       = 0;\n      var rowspans       = [];\n      var trData         = '';\n      var colNames       = [];\n      var blob;\n\n      $.extend(true, defaults, options);\n\n      colNames = GetColumnNames(el);\n\n      if ( defaults.type == 'csv' || defaults.type == 'tsv' || defaults.type == 'txt' ) {\n\n        var csvData   = \"\";\n        var rowlength = 0;\n        rowIndex      = 0;\n\n        function csvString (cell, rowIndex, colIndex) {\n          var result = '';\n\n          if ( cell !== null ) {\n            var dataString = parseString(cell, rowIndex, colIndex);\n\n            var csvValue = (dataString === null || dataString === '') ? '' : dataString.toString();\n\n            if ( defaults.type == 'tsv' ) {\n              if ( dataString instanceof Date )\n                dataString.toLocaleString();\n\n              // According to http://www.iana.org/assignments/media-types/text/tab-separated-values\n              // are fields that contain tabs not allowable in tsv encoding\n              result = replaceAll(csvValue, '\\t', ' ');\n            }\n            else {\n              // Takes a string and encapsulates it (by default in double-quotes) if it\n              // contains the csv field separator, spaces, or linebreaks.\n              if ( dataString instanceof Date )\n                result = defaults.csvEnclosure + dataString.toLocaleString() + defaults.csvEnclosure;\n              else {\n                result = replaceAll(csvValue, defaults.csvEnclosure, defaults.csvEnclosure + defaults.csvEnclosure);\n\n                if ( result.indexOf(defaults.csvSeparator) >= 0 || /[\\r\\n ]/g.test(result) )\n                  result = defaults.csvEnclosure + result + defaults.csvEnclosure;\n              }\n            }\n          }\n\n          return result;\n        }\n\n        var CollectCsvData = function ($rows, rowselector, length) {\n\n          $rows.each(function () {\n            trData = \"\";\n            ForEachVisibleCell(this, rowselector, rowIndex, length + $rows.length,\n              function (cell, row, col) {\n                trData += csvString(cell, row, col) + (defaults.type == 'tsv' ? '\\t' : defaults.csvSeparator);\n              });\n            trData = $.trim(trData).substring(0, trData.length - 1);\n            if ( trData.length > 0 ) {\n\n              if ( csvData.length > 0 )\n                csvData += \"\\n\";\n\n              csvData += trData;\n            }\n            rowIndex++;\n          });\n\n          return $rows.length;\n        };\n\n        rowlength += CollectCsvData($(el).find('thead').first().find(defaults.theadSelector), 'th,td', rowlength);\n        $(el).find('tbody').each(function () {\n          rowlength += CollectCsvData($(this).find(defaults.tbodySelector), 'td,th', rowlength);\n        });\n        if ( defaults.tfootSelector.length )\n          CollectCsvData($(el).find('tfoot').first().find(defaults.tfootSelector), 'td,th', rowlength);\n\n        csvData += \"\\n\";\n\n        //output\n        if ( defaults.consoleLog === true )\n          console.log(csvData);\n\n        if ( defaults.outputMode === 'string' )\n          return csvData;\n\n        if ( defaults.outputMode === 'base64' )\n          return base64encode(csvData);\n\n        if ( defaults.outputMode === 'window' ) {\n          downloadFile(false, 'data:text/' + (defaults.type == 'csv' ? 'csv' : 'plain') + ';charset=utf-8,', csvData);\n          return;\n        }\n\n        try {\n          blob = new Blob([csvData], {type: \"text/\" + (defaults.type == 'csv' ? 'csv' : 'plain') + \";charset=utf-8\"});\n          saveAs(blob, defaults.fileName + '.' + defaults.type, (defaults.type != 'csv' || defaults.csvUseBOM === false));\n        }\n        catch (e) {\n          downloadFile(defaults.fileName + '.' + defaults.type,\n            'data:text/' + (defaults.type == 'csv' ? 'csv' : 'plain') + ';charset=utf-8,' + ((defaults.type == 'csv' && defaults.csvUseBOM) ? '\\ufeff' : ''),\n            csvData);\n        }\n\n      } else if ( defaults.type == 'sql' ) {\n\n        // Header\n        rowIndex   = 0;\n        var tdData = \"INSERT INTO `\" + defaults.tableName + \"` (\";\n        $hrows     = $(el).find('thead').first().find(defaults.theadSelector);\n        $hrows.each(function () {\n          ForEachVisibleCell(this, 'th,td', rowIndex, $hrows.length,\n            function (cell, row, col) {\n              tdData += \"'\" + parseString(cell, row, col) + \"',\";\n            });\n          rowIndex++;\n          tdData = $.trim(tdData);\n          tdData = $.trim(tdData).substring(0, tdData.length - 1);\n        });\n        tdData += \") VALUES \";\n        // Row vs Column\n        $(el).find('tbody').each(function () {\n          $rows.push.apply($rows, $(this).find(defaults.tbodySelector));\n        });\n        if ( defaults.tfootSelector.length )\n          $rows.push.apply($rows, $(el).find('tfoot').find(defaults.tfootSelector));\n        $($rows).each(function () {\n          trData = \"\";\n          ForEachVisibleCell(this, 'td,th', rowIndex, $hrows.length + $rows.length,\n            function (cell, row, col) {\n              trData += \"'\" + parseString(cell, row, col) + \"',\";\n            });\n          if ( trData.length > 3 ) {\n            tdData += \"(\" + trData;\n            tdData = $.trim(tdData).substring(0, tdData.length - 1);\n            tdData += \"),\";\n          }\n          rowIndex++;\n        });\n\n        tdData = $.trim(tdData).substring(0, tdData.length - 1);\n        tdData += \";\";\n\n        //output\n        if ( defaults.consoleLog === true )\n          console.log(tdData);\n\n        if ( defaults.outputMode === 'string' )\n          return tdData;\n\n        if ( defaults.outputMode === 'base64' )\n          return base64encode(tdData);\n\n        try {\n          blob = new Blob([tdData], {type: \"text/plain;charset=utf-8\"});\n          saveAs(blob, defaults.fileName + '.sql');\n        }\n        catch (e) {\n          downloadFile(defaults.fileName + '.sql',\n            'data:application/sql;charset=utf-8,',\n            tdData);\n        }\n\n      } else if ( defaults.type == 'json' ) {\n        var jsonHeaderArray = [];\n        $hrows              = $(el).find('thead').first().find(defaults.theadSelector);\n        $hrows.each(function () {\n          var jsonArrayTd = [];\n\n          ForEachVisibleCell(this, 'th,td', rowIndex, $hrows.length,\n            function (cell, row, col) {\n              jsonArrayTd.push(parseString(cell, row, col));\n            });\n          jsonHeaderArray.push(jsonArrayTd);\n        });\n\n        var jsonArray = [];\n        $(el).find('tbody').each(function () {\n          $rows.push.apply($rows, $(this).find(defaults.tbodySelector));\n        });\n        if ( defaults.tfootSelector.length )\n          $rows.push.apply($rows, $(el).find('tfoot').find(defaults.tfootSelector));\n        $($rows).each(function () {\n          var jsonObjectTd = {};\n          var colIndex = 0;\n\n          ForEachVisibleCell(this, 'td,th', rowIndex, $hrows.length + $rows.length,\n            function (cell, row, col) {\n              if ( jsonHeaderArray.length ) {\n                jsonObjectTd[jsonHeaderArray[jsonHeaderArray.length - 1][colIndex]] = parseString(cell, row, col);\n              } else {\n                jsonObjectTd[colIndex] = parseString(cell, row, col);\n              }\n              colIndex++;\n            });\n          if ( $.isEmptyObject(jsonObjectTd) === false )\n            jsonArray.push(jsonObjectTd);\n\n          rowIndex++;\n        });\n\n        var sdata = \"\";\n\n        if ( defaults.jsonScope == 'head' )\n          sdata = JSON.stringify(jsonHeaderArray);\n        else if ( defaults.jsonScope == 'data' )\n          sdata = JSON.stringify(jsonArray);\n        else // all\n          sdata = JSON.stringify({header: jsonHeaderArray, data: jsonArray});\n\n        if ( defaults.consoleLog === true )\n          console.log(sdata);\n\n        if ( defaults.outputMode === 'string' )\n          return sdata;\n\n        if ( defaults.outputMode === 'base64' )\n          return base64encode(sdata);\n\n        try {\n          blob = new Blob([sdata], {type: \"application/json;charset=utf-8\"});\n          saveAs(blob, defaults.fileName + '.json');\n        }\n        catch (e) {\n          downloadFile(defaults.fileName + '.json',\n            'data:application/json;charset=utf-8;base64,',\n            sdata);\n        }\n\n      } else if ( defaults.type === 'xml' ) {\n\n        rowIndex = 0;\n        var xml  = '<?xml version=\"1.0\" encoding=\"utf-8\"?>';\n        xml += '<tabledata><fields>';\n\n        // Header\n        $hrows = $(el).find('thead').first().find(defaults.theadSelector);\n        $hrows.each(function () {\n\n          ForEachVisibleCell(this, 'th,td', rowIndex, $hrows.length,\n            function (cell, row, col) {\n              xml += \"<field>\" + parseString(cell, row, col) + \"</field>\";\n            });\n          rowIndex++;\n        });\n        xml += '</fields><data>';\n\n        // Row Vs Column\n        var rowCount = 1;\n        $(el).find('tbody').each(function () {\n          $rows.push.apply($rows, $(this).find(defaults.tbodySelector));\n        });\n        if ( defaults.tfootSelector.length )\n          $rows.push.apply($rows, $(el).find('tfoot').find(defaults.tfootSelector));\n        $($rows).each(function () {\n          var colCount = 1;\n          trData       = \"\";\n          ForEachVisibleCell(this, 'td,th', rowIndex, $hrows.length + $rows.length,\n            function (cell, row, col) {\n              trData += \"<column-\" + colCount + \">\" + parseString(cell, row, col) + \"</column-\" + colCount + \">\";\n              colCount++;\n            });\n          if ( trData.length > 0 && trData != \"<column-1></column-1>\" ) {\n            xml += '<row id=\"' + rowCount + '\">' + trData + '</row>';\n            rowCount++;\n          }\n\n          rowIndex++;\n        });\n        xml += '</data></tabledata>';\n\n        //output\n        if ( defaults.consoleLog === true )\n          console.log(xml);\n\n        if ( defaults.outputMode === 'string' )\n          return xml;\n\n        if ( defaults.outputMode === 'base64' )\n          return base64encode(xml);\n\n        try {\n          blob = new Blob([xml], {type: \"application/xml;charset=utf-8\"});\n          saveAs(blob, defaults.fileName + '.xml');\n        }\n        catch (e) {\n          downloadFile(defaults.fileName + '.xml',\n            'data:application/xml;charset=utf-8;base64,',\n            xml);\n        }\n      }\n      else if ( defaults.type === 'excel' && defaults.excelFileFormat === 'xmlss' ) {\n        var docDatas = [];\n\n        $(el).filter(function () {\n          return $(this).data(\"tableexport-display\") != 'none' &&\n            ($(this).is(':visible') ||\n            $(this).data(\"tableexport-display\") == 'always');\n        }).each(function () {\n          var $table  = $(this);\n          var docData = '';\n          rowIndex    = 0;\n          colNames    = GetColumnNames(this);\n          $hrows      = $table.find('thead').first().find(defaults.theadSelector);\n          docData    += '<Table>';\n\n          // Header\n          var cols = 0;\n          $hrows.each(function () {\n            trData = \"\";\n            ForEachVisibleCell(this, 'th,td', rowIndex, $hrows.length,\n              function (cell, row, col) {\n                if ( cell !== null ) {\n                  trData += '<Cell><Data ss:Type=\"String\">' + parseString(cell, row, col) + '</Data></Cell>';\n                  cols++;\n                }\n              });\n            if ( trData.length > 0 )\n              docData += '<Row>' + trData + '</Row>';\n            rowIndex++;\n          });\n\n          // Row Vs Column, support multiple tbodys\n          $rows = [];\n          $table.find('tbody').each(function () {\n            $rows.push.apply($rows, $(this).find(defaults.tbodySelector));\n          });\n\n          //if (defaults.tfootSelector.length)\n          //    $rows.push.apply($rows, $table.find('tfoot').find(defaults.tfootSelector));\n\n          $($rows).each(function () {\n            trData   = \"\";\n            ForEachVisibleCell(this, 'td,th', rowIndex, $hrows.length + $rows.length,\n              function (cell, row, col) {\n                if ( cell !== null ) {\n                  var type  = \"String\";\n                  var style = \"\";\n                  var data  = parseString(cell, row, col);\n\n                  if ( jQuery.isNumeric(data) !== false ) {\n                    type = \"Number\";\n                  }\n                  else {\n                    var number = parsePercent(data);\n                    if ( number !== false ) {\n                      data  = number;\n                      type  = \"Number\";\n                      style = ' ss:StyleID=\"pct1\"';\n                    }\n                  }\n\n                  if ( type !== \"Number\" )\n                    data = data.replace(/\\n/g, '<br>');\n\n                  trData += '<Cell' + style + '><Data ss:Type=\"' + type + '\">' + data + '</Data></Cell>';\n                }\n              });\n            if ( trData.length > 0 )\n              docData += '<Row>' + trData + '</Row>';\n            rowIndex++;\n          });\n\n          docData += '</Table>';\n          docDatas.push(docData);\n\n          if ( defaults.consoleLog === true )\n            console.log(docData);\n        });\n\n        var CreationDate = new Date().toISOString();\n        var xmlssDocFile = '<?xml version=\"1.0\" encoding=\"UTF-8\"?><?mso-application progid=\"Excel.Sheet\"?> ' +\n                            '<Workbook xmlns=\"urn:schemas-microsoft-com:office:spreadsheet\" ' +\n                                      'xmlns:o=\"urn:schemas-microsoft-com:office:office\" ' +\n                                      'xmlns:x=\"urn:schemas-microsoft-com:office:excel\" ' +\n                                      'xmlns:ss=\"urn:schemas-microsoft-com:office:spreadsheet\" ' +\n                                      'xmlns:html=\"http://www.w3.org/TR/REC-html40\"> ' +\n                              '<DocumentProperties xmlns=\"urn:schemas-microsoft-com:office:office\"> ' +\n                                '<Created>' + CreationDate + '</Created> ' +\n                              '</DocumentProperties> ' +\n                              '<OfficeDocumentSettings xmlns=\"urn:schemas-microsoft-com:office:office\"> ' +\n                                '<AllowPNG/> ' +\n                                '</OfficeDocumentSettings> ' +\n                                '<ExcelWorkbook xmlns=\"urn:schemas-microsoft-com:office:excel\"> ' +\n                                  '<WindowHeight>9000</WindowHeight> ' +\n                                  '<WindowWidth>13860</WindowWidth> ' +\n                                  '<WindowTopX>0</WindowTopX> ' +\n                                  '<WindowTopY>0</WindowTopY> ' +\n                                  '<ProtectStructure>False</ProtectStructure> ' +\n                                  '<ProtectWindows>False</ProtectWindows> ' +\n                                '</ExcelWorkbook> ' +\n                                '<Styles> ' +\n                                  '<Style ss:ID=\"Default\" ss:Name=\"Default\"> ' +\n                                    '<Alignment ss:Vertical=\"Center\"/> ' +\n                                    '<Borders/> ' +\n                                    '<Font/> ' +\n                                    '<Interior/> ' +\n                                    '<NumberFormat/> ' +\n                                    '<Protection/> ' +\n                                  '</Style> ' +\n                                  '<Style ss:ID=\"Normal\" ss:Name=\"Normal\"/> ' +\n                                  '<Style ss:ID=\"pct1\"> ' +\n                                  '  <NumberFormat ss:Format=\"Percent\"/> ' +\n                                  '</Style> ' +\n                                '</Styles>';\n\n        for ( var j = 0; j < docDatas.length; j++ ) {\n          var ssName = typeof defaults.worksheetName === 'string' ? defaults.worksheetName + ' ' + (j + 1) :\n            typeof defaults.worksheetName[j] !== 'undefined' ? defaults.worksheetName[j] :\n            'Table ' + (j + 1);\n\n          xmlssDocFile += '<Worksheet ss:Name=\"' + ssName + '\">' +\n            docDatas[j] +\n            '<WorksheetOptions/> ' +\n            '</Worksheet>';\n        }\n\n        xmlssDocFile += '</Workbook>';\n\n        if ( defaults.consoleLog === true )\n          console.log(xmlssDocFile);\n\n        if ( defaults.outputMode === 'string' )\n          return xmlssDocFile;\n\n        if ( defaults.outputMode === 'base64' )\n          return base64encode(xmlssDocFile);\n\n        try {\n          blob = new Blob([xmlssDocFile], {type: \"application/xml;charset=utf-8\"});\n          saveAs(blob, defaults.fileName + '.xml');\n        }\n        catch (e) {\n          downloadFile(defaults.fileName + '.xml',\n            'data:application/xml;charset=utf-8;base64,',\n            xmlssDocFile);\n        }\n      }\n      else if ( defaults.type == 'excel' || defaults.type == 'xls' || defaults.type == 'word' || defaults.type == 'doc' ) {\n\n        var MSDocType   = (defaults.type == 'excel' || defaults.type == 'xls') ? 'excel' : 'word';\n        var MSDocExt    = (MSDocType == 'excel') ? 'xls' : 'doc';\n        var MSDocSchema = 'xmlns:x=\"urn:schemas-microsoft-com:office:' + MSDocType + '\"';\n        var docData     = '';\n\n        $(el).filter(function () {\n          return $(this).data(\"tableexport-display\") != 'none' &&\n            ($(this).is(':visible') ||\n            $(this).data(\"tableexport-display\") == 'always');\n        }).each(function () {\n          var $table = $(this);\n          rowIndex   = 0;\n          colNames   = GetColumnNames(this);\n\n          // Header\n          docData += '<table><thead>';\n          $hrows = $table.find('thead').first().find(defaults.theadSelector);\n          $hrows.each(function () {\n            trData = \"\";\n            ForEachVisibleCell(this, 'th,td', rowIndex, $hrows.length,\n              function (cell, row, col) {\n                if ( cell !== null ) {\n                  var thstyle = '';\n                  trData += '<th';\n                  for ( var styles in defaults.excelstyles ) {\n                    if ( defaults.excelstyles.hasOwnProperty(styles) ) {\n                      var thcss = $(cell).css(defaults.excelstyles[styles]);\n                      if ( thcss !== '' && thcss != '0px none rgb(0, 0, 0)' && thcss != 'rgba(0, 0, 0, 0)' ) {\n                        thstyle += (thstyle === '') ? 'style=\"' : ';';\n                        thstyle += defaults.excelstyles[styles] + ':' + thcss;\n                      }\n                    }\n                  }\n                  if ( thstyle !== '' )\n                    trData += ' ' + thstyle + '\"';\n                  if ( $(cell).is(\"[colspan]\") )\n                    trData += ' colspan=\"' + $(cell).attr('colspan') + '\"';\n                  if ( $(cell).is(\"[rowspan]\") )\n                    trData += ' rowspan=\"' + $(cell).attr('rowspan') + '\"';\n                  trData += '>' + parseString(cell, row, col) + '</th>';\n                }\n              });\n            if ( trData.length > 0 )\n              docData += '<tr>' + trData + '</tr>';\n            rowIndex++;\n          });\n\n          docData += '</thead><tbody>';\n          // Row Vs Column, support multiple tbodys\n          $table.find('tbody').each(function () {\n            $rows.push.apply($rows, $(this).find(defaults.tbodySelector));\n          });\n          if ( defaults.tfootSelector.length )\n            $rows.push.apply($rows, $table.find('tfoot').find(defaults.tfootSelector));\n\n          $($rows).each(function () {\n            var $row = $(this);\n            trData   = \"\";\n            ForEachVisibleCell(this, 'td,th', rowIndex, $hrows.length + $rows.length,\n              function (cell, row, col) {\n                if ( cell !== null ) {\n                  var tdstyle = '';\n                  var tdcss   = $(cell).data(\"tableexport-msonumberformat\");\n\n                  if ( typeof tdcss == 'undefined' && typeof defaults.onMsoNumberFormat === 'function' )\n                    tdcss = defaults.onMsoNumberFormat(cell, row, col);\n\n                  if ( typeof tdcss != 'undefined' && tdcss !== '' )\n                    tdstyle = 'style=\"mso-number-format:\\'' + tdcss + '\\'';\n\n                  for ( var cssStyle in defaults.excelstyles ) {\n                    if ( defaults.excelstyles.hasOwnProperty(cssStyle) ) {\n                      tdcss = $(cell).css(defaults.excelstyles[cssStyle]);\n                      if ( tdcss === '' )\n                        tdcss = $row.css(defaults.excelstyles[cssStyle]);\n\n                      if ( tdcss !== '' && tdcss != '0px none rgb(0, 0, 0)' && tdcss != 'rgba(0, 0, 0, 0)' ) {\n                        tdstyle += (tdstyle === '') ? 'style=\"' : ';';\n                        tdstyle += defaults.excelstyles[cssStyle] + ':' + tdcss;\n                      }\n                    }\n                  }\n                  trData += '<td';\n                  if ( tdstyle !== '' )\n                    trData += ' ' + tdstyle + '\"';\n                  if ( $(cell).is(\"[colspan]\") )\n                    trData += ' colspan=\"' + $(cell).attr('colspan') + '\"';\n                  if ( $(cell).is(\"[rowspan]\") )\n                    trData += ' rowspan=\"' + $(cell).attr('rowspan') + '\"';\n                  trData += '>' + parseString(cell, row, col).replace(/\\n/g, '<br>') + '</td>';\n                }\n              });\n            if ( trData.length > 0 )\n              docData += '<tr>' + trData + '</tr>';\n            rowIndex++;\n          });\n\n          if ( defaults.displayTableName )\n            docData += '<tr><td></td></tr><tr><td></td></tr><tr><td>' + parseString($('<p>' + defaults.tableName + '</p>')) + '</td></tr>';\n\n          docData += '</tbody></table>';\n\n          if ( defaults.consoleLog === true )\n            console.log(docData);\n        });\n\n        //noinspection XmlUnusedNamespaceDeclaration\n        var docFile = '<html xmlns:o=\"urn:schemas-microsoft-com:office:office\" ' + MSDocSchema + ' xmlns=\"http://www.w3.org/TR/REC-html40\">';\n        docFile += '<meta http-equiv=\"content-type\" content=\"application/vnd.ms-' + MSDocType + '; charset=UTF-8\">';\n        docFile += \"<head>\";\n        if ( MSDocType === 'excel' ) {\n          docFile += \"<!--[if gte mso 9]>\";\n          docFile += \"<xml>\";\n          docFile += \"<x:ExcelWorkbook>\";\n          docFile += \"<x:ExcelWorksheets>\";\n          docFile += \"<x:ExcelWorksheet>\";\n          docFile += \"<x:Name>\";\n          docFile += defaults.worksheetName;\n          docFile += \"</x:Name>\";\n          docFile += \"<x:WorksheetOptions>\";\n          docFile += \"<x:DisplayGridlines/>\";\n          docFile += \"</x:WorksheetOptions>\";\n          docFile += \"</x:ExcelWorksheet>\";\n          docFile += \"</x:ExcelWorksheets>\";\n          docFile += \"</x:ExcelWorkbook>\";\n          docFile += \"</xml>\";\n          docFile += \"<![endif]-->\";\n        }\n        docFile += \"<style>br {mso-data-placement:same-cell;}</style>\";\n        docFile += \"</head>\";\n        docFile += \"<body>\";\n        docFile += docData;\n        docFile += \"</body>\";\n        docFile += \"</html>\";\n\n        if ( defaults.consoleLog === true )\n          console.log(docFile);\n\n        if ( defaults.outputMode === 'string' )\n          return docFile;\n\n        if ( defaults.outputMode === 'base64' )\n          return base64encode(docFile);\n\n        try {\n          blob = new Blob([docFile], {type: 'application/vnd.ms-' + defaults.type});\n          saveAs(blob, defaults.fileName + '.' + MSDocExt);\n        }\n        catch (e) {\n          downloadFile(defaults.fileName + '.' + MSDocExt,\n                       'data:application/vnd.ms-' + MSDocType + ';base64,',\n                       docFile);\n        }\n\n      } else if ( defaults.type == 'xlsx' ) {\n\n        var data   = [];\n        var ranges = [];\n        rowIndex   = 0;\n\n        $rows = $(el).find('thead').first().find(defaults.theadSelector);\n        $(el).find('tbody').each(function () {\n          $rows.push.apply($rows, $(this).find(defaults.tbodySelector));\n        });\n        if ( defaults.tfootSelector.length )\n          $rows.push.apply($rows, $(el).find('tfoot').find(defaults.tfootSelector));\n\n        $($rows).each(function () {\n          var cols = [];\n          ForEachVisibleCell(this, 'th,td', rowIndex, $rows.length,\n            function (cell, row, col) {\n              if ( typeof cell !== 'undefined' && cell !== null ) {\n\n                var cellValue = parseString(cell, row, col);\n\n                var colspan = parseInt(cell.getAttribute('colspan'));\n                var rowspan = parseInt(cell.getAttribute('rowspan'));\n\n                // Skip ranges\n                ranges.forEach(function (range) {\n                  if ( rowIndex >= range.s.r && rowIndex <= range.e.r && cols.length >= range.s.c && cols.length <= range.e.c ) {\n                    for ( var i = 0; i <= range.e.c - range.s.c; ++i )\n                      cols.push(null);\n                  }\n                });\n\n                // Handle Row Span\n                if ( rowspan || colspan ) {\n                  rowspan = rowspan || 1;\n                  colspan = colspan || 1;\n                  ranges.push({\n                    s: {r: rowIndex, c: cols.length},\n                    e: {r: rowIndex + rowspan - 1, c: cols.length + colspan - 1}\n                  });\n                }\n\n                // Handle Value\n                if ( typeof defaults.onCellData !== 'function' ) {\n\n                  // Type conversion\n                  if ( cellValue !== \"\" && cellValue == +cellValue )\n                    cellValue = +cellValue;\n                }\n                cols.push(cellValue !== \"\" ? cellValue : null);\n\n                // Handle Colspan\n                if ( colspan )\n                  for ( var k = 0; k < colspan - 1; ++k )\n                    cols.push(null);\n              }\n            });\n          data.push(cols);\n          rowIndex++;\n        });\n\n        //noinspection JSPotentiallyInvalidConstructorUsage\n        var wb = new jx_Workbook(),\n            ws = jx_createSheet(data);\n\n        // add ranges to worksheet\n        ws['!merges'] = ranges;\n\n        // add worksheet to workbook\n        wb.SheetNames.push(defaults.worksheetName);\n        wb.Sheets[defaults.worksheetName] = ws;\n\n        var wbout = XLSX.write(wb, {bookType: defaults.type, bookSST: false, type: 'binary'});\n\n        try {\n          blob = new Blob([jx_s2ab(wbout)], {type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8'});\n          saveAs(blob, defaults.fileName + '.' + defaults.type);\n        }\n        catch (e) {\n          downloadFile(defaults.fileName + '.' + defaults.type,\n            'data:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8,',\n            jx_s2ab(wbout));\n        }\n\n      } else if ( defaults.type == 'png' ) {\n        //html2canvas($(el)[0], {\n        //  onrendered: function (canvas) {\n        html2canvas($(el)[0]).then(\n          function (canvas) {\n\n            var image      = canvas.toDataURL();\n            var byteString = atob(image.substring(22)); // remove data stuff\n            var buffer     = new ArrayBuffer(byteString.length);\n            var intArray   = new Uint8Array(buffer);\n\n            for ( var i = 0; i < byteString.length; i++ )\n              intArray[i] = byteString.charCodeAt(i);\n\n            if ( defaults.consoleLog === true )\n              console.log(byteString);\n\n            if ( defaults.outputMode === 'string' )\n              return byteString;\n\n            if ( defaults.outputMode === 'base64' )\n              return base64encode(image);\n\n            if ( defaults.outputMode === 'window' ) {\n              window.open(image);\n              return;\n            }\n\n            try {\n              blob = new Blob([buffer], {type: \"image/png\"});\n              saveAs(blob, defaults.fileName + '.png');\n            }\n            catch (e) {\n              downloadFile(defaults.fileName + '.png', 'data:image/png,', blob);\n            }\n            //}\n          });\n\n      } else if ( defaults.type == 'pdf' ) {\n\n        if ( defaults.pdfmake.enabled === true ) {\n          // pdf output using pdfmake\n          // https://github.com/bpampuch/pdfmake\n\n          var widths = [];\n          var body   = [];\n          rowIndex   = 0;\n\n          var CollectPdfmakeData = function ($rows, colselector, length) {\n            var rlength = 0;\n\n            $($rows).each(function () {\n              var r = [];\n\n              ForEachVisibleCell(this, colselector, rowIndex, length,\n                function (cell, row, col) {\n                  if ( typeof cell !== 'undefined' && cell !== null ) {\n\n                    var colspan = parseInt(cell.getAttribute('colspan'));\n                    var rowspan = parseInt(cell.getAttribute('rowspan'));\n\n                    var cellValue = parseString(cell, row, col) || \" \";\n\n                    if ( colspan > 1 || rowspan > 1 ) {\n                      colspan = colspan || 1;\n                      rowspan = rowspan || 1;\n                      r.push({colSpan: colspan, rowSpan: rowspan, text: cellValue});\n                    }\n                    else\n                      r.push(cellValue);\n                  }\n                  else\n                    r.push(\" \");\n                });\n\n              if ( r.length )\n                body.push(r);\n\n              if ( rlength < r.length )\n                rlength = r.length;\n\n              rowIndex++;\n            });\n\n            return rlength;\n          };\n\n          $hrows = $(this).find('thead').first().find(defaults.theadSelector);\n\n          var colcount = CollectPdfmakeData($hrows, 'th,td', $hrows.length);\n\n          for ( var i = widths.length; i < colcount; i++ )\n            widths.push(\"*\");\n\n          $(this).find('tbody').each(function () {\n            $rows.push.apply($rows, $(this).find(defaults.tbodySelector));\n          });\n          if ( defaults.tfootSelector.length )\n            $rows.push.apply($rows, $(this).find('tfoot').find(defaults.tfootSelector));\n\n          CollectPdfmakeData($rows, 'th,td', $hrows.length + $rows.length);\n\n          var docDefinition = {\n            content: [{\n              table: {\n                headerRows: $hrows.length,\n                widths:     widths,\n                body:       body\n              }\n            }]\n          };\n\n          $.extend(true, docDefinition, defaults.pdfmake.docDefinition);\n\n          pdfMake.fonts = {\n            Roboto: {\n              normal:      'Roboto-Regular.ttf',\n              bold:        'Roboto-Medium.ttf',\n              italics:     'Roboto-Italic.ttf',\n              bolditalics: 'Roboto-MediumItalic.ttf'\n            }\n          };\n\n          $.extend(true, pdfMake.fonts, defaults.pdfmake.fonts);\n\n          pdfMake.createPdf(docDefinition).getBuffer(function (buffer) {\n\n            try {\n              var blob = new Blob([buffer], {type: \"application/pdf\"});\n              saveAs(blob, defaults.fileName + '.pdf');\n            }\n            catch (e) {\n              downloadFile(defaults.fileName + '.pdf',\n                'data:application/pdf;base64,',\n                buffer);\n            }\n          });\n\n        }\n        else if ( defaults.jspdf.autotable === false ) {\n          // pdf output using jsPDF's core html support\n\n          var addHtmlOptions = {\n            dim:       {\n              w: getPropertyUnitValue($(el).first().get(0), 'width', 'mm'),\n              h: getPropertyUnitValue($(el).first().get(0), 'height', 'mm')\n            },\n            pagesplit: false\n          };\n\n          var doc = new jsPDF(defaults.jspdf.orientation, defaults.jspdf.unit, defaults.jspdf.format);\n          doc.addHTML($(el).first(),\n            defaults.jspdf.margins.left,\n            defaults.jspdf.margins.top,\n            addHtmlOptions,\n            function () {\n              jsPdfOutput(doc, false);\n            });\n          //delete doc;\n        }\n        else {\n          // pdf output using jsPDF AutoTable plugin\n          // https://github.com/simonbengtsson/jsPDF-AutoTable\n\n          var teOptions = defaults.jspdf.autotable.tableExport;\n\n          // When setting jspdf.format to 'bestfit' tableExport tries to choose\n          // the minimum required paper format and orientation in which the table\n          // (or tables in multitable mode) completely fits without column adjustment\n          if ( typeof defaults.jspdf.format === 'string' && defaults.jspdf.format.toLowerCase() === 'bestfit' ) {\n            var pageFormats = {\n              'a0': [2383.94, 3370.39], 'a1': [1683.78, 2383.94],\n              'a2': [1190.55, 1683.78], 'a3': [841.89, 1190.55],\n              'a4': [595.28, 841.89]\n            };\n            var rk = '', ro = '';\n            var mw = 0;\n\n            $(el).filter(':visible').each(function () {\n              if ( $(this).css('display') != 'none' ) {\n                var w = getPropertyUnitValue($(this).get(0), 'width', 'pt');\n\n                if ( w > mw ) {\n                  if ( w > pageFormats.a0[0] ) {\n                    rk = 'a0';\n                    ro = 'l';\n                  }\n                  for ( var key in pageFormats ) {\n                    if ( pageFormats.hasOwnProperty(key) ) {\n                      if ( pageFormats[key][1] > w ) {\n                        rk = key;\n                        ro = 'l';\n                        if ( pageFormats[key][0] > w )\n                          ro = 'p';\n                      }\n                    }\n                  }\n                  mw = w;\n                }\n              }\n            });\n            defaults.jspdf.format      = (rk === '' ? 'a4' : rk);\n            defaults.jspdf.orientation = (ro === '' ? 'w' : ro);\n          }\n\n          // The jsPDF doc object is stored in defaults.jspdf.autotable.tableExport,\n          // thus it can be accessed from any callback function\n          if ( teOptions.doc == null ) {\n            teOptions.doc = new jsPDF(defaults.jspdf.orientation,\n              defaults.jspdf.unit,\n              defaults.jspdf.format);\n\n            if ( typeof defaults.jspdf.onDocCreated === 'function' )\n              defaults.jspdf.onDocCreated(teOptions.doc);\n          }\n\n          if ( teOptions.outputImages === true )\n            teOptions.images = {};\n\n          if ( typeof teOptions.images != 'undefined' ) {\n            $(el).filter(function () {\n              return $(this).data(\"tableexport-display\") != 'none' &&\n                ($(this).is(':visible') ||\n                $(this).data(\"tableexport-display\") == 'always');\n            }).each(function () {\n              var rowCount = 0;\n\n              $hrows = $(this).find('thead').find(defaults.theadSelector);\n              $(this).find('tbody').each(function () {\n                $rows.push.apply($rows, $(this).find(defaults.tbodySelector));\n              });\n              if ( defaults.tfootSelector.length )\n                $rows.push.apply($rows, $(this).find('tfoot').find(defaults.tfootSelector));\n\n              $($rows).each(function () {\n                ForEachVisibleCell(this, 'td,th', $hrows.length + rowCount, $hrows.length + $rows.length,\n                  function (cell) {\n                    if ( typeof cell !== 'undefined' && cell !== null ) {\n                      var kids = $(cell).children();\n                      if ( typeof kids != 'undefined' && kids.length > 0 )\n                        collectImages(cell, kids, teOptions);\n                    }\n                  });\n                rowCount++;\n              });\n            });\n\n            $hrows = [];\n            $rows  = [];\n          }\n\n          loadImages(teOptions, function () {\n            $(el).filter(function () {\n              return $(this).data(\"tableexport-display\") != 'none' &&\n                ($(this).is(':visible') ||\n                $(this).data(\"tableexport-display\") == 'always');\n            }).each(function () {\n              var colKey;\n              var rowIndex = 0;\n\n              colNames = GetColumnNames(this);\n\n              teOptions.columns    = [];\n              teOptions.rows       = [];\n              teOptions.rowoptions = {};\n\n              // onTable: optional callback function for every matching table that can be used\n              // to modify the tableExport options or to skip the output of a particular table\n              // if the table selector targets multiple tables\n              if ( typeof teOptions.onTable === 'function' )\n                if ( teOptions.onTable($(this), defaults) === false )\n                  return true; // continue to next iteration step (table)\n\n              // each table works with an own copy of AutoTable options\n              defaults.jspdf.autotable.tableExport = null;  // avoid deep recursion error\n              var atOptions                        = $.extend(true, {}, defaults.jspdf.autotable);\n              defaults.jspdf.autotable.tableExport = teOptions;\n\n              atOptions.margin = {};\n              $.extend(true, atOptions.margin, defaults.jspdf.margins);\n              atOptions.tableExport = teOptions;\n\n              // Fix jsPDF Autotable's row height calculation\n              if ( typeof atOptions.beforePageContent !== 'function' ) {\n                atOptions.beforePageContent = function (data) {\n                  if ( data.pageCount == 1 ) {\n                    var all = data.table.rows.concat(data.table.headerRow);\n                    all.forEach(function (row) {\n                      if ( row.height > 0 ) {\n                        row.height += (2 - FONT_ROW_RATIO) / 2 * row.styles.fontSize;\n                        data.table.height += (2 - FONT_ROW_RATIO) / 2 * row.styles.fontSize;\n                      }\n                    });\n                  }\n                };\n              }\n\n              if ( typeof atOptions.createdHeaderCell !== 'function' ) {\n                // apply some original css styles to pdf header cells\n                atOptions.createdHeaderCell = function (cell, data) {\n\n                  // jsPDF AutoTable plugin v2.0.14 fix: each cell needs its own styles object\n                  cell.styles = $.extend({}, data.row.styles);\n\n                  if ( typeof teOptions.columns [data.column.dataKey] != 'undefined' ) {\n                    var col = teOptions.columns [data.column.dataKey];\n\n                    if ( typeof col.rect != 'undefined' ) {\n                      var rh;\n\n                      cell.contentWidth = col.rect.width;\n\n                      if ( typeof teOptions.heightRatio == 'undefined' || teOptions.heightRatio === 0 ) {\n                        if ( data.row.raw [data.column.dataKey].rowspan )\n                          rh = data.row.raw [data.column.dataKey].rect.height / data.row.raw [data.column.dataKey].rowspan;\n                        else\n                          rh = data.row.raw [data.column.dataKey].rect.height;\n\n                        teOptions.heightRatio = cell.styles.rowHeight / rh;\n                      }\n\n                      rh = data.row.raw [data.column.dataKey].rect.height * teOptions.heightRatio;\n                      if ( rh > cell.styles.rowHeight )\n                        cell.styles.rowHeight = rh;\n                    }\n\n                    if ( typeof col.style != 'undefined' && col.style.hidden !== true ) {\n                      cell.styles.halign = col.style.align;\n                      if ( atOptions.styles.fillColor === 'inherit' )\n                        cell.styles.fillColor = col.style.bcolor;\n                      if ( atOptions.styles.textColor === 'inherit' )\n                        cell.styles.textColor = col.style.color;\n                      if ( atOptions.styles.fontStyle === 'inherit' )\n                        cell.styles.fontStyle = col.style.fstyle;\n                    }\n                  }\n                };\n              }\n\n              if ( typeof atOptions.createdCell !== 'function' ) {\n                // apply some original css styles to pdf table cells\n                atOptions.createdCell = function (cell, data) {\n                  var rowopt = teOptions.rowoptions [data.row.index + \":\" + data.column.dataKey];\n\n                  if ( typeof rowopt != 'undefined' &&\n                    typeof rowopt.style != 'undefined' &&\n                    rowopt.style.hidden !== true ) {\n                    cell.styles.halign = rowopt.style.align;\n                    if ( atOptions.styles.fillColor === 'inherit' )\n                      cell.styles.fillColor = rowopt.style.bcolor;\n                    if ( atOptions.styles.textColor === 'inherit' )\n                      cell.styles.textColor = rowopt.style.color;\n                    if ( atOptions.styles.fontStyle === 'inherit' )\n                      cell.styles.fontStyle = rowopt.style.fstyle;\n                  }\n                };\n              }\n\n              if ( typeof atOptions.drawHeaderCell !== 'function' ) {\n                atOptions.drawHeaderCell = function (cell, data) {\n                  var colopt = teOptions.columns [data.column.dataKey];\n\n                  if ( (colopt.style.hasOwnProperty(\"hidden\") !== true || colopt.style.hidden !== true) &&\n                    colopt.rowIndex >= 0 )\n                    return prepareAutoTableText(cell, data, colopt);\n                  else\n                    return false; // cell is hidden\n                };\n              }\n\n              if ( typeof atOptions.drawCell !== 'function' ) {\n                atOptions.drawCell = function (cell, data) {\n                  var rowopt = teOptions.rowoptions [data.row.index + \":\" + data.column.dataKey];\n                  if ( prepareAutoTableText(cell, data, rowopt) ) {\n\n                    teOptions.doc.rect(cell.x, cell.y, cell.width, cell.height, cell.styles.fillStyle);\n\n                    if ( typeof rowopt != 'undefined' && typeof rowopt.kids != 'undefined' && rowopt.kids.length > 0 ) {\n\n                      var dh = cell.height / rowopt.rect.height;\n                      if ( dh > teOptions.dh || typeof teOptions.dh == 'undefined' )\n                        teOptions.dh = dh;\n                      teOptions.dw = cell.width / rowopt.rect.width;\n\n                      var y = cell.textPos.y;\n                      drawAutotableElements(cell, rowopt.kids, teOptions);\n                      cell.textPos.y = y;\n                      drawAutotableText(cell, rowopt.kids, teOptions);\n                    }\n                    else\n                      drawAutotableText(cell, {}, teOptions);\n                  }\n                  return false;\n                };\n              }\n\n              // collect header and data rows\n              teOptions.headerrows = [];\n              $hrows               = $(this).find('thead').find(defaults.theadSelector);\n              $hrows.each(function () {\n                colKey = 0;\n\n                teOptions.headerrows[rowIndex] = [];\n\n                ForEachVisibleCell(this, 'th,td', rowIndex, $hrows.length,\n                  function (cell, row, col) {\n                    var obj      = getCellStyles(cell);\n                    obj.title    = parseString(cell, row, col);\n                    obj.key      = colKey++;\n                    obj.rowIndex = rowIndex;\n                    teOptions.headerrows[rowIndex].push(obj);\n                  });\n                rowIndex++;\n              });\n\n              if ( rowIndex > 0 ) {\n                // iterate through last row\n                var lastrow = rowIndex - 1;\n                while ( lastrow >= 0 ) {\n                  $.each(teOptions.headerrows[lastrow], function () {\n                    var obj = this;\n\n                    if ( lastrow > 0 && this.rect === null )\n                      obj = teOptions.headerrows[lastrow - 1][this.key];\n\n                    if ( obj !== null && obj.rowIndex >= 0 &&\n                      (obj.style.hasOwnProperty(\"hidden\") !== true || obj.style.hidden !== true) )\n                      teOptions.columns.push(obj);\n                  });\n\n                  lastrow = (teOptions.columns.length > 0) ? -1 : lastrow - 1;\n                }\n              }\n\n              var rowCount = 0;\n              $rows        = [];\n              $(this).find('tbody').each(function () {\n                $rows.push.apply($rows, $(this).find(defaults.tbodySelector));\n              });\n              if ( defaults.tfootSelector.length )\n                $rows.push.apply($rows, $(this).find('tfoot').find(defaults.tfootSelector));\n              $($rows).each(function () {\n                var rowData = [];\n                colKey      = 0;\n\n                ForEachVisibleCell(this, 'td,th', rowIndex, $hrows.length + $rows.length,\n                  function (cell, row, col) {\n                    var obj;\n\n                    if ( typeof teOptions.columns[colKey] === 'undefined' ) {\n                      // jsPDF-Autotable needs columns. Thus define hidden ones for tables without thead\n                      obj = {\n                        title: '',\n                        key:   colKey,\n                        style: {\n                          hidden: true\n                        }\n                      };\n                      teOptions.columns.push(obj);\n                    }\n                    if ( typeof cell !== 'undefined' && cell !== null ) {\n                      obj = getCellStyles(cell);\n                      obj.kids = $(cell).children();\n                      teOptions.rowoptions [rowCount + \":\" + colKey++] = obj;\n                    }\n                    else {\n                      obj = $.extend(true, {}, teOptions.rowoptions [rowCount + \":\" + (colKey - 1)]);\n                      obj.colspan = -1;\n                      teOptions.rowoptions [rowCount + \":\" + colKey++] = obj;\n                    }\n\n                    rowData.push(parseString(cell, row, col));\n                  });\n                if ( rowData.length ) {\n                  teOptions.rows.push(rowData);\n                  rowCount++;\n                }\n                rowIndex++;\n              });\n\n              // onBeforeAutotable: optional callback function before calling\n              // jsPDF AutoTable that can be used to modify the AutoTable options\n              if ( typeof teOptions.onBeforeAutotable === 'function' )\n                teOptions.onBeforeAutotable($(this), teOptions.columns, teOptions.rows, atOptions);\n\n              teOptions.doc.autoTable(teOptions.columns, teOptions.rows, atOptions);\n\n              // onAfterAutotable: optional callback function after returning\n              // from jsPDF AutoTable that can be used to modify the AutoTable options\n              if ( typeof teOptions.onAfterAutotable === 'function' )\n                teOptions.onAfterAutotable($(this), atOptions);\n\n              // set the start position for the next table (in case there is one)\n              defaults.jspdf.autotable.startY = teOptions.doc.autoTableEndPosY() + atOptions.margin.top;\n\n            });\n\n            jsPdfOutput(teOptions.doc, (typeof teOptions.images != 'undefined' && jQuery.isEmptyObject(teOptions.images) === false));\n\n            if ( typeof teOptions.headerrows != 'undefined' )\n              teOptions.headerrows.length = 0;\n            if ( typeof teOptions.columns != 'undefined' )\n              teOptions.columns.length = 0;\n            if ( typeof teOptions.rows != 'undefined' )\n              teOptions.rows.length = 0;\n            delete teOptions.doc;\n            teOptions.doc = null;\n          });\n        }\n      }\n\n      /*\n      function FindColObject (objects, colIndex, rowIndex) {\n        var result = null;\n        $.each(objects, function () {\n          if ( this.rowIndex == rowIndex && this.key == colIndex ) {\n            result = this;\n            return false;\n          }\n        });\n        return result;\n      }\n      */\n\n      function GetColumnNames (table) {\n        var result = [];\n        $(table).find('thead').first().find('th').each(function (index, el) {\n          if ( $(el).attr(\"data-field\") !== undefined )\n            result[index] = $(el).attr(\"data-field\");\n          else\n            result[index] = index.toString();\n        });\n        return result;\n      }\n\n      function isColumnIgnored (rowLength, colIndex) {\n        var result = false;\n        if ( defaults.ignoreColumn.length > 0 ) {\n          if ( $.inArray(colIndex, defaults.ignoreColumn) != -1 ||\n            $.inArray(colIndex - rowLength, defaults.ignoreColumn) != -1 ||\n            (colNames.length > colIndex && typeof colNames[colIndex] != 'undefined' &&\n            $.inArray(colNames[colIndex], defaults.ignoreColumn) != -1) )\n            result = true;\n        }\n        return result;\n      }\n\n      function ForEachVisibleCell (tableRow, selector, rowIndex, rowCount, cellcallback) {\n        if ( $.inArray(rowIndex, defaults.ignoreRow) == -1 &&\n          $.inArray(rowIndex - rowCount, defaults.ignoreRow) == -1 ) {\n\n          var $row = $(tableRow).filter(function () {\n            return $(this).data(\"tableexport-display\") != 'none' &&\n              ($(this).is(':visible') ||\n              $(this).data(\"tableexport-display\") == 'always' ||\n              $(this).closest('table').data(\"tableexport-display\") == 'always');\n          }).find(selector);\n\n          var rowColspan = 0;\n\n          $row.each(function (colIndex) {\n            if ( $(this).data(\"tableexport-display\") == 'always' ||\n              ($(this).css('display') != 'none' &&\n              $(this).css('visibility') != 'hidden' &&\n              $(this).data(\"tableexport-display\") != 'none') ) {\n              if ( typeof (cellcallback) === \"function\" ) {\n                var c, Colspan = 1;\n                var r, Rowspan = 1;\n                var rowLength  = $row.length;\n\n                // handle rowspans from previous rows\n                if ( typeof rowspans[rowIndex] != 'undefined' && rowspans[rowIndex].length > 0 ) {\n                  var colCount = colIndex;\n                  for ( c = 0; c <= colCount; c++ ) {\n                    if ( typeof rowspans[rowIndex][c] != 'undefined' ) {\n                      cellcallback(null, rowIndex, c);\n                      delete rowspans[rowIndex][c];\n                      colCount++;\n                    }\n                  }\n                  colIndex += rowspans[rowIndex].length;\n                  rowLength += rowspans[rowIndex].length;\n                }\n\n                if ( $(this).is(\"[colspan]\") ) {\n                  Colspan = parseInt($(this).attr('colspan')) || 1;\n\n                  rowColspan += Colspan > 0 ? Colspan - 1 : 0;\n                }\n\n                if ( $(this).is(\"[rowspan]\") )\n                  Rowspan = parseInt($(this).attr('rowspan')) || 1;\n\n                if ( isColumnIgnored(rowLength, colIndex + rowColspan) === false ) {\n                  // output content of current cell\n                  cellcallback(this, rowIndex, colIndex);\n\n                  // handle colspan of current cell\n                  for ( c = 1; c < Colspan; c++ )\n                    cellcallback(null, rowIndex, colIndex + c);\n                }\n\n                // store rowspan for following rows\n                if ( Rowspan > 1 ) {\n                  for ( r = 1; r < Rowspan; r++ ) {\n                    if ( typeof rowspans[rowIndex + r] == 'undefined' )\n                      rowspans[rowIndex + r] = [];\n\n                    rowspans[rowIndex + r][colIndex + rowColspan] = \"\";\n\n                    for ( c = 1; c < Colspan; c++ )\n                      rowspans[rowIndex + r][colIndex + rowColspan - c] = \"\";\n                  }\n                }\n              }\n            }\n          });\n          // handle rowspans from previous rows\n          if ( typeof rowspans[rowIndex] != 'undefined' && rowspans[rowIndex].length > 0 ) {\n            for ( var c = 0; c <= rowspans[rowIndex].length; c++ ) {\n              if ( typeof rowspans[rowIndex][c] != 'undefined' ) {\n                cellcallback(null, rowIndex, c);\n                delete rowspans[rowIndex][c];\n              }\n            }\n          }\n        }\n      }\n\n      function jsPdfOutput (doc, hasimages) {\n        if ( defaults.consoleLog === true )\n          console.log(doc.output());\n\n        if ( defaults.outputMode === 'string' )\n          return doc.output();\n\n        if ( defaults.outputMode === 'base64' )\n          return base64encode(doc.output());\n\n        if ( defaults.outputMode === 'window' ) {\n          window.open(URL.createObjectURL(doc.output(\"blob\")));\n          return;\n        }\n\n        try {\n          var blob = doc.output('blob');\n          saveAs(blob, defaults.fileName + '.pdf');\n        }\n        catch (e) {\n          downloadFile(defaults.fileName + '.pdf',\n            'data:application/pdf' + (hasimages ? '' : ';base64') + ',',\n            hasimages ? doc.output('blob') : doc.output());\n        }\n      }\n\n      function prepareAutoTableText (cell, data, cellopt) {\n        var cs = 0;\n        if ( typeof cellopt != 'undefined' )\n          cs = cellopt.colspan;\n\n        if ( cs >= 0 ) {\n          // colspan handling\n          var cellWidth = cell.width;\n          var textPosX  = cell.textPos.x;\n          var i         = data.table.columns.indexOf(data.column);\n\n          for ( var c = 1; c < cs; c++ ) {\n            var column = data.table.columns[i + c];\n            cellWidth += column.width;\n          }\n\n          if ( cs > 1 ) {\n            if ( cell.styles.halign === 'right' )\n              textPosX = cell.textPos.x + cellWidth - cell.width;\n            else if ( cell.styles.halign === 'center' )\n              textPosX = cell.textPos.x + (cellWidth - cell.width) / 2;\n          }\n\n          cell.width     = cellWidth;\n          cell.textPos.x = textPosX;\n\n          if ( typeof cellopt != 'undefined' && cellopt.rowspan > 1 )\n            cell.height = cell.height * cellopt.rowspan;\n\n          // fix jsPDF's calculation of text position\n          if ( cell.styles.valign === 'middle' || cell.styles.valign === 'bottom' ) {\n            var splittedText = typeof cell.text === 'string' ? cell.text.split(/\\r\\n|\\r|\\n/g) : cell.text;\n            var lineCount    = splittedText.length || 1;\n            if ( lineCount > 2 )\n              cell.textPos.y -= ((2 - FONT_ROW_RATIO) / 2 * data.row.styles.fontSize) * (lineCount - 2) / 3;\n          }\n          return true;\n        }\n        else\n          return false; // cell is hidden (colspan = -1), don't draw it\n      }\n\n      function collectImages (cell, elements, teOptions) {\n        if ( typeof teOptions.images != 'undefined' ) {\n          elements.each(function () {\n            var kids = $(this).children();\n\n            if ( $(this).is(\"img\") ) {\n              var hash = strHashCode(this.src);\n\n              teOptions.images[hash] = {\n                url: this.src,\n                src: this.src\n              };\n            }\n\n            if ( typeof kids != 'undefined' && kids.length > 0 )\n              collectImages(cell, kids, teOptions);\n          });\n        }\n      }\n\n      function loadImages (teOptions, callback) {\n        var i;\n        var imageCount = 0;\n        var x          = 0;\n\n        function done () {\n          callback(imageCount);\n        }\n\n        function loadImage (image) {\n          if ( !image.url )\n            return;\n          var img         = new Image();\n          imageCount      = ++x;\n          img.crossOrigin = 'Anonymous';\n          img.onerror     = img.onload = function () {\n            if ( img.complete ) {\n\n              if ( img.src.indexOf('data:image/') === 0 ) {\n                img.width  = image.width || img.width || 0;\n                img.height = image.height || img.height || 0;\n              }\n\n              if ( img.width + img.height ) {\n                var canvas = document.createElement(\"canvas\");\n                var ctx    = canvas.getContext(\"2d\");\n\n                canvas.width  = img.width;\n                canvas.height = img.height;\n                ctx.drawImage(img, 0, 0);\n\n                image.src = canvas.toDataURL(\"image/jpeg\");\n              }\n            }\n            if ( !--x )\n              done();\n          };\n          img.src = image.url;\n        }\n\n        if ( typeof teOptions.images != 'undefined' ) {\n          for ( i in teOptions.images )\n            if ( teOptions.images.hasOwnProperty(i) )\n              loadImage(teOptions.images[i]);\n        }\n\n        return x || done();\n      }\n\n      function drawAutotableElements (cell, elements, teOptions) {\n        elements.each(function () {\n          var kids = $(this).children();\n          var uy   = 0;\n\n          if ( $(this).is(\"div\") ) {\n            var bcolor = rgb2array(getStyle(this, 'background-color'), [255, 255, 255]);\n            var lcolor = rgb2array(getStyle(this, 'border-top-color'), [0, 0, 0]);\n            var lwidth = getPropertyUnitValue(this, 'border-top-width', defaults.jspdf.unit);\n\n            var r  = this.getBoundingClientRect();\n            var ux = this.offsetLeft * teOptions.dw;\n                uy = this.offsetTop * teOptions.dh;\n            var uw = r.width * teOptions.dw;\n            var uh = r.height * teOptions.dh;\n\n            teOptions.doc.setDrawColor.apply(undefined, lcolor);\n            teOptions.doc.setFillColor.apply(undefined, bcolor);\n            teOptions.doc.setLineWidth(lwidth);\n            teOptions.doc.rect(cell.x + ux, cell.y + uy, uw, uh, lwidth ? \"FD\" : \"F\");\n          }\n          else if ( $(this).is(\"img\") ) {\n            if ( typeof teOptions.images != 'undefined' ) {\n              var hash  = strHashCode(this.src);\n              var image = teOptions.images[hash];\n\n              if ( typeof image != 'undefined' ) {\n\n                var arCell    = cell.width / cell.height;\n                var arImg     = this.width / this.height;\n                var imgWidth  = cell.width;\n                var imgHeight = cell.height;\n                var px2pt     = 0.264583 * 72 / 25.4;\n\n                if ( arImg <= arCell ) {\n                  imgHeight = Math.min(cell.height, this.height);\n                  imgWidth  = this.width * imgHeight / this.height;\n                }\n                else if ( arImg > arCell ) {\n                  imgWidth  = Math.min(cell.width, this.width);\n                  imgHeight = this.height * imgWidth / this.width;\n                }\n\n                imgWidth *= px2pt;\n                imgHeight *= px2pt;\n\n                if ( imgHeight < cell.height )\n                  uy = (cell.height - imgHeight) / 2;\n\n                try {\n                  teOptions.doc.addImage(image.src, cell.textPos.x, cell.y + uy, imgWidth, imgHeight);\n                }\n                catch (e) {\n                  // TODO: IE -> convert png to jpeg\n                }\n                cell.textPos.x += imgWidth;\n              }\n            }\n          }\n\n          if ( typeof kids != 'undefined' && kids.length > 0 )\n            drawAutotableElements(cell, kids, teOptions);\n        });\n      }\n\n      function drawAutotableText (cell, texttags, teOptions) {\n        if ( typeof teOptions.onAutotableText === 'function' ) {\n          teOptions.onAutotableText(teOptions.doc, cell, texttags);\n        }\n        else {\n          var x     = cell.textPos.x;\n          var y     = cell.textPos.y;\n          var style = {halign: cell.styles.halign, valign: cell.styles.valign};\n\n          if ( texttags.length ) {\n            var tag = texttags[0];\n            while ( tag.previousSibling )\n              tag = tag.previousSibling;\n\n            var b = false, i = false;\n\n            while ( tag ) {\n              var txt = tag.innerText || tag.textContent || \"\";\n\n              txt = ((txt.length && txt[0] == \" \") ? \" \" : \"\") +\n                $.trim(txt) +\n                ((txt.length > 1 && txt[txt.length - 1] == \" \") ? \" \" : \"\");\n\n              if ( $(tag).is(\"br\") ) {\n                x = cell.textPos.x;\n                y += teOptions.doc.internal.getFontSize();\n              }\n\n              if ( $(tag).is(\"b\") )\n                b = true;\n              else if ( $(tag).is(\"i\") )\n                i = true;\n\n              if ( b || i )\n                teOptions.doc.setFontType((b && i) ? \"bolditalic\" : b ? \"bold\" : \"italic\");\n\n              var w = teOptions.doc.getStringUnitWidth(txt) * teOptions.doc.internal.getFontSize();\n\n              if ( w ) {\n                if ( cell.styles.overflow === 'linebreak' &&\n                  x > cell.textPos.x && (x + w) > (cell.textPos.x + cell.width) ) {\n                  var chars = \".,!%*;:=-\";\n                  if ( chars.indexOf(txt.charAt(0)) >= 0 ) {\n                    var s = txt.charAt(0);\n                    w     = teOptions.doc.getStringUnitWidth(s) * teOptions.doc.internal.getFontSize();\n                    if ( (x + w) <= (cell.textPos.x + cell.width) ) {\n                      teOptions.doc.autoTableText(s, x, y, style);\n                      txt = txt.substring(1, txt.length);\n                    }\n                    w = teOptions.doc.getStringUnitWidth(txt) * teOptions.doc.internal.getFontSize();\n                  }\n                  x = cell.textPos.x;\n                  y += teOptions.doc.internal.getFontSize();\n                }\n\n                while ( txt.length && (x + w) > (cell.textPos.x + cell.width) ) {\n                  txt = txt.substring(0, txt.length - 1);\n                  w   = teOptions.doc.getStringUnitWidth(txt) * teOptions.doc.internal.getFontSize();\n                }\n\n                teOptions.doc.autoTableText(txt, x, y, style);\n                x += w;\n              }\n\n              if ( b || i ) {\n                if ( $(tag).is(\"b\") )\n                  b = false;\n                else if ( $(tag).is(\"i\") )\n                  i = false;\n\n                teOptions.doc.setFontType((!b && !i) ? \"normal\" : b ? \"bold\" : \"italic\");\n              }\n\n              tag = tag.nextSibling;\n            }\n            cell.textPos.x = x;\n            cell.textPos.y = y;\n          }\n          else {\n            teOptions.doc.autoTableText(cell.text, cell.textPos.x, cell.textPos.y, style);\n          }\n        }\n      }\n\n      function escapeRegExp (string) {\n        return string.replace(/([.*+?^=!:${}()|\\[\\]\\/\\\\])/g, \"\\\\$1\");\n      }\n\n      function replaceAll (string, find, replace) {\n        return string.replace(new RegExp(escapeRegExp(find), 'g'), replace);\n      }\n\n      function parseNumber (value) {\n        value = value || \"0\";\n        value = replaceAll(value, defaults.numbers.html.thousandsSeparator, '');\n        value = replaceAll(value, defaults.numbers.html.decimalMark, '.');\n\n        return typeof value === \"number\" || jQuery.isNumeric(value) !== false ? value : false;\n      }\n\n      function parsePercent (value) {\n        if ( value.indexOf(\"%\") > -1 ) {\n          value = parseNumber(value.replace(/%/g, \"\"));\n          if ( value !== false )\n            value = value / 100;\n        }\n        else\n          value = false;\n        return value;\n      }\n\n      function parseString (cell, rowIndex, colIndex) {\n        var result = '';\n\n        if ( cell !== null ) {\n          var $cell = $(cell);\n          var htmlData;\n\n          if ( $cell[0].hasAttribute(\"data-tableexport-value\") ) {\n            htmlData = $cell.data(\"tableexport-value\");\n            htmlData = htmlData ? htmlData + '' : ''\n          }\n          else {\n            htmlData = $cell.html();\n\n            if ( typeof defaults.onCellHtmlData === 'function' )\n              htmlData = defaults.onCellHtmlData($cell, rowIndex, colIndex, htmlData);\n            else if ( htmlData != '' ) {\n              var html      = $.parseHTML(htmlData);\n              var inputidx  = 0;\n              var selectidx = 0;\n\n              htmlData = '';\n              $.each(html, function () {\n                if ( $(this).is(\"input\") )\n                  htmlData += $cell.find('input').eq(inputidx++).val();\n                else if ( $(this).is(\"select\") )\n                  htmlData += $cell.find('select option:selected').eq(selectidx++).text();\n                else {\n                  if ( typeof $(this).html() === 'undefined' )\n                    htmlData += $(this).text();\n                  else if ( jQuery().bootstrapTable === undefined || $(this).hasClass('filterControl') !== true )\n                    htmlData += $(this).html();\n                }\n              });\n            }\n          }\n\n          if ( defaults.htmlContent === true ) {\n            result = $.trim(htmlData);\n          }\n          else if ( htmlData && htmlData != '' ) {\n            var text   = htmlData.replace(/\\n/g, '\\u2028').replace(/<br\\s*[\\/]?>/gi, '\\u2060');\n            var obj    = $('<div/>').html(text).contents();\n            var number = false;\n            text       = '';\n            $.each(obj.text().split(\"\\u2028\"), function (i, v) {\n              if ( i > 0 )\n                text += \" \";\n              text += $.trim(v);\n            });\n\n            $.each(text.split(\"\\u2060\"), function (i, v) {\n              if ( i > 0 )\n                result += \"\\n\";\n              result += $.trim(v).replace(/\\u00AD/g, \"\"); // remove soft hyphens\n            });\n\n            if ( defaults.type == 'json' ||\n              (defaults.type === 'excel' && defaults.excelFileFormat === 'xmlss') ||\n              defaults.numbers.output === false ) {\n              number = parseNumber(result);\n\n              if ( number !== false )\n                result = Number(number);\n            }\n            else if ( defaults.numbers.html.decimalMark != defaults.numbers.output.decimalMark ||\n              defaults.numbers.html.thousandsSeparator != defaults.numbers.output.thousandsSeparator ) {\n              number = parseNumber(result);\n\n              if ( number !== false ) {\n                var frac = (\"\" + number.substr(number < 0 ? 1 : 0)).split('.');\n                if ( frac.length == 1 )\n                  frac[1] = \"\";\n                var mod = frac[0].length > 3 ? frac[0].length % 3 : 0;\n\n                result = (number < 0 ? \"-\" : \"\") +\n                  (defaults.numbers.output.thousandsSeparator ? ((mod ? frac[0].substr(0, mod) + defaults.numbers.output.thousandsSeparator : \"\") + frac[0].substr(mod).replace(/(\\d{3})(?=\\d)/g, \"$1\" + defaults.numbers.output.thousandsSeparator)) : frac[0]) +\n                  (frac[1].length ? defaults.numbers.output.decimalMark + frac[1] : \"\");\n              }\n            }\n          }\n\n          if ( defaults.escape === true ) {\n            //noinspection JSDeprecatedSymbols\n            result = escape(result);\n          }\n\n          if ( typeof defaults.onCellData === 'function' ) {\n            result = defaults.onCellData($cell, rowIndex, colIndex, result);\n          }\n        }\n\n        return result;\n      }\n\n      //noinspection JSUnusedLocalSymbols\n      function hyphenate (a, b, c) {\n        return b + \"-\" + c.toLowerCase();\n      }\n\n      function rgb2array (rgb_string, default_result) {\n        var re     = /^rgb\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/;\n        var bits   = re.exec(rgb_string);\n        var result = default_result;\n        if ( bits )\n          result = [parseInt(bits[1]), parseInt(bits[2]), parseInt(bits[3])];\n        return result;\n      }\n\n      function getCellStyles (cell) {\n        var a  = getStyle(cell, 'text-align');\n        var fw = getStyle(cell, 'font-weight');\n        var fs = getStyle(cell, 'font-style');\n        var f  = '';\n        if ( a == 'start' )\n          a = getStyle(cell, 'direction') == 'rtl' ? 'right' : 'left';\n        if ( fw >= 700 )\n          f = 'bold';\n        if ( fs == 'italic' )\n          f += fs;\n        if ( f === '' )\n          f = 'normal';\n\n        var result = {\n          style:   {\n            align:  a,\n            bcolor: rgb2array(getStyle(cell, 'background-color'), [255, 255, 255]),\n            color:  rgb2array(getStyle(cell, 'color'), [0, 0, 0]),\n            fstyle: f\n          },\n          colspan: (parseInt($(cell).attr('colspan')) || 0),\n          rowspan: (parseInt($(cell).attr('rowspan')) || 0)\n        };\n\n        if ( cell !== null ) {\n          var r       = cell.getBoundingClientRect();\n          result.rect = {\n            width:  r.width,\n            height: r.height\n          };\n        }\n\n        return result;\n      }\n\n      // get computed style property\n      function getStyle (target, prop) {\n        try {\n          if ( window.getComputedStyle ) { // gecko and webkit\n            prop = prop.replace(/([a-z])([A-Z])/, hyphenate);  // requires hyphenated, not camel\n            return window.getComputedStyle(target, null).getPropertyValue(prop);\n          }\n          if ( target.currentStyle ) { // ie\n            return target.currentStyle[prop];\n          }\n          return target.style[prop];\n        }\n        catch (e) {\n        }\n        return \"\";\n      }\n\n      function getUnitValue (parent, value, unit) {\n        var baseline = 100;  // any number serves\n\n        var temp              = document.createElement(\"div\");  // create temporary element\n        temp.style.overflow   = \"hidden\";  // in case baseline is set too low\n        temp.style.visibility = \"hidden\";  // no need to show it\n\n        parent.appendChild(temp); // insert it into the parent for em, ex and %\n\n        temp.style.width = baseline + unit;\n        var factor       = baseline / temp.offsetWidth;\n\n        parent.removeChild(temp);  // clean up\n\n        return (value * factor);\n      }\n\n      function getPropertyUnitValue (target, prop, unit) {\n        var value = getStyle(target, prop);  // get the computed style value\n\n        var numeric = value.match(/\\d+/);  // get the numeric component\n        if ( numeric !== null ) {\n          numeric = numeric[0];  // get the string\n\n          return getUnitValue(target.parentElement, numeric, unit);\n        }\n        return 0;\n      }\n\n      function jx_Workbook () {\n        if ( !(this instanceof jx_Workbook) ) {\n          //noinspection JSPotentiallyInvalidConstructorUsage\n          return new jx_Workbook();\n        }\n        this.SheetNames = [];\n        this.Sheets     = {};\n      }\n\n      function jx_s2ab (s) {\n        var buf  = new ArrayBuffer(s.length);\n        var view = new Uint8Array(buf);\n        for ( var i = 0; i != s.length; ++i ) view[i] = s.charCodeAt(i) & 0xFF;\n        return buf;\n      }\n\n      function jx_datenum (v, date1904) {\n        if ( date1904 ) v += 1462;\n        var epoch = Date.parse(v);\n        return (epoch - new Date(Date.UTC(1899, 11, 30))) / (24 * 60 * 60 * 1000);\n      }\n\n      function jx_createSheet (data) {\n        var ws    = {};\n        var range = {s: {c: 10000000, r: 10000000}, e: {c: 0, r: 0}};\n        for ( var R = 0; R != data.length; ++R ) {\n          for ( var C = 0; C != data[R].length; ++C ) {\n            if ( range.s.r > R ) range.s.r = R;\n            if ( range.s.c > C ) range.s.c = C;\n            if ( range.e.r < R ) range.e.r = R;\n            if ( range.e.c < C ) range.e.c = C;\n            var cell = {v: data[R][C]};\n            if ( cell.v === null ) continue;\n            var cell_ref = XLSX.utils.encode_cell({c: C, r: R});\n\n            if ( typeof cell.v === 'number' ) cell.t = 'n';\n            else if ( typeof cell.v === 'boolean' ) cell.t = 'b';\n            else if ( cell.v instanceof Date ) {\n              cell.t = 'n';\n              cell.z = XLSX.SSF._table[14];\n              cell.v = jx_datenum(cell.v);\n            }\n            else cell.t = 's';\n            ws[cell_ref] = cell;\n          }\n        }\n\n        if ( range.s.c < 10000000 ) ws['!ref'] = XLSX.utils.encode_range(range);\n        return ws;\n      }\n\n      function strHashCode (str) {\n        var hash = 0, i, chr, len;\n        if ( str.length === 0 ) return hash;\n        for ( i = 0, len = str.length; i < len; i++ ) {\n          chr  = str.charCodeAt(i);\n          hash = ((hash << 5) - hash) + chr;\n          hash |= 0; // Convert to 32bit integer\n        }\n        return hash;\n      }\n\n      function downloadFile (filename, header, data) {\n\n        var ua = window.navigator.userAgent;\n        if ( filename !== false && (ua.indexOf(\"MSIE \") > 0 || !!ua.match(/Trident.*rv\\:11\\./)) ) {\n          if ( window.navigator.msSaveOrOpenBlob ) {\n            //noinspection JSUnresolvedFunction\n            window.navigator.msSaveOrOpenBlob(new Blob([data]), filename);\n          }\n          else {\n            // Internet Explorer (<= 9) workaround by Darryl (https://github.com/dawiong/tableExport.jquery.plugin)\n            // based on sampopes answer on http://stackoverflow.com/questions/22317951\n            // ! Not working for json and pdf format !\n            var frame = document.createElement(\"iframe\");\n\n            if ( frame ) {\n              document.body.appendChild(frame);\n              frame.setAttribute(\"style\", \"display:none\");\n              frame.contentDocument.open(\"txt/html\", \"replace\");\n              frame.contentDocument.write(data);\n              frame.contentDocument.close();\n              frame.focus();\n\n              frame.contentDocument.execCommand(\"SaveAs\", true, filename);\n              document.body.removeChild(frame);\n            }\n          }\n        }\n        else {\n          var DownloadLink = document.createElement('a');\n\n          if ( DownloadLink ) {\n            var blobUrl = null;\n\n            DownloadLink.style.display = 'none';\n            if ( filename !== false )\n              DownloadLink.download = filename;\n            else\n              DownloadLink.target = '_blank';\n\n            if ( typeof data == 'object' ) {\n              blobUrl           = window.URL.createObjectURL(data);\n              DownloadLink.href = blobUrl;\n            }\n            else if ( header.toLowerCase().indexOf(\"base64,\") >= 0 )\n              DownloadLink.href = header + base64encode(data);\n            else\n              DownloadLink.href = header + encodeURIComponent(data);\n\n            document.body.appendChild(DownloadLink);\n\n            if ( document.createEvent ) {\n              if ( DownloadEvt === null )\n                DownloadEvt = document.createEvent('MouseEvents');\n\n              DownloadEvt.initEvent('click', true, false);\n              DownloadLink.dispatchEvent(DownloadEvt);\n            }\n            else if ( document.createEventObject )\n              DownloadLink.fireEvent('onclick');\n            else if ( typeof DownloadLink.onclick == 'function' )\n              DownloadLink.onclick();\n\n            if ( blobUrl )\n              window.URL.revokeObjectURL(blobUrl);\n\n            document.body.removeChild(DownloadLink);\n          }\n        }\n      }\n\n      function utf8Encode (string) {\n        string      = string.replace(/\\x0d\\x0a/g, \"\\x0a\");\n        var utftext = \"\";\n        for ( var n = 0; n < string.length; n++ ) {\n          var c = string.charCodeAt(n);\n          if ( c < 128 ) {\n            utftext += String.fromCharCode(c);\n          }\n          else if ( (c > 127) && (c < 2048) ) {\n            utftext += String.fromCharCode((c >> 6) | 192);\n            utftext += String.fromCharCode((c & 63) | 128);\n          }\n          else {\n            utftext += String.fromCharCode((c >> 12) | 224);\n            utftext += String.fromCharCode(((c >> 6) & 63) | 128);\n            utftext += String.fromCharCode((c & 63) | 128);\n          }\n        }\n        return utftext;\n      }\n\n      function base64encode (input) {\n        var chr1, chr2, chr3, enc1, enc2, enc3, enc4;\n        var keyStr = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n        var output = \"\";\n        var i      = 0;\n        input      = utf8Encode(input);\n        while ( i < input.length ) {\n          chr1 = input.charCodeAt(i++);\n          chr2 = input.charCodeAt(i++);\n          chr3 = input.charCodeAt(i++);\n          enc1 = chr1 >> 2;\n          enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n          enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);\n          enc4 = chr3 & 63;\n          if ( isNaN(chr2) ) {\n            enc3 = enc4 = 64;\n          } else if ( isNaN(chr3) ) {\n            enc4 = 64;\n          }\n          output = output +\n            keyStr.charAt(enc1) + keyStr.charAt(enc2) +\n            keyStr.charAt(enc3) + keyStr.charAt(enc4);\n        }\n        return output;\n      }\n\n      return this;\n    }\n  });\n})(jQuery);"
  },
  {
    "path": "public/admin/js/datapicker/bootstrap-datepicker.js",
    "content": "/* =========================================================\n * bootstrap-datepicker.js\n * Repo: https://github.com/eternicode/bootstrap-datepicker/\n * Demo: http://eternicode.github.io/bootstrap-datepicker/\n * Docs: http://bootstrap-datepicker.readthedocs.org/\n * Forked from http://www.eyecon.ro/bootstrap-datepicker\n * =========================================================\n * Started by Stefan Petre; improvements by Andrew Rowls + contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ========================================================= */\n\n(function($, undefined){\n\n\tvar $window = $(window);\n\n\tfunction UTCDate(){\n\t\treturn new Date(Date.UTC.apply(Date, arguments));\n\t}\n\tfunction UTCToday(){\n\t\tvar today = new Date();\n\t\treturn UTCDate(today.getFullYear(), today.getMonth(), today.getDate());\n\t}\n\tfunction alias(method){\n\t\treturn function(){\n\t\t\treturn this[method].apply(this, arguments);\n\t\t};\n\t}\n\n\tvar DateArray = (function(){\n\t\tvar extras = {\n\t\t\tget: function(i){\n\t\t\t\treturn this.slice(i)[0];\n\t\t\t},\n\t\t\tcontains: function(d){\n\t\t\t\t// Array.indexOf is not cross-browser;\n\t\t\t\t// $.inArray doesn't work with Dates\n\t\t\t\tvar val = d && d.valueOf();\n\t\t\t\tfor (var i=0, l=this.length; i < l; i++)\n\t\t\t\t\tif (this[i].valueOf() === val)\n\t\t\t\t\t\treturn i;\n\t\t\t\treturn -1;\n\t\t\t},\n\t\t\tremove: function(i){\n\t\t\t\tthis.splice(i,1);\n\t\t\t},\n\t\t\treplace: function(new_array){\n\t\t\t\tif (!new_array)\n\t\t\t\t\treturn;\n\t\t\t\tif (!$.isArray(new_array))\n\t\t\t\t\tnew_array = [new_array];\n\t\t\t\tthis.clear();\n\t\t\t\tthis.push.apply(this, new_array);\n\t\t\t},\n\t\t\tclear: function(){\n\t\t\t\tthis.splice(0);\n\t\t\t},\n\t\t\tcopy: function(){\n\t\t\t\tvar a = new DateArray();\n\t\t\t\ta.replace(this);\n\t\t\t\treturn a;\n\t\t\t}\n\t\t};\n\n\t\treturn function(){\n\t\t\tvar a = [];\n\t\t\ta.push.apply(a, arguments);\n\t\t\t$.extend(a, extras);\n\t\t\treturn a;\n\t\t};\n\t})();\n\n\n\t// Picker object\n\n\tvar Datepicker = function(element, options){\n\t\tthis.dates = new DateArray();\n\t\tthis.viewDate = UTCToday();\n\t\tthis.focusDate = null;\n\n\t\tthis._process_options(options);\n\n\t\tthis.element = $(element);\n\t\tthis.isInline = false;\n\t\tthis.isInput = this.element.is('input');\n\t\tthis.component = this.element.is('.date') ? this.element.find('.add-on, .input-group-addon, .btn') : false;\n\t\tthis.hasInput = this.component && this.element.find('input').length;\n\t\tif (this.component && this.component.length === 0)\n\t\t\tthis.component = false;\n\n\t\tthis.picker = $(DPGlobal.template);\n\t\tthis._buildEvents();\n\t\tthis._attachEvents();\n\n\t\tif (this.isInline){\n\t\t\tthis.picker.addClass('datepicker-inline').appendTo(this.element);\n\t\t}\n\t\telse {\n\t\t\tthis.picker.addClass('datepicker-dropdown dropdown-menu');\n\t\t}\n\n\t\tif (this.o.rtl){\n\t\t\tthis.picker.addClass('datepicker-rtl');\n\t\t}\n\n\t\tthis.viewMode = this.o.startView;\n\n\t\tif (this.o.calendarWeeks)\n\t\t\tthis.picker.find('tfoot th.today')\n\t\t\t\t\t\t.attr('colspan', function(i, val){\n\t\t\t\t\t\t\treturn parseInt(val) + 1;\n\t\t\t\t\t\t});\n\n\t\tthis._allow_update = false;\n\n\t\tthis.setStartDate(this._o.startDate);\n\t\tthis.setEndDate(this._o.endDate);\n\t\tthis.setDaysOfWeekDisabled(this.o.daysOfWeekDisabled);\n\n\t\tthis.fillDow();\n\t\tthis.fillMonths();\n\n\t\tthis._allow_update = true;\n\n\t\tthis.update();\n\t\tthis.showMode();\n\n\t\tif (this.isInline){\n\t\t\tthis.show();\n\t\t}\n\t};\n\n\tDatepicker.prototype = {\n\t\tconstructor: Datepicker,\n\n\t\t_process_options: function(opts){\n\t\t\t// Store raw options for reference\n\t\t\tthis._o = $.extend({}, this._o, opts);\n\t\t\t// Processed options\n\t\t\tvar o = this.o = $.extend({}, this._o);\n\n\t\t\t// Check if \"de-DE\" style date is available, if not language should\n\t\t\t// fallback to 2 letter code eg \"de\"\n\t\t\tvar lang = o.language;\n\t\t\tif (!dates[lang]){\n\t\t\t\tlang = lang.split('-')[0];\n\t\t\t\tif (!dates[lang])\n\t\t\t\t\tlang = defaults.language;\n\t\t\t}\n\t\t\to.language = lang;\n\n\t\t\tswitch (o.startView){\n\t\t\t\tcase 2:\n\t\t\t\tcase 'decade':\n\t\t\t\t\to.startView = 2;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 1:\n\t\t\t\tcase 'year':\n\t\t\t\t\to.startView = 1;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\to.startView = 0;\n\t\t\t}\n\n\t\t\tswitch (o.minViewMode){\n\t\t\t\tcase 1:\n\t\t\t\tcase 'months':\n\t\t\t\t\to.minViewMode = 1;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\tcase 'years':\n\t\t\t\t\to.minViewMode = 2;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\to.minViewMode = 0;\n\t\t\t}\n\n\t\t\to.startView = Math.max(o.startView, o.minViewMode);\n\n\t\t\t// true, false, or Number > 0\n\t\t\tif (o.multidate !== true){\n\t\t\t\to.multidate = Number(o.multidate) || false;\n\t\t\t\tif (o.multidate !== false)\n\t\t\t\t\to.multidate = Math.max(0, o.multidate);\n\t\t\t\telse\n\t\t\t\t\to.multidate = 1;\n\t\t\t}\n\t\t\to.multidateSeparator = String(o.multidateSeparator);\n\n\t\t\to.weekStart %= 7;\n\t\t\to.weekEnd = ((o.weekStart + 6) % 7);\n\n\t\t\tvar format = DPGlobal.parseFormat(o.format);\n\t\t\tif (o.startDate !== -Infinity){\n\t\t\t\tif (!!o.startDate){\n\t\t\t\t\tif (o.startDate instanceof Date)\n\t\t\t\t\t\to.startDate = this._local_to_utc(this._zero_time(o.startDate));\n\t\t\t\t\telse\n\t\t\t\t\t\to.startDate = DPGlobal.parseDate(o.startDate, format, o.language);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\to.startDate = -Infinity;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (o.endDate !== Infinity){\n\t\t\t\tif (!!o.endDate){\n\t\t\t\t\tif (o.endDate instanceof Date)\n\t\t\t\t\t\to.endDate = this._local_to_utc(this._zero_time(o.endDate));\n\t\t\t\t\telse\n\t\t\t\t\t\to.endDate = DPGlobal.parseDate(o.endDate, format, o.language);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\to.endDate = Infinity;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\to.daysOfWeekDisabled = o.daysOfWeekDisabled||[];\n\t\t\tif (!$.isArray(o.daysOfWeekDisabled))\n\t\t\t\to.daysOfWeekDisabled = o.daysOfWeekDisabled.split(/[,\\s]*/);\n\t\t\to.daysOfWeekDisabled = $.map(o.daysOfWeekDisabled, function(d){\n\t\t\t\treturn parseInt(d, 10);\n\t\t\t});\n\n\t\t\tvar plc = String(o.orientation).toLowerCase().split(/\\s+/g),\n\t\t\t\t_plc = o.orientation.toLowerCase();\n\t\t\tplc = $.grep(plc, function(word){\n\t\t\t\treturn (/^auto|left|right|top|bottom$/).test(word);\n\t\t\t});\n\t\t\to.orientation = {x: 'auto', y: 'auto'};\n\t\t\tif (!_plc || _plc === 'auto')\n\t\t\t\t; // no action\n\t\t\telse if (plc.length === 1){\n\t\t\t\tswitch (plc[0]){\n\t\t\t\t\tcase 'top':\n\t\t\t\t\tcase 'bottom':\n\t\t\t\t\t\to.orientation.y = plc[0];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'left':\n\t\t\t\t\tcase 'right':\n\t\t\t\t\t\to.orientation.x = plc[0];\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\t_plc = $.grep(plc, function(word){\n\t\t\t\t\treturn (/^left|right$/).test(word);\n\t\t\t\t});\n\t\t\t\to.orientation.x = _plc[0] || 'auto';\n\n\t\t\t\t_plc = $.grep(plc, function(word){\n\t\t\t\t\treturn (/^top|bottom$/).test(word);\n\t\t\t\t});\n\t\t\t\to.orientation.y = _plc[0] || 'auto';\n\t\t\t}\n\t\t},\n\t\t_events: [],\n\t\t_secondaryEvents: [],\n\t\t_applyEvents: function(evs){\n\t\t\tfor (var i=0, el, ch, ev; i < evs.length; i++){\n\t\t\t\tel = evs[i][0];\n\t\t\t\tif (evs[i].length === 2){\n\t\t\t\t\tch = undefined;\n\t\t\t\t\tev = evs[i][1];\n\t\t\t\t}\n\t\t\t\telse if (evs[i].length === 3){\n\t\t\t\t\tch = evs[i][1];\n\t\t\t\t\tev = evs[i][2];\n\t\t\t\t}\n\t\t\t\tel.on(ev, ch);\n\t\t\t}\n\t\t},\n\t\t_unapplyEvents: function(evs){\n\t\t\tfor (var i=0, el, ev, ch; i < evs.length; i++){\n\t\t\t\tel = evs[i][0];\n\t\t\t\tif (evs[i].length === 2){\n\t\t\t\t\tch = undefined;\n\t\t\t\t\tev = evs[i][1];\n\t\t\t\t}\n\t\t\t\telse if (evs[i].length === 3){\n\t\t\t\t\tch = evs[i][1];\n\t\t\t\t\tev = evs[i][2];\n\t\t\t\t}\n\t\t\t\tel.off(ev, ch);\n\t\t\t}\n\t\t},\n\t\t_buildEvents: function(){\n\t\t\tif (this.isInput){ // single input\n\t\t\t\tthis._events = [\n\t\t\t\t\t[this.element, {\n\t\t\t\t\t\tfocus: $.proxy(this.show, this),\n\t\t\t\t\t\tkeyup: $.proxy(function(e){\n\t\t\t\t\t\t\tif ($.inArray(e.keyCode, [27,37,39,38,40,32,13,9]) === -1)\n\t\t\t\t\t\t\t\tthis.update();\n\t\t\t\t\t\t}, this),\n\t\t\t\t\t\tkeydown: $.proxy(this.keydown, this)\n\t\t\t\t\t}]\n\t\t\t\t];\n\t\t\t}\n\t\t\telse if (this.component && this.hasInput){ // component: input + button\n\t\t\t\tthis._events = [\n\t\t\t\t\t// For components that are not readonly, allow keyboard nav\n\t\t\t\t\t[this.element.find('input'), {\n\t\t\t\t\t\tfocus: $.proxy(this.show, this),\n\t\t\t\t\t\tkeyup: $.proxy(function(e){\n\t\t\t\t\t\t\tif ($.inArray(e.keyCode, [27,37,39,38,40,32,13,9]) === -1)\n\t\t\t\t\t\t\t\tthis.update();\n\t\t\t\t\t\t}, this),\n\t\t\t\t\t\tkeydown: $.proxy(this.keydown, this)\n\t\t\t\t\t}],\n\t\t\t\t\t[this.component, {\n\t\t\t\t\t\tclick: $.proxy(this.show, this)\n\t\t\t\t\t}]\n\t\t\t\t];\n\t\t\t}\n\t\t\telse if (this.element.is('div')){  // inline datepicker\n\t\t\t\tthis.isInline = true;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis._events = [\n\t\t\t\t\t[this.element, {\n\t\t\t\t\t\tclick: $.proxy(this.show, this)\n\t\t\t\t\t}]\n\t\t\t\t];\n\t\t\t}\n\t\t\tthis._events.push(\n\t\t\t\t// Component: listen for blur on element descendants\n\t\t\t\t[this.element, '*', {\n\t\t\t\t\tblur: $.proxy(function(e){\n\t\t\t\t\t\tthis._focused_from = e.target;\n\t\t\t\t\t}, this)\n\t\t\t\t}],\n\t\t\t\t// Input: listen for blur on element\n\t\t\t\t[this.element, {\n\t\t\t\t\tblur: $.proxy(function(e){\n\t\t\t\t\t\tthis._focused_from = e.target;\n\t\t\t\t\t}, this)\n\t\t\t\t}]\n\t\t\t);\n\n\t\t\tthis._secondaryEvents = [\n\t\t\t\t[this.picker, {\n\t\t\t\t\tclick: $.proxy(this.click, this)\n\t\t\t\t}],\n\t\t\t\t[$(window), {\n\t\t\t\t\tresize: $.proxy(this.place, this)\n\t\t\t\t}],\n\t\t\t\t[$(document), {\n\t\t\t\t\t'mousedown touchstart': $.proxy(function(e){\n\t\t\t\t\t\t// Clicked outside the datepicker, hide it\n\t\t\t\t\t\tif (!(\n\t\t\t\t\t\t\tthis.element.is(e.target) ||\n\t\t\t\t\t\t\tthis.element.find(e.target).length ||\n\t\t\t\t\t\t\tthis.picker.is(e.target) ||\n\t\t\t\t\t\t\tthis.picker.find(e.target).length\n\t\t\t\t\t\t)){\n\t\t\t\t\t\t\tthis.hide();\n\t\t\t\t\t\t}\n\t\t\t\t\t}, this)\n\t\t\t\t}]\n\t\t\t];\n\t\t},\n\t\t_attachEvents: function(){\n\t\t\tthis._detachEvents();\n\t\t\tthis._applyEvents(this._events);\n\t\t},\n\t\t_detachEvents: function(){\n\t\t\tthis._unapplyEvents(this._events);\n\t\t},\n\t\t_attachSecondaryEvents: function(){\n\t\t\tthis._detachSecondaryEvents();\n\t\t\tthis._applyEvents(this._secondaryEvents);\n\t\t},\n\t\t_detachSecondaryEvents: function(){\n\t\t\tthis._unapplyEvents(this._secondaryEvents);\n\t\t},\n\t\t_trigger: function(event, altdate){\n\t\t\tvar date = altdate || this.dates.get(-1),\n\t\t\t\tlocal_date = this._utc_to_local(date);\n\n\t\t\tthis.element.trigger({\n\t\t\t\ttype: event,\n\t\t\t\tdate: local_date,\n\t\t\t\tdates: $.map(this.dates, this._utc_to_local),\n\t\t\t\tformat: $.proxy(function(ix, format){\n\t\t\t\t\tif (arguments.length === 0){\n\t\t\t\t\t\tix = this.dates.length - 1;\n\t\t\t\t\t\tformat = this.o.format;\n\t\t\t\t\t}\n\t\t\t\t\telse if (typeof ix === 'string'){\n\t\t\t\t\t\tformat = ix;\n\t\t\t\t\t\tix = this.dates.length - 1;\n\t\t\t\t\t}\n\t\t\t\t\tformat = format || this.o.format;\n\t\t\t\t\tvar date = this.dates.get(ix);\n\t\t\t\t\treturn DPGlobal.formatDate(date, format, this.o.language);\n\t\t\t\t}, this)\n\t\t\t});\n\t\t},\n\n\t\tshow: function(){\n\t\t\tif (!this.isInline)\n\t\t\t\tthis.picker.appendTo('body');\n\t\t\tthis.picker.show();\n\t\t\tthis.place();\n\t\t\tthis._attachSecondaryEvents();\n\t\t\tthis._trigger('show');\n\t\t},\n\n\t\thide: function(){\n\t\t\tif (this.isInline)\n\t\t\t\treturn;\n\t\t\tif (!this.picker.is(':visible'))\n\t\t\t\treturn;\n\t\t\tthis.focusDate = null;\n\t\t\tthis.picker.hide().detach();\n\t\t\tthis._detachSecondaryEvents();\n\t\t\tthis.viewMode = this.o.startView;\n\t\t\tthis.showMode();\n\n\t\t\tif (\n\t\t\t\tthis.o.forceParse &&\n\t\t\t\t(\n\t\t\t\t\tthis.isInput && this.element.val() ||\n\t\t\t\t\tthis.hasInput && this.element.find('input').val()\n\t\t\t\t)\n\t\t\t)\n\t\t\t\tthis.setValue();\n\t\t\tthis._trigger('hide');\n\t\t},\n\n\t\tremove: function(){\n\t\t\tthis.hide();\n\t\t\tthis._detachEvents();\n\t\t\tthis._detachSecondaryEvents();\n\t\t\tthis.picker.remove();\n\t\t\tdelete this.element.data().datepicker;\n\t\t\tif (!this.isInput){\n\t\t\t\tdelete this.element.data().date;\n\t\t\t}\n\t\t},\n\n\t\t_utc_to_local: function(utc){\n\t\t\treturn utc && new Date(utc.getTime() + (utc.getTimezoneOffset()*60000));\n\t\t},\n\t\t_local_to_utc: function(local){\n\t\t\treturn local && new Date(local.getTime() - (local.getTimezoneOffset()*60000));\n\t\t},\n\t\t_zero_time: function(local){\n\t\t\treturn local && new Date(local.getFullYear(), local.getMonth(), local.getDate());\n\t\t},\n\t\t_zero_utc_time: function(utc){\n\t\t\treturn utc && new Date(Date.UTC(utc.getUTCFullYear(), utc.getUTCMonth(), utc.getUTCDate()));\n\t\t},\n\n\t\tgetDates: function(){\n\t\t\treturn $.map(this.dates, this._utc_to_local);\n\t\t},\n\n\t\tgetUTCDates: function(){\n\t\t\treturn $.map(this.dates, function(d){\n\t\t\t\treturn new Date(d);\n\t\t\t});\n\t\t},\n\n\t\tgetDate: function(){\n\t\t\treturn this._utc_to_local(this.getUTCDate());\n\t\t},\n\n\t\tgetUTCDate: function(){\n\t\t\treturn new Date(this.dates.get(-1));\n\t\t},\n\n\t\tsetDates: function(){\n\t\t\tvar args = $.isArray(arguments[0]) ? arguments[0] : arguments;\n\t\t\tthis.update.apply(this, args);\n\t\t\tthis._trigger('changeDate');\n\t\t\tthis.setValue();\n\t\t},\n\n\t\tsetUTCDates: function(){\n\t\t\tvar args = $.isArray(arguments[0]) ? arguments[0] : arguments;\n\t\t\tthis.update.apply(this, $.map(args, this._utc_to_local));\n\t\t\tthis._trigger('changeDate');\n\t\t\tthis.setValue();\n\t\t},\n\n\t\tsetDate: alias('setDates'),\n\t\tsetUTCDate: alias('setUTCDates'),\n\n\t\tsetValue: function(){\n\t\t\tvar formatted = this.getFormattedDate();\n\t\t\tif (!this.isInput){\n\t\t\t\tif (this.component){\n\t\t\t\t\tthis.element.find('input').val(formatted).change();\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.element.val(formatted).change();\n\t\t\t}\n\t\t},\n\n\t\tgetFormattedDate: function(format){\n\t\t\tif (format === undefined)\n\t\t\t\tformat = this.o.format;\n\n\t\t\tvar lang = this.o.language;\n\t\t\treturn $.map(this.dates, function(d){\n\t\t\t\treturn DPGlobal.formatDate(d, format, lang);\n\t\t\t}).join(this.o.multidateSeparator);\n\t\t},\n\n\t\tsetStartDate: function(startDate){\n\t\t\tthis._process_options({startDate: startDate});\n\t\t\tthis.update();\n\t\t\tthis.updateNavArrows();\n\t\t},\n\n\t\tsetEndDate: function(endDate){\n\t\t\tthis._process_options({endDate: endDate});\n\t\t\tthis.update();\n\t\t\tthis.updateNavArrows();\n\t\t},\n\n\t\tsetDaysOfWeekDisabled: function(daysOfWeekDisabled){\n\t\t\tthis._process_options({daysOfWeekDisabled: daysOfWeekDisabled});\n\t\t\tthis.update();\n\t\t\tthis.updateNavArrows();\n\t\t},\n\n\t\tplace: function(){\n\t\t\tif (this.isInline)\n\t\t\t\treturn;\n\t\t\tvar calendarWidth = this.picker.outerWidth(),\n\t\t\t\tcalendarHeight = this.picker.outerHeight(),\n\t\t\t\tvisualPadding = 10,\n\t\t\t\twindowWidth = $window.width(),\n\t\t\t\twindowHeight = $window.height(),\n\t\t\t\tscrollTop = $window.scrollTop();\n\n\t\t\tvar zIndex = parseInt(this.element.parents().filter(function(){\n\t\t\t\t\treturn $(this).css('z-index') !== 'auto';\n\t\t\t\t}).first().css('z-index'))+10;\n\t\t\tvar offset = this.component ? this.component.parent().offset() : this.element.offset();\n\t\t\tvar height = this.component ? this.component.outerHeight(true) : this.element.outerHeight(false);\n\t\t\tvar width = this.component ? this.component.outerWidth(true) : this.element.outerWidth(false);\n\t\t\tvar left = offset.left,\n\t\t\t\ttop = offset.top;\n\n\t\t\tthis.picker.removeClass(\n\t\t\t\t'datepicker-orient-top datepicker-orient-bottom '+\n\t\t\t\t'datepicker-orient-right datepicker-orient-left'\n\t\t\t);\n\n\t\t\tif (this.o.orientation.x !== 'auto'){\n\t\t\t\tthis.picker.addClass('datepicker-orient-' + this.o.orientation.x);\n\t\t\t\tif (this.o.orientation.x === 'right')\n\t\t\t\t\tleft -= calendarWidth - width;\n\t\t\t}\n\t\t\t// auto x orientation is best-placement: if it crosses a window\n\t\t\t// edge, fudge it sideways\n\t\t\telse {\n\t\t\t\t// Default to left\n\t\t\t\tthis.picker.addClass('datepicker-orient-left');\n\t\t\t\tif (offset.left < 0)\n\t\t\t\t\tleft -= offset.left - visualPadding;\n\t\t\t\telse if (offset.left + calendarWidth > windowWidth)\n\t\t\t\t\tleft = windowWidth - calendarWidth - visualPadding;\n\t\t\t}\n\n\t\t\t// auto y orientation is best-situation: top or bottom, no fudging,\n\t\t\t// decision based on which shows more of the calendar\n\t\t\tvar yorient = this.o.orientation.y,\n\t\t\t\ttop_overflow, bottom_overflow;\n\t\t\tif (yorient === 'auto'){\n\t\t\t\ttop_overflow = -scrollTop + offset.top - calendarHeight;\n\t\t\t\tbottom_overflow = scrollTop + windowHeight - (offset.top + height + calendarHeight);\n\t\t\t\tif (Math.max(top_overflow, bottom_overflow) === bottom_overflow)\n\t\t\t\t\tyorient = 'top';\n\t\t\t\telse\n\t\t\t\t\tyorient = 'bottom';\n\t\t\t}\n\t\t\tthis.picker.addClass('datepicker-orient-' + yorient);\n\t\t\tif (yorient === 'top')\n\t\t\t\ttop += height;\n\t\t\telse\n\t\t\t\ttop -= calendarHeight + parseInt(this.picker.css('padding-top'));\n\n\t\t\tthis.picker.css({\n\t\t\t\ttop: top,\n\t\t\t\tleft: left,\n\t\t\t\tzIndex: zIndex\n\t\t\t});\n\t\t},\n\n\t\t_allow_update: true,\n\t\tupdate: function(){\n\t\t\tif (!this._allow_update)\n\t\t\t\treturn;\n\n\t\t\tvar oldDates = this.dates.copy(),\n\t\t\t\tdates = [],\n\t\t\t\tfromArgs = false;\n\t\t\tif (arguments.length){\n\t\t\t\t$.each(arguments, $.proxy(function(i, date){\n\t\t\t\t\tif (date instanceof Date)\n\t\t\t\t\t\tdate = this._local_to_utc(date);\n\t\t\t\t\tdates.push(date);\n\t\t\t\t}, this));\n\t\t\t\tfromArgs = true;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tdates = this.isInput\n\t\t\t\t\t\t? this.element.val()\n\t\t\t\t\t\t: this.element.data('date') || this.element.find('input').val();\n\t\t\t\tif (dates && this.o.multidate)\n\t\t\t\t\tdates = dates.split(this.o.multidateSeparator);\n\t\t\t\telse\n\t\t\t\t\tdates = [dates];\n\t\t\t\tdelete this.element.data().date;\n\t\t\t}\n\n\t\t\tdates = $.map(dates, $.proxy(function(date){\n\t\t\t\treturn DPGlobal.parseDate(date, this.o.format, this.o.language);\n\t\t\t}, this));\n\t\t\tdates = $.grep(dates, $.proxy(function(date){\n\t\t\t\treturn (\n\t\t\t\t\tdate < this.o.startDate ||\n\t\t\t\t\tdate > this.o.endDate ||\n\t\t\t\t\t!date\n\t\t\t\t);\n\t\t\t}, this), true);\n\t\t\tthis.dates.replace(dates);\n\n\t\t\tif (this.dates.length)\n\t\t\t\tthis.viewDate = new Date(this.dates.get(-1));\n\t\t\telse if (this.viewDate < this.o.startDate)\n\t\t\t\tthis.viewDate = new Date(this.o.startDate);\n\t\t\telse if (this.viewDate > this.o.endDate)\n\t\t\t\tthis.viewDate = new Date(this.o.endDate);\n\n\t\t\tif (fromArgs){\n\t\t\t\t// setting date by clicking\n\t\t\t\tthis.setValue();\n\t\t\t}\n\t\t\telse if (dates.length){\n\t\t\t\t// setting date by typing\n\t\t\t\tif (String(oldDates) !== String(this.dates))\n\t\t\t\t\tthis._trigger('changeDate');\n\t\t\t}\n\t\t\tif (!this.dates.length && oldDates.length)\n\t\t\t\tthis._trigger('clearDate');\n\n\t\t\tthis.fill();\n\t\t},\n\n\t\tfillDow: function(){\n\t\t\tvar dowCnt = this.o.weekStart,\n\t\t\t\thtml = '<tr>';\n\t\t\tif (this.o.calendarWeeks){\n\t\t\t\tvar cell = '<th class=\"cw\">&nbsp;</th>';\n\t\t\t\thtml += cell;\n\t\t\t\tthis.picker.find('.datepicker-days thead tr:first-child').prepend(cell);\n\t\t\t}\n\t\t\twhile (dowCnt < this.o.weekStart + 7){\n\t\t\t\thtml += '<th class=\"dow\">'+dates[this.o.language].daysMin[(dowCnt++)%7]+'</th>';\n\t\t\t}\n\t\t\thtml += '</tr>';\n\t\t\tthis.picker.find('.datepicker-days thead').append(html);\n\t\t},\n\n\t\tfillMonths: function(){\n\t\t\tvar html = '',\n\t\t\ti = 0;\n\t\t\twhile (i < 12){\n\t\t\t\thtml += '<span class=\"month\">'+dates[this.o.language].monthsShort[i++]+'</span>';\n\t\t\t}\n\t\t\tthis.picker.find('.datepicker-months td').html(html);\n\t\t},\n\n\t\tsetRange: function(range){\n\t\t\tif (!range || !range.length)\n\t\t\t\tdelete this.range;\n\t\t\telse\n\t\t\t\tthis.range = $.map(range, function(d){\n\t\t\t\t\treturn d.valueOf();\n\t\t\t\t});\n\t\t\tthis.fill();\n\t\t},\n\n\t\tgetClassNames: function(date){\n\t\t\tvar cls = [],\n\t\t\t\tyear = this.viewDate.getUTCFullYear(),\n\t\t\t\tmonth = this.viewDate.getUTCMonth(),\n\t\t\t\ttoday = new Date();\n\t\t\tif (date.getUTCFullYear() < year || (date.getUTCFullYear() === year && date.getUTCMonth() < month)){\n\t\t\t\tcls.push('old');\n\t\t\t}\n\t\t\telse if (date.getUTCFullYear() > year || (date.getUTCFullYear() === year && date.getUTCMonth() > month)){\n\t\t\t\tcls.push('new');\n\t\t\t}\n\t\t\tif (this.focusDate && date.valueOf() === this.focusDate.valueOf())\n\t\t\t\tcls.push('focused');\n\t\t\t// Compare internal UTC date with local today, not UTC today\n\t\t\tif (this.o.todayHighlight &&\n\t\t\t\tdate.getUTCFullYear() === today.getFullYear() &&\n\t\t\t\tdate.getUTCMonth() === today.getMonth() &&\n\t\t\t\tdate.getUTCDate() === today.getDate()){\n\t\t\t\tcls.push('today');\n\t\t\t}\n\t\t\tif (this.dates.contains(date) !== -1)\n\t\t\t\tcls.push('active');\n\t\t\tif (date.valueOf() < this.o.startDate || date.valueOf() > this.o.endDate ||\n\t\t\t\t$.inArray(date.getUTCDay(), this.o.daysOfWeekDisabled) !== -1){\n\t\t\t\tcls.push('disabled');\n\t\t\t}\n\t\t\tif (this.range){\n\t\t\t\tif (date > this.range[0] && date < this.range[this.range.length-1]){\n\t\t\t\t\tcls.push('range');\n\t\t\t\t}\n\t\t\t\tif ($.inArray(date.valueOf(), this.range) !== -1){\n\t\t\t\t\tcls.push('selected');\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn cls;\n\t\t},\n\n\t\tfill: function(){\n\t\t\tvar d = new Date(this.viewDate),\n\t\t\t\tyear = d.getUTCFullYear(),\n\t\t\t\tmonth = d.getUTCMonth(),\n\t\t\t\tstartYear = this.o.startDate !== -Infinity ? this.o.startDate.getUTCFullYear() : -Infinity,\n\t\t\t\tstartMonth = this.o.startDate !== -Infinity ? this.o.startDate.getUTCMonth() : -Infinity,\n\t\t\t\tendYear = this.o.endDate !== Infinity ? this.o.endDate.getUTCFullYear() : Infinity,\n\t\t\t\tendMonth = this.o.endDate !== Infinity ? this.o.endDate.getUTCMonth() : Infinity,\n\t\t\t\ttodaytxt = dates[this.o.language].today || dates['en'].today || '',\n\t\t\t\tcleartxt = dates[this.o.language].clear || dates['en'].clear || '',\n\t\t\t\ttooltip;\n\t\t\tthis.picker.find('.datepicker-days thead th.datepicker-switch')\n\t\t\t\t\t\t.text(dates[this.o.language].months[month]+' '+year);\n\t\t\tthis.picker.find('tfoot th.today')\n\t\t\t\t\t\t.text(todaytxt)\n\t\t\t\t\t\t.toggle(this.o.todayBtn !== false);\n\t\t\tthis.picker.find('tfoot th.clear')\n\t\t\t\t\t\t.text(cleartxt)\n\t\t\t\t\t\t.toggle(this.o.clearBtn !== false);\n\t\t\tthis.updateNavArrows();\n\t\t\tthis.fillMonths();\n\t\t\tvar prevMonth = UTCDate(year, month-1, 28),\n\t\t\t\tday = DPGlobal.getDaysInMonth(prevMonth.getUTCFullYear(), prevMonth.getUTCMonth());\n\t\t\tprevMonth.setUTCDate(day);\n\t\t\tprevMonth.setUTCDate(day - (prevMonth.getUTCDay() - this.o.weekStart + 7)%7);\n\t\t\tvar nextMonth = new Date(prevMonth);\n\t\t\tnextMonth.setUTCDate(nextMonth.getUTCDate() + 42);\n\t\t\tnextMonth = nextMonth.valueOf();\n\t\t\tvar html = [];\n\t\t\tvar clsName;\n\t\t\twhile (prevMonth.valueOf() < nextMonth){\n\t\t\t\tif (prevMonth.getUTCDay() === this.o.weekStart){\n\t\t\t\t\thtml.push('<tr>');\n\t\t\t\t\tif (this.o.calendarWeeks){\n\t\t\t\t\t\t// ISO 8601: First week contains first thursday.\n\t\t\t\t\t\t// ISO also states week starts on Monday, but we can be more abstract here.\n\t\t\t\t\t\tvar\n\t\t\t\t\t\t\t// Start of current week: based on weekstart/current date\n\t\t\t\t\t\t\tws = new Date(+prevMonth + (this.o.weekStart - prevMonth.getUTCDay() - 7) % 7 * 864e5),\n\t\t\t\t\t\t\t// Thursday of this week\n\t\t\t\t\t\t\tth = new Date(Number(ws) + (7 + 4 - ws.getUTCDay()) % 7 * 864e5),\n\t\t\t\t\t\t\t// First Thursday of year, year from thursday\n\t\t\t\t\t\t\tyth = new Date(Number(yth = UTCDate(th.getUTCFullYear(), 0, 1)) + (7 + 4 - yth.getUTCDay())%7*864e5),\n\t\t\t\t\t\t\t// Calendar week: ms between thursdays, div ms per day, div 7 days\n\t\t\t\t\t\t\tcalWeek =  (th - yth) / 864e5 / 7 + 1;\n\t\t\t\t\t\thtml.push('<td class=\"cw\">'+ calWeek +'</td>');\n\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tclsName = this.getClassNames(prevMonth);\n\t\t\t\tclsName.push('day');\n\n\t\t\t\tif (this.o.beforeShowDay !== $.noop){\n\t\t\t\t\tvar before = this.o.beforeShowDay(this._utc_to_local(prevMonth));\n\t\t\t\t\tif (before === undefined)\n\t\t\t\t\t\tbefore = {};\n\t\t\t\t\telse if (typeof(before) === 'boolean')\n\t\t\t\t\t\tbefore = {enabled: before};\n\t\t\t\t\telse if (typeof(before) === 'string')\n\t\t\t\t\t\tbefore = {classes: before};\n\t\t\t\t\tif (before.enabled === false)\n\t\t\t\t\t\tclsName.push('disabled');\n\t\t\t\t\tif (before.classes)\n\t\t\t\t\t\tclsName = clsName.concat(before.classes.split(/\\s+/));\n\t\t\t\t\tif (before.tooltip)\n\t\t\t\t\t\ttooltip = before.tooltip;\n\t\t\t\t}\n\n\t\t\t\tclsName = $.unique(clsName);\n\t\t\t\thtml.push('<td class=\"'+clsName.join(' ')+'\"' + (tooltip ? ' title=\"'+tooltip+'\"' : '') + '>'+prevMonth.getUTCDate() + '</td>');\n\t\t\t\tif (prevMonth.getUTCDay() === this.o.weekEnd){\n\t\t\t\t\thtml.push('</tr>');\n\t\t\t\t}\n\t\t\t\tprevMonth.setUTCDate(prevMonth.getUTCDate()+1);\n\t\t\t}\n\t\t\tthis.picker.find('.datepicker-days tbody').empty().append(html.join(''));\n\n\t\t\tvar months = this.picker.find('.datepicker-months')\n\t\t\t\t\t\t.find('th:eq(1)')\n\t\t\t\t\t\t\t.text(year)\n\t\t\t\t\t\t\t.end()\n\t\t\t\t\t\t.find('span').removeClass('active');\n\n\t\t\t$.each(this.dates, function(i, d){\n\t\t\t\tif (d.getUTCFullYear() === year)\n\t\t\t\t\tmonths.eq(d.getUTCMonth()).addClass('active');\n\t\t\t});\n\n\t\t\tif (year < startYear || year > endYear){\n\t\t\t\tmonths.addClass('disabled');\n\t\t\t}\n\t\t\tif (year === startYear){\n\t\t\t\tmonths.slice(0, startMonth).addClass('disabled');\n\t\t\t}\n\t\t\tif (year === endYear){\n\t\t\t\tmonths.slice(endMonth+1).addClass('disabled');\n\t\t\t}\n\n\t\t\thtml = '';\n\t\t\tyear = parseInt(year/10, 10) * 10;\n\t\t\tvar yearCont = this.picker.find('.datepicker-years')\n\t\t\t\t\t\t\t\t.find('th:eq(1)')\n\t\t\t\t\t\t\t\t\t.text(year + '-' + (year + 9))\n\t\t\t\t\t\t\t\t\t.end()\n\t\t\t\t\t\t\t\t.find('td');\n\t\t\tyear -= 1;\n\t\t\tvar years = $.map(this.dates, function(d){\n\t\t\t\t\treturn d.getUTCFullYear();\n\t\t\t\t}),\n\t\t\t\tclasses;\n\t\t\tfor (var i = -1; i < 11; i++){\n\t\t\t\tclasses = ['year'];\n\t\t\t\tif (i === -1)\n\t\t\t\t\tclasses.push('old');\n\t\t\t\telse if (i === 10)\n\t\t\t\t\tclasses.push('new');\n\t\t\t\tif ($.inArray(year, years) !== -1)\n\t\t\t\t\tclasses.push('active');\n\t\t\t\tif (year < startYear || year > endYear)\n\t\t\t\t\tclasses.push('disabled');\n\t\t\t\thtml += '<span class=\"' + classes.join(' ') + '\">'+year+'</span>';\n\t\t\t\tyear += 1;\n\t\t\t}\n\t\t\tyearCont.html(html);\n\t\t},\n\n\t\tupdateNavArrows: function(){\n\t\t\tif (!this._allow_update)\n\t\t\t\treturn;\n\n\t\t\tvar d = new Date(this.viewDate),\n\t\t\t\tyear = d.getUTCFullYear(),\n\t\t\t\tmonth = d.getUTCMonth();\n\t\t\tswitch (this.viewMode){\n\t\t\t\tcase 0:\n\t\t\t\t\tif (this.o.startDate !== -Infinity && year <= this.o.startDate.getUTCFullYear() && month <= this.o.startDate.getUTCMonth()){\n\t\t\t\t\t\tthis.picker.find('.prev').css({visibility: 'hidden'});\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis.picker.find('.prev').css({visibility: 'visible'});\n\t\t\t\t\t}\n\t\t\t\t\tif (this.o.endDate !== Infinity && year >= this.o.endDate.getUTCFullYear() && month >= this.o.endDate.getUTCMonth()){\n\t\t\t\t\t\tthis.picker.find('.next').css({visibility: 'hidden'});\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis.picker.find('.next').css({visibility: 'visible'});\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 1:\n\t\t\t\tcase 2:\n\t\t\t\t\tif (this.o.startDate !== -Infinity && year <= this.o.startDate.getUTCFullYear()){\n\t\t\t\t\t\tthis.picker.find('.prev').css({visibility: 'hidden'});\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis.picker.find('.prev').css({visibility: 'visible'});\n\t\t\t\t\t}\n\t\t\t\t\tif (this.o.endDate !== Infinity && year >= this.o.endDate.getUTCFullYear()){\n\t\t\t\t\t\tthis.picker.find('.next').css({visibility: 'hidden'});\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis.picker.find('.next').css({visibility: 'visible'});\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t},\n\n\t\tclick: function(e){\n\t\t\te.preventDefault();\n\t\t\tvar target = $(e.target).closest('span, td, th'),\n\t\t\t\tyear, month, day;\n\t\t\tif (target.length === 1){\n\t\t\t\tswitch (target[0].nodeName.toLowerCase()){\n\t\t\t\t\tcase 'th':\n\t\t\t\t\t\tswitch (target[0].className){\n\t\t\t\t\t\t\tcase 'datepicker-switch':\n\t\t\t\t\t\t\t\tthis.showMode(1);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'prev':\n\t\t\t\t\t\t\tcase 'next':\n\t\t\t\t\t\t\t\tvar dir = DPGlobal.modes[this.viewMode].navStep * (target[0].className === 'prev' ? -1 : 1);\n\t\t\t\t\t\t\t\tswitch (this.viewMode){\n\t\t\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\t\t\tthis.viewDate = this.moveMonth(this.viewDate, dir);\n\t\t\t\t\t\t\t\t\t\tthis._trigger('changeMonth', this.viewDate);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\t\t\tthis.viewDate = this.moveYear(this.viewDate, dir);\n\t\t\t\t\t\t\t\t\t\tif (this.viewMode === 1)\n\t\t\t\t\t\t\t\t\t\t\tthis._trigger('changeYear', this.viewDate);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'today':\n\t\t\t\t\t\t\t\tvar date = new Date();\n\t\t\t\t\t\t\t\tdate = UTCDate(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);\n\n\t\t\t\t\t\t\t\tthis.showMode(-2);\n\t\t\t\t\t\t\t\tvar which = this.o.todayBtn === 'linked' ? null : 'view';\n\t\t\t\t\t\t\t\tthis._setDate(date, which);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'clear':\n\t\t\t\t\t\t\t\tvar element;\n\t\t\t\t\t\t\t\tif (this.isInput)\n\t\t\t\t\t\t\t\t\telement = this.element;\n\t\t\t\t\t\t\t\telse if (this.component)\n\t\t\t\t\t\t\t\t\telement = this.element.find('input');\n\t\t\t\t\t\t\t\tif (element)\n\t\t\t\t\t\t\t\t\telement.val(\"\").change();\n\t\t\t\t\t\t\t\tthis.update();\n\t\t\t\t\t\t\t\tthis._trigger('changeDate');\n\t\t\t\t\t\t\t\tif (this.o.autoclose)\n\t\t\t\t\t\t\t\t\tthis.hide();\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'span':\n\t\t\t\t\t\tif (!target.is('.disabled')){\n\t\t\t\t\t\t\tthis.viewDate.setUTCDate(1);\n\t\t\t\t\t\t\tif (target.is('.month')){\n\t\t\t\t\t\t\t\tday = 1;\n\t\t\t\t\t\t\t\tmonth = target.parent().find('span').index(target);\n\t\t\t\t\t\t\t\tyear = this.viewDate.getUTCFullYear();\n\t\t\t\t\t\t\t\tthis.viewDate.setUTCMonth(month);\n\t\t\t\t\t\t\t\tthis._trigger('changeMonth', this.viewDate);\n\t\t\t\t\t\t\t\tif (this.o.minViewMode === 1){\n\t\t\t\t\t\t\t\t\tthis._setDate(UTCDate(year, month, day));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tday = 1;\n\t\t\t\t\t\t\t\tmonth = 0;\n\t\t\t\t\t\t\t\tyear = parseInt(target.text(), 10)||0;\n\t\t\t\t\t\t\t\tthis.viewDate.setUTCFullYear(year);\n\t\t\t\t\t\t\t\tthis._trigger('changeYear', this.viewDate);\n\t\t\t\t\t\t\t\tif (this.o.minViewMode === 2){\n\t\t\t\t\t\t\t\t\tthis._setDate(UTCDate(year, month, day));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tthis.showMode(-1);\n\t\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'td':\n\t\t\t\t\t\tif (target.is('.day') && !target.is('.disabled')){\n\t\t\t\t\t\t\tday = parseInt(target.text(), 10)||1;\n\t\t\t\t\t\t\tyear = this.viewDate.getUTCFullYear();\n\t\t\t\t\t\t\tmonth = this.viewDate.getUTCMonth();\n\t\t\t\t\t\t\tif (target.is('.old')){\n\t\t\t\t\t\t\t\tif (month === 0){\n\t\t\t\t\t\t\t\t\tmonth = 11;\n\t\t\t\t\t\t\t\t\tyear -= 1;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tmonth -= 1;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (target.is('.new')){\n\t\t\t\t\t\t\t\tif (month === 11){\n\t\t\t\t\t\t\t\t\tmonth = 0;\n\t\t\t\t\t\t\t\t\tyear += 1;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tmonth += 1;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tthis._setDate(UTCDate(year, month, day));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this.picker.is(':visible') && this._focused_from){\n\t\t\t\t$(this._focused_from).focus();\n\t\t\t}\n\t\t\tdelete this._focused_from;\n\t\t},\n\n\t\t_toggle_multidate: function(date){\n\t\t\tvar ix = this.dates.contains(date);\n\t\t\tif (!date){\n\t\t\t\tthis.dates.clear();\n\t\t\t}\n\t\t\telse if (ix !== -1){\n\t\t\t\tthis.dates.remove(ix);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.dates.push(date);\n\t\t\t}\n\t\t\tif (typeof this.o.multidate === 'number')\n\t\t\t\twhile (this.dates.length > this.o.multidate)\n\t\t\t\t\tthis.dates.remove(0);\n\t\t},\n\n\t\t_setDate: function(date, which){\n\t\t\tif (!which || which === 'date')\n\t\t\t\tthis._toggle_multidate(date && new Date(date));\n\t\t\tif (!which || which  === 'view')\n\t\t\t\tthis.viewDate = date && new Date(date);\n\n\t\t\tthis.fill();\n\t\t\tthis.setValue();\n\t\t\tthis._trigger('changeDate');\n\t\t\tvar element;\n\t\t\tif (this.isInput){\n\t\t\t\telement = this.element;\n\t\t\t}\n\t\t\telse if (this.component){\n\t\t\t\telement = this.element.find('input');\n\t\t\t}\n\t\t\tif (element){\n\t\t\t\telement.change();\n\t\t\t}\n\t\t\tif (this.o.autoclose && (!which || which === 'date')){\n\t\t\t\tthis.hide();\n\t\t\t}\n\t\t},\n\n\t\tmoveMonth: function(date, dir){\n\t\t\tif (!date)\n\t\t\t\treturn undefined;\n\t\t\tif (!dir)\n\t\t\t\treturn date;\n\t\t\tvar new_date = new Date(date.valueOf()),\n\t\t\t\tday = new_date.getUTCDate(),\n\t\t\t\tmonth = new_date.getUTCMonth(),\n\t\t\t\tmag = Math.abs(dir),\n\t\t\t\tnew_month, test;\n\t\t\tdir = dir > 0 ? 1 : -1;\n\t\t\tif (mag === 1){\n\t\t\t\ttest = dir === -1\n\t\t\t\t\t// If going back one month, make sure month is not current month\n\t\t\t\t\t// (eg, Mar 31 -> Feb 31 == Feb 28, not Mar 02)\n\t\t\t\t\t? function(){\n\t\t\t\t\t\treturn new_date.getUTCMonth() === month;\n\t\t\t\t\t}\n\t\t\t\t\t// If going forward one month, make sure month is as expected\n\t\t\t\t\t// (eg, Jan 31 -> Feb 31 == Feb 28, not Mar 02)\n\t\t\t\t\t: function(){\n\t\t\t\t\t\treturn new_date.getUTCMonth() !== new_month;\n\t\t\t\t\t};\n\t\t\t\tnew_month = month + dir;\n\t\t\t\tnew_date.setUTCMonth(new_month);\n\t\t\t\t// Dec -> Jan (12) or Jan -> Dec (-1) -- limit expected date to 0-11\n\t\t\t\tif (new_month < 0 || new_month > 11)\n\t\t\t\t\tnew_month = (new_month + 12) % 12;\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// For magnitudes >1, move one month at a time...\n\t\t\t\tfor (var i=0; i < mag; i++)\n\t\t\t\t\t// ...which might decrease the day (eg, Jan 31 to Feb 28, etc)...\n\t\t\t\t\tnew_date = this.moveMonth(new_date, dir);\n\t\t\t\t// ...then reset the day, keeping it in the new month\n\t\t\t\tnew_month = new_date.getUTCMonth();\n\t\t\t\tnew_date.setUTCDate(day);\n\t\t\t\ttest = function(){\n\t\t\t\t\treturn new_month !== new_date.getUTCMonth();\n\t\t\t\t};\n\t\t\t}\n\t\t\t// Common date-resetting loop -- if date is beyond end of month, make it\n\t\t\t// end of month\n\t\t\twhile (test()){\n\t\t\t\tnew_date.setUTCDate(--day);\n\t\t\t\tnew_date.setUTCMonth(new_month);\n\t\t\t}\n\t\t\treturn new_date;\n\t\t},\n\n\t\tmoveYear: function(date, dir){\n\t\t\treturn this.moveMonth(date, dir*12);\n\t\t},\n\n\t\tdateWithinRange: function(date){\n\t\t\treturn date >= this.o.startDate && date <= this.o.endDate;\n\t\t},\n\n\t\tkeydown: function(e){\n\t\t\tif (this.picker.is(':not(:visible)')){\n\t\t\t\tif (e.keyCode === 27) // allow escape to hide and re-show picker\n\t\t\t\t\tthis.show();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar dateChanged = false,\n\t\t\t\tdir, newDate, newViewDate,\n\t\t\t\tfocusDate = this.focusDate || this.viewDate;\n\t\t\tswitch (e.keyCode){\n\t\t\t\tcase 27: // escape\n\t\t\t\t\tif (this.focusDate){\n\t\t\t\t\t\tthis.focusDate = null;\n\t\t\t\t\t\tthis.viewDate = this.dates.get(-1) || this.viewDate;\n\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t\tthis.hide();\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 37: // left\n\t\t\t\tcase 39: // right\n\t\t\t\t\tif (!this.o.keyboardNavigation)\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdir = e.keyCode === 37 ? -1 : 1;\n\t\t\t\t\tif (e.ctrlKey){\n\t\t\t\t\t\tnewDate = this.moveYear(this.dates.get(-1) || UTCToday(), dir);\n\t\t\t\t\t\tnewViewDate = this.moveYear(focusDate, dir);\n\t\t\t\t\t\tthis._trigger('changeYear', this.viewDate);\n\t\t\t\t\t}\n\t\t\t\t\telse if (e.shiftKey){\n\t\t\t\t\t\tnewDate = this.moveMonth(this.dates.get(-1) || UTCToday(), dir);\n\t\t\t\t\t\tnewViewDate = this.moveMonth(focusDate, dir);\n\t\t\t\t\t\tthis._trigger('changeMonth', this.viewDate);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tnewDate = new Date(this.dates.get(-1) || UTCToday());\n\t\t\t\t\t\tnewDate.setUTCDate(newDate.getUTCDate() + dir);\n\t\t\t\t\t\tnewViewDate = new Date(focusDate);\n\t\t\t\t\t\tnewViewDate.setUTCDate(focusDate.getUTCDate() + dir);\n\t\t\t\t\t}\n\t\t\t\t\tif (this.dateWithinRange(newDate)){\n\t\t\t\t\t\tthis.focusDate = this.viewDate = newViewDate;\n\t\t\t\t\t\tthis.setValue();\n\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 38: // up\n\t\t\t\tcase 40: // down\n\t\t\t\t\tif (!this.o.keyboardNavigation)\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdir = e.keyCode === 38 ? -1 : 1;\n\t\t\t\t\tif (e.ctrlKey){\n\t\t\t\t\t\tnewDate = this.moveYear(this.dates.get(-1) || UTCToday(), dir);\n\t\t\t\t\t\tnewViewDate = this.moveYear(focusDate, dir);\n\t\t\t\t\t\tthis._trigger('changeYear', this.viewDate);\n\t\t\t\t\t}\n\t\t\t\t\telse if (e.shiftKey){\n\t\t\t\t\t\tnewDate = this.moveMonth(this.dates.get(-1) || UTCToday(), dir);\n\t\t\t\t\t\tnewViewDate = this.moveMonth(focusDate, dir);\n\t\t\t\t\t\tthis._trigger('changeMonth', this.viewDate);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tnewDate = new Date(this.dates.get(-1) || UTCToday());\n\t\t\t\t\t\tnewDate.setUTCDate(newDate.getUTCDate() + dir * 7);\n\t\t\t\t\t\tnewViewDate = new Date(focusDate);\n\t\t\t\t\t\tnewViewDate.setUTCDate(focusDate.getUTCDate() + dir * 7);\n\t\t\t\t\t}\n\t\t\t\t\tif (this.dateWithinRange(newDate)){\n\t\t\t\t\t\tthis.focusDate = this.viewDate = newViewDate;\n\t\t\t\t\t\tthis.setValue();\n\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 32: // spacebar\n\t\t\t\t\t// Spacebar is used in manually typing dates in some formats.\n\t\t\t\t\t// As such, its behavior should not be hijacked.\n\t\t\t\t\tbreak;\n\t\t\t\tcase 13: // enter\n\t\t\t\t\tfocusDate = this.focusDate || this.dates.get(-1) || this.viewDate;\n\t\t\t\t\tthis._toggle_multidate(focusDate);\n\t\t\t\t\tdateChanged = true;\n\t\t\t\t\tthis.focusDate = null;\n\t\t\t\t\tthis.viewDate = this.dates.get(-1) || this.viewDate;\n\t\t\t\t\tthis.setValue();\n\t\t\t\t\tthis.fill();\n\t\t\t\t\tif (this.picker.is(':visible')){\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tif (this.o.autoclose)\n\t\t\t\t\t\t\tthis.hide();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 9: // tab\n\t\t\t\t\tthis.focusDate = null;\n\t\t\t\t\tthis.viewDate = this.dates.get(-1) || this.viewDate;\n\t\t\t\t\tthis.fill();\n\t\t\t\t\tthis.hide();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (dateChanged){\n\t\t\t\tif (this.dates.length)\n\t\t\t\t\tthis._trigger('changeDate');\n\t\t\t\telse\n\t\t\t\t\tthis._trigger('clearDate');\n\t\t\t\tvar element;\n\t\t\t\tif (this.isInput){\n\t\t\t\t\telement = this.element;\n\t\t\t\t}\n\t\t\t\telse if (this.component){\n\t\t\t\t\telement = this.element.find('input');\n\t\t\t\t}\n\t\t\t\tif (element){\n\t\t\t\t\telement.change();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tshowMode: function(dir){\n\t\t\tif (dir){\n\t\t\t\tthis.viewMode = Math.max(this.o.minViewMode, Math.min(2, this.viewMode + dir));\n\t\t\t}\n\t\t\tthis.picker\n\t\t\t\t.find('>div')\n\t\t\t\t.hide()\n\t\t\t\t.filter('.datepicker-'+DPGlobal.modes[this.viewMode].clsName)\n\t\t\t\t\t.css('display', 'block');\n\t\t\tthis.updateNavArrows();\n\t\t}\n\t};\n\n\tvar DateRangePicker = function(element, options){\n\t\tthis.element = $(element);\n\t\tthis.inputs = $.map(options.inputs, function(i){\n\t\t\treturn i.jquery ? i[0] : i;\n\t\t});\n\t\tdelete options.inputs;\n\n\t\t$(this.inputs)\n\t\t\t.datepicker(options)\n\t\t\t.bind('changeDate', $.proxy(this.dateUpdated, this));\n\n\t\tthis.pickers = $.map(this.inputs, function(i){\n\t\t\treturn $(i).data('datepicker');\n\t\t});\n\t\tthis.updateDates();\n\t};\n\tDateRangePicker.prototype = {\n\t\tupdateDates: function(){\n\t\t\tthis.dates = $.map(this.pickers, function(i){\n\t\t\t\treturn i.getUTCDate();\n\t\t\t});\n\t\t\tthis.updateRanges();\n\t\t},\n\t\tupdateRanges: function(){\n\t\t\tvar range = $.map(this.dates, function(d){\n\t\t\t\treturn d.valueOf();\n\t\t\t});\n\t\t\t$.each(this.pickers, function(i, p){\n\t\t\t\tp.setRange(range);\n\t\t\t});\n\t\t},\n\t\tdateUpdated: function(e){\n\t\t\t// `this.updating` is a workaround for preventing infinite recursion\n\t\t\t// between `changeDate` triggering and `setUTCDate` calling.  Until\n\t\t\t// there is a better mechanism.\n\t\t\tif (this.updating)\n\t\t\t\treturn;\n\t\t\tthis.updating = true;\n\n\t\t\tvar dp = $(e.target).data('datepicker'),\n\t\t\t\tnew_date = dp.getUTCDate(),\n\t\t\t\ti = $.inArray(e.target, this.inputs),\n\t\t\t\tl = this.inputs.length;\n\t\t\tif (i === -1)\n\t\t\t\treturn;\n\n\t\t\t$.each(this.pickers, function(i, p){\n\t\t\t\tif (!p.getUTCDate())\n\t\t\t\t\tp.setUTCDate(new_date);\n\t\t\t});\n\n\t\t\tif (new_date < this.dates[i]){\n\t\t\t\t// Date being moved earlier/left\n\t\t\t\twhile (i >= 0 && new_date < this.dates[i]){\n\t\t\t\t\tthis.pickers[i--].setUTCDate(new_date);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (new_date > this.dates[i]){\n\t\t\t\t// Date being moved later/right\n\t\t\t\twhile (i < l && new_date > this.dates[i]){\n\t\t\t\t\tthis.pickers[i++].setUTCDate(new_date);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.updateDates();\n\n\t\t\tdelete this.updating;\n\t\t},\n\t\tremove: function(){\n\t\t\t$.map(this.pickers, function(p){ p.remove(); });\n\t\t\tdelete this.element.data().datepicker;\n\t\t}\n\t};\n\n\tfunction opts_from_el(el, prefix){\n\t\t// Derive options from element data-attrs\n\t\tvar data = $(el).data(),\n\t\t\tout = {}, inkey,\n\t\t\treplace = new RegExp('^' + prefix.toLowerCase() + '([A-Z])');\n\t\tprefix = new RegExp('^' + prefix.toLowerCase());\n\t\tfunction re_lower(_,a){\n\t\t\treturn a.toLowerCase();\n\t\t}\n\t\tfor (var key in data)\n\t\t\tif (prefix.test(key)){\n\t\t\t\tinkey = key.replace(replace, re_lower);\n\t\t\t\tout[inkey] = data[key];\n\t\t\t}\n\t\treturn out;\n\t}\n\n\tfunction opts_from_locale(lang){\n\t\t// Derive options from locale plugins\n\t\tvar out = {};\n\t\t// Check if \"de-DE\" style date is available, if not language should\n\t\t// fallback to 2 letter code eg \"de\"\n\t\tif (!dates[lang]){\n\t\t\tlang = lang.split('-')[0];\n\t\t\tif (!dates[lang])\n\t\t\t\treturn;\n\t\t}\n\t\tvar d = dates[lang];\n\t\t$.each(locale_opts, function(i,k){\n\t\t\tif (k in d)\n\t\t\t\tout[k] = d[k];\n\t\t});\n\t\treturn out;\n\t}\n\n\tvar old = $.fn.datepicker;\n\t$.fn.datepicker = function(option){\n\t\tvar args = Array.apply(null, arguments);\n\t\targs.shift();\n\t\tvar internal_return;\n\t\tthis.each(function(){\n\t\t\tvar $this = $(this),\n\t\t\t\tdata = $this.data('datepicker'),\n\t\t\t\toptions = typeof option === 'object' && option;\n\t\t\tif (!data){\n\t\t\t\tvar elopts = opts_from_el(this, 'date'),\n\t\t\t\t\t// Preliminary otions\n\t\t\t\t\txopts = $.extend({}, defaults, elopts, options),\n\t\t\t\t\tlocopts = opts_from_locale(xopts.language),\n\t\t\t\t\t// Options priority: js args, data-attrs, locales, defaults\n\t\t\t\t\topts = $.extend({}, defaults, locopts, elopts, options);\n\t\t\t\tif ($this.is('.input-daterange') || opts.inputs){\n\t\t\t\t\tvar ropts = {\n\t\t\t\t\t\tinputs: opts.inputs || $this.find('input').toArray()\n\t\t\t\t\t};\n\t\t\t\t\t$this.data('datepicker', (data = new DateRangePicker(this, $.extend(opts, ropts))));\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t$this.data('datepicker', (data = new Datepicker(this, opts)));\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (typeof option === 'string' && typeof data[option] === 'function'){\n\t\t\t\tinternal_return = data[option].apply(data, args);\n\t\t\t\tif (internal_return !== undefined)\n\t\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t\tif (internal_return !== undefined)\n\t\t\treturn internal_return;\n\t\telse\n\t\t\treturn this;\n\t};\n\n\tvar defaults = $.fn.datepicker.defaults = {\n\t\tautoclose: false,\n\t\tbeforeShowDay: $.noop,\n\t\tcalendarWeeks: false,\n\t\tclearBtn: false,\n\t\tdaysOfWeekDisabled: [],\n\t\tendDate: Infinity,\n\t\tforceParse: true,\n\t\tformat: 'mm/dd/yyyy',\n\t\tkeyboardNavigation: true,\n\t\tlanguage: 'en',\n\t\tminViewMode: 0,\n\t\tmultidate: false,\n\t\tmultidateSeparator: ',',\n\t\torientation: \"auto\",\n\t\trtl: false,\n\t\tstartDate: -Infinity,\n\t\tstartView: 0,\n\t\ttodayBtn: false,\n\t\ttodayHighlight: false,\n\t\tweekStart: 0\n\t};\n\tvar locale_opts = $.fn.datepicker.locale_opts = [\n\t\t'format',\n\t\t'rtl',\n\t\t'weekStart'\n\t];\n\t$.fn.datepicker.Constructor = Datepicker;\n\tvar dates = $.fn.datepicker.dates = {\n\t\ten: {\n\t\t\tdays: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\", \"Sunday\"],\n\t\t\tdaysShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"],\n\t\t\tdaysMin: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\", \"Su\"],\n\t\t\tmonths: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n\t\t\tmonthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n\t\t\ttoday: \"Today\",\n\t\t\tclear: \"Clear\"\n\t\t}\n\t};\n\n\tvar DPGlobal = {\n\t\tmodes: [\n\t\t\t{\n\t\t\t\tclsName: 'days',\n\t\t\t\tnavFnc: 'Month',\n\t\t\t\tnavStep: 1\n\t\t\t},\n\t\t\t{\n\t\t\t\tclsName: 'months',\n\t\t\t\tnavFnc: 'FullYear',\n\t\t\t\tnavStep: 1\n\t\t\t},\n\t\t\t{\n\t\t\t\tclsName: 'years',\n\t\t\t\tnavFnc: 'FullYear',\n\t\t\t\tnavStep: 10\n\t\t}],\n\t\tisLeapYear: function(year){\n\t\t\treturn (((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0));\n\t\t},\n\t\tgetDaysInMonth: function(year, month){\n\t\t\treturn [31, (DPGlobal.isLeapYear(year) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month];\n\t\t},\n\t\tvalidParts: /dd?|DD?|mm?|MM?|yy(?:yy)?/g,\n\t\tnonpunctuation: /[^ -\\/:-@\\[\\u3400-\\u9fff-`{-~\\t\\n\\r]+/g,\n\t\tparseFormat: function(format){\n\t\t\t// IE treats \\0 as a string end in inputs (truncating the value),\n\t\t\t// so it's a bad format delimiter, anyway\n\t\t\tvar separators = format.replace(this.validParts, '\\0').split('\\0'),\n\t\t\t\tparts = format.match(this.validParts);\n\t\t\tif (!separators || !separators.length || !parts || parts.length === 0){\n\t\t\t\tthrow new Error(\"Invalid date format.\");\n\t\t\t}\n\t\t\treturn {separators: separators, parts: parts};\n\t\t},\n\t\tparseDate: function(date, format, language){\n\t\t\tif (!date)\n\t\t\t\treturn undefined;\n\t\t\tif (date instanceof Date)\n\t\t\t\treturn date;\n\t\t\tif (typeof format === 'string')\n\t\t\t\tformat = DPGlobal.parseFormat(format);\n\t\t\tvar part_re = /([\\-+]\\d+)([dmwy])/,\n\t\t\t\tparts = date.match(/([\\-+]\\d+)([dmwy])/g),\n\t\t\t\tpart, dir, i;\n\t\t\tif (/^[\\-+]\\d+[dmwy]([\\s,]+[\\-+]\\d+[dmwy])*$/.test(date)){\n\t\t\t\tdate = new Date();\n\t\t\t\tfor (i=0; i < parts.length; i++){\n\t\t\t\t\tpart = part_re.exec(parts[i]);\n\t\t\t\t\tdir = parseInt(part[1]);\n\t\t\t\t\tswitch (part[2]){\n\t\t\t\t\t\tcase 'd':\n\t\t\t\t\t\t\tdate.setUTCDate(date.getUTCDate() + dir);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'm':\n\t\t\t\t\t\t\tdate = Datepicker.prototype.moveMonth.call(Datepicker.prototype, date, dir);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'w':\n\t\t\t\t\t\t\tdate.setUTCDate(date.getUTCDate() + dir * 7);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'y':\n\t\t\t\t\t\t\tdate = Datepicker.prototype.moveYear.call(Datepicker.prototype, date, dir);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn UTCDate(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), 0, 0, 0);\n\t\t\t}\n\t\t\tparts = date && date.match(this.nonpunctuation) || [];\n\t\t\tdate = new Date();\n\t\t\tvar parsed = {},\n\t\t\t\tsetters_order = ['yyyy', 'yy', 'M', 'MM', 'm', 'mm', 'd', 'dd'],\n\t\t\t\tsetters_map = {\n\t\t\t\t\tyyyy: function(d,v){\n\t\t\t\t\t\treturn d.setUTCFullYear(v);\n\t\t\t\t\t},\n\t\t\t\t\tyy: function(d,v){\n\t\t\t\t\t\treturn d.setUTCFullYear(2000+v);\n\t\t\t\t\t},\n\t\t\t\t\tm: function(d,v){\n\t\t\t\t\t\tif (isNaN(d))\n\t\t\t\t\t\t\treturn d;\n\t\t\t\t\t\tv -= 1;\n\t\t\t\t\t\twhile (v < 0) v += 12;\n\t\t\t\t\t\tv %= 12;\n\t\t\t\t\t\td.setUTCMonth(v);\n\t\t\t\t\t\twhile (d.getUTCMonth() !== v)\n\t\t\t\t\t\t\td.setUTCDate(d.getUTCDate()-1);\n\t\t\t\t\t\treturn d;\n\t\t\t\t\t},\n\t\t\t\t\td: function(d,v){\n\t\t\t\t\t\treturn d.setUTCDate(v);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tval, filtered;\n\t\t\tsetters_map['M'] = setters_map['MM'] = setters_map['mm'] = setters_map['m'];\n\t\t\tsetters_map['dd'] = setters_map['d'];\n\t\t\tdate = UTCDate(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);\n\t\t\tvar fparts = format.parts.slice();\n\t\t\t// Remove noop parts\n\t\t\tif (parts.length !== fparts.length){\n\t\t\t\tfparts = $(fparts).filter(function(i,p){\n\t\t\t\t\treturn $.inArray(p, setters_order) !== -1;\n\t\t\t\t}).toArray();\n\t\t\t}\n\t\t\t// Process remainder\n\t\t\tfunction match_part(){\n\t\t\t\tvar m = this.slice(0, parts[i].length),\n\t\t\t\t\tp = parts[i].slice(0, m.length);\n\t\t\t\treturn m === p;\n\t\t\t}\n\t\t\tif (parts.length === fparts.length){\n\t\t\t\tvar cnt;\n\t\t\t\tfor (i=0, cnt = fparts.length; i < cnt; i++){\n\t\t\t\t\tval = parseInt(parts[i], 10);\n\t\t\t\t\tpart = fparts[i];\n\t\t\t\t\tif (isNaN(val)){\n\t\t\t\t\t\tswitch (part){\n\t\t\t\t\t\t\tcase 'MM':\n\t\t\t\t\t\t\t\tfiltered = $(dates[language].months).filter(match_part);\n\t\t\t\t\t\t\t\tval = $.inArray(filtered[0], dates[language].months) + 1;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'M':\n\t\t\t\t\t\t\t\tfiltered = $(dates[language].monthsShort).filter(match_part);\n\t\t\t\t\t\t\t\tval = $.inArray(filtered[0], dates[language].monthsShort) + 1;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tparsed[part] = val;\n\t\t\t\t}\n\t\t\t\tvar _date, s;\n\t\t\t\tfor (i=0; i < setters_order.length; i++){\n\t\t\t\t\ts = setters_order[i];\n\t\t\t\t\tif (s in parsed && !isNaN(parsed[s])){\n\t\t\t\t\t\t_date = new Date(date);\n\t\t\t\t\t\tsetters_map[s](_date, parsed[s]);\n\t\t\t\t\t\tif (!isNaN(_date))\n\t\t\t\t\t\t\tdate = _date;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn date;\n\t\t},\n\t\tformatDate: function(date, format, language){\n\t\t\tif (!date)\n\t\t\t\treturn '';\n\t\t\tif (typeof format === 'string')\n\t\t\t\tformat = DPGlobal.parseFormat(format);\n\t\t\tvar val = {\n\t\t\t\td: date.getUTCDate(),\n\t\t\t\tD: dates[language].daysShort[date.getUTCDay()],\n\t\t\t\tDD: dates[language].days[date.getUTCDay()],\n\t\t\t\tm: date.getUTCMonth() + 1,\n\t\t\t\tM: dates[language].monthsShort[date.getUTCMonth()],\n\t\t\t\tMM: dates[language].months[date.getUTCMonth()],\n\t\t\t\tyy: date.getUTCFullYear().toString().substring(2),\n\t\t\t\tyyyy: date.getUTCFullYear()\n\t\t\t};\n\t\t\tval.dd = (val.d < 10 ? '0' : '') + val.d;\n\t\t\tval.mm = (val.m < 10 ? '0' : '') + val.m;\n\t\t\tdate = [];\n\t\t\tvar seps = $.extend([], format.separators);\n\t\t\tfor (var i=0, cnt = format.parts.length; i <= cnt; i++){\n\t\t\t\tif (seps.length)\n\t\t\t\t\tdate.push(seps.shift());\n\t\t\t\tdate.push(val[format.parts[i]]);\n\t\t\t}\n\t\t\treturn date.join('');\n\t\t},\n\t\theadTemplate: '<thead>'+\n\t\t\t\t\t\t\t'<tr>'+\n\t\t\t\t\t\t\t\t'<th class=\"prev\">&laquo;</th>'+\n\t\t\t\t\t\t\t\t'<th colspan=\"5\" class=\"datepicker-switch\"></th>'+\n\t\t\t\t\t\t\t\t'<th class=\"next\">&raquo;</th>'+\n\t\t\t\t\t\t\t'</tr>'+\n\t\t\t\t\t\t'</thead>',\n\t\tcontTemplate: '<tbody><tr><td colspan=\"7\"></td></tr></tbody>',\n\t\tfootTemplate: '<tfoot>'+\n\t\t\t\t\t\t\t'<tr>'+\n\t\t\t\t\t\t\t\t'<th colspan=\"7\" class=\"today\"></th>'+\n\t\t\t\t\t\t\t'</tr>'+\n\t\t\t\t\t\t\t'<tr>'+\n\t\t\t\t\t\t\t\t'<th colspan=\"7\" class=\"clear\"></th>'+\n\t\t\t\t\t\t\t'</tr>'+\n\t\t\t\t\t\t'</tfoot>'\n\t};\n\tDPGlobal.template = '<div class=\"datepicker\">'+\n\t\t\t\t\t\t\t'<div class=\"datepicker-days\">'+\n\t\t\t\t\t\t\t\t'<table class=\" table-condensed\">'+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\t'<tbody></tbody>'+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'</table>'+\n\t\t\t\t\t\t\t'</div>'+\n\t\t\t\t\t\t\t'<div class=\"datepicker-months\">'+\n\t\t\t\t\t\t\t\t'<table class=\"table-condensed\">'+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.contTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'</table>'+\n\t\t\t\t\t\t\t'</div>'+\n\t\t\t\t\t\t\t'<div class=\"datepicker-years\">'+\n\t\t\t\t\t\t\t\t'<table class=\"table-condensed\">'+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.contTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'</table>'+\n\t\t\t\t\t\t\t'</div>'+\n\t\t\t\t\t\t'</div>';\n\n\t$.fn.datepicker.DPGlobal = DPGlobal;\n\n\n\t/* DATEPICKER NO CONFLICT\n\t* =================== */\n\n\t$.fn.datepicker.noConflict = function(){\n\t\t$.fn.datepicker = old;\n\t\treturn this;\n\t};\n\n\n\t/* DATEPICKER DATA-API\n\t* ================== */\n\n\t$(document).on(\n\t\t'focus.datepicker.data-api click.datepicker.data-api',\n\t\t'[data-provide=\"datepicker\"]',\n\t\tfunction(e){\n\t\t\tvar $this = $(this);\n\t\t\tif ($this.data('datepicker'))\n\t\t\t\treturn;\n\t\t\te.preventDefault();\n\t\t\t// component click requires us to explicitly show it\n\t\t\t$this.datepicker('show');\n\t\t}\n\t);\n\t$(function(){\n\t\t$('[data-provide=\"datepicker-inline\"]').datepicker();\n\t});\n\n}(window.jQuery));"
  },
  {
    "path": "public/admin/js/datapicker/datepicker-active.js",
    "content": "(function ($) {\n \"use strict\";\n \n\t $('#data_1 .input-group.date').datepicker({\n\t\ttodayBtn: \"linked\",\n\t\tkeyboardNavigation: false,\n\t\tforceParse: false,\n\t\tcalendarWeeks: true,\n\t\tautoclose: true\n\t});\n\n\t$('#data_2 .input-group.date').datepicker({\n\t\tstartView: 1,\n\t\ttodayBtn: \"linked\",\n\t\tkeyboardNavigation: false,\n\t\tforceParse: false,\n\t\tautoclose: true,\n\t\tformat: \"dd/mm/yyyy\"\n\t});\n\n\t$('#data_3 .input-group.date').datepicker({\n\t\tstartView: 2,\n\t\ttodayBtn: \"linked\",\n\t\tkeyboardNavigation: false,\n\t\tforceParse: false,\n\t\tautoclose: true\n\t});\n\n\t$('#data_4 .input-group.date').datepicker({\n\t\tminViewMode: 1,\n\t\tkeyboardNavigation: false,\n\t\tforceParse: false,\n\t\tforceParse: false,\n\t\tautoclose: true,\n\t\ttodayHighlight: true\n\t});\n\n\t$('#data_5 .input-daterange').datepicker({\n\t\tkeyboardNavigation: false,\n\t\tforceParse: false,\n\t\tautoclose: true\n\t});\n\n\n\t\n\t\n \n})(jQuery); "
  },
  {
    "path": "public/admin/js/datepicker-active.js",
    "content": "(function ($) {\n \"use strict\";\n \n\t// Datepickers\n\t\t$('#start').datepicker({\n\t\t\tdateFormat: 'dd.mm.yy',\n\t\t\tprevText: '<i class=\"fa fa-chevron-left\"></i>',\n\t\t\tnextText: '<i class=\"fa fa-chevron-right\"></i>',\n\t\t\tonSelect: function( selectedDate )\n\t\t\t{\n\t\t\t\t$('#finish').datepicker('option', 'minDate', selectedDate);\n\t\t\t}\n\t\t});\n\t\t$('#finish').datepicker({\n\t\t\tdateFormat: 'dd.mm.yy',\n\t\t\tprevText: '<i class=\"fa fa-chevron-left\"></i>',\n\t\t\tnextText: '<i class=\"fa fa-chevron-right\"></i>',\n\t\t\tonSelect: function( selectedDate )\n\t\t\t{\n\t\t\t\t$('#start').datepicker('option', 'maxDate', selectedDate);\n\t\t\t}\n\t\t});\n \n})(jQuery); "
  },
  {
    "path": "public/admin/js/dropzone.js",
    "content": "\n/*\n *\n * More info at [www.dropzonejs.com](http://www.dropzonejs.com)\n *\n * Copyright (c) 2012, Matias Meno\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n *\n */\n\n(function() {\n  var Dropzone, Emitter, camelize, contentLoaded, detectVerticalSquash, drawImageIOSFix, noop, without,\n    __slice = [].slice,\n    __hasProp = {}.hasOwnProperty,\n    __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };\n\n  noop = function() {};\n\n  Emitter = (function() {\n    function Emitter() {}\n\n    Emitter.prototype.addEventListener = Emitter.prototype.on;\n\n    Emitter.prototype.on = function(event, fn) {\n      this._callbacks = this._callbacks || {};\n      if (!this._callbacks[event]) {\n        this._callbacks[event] = [];\n      }\n      this._callbacks[event].push(fn);\n      return this;\n    };\n\n    Emitter.prototype.emit = function() {\n      var args, callback, callbacks, event, _i, _len;\n      event = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];\n      this._callbacks = this._callbacks || {};\n      callbacks = this._callbacks[event];\n      if (callbacks) {\n        for (_i = 0, _len = callbacks.length; _i < _len; _i++) {\n          callback = callbacks[_i];\n          callback.apply(this, args);\n        }\n      }\n      return this;\n    };\n\n    Emitter.prototype.removeListener = Emitter.prototype.off;\n\n    Emitter.prototype.removeAllListeners = Emitter.prototype.off;\n\n    Emitter.prototype.removeEventListener = Emitter.prototype.off;\n\n    Emitter.prototype.off = function(event, fn) {\n      var callback, callbacks, i, _i, _len;\n      if (!this._callbacks || arguments.length === 0) {\n        this._callbacks = {};\n        return this;\n      }\n      callbacks = this._callbacks[event];\n      if (!callbacks) {\n        return this;\n      }\n      if (arguments.length === 1) {\n        delete this._callbacks[event];\n        return this;\n      }\n      for (i = _i = 0, _len = callbacks.length; _i < _len; i = ++_i) {\n        callback = callbacks[i];\n        if (callback === fn) {\n          callbacks.splice(i, 1);\n          break;\n        }\n      }\n      return this;\n    };\n\n    return Emitter;\n\n  })();\n\n  Dropzone = (function(_super) {\n    var extend, resolveOption;\n\n    __extends(Dropzone, _super);\n\n    Dropzone.prototype.Emitter = Emitter;\n\n\n    /*\n    This is a list of all available events you can register on a dropzone object.\n    \n    You can register an event handler like this:\n    \n        dropzone.on(\"dragEnter\", function() { });\n     */\n\n    Dropzone.prototype.events = [\"drop\", \"dragstart\", \"dragend\", \"dragenter\", \"dragover\", \"dragleave\", \"addedfile\", \"addedfiles\", \"removedfile\", \"thumbnail\", \"error\", \"errormultiple\", \"processing\", \"processingmultiple\", \"uploadprogress\", \"totaluploadprogress\", \"sending\", \"sendingmultiple\", \"success\", \"successmultiple\", \"canceled\", \"canceledmultiple\", \"complete\", \"completemultiple\", \"reset\", \"maxfilesexceeded\", \"maxfilesreached\", \"queuecomplete\"];\n\n    Dropzone.prototype.defaultOptions = {\n      url: null,\n      method: \"post\",\n      withCredentials: false,\n      parallelUploads: 2,\n      uploadMultiple: false,\n      maxFilesize: 256,\n      paramName: \"file\",\n      createImageThumbnails: true,\n      maxThumbnailFilesize: 10,\n      thumbnailWidth: 120,\n      thumbnailHeight: 120,\n      filesizeBase: 1000,\n      maxFiles: null,\n      params: {},\n      clickable: true,\n      ignoreHiddenFiles: true,\n      acceptedFiles: null,\n      acceptedMimeTypes: null,\n      autoProcessQueue: true,\n      autoQueue: true,\n      addRemoveLinks: false,\n      previewsContainer: null,\n      hiddenInputContainer: \"body\",\n      capture: null,\n      renameFilename: null,\n      dictDefaultMessage: \"Drop files here to upload\",\n      dictFallbackMessage: \"Your browser does not support drag'n'drop file uploads.\",\n      dictFallbackText: \"Please use the fallback form below to upload your files like in the olden days.\",\n      dictFileTooBig: \"File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.\",\n      dictInvalidFileType: \"You can't upload files of this type.\",\n      dictResponseError: \"Server responded with {{statusCode}} code.\",\n      dictCancelUpload: \"Cancel upload\",\n      dictCancelUploadConfirmation: \"Are you sure you want to cancel this upload?\",\n      dictRemoveFile: \"Remove file\",\n      dictRemoveFileConfirmation: null,\n      dictMaxFilesExceeded: \"You can not upload any more files.\",\n      accept: function(file, done) {\n        return done();\n      },\n      init: function() {\n        return noop;\n      },\n      forceFallback: false,\n      fallback: function() {\n        var child, messageElement, span, _i, _len, _ref;\n        this.element.className = \"\" + this.element.className + \" dz-browser-not-supported\";\n        _ref = this.element.getElementsByTagName(\"div\");\n        for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n          child = _ref[_i];\n          if (/(^| )dz-message($| )/.test(child.className)) {\n            messageElement = child;\n            child.className = \"dz-message\";\n            continue;\n          }\n        }\n        if (!messageElement) {\n          messageElement = Dropzone.createElement(\"<div class=\\\"dz-message\\\"><span></span></div>\");\n          this.element.appendChild(messageElement);\n        }\n        span = messageElement.getElementsByTagName(\"span\")[0];\n        if (span) {\n          if (span.textContent != null) {\n            span.textContent = this.options.dictFallbackMessage;\n          } else if (span.innerText != null) {\n            span.innerText = this.options.dictFallbackMessage;\n          }\n        }\n        return this.element.appendChild(this.getFallbackForm());\n      },\n      resize: function(file) {\n        var info, srcRatio, trgRatio;\n        info = {\n          srcX: 0,\n          srcY: 0,\n          srcWidth: file.width,\n          srcHeight: file.height\n        };\n        srcRatio = file.width / file.height;\n        info.optWidth = this.options.thumbnailWidth;\n        info.optHeight = this.options.thumbnailHeight;\n        if ((info.optWidth == null) && (info.optHeight == null)) {\n          info.optWidth = info.srcWidth;\n          info.optHeight = info.srcHeight;\n        } else if (info.optWidth == null) {\n          info.optWidth = srcRatio * info.optHeight;\n        } else if (info.optHeight == null) {\n          info.optHeight = (1 / srcRatio) * info.optWidth;\n        }\n        trgRatio = info.optWidth / info.optHeight;\n        if (file.height < info.optHeight || file.width < info.optWidth) {\n          info.trgHeight = info.srcHeight;\n          info.trgWidth = info.srcWidth;\n        } else {\n          if (srcRatio > trgRatio) {\n            info.srcHeight = file.height;\n            info.srcWidth = info.srcHeight * trgRatio;\n          } else {\n            info.srcWidth = file.width;\n            info.srcHeight = info.srcWidth / trgRatio;\n          }\n        }\n        info.srcX = (file.width - info.srcWidth) / 2;\n        info.srcY = (file.height - info.srcHeight) / 2;\n        return info;\n      },\n\n      /*\n      Those functions register themselves to the events on init and handle all\n      the user interface specific stuff. Overwriting them won't break the upload\n      but can break the way it's displayed.\n      You can overwrite them if you don't like the default behavior. If you just\n      want to add an additional event handler, register it on the dropzone object\n      and don't overwrite those options.\n       */\n      drop: function(e) {\n        return this.element.classList.remove(\"dz-drag-hover\");\n      },\n      dragstart: noop,\n      dragend: function(e) {\n        return this.element.classList.remove(\"dz-drag-hover\");\n      },\n      dragenter: function(e) {\n        return this.element.classList.add(\"dz-drag-hover\");\n      },\n      dragover: function(e) {\n        return this.element.classList.add(\"dz-drag-hover\");\n      },\n      dragleave: function(e) {\n        return this.element.classList.remove(\"dz-drag-hover\");\n      },\n      paste: noop,\n      reset: function() {\n        return this.element.classList.remove(\"dz-started\");\n      },\n      addedfile: function(file) {\n        var node, removeFileEvent, removeLink, _i, _j, _k, _len, _len1, _len2, _ref, _ref1, _ref2, _results;\n        if (this.element === this.previewsContainer) {\n          this.element.classList.add(\"dz-started\");\n        }\n        if (this.previewsContainer) {\n          file.previewElement = Dropzone.createElement(this.options.previewTemplate.trim());\n          file.previewTemplate = file.previewElement;\n          this.previewsContainer.appendChild(file.previewElement);\n          _ref = file.previewElement.querySelectorAll(\"[data-dz-name]\");\n          for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n            node = _ref[_i];\n            node.textContent = this._renameFilename(file.name);\n          }\n          _ref1 = file.previewElement.querySelectorAll(\"[data-dz-size]\");\n          for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {\n            node = _ref1[_j];\n            node.innerHTML = this.filesize(file.size);\n          }\n          if (this.options.addRemoveLinks) {\n            file._removeLink = Dropzone.createElement(\"<a class=\\\"dz-remove\\\" href=\\\"javascript:undefined;\\\" data-dz-remove>\" + this.options.dictRemoveFile + \"</a>\");\n            file.previewElement.appendChild(file._removeLink);\n          }\n          removeFileEvent = (function(_this) {\n            return function(e) {\n              e.preventDefault();\n              e.stopPropagation();\n              if (file.status === Dropzone.UPLOADING) {\n                return Dropzone.confirm(_this.options.dictCancelUploadConfirmation, function() {\n                  return _this.removeFile(file);\n                });\n              } else {\n                if (_this.options.dictRemoveFileConfirmation) {\n                  return Dropzone.confirm(_this.options.dictRemoveFileConfirmation, function() {\n                    return _this.removeFile(file);\n                  });\n                } else {\n                  return _this.removeFile(file);\n                }\n              }\n            };\n          })(this);\n          _ref2 = file.previewElement.querySelectorAll(\"[data-dz-remove]\");\n          _results = [];\n          for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) {\n            removeLink = _ref2[_k];\n            _results.push(removeLink.addEventListener(\"click\", removeFileEvent));\n          }\n          return _results;\n        }\n      },\n      removedfile: function(file) {\n        var _ref;\n        if (file.previewElement) {\n          if ((_ref = file.previewElement) != null) {\n            _ref.parentNode.removeChild(file.previewElement);\n          }\n        }\n        return this._updateMaxFilesReachedClass();\n      },\n      thumbnail: function(file, dataUrl) {\n        var thumbnailElement, _i, _len, _ref;\n        if (file.previewElement) {\n          file.previewElement.classList.remove(\"dz-file-preview\");\n          _ref = file.previewElement.querySelectorAll(\"[data-dz-thumbnail]\");\n          for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n            thumbnailElement = _ref[_i];\n            thumbnailElement.alt = file.name;\n            thumbnailElement.src = dataUrl;\n          }\n          return setTimeout(((function(_this) {\n            return function() {\n              return file.previewElement.classList.add(\"dz-image-preview\");\n            };\n          })(this)), 1);\n        }\n      },\n      error: function(file, message) {\n        var node, _i, _len, _ref, _results;\n        if (file.previewElement) {\n          file.previewElement.classList.add(\"dz-error\");\n          if (typeof message !== \"String\" && message.error) {\n            message = message.error;\n          }\n          _ref = file.previewElement.querySelectorAll(\"[data-dz-errormessage]\");\n          _results = [];\n          for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n            node = _ref[_i];\n            _results.push(node.textContent = message);\n          }\n          return _results;\n        }\n      },\n      errormultiple: noop,\n      processing: function(file) {\n        if (file.previewElement) {\n          file.previewElement.classList.add(\"dz-processing\");\n          if (file._removeLink) {\n            return file._removeLink.textContent = this.options.dictCancelUpload;\n          }\n        }\n      },\n      processingmultiple: noop,\n      uploadprogress: function(file, progress, bytesSent) {\n        var node, _i, _len, _ref, _results;\n        if (file.previewElement) {\n          _ref = file.previewElement.querySelectorAll(\"[data-dz-uploadprogress]\");\n          _results = [];\n          for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n            node = _ref[_i];\n            if (node.nodeName === 'PROGRESS') {\n              _results.push(node.value = progress);\n            } else {\n              _results.push(node.style.width = \"\" + progress + \"%\");\n            }\n          }\n          return _results;\n        }\n      },\n      totaluploadprogress: noop,\n      sending: noop,\n      sendingmultiple: noop,\n      success: function(file) {\n        if (file.previewElement) {\n          return file.previewElement.classList.add(\"dz-success\");\n        }\n      },\n      successmultiple: noop,\n      canceled: function(file) {\n        return this.emit(\"error\", file, \"Upload canceled.\");\n      },\n      canceledmultiple: noop,\n      complete: function(file) {\n        if (file._removeLink) {\n          file._removeLink.textContent = this.options.dictRemoveFile;\n        }\n        if (file.previewElement) {\n          return file.previewElement.classList.add(\"dz-complete\");\n        }\n      },\n      completemultiple: noop,\n      maxfilesexceeded: noop,\n      maxfilesreached: noop,\n      queuecomplete: noop,\n      addedfiles: noop,\n      previewTemplate: \"<div class=\\\"dz-preview dz-file-preview\\\">\\n  <div class=\\\"dz-image\\\"><img data-dz-thumbnail /></div>\\n  <div class=\\\"dz-details\\\">\\n    <div class=\\\"dz-size\\\"><span data-dz-size></span></div>\\n    <div class=\\\"dz-filename\\\"><span data-dz-name></span></div>\\n  </div>\\n  <div class=\\\"dz-progress\\\"><span class=\\\"dz-upload\\\" data-dz-uploadprogress></span></div>\\n  <div class=\\\"dz-error-message\\\"><span data-dz-errormessage></span></div>\\n  <div class=\\\"dz-success-mark\\\">\\n    <svg width=\\\"54px\\\" height=\\\"54px\\\" viewBox=\\\"0 0 54 54\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" xmlns:sketch=\\\"http://www.bohemiancoding.com/sketch/ns\\\">\\n      <title>Check</title>\\n      <defs></defs>\\n      <g id=\\\"Page-1\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" sketch:type=\\\"MSPage\\\">\\n        <path d=\\\"M23.5,31.8431458 L17.5852419,25.9283877 C16.0248253,24.3679711 13.4910294,24.366835 11.9289322,25.9289322 C10.3700136,27.4878508 10.3665912,30.0234455 11.9283877,31.5852419 L20.4147581,40.0716123 C20.5133999,40.1702541 20.6159315,40.2626649 20.7218615,40.3488435 C22.2835669,41.8725651 24.794234,41.8626202 26.3461564,40.3106978 L43.3106978,23.3461564 C44.8771021,21.7797521 44.8758057,19.2483887 43.3137085,17.6862915 C41.7547899,16.1273729 39.2176035,16.1255422 37.6538436,17.6893022 L23.5,31.8431458 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z\\\" id=\\\"Oval-2\\\" stroke-opacity=\\\"0.198794158\\\" stroke=\\\"#747474\\\" fill-opacity=\\\"0.816519475\\\" fill=\\\"#FFFFFF\\\" sketch:type=\\\"MSShapeGroup\\\"></path>\\n      </g>\\n    </svg>\\n  </div>\\n  <div class=\\\"dz-error-mark\\\">\\n    <svg width=\\\"54px\\\" height=\\\"54px\\\" viewBox=\\\"0 0 54 54\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" xmlns:sketch=\\\"http://www.bohemiancoding.com/sketch/ns\\\">\\n      <title>Error</title>\\n      <defs></defs>\\n      <g id=\\\"Page-1\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" sketch:type=\\\"MSPage\\\">\\n        <g id=\\\"Check-+-Oval-2\\\" sketch:type=\\\"MSLayerGroup\\\" stroke=\\\"#747474\\\" stroke-opacity=\\\"0.198794158\\\" fill=\\\"#FFFFFF\\\" fill-opacity=\\\"0.816519475\\\">\\n          <path d=\\\"M32.6568542,29 L38.3106978,23.3461564 C39.8771021,21.7797521 39.8758057,19.2483887 38.3137085,17.6862915 C36.7547899,16.1273729 34.2176035,16.1255422 32.6538436,17.6893022 L27,23.3431458 L21.3461564,17.6893022 C19.7823965,16.1255422 17.2452101,16.1273729 15.6862915,17.6862915 C14.1241943,19.2483887 14.1228979,21.7797521 15.6893022,23.3461564 L21.3431458,29 L15.6893022,34.6538436 C14.1228979,36.2202479 14.1241943,38.7516113 15.6862915,40.3137085 C17.2452101,41.8726271 19.7823965,41.8744578 21.3461564,40.3106978 L27,34.6568542 L32.6538436,40.3106978 C34.2176035,41.8744578 36.7547899,41.8726271 38.3137085,40.3137085 C39.8758057,38.7516113 39.8771021,36.2202479 38.3106978,34.6538436 L32.6568542,29 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z\\\" id=\\\"Oval-2\\\" sketch:type=\\\"MSShapeGroup\\\"></path>\\n        </g>\\n      </g>\\n    </svg>\\n  </div>\\n</div>\"\n    };\n\n    extend = function() {\n      var key, object, objects, target, val, _i, _len;\n      target = arguments[0], objects = 2 <= arguments.length ? __slice.call(arguments, 1) : [];\n      for (_i = 0, _len = objects.length; _i < _len; _i++) {\n        object = objects[_i];\n        for (key in object) {\n          val = object[key];\n          target[key] = val;\n        }\n      }\n      return target;\n    };\n\n    function Dropzone(element, options) {\n      var elementOptions, fallback, _ref;\n      this.element = element;\n      this.version = Dropzone.version;\n      this.defaultOptions.previewTemplate = this.defaultOptions.previewTemplate.replace(/\\n*/g, \"\");\n      this.clickableElements = [];\n      this.listeners = [];\n      this.files = [];\n      if (typeof this.element === \"string\") {\n        this.element = document.querySelector(this.element);\n      }\n      if (!(this.element && (this.element.nodeType != null))) {\n        throw new Error(\"Invalid dropzone element.\");\n      }\n      if (this.element.dropzone) {\n        throw new Error(\"Dropzone already attached.\");\n      }\n      Dropzone.instances.push(this);\n      this.element.dropzone = this;\n      elementOptions = (_ref = Dropzone.optionsForElement(this.element)) != null ? _ref : {};\n      this.options = extend({}, this.defaultOptions, elementOptions, options != null ? options : {});\n      if (this.options.forceFallback || !Dropzone.isBrowserSupported()) {\n        return this.options.fallback.call(this);\n      }\n      if (this.options.url == null) {\n        this.options.url = this.element.getAttribute(\"action\");\n      }\n      if (!this.options.url) {\n        throw new Error(\"No URL provided.\");\n      }\n      if (this.options.acceptedFiles && this.options.acceptedMimeTypes) {\n        throw new Error(\"You can't provide both 'acceptedFiles' and 'acceptedMimeTypes'. 'acceptedMimeTypes' is deprecated.\");\n      }\n      if (this.options.acceptedMimeTypes) {\n        this.options.acceptedFiles = this.options.acceptedMimeTypes;\n        delete this.options.acceptedMimeTypes;\n      }\n      this.options.method = this.options.method.toUpperCase();\n      if ((fallback = this.getExistingFallback()) && fallback.parentNode) {\n        fallback.parentNode.removeChild(fallback);\n      }\n      if (this.options.previewsContainer !== false) {\n        if (this.options.previewsContainer) {\n          this.previewsContainer = Dropzone.getElement(this.options.previewsContainer, \"previewsContainer\");\n        } else {\n          this.previewsContainer = this.element;\n        }\n      }\n      if (this.options.clickable) {\n        if (this.options.clickable === true) {\n          this.clickableElements = [this.element];\n        } else {\n          this.clickableElements = Dropzone.getElements(this.options.clickable, \"clickable\");\n        }\n      }\n      this.init();\n    }\n\n    Dropzone.prototype.getAcceptedFiles = function() {\n      var file, _i, _len, _ref, _results;\n      _ref = this.files;\n      _results = [];\n      for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n        file = _ref[_i];\n        if (file.accepted) {\n          _results.push(file);\n        }\n      }\n      return _results;\n    };\n\n    Dropzone.prototype.getRejectedFiles = function() {\n      var file, _i, _len, _ref, _results;\n      _ref = this.files;\n      _results = [];\n      for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n        file = _ref[_i];\n        if (!file.accepted) {\n          _results.push(file);\n        }\n      }\n      return _results;\n    };\n\n    Dropzone.prototype.getFilesWithStatus = function(status) {\n      var file, _i, _len, _ref, _results;\n      _ref = this.files;\n      _results = [];\n      for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n        file = _ref[_i];\n        if (file.status === status) {\n          _results.push(file);\n        }\n      }\n      return _results;\n    };\n\n    Dropzone.prototype.getQueuedFiles = function() {\n      return this.getFilesWithStatus(Dropzone.QUEUED);\n    };\n\n    Dropzone.prototype.getUploadingFiles = function() {\n      return this.getFilesWithStatus(Dropzone.UPLOADING);\n    };\n\n    Dropzone.prototype.getAddedFiles = function() {\n      return this.getFilesWithStatus(Dropzone.ADDED);\n    };\n\n    Dropzone.prototype.getActiveFiles = function() {\n      var file, _i, _len, _ref, _results;\n      _ref = this.files;\n      _results = [];\n      for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n        file = _ref[_i];\n        if (file.status === Dropzone.UPLOADING || file.status === Dropzone.QUEUED) {\n          _results.push(file);\n        }\n      }\n      return _results;\n    };\n\n    Dropzone.prototype.init = function() {\n      var eventName, noPropagation, setupHiddenFileInput, _i, _len, _ref, _ref1;\n      if (this.element.tagName === \"form\") {\n        this.element.setAttribute(\"enctype\", \"multipart/form-data\");\n      }\n      if (this.element.classList.contains(\"dropzone\") && !this.element.querySelector(\".dz-message\")) {\n        this.element.appendChild(Dropzone.createElement(\"<div class=\\\"dz-default dz-message\\\"><span>\" + this.options.dictDefaultMessage + \"</span></div>\"));\n      }\n      if (this.clickableElements.length) {\n        setupHiddenFileInput = (function(_this) {\n          return function() {\n            if (_this.hiddenFileInput) {\n              _this.hiddenFileInput.parentNode.removeChild(_this.hiddenFileInput);\n            }\n            _this.hiddenFileInput = document.createElement(\"input\");\n            _this.hiddenFileInput.setAttribute(\"type\", \"file\");\n            if ((_this.options.maxFiles == null) || _this.options.maxFiles > 1) {\n              _this.hiddenFileInput.setAttribute(\"multiple\", \"multiple\");\n            }\n            _this.hiddenFileInput.className = \"dz-hidden-input\";\n            if (_this.options.acceptedFiles != null) {\n              _this.hiddenFileInput.setAttribute(\"accept\", _this.options.acceptedFiles);\n            }\n            if (_this.options.capture != null) {\n              _this.hiddenFileInput.setAttribute(\"capture\", _this.options.capture);\n            }\n            _this.hiddenFileInput.style.visibility = \"hidden\";\n            _this.hiddenFileInput.style.position = \"absolute\";\n            _this.hiddenFileInput.style.top = \"0\";\n            _this.hiddenFileInput.style.left = \"0\";\n            _this.hiddenFileInput.style.height = \"0\";\n            _this.hiddenFileInput.style.width = \"0\";\n            document.querySelector(_this.options.hiddenInputContainer).appendChild(_this.hiddenFileInput);\n            return _this.hiddenFileInput.addEventListener(\"change\", function() {\n              var file, files, _i, _len;\n              files = _this.hiddenFileInput.files;\n              if (files.length) {\n                for (_i = 0, _len = files.length; _i < _len; _i++) {\n                  file = files[_i];\n                  _this.addFile(file);\n                }\n              }\n              _this.emit(\"addedfiles\", files);\n              return setupHiddenFileInput();\n            });\n          };\n        })(this);\n        setupHiddenFileInput();\n      }\n      this.URL = (_ref = window.URL) != null ? _ref : window.webkitURL;\n      _ref1 = this.events;\n      for (_i = 0, _len = _ref1.length; _i < _len; _i++) {\n        eventName = _ref1[_i];\n        this.on(eventName, this.options[eventName]);\n      }\n      this.on(\"uploadprogress\", (function(_this) {\n        return function() {\n          return _this.updateTotalUploadProgress();\n        };\n      })(this));\n      this.on(\"removedfile\", (function(_this) {\n        return function() {\n          return _this.updateTotalUploadProgress();\n        };\n      })(this));\n      this.on(\"canceled\", (function(_this) {\n        return function(file) {\n          return _this.emit(\"complete\", file);\n        };\n      })(this));\n      this.on(\"complete\", (function(_this) {\n        return function(file) {\n          if (_this.getAddedFiles().length === 0 && _this.getUploadingFiles().length === 0 && _this.getQueuedFiles().length === 0) {\n            return setTimeout((function() {\n              return _this.emit(\"queuecomplete\");\n            }), 0);\n          }\n        };\n      })(this));\n      noPropagation = function(e) {\n        e.stopPropagation();\n        if (e.preventDefault) {\n          return e.preventDefault();\n        } else {\n          return e.returnValue = false;\n        }\n      };\n      this.listeners = [\n        {\n          element: this.element,\n          events: {\n            \"dragstart\": (function(_this) {\n              return function(e) {\n                return _this.emit(\"dragstart\", e);\n              };\n            })(this),\n            \"dragenter\": (function(_this) {\n              return function(e) {\n                noPropagation(e);\n                return _this.emit(\"dragenter\", e);\n              };\n            })(this),\n            \"dragover\": (function(_this) {\n              return function(e) {\n                var efct;\n                try {\n                  efct = e.dataTransfer.effectAllowed;\n                } catch (_error) {}\n                e.dataTransfer.dropEffect = 'move' === efct || 'linkMove' === efct ? 'move' : 'copy';\n                noPropagation(e);\n                return _this.emit(\"dragover\", e);\n              };\n            })(this),\n            \"dragleave\": (function(_this) {\n              return function(e) {\n                return _this.emit(\"dragleave\", e);\n              };\n            })(this),\n            \"drop\": (function(_this) {\n              return function(e) {\n                noPropagation(e);\n                return _this.drop(e);\n              };\n            })(this),\n            \"dragend\": (function(_this) {\n              return function(e) {\n                return _this.emit(\"dragend\", e);\n              };\n            })(this)\n          }\n        }\n      ];\n      this.clickableElements.forEach((function(_this) {\n        return function(clickableElement) {\n          return _this.listeners.push({\n            element: clickableElement,\n            events: {\n              \"click\": function(evt) {\n                if ((clickableElement !== _this.element) || (evt.target === _this.element || Dropzone.elementInside(evt.target, _this.element.querySelector(\".dz-message\")))) {\n                  _this.hiddenFileInput.click();\n                }\n                return true;\n              }\n            }\n          });\n        };\n      })(this));\n      this.enable();\n      return this.options.init.call(this);\n    };\n\n    Dropzone.prototype.destroy = function() {\n      var _ref;\n      this.disable();\n      this.removeAllFiles(true);\n      if ((_ref = this.hiddenFileInput) != null ? _ref.parentNode : void 0) {\n        this.hiddenFileInput.parentNode.removeChild(this.hiddenFileInput);\n        this.hiddenFileInput = null;\n      }\n      delete this.element.dropzone;\n      return Dropzone.instances.splice(Dropzone.instances.indexOf(this), 1);\n    };\n\n    Dropzone.prototype.updateTotalUploadProgress = function() {\n      var activeFiles, file, totalBytes, totalBytesSent, totalUploadProgress, _i, _len, _ref;\n      totalBytesSent = 0;\n      totalBytes = 0;\n      activeFiles = this.getActiveFiles();\n      if (activeFiles.length) {\n        _ref = this.getActiveFiles();\n        for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n          file = _ref[_i];\n          totalBytesSent += file.upload.bytesSent;\n          totalBytes += file.upload.total;\n        }\n        totalUploadProgress = 100 * totalBytesSent / totalBytes;\n      } else {\n        totalUploadProgress = 100;\n      }\n      return this.emit(\"totaluploadprogress\", totalUploadProgress, totalBytes, totalBytesSent);\n    };\n\n    Dropzone.prototype._getParamName = function(n) {\n      if (typeof this.options.paramName === \"function\") {\n        return this.options.paramName(n);\n      } else {\n        return \"\" + this.options.paramName + (this.options.uploadMultiple ? \"[\" + n + \"]\" : \"\");\n      }\n    };\n\n    Dropzone.prototype._renameFilename = function(name) {\n      if (typeof this.options.renameFilename !== \"function\") {\n        return name;\n      }\n      return this.options.renameFilename(name);\n    };\n\n    Dropzone.prototype.getFallbackForm = function() {\n      var existingFallback, fields, fieldsString, form;\n      if (existingFallback = this.getExistingFallback()) {\n        return existingFallback;\n      }\n      fieldsString = \"<div class=\\\"dz-fallback\\\">\";\n      if (this.options.dictFallbackText) {\n        fieldsString += \"<p>\" + this.options.dictFallbackText + \"</p>\";\n      }\n      fieldsString += \"<input type=\\\"file\\\" name=\\\"\" + (this._getParamName(0)) + \"\\\" \" + (this.options.uploadMultiple ? 'multiple=\"multiple\"' : void 0) + \" /><input type=\\\"submit\\\" value=\\\"Upload!\\\"></div>\";\n      fields = Dropzone.createElement(fieldsString);\n      if (this.element.tagName !== \"FORM\") {\n        form = Dropzone.createElement(\"<form action=\\\"\" + this.options.url + \"\\\" enctype=\\\"multipart/form-data\\\" method=\\\"\" + this.options.method + \"\\\"></form>\");\n        form.appendChild(fields);\n      } else {\n        this.element.setAttribute(\"enctype\", \"multipart/form-data\");\n        this.element.setAttribute(\"method\", this.options.method);\n      }\n      return form != null ? form : fields;\n    };\n\n    Dropzone.prototype.getExistingFallback = function() {\n      var fallback, getFallback, tagName, _i, _len, _ref;\n      getFallback = function(elements) {\n        var el, _i, _len;\n        for (_i = 0, _len = elements.length; _i < _len; _i++) {\n          el = elements[_i];\n          if (/(^| )fallback($| )/.test(el.className)) {\n            return el;\n          }\n        }\n      };\n      _ref = [\"div\", \"form\"];\n      for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n        tagName = _ref[_i];\n        if (fallback = getFallback(this.element.getElementsByTagName(tagName))) {\n          return fallback;\n        }\n      }\n    };\n\n    Dropzone.prototype.setupEventListeners = function() {\n      var elementListeners, event, listener, _i, _len, _ref, _results;\n      _ref = this.listeners;\n      _results = [];\n      for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n        elementListeners = _ref[_i];\n        _results.push((function() {\n          var _ref1, _results1;\n          _ref1 = elementListeners.events;\n          _results1 = [];\n          for (event in _ref1) {\n            listener = _ref1[event];\n            _results1.push(elementListeners.element.addEventListener(event, listener, false));\n          }\n          return _results1;\n        })());\n      }\n      return _results;\n    };\n\n    Dropzone.prototype.removeEventListeners = function() {\n      var elementListeners, event, listener, _i, _len, _ref, _results;\n      _ref = this.listeners;\n      _results = [];\n      for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n        elementListeners = _ref[_i];\n        _results.push((function() {\n          var _ref1, _results1;\n          _ref1 = elementListeners.events;\n          _results1 = [];\n          for (event in _ref1) {\n            listener = _ref1[event];\n            _results1.push(elementListeners.element.removeEventListener(event, listener, false));\n          }\n          return _results1;\n        })());\n      }\n      return _results;\n    };\n\n    Dropzone.prototype.disable = function() {\n      var file, _i, _len, _ref, _results;\n      this.clickableElements.forEach(function(element) {\n        return element.classList.remove(\"dz-clickable\");\n      });\n      this.removeEventListeners();\n      _ref = this.files;\n      _results = [];\n      for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n        file = _ref[_i];\n        _results.push(this.cancelUpload(file));\n      }\n      return _results;\n    };\n\n    Dropzone.prototype.enable = function() {\n      this.clickableElements.forEach(function(element) {\n        return element.classList.add(\"dz-clickable\");\n      });\n      return this.setupEventListeners();\n    };\n\n    Dropzone.prototype.filesize = function(size) {\n      var cutoff, i, selectedSize, selectedUnit, unit, units, _i, _len;\n      selectedSize = 0;\n      selectedUnit = \"b\";\n      if (size > 0) {\n        units = ['TB', 'GB', 'MB', 'KB', 'b'];\n        for (i = _i = 0, _len = units.length; _i < _len; i = ++_i) {\n          unit = units[i];\n          cutoff = Math.pow(this.options.filesizeBase, 4 - i) / 10;\n          if (size >= cutoff) {\n            selectedSize = size / Math.pow(this.options.filesizeBase, 4 - i);\n            selectedUnit = unit;\n            break;\n          }\n        }\n        selectedSize = Math.round(10 * selectedSize) / 10;\n      }\n      return \"<strong>\" + selectedSize + \"</strong> \" + selectedUnit;\n    };\n\n    Dropzone.prototype._updateMaxFilesReachedClass = function() {\n      if ((this.options.maxFiles != null) && this.getAcceptedFiles().length >= this.options.maxFiles) {\n        if (this.getAcceptedFiles().length === this.options.maxFiles) {\n          this.emit('maxfilesreached', this.files);\n        }\n        return this.element.classList.add(\"dz-max-files-reached\");\n      } else {\n        return this.element.classList.remove(\"dz-max-files-reached\");\n      }\n    };\n\n    Dropzone.prototype.drop = function(e) {\n      var files, items;\n      if (!e.dataTransfer) {\n        return;\n      }\n      this.emit(\"drop\", e);\n      files = e.dataTransfer.files;\n      this.emit(\"addedfiles\", files);\n      if (files.length) {\n        items = e.dataTransfer.items;\n        if (items && items.length && (items[0].webkitGetAsEntry != null)) {\n          this._addFilesFromItems(items);\n        } else {\n          this.handleFiles(files);\n        }\n      }\n    };\n\n    Dropzone.prototype.paste = function(e) {\n      var items, _ref;\n      if ((e != null ? (_ref = e.clipboardData) != null ? _ref.items : void 0 : void 0) == null) {\n        return;\n      }\n      this.emit(\"paste\", e);\n      items = e.clipboardData.items;\n      if (items.length) {\n        return this._addFilesFromItems(items);\n      }\n    };\n\n    Dropzone.prototype.handleFiles = function(files) {\n      var file, _i, _len, _results;\n      _results = [];\n      for (_i = 0, _len = files.length; _i < _len; _i++) {\n        file = files[_i];\n        _results.push(this.addFile(file));\n      }\n      return _results;\n    };\n\n    Dropzone.prototype._addFilesFromItems = function(items) {\n      var entry, item, _i, _len, _results;\n      _results = [];\n      for (_i = 0, _len = items.length; _i < _len; _i++) {\n        item = items[_i];\n        if ((item.webkitGetAsEntry != null) && (entry = item.webkitGetAsEntry())) {\n          if (entry.isFile) {\n            _results.push(this.addFile(item.getAsFile()));\n          } else if (entry.isDirectory) {\n            _results.push(this._addFilesFromDirectory(entry, entry.name));\n          } else {\n            _results.push(void 0);\n          }\n        } else if (item.getAsFile != null) {\n          if ((item.kind == null) || item.kind === \"file\") {\n            _results.push(this.addFile(item.getAsFile()));\n          } else {\n            _results.push(void 0);\n          }\n        } else {\n          _results.push(void 0);\n        }\n      }\n      return _results;\n    };\n\n    Dropzone.prototype._addFilesFromDirectory = function(directory, path) {\n      var dirReader, errorHandler, readEntries;\n      dirReader = directory.createReader();\n      errorHandler = function(error) {\n        return typeof console !== \"undefined\" && console !== null ? typeof console.log === \"function\" ? console.log(error) : void 0 : void 0;\n      };\n      readEntries = (function(_this) {\n        return function() {\n          return dirReader.readEntries(function(entries) {\n            var entry, _i, _len;\n            if (entries.length > 0) {\n              for (_i = 0, _len = entries.length; _i < _len; _i++) {\n                entry = entries[_i];\n                if (entry.isFile) {\n                  entry.file(function(file) {\n                    if (_this.options.ignoreHiddenFiles && file.name.substring(0, 1) === '.') {\n                      return;\n                    }\n                    file.fullPath = \"\" + path + \"/\" + file.name;\n                    return _this.addFile(file);\n                  });\n                } else if (entry.isDirectory) {\n                  _this._addFilesFromDirectory(entry, \"\" + path + \"/\" + entry.name);\n                }\n              }\n              readEntries();\n            }\n            return null;\n          }, errorHandler);\n        };\n      })(this);\n      return readEntries();\n    };\n\n    Dropzone.prototype.accept = function(file, done) {\n      if (file.size > this.options.maxFilesize * 1024 * 1024) {\n        return done(this.options.dictFileTooBig.replace(\"{{filesize}}\", Math.round(file.size / 1024 / 10.24) / 100).replace(\"{{maxFilesize}}\", this.options.maxFilesize));\n      } else if (!Dropzone.isValidFile(file, this.options.acceptedFiles)) {\n        return done(this.options.dictInvalidFileType);\n      } else if ((this.options.maxFiles != null) && this.getAcceptedFiles().length >= this.options.maxFiles) {\n        done(this.options.dictMaxFilesExceeded.replace(\"{{maxFiles}}\", this.options.maxFiles));\n        return this.emit(\"maxfilesexceeded\", file);\n      } else {\n        return this.options.accept.call(this, file, done);\n      }\n    };\n\n    Dropzone.prototype.addFile = function(file) {\n      file.upload = {\n        progress: 0,\n        total: file.size,\n        bytesSent: 0\n      };\n      this.files.push(file);\n      file.status = Dropzone.ADDED;\n      this.emit(\"addedfile\", file);\n      this._enqueueThumbnail(file);\n      return this.accept(file, (function(_this) {\n        return function(error) {\n          if (error) {\n            file.accepted = false;\n            _this._errorProcessing([file], error);\n          } else {\n            file.accepted = true;\n            if (_this.options.autoQueue) {\n              _this.enqueueFile(file);\n            }\n          }\n          return _this._updateMaxFilesReachedClass();\n        };\n      })(this));\n    };\n\n    Dropzone.prototype.enqueueFiles = function(files) {\n      var file, _i, _len;\n      for (_i = 0, _len = files.length; _i < _len; _i++) {\n        file = files[_i];\n        this.enqueueFile(file);\n      }\n      return null;\n    };\n\n    Dropzone.prototype.enqueueFile = function(file) {\n      if (file.status === Dropzone.ADDED && file.accepted === true) {\n        file.status = Dropzone.QUEUED;\n        if (this.options.autoProcessQueue) {\n          return setTimeout(((function(_this) {\n            return function() {\n              return _this.processQueue();\n            };\n          })(this)), 0);\n        }\n      } else {\n        throw new Error(\"This file can't be queued because it has already been processed or was rejected.\");\n      }\n    };\n\n    Dropzone.prototype._thumbnailQueue = [];\n\n    Dropzone.prototype._processingThumbnail = false;\n\n    Dropzone.prototype._enqueueThumbnail = function(file) {\n      if (this.options.createImageThumbnails && file.type.match(/image.*/) && file.size <= this.options.maxThumbnailFilesize * 1024 * 1024) {\n        this._thumbnailQueue.push(file);\n        return setTimeout(((function(_this) {\n          return function() {\n            return _this._processThumbnailQueue();\n          };\n        })(this)), 0);\n      }\n    };\n\n    Dropzone.prototype._processThumbnailQueue = function() {\n      if (this._processingThumbnail || this._thumbnailQueue.length === 0) {\n        return;\n      }\n      this._processingThumbnail = true;\n      return this.createThumbnail(this._thumbnailQueue.shift(), (function(_this) {\n        return function() {\n          _this._processingThumbnail = false;\n          return _this._processThumbnailQueue();\n        };\n      })(this));\n    };\n\n    Dropzone.prototype.removeFile = function(file) {\n      if (file.status === Dropzone.UPLOADING) {\n        this.cancelUpload(file);\n      }\n      this.files = without(this.files, file);\n      this.emit(\"removedfile\", file);\n      if (this.files.length === 0) {\n        return this.emit(\"reset\");\n      }\n    };\n\n    Dropzone.prototype.removeAllFiles = function(cancelIfNecessary) {\n      var file, _i, _len, _ref;\n      if (cancelIfNecessary == null) {\n        cancelIfNecessary = false;\n      }\n      _ref = this.files.slice();\n      for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n        file = _ref[_i];\n        if (file.status !== Dropzone.UPLOADING || cancelIfNecessary) {\n          this.removeFile(file);\n        }\n      }\n      return null;\n    };\n\n    Dropzone.prototype.createThumbnail = function(file, callback) {\n      var fileReader;\n      fileReader = new FileReader;\n      fileReader.onload = (function(_this) {\n        return function() {\n          if (file.type === \"image/svg+xml\") {\n            _this.emit(\"thumbnail\", file, fileReader.result);\n            if (callback != null) {\n              callback();\n            }\n            return;\n          }\n          return _this.createThumbnailFromUrl(file, fileReader.result, callback);\n        };\n      })(this);\n      return fileReader.readAsDataURL(file);\n    };\n\n    Dropzone.prototype.createThumbnailFromUrl = function(file, imageUrl, callback, crossOrigin) {\n      var img;\n      img = document.createElement(\"img\");\n      if (crossOrigin) {\n        img.crossOrigin = crossOrigin;\n      }\n      img.onload = (function(_this) {\n        return function() {\n          var canvas, ctx, resizeInfo, thumbnail, _ref, _ref1, _ref2, _ref3;\n          file.width = img.width;\n          file.height = img.height;\n          resizeInfo = _this.options.resize.call(_this, file);\n          if (resizeInfo.trgWidth == null) {\n            resizeInfo.trgWidth = resizeInfo.optWidth;\n          }\n          if (resizeInfo.trgHeight == null) {\n            resizeInfo.trgHeight = resizeInfo.optHeight;\n          }\n          canvas = document.createElement(\"canvas\");\n          ctx = canvas.getContext(\"2d\");\n          canvas.width = resizeInfo.trgWidth;\n          canvas.height = resizeInfo.trgHeight;\n          drawImageIOSFix(ctx, img, (_ref = resizeInfo.srcX) != null ? _ref : 0, (_ref1 = resizeInfo.srcY) != null ? _ref1 : 0, resizeInfo.srcWidth, resizeInfo.srcHeight, (_ref2 = resizeInfo.trgX) != null ? _ref2 : 0, (_ref3 = resizeInfo.trgY) != null ? _ref3 : 0, resizeInfo.trgWidth, resizeInfo.trgHeight);\n          thumbnail = canvas.toDataURL(\"image/png\");\n          _this.emit(\"thumbnail\", file, thumbnail);\n          if (callback != null) {\n            return callback();\n          }\n        };\n      })(this);\n      if (callback != null) {\n        img.onerror = callback;\n      }\n      return img.src = imageUrl;\n    };\n\n    Dropzone.prototype.processQueue = function() {\n      var i, parallelUploads, processingLength, queuedFiles;\n      parallelUploads = this.options.parallelUploads;\n      processingLength = this.getUploadingFiles().length;\n      i = processingLength;\n      if (processingLength >= parallelUploads) {\n        return;\n      }\n      queuedFiles = this.getQueuedFiles();\n      if (!(queuedFiles.length > 0)) {\n        return;\n      }\n      if (this.options.uploadMultiple) {\n        return this.processFiles(queuedFiles.slice(0, parallelUploads - processingLength));\n      } else {\n        while (i < parallelUploads) {\n          if (!queuedFiles.length) {\n            return;\n          }\n          this.processFile(queuedFiles.shift());\n          i++;\n        }\n      }\n    };\n\n    Dropzone.prototype.processFile = function(file) {\n      return this.processFiles([file]);\n    };\n\n    Dropzone.prototype.processFiles = function(files) {\n      var file, _i, _len;\n      for (_i = 0, _len = files.length; _i < _len; _i++) {\n        file = files[_i];\n        file.processing = true;\n        file.status = Dropzone.UPLOADING;\n        this.emit(\"processing\", file);\n      }\n      if (this.options.uploadMultiple) {\n        this.emit(\"processingmultiple\", files);\n      }\n      return this.uploadFiles(files);\n    };\n\n    Dropzone.prototype._getFilesWithXhr = function(xhr) {\n      var file, files;\n      return files = (function() {\n        var _i, _len, _ref, _results;\n        _ref = this.files;\n        _results = [];\n        for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n          file = _ref[_i];\n          if (file.xhr === xhr) {\n            _results.push(file);\n          }\n        }\n        return _results;\n      }).call(this);\n    };\n\n    Dropzone.prototype.cancelUpload = function(file) {\n      var groupedFile, groupedFiles, _i, _j, _len, _len1, _ref;\n      if (file.status === Dropzone.UPLOADING) {\n        groupedFiles = this._getFilesWithXhr(file.xhr);\n        for (_i = 0, _len = groupedFiles.length; _i < _len; _i++) {\n          groupedFile = groupedFiles[_i];\n          groupedFile.status = Dropzone.CANCELED;\n        }\n        file.xhr.abort();\n        for (_j = 0, _len1 = groupedFiles.length; _j < _len1; _j++) {\n          groupedFile = groupedFiles[_j];\n          this.emit(\"canceled\", groupedFile);\n        }\n        if (this.options.uploadMultiple) {\n          this.emit(\"canceledmultiple\", groupedFiles);\n        }\n      } else if ((_ref = file.status) === Dropzone.ADDED || _ref === Dropzone.QUEUED) {\n        file.status = Dropzone.CANCELED;\n        this.emit(\"canceled\", file);\n        if (this.options.uploadMultiple) {\n          this.emit(\"canceledmultiple\", [file]);\n        }\n      }\n      if (this.options.autoProcessQueue) {\n        return this.processQueue();\n      }\n    };\n\n    resolveOption = function() {\n      var args, option;\n      option = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];\n      if (typeof option === 'function') {\n        return option.apply(this, args);\n      }\n      return option;\n    };\n\n    Dropzone.prototype.uploadFile = function(file) {\n      return this.uploadFiles([file]);\n    };\n\n    Dropzone.prototype.uploadFiles = function(files) {\n      var file, formData, handleError, headerName, headerValue, headers, i, input, inputName, inputType, key, method, option, progressObj, response, updateProgress, url, value, xhr, _i, _j, _k, _l, _len, _len1, _len2, _len3, _m, _ref, _ref1, _ref2, _ref3, _ref4, _ref5;\n      xhr = new XMLHttpRequest();\n      for (_i = 0, _len = files.length; _i < _len; _i++) {\n        file = files[_i];\n        file.xhr = xhr;\n      }\n      method = resolveOption(this.options.method, files);\n      url = resolveOption(this.options.url, files);\n      xhr.open(method, url, true);\n      xhr.withCredentials = !!this.options.withCredentials;\n      response = null;\n      handleError = (function(_this) {\n        return function() {\n          var _j, _len1, _results;\n          _results = [];\n          for (_j = 0, _len1 = files.length; _j < _len1; _j++) {\n            file = files[_j];\n            _results.push(_this._errorProcessing(files, response || _this.options.dictResponseError.replace(\"{{statusCode}}\", xhr.status), xhr));\n          }\n          return _results;\n        };\n      })(this);\n      updateProgress = (function(_this) {\n        return function(e) {\n          var allFilesFinished, progress, _j, _k, _l, _len1, _len2, _len3, _results;\n          if (e != null) {\n            progress = 100 * e.loaded / e.total;\n            for (_j = 0, _len1 = files.length; _j < _len1; _j++) {\n              file = files[_j];\n              file.upload = {\n                progress: progress,\n                total: e.total,\n                bytesSent: e.loaded\n              };\n            }\n          } else {\n            allFilesFinished = true;\n            progress = 100;\n            for (_k = 0, _len2 = files.length; _k < _len2; _k++) {\n              file = files[_k];\n              if (!(file.upload.progress === 100 && file.upload.bytesSent === file.upload.total)) {\n                allFilesFinished = false;\n              }\n              file.upload.progress = progress;\n              file.upload.bytesSent = file.upload.total;\n            }\n            if (allFilesFinished) {\n              return;\n            }\n          }\n          _results = [];\n          for (_l = 0, _len3 = files.length; _l < _len3; _l++) {\n            file = files[_l];\n            _results.push(_this.emit(\"uploadprogress\", file, progress, file.upload.bytesSent));\n          }\n          return _results;\n        };\n      })(this);\n      xhr.onload = (function(_this) {\n        return function(e) {\n          var _ref;\n          if (files[0].status === Dropzone.CANCELED) {\n            return;\n          }\n          if (xhr.readyState !== 4) {\n            return;\n          }\n          response = xhr.responseText;\n          if (xhr.getResponseHeader(\"content-type\") && ~xhr.getResponseHeader(\"content-type\").indexOf(\"application/json\")) {\n            try {\n              response = JSON.parse(response);\n            } catch (_error) {\n              e = _error;\n              response = \"Invalid JSON response from server.\";\n            }\n          }\n          updateProgress();\n          if (!((200 <= (_ref = xhr.status) && _ref < 300))) {\n            return handleError();\n          } else {\n            return _this._finished(files, response, e);\n          }\n        };\n      })(this);\n      xhr.onerror = (function(_this) {\n        return function() {\n          if (files[0].status === Dropzone.CANCELED) {\n            return;\n          }\n          return handleError();\n        };\n      })(this);\n      progressObj = (_ref = xhr.upload) != null ? _ref : xhr;\n      progressObj.onprogress = updateProgress;\n      headers = {\n        \"Accept\": \"application/json\",\n        \"Cache-Control\": \"no-cache\",\n        \"X-Requested-With\": \"XMLHttpRequest\"\n      };\n      if (this.options.headers) {\n        extend(headers, this.options.headers);\n      }\n      for (headerName in headers) {\n        headerValue = headers[headerName];\n        if (headerValue) {\n          xhr.setRequestHeader(headerName, headerValue);\n        }\n      }\n      formData = new FormData();\n      if (this.options.params) {\n        _ref1 = this.options.params;\n        for (key in _ref1) {\n          value = _ref1[key];\n          formData.append(key, value);\n        }\n      }\n      for (_j = 0, _len1 = files.length; _j < _len1; _j++) {\n        file = files[_j];\n        this.emit(\"sending\", file, xhr, formData);\n      }\n      if (this.options.uploadMultiple) {\n        this.emit(\"sendingmultiple\", files, xhr, formData);\n      }\n      if (this.element.tagName === \"FORM\") {\n        _ref2 = this.element.querySelectorAll(\"input, textarea, select, button\");\n        for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) {\n          input = _ref2[_k];\n          inputName = input.getAttribute(\"name\");\n          inputType = input.getAttribute(\"type\");\n          if (input.tagName === \"SELECT\" && input.hasAttribute(\"multiple\")) {\n            _ref3 = input.options;\n            for (_l = 0, _len3 = _ref3.length; _l < _len3; _l++) {\n              option = _ref3[_l];\n              if (option.selected) {\n                formData.append(inputName, option.value);\n              }\n            }\n          } else if (!inputType || ((_ref4 = inputType.toLowerCase()) !== \"checkbox\" && _ref4 !== \"radio\") || input.checked) {\n            formData.append(inputName, input.value);\n          }\n        }\n      }\n      for (i = _m = 0, _ref5 = files.length - 1; 0 <= _ref5 ? _m <= _ref5 : _m >= _ref5; i = 0 <= _ref5 ? ++_m : --_m) {\n        formData.append(this._getParamName(i), files[i], this._renameFilename(files[i].name));\n      }\n      return this.submitRequest(xhr, formData, files);\n    };\n\n    Dropzone.prototype.submitRequest = function(xhr, formData, files) {\n      return xhr.send(formData);\n    };\n\n    Dropzone.prototype._finished = function(files, responseText, e) {\n      var file, _i, _len;\n      for (_i = 0, _len = files.length; _i < _len; _i++) {\n        file = files[_i];\n        file.status = Dropzone.SUCCESS;\n        this.emit(\"success\", file, responseText, e);\n        this.emit(\"complete\", file);\n      }\n      if (this.options.uploadMultiple) {\n        this.emit(\"successmultiple\", files, responseText, e);\n        this.emit(\"completemultiple\", files);\n      }\n      if (this.options.autoProcessQueue) {\n        return this.processQueue();\n      }\n    };\n\n    Dropzone.prototype._errorProcessing = function(files, message, xhr) {\n      var file, _i, _len;\n      for (_i = 0, _len = files.length; _i < _len; _i++) {\n        file = files[_i];\n        file.status = Dropzone.ERROR;\n        this.emit(\"error\", file, message, xhr);\n        this.emit(\"complete\", file);\n      }\n      if (this.options.uploadMultiple) {\n        this.emit(\"errormultiple\", files, message, xhr);\n        this.emit(\"completemultiple\", files);\n      }\n      if (this.options.autoProcessQueue) {\n        return this.processQueue();\n      }\n    };\n\n    return Dropzone;\n\n  })(Emitter);\n\n  Dropzone.version = \"4.3.0\";\n\n  Dropzone.options = {};\n\n  Dropzone.optionsForElement = function(element) {\n    if (element.getAttribute(\"id\")) {\n      return Dropzone.options[camelize(element.getAttribute(\"id\"))];\n    } else {\n      return void 0;\n    }\n  };\n\n  Dropzone.instances = [];\n\n  Dropzone.forElement = function(element) {\n    if (typeof element === \"string\") {\n      element = document.querySelector(element);\n    }\n    if ((element != null ? element.dropzone : void 0) == null) {\n      throw new Error(\"No Dropzone found for given element. This is probably because you're trying to access it before Dropzone had the time to initialize. Use the `init` option to setup any additional observers on your Dropzone.\");\n    }\n    return element.dropzone;\n  };\n\n  Dropzone.autoDiscover = true;\n\n  Dropzone.discover = function() {\n    var checkElements, dropzone, dropzones, _i, _len, _results;\n    if (document.querySelectorAll) {\n      dropzones = document.querySelectorAll(\".dropzone\");\n    } else {\n      dropzones = [];\n      checkElements = function(elements) {\n        var el, _i, _len, _results;\n        _results = [];\n        for (_i = 0, _len = elements.length; _i < _len; _i++) {\n          el = elements[_i];\n          if (/(^| )dropzone($| )/.test(el.className)) {\n            _results.push(dropzones.push(el));\n          } else {\n            _results.push(void 0);\n          }\n        }\n        return _results;\n      };\n      checkElements(document.getElementsByTagName(\"div\"));\n      checkElements(document.getElementsByTagName(\"form\"));\n    }\n    _results = [];\n    for (_i = 0, _len = dropzones.length; _i < _len; _i++) {\n      dropzone = dropzones[_i];\n      if (Dropzone.optionsForElement(dropzone) !== false) {\n        _results.push(new Dropzone(dropzone));\n      } else {\n        _results.push(void 0);\n      }\n    }\n    return _results;\n  };\n\n  Dropzone.blacklistedBrowsers = [/opera.*Macintosh.*version\\/12/i];\n\n  Dropzone.isBrowserSupported = function() {\n    var capableBrowser, regex, _i, _len, _ref;\n    capableBrowser = true;\n    if (window.File && window.FileReader && window.FileList && window.Blob && window.FormData && document.querySelector) {\n      if (!(\"classList\" in document.createElement(\"a\"))) {\n        capableBrowser = false;\n      } else {\n        _ref = Dropzone.blacklistedBrowsers;\n        for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n          regex = _ref[_i];\n          if (regex.test(navigator.userAgent)) {\n            capableBrowser = false;\n            continue;\n          }\n        }\n      }\n    } else {\n      capableBrowser = false;\n    }\n    return capableBrowser;\n  };\n\n  without = function(list, rejectedItem) {\n    var item, _i, _len, _results;\n    _results = [];\n    for (_i = 0, _len = list.length; _i < _len; _i++) {\n      item = list[_i];\n      if (item !== rejectedItem) {\n        _results.push(item);\n      }\n    }\n    return _results;\n  };\n\n  camelize = function(str) {\n    return str.replace(/[\\-_](\\w)/g, function(match) {\n      return match.charAt(1).toUpperCase();\n    });\n  };\n\n  Dropzone.createElement = function(string) {\n    var div;\n    div = document.createElement(\"div\");\n    div.innerHTML = string;\n    return div.childNodes[0];\n  };\n\n  Dropzone.elementInside = function(element, container) {\n    if (element === container) {\n      return true;\n    }\n    while (element = element.parentNode) {\n      if (element === container) {\n        return true;\n      }\n    }\n    return false;\n  };\n\n  Dropzone.getElement = function(el, name) {\n    var element;\n    if (typeof el === \"string\") {\n      element = document.querySelector(el);\n    } else if (el.nodeType != null) {\n      element = el;\n    }\n    if (element == null) {\n      throw new Error(\"Invalid `\" + name + \"` option provided. Please provide a CSS selector or a plain HTML element.\");\n    }\n    return element;\n  };\n\n  Dropzone.getElements = function(els, name) {\n    var e, el, elements, _i, _j, _len, _len1, _ref;\n    if (els instanceof Array) {\n      elements = [];\n      try {\n        for (_i = 0, _len = els.length; _i < _len; _i++) {\n          el = els[_i];\n          elements.push(this.getElement(el, name));\n        }\n      } catch (_error) {\n        e = _error;\n        elements = null;\n      }\n    } else if (typeof els === \"string\") {\n      elements = [];\n      _ref = document.querySelectorAll(els);\n      for (_j = 0, _len1 = _ref.length; _j < _len1; _j++) {\n        el = _ref[_j];\n        elements.push(el);\n      }\n    } else if (els.nodeType != null) {\n      elements = [els];\n    }\n    if (!((elements != null) && elements.length)) {\n      throw new Error(\"Invalid `\" + name + \"` option provided. Please provide a CSS selector, a plain HTML element or a list of those.\");\n    }\n    return elements;\n  };\n\n  Dropzone.confirm = function(question, accepted, rejected) {\n    if (window.confirm(question)) {\n      return accepted();\n    } else if (rejected != null) {\n      return rejected();\n    }\n  };\n\n  Dropzone.isValidFile = function(file, acceptedFiles) {\n    var baseMimeType, mimeType, validType, _i, _len;\n    if (!acceptedFiles) {\n      return true;\n    }\n    acceptedFiles = acceptedFiles.split(\",\");\n    mimeType = file.type;\n    baseMimeType = mimeType.replace(/\\/.*$/, \"\");\n    for (_i = 0, _len = acceptedFiles.length; _i < _len; _i++) {\n      validType = acceptedFiles[_i];\n      validType = validType.trim();\n      if (validType.charAt(0) === \".\") {\n        if (file.name.toLowerCase().indexOf(validType.toLowerCase(), file.name.length - validType.length) !== -1) {\n          return true;\n        }\n      } else if (/\\/\\*$/.test(validType)) {\n        if (baseMimeType === validType.replace(/\\/.*$/, \"\")) {\n          return true;\n        }\n      } else {\n        if (mimeType === validType) {\n          return true;\n        }\n      }\n    }\n    return false;\n  };\n\n  if (typeof jQuery !== \"undefined\" && jQuery !== null) {\n    jQuery.fn.dropzone = function(options) {\n      return this.each(function() {\n        return new Dropzone(this, options);\n      });\n    };\n  }\n\n  if (typeof module !== \"undefined\" && module !== null) {\n    module.exports = Dropzone;\n  } else {\n    window.Dropzone = Dropzone;\n  }\n\n  Dropzone.ADDED = \"added\";\n\n  Dropzone.QUEUED = \"queued\";\n\n  Dropzone.ACCEPTED = Dropzone.QUEUED;\n\n  Dropzone.UPLOADING = \"uploading\";\n\n  Dropzone.PROCESSING = Dropzone.UPLOADING;\n\n  Dropzone.CANCELED = \"canceled\";\n\n  Dropzone.ERROR = \"error\";\n\n  Dropzone.SUCCESS = \"success\";\n\n\n  /*\n  \n  Bugfix for iOS 6 and 7\n  Source: http://stackoverflow.com/questions/11929099/html5-canvas-drawimage-ratio-bug-ios\n  based on the work of https://github.com/stomita/ios-imagefile-megapixel\n   */\n\n  detectVerticalSquash = function(img) {\n    var alpha, canvas, ctx, data, ey, ih, iw, py, ratio, sy;\n    iw = img.naturalWidth;\n    ih = img.naturalHeight;\n    canvas = document.createElement(\"canvas\");\n    canvas.width = 1;\n    canvas.height = ih;\n    ctx = canvas.getContext(\"2d\");\n    ctx.drawImage(img, 0, 0);\n    data = ctx.getImageData(0, 0, 1, ih).data;\n    sy = 0;\n    ey = ih;\n    py = ih;\n    while (py > sy) {\n      alpha = data[(py - 1) * 4 + 3];\n      if (alpha === 0) {\n        ey = py;\n      } else {\n        sy = py;\n      }\n      py = (ey + sy) >> 1;\n    }\n    ratio = py / ih;\n    if (ratio === 0) {\n      return 1;\n    } else {\n      return ratio;\n    }\n  };\n\n  drawImageIOSFix = function(ctx, img, sx, sy, sw, sh, dx, dy, dw, dh) {\n    var vertSquashRatio;\n    vertSquashRatio = detectVerticalSquash(img);\n    return ctx.drawImage(img, sx, sy, sw, sh, dx, dy, dw, dh / vertSquashRatio);\n  };\n\n\n  /*\n   * contentloaded.js\n   *\n   * Author: Diego Perini (diego.perini at gmail.com)\n   * Summary: cross-browser wrapper for DOMContentLoaded\n   * Updated: 20101020\n   * License: MIT\n   * Version: 1.2\n   *\n   * URL:\n   * http://javascript.nwbox.com/ContentLoaded/\n   * http://javascript.nwbox.com/ContentLoaded/MIT-LICENSE\n   */\n\n  contentLoaded = function(win, fn) {\n    var add, doc, done, init, poll, pre, rem, root, top;\n    done = false;\n    top = true;\n    doc = win.document;\n    root = doc.documentElement;\n    add = (doc.addEventListener ? \"addEventListener\" : \"attachEvent\");\n    rem = (doc.addEventListener ? \"removeEventListener\" : \"detachEvent\");\n    pre = (doc.addEventListener ? \"\" : \"on\");\n    init = function(e) {\n      if (e.type === \"readystatechange\" && doc.readyState !== \"complete\") {\n        return;\n      }\n      (e.type === \"load\" ? win : doc)[rem](pre + e.type, init, false);\n      if (!done && (done = true)) {\n        return fn.call(win, e.type || e);\n      }\n    };\n    poll = function() {\n      var e;\n      try {\n        root.doScroll(\"left\");\n      } catch (_error) {\n        e = _error;\n        setTimeout(poll, 50);\n        return;\n      }\n      return init(\"poll\");\n    };\n    if (doc.readyState !== \"complete\") {\n      if (doc.createEventObject && root.doScroll) {\n        try {\n          top = !win.frameElement;\n        } catch (_error) {}\n        if (top) {\n          poll();\n        }\n      }\n      doc[add](pre + \"DOMContentLoaded\", init, false);\n      doc[add](pre + \"readystatechange\", init, false);\n      return win[add](pre + \"load\", init, false);\n    }\n  };\n\n  Dropzone._autoDiscoverFunction = function() {\n    if (Dropzone.autoDiscover) {\n      return Dropzone.discover();\n    }\n  };\n\n  contentLoaded(window, Dropzone._autoDiscoverFunction);\n\n}).call(this);"
  },
  {
    "path": "public/admin/js/duallistbox/duallistbox.active.js",
    "content": "(function ($) {\n \"use strict\";\n \n\t$('.dual_select').bootstrapDualListbox({\n\t\t\tselectorMinimalHeight: 160\n\t\t});\n\n \n})(jQuery); "
  },
  {
    "path": "public/admin/js/duallistbox/jquery.bootstrap-duallistbox.js",
    "content": "/*\n *  Bootstrap Duallistbox - v3.0.5\n *  A responsive dual listbox widget optimized for Twitter Bootstrap. It works on all modern browsers and on touch devices.\n *  http://www.virtuosoft.eu/code/bootstrap-duallistbox/\n *\n *  Made by István Ujj-Mészáros\n *  Under Apache License v2.0 License\n */\n;(function ($, window, document, undefined) {\n    // Create the defaults once\n    var pluginName = 'bootstrapDualListbox',\n        defaults = {\n            bootstrap2Compatible: false,\n            filterTextClear: 'show all',\n            filterPlaceHolder: 'Filter',\n            moveSelectedLabel: 'Move selected',\n            moveAllLabel: 'Move all',\n            removeSelectedLabel: 'Remove selected',\n            removeAllLabel: 'Remove all',\n            moveOnSelect: true,                                                                 // true/false (forced true on androids, see the comment later)\n            preserveSelectionOnMove: false,                                                     // 'all' / 'moved' / false\n            selectedListLabel: false,                                                           // 'string', false\n            nonSelectedListLabel: false,                                                        // 'string', false\n            helperSelectNamePostfix: '_helper',                                                 // 'string_of_postfix' / false\n            selectorMinimalHeight: 100,\n            showFilterInputs: true,                                                             // whether to show filter inputs\n            nonSelectedFilter: '',                                                              // string, filter the non selected options\n            selectedFilter: '',                                                                 // string, filter the selected options\n            infoText: 'Showing all {0}',                                                        // text when all options are visible / false for no info text\n            infoTextFiltered: '<span class=\"label label-warning\">Filtered</span> {0} from {1}', // when not all of the options are visible due to the filter\n            infoTextEmpty: 'Empty list',                                                        // when there are no options present in the list\n            filterOnValues: false,                                                              // filter by selector's values, boolean\n            sortByInputOrder: false\n        },\n    // Selections are invisible on android if the containing select is styled with CSS\n    // http://code.google.com/p/android/issues/detail?id=16922\n        isBuggyAndroid = /android/i.test(navigator.userAgent.toLowerCase());\n\n    // The actual plugin constructor\n    function BootstrapDualListbox(element, options) {\n        this.element = $(element);\n        // jQuery has an extend method which merges the contents of two or\n        // more objects, storing the result in the first object. The first object\n        // is generally empty as we don't want to alter the default options for\n        // future instances of the plugin\n        this.settings = $.extend({}, defaults, options);\n        this._defaults = defaults;\n        this._name = pluginName;\n        this.init();\n    }\n\n    function triggerChangeEvent(dualListbox) {\n        dualListbox.element.trigger('change');\n    }\n\n    function updateSelectionStates(dualListbox) {\n        dualListbox.element.find('option').each(function(index, item) {\n            var $item = $(item);\n            if (typeof($item.data('original-index')) === 'undefined') {\n                $item.data('original-index', dualListbox.elementCount++);\n            }\n            if (typeof($item.data('_selected')) === 'undefined') {\n                $item.data('_selected', false);\n            }\n        });\n    }\n\n    function changeSelectionState(dualListbox, original_index, selected) {\n        dualListbox.element.find('option').each(function(index, item) {\n            var $item = $(item);\n            if ($item.data('original-index') === original_index) {\n                $item.prop('selected', selected);\n                if(selected){\n                    $item.attr('data-sortindex', dualListbox.sortIndex);\n                    dualListbox.sortIndex++;\n                } else {\n                    $item.removeAttr('data-sortindex');\n                }\n            }\n        });\n    }\n\n    function formatString(s, args) {\n        return s.replace(/\\{(\\d+)\\}/g, function(match, number) {\n            return typeof args[number] !== 'undefined' ? args[number] : match;\n        });\n    }\n\n    function refreshInfo(dualListbox) {\n        if (!dualListbox.settings.infoText) {\n            return;\n        }\n\n        var visible1 = dualListbox.elements.select1.find('option').length,\n            visible2 = dualListbox.elements.select2.find('option').length,\n            all1 = dualListbox.element.find('option').length - dualListbox.selectedElements,\n            all2 = dualListbox.selectedElements,\n            content = '';\n\n        if (all1 === 0) {\n            content = dualListbox.settings.infoTextEmpty;\n        } else if (visible1 === all1) {\n            content = formatString(dualListbox.settings.infoText, [visible1, all1]);\n        } else {\n            content = formatString(dualListbox.settings.infoTextFiltered, [visible1, all1]);\n        }\n\n        dualListbox.elements.info1.html(content);\n        dualListbox.elements.box1.toggleClass('filtered', !(visible1 === all1 || all1 === 0));\n\n        if (all2 === 0) {\n            content = dualListbox.settings.infoTextEmpty;\n        } else if (visible2 === all2) {\n            content = formatString(dualListbox.settings.infoText, [visible2, all2]);\n        } else {\n            content = formatString(dualListbox.settings.infoTextFiltered, [visible2, all2]);\n        }\n\n        dualListbox.elements.info2.html(content);\n        dualListbox.elements.box2.toggleClass('filtered', !(visible2 === all2 || all2 === 0));\n    }\n\n    function refreshSelects(dualListbox) {\n        dualListbox.selectedElements = 0;\n\n        dualListbox.elements.select1.empty();\n        dualListbox.elements.select2.empty();\n\n        dualListbox.element.find('option').each(function(index, item) {\n            var $item = $(item);\n            if ($item.prop('selected')) {\n                dualListbox.selectedElements++;\n                dualListbox.elements.select2.append($item.clone(true).prop('selected', $item.data('_selected')));\n            } else {\n                dualListbox.elements.select1.append($item.clone(true).prop('selected', $item.data('_selected')));\n            }\n        });\n\n        if (dualListbox.settings.showFilterInputs) {\n            filter(dualListbox, 1);\n            filter(dualListbox, 2);\n        }\n        refreshInfo(dualListbox);\n    }\n\n    function filter(dualListbox, selectIndex) {\n        if (!dualListbox.settings.showFilterInputs) {\n            return;\n        }\n\n        saveSelections(dualListbox, selectIndex);\n\n        dualListbox.elements['select'+selectIndex].empty().scrollTop(0);\n        var regex = new RegExp($.trim(dualListbox.elements['filterInput'+selectIndex].val()), 'gi'),\n            allOptions = dualListbox.element.find('option'),\n            options = dualListbox.element;\n\n        if (selectIndex === 1) {\n            options = allOptions.not(':selected');\n        } else  {\n            options = options.find('option:selected');\n        }\n\n        options.each(function(index, item) {\n            var $item = $(item),\n                isFiltered = true;\n            if (item.text.match(regex) || (dualListbox.settings.filterOnValues && $item.attr('value').match(regex) ) ) {\n                isFiltered = false;\n                dualListbox.elements['select'+selectIndex].append($item.clone(true).prop('selected', $item.data('_selected')));\n            }\n            allOptions.eq($item.data('original-index')).data('filtered'+selectIndex, isFiltered);\n        });\n\n        refreshInfo(dualListbox);\n    }\n\n    function saveSelections(dualListbox, selectIndex) {\n        var options = dualListbox.element.find('option');\n        dualListbox.elements['select'+selectIndex].find('option').each(function(index, item) {\n            var $item = $(item);\n            options.eq($item.data('original-index')).data('_selected', $item.prop('selected'));\n        });\n    }\n\n    function sortOptionsByInputOrder(select){\n        var selectopt = select.children('option');\n\n        selectopt.sort(function(a,b){\n            var an = parseInt(a.getAttribute('data-sortindex')),\n                bn = parseInt(b.getAttribute('data-sortindex'));\n\n            if(an > bn) {\n                return 1;\n            }\n            if(an < bn) {\n                return -1;\n            }\n            return 0;\n        });\n\n        selectopt.detach().appendTo(select);\n    }\n\n    function sortOptions(select) {\n        select.find('option').sort(function(a, b) {\n            return ($(a).data('original-index') > $(b).data('original-index')) ? 1 : -1;\n        }).appendTo(select);\n    }\n\n    function clearSelections(dualListbox) {\n        dualListbox.elements.select1.find('option').each(function() {\n            dualListbox.element.find('option').data('_selected', false);\n        });\n    }\n\n    function move(dualListbox) {\n        if (dualListbox.settings.preserveSelectionOnMove === 'all' && !dualListbox.settings.moveOnSelect) {\n            saveSelections(dualListbox, 1);\n            saveSelections(dualListbox, 2);\n        } else if (dualListbox.settings.preserveSelectionOnMove === 'moved' && !dualListbox.settings.moveOnSelect) {\n            saveSelections(dualListbox, 1);\n        }\n\n        dualListbox.elements.select1.find('option:selected').each(function(index, item) {\n            var $item = $(item);\n            if (!$item.data('filtered1')) {\n                changeSelectionState(dualListbox, $item.data('original-index'), true);\n            }\n        });\n\n        refreshSelects(dualListbox);\n        triggerChangeEvent(dualListbox);\n        if(dualListbox.settings.sortByInputOrder){\n            sortOptionsByInputOrder(dualListbox.elements.select2);\n        } else {\n            sortOptions(dualListbox.elements.select2);\n        }\n    }\n\n    function remove(dualListbox) {\n        if (dualListbox.settings.preserveSelectionOnMove === 'all' && !dualListbox.settings.moveOnSelect) {\n            saveSelections(dualListbox, 1);\n            saveSelections(dualListbox, 2);\n        } else if (dualListbox.settings.preserveSelectionOnMove === 'moved' && !dualListbox.settings.moveOnSelect) {\n            saveSelections(dualListbox, 2);\n        }\n\n        dualListbox.elements.select2.find('option:selected').each(function(index, item) {\n            var $item = $(item);\n            if (!$item.data('filtered2')) {\n                changeSelectionState(dualListbox, $item.data('original-index'), false);\n            }\n        });\n\n        refreshSelects(dualListbox);\n        triggerChangeEvent(dualListbox);\n        sortOptions(dualListbox.elements.select1);\n    }\n\n    function moveAll(dualListbox) {\n        if (dualListbox.settings.preserveSelectionOnMove === 'all' && !dualListbox.settings.moveOnSelect) {\n            saveSelections(dualListbox, 1);\n            saveSelections(dualListbox, 2);\n        } else if (dualListbox.settings.preserveSelectionOnMove === 'moved' && !dualListbox.settings.moveOnSelect) {\n            saveSelections(dualListbox, 1);\n        }\n\n        dualListbox.element.find('option').each(function(index, item) {\n            var $item = $(item);\n            if (!$item.data('filtered1')) {\n                $item.prop('selected', true);\n                $item.attr('data-sortindex', dualListbox.sortIndex);\n                dualListbox.sortIndex++;\n            }\n        });\n\n        refreshSelects(dualListbox);\n        triggerChangeEvent(dualListbox);\n    }\n\n    function removeAll(dualListbox) {\n        if (dualListbox.settings.preserveSelectionOnMove === 'all' && !dualListbox.settings.moveOnSelect) {\n            saveSelections(dualListbox, 1);\n            saveSelections(dualListbox, 2);\n        } else if (dualListbox.settings.preserveSelectionOnMove === 'moved' && !dualListbox.settings.moveOnSelect) {\n            saveSelections(dualListbox, 2);\n        }\n\n        dualListbox.element.find('option').each(function(index, item) {\n            var $item = $(item);\n            if (!$item.data('filtered2')) {\n                $item.prop('selected', false);\n                $item.removeAttr('data-sortindex');\n            }\n        });\n\n        refreshSelects(dualListbox);\n        triggerChangeEvent(dualListbox);\n    }\n\n    function bindEvents(dualListbox) {\n        dualListbox.elements.form.submit(function(e) {\n            if (dualListbox.elements.filterInput1.is(':focus')) {\n                e.preventDefault();\n                dualListbox.elements.filterInput1.focusout();\n            } else if (dualListbox.elements.filterInput2.is(':focus')) {\n                e.preventDefault();\n                dualListbox.elements.filterInput2.focusout();\n            }\n        });\n\n        dualListbox.element.on('bootstrapDualListbox.refresh', function(e, mustClearSelections){\n            dualListbox.refresh(mustClearSelections);\n        });\n\n        dualListbox.elements.filterClear1.on('click', function() {\n            dualListbox.setNonSelectedFilter('', true);\n        });\n\n        dualListbox.elements.filterClear2.on('click', function() {\n            dualListbox.setSelectedFilter('', true);\n        });\n\n        dualListbox.elements.moveButton.on('click', function() {\n            move(dualListbox);\n        });\n\n        dualListbox.elements.moveAllButton.on('click', function() {\n            moveAll(dualListbox);\n        });\n\n        dualListbox.elements.removeButton.on('click', function() {\n            remove(dualListbox);\n        });\n\n        dualListbox.elements.removeAllButton.on('click', function() {\n            removeAll(dualListbox);\n        });\n\n        dualListbox.elements.filterInput1.on('change keyup', function() {\n            filter(dualListbox, 1);\n        });\n\n        dualListbox.elements.filterInput2.on('change keyup', function() {\n            filter(dualListbox, 2);\n        });\n    }\n\n    BootstrapDualListbox.prototype = {\n        init: function () {\n            // Add the custom HTML template\n            this.container = $('' +\n                '<div class=\"bootstrap-duallistbox-container\">' +\n                ' <div class=\"box1\">' +\n                '   <label></label>' +\n                '   <span class=\"info-container\">' +\n                '     <span class=\"info\"></span>' +\n                '     <button type=\"button\" class=\"btn clear1 pull-right\"></button>' +\n                '   </span>' +\n                '   <input class=\"filter\" type=\"text\">' +\n                '   <div class=\"btn-group buttons\">' +\n                '     <button type=\"button\" class=\"btn moveall\">' +\n                '       <i></i>' +\n                '       <i></i>' +\n                '     </button>' +\n                '     <button type=\"button\" class=\"btn move\">' +\n                '       <i></i>' +\n                '     </button>' +\n                '   </div>' +\n                '   <select multiple=\"multiple\"></select>' +\n                ' </div>' +\n                ' <div class=\"box2\">' +\n                '   <label></label>' +\n                '   <span class=\"info-container\">' +\n                '     <span class=\"info\"></span>' +\n                '     <button type=\"button\" class=\"btn clear2 pull-right\"></button>' +\n                '   </span>' +\n                '   <input class=\"filter\" type=\"text\">' +\n                '   <div class=\"btn-group buttons\">' +\n                '     <button type=\"button\" class=\"btn remove\">' +\n                '       <i></i>' +\n                '     </button>' +\n                '     <button type=\"button\" class=\"btn removeall\">' +\n                '       <i></i>' +\n                '       <i></i>' +\n                '     </button>' +\n                '   </div>' +\n                '   <select multiple=\"multiple\"></select>' +\n                ' </div>' +\n                '</div>')\n                .insertBefore(this.element);\n\n            // Cache the inner elements\n            this.elements = {\n                originalSelect: this.element,\n                box1: $('.box1', this.container),\n                box2: $('.box2', this.container),\n                filterInput1: $('.box1 .filter', this.container),\n                filterInput2: $('.box2 .filter', this.container),\n                filterClear1: $('.box1 .clear1', this.container),\n                filterClear2: $('.box2 .clear2', this.container),\n                label1: $('.box1 > label', this.container),\n                label2: $('.box2 > label', this.container),\n                info1: $('.box1 .info', this.container),\n                info2: $('.box2 .info', this.container),\n                select1: $('.box1 select', this.container),\n                select2: $('.box2 select', this.container),\n                moveButton: $('.box1 .move', this.container),\n                removeButton: $('.box2 .remove', this.container),\n                moveAllButton: $('.box1 .moveall', this.container),\n                removeAllButton: $('.box2 .removeall', this.container),\n                form: $($('.box1 .filter', this.container)[0].form)\n            };\n\n            // Set select IDs\n            this.originalSelectName = this.element.attr('name') || '';\n            var select1Id = 'bootstrap-duallistbox-nonselected-list_' + this.originalSelectName,\n                select2Id = 'bootstrap-duallistbox-selected-list_' + this.originalSelectName;\n            this.elements.select1.attr('id', select1Id);\n            this.elements.select2.attr('id', select2Id);\n            this.elements.label1.attr('for', select1Id);\n            this.elements.label2.attr('for', select2Id);\n\n            // Apply all settings\n            this.selectedElements = 0;\n            this.sortIndex = 0;\n            this.elementCount = 0;\n            this.setBootstrap2Compatible(this.settings.bootstrap2Compatible);\n            this.setFilterTextClear(this.settings.filterTextClear);\n            this.setFilterPlaceHolder(this.settings.filterPlaceHolder);\n            this.setMoveSelectedLabel(this.settings.moveSelectedLabel);\n            this.setMoveAllLabel(this.settings.moveAllLabel);\n            this.setRemoveSelectedLabel(this.settings.removeSelectedLabel);\n            this.setRemoveAllLabel(this.settings.removeAllLabel);\n            this.setMoveOnSelect(this.settings.moveOnSelect);\n            this.setPreserveSelectionOnMove(this.settings.preserveSelectionOnMove);\n            this.setSelectedListLabel(this.settings.selectedListLabel);\n            this.setNonSelectedListLabel(this.settings.nonSelectedListLabel);\n            this.setHelperSelectNamePostfix(this.settings.helperSelectNamePostfix);\n            this.setSelectOrMinimalHeight(this.settings.selectorMinimalHeight);\n\n            updateSelectionStates(this);\n\n            this.setShowFilterInputs(this.settings.showFilterInputs);\n            this.setNonSelectedFilter(this.settings.nonSelectedFilter);\n            this.setSelectedFilter(this.settings.selectedFilter);\n            this.setInfoText(this.settings.infoText);\n            this.setInfoTextFiltered(this.settings.infoTextFiltered);\n            this.setInfoTextEmpty(this.settings.infoTextEmpty);\n            this.setFilterOnValues(this.settings.filterOnValues);\n            this.setSortByInputOrder(this.settings.sortByInputOrder);\n\n            // Hide the original select\n            this.element.hide();\n\n            bindEvents(this);\n            refreshSelects(this);\n\n            return this.element;\n        },\n        setBootstrap2Compatible: function(value, refresh) {\n            this.settings.bootstrap2Compatible = value;\n            if (value) {\n                this.container.removeClass('row').addClass('row-fluid bs2compatible');\n                this.container.find('.box1, .box2').removeClass('col-md-6').addClass('span6');\n                this.container.find('.clear1, .clear2').removeClass('btn-default btn-xs').addClass('btn-mini');\n                this.container.find('input, select').removeClass('form-control');\n                this.container.find('.btn').removeClass('btn-default');\n                this.container.find('.moveall > i, .move > i').removeClass('glyphicon glyphicon-arrow-right').addClass('icon-arrow-right');\n                this.container.find('.removeall > i, .remove > i').removeClass('glyphicon glyphicon-arrow-left').addClass('icon-arrow-left');\n            } else {\n                this.container.removeClass('row-fluid bs2compatible').addClass('row');\n                this.container.find('.box1, .box2').removeClass('span6').addClass('col-md-6');\n                this.container.find('.clear1, .clear2').removeClass('btn-mini').addClass('btn-default btn-xs');\n                this.container.find('input, select').addClass('form-control');\n                this.container.find('.btn').addClass('btn-default');\n                this.container.find('.moveall > i, .move > i').removeClass('icon-arrow-right').addClass('glyphicon glyphicon-arrow-right');\n                this.container.find('.removeall > i, .remove > i').removeClass('icon-arrow-left').addClass('glyphicon glyphicon-arrow-left');\n            }\n            if (refresh) {\n                refreshSelects(this);\n            }\n            return this.element;\n        },\n        setFilterTextClear: function(value, refresh) {\n            this.settings.filterTextClear = value;\n            this.elements.filterClear1.html(value);\n            this.elements.filterClear2.html(value);\n            if (refresh) {\n                refreshSelects(this);\n            }\n            return this.element;\n        },\n        setFilterPlaceHolder: function(value, refresh) {\n            this.settings.filterPlaceHolder = value;\n            this.elements.filterInput1.attr('placeholder', value);\n            this.elements.filterInput2.attr('placeholder', value);\n            if (refresh) {\n                refreshSelects(this);\n            }\n            return this.element;\n        },\n        setMoveSelectedLabel: function(value, refresh) {\n            this.settings.moveSelectedLabel = value;\n            this.elements.moveButton.attr('title', value);\n            if (refresh) {\n                refreshSelects(this);\n            }\n            return this.element;\n        },\n        setMoveAllLabel: function(value, refresh) {\n            this.settings.moveAllLabel = value;\n            this.elements.moveAllButton.attr('title', value);\n            if (refresh) {\n                refreshSelects(this);\n            }\n            return this.element;\n        },\n        setRemoveSelectedLabel: function(value, refresh) {\n            this.settings.removeSelectedLabel = value;\n            this.elements.removeButton.attr('title', value);\n            if (refresh) {\n                refreshSelects(this);\n            }\n            return this.element;\n        },\n        setRemoveAllLabel: function(value, refresh) {\n            this.settings.removeAllLabel = value;\n            this.elements.removeAllButton.attr('title', value);\n            if (refresh) {\n                refreshSelects(this);\n            }\n            return this.element;\n        },\n        setMoveOnSelect: function(value, refresh) {\n            if (isBuggyAndroid) {\n                value = true;\n            }\n            this.settings.moveOnSelect = value;\n            if (this.settings.moveOnSelect) {\n                this.container.addClass('moveonselect');\n                var self = this;\n                this.elements.select1.on('change', function() {\n                    move(self);\n                });\n                this.elements.select2.on('change', function() {\n                    remove(self);\n                });\n            } else {\n                this.container.removeClass('moveonselect');\n                this.elements.select1.off('change');\n                this.elements.select2.off('change');\n            }\n            if (refresh) {\n                refreshSelects(this);\n            }\n            return this.element;\n        },\n        setPreserveSelectionOnMove: function(value, refresh) {\n            // We are forcing to move on select and disabling preserveSelectionOnMove on Android\n            if (isBuggyAndroid) {\n                value = false;\n            }\n            this.settings.preserveSelectionOnMove = value;\n            if (refresh) {\n                refreshSelects(this);\n            }\n            return this.element;\n        },\n        setSelectedListLabel: function(value, refresh) {\n            this.settings.selectedListLabel = value;\n            if (value) {\n                this.elements.label2.show().html(value);\n            } else {\n                this.elements.label2.hide().html(value);\n            }\n            if (refresh) {\n                refreshSelects(this);\n            }\n            return this.element;\n        },\n        setNonSelectedListLabel: function(value, refresh) {\n            this.settings.nonSelectedListLabel = value;\n            if (value) {\n                this.elements.label1.show().html(value);\n            } else {\n                this.elements.label1.hide().html(value);\n            }\n            if (refresh) {\n                refreshSelects(this);\n            }\n            return this.element;\n        },\n        setHelperSelectNamePostfix: function(value, refresh) {\n            this.settings.helperSelectNamePostfix = value;\n            if (value) {\n                this.elements.select1.attr('name', this.originalSelectName + value + '1');\n                this.elements.select2.attr('name', this.originalSelectName + value + '2');\n            } else {\n                this.elements.select1.removeAttr('name');\n                this.elements.select2.removeAttr('name');\n            }\n            if (refresh) {\n                refreshSelects(this);\n            }\n            return this.element;\n        },\n        setSelectOrMinimalHeight: function(value, refresh) {\n            this.settings.selectorMinimalHeight = value;\n            var height = this.element.height();\n            if (this.element.height() < value) {\n                height = value;\n            }\n            this.elements.select1.height(height);\n            this.elements.select2.height(height);\n            if (refresh) {\n                refreshSelects(this);\n            }\n            return this.element;\n        },\n        setShowFilterInputs: function(value, refresh) {\n            if (!value) {\n                this.setNonSelectedFilter('');\n                this.setSelectedFilter('');\n                refreshSelects(this);\n                this.elements.filterInput1.hide();\n                this.elements.filterInput2.hide();\n            } else {\n                this.elements.filterInput1.show();\n                this.elements.filterInput2.show();\n            }\n            this.settings.showFilterInputs = value;\n            if (refresh) {\n                refreshSelects(this);\n            }\n            return this.element;\n        },\n        setNonSelectedFilter: function(value, refresh) {\n            if (this.settings.showFilterInputs) {\n                this.settings.nonSelectedFilter = value;\n                this.elements.filterInput1.val(value);\n                if (refresh) {\n                    refreshSelects(this);\n                }\n                return this.element;\n            }\n        },\n        setSelectedFilter: function(value, refresh) {\n            if (this.settings.showFilterInputs) {\n                this.settings.selectedFilter = value;\n                this.elements.filterInput2.val(value);\n                if (refresh) {\n                    refreshSelects(this);\n                }\n                return this.element;\n            }\n        },\n        setInfoText: function(value, refresh) {\n            this.settings.infoText = value;\n            if (refresh) {\n                refreshSelects(this);\n            }\n            return this.element;\n        },\n        setInfoTextFiltered: function(value, refresh) {\n            this.settings.infoTextFiltered = value;\n            if (refresh) {\n                refreshSelects(this);\n            }\n            return this.element;\n        },\n        setInfoTextEmpty: function(value, refresh) {\n            this.settings.infoTextEmpty = value;\n            if (refresh) {\n                refreshSelects(this);\n            }\n            return this.element;\n        },\n        setFilterOnValues: function(value, refresh) {\n            this.settings.filterOnValues = value;\n            if (refresh) {\n                refreshSelects(this);\n            }\n            return this.element;\n        },\n        setSortByInputOrder: function(value, refresh){\n            this.settings.sortByInputOrder = value;\n            if (refresh) {\n                refreshSelects(this);\n            }\n            return this.element;\n        },\n        getContainer: function() {\n            return this.container;\n        },\n        refresh: function(mustClearSelections) {\n            updateSelectionStates(this);\n\n            if (!mustClearSelections) {\n                saveSelections(this, 1);\n                saveSelections(this, 2);\n            } else {\n                clearSelections(this);\n            }\n\n            refreshSelects(this);\n        },\n        destroy: function() {\n            this.container.remove();\n            this.element.show();\n            $.data(this, 'plugin_' + pluginName, null);\n            return this.element;\n        }\n    };\n\n    // A really lightweight plugin wrapper around the constructor,\n    // preventing against multiple instantiations\n    $.fn[ pluginName ] = function (options) {\n        var args = arguments;\n\n        // Is the first parameter an object (options), or was omitted, instantiate a new instance of the plugin.\n        if (options === undefined || typeof options === 'object') {\n            return this.each(function () {\n                // If this is not a select\n                if (!$(this).is('select')) {\n                    $(this).find('select').each(function(index, item) {\n                        // For each nested select, instantiate the Dual List Box\n                        $(item).bootstrapDualListbox(options);\n                    });\n                } else if (!$.data(this, 'plugin_' + pluginName)) {\n                    // Only allow the plugin to be instantiated once so we check that the element has no plugin instantiation yet\n\n                    // if it has no instance, create a new one, pass options to our plugin constructor,\n                    // and store the plugin instance in the elements jQuery data object.\n                    $.data(this, 'plugin_' + pluginName, new BootstrapDualListbox(this, options));\n                }\n            });\n            // If the first parameter is a string and it doesn't start with an underscore or \"contains\" the `init`-function,\n            // treat this as a call to a public method.\n        } else if (typeof options === 'string' && options[0] !== '_' && options !== 'init') {\n\n            // Cache the method call to make it possible to return a value\n            var returns;\n\n            this.each(function () {\n                var instance = $.data(this, 'plugin_' + pluginName);\n                // Tests that there's already a plugin-instance and checks that the requested public method exists\n                if (instance instanceof BootstrapDualListbox && typeof instance[options] === 'function') {\n                    // Call the method of our plugin instance, and pass it the supplied arguments.\n                    returns = instance[options].apply(instance, Array.prototype.slice.call(args, 1));\n                }\n            });\n\n            // If the earlier cached method gives a value back return the value,\n            // otherwise return this to preserve chainability.\n            return returns !== undefined ? returns : this;\n        }\n\n    };\n\n})(jQuery, window, document);"
  },
  {
    "path": "public/admin/js/flot/dashtwo-flot-active.js",
    "content": "(function ($) {\n \"use strict\";\n \n \n var ctx = document.getElementById('myChartsrs').getContext(\"2d\");\n var gradientStroke = ctx.createLinearGradient(500, 0, 100, 0);\ngradientStroke.addColorStop(0, '#80b6f4');\n\ngradientStroke.addColorStop(1, '#f49080');\nvar myChartsrs = new Chart(ctx, {\n    type: 'line',\n    data: {\n        labels: [\"JAN\", \"FEB\", \"MAR\", \"APR\", \"MAY\", \"JUN\", \"JUL\"],\n        datasets: [{\n            label: \"Orders\",\n            borderColor: gradientStroke,\n            pointBorderColor: gradientStroke,\n            pointBackgroundColor: gradientStroke,\n           pointHoverBackgroundColor: gradientStroke,\n            pointHoverBorderColor: gradientStroke,\n            pointBorderWidth: 10,\n            pointHoverRadius: 10,\n            pointHoverBorderWidth: 1,\n            pointRadius: 3,\n            fill: false,\n            borderWidth: 4,\n            data: [0, 60, 120, 170, 0, 170, 190]\n        }]\n    },\n    options: {\n        legend: {\n            position: \"bottom\"\n        },\n        scales: {\n            yAxes: [{\n                ticks: {\n                    fontColor: \"rgba(0,0,0,0.5)\",\n                    fontStyle: \"bold\",\n                    beginAtZero: true,\n                    maxTicksLimit: 5,\n                    padding: 20\n                },\n                gridLines: {\n                    drawTicks: false,\n                    display: false\n                }\n}],\n            xAxes: [{\n                gridLines: {\n                    zeroLineColor: \"transparent\"\n},\n                ticks: {\n                    padding: 20,\n                    fontColor: \"rgba(0,0,0,0.5)\",\n                    fontStyle: \"bold\"\n                }\n            }]\n        }\n    }\n});\n\n\t\t\n\t\t\t\n  })(jQuery);          "
  },
  {
    "path": "public/admin/js/flot/flot-active.js",
    "content": "(function ($) {\n \"use strict\";\n \n \n var ctx = document.getElementById('myChartsrs1').getContext(\"2d\");\n var gradientStroke = ctx.createLinearGradient(500, 0, 100, 0);\ngradientStroke.addColorStop(0, '#80b6f4');\n\ngradientStroke.addColorStop(1, '#f49080');\nvar myChartsrs1 = new Chart(ctx, {\n    type: 'line',\n    data: {\n        labels: [\"JAN\", \"FEB\", \"MAR\", \"APR\", \"MAY\", \"JUN\", \"JUL\"],\n        datasets: [{\n            label: \"Sales\",\n            borderColor: gradientStroke,\n            pointBorderColor: gradientStroke,\n            pointBackgroundColor: gradientStroke,\n           pointHoverBackgroundColor: gradientStroke,\n            pointHoverBorderColor: gradientStroke,\n            pointBorderWidth: 10,\n            pointHoverRadius: 10,\n            pointHoverBorderWidth: 1,\n            pointRadius: 3,\n            fill: false,\n            borderWidth: 4,\n            data: [100, 120, 150, 170, 180, 170, 160]\n        }]\n    },\n    options: {\n        legend: {\n            position: \"bottom\"\n        },\n        scales: {\n            yAxes: [{\n                ticks: {\n                    fontColor: \"rgba(0,0,0,0.5)\",\n                    fontStyle: \"bold\",\n                    beginAtZero: true,\n                    maxTicksLimit: 5,\n                    padding: 20\n                },\n                gridLines: {\n                    drawTicks: false,\n                    display: false\n                }\n}],\n            xAxes: [{\n                gridLines: {\n                    zeroLineColor: \"transparent\"\n},\n                ticks: {\n                    padding: 20,\n                    fontColor: \"rgba(0,0,0,0.5)\",\n                    fontStyle: \"bold\"\n                }\n            }]\n        }\n    }\n});\n\n\t\t\n\t\t\t\n  })(jQuery);          "
  },
  {
    "path": "public/admin/js/flot/jquery.flot.js",
    "content": "/* Javascript plotting library for jQuery, version 0.8.3.\n\nCopyright (c) 2007-2014 IOLA and Ole Laursen.\nLicensed under the MIT license.\n\n*/\n\n// first an inline dependency, jquery.colorhelpers.js, we inline it here\n// for convenience\n\n/* Plugin for jQuery for working with colors.\n *\n * Version 1.1.\n *\n * Inspiration from jQuery color animation plugin by John Resig.\n *\n * Released under the MIT license by Ole Laursen, October 2009.\n *\n * Examples:\n *\n *   $.color.parse(\"#fff\").scale('rgb', 0.25).add('a', -0.5).toString()\n *   var c = $.color.extract($(\"#mydiv\"), 'background-color');\n *   console.log(c.r, c.g, c.b, c.a);\n *   $.color.make(100, 50, 25, 0.4).toString() // returns \"rgba(100,50,25,0.4)\"\n *\n * Note that .scale() and .add() return the same modified object\n * instead of making a new one.\n *\n * V. 1.1: Fix error handling so e.g. parsing an empty string does\n * produce a color rather than just crashing.\n */\n(function($){$.color={};$.color.make=function(r,g,b,a){var o={};o.r=r||0;o.g=g||0;o.b=b||0;o.a=a!=null?a:1;o.add=function(c,d){for(var i=0;i<c.length;++i)o[c.charAt(i)]+=d;return o.normalize()};o.scale=function(c,f){for(var i=0;i<c.length;++i)o[c.charAt(i)]*=f;return o.normalize()};o.toString=function(){if(o.a>=1){return\"rgb(\"+[o.r,o.g,o.b].join(\",\")+\")\"}else{return\"rgba(\"+[o.r,o.g,o.b,o.a].join(\",\")+\")\"}};o.normalize=function(){function clamp(min,value,max){return value<min?min:value>max?max:value}o.r=clamp(0,parseInt(o.r),255);o.g=clamp(0,parseInt(o.g),255);o.b=clamp(0,parseInt(o.b),255);o.a=clamp(0,o.a,1);return o};o.clone=function(){return $.color.make(o.r,o.b,o.g,o.a)};return o.normalize()};$.color.extract=function(elem,css){var c;do{c=elem.css(css).toLowerCase();if(c!=\"\"&&c!=\"transparent\")break;elem=elem.parent()}while(elem.length&&!$.nodeName(elem.get(0),\"body\"));if(c==\"rgba(0, 0, 0, 0)\")c=\"transparent\";return $.color.parse(c)};$.color.parse=function(str){var res,m=$.color.make;if(res=/rgb\\(\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*\\)/.exec(str))return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10));if(res=/rgba\\(\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\s*\\)/.exec(str))return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10),parseFloat(res[4]));if(res=/rgb\\(\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*\\)/.exec(str))return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55);if(res=/rgba\\(\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\s*\\)/.exec(str))return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55,parseFloat(res[4]));if(res=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(str))return m(parseInt(res[1],16),parseInt(res[2],16),parseInt(res[3],16));if(res=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(str))return m(parseInt(res[1]+res[1],16),parseInt(res[2]+res[2],16),parseInt(res[3]+res[3],16));var name=$.trim(str).toLowerCase();if(name==\"transparent\")return m(255,255,255,0);else{res=lookupColors[name]||[0,0,0];return m(res[0],res[1],res[2])}};var lookupColors={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0]}})(jQuery);\n\n// the actual Flot code\n(function($) {\n\n\t// Cache the prototype hasOwnProperty for faster access\n\n\tvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n    // A shim to provide 'detach' to jQuery versions prior to 1.4.  Using a DOM\n    // operation produces the same effect as detach, i.e. removing the element\n    // without touching its jQuery data.\n\n    // Do not merge this into Flot 0.9, since it requires jQuery 1.4.4+.\n\n    if (!$.fn.detach) {\n        $.fn.detach = function() {\n            return this.each(function() {\n                if (this.parentNode) {\n                    this.parentNode.removeChild( this );\n                }\n            });\n        };\n    }\n\n\t///////////////////////////////////////////////////////////////////////////\n\t// The Canvas object is a wrapper around an HTML5 <canvas> tag.\n\t//\n\t// @constructor\n\t// @param {string} cls List of classes to apply to the canvas.\n\t// @param {element} container Element onto which to append the canvas.\n\t//\n\t// Requiring a container is a little iffy, but unfortunately canvas\n\t// operations don't work unless the canvas is attached to the DOM.\n\n\tfunction Canvas(cls, container) {\n\n\t\tvar element = container.children(\".\" + cls)[0];\n\n\t\tif (element == null) {\n\n\t\t\telement = document.createElement(\"canvas\");\n\t\t\telement.className = cls;\n\n\t\t\t$(element).css({ direction: \"ltr\", position: \"absolute\", left: 0, top: 0 })\n\t\t\t\t.appendTo(container);\n\n\t\t\t// If HTML5 Canvas isn't available, fall back to [Ex|Flash]canvas\n\n\t\t\tif (!element.getContext) {\n\t\t\t\tif (window.G_vmlCanvasManager) {\n\t\t\t\t\telement = window.G_vmlCanvasManager.initElement(element);\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error(\"Canvas is not available. If you're using IE with a fall-back such as Excanvas, then there's either a mistake in your conditional include, or the page has no DOCTYPE and is rendering in Quirks Mode.\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.element = element;\n\n\t\tvar context = this.context = element.getContext(\"2d\");\n\n\t\t// Determine the screen's ratio of physical to device-independent\n\t\t// pixels.  This is the ratio between the canvas width that the browser\n\t\t// advertises and the number of pixels actually present in that space.\n\n\t\t// The iPhone 4, for example, has a device-independent width of 320px,\n\t\t// but its screen is actually 640px wide.  It therefore has a pixel\n\t\t// ratio of 2, while most normal devices have a ratio of 1.\n\n\t\tvar devicePixelRatio = window.devicePixelRatio || 1,\n\t\t\tbackingStoreRatio =\n\t\t\t\tcontext.webkitBackingStorePixelRatio ||\n\t\t\t\tcontext.mozBackingStorePixelRatio ||\n\t\t\t\tcontext.msBackingStorePixelRatio ||\n\t\t\t\tcontext.oBackingStorePixelRatio ||\n\t\t\t\tcontext.backingStorePixelRatio || 1;\n\n\t\tthis.pixelRatio = devicePixelRatio / backingStoreRatio;\n\n\t\t// Size the canvas to match the internal dimensions of its container\n\n\t\tthis.resize(container.width(), container.height());\n\n\t\t// Collection of HTML div layers for text overlaid onto the canvas\n\n\t\tthis.textContainer = null;\n\t\tthis.text = {};\n\n\t\t// Cache of text fragments and metrics, so we can avoid expensively\n\t\t// re-calculating them when the plot is re-rendered in a loop.\n\n\t\tthis._textCache = {};\n\t}\n\n\t// Resizes the canvas to the given dimensions.\n\t//\n\t// @param {number} width New width of the canvas, in pixels.\n\t// @param {number} width New height of the canvas, in pixels.\n\n\tCanvas.prototype.resize = function(width, height) {\n\n\t\tif (width <= 0 || height <= 0) {\n\t\t\tthrow new Error(\"Invalid dimensions for plot, width = \" + width + \", height = \" + height);\n\t\t}\n\n\t\tvar element = this.element,\n\t\t\tcontext = this.context,\n\t\t\tpixelRatio = this.pixelRatio;\n\n\t\t// Resize the canvas, increasing its density based on the display's\n\t\t// pixel ratio; basically giving it more pixels without increasing the\n\t\t// size of its element, to take advantage of the fact that retina\n\t\t// displays have that many more pixels in the same advertised space.\n\n\t\t// Resizing should reset the state (excanvas seems to be buggy though)\n\n\t\tif (this.width != width) {\n\t\t\telement.width = width * pixelRatio;\n\t\t\telement.style.width = width + \"px\";\n\t\t\tthis.width = width;\n\t\t}\n\n\t\tif (this.height != height) {\n\t\t\telement.height = height * pixelRatio;\n\t\t\telement.style.height = height + \"px\";\n\t\t\tthis.height = height;\n\t\t}\n\n\t\t// Save the context, so we can reset in case we get replotted.  The\n\t\t// restore ensure that we're really back at the initial state, and\n\t\t// should be safe even if we haven't saved the initial state yet.\n\n\t\tcontext.restore();\n\t\tcontext.save();\n\n\t\t// Scale the coordinate space to match the display density; so even though we\n\t\t// may have twice as many pixels, we still want lines and other drawing to\n\t\t// appear at the same size; the extra pixels will just make them crisper.\n\n\t\tcontext.scale(pixelRatio, pixelRatio);\n\t};\n\n\t// Clears the entire canvas area, not including any overlaid HTML text\n\n\tCanvas.prototype.clear = function() {\n\t\tthis.context.clearRect(0, 0, this.width, this.height);\n\t};\n\n\t// Finishes rendering the canvas, including managing the text overlay.\n\n\tCanvas.prototype.render = function() {\n\n\t\tvar cache = this._textCache;\n\n\t\t// For each text layer, add elements marked as active that haven't\n\t\t// already been rendered, and remove those that are no longer active.\n\n\t\tfor (var layerKey in cache) {\n\t\t\tif (hasOwnProperty.call(cache, layerKey)) {\n\n\t\t\t\tvar layer = this.getTextLayer(layerKey),\n\t\t\t\t\tlayerCache = cache[layerKey];\n\n\t\t\t\tlayer.hide();\n\n\t\t\t\tfor (var styleKey in layerCache) {\n\t\t\t\t\tif (hasOwnProperty.call(layerCache, styleKey)) {\n\t\t\t\t\t\tvar styleCache = layerCache[styleKey];\n\t\t\t\t\t\tfor (var key in styleCache) {\n\t\t\t\t\t\t\tif (hasOwnProperty.call(styleCache, key)) {\n\n\t\t\t\t\t\t\t\tvar positions = styleCache[key].positions;\n\n\t\t\t\t\t\t\t\tfor (var i = 0, position; position = positions[i]; i++) {\n\t\t\t\t\t\t\t\t\tif (position.active) {\n\t\t\t\t\t\t\t\t\t\tif (!position.rendered) {\n\t\t\t\t\t\t\t\t\t\t\tlayer.append(position.element);\n\t\t\t\t\t\t\t\t\t\t\tposition.rendered = true;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tpositions.splice(i--, 1);\n\t\t\t\t\t\t\t\t\t\tif (position.rendered) {\n\t\t\t\t\t\t\t\t\t\t\tposition.element.detach();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (positions.length == 0) {\n\t\t\t\t\t\t\t\t\tdelete styleCache[key];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tlayer.show();\n\t\t\t}\n\t\t}\n\t};\n\n\t// Creates (if necessary) and returns the text overlay container.\n\t//\n\t// @param {string} classes String of space-separated CSS classes used to\n\t//     uniquely identify the text layer.\n\t// @return {object} The jQuery-wrapped text-layer div.\n\n\tCanvas.prototype.getTextLayer = function(classes) {\n\n\t\tvar layer = this.text[classes];\n\n\t\t// Create the text layer if it doesn't exist\n\n\t\tif (layer == null) {\n\n\t\t\t// Create the text layer container, if it doesn't exist\n\n\t\t\tif (this.textContainer == null) {\n\t\t\t\tthis.textContainer = $(\"<div class='flot-text'></div>\")\n\t\t\t\t\t.css({\n\t\t\t\t\t\tposition: \"absolute\",\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\tbottom: 0,\n\t\t\t\t\t\tright: 0,\n\t\t\t\t\t\t'font-size': \"smaller\",\n\t\t\t\t\t\tcolor: \"#545454\"\n\t\t\t\t\t})\n\t\t\t\t\t.insertAfter(this.element);\n\t\t\t}\n\n\t\t\tlayer = this.text[classes] = $(\"<div></div>\")\n\t\t\t\t.addClass(classes)\n\t\t\t\t.css({\n\t\t\t\t\tposition: \"absolute\",\n\t\t\t\t\ttop: 0,\n\t\t\t\t\tleft: 0,\n\t\t\t\t\tbottom: 0,\n\t\t\t\t\tright: 0\n\t\t\t\t})\n\t\t\t\t.appendTo(this.textContainer);\n\t\t}\n\n\t\treturn layer;\n\t};\n\n\t// Creates (if necessary) and returns a text info object.\n\t//\n\t// The object looks like this:\n\t//\n\t// {\n\t//     width: Width of the text's wrapper div.\n\t//     height: Height of the text's wrapper div.\n\t//     element: The jQuery-wrapped HTML div containing the text.\n\t//     positions: Array of positions at which this text is drawn.\n\t// }\n\t//\n\t// The positions array contains objects that look like this:\n\t//\n\t// {\n\t//     active: Flag indicating whether the text should be visible.\n\t//     rendered: Flag indicating whether the text is currently visible.\n\t//     element: The jQuery-wrapped HTML div containing the text.\n\t//     x: X coordinate at which to draw the text.\n\t//     y: Y coordinate at which to draw the text.\n\t// }\n\t//\n\t// Each position after the first receives a clone of the original element.\n\t//\n\t// The idea is that that the width, height, and general 'identity' of the\n\t// text is constant no matter where it is placed; the placements are a\n\t// secondary property.\n\t//\n\t// Canvas maintains a cache of recently-used text info objects; getTextInfo\n\t// either returns the cached element or creates a new entry.\n\t//\n\t// @param {string} layer A string of space-separated CSS classes uniquely\n\t//     identifying the layer containing this text.\n\t// @param {string} text Text string to retrieve info for.\n\t// @param {(string|object)=} font Either a string of space-separated CSS\n\t//     classes or a font-spec object, defining the text's font and style.\n\t// @param {number=} angle Angle at which to rotate the text, in degrees.\n\t//     Angle is currently unused, it will be implemented in the future.\n\t// @param {number=} width Maximum width of the text before it wraps.\n\t// @return {object} a text info object.\n\n\tCanvas.prototype.getTextInfo = function(layer, text, font, angle, width) {\n\n\t\tvar textStyle, layerCache, styleCache, info;\n\n\t\t// Cast the value to a string, in case we were given a number or such\n\n\t\ttext = \"\" + text;\n\n\t\t// If the font is a font-spec object, generate a CSS font definition\n\n\t\tif (typeof font === \"object\") {\n\t\t\ttextStyle = font.style + \" \" + font.variant + \" \" + font.weight + \" \" + font.size + \"px/\" + font.lineHeight + \"px \" + font.family;\n\t\t} else {\n\t\t\ttextStyle = font;\n\t\t}\n\n\t\t// Retrieve (or create) the cache for the text's layer and styles\n\n\t\tlayerCache = this._textCache[layer];\n\n\t\tif (layerCache == null) {\n\t\t\tlayerCache = this._textCache[layer] = {};\n\t\t}\n\n\t\tstyleCache = layerCache[textStyle];\n\n\t\tif (styleCache == null) {\n\t\t\tstyleCache = layerCache[textStyle] = {};\n\t\t}\n\n\t\tinfo = styleCache[text];\n\n\t\t// If we can't find a matching element in our cache, create a new one\n\n\t\tif (info == null) {\n\n\t\t\tvar element = $(\"<div></div>\").html(text)\n\t\t\t\t.css({\n\t\t\t\t\tposition: \"absolute\",\n\t\t\t\t\t'max-width': width,\n\t\t\t\t\ttop: -9999\n\t\t\t\t})\n\t\t\t\t.appendTo(this.getTextLayer(layer));\n\n\t\t\tif (typeof font === \"object\") {\n\t\t\t\telement.css({\n\t\t\t\t\tfont: textStyle,\n\t\t\t\t\tcolor: font.color\n\t\t\t\t});\n\t\t\t} else if (typeof font === \"string\") {\n\t\t\t\telement.addClass(font);\n\t\t\t}\n\n\t\t\tinfo = styleCache[text] = {\n\t\t\t\twidth: element.outerWidth(true),\n\t\t\t\theight: element.outerHeight(true),\n\t\t\t\telement: element,\n\t\t\t\tpositions: []\n\t\t\t};\n\n\t\t\telement.detach();\n\t\t}\n\n\t\treturn info;\n\t};\n\n\t// Adds a text string to the canvas text overlay.\n\t//\n\t// The text isn't drawn immediately; it is marked as rendering, which will\n\t// result in its addition to the canvas on the next render pass.\n\t//\n\t// @param {string} layer A string of space-separated CSS classes uniquely\n\t//     identifying the layer containing this text.\n\t// @param {number} x X coordinate at which to draw the text.\n\t// @param {number} y Y coordinate at which to draw the text.\n\t// @param {string} text Text string to draw.\n\t// @param {(string|object)=} font Either a string of space-separated CSS\n\t//     classes or a font-spec object, defining the text's font and style.\n\t// @param {number=} angle Angle at which to rotate the text, in degrees.\n\t//     Angle is currently unused, it will be implemented in the future.\n\t// @param {number=} width Maximum width of the text before it wraps.\n\t// @param {string=} halign Horizontal alignment of the text; either \"left\",\n\t//     \"center\" or \"right\".\n\t// @param {string=} valign Vertical alignment of the text; either \"top\",\n\t//     \"middle\" or \"bottom\".\n\n\tCanvas.prototype.addText = function(layer, x, y, text, font, angle, width, halign, valign) {\n\n\t\tvar info = this.getTextInfo(layer, text, font, angle, width),\n\t\t\tpositions = info.positions;\n\n\t\t// Tweak the div's position to match the text's alignment\n\n\t\tif (halign == \"center\") {\n\t\t\tx -= info.width / 2;\n\t\t} else if (halign == \"right\") {\n\t\t\tx -= info.width;\n\t\t}\n\n\t\tif (valign == \"middle\") {\n\t\t\ty -= info.height / 2;\n\t\t} else if (valign == \"bottom\") {\n\t\t\ty -= info.height;\n\t\t}\n\n\t\t// Determine whether this text already exists at this position.\n\t\t// If so, mark it for inclusion in the next render pass.\n\n\t\tfor (var i = 0, position; position = positions[i]; i++) {\n\t\t\tif (position.x == x && position.y == y) {\n\t\t\t\tposition.active = true;\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// If the text doesn't exist at this position, create a new entry\n\n\t\t// For the very first position we'll re-use the original element,\n\t\t// while for subsequent ones we'll clone it.\n\n\t\tposition = {\n\t\t\tactive: true,\n\t\t\trendered: false,\n\t\t\telement: positions.length ? info.element.clone() : info.element,\n\t\t\tx: x,\n\t\t\ty: y\n\t\t};\n\n\t\tpositions.push(position);\n\n\t\t// Move the element to its final position within the container\n\n\t\tposition.element.css({\n\t\t\ttop: Math.round(y),\n\t\t\tleft: Math.round(x),\n\t\t\t'text-align': halign\t// In case the text wraps\n\t\t});\n\t};\n\n\t// Removes one or more text strings from the canvas text overlay.\n\t//\n\t// If no parameters are given, all text within the layer is removed.\n\t//\n\t// Note that the text is not immediately removed; it is simply marked as\n\t// inactive, which will result in its removal on the next render pass.\n\t// This avoids the performance penalty for 'clear and redraw' behavior,\n\t// where we potentially get rid of all text on a layer, but will likely\n\t// add back most or all of it later, as when redrawing axes, for example.\n\t//\n\t// @param {string} layer A string of space-separated CSS classes uniquely\n\t//     identifying the layer containing this text.\n\t// @param {number=} x X coordinate of the text.\n\t// @param {number=} y Y coordinate of the text.\n\t// @param {string=} text Text string to remove.\n\t// @param {(string|object)=} font Either a string of space-separated CSS\n\t//     classes or a font-spec object, defining the text's font and style.\n\t// @param {number=} angle Angle at which the text is rotated, in degrees.\n\t//     Angle is currently unused, it will be implemented in the future.\n\n\tCanvas.prototype.removeText = function(layer, x, y, text, font, angle) {\n\t\tif (text == null) {\n\t\t\tvar layerCache = this._textCache[layer];\n\t\t\tif (layerCache != null) {\n\t\t\t\tfor (var styleKey in layerCache) {\n\t\t\t\t\tif (hasOwnProperty.call(layerCache, styleKey)) {\n\t\t\t\t\t\tvar styleCache = layerCache[styleKey];\n\t\t\t\t\t\tfor (var key in styleCache) {\n\t\t\t\t\t\t\tif (hasOwnProperty.call(styleCache, key)) {\n\t\t\t\t\t\t\t\tvar positions = styleCache[key].positions;\n\t\t\t\t\t\t\t\tfor (var i = 0, position; position = positions[i]; i++) {\n\t\t\t\t\t\t\t\t\tposition.active = false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tvar positions = this.getTextInfo(layer, text, font, angle).positions;\n\t\t\tfor (var i = 0, position; position = positions[i]; i++) {\n\t\t\t\tif (position.x == x && position.y == y) {\n\t\t\t\t\tposition.active = false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\t///////////////////////////////////////////////////////////////////////////\n\t// The top-level container for the entire plot.\n\n    function Plot(placeholder, data_, options_, plugins) {\n        // data is on the form:\n        //   [ series1, series2 ... ]\n        // where series is either just the data as [ [x1, y1], [x2, y2], ... ]\n        // or { data: [ [x1, y1], [x2, y2], ... ], label: \"some label\", ... }\n\n        var series = [],\n            options = {\n                // the color theme used for graphs\n                colors: [\"#edc240\", \"#afd8f8\", \"#cb4b4b\", \"#4da74d\", \"#9440ed\"],\n                legend: {\n                    show: true,\n                    noColumns: 1, // number of colums in legend table\n                    labelFormatter: null, // fn: string -> string\n                    labelBoxBorderColor: \"#ccc\", // border color for the little label boxes\n                    container: null, // container (as jQuery object) to put legend in, null means default on top of graph\n                    position: \"ne\", // position of default legend container within plot\n                    margin: 5, // distance from grid edge to default legend container within plot\n                    backgroundColor: null, // null means auto-detect\n                    backgroundOpacity: 0.85, // set to 0 to avoid background\n                    sorted: null    // default to no legend sorting\n                },\n                xaxis: {\n                    show: null, // null = auto-detect, true = always, false = never\n                    position: \"bottom\", // or \"top\"\n                    mode: null, // null or \"time\"\n                    font: null, // null (derived from CSS in placeholder) or object like { size: 11, lineHeight: 13, style: \"italic\", weight: \"bold\", family: \"sans-serif\", variant: \"small-caps\" }\n                    color: null, // base color, labels, ticks\n                    tickColor: null, // possibly different color of ticks, e.g. \"rgba(0,0,0,0.15)\"\n                    transform: null, // null or f: number -> number to transform axis\n                    inverseTransform: null, // if transform is set, this should be the inverse function\n                    min: null, // min. value to show, null means set automatically\n                    max: null, // max. value to show, null means set automatically\n                    autoscaleMargin: null, // margin in % to add if auto-setting min/max\n                    ticks: null, // either [1, 3] or [[1, \"a\"], 3] or (fn: axis info -> ticks) or app. number of ticks for auto-ticks\n                    tickFormatter: null, // fn: number -> string\n                    labelWidth: null, // size of tick labels in pixels\n                    labelHeight: null,\n                    reserveSpace: null, // whether to reserve space even if axis isn't shown\n                    tickLength: null, // size in pixels of ticks, or \"full\" for whole line\n                    alignTicksWithAxis: null, // axis number or null for no sync\n                    tickDecimals: null, // no. of decimals, null means auto\n                    tickSize: null, // number or [number, \"unit\"]\n                    minTickSize: null // number or [number, \"unit\"]\n                },\n                yaxis: {\n                    autoscaleMargin: 0.02,\n                    position: \"left\" // or \"right\"\n                },\n                xaxes: [],\n                yaxes: [],\n                series: {\n                    points: {\n                        show: false,\n                        radius: 3,\n                        lineWidth: 2, // in pixels\n                        fill: true,\n                        fillColor: \"#ffffff\",\n                        symbol: \"circle\" // or callback\n                    },\n                    lines: {\n                        // we don't put in show: false so we can see\n                        // whether lines were actively disabled\n                        lineWidth: 2, // in pixels\n                        fill: false,\n                        fillColor: null,\n                        steps: false\n                        // Omit 'zero', so we can later default its value to\n                        // match that of the 'fill' option.\n                    },\n                    bars: {\n                        show: false,\n                        lineWidth: 2, // in pixels\n                        barWidth: 1, // in units of the x axis\n                        fill: true,\n                        fillColor: null,\n                        align: \"left\", // \"left\", \"right\", or \"center\"\n                        horizontal: false,\n                        zero: true\n                    },\n                    shadowSize: 3,\n                    highlightColor: null\n                },\n                grid: {\n                    show: true,\n                    aboveData: false,\n                    color: \"#545454\", // primary color used for outline and labels\n                    backgroundColor: null, // null for transparent, else color\n                    borderColor: null, // set if different from the grid color\n                    tickColor: null, // color for the ticks, e.g. \"rgba(0,0,0,0.15)\"\n                    margin: 0, // distance from the canvas edge to the grid\n                    labelMargin: 5, // in pixels\n                    axisMargin: 8, // in pixels\n                    borderWidth: 2, // in pixels\n                    minBorderMargin: null, // in pixels, null means taken from points radius\n                    markings: null, // array of ranges or fn: axes -> array of ranges\n                    markingsColor: \"#f4f4f4\",\n                    markingsLineWidth: 2,\n                    // interactive stuff\n                    clickable: false,\n                    hoverable: false,\n                    autoHighlight: true, // highlight in case mouse is near\n                    mouseActiveRadius: 10 // how far the mouse can be away to activate an item\n                },\n                interaction: {\n                    redrawOverlayInterval: 1000/60 // time between updates, -1 means in same flow\n                },\n                hooks: {}\n            },\n        surface = null,     // the canvas for the plot itself\n        overlay = null,     // canvas for interactive stuff on top of plot\n        eventHolder = null, // jQuery object that events should be bound to\n        ctx = null, octx = null,\n        xaxes = [], yaxes = [],\n        plotOffset = { left: 0, right: 0, top: 0, bottom: 0},\n        plotWidth = 0, plotHeight = 0,\n        hooks = {\n            processOptions: [],\n            processRawData: [],\n            processDatapoints: [],\n            processOffset: [],\n            drawBackground: [],\n            drawSeries: [],\n            draw: [],\n            bindEvents: [],\n            drawOverlay: [],\n            shutdown: []\n        },\n        plot = this;\n\n        // public functions\n        plot.setData = setData;\n        plot.setupGrid = setupGrid;\n        plot.draw = draw;\n        plot.getPlaceholder = function() { return placeholder; };\n        plot.getCanvas = function() { return surface.element; };\n        plot.getPlotOffset = function() { return plotOffset; };\n        plot.width = function () { return plotWidth; };\n        plot.height = function () { return plotHeight; };\n        plot.offset = function () {\n            var o = eventHolder.offset();\n            o.left += plotOffset.left;\n            o.top += plotOffset.top;\n            return o;\n        };\n        plot.getData = function () { return series; };\n        plot.getAxes = function () {\n            var res = {}, i;\n            $.each(xaxes.concat(yaxes), function (_, axis) {\n                if (axis)\n                    res[axis.direction + (axis.n != 1 ? axis.n : \"\") + \"axis\"] = axis;\n            });\n            return res;\n        };\n        plot.getXAxes = function () { return xaxes; };\n        plot.getYAxes = function () { return yaxes; };\n        plot.c2p = canvasToAxisCoords;\n        plot.p2c = axisToCanvasCoords;\n        plot.getOptions = function () { return options; };\n        plot.highlight = highlight;\n        plot.unhighlight = unhighlight;\n        plot.triggerRedrawOverlay = triggerRedrawOverlay;\n        plot.pointOffset = function(point) {\n            return {\n                left: parseInt(xaxes[axisNumber(point, \"x\") - 1].p2c(+point.x) + plotOffset.left, 10),\n                top: parseInt(yaxes[axisNumber(point, \"y\") - 1].p2c(+point.y) + plotOffset.top, 10)\n            };\n        };\n        plot.shutdown = shutdown;\n        plot.destroy = function () {\n            shutdown();\n            placeholder.removeData(\"plot\").empty();\n\n            series = [];\n            options = null;\n            surface = null;\n            overlay = null;\n            eventHolder = null;\n            ctx = null;\n            octx = null;\n            xaxes = [];\n            yaxes = [];\n            hooks = null;\n            highlights = [];\n            plot = null;\n        };\n        plot.resize = function () {\n        \tvar width = placeholder.width(),\n        \t\theight = placeholder.height();\n            surface.resize(width, height);\n            overlay.resize(width, height);\n        };\n\n        // public attributes\n        plot.hooks = hooks;\n\n        // initialize\n        initPlugins(plot);\n        parseOptions(options_);\n        setupCanvases();\n        setData(data_);\n        setupGrid();\n        draw();\n        bindEvents();\n\n\n        function executeHooks(hook, args) {\n            args = [plot].concat(args);\n            for (var i = 0; i < hook.length; ++i)\n                hook[i].apply(this, args);\n        }\n\n        function initPlugins() {\n\n            // References to key classes, allowing plugins to modify them\n\n            var classes = {\n                Canvas: Canvas\n            };\n\n            for (var i = 0; i < plugins.length; ++i) {\n                var p = plugins[i];\n                p.init(plot, classes);\n                if (p.options)\n                    $.extend(true, options, p.options);\n            }\n        }\n\n        function parseOptions(opts) {\n\n            $.extend(true, options, opts);\n\n            // $.extend merges arrays, rather than replacing them.  When less\n            // colors are provided than the size of the default palette, we\n            // end up with those colors plus the remaining defaults, which is\n            // not expected behavior; avoid it by replacing them here.\n\n            if (opts && opts.colors) {\n            \toptions.colors = opts.colors;\n            }\n\n            if (options.xaxis.color == null)\n                options.xaxis.color = $.color.parse(options.grid.color).scale('a', 0.22).toString();\n            if (options.yaxis.color == null)\n                options.yaxis.color = $.color.parse(options.grid.color).scale('a', 0.22).toString();\n\n            if (options.xaxis.tickColor == null) // grid.tickColor for back-compatibility\n                options.xaxis.tickColor = options.grid.tickColor || options.xaxis.color;\n            if (options.yaxis.tickColor == null) // grid.tickColor for back-compatibility\n                options.yaxis.tickColor = options.grid.tickColor || options.yaxis.color;\n\n            if (options.grid.borderColor == null)\n                options.grid.borderColor = options.grid.color;\n            if (options.grid.tickColor == null)\n                options.grid.tickColor = $.color.parse(options.grid.color).scale('a', 0.22).toString();\n\n            // Fill in defaults for axis options, including any unspecified\n            // font-spec fields, if a font-spec was provided.\n\n            // If no x/y axis options were provided, create one of each anyway,\n            // since the rest of the code assumes that they exist.\n\n            var i, axisOptions, axisCount,\n                fontSize = placeholder.css(\"font-size\"),\n                fontSizeDefault = fontSize ? +fontSize.replace(\"px\", \"\") : 13,\n                fontDefaults = {\n                    style: placeholder.css(\"font-style\"),\n                    size: Math.round(0.8 * fontSizeDefault),\n                    variant: placeholder.css(\"font-variant\"),\n                    weight: placeholder.css(\"font-weight\"),\n                    family: placeholder.css(\"font-family\")\n                };\n\n            axisCount = options.xaxes.length || 1;\n            for (i = 0; i < axisCount; ++i) {\n\n                axisOptions = options.xaxes[i];\n                if (axisOptions && !axisOptions.tickColor) {\n                    axisOptions.tickColor = axisOptions.color;\n                }\n\n                axisOptions = $.extend(true, {}, options.xaxis, axisOptions);\n                options.xaxes[i] = axisOptions;\n\n                if (axisOptions.font) {\n                    axisOptions.font = $.extend({}, fontDefaults, axisOptions.font);\n                    if (!axisOptions.font.color) {\n                        axisOptions.font.color = axisOptions.color;\n                    }\n                    if (!axisOptions.font.lineHeight) {\n                        axisOptions.font.lineHeight = Math.round(axisOptions.font.size * 1.15);\n                    }\n                }\n            }\n\n            axisCount = options.yaxes.length || 1;\n            for (i = 0; i < axisCount; ++i) {\n\n                axisOptions = options.yaxes[i];\n                if (axisOptions && !axisOptions.tickColor) {\n                    axisOptions.tickColor = axisOptions.color;\n                }\n\n                axisOptions = $.extend(true, {}, options.yaxis, axisOptions);\n                options.yaxes[i] = axisOptions;\n\n                if (axisOptions.font) {\n                    axisOptions.font = $.extend({}, fontDefaults, axisOptions.font);\n                    if (!axisOptions.font.color) {\n                        axisOptions.font.color = axisOptions.color;\n                    }\n                    if (!axisOptions.font.lineHeight) {\n                        axisOptions.font.lineHeight = Math.round(axisOptions.font.size * 1.15);\n                    }\n                }\n            }\n\n            // backwards compatibility, to be removed in future\n            if (options.xaxis.noTicks && options.xaxis.ticks == null)\n                options.xaxis.ticks = options.xaxis.noTicks;\n            if (options.yaxis.noTicks && options.yaxis.ticks == null)\n                options.yaxis.ticks = options.yaxis.noTicks;\n            if (options.x2axis) {\n                options.xaxes[1] = $.extend(true, {}, options.xaxis, options.x2axis);\n                options.xaxes[1].position = \"top\";\n                // Override the inherit to allow the axis to auto-scale\n                if (options.x2axis.min == null) {\n                    options.xaxes[1].min = null;\n                }\n                if (options.x2axis.max == null) {\n                    options.xaxes[1].max = null;\n                }\n            }\n            if (options.y2axis) {\n                options.yaxes[1] = $.extend(true, {}, options.yaxis, options.y2axis);\n                options.yaxes[1].position = \"right\";\n                // Override the inherit to allow the axis to auto-scale\n                if (options.y2axis.min == null) {\n                    options.yaxes[1].min = null;\n                }\n                if (options.y2axis.max == null) {\n                    options.yaxes[1].max = null;\n                }\n            }\n            if (options.grid.coloredAreas)\n                options.grid.markings = options.grid.coloredAreas;\n            if (options.grid.coloredAreasColor)\n                options.grid.markingsColor = options.grid.coloredAreasColor;\n            if (options.lines)\n                $.extend(true, options.series.lines, options.lines);\n            if (options.points)\n                $.extend(true, options.series.points, options.points);\n            if (options.bars)\n                $.extend(true, options.series.bars, options.bars);\n            if (options.shadowSize != null)\n                options.series.shadowSize = options.shadowSize;\n            if (options.highlightColor != null)\n                options.series.highlightColor = options.highlightColor;\n\n            // save options on axes for future reference\n            for (i = 0; i < options.xaxes.length; ++i)\n                getOrCreateAxis(xaxes, i + 1).options = options.xaxes[i];\n            for (i = 0; i < options.yaxes.length; ++i)\n                getOrCreateAxis(yaxes, i + 1).options = options.yaxes[i];\n\n            // add hooks from options\n            for (var n in hooks)\n                if (options.hooks[n] && options.hooks[n].length)\n                    hooks[n] = hooks[n].concat(options.hooks[n]);\n\n            executeHooks(hooks.processOptions, [options]);\n        }\n\n        function setData(d) {\n            series = parseData(d);\n            fillInSeriesOptions();\n            processData();\n        }\n\n        function parseData(d) {\n            var res = [];\n            for (var i = 0; i < d.length; ++i) {\n                var s = $.extend(true, {}, options.series);\n\n                if (d[i].data != null) {\n                    s.data = d[i].data; // move the data instead of deep-copy\n                    delete d[i].data;\n\n                    $.extend(true, s, d[i]);\n\n                    d[i].data = s.data;\n                }\n                else\n                    s.data = d[i];\n                res.push(s);\n            }\n\n            return res;\n        }\n\n        function axisNumber(obj, coord) {\n            var a = obj[coord + \"axis\"];\n            if (typeof a == \"object\") // if we got a real axis, extract number\n                a = a.n;\n            if (typeof a != \"number\")\n                a = 1; // default to first axis\n            return a;\n        }\n\n        function allAxes() {\n            // return flat array without annoying null entries\n            return $.grep(xaxes.concat(yaxes), function (a) { return a; });\n        }\n\n        function canvasToAxisCoords(pos) {\n            // return an object with x/y corresponding to all used axes\n            var res = {}, i, axis;\n            for (i = 0; i < xaxes.length; ++i) {\n                axis = xaxes[i];\n                if (axis && axis.used)\n                    res[\"x\" + axis.n] = axis.c2p(pos.left);\n            }\n\n            for (i = 0; i < yaxes.length; ++i) {\n                axis = yaxes[i];\n                if (axis && axis.used)\n                    res[\"y\" + axis.n] = axis.c2p(pos.top);\n            }\n\n            if (res.x1 !== undefined)\n                res.x = res.x1;\n            if (res.y1 !== undefined)\n                res.y = res.y1;\n\n            return res;\n        }\n\n        function axisToCanvasCoords(pos) {\n            // get canvas coords from the first pair of x/y found in pos\n            var res = {}, i, axis, key;\n\n            for (i = 0; i < xaxes.length; ++i) {\n                axis = xaxes[i];\n                if (axis && axis.used) {\n                    key = \"x\" + axis.n;\n                    if (pos[key] == null && axis.n == 1)\n                        key = \"x\";\n\n                    if (pos[key] != null) {\n                        res.left = axis.p2c(pos[key]);\n                        break;\n                    }\n                }\n            }\n\n            for (i = 0; i < yaxes.length; ++i) {\n                axis = yaxes[i];\n                if (axis && axis.used) {\n                    key = \"y\" + axis.n;\n                    if (pos[key] == null && axis.n == 1)\n                        key = \"y\";\n\n                    if (pos[key] != null) {\n                        res.top = axis.p2c(pos[key]);\n                        break;\n                    }\n                }\n            }\n\n            return res;\n        }\n\n        function getOrCreateAxis(axes, number) {\n            if (!axes[number - 1])\n                axes[number - 1] = {\n                    n: number, // save the number for future reference\n                    direction: axes == xaxes ? \"x\" : \"y\",\n                    options: $.extend(true, {}, axes == xaxes ? options.xaxis : options.yaxis)\n                };\n\n            return axes[number - 1];\n        }\n\n        function fillInSeriesOptions() {\n\n            var neededColors = series.length, maxIndex = -1, i;\n\n            // Subtract the number of series that already have fixed colors or\n            // color indexes from the number that we still need to generate.\n\n            for (i = 0; i < series.length; ++i) {\n                var sc = series[i].color;\n                if (sc != null) {\n                    neededColors--;\n                    if (typeof sc == \"number\" && sc > maxIndex) {\n                        maxIndex = sc;\n                    }\n                }\n            }\n\n            // If any of the series have fixed color indexes, then we need to\n            // generate at least as many colors as the highest index.\n\n            if (neededColors <= maxIndex) {\n                neededColors = maxIndex + 1;\n            }\n\n            // Generate all the colors, using first the option colors and then\n            // variations on those colors once they're exhausted.\n\n            var c, colors = [], colorPool = options.colors,\n                colorPoolSize = colorPool.length, variation = 0;\n\n            for (i = 0; i < neededColors; i++) {\n\n                c = $.color.parse(colorPool[i % colorPoolSize] || \"#666\");\n\n                // Each time we exhaust the colors in the pool we adjust\n                // a scaling factor used to produce more variations on\n                // those colors. The factor alternates negative/positive\n                // to produce lighter/darker colors.\n\n                // Reset the variation after every few cycles, or else\n                // it will end up producing only white or black colors.\n\n                if (i % colorPoolSize == 0 && i) {\n                    if (variation >= 0) {\n                        if (variation < 0.5) {\n                            variation = -variation - 0.2;\n                        } else variation = 0;\n                    } else variation = -variation;\n                }\n\n                colors[i] = c.scale('rgb', 1 + variation);\n            }\n\n            // Finalize the series options, filling in their colors\n\n            var colori = 0, s;\n            for (i = 0; i < series.length; ++i) {\n                s = series[i];\n\n                // assign colors\n                if (s.color == null) {\n                    s.color = colors[colori].toString();\n                    ++colori;\n                }\n                else if (typeof s.color == \"number\")\n                    s.color = colors[s.color].toString();\n\n                // turn on lines automatically in case nothing is set\n                if (s.lines.show == null) {\n                    var v, show = true;\n                    for (v in s)\n                        if (s[v] && s[v].show) {\n                            show = false;\n                            break;\n                        }\n                    if (show)\n                        s.lines.show = true;\n                }\n\n                // If nothing was provided for lines.zero, default it to match\n                // lines.fill, since areas by default should extend to zero.\n\n                if (s.lines.zero == null) {\n                    s.lines.zero = !!s.lines.fill;\n                }\n\n                // setup axes\n                s.xaxis = getOrCreateAxis(xaxes, axisNumber(s, \"x\"));\n                s.yaxis = getOrCreateAxis(yaxes, axisNumber(s, \"y\"));\n            }\n        }\n\n        function processData() {\n            var topSentry = Number.POSITIVE_INFINITY,\n                bottomSentry = Number.NEGATIVE_INFINITY,\n                fakeInfinity = Number.MAX_VALUE,\n                i, j, k, m, length,\n                s, points, ps, x, y, axis, val, f, p,\n                data, format;\n\n            function updateAxis(axis, min, max) {\n                if (min < axis.datamin && min != -fakeInfinity)\n                    axis.datamin = min;\n                if (max > axis.datamax && max != fakeInfinity)\n                    axis.datamax = max;\n            }\n\n            $.each(allAxes(), function (_, axis) {\n                // init axis\n                axis.datamin = topSentry;\n                axis.datamax = bottomSentry;\n                axis.used = false;\n            });\n\n            for (i = 0; i < series.length; ++i) {\n                s = series[i];\n                s.datapoints = { points: [] };\n\n                executeHooks(hooks.processRawData, [ s, s.data, s.datapoints ]);\n            }\n\n            // first pass: clean and copy data\n            for (i = 0; i < series.length; ++i) {\n                s = series[i];\n\n                data = s.data;\n                format = s.datapoints.format;\n\n                if (!format) {\n                    format = [];\n                    // find out how to copy\n                    format.push({ x: true, number: true, required: true });\n                    format.push({ y: true, number: true, required: true });\n\n                    if (s.bars.show || (s.lines.show && s.lines.fill)) {\n                        var autoscale = !!((s.bars.show && s.bars.zero) || (s.lines.show && s.lines.zero));\n                        format.push({ y: true, number: true, required: false, defaultValue: 0, autoscale: autoscale });\n                        if (s.bars.horizontal) {\n                            delete format[format.length - 1].y;\n                            format[format.length - 1].x = true;\n                        }\n                    }\n\n                    s.datapoints.format = format;\n                }\n\n                if (s.datapoints.pointsize != null)\n                    continue; // already filled in\n\n                s.datapoints.pointsize = format.length;\n\n                ps = s.datapoints.pointsize;\n                points = s.datapoints.points;\n\n                var insertSteps = s.lines.show && s.lines.steps;\n                s.xaxis.used = s.yaxis.used = true;\n\n                for (j = k = 0; j < data.length; ++j, k += ps) {\n                    p = data[j];\n\n                    var nullify = p == null;\n                    if (!nullify) {\n                        for (m = 0; m < ps; ++m) {\n                            val = p[m];\n                            f = format[m];\n\n                            if (f) {\n                                if (f.number && val != null) {\n                                    val = +val; // convert to number\n                                    if (isNaN(val))\n                                        val = null;\n                                    else if (val == Infinity)\n                                        val = fakeInfinity;\n                                    else if (val == -Infinity)\n                                        val = -fakeInfinity;\n                                }\n\n                                if (val == null) {\n                                    if (f.required)\n                                        nullify = true;\n\n                                    if (f.defaultValue != null)\n                                        val = f.defaultValue;\n                                }\n                            }\n\n                            points[k + m] = val;\n                        }\n                    }\n\n                    if (nullify) {\n                        for (m = 0; m < ps; ++m) {\n                            val = points[k + m];\n                            if (val != null) {\n                                f = format[m];\n                                // extract min/max info\n                                if (f.autoscale !== false) {\n                                    if (f.x) {\n                                        updateAxis(s.xaxis, val, val);\n                                    }\n                                    if (f.y) {\n                                        updateAxis(s.yaxis, val, val);\n                                    }\n                                }\n                            }\n                            points[k + m] = null;\n                        }\n                    }\n                    else {\n                        // a little bit of line specific stuff that\n                        // perhaps shouldn't be here, but lacking\n                        // better means...\n                        if (insertSteps && k > 0\n                            && points[k - ps] != null\n                            && points[k - ps] != points[k]\n                            && points[k - ps + 1] != points[k + 1]) {\n                            // copy the point to make room for a middle point\n                            for (m = 0; m < ps; ++m)\n                                points[k + ps + m] = points[k + m];\n\n                            // middle point has same y\n                            points[k + 1] = points[k - ps + 1];\n\n                            // we've added a point, better reflect that\n                            k += ps;\n                        }\n                    }\n                }\n            }\n\n            // give the hooks a chance to run\n            for (i = 0; i < series.length; ++i) {\n                s = series[i];\n\n                executeHooks(hooks.processDatapoints, [ s, s.datapoints]);\n            }\n\n            // second pass: find datamax/datamin for auto-scaling\n            for (i = 0; i < series.length; ++i) {\n                s = series[i];\n                points = s.datapoints.points;\n                ps = s.datapoints.pointsize;\n                format = s.datapoints.format;\n\n                var xmin = topSentry, ymin = topSentry,\n                    xmax = bottomSentry, ymax = bottomSentry;\n\n                for (j = 0; j < points.length; j += ps) {\n                    if (points[j] == null)\n                        continue;\n\n                    for (m = 0; m < ps; ++m) {\n                        val = points[j + m];\n                        f = format[m];\n                        if (!f || f.autoscale === false || val == fakeInfinity || val == -fakeInfinity)\n                            continue;\n\n                        if (f.x) {\n                            if (val < xmin)\n                                xmin = val;\n                            if (val > xmax)\n                                xmax = val;\n                        }\n                        if (f.y) {\n                            if (val < ymin)\n                                ymin = val;\n                            if (val > ymax)\n                                ymax = val;\n                        }\n                    }\n                }\n\n                if (s.bars.show) {\n                    // make sure we got room for the bar on the dancing floor\n                    var delta;\n\n                    switch (s.bars.align) {\n                        case \"left\":\n                            delta = 0;\n                            break;\n                        case \"right\":\n                            delta = -s.bars.barWidth;\n                            break;\n                        default:\n                            delta = -s.bars.barWidth / 2;\n                    }\n\n                    if (s.bars.horizontal) {\n                        ymin += delta;\n                        ymax += delta + s.bars.barWidth;\n                    }\n                    else {\n                        xmin += delta;\n                        xmax += delta + s.bars.barWidth;\n                    }\n                }\n\n                updateAxis(s.xaxis, xmin, xmax);\n                updateAxis(s.yaxis, ymin, ymax);\n            }\n\n            $.each(allAxes(), function (_, axis) {\n                if (axis.datamin == topSentry)\n                    axis.datamin = null;\n                if (axis.datamax == bottomSentry)\n                    axis.datamax = null;\n            });\n        }\n\n        function setupCanvases() {\n\n            // Make sure the placeholder is clear of everything except canvases\n            // from a previous plot in this container that we'll try to re-use.\n\n            placeholder.css(\"padding\", 0) // padding messes up the positioning\n                .children().filter(function(){\n                    return !$(this).hasClass(\"flot-overlay\") && !$(this).hasClass('flot-base');\n                }).remove();\n\n            if (placeholder.css(\"position\") == 'static')\n                placeholder.css(\"position\", \"relative\"); // for positioning labels and overlay\n\n            surface = new Canvas(\"flot-base\", placeholder);\n            overlay = new Canvas(\"flot-overlay\", placeholder); // overlay canvas for interactive features\n\n            ctx = surface.context;\n            octx = overlay.context;\n\n            // define which element we're listening for events on\n            eventHolder = $(overlay.element).unbind();\n\n            // If we're re-using a plot object, shut down the old one\n\n            var existing = placeholder.data(\"plot\");\n\n            if (existing) {\n                existing.shutdown();\n                overlay.clear();\n            }\n\n            // save in case we get replotted\n            placeholder.data(\"plot\", plot);\n        }\n\n        function bindEvents() {\n            // bind events\n            if (options.grid.hoverable) {\n                eventHolder.mousemove(onMouseMove);\n\n                // Use bind, rather than .mouseleave, because we officially\n                // still support jQuery 1.2.6, which doesn't define a shortcut\n                // for mouseenter or mouseleave.  This was a bug/oversight that\n                // was fixed somewhere around 1.3.x.  We can return to using\n                // .mouseleave when we drop support for 1.2.6.\n\n                eventHolder.bind(\"mouseleave\", onMouseLeave);\n            }\n\n            if (options.grid.clickable)\n                eventHolder.click(onClick);\n\n            executeHooks(hooks.bindEvents, [eventHolder]);\n        }\n\n        function shutdown() {\n            if (redrawTimeout)\n                clearTimeout(redrawTimeout);\n\n            eventHolder.unbind(\"mousemove\", onMouseMove);\n            eventHolder.unbind(\"mouseleave\", onMouseLeave);\n            eventHolder.unbind(\"click\", onClick);\n\n            executeHooks(hooks.shutdown, [eventHolder]);\n        }\n\n        function setTransformationHelpers(axis) {\n            // set helper functions on the axis, assumes plot area\n            // has been computed already\n\n            function identity(x) { return x; }\n\n            var s, m, t = axis.options.transform || identity,\n                it = axis.options.inverseTransform;\n\n            // precompute how much the axis is scaling a point\n            // in canvas space\n            if (axis.direction == \"x\") {\n                s = axis.scale = plotWidth / Math.abs(t(axis.max) - t(axis.min));\n                m = Math.min(t(axis.max), t(axis.min));\n            }\n            else {\n                s = axis.scale = plotHeight / Math.abs(t(axis.max) - t(axis.min));\n                s = -s;\n                m = Math.max(t(axis.max), t(axis.min));\n            }\n\n            // data point to canvas coordinate\n            if (t == identity) // slight optimization\n                axis.p2c = function (p) { return (p - m) * s; };\n            else\n                axis.p2c = function (p) { return (t(p) - m) * s; };\n            // canvas coordinate to data point\n            if (!it)\n                axis.c2p = function (c) { return m + c / s; };\n            else\n                axis.c2p = function (c) { return it(m + c / s); };\n        }\n\n        function measureTickLabels(axis) {\n\n            var opts = axis.options,\n                ticks = axis.ticks || [],\n                labelWidth = opts.labelWidth || 0,\n                labelHeight = opts.labelHeight || 0,\n                maxWidth = labelWidth || (axis.direction == \"x\" ? Math.floor(surface.width / (ticks.length || 1)) : null),\n                legacyStyles = axis.direction + \"Axis \" + axis.direction + axis.n + \"Axis\",\n                layer = \"flot-\" + axis.direction + \"-axis flot-\" + axis.direction + axis.n + \"-axis \" + legacyStyles,\n                font = opts.font || \"flot-tick-label tickLabel\";\n\n            for (var i = 0; i < ticks.length; ++i) {\n\n                var t = ticks[i];\n\n                if (!t.label)\n                    continue;\n\n                var info = surface.getTextInfo(layer, t.label, font, null, maxWidth);\n\n                labelWidth = Math.max(labelWidth, info.width);\n                labelHeight = Math.max(labelHeight, info.height);\n            }\n\n            axis.labelWidth = opts.labelWidth || labelWidth;\n            axis.labelHeight = opts.labelHeight || labelHeight;\n        }\n\n        function allocateAxisBoxFirstPhase(axis) {\n            // find the bounding box of the axis by looking at label\n            // widths/heights and ticks, make room by diminishing the\n            // plotOffset; this first phase only looks at one\n            // dimension per axis, the other dimension depends on the\n            // other axes so will have to wait\n\n            var lw = axis.labelWidth,\n                lh = axis.labelHeight,\n                pos = axis.options.position,\n                isXAxis = axis.direction === \"x\",\n                tickLength = axis.options.tickLength,\n                axisMargin = options.grid.axisMargin,\n                padding = options.grid.labelMargin,\n                innermost = true,\n                outermost = true,\n                first = true,\n                found = false;\n\n            // Determine the axis's position in its direction and on its side\n\n            $.each(isXAxis ? xaxes : yaxes, function(i, a) {\n                if (a && (a.show || a.reserveSpace)) {\n                    if (a === axis) {\n                        found = true;\n                    } else if (a.options.position === pos) {\n                        if (found) {\n                            outermost = false;\n                        } else {\n                            innermost = false;\n                        }\n                    }\n                    if (!found) {\n                        first = false;\n                    }\n                }\n            });\n\n            // The outermost axis on each side has no margin\n\n            if (outermost) {\n                axisMargin = 0;\n            }\n\n            // The ticks for the first axis in each direction stretch across\n\n            if (tickLength == null) {\n                tickLength = first ? \"full\" : 5;\n            }\n\n            if (!isNaN(+tickLength))\n                padding += +tickLength;\n\n            if (isXAxis) {\n                lh += padding;\n\n                if (pos == \"bottom\") {\n                    plotOffset.bottom += lh + axisMargin;\n                    axis.box = { top: surface.height - plotOffset.bottom, height: lh };\n                }\n                else {\n                    axis.box = { top: plotOffset.top + axisMargin, height: lh };\n                    plotOffset.top += lh + axisMargin;\n                }\n            }\n            else {\n                lw += padding;\n\n                if (pos == \"left\") {\n                    axis.box = { left: plotOffset.left + axisMargin, width: lw };\n                    plotOffset.left += lw + axisMargin;\n                }\n                else {\n                    plotOffset.right += lw + axisMargin;\n                    axis.box = { left: surface.width - plotOffset.right, width: lw };\n                }\n            }\n\n             // save for future reference\n            axis.position = pos;\n            axis.tickLength = tickLength;\n            axis.box.padding = padding;\n            axis.innermost = innermost;\n        }\n\n        function allocateAxisBoxSecondPhase(axis) {\n            // now that all axis boxes have been placed in one\n            // dimension, we can set the remaining dimension coordinates\n            if (axis.direction == \"x\") {\n                axis.box.left = plotOffset.left - axis.labelWidth / 2;\n                axis.box.width = surface.width - plotOffset.left - plotOffset.right + axis.labelWidth;\n            }\n            else {\n                axis.box.top = plotOffset.top - axis.labelHeight / 2;\n                axis.box.height = surface.height - plotOffset.bottom - plotOffset.top + axis.labelHeight;\n            }\n        }\n\n        function adjustLayoutForThingsStickingOut() {\n            // possibly adjust plot offset to ensure everything stays\n            // inside the canvas and isn't clipped off\n\n            var minMargin = options.grid.minBorderMargin,\n                axis, i;\n\n            // check stuff from the plot (FIXME: this should just read\n            // a value from the series, otherwise it's impossible to\n            // customize)\n            if (minMargin == null) {\n                minMargin = 0;\n                for (i = 0; i < series.length; ++i)\n                    minMargin = Math.max(minMargin, 2 * (series[i].points.radius + series[i].points.lineWidth/2));\n            }\n\n            var margins = {\n                left: minMargin,\n                right: minMargin,\n                top: minMargin,\n                bottom: minMargin\n            };\n\n            // check axis labels, note we don't check the actual\n            // labels but instead use the overall width/height to not\n            // jump as much around with replots\n            $.each(allAxes(), function (_, axis) {\n                if (axis.reserveSpace && axis.ticks && axis.ticks.length) {\n                    if (axis.direction === \"x\") {\n                        margins.left = Math.max(margins.left, axis.labelWidth / 2);\n                        margins.right = Math.max(margins.right, axis.labelWidth / 2);\n                    } else {\n                        margins.bottom = Math.max(margins.bottom, axis.labelHeight / 2);\n                        margins.top = Math.max(margins.top, axis.labelHeight / 2);\n                    }\n                }\n            });\n\n            plotOffset.left = Math.ceil(Math.max(margins.left, plotOffset.left));\n            plotOffset.right = Math.ceil(Math.max(margins.right, plotOffset.right));\n            plotOffset.top = Math.ceil(Math.max(margins.top, plotOffset.top));\n            plotOffset.bottom = Math.ceil(Math.max(margins.bottom, plotOffset.bottom));\n        }\n\n        function setupGrid() {\n            var i, axes = allAxes(), showGrid = options.grid.show;\n\n            // Initialize the plot's offset from the edge of the canvas\n\n            for (var a in plotOffset) {\n                var margin = options.grid.margin || 0;\n                plotOffset[a] = typeof margin == \"number\" ? margin : margin[a] || 0;\n            }\n\n            executeHooks(hooks.processOffset, [plotOffset]);\n\n            // If the grid is visible, add its border width to the offset\n\n            for (var a in plotOffset) {\n                if(typeof(options.grid.borderWidth) == \"object\") {\n                    plotOffset[a] += showGrid ? options.grid.borderWidth[a] : 0;\n                }\n                else {\n                    plotOffset[a] += showGrid ? options.grid.borderWidth : 0;\n                }\n            }\n\n            $.each(axes, function (_, axis) {\n                var axisOpts = axis.options;\n                axis.show = axisOpts.show == null ? axis.used : axisOpts.show;\n                axis.reserveSpace = axisOpts.reserveSpace == null ? axis.show : axisOpts.reserveSpace;\n                setRange(axis);\n            });\n\n            if (showGrid) {\n\n                var allocatedAxes = $.grep(axes, function (axis) {\n                    return axis.show || axis.reserveSpace;\n                });\n\n                $.each(allocatedAxes, function (_, axis) {\n                    // make the ticks\n                    setupTickGeneration(axis);\n                    setTicks(axis);\n                    snapRangeToTicks(axis, axis.ticks);\n                    // find labelWidth/Height for axis\n                    measureTickLabels(axis);\n                });\n\n                // with all dimensions calculated, we can compute the\n                // axis bounding boxes, start from the outside\n                // (reverse order)\n                for (i = allocatedAxes.length - 1; i >= 0; --i)\n                    allocateAxisBoxFirstPhase(allocatedAxes[i]);\n\n                // make sure we've got enough space for things that\n                // might stick out\n                adjustLayoutForThingsStickingOut();\n\n                $.each(allocatedAxes, function (_, axis) {\n                    allocateAxisBoxSecondPhase(axis);\n                });\n            }\n\n            plotWidth = surface.width - plotOffset.left - plotOffset.right;\n            plotHeight = surface.height - plotOffset.bottom - plotOffset.top;\n\n            // now we got the proper plot dimensions, we can compute the scaling\n            $.each(axes, function (_, axis) {\n                setTransformationHelpers(axis);\n            });\n\n            if (showGrid) {\n                drawAxisLabels();\n            }\n\n            insertLegend();\n        }\n\n        function setRange(axis) {\n            var opts = axis.options,\n                min = +(opts.min != null ? opts.min : axis.datamin),\n                max = +(opts.max != null ? opts.max : axis.datamax),\n                delta = max - min;\n\n            if (delta == 0.0) {\n                // degenerate case\n                var widen = max == 0 ? 1 : 0.01;\n\n                if (opts.min == null)\n                    min -= widen;\n                // always widen max if we couldn't widen min to ensure we\n                // don't fall into min == max which doesn't work\n                if (opts.max == null || opts.min != null)\n                    max += widen;\n            }\n            else {\n                // consider autoscaling\n                var margin = opts.autoscaleMargin;\n                if (margin != null) {\n                    if (opts.min == null) {\n                        min -= delta * margin;\n                        // make sure we don't go below zero if all values\n                        // are positive\n                        if (min < 0 && axis.datamin != null && axis.datamin >= 0)\n                            min = 0;\n                    }\n                    if (opts.max == null) {\n                        max += delta * margin;\n                        if (max > 0 && axis.datamax != null && axis.datamax <= 0)\n                            max = 0;\n                    }\n                }\n            }\n            axis.min = min;\n            axis.max = max;\n        }\n\n        function setupTickGeneration(axis) {\n            var opts = axis.options;\n\n            // estimate number of ticks\n            var noTicks;\n            if (typeof opts.ticks == \"number\" && opts.ticks > 0)\n                noTicks = opts.ticks;\n            else\n                // heuristic based on the model a*sqrt(x) fitted to\n                // some data points that seemed reasonable\n                noTicks = 0.3 * Math.sqrt(axis.direction == \"x\" ? surface.width : surface.height);\n\n            var delta = (axis.max - axis.min) / noTicks,\n                dec = -Math.floor(Math.log(delta) / Math.LN10),\n                maxDec = opts.tickDecimals;\n\n            if (maxDec != null && dec > maxDec) {\n                dec = maxDec;\n            }\n\n            var magn = Math.pow(10, -dec),\n                norm = delta / magn, // norm is between 1.0 and 10.0\n                size;\n\n            if (norm < 1.5) {\n                size = 1;\n            } else if (norm < 3) {\n                size = 2;\n                // special case for 2.5, requires an extra decimal\n                if (norm > 2.25 && (maxDec == null || dec + 1 <= maxDec)) {\n                    size = 2.5;\n                    ++dec;\n                }\n            } else if (norm < 7.5) {\n                size = 5;\n            } else {\n                size = 10;\n            }\n\n            size *= magn;\n\n            if (opts.minTickSize != null && size < opts.minTickSize) {\n                size = opts.minTickSize;\n            }\n\n            axis.delta = delta;\n            axis.tickDecimals = Math.max(0, maxDec != null ? maxDec : dec);\n            axis.tickSize = opts.tickSize || size;\n\n            // Time mode was moved to a plug-in in 0.8, and since so many people use it\n            // we'll add an especially friendly reminder to make sure they included it.\n\n            if (opts.mode == \"time\" && !axis.tickGenerator) {\n                throw new Error(\"Time mode requires the flot.time plugin.\");\n            }\n\n            // Flot supports base-10 axes; any other mode else is handled by a plug-in,\n            // like flot.time.js.\n\n            if (!axis.tickGenerator) {\n\n                axis.tickGenerator = function (axis) {\n\n                    var ticks = [],\n                        start = floorInBase(axis.min, axis.tickSize),\n                        i = 0,\n                        v = Number.NaN,\n                        prev;\n\n                    do {\n                        prev = v;\n                        v = start + i * axis.tickSize;\n                        ticks.push(v);\n                        ++i;\n                    } while (v < axis.max && v != prev);\n                    return ticks;\n                };\n\n\t\t\t\taxis.tickFormatter = function (value, axis) {\n\n\t\t\t\t\tvar factor = axis.tickDecimals ? Math.pow(10, axis.tickDecimals) : 1;\n\t\t\t\t\tvar formatted = \"\" + Math.round(value * factor) / factor;\n\n\t\t\t\t\t// If tickDecimals was specified, ensure that we have exactly that\n\t\t\t\t\t// much precision; otherwise default to the value's own precision.\n\n\t\t\t\t\tif (axis.tickDecimals != null) {\n\t\t\t\t\t\tvar decimal = formatted.indexOf(\".\");\n\t\t\t\t\t\tvar precision = decimal == -1 ? 0 : formatted.length - decimal - 1;\n\t\t\t\t\t\tif (precision < axis.tickDecimals) {\n\t\t\t\t\t\t\treturn (precision ? formatted : formatted + \".\") + (\"\" + factor).substr(1, axis.tickDecimals - precision);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n                    return formatted;\n                };\n            }\n\n            if ($.isFunction(opts.tickFormatter))\n                axis.tickFormatter = function (v, axis) { return \"\" + opts.tickFormatter(v, axis); };\n\n            if (opts.alignTicksWithAxis != null) {\n                var otherAxis = (axis.direction == \"x\" ? xaxes : yaxes)[opts.alignTicksWithAxis - 1];\n                if (otherAxis && otherAxis.used && otherAxis != axis) {\n                    // consider snapping min/max to outermost nice ticks\n                    var niceTicks = axis.tickGenerator(axis);\n                    if (niceTicks.length > 0) {\n                        if (opts.min == null)\n                            axis.min = Math.min(axis.min, niceTicks[0]);\n                        if (opts.max == null && niceTicks.length > 1)\n                            axis.max = Math.max(axis.max, niceTicks[niceTicks.length - 1]);\n                    }\n\n                    axis.tickGenerator = function (axis) {\n                        // copy ticks, scaled to this axis\n                        var ticks = [], v, i;\n                        for (i = 0; i < otherAxis.ticks.length; ++i) {\n                            v = (otherAxis.ticks[i].v - otherAxis.min) / (otherAxis.max - otherAxis.min);\n                            v = axis.min + v * (axis.max - axis.min);\n                            ticks.push(v);\n                        }\n                        return ticks;\n                    };\n\n                    // we might need an extra decimal since forced\n                    // ticks don't necessarily fit naturally\n                    if (!axis.mode && opts.tickDecimals == null) {\n                        var extraDec = Math.max(0, -Math.floor(Math.log(axis.delta) / Math.LN10) + 1),\n                            ts = axis.tickGenerator(axis);\n\n                        // only proceed if the tick interval rounded\n                        // with an extra decimal doesn't give us a\n                        // zero at end\n                        if (!(ts.length > 1 && /\\..*0$/.test((ts[1] - ts[0]).toFixed(extraDec))))\n                            axis.tickDecimals = extraDec;\n                    }\n                }\n            }\n        }\n\n        function setTicks(axis) {\n            var oticks = axis.options.ticks, ticks = [];\n            if (oticks == null || (typeof oticks == \"number\" && oticks > 0))\n                ticks = axis.tickGenerator(axis);\n            else if (oticks) {\n                if ($.isFunction(oticks))\n                    // generate the ticks\n                    ticks = oticks(axis);\n                else\n                    ticks = oticks;\n            }\n\n            // clean up/labelify the supplied ticks, copy them over\n            var i, v;\n            axis.ticks = [];\n            for (i = 0; i < ticks.length; ++i) {\n                var label = null;\n                var t = ticks[i];\n                if (typeof t == \"object\") {\n                    v = +t[0];\n                    if (t.length > 1)\n                        label = t[1];\n                }\n                else\n                    v = +t;\n                if (label == null)\n                    label = axis.tickFormatter(v, axis);\n                if (!isNaN(v))\n                    axis.ticks.push({ v: v, label: label });\n            }\n        }\n\n        function snapRangeToTicks(axis, ticks) {\n            if (axis.options.autoscaleMargin && ticks.length > 0) {\n                // snap to ticks\n                if (axis.options.min == null)\n                    axis.min = Math.min(axis.min, ticks[0].v);\n                if (axis.options.max == null && ticks.length > 1)\n                    axis.max = Math.max(axis.max, ticks[ticks.length - 1].v);\n            }\n        }\n\n        function draw() {\n\n            surface.clear();\n\n            executeHooks(hooks.drawBackground, [ctx]);\n\n            var grid = options.grid;\n\n            // draw background, if any\n            if (grid.show && grid.backgroundColor)\n                drawBackground();\n\n            if (grid.show && !grid.aboveData) {\n                drawGrid();\n            }\n\n            for (var i = 0; i < series.length; ++i) {\n                executeHooks(hooks.drawSeries, [ctx, series[i]]);\n                drawSeries(series[i]);\n            }\n\n            executeHooks(hooks.draw, [ctx]);\n\n            if (grid.show && grid.aboveData) {\n                drawGrid();\n            }\n\n            surface.render();\n\n            // A draw implies that either the axes or data have changed, so we\n            // should probably update the overlay highlights as well.\n\n            triggerRedrawOverlay();\n        }\n\n        function extractRange(ranges, coord) {\n            var axis, from, to, key, axes = allAxes();\n\n            for (var i = 0; i < axes.length; ++i) {\n                axis = axes[i];\n                if (axis.direction == coord) {\n                    key = coord + axis.n + \"axis\";\n                    if (!ranges[key] && axis.n == 1)\n                        key = coord + \"axis\"; // support x1axis as xaxis\n                    if (ranges[key]) {\n                        from = ranges[key].from;\n                        to = ranges[key].to;\n                        break;\n                    }\n                }\n            }\n\n            // backwards-compat stuff - to be removed in future\n            if (!ranges[key]) {\n                axis = coord == \"x\" ? xaxes[0] : yaxes[0];\n                from = ranges[coord + \"1\"];\n                to = ranges[coord + \"2\"];\n            }\n\n            // auto-reverse as an added bonus\n            if (from != null && to != null && from > to) {\n                var tmp = from;\n                from = to;\n                to = tmp;\n            }\n\n            return { from: from, to: to, axis: axis };\n        }\n\n        function drawBackground() {\n            ctx.save();\n            ctx.translate(plotOffset.left, plotOffset.top);\n\n            ctx.fillStyle = getColorOrGradient(options.grid.backgroundColor, plotHeight, 0, \"rgba(255, 255, 255, 0)\");\n            ctx.fillRect(0, 0, plotWidth, plotHeight);\n            ctx.restore();\n        }\n\n        function drawGrid() {\n            var i, axes, bw, bc;\n\n            ctx.save();\n            ctx.translate(plotOffset.left, plotOffset.top);\n\n            // draw markings\n            var markings = options.grid.markings;\n            if (markings) {\n                if ($.isFunction(markings)) {\n                    axes = plot.getAxes();\n                    // xmin etc. is backwards compatibility, to be\n                    // removed in the future\n                    axes.xmin = axes.xaxis.min;\n                    axes.xmax = axes.xaxis.max;\n                    axes.ymin = axes.yaxis.min;\n                    axes.ymax = axes.yaxis.max;\n\n                    markings = markings(axes);\n                }\n\n                for (i = 0; i < markings.length; ++i) {\n                    var m = markings[i],\n                        xrange = extractRange(m, \"x\"),\n                        yrange = extractRange(m, \"y\");\n\n                    // fill in missing\n                    if (xrange.from == null)\n                        xrange.from = xrange.axis.min;\n                    if (xrange.to == null)\n                        xrange.to = xrange.axis.max;\n                    if (yrange.from == null)\n                        yrange.from = yrange.axis.min;\n                    if (yrange.to == null)\n                        yrange.to = yrange.axis.max;\n\n                    // clip\n                    if (xrange.to < xrange.axis.min || xrange.from > xrange.axis.max ||\n                        yrange.to < yrange.axis.min || yrange.from > yrange.axis.max)\n                        continue;\n\n                    xrange.from = Math.max(xrange.from, xrange.axis.min);\n                    xrange.to = Math.min(xrange.to, xrange.axis.max);\n                    yrange.from = Math.max(yrange.from, yrange.axis.min);\n                    yrange.to = Math.min(yrange.to, yrange.axis.max);\n\n                    var xequal = xrange.from === xrange.to,\n                        yequal = yrange.from === yrange.to;\n\n                    if (xequal && yequal) {\n                        continue;\n                    }\n\n                    // then draw\n                    xrange.from = Math.floor(xrange.axis.p2c(xrange.from));\n                    xrange.to = Math.floor(xrange.axis.p2c(xrange.to));\n                    yrange.from = Math.floor(yrange.axis.p2c(yrange.from));\n                    yrange.to = Math.floor(yrange.axis.p2c(yrange.to));\n\n                    if (xequal || yequal) {\n                        var lineWidth = m.lineWidth || options.grid.markingsLineWidth,\n                            subPixel = lineWidth % 2 ? 0.5 : 0;\n                        ctx.beginPath();\n                        ctx.strokeStyle = m.color || options.grid.markingsColor;\n                        ctx.lineWidth = lineWidth;\n                        if (xequal) {\n                            ctx.moveTo(xrange.to + subPixel, yrange.from);\n                            ctx.lineTo(xrange.to + subPixel, yrange.to);\n                        } else {\n                            ctx.moveTo(xrange.from, yrange.to + subPixel);\n                            ctx.lineTo(xrange.to, yrange.to + subPixel);                            \n                        }\n                        ctx.stroke();\n                    } else {\n                        ctx.fillStyle = m.color || options.grid.markingsColor;\n                        ctx.fillRect(xrange.from, yrange.to,\n                                     xrange.to - xrange.from,\n                                     yrange.from - yrange.to);\n                    }\n                }\n            }\n\n            // draw the ticks\n            axes = allAxes();\n            bw = options.grid.borderWidth;\n\n            for (var j = 0; j < axes.length; ++j) {\n                var axis = axes[j], box = axis.box,\n                    t = axis.tickLength, x, y, xoff, yoff;\n                if (!axis.show || axis.ticks.length == 0)\n                    continue;\n\n                ctx.lineWidth = 1;\n\n                // find the edges\n                if (axis.direction == \"x\") {\n                    x = 0;\n                    if (t == \"full\")\n                        y = (axis.position == \"top\" ? 0 : plotHeight);\n                    else\n                        y = box.top - plotOffset.top + (axis.position == \"top\" ? box.height : 0);\n                }\n                else {\n                    y = 0;\n                    if (t == \"full\")\n                        x = (axis.position == \"left\" ? 0 : plotWidth);\n                    else\n                        x = box.left - plotOffset.left + (axis.position == \"left\" ? box.width : 0);\n                }\n\n                // draw tick bar\n                if (!axis.innermost) {\n                    ctx.strokeStyle = axis.options.color;\n                    ctx.beginPath();\n                    xoff = yoff = 0;\n                    if (axis.direction == \"x\")\n                        xoff = plotWidth + 1;\n                    else\n                        yoff = plotHeight + 1;\n\n                    if (ctx.lineWidth == 1) {\n                        if (axis.direction == \"x\") {\n                            y = Math.floor(y) + 0.5;\n                        } else {\n                            x = Math.floor(x) + 0.5;\n                        }\n                    }\n\n                    ctx.moveTo(x, y);\n                    ctx.lineTo(x + xoff, y + yoff);\n                    ctx.stroke();\n                }\n\n                // draw ticks\n\n                ctx.strokeStyle = axis.options.tickColor;\n\n                ctx.beginPath();\n                for (i = 0; i < axis.ticks.length; ++i) {\n                    var v = axis.ticks[i].v;\n\n                    xoff = yoff = 0;\n\n                    if (isNaN(v) || v < axis.min || v > axis.max\n                        // skip those lying on the axes if we got a border\n                        || (t == \"full\"\n                            && ((typeof bw == \"object\" && bw[axis.position] > 0) || bw > 0)\n                            && (v == axis.min || v == axis.max)))\n                        continue;\n\n                    if (axis.direction == \"x\") {\n                        x = axis.p2c(v);\n                        yoff = t == \"full\" ? -plotHeight : t;\n\n                        if (axis.position == \"top\")\n                            yoff = -yoff;\n                    }\n                    else {\n                        y = axis.p2c(v);\n                        xoff = t == \"full\" ? -plotWidth : t;\n\n                        if (axis.position == \"left\")\n                            xoff = -xoff;\n                    }\n\n                    if (ctx.lineWidth == 1) {\n                        if (axis.direction == \"x\")\n                            x = Math.floor(x) + 0.5;\n                        else\n                            y = Math.floor(y) + 0.5;\n                    }\n\n                    ctx.moveTo(x, y);\n                    ctx.lineTo(x + xoff, y + yoff);\n                }\n\n                ctx.stroke();\n            }\n\n\n            // draw border\n            if (bw) {\n                // If either borderWidth or borderColor is an object, then draw the border\n                // line by line instead of as one rectangle\n                bc = options.grid.borderColor;\n                if(typeof bw == \"object\" || typeof bc == \"object\") {\n                    if (typeof bw !== \"object\") {\n                        bw = {top: bw, right: bw, bottom: bw, left: bw};\n                    }\n                    if (typeof bc !== \"object\") {\n                        bc = {top: bc, right: bc, bottom: bc, left: bc};\n                    }\n\n                    if (bw.top > 0) {\n                        ctx.strokeStyle = bc.top;\n                        ctx.lineWidth = bw.top;\n                        ctx.beginPath();\n                        ctx.moveTo(0 - bw.left, 0 - bw.top/2);\n                        ctx.lineTo(plotWidth, 0 - bw.top/2);\n                        ctx.stroke();\n                    }\n\n                    if (bw.right > 0) {\n                        ctx.strokeStyle = bc.right;\n                        ctx.lineWidth = bw.right;\n                        ctx.beginPath();\n                        ctx.moveTo(plotWidth + bw.right / 2, 0 - bw.top);\n                        ctx.lineTo(plotWidth + bw.right / 2, plotHeight);\n                        ctx.stroke();\n                    }\n\n                    if (bw.bottom > 0) {\n                        ctx.strokeStyle = bc.bottom;\n                        ctx.lineWidth = bw.bottom;\n                        ctx.beginPath();\n                        ctx.moveTo(plotWidth + bw.right, plotHeight + bw.bottom / 2);\n                        ctx.lineTo(0, plotHeight + bw.bottom / 2);\n                        ctx.stroke();\n                    }\n\n                    if (bw.left > 0) {\n                        ctx.strokeStyle = bc.left;\n                        ctx.lineWidth = bw.left;\n                        ctx.beginPath();\n                        ctx.moveTo(0 - bw.left/2, plotHeight + bw.bottom);\n                        ctx.lineTo(0- bw.left/2, 0);\n                        ctx.stroke();\n                    }\n                }\n                else {\n                    ctx.lineWidth = bw;\n                    ctx.strokeStyle = options.grid.borderColor;\n                    ctx.strokeRect(-bw/2, -bw/2, plotWidth + bw, plotHeight + bw);\n                }\n            }\n\n            ctx.restore();\n        }\n\n        function drawAxisLabels() {\n\n            $.each(allAxes(), function (_, axis) {\n                var box = axis.box,\n                    legacyStyles = axis.direction + \"Axis \" + axis.direction + axis.n + \"Axis\",\n                    layer = \"flot-\" + axis.direction + \"-axis flot-\" + axis.direction + axis.n + \"-axis \" + legacyStyles,\n                    font = axis.options.font || \"flot-tick-label tickLabel\",\n                    tick, x, y, halign, valign;\n\n                // Remove text before checking for axis.show and ticks.length;\n                // otherwise plugins, like flot-tickrotor, that draw their own\n                // tick labels will end up with both theirs and the defaults.\n\n                surface.removeText(layer);\n\n                if (!axis.show || axis.ticks.length == 0)\n                    return;\n\n                for (var i = 0; i < axis.ticks.length; ++i) {\n\n                    tick = axis.ticks[i];\n                    if (!tick.label || tick.v < axis.min || tick.v > axis.max)\n                        continue;\n\n                    if (axis.direction == \"x\") {\n                        halign = \"center\";\n                        x = plotOffset.left + axis.p2c(tick.v);\n                        if (axis.position == \"bottom\") {\n                            y = box.top + box.padding;\n                        } else {\n                            y = box.top + box.height - box.padding;\n                            valign = \"bottom\";\n                        }\n                    } else {\n                        valign = \"middle\";\n                        y = plotOffset.top + axis.p2c(tick.v);\n                        if (axis.position == \"left\") {\n                            x = box.left + box.width - box.padding;\n                            halign = \"right\";\n                        } else {\n                            x = box.left + box.padding;\n                        }\n                    }\n\n                    surface.addText(layer, x, y, tick.label, font, null, null, halign, valign);\n                }\n            });\n        }\n\n        function drawSeries(series) {\n            if (series.lines.show)\n                drawSeriesLines(series);\n            if (series.bars.show)\n                drawSeriesBars(series);\n            if (series.points.show)\n                drawSeriesPoints(series);\n        }\n\n        function drawSeriesLines(series) {\n            function plotLine(datapoints, xoffset, yoffset, axisx, axisy) {\n                var points = datapoints.points,\n                    ps = datapoints.pointsize,\n                    prevx = null, prevy = null;\n\n                ctx.beginPath();\n                for (var i = ps; i < points.length; i += ps) {\n                    var x1 = points[i - ps], y1 = points[i - ps + 1],\n                        x2 = points[i], y2 = points[i + 1];\n\n                    if (x1 == null || x2 == null)\n                        continue;\n\n                    // clip with ymin\n                    if (y1 <= y2 && y1 < axisy.min) {\n                        if (y2 < axisy.min)\n                            continue;   // line segment is outside\n                        // compute new intersection point\n                        x1 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y1 = axisy.min;\n                    }\n                    else if (y2 <= y1 && y2 < axisy.min) {\n                        if (y1 < axisy.min)\n                            continue;\n                        x2 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y2 = axisy.min;\n                    }\n\n                    // clip with ymax\n                    if (y1 >= y2 && y1 > axisy.max) {\n                        if (y2 > axisy.max)\n                            continue;\n                        x1 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y1 = axisy.max;\n                    }\n                    else if (y2 >= y1 && y2 > axisy.max) {\n                        if (y1 > axisy.max)\n                            continue;\n                        x2 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y2 = axisy.max;\n                    }\n\n                    // clip with xmin\n                    if (x1 <= x2 && x1 < axisx.min) {\n                        if (x2 < axisx.min)\n                            continue;\n                        y1 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x1 = axisx.min;\n                    }\n                    else if (x2 <= x1 && x2 < axisx.min) {\n                        if (x1 < axisx.min)\n                            continue;\n                        y2 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x2 = axisx.min;\n                    }\n\n                    // clip with xmax\n                    if (x1 >= x2 && x1 > axisx.max) {\n                        if (x2 > axisx.max)\n                            continue;\n                        y1 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x1 = axisx.max;\n                    }\n                    else if (x2 >= x1 && x2 > axisx.max) {\n                        if (x1 > axisx.max)\n                            continue;\n                        y2 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x2 = axisx.max;\n                    }\n\n                    if (x1 != prevx || y1 != prevy)\n                        ctx.moveTo(axisx.p2c(x1) + xoffset, axisy.p2c(y1) + yoffset);\n\n                    prevx = x2;\n                    prevy = y2;\n                    ctx.lineTo(axisx.p2c(x2) + xoffset, axisy.p2c(y2) + yoffset);\n                }\n                ctx.stroke();\n            }\n\n            function plotLineArea(datapoints, axisx, axisy) {\n                var points = datapoints.points,\n                    ps = datapoints.pointsize,\n                    bottom = Math.min(Math.max(0, axisy.min), axisy.max),\n                    i = 0, top, areaOpen = false,\n                    ypos = 1, segmentStart = 0, segmentEnd = 0;\n\n                // we process each segment in two turns, first forward\n                // direction to sketch out top, then once we hit the\n                // end we go backwards to sketch the bottom\n                while (true) {\n                    if (ps > 0 && i > points.length + ps)\n                        break;\n\n                    i += ps; // ps is negative if going backwards\n\n                    var x1 = points[i - ps],\n                        y1 = points[i - ps + ypos],\n                        x2 = points[i], y2 = points[i + ypos];\n\n                    if (areaOpen) {\n                        if (ps > 0 && x1 != null && x2 == null) {\n                            // at turning point\n                            segmentEnd = i;\n                            ps = -ps;\n                            ypos = 2;\n                            continue;\n                        }\n\n                        if (ps < 0 && i == segmentStart + ps) {\n                            // done with the reverse sweep\n                            ctx.fill();\n                            areaOpen = false;\n                            ps = -ps;\n                            ypos = 1;\n                            i = segmentStart = segmentEnd + ps;\n                            continue;\n                        }\n                    }\n\n                    if (x1 == null || x2 == null)\n                        continue;\n\n                    // clip x values\n\n                    // clip with xmin\n                    if (x1 <= x2 && x1 < axisx.min) {\n                        if (x2 < axisx.min)\n                            continue;\n                        y1 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x1 = axisx.min;\n                    }\n                    else if (x2 <= x1 && x2 < axisx.min) {\n                        if (x1 < axisx.min)\n                            continue;\n                        y2 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x2 = axisx.min;\n                    }\n\n                    // clip with xmax\n                    if (x1 >= x2 && x1 > axisx.max) {\n                        if (x2 > axisx.max)\n                            continue;\n                        y1 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x1 = axisx.max;\n                    }\n                    else if (x2 >= x1 && x2 > axisx.max) {\n                        if (x1 > axisx.max)\n                            continue;\n                        y2 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x2 = axisx.max;\n                    }\n\n                    if (!areaOpen) {\n                        // open area\n                        ctx.beginPath();\n                        ctx.moveTo(axisx.p2c(x1), axisy.p2c(bottom));\n                        areaOpen = true;\n                    }\n\n                    // now first check the case where both is outside\n                    if (y1 >= axisy.max && y2 >= axisy.max) {\n                        ctx.lineTo(axisx.p2c(x1), axisy.p2c(axisy.max));\n                        ctx.lineTo(axisx.p2c(x2), axisy.p2c(axisy.max));\n                        continue;\n                    }\n                    else if (y1 <= axisy.min && y2 <= axisy.min) {\n                        ctx.lineTo(axisx.p2c(x1), axisy.p2c(axisy.min));\n                        ctx.lineTo(axisx.p2c(x2), axisy.p2c(axisy.min));\n                        continue;\n                    }\n\n                    // else it's a bit more complicated, there might\n                    // be a flat maxed out rectangle first, then a\n                    // triangular cutout or reverse; to find these\n                    // keep track of the current x values\n                    var x1old = x1, x2old = x2;\n\n                    // clip the y values, without shortcutting, we\n                    // go through all cases in turn\n\n                    // clip with ymin\n                    if (y1 <= y2 && y1 < axisy.min && y2 >= axisy.min) {\n                        x1 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y1 = axisy.min;\n                    }\n                    else if (y2 <= y1 && y2 < axisy.min && y1 >= axisy.min) {\n                        x2 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y2 = axisy.min;\n                    }\n\n                    // clip with ymax\n                    if (y1 >= y2 && y1 > axisy.max && y2 <= axisy.max) {\n                        x1 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y1 = axisy.max;\n                    }\n                    else if (y2 >= y1 && y2 > axisy.max && y1 <= axisy.max) {\n                        x2 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y2 = axisy.max;\n                    }\n\n                    // if the x value was changed we got a rectangle\n                    // to fill\n                    if (x1 != x1old) {\n                        ctx.lineTo(axisx.p2c(x1old), axisy.p2c(y1));\n                        // it goes to (x1, y1), but we fill that below\n                    }\n\n                    // fill triangular section, this sometimes result\n                    // in redundant points if (x1, y1) hasn't changed\n                    // from previous line to, but we just ignore that\n                    ctx.lineTo(axisx.p2c(x1), axisy.p2c(y1));\n                    ctx.lineTo(axisx.p2c(x2), axisy.p2c(y2));\n\n                    // fill the other rectangle if it's there\n                    if (x2 != x2old) {\n                        ctx.lineTo(axisx.p2c(x2), axisy.p2c(y2));\n                        ctx.lineTo(axisx.p2c(x2old), axisy.p2c(y2));\n                    }\n                }\n            }\n\n            ctx.save();\n            ctx.translate(plotOffset.left, plotOffset.top);\n            ctx.lineJoin = \"round\";\n\n            var lw = series.lines.lineWidth,\n                sw = series.shadowSize;\n            // FIXME: consider another form of shadow when filling is turned on\n            if (lw > 0 && sw > 0) {\n                // draw shadow as a thick and thin line with transparency\n                ctx.lineWidth = sw;\n                ctx.strokeStyle = \"rgba(0,0,0,0.1)\";\n                // position shadow at angle from the mid of line\n                var angle = Math.PI/18;\n                plotLine(series.datapoints, Math.sin(angle) * (lw/2 + sw/2), Math.cos(angle) * (lw/2 + sw/2), series.xaxis, series.yaxis);\n                ctx.lineWidth = sw/2;\n                plotLine(series.datapoints, Math.sin(angle) * (lw/2 + sw/4), Math.cos(angle) * (lw/2 + sw/4), series.xaxis, series.yaxis);\n            }\n\n            ctx.lineWidth = lw;\n            ctx.strokeStyle = series.color;\n            var fillStyle = getFillStyle(series.lines, series.color, 0, plotHeight);\n            if (fillStyle) {\n                ctx.fillStyle = fillStyle;\n                plotLineArea(series.datapoints, series.xaxis, series.yaxis);\n            }\n\n            if (lw > 0)\n                plotLine(series.datapoints, 0, 0, series.xaxis, series.yaxis);\n            ctx.restore();\n        }\n\n        function drawSeriesPoints(series) {\n            function plotPoints(datapoints, radius, fillStyle, offset, shadow, axisx, axisy, symbol) {\n                var points = datapoints.points, ps = datapoints.pointsize;\n\n                for (var i = 0; i < points.length; i += ps) {\n                    var x = points[i], y = points[i + 1];\n                    if (x == null || x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max)\n                        continue;\n\n                    ctx.beginPath();\n                    x = axisx.p2c(x);\n                    y = axisy.p2c(y) + offset;\n                    if (symbol == \"circle\")\n                        ctx.arc(x, y, radius, 0, shadow ? Math.PI : Math.PI * 2, false);\n                    else\n                        symbol(ctx, x, y, radius, shadow);\n                    ctx.closePath();\n\n                    if (fillStyle) {\n                        ctx.fillStyle = fillStyle;\n                        ctx.fill();\n                    }\n                    ctx.stroke();\n                }\n            }\n\n            ctx.save();\n            ctx.translate(plotOffset.left, plotOffset.top);\n\n            var lw = series.points.lineWidth,\n                sw = series.shadowSize,\n                radius = series.points.radius,\n                symbol = series.points.symbol;\n\n            // If the user sets the line width to 0, we change it to a very \n            // small value. A line width of 0 seems to force the default of 1.\n            // Doing the conditional here allows the shadow setting to still be \n            // optional even with a lineWidth of 0.\n\n            if( lw == 0 )\n                lw = 0.0001;\n\n            if (lw > 0 && sw > 0) {\n                // draw shadow in two steps\n                var w = sw / 2;\n                ctx.lineWidth = w;\n                ctx.strokeStyle = \"rgba(0,0,0,0.1)\";\n                plotPoints(series.datapoints, radius, null, w + w/2, true,\n                           series.xaxis, series.yaxis, symbol);\n\n                ctx.strokeStyle = \"rgba(0,0,0,0.2)\";\n                plotPoints(series.datapoints, radius, null, w/2, true,\n                           series.xaxis, series.yaxis, symbol);\n            }\n\n            ctx.lineWidth = lw;\n            ctx.strokeStyle = series.color;\n            plotPoints(series.datapoints, radius,\n                       getFillStyle(series.points, series.color), 0, false,\n                       series.xaxis, series.yaxis, symbol);\n            ctx.restore();\n        }\n\n        function drawBar(x, y, b, barLeft, barRight, fillStyleCallback, axisx, axisy, c, horizontal, lineWidth) {\n            var left, right, bottom, top,\n                drawLeft, drawRight, drawTop, drawBottom,\n                tmp;\n\n            // in horizontal mode, we start the bar from the left\n            // instead of from the bottom so it appears to be\n            // horizontal rather than vertical\n            if (horizontal) {\n                drawBottom = drawRight = drawTop = true;\n                drawLeft = false;\n                left = b;\n                right = x;\n                top = y + barLeft;\n                bottom = y + barRight;\n\n                // account for negative bars\n                if (right < left) {\n                    tmp = right;\n                    right = left;\n                    left = tmp;\n                    drawLeft = true;\n                    drawRight = false;\n                }\n            }\n            else {\n                drawLeft = drawRight = drawTop = true;\n                drawBottom = false;\n                left = x + barLeft;\n                right = x + barRight;\n                bottom = b;\n                top = y;\n\n                // account for negative bars\n                if (top < bottom) {\n                    tmp = top;\n                    top = bottom;\n                    bottom = tmp;\n                    drawBottom = true;\n                    drawTop = false;\n                }\n            }\n\n            // clip\n            if (right < axisx.min || left > axisx.max ||\n                top < axisy.min || bottom > axisy.max)\n                return;\n\n            if (left < axisx.min) {\n                left = axisx.min;\n                drawLeft = false;\n            }\n\n            if (right > axisx.max) {\n                right = axisx.max;\n                drawRight = false;\n            }\n\n            if (bottom < axisy.min) {\n                bottom = axisy.min;\n                drawBottom = false;\n            }\n\n            if (top > axisy.max) {\n                top = axisy.max;\n                drawTop = false;\n            }\n\n            left = axisx.p2c(left);\n            bottom = axisy.p2c(bottom);\n            right = axisx.p2c(right);\n            top = axisy.p2c(top);\n\n            // fill the bar\n            if (fillStyleCallback) {\n                c.fillStyle = fillStyleCallback(bottom, top);\n                c.fillRect(left, top, right - left, bottom - top)\n            }\n\n            // draw outline\n            if (lineWidth > 0 && (drawLeft || drawRight || drawTop || drawBottom)) {\n                c.beginPath();\n\n                // FIXME: inline moveTo is buggy with excanvas\n                c.moveTo(left, bottom);\n                if (drawLeft)\n                    c.lineTo(left, top);\n                else\n                    c.moveTo(left, top);\n                if (drawTop)\n                    c.lineTo(right, top);\n                else\n                    c.moveTo(right, top);\n                if (drawRight)\n                    c.lineTo(right, bottom);\n                else\n                    c.moveTo(right, bottom);\n                if (drawBottom)\n                    c.lineTo(left, bottom);\n                else\n                    c.moveTo(left, bottom);\n                c.stroke();\n            }\n        }\n\n        function drawSeriesBars(series) {\n            function plotBars(datapoints, barLeft, barRight, fillStyleCallback, axisx, axisy) {\n                var points = datapoints.points, ps = datapoints.pointsize;\n\n                for (var i = 0; i < points.length; i += ps) {\n                    if (points[i] == null)\n                        continue;\n                    drawBar(points[i], points[i + 1], points[i + 2], barLeft, barRight, fillStyleCallback, axisx, axisy, ctx, series.bars.horizontal, series.bars.lineWidth);\n                }\n            }\n\n            ctx.save();\n            ctx.translate(plotOffset.left, plotOffset.top);\n\n            // FIXME: figure out a way to add shadows (for instance along the right edge)\n            ctx.lineWidth = series.bars.lineWidth;\n            ctx.strokeStyle = series.color;\n\n            var barLeft;\n\n            switch (series.bars.align) {\n                case \"left\":\n                    barLeft = 0;\n                    break;\n                case \"right\":\n                    barLeft = -series.bars.barWidth;\n                    break;\n                default:\n                    barLeft = -series.bars.barWidth / 2;\n            }\n\n            var fillStyleCallback = series.bars.fill ? function (bottom, top) { return getFillStyle(series.bars, series.color, bottom, top); } : null;\n            plotBars(series.datapoints, barLeft, barLeft + series.bars.barWidth, fillStyleCallback, series.xaxis, series.yaxis);\n            ctx.restore();\n        }\n\n        function getFillStyle(filloptions, seriesColor, bottom, top) {\n            var fill = filloptions.fill;\n            if (!fill)\n                return null;\n\n            if (filloptions.fillColor)\n                return getColorOrGradient(filloptions.fillColor, bottom, top, seriesColor);\n\n            var c = $.color.parse(seriesColor);\n            c.a = typeof fill == \"number\" ? fill : 0.4;\n            c.normalize();\n            return c.toString();\n        }\n\n        function insertLegend() {\n\n            if (options.legend.container != null) {\n                $(options.legend.container).html(\"\");\n            } else {\n                placeholder.find(\".legend\").remove();\n            }\n\n            if (!options.legend.show) {\n                return;\n            }\n\n            var fragments = [], entries = [], rowStarted = false,\n                lf = options.legend.labelFormatter, s, label;\n\n            // Build a list of legend entries, with each having a label and a color\n\n            for (var i = 0; i < series.length; ++i) {\n                s = series[i];\n                if (s.label) {\n                    label = lf ? lf(s.label, s) : s.label;\n                    if (label) {\n                        entries.push({\n                            label: label,\n                            color: s.color\n                        });\n                    }\n                }\n            }\n\n            // Sort the legend using either the default or a custom comparator\n\n            if (options.legend.sorted) {\n                if ($.isFunction(options.legend.sorted)) {\n                    entries.sort(options.legend.sorted);\n                } else if (options.legend.sorted == \"reverse\") {\n                \tentries.reverse();\n                } else {\n                    var ascending = options.legend.sorted != \"descending\";\n                    entries.sort(function(a, b) {\n                        return a.label == b.label ? 0 : (\n                            (a.label < b.label) != ascending ? 1 : -1   // Logical XOR\n                        );\n                    });\n                }\n            }\n\n            // Generate markup for the list of entries, in their final order\n\n            for (var i = 0; i < entries.length; ++i) {\n\n                var entry = entries[i];\n\n                if (i % options.legend.noColumns == 0) {\n                    if (rowStarted)\n                        fragments.push('</tr>');\n                    fragments.push('<tr>');\n                    rowStarted = true;\n                }\n\n                fragments.push(\n                    '<td class=\"legendColorBox\"><div style=\"border:1px solid ' + options.legend.labelBoxBorderColor + ';padding:1px\"><div style=\"width:4px;height:0;border:5px solid ' + entry.color + ';overflow:hidden\"></div></div></td>' +\n                    '<td class=\"legendLabel\">' + entry.label + '</td>'\n                );\n            }\n\n            if (rowStarted)\n                fragments.push('</tr>');\n\n            if (fragments.length == 0)\n                return;\n\n            var table = '<table style=\"font-size:smaller;color:' + options.grid.color + '\">' + fragments.join(\"\") + '</table>';\n            if (options.legend.container != null)\n                $(options.legend.container).html(table);\n            else {\n                var pos = \"\",\n                    p = options.legend.position,\n                    m = options.legend.margin;\n                if (m[0] == null)\n                    m = [m, m];\n                if (p.charAt(0) == \"n\")\n                    pos += 'top:' + (m[1] + plotOffset.top) + 'px;';\n                else if (p.charAt(0) == \"s\")\n                    pos += 'bottom:' + (m[1] + plotOffset.bottom) + 'px;';\n                if (p.charAt(1) == \"e\")\n                    pos += 'right:' + (m[0] + plotOffset.right) + 'px;';\n                else if (p.charAt(1) == \"w\")\n                    pos += 'left:' + (m[0] + plotOffset.left) + 'px;';\n                var legend = $('<div class=\"legend\">' + table.replace('style=\"', 'style=\"position:absolute;' + pos +';') + '</div>').appendTo(placeholder);\n                if (options.legend.backgroundOpacity != 0.0) {\n                    // put in the transparent background\n                    // separately to avoid blended labels and\n                    // label boxes\n                    var c = options.legend.backgroundColor;\n                    if (c == null) {\n                        c = options.grid.backgroundColor;\n                        if (c && typeof c == \"string\")\n                            c = $.color.parse(c);\n                        else\n                            c = $.color.extract(legend, 'background-color');\n                        c.a = 1;\n                        c = c.toString();\n                    }\n                    var div = legend.children();\n                    $('<div style=\"position:absolute;width:' + div.width() + 'px;height:' + div.height() + 'px;' + pos +'background-color:' + c + ';\"> </div>').prependTo(legend).css('opacity', options.legend.backgroundOpacity);\n                }\n            }\n        }\n\n\n        // interactive features\n\n        var highlights = [],\n            redrawTimeout = null;\n\n        // returns the data item the mouse is over, or null if none is found\n        function findNearbyItem(mouseX, mouseY, seriesFilter) {\n            var maxDistance = options.grid.mouseActiveRadius,\n                smallestDistance = maxDistance * maxDistance + 1,\n                item = null, foundPoint = false, i, j, ps;\n\n            for (i = series.length - 1; i >= 0; --i) {\n                if (!seriesFilter(series[i]))\n                    continue;\n\n                var s = series[i],\n                    axisx = s.xaxis,\n                    axisy = s.yaxis,\n                    points = s.datapoints.points,\n                    mx = axisx.c2p(mouseX), // precompute some stuff to make the loop faster\n                    my = axisy.c2p(mouseY),\n                    maxx = maxDistance / axisx.scale,\n                    maxy = maxDistance / axisy.scale;\n\n                ps = s.datapoints.pointsize;\n                // with inverse transforms, we can't use the maxx/maxy\n                // optimization, sadly\n                if (axisx.options.inverseTransform)\n                    maxx = Number.MAX_VALUE;\n                if (axisy.options.inverseTransform)\n                    maxy = Number.MAX_VALUE;\n\n                if (s.lines.show || s.points.show) {\n                    for (j = 0; j < points.length; j += ps) {\n                        var x = points[j], y = points[j + 1];\n                        if (x == null)\n                            continue;\n\n                        // For points and lines, the cursor must be within a\n                        // certain distance to the data point\n                        if (x - mx > maxx || x - mx < -maxx ||\n                            y - my > maxy || y - my < -maxy)\n                            continue;\n\n                        // We have to calculate distances in pixels, not in\n                        // data units, because the scales of the axes may be different\n                        var dx = Math.abs(axisx.p2c(x) - mouseX),\n                            dy = Math.abs(axisy.p2c(y) - mouseY),\n                            dist = dx * dx + dy * dy; // we save the sqrt\n\n                        // use <= to ensure last point takes precedence\n                        // (last generally means on top of)\n                        if (dist < smallestDistance) {\n                            smallestDistance = dist;\n                            item = [i, j / ps];\n                        }\n                    }\n                }\n\n                if (s.bars.show && !item) { // no other point can be nearby\n\n                    var barLeft, barRight;\n\n                    switch (s.bars.align) {\n                        case \"left\":\n                            barLeft = 0;\n                            break;\n                        case \"right\":\n                            barLeft = -s.bars.barWidth;\n                            break;\n                        default:\n                            barLeft = -s.bars.barWidth / 2;\n                    }\n\n                    barRight = barLeft + s.bars.barWidth;\n\n                    for (j = 0; j < points.length; j += ps) {\n                        var x = points[j], y = points[j + 1], b = points[j + 2];\n                        if (x == null)\n                            continue;\n\n                        // for a bar graph, the cursor must be inside the bar\n                        if (series[i].bars.horizontal ?\n                            (mx <= Math.max(b, x) && mx >= Math.min(b, x) &&\n                             my >= y + barLeft && my <= y + barRight) :\n                            (mx >= x + barLeft && mx <= x + barRight &&\n                             my >= Math.min(b, y) && my <= Math.max(b, y)))\n                                item = [i, j / ps];\n                    }\n                }\n            }\n\n            if (item) {\n                i = item[0];\n                j = item[1];\n                ps = series[i].datapoints.pointsize;\n\n                return { datapoint: series[i].datapoints.points.slice(j * ps, (j + 1) * ps),\n                         dataIndex: j,\n                         series: series[i],\n                         seriesIndex: i };\n            }\n\n            return null;\n        }\n\n        function onMouseMove(e) {\n            if (options.grid.hoverable)\n                triggerClickHoverEvent(\"plothover\", e,\n                                       function (s) { return s[\"hoverable\"] != false; });\n        }\n\n        function onMouseLeave(e) {\n            if (options.grid.hoverable)\n                triggerClickHoverEvent(\"plothover\", e,\n                                       function (s) { return false; });\n        }\n\n        function onClick(e) {\n            triggerClickHoverEvent(\"plotclick\", e,\n                                   function (s) { return s[\"clickable\"] != false; });\n        }\n\n        // trigger click or hover event (they send the same parameters\n        // so we share their code)\n        function triggerClickHoverEvent(eventname, event, seriesFilter) {\n            var offset = eventHolder.offset(),\n                canvasX = event.pageX - offset.left - plotOffset.left,\n                canvasY = event.pageY - offset.top - plotOffset.top,\n            pos = canvasToAxisCoords({ left: canvasX, top: canvasY });\n\n            pos.pageX = event.pageX;\n            pos.pageY = event.pageY;\n\n            var item = findNearbyItem(canvasX, canvasY, seriesFilter);\n\n            if (item) {\n                // fill in mouse pos for any listeners out there\n                item.pageX = parseInt(item.series.xaxis.p2c(item.datapoint[0]) + offset.left + plotOffset.left, 10);\n                item.pageY = parseInt(item.series.yaxis.p2c(item.datapoint[1]) + offset.top + plotOffset.top, 10);\n            }\n\n            if (options.grid.autoHighlight) {\n                // clear auto-highlights\n                for (var i = 0; i < highlights.length; ++i) {\n                    var h = highlights[i];\n                    if (h.auto == eventname &&\n                        !(item && h.series == item.series &&\n                          h.point[0] == item.datapoint[0] &&\n                          h.point[1] == item.datapoint[1]))\n                        unhighlight(h.series, h.point);\n                }\n\n                if (item)\n                    highlight(item.series, item.datapoint, eventname);\n            }\n\n            placeholder.trigger(eventname, [ pos, item ]);\n        }\n\n        function triggerRedrawOverlay() {\n            var t = options.interaction.redrawOverlayInterval;\n            if (t == -1) {      // skip event queue\n                drawOverlay();\n                return;\n            }\n\n            if (!redrawTimeout)\n                redrawTimeout = setTimeout(drawOverlay, t);\n        }\n\n        function drawOverlay() {\n            redrawTimeout = null;\n\n            // draw highlights\n            octx.save();\n            overlay.clear();\n            octx.translate(plotOffset.left, plotOffset.top);\n\n            var i, hi;\n            for (i = 0; i < highlights.length; ++i) {\n                hi = highlights[i];\n\n                if (hi.series.bars.show)\n                    drawBarHighlight(hi.series, hi.point);\n                else\n                    drawPointHighlight(hi.series, hi.point);\n            }\n            octx.restore();\n\n            executeHooks(hooks.drawOverlay, [octx]);\n        }\n\n        function highlight(s, point, auto) {\n            if (typeof s == \"number\")\n                s = series[s];\n\n            if (typeof point == \"number\") {\n                var ps = s.datapoints.pointsize;\n                point = s.datapoints.points.slice(ps * point, ps * (point + 1));\n            }\n\n            var i = indexOfHighlight(s, point);\n            if (i == -1) {\n                highlights.push({ series: s, point: point, auto: auto });\n\n                triggerRedrawOverlay();\n            }\n            else if (!auto)\n                highlights[i].auto = false;\n        }\n\n        function unhighlight(s, point) {\n            if (s == null && point == null) {\n                highlights = [];\n                triggerRedrawOverlay();\n                return;\n            }\n\n            if (typeof s == \"number\")\n                s = series[s];\n\n            if (typeof point == \"number\") {\n                var ps = s.datapoints.pointsize;\n                point = s.datapoints.points.slice(ps * point, ps * (point + 1));\n            }\n\n            var i = indexOfHighlight(s, point);\n            if (i != -1) {\n                highlights.splice(i, 1);\n\n                triggerRedrawOverlay();\n            }\n        }\n\n        function indexOfHighlight(s, p) {\n            for (var i = 0; i < highlights.length; ++i) {\n                var h = highlights[i];\n                if (h.series == s && h.point[0] == p[0]\n                    && h.point[1] == p[1])\n                    return i;\n            }\n            return -1;\n        }\n\n        function drawPointHighlight(series, point) {\n            var x = point[0], y = point[1],\n                axisx = series.xaxis, axisy = series.yaxis,\n                highlightColor = (typeof series.highlightColor === \"string\") ? series.highlightColor : $.color.parse(series.color).scale('a', 0.5).toString();\n\n            if (x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max)\n                return;\n\n            var pointRadius = series.points.radius + series.points.lineWidth / 2;\n            octx.lineWidth = pointRadius;\n            octx.strokeStyle = highlightColor;\n            var radius = 1.5 * pointRadius;\n            x = axisx.p2c(x);\n            y = axisy.p2c(y);\n\n            octx.beginPath();\n            if (series.points.symbol == \"circle\")\n                octx.arc(x, y, radius, 0, 2 * Math.PI, false);\n            else\n                series.points.symbol(octx, x, y, radius, false);\n            octx.closePath();\n            octx.stroke();\n        }\n\n        function drawBarHighlight(series, point) {\n            var highlightColor = (typeof series.highlightColor === \"string\") ? series.highlightColor : $.color.parse(series.color).scale('a', 0.5).toString(),\n                fillStyle = highlightColor,\n                barLeft;\n\n            switch (series.bars.align) {\n                case \"left\":\n                    barLeft = 0;\n                    break;\n                case \"right\":\n                    barLeft = -series.bars.barWidth;\n                    break;\n                default:\n                    barLeft = -series.bars.barWidth / 2;\n            }\n\n            octx.lineWidth = series.bars.lineWidth;\n            octx.strokeStyle = highlightColor;\n\n            drawBar(point[0], point[1], point[2] || 0, barLeft, barLeft + series.bars.barWidth,\n                    function () { return fillStyle; }, series.xaxis, series.yaxis, octx, series.bars.horizontal, series.bars.lineWidth);\n        }\n\n        function getColorOrGradient(spec, bottom, top, defaultColor) {\n            if (typeof spec == \"string\")\n                return spec;\n            else {\n                // assume this is a gradient spec; IE currently only\n                // supports a simple vertical gradient properly, so that's\n                // what we support too\n                var gradient = ctx.createLinearGradient(0, top, 0, bottom);\n\n                for (var i = 0, l = spec.colors.length; i < l; ++i) {\n                    var c = spec.colors[i];\n                    if (typeof c != \"string\") {\n                        var co = $.color.parse(defaultColor);\n                        if (c.brightness != null)\n                            co = co.scale('rgb', c.brightness);\n                        if (c.opacity != null)\n                            co.a *= c.opacity;\n                        c = co.toString();\n                    }\n                    gradient.addColorStop(i / (l - 1), c);\n                }\n\n                return gradient;\n            }\n        }\n    }\n\n    // Add the plot function to the top level of the jQuery object\n\n    $.plot = function(placeholder, data, options) {\n        //var t0 = new Date();\n        var plot = new Plot($(placeholder), data, options, $.plot.plugins);\n        //(window.console ? console.log : alert)(\"time used (msecs): \" + ((new Date()).getTime() - t0.getTime()));\n        return plot;\n    };\n\n    $.plot.version = \"0.8.3\";\n\n    $.plot.plugins = [];\n\n    // Also add the plot function as a chainable property\n\n    $.fn.plot = function(data, options) {\n        return this.each(function() {\n            $.plot(this, data, options);\n        });\n    };\n\n    // round to nearby lower multiple of base\n    function floorInBase(n, base) {\n        return base * Math.floor(n / base);\n    }\n\n})(jQuery);\n"
  },
  {
    "path": "public/admin/js/flot/jquery.flot.pie.js",
    "content": "/* Flot plugin for rendering pie charts.\n\nCopyright (c) 2007-2014 IOLA and Ole Laursen.\nLicensed under the MIT license.\n\nThe plugin assumes that each series has a single data value, and that each\nvalue is a positive integer or zero.  Negative numbers don't make sense for a\npie chart, and have unpredictable results.  The values do NOT need to be\npassed in as percentages; the plugin will calculate the total and per-slice\npercentages internally.\n\n* Created by Brian Medendorp\n\n* Updated with contributions from btburnett3, Anthony Aragues and Xavi Ivars\n\nThe plugin supports these options:\n\n\tseries: {\n\t\tpie: {\n\t\t\tshow: true/false\n\t\t\tradius: 0-1 for percentage of fullsize, or a specified pixel length, or 'auto'\n\t\t\tinnerRadius: 0-1 for percentage of fullsize or a specified pixel length, for creating a donut effect\n\t\t\tstartAngle: 0-2 factor of PI used for starting angle (in radians) i.e 3/2 starts at the top, 0 and 2 have the same result\n\t\t\ttilt: 0-1 for percentage to tilt the pie, where 1 is no tilt, and 0 is completely flat (nothing will show)\n\t\t\toffset: {\n\t\t\t\ttop: integer value to move the pie up or down\n\t\t\t\tleft: integer value to move the pie left or right, or 'auto'\n\t\t\t},\n\t\t\tstroke: {\n\t\t\t\tcolor: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#FFF')\n\t\t\t\twidth: integer pixel width of the stroke\n\t\t\t},\n\t\t\tlabel: {\n\t\t\t\tshow: true/false, or 'auto'\n\t\t\t\tformatter:  a user-defined function that modifies the text/style of the label text\n\t\t\t\tradius: 0-1 for percentage of fullsize, or a specified pixel length\n\t\t\t\tbackground: {\n\t\t\t\t\tcolor: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#000')\n\t\t\t\t\topacity: 0-1\n\t\t\t\t},\n\t\t\t\tthreshold: 0-1 for the percentage value at which to hide labels (if they're too small)\n\t\t\t},\n\t\t\tcombine: {\n\t\t\t\tthreshold: 0-1 for the percentage value at which to combine slices (if they're too small)\n\t\t\t\tcolor: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#CCC'), if null, the plugin will automatically use the color of the first slice to be combined\n\t\t\t\tlabel: any text value of what the combined slice should be labeled\n\t\t\t}\n\t\t\thighlight: {\n\t\t\t\topacity: 0-1\n\t\t\t}\n\t\t}\n\t}\n\nMore detail and specific examples can be found in the included HTML file.\n\n*/\n\n(function($) {\n\n\t// Maximum redraw attempts when fitting labels within the plot\n\n\tvar REDRAW_ATTEMPTS = 10;\n\n\t// Factor by which to shrink the pie when fitting labels within the plot\n\n\tvar REDRAW_SHRINK = 0.95;\n\n\tfunction init(plot) {\n\n\t\tvar canvas = null,\n\t\t\ttarget = null,\n\t\t\toptions = null,\n\t\t\tmaxRadius = null,\n\t\t\tcenterLeft = null,\n\t\t\tcenterTop = null,\n\t\t\tprocessed = false,\n\t\t\tctx = null;\n\n\t\t// interactive variables\n\n\t\tvar highlights = [];\n\n\t\t// add hook to determine if pie plugin in enabled, and then perform necessary operations\n\n\t\tplot.hooks.processOptions.push(function(plot, options) {\n\t\t\tif (options.series.pie.show) {\n\n\t\t\t\toptions.grid.show = false;\n\n\t\t\t\t// set labels.show\n\n\t\t\t\tif (options.series.pie.label.show == \"auto\") {\n\t\t\t\t\tif (options.legend.show) {\n\t\t\t\t\t\toptions.series.pie.label.show = false;\n\t\t\t\t\t} else {\n\t\t\t\t\t\toptions.series.pie.label.show = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// set radius\n\n\t\t\t\tif (options.series.pie.radius == \"auto\") {\n\t\t\t\t\tif (options.series.pie.label.show) {\n\t\t\t\t\t\toptions.series.pie.radius = 3/4;\n\t\t\t\t\t} else {\n\t\t\t\t\t\toptions.series.pie.radius = 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// ensure sane tilt\n\n\t\t\t\tif (options.series.pie.tilt > 1) {\n\t\t\t\t\toptions.series.pie.tilt = 1;\n\t\t\t\t} else if (options.series.pie.tilt < 0) {\n\t\t\t\t\toptions.series.pie.tilt = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tplot.hooks.bindEvents.push(function(plot, eventHolder) {\n\t\t\tvar options = plot.getOptions();\n\t\t\tif (options.series.pie.show) {\n\t\t\t\tif (options.grid.hoverable) {\n\t\t\t\t\teventHolder.unbind(\"mousemove\").mousemove(onMouseMove);\n\t\t\t\t}\n\t\t\t\tif (options.grid.clickable) {\n\t\t\t\t\teventHolder.unbind(\"click\").click(onClick);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tplot.hooks.processDatapoints.push(function(plot, series, data, datapoints) {\n\t\t\tvar options = plot.getOptions();\n\t\t\tif (options.series.pie.show) {\n\t\t\t\tprocessDatapoints(plot, series, data, datapoints);\n\t\t\t}\n\t\t});\n\n\t\tplot.hooks.drawOverlay.push(function(plot, octx) {\n\t\t\tvar options = plot.getOptions();\n\t\t\tif (options.series.pie.show) {\n\t\t\t\tdrawOverlay(plot, octx);\n\t\t\t}\n\t\t});\n\n\t\tplot.hooks.draw.push(function(plot, newCtx) {\n\t\t\tvar options = plot.getOptions();\n\t\t\tif (options.series.pie.show) {\n\t\t\t\tdraw(plot, newCtx);\n\t\t\t}\n\t\t});\n\n\t\tfunction processDatapoints(plot, series, datapoints) {\n\t\t\tif (!processed)\t{\n\t\t\t\tprocessed = true;\n\t\t\t\tcanvas = plot.getCanvas();\n\t\t\t\ttarget = $(canvas).parent();\n\t\t\t\toptions = plot.getOptions();\n\t\t\t\tplot.setData(combine(plot.getData()));\n\t\t\t}\n\t\t}\n\n\t\tfunction combine(data) {\n\n\t\t\tvar total = 0,\n\t\t\t\tcombined = 0,\n\t\t\t\tnumCombined = 0,\n\t\t\t\tcolor = options.series.pie.combine.color,\n\t\t\t\tnewdata = [];\n\n\t\t\t// Fix up the raw data from Flot, ensuring the data is numeric\n\n\t\t\tfor (var i = 0; i < data.length; ++i) {\n\n\t\t\t\tvar value = data[i].data;\n\n\t\t\t\t// If the data is an array, we'll assume that it's a standard\n\t\t\t\t// Flot x-y pair, and are concerned only with the second value.\n\n\t\t\t\t// Note how we use the original array, rather than creating a\n\t\t\t\t// new one; this is more efficient and preserves any extra data\n\t\t\t\t// that the user may have stored in higher indexes.\n\n\t\t\t\tif ($.isArray(value) && value.length == 1) {\n    \t\t\t\tvalue = value[0];\n\t\t\t\t}\n\n\t\t\t\tif ($.isArray(value)) {\n\t\t\t\t\t// Equivalent to $.isNumeric() but compatible with jQuery < 1.7\n\t\t\t\t\tif (!isNaN(parseFloat(value[1])) && isFinite(value[1])) {\n\t\t\t\t\t\tvalue[1] = +value[1];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvalue[1] = 0;\n\t\t\t\t\t}\n\t\t\t\t} else if (!isNaN(parseFloat(value)) && isFinite(value)) {\n\t\t\t\t\tvalue = [1, +value];\n\t\t\t\t} else {\n\t\t\t\t\tvalue = [1, 0];\n\t\t\t\t}\n\n\t\t\t\tdata[i].data = [value];\n\t\t\t}\n\n\t\t\t// Sum up all the slices, so we can calculate percentages for each\n\n\t\t\tfor (var i = 0; i < data.length; ++i) {\n\t\t\t\ttotal += data[i].data[0][1];\n\t\t\t}\n\n\t\t\t// Count the number of slices with percentages below the combine\n\t\t\t// threshold; if it turns out to be just one, we won't combine.\n\n\t\t\tfor (var i = 0; i < data.length; ++i) {\n\t\t\t\tvar value = data[i].data[0][1];\n\t\t\t\tif (value / total <= options.series.pie.combine.threshold) {\n\t\t\t\t\tcombined += value;\n\t\t\t\t\tnumCombined++;\n\t\t\t\t\tif (!color) {\n\t\t\t\t\t\tcolor = data[i].color;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (var i = 0; i < data.length; ++i) {\n\t\t\t\tvar value = data[i].data[0][1];\n\t\t\t\tif (numCombined < 2 || value / total > options.series.pie.combine.threshold) {\n\t\t\t\t\tnewdata.push(\n\t\t\t\t\t\t$.extend(data[i], {     /* extend to allow keeping all other original data values\n\t\t\t\t\t\t                           and using them e.g. in labelFormatter. */\n\t\t\t\t\t\t\tdata: [[1, value]],\n\t\t\t\t\t\t\tcolor: data[i].color,\n\t\t\t\t\t\t\tlabel: data[i].label,\n\t\t\t\t\t\t\tangle: value * Math.PI * 2 / total,\n\t\t\t\t\t\t\tpercent: value / (total / 100)\n\t\t\t\t\t\t})\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (numCombined > 1) {\n\t\t\t\tnewdata.push({\n\t\t\t\t\tdata: [[1, combined]],\n\t\t\t\t\tcolor: color,\n\t\t\t\t\tlabel: options.series.pie.combine.label,\n\t\t\t\t\tangle: combined * Math.PI * 2 / total,\n\t\t\t\t\tpercent: combined / (total / 100)\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn newdata;\n\t\t}\n\n\t\tfunction draw(plot, newCtx) {\n\n\t\t\tif (!target) {\n\t\t\t\treturn; // if no series were passed\n\t\t\t}\n\n\t\t\tvar canvasWidth = plot.getPlaceholder().width(),\n\t\t\t\tcanvasHeight = plot.getPlaceholder().height(),\n\t\t\t\tlegendWidth = target.children().filter(\".legend\").children().width() || 0;\n\n\t\t\tctx = newCtx;\n\n\t\t\t// WARNING: HACK! REWRITE THIS CODE AS SOON AS POSSIBLE!\n\n\t\t\t// When combining smaller slices into an 'other' slice, we need to\n\t\t\t// add a new series.  Since Flot gives plugins no way to modify the\n\t\t\t// list of series, the pie plugin uses a hack where the first call\n\t\t\t// to processDatapoints results in a call to setData with the new\n\t\t\t// list of series, then subsequent processDatapoints do nothing.\n\n\t\t\t// The plugin-global 'processed' flag is used to control this hack;\n\t\t\t// it starts out false, and is set to true after the first call to\n\t\t\t// processDatapoints.\n\n\t\t\t// Unfortunately this turns future setData calls into no-ops; they\n\t\t\t// call processDatapoints, the flag is true, and nothing happens.\n\n\t\t\t// To fix this we'll set the flag back to false here in draw, when\n\t\t\t// all series have been processed, so the next sequence of calls to\n\t\t\t// processDatapoints once again starts out with a slice-combine.\n\t\t\t// This is really a hack; in 0.9 we need to give plugins a proper\n\t\t\t// way to modify series before any processing begins.\n\n\t\t\tprocessed = false;\n\n\t\t\t// calculate maximum radius and center point\n\n\t\t\tmaxRadius =  Math.min(canvasWidth, canvasHeight / options.series.pie.tilt) / 2;\n\t\t\tcenterTop = canvasHeight / 2 + options.series.pie.offset.top;\n\t\t\tcenterLeft = canvasWidth / 2;\n\n\t\t\tif (options.series.pie.offset.left == \"auto\") {\n\t\t\t\tif (options.legend.position.match(\"w\")) {\n\t\t\t\t\tcenterLeft += legendWidth / 2;\n\t\t\t\t} else {\n\t\t\t\t\tcenterLeft -= legendWidth / 2;\n\t\t\t\t}\n\t\t\t\tif (centerLeft < maxRadius) {\n\t\t\t\t\tcenterLeft = maxRadius;\n\t\t\t\t} else if (centerLeft > canvasWidth - maxRadius) {\n\t\t\t\t\tcenterLeft = canvasWidth - maxRadius;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcenterLeft += options.series.pie.offset.left;\n\t\t\t}\n\n\t\t\tvar slices = plot.getData(),\n\t\t\t\tattempts = 0;\n\n\t\t\t// Keep shrinking the pie's radius until drawPie returns true,\n\t\t\t// indicating that all the labels fit, or we try too many times.\n\n\t\t\tdo {\n\t\t\t\tif (attempts > 0) {\n\t\t\t\t\tmaxRadius *= REDRAW_SHRINK;\n\t\t\t\t}\n\t\t\t\tattempts += 1;\n\t\t\t\tclear();\n\t\t\t\tif (options.series.pie.tilt <= 0.8) {\n\t\t\t\t\tdrawShadow();\n\t\t\t\t}\n\t\t\t} while (!drawPie() && attempts < REDRAW_ATTEMPTS)\n\n\t\t\tif (attempts >= REDRAW_ATTEMPTS) {\n\t\t\t\tclear();\n\t\t\t\ttarget.prepend(\"<div class='error'>Could not draw pie with labels contained inside canvas</div>\");\n\t\t\t}\n\n\t\t\tif (plot.setSeries && plot.insertLegend) {\n\t\t\t\tplot.setSeries(slices);\n\t\t\t\tplot.insertLegend();\n\t\t\t}\n\n\t\t\t// we're actually done at this point, just defining internal functions at this point\n\n\t\t\tfunction clear() {\n\t\t\t\tctx.clearRect(0, 0, canvasWidth, canvasHeight);\n\t\t\t\ttarget.children().filter(\".pieLabel, .pieLabelBackground\").remove();\n\t\t\t}\n\n\t\t\tfunction drawShadow() {\n\n\t\t\t\tvar shadowLeft = options.series.pie.shadow.left;\n\t\t\t\tvar shadowTop = options.series.pie.shadow.top;\n\t\t\t\tvar edge = 10;\n\t\t\t\tvar alpha = options.series.pie.shadow.alpha;\n\t\t\t\tvar radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius;\n\n\t\t\t\tif (radius >= canvasWidth / 2 - shadowLeft || radius * options.series.pie.tilt >= canvasHeight / 2 - shadowTop || radius <= edge) {\n\t\t\t\t\treturn;\t// shadow would be outside canvas, so don't draw it\n\t\t\t\t}\n\n\t\t\t\tctx.save();\n\t\t\t\tctx.translate(shadowLeft,shadowTop);\n\t\t\t\tctx.globalAlpha = alpha;\n\t\t\t\tctx.fillStyle = \"#000\";\n\n\t\t\t\t// center and rotate to starting position\n\n\t\t\t\tctx.translate(centerLeft,centerTop);\n\t\t\t\tctx.scale(1, options.series.pie.tilt);\n\n\t\t\t\t//radius -= edge;\n\n\t\t\t\tfor (var i = 1; i <= edge; i++) {\n\t\t\t\t\tctx.beginPath();\n\t\t\t\t\tctx.arc(0, 0, radius, 0, Math.PI * 2, false);\n\t\t\t\t\tctx.fill();\n\t\t\t\t\tradius -= i;\n\t\t\t\t}\n\n\t\t\t\tctx.restore();\n\t\t\t}\n\n\t\t\tfunction drawPie() {\n\n\t\t\t\tvar startAngle = Math.PI * options.series.pie.startAngle;\n\t\t\t\tvar radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius;\n\n\t\t\t\t// center and rotate to starting position\n\n\t\t\t\tctx.save();\n\t\t\t\tctx.translate(centerLeft,centerTop);\n\t\t\t\tctx.scale(1, options.series.pie.tilt);\n\t\t\t\t//ctx.rotate(startAngle); // start at top; -- This doesn't work properly in Opera\n\n\t\t\t\t// draw slices\n\n\t\t\t\tctx.save();\n\t\t\t\tvar currentAngle = startAngle;\n\t\t\t\tfor (var i = 0; i < slices.length; ++i) {\n\t\t\t\t\tslices[i].startAngle = currentAngle;\n\t\t\t\t\tdrawSlice(slices[i].angle, slices[i].color, true);\n\t\t\t\t}\n\t\t\t\tctx.restore();\n\n\t\t\t\t// draw slice outlines\n\n\t\t\t\tif (options.series.pie.stroke.width > 0) {\n\t\t\t\t\tctx.save();\n\t\t\t\t\tctx.lineWidth = options.series.pie.stroke.width;\n\t\t\t\t\tcurrentAngle = startAngle;\n\t\t\t\t\tfor (var i = 0; i < slices.length; ++i) {\n\t\t\t\t\t\tdrawSlice(slices[i].angle, options.series.pie.stroke.color, false);\n\t\t\t\t\t}\n\t\t\t\t\tctx.restore();\n\t\t\t\t}\n\n\t\t\t\t// draw donut hole\n\n\t\t\t\tdrawDonutHole(ctx);\n\n\t\t\t\tctx.restore();\n\n\t\t\t\t// Draw the labels, returning true if they fit within the plot\n\n\t\t\t\tif (options.series.pie.label.show) {\n\t\t\t\t\treturn drawLabels();\n\t\t\t\t} else return true;\n\n\t\t\t\tfunction drawSlice(angle, color, fill) {\n\n\t\t\t\t\tif (angle <= 0 || isNaN(angle)) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (fill) {\n\t\t\t\t\t\tctx.fillStyle = color;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tctx.strokeStyle = color;\n\t\t\t\t\t\tctx.lineJoin = \"round\";\n\t\t\t\t\t}\n\n\t\t\t\t\tctx.beginPath();\n\t\t\t\t\tif (Math.abs(angle - Math.PI * 2) > 0.000000001) {\n\t\t\t\t\t\tctx.moveTo(0, 0); // Center of the pie\n\t\t\t\t\t}\n\n\t\t\t\t\t//ctx.arc(0, 0, radius, 0, angle, false); // This doesn't work properly in Opera\n\t\t\t\t\tctx.arc(0, 0, radius,currentAngle, currentAngle + angle / 2, false);\n\t\t\t\t\tctx.arc(0, 0, radius,currentAngle + angle / 2, currentAngle + angle, false);\n\t\t\t\t\tctx.closePath();\n\t\t\t\t\t//ctx.rotate(angle); // This doesn't work properly in Opera\n\t\t\t\t\tcurrentAngle += angle;\n\n\t\t\t\t\tif (fill) {\n\t\t\t\t\t\tctx.fill();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tctx.stroke();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfunction drawLabels() {\n\n\t\t\t\t\tvar currentAngle = startAngle;\n\t\t\t\t\tvar radius = options.series.pie.label.radius > 1 ? options.series.pie.label.radius : maxRadius * options.series.pie.label.radius;\n\n\t\t\t\t\tfor (var i = 0; i < slices.length; ++i) {\n\t\t\t\t\t\tif (slices[i].percent >= options.series.pie.label.threshold * 100) {\n\t\t\t\t\t\t\tif (!drawLabel(slices[i], currentAngle, i)) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcurrentAngle += slices[i].angle;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn true;\n\n\t\t\t\t\tfunction drawLabel(slice, startAngle, index) {\n\n\t\t\t\t\t\tif (slice.data[0][1] == 0) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// format label text\n\n\t\t\t\t\t\tvar lf = options.legend.labelFormatter, text, plf = options.series.pie.label.formatter;\n\n\t\t\t\t\t\tif (lf) {\n\t\t\t\t\t\t\ttext = lf(slice.label, slice);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttext = slice.label;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (plf) {\n\t\t\t\t\t\t\ttext = plf(text, slice);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar halfAngle = ((startAngle + slice.angle) + startAngle) / 2;\n\t\t\t\t\t\tvar x = centerLeft + Math.round(Math.cos(halfAngle) * radius);\n\t\t\t\t\t\tvar y = centerTop + Math.round(Math.sin(halfAngle) * radius) * options.series.pie.tilt;\n\n\t\t\t\t\t\tvar html = \"<span class='pieLabel' id='pieLabel\" + index + \"' style='position:absolute;top:\" + y + \"px;left:\" + x + \"px;'>\" + text + \"</span>\";\n\t\t\t\t\t\ttarget.append(html);\n\n\t\t\t\t\t\tvar label = target.children(\"#pieLabel\" + index);\n\t\t\t\t\t\tvar labelTop = (y - label.height() / 2);\n\t\t\t\t\t\tvar labelLeft = (x - label.width() / 2);\n\n\t\t\t\t\t\tlabel.css(\"top\", labelTop);\n\t\t\t\t\t\tlabel.css(\"left\", labelLeft);\n\n\t\t\t\t\t\t// check to make sure that the label is not outside the canvas\n\n\t\t\t\t\t\tif (0 - labelTop > 0 || 0 - labelLeft > 0 || canvasHeight - (labelTop + label.height()) < 0 || canvasWidth - (labelLeft + label.width()) < 0) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (options.series.pie.label.background.opacity != 0) {\n\n\t\t\t\t\t\t\t// put in the transparent background separately to avoid blended labels and label boxes\n\n\t\t\t\t\t\t\tvar c = options.series.pie.label.background.color;\n\n\t\t\t\t\t\t\tif (c == null) {\n\t\t\t\t\t\t\t\tc = slice.color;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tvar pos = \"top:\" + labelTop + \"px;left:\" + labelLeft + \"px;\";\n\t\t\t\t\t\t\t$(\"<div class='pieLabelBackground' style='position:absolute;width:\" + label.width() + \"px;height:\" + label.height() + \"px;\" + pos + \"background-color:\" + c + \";'></div>\")\n\t\t\t\t\t\t\t\t.css(\"opacity\", options.series.pie.label.background.opacity)\n\t\t\t\t\t\t\t\t.insertBefore(label);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t} // end individual label function\n\t\t\t\t} // end drawLabels function\n\t\t\t} // end drawPie function\n\t\t} // end draw function\n\n\t\t// Placed here because it needs to be accessed from multiple locations\n\n\t\tfunction drawDonutHole(layer) {\n\t\t\tif (options.series.pie.innerRadius > 0) {\n\n\t\t\t\t// subtract the center\n\n\t\t\t\tlayer.save();\n\t\t\t\tvar innerRadius = options.series.pie.innerRadius > 1 ? options.series.pie.innerRadius : maxRadius * options.series.pie.innerRadius;\n\t\t\t\tlayer.globalCompositeOperation = \"destination-out\"; // this does not work with excanvas, but it will fall back to using the stroke color\n\t\t\t\tlayer.beginPath();\n\t\t\t\tlayer.fillStyle = options.series.pie.stroke.color;\n\t\t\t\tlayer.arc(0, 0, innerRadius, 0, Math.PI * 2, false);\n\t\t\t\tlayer.fill();\n\t\t\t\tlayer.closePath();\n\t\t\t\tlayer.restore();\n\n\t\t\t\t// add inner stroke\n\n\t\t\t\tlayer.save();\n\t\t\t\tlayer.beginPath();\n\t\t\t\tlayer.strokeStyle = options.series.pie.stroke.color;\n\t\t\t\tlayer.arc(0, 0, innerRadius, 0, Math.PI * 2, false);\n\t\t\t\tlayer.stroke();\n\t\t\t\tlayer.closePath();\n\t\t\t\tlayer.restore();\n\n\t\t\t\t// TODO: add extra shadow inside hole (with a mask) if the pie is tilted.\n\t\t\t}\n\t\t}\n\n\t\t//-- Additional Interactive related functions --\n\n\t\tfunction isPointInPoly(poly, pt) {\n\t\t\tfor(var c = false, i = -1, l = poly.length, j = l - 1; ++i < l; j = i)\n\t\t\t\t((poly[i][1] <= pt[1] && pt[1] < poly[j][1]) || (poly[j][1] <= pt[1] && pt[1]< poly[i][1]))\n\t\t\t\t&& (pt[0] < (poly[j][0] - poly[i][0]) * (pt[1] - poly[i][1]) / (poly[j][1] - poly[i][1]) + poly[i][0])\n\t\t\t\t&& (c = !c);\n\t\t\treturn c;\n\t\t}\n\n\t\tfunction findNearbySlice(mouseX, mouseY) {\n\n\t\t\tvar slices = plot.getData(),\n\t\t\t\toptions = plot.getOptions(),\n\t\t\t\tradius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius,\n\t\t\t\tx, y;\n\n\t\t\tfor (var i = 0; i < slices.length; ++i) {\n\n\t\t\t\tvar s = slices[i];\n\n\t\t\t\tif (s.pie.show) {\n\n\t\t\t\t\tctx.save();\n\t\t\t\t\tctx.beginPath();\n\t\t\t\t\tctx.moveTo(0, 0); // Center of the pie\n\t\t\t\t\t//ctx.scale(1, options.series.pie.tilt);\t// this actually seems to break everything when here.\n\t\t\t\t\tctx.arc(0, 0, radius, s.startAngle, s.startAngle + s.angle / 2, false);\n\t\t\t\t\tctx.arc(0, 0, radius, s.startAngle + s.angle / 2, s.startAngle + s.angle, false);\n\t\t\t\t\tctx.closePath();\n\t\t\t\t\tx = mouseX - centerLeft;\n\t\t\t\t\ty = mouseY - centerTop;\n\n\t\t\t\t\tif (ctx.isPointInPath) {\n\t\t\t\t\t\tif (ctx.isPointInPath(mouseX - centerLeft, mouseY - centerTop)) {\n\t\t\t\t\t\t\tctx.restore();\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tdatapoint: [s.percent, s.data],\n\t\t\t\t\t\t\t\tdataIndex: 0,\n\t\t\t\t\t\t\t\tseries: s,\n\t\t\t\t\t\t\t\tseriesIndex: i\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// excanvas for IE doesn;t support isPointInPath, this is a workaround.\n\n\t\t\t\t\t\tvar p1X = radius * Math.cos(s.startAngle),\n\t\t\t\t\t\t\tp1Y = radius * Math.sin(s.startAngle),\n\t\t\t\t\t\t\tp2X = radius * Math.cos(s.startAngle + s.angle / 4),\n\t\t\t\t\t\t\tp2Y = radius * Math.sin(s.startAngle + s.angle / 4),\n\t\t\t\t\t\t\tp3X = radius * Math.cos(s.startAngle + s.angle / 2),\n\t\t\t\t\t\t\tp3Y = radius * Math.sin(s.startAngle + s.angle / 2),\n\t\t\t\t\t\t\tp4X = radius * Math.cos(s.startAngle + s.angle / 1.5),\n\t\t\t\t\t\t\tp4Y = radius * Math.sin(s.startAngle + s.angle / 1.5),\n\t\t\t\t\t\t\tp5X = radius * Math.cos(s.startAngle + s.angle),\n\t\t\t\t\t\t\tp5Y = radius * Math.sin(s.startAngle + s.angle),\n\t\t\t\t\t\t\tarrPoly = [[0, 0], [p1X, p1Y], [p2X, p2Y], [p3X, p3Y], [p4X, p4Y], [p5X, p5Y]],\n\t\t\t\t\t\t\tarrPoint = [x, y];\n\n\t\t\t\t\t\t// TODO: perhaps do some mathmatical trickery here with the Y-coordinate to compensate for pie tilt?\n\n\t\t\t\t\t\tif (isPointInPoly(arrPoly, arrPoint)) {\n\t\t\t\t\t\t\tctx.restore();\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tdatapoint: [s.percent, s.data],\n\t\t\t\t\t\t\t\tdataIndex: 0,\n\t\t\t\t\t\t\t\tseries: s,\n\t\t\t\t\t\t\t\tseriesIndex: i\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tctx.restore();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn null;\n\t\t}\n\n\t\tfunction onMouseMove(e) {\n\t\t\ttriggerClickHoverEvent(\"plothover\", e);\n\t\t}\n\n\t\tfunction onClick(e) {\n\t\t\ttriggerClickHoverEvent(\"plotclick\", e);\n\t\t}\n\n\t\t// trigger click or hover event (they send the same parameters so we share their code)\n\n\t\tfunction triggerClickHoverEvent(eventname, e) {\n\n\t\t\tvar offset = plot.offset();\n\t\t\tvar canvasX = parseInt(e.pageX - offset.left);\n\t\t\tvar canvasY =  parseInt(e.pageY - offset.top);\n\t\t\tvar item = findNearbySlice(canvasX, canvasY);\n\n\t\t\tif (options.grid.autoHighlight) {\n\n\t\t\t\t// clear auto-highlights\n\n\t\t\t\tfor (var i = 0; i < highlights.length; ++i) {\n\t\t\t\t\tvar h = highlights[i];\n\t\t\t\t\tif (h.auto == eventname && !(item && h.series == item.series)) {\n\t\t\t\t\t\tunhighlight(h.series);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// highlight the slice\n\n\t\t\tif (item) {\n\t\t\t\thighlight(item.series, eventname);\n\t\t\t}\n\n\t\t\t// trigger any hover bind events\n\n\t\t\tvar pos = { pageX: e.pageX, pageY: e.pageY };\n\t\t\ttarget.trigger(eventname, [pos, item]);\n\t\t}\n\n\t\tfunction highlight(s, auto) {\n\t\t\t//if (typeof s == \"number\") {\n\t\t\t//\ts = series[s];\n\t\t\t//}\n\n\t\t\tvar i = indexOfHighlight(s);\n\n\t\t\tif (i == -1) {\n\t\t\t\thighlights.push({ series: s, auto: auto });\n\t\t\t\tplot.triggerRedrawOverlay();\n\t\t\t} else if (!auto) {\n\t\t\t\thighlights[i].auto = false;\n\t\t\t}\n\t\t}\n\n\t\tfunction unhighlight(s) {\n\t\t\tif (s == null) {\n\t\t\t\thighlights = [];\n\t\t\t\tplot.triggerRedrawOverlay();\n\t\t\t}\n\n\t\t\t//if (typeof s == \"number\") {\n\t\t\t//\ts = series[s];\n\t\t\t//}\n\n\t\t\tvar i = indexOfHighlight(s);\n\n\t\t\tif (i != -1) {\n\t\t\t\thighlights.splice(i, 1);\n\t\t\t\tplot.triggerRedrawOverlay();\n\t\t\t}\n\t\t}\n\n\t\tfunction indexOfHighlight(s) {\n\t\t\tfor (var i = 0; i < highlights.length; ++i) {\n\t\t\t\tvar h = highlights[i];\n\t\t\t\tif (h.series == s)\n\t\t\t\t\treturn i;\n\t\t\t}\n\t\t\treturn -1;\n\t\t}\n\n\t\tfunction drawOverlay(plot, octx) {\n\n\t\t\tvar options = plot.getOptions();\n\n\t\t\tvar radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius;\n\n\t\t\toctx.save();\n\t\t\toctx.translate(centerLeft, centerTop);\n\t\t\toctx.scale(1, options.series.pie.tilt);\n\n\t\t\tfor (var i = 0; i < highlights.length; ++i) {\n\t\t\t\tdrawHighlight(highlights[i].series);\n\t\t\t}\n\n\t\t\tdrawDonutHole(octx);\n\n\t\t\toctx.restore();\n\n\t\t\tfunction drawHighlight(series) {\n\n\t\t\t\tif (series.angle <= 0 || isNaN(series.angle)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t//octx.fillStyle = parseColor(options.series.pie.highlight.color).scale(null, null, null, options.series.pie.highlight.opacity).toString();\n\t\t\t\toctx.fillStyle = \"rgba(255, 255, 255, \" + options.series.pie.highlight.opacity + \")\"; // this is temporary until we have access to parseColor\n\t\t\t\toctx.beginPath();\n\t\t\t\tif (Math.abs(series.angle - Math.PI * 2) > 0.000000001) {\n\t\t\t\t\toctx.moveTo(0, 0); // Center of the pie\n\t\t\t\t}\n\t\t\t\toctx.arc(0, 0, radius, series.startAngle, series.startAngle + series.angle / 2, false);\n\t\t\t\toctx.arc(0, 0, radius, series.startAngle + series.angle / 2, series.startAngle + series.angle, false);\n\t\t\t\toctx.closePath();\n\t\t\t\toctx.fill();\n\t\t\t}\n\t\t}\n\t} // end init (plugin body)\n\n\t// define pie specific options and their default values\n\n\tvar options = {\n\t\tseries: {\n\t\t\tpie: {\n\t\t\t\tshow: false,\n\t\t\t\tradius: \"auto\",\t// actual radius of the visible pie (based on full calculated radius if <=1, or hard pixel value)\n\t\t\t\tinnerRadius: 0, /* for donut */\n\t\t\t\tstartAngle: 3/2,\n\t\t\t\ttilt: 1,\n\t\t\t\tshadow: {\n\t\t\t\t\tleft: 5,\t// shadow left offset\n\t\t\t\t\ttop: 15,\t// shadow top offset\n\t\t\t\t\talpha: 0.02\t// shadow alpha\n\t\t\t\t},\n\t\t\t\toffset: {\n\t\t\t\t\ttop: 0,\n\t\t\t\t\tleft: \"auto\"\n\t\t\t\t},\n\t\t\t\tstroke: {\n\t\t\t\t\tcolor: \"#fff\",\n\t\t\t\t\twidth: 1\n\t\t\t\t},\n\t\t\t\tlabel: {\n\t\t\t\t\tshow: \"auto\",\n\t\t\t\t\tformatter: function(label, slice) {\n\t\t\t\t\t\treturn \"<div style='font-size:x-small;text-align:center;padding:2px;color:\" + slice.color + \";'>\" + label + \"<br/>\" + Math.round(slice.percent) + \"%</div>\";\n\t\t\t\t\t},\t// formatter function\n\t\t\t\t\tradius: 1,\t// radius at which to place the labels (based on full calculated radius if <=1, or hard pixel value)\n\t\t\t\t\tbackground: {\n\t\t\t\t\t\tcolor: null,\n\t\t\t\t\t\topacity: 0\n\t\t\t\t\t},\n\t\t\t\t\tthreshold: 0\t// percentage at which to hide the label (i.e. the slice is too narrow)\n\t\t\t\t},\n\t\t\t\tcombine: {\n\t\t\t\t\tthreshold: -1,\t// percentage at which to combine little slices into one larger slice\n\t\t\t\t\tcolor: null,\t// color to give the new slice (auto-generated if null)\n\t\t\t\t\tlabel: \"Other\"\t// label to give the new slice\n\t\t\t\t},\n\t\t\t\thighlight: {\n\t\t\t\t\t//color: \"#fff\",\t\t// will add this functionality once parseColor is available\n\t\t\t\t\topacity: 0.5\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\t$.plot.plugins.push({\n\t\tinit: init,\n\t\toptions: options,\n\t\tname: \"pie\",\n\t\tversion: \"1.1\"\n\t});\n\n})(jQuery);"
  },
  {
    "path": "public/admin/js/flot/jquery.flot.resize.js",
    "content": "/* Flot plugin for automatically redrawing plots as the placeholder resizes.\n\nCopyright (c) 2007-2014 IOLA and Ole Laursen.\nLicensed under the MIT license.\n\nIt works by listening for changes on the placeholder div (through the jQuery\nresize event plugin) - if the size changes, it will redraw the plot.\n\nThere are no options. If you need to disable the plugin for some plots, you\ncan just fix the size of their placeholders.\n\n*/\n\n/* Inline dependency:\n * jQuery resize event - v1.1 - 3/14/2010\n * http://benalman.com/projects/jquery-resize-plugin/\n *\n * Copyright (c) 2010 \"Cowboy\" Ben Alman\n * Dual licensed under the MIT and GPL licenses.\n * http://benalman.com/about/license/\n */\n(function($,e,t){\"$:nomunge\";var i=[],n=$.resize=$.extend($.resize,{}),a,r=false,s=\"setTimeout\",u=\"resize\",m=u+\"-special-event\",o=\"pendingDelay\",l=\"activeDelay\",f=\"throttleWindow\";n[o]=200;n[l]=20;n[f]=true;$.event.special[u]={setup:function(){if(!n[f]&&this[s]){return false}var e=$(this);i.push(this);e.data(m,{w:e.width(),h:e.height()});if(i.length===1){a=t;h()}},teardown:function(){if(!n[f]&&this[s]){return false}var e=$(this);for(var t=i.length-1;t>=0;t--){if(i[t]==this){i.splice(t,1);break}}e.removeData(m);if(!i.length){if(r){cancelAnimationFrame(a)}else{clearTimeout(a)}a=null}},add:function(e){if(!n[f]&&this[s]){return false}var i;function a(e,n,a){var r=$(this),s=r.data(m)||{};s.w=n!==t?n:r.width();s.h=a!==t?a:r.height();i.apply(this,arguments)}if($.isFunction(e)){i=e;return a}else{i=e.handler;e.handler=a}}};function h(t){if(r===true){r=t||1}for(var s=i.length-1;s>=0;s--){var l=$(i[s]);if(l[0]==e||l.is(\":visible\")){var f=l.width(),c=l.height(),d=l.data(m);if(d&&(f!==d.w||c!==d.h)){l.trigger(u,[d.w=f,d.h=c]);r=t||true}}else{d=l.data(m);d.w=0;d.h=0}}if(a!==null){if(r&&(t==null||t-r<1e3)){a=e.requestAnimationFrame(h)}else{a=setTimeout(h,n[o]);r=false}}}if(!e.requestAnimationFrame){e.requestAnimationFrame=function(){return e.webkitRequestAnimationFrame||e.mozRequestAnimationFrame||e.oRequestAnimationFrame||e.msRequestAnimationFrame||function(t,i){return e.setTimeout(function(){t((new Date).getTime())},n[l])}}()}if(!e.cancelAnimationFrame){e.cancelAnimationFrame=function(){return e.webkitCancelRequestAnimationFrame||e.mozCancelRequestAnimationFrame||e.oCancelRequestAnimationFrame||e.msCancelRequestAnimationFrame||clearTimeout}()}})(jQuery,this);\n\n(function ($) {\n    var options = { }; // no options\n\n    function init(plot) {\n        function onResize() {\n            var placeholder = plot.getPlaceholder();\n\n            // somebody might have hidden us and we can't plot\n            // when we don't have the dimensions\n            if (placeholder.width() == 0 || placeholder.height() == 0)\n                return;\n\n            plot.resize();\n            plot.setupGrid();\n            plot.draw();\n        }\n        \n        function bindEvents(plot, eventHolder) {\n            plot.getPlaceholder().resize(onResize);\n        }\n\n        function shutdown(plot, eventHolder) {\n            plot.getPlaceholder().unbind(\"resize\", onResize);\n        }\n        \n        plot.hooks.bindEvents.push(bindEvents);\n        plot.hooks.shutdown.push(shutdown);\n    }\n    \n    $.plot.plugins.push({\n        init: init,\n        options: options,\n        name: 'resize',\n        version: '1.0'\n    });\n})(jQuery);"
  },
  {
    "path": "public/admin/js/flot/jquery.flot.spline.js",
    "content": "/**\n * Flot plugin that provides spline interpolation for line graphs\n * author: Alex Bardas < alex.bardas@gmail.com >\n * modified by: Avi Kohn https://github.com/AMKohn\n * based on the spline interpolation described at:\n *\t\t http://scaledinnovation.com/analytics/splines/aboutSplines.html\n *\n * Example usage: (add in plot options series object)\n *\t\tfor linespline:\n *\t\t\tseries: {\n *\t\t\t\t...\n *\t\t\t\tlines: {\n *\t\t\t\t\tshow: false\n *\t\t\t\t},\n *\t\t\t\tsplines: {\n *\t\t\t\t\tshow: true,\n *\t\t\t\t\ttension: x, (float between 0 and 1, defaults to 0.5),\n *\t\t\t\t\tlineWidth: y (number, defaults to 2),\n *\t\t\t\t\tfill: z (float between 0 .. 1 or false, as in flot documentation)\n *\t\t\t\t},\n *\t\t\t\t...\n *\t\t\t}\n *\t\tareaspline:\n *\t\t\tseries: {\n *\t\t\t\t...\n *\t\t\t\tlines: {\n *\t\t\t\t\tshow: true,\n *\t\t\t\t\tlineWidth: 0, (line drawing will not execute)\n *\t\t\t\t\tfill: x, (float between 0 .. 1, as in flot documentation)\n *\t\t\t\t\t...\n *\t\t\t\t},\n *\t\t\t\tsplines: {\n *\t\t\t\t\tshow: true,\n *\t\t\t\t\ttension: 0.5 (float between 0 and 1)\n *\t\t\t\t},\n *\t\t\t\t...\n *\t\t\t}\n *\n */\n\n(function($) {\n    'use strict'\n\n    /**\n     * @param {Number} x0, y0, x1, y1: coordinates of the end (knot) points of the segment\n     * @param {Number} x2, y2: the next knot (not connected, but needed to calculate p2)\n     * @param {Number} tension: control how far the control points spread\n     * @return {Array}: p1 -> control point, from x1 back toward x0\n     * \t\t\t\t\tp2 -> the next control point, returned to become the next segment's p1\n     *\n     * @api private\n     */\n    function getControlPoints(x0, y0, x1, y1, x2, y2, tension) {\n\n        var pow = Math.pow,\n            sqrt = Math.sqrt,\n            d01, d12, fa, fb, p1x, p1y, p2x, p2y;\n\n        //  Scaling factors: distances from this knot to the previous and following knots.\n        d01 = sqrt(pow(x1 - x0, 2) + pow(y1 - y0, 2));\n        d12 = sqrt(pow(x2 - x1, 2) + pow(y2 - y1, 2));\n\n        fa = tension * d01 / (d01 + d12);\n        fb = tension - fa;\n\n        p1x = x1 + fa * (x0 - x2);\n        p1y = y1 + fa * (y0 - y2);\n\n        p2x = x1 - fb * (x0 - x2);\n        p2y = y1 - fb * (y0 - y2);\n\n        return [p1x, p1y, p2x, p2y];\n    }\n\n    var line = [];\n\n    function drawLine(points, ctx, height, fill, seriesColor) {\n        var c = $.color.parse(seriesColor);\n\n        c.a = typeof fill == \"number\" ? fill : .3;\n        c.normalize();\n        c = c.toString();\n\n        ctx.beginPath();\n        ctx.moveTo(points[0][0], points[0][1]);\n\n        var plength = points.length;\n\n        for (var i = 0; i < plength; i++) {\n            ctx[points[i][3]].apply(ctx, points[i][2]);\n        }\n\n        ctx.stroke();\n\n        ctx.lineWidth = 0;\n        ctx.lineTo(points[plength - 1][0], height);\n        ctx.lineTo(points[0][0], height);\n\n        ctx.closePath();\n\n        if (fill !== false) {\n            ctx.fillStyle = c;\n            ctx.fill();\n        }\n    }\n\n    /**\n     * @param {Object} ctx: canvas context\n     * @param {String} type: accepted strings: 'bezier' or 'quadratic' (defaults to quadratic)\n     * @param {Array} points: 2 points for which to draw the interpolation\n     * @param {Array} cpoints: control points for those segment points\n     *\n     * @api private\n     */\n    function queue(ctx, type, points, cpoints) {\n        if (type === void 0 || (type !== 'bezier' && type !== 'quadratic')) {\n            type = 'quadratic';\n        }\n        type = type + 'CurveTo';\n\n        if (line.length == 0) line.push([points[0], points[1], cpoints.concat(points.slice(2)), type]);\n        else if (type == \"quadraticCurveTo\" && points.length == 2) {\n            cpoints = cpoints.slice(0, 2).concat(points);\n\n            line.push([points[0], points[1], cpoints, type]);\n        }\n        else line.push([points[2], points[3], cpoints.concat(points.slice(2)), type]);\n    }\n\n    /**\n     * @param {Object} plot\n     * @param {Object} ctx: canvas context\n     * @param {Object} series\n     *\n     * @api private\n     */\n\n    function drawSpline(plot, ctx, series) {\n        // Not interested if spline is not requested\n        if (series.splines.show !== true) {\n            return;\n        }\n\n        var cp = [],\n        // array of control points\n            tension = series.splines.tension || 0.5,\n            idx, x, y, points = series.datapoints.points,\n            ps = series.datapoints.pointsize,\n            plotOffset = plot.getPlotOffset(),\n            len = points.length,\n            pts = [];\n\n        line = [];\n\n        // Cannot display a linespline/areaspline if there are less than 3 points\n        if (len / ps < 4) {\n            $.extend(series.lines, series.splines);\n            return;\n        }\n\n        for (idx = 0; idx < len; idx += ps) {\n            x = points[idx];\n            y = points[idx + 1];\n            if (x == null || x < series.xaxis.min || x > series.xaxis.max || y < series.yaxis.min || y > series.yaxis.max) {\n                continue;\n            }\n\n            pts.push(series.xaxis.p2c(x) + plotOffset.left, series.yaxis.p2c(y) + plotOffset.top);\n        }\n\n        len = pts.length;\n\n        // Draw an open curve, not connected at the ends\n        for (idx = 0; idx < len - 2; idx += 2) {\n            cp = cp.concat(getControlPoints.apply(this, pts.slice(idx, idx + 6).concat([tension])));\n        }\n\n        ctx.save();\n        ctx.strokeStyle = series.color;\n        ctx.lineWidth = series.splines.lineWidth;\n\n        queue(ctx, 'quadratic', pts.slice(0, 4), cp.slice(0, 2));\n\n        for (idx = 2; idx < len - 3; idx += 2) {\n            queue(ctx, 'bezier', pts.slice(idx, idx + 4), cp.slice(2 * idx - 2, 2 * idx + 2));\n        }\n\n        queue(ctx, 'quadratic', pts.slice(len - 2, len), [cp[2 * len - 10], cp[2 * len - 9], pts[len - 4], pts[len - 3]]);\n\n        drawLine(line, ctx, plot.height() + 10, series.splines.fill, series.color);\n\n        ctx.restore();\n    }\n\n    $.plot.plugins.push({\n        init: function(plot) {\n            plot.hooks.drawSeries.push(drawSpline);\n        },\n        options: {\n            series: {\n                splines: {\n                    show: false,\n                    lineWidth: 2,\n                    tension: 0.5,\n                    fill: false\n                }\n            }\n        },\n        name: 'spline',\n        version: '0.8.2'\n    });\n})(jQuery);"
  },
  {
    "path": "public/admin/js/flot/jquery.flot.symbol.js",
    "content": "/* Flot plugin that adds some extra symbols for plotting points.\n\nCopyright (c) 2007-2014 IOLA and Ole Laursen.\nLicensed under the MIT license.\n\nThe symbols are accessed as strings through the standard symbol options:\n\n\tseries: {\n\t\tpoints: {\n\t\t\tsymbol: \"square\" // or \"diamond\", \"triangle\", \"cross\"\n\t\t}\n\t}\n\n*/\n\n(function ($) {\n    function processRawData(plot, series, datapoints) {\n        // we normalize the area of each symbol so it is approximately the\n        // same as a circle of the given radius\n\n        var handlers = {\n            square: function (ctx, x, y, radius, shadow) {\n                // pi * r^2 = (2s)^2  =>  s = r * sqrt(pi)/2\n                var size = radius * Math.sqrt(Math.PI) / 2;\n                ctx.rect(x - size, y - size, size + size, size + size);\n            },\n            diamond: function (ctx, x, y, radius, shadow) {\n                // pi * r^2 = 2s^2  =>  s = r * sqrt(pi/2)\n                var size = radius * Math.sqrt(Math.PI / 2);\n                ctx.moveTo(x - size, y);\n                ctx.lineTo(x, y - size);\n                ctx.lineTo(x + size, y);\n                ctx.lineTo(x, y + size);\n                ctx.lineTo(x - size, y);\n            },\n            triangle: function (ctx, x, y, radius, shadow) {\n                // pi * r^2 = 1/2 * s^2 * sin (pi / 3)  =>  s = r * sqrt(2 * pi / sin(pi / 3))\n                var size = radius * Math.sqrt(2 * Math.PI / Math.sin(Math.PI / 3));\n                var height = size * Math.sin(Math.PI / 3);\n                ctx.moveTo(x - size/2, y + height/2);\n                ctx.lineTo(x + size/2, y + height/2);\n                if (!shadow) {\n                    ctx.lineTo(x, y - height/2);\n                    ctx.lineTo(x - size/2, y + height/2);\n                }\n            },\n            cross: function (ctx, x, y, radius, shadow) {\n                // pi * r^2 = (2s)^2  =>  s = r * sqrt(pi)/2\n                var size = radius * Math.sqrt(Math.PI) / 2;\n                ctx.moveTo(x - size, y - size);\n                ctx.lineTo(x + size, y + size);\n                ctx.moveTo(x - size, y + size);\n                ctx.lineTo(x + size, y - size);\n            }\n        };\n\n        var s = series.points.symbol;\n        if (handlers[s])\n            series.points.symbol = handlers[s];\n    }\n    \n    function init(plot) {\n        plot.hooks.processDatapoints.push(processRawData);\n    }\n    \n    $.plot.plugins.push({\n        init: init,\n        name: 'symbols',\n        version: '1.0'\n    });\n})(jQuery);"
  },
  {
    "path": "public/admin/js/flot/jquery.flot.time.js",
    "content": "/* Pretty handling of time axes.\n\nCopyright (c) 2007-2014 IOLA and Ole Laursen.\nLicensed under the MIT license.\n\nSet axis.mode to \"time\" to enable. See the section \"Time series data\" in\nAPI.txt for details.\n\n*/\n\n(function($) {\n\n\tvar options = {\n\t\txaxis: {\n\t\t\ttimezone: null,\t\t// \"browser\" for local to the client or timezone for timezone-js\n\t\t\ttimeformat: null,\t// format string to use\n\t\t\ttwelveHourClock: false,\t// 12 or 24 time in time mode\n\t\t\tmonthNames: null\t// list of names of months\n\t\t}\n\t};\n\n\t// round to nearby lower multiple of base\n\n\tfunction floorInBase(n, base) {\n\t\treturn base * Math.floor(n / base);\n\t}\n\n\t// Returns a string with the date d formatted according to fmt.\n\t// A subset of the Open Group's strftime format is supported.\n\n\tfunction formatDate(d, fmt, monthNames, dayNames) {\n\n\t\tif (typeof d.strftime == \"function\") {\n\t\t\treturn d.strftime(fmt);\n\t\t}\n\n\t\tvar leftPad = function(n, pad) {\n\t\t\tn = \"\" + n;\n\t\t\tpad = \"\" + (pad == null ? \"0\" : pad);\n\t\t\treturn n.length == 1 ? pad + n : n;\n\t\t};\n\n\t\tvar r = [];\n\t\tvar escape = false;\n\t\tvar hours = d.getHours();\n\t\tvar isAM = hours < 12;\n\n\t\tif (monthNames == null) {\n\t\t\tmonthNames = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\n\t\t}\n\n\t\tif (dayNames == null) {\n\t\t\tdayNames = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\n\t\t}\n\n\t\tvar hours12;\n\n\t\tif (hours > 12) {\n\t\t\thours12 = hours - 12;\n\t\t} else if (hours == 0) {\n\t\t\thours12 = 12;\n\t\t} else {\n\t\t\thours12 = hours;\n\t\t}\n\n\t\tfor (var i = 0; i < fmt.length; ++i) {\n\n\t\t\tvar c = fmt.charAt(i);\n\n\t\t\tif (escape) {\n\t\t\t\tswitch (c) {\n\t\t\t\t\tcase 'a': c = \"\" + dayNames[d.getDay()]; break;\n\t\t\t\t\tcase 'b': c = \"\" + monthNames[d.getMonth()]; break;\n\t\t\t\t\tcase 'd': c = leftPad(d.getDate()); break;\n\t\t\t\t\tcase 'e': c = leftPad(d.getDate(), \" \"); break;\n\t\t\t\t\tcase 'h':\t// For back-compat with 0.7; remove in 1.0\n\t\t\t\t\tcase 'H': c = leftPad(hours); break;\n\t\t\t\t\tcase 'I': c = leftPad(hours12); break;\n\t\t\t\t\tcase 'l': c = leftPad(hours12, \" \"); break;\n\t\t\t\t\tcase 'm': c = leftPad(d.getMonth() + 1); break;\n\t\t\t\t\tcase 'M': c = leftPad(d.getMinutes()); break;\n\t\t\t\t\t// quarters not in Open Group's strftime specification\n\t\t\t\t\tcase 'q':\n\t\t\t\t\t\tc = \"\" + (Math.floor(d.getMonth() / 3) + 1); break;\n\t\t\t\t\tcase 'S': c = leftPad(d.getSeconds()); break;\n\t\t\t\t\tcase 'y': c = leftPad(d.getFullYear() % 100); break;\n\t\t\t\t\tcase 'Y': c = \"\" + d.getFullYear(); break;\n\t\t\t\t\tcase 'p': c = (isAM) ? (\"\" + \"am\") : (\"\" + \"pm\"); break;\n\t\t\t\t\tcase 'P': c = (isAM) ? (\"\" + \"AM\") : (\"\" + \"PM\"); break;\n\t\t\t\t\tcase 'w': c = \"\" + d.getDay(); break;\n\t\t\t\t}\n\t\t\t\tr.push(c);\n\t\t\t\tescape = false;\n\t\t\t} else {\n\t\t\t\tif (c == \"%\") {\n\t\t\t\t\tescape = true;\n\t\t\t\t} else {\n\t\t\t\t\tr.push(c);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn r.join(\"\");\n\t}\n\n\t// To have a consistent view of time-based data independent of which time\n\t// zone the client happens to be in we need a date-like object independent\n\t// of time zones.  This is done through a wrapper that only calls the UTC\n\t// versions of the accessor methods.\n\n\tfunction makeUtcWrapper(d) {\n\n\t\tfunction addProxyMethod(sourceObj, sourceMethod, targetObj, targetMethod) {\n\t\t\tsourceObj[sourceMethod] = function() {\n\t\t\t\treturn targetObj[targetMethod].apply(targetObj, arguments);\n\t\t\t};\n\t\t};\n\n\t\tvar utc = {\n\t\t\tdate: d\n\t\t};\n\n\t\t// support strftime, if found\n\n\t\tif (d.strftime != undefined) {\n\t\t\taddProxyMethod(utc, \"strftime\", d, \"strftime\");\n\t\t}\n\n\t\taddProxyMethod(utc, \"getTime\", d, \"getTime\");\n\t\taddProxyMethod(utc, \"setTime\", d, \"setTime\");\n\n\t\tvar props = [\"Date\", \"Day\", \"FullYear\", \"Hours\", \"Milliseconds\", \"Minutes\", \"Month\", \"Seconds\"];\n\n\t\tfor (var p = 0; p < props.length; p++) {\n\t\t\taddProxyMethod(utc, \"get\" + props[p], d, \"getUTC\" + props[p]);\n\t\t\taddProxyMethod(utc, \"set\" + props[p], d, \"setUTC\" + props[p]);\n\t\t}\n\n\t\treturn utc;\n\t};\n\n\t// select time zone strategy.  This returns a date-like object tied to the\n\t// desired timezone\n\n\tfunction dateGenerator(ts, opts) {\n\t\tif (opts.timezone == \"browser\") {\n\t\t\treturn new Date(ts);\n\t\t} else if (!opts.timezone || opts.timezone == \"utc\") {\n\t\t\treturn makeUtcWrapper(new Date(ts));\n\t\t} else if (typeof timezoneJS != \"undefined\" && typeof timezoneJS.Date != \"undefined\") {\n\t\t\tvar d = new timezoneJS.Date();\n\t\t\t// timezone-js is fickle, so be sure to set the time zone before\n\t\t\t// setting the time.\n\t\t\td.setTimezone(opts.timezone);\n\t\t\td.setTime(ts);\n\t\t\treturn d;\n\t\t} else {\n\t\t\treturn makeUtcWrapper(new Date(ts));\n\t\t}\n\t}\n\t\n\t// map of app. size of time units in milliseconds\n\n\tvar timeUnitSize = {\n\t\t\"second\": 1000,\n\t\t\"minute\": 60 * 1000,\n\t\t\"hour\": 60 * 60 * 1000,\n\t\t\"day\": 24 * 60 * 60 * 1000,\n\t\t\"month\": 30 * 24 * 60 * 60 * 1000,\n\t\t\"quarter\": 3 * 30 * 24 * 60 * 60 * 1000,\n\t\t\"year\": 365.2425 * 24 * 60 * 60 * 1000\n\t};\n\n\t// the allowed tick sizes, after 1 year we use\n\t// an integer algorithm\n\n\tvar baseSpec = [\n\t\t[1, \"second\"], [2, \"second\"], [5, \"second\"], [10, \"second\"],\n\t\t[30, \"second\"], \n\t\t[1, \"minute\"], [2, \"minute\"], [5, \"minute\"], [10, \"minute\"],\n\t\t[30, \"minute\"], \n\t\t[1, \"hour\"], [2, \"hour\"], [4, \"hour\"],\n\t\t[8, \"hour\"], [12, \"hour\"],\n\t\t[1, \"day\"], [2, \"day\"], [3, \"day\"],\n\t\t[0.25, \"month\"], [0.5, \"month\"], [1, \"month\"],\n\t\t[2, \"month\"]\n\t];\n\n\t// we don't know which variant(s) we'll need yet, but generating both is\n\t// cheap\n\n\tvar specMonths = baseSpec.concat([[3, \"month\"], [6, \"month\"],\n\t\t[1, \"year\"]]);\n\tvar specQuarters = baseSpec.concat([[1, \"quarter\"], [2, \"quarter\"],\n\t\t[1, \"year\"]]);\n\n\tfunction init(plot) {\n\t\tplot.hooks.processOptions.push(function (plot, options) {\n\t\t\t$.each(plot.getAxes(), function(axisName, axis) {\n\n\t\t\t\tvar opts = axis.options;\n\n\t\t\t\tif (opts.mode == \"time\") {\n\t\t\t\t\taxis.tickGenerator = function(axis) {\n\n\t\t\t\t\t\tvar ticks = [];\n\t\t\t\t\t\tvar d = dateGenerator(axis.min, opts);\n\t\t\t\t\t\tvar minSize = 0;\n\n\t\t\t\t\t\t// make quarter use a possibility if quarters are\n\t\t\t\t\t\t// mentioned in either of these options\n\n\t\t\t\t\t\tvar spec = (opts.tickSize && opts.tickSize[1] ===\n\t\t\t\t\t\t\t\"quarter\") ||\n\t\t\t\t\t\t\t(opts.minTickSize && opts.minTickSize[1] ===\n\t\t\t\t\t\t\t\"quarter\") ? specQuarters : specMonths;\n\n\t\t\t\t\t\tif (opts.minTickSize != null) {\n\t\t\t\t\t\t\tif (typeof opts.tickSize == \"number\") {\n\t\t\t\t\t\t\t\tminSize = opts.tickSize;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tminSize = opts.minTickSize[0] * timeUnitSize[opts.minTickSize[1]];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor (var i = 0; i < spec.length - 1; ++i) {\n\t\t\t\t\t\t\tif (axis.delta < (spec[i][0] * timeUnitSize[spec[i][1]]\n\t\t\t\t\t\t\t\t\t\t\t  + spec[i + 1][0] * timeUnitSize[spec[i + 1][1]]) / 2\n\t\t\t\t\t\t\t\t&& spec[i][0] * timeUnitSize[spec[i][1]] >= minSize) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar size = spec[i][0];\n\t\t\t\t\t\tvar unit = spec[i][1];\n\n\t\t\t\t\t\t// special-case the possibility of several years\n\n\t\t\t\t\t\tif (unit == \"year\") {\n\n\t\t\t\t\t\t\t// if given a minTickSize in years, just use it,\n\t\t\t\t\t\t\t// ensuring that it's an integer\n\n\t\t\t\t\t\t\tif (opts.minTickSize != null && opts.minTickSize[1] == \"year\") {\n\t\t\t\t\t\t\t\tsize = Math.floor(opts.minTickSize[0]);\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tvar magn = Math.pow(10, Math.floor(Math.log(axis.delta / timeUnitSize.year) / Math.LN10));\n\t\t\t\t\t\t\t\tvar norm = (axis.delta / timeUnitSize.year) / magn;\n\n\t\t\t\t\t\t\t\tif (norm < 1.5) {\n\t\t\t\t\t\t\t\t\tsize = 1;\n\t\t\t\t\t\t\t\t} else if (norm < 3) {\n\t\t\t\t\t\t\t\t\tsize = 2;\n\t\t\t\t\t\t\t\t} else if (norm < 7.5) {\n\t\t\t\t\t\t\t\t\tsize = 5;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tsize = 10;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tsize *= magn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// minimum size for years is 1\n\n\t\t\t\t\t\t\tif (size < 1) {\n\t\t\t\t\t\t\t\tsize = 1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\taxis.tickSize = opts.tickSize || [size, unit];\n\t\t\t\t\t\tvar tickSize = axis.tickSize[0];\n\t\t\t\t\t\tunit = axis.tickSize[1];\n\n\t\t\t\t\t\tvar step = tickSize * timeUnitSize[unit];\n\n\t\t\t\t\t\tif (unit == \"second\") {\n\t\t\t\t\t\t\td.setSeconds(floorInBase(d.getSeconds(), tickSize));\n\t\t\t\t\t\t} else if (unit == \"minute\") {\n\t\t\t\t\t\t\td.setMinutes(floorInBase(d.getMinutes(), tickSize));\n\t\t\t\t\t\t} else if (unit == \"hour\") {\n\t\t\t\t\t\t\td.setHours(floorInBase(d.getHours(), tickSize));\n\t\t\t\t\t\t} else if (unit == \"month\") {\n\t\t\t\t\t\t\td.setMonth(floorInBase(d.getMonth(), tickSize));\n\t\t\t\t\t\t} else if (unit == \"quarter\") {\n\t\t\t\t\t\t\td.setMonth(3 * floorInBase(d.getMonth() / 3,\n\t\t\t\t\t\t\t\ttickSize));\n\t\t\t\t\t\t} else if (unit == \"year\") {\n\t\t\t\t\t\t\td.setFullYear(floorInBase(d.getFullYear(), tickSize));\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// reset smaller components\n\n\t\t\t\t\t\td.setMilliseconds(0);\n\n\t\t\t\t\t\tif (step >= timeUnitSize.minute) {\n\t\t\t\t\t\t\td.setSeconds(0);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (step >= timeUnitSize.hour) {\n\t\t\t\t\t\t\td.setMinutes(0);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (step >= timeUnitSize.day) {\n\t\t\t\t\t\t\td.setHours(0);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (step >= timeUnitSize.day * 4) {\n\t\t\t\t\t\t\td.setDate(1);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (step >= timeUnitSize.month * 2) {\n\t\t\t\t\t\t\td.setMonth(floorInBase(d.getMonth(), 3));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (step >= timeUnitSize.quarter * 2) {\n\t\t\t\t\t\t\td.setMonth(floorInBase(d.getMonth(), 6));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (step >= timeUnitSize.year) {\n\t\t\t\t\t\t\td.setMonth(0);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar carry = 0;\n\t\t\t\t\t\tvar v = Number.NaN;\n\t\t\t\t\t\tvar prev;\n\n\t\t\t\t\t\tdo {\n\n\t\t\t\t\t\t\tprev = v;\n\t\t\t\t\t\t\tv = d.getTime();\n\t\t\t\t\t\t\tticks.push(v);\n\n\t\t\t\t\t\t\tif (unit == \"month\" || unit == \"quarter\") {\n\t\t\t\t\t\t\t\tif (tickSize < 1) {\n\n\t\t\t\t\t\t\t\t\t// a bit complicated - we'll divide the\n\t\t\t\t\t\t\t\t\t// month/quarter up but we need to take\n\t\t\t\t\t\t\t\t\t// care of fractions so we don't end up in\n\t\t\t\t\t\t\t\t\t// the middle of a day\n\n\t\t\t\t\t\t\t\t\td.setDate(1);\n\t\t\t\t\t\t\t\t\tvar start = d.getTime();\n\t\t\t\t\t\t\t\t\td.setMonth(d.getMonth() +\n\t\t\t\t\t\t\t\t\t\t(unit == \"quarter\" ? 3 : 1));\n\t\t\t\t\t\t\t\t\tvar end = d.getTime();\n\t\t\t\t\t\t\t\t\td.setTime(v + carry * timeUnitSize.hour + (end - start) * tickSize);\n\t\t\t\t\t\t\t\t\tcarry = d.getHours();\n\t\t\t\t\t\t\t\t\td.setHours(0);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\td.setMonth(d.getMonth() +\n\t\t\t\t\t\t\t\t\t\ttickSize * (unit == \"quarter\" ? 3 : 1));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if (unit == \"year\") {\n\t\t\t\t\t\t\t\td.setFullYear(d.getFullYear() + tickSize);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\td.setTime(v + step);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} while (v < axis.max && v != prev);\n\n\t\t\t\t\t\treturn ticks;\n\t\t\t\t\t};\n\n\t\t\t\t\taxis.tickFormatter = function (v, axis) {\n\n\t\t\t\t\t\tvar d = dateGenerator(v, axis.options);\n\n\t\t\t\t\t\t// first check global format\n\n\t\t\t\t\t\tif (opts.timeformat != null) {\n\t\t\t\t\t\t\treturn formatDate(d, opts.timeformat, opts.monthNames, opts.dayNames);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// possibly use quarters if quarters are mentioned in\n\t\t\t\t\t\t// any of these places\n\n\t\t\t\t\t\tvar useQuarters = (axis.options.tickSize &&\n\t\t\t\t\t\t\t\taxis.options.tickSize[1] == \"quarter\") ||\n\t\t\t\t\t\t\t(axis.options.minTickSize &&\n\t\t\t\t\t\t\t\taxis.options.minTickSize[1] == \"quarter\");\n\n\t\t\t\t\t\tvar t = axis.tickSize[0] * timeUnitSize[axis.tickSize[1]];\n\t\t\t\t\t\tvar span = axis.max - axis.min;\n\t\t\t\t\t\tvar suffix = (opts.twelveHourClock) ? \" %p\" : \"\";\n\t\t\t\t\t\tvar hourCode = (opts.twelveHourClock) ? \"%I\" : \"%H\";\n\t\t\t\t\t\tvar fmt;\n\n\t\t\t\t\t\tif (t < timeUnitSize.minute) {\n\t\t\t\t\t\t\tfmt = hourCode + \":%M:%S\" + suffix;\n\t\t\t\t\t\t} else if (t < timeUnitSize.day) {\n\t\t\t\t\t\t\tif (span < 2 * timeUnitSize.day) {\n\t\t\t\t\t\t\t\tfmt = hourCode + \":%M\" + suffix;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tfmt = \"%b %d \" + hourCode + \":%M\" + suffix;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (t < timeUnitSize.month) {\n\t\t\t\t\t\t\tfmt = \"%b %d\";\n\t\t\t\t\t\t} else if ((useQuarters && t < timeUnitSize.quarter) ||\n\t\t\t\t\t\t\t(!useQuarters && t < timeUnitSize.year)) {\n\t\t\t\t\t\t\tif (span < timeUnitSize.year) {\n\t\t\t\t\t\t\t\tfmt = \"%b\";\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tfmt = \"%b %Y\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (useQuarters && t < timeUnitSize.year) {\n\t\t\t\t\t\t\tif (span < timeUnitSize.year) {\n\t\t\t\t\t\t\t\tfmt = \"Q%q\";\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tfmt = \"Q%q %Y\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfmt = \"%Y\";\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar rt = formatDate(d, fmt, opts.monthNames, opts.dayNames);\n\n\t\t\t\t\t\treturn rt;\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\t$.plot.plugins.push({\n\t\tinit: init,\n\t\toptions: options,\n\t\tname: 'time',\n\t\tversion: '1.0'\n\t});\n\n\t// Time-axis support used to be in Flot core, which exposed the\n\t// formatDate function on the plot object.  Various plugins depend\n\t// on the function, so we need to re-expose it here.\n\n\t$.plot.formatDate = formatDate;\n\t$.plot.dateGenerator = dateGenerator;\n\n})(jQuery);"
  },
  {
    "path": "public/admin/js/flot/widget-flot-chart-active.js",
    "content": "(function ($) {\n \"use strict\";\n  \n var d1 = [[1262304000000, 6], [1264982400000, 3057], [1267401600000, 20434], [1270080000000, 31982], [1272672000000, 26602], [1275350400000, 27826], [1277942400000, 24302], [1280620800000, 24237], [1283299200000, 21004], [1285891200000, 12144], [1288569600000, 10577], [1291161600000, 10295]];\n            var d2 = [[1262304000000, 5], [1264982400000, 200], [1267401600000, 1605], [1270080000000, 6129], [1272672000000, 11643], [1275350400000, 19055], [1277942400000, 30062], [1280620800000, 39197], [1283299200000, 37000], [1285891200000, 27000], [1288569600000, 21000], [1291161600000, 17000]];\n\n            var data1 = [\n                { label: \"Data 1\", data: d1, color: 'linear-gradient(to bottom, #ff9966 0%, #d75151 100%)'},\n                { label: \"Data 2\", data: d2, color: 'linear-gradient(to bottom, #ff9966 0%, #d75151 100%)' }\n            ];\n            $.plot($(\"#flot-chart88\"), data1, {\n                xaxis: {\n                    tickDecimals: 0\n                },\n                series: {\n                    lines: {\n                        show: true,\n                        fill: true,\n                        fillColor: {\n                            colors: [{\n                                opacity: 1\n                            }, {\n                                opacity: 1\n                            }]\n                        }\n                    },\n                    points: {\n                        width: 0.1,\n                        show: false\n                    }\n                },\n                grid: {\n                    show: false,\n                    borderWidth: 0\n                },\n                legend: {\n                    show: false\n                }\n            });\n\n            var data2 = [\n                { label: \"Data 1\", data: d1, color: '#303030'}\n            ];\n            $.plot($(\"#flot-chart89\"), data2, {\n                xaxis: {\n                    tickDecimals: 0\n                },\n                series: {\n                    lines: {\n                        show: true,\n                        fill: true,\n                        fillColor: {\n                            colors: [{\n                                opacity: 1\n                            }, {\n                                opacity: 1\n                            }]\n                        }\n                    },\n                    points: {\n                        width: 0.1,\n                        show: false\n                    }\n                },\n                grid: {\n                    show: false,\n                    borderWidth: 0\n                },\n                legend: {\n                    show: false\n                }\n            });\n\n\n  })(jQuery);          "
  },
  {
    "path": "public/admin/js/form-active.js",
    "content": "(function ($) {\n \"use strict\";\n \n\t// Validation for login form\n\t\t$(\"#adminpro-form\").validate(\n\t\t{\t\t\t\t\t\n\t\t\trules:\n\t\t\t{\t\n\t\t\t\temail:\n\t\t\t\t{\n\t\t\t\t\trequired: true,\n\t\t\t\t\temail: true\n\t\t\t\t},\n\t\t\t\tpassword:\n\t\t\t\t{\n\t\t\t\t\trequired: true,\n\t\t\t\t\tminlength: 3,\n\t\t\t\t\tmaxlength: 20\n\t\t\t\t}\n\t\t\t},\n\t\t\tmessages:\n\t\t\t{\t\n\t\t\t\temail:\n\t\t\t\t{\n\t\t\t\t\trequired: 'Please enter your email address',\n\t\t\t\t\temail: 'Please enter a VALID email address'\n\t\t\t\t},\n\t\t\t\tpassword:\n\t\t\t\t{\n\t\t\t\t\trequired: 'Please enter your password'\n\t\t\t\t}\n\t\t\t},\t\t\t\t\t\n\t\t\t\n\t\t\terrorPlacement: function(error, element)\n\t\t\t{\n\t\t\t\terror.insertAfter(element.parent());\n\t\t\t}\n\t\t});\n\t\t\n\t// Validation for Register form\n\t\t$(\"#adminpro-register-form\").validate(\n\t\t{\t\t\t\t\t\n\t\t\trules:\n\t\t\t{\t\n\t\t\t\tusername:\n\t\t\t\t{\n\t\t\t\t\trequired: true\n\t\t\t\t},\n\t\t\t\temail:\n\t\t\t\t{\n\t\t\t\t\trequired: true,\n\t\t\t\t\temail: true\n\t\t\t\t},\n\t\t\t\tpassword:\n\t\t\t\t{\n\t\t\t\t\trequired: true,\n\t\t\t\t\tminlength: 3,\n\t\t\t\t\tmaxlength: 20\n\t\t\t\t},\n\t\t\t\tconfarm_password:\n\t\t\t\t{\n\t\t\t\t\trequired: true,\n\t\t\t\t\tminlength: 3,\n\t\t\t\t\tmaxlength: 20\n\t\t\t\t}\n\t\t\t},\n\t\t\tmessages:\n\t\t\t{\t\n\t\t\t\tusername:\n\t\t\t\t{\n\t\t\t\t\trequired: 'Please enter your username'\n\t\t\t\t},\n\t\t\t\temail:\n\t\t\t\t{\n\t\t\t\t\trequired: 'Please enter your email address',\n\t\t\t\t\temail: 'Please enter a VALID email address'\n\t\t\t\t},\n\t\t\t\tpassword:\n\t\t\t\t{\n\t\t\t\t\trequired: 'Please enter your password'\n\t\t\t\t},\n\t\t\t\tconfarm_password:\n\t\t\t\t{\n\t\t\t\t\trequired: 'Please enter your confarm password'\n\t\t\t\t}\n\t\t\t},\t\t\t\t\t\n\t\t\t\n\t\t\terrorPlacement: function(error, element)\n\t\t\t{\n\t\t\t\terror.insertAfter(element.parent());\n\t\t\t}\n\t\t});\n\t// Validation for Contact form\n\t\t$(\"#adminpro-contact-form\").validate(\n\t\t{\t\t\t\t\t\n\t\t\trules:\n\t\t\t{\t\n\t\t\t\temail:\n\t\t\t\t{\n\t\t\t\t\trequired: true,\n\t\t\t\t\temail: true\n\t\t\t\t},\n\t\t\t\tsubject:\n\t\t\t\t{\n\t\t\t\t\trequired: true\n\t\t\t\t},\n\t\t\t\tmessage:\n\t\t\t\t{\n\t\t\t\t\trequired: true\n\t\t\t\t}\n\t\t\t},\n\t\t\tmessages:\n\t\t\t{\t\n\t\t\t\temail:\n\t\t\t\t{\n\t\t\t\t\trequired: 'Please enter your email address',\n\t\t\t\t\temail: 'Please enter a VALID email address'\n\t\t\t\t},\n\t\t\t\tsubject:\n\t\t\t\t{\n\t\t\t\t\trequired: 'Please enter your subject'\n\t\t\t\t},\n\t\t\t\tmessage:\n\t\t\t\t{\n\t\t\t\t\trequired: 'Please enter your message'\n\t\t\t\t}\n\t\t\t},\t\t\t\t\t\n\t\t\t\n\t\t\terrorPlacement: function(error, element)\n\t\t\t{\n\t\t\t\terror.insertAfter(element.parent());\n\t\t\t}\n\t\t});\n\t// Validation for Comment form\n\t\t$(\"#adminpro-comment-form\").validate(\n\t\t{\t\t\t\t\t\n\t\t\trules:\n\t\t\t{\t\n\t\t\t\tname:\n\t\t\t\t{\n\t\t\t\t\trequired: true\n\t\t\t\t},\n\t\t\t\temail:\n\t\t\t\t{\n\t\t\t\t\trequired: true,\n\t\t\t\t\temail: true\n\t\t\t\t},\n\t\t\t\tphone:\n\t\t\t\t{\n\t\t\t\t\trequired: true\n\t\t\t\t},\n\t\t\t\twebsite:\n\t\t\t\t{\n\t\t\t\t\trequired: true\n\t\t\t\t},\n\t\t\t\tcomment:\n\t\t\t\t{\n\t\t\t\t\trequired: true\n\t\t\t\t}\n\t\t\t},\n\t\t\tmessages:\n\t\t\t{\t\n\t\t\t\tname:\n\t\t\t\t{\n\t\t\t\t\trequired: 'Please enter your full name'\n\t\t\t\t},\n\t\t\t\temail:\n\t\t\t\t{\n\t\t\t\t\trequired: 'Please enter your email address',\n\t\t\t\t\temail: 'Please enter a VALID email address'\n\t\t\t\t},\n\t\t\t\tphone:\n\t\t\t\t{\n\t\t\t\t\trequired: 'Please enter phone number'\n\t\t\t\t},\n\t\t\t\twebsite:\n\t\t\t\t{\n\t\t\t\t\trequired: 'Please enter your website'\n\t\t\t\t},\n\t\t\t\tcomment:\n\t\t\t\t{\n\t\t\t\t\trequired: 'Please enter description'\n\t\t\t\t}\n\t\t\t},\t\t\t\t\t\n\t\t\t\n\t\t\terrorPlacement: function(error, element)\n\t\t\t{\n\t\t\t\terror.insertAfter(element.parent());\n\t\t\t}\n\t\t});\n\t// Validation for review form\n\t\t$(\"#adminpro-review-form\").validate(\n\t\t{\t\t\t\t\t\n\t\t\trules:\n\t\t\t{\t\n\t\t\t\tname:\n\t\t\t\t{\n\t\t\t\t\trequired: true\n\t\t\t\t},\n\t\t\t\temail:\n\t\t\t\t{\n\t\t\t\t\trequired: true,\n\t\t\t\t\temail: true\n\t\t\t\t},\n\t\t\t\tsubject:\n\t\t\t\t{\n\t\t\t\t\trequired: true\n\t\t\t\t},\n\t\t\t\treview:\n\t\t\t\t{\n\t\t\t\t\trequired: true\n\t\t\t\t}\n\t\t\t},\n\t\t\tmessages:\n\t\t\t{\t\n\t\t\t\tname:\n\t\t\t\t{\n\t\t\t\t\trequired: 'Please enter your full name'\n\t\t\t\t},\n\t\t\t\temail:\n\t\t\t\t{\n\t\t\t\t\trequired: 'Please enter your email address',\n\t\t\t\t\temail: 'Please enter a VALID email address'\n\t\t\t\t},\n\t\t\t\tsubject:\n\t\t\t\t{\n\t\t\t\t\trequired: 'Please enter your subject'\n\t\t\t\t},\n\t\t\t\treview:\n\t\t\t\t{\n\t\t\t\t\trequired: 'Please enter your review text'\n\t\t\t\t}\n\t\t\t},\t\t\t\t\t\n\t\t\t\n\t\t\terrorPlacement: function(error, element)\n\t\t\t{\n\t\t\t\terror.insertAfter(element.parent());\n\t\t\t}\n\t\t});\n\t// Validation for masking form\n\t\t$(\"#adminpro-masking-form\").validate(\n\t\t{\t\t\t\t\t\n\t\t\trules:\n\t\t\t{\t\n\t\t\t\tphone:\n\t\t\t\t{\n\t\t\t\t\trequired: true\n\t\t\t\t},\n\t\t\t\tdate:\n\t\t\t\t{\n\t\t\t\t\trequired: true\n\t\t\t\t},\n\t\t\t\tserial:\n\t\t\t\t{\n\t\t\t\t\trequired: true\n\t\t\t\t},\n\t\t\t\tcard:\n\t\t\t\t{\n\t\t\t\t\trequired: true\n\t\t\t\t},\n\t\t\t\tcvv:\n\t\t\t\t{\n\t\t\t\t\trequired: true\n\t\t\t\t},\n\t\t\t\ttax:\n\t\t\t\t{\n\t\t\t\t\trequired: true\n\t\t\t\t}\n\t\t\t},\n\t\t\tmessages:\n\t\t\t{\t\n\t\t\t\tphone:\n\t\t\t\t{\n\t\t\t\t\trequired: 'Please enter masking phone number'\n\t\t\t\t},\n\t\t\t\tdate:\n\t\t\t\t{\n\t\t\t\t\trequired: 'Please enter masking date'\n\t\t\t\t},\n\t\t\t\tserial:\n\t\t\t\t{\n\t\t\t\t\trequired: 'Please enter your serial number'\n\t\t\t\t},\n\t\t\t\tcard:\n\t\t\t\t{\n\t\t\t\t\trequired: 'Please enter your credit card number'\n\t\t\t\t},\n\t\t\t\tcvv:\n\t\t\t\t{\n\t\t\t\t\trequired: 'Please enter your cvv2 number'\n\t\t\t\t},\n\t\t\t\ttax:\n\t\t\t\t{\n\t\t\t\t\trequired: 'Please enter your tax id number'\n\t\t\t\t}\n\t\t\t},\t\t\t\t\t\n\t\t\t\n\t\t\terrorPlacement: function(error, element)\n\t\t\t{\n\t\t\t\terror.insertAfter(element.parent());\n\t\t\t}\n\t\t});\n\t// Validation for checkout form\n\t\t$(\"#adminpro-checkout-form\").validate(\n\t\t{\t\t\t\t\t\n\t\t\trules:\n\t\t\t{\t\n\t\t\t\tfirstname:\n\t\t\t\t{\n\t\t\t\t\trequired: true\n\t\t\t\t},\n\t\t\t\tlastname:\n\t\t\t\t{\n\t\t\t\t\trequired: true\n\t\t\t\t},\n\t\t\t\temail:\n\t\t\t\t{\n\t\t\t\t\trequired: true,\n\t\t\t\t\temail: true\n\t\t\t\t},\n\t\t\t\tphone:\n\t\t\t\t{\n\t\t\t\t\trequired: true\n\t\t\t\t},\n\t\t\t\taddress:\n\t\t\t\t{\n\t\t\t\t\trequired: true\n\t\t\t\t},\n\t\t\t\tinterested:\n\t\t\t\t{\n\t\t\t\t\trequired: true\n\t\t\t\t},\n\t\t\t\tcity:\n\t\t\t\t{\n\t\t\t\t\trequired: true\n\t\t\t\t},\n\t\t\t\tinterestedbd:\n\t\t\t\t{\n\t\t\t\t\trequired: true\n\t\t\t\t},\n\t\t\t\tcartname:\n\t\t\t\t{\n\t\t\t\t\trequired: true\n\t\t\t\t},\n\t\t\t\tcardnumber:\n\t\t\t\t{\n\t\t\t\t\trequired: true\n\t\t\t\t},\n\t\t\t\tcvv2:\n\t\t\t\t{\n\t\t\t\t\trequired: true\n\t\t\t\t},\n\t\t\t\tfinish:\n\t\t\t\t{\n\t\t\t\t\trequired: true\n\t\t\t\t}\n\t\t\t},\n\t\t\tmessages:\n\t\t\t{\t\n\t\t\t\tfirstname:\n\t\t\t\t{\n\t\t\t\t\trequired: 'Please enter first name'\n\t\t\t\t},\n\t\t\t\tlastname:\n\t\t\t\t{\n\t\t\t\t\trequired: 'Please enter last name'\n\t\t\t\t},\n\t\t\t\temail:\n\t\t\t\t{\n\t\t\t\t\trequired: 'Please enter your email address',\n\t\t\t\t\temail: 'Please enter a VALID email address'\n\t\t\t\t},\n\t\t\t\tphone:\n\t\t\t\t{\n\t\t\t\t\trequired: 'Please enter your phone number'\n\t\t\t\t},\n\t\t\t\taddress:\n\t\t\t\t{\n\t\t\t\t\trequired: 'Please enter your address'\n\t\t\t\t},\n\t\t\t\tinterested:\n\t\t\t\t{\n\t\t\t\t\trequired: 'Please select your country'\n\t\t\t\t},\n\t\t\t\tcity:\n\t\t\t\t{\n\t\t\t\t\trequired: 'Please enter your city'\n\t\t\t\t},\n\t\t\t\tinterestedbd:\n\t\t\t\t{\n\t\t\t\t\trequired: 'Please select your Budgets'\n\t\t\t\t},\n\t\t\t\tcartname:\n\t\t\t\t{\n\t\t\t\t\trequired: 'Please enter your cartname'\n\t\t\t\t},\n\t\t\t\tcardnumber:\n\t\t\t\t{\n\t\t\t\t\trequired: 'Please enter your card number'\n\t\t\t\t},\n\t\t\t\tcvv2:\n\t\t\t\t{\n\t\t\t\t\trequired: 'Please enter your cvv2 number'\n\t\t\t\t},\n\t\t\t\tfinish:\n\t\t\t\t{\n\t\t\t\t\trequired: 'Please select expired date'\n\t\t\t\t}\n\t\t\t},\t\t\t\t\t\n\t\t\t\n\t\t\terrorPlacement: function(error, element)\n\t\t\t{\n\t\t\t\terror.insertAfter(element.parent());\n\t\t\t}\n\t\t});\n\t// Validation for order form\n\t\t$(\"#adminpro-order-form\").validate(\n\t\t{\t\t\t\t\t\n\t\t\trules:\n\t\t\t{\t\n\t\t\t\tfullname:\n\t\t\t\t{\n\t\t\t\t\trequired: true\n\t\t\t\t},\n\t\t\t\temail:\n\t\t\t\t{\n\t\t\t\t\trequired: true,\n\t\t\t\t\temail: true\n\t\t\t\t},\n\t\t\t\tphone:\n\t\t\t\t{\n\t\t\t\t\trequired: true\n\t\t\t\t},\n\t\t\t\tcompanyname:\n\t\t\t\t{\n\t\t\t\t\trequired: true\n\t\t\t\t},\n\t\t\t\tstart:\n\t\t\t\t{\n\t\t\t\t\trequired: true\n\t\t\t\t},\n\t\t\t\tfinish:\n\t\t\t\t{\n\t\t\t\t\trequired: true\n\t\t\t\t},\n\t\t\t\tinterestedcategory:\n\t\t\t\t{\n\t\t\t\t\trequired: true\n\t\t\t\t},\n\t\t\t\tinterestedbudget:\n\t\t\t\t{\n\t\t\t\t\trequired: true\n\t\t\t\t},\n\t\t\t\tcardnumber:\n\t\t\t\t{\n\t\t\t\t\trequired: true\n\t\t\t\t},\n\t\t\t\tcvv2:\n\t\t\t\t{\n\t\t\t\t\trequired: true\n\t\t\t\t},\n\t\t\t\tfinish:\n\t\t\t\t{\n\t\t\t\t\trequired: true\n\t\t\t\t}\n\t\t\t},\n\t\t\tmessages:\n\t\t\t{\t\n\t\t\t\tfullname:\n\t\t\t\t{\n\t\t\t\t\trequired: 'Please enter full name'\n\t\t\t\t},\n\t\t\t\temail:\n\t\t\t\t{\n\t\t\t\t\trequired: 'Please enter your email address',\n\t\t\t\t\temail: 'Please enter a VALID email address'\n\t\t\t\t},\n\t\t\t\tphone:\n\t\t\t\t{\n\t\t\t\t\trequired: 'Please enter your phone number'\n\t\t\t\t},\n\t\t\t\tcompanyname:\n\t\t\t\t{\n\t\t\t\t\trequired: 'Please enter your company name'\n\t\t\t\t},\n\t\t\t\tstart:\n\t\t\t\t{\n\t\t\t\t\trequired: 'Please select your start date'\n\t\t\t\t},\n\t\t\t\tfinish:\n\t\t\t\t{\n\t\t\t\t\trequired: 'Please enter your end date'\n\t\t\t\t},\n\t\t\t\tinterestedcategory:\n\t\t\t\t{\n\t\t\t\t\trequired: 'Please select category'\n\t\t\t\t},\n\t\t\t\tinterestedbudget:\n\t\t\t\t{\n\t\t\t\t\trequired: 'Please enter your budgets'\n\t\t\t\t},\n\t\t\t\tcardnumber:\n\t\t\t\t{\n\t\t\t\t\trequired: 'Please enter your card number'\n\t\t\t\t},\n\t\t\t\tcvv2:\n\t\t\t\t{\n\t\t\t\t\trequired: 'Please enter your cvv2 number'\n\t\t\t\t},\n\t\t\t\tfinish:\n\t\t\t\t{\n\t\t\t\t\trequired: 'Please select expired date'\n\t\t\t\t}\n\t\t\t},\t\t\t\t\t\n\t\t\t\n\t\t\terrorPlacement: function(error, element)\n\t\t\t{\n\t\t\t\terror.insertAfter(element.parent());\n\t\t\t}\n\t\t});\n\t// Validation for captcha form\n\t\t$(\"#adminpro-captcha-form\").validate(\n\t\t{\t\t\t\t\t\n\t\t\trules:\n\t\t\t{\t\n\t\t\t\tcaptcha:\n\t\t\t\t{\n\t\t\t\t\trequired: true\n\t\t\t\t}\n\t\t\t},\n\t\t\tmessages:\n\t\t\t{\t\n\t\t\t\tcaptcha:\n\t\t\t\t{\n\t\t\t\t\trequired: 'Please enter captcha'\n\t\t\t\t}\n\t\t\t},\t\t\t\t\t\n\t\t\t\n\t\t\terrorPlacement: function(error, element)\n\t\t\t{\n\t\t\t\terror.insertAfter(element.parent());\n\t\t\t}\n\t\t});\n\t\t\n \n})(jQuery); "
  },
  {
    "path": "public/admin/js/google.maps/google.maps-active.js",
    "content": "\n\t\nfunction initMap() {\n        var chicago = new google.maps.LatLng(41.850, -87.650);\n\n        var map = new google.maps.Map(document.getElementById('map'), {\n          center: chicago,\n          zoom: 3\n        });\n\n\t\tvar map1 = new google.maps.Map(document.getElementById('map1'), {\n          zoom: 8,\n          center: {lat: 35.717, lng: 139.731}\n        });\n\t\t\n\t\tmap2 = new google.maps.Map(document.getElementById('map2'), {\n          center: {lat: -34.397, lng: 150.644},\n          zoom: 8\n        });\n\t\t\n\t\t\n\t\t var mapOptions = {\n                zoom: 12,\n                scrollwheel: false,\n                center: new google.maps.LatLng(20.192828, 85.853742),\n\n            };\n            var mapElement = document.getElementById('googleMap');\n            var googleMap = new google.maps.Map(mapElement, mapOptions);\n            var marker = new google.maps.Marker({\n                position: new google.maps.LatLng(20.192828, 85.853742),\n                googleMap: googleMap,\n                title: 'Ramble!',\n                icon: 'img/googlemap/1.png',\n                animation: google.maps.Animation.BOUNCE\n\n            });\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\tvar cairo = {lat: 30.064742, lng: 31.249509};\n\n        var maplan = new google.maps.Map(document.getElementById('maplan'), {\n          scaleControl: true,\n          center: cairo,\n          zoom: 10\n        });\n        var infowindow = new google.maps.InfoWindow;\n        infowindow.setContent('<b>???????</b>');\n        var marker = new google.maps.Marker({map: map, position: cairo});\n        marker.addListener('click', function() {\n          infowindow.open(map, marker);\n        });\n\t\t\n\t\t\n\t\t\n        var myLatlng = {lat: -25.363, lng: 131.044};\n\n        var map6 = new google.maps.Map(document.getElementById('map6'), {\n          zoom: 4,\n          center: myLatlng\n        });\n\n        var marker = new google.maps.Marker({\n          position: myLatlng,\n          map: map6,\n          title: 'Click to zoom'\n        });\n\n        map.addListener('center_changed', function() {\n          // 3 seconds after the center of the map has changed, pan back to the\n          // marker.\n          window.setTimeout(function() {\n            map6.panTo(marker.getPosition());\n          }, 3000);\n        });\n\n        marker.addListener('click', function() {\n          map.setZoom(8);\n          map.setCenter(marker.getPosition());\n        });\n      \n\t\t\n\t\t\n\t\t\n        var map7 = new google.maps.Map(document.getElementById('map7'), {\n          zoom: 4,\n          center: {lat: -25.363882, lng: 131.044922 }\n        });\n\n        var bounds = {\n          north: -25.363882,\n          south: -31.203405,\n          east: 131.044922,\n          west: 125.244141\n        };\n\n        // Display the area between the location southWest and northEast.\n        map.fitBounds(bounds);\n\n        // Add 5 markers to map at random locations.\n        // For each of these markers, give them a title with their index, and when\n        // they are clicked they should open an infowindow with text from a secret\n        // message.\n        var secretMessages = ['This', 'is', 'the', 'secret', 'message'];\n        var lngSpan = bounds.east - bounds.west;\n        var latSpan = bounds.north - bounds.south;\n        for (var i = 0; i < secretMessages.length; ++i) {\n          var marker = new google.maps.Marker({\n            position: {\n              lat: bounds.south + latSpan * Math.random(),\n              lng: bounds.west + lngSpan * Math.random()\n            },\n            map: map7\n          });\n          attachSecretMessage(marker, secretMessages[i]);\n        }\n      \n\n      // Attaches an info window to a marker with the provided message. When the\n      // marker is clicked, the info window will open with the secret message.\n      function attachSecretMessage(marker, secretMessage) {\n        var infowindow = new google.maps.InfoWindow({\n          content: secretMessage\n        });\n\n        marker.addListener('click', function() {\n          infowindow.open(marker.get('map'), marker);\n        });\n      }\n\t\t\n\t\t\n\t\t\n\t\t\n        var originalMapCenter = new google.maps.LatLng(-25.363882, 131.044922);\n        var map8 = new google.maps.Map(document.getElementById('map8'), {\n          zoom: 4,\n          center: originalMapCenter\n        });\n\n        var infowindow = new google.maps.InfoWindow({\n          content: 'Change the zoom level',\n          position: originalMapCenter\n        });\n        infowindow.open(map8);\n\n        map.addListener('zoom_changed', function() {\n          infowindow.setContent('Zoom: ' + map.getZoom());\n        });\n      \n\t\t\n\t\t\n        var coordInfoWindow = new google.maps.InfoWindow();\n        coordInfoWindow.setContent(createInfoWindowContent(chicago, map.getZoom()));\n        coordInfoWindow.setPosition(chicago);\n        coordInfoWindow.open(map);\n\n        map.addListener('zoom_changed', function() {\n          coordInfoWindow.setContent(createInfoWindowContent(chicago, map.getZoom()));\n          coordInfoWindow.open(map);\n        });\n      }\n\t  \n      var TILE_SIZE = 256;\n\n      function createInfoWindowContent(latLng, zoom) {\n        var scale = 1 << zoom;\n\n        var worldCoordinate = project(latLng);\n\n        var pixelCoordinate = new google.maps.Point(\n            Math.floor(worldCoordinate.x * scale),\n            Math.floor(worldCoordinate.y * scale));\n\n        var tileCoordinate = new google.maps.Point(\n            Math.floor(worldCoordinate.x * scale / TILE_SIZE),\n            Math.floor(worldCoordinate.y * scale / TILE_SIZE));\n\n        return [\n          'Chicago, IL',\n          'LatLng: ' + latLng,\n          'Zoom level: ' + zoom,\n          'World Coordinate: ' + worldCoordinate,\n          'Pixel Coordinate: ' + pixelCoordinate,\n          'Tile Coordinate: ' + tileCoordinate\n        ].join('<br>');\n      }\n\n      // The mapping between latitude, longitude and pixels is defined by the web\n      // mercator projection.\n      function project(latLng) {\n        var siny = Math.sin(latLng.lat() * Math.PI / 180);\n\n        // Truncating to 0.9999 effectively limits latitude to 89.189. This is\n        // about a third of a tile past the edge of the world tile.\n        siny = Math.min(Math.max(siny, -0.9999), 0.9999);\n\n        return new google.maps.Point(\n            TILE_SIZE * (0.5 + latLng.lng() / 360),\n            TILE_SIZE * (0.5 - Math.log((1 + siny) / (1 - siny)) / (4 * Math.PI)));\n      }\n\n\t\n \n\n\n"
  },
  {
    "path": "public/admin/js/icheck/icheck-active.js",
    "content": "(function ($) {\n \"use strict\";\n \n  $('.i-checks').iCheck({\n\t\tcheckboxClass: 'icheckbox_square-green',\n\t\tradioClass: 'iradio_square-green',\n\t});\n\t\n\t\n \n})(jQuery); "
  },
  {
    "path": "public/admin/js/ionRangeSlider/ion.rangeSlider.active.js",
    "content": "(function ($) {\n \"use strict\";\n \n\t$(\"#ionrange_1\").ionRangeSlider({\n\t\tmin: 0,\n\t\tmax: 5000,\n\t\ttype: 'double',\n\t\tprefix: \"$\",\n\t\tmaxPostfix: \"+\",\n\t\tprettify: false,\n\t\thasGrid: true\n\t});\n\t$(\"#ionrange_2\").ionRangeSlider({\n            min: 0,\n            max: 10,\n            type: 'single',\n            step: 0.1,\n            postfix: \" carats\",\n            prettify: false,\n            hasGrid: true\n        });\n\t $(\"#ionrange_3\").ionRangeSlider({\n\t\tmin: -50,\n\t\tmax: 50,\n\t\tfrom: 0,\n\t\tpostfix: \"&deg;\",\n\t\tprettify: false,\n\t\thasGrid: true\n\t});\n\n\t$(\"#ionrange_4\").ionRangeSlider({\n\t\tvalues: [\n\t\t\t\"January\", \"February\", \"March\",\n\t\t\t\"April\", \"May\", \"June\",\n\t\t\t\"July\", \"August\", \"September\",\n\t\t\t\"October\", \"November\", \"December\"\n\t\t],\n\t\ttype: 'single',\n\t\thasGrid: true\n\t});\n\t\n\t\n \n})(jQuery); "
  },
  {
    "path": "public/admin/js/jquery.meanmenu.js",
    "content": "/*!\n* jQuery meanMenu v2.0.8\n* @Copyright (C) 2012-2014 Chris Wharton @ MeanThemes (https://github.com/meanthemes/meanMenu)\n*\n*/\n/*\n* This program is free software: you can redistribute it and/or modify\n* it under the terms of the GNU General Public License as published by\n* the Free Software Foundation, either version 3 of the License, or\n* (at your option) any later version.\n*\n* THIS SOFTWARE AND DOCUMENTATION IS PROVIDED \"AS IS,\" AND COPYRIGHT\n* HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED,\n* INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR\n* FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE\n* OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS,\n* COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.COPYRIGHT HOLDERS WILL NOT\n* BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL\n* DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION.\n*\n* You should have received a copy of the GNU General Public License\n* along with this program. If not, see <http://gnu.org/licenses/>.\n*\n* Find more information at http://www.meanthemes.com/plugins/meanmenu/\n*\n*/\n(function ($) {\n\t\"use strict\";\n\t\t$.fn.meanmenu = function (options) {\n\t\t\t\tvar defaults = {\n\t\t\t\t\t\tmeanMenuTarget: jQuery(this), // Target the current HTML markup you wish to replace\n\t\t\t\t\t\tmeanMenuContainer: '.mobile-menu-area .container', // Choose where meanmenu will be placed within the HTML\n\t\t\t\t\t\tmeanMenuClose: \"X\", // single character you want to represent the close menu button\n\t\t\t\t\t\tmeanMenuCloseSize: \"18px\", // set font size of close button\n\t\t\t\t\t\tmeanMenuOpen: \"<span /><span /><span />\", // text/markup you want when menu is closed\n\t\t\t\t\t\tmeanRevealPosition: \"right\", // left right or center positions\n\t\t\t\t\t\tmeanRevealPositionDistance: \"0\", // Tweak the position of the menu\n\t\t\t\t\t\tmeanRevealColour: \"\", // override CSS colours for the reveal background\n\t\t\t\t\t\tmeanScreenWidth: \"991\", // set the screen width you want meanmenu to kick in at\n\t\t\t\t\t\tmeanNavPush: \"\", // set a height here in px, em or % if you want to budge your layout now the navigation is missing.\n\t\t\t\t\t\tmeanShowChildren: true, // true to show children in the menu, false to hide them\n\t\t\t\t\t\tmeanExpandableChildren: true, // true to allow expand/collapse children\n\t\t\t\t\t\tmeanExpand: \"+\", // single character you want to represent the expand for ULs\n\t\t\t\t\t\tmeanContract: \"-\", // single character you want to represent the contract for ULs\n\t\t\t\t\t\tmeanRemoveAttrs: false, // true to remove classes and IDs, false to keep them\n\t\t\t\t\t\tonePage: false, // set to true for one page sites\n\t\t\t\t\t\tmeanDisplay: \"block\", // override display method for table cell based layouts e.g. table-cell\n\t\t\t\t\t\tremoveElements: \"\" // set to hide page elements\n\t\t\t\t};\n\t\t\t\toptions = $.extend(defaults, options);\n\n\t\t\t\t// get browser width\n\t\t\t\tvar currentWidth = window.innerWidth || document.documentElement.clientWidth;\n\n\t\t\t\treturn this.each(function () {\n\t\t\t\t\t\tvar meanMenu = options.meanMenuTarget;\n\t\t\t\t\t\tvar meanContainer = options.meanMenuContainer;\n\t\t\t\t\t\tvar meanMenuClose = options.meanMenuClose;\n\t\t\t\t\t\tvar meanMenuCloseSize = options.meanMenuCloseSize;\n\t\t\t\t\t\tvar meanMenuOpen = options.meanMenuOpen;\n\t\t\t\t\t\tvar meanRevealPosition = options.meanRevealPosition;\n\t\t\t\t\t\tvar meanRevealPositionDistance = options.meanRevealPositionDistance;\n\t\t\t\t\t\tvar meanRevealColour = options.meanRevealColour;\n\t\t\t\t\t\tvar meanScreenWidth = options.meanScreenWidth;\n\t\t\t\t\t\tvar meanNavPush = options.meanNavPush;\n\t\t\t\t\t\tvar meanRevealClass = \".meanmenu-reveal\";\n\t\t\t\t\t\tvar meanShowChildren = options.meanShowChildren;\n\t\t\t\t\t\tvar meanExpandableChildren = options.meanExpandableChildren;\n\t\t\t\t\t\tvar meanExpand = options.meanExpand;\n\t\t\t\t\t\tvar meanContract = options.meanContract;\n\t\t\t\t\t\tvar meanRemoveAttrs = options.meanRemoveAttrs;\n\t\t\t\t\t\tvar onePage = options.onePage;\n\t\t\t\t\t\tvar meanDisplay = options.meanDisplay;\n\t\t\t\t\t\tvar removeElements = options.removeElements;\n\n\t\t\t\t\t\t//detect known mobile/tablet usage\n\t\t\t\t\t\tvar isMobile = false;\n\t\t\t\t\t\tif ( (navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i)) || (navigator.userAgent.match(/iPad/i)) || (navigator.userAgent.match(/Android/i)) || (navigator.userAgent.match(/Blackberry/i)) || (navigator.userAgent.match(/Windows Phone/i)) ) {\n\t\t\t\t\t\t\t\tisMobile = true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( (navigator.userAgent.match(/MSIE 8/i)) || (navigator.userAgent.match(/MSIE 7/i)) ) {\n\t\t\t\t\t\t\t// add scrollbar for IE7 & 8 to stop breaking resize function on small content sites\n\t\t\t\t\t\t\t\tjQuery('html').css(\"overflow-y\" , \"scroll\");\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar meanRevealPos = \"\";\n\t\t\t\t\t\tvar meanCentered = function() {\n\t\t\t\t\t\t\tif (meanRevealPosition === \"center\") {\n\t\t\t\t\t\t\t\tvar newWidth = window.innerWidth || document.documentElement.clientWidth;\n\t\t\t\t\t\t\t\tvar meanCenter = ( (newWidth/2)-22 )+\"px\";\n\t\t\t\t\t\t\t\tmeanRevealPos = \"left:\" + meanCenter + \";right:auto;\";\n\n\t\t\t\t\t\t\t\tif (!isMobile) {\n\t\t\t\t\t\t\t\t\tjQuery('.meanmenu-reveal').css(\"left\",meanCenter);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tjQuery('.meanmenu-reveal').animate({\n\t\t\t\t\t\t\t\t\t\t\tleft: meanCenter\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tvar menuOn = false;\n\t\t\t\t\t\tvar meanMenuExist = false;\n\n\n\t\t\t\t\t\tif (meanRevealPosition === \"right\") {\n\t\t\t\t\t\t\t\tmeanRevealPos = \"right:\" + meanRevealPositionDistance + \";left:auto;\";\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (meanRevealPosition === \"left\") {\n\t\t\t\t\t\t\t\tmeanRevealPos = \"left:\" + meanRevealPositionDistance + \";right:auto;\";\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// run center function\n\t\t\t\t\t\tmeanCentered();\n\n\t\t\t\t\t\t// set all styles for mean-reveal\n\t\t\t\t\t\tvar $navreveal = \"\";\n\n\t\t\t\t\t\tvar meanInner = function() {\n\t\t\t\t\t\t\t\t// get last class name\n\t\t\t\t\t\t\t\tif (jQuery($navreveal).is(\".meanmenu-reveal.meanclose\")) {\n\t\t\t\t\t\t\t\t\t\t$navreveal.html(meanMenuClose);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t$navreveal.html(meanMenuOpen);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\t// re-instate original nav (and call this on window.width functions)\n\t\t\t\t\t\tvar meanOriginal = function() {\n\t\t\t\t\t\t\tjQuery('.mean-bar,.mean-push').remove();\n\t\t\t\t\t\t\tjQuery(meanContainer).removeClass(\"mean-container\");\n\t\t\t\t\t\t\tjQuery(meanMenu).css('display', meanDisplay);\n\t\t\t\t\t\t\tmenuOn = false;\n\t\t\t\t\t\t\tmeanMenuExist = false;\n\t\t\t\t\t\t\tjQuery(removeElements).removeClass('mean-remove');\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\t// navigation reveal\n\t\t\t\t\t\tvar showMeanMenu = function() {\n\t\t\t\t\t\t\t\tvar meanStyles = \"background:\"+meanRevealColour+\";color:\"+meanRevealColour+\";\"+meanRevealPos;\n\t\t\t\t\t\t\t\tif (currentWidth <= meanScreenWidth) {\n\t\t\t\t\t\t\t\tjQuery(removeElements).addClass('mean-remove');\n\t\t\t\t\t\t\t\t\tmeanMenuExist = true;\n\t\t\t\t\t\t\t\t\t// add class to body so we don't need to worry about media queries here, all CSS is wrapped in '.mean-container'\n\t\t\t\t\t\t\t\t\tjQuery(meanContainer).addClass(\"mean-container\");\n\t\t\t\t\t\t\t\t\tjQuery('.mean-container').prepend('<div class=\"mean-bar\"><a href=\"#nav\" class=\"meanmenu-reveal\" style=\"'+meanStyles+'\">Show Navigation</a><nav class=\"mean-nav\"></nav></div>');\n\n\t\t\t\t\t\t\t\t\t//push meanMenu navigation into .mean-nav\n\t\t\t\t\t\t\t\t\tvar meanMenuContents = jQuery(meanMenu).html();\n\t\t\t\t\t\t\t\t\tjQuery('.mean-nav').html(meanMenuContents);\n\n\t\t\t\t\t\t\t\t\t// remove all classes from EVERYTHING inside meanmenu nav\n\t\t\t\t\t\t\t\t\tif(meanRemoveAttrs) {\n\t\t\t\t\t\t\t\t\t\tjQuery('nav.mean-nav ul, nav.mean-nav ul *').each(function() {\n\t\t\t\t\t\t\t\t\t\t\t// First check if this has mean-remove class\n\t\t\t\t\t\t\t\t\t\t\tif (jQuery(this).is('.mean-remove')) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery(this).attr('class', 'mean-remove');\n\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery(this).removeAttr(\"class\");\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tjQuery(this).removeAttr(\"id\");\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// push in a holder div (this can be used if removal of nav is causing layout issues)\n\t\t\t\t\t\t\t\t\tjQuery(meanMenu).before('<div class=\"mean-push\" />');\n\t\t\t\t\t\t\t\t\tjQuery('.mean-push').css(\"margin-top\",meanNavPush);\n\n\t\t\t\t\t\t\t\t\t// hide current navigation and reveal mean nav link\n\t\t\t\t\t\t\t\t\tjQuery(meanMenu).hide();\n\t\t\t\t\t\t\t\t\tjQuery(\".meanmenu-reveal\").show();\n\n\t\t\t\t\t\t\t\t\t// turn 'X' on or off\n\t\t\t\t\t\t\t\t\tjQuery(meanRevealClass).html(meanMenuOpen);\n\t\t\t\t\t\t\t\t\t$navreveal = jQuery(meanRevealClass);\n\n\t\t\t\t\t\t\t\t\t//hide mean-nav ul\n\t\t\t\t\t\t\t\t\tjQuery('.mean-nav ul').hide();\n\n\t\t\t\t\t\t\t\t\t// hide sub nav\n\t\t\t\t\t\t\t\t\tif(meanShowChildren) {\n\t\t\t\t\t\t\t\t\t\t\t// allow expandable sub nav(s)\n\t\t\t\t\t\t\t\t\t\t\tif(meanExpandableChildren){\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery('.mean-nav ul ul').each(function() {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif(jQuery(this).children().length){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tjQuery(this,'li:first').parent().append('<a class=\"mean-expand\" href=\"#\" style=\"font-size: '+ meanMenuCloseSize +'\">'+ meanExpand +'</a>');\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery('.mean-expand').on(\"click\",function(e){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (jQuery(this).hasClass(\"mean-clicked\")) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tjQuery(this).text(meanExpand);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tjQuery(this).prev('ul').slideUp(300, function(){});\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tjQuery(this).text(meanContract);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tjQuery(this).prev('ul').slideDown(300, function(){});\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tjQuery(this).toggleClass(\"mean-clicked\");\n\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\tjQuery('.mean-nav ul ul').show();\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\tjQuery('.mean-nav ul ul').hide();\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// add last class to tidy up borders\n\t\t\t\t\t\t\t\t\tjQuery('.mean-nav ul li').last().addClass('mean-last');\n\t\t\t\t\t\t\t\t\t$navreveal.removeClass(\"meanclose\");\n\t\t\t\t\t\t\t\t\tjQuery($navreveal).click(function(e){\n\t\t\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\tif( menuOn === false ) {\n\t\t\t\t\t\t\t\t\t\t\t\t$navreveal.css(\"text-align\", \"center\");\n\t\t\t\t\t\t\t\t\t\t\t\t$navreveal.css(\"text-indent\", \"0\");\n\t\t\t\t\t\t\t\t\t\t\t\t$navreveal.css(\"font-size\", meanMenuCloseSize);\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery('.mean-nav ul:first').slideDown();\n\t\t\t\t\t\t\t\t\t\t\t\tmenuOn = true;\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\tjQuery('.mean-nav ul:first').slideUp();\n\t\t\t\t\t\t\t\t\t\t\tmenuOn = false;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t$navreveal.toggleClass(\"meanclose\");\n\t\t\t\t\t\t\t\t\t\t\tmeanInner();\n\t\t\t\t\t\t\t\t\t\t\tjQuery(removeElements).addClass('mean-remove');\n\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\t// for one page websites, reset all variables...\n\t\t\t\t\t\t\t\t\tif ( onePage ) {\n\t\t\t\t\t\t\t\t\t\tjQuery('.mean-nav ul > li > a:first-child').on( \"click\" , function () {\n\t\t\t\t\t\t\t\t\t\t\tjQuery('.mean-nav ul:first').slideUp();\n\t\t\t\t\t\t\t\t\t\t\tmenuOn = false;\n\t\t\t\t\t\t\t\t\t\t\tjQuery($navreveal).toggleClass(\"meanclose\").html(meanMenuOpen);\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tmeanOriginal();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (!isMobile) {\n\t\t\t\t\t\t\t\t// reset menu on resize above meanScreenWidth\n\t\t\t\t\t\t\t\tjQuery(window).resize(function () {\n\t\t\t\t\t\t\t\t\t\tcurrentWidth = window.innerWidth || document.documentElement.clientWidth;\n\t\t\t\t\t\t\t\t\t\tif (currentWidth > meanScreenWidth) {\n\t\t\t\t\t\t\t\t\t\t\t\tmeanOriginal();\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\tmeanOriginal();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (currentWidth <= meanScreenWidth) {\n\t\t\t\t\t\t\t\t\t\t\t\tshowMeanMenu();\n\t\t\t\t\t\t\t\t\t\t\t\tmeanCentered();\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\tmeanOriginal();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\tjQuery(window).resize(function () {\n\t\t\t\t\t\t\t\t// get browser width\n\t\t\t\t\t\t\t\tcurrentWidth = window.innerWidth || document.documentElement.clientWidth;\n\n\t\t\t\t\t\t\t\tif (!isMobile) {\n\t\t\t\t\t\t\t\t\t\tmeanOriginal();\n\t\t\t\t\t\t\t\t\t\tif (currentWidth <= meanScreenWidth) {\n\t\t\t\t\t\t\t\t\t\t\t\tshowMeanMenu();\n\t\t\t\t\t\t\t\t\t\t\t\tmeanCentered();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tmeanCentered();\n\t\t\t\t\t\t\t\t\t\tif (currentWidth <= meanScreenWidth) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (meanMenuExist === false) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tshowMeanMenu();\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tmeanOriginal();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t// run main menuMenu function on load\n\t\t\t\t\tshowMeanMenu();\n\t\t\t\t});\n\t\t};\n})(jQuery);"
  },
  {
    "path": "public/admin/js/jquery.mockjax.js",
    "content": "/*!\n * MockJax - jQuery Plugin to Mock Ajax requests\n *\n * Version:  1.5.0pre\n * Released:\n * Home:   http://github.com/appendto/jquery-mockjax\n * Author:   Jonathan Sharp (http://jdsharp.com)\n * License:  MIT,GPL\n *\n * Copyright (c) 2011 appendTo LLC.\n * Dual licensed under the MIT or GPL licenses.\n * http://appendto.com/open-source-licenses\n */\n(function($) {\n\tvar _ajax = $.ajax,\n\t\tmockHandlers = [],\n\t\tCALLBACK_REGEX = /=\\?(&|$)/, \n\t\tjsc = (new Date()).getTime();\n\n\t\n\t// Parse the given XML string. \n\tfunction parseXML(xml) {\n\t\tif ( window['DOMParser'] == undefined && window.ActiveXObject ) {\n\t\t\tDOMParser = function() { };\n\t\t\tDOMParser.prototype.parseFromString = function( xmlString ) {\n\t\t\t\tvar doc = new ActiveXObject('Microsoft.XMLDOM');\n\t\t\t\tdoc.async = 'false';\n\t\t\t\tdoc.loadXML( xmlString );\n\t\t\t\treturn doc;\n\t\t\t};\n\t\t}\n\n\t\ttry {\n\t\t\tvar xmlDoc \t= ( new DOMParser() ).parseFromString( xml, 'text/xml' );\n\t\t\tif ( $.isXMLDoc( xmlDoc ) ) {\n\t\t\t\tvar err = $('parsererror', xmlDoc);\n\t\t\t\tif ( err.length == 1 ) {\n\t\t\t\t\tthrow('Error: ' + $(xmlDoc).text() );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthrow('Unable to parse XML');\n\t\t\t}\n\t\t} catch( e ) {\n\t\t\tvar msg = ( e.name == undefined ? e : e.name + ': ' + e.message );\n\t\t\t$(document).trigger('xmlParseError', [ msg ]);\n\t\t\treturn undefined;\n\t\t}\n\t\treturn xmlDoc;\n\t}\n\n\t// Trigger a jQuery event\n\tfunction trigger(s, type, args) {\n\t\t(s.context ? jQuery(s.context) : jQuery.event).trigger(type, args);\n\t}\n\n\t// Check if the data field on the mock handler and the request match. This \n\t// can be used to restrict a mock handler to being used only when a certain\n\t// set of data is passed to it.\n\tfunction isMockDataEqual( mock, live ) {\n\t\tvar identical = false;\n\t\t// Test for situations where the data is a querystring (not an object)\n\t\tif (typeof live === 'string') {\n\t\t\t// Querystring may be a regex\n\t\t\treturn $.isFunction( mock.test ) ? mock.test(live) : mock == live;\n\t\t}\n\t\t$.each(mock, function(k, v) {\n\t\t\tif ( live[k] === undefined ) {\n\t\t\t\tidentical = false;\n\t\t\t\treturn identical;\n\t\t\t} else {\n\t\t\t\tidentical = true;\n\t\t\t\tif ( typeof live[k] == 'object' ) {\n\t\t\t\t\treturn isMockDataEqual(mock[k], live[k]);\n\t\t\t\t} else {\n\t\t\t\t\tif ( $.isFunction( mock[k].test ) ) {\n\t\t\t\t\t\tidentical = mock[k].test(live[k]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tidentical = ( mock[k] == live[k] );\n\t\t\t\t\t}\n\t\t\t\t\treturn identical;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn identical;\n\t}\n\n\t// Check the given handler should mock the given request\n\tfunction getMockForRequest( handler, requestSettings ) {\n\t\t// If the mock was registered with a function, let the function decide if we\n\t\t// want to mock this request\n\t\tif ( $.isFunction(handler) ) {\n\t\t\treturn handler( requestSettings );\n\t\t}\n\n\t\t// Inspect the URL of the request and check if the mock handler's url\n\t\t// matches the url for this ajax request\n\t\tif ( $.isFunction(handler.url.test) ) {\n\t\t\t// The user provided a regex for the url, test it\n\t\t\tif ( !handler.url.test( requestSettings.url ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t} else {\n\t\t\t// Look for a simple wildcard '*' or a direct URL match\n\t\t\tvar star = handler.url.indexOf('*');\n\t\t\tif (handler.url !== requestSettings.url && star === -1 || \n\t\t\t\t\t!new RegExp(handler.url.replace(/[-[\\]{}()+?.,\\\\^$|#\\s]/g, \"\\\\$&\").replace('*', '.+')).test(requestSettings.url)) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\n\t\t// Inspect the data submitted in the request (either POST body or GET query string)\n\t\tif ( handler.data && requestSettings.data ) {\n\t\t\tif ( !isMockDataEqual(handler.data, requestSettings.data) ) {\n\t\t\t\t// They're not identical, do not mock this request\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t\t// Inspect the request type\n\t\tif ( handler && handler.type && \n\t\t\t\t handler.type.toLowerCase() != requestSettings.type.toLowerCase() ) {\n\t\t\t// The request type doesn't match (GET vs. POST)\n\t\t\treturn null;\n\t\t}\n\n\t\treturn handler;\n\t}\n\n\t// If logging is enabled, log the mock to the console\n\tfunction logMock( mockHandler, requestSettings ) {\n\t\tvar c = $.extend({}, $.mockjaxSettings, mockHandler);\n\t\tif ( c.log && $.isFunction(c.log) ) {\n\t\t\tc.log('MOCK ' + requestSettings.type.toUpperCase() + ': ' + requestSettings.url, $.extend({}, requestSettings));\n\t\t}\n\t}\n\n\t// Process the xhr objects send operation\n\tfunction _xhrSend(mockHandler, requestSettings, origSettings) {\n\n\t\t// This is a substitute for < 1.4 which lacks $.proxy\n\t\tvar process = (function(that) {\n\t\t\treturn function() {\n\t\t\t\treturn (function() {\n\t\t\t\t\t// The request has returned\n\t\t\t\t\tthis.status \t\t= mockHandler.status;\n\t\t\t\t\tthis.statusText\t\t= mockHandler.statusText;\n\t\t\t\t\tthis.readyState \t= 4;\n\n\t\t\t\t\t// We have an executable function, call it to give\n\t\t\t\t\t// the mock handler a chance to update it's data\n\t\t\t\t\tif ( $.isFunction(mockHandler.response) ) {\n\t\t\t\t\t\tmockHandler.response(origSettings);\n\t\t\t\t\t}\n\t\t\t\t\t// Copy over our mock to our xhr object before passing control back to\n\t\t\t\t\t// jQuery's onreadystatechange callback\n\t\t\t\t\tif ( requestSettings.dataType == 'json' && ( typeof mockHandler.responseText == 'object' ) ) {\n\t\t\t\t\t\tthis.responseText = JSON.stringify(mockHandler.responseText);\n\t\t\t\t\t} else if ( requestSettings.dataType == 'xml' ) {\n\t\t\t\t\t\tif ( typeof mockHandler.responseXML == 'string' ) {\n\t\t\t\t\t\t\tthis.responseXML = parseXML(mockHandler.responseXML);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.responseXML = mockHandler.responseXML;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.responseText = mockHandler.responseText;\n\t\t\t\t\t}\n\t\t\t\t\tif( typeof mockHandler.status == 'number' || typeof mockHandler.status == 'string' ) {\n\t\t\t\t\t\tthis.status = mockHandler.status;\n\t\t\t\t\t}\n\t\t\t\t\tif( typeof mockHandler.statusText === \"string\") {\n\t\t\t\t\t\tthis.statusText = mockHandler.statusText;\n\t\t\t\t\t}\n\t\t\t\t\t// jQuery < 1.4 doesn't have onreadystate change for xhr\n\t\t\t\t\tif ( $.isFunction(this.onreadystatechange) ) {\n\t\t\t\t\t\tif( mockHandler.isTimeout) {\n\t\t\t\t\t\t\tthis.status = -1;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.onreadystatechange( mockHandler.isTimeout ? 'timeout' : undefined );\n\t\t\t\t\t} else if ( mockHandler.isTimeout ) {\n\t\t\t\t\t\t// Fix for 1.3.2 timeout to keep success from firing.\n\t\t\t\t\t\tthis.status = -1;\n\t\t\t\t\t}\n\t\t\t\t}).apply(that);\n\t\t\t};\n\t\t})(this);\n\n\t\tif ( mockHandler.proxy ) {\n\t\t\t// We're proxying this request and loading in an external file instead\n\t\t\t_ajax({\n\t\t\t\tglobal: false,\n\t\t\t\turl: mockHandler.proxy,\n\t\t\t\ttype: mockHandler.proxyType,\n\t\t\t\tdata: mockHandler.data,\n\t\t\t\tdataType: requestSettings.dataType === \"script\" ? \"text/plain\" : requestSettings.dataType,\n\t\t\t\tcomplete: function(xhr, txt) {\n\t\t\t\t\tmockHandler.responseXML = xhr.responseXML;\n\t\t\t\t\tmockHandler.responseText = xhr.responseText;\n\t\t\t\t\tmockHandler.status = xhr.status;\n\t\t\t\t\tmockHandler.statusText = xhr.statusText;\n\t\t\t\t\tthis.responseTimer = setTimeout(process, mockHandler.responseTime || 0);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\t// type == 'POST' || 'GET' || 'DELETE'\n\t\t\tif ( requestSettings.async === false ) {\n\t\t\t\t// TODO: Blocking delay\n\t\t\t\tprocess();\n\t\t\t} else {\n\t\t\t\tthis.responseTimer = setTimeout(process, mockHandler.responseTime || 50);\n\t\t\t}\n\t\t}\n\t}\n\n\t// Construct a mocked XHR Object\n\tfunction xhr(mockHandler, requestSettings, origSettings, origHandler) {\n\t\t// Extend with our default mockjax settings\n\t\tmockHandler = $.extend({}, $.mockjaxSettings, mockHandler);\n\n\t\tif (typeof mockHandler.headers === 'undefined') {\n\t\t\tmockHandler.headers = {};\n\t\t}\n\t\tif ( mockHandler.contentType ) {\n\t\t\tmockHandler.headers['content-type'] = mockHandler.contentType;\n\t\t}\n\n\t\treturn {\n\t\t\tstatus: mockHandler.status,\n\t\t\tstatusText: mockHandler.statusText,\n\t\t\treadyState: 1,\n\t\t\topen: function() { },\n\t\t\tsend: function() {\n\t\t\t\torigHandler.fired = true;\n\t\t\t\t_xhrSend.call(this, mockHandler, requestSettings, origSettings);\n\t\t\t},\n\t\t\tabort: function() {\n\t\t\t\tclearTimeout(this.responseTimer);\n\t\t\t},\n\t\t\tsetRequestHeader: function(header, value) {\n\t\t\t\tmockHandler.headers[header] = value;\n\t\t\t},\n\t\t\tgetResponseHeader: function(header) {\n\t\t\t\t// 'Last-modified', 'Etag', 'content-type' are all checked by jQuery\n\t\t\t\tif ( mockHandler.headers && mockHandler.headers[header] ) {\n\t\t\t\t\t// Return arbitrary headers\n\t\t\t\t\treturn mockHandler.headers[header];\n\t\t\t\t} else if ( header.toLowerCase() == 'last-modified' ) {\n\t\t\t\t\treturn mockHandler.lastModified || (new Date()).toString();\n\t\t\t\t} else if ( header.toLowerCase() == 'etag' ) {\n\t\t\t\t\treturn mockHandler.etag || '';\n\t\t\t\t} else if ( header.toLowerCase() == 'content-type' ) {\n\t\t\t\t\treturn mockHandler.contentType || 'text/plain';\n\t\t\t\t}\n\t\t\t},\n\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\tvar headers = '';\n\t\t\t\t$.each(mockHandler.headers, function(k, v) {\n\t\t\t\t\theaders += k + ': ' + v + \"\\n\";\n\t\t\t\t});\n\t\t\t\treturn headers;\n\t\t\t}\n\t\t};\n\t}\n\n\t// Process a JSONP mock request.\n\tfunction processJsonpMock( requestSettings, mockHandler, origSettings ) {\n\t\t// Handle JSONP Parameter Callbacks, we need to replicate some of the jQuery core here\n\t\t// because there isn't an easy hook for the cross domain script tag of jsonp\n\n\t\tprocessJsonpUrl( requestSettings );\n\n\t\trequestSettings.dataType = \"json\";\n\t\tif(requestSettings.data && CALLBACK_REGEX.test(requestSettings.data) || CALLBACK_REGEX.test(requestSettings.url)) {\n\t\t\tcreateJsonpCallback(requestSettings, mockHandler);\n\n\t\t\t// We need to make sure\n\t\t\t// that a JSONP style response is executed properly\n\n\t\t\tvar rurl = /^(\\w+:)?\\/\\/([^\\/?#]+)/,\n\t\t\t\tparts = rurl.exec( requestSettings.url ),\n\t\t\t\tremote = parts && (parts[1] && parts[1] !== location.protocol || parts[2] !== location.host);\n\n\t\t\trequestSettings.dataType = \"script\";\n\t\t\tif(requestSettings.type.toUpperCase() === \"GET\" && remote ) {\n\t\t\t\tvar newMockReturn = processJsonpRequest( requestSettings, mockHandler, origSettings );\n\n\t\t\t\t// Check if we are supposed to return a Deferred back to the mock call, or just \n\t\t\t\t// signal success\n\t\t\t\tif(newMockReturn) {\n\t\t\t\t\treturn newMockReturn;\n\t\t\t\t} else {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\t// Append the required callback parameter to the end of the request URL, for a JSONP request\n\tfunction processJsonpUrl( requestSettings ) {\n\t\tif ( requestSettings.type.toUpperCase() === \"GET\" ) {\n\t\t\tif ( !CALLBACK_REGEX.test( requestSettings.url ) ) {\n\t\t\t\trequestSettings.url += (/\\?/.test( requestSettings.url ) ? \"&\" : \"?\") + \n\t\t\t\t\t(requestSettings.jsonp || \"callback\") + \"=?\";\n\t\t\t}\n\t\t} else if ( !requestSettings.data || !CALLBACK_REGEX.test(requestSettings.data) ) {\n\t\t\trequestSettings.data = (requestSettings.data ? requestSettings.data + \"&\" : \"\") + (requestSettings.jsonp || \"callback\") + \"=?\";\n\t\t}\n\t}\n\t\n\t// Process a JSONP request by evaluating the mocked response text\n\tfunction processJsonpRequest( requestSettings, mockHandler, origSettings ) {\n\t\t// Synthesize the mock request for adding a script tag\n\t\tvar callbackContext = origSettings && origSettings.context || requestSettings,\n\t\t\tnewMock = null;\n\n\n\t\t// If the response handler on the moock is a function, call it\n\t\tif ( mockHandler.response && $.isFunction(mockHandler.response) ) {\n\t\t\tmockHandler.response(origSettings);\n\t\t} else {\n\n\t\t\t// Evaluate the responseText javascript in a global context\n\t\t\tif( typeof mockHandler.responseText === 'object' ) {\n\t\t\t\t$.globalEval( '(' + JSON.stringify( mockHandler.responseText ) + ')');\n\t\t\t} else {\n\t\t\t\t$.globalEval( '(' + mockHandler.responseText + ')');\n\t\t\t}\n\t\t}\n\n\t\t// Successful response\n\t\tjsonpSuccess( requestSettings, mockHandler );\n\t\tjsonpComplete( requestSettings, mockHandler );\n\n\t\t// If we are running under jQuery 1.5+, return a deferred object\n\t\tif(jQuery.Deferred){\n\t\t\tnewMock = new jQuery.Deferred();\n\t\t\tif(typeof mockHandler.responseText == \"object\"){\n\t\t\t\tnewMock.resolve( mockHandler.responseText );\n\t\t\t}\n\t\t\telse{\n\t\t\t\tnewMock.resolve( jQuery.parseJSON( mockHandler.responseText ) );\n\t\t\t}\n\t\t}\n\t\treturn newMock;\n\t}\n\n\n\t// Create the required JSONP callback function for the request\n\tfunction createJsonpCallback( requestSettings, mockHandler ) {\n\t\tjsonp = requestSettings.jsonpCallback || (\"jsonp\" + jsc++);\n\n\t\t// Replace the =? sequence both in the query string and the data\n\t\tif ( requestSettings.data ) {\n\t\t\trequestSettings.data = (requestSettings.data + \"\").replace(CALLBACK_REGEX, \"=\" + jsonp + \"$1\");\n\t\t}\n\n\t\trequestSettings.url = requestSettings.url.replace(CALLBACK_REGEX, \"=\" + jsonp + \"$1\");\n\n\n\t\t// Handle JSONP-style loading\n\t\twindow[ jsonp ] = window[ jsonp ] || function( tmp ) {\n\t\t\tdata = tmp;\n\t\t\tjsonpSuccess( requestSettings, mockHandler );\n\t\t\tjsonpComplete( requestSettings, mockHandler );\n\t\t\t// Garbage collect\n\t\t\twindow[ jsonp ] = undefined;\n\n\t\t\ttry {\n\t\t\t\tdelete window[ jsonp ];\n\t\t\t} catch(e) {}\n\n\t\t\tif ( head ) {\n\t\t\t\thead.removeChild( script );\n\t\t\t}\n\t\t};\n\t}\n\n\t// The JSONP request was successful\n\tfunction jsonpSuccess(requestSettings, mockHandler) {\n\t\t// If a local callback was specified, fire it and pass it the data\n\t\tif ( requestSettings.success ) {\n\t\t\trequestSettings.success.call( callbackContext, ( mockHandler.response ? mockHandler.response.toString() : mockHandler.responseText || ''), status, {} );\n\t\t}\n\n\t\t// Fire the global callback\n\t\tif ( requestSettings.global ) {\n\t\t\ttrigger(requestSettings, \"ajaxSuccess\", [{}, requestSettings] );\n\t\t}\n\t}\n\n\t// The JSONP request was completed\n\tfunction jsonpComplete(requestSettings, mockHandler) {\n\t\t// Process result\n\t\tif ( requestSettings.complete ) {\n\t\t\trequestSettings.complete.call( callbackContext, {} , status );\n\t\t}\n\n\t\t// The request was completed\n\t\tif ( requestSettings.global ) {\n\t\t\ttrigger( \"ajaxComplete\", [{}, requestSettings] );\n\t\t}\n\n\t\t// Handle the global AJAX counter\n\t\tif ( requestSettings.global && ! --jQuery.active ) {\n\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t}\n\t}\n\n\n\t// The core $.ajax replacement.  \n\tfunction handleAjax( url, origSettings ) {\n\t\tvar mockRequest, requestSettings, mockHandler;\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\torigSettings = url;\n\t\t\turl = undefined;\n\t\t} else {\n\t\t\t// work around to support 1.5 signature\n\t\t\torigSettings.url = url;\n\t\t}\n\t\t\n\t\t// Extend the original settings for the request\n\t\trequestSettings = jQuery.extend(true, {}, jQuery.ajaxSettings, origSettings);\n\n\t\t// Iterate over our mock handlers (in registration order) until we find\n\t\t// one that is willing to intercept the request\n\t\tfor(var k = 0; k < mockHandlers.length; k++) {\n\t\t\tif ( !mockHandlers[k] ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t\n\t\t\tmockHandler = getMockForRequest( mockHandlers[k], requestSettings );\n\t\t\tif(!mockHandler) {\n\t\t\t\t// No valid mock found for this request\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Handle console logging\n\t\t\tlogMock( mockHandler, requestSettings );\n\n\n\t\t\tif ( requestSettings.dataType === \"jsonp\" ) {\n\t\t\t\tif ((mockRequest = processJsonpMock( requestSettings, mockHandler, origSettings ))) {\n\t\t\t\t\t// This mock will handle the JSONP request\n\t\t\t\t\treturn mockRequest;\n\t\t\t\t}\n\t\t\t}\n\n\n\t\t\t// Removed to fix #54 - keep the mocking data object intact\n\t\t\t//mockHandler.data = requestSettings.data;\n\n\t\t\tmockHandler.cache = requestSettings.cache;\n\t\t\tmockHandler.timeout = requestSettings.timeout;\n\t\t\tmockHandler.global = requestSettings.global;\n\n\t\t\t(function(mockHandler, requestSettings, origSettings, origHandler) {\n\t\t\t\tmockRequest = _ajax.call($, $.extend(true, {}, origSettings, {\n\t\t\t\t\t// Mock the XHR object\n\t\t\t\t\txhr: function() { return xhr( mockHandler, requestSettings, origSettings, origHandler ) }\n\t\t\t\t}));\n\t\t\t})(mockHandler, requestSettings, origSettings, mockHandlers[k]);\n\n\t\t\treturn mockRequest;\n\t\t}\n\n\t\t// We don't have a mock request, trigger a normal request\n\t\treturn _ajax.apply($, [origSettings]);\n\t}\n\n\n\t// Public\n\n\t$.extend({\n\t\tajax: handleAjax\n\t});\n\n\t$.mockjaxSettings = {\n\t\t//url:        null,\n\t\t//type:       'GET',\n\t\tlog:          function(msg) {\n\t\t\t\t\t\t\t\t\t\twindow['console'] && window.console.log && window.console.log(msg);\n\t\t\t\t\t  \t\t\t},\n\t\tstatus:       200,\n\t\tstatusText:   \"OK\",\n\t\tresponseTime: 500,\n\t\tisTimeout:    false,\n\t\tcontentType:  'text/plain',\n\t\tresponse:     '',\n\t\tresponseText: '',\n\t\tresponseXML:  '',\n\t\tproxy:        '',\n\t\tproxyType:    'GET',\n\n\t\tlastModified: null,\n\t\tetag:         '',\n\t\theaders: {\n\t\t\tetag: 'IJF@H#@923uf8023hFO@I#H#',\n\t\t\t'content-type' : 'text/plain'\n\t\t}\n\t};\n\n\t$.mockjax = function(settings) {\n\t\tvar i = mockHandlers.length;\n\t\tmockHandlers[i] = settings;\n\t\treturn i;\n\t};\n\t$.mockjaxClear = function(i) {\n\t\tif ( arguments.length == 1 ) {\n\t\t\tmockHandlers[i] = null;\n\t\t} else {\n\t\t\tmockHandlers = [];\n\t\t}\n\t};\n\t$.mockjax.handler = function(i) {\n\t  if ( arguments.length == 1 ) {\n\t\t\treturn mockHandlers[i];\n\t\t}\n\t};\n})(jQuery);"
  },
  {
    "path": "public/admin/js/jquery.sticky.js",
    "content": "// Sticky Plugin v1.0.4 for jQuery\n// =============\n// Author: Anthony Garand\n// Improvements by German M. Bravo (Kronuz) and Ruud Kamphuis (ruudk)\n// Improvements by Leonardo C. Daronco (daronco)\n// Created: 02/14/2011\n// Date: 07/20/2015\n// Website: http://stickyjs.com/\n// Description: Makes an element on the page stick on the screen as you scroll\n//              It will only set the 'top' and 'position' of your element, you\n//              might need to adjust the width in some cases.\n\n(function (factory) {\n    if (typeof define === 'function' && define.amd) {\n        // AMD. Register as an anonymous module.\n        define(['jquery'], factory);\n    } else if (typeof module === 'object' && module.exports) {\n        // Node/CommonJS\n        module.exports = factory(require('jquery'));\n    } else {\n        // Browser globals\n        factory(jQuery);\n    }\n}(function ($) {\n    var slice = Array.prototype.slice; // save ref to original slice()\n    var splice = Array.prototype.splice; // save ref to original slice()\n\n  var defaults = {\n      topSpacing: 0,\n      bottomSpacing: 0,\n      className: 'is-sticky',\n      wrapperClassName: 'sicker-menu',\n      center: false,\n      getWidthFrom: '',\n      widthFromWrapper: true, // works only when .getWidthFrom is empty\n      responsiveWidth: false,\n      zIndex: '999999'\n    },\n    $window = $(window),\n    $document = $(document),\n    sticked = [],\n    windowHeight = $window.height(),\n    scroller = function() {\n      var scrollTop = $window.scrollTop(),\n        documentHeight = $document.height(),\n        dwh = documentHeight - windowHeight,\n        extra = (scrollTop > dwh) ? dwh - scrollTop : 0;\n\n      for (var i = 0, l = sticked.length; i < l; i++) {\n        var s = sticked[i],\n          elementTop = s.stickyWrapper.offset().top,\n          etse = elementTop - s.topSpacing - extra;\n\n        //update height in case of dynamic content\n        s.stickyWrapper.css('height', s.stickyElement.outerHeight());\n\n        if (scrollTop <= etse) {\n          if (s.currentTop !== null) {\n            s.stickyElement\n              .css({\n                'width': '',\n                'position': '',\n                'top': '',\n                'z-index': ''\n              });\n            s.stickyElement.parent().removeClass(s.className);\n            s.stickyElement.trigger('sticky-end', [s]);\n            s.currentTop = null;\n          }\n        }\n        else {\n          var newTop = documentHeight - s.stickyElement.outerHeight()\n            - s.topSpacing - s.bottomSpacing - scrollTop - extra;\n          if (newTop < 0) {\n            newTop = newTop + s.topSpacing;\n          } else {\n            newTop = s.topSpacing;\n          }\n          if (s.currentTop !== newTop) {\n            var newWidth;\n            if (s.getWidthFrom) {\n                newWidth = $(s.getWidthFrom).width() || null;\n            } else if (s.widthFromWrapper) {\n                newWidth = s.stickyWrapper.width();\n            }\n            if (newWidth == null) {\n                newWidth = s.stickyElement.width();\n            }\n            s.stickyElement\n              .css('width', newWidth)\n              .css('position', 'fixed')\n              .css('top', newTop)\n              .css('z-index', s.zIndex);\n\n            s.stickyElement.parent().addClass(s.className);\n\n            if (s.currentTop === null) {\n              s.stickyElement.trigger('sticky-start', [s]);\n            } else {\n              // sticky is started but it have to be repositioned\n              s.stickyElement.trigger('sticky-update', [s]);\n            }\n\n            if (s.currentTop === s.topSpacing && s.currentTop > newTop || s.currentTop === null && newTop < s.topSpacing) {\n              // just reached bottom || just started to stick but bottom is already reached\n              s.stickyElement.trigger('sticky-bottom-reached', [s]);\n            } else if(s.currentTop !== null && newTop === s.topSpacing && s.currentTop < newTop) {\n              // sticky is started && sticked at topSpacing && overflowing from top just finished\n              s.stickyElement.trigger('sticky-bottom-unreached', [s]);\n            }\n\n            s.currentTop = newTop;\n          }\n\n          // Check if sticky has reached end of container and stop sticking\n          var stickyWrapperContainer = s.stickyWrapper.parent();\n          var unstick = (s.stickyElement.offset().top + s.stickyElement.outerHeight() >= stickyWrapperContainer.offset().top + stickyWrapperContainer.outerHeight()) && (s.stickyElement.offset().top <= s.topSpacing);\n\n          if( unstick ) {\n            s.stickyElement\n              .css('position', 'absolute')\n              .css('top', '')\n              .css('bottom', 0)\n              .css('z-index', '');\n          } else {\n            s.stickyElement\n              .css('position', 'fixed')\n              .css('top', newTop)\n              .css('bottom', '')\n              .css('z-index', s.zIndex);\n          }\n        }\n      }\n    },\n    resizer = function() {\n      windowHeight = $window.height();\n\n      for (var i = 0, l = sticked.length; i < l; i++) {\n        var s = sticked[i];\n        var newWidth = null;\n        if (s.getWidthFrom) {\n            if (s.responsiveWidth) {\n                newWidth = $(s.getWidthFrom).width();\n            }\n        } else if(s.widthFromWrapper) {\n            newWidth = s.stickyWrapper.width();\n        }\n        if (newWidth != null) {\n            s.stickyElement.css('width', newWidth);\n        }\n      }\n    },\n    methods = {\n      init: function(options) {\n        return this.each(function() {\n          var o = $.extend({}, defaults, options);\n          var stickyElement = $(this);\n\n          var stickyId = stickyElement.attr('id');\n          var wrapperId = stickyId ? stickyId + '-' + defaults.wrapperClassName : defaults.wrapperClassName;\n          var wrapper = $('<div></div>')\n            .attr('id', wrapperId)\n            .addClass(o.wrapperClassName);\n\n          stickyElement.wrapAll(function() {\n            if ($(this).parent(\"#\" + wrapperId).length == 0) {\n                    return wrapper;\n            }\n});\n\n          var stickyWrapper = stickyElement.parent();\n\n          if (o.center) {\n            stickyWrapper.css({width:stickyElement.outerWidth(),marginLeft:\"auto\",marginRight:\"auto\"});\n          }\n\n          if (stickyElement.css(\"float\") === \"right\") {\n            stickyElement.css({\"float\":\"none\"}).parent().css({\"float\":\"right\"});\n          }\n\n          o.stickyElement = stickyElement;\n          o.stickyWrapper = stickyWrapper;\n          o.currentTop    = null;\n\n          sticked.push(o);\n\n          methods.setWrapperHeight(this);\n          methods.setupChangeListeners(this);\n        });\n      },\n\n      setWrapperHeight: function(stickyElement) {\n        var element = $(stickyElement);\n        var stickyWrapper = element.parent();\n        if (stickyWrapper) {\n          stickyWrapper.css('height', element.outerHeight());\n        }\n      },\n\n      setupChangeListeners: function(stickyElement) {\n        if (window.MutationObserver) {\n          var mutationObserver = new window.MutationObserver(function(mutations) {\n            if (mutations[0].addedNodes.length || mutations[0].removedNodes.length) {\n              methods.setWrapperHeight(stickyElement);\n            }\n          });\n          mutationObserver.observe(stickyElement, {subtree: true, childList: true});\n        } else {\n          if (window.addEventListener) {\n            stickyElement.addEventListener('DOMNodeInserted', function() {\n              methods.setWrapperHeight(stickyElement);\n            }, false);\n            stickyElement.addEventListener('DOMNodeRemoved', function() {\n              methods.setWrapperHeight(stickyElement);\n            }, false);\n          } else if (window.attachEvent) {\n            stickyElement.attachEvent('onDOMNodeInserted', function() {\n              methods.setWrapperHeight(stickyElement);\n            });\n            stickyElement.attachEvent('onDOMNodeRemoved', function() {\n              methods.setWrapperHeight(stickyElement);\n            });\n          }\n        }\n      },\n      update: scroller,\n      unstick: function(options) {\n        return this.each(function() {\n          var that = this;\n          var unstickyElement = $(that);\n\n          var removeIdx = -1;\n          var i = sticked.length;\n          while (i-- > 0) {\n            if (sticked[i].stickyElement.get(0) === that) {\n                splice.call(sticked,i,1);\n                removeIdx = i;\n            }\n          }\n          if(removeIdx !== -1) {\n            unstickyElement.unwrap();\n            unstickyElement\n              .css({\n                'width': '',\n                'position': '',\n                'top': '',\n                'float': '',\n                'z-index': ''\n              })\n            ;\n          }\n        });\n      }\n    };\n\n  // should be more efficient than using $window.scroll(scroller) and $window.resize(resizer):\n  if (window.addEventListener) {\n    window.addEventListener('scroll', scroller, false);\n    window.addEventListener('resize', resizer, false);\n  } else if (window.attachEvent) {\n    window.attachEvent('onscroll', scroller);\n    window.attachEvent('onresize', resizer);\n  }\n\n  $.fn.sticky = function(method) {\n    if (methods[method]) {\n      return methods[method].apply(this, slice.call(arguments, 1));\n    } else if (typeof method === 'object' || !method ) {\n      return methods.init.apply( this, arguments );\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.sticky');\n    }\n  };\n\n  $.fn.unstick = function(method) {\n    if (methods[method]) {\n      return methods[method].apply(this, slice.call(arguments, 1));\n    } else if (typeof method === 'object' || !method ) {\n      return methods.unstick.apply( this, arguments );\n    } else {\n      $.error('Method ' + method + ' does not exist on jQuery.sticky');\n    }\n  };\n  $(function() {\n    setTimeout(scroller, 0);\n  });\n}));"
  },
  {
    "path": "public/admin/js/jvectormap/jquery-jvectormap-world-mill-en.js",
    "content": "$.fn.vectorMap('addMap', 'world_mill_en', {\"insets\": [{\"width\": 900.0, \"top\": 0, \"height\": 440.7063107441331, \"bbox\": [{\"y\": -12671671.123330014, \"x\": -20004297.151525836}, {\"y\": 6930392.02513512, \"x\": 20026572.394749384}], \"left\": 0}],\n    \"paths\": {\n        \"BD\": {\n            \"path\": \"M652.71,228.85l-0.04,1.38l-0.46,-0.21l-0.42,0.3l0.05,0.65l-0.17,-1.37l-0.48,-1.26l-1.08,-1.6l-0.23,-0.13l-2.31,-0.11l-0.31,0.36l0.21,0.98l-0.6,1.11l-0.8,-0.4l-0.37,0.09l-0.23,0.3l-0.54,-0.21l-0.78,-0.19l-0.38,-2.04l-0.83,-1.89l0.4,-1.5l-0.16,-0.35l-1.24,-0.57l0.36,-0.62l1.5,-0.95l0.02,-0.49l-1.62,-1.26l0.64,-1.31l1.7,1.0l0.12,0.04l0.96,0.11l0.19,1.62l0.25,0.26l2.38,0.37l2.32,-0.04l1.06,0.33l-0.92,1.79l-0.97,0.13l-0.23,0.16l-0.77,1.51l0.05,0.35l1.37,1.37l0.5,-0.14l0.35,-1.46l0.24,-0.0l1.24,3.92Z\",\n            \"name\": \"Bangladesh\"\n        },\n        \"BE\": {\"path\": \"M429.28,143.95l1.76,0.25l0.13,-0.01l2.16,-0.64l1.46,1.34l1.26,0.71l-0.23,1.8l-0.44,0.08l-0.24,0.25l-0.2,1.36l-1.8,-1.22l-0.23,-0.05l-1.14,0.23l-1.62,-1.43l-1.15,-1.31l-0.21,-0.1l-0.95,-0.04l-0.21,-0.68l1.66,-0.54Z\", \"name\": \"Belgium\"},\n        \"BF\": {\n            \"path\": \"M413.48,260.21l-1.22,-0.46l-0.13,-0.02l-1.17,0.1l-0.15,0.06l-0.73,0.53l-0.87,-0.41l-0.39,-0.75l-0.13,-0.13l-0.98,-0.48l-0.14,-1.2l0.63,-0.99l0.05,-0.18l-0.05,-0.73l1.9,-2.01l0.08,-0.14l0.35,-1.65l0.49,-0.44l1.05,0.3l0.21,-0.02l1.05,-0.52l0.13,-0.13l0.3,-0.58l1.87,-1.1l0.11,-0.1l0.43,-0.72l2.23,-1.01l1.21,-0.32l0.51,0.4l0.19,0.06l1.25,-0.01l-0.14,0.89l0.01,0.13l0.34,1.16l0.06,0.11l1.35,1.59l0.07,1.13l0.24,0.28l2.64,0.53l-0.05,1.39l-0.42,0.59l-1.11,0.21l-0.22,0.17l-0.46,0.99l-0.69,0.23l-2.12,-0.05l-1.14,-0.2l-0.19,0.03l-0.72,0.36l-1.07,-0.17l-4.35,0.12l-0.29,0.29l-0.06,1.44l0.25,1.45Z\",\n            \"name\": \"Burkina Faso\"\n        },\n        \"BG\": {\"path\": \"M477.63,166.84l0.51,0.9l0.33,0.14l0.9,-0.21l1.91,0.47l3.68,0.16l0.17,-0.05l1.2,-0.75l2.78,-0.67l1.72,1.05l1.02,0.24l-0.97,0.97l-0.91,2.17l0.0,0.24l0.56,1.19l-1.58,-0.3l-0.16,0.01l-2.55,0.95l-0.2,0.28l-0.02,1.23l-1.92,0.24l-1.68,-0.99l-0.27,-0.02l-1.94,0.8l-1.52,-0.07l-0.15,-1.72l-0.12,-0.21l-0.99,-0.76l0.18,-0.18l0.02,-0.39l-0.17,-0.22l0.33,-0.75l0.91,-0.91l0.01,-0.42l-1.16,-1.25l-0.18,-0.89l0.24,-0.27Z\", \"name\": \"Bulgaria\"},\n        \"BA\": {\"path\": \"M468.39,164.66l0.16,0.04l0.43,-0.0l-0.43,0.93l0.06,0.34l1.08,1.06l-0.28,1.09l-0.5,0.13l-0.47,0.28l-0.86,0.74l-0.1,0.16l-0.28,1.29l-1.81,-0.94l-0.9,-1.22l-1.0,-0.73l-1.1,-1.1l-0.55,-0.96l-1.11,-1.3l0.3,-0.75l0.59,0.46l0.42,-0.04l0.46,-0.54l1.0,-0.06l2.11,0.5l1.72,-0.03l1.06,0.64Z\", \"name\": \"Bosnia and Herzegovina\"},\n        \"BN\": {\"path\": \"M707.34,273.57l0.76,-0.72l1.59,-1.03l-0.18,1.93l-0.9,-0.06l-0.28,0.14l-0.31,0.51l-0.68,-0.78Z\", \"name\": \"Brunei\"},\n        \"BO\": {\n            \"path\": \"M263.83,340.79l-0.23,-0.12l-2.86,-0.11l-0.28,0.17l-0.77,1.67l-1.17,-1.51l-0.18,-0.11l-3.28,-0.64l-0.28,0.1l-2.02,2.3l-1.43,0.29l-0.91,-3.35l-1.31,-2.88l0.75,-2.41l-0.09,-0.32l-1.23,-1.03l-0.31,-1.76l-0.05,-0.12l-1.12,-1.6l1.49,-2.62l0.01,-0.28l-1.0,-2.0l0.48,-0.72l0.02,-0.29l-0.37,-0.78l0.87,-1.13l0.06,-0.18l0.05,-2.17l0.12,-1.71l0.5,-0.8l0.01,-0.3l-1.9,-3.58l1.3,0.15l1.34,-0.05l0.23,-0.12l0.51,-0.7l2.12,-0.99l1.31,-0.93l2.81,-0.37l-0.21,1.51l0.01,0.13l0.29,0.91l-0.19,1.64l0.11,0.27l2.72,2.27l0.15,0.07l2.71,0.41l0.92,0.88l0.12,0.07l1.64,0.49l1.0,0.71l0.18,0.06l1.5,-0.02l1.24,0.64l0.1,1.31l0.05,0.14l0.44,0.68l0.02,0.73l-0.44,0.03l-0.27,0.39l0.96,2.99l0.28,0.21l4.43,0.1l-0.28,1.12l0.0,0.15l0.27,1.02l0.15,0.19l1.27,0.67l0.52,1.42l-0.42,1.91l-0.66,1.1l-0.04,0.2l0.21,1.3l-0.19,0.13l-0.01,-0.27l-0.15,-0.24l-2.33,-1.33l-0.14,-0.04l-2.38,-0.03l-4.36,0.76l-0.21,0.16l-1.2,2.29l-0.03,0.13l-0.06,1.37l-0.79,2.53l-0.05,-0.08Z\",\n            \"name\": \"Bolivia\"\n        },\n        \"JP\": {\n            \"path\": \"M781.17,166.78l1.8,0.67l0.28,-0.04l1.38,-1.01l0.43,2.67l-3.44,0.77l-0.18,0.12l-2.04,2.79l-3.71,-1.94l-0.42,0.15l-1.29,3.11l-2.32,0.04l-0.3,-2.63l1.12,-2.1l2.51,-0.16l0.28,-0.25l0.73,-4.22l0.58,-1.9l2.59,2.84l2.0,1.1ZM773.66,187.36l-0.92,2.24l-0.01,0.2l0.4,1.3l-1.18,1.81l-3.06,1.28l-4.35,0.17l-0.19,0.08l-3.4,3.06l-1.36,-0.87l-0.1,-1.95l-0.34,-0.28l-4.35,0.62l-2.99,1.33l-2.87,0.05l-0.28,0.2l0.09,0.33l2.37,1.93l-1.57,4.44l-1.35,0.97l-0.9,-0.79l0.57,-2.32l-0.15,-0.34l-1.5,-0.77l-0.81,-1.53l2.04,-0.75l0.14,-0.1l1.28,-1.72l2.47,-1.43l1.84,-1.92l4.83,-0.82l2.62,0.57l0.33,-0.16l2.45,-4.77l1.38,1.14l0.38,0.0l5.1,-4.02l0.09,-0.11l1.57,-3.57l0.02,-0.16l-0.42,-3.22l0.94,-1.67l2.27,-0.47l1.26,3.82l-0.07,2.23l-2.26,2.86l-0.06,0.19l0.04,2.93ZM757.85,196.18l0.22,0.66l-1.11,1.33l-0.8,-0.7l-0.33,-0.04l-1.28,0.65l-0.14,0.15l-0.54,1.34l-1.17,-0.57l0.02,-1.03l1.2,-1.45l1.24,0.28l0.29,-0.1l0.9,-1.03l1.51,0.5Z\",\n            \"name\": \"Japan\"\n        },\n        \"BI\": {\"path\": \"M494.7,295.83l-0.14,-2.71l-0.04,-0.13l-0.34,-0.62l0.93,0.12l0.3,-0.16l0.67,-1.25l0.9,0.11l0.11,0.76l0.08,0.16l0.46,0.48l0.02,0.56l-0.55,0.48l-0.96,1.29l-0.82,0.82l-0.61,0.07Z\", \"name\": \"Burundi\"},\n        \"BJ\": {\"path\": \"M427.4,268.94l-1.58,0.22l-0.52,-1.45l0.11,-5.73l-0.08,-0.21l-0.43,-0.44l-0.09,-1.13l-0.09,-0.19l-1.52,-1.52l0.24,-1.01l0.7,-0.23l0.18,-0.16l0.45,-0.97l1.07,-0.21l0.19,-0.12l0.53,-0.73l0.73,-0.65l0.68,-0.0l1.69,1.3l-0.08,0.67l0.02,0.14l0.52,1.38l-0.44,0.9l-0.01,0.24l0.2,0.52l-1.1,1.42l-0.76,0.76l-0.08,0.13l-0.47,1.59l0.05,1.69l-0.13,3.79Z\", \"name\": \"Benin\"},\n        \"BT\": {\"path\": \"M650.38,213.78l0.88,0.75l-0.13,1.24l-1.77,0.07l-2.1,-0.18l-1.57,0.4l-2.02,-0.91l-0.02,-0.24l1.54,-1.87l1.18,-0.6l1.67,0.59l1.32,0.08l1.01,0.67Z\", \"name\": \"Bhutan\"},\n        \"JM\": {\"path\": \"M226.67,238.37l1.64,0.23l1.2,0.56l0.11,0.19l-1.25,0.03l-0.14,0.04l-0.65,0.37l-1.24,-0.37l-1.17,-0.77l0.11,-0.22l0.86,-0.15l0.52,0.08Z\", \"name\": \"Jamaica\"},\n        \"BW\": {\n            \"path\": \"M484.91,331.96l0.53,0.52l0.82,1.53l2.83,2.86l0.14,0.08l0.85,0.22l0.03,0.81l0.74,1.66l0.21,0.17l1.87,0.39l1.17,0.87l-3.13,1.71l-2.3,2.01l-0.07,0.1l-0.82,1.74l-0.66,0.88l-1.24,0.19l-0.24,0.2l-0.65,1.98l-1.4,0.55l-1.9,-0.12l-1.2,-0.74l-1.06,-0.32l-0.22,0.02l-1.22,0.62l-0.14,0.14l-0.58,1.21l-1.16,0.79l-1.18,1.13l-1.5,0.23l-0.4,-0.68l0.22,-1.53l-0.04,-0.19l-1.48,-2.54l-0.11,-0.11l-0.53,-0.31l-0.0,-7.25l2.18,-0.08l0.29,-0.3l0.07,-9.0l1.63,-0.08l3.69,-0.86l0.84,0.93l0.38,0.05l1.53,-0.97l0.79,-0.03l1.3,-0.53l0.23,0.1l0.92,1.96Z\",\n            \"name\": \"Botswana\"\n        },\n        \"BR\": {\n            \"path\": \"M259.49,274.87l1.42,0.25l1.97,0.62l0.28,-0.05l0.67,-0.55l1.76,-0.38l2.8,-0.94l0.12,-0.08l0.92,-0.96l0.05,-0.33l-0.15,-0.32l0.73,-0.06l0.36,0.35l-0.27,0.93l0.17,0.36l0.76,0.34l0.44,0.9l-0.58,0.73l-0.06,0.13l-0.4,2.13l0.03,0.19l0.62,1.22l0.17,1.11l0.11,0.19l1.54,1.18l0.15,0.06l1.23,0.12l0.29,-0.15l0.2,-0.36l0.71,-0.11l1.13,-0.44l0.79,-0.63l1.25,0.19l0.65,-0.08l1.32,0.2l0.32,-0.18l0.23,-0.51l-0.05,-0.31l-0.31,-0.37l0.11,-0.31l0.75,0.17l0.13,0.0l1.1,-0.24l1.34,0.5l1.08,0.51l0.33,-0.05l0.67,-0.58l0.27,0.05l0.28,0.57l0.31,0.17l1.2,-0.18l0.17,-0.08l1.03,-1.05l0.76,-1.82l1.39,-2.16l0.49,-0.07l0.52,1.17l1.4,4.37l0.2,0.2l1.14,0.35l0.05,1.39l-1.8,1.97l0.01,0.42l0.78,0.75l0.18,0.08l4.16,0.37l0.08,2.25l0.5,0.22l1.78,-1.54l2.98,0.85l4.07,1.5l1.07,1.28l-0.37,1.23l0.36,0.38l2.83,-0.75l4.8,1.3l3.75,-0.09l3.6,2.02l3.27,2.84l1.93,0.72l2.13,0.11l0.76,0.66l1.22,4.56l-0.96,4.03l-1.22,1.58l-3.52,3.51l-1.63,2.91l-1.75,2.09l-0.5,0.04l-0.26,0.19l-0.72,1.99l0.18,4.76l-0.95,5.56l-0.74,0.96l-0.06,0.15l-0.43,3.39l-2.49,3.34l-0.06,0.13l-0.4,2.56l-1.9,1.07l-0.13,0.16l-0.51,1.38l-2.59,0.0l-3.94,1.01l-1.82,1.19l-2.85,0.81l-3.01,2.17l-2.12,2.65l-0.06,0.13l-0.36,2.0l0.01,0.13l0.4,1.42l-0.45,2.63l-0.53,1.23l-1.76,1.53l-2.76,4.79l-2.16,2.15l-1.69,1.29l-0.09,0.12l-1.12,2.6l-1.3,1.26l-0.45,-1.02l0.99,-1.18l0.01,-0.37l-1.5,-1.95l-1.98,-1.54l-2.58,-1.77l-0.2,-0.05l-0.81,0.07l-2.42,-2.05l-0.25,-0.07l-0.77,0.14l2.75,-3.07l2.8,-2.61l1.67,-1.09l2.11,-1.49l0.13,-0.24l0.05,-2.15l-0.07,-0.2l-1.26,-1.54l-0.35,-0.09l-0.64,0.27l0.3,-0.95l0.34,-1.57l0.01,-1.52l-0.16,-0.26l-0.9,-0.48l-0.27,-0.01l-0.86,0.39l-0.65,-0.08l-0.23,-0.8l-0.23,-2.39l-0.04,-0.12l-0.47,-0.79l-0.14,-0.12l-1.69,-0.71l-0.25,0.01l-0.93,0.47l-2.29,-0.44l0.15,-3.3l-0.03,-0.15l-0.62,-1.22l0.57,-0.39l0.13,-0.3l-0.22,-1.37l0.67,-1.13l0.44,-2.04l-0.01,-0.17l-0.59,-1.61l-0.14,-0.16l-1.25,-0.66l-0.22,-0.82l0.35,-1.41l-0.28,-0.37l-4.59,-0.1l-0.78,-2.41l0.34,-0.02l0.28,-0.31l-0.03,-1.1l-0.05,-0.16l-0.45,-0.68l-0.1,-1.4l-0.16,-0.24l-1.45,-0.76l-0.14,-0.03l-1.48,0.02l-1.04,-0.73l-1.62,-0.48l-0.93,-0.9l-0.16,-0.08l-2.72,-0.41l-2.53,-2.12l0.18,-1.54l-0.01,-0.13l-0.29,-0.91l0.26,-1.83l-0.34,-0.34l-3.28,0.43l-0.14,0.05l-1.3,0.93l-2.16,1.01l-0.12,0.09l-0.47,0.65l-1.12,0.05l-1.84,-0.21l-0.12,0.01l-1.33,0.41l-0.82,-0.21l0.16,-3.6l-0.48,-0.26l-1.97,1.43l-1.96,-0.06l-0.86,-1.23l-0.22,-0.13l-1.23,-0.11l0.34,-0.69l-0.05,-0.33l-1.36,-1.5l-0.92,-2.0l0.45,-0.32l0.13,-0.25l-0.0,-0.87l1.34,-0.64l0.17,-0.32l-0.23,-1.23l0.56,-0.77l0.05,-0.13l0.16,-1.03l2.7,-1.61l2.01,-0.47l0.16,-0.09l0.24,-0.27l2.11,0.11l0.31,-0.25l1.13,-6.87l0.06,-1.12l-0.4,-1.53l-0.1,-0.15l-1.0,-0.82l0.01,-1.45l1.08,-0.32l0.39,0.2l0.44,-0.24l0.08,-0.96l-0.25,-0.32l-1.22,-0.22l-0.02,-1.01l4.57,0.05l0.22,-0.09l0.6,-0.63l0.44,0.5l0.47,1.42l0.45,0.16l0.27,-0.18l1.21,1.16l0.23,0.08l1.95,-0.16l0.23,-0.14l0.43,-0.67l1.76,-0.55l1.05,-0.42l0.18,-0.2l0.25,-0.92l1.65,-0.66l0.18,-0.35l-0.14,-0.53l-0.26,-0.22l-1.91,-0.19l-0.29,-1.33l0.1,-1.64l-0.15,-0.28l-0.44,-0.25Z\",\n            \"name\": \"Brazil\"\n        },\n        \"BS\": {\"path\": \"M227.51,216.69l0.3,0.18l-0.24,1.07l0.03,-1.04l-0.09,-0.21ZM226.5,224.03l-0.13,0.03l-0.54,-1.3l-0.09,-0.12l-0.78,-0.64l0.4,-1.26l0.33,0.05l0.79,2.0l0.01,1.24ZM225.76,216.5l-2.16,0.34l-0.07,-0.41l0.85,-0.16l1.36,0.07l0.02,0.16Z\", \"name\": \"The Bahamas\"},\n        \"BY\": {\n            \"path\": \"M480.08,135.28l2.09,0.02l0.13,-0.03l2.72,-1.3l0.16,-0.19l0.55,-1.83l1.94,-1.06l0.15,-0.31l-0.2,-1.33l1.33,-0.52l2.58,-1.3l2.39,0.8l0.3,0.75l0.37,0.17l1.22,-0.39l2.18,0.75l0.2,1.36l-0.48,0.85l0.01,0.32l1.57,2.26l0.92,0.6l-0.1,0.41l0.19,0.35l1.61,0.57l0.48,0.6l-0.64,0.49l-1.91,-0.11l-0.18,0.05l-0.48,0.32l-0.1,0.39l0.57,1.1l0.51,1.78l-1.79,0.17l-0.18,0.08l-0.77,0.73l-0.09,0.19l-0.13,1.31l-0.75,-0.22l-2.11,0.15l-0.56,-0.66l-0.39,-0.06l-0.8,0.49l-0.79,-0.4l-0.13,-0.03l-1.94,-0.07l-2.76,-0.79l-2.58,-0.27l-1.98,0.07l-0.15,0.05l-1.31,0.86l-0.8,0.09l-0.04,-1.16l-0.03,-0.12l-0.63,-1.28l1.22,-0.56l0.17,-0.27l0.01,-1.35l-0.04,-0.15l-0.66,-1.24l-0.08,-1.12Z\",\n            \"name\": \"Belarus\"\n        },\n        \"BZ\": {\"path\": \"M198.03,239.7l0.28,0.19l0.43,-0.1l0.82,-1.42l0.0,0.07l0.29,0.29l0.16,0.0l-0.02,0.35l-0.39,1.08l0.02,0.25l0.16,0.29l-0.23,0.8l0.04,0.24l0.09,0.14l-0.25,1.12l-0.38,0.53l-0.33,0.06l-0.21,0.15l-0.41,0.74l-0.25,0.0l0.17,-2.58l0.01,-2.2Z\", \"name\": \"Belize\"},\n        \"RU\": {\n            \"path\": \"M688.57,38.85l0.63,2.39l0.44,0.19l2.22,-1.23l7.18,0.07l5.54,2.49l1.85,1.77l-0.55,2.34l-2.64,1.42l-6.57,2.76l-1.95,1.5l0.12,0.53l3.09,0.68l3.69,1.23l0.21,-0.01l1.98,-0.81l1.16,2.84l0.5,0.08l1.03,-1.18l3.86,-0.74l7.79,0.78l0.56,2.05l0.27,0.22l10.47,0.71l0.32,-0.29l0.13,-3.34l4.98,0.8l3.96,-0.02l3.88,2.43l1.06,2.79l-1.38,1.83l0.01,0.38l3.15,3.64l0.1,0.08l3.94,1.86l0.4,-0.14l2.28,-4.56l3.75,1.94l0.22,0.02l4.18,-1.22l4.76,1.4l0.26,-0.04l1.74,-1.23l3.98,0.63l0.32,-0.41l-1.71,-4.1l3.0,-1.86l22.39,3.04l2.06,2.67l0.1,0.08l6.55,3.51l0.17,0.03l10.08,-0.86l4.86,0.73l1.91,1.72l-0.29,3.13l0.18,0.31l3.08,1.26l0.19,0.01l3.32,-0.9l4.37,-0.11l4.78,0.87l4.61,-0.48l4.26,3.82l0.32,0.05l3.1,-1.4l0.12,-0.45l-1.91,-2.67l0.92,-1.64l7.78,1.22l5.22,-0.26l7.12,2.1l9.6,5.22l6.4,4.15l-0.2,2.44l0.14,0.28l1.69,1.04l0.45,-0.31l-0.51,-2.66l6.31,0.58l4.52,3.61l-2.1,1.52l-4.02,0.42l-0.27,0.29l-0.06,3.83l-0.81,0.67l-2.14,-0.11l-1.91,-1.39l-3.19,-1.13l-0.51,-1.63l-0.21,-0.2l-2.54,-0.67l-0.13,-0.0l-2.69,0.5l-1.12,-1.19l0.48,-1.36l-0.38,-0.39l-3.0,0.98l-0.17,0.44l1.02,1.76l-1.27,1.55l-3.09,1.71l-3.15,-0.29l-0.3,0.18l0.07,0.34l2.22,2.1l1.47,3.22l1.15,1.09l0.25,1.41l-0.48,0.76l-4.47,-0.81l-0.17,0.02l-6.97,2.9l-2.2,0.44l-0.11,0.05l-3.83,2.68l-3.63,2.32l-0.1,0.11l-0.76,1.4l-3.3,-2.4l-0.3,-0.03l-6.31,2.85l-0.99,-1.21l-0.4,-0.06l-2.32,1.54l-3.23,-0.49l-0.33,0.2l-0.79,2.39l-2.97,3.51l-0.07,0.21l0.09,1.47l0.22,0.27l2.62,0.74l-0.3,4.7l-2.06,0.12l-0.26,0.2l-1.07,2.94l0.04,0.27l0.83,1.19l-4.03,1.63l-0.18,0.21l-0.83,3.72l-3.55,0.79l-0.23,0.23l-0.73,3.32l-3.22,2.76l-0.76,-1.88l-1.07,-4.88l-1.39,-7.59l1.17,-4.76l2.05,-2.08l0.09,-0.19l0.11,-1.46l3.67,-0.77l0.15,-0.08l4.47,-4.61l4.29,-3.82l4.48,-3.01l0.11,-0.14l2.01,-5.43l-0.31,-0.4l-3.04,0.33l-0.24,0.17l-1.47,3.11l-5.98,3.94l-1.91,-4.36l-0.33,-0.17l-6.46,1.3l-0.15,0.08l-6.27,6.33l-0.01,0.41l1.7,1.87l-5.04,0.87l-3.51,0.34l0.16,-2.32l-0.26,-0.32l-3.89,-0.56l-0.19,0.04l-3.02,1.77l-7.63,-0.63l-8.24,1.1l-0.16,0.07l-8.11,7.09l-9.6,8.31l0.16,0.52l3.79,0.42l1.16,2.03l0.17,0.14l2.43,0.76l0.31,-0.08l1.5,-1.61l2.49,0.2l3.46,3.6l0.08,2.67l-1.91,3.26l-0.04,0.14l-0.21,3.91l-1.11,5.09l-3.73,4.55l-0.87,2.21l-6.73,7.14l-1.59,1.77l-3.23,1.72l-1.38,0.03l-1.48,-1.39l-0.37,-0.03l-3.36,2.22l-0.11,0.14l-0.16,0.42l-0.01,-1.09l1.0,-0.06l0.28,-0.27l0.36,-3.6l-0.61,-2.51l1.85,-0.94l2.94,0.53l0.32,-0.15l1.71,-3.1l0.84,-3.38l0.97,-1.18l1.32,-2.88l-0.34,-0.42l-4.14,0.95l-2.18,1.25l-3.51,-0.0l-0.95,-2.81l-0.1,-0.14l-2.97,-2.3l-0.11,-0.05l-4.19,-1.0l-0.89,-3.08l-0.87,-2.03l-0.95,-1.46l-1.54,-3.37l-0.12,-0.14l-2.27,-1.28l-3.83,-1.02l-3.37,0.1l-3.11,0.61l-0.13,0.06l-2.07,1.69l0.04,0.49l1.23,0.72l0.03,1.53l-1.34,1.05l-2.26,3.51l-0.05,0.17l0.02,1.27l-3.25,1.9l-2.87,-1.17l-0.14,-0.02l-2.86,0.26l-1.22,-1.02l-0.12,-0.06l-1.5,-0.35l-0.23,0.04l-3.62,2.27l-3.24,0.53l-2.28,0.79l-3.08,-0.51l-2.24,0.03l-1.49,-1.61l-2.45,-1.57l-0.11,-0.04l-2.6,-0.43l-3.17,0.43l-2.31,0.59l-3.31,-1.28l-0.45,-2.31l-0.21,-0.23l-2.94,-0.85l-2.26,-0.39l-2.77,-1.36l-0.37,0.09l-2.59,3.45l-0.03,0.32l0.91,1.74l-2.15,2.01l-3.47,-0.79l-2.44,-0.12l-1.59,-1.46l-0.2,-0.08l-2.55,-0.05l-2.12,-0.98l-0.24,-0.01l-3.85,1.57l-4.74,2.79l-2.59,0.55l-0.79,0.21l-1.21,-1.81l-0.29,-0.13l-3.05,0.41l-0.96,-1.25l-0.14,-0.1l-1.65,-0.6l-1.15,-1.82l-0.13,-0.12l-1.38,-0.6l-0.19,-0.02l-3.49,0.82l-3.35,-1.85l-0.38,0.08l-1.08,1.4l-5.36,-8.17l-3.02,-2.52l0.72,-0.85l0.01,-0.38l-0.37,-0.08l-6.22,3.21l-1.98,0.16l0.17,-1.51l-0.2,-0.31l-3.22,-1.17l-0.19,-0.0l-2.3,0.74l-0.72,-3.27l-0.24,-0.23l-4.5,-0.75l-0.21,0.04l-2.2,1.42l-6.21,1.27l-0.11,0.05l-1.16,0.81l-9.3,1.19l-0.18,0.09l-1.15,1.17l-0.02,0.39l1.56,2.01l-2.02,0.74l-0.16,0.42l0.35,0.68l-2.18,1.49l0.02,0.51l3.83,2.16l-0.45,1.13l-3.31,-0.13l-0.25,0.12l-0.57,0.77l-2.97,-1.59l-0.15,-0.04l-3.97,0.07l-0.13,0.03l-2.53,1.32l-2.84,-1.28l-5.52,-2.3l-0.12,-0.02l-3.91,0.09l-0.16,0.05l-5.17,3.6l-0.13,0.21l-0.25,1.89l-2.17,-1.6l-0.44,0.1l-2.0,3.59l0.06,0.37l0.55,0.5l-1.32,2.23l0.04,0.36l2.13,2.17l0.23,0.09l1.7,-0.08l1.42,1.89l-0.23,1.5l0.19,0.32l0.94,0.38l-0.89,1.44l-2.3,0.49l-0.17,0.11l-2.49,3.2l0.0,0.37l2.2,2.81l-0.23,1.93l0.06,0.22l2.56,3.32l-1.27,1.02l-0.4,0.66l-0.8,-0.15l-1.65,-1.75l-0.18,-0.09l-0.66,-0.09l-1.45,-0.64l-0.72,-1.16l-0.18,-0.13l-2.34,-0.63l-0.17,0.0l-1.32,0.41l-0.31,-0.4l-0.12,-0.09l-3.49,-1.48l-3.67,-0.49l-2.1,-0.52l-0.3,0.1l-0.12,0.14l-2.96,-2.4l-2.89,-1.19l-1.69,-1.42l1.27,-0.35l0.16,-0.1l2.08,-2.61l-0.04,-0.41l-1.02,-0.9l3.21,-1.12l0.2,-0.31l-0.07,-0.69l-0.37,-0.26l-1.86,0.42l0.05,-0.86l1.11,-0.76l2.35,-0.23l0.25,-0.19l0.39,-1.07l0.0,-0.19l-0.51,-1.64l0.95,-1.58l0.04,-0.16l-0.03,-0.95l-0.22,-0.28l-3.69,-1.06l-1.43,0.02l-1.45,-1.44l-0.29,-0.08l-1.83,0.49l-2.88,-1.04l0.04,-0.42l-0.04,-0.18l-0.89,-1.43l-0.23,-0.14l-1.77,-0.14l-0.13,-0.66l0.52,-0.56l0.01,-0.4l-1.6,-1.9l-0.27,-0.1l-2.55,0.32l-0.71,-0.16l-0.3,0.1l-0.53,0.63l-0.58,-0.08l-0.56,-1.97l-0.48,-0.94l0.17,-0.11l1.92,0.11l0.2,-0.06l0.97,-0.74l0.05,-0.42l-0.72,-0.91l-0.13,-0.1l-1.43,-0.51l0.09,-0.36l-0.13,-0.33l-0.97,-0.59l-1.43,-2.06l0.44,-0.77l0.04,-0.19l-0.25,-1.64l-0.2,-0.24l-2.45,-0.84l-0.19,-0.0l-1.05,0.34l-0.25,-0.62l-0.18,-0.17l-2.5,-0.84l-0.74,-1.93l-0.21,-1.7l-0.13,-0.21l-0.92,-0.63l0.83,-0.89l0.07,-0.27l-0.71,-3.26l1.69,-2.01l0.03,-0.34l-0.24,-0.41l2.63,-1.9l-0.01,-0.49l-2.31,-1.57l5.08,-4.61l2.33,-2.24l1.01,-2.08l-0.09,-0.37l-3.52,-2.56l0.94,-2.38l-0.04,-0.29l-2.14,-2.86l1.61,-3.35l-0.01,-0.29l-2.81,-4.58l2.19,-3.04l-0.06,-0.42l-3.7,-2.76l0.32,-2.67l1.87,-0.38l4.26,-1.77l2.46,-1.47l3.96,2.58l0.12,0.05l6.81,1.04l9.37,4.87l1.81,1.92l0.15,2.55l-2.61,2.06l-3.95,1.07l-11.1,-3.15l-0.17,0.0l-1.84,0.53l-0.1,0.53l3.97,2.97l0.15,1.77l0.16,4.14l0.19,0.27l3.21,1.22l1.94,1.03l0.44,-0.22l0.32,-1.94l-0.07,-0.25l-1.32,-1.52l1.25,-1.2l5.87,2.45l0.24,-0.01l2.11,-0.98l0.13,-0.42l-1.55,-2.75l5.52,-3.84l2.13,0.22l2.28,1.42l0.43,-0.12l1.46,-2.87l-0.04,-0.33l-1.97,-2.37l1.14,-2.38l-0.02,-0.3l-1.42,-2.07l6.15,1.22l1.14,1.92l-2.74,0.46l-0.25,0.3l0.02,2.36l0.12,0.24l1.97,1.44l0.25,0.05l3.87,-0.91l0.22,-0.23l0.58,-2.55l5.09,-1.98l8.67,-3.69l1.22,0.14l-2.06,2.2l0.18,0.5l3.11,0.45l0.23,-0.07l1.71,-1.41l4.59,-0.12l0.12,-0.03l3.53,-1.72l2.7,2.48l0.42,-0.01l2.85,-2.88l-0.0,-0.43l-2.42,-2.35l1.0,-1.13l7.2,1.31l3.42,1.36l9.06,4.97l0.39,-0.08l1.67,-2.27l-0.04,-0.4l-2.46,-2.23l-0.06,-0.82l-0.26,-0.27l-2.64,-0.38l0.69,-1.76l0.0,-0.22l-1.32,-3.47l-0.07,-1.27l4.52,-4.09l0.08,-0.11l1.6,-4.18l1.67,-0.84l6.33,1.2l0.46,2.31l-2.31,3.67l0.05,0.38l1.49,1.41l0.77,3.04l-0.56,6.05l0.09,0.24l2.62,2.54l-0.99,2.65l-4.87,5.96l0.17,0.48l2.86,0.61l0.31,-0.13l0.94,-1.42l2.67,-1.04l0.18,-0.19l0.64,-2.01l2.11,-1.98l0.05,-0.37l-1.38,-2.32l1.11,-2.74l-0.24,-0.41l-2.53,-0.33l-0.53,-2.16l1.96,-4.42l-0.05,-0.32l-3.03,-3.48l4.21,-2.94l0.12,-0.3l-0.52,-3.04l0.72,-0.06l1.18,2.35l-0.97,4.39l0.2,0.35l2.68,0.84l0.37,-0.38l-1.05,-3.07l3.89,-1.71l5.05,-0.24l4.55,2.62l0.36,-0.05l0.05,-0.36l-2.19,-3.84l-0.23,-4.78l4.07,-0.92l5.98,0.21l5.47,-0.64l0.2,-0.48l-1.88,-2.37l2.65,-2.99l2.75,-0.13l0.12,-0.03l4.82,-2.48l6.56,-0.67l0.23,-0.14l0.76,-1.27l6.33,-0.46l1.97,1.11l0.28,0.01l5.55,-2.71l4.53,0.08l0.29,-0.21l0.67,-2.18l2.29,-2.15l5.75,-2.13l3.48,1.4l-2.7,1.03l-0.19,0.31l0.26,0.26l5.47,0.78ZM871.83,65.73l0.25,-0.15l1.99,0.01l3.3,1.2l-0.08,0.22l-2.41,1.03l-5.73,0.49l-0.31,-1.0l2.99,-1.8ZM797.64,48.44l-2.22,1.51l-3.85,-0.43l-4.35,-1.85l0.42,-1.13l4.42,0.72l5.59,1.17ZM783.82,46.06l-1.71,3.25l-9.05,-0.14l-4.11,1.15l-4.64,-3.04l1.21,-3.13l3.11,-0.91l6.53,0.22l8.66,2.59ZM780.37,145.71l2.28,5.23l-3.09,-0.89l-0.37,0.19l-1.54,4.65l0.04,0.27l2.38,3.17l-0.05,1.4l-1.41,-1.41l-0.46,0.04l-1.23,1.81l-0.33,-1.86l0.28,-3.1l-0.28,-3.41l0.58,-2.46l0.11,-4.39l-0.03,-0.13l-1.44,-3.2l0.21,-4.39l2.19,-1.49l0.09,-0.41l-0.81,-1.3l0.48,-0.21l0.56,1.94l0.86,3.23l-0.05,3.36l1.03,3.35ZM780.16,57.18l-3.4,0.03l-5.06,-0.53l1.97,-1.59l2.95,-0.42l3.35,1.75l0.18,0.77ZM683.84,31.18l-13.29,1.97l4.16,-6.56l1.88,-0.58l1.77,0.34l6.08,3.02l-0.6,1.8ZM670.94,28.02l-5.18,0.65l-6.89,-1.58l-4.03,-2.07l-1.88,-3.98l-0.18,-0.16l-2.8,-0.93l5.91,-3.62l5.25,-1.29l4.73,2.88l5.63,5.44l-0.57,4.66ZM564.37,68.98l-0.85,0.23l-7.93,-0.57l-0.6,-1.84l-0.21,-0.2l-4.34,-1.18l-0.3,-2.08l2.34,-0.92l0.19,-0.29l-0.08,-2.43l4.85,-4.0l-0.12,-0.52l-1.68,-0.43l5.47,-3.94l0.11,-0.33l-0.6,-2.02l5.36,-2.55l8.22,-3.27l8.29,-0.96l4.34,-1.94l4.67,-0.65l1.45,1.72l-1.43,1.37l-8.8,2.52l-7.65,2.42l-7.92,4.84l-3.73,4.75l-3.92,4.58l-0.07,0.23l0.51,3.88l0.11,0.2l4.32,3.39ZM548.86,18.57l-3.28,0.75l-2.25,0.44l-0.22,0.19l-0.3,0.81l-2.67,0.86l-2.27,-1.14l1.2,-1.51l-0.23,-0.49l-3.14,-0.1l2.48,-0.54l3.55,-0.07l0.44,1.36l0.49,0.12l1.4,-1.35l2.2,-0.9l3.13,1.08l-0.54,0.49ZM477.5,133.25l-4.21,0.05l-2.69,-0.34l0.39,-1.03l3.24,-1.06l2.51,0.58l0.85,0.43l-0.2,0.71l-0.0,0.15l0.12,0.52Z\",\n            \"name\": \"Russia\"\n        },\n        \"RW\": {\"path\": \"M497.03,288.12l0.78,1.11l-0.12,1.19l-0.49,0.21l-1.25,-0.15l-0.3,0.16l-0.67,1.24l-1.01,-0.13l0.16,-0.92l0.22,-0.12l0.15,-0.24l0.09,-1.37l0.49,-0.48l0.42,0.18l0.25,-0.01l1.26,-0.65Z\", \"name\": \"Rwanda\"},\n        \"RS\": {\n            \"path\": \"M469.75,168.65l0.21,-0.21l0.36,-1.44l-0.08,-0.29l-1.06,-1.03l0.54,-1.16l-0.28,-0.43l-0.26,0.0l0.55,-0.67l-0.01,-0.39l-0.77,-0.86l-0.45,-0.89l1.56,-0.67l1.39,0.12l1.22,1.1l0.26,0.91l0.16,0.19l1.38,0.66l0.17,1.12l0.14,0.21l1.46,0.9l0.35,-0.03l0.62,-0.54l0.09,0.06l-0.28,0.25l-0.03,0.42l0.29,0.34l-0.44,0.5l-0.07,0.26l0.22,1.12l0.07,0.14l1.02,1.1l-0.81,0.84l-0.42,0.96l0.04,0.3l0.12,0.15l-0.15,0.16l-1.04,0.04l-0.39,0.08l0.33,-0.81l-0.29,-0.41l-0.21,0.01l-0.39,-0.45l-0.13,-0.09l-0.32,-0.11l-0.27,-0.4l-0.14,-0.11l-0.4,-0.16l-0.31,-0.37l-0.34,-0.09l-0.45,0.17l-0.18,0.18l-0.29,0.84l-0.96,-0.65l-0.81,-0.33l-0.32,-0.37l-0.22,-0.18Z\",\n            \"name\": \"Republic of Serbia\"\n        },\n        \"LT\": {\"path\": \"M478.13,133.31l-0.14,-0.63l0.25,-0.88l-0.15,-0.35l-1.17,-0.58l-2.43,-0.57l-0.45,-2.51l2.58,-0.97l4.14,0.22l2.3,-0.32l0.26,0.54l0.22,0.17l1.26,0.22l2.25,1.6l0.19,1.23l-1.87,1.01l-0.14,0.18l-0.54,1.83l-2.54,1.21l-2.18,-0.02l-0.52,-0.91l-0.18,-0.14l-1.11,-0.32Z\", \"name\": \"Lithuania\"},\n        \"LU\": {\"path\": \"M435.95,147.99l0.33,0.49l-0.11,1.07l-0.39,0.04l-0.29,-0.15l0.21,-1.4l0.25,-0.05Z\", \"name\": \"Luxembourg\"},\n        \"LR\": {\"path\": \"M401.37,273.67l-0.32,0.01l-2.48,-1.15l-2.24,-1.89l-2.14,-1.38l-1.47,-1.42l0.44,-0.59l0.05,-0.13l0.12,-0.65l1.07,-1.3l1.08,-1.09l0.52,-0.07l0.43,-0.18l0.84,1.24l-0.15,0.89l0.07,0.25l0.49,0.54l0.22,0.1l0.71,0.01l0.27,-0.16l0.42,-0.83l0.19,0.02l-0.06,0.52l0.23,1.12l-0.5,1.03l0.06,0.35l0.73,0.69l0.14,0.08l0.71,0.15l0.92,0.91l0.06,0.76l-0.17,0.22l-0.06,0.15l-0.17,1.8Z\", \"name\": \"Liberia\"},\n        \"RO\": {\n            \"path\": \"M477.94,155.19l1.02,-0.64l1.49,0.33l1.52,0.01l1.09,0.73l0.32,0.01l0.81,-0.46l1.8,-0.3l0.18,-0.1l0.54,-0.64l0.86,0.0l0.64,0.26l0.71,0.87l0.8,1.35l1.39,1.81l0.07,1.25l-0.26,1.3l0.01,0.15l0.45,1.42l0.15,0.18l1.12,0.57l0.25,0.01l1.05,-0.45l0.86,0.4l0.03,0.43l-0.92,0.51l-0.63,-0.24l-0.4,0.22l-0.64,3.41l-1.12,-0.24l-1.78,-1.09l-0.23,-0.04l-2.95,0.71l-1.25,0.77l-3.55,-0.16l-1.89,-0.47l-0.14,-0.0l-0.75,0.17l-0.61,-1.07l-0.3,-0.36l0.36,-0.32l-0.04,-0.48l-0.62,-0.38l-0.36,0.03l-0.62,0.54l-1.15,-0.71l-0.18,-1.14l-0.17,-0.22l-1.4,-0.67l-0.24,-0.86l-0.09,-0.14l-0.96,-0.87l1.49,-0.44l0.16,-0.11l1.51,-2.14l1.15,-2.09l1.44,-0.63Z\",\n            \"name\": \"Romania\"\n        },\n        \"GW\": {\"path\": \"M383.03,256.73l-1.12,-0.88l-0.14,-0.06l-0.94,-0.15l-0.43,-0.54l0.01,-0.27l-0.13,-0.26l-0.68,-0.48l-0.05,-0.16l0.99,-0.31l0.77,0.08l0.15,-0.02l0.61,-0.26l4.25,0.1l-0.02,0.44l-0.19,0.18l-0.08,0.29l0.17,0.66l-0.17,0.14l-0.44,0.0l-0.16,0.05l-0.57,0.37l-0.66,-0.04l-0.24,0.1l-0.92,1.03Z\", \"name\": \"Guinea Bissau\"},\n        \"GT\": {\n            \"path\": \"M195.13,249.89l-1.05,-0.35l-1.5,-0.04l-1.06,-0.47l-1.19,-0.93l0.04,-0.53l0.27,-0.55l-0.03,-0.31l-0.24,-0.32l1.02,-1.77l3.04,-0.01l0.3,-0.28l0.06,-0.88l-0.19,-0.3l-0.3,-0.11l-0.23,-0.45l-0.11,-0.12l-0.9,-0.58l-0.35,-0.33l0.37,-0.0l0.3,-0.3l0.0,-1.15l4.05,0.02l-0.02,1.74l-0.2,2.89l0.3,0.32l0.67,-0.0l0.75,0.42l0.4,-0.11l-0.62,0.53l-1.17,0.7l-0.13,0.16l-0.18,0.49l0.0,0.21l0.14,0.34l-0.35,0.44l-0.49,0.13l-0.2,0.41l0.03,0.06l-0.27,0.16l-0.86,0.64l-0.12,0.22ZM199.35,245.38l0.07,-0.13l0.05,0.02l-0.13,0.11Z\",\n            \"name\": \"Guatemala\"\n        },\n        \"GR\": {\n            \"path\": \"M487.2,174.55l-0.64,1.54l-0.43,0.24l-1.41,-0.08l-1.28,-0.28l-0.14,0.0l-3.03,0.77l-0.13,0.51l1.39,1.34l-0.78,0.29l-1.2,0.0l-1.23,-1.42l-0.47,0.02l-0.47,0.65l-0.04,0.27l0.56,1.76l0.06,0.11l1.02,1.12l-0.66,0.45l-0.04,0.46l1.39,1.35l1.15,0.79l0.02,1.06l-1.91,-0.63l-0.36,0.42l0.56,1.12l-1.2,0.23l-0.22,0.4l0.8,2.14l-1.15,0.02l-1.89,-1.15l-0.89,-2.19l-0.43,-1.91l-0.05,-0.11l-0.98,-1.35l-1.24,-1.62l-0.13,-0.63l1.07,-1.32l0.06,-0.14l0.13,-0.81l0.68,-0.36l0.16,-0.25l0.03,-0.54l1.4,-0.23l0.12,-0.05l0.87,-0.6l1.26,0.05l0.25,-0.11l0.34,-0.43l0.33,-0.07l1.81,0.08l0.13,-0.02l1.87,-0.77l1.64,0.97l0.19,0.04l2.28,-0.28l0.26,-0.29l0.02,-0.95l0.56,0.36ZM480.44,192.0l1.05,0.74l0.01,0.0l-1.26,-0.23l0.2,-0.51ZM481.76,192.79l1.86,-0.15l1.53,0.17l-0.02,0.19l0.34,0.3l-2.28,0.15l0.01,-0.13l-0.25,-0.31l-1.19,-0.22ZM485.65,193.28l0.65,-0.16l-0.05,0.12l-0.6,0.04Z\",\n            \"name\": \"Greece\"\n        },\n        \"GQ\": {\"path\": \"M444.81,282.04l-0.21,-0.17l0.74,-2.4l3.56,0.05l0.02,2.42l-3.34,-0.02l-0.76,0.13Z\", \"name\": \"Equatorial Guinea\"},\n        \"GY\": {\n            \"path\": \"M271.34,264.25l1.43,0.81l1.44,1.53l0.06,1.19l0.28,0.28l0.84,0.05l2.13,1.92l-0.34,1.93l-1.37,0.59l-0.17,0.34l0.12,0.51l-0.43,1.21l0.03,0.26l1.11,1.82l0.26,0.14l0.56,0.0l0.32,1.29l1.25,1.78l-0.08,0.01l-1.34,-0.21l-0.24,0.06l-0.78,0.64l-1.06,0.41l-0.76,0.1l-0.22,0.15l-0.18,0.32l-0.95,-0.1l-1.38,-1.05l-0.19,-1.13l-0.6,-1.18l0.37,-1.96l0.65,-0.83l0.03,-0.32l-0.57,-1.17l-0.15,-0.14l-0.62,-0.27l0.25,-0.85l-0.08,-0.3l-0.58,-0.58l-0.24,-0.09l-1.15,0.1l-1.41,-1.58l0.48,-0.49l0.09,-0.22l-0.04,-0.92l1.31,-0.34l0.73,-0.52l0.04,-0.44l-0.75,-0.82l0.16,-0.66l1.74,-1.3Z\",\n            \"name\": \"Guyana\"\n        },\n        \"GE\": {\"path\": \"M525.41,174.19l0.26,-0.88l-0.0,-0.17l-0.63,-2.06l-0.1,-0.15l-1.45,-1.12l-0.11,-0.05l-1.31,-0.33l-0.66,-0.69l1.97,0.48l3.65,0.49l3.3,1.41l0.39,0.5l0.33,0.1l1.43,-0.45l2.14,0.58l0.7,1.14l0.13,0.12l1.06,0.47l-0.18,0.11l-0.08,0.43l1.08,1.41l-0.06,0.06l-1.16,-0.15l-1.82,-0.84l-0.31,0.04l-0.55,0.44l-3.29,0.44l-2.32,-1.41l-0.17,-0.04l-2.25,0.12Z\", \"name\": \"Georgia\"},\n        \"GB\": {\n            \"path\": \"M412.82,118.6l-2.31,3.4l-0.0,0.33l0.31,0.13l2.52,-0.49l2.34,0.02l-0.56,2.51l-2.22,3.13l0.22,0.47l2.43,0.21l2.35,4.35l0.17,0.14l1.58,0.51l1.49,3.78l0.73,1.37l0.2,0.15l2.76,0.59l-0.25,1.75l-1.18,0.91l-0.08,0.39l0.87,1.49l-1.96,1.51l-3.31,-0.02l-4.15,0.88l-1.07,-0.59l-0.35,0.04l-1.55,1.44l-2.17,-0.35l-0.22,0.05l-1.61,1.15l-0.78,-0.38l3.31,-3.12l2.18,-0.7l0.21,-0.31l-0.26,-0.27l-3.78,-0.54l-0.48,-0.9l2.3,-0.92l0.13,-0.46l-1.29,-1.71l0.39,-1.83l3.46,0.29l0.32,-0.24l0.37,-1.99l-0.06,-0.24l-1.71,-2.17l-0.18,-0.11l-2.91,-0.58l-0.43,-0.68l0.82,-1.4l-0.03,-0.35l-0.82,-0.97l-0.46,0.01l-0.85,1.05l-0.11,-2.6l-0.05,-0.16l-1.19,-1.7l0.86,-3.53l1.81,-2.75l1.88,0.26l2.38,-0.24ZM406.39,132.84l-1.09,1.92l-1.65,-0.62l-1.26,0.02l0.41,-1.46l0.0,-0.16l-0.42,-1.51l1.62,-0.11l2.39,1.92Z\",\n            \"name\": \"United Kingdom\"\n        },\n        \"GA\": {\"path\": \"M448.76,294.47l-2.38,-2.34l-1.63,-2.04l-1.46,-2.48l0.06,-0.66l0.54,-0.81l0.61,-1.82l0.46,-1.69l0.63,-0.11l3.62,0.03l0.3,-0.3l-0.02,-2.75l0.88,-0.12l1.47,0.32l0.13,0.0l1.39,-0.3l-0.13,0.87l0.03,0.19l0.7,1.29l0.3,0.16l1.74,-0.19l0.36,0.29l-1.01,2.7l0.05,0.29l1.13,1.42l0.25,1.82l-0.3,1.56l-0.64,0.99l-1.93,-0.09l-1.26,-1.13l-0.5,0.17l-0.16,0.91l-1.48,0.27l-0.12,0.05l-0.86,0.63l-0.08,0.39l0.81,1.42l-1.48,1.08Z\", \"name\": \"Gabon\"},\n        \"GN\": {\n            \"path\": \"M399.83,265.31l-0.69,-0.06l-0.3,0.16l-0.43,0.85l-0.39,-0.01l-0.3,-0.33l0.14,-0.87l-0.05,-0.22l-1.05,-1.54l-0.37,-0.11l-0.61,0.27l-0.84,0.12l0.02,-0.54l-0.04,-0.17l-0.35,-0.57l0.07,-0.63l-0.03,-0.17l-0.57,-1.11l-0.7,-0.9l-0.24,-0.12l-2.0,-0.0l-0.19,0.07l-0.51,0.42l-0.6,0.05l-0.21,0.11l-0.43,0.55l-0.3,0.7l-1.04,0.86l-0.91,-1.24l-1.0,-1.02l-0.69,-0.37l-0.52,-0.42l-0.3,-1.11l-0.37,-0.56l-0.1,-0.1l-0.4,-0.23l0.77,-0.85l0.62,0.04l0.18,-0.05l0.58,-0.38l0.46,-0.0l0.19,-0.07l0.39,-0.34l0.1,-0.3l-0.17,-0.67l0.15,-0.14l0.09,-0.2l0.03,-0.57l0.87,0.02l1.76,0.6l0.13,0.01l0.55,-0.06l0.22,-0.13l0.08,-0.12l1.18,0.17l0.17,-0.02l0.09,0.56l0.3,0.25l0.4,-0.0l0.14,-0.03l0.56,-0.29l0.23,0.05l0.63,0.59l0.15,0.07l1.07,0.2l0.24,-0.06l0.65,-0.52l0.77,-0.32l0.55,-0.32l0.3,0.04l0.44,0.45l0.34,0.74l0.84,0.87l-0.35,0.45l-0.06,0.15l-0.1,0.82l0.42,0.31l0.35,-0.16l0.05,0.04l-0.1,0.59l0.09,0.27l0.42,0.4l-0.06,0.02l-0.18,0.21l-0.2,0.86l0.03,0.21l0.56,1.02l0.52,1.71l-0.65,0.21l-0.15,0.12l-0.24,0.35l-0.03,0.28l0.16,0.41l-0.1,0.76l-0.12,0.0Z\",\n            \"name\": \"Guinea\"\n        },\n        \"GM\": {\"path\": \"M379.18,251.48l0.15,-0.55l2.51,-0.07l0.21,-0.09l0.48,-0.52l0.58,-0.03l0.91,0.58l0.16,0.05l0.78,0.01l0.14,-0.03l0.59,-0.31l0.16,0.24l-0.71,0.38l-0.94,-0.04l-1.02,-0.51l-0.3,0.01l-0.86,0.55l-0.37,0.02l-0.14,0.04l-0.53,0.31l-1.81,-0.04Z\", \"name\": \"Gambia\"},\n        \"GL\": {\n            \"path\": \"M304.13,6.6l8.19,-3.63l8.72,0.28l0.19,-0.06l3.12,-2.28l8.75,-0.61l19.94,0.8l14.93,4.75l-3.92,2.01l-9.52,0.27l-13.48,0.6l-0.27,0.2l0.09,0.33l1.26,1.09l0.22,0.07l8.81,-0.67l7.49,2.07l0.19,-0.01l4.68,-1.78l1.76,1.84l-2.59,3.26l-0.01,0.36l0.34,0.11l6.35,-2.2l12.09,-2.32l7.31,1.14l1.17,2.13l-9.9,4.05l-1.43,1.32l-7.91,0.98l-0.26,0.31l0.29,0.29l5.25,0.25l-2.63,3.72l-2.02,3.61l-0.04,0.15l0.08,6.05l0.07,0.19l2.61,3.0l-3.4,0.2l-4.12,1.66l-0.04,0.54l4.5,2.67l0.53,3.9l-2.39,0.42l-0.19,0.48l2.91,3.83l-5.0,0.32l-0.27,0.22l0.12,0.33l2.69,1.84l-0.65,1.35l-3.36,0.71l-3.46,0.01l-0.21,0.51l3.05,3.15l0.02,1.53l-4.54,-1.79l-0.32,0.06l-1.29,1.26l0.11,0.5l3.33,1.15l3.17,2.74l0.85,3.29l-4.0,0.78l-1.83,-1.66l-3.1,-2.64l-0.36,-0.02l-0.13,0.33l0.8,2.92l-2.76,2.26l-0.09,0.33l0.28,0.2l6.59,0.19l2.47,0.18l-5.86,3.38l-6.76,3.43l-7.26,1.48l-2.73,0.02l-0.16,0.05l-2.67,1.72l-3.44,4.42l-5.28,2.86l-1.73,0.18l-3.33,1.01l-3.59,0.96l-0.15,0.1l-2.15,2.52l-0.07,0.19l-0.03,2.76l-1.21,2.49l-4.03,3.1l-0.1,0.33l0.98,2.94l-2.31,6.57l-3.21,0.21l-3.6,-3.0l-0.19,-0.07l-4.9,-0.02l-2.29,-1.97l-1.69,-3.78l-4.31,-4.86l-1.23,-2.52l-0.34,-3.58l-0.08,-0.17l-3.35,-3.67l0.85,-2.92l-0.09,-0.31l-1.5,-1.34l2.33,-4.7l3.67,-1.57l0.15,-0.13l1.02,-1.93l0.52,-3.47l-0.44,-0.31l-2.85,1.57l-1.33,0.64l-2.12,0.59l-2.81,-1.32l-0.15,-2.79l0.88,-2.17l2.09,-0.06l5.07,1.2l0.34,-0.17l-0.11,-0.37l-4.3,-2.9l-2.24,-1.58l-0.25,-0.05l-2.38,0.62l-1.7,-0.93l2.62,-4.1l-0.03,-0.36l-1.51,-1.75l-1.97,-3.3l-3.01,-5.21l-0.1,-0.11l-3.04,-1.85l0.03,-1.94l-0.18,-0.28l-6.82,-3.01l-5.35,-0.38l-6.69,0.21l-6.03,0.37l-2.81,-1.59l-3.84,-2.9l5.94,-1.5l5.01,-0.28l0.28,-0.29l-0.26,-0.31l-10.68,-1.38l-5.38,-2.1l0.27,-1.68l9.3,-2.6l9.18,-2.68l0.19,-0.16l0.97,-2.05l-0.18,-0.42l-6.29,-1.91l1.81,-1.9l8.58,-4.05l3.6,-0.63l0.23,-0.4l-0.92,-2.37l5.59,-1.5l7.66,-0.95l7.58,-0.05l2.65,1.84l0.31,0.02l6.52,-3.29l5.85,2.24l3.55,0.49l5.17,1.95l0.38,-0.16l-0.13,-0.39l-5.77,-3.16l0.29,-2.26Z\",\n            \"name\": \"Greenland\"\n        },\n        \"KW\": {\"path\": \"M540.87,207.81l0.41,0.94l-0.18,0.51l0.0,0.21l0.65,1.66l-1.15,0.05l-0.54,-1.12l-0.24,-0.17l-1.73,-0.2l1.44,-2.06l1.33,0.18Z\", \"name\": \"Kuwait\"},\n        \"GH\": {\"path\": \"M423.16,269.88l-3.58,1.34l-1.41,0.87l-2.13,0.69l-1.91,-0.61l0.09,-0.75l-0.03,-0.17l-1.04,-2.07l0.62,-2.7l1.04,-2.08l0.03,-0.19l-1.0,-5.46l0.05,-1.12l4.04,-0.11l1.08,0.18l0.18,-0.03l0.72,-0.36l0.75,0.13l-0.11,0.48l0.06,0.26l0.98,1.22l-0.0,1.77l0.24,1.99l0.05,0.13l0.55,0.81l-0.52,2.14l0.19,1.37l0.69,1.66l0.38,0.62Z\", \"name\": \"Ghana\"},\n        \"OM\": {\n            \"path\": \"M568.16,231.0l-0.08,0.1l-0.84,1.61l-0.93,-0.11l-0.27,0.11l-0.58,0.73l-0.4,1.32l-0.01,0.14l0.29,1.61l-0.07,0.09l-1.0,-0.01l-0.16,0.04l-1.56,0.97l-0.14,0.2l-0.23,1.17l-0.41,0.4l-1.44,-0.02l-0.17,0.05l-0.98,0.65l-0.13,0.25l0.01,0.87l-0.97,0.57l-1.27,-0.22l-0.19,0.03l-1.63,0.84l-0.88,0.11l-2.55,-5.57l7.2,-2.49l0.19,-0.19l1.67,-5.23l-0.03,-0.25l-1.1,-1.78l0.05,-0.89l0.68,-1.03l0.05,-0.16l0.01,-0.89l0.96,-0.44l0.07,-0.5l-0.32,-0.26l0.16,-1.31l0.85,-0.01l1.03,1.67l0.09,0.09l1.4,0.96l0.11,0.05l1.82,0.34l1.37,0.45l1.75,2.32l0.13,0.1l0.7,0.26l-0.0,0.3l-1.25,2.19l-1.01,0.8ZM561.88,218.47l-0.01,0.02l-0.15,-0.29l0.3,-0.38l-0.14,0.65Z\",\n            \"name\": \"Oman\"\n        },\n        \"_3\": {\"path\": \"M543.2,261.06l-1.07,1.46l-1.65,1.99l-1.91,0.01l-8.08,-2.95l-0.89,-0.84l-0.9,-1.19l-0.81,-1.23l0.44,-0.73l0.76,-1.12l0.49,0.28l0.52,1.05l1.13,1.06l0.2,0.08l1.24,0.01l2.42,-0.65l2.77,-0.31l2.17,-0.78l1.31,-0.19l0.84,-0.43l1.03,-0.06l-0.01,4.54Z\", \"name\": \"Somaliland\"},\n        \"_2\": {\"path\": \"M384.23,230.37l0.07,-0.06l0.28,-0.89l0.99,-1.13l0.07,-0.13l0.8,-3.54l3.4,-2.8l0.09,-0.13l0.76,-2.17l0.07,5.5l-2.07,0.21l-0.24,0.17l-0.61,1.36l-0.02,0.16l0.43,3.46l-4.01,-0.01ZM391.82,218.2l0.07,-0.06l0.75,-1.93l1.86,-0.25l0.94,0.34l1.14,0.0l0.18,-0.06l0.73,-0.56l1.41,-0.08l-0.0,2.72l-7.08,-0.12Z\", \"name\": \"Western Sahara\"},\n        \"_1\": {\"path\": \"M472.71,172.84l-0.07,-0.43l-0.16,-0.22l-0.53,-0.27l-0.38,-0.58l0.3,-0.43l0.51,-0.19l0.18,-0.18l0.3,-0.87l0.12,-0.04l0.22,0.26l0.12,0.09l0.38,0.15l0.28,0.41l0.15,0.12l0.34,0.12l0.43,0.5l0.15,0.07l-0.12,0.3l-0.27,0.32l-0.03,0.18l-0.31,0.06l-1.48,0.47l-0.15,0.17Z\", \"name\": \"Kosovo\"},\n        \"_0\": {\"path\": \"M503.54,192.92l0.09,-0.17l0.41,0.01l-0.08,0.01l-0.42,0.15ZM504.23,192.76l1.02,0.02l0.4,-0.13l-0.09,0.29l0.03,0.08l-0.35,0.16l-0.24,-0.04l-0.06,-0.1l-0.18,-0.17l-0.19,-0.08l-0.33,-0.02Z\", \"name\": \"Northern Cyprus\"},\n        \"JO\": {\"path\": \"M510.26,200.93l0.28,-0.57l2.53,1.0l0.27,-0.02l4.57,-2.77l0.84,2.84l-0.28,0.25l-4.95,1.37l-0.14,0.49l2.24,2.48l-0.5,0.28l-0.13,0.14l-0.35,0.78l-1.76,0.35l-0.2,0.14l-0.57,0.94l-0.94,0.73l-2.45,-0.38l-0.03,-0.12l1.23,-4.32l-0.04,-1.1l0.34,-0.75l0.03,-0.12l0.0,-1.63Z\", \"name\": \"Jordan\"},\n        \"HR\": {\n            \"path\": \"M455.49,162.73l1.53,0.09l0.24,-0.1l0.29,-0.34l0.64,0.38l0.14,0.04l0.98,0.06l0.32,-0.3l-0.01,-0.66l0.67,-0.25l0.19,-0.22l0.21,-1.11l1.72,-0.72l0.65,0.32l1.94,1.37l2.07,0.6l0.22,-0.02l0.67,-0.33l0.47,0.94l0.67,0.76l-0.63,0.77l-0.91,-0.55l-0.16,-0.04l-1.69,0.04l-2.2,-0.51l-1.17,0.07l-0.21,0.11l-0.36,0.42l-0.67,-0.53l-0.46,0.12l-0.52,1.29l0.05,0.31l1.21,1.42l0.58,0.99l1.15,1.14l0.95,0.68l0.92,1.23l0.1,0.09l1.75,0.91l-1.87,-0.89l-1.5,-1.11l-2.23,-0.88l-1.77,-1.9l0.12,-0.06l0.1,-0.47l-1.07,-1.22l-0.04,-0.94l-0.21,-0.27l-1.61,-0.49l-0.35,0.14l-0.53,0.93l-0.41,-0.57l0.04,-0.73Z\",\n            \"name\": \"Croatia\"\n        },\n        \"HT\": {\"path\": \"M237.82,234.68l1.35,0.1l1.95,0.37l0.18,1.15l-0.16,0.83l-0.51,0.37l-0.06,0.44l0.57,0.68l-0.02,0.22l-1.31,-0.35l-1.26,0.17l-1.49,-0.18l-0.15,0.02l-1.03,0.43l-1.02,-0.61l0.09,-0.36l2.04,0.32l1.9,0.21l0.19,-0.05l0.9,-0.58l0.05,-0.47l-1.05,-1.03l0.02,-0.86l-0.23,-0.3l-1.13,-0.29l0.18,-0.23Z\", \"name\": \"Haiti\"},\n        \"HU\": {\"path\": \"M461.96,157.92l0.68,-1.66l-0.03,-0.29l-0.15,-0.22l0.84,-0.0l0.3,-0.26l0.12,-0.84l0.88,0.57l0.98,0.38l0.16,0.01l2.1,-0.39l0.23,-0.21l0.14,-0.45l0.88,-0.1l1.06,-0.43l0.13,0.1l0.28,0.04l1.18,-0.4l0.14,-0.1l0.52,-0.67l0.63,-0.15l2.6,0.95l0.26,-0.03l0.38,-0.23l1.12,0.7l0.1,0.49l-1.31,0.57l-0.14,0.13l-1.18,2.14l-1.44,2.04l-1.85,0.55l-1.51,-0.13l-0.14,0.02l-1.92,0.82l-0.85,0.42l-1.91,-0.55l-1.83,-1.31l-0.74,-0.37l-0.44,-0.97l-0.26,-0.18Z\", \"name\": \"Hungary\"},\n        \"HN\": {\n            \"path\": \"M202.48,251.87l-0.33,-0.62l-0.18,-0.14l-0.5,-0.15l0.13,-0.76l-0.11,-0.28l-0.34,-0.28l-0.6,-0.23l-0.18,-0.01l-0.81,0.22l-0.16,-0.24l-0.72,-0.39l-0.51,-0.48l-0.12,-0.07l-0.31,-0.09l0.24,-0.3l0.04,-0.3l-0.16,-0.4l0.1,-0.28l1.14,-0.69l1.0,-0.86l0.09,0.04l0.3,-0.05l0.47,-0.39l0.49,-0.03l0.14,0.13l0.29,0.06l0.31,-0.1l1.16,0.22l1.24,-0.08l0.81,-0.28l0.29,-0.25l0.63,0.1l0.69,0.18l0.65,-0.06l0.49,-0.2l1.04,0.32l0.38,0.06l0.7,0.44l0.71,0.56l0.92,0.41l0.1,0.11l-0.11,-0.01l-0.23,0.09l-0.3,0.3l-0.76,0.29l-0.58,0.0l-0.15,0.04l-0.45,0.26l-0.31,-0.07l-0.37,-0.34l-0.28,-0.07l-0.26,0.07l-0.18,0.15l-0.23,0.43l-0.04,-0.0l-0.33,0.28l-0.03,0.4l-0.76,0.61l-0.45,0.3l-0.15,0.16l-0.51,-0.36l-0.41,0.06l-0.45,0.56l-0.41,-0.01l-0.59,0.06l-0.27,0.31l0.04,0.96l-0.07,0.0l-0.25,0.16l-0.24,0.45l-0.42,0.06Z\",\n            \"name\": \"Honduras\"\n        },\n        \"PR\": {\"path\": \"M254.95,238.31l1.15,0.21l0.2,0.23l-0.36,0.36l-1.76,-0.01l-1.2,0.07l-0.09,-0.69l0.17,-0.18l1.89,0.01Z\", \"name\": \"Puerto Rico\"},\n        \"PS\": {\"path\": \"M509.66,201.06l-0.0,1.44l-0.29,0.63l-0.59,0.19l0.02,-0.11l0.52,-0.31l-0.02,-0.53l-0.41,-0.2l0.36,-1.28l0.41,0.17Z\", \"name\": \"West Bank\"},\n        \"PT\": {\n            \"path\": \"M398.65,173.6l0.75,-0.63l0.7,-0.3l0.51,1.2l0.28,0.18l1.48,-0.0l0.2,-0.08l0.33,-0.3l1.16,0.08l0.52,1.11l-0.95,0.66l-0.13,0.24l-0.03,2.2l-0.33,0.35l-0.08,0.18l-0.08,1.17l-0.86,0.19l-0.2,0.44l0.93,1.64l-0.64,1.79l0.07,0.31l0.72,0.72l-0.24,0.56l-0.9,1.05l-0.07,0.26l0.17,0.77l-0.73,0.54l-1.18,-0.36l-0.16,-0.0l-0.85,0.21l0.31,-1.81l-0.23,-1.87l-0.23,-0.25l-0.99,-0.24l-0.49,-0.91l0.18,-1.72l0.93,-0.99l0.08,-0.16l0.17,-1.17l0.52,-1.76l-0.04,-1.36l-0.51,-1.14l-0.09,-0.8Z\",\n            \"name\": \"Portugal\"\n        },\n        \"PY\": {\"path\": \"M264.33,341.43l0.93,-2.96l0.07,-1.42l1.1,-2.1l4.19,-0.73l2.22,0.04l2.12,1.21l0.07,0.76l0.7,1.38l-0.16,3.48l0.24,0.31l2.64,0.5l0.19,-0.03l0.9,-0.45l1.47,0.62l0.38,0.64l0.23,2.35l0.3,1.07l0.25,0.21l0.93,0.12l0.16,-0.02l0.8,-0.37l0.61,0.33l-0.0,1.25l-0.33,1.53l-0.5,1.57l-0.39,2.26l-2.14,1.94l-1.85,0.4l-2.74,-0.4l-2.13,-0.62l2.26,-3.75l0.03,-0.24l-0.36,-1.18l-0.17,-0.19l-2.55,-1.03l-3.04,-1.95l-2.07,-0.43l-4.4,-4.12Z\", \"name\": \"Paraguay\"},\n        \"PA\": {\n            \"path\": \"M213.65,263.79l0.18,-0.43l0.02,-0.18l-0.06,-0.28l0.23,-0.18l-0.01,-0.48l-0.4,-0.29l-0.01,-0.62l0.57,-0.13l0.68,0.69l-0.04,0.39l0.26,0.33l1.0,0.11l0.27,-0.1l0.49,0.44l0.24,0.07l1.34,-0.22l1.04,-0.62l1.49,-0.5l0.86,-0.73l0.99,0.11l0.18,0.28l1.35,0.08l1.02,0.4l0.78,0.72l0.71,0.53l-0.1,0.12l-0.05,0.3l0.53,1.34l-0.28,0.44l-0.6,-0.13l-0.36,0.22l-0.2,0.76l-0.41,-0.36l-0.44,-1.12l0.49,-0.53l-0.14,-0.49l-0.51,-0.14l-0.41,-0.72l-0.11,-0.11l-1.25,-0.7l-0.19,-0.04l-1.1,0.16l-0.22,0.15l-0.47,0.81l-0.9,0.56l-0.49,0.08l-0.22,0.17l-0.25,0.52l0.05,0.32l0.93,1.07l-0.41,0.21l-0.29,0.3l-0.81,0.09l-0.36,-1.26l-0.53,-0.1l-0.21,0.28l-0.5,-0.09l-0.44,-0.88l-0.22,-0.16l-0.99,-0.16l-0.61,-0.28l-0.13,-0.03l-1.0,0.0Z\",\n            \"name\": \"Panama\"\n        },\n        \"PG\": {\n            \"path\": \"M808.4,298.6l0.62,0.46l1.19,1.56l1.04,0.77l-0.18,0.37l-0.42,0.15l-0.92,-0.82l-1.05,-1.53l-0.27,-0.96ZM804.09,296.06l-0.3,0.26l-0.36,-1.11l-0.66,-1.06l-2.55,-1.89l-1.42,-0.59l0.17,-0.15l1.16,0.6l0.85,0.55l1.01,0.58l0.97,1.02l0.9,0.76l0.24,1.03ZM796.71,297.99l0.15,0.82l0.34,0.24l1.43,-0.19l0.19,-0.11l0.68,-0.82l1.36,-0.87l0.13,-0.31l-0.21,-1.13l1.04,-0.03l0.3,0.25l-0.04,1.17l-0.74,1.34l-1.17,0.18l-0.22,0.15l-0.35,0.62l-2.51,1.13l-1.21,-0.0l-1.99,-0.71l-1.19,-0.58l0.07,-0.28l1.98,0.32l1.46,-0.2l0.24,-0.21l0.25,-0.79ZM789.24,303.52l0.11,0.15l2.19,1.62l1.6,2.62l0.27,0.14l1.09,-0.06l-0.07,0.77l0.23,0.32l1.23,0.27l-0.14,0.09l0.05,0.53l2.39,0.95l-0.11,0.28l-1.33,0.14l-0.51,-0.55l-0.18,-0.09l-4.59,-0.65l-1.87,-1.55l-1.38,-1.35l-1.28,-2.17l-0.16,-0.13l-3.27,-1.1l-0.19,0.0l-2.12,0.72l-1.58,0.85l-0.15,0.31l0.28,1.63l-1.65,0.73l-1.37,-0.4l-2.3,-0.09l-0.08,-15.65l3.95,1.57l4.58,1.42l1.67,1.25l1.32,1.19l0.36,1.39l0.19,0.21l4.06,1.51l0.39,0.85l-1.9,0.22l-0.25,0.39l0.55,1.68Z\",\n            \"name\": \"Papua New Guinea\"\n        },\n        \"PE\": {\n            \"path\": \"M246.44,329.21l-0.63,1.25l-1.05,0.54l-2.25,-1.33l-0.19,-0.93l-0.16,-0.21l-4.95,-2.58l-4.46,-2.79l-1.87,-1.52l-0.94,-1.91l0.33,-0.6l-0.01,-0.31l-2.11,-3.33l-2.46,-4.66l-2.36,-5.02l-1.04,-1.18l-0.77,-1.81l-0.08,-0.11l-1.95,-1.64l-1.54,-0.88l0.61,-0.85l0.02,-0.31l-1.15,-2.27l0.69,-1.56l1.59,-1.26l0.12,0.42l-0.56,0.47l-0.11,0.25l0.07,0.92l0.36,0.27l0.97,-0.19l0.85,0.23l0.99,1.19l0.41,0.05l1.42,-1.03l0.11,-0.16l0.46,-1.64l1.45,-2.06l2.92,-0.96l0.11,-0.07l2.73,-2.62l0.84,-1.72l0.02,-0.18l-0.3,-1.65l0.28,-0.1l1.49,1.06l0.77,1.14l0.1,0.09l1.08,0.6l1.43,2.55l0.21,0.15l1.86,0.31l0.18,-0.03l1.25,-0.6l0.77,0.37l0.17,0.03l1.4,-0.2l1.57,0.96l-1.45,2.29l0.23,0.46l0.63,0.05l0.66,0.7l-1.51,-0.08l-0.24,0.1l-0.27,0.31l-1.96,0.46l-2.95,1.74l-0.14,0.21l-0.17,1.1l-0.6,0.82l-0.05,0.23l0.21,1.13l-1.31,0.63l-0.17,0.27l0.0,0.91l-0.53,0.37l-0.1,0.37l1.04,2.27l1.31,1.46l-0.44,0.9l0.24,0.43l1.52,0.13l0.87,1.23l0.24,0.13l2.21,0.07l0.18,-0.06l1.55,-1.13l-0.14,3.22l0.23,0.3l1.14,0.29l0.16,-0.0l1.18,-0.36l1.97,3.71l-0.45,0.71l-0.04,0.14l-0.12,1.8l-0.05,2.07l-0.92,1.2l-0.03,0.31l0.38,0.8l-0.48,0.72l-0.02,0.3l1.01,2.02l-1.5,2.64Z\",\n            \"name\": \"Peru\"\n        },\n        \"PK\": {\n            \"path\": \"M609.08,187.76l1.66,1.21l0.71,2.11l0.2,0.19l3.62,1.01l-1.98,1.95l-2.65,0.4l-3.75,-0.68l-0.26,0.08l-1.23,1.22l-0.07,0.31l0.89,2.46l0.88,1.92l0.1,0.12l1.67,1.14l-1.8,1.35l-0.12,0.25l0.04,1.85l-2.35,2.67l-1.59,2.79l-2.5,2.72l-2.76,-0.2l-0.24,0.09l-2.76,2.83l0.04,0.45l1.54,1.13l0.27,1.94l0.09,0.17l1.34,1.29l0.4,1.83l-5.14,-0.01l-0.22,0.09l-1.53,1.63l-1.52,-0.56l-0.76,-1.88l-1.93,-2.03l-0.25,-0.09l-4.6,0.5l-4.05,0.05l-3.1,0.33l0.77,-2.53l3.48,-1.33l0.19,-0.33l-0.21,-1.24l-0.19,-0.23l-1.01,-0.37l-0.06,-2.18l-0.17,-0.26l-2.32,-1.16l-0.96,-1.57l-0.56,-0.65l3.16,1.05l0.14,0.01l2.45,-0.4l1.44,0.33l0.3,-0.1l0.4,-0.47l1.58,0.22l0.14,-0.01l3.25,-1.14l0.2,-0.27l0.08,-2.23l1.23,-1.38l1.73,0.0l0.28,-0.2l0.22,-0.61l1.68,-0.32l0.86,0.24l0.27,-0.05l0.98,-0.78l0.11,-0.26l-0.13,-1.57l0.96,-1.52l1.51,-0.67l0.14,-0.41l-0.74,-1.4l1.86,0.07l0.26,-0.13l0.69,-1.01l0.05,-0.2l-0.09,-0.94l1.14,-1.09l0.09,-0.28l-0.29,-1.41l-0.51,-1.07l1.23,-1.05l2.6,-0.58l2.86,-0.33l1.33,-0.54l1.3,-0.29Z\",\n            \"name\": \"Pakistan\"\n        },\n        \"PH\": {\n            \"path\": \"M737.11,263.82l0.25,1.66l0.14,1.34l-0.54,1.46l-0.64,-1.79l-0.5,-0.1l-1.17,1.28l-0.05,0.32l0.74,1.71l-0.49,0.81l-2.6,-1.28l-0.61,-1.57l0.68,-1.07l-0.07,-0.4l-1.59,-1.19l-0.42,0.06l-0.69,0.91l-1.01,-0.08l-0.21,0.06l-1.58,1.2l-0.17,-0.3l0.87,-1.88l1.48,-0.66l1.18,-0.81l0.71,0.92l0.34,0.1l1.9,-0.69l0.18,-0.18l0.34,-0.94l1.57,-0.06l0.29,-0.32l-0.1,-1.38l1.41,0.83l0.36,2.06ZM734.94,254.42l0.56,2.24l-1.41,-0.49l-0.4,0.3l0.07,0.94l0.51,1.3l-0.54,0.26l-0.08,-1.34l-0.25,-0.28l-0.56,-0.1l-0.23,-0.91l1.03,0.14l0.34,-0.31l-0.03,-0.96l-0.06,-0.18l-1.14,-1.44l1.62,0.04l0.57,0.78ZM724.68,238.33l1.48,0.71l0.33,-0.04l0.44,-0.38l0.05,0.13l-0.37,0.97l0.01,0.23l0.81,1.75l-0.59,1.92l-1.37,0.79l-0.14,0.2l-0.39,2.07l0.01,0.14l0.56,2.04l0.23,0.21l1.33,0.28l0.14,-0.0l1.0,-0.27l2.82,1.28l-0.2,1.16l0.12,0.29l0.66,0.5l-0.13,0.56l-1.54,-0.99l-0.89,-1.29l-0.49,0.0l-0.44,0.65l-1.34,-1.28l-0.26,-0.08l-2.18,0.36l-0.96,-0.44l0.09,-0.72l0.69,-0.57l-0.01,-0.47l-0.75,-0.59l-0.47,0.14l-0.15,0.43l-0.86,-1.02l-0.34,-1.02l-0.07,-1.74l0.49,0.41l0.49,-0.21l0.26,-3.99l0.73,-2.1l1.23,0.0ZM731.12,258.92l-0.82,0.75l-0.83,1.64l-0.52,0.5l-1.17,-1.33l0.36,-0.47l0.62,-0.7l0.07,-0.15l0.24,-1.35l0.73,-0.08l-0.31,1.29l0.16,0.34l0.37,-0.09l1.21,-1.6l-0.12,1.24ZM726.66,255.58l0.85,0.45l0.14,0.03l1.28,-0.0l-0.03,0.62l-1.04,0.96l-1.15,0.55l-0.05,-0.71l0.17,-1.26l-0.01,-0.13l-0.16,-0.51ZM724.92,252.06l-0.45,1.5l-0.7,-0.83l-0.95,-1.43l1.44,0.06l0.67,0.7ZM717.48,261.28l-1.87,1.35l0.21,-0.3l1.81,-1.57l1.5,-1.75l0.97,-1.84l0.23,1.08l-1.56,1.33l-1.29,1.7Z\",\n            \"name\": \"Philippines\"\n        },\n        \"PL\": {\n            \"path\": \"M458.8,144.25l-0.96,-1.98l0.18,-1.06l-0.01,-0.15l-0.62,-1.8l-0.82,-1.11l0.56,-0.73l0.05,-0.28l-0.51,-1.51l1.48,-0.87l3.88,-1.58l3.06,-1.14l2.23,0.52l0.15,0.66l0.29,0.23l2.4,0.04l3.11,0.39l4.56,-0.05l1.12,0.32l0.51,0.89l0.1,1.45l0.03,0.12l0.66,1.23l-0.01,1.08l-1.33,0.61l-0.14,0.41l0.74,1.5l0.07,1.53l1.22,2.79l-0.19,0.66l-1.09,0.33l-0.14,0.09l-2.27,2.72l-0.04,0.31l0.35,0.8l-2.22,-1.16l-0.21,-0.02l-1.72,0.44l-1.1,-0.31l-0.21,0.02l-1.3,0.61l-1.11,-1.02l-0.32,-0.05l-0.81,0.35l-1.15,-1.61l-0.21,-0.12l-1.65,-0.17l-0.19,-0.82l-0.23,-0.23l-1.72,-0.37l-0.34,0.17l-0.25,0.56l-0.88,-0.44l0.12,-0.69l-0.25,-0.35l-1.78,-0.27l-1.08,-0.97Z\",\n            \"name\": \"Poland\"\n        },\n        \"ZM\": {\n            \"path\": \"M502.81,308.32l1.09,1.04l0.58,1.94l-0.39,0.66l-0.5,2.05l-0.0,0.14l0.45,1.95l-0.69,0.77l-0.06,0.11l-0.76,2.37l0.15,0.36l0.62,0.31l-6.85,1.9l-0.22,0.33l0.2,1.54l-1.62,0.3l-0.12,0.05l-1.43,1.02l-0.11,0.15l-0.25,0.73l-0.73,0.17l-0.14,0.08l-2.18,2.12l-1.33,1.6l-0.65,0.05l-0.83,-0.29l-2.75,-0.28l-0.24,-0.1l-0.15,-0.27l-0.99,-0.58l-0.12,-0.04l-1.73,-0.14l-1.88,0.54l-1.5,-1.48l-1.61,-2.01l0.11,-7.73l4.92,0.03l0.29,-0.37l-0.19,-0.79l0.34,-0.86l0.0,-0.21l-0.41,-1.11l0.26,-1.14l-0.01,-0.16l-0.12,-0.36l0.18,0.01l0.1,0.56l0.31,0.25l1.14,-0.06l1.44,0.21l0.76,1.05l0.19,0.12l2.01,0.35l0.19,-0.03l1.24,-0.65l0.44,1.03l0.22,0.18l1.81,0.34l0.85,0.99l1.02,1.39l0.24,0.12l1.92,0.02l0.3,-0.32l-0.21,-2.74l-0.47,-0.23l-0.53,0.36l-1.58,-0.89l-0.51,-0.34l0.29,-2.36l0.44,-2.99l-0.03,-0.18l-0.5,-0.99l0.61,-1.38l0.53,-0.24l3.26,-0.41l0.89,0.23l1.01,0.62l1.04,0.44l1.6,0.43l1.35,0.72Z\",\n            \"name\": \"Zambia\"\n        },\n        \"EE\": {\"path\": \"M482.19,120.88l0.23,-1.68l-0.43,-0.31l-0.75,0.37l-1.34,-1.1l-0.18,-1.75l2.92,-0.95l3.07,-0.53l2.66,0.6l2.48,-0.1l0.18,0.31l-1.65,1.96l-0.06,0.26l0.71,3.25l-0.88,0.94l-1.85,-0.01l-2.08,-1.3l-1.14,-0.47l-0.2,-0.01l-1.69,0.51Z\", \"name\": \"Estonia\"},\n        \"EG\": {\n            \"path\": \"M508.07,208.8l-0.66,1.06l-0.53,2.03l-0.64,1.32l-0.32,0.26l-1.74,-1.85l-1.77,-3.86l-0.48,-0.09l-0.26,0.25l-0.07,0.32l1.04,2.88l1.55,2.76l1.89,4.18l0.94,1.48l0.83,1.54l2.08,2.73l-0.3,0.28l-0.1,0.23l0.08,1.72l0.11,0.22l2.91,2.37l-28.78,0.0l0.0,-19.06l-0.73,-2.2l0.61,-1.59l0.0,-0.2l-0.34,-1.04l0.73,-1.08l3.13,-0.04l2.36,0.72l2.48,0.81l1.15,0.43l0.23,-0.01l1.93,-0.87l1.02,-0.78l2.08,-0.21l1.59,0.31l0.62,1.24l0.52,0.03l0.46,-0.71l1.86,0.59l1.95,0.16l0.17,-0.04l0.92,-0.52l1.48,4.24Z\",\n            \"name\": \"Egypt\"\n        },\n        \"ZA\": {\n            \"path\": \"M467.06,373.27l-0.13,-0.29l0.01,-1.58l-0.02,-0.12l-0.71,-1.64l0.59,-0.37l0.14,-0.26l-0.07,-2.13l-0.05,-0.15l-1.63,-2.58l-1.25,-2.31l-1.71,-3.37l0.88,-0.98l0.7,0.52l0.39,1.08l0.23,0.19l1.1,0.19l1.55,0.51l0.14,0.01l1.35,-0.2l0.11,-0.04l2.24,-1.39l0.14,-0.25l0.0,-9.4l0.16,0.09l1.39,2.38l-0.22,1.53l0.04,0.19l0.56,0.94l0.3,0.14l1.79,-0.27l0.16,-0.08l1.23,-1.18l1.17,-0.79l0.1,-0.12l0.57,-1.19l1.02,-0.52l0.9,0.28l1.16,0.73l0.14,0.05l2.04,0.13l0.13,-0.02l1.6,-0.62l0.18,-0.19l0.63,-1.93l1.18,-0.19l0.19,-0.12l0.78,-1.05l0.81,-1.71l2.18,-1.91l3.44,-1.88l0.89,0.02l1.17,0.43l0.21,-0.0l0.76,-0.29l1.07,0.21l1.15,3.55l0.63,1.82l-0.44,2.9l0.1,0.52l-0.74,-0.29l-0.18,-0.01l-0.72,0.19l-0.21,0.2l-0.22,0.74l-0.66,0.97l-0.05,0.18l0.02,0.93l0.09,0.21l1.49,1.46l0.27,0.08l1.47,-0.29l0.22,-0.18l0.43,-1.01l1.29,0.02l-0.51,1.63l-0.29,2.2l-0.59,1.12l-2.2,1.78l-1.06,1.39l-0.72,1.44l-1.39,1.93l-2.81,2.84l-1.75,1.65l-1.85,1.24l-2.55,1.06l-1.23,0.14l-0.24,0.18l-0.22,0.54l-1.27,-0.35l-0.2,0.01l-1.15,0.5l-2.62,-0.52l-0.12,0.0l-1.46,0.33l-0.98,-0.14l-0.16,0.02l-2.55,1.1l-2.11,0.44l-1.59,1.07l-0.93,0.06l-0.97,-0.92l-0.19,-0.08l-0.72,-0.04l-1.0,-1.16l-0.25,0.05ZM493.72,359.24l-1.12,-0.86l-0.31,-0.03l-1.23,0.59l-1.36,1.07l-1.39,1.78l0.01,0.38l1.88,2.11l0.31,0.09l0.9,-0.27l0.18,-0.15l0.4,-0.77l1.28,-0.39l0.18,-0.16l0.42,-0.88l0.76,-1.32l-0.05,-0.37l-0.87,-0.82Z\",\n            \"name\": \"South Africa\"\n        },\n        \"EC\": {\n            \"path\": \"M220.2,293.48l1.25,-1.76l0.02,-0.31l-0.54,-1.09l-0.5,-0.06l-0.78,0.94l-1.03,-0.75l0.33,-0.46l0.05,-0.23l-0.38,-2.04l0.66,-0.28l0.17,-0.19l0.45,-1.52l0.93,-1.58l0.04,-0.2l-0.13,-0.78l1.19,-0.47l1.57,-0.91l2.35,1.34l0.17,0.04l0.28,-0.02l0.52,0.91l0.21,0.15l2.12,0.35l0.2,-0.03l0.55,-0.31l1.08,0.73l0.97,0.54l0.31,1.67l-0.71,1.49l-2.64,2.54l-2.95,0.97l-0.15,0.11l-1.53,2.18l-0.49,1.68l-1.1,0.8l-0.87,-1.05l-0.15,-0.1l-1.01,-0.27l-0.13,-0.0l-0.7,0.14l-0.03,-0.43l0.6,-0.5l0.1,-0.31l-0.26,-0.91Z\",\n            \"name\": \"Ecuador\"\n        },\n        \"AL\": {\"path\": \"M470.27,171.7l0.38,0.19l0.45,-0.18l0.4,0.61l0.11,0.1l0.46,0.24l0.13,0.87l-0.3,0.95l-0.0,0.17l0.36,1.28l0.12,0.17l0.9,0.63l-0.03,0.44l-0.67,0.35l-0.16,0.22l-0.14,0.88l-0.96,1.18l-0.06,-0.03l-0.04,-0.48l-0.12,-0.22l-1.28,-0.92l-0.19,-1.25l0.2,-1.96l0.33,-0.89l-0.06,-0.3l-0.36,-0.41l-0.13,-0.75l0.66,-0.9Z\", \"name\": \"Albania\"},\n        \"AO\": {\n            \"path\": \"M461.62,299.93l0.55,1.67l0.73,1.54l1.56,2.18l0.28,0.12l1.66,-0.2l0.81,-0.34l1.28,0.33l0.33,-0.14l0.39,-0.67l0.56,-1.3l1.37,-0.09l0.27,-0.21l0.07,-0.23l0.67,-0.01l-0.13,0.53l0.29,0.37l2.74,-0.02l0.04,1.29l0.03,0.13l0.46,0.87l-0.35,1.52l0.18,1.55l0.07,0.16l0.75,0.85l-0.13,2.89l0.41,0.29l0.56,-0.21l1.11,0.05l1.5,-0.37l0.9,0.12l0.18,0.53l-0.27,1.15l0.01,0.17l0.4,1.08l-0.33,0.85l-0.01,0.18l0.12,0.51l-4.83,-0.03l-0.3,0.3l-0.12,8.13l0.07,0.19l1.69,2.1l1.27,1.25l-4.03,0.92l-5.93,-0.36l-1.66,-1.19l-0.18,-0.06l-10.15,0.11l-0.34,0.13l-1.35,-1.05l-0.17,-0.06l-1.62,-0.08l-1.6,0.45l-0.88,0.36l-0.17,-1.2l0.34,-2.19l0.85,-2.32l0.14,-1.13l0.79,-2.24l0.57,-1.0l1.42,-1.64l0.82,-1.15l0.05,-0.13l0.26,-1.88l-0.13,-1.51l-0.07,-0.16l-0.72,-0.87l-1.23,-2.91l0.09,-0.37l0.73,-0.95l0.05,-0.27l-1.27,-4.12l-1.19,-1.54l0.1,-0.2l0.86,-0.28l0.78,0.03l0.83,-0.29l7.12,0.03ZM451.81,298.94l-0.17,0.07l-0.5,-1.42l0.85,-0.92l0.53,-0.29l0.48,0.44l-0.56,0.32l-0.1,0.1l-0.41,0.65l-0.05,0.14l-0.07,0.91Z\",\n            \"name\": \"Angola\"\n        },\n        \"KZ\": {\n            \"path\": \"M598.42,172.08l-1.37,0.54l-3.3,2.09l-0.11,0.12l-1.01,1.97l-0.56,0.01l-0.6,-1.24l-0.26,-0.17l-2.95,-0.09l-0.46,-2.22l-0.29,-0.24l-0.91,-0.02l0.17,-2.72l-0.12,-0.26l-3.0,-2.22l-0.2,-0.06l-4.29,0.24l-2.8,0.42l-2.36,-2.7l-6.4,-3.65l-0.23,-0.03l-6.45,1.83l-0.22,0.29l0.1,10.94l-0.84,0.1l-1.65,-2.21l-0.11,-0.09l-1.69,-0.84l-0.2,-0.02l-2.84,0.63l-0.14,0.07l-0.71,0.64l-0.02,-0.11l0.57,-1.17l0.0,-0.26l-0.48,-1.05l-0.17,-0.16l-2.78,-0.99l-1.08,-2.62l-0.13,-0.15l-1.24,-0.7l-0.04,-0.48l2.07,0.25l0.34,-0.29l0.09,-2.03l1.84,-0.44l2.12,0.45l0.36,-0.25l0.45,-3.04l-0.45,-2.06l-0.31,-0.23l-2.44,0.15l-2.07,-0.75l-0.23,0.01l-2.88,1.38l-2.21,0.62l-0.96,-0.38l0.22,-1.39l-0.06,-0.23l-1.6,-2.12l-0.25,-0.12l-1.72,0.08l-1.87,-1.91l1.33,-2.24l-0.06,-0.38l-0.55,-0.5l1.72,-3.08l2.3,1.7l0.48,-0.2l0.29,-2.26l4.99,-3.48l3.76,-0.08l5.46,2.27l2.96,1.33l0.26,-0.01l2.59,-1.36l3.82,-0.06l3.13,1.67l0.38,-0.09l0.63,-0.85l3.36,0.14l0.29,-0.19l0.63,-1.57l-0.13,-0.37l-3.64,-2.05l2.0,-1.36l0.1,-0.38l-0.32,-0.62l2.09,-0.76l0.13,-0.47l-1.65,-2.13l0.89,-0.91l9.27,-1.18l0.13,-0.05l1.17,-0.82l6.2,-1.27l2.26,-1.43l4.19,0.7l0.74,3.39l0.38,0.22l2.52,-0.81l2.9,1.06l-0.18,1.63l0.32,0.33l2.52,-0.23l5.0,-2.58l0.03,0.39l3.16,2.62l5.57,8.48l0.49,0.02l1.18,-1.53l3.22,1.78l0.21,0.03l3.5,-0.83l1.21,0.52l1.16,1.82l0.15,0.12l1.67,0.61l1.01,1.32l0.28,0.11l3.04,-0.41l1.1,1.64l-1.68,1.89l-1.97,0.28l-0.26,0.29l-0.12,3.09l-1.2,1.23l-4.81,-1.01l-0.35,0.2l-1.77,5.51l-1.14,0.62l-4.92,1.23l-0.2,0.41l2.14,5.06l-1.45,0.67l-0.17,0.31l0.15,1.28l-1.05,-0.3l-1.21,-1.04l-0.17,-0.07l-3.73,-0.32l-4.15,-0.08l-0.92,0.31l-3.46,-1.24l-0.22,0.01l-1.42,0.63l-0.17,0.21l-0.32,1.49l-3.82,-0.97l-0.15,0.0l-1.65,0.43l-0.2,0.17l-0.51,1.21Z\",\n            \"name\": \"Kazakhstan\"\n        },\n        \"ET\": {\n            \"path\": \"M516.0,247.63l1.21,0.92l0.3,0.04l1.3,-0.53l0.46,0.41l0.19,0.08l1.65,0.03l2.05,0.96l0.67,0.88l1.07,0.79l1.0,1.45l0.7,0.68l-0.72,0.92l-0.85,1.19l-0.04,0.25l0.19,0.67l0.04,0.74l0.29,0.28l1.4,0.04l0.55,-0.15l0.23,0.19l-0.41,0.67l0.01,0.32l0.92,1.39l0.93,1.23l0.99,0.94l0.1,0.06l8.19,2.99l1.51,0.01l-6.51,6.95l-3.14,0.11l-0.18,0.06l-2.15,1.71l-1.51,0.04l-0.22,0.1l-0.6,0.69l-1.46,-0.0l-0.93,-0.78l-0.32,-0.04l-2.29,1.05l-0.12,0.1l-0.64,0.9l-1.44,-0.17l-0.51,-0.26l-0.17,-0.03l-0.56,0.07l-0.68,-0.02l-3.1,-2.08l-0.17,-0.05l-1.62,0.0l-0.68,-0.65l0.0,-1.28l-0.21,-0.29l-1.19,-0.38l-1.42,-2.63l-0.13,-0.12l-1.05,-0.53l-0.46,-1.0l-1.27,-1.23l-0.17,-0.08l-1.08,-0.13l0.53,-0.9l1.17,-0.05l0.26,-0.17l0.37,-0.77l0.03,-0.14l-0.03,-2.23l0.7,-2.49l1.08,-0.65l0.14,-0.19l0.24,-1.0l1.03,-1.85l1.47,-1.22l0.09,-0.12l1.02,-2.51l0.36,-1.96l2.62,0.48l0.33,-0.18l0.63,-1.55Z\",\n            \"name\": \"Ethiopia\"\n        },\n        \"ZW\": {\n            \"path\": \"M498.95,341.2l-1.16,-0.23l-0.16,0.01l-0.74,0.28l-1.11,-0.41l-1.02,-0.04l-1.52,-1.13l-0.12,-0.05l-1.79,-0.37l-0.65,-1.46l-0.01,-0.86l-0.22,-0.29l-0.99,-0.26l-2.74,-2.77l-0.77,-1.46l-0.52,-0.5l-0.72,-1.54l2.24,0.23l0.78,0.28l0.12,0.02l0.85,-0.06l0.21,-0.11l1.38,-1.66l2.11,-2.05l0.81,-0.18l0.22,-0.2l0.27,-0.8l1.29,-0.93l1.53,-0.28l0.11,0.66l0.3,0.25l2.02,-0.05l1.04,0.48l0.5,0.59l0.18,0.1l1.13,0.18l1.11,0.7l0.01,3.06l-0.49,1.82l-0.11,1.94l0.03,0.16l0.35,0.68l-0.24,1.3l-0.27,0.17l-0.12,0.15l-0.64,1.83l-2.49,2.8Z\",\n            \"name\": \"Zimbabwe\"\n        },\n        \"ES\": {\n            \"path\": \"M398.67,172.8l0.09,-1.45l-0.06,-0.2l-0.82,-1.05l3.16,-1.96l3.01,0.54l3.33,-0.02l2.64,0.52l2.14,-0.15l3.9,0.1l0.91,1.08l0.14,0.09l4.61,1.38l0.26,-0.04l0.77,-0.55l2.66,1.29l0.17,0.03l2.59,-0.35l0.1,1.28l-2.2,1.85l-3.13,0.62l-0.23,0.23l-0.21,0.92l-1.54,1.68l-0.97,2.4l0.02,0.26l0.85,1.46l-1.27,1.14l-0.09,0.14l-0.5,1.73l-1.73,0.53l-0.15,0.1l-1.68,2.1l-3.03,0.04l-2.38,-0.05l-0.17,0.05l-1.57,1.01l-0.9,1.01l-0.96,-0.19l-0.82,-0.86l-0.69,-1.6l-0.22,-0.18l-2.14,-0.41l-0.13,-0.62l0.83,-0.97l0.39,-0.86l-0.06,-0.33l-0.73,-0.73l0.63,-1.74l-0.02,-0.25l-0.8,-1.41l0.69,-0.15l0.23,-0.27l0.09,-1.29l0.33,-0.36l0.08,-0.2l0.03,-2.16l1.03,-0.72l0.1,-0.37l-0.7,-1.5l-0.25,-0.17l-1.46,-0.11l-0.22,0.07l-0.34,0.3l-1.17,0.0l-0.55,-1.29l-0.39,-0.16l-1.02,0.44l-0.45,0.36Z\",\n            \"name\": \"Spain\"\n        },\n        \"ER\": {\"path\": \"M527.15,253.05l-0.77,-0.74l-1.01,-1.47l-1.14,-0.86l-0.62,-0.84l-0.11,-0.09l-2.18,-1.02l-0.12,-0.03l-1.61,-0.03l-0.52,-0.46l-0.31,-0.05l-1.31,0.54l-1.38,-1.06l-0.46,0.12l-0.69,1.68l-2.49,-0.46l-0.2,-0.76l1.06,-3.69l0.24,-1.65l0.66,-0.66l1.76,-0.4l0.16,-0.1l0.97,-1.13l1.24,2.55l0.68,2.34l0.09,0.14l1.4,1.27l3.39,2.4l1.37,1.43l2.14,2.34l0.94,0.6l-0.32,0.26l-0.85,-0.17Z\", \"name\": \"Eritrea\"},\n        \"ME\": {\"path\": \"M469.05,172.9l-0.57,-0.8l-0.1,-0.09l-0.82,-0.46l0.16,-0.33l0.35,-1.57l0.72,-0.62l0.27,-0.16l0.48,0.38l0.35,0.4l0.12,0.08l0.79,0.32l0.66,0.43l-0.43,0.62l-0.28,0.11l-0.07,-0.25l-0.53,-0.1l-1.09,1.49l-0.05,0.23l0.06,0.32Z\", \"name\": \"Montenegro\"},\n        \"MD\": {\"path\": \"M488.2,153.75l0.14,-0.11l1.49,-0.28l1.75,0.95l1.06,0.14l0.92,0.7l-0.15,0.9l0.15,0.31l0.8,0.46l0.33,1.2l0.09,0.14l0.72,0.66l-0.11,0.28l0.1,0.33l-0.06,0.02l-1.25,-0.08l-0.17,-0.29l-0.39,-0.12l-0.52,0.25l-0.16,0.36l0.13,0.42l-0.6,0.88l-0.43,1.03l-0.22,0.12l-0.32,-1.0l0.25,-1.34l-0.08,-1.38l-0.06,-0.17l-1.43,-1.87l-0.81,-1.36l-0.78,-0.95l-0.12,-0.09l-0.29,-0.12Z\", \"name\": \"Moldova\"},\n        \"MG\": {\n            \"path\": \"M544.77,316.45l0.64,1.04l0.6,1.62l0.4,3.04l0.63,1.21l-0.22,1.07l-0.15,0.26l-0.59,-1.05l-0.52,-0.01l-0.47,0.76l-0.04,0.23l0.46,1.84l-0.19,0.92l-0.61,0.53l-0.1,0.21l-0.16,2.15l-0.97,2.98l-1.24,3.59l-1.55,4.97l-0.96,3.67l-1.08,2.93l-1.94,0.61l-2.05,1.06l-3.2,-1.53l-0.62,-1.26l-0.18,-2.39l-0.87,-2.07l-0.22,-1.8l0.4,-1.69l1.01,-0.4l0.19,-0.28l0.01,-0.79l1.15,-1.91l0.04,-0.11l0.23,-1.66l-0.03,-0.17l-0.57,-1.21l-0.46,-1.58l-0.19,-2.25l0.82,-1.36l0.33,-1.51l1.11,-0.1l1.4,-0.53l0.9,-0.45l1.03,-0.03l0.21,-0.09l1.41,-1.45l2.12,-1.65l0.75,-1.29l0.03,-0.24l-0.17,-0.56l0.53,0.15l0.32,-0.1l1.38,-1.77l0.06,-0.18l0.04,-1.44l0.54,-0.74l0.62,0.77Z\",\n            \"name\": \"Madagascar\"\n        },\n        \"MA\": {\n            \"path\": \"M378.66,230.13l0.07,-0.75l0.93,-0.72l0.82,-1.37l0.04,-0.21l-0.14,-0.8l0.8,-1.74l1.33,-1.61l0.79,-0.4l0.14,-0.15l0.66,-1.55l0.08,-1.46l0.83,-1.52l1.6,-0.94l0.11,-0.11l1.56,-2.71l1.2,-0.99l2.24,-0.29l0.17,-0.08l1.95,-1.83l1.3,-0.77l2.09,-2.28l0.07,-0.26l-0.61,-3.34l0.92,-2.3l0.33,-1.44l1.52,-1.79l2.48,-1.27l1.86,-1.16l0.1,-0.11l1.67,-2.93l0.72,-1.59l1.54,0.01l1.43,1.14l0.21,0.06l2.33,-0.19l2.55,0.62l0.97,0.03l0.83,1.6l0.15,1.71l0.86,2.96l0.09,0.14l0.5,0.45l-0.31,0.73l-3.11,0.44l-0.16,0.07l-1.07,0.97l-1.36,0.23l-0.25,0.28l-0.1,1.85l-2.74,1.02l-0.14,0.11l-0.9,1.3l-1.93,0.69l-2.56,0.44l-4.04,2.01l-0.17,0.27l0.02,2.91l-0.08,0.0l-0.3,0.31l0.05,1.15l-1.25,0.07l-0.16,0.06l-0.73,0.55l-0.98,0.0l-0.85,-0.33l-0.15,-0.02l-2.11,0.29l-0.24,0.19l-0.76,1.95l-0.63,0.16l-0.21,0.19l-1.15,3.29l-3.42,2.81l-0.1,0.17l-0.81,3.57l-0.98,1.12l-0.3,0.85l-5.13,0.19Z\",\n            \"name\": \"Morocco\"\n        },\n        \"UZ\": {\n            \"path\": \"M587.83,186.48l0.06,-1.46l-0.19,-0.29l-3.31,-1.24l-2.57,-1.4l-1.63,-1.38l-2.79,-1.98l-1.2,-2.98l-0.12,-0.14l-0.84,-0.54l-0.18,-0.05l-2.61,0.13l-0.76,-0.48l-0.25,-2.25l-0.17,-0.24l-3.37,-1.6l-0.32,0.04l-2.08,1.73l-2.11,1.02l-0.16,0.35l0.31,1.14l-2.14,0.03l-0.09,-10.68l6.1,-1.74l6.25,3.57l2.36,2.72l0.27,0.1l2.92,-0.44l4.17,-0.23l2.78,2.06l-0.18,2.87l0.29,0.32l0.98,0.02l0.46,2.22l0.28,0.24l3.0,0.09l0.61,1.25l0.28,0.17l0.93,-0.02l0.26,-0.16l1.06,-2.06l3.21,-2.03l1.3,-0.5l0.19,0.08l-1.75,1.62l0.05,0.48l1.85,1.12l0.27,0.02l1.65,-0.69l2.4,1.27l-2.69,1.79l-1.79,-0.27l-0.89,0.06l-0.22,-0.52l0.48,-1.26l-0.34,-0.4l-3.35,0.69l-0.22,0.18l-0.78,1.87l-1.07,1.47l-1.93,-0.13l-0.29,0.16l-0.65,1.29l0.16,0.42l1.69,0.64l0.48,1.91l-1.25,2.6l-1.64,-0.53l-1.18,-0.03Z\",\n            \"name\": \"Uzbekistan\"\n        },\n        \"MM\": {\n            \"path\": \"M670.1,233.39l-1.46,1.11l-1.68,0.11l-0.26,0.19l-1.1,2.7l-0.95,0.42l-0.14,0.42l1.21,2.27l1.61,1.92l0.94,1.55l-0.82,1.99l-0.77,0.42l-0.13,0.39l0.64,1.35l1.62,1.97l0.26,1.32l-0.04,1.15l0.02,0.13l0.92,2.18l-1.3,2.23l-0.79,1.69l-0.1,-0.77l0.74,-1.87l-0.02,-0.26l-0.8,-1.42l0.2,-2.68l-0.06,-0.2l-0.98,-1.27l-0.8,-2.98l-0.45,-3.22l-1.11,-2.22l-0.45,-0.1l-1.64,1.28l-2.74,1.76l-1.26,-0.2l-1.27,-0.49l0.79,-2.93l0.0,-0.14l-0.52,-2.42l-1.93,-2.97l0.26,-0.8l-0.22,-0.39l-1.37,-0.31l-1.65,-1.98l-0.12,-1.5l0.41,0.19l0.42,-0.26l0.05,-1.7l1.08,-0.54l0.16,-0.34l-0.24,-1.0l0.5,-0.79l0.05,-0.15l0.08,-2.35l1.58,0.49l0.36,-0.15l1.12,-2.19l0.15,-1.34l1.35,-2.18l0.04,-0.17l-0.07,-1.35l2.97,-1.71l1.67,0.45l0.38,-0.33l-0.18,-1.46l0.7,-0.4l0.15,-0.32l-0.13,-0.72l0.94,-0.13l0.74,1.41l0.11,0.12l0.95,0.56l0.07,1.89l-0.09,2.08l-2.28,2.15l-0.09,0.19l-0.3,3.15l0.35,0.32l2.37,-0.39l0.53,2.17l0.2,0.21l1.3,0.42l-0.63,1.9l0.14,0.36l1.86,0.99l1.1,0.49l0.24,0.0l1.45,-0.6l0.04,0.51l-2.01,1.6l-0.56,0.96l-1.34,0.56Z\",\n            \"name\": \"Myanmar\"\n        },\n        \"ML\": {\n            \"path\": \"M390.79,248.2l0.67,-0.37l0.14,-0.18l0.36,-1.31l0.51,-0.04l1.68,0.69l0.21,0.0l1.34,-0.48l0.89,0.16l0.3,-0.13l0.29,-0.44l9.89,-0.04l0.29,-0.21l0.56,-1.8l-0.11,-0.33l-0.33,-0.24l-2.37,-22.1l3.41,-0.04l8.37,5.73l8.38,5.68l0.56,1.15l0.14,0.14l1.56,0.75l0.99,0.36l0.03,1.45l0.33,0.29l2.45,-0.22l0.01,5.52l-1.3,1.64l-0.06,0.15l-0.18,1.37l-1.99,0.36l-3.4,0.22l-0.19,0.09l-0.85,0.83l-1.48,0.09l-1.49,0.01l-0.54,-0.43l-0.26,-0.05l-1.38,0.36l-2.39,1.08l-0.13,0.12l-0.44,0.73l-1.88,1.11l-0.11,0.12l-0.3,0.57l-0.86,0.42l-1.1,-0.31l-0.28,0.07l-0.69,0.62l-0.09,0.16l-0.35,1.66l-1.93,2.04l-0.08,0.23l0.05,0.76l-0.63,0.99l-0.04,0.19l0.14,1.23l-0.81,0.29l-0.32,0.17l-0.27,-0.75l-0.39,-0.18l-0.65,0.26l-0.36,-0.04l-0.29,0.14l-0.37,0.6l-1.69,-0.02l-0.63,-0.34l-0.32,0.02l-0.12,0.09l-0.47,-0.45l0.1,-0.6l-0.09,-0.27l-0.31,-0.3l-0.33,-0.05l-0.05,0.02l0.02,-0.21l0.46,-0.59l-0.02,-0.39l-0.99,-1.02l-0.34,-0.74l-0.56,-0.56l-0.17,-0.09l-0.5,-0.07l-0.19,0.04l-0.58,0.35l-0.79,0.33l-0.65,0.51l-0.85,-0.16l-0.63,-0.59l-0.14,-0.07l-0.41,-0.08l-0.2,0.03l-0.59,0.31l-0.07,0.0l-0.1,-0.63l0.11,-0.85l-0.21,-0.98l-0.11,-0.17l-0.86,-0.66l-0.45,-1.34l-0.1,-1.36Z\",\n            \"name\": \"Mali\"\n        },\n        \"MN\": {\n            \"path\": \"M641.06,150.59l2.41,-0.53l4.76,-2.8l3.67,-1.49l2.06,0.96l0.12,0.03l2.5,0.05l1.59,1.45l0.19,0.08l2.47,0.12l3.59,0.81l0.27,-0.07l2.43,-2.28l0.06,-0.36l-0.93,-1.77l2.33,-3.1l2.66,1.3l2.26,0.39l2.75,0.8l0.44,2.3l0.19,0.22l3.56,1.38l0.18,0.01l2.35,-0.6l3.1,-0.42l2.4,0.41l2.37,1.52l1.49,1.63l0.23,0.1l2.29,-0.03l3.13,0.52l0.15,-0.01l2.28,-0.79l3.27,-0.53l0.11,-0.04l3.56,-2.23l1.31,0.31l1.26,1.05l0.22,0.07l2.45,-0.22l-0.98,1.96l-1.77,3.21l-0.01,0.28l0.64,1.31l0.35,0.16l1.35,-0.38l2.4,0.48l0.22,-0.04l1.78,-1.09l1.82,0.92l2.11,2.07l-0.17,0.68l-1.79,-0.31l-3.74,0.45l-1.85,0.96l-1.78,2.01l-3.74,1.18l-2.46,1.61l-2.45,-0.6l-1.42,-0.28l-0.31,0.13l-1.31,1.99l0.0,0.33l0.78,1.15l0.3,0.74l-1.58,0.93l-1.75,1.59l-2.83,1.03l-3.77,0.12l-4.05,1.05l-2.81,1.54l-0.95,-0.8l-0.19,-0.07l-2.96,0.0l-3.64,-1.8l-2.55,-0.48l-3.38,0.41l-5.13,-0.67l-2.66,0.06l-1.35,-1.65l-1.12,-2.78l-0.21,-0.18l-1.5,-0.33l-2.98,-1.89l-0.12,-0.04l-3.37,-0.43l-2.84,-0.51l-0.75,-1.13l0.93,-3.54l-0.04,-0.24l-1.73,-2.55l-0.15,-0.12l-3.52,-1.18l-1.99,-1.61l-0.54,-1.85Z\",\n            \"name\": \"Mongolia\"\n        },\n        \"MK\": {\"path\": \"M472.73,173.87l0.08,0.01l0.32,-0.25l0.08,-0.44l1.29,-0.41l1.37,-0.28l1.03,-0.04l1.06,0.82l0.14,1.59l-0.22,0.04l-0.17,0.11l-0.32,0.4l-1.2,-0.05l-0.18,0.05l-0.9,0.61l-1.45,0.23l-0.85,-0.59l-0.3,-1.09l0.22,-0.71Z\", \"name\": \"Macedonia\"},\n        \"MW\": {\"path\": \"M507.18,313.84l-0.67,1.85l-0.01,0.16l0.7,3.31l0.31,0.24l0.75,-0.03l0.78,0.71l0.99,1.75l0.2,3.03l-0.91,0.45l-0.14,0.15l-0.59,1.38l-1.24,-1.21l-0.17,-1.62l0.49,-1.12l0.02,-0.16l-0.15,-1.03l-0.13,-0.21l-0.99,-0.65l-0.26,-0.03l-0.53,0.18l-1.31,-1.12l-1.15,-0.59l0.66,-2.06l0.75,-0.84l0.07,-0.27l-0.47,-2.04l0.48,-1.94l0.4,-0.65l0.03,-0.24l-0.64,-2.15l-0.08,-0.13l-0.44,-0.42l1.34,0.26l1.25,1.73l0.67,3.3Z\", \"name\": \"Malawi\"},\n        \"MR\": {\n            \"path\": \"M390.54,247.66l-1.48,-1.58l-1.51,-1.88l-0.12,-0.09l-1.64,-0.67l-1.17,-0.74l-0.17,-0.05l-1.4,0.03l-0.12,0.03l-1.14,0.52l-1.15,-0.21l-0.26,0.08l-0.44,0.43l-0.11,-0.72l0.68,-1.29l0.31,-2.43l-0.28,-2.63l-0.29,-1.27l0.24,-1.24l-0.03,-0.2l-0.65,-1.24l-1.19,-1.05l0.32,-0.51l9.64,0.02l0.3,-0.34l-0.46,-3.71l0.51,-1.12l2.17,-0.22l0.27,-0.3l-0.08,-6.5l7.91,0.13l0.31,-0.3l0.01,-3.5l8.17,5.63l-2.89,0.04l-0.29,0.33l2.42,22.56l0.12,0.21l0.26,0.19l-0.43,1.38l-9.83,0.04l-0.25,0.13l-0.27,0.41l-0.77,-0.14l-0.15,0.01l-1.3,0.47l-1.64,-0.67l-0.14,-0.02l-0.79,0.06l-0.27,0.22l-0.39,1.39l-0.53,0.29Z\",\n            \"name\": \"Mauritania\"\n        },\n        \"UG\": {\"path\": \"M500.74,287.17l-2.84,-0.02l-0.92,0.32l-1.37,0.71l-0.29,-0.12l0.02,-1.6l0.54,-0.89l0.04,-0.13l0.14,-1.96l0.49,-1.09l0.91,-1.24l0.97,-0.68l0.8,-0.89l-0.13,-0.49l-0.79,-0.27l0.13,-2.55l0.78,-0.52l1.45,0.51l0.18,0.01l1.97,-0.57l1.72,0.01l0.18,-0.06l1.29,-0.97l0.98,1.44l0.29,1.24l1.05,2.75l-0.84,1.68l-1.94,2.66l-0.06,0.18l0.02,2.36l-4.8,0.18Z\", \"name\": \"Uganda\"},\n        \"MY\": {\n            \"path\": \"M717.6,273.52l-1.51,0.7l-2.13,-0.41l-2.88,-0.0l-0.29,0.21l-0.84,2.77l-0.9,0.82l-0.08,0.12l-1.23,3.34l-1.81,0.47l-2.29,-0.68l-0.14,-0.01l-1.2,0.22l-0.14,0.07l-1.36,1.18l-1.47,-0.17l-0.12,0.01l-1.46,0.46l-1.51,-1.25l-0.24,-0.97l1.26,0.59l0.2,0.02l1.93,-0.47l0.22,-0.22l0.47,-1.98l0.9,-0.4l2.97,-0.54l0.17,-0.09l1.8,-1.98l1.02,-1.32l0.9,1.03l0.48,-0.04l0.43,-0.7l1.02,0.07l0.32,-0.27l0.25,-2.72l1.84,-1.67l1.23,-1.89l0.73,-0.01l1.12,1.11l0.1,0.99l0.18,0.24l1.66,0.71l1.85,0.67l-0.09,0.51l-1.45,0.11l-0.26,0.4l0.35,0.97ZM673.78,269.53l0.17,1.14l0.35,0.25l1.65,-0.3l0.18,-0.11l0.68,-0.86l0.31,0.13l1.41,1.45l0.99,1.59l0.13,1.57l-0.26,1.09l0.0,0.15l0.24,0.84l0.18,1.46l0.11,0.2l0.82,0.64l0.92,2.08l-0.03,0.52l-1.4,0.13l-2.29,-1.79l-2.86,-1.92l-0.27,-1.16l-0.07,-0.13l-1.39,-1.61l-0.33,-1.99l-0.05,-0.12l-0.84,-1.27l0.26,-1.72l-0.03,-0.18l-0.45,-0.87l0.13,-0.13l1.71,0.92Z\",\n            \"name\": \"Malaysia\"\n        },\n        \"MX\": {\n            \"path\": \"M133.41,213.83l0.61,0.09l0.27,-0.09l0.93,-1.01l0.08,-0.18l0.09,-1.22l-0.09,-0.23l-1.93,-1.94l-1.46,-0.77l-2.96,-5.62l-0.86,-2.1l2.44,-0.18l2.68,-0.25l-0.03,0.08l0.17,0.4l3.79,1.35l5.81,1.97l6.96,-0.02l0.3,-0.3l0.0,-0.84l3.91,0.0l0.87,0.93l1.27,0.87l1.44,1.17l0.79,1.37l0.62,1.49l0.12,0.14l1.35,0.85l2.08,0.82l0.35,-0.1l1.49,-2.04l1.81,-0.05l1.63,1.01l1.21,1.8l0.86,1.58l1.47,1.55l0.53,1.82l0.73,1.32l0.14,0.13l1.98,0.84l1.78,0.59l0.61,-0.03l-0.78,1.89l-0.45,1.96l-0.19,3.58l-0.24,1.27l0.01,0.14l0.43,1.43l0.78,1.31l0.49,1.98l0.06,0.12l1.63,1.9l0.61,1.51l0.98,1.28l0.16,0.11l2.58,0.67l0.98,1.02l0.31,0.08l2.17,-0.71l1.91,-0.26l1.87,-0.47l1.67,-0.49l1.59,-1.06l0.11,-0.14l0.6,-1.52l0.22,-2.21l0.35,-0.62l1.58,-0.64l2.59,-0.59l2.18,0.09l1.43,-0.2l0.39,0.36l-0.07,1.02l-1.28,1.48l-0.65,1.68l0.07,0.32l0.33,0.32l-0.79,2.49l-0.28,-0.3l-0.24,-0.09l-1.0,0.08l-0.24,0.15l-0.74,1.28l-0.19,-0.13l-0.28,-0.03l-0.3,0.12l-0.19,0.29l0.0,0.06l-4.34,-0.02l-0.3,0.3l-0.0,1.16l-0.83,0.0l-0.28,0.19l0.08,0.33l0.93,0.86l0.9,0.58l0.24,0.48l0.16,0.15l0.2,0.08l-0.03,0.38l-2.94,0.01l-0.26,0.15l-1.21,2.09l0.02,0.33l0.25,0.33l-0.21,0.44l-0.04,0.22l-2.42,-2.35l-1.36,-0.87l-2.04,-0.67l-0.13,-0.01l-1.4,0.19l-2.07,0.98l-1.14,0.23l-1.72,-0.66l-1.85,-0.48l-2.31,-1.16l-1.92,-0.38l-2.79,-1.18l-2.04,-1.2l-0.6,-0.66l-0.19,-0.1l-1.37,-0.15l-2.45,-0.78l-1.07,-1.18l-2.63,-1.44l-1.2,-1.56l-0.44,-0.93l0.5,-0.15l0.2,-0.39l-0.2,-0.58l0.46,-0.55l0.07,-0.19l0.01,-0.91l-0.06,-0.18l-0.81,-1.13l-0.25,-1.08l-0.86,-1.36l-2.21,-2.63l-2.53,-2.09l-1.2,-1.63l-0.11,-0.09l-2.08,-1.06l-0.34,-0.48l0.35,-1.53l-0.16,-0.34l-1.24,-0.61l-1.39,-1.23l-0.6,-1.81l-0.24,-0.2l-1.25,-0.2l-1.38,-1.35l-1.11,-1.25l-0.1,-0.76l-0.05,-0.13l-1.33,-2.04l-0.85,-2.02l0.04,-0.99l-0.14,-0.27l-1.81,-1.1l-0.2,-0.04l-0.74,0.11l-1.34,-0.72l-0.42,0.16l-0.4,1.12l-0.0,0.19l0.41,1.3l0.24,2.04l0.06,0.15l0.88,1.16l1.84,1.86l0.4,0.61l0.12,0.1l0.27,0.14l0.29,0.82l0.31,0.2l0.2,-0.02l0.43,1.51l0.09,0.14l0.72,0.65l0.51,0.91l1.58,1.4l0.8,2.42l0.77,1.23l0.66,1.19l0.13,1.34l0.28,0.27l1.08,0.08l0.92,1.1l0.83,1.08l-0.03,0.24l-0.88,0.81l-0.13,-0.0l-0.59,-1.42l-0.07,-0.11l-1.67,-1.53l-1.81,-1.28l-1.15,-0.61l0.07,-1.85l-0.38,-1.45l-0.12,-0.17l-2.91,-2.03l-0.39,0.04l-0.11,0.11l-0.42,-0.46l-0.11,-0.08l-1.49,-0.63l-1.09,-1.16Z\",\n            \"name\": \"Mexico\"\n        },\n        \"VU\": {\"path\": \"M839.92,325.66l0.78,0.73l-0.18,0.07l-0.6,-0.8ZM839.13,322.74l0.27,1.36l-0.13,-0.06l-0.21,-0.02l-0.29,0.08l-0.22,-0.43l-0.03,-1.32l0.61,0.4Z\", \"name\": \"Vanuatu\"},\n        \"FR\": {\n            \"path\": \"M444.48,172.62l-0.64,1.78l-0.58,-0.31l-0.49,-1.72l0.4,-0.89l1.0,-0.72l0.3,1.85ZM429.64,147.1l1.78,1.58l1.46,-0.13l2.1,1.42l1.35,0.27l1.23,0.83l3.04,0.5l-1.03,1.85l-0.3,2.12l-0.41,0.32l-0.95,-0.24l-0.5,0.43l0.06,0.61l-1.81,1.92l-0.04,1.42l0.55,0.38l0.88,-0.36l0.61,0.97l-0.03,1.0l0.57,0.91l-0.75,1.09l0.65,2.39l1.27,0.57l-0.18,0.82l-2.01,1.53l-4.77,-0.8l-3.82,1.0l-0.53,1.85l-2.49,0.34l-2.71,-1.31l-1.16,0.57l-4.31,-1.29l-0.72,-0.86l1.19,-1.78l0.39,-6.45l-2.58,-3.3l-1.9,-1.66l-3.72,-1.23l-0.19,-1.72l2.81,-0.61l4.12,0.81l0.47,-0.48l-0.6,-2.77l1.94,0.95l5.83,-2.54l0.92,-2.74l1.6,-0.49l0.24,0.78l1.36,0.33l1.05,1.19Z\",\n            \"name\": \"France\"\n        },\n        \"GF\": {\n            \"path\": \"M289.01,278.39l-0.81,0.8l-0.78,0.12l-0.5,-0.66l-0.56,-0.1l-0.91,0.6l-0.46,-0.22l1.09,-2.96l-0.96,-1.77l-0.17,-1.49l1.07,-1.77l2.32,0.75l2.51,2.01l0.3,0.74l-2.14,3.96Z\",\n            \"name\": \"French Guiana\"\n        },\n        \"FI\": {\n            \"path\": \"M492.26,76.42l-0.38,3.12l0.12,0.28l3.6,2.69l-2.14,2.96l-0.01,0.33l2.83,4.61l-1.61,3.36l0.03,0.31l2.15,2.87l-0.96,2.44l0.1,0.35l3.51,2.55l-0.81,1.72l-2.28,2.19l-5.28,4.79l-4.51,0.31l-4.39,1.37l-3.87,0.75l-1.34,-1.89l-0.11,-0.09l-2.23,-1.14l0.53,-3.54l-0.01,-0.14l-1.17,-3.37l1.12,-2.13l2.23,-2.44l5.69,-4.33l1.65,-0.84l0.16,-0.31l-0.26,-1.73l-0.15,-0.22l-3.4,-1.91l-0.77,-1.47l-0.07,-6.45l-0.12,-0.24l-3.91,-2.94l-3.0,-1.92l0.97,-0.76l2.6,2.17l0.21,0.07l3.2,-0.21l2.63,1.03l0.3,-0.05l2.39,-1.94l0.09,-0.13l1.18,-3.12l3.63,-1.42l2.87,1.59l-0.98,2.87Z\",\n            \"name\": \"Finland\"\n        },\n        \"FJ\": {\"path\": \"M869.98,327.07l-1.31,0.44l-0.14,-0.41l0.96,-0.41l0.85,-0.17l1.43,-0.78l-0.16,0.65l-1.64,0.67ZM867.58,329.12l0.54,0.47l-0.31,1.0l-1.32,0.3l-1.13,-0.26l-0.17,-0.78l0.72,-0.66l0.98,0.27l0.25,-0.04l0.43,-0.29Z\", \"name\": \"Fiji\"},\n        \"FK\": {\"path\": \"M268.15,427.89l2.6,-1.73l1.98,0.77l0.31,-0.05l1.32,-1.17l1.58,1.18l-0.54,0.84l-3.1,0.92l-1.0,-1.04l-0.39,-0.04l-1.9,1.35l-0.86,-1.04Z\", \"name\": \"Falkland Islands\"},\n        \"NI\": {\n            \"path\": \"M202.1,252.6l0.23,-0.0l0.12,-0.11l0.68,-0.09l0.22,-0.15l0.23,-0.43l0.2,-0.01l0.28,-0.31l-0.04,-0.97l0.29,-0.03l0.5,0.02l0.25,-0.11l0.37,-0.46l0.51,0.35l0.4,-0.06l0.23,-0.28l0.45,-0.29l0.87,-0.7l0.11,-0.21l0.02,-0.26l0.23,-0.12l0.25,-0.48l0.29,0.27l0.14,0.07l0.5,0.12l0.22,-0.03l0.48,-0.28l0.66,-0.02l0.87,-0.33l0.36,-0.32l0.21,0.01l-0.11,0.48l0.0,0.14l0.22,0.8l-0.54,0.85l-0.27,1.03l-0.09,1.18l0.14,0.72l0.05,0.95l-0.24,0.15l-0.13,0.19l-0.23,1.09l0.0,0.14l0.14,0.53l-0.42,0.53l-0.06,0.24l0.12,0.69l0.08,0.15l0.18,0.19l-0.26,0.23l-0.49,-0.11l-0.35,-0.44l-0.16,-0.1l-0.79,-0.21l-0.23,0.03l-0.45,0.26l-1.51,-0.62l-0.31,0.05l-0.17,0.15l-1.81,-1.62l-0.6,-0.9l-1.04,-0.79l-0.77,-0.71Z\",\n            \"name\": \"Nicaragua\"\n        },\n        \"NL\": {\"path\": \"M436.22,136.65l1.82,0.08l0.36,0.89l-0.6,2.96l-0.53,1.06l-1.32,0.0l-0.3,0.34l0.35,2.89l-0.83,-0.47l-1.56,-1.43l-0.29,-0.07l-2.26,0.67l-1.02,-0.15l0.68,-0.48l0.1,-0.12l2.14,-4.84l3.25,-1.35Z\", \"name\": \"Netherlands\"},\n        \"NO\": {\n            \"path\": \"M491.45,67.31l7.06,3.0l-2.52,0.94l-0.11,0.49l2.43,2.49l-3.82,1.59l-1.48,0.3l0.89,-2.61l-0.14,-0.36l-3.21,-1.78l-0.25,-0.02l-3.89,1.52l-0.17,0.17l-1.2,3.17l-2.19,1.78l-2.53,-0.99l-0.13,-0.02l-3.15,0.21l-2.69,-2.25l-0.38,-0.01l-1.43,1.11l-1.47,0.17l-0.26,0.26l-0.33,2.57l-4.42,-0.65l-0.33,0.22l-0.6,2.19l-2.17,-0.01l-0.27,0.16l-4.15,7.68l-3.88,5.76l-0.0,0.33l0.81,1.23l-0.7,1.27l-2.3,-0.06l-0.28,0.18l-1.63,3.72l-0.02,0.13l0.15,5.17l0.07,0.18l1.51,1.84l-0.79,4.24l-2.04,2.5l-0.92,1.75l-1.39,-1.88l-0.44,-0.05l-4.89,4.21l-3.16,0.81l-3.24,-1.74l-0.86,-3.82l-0.78,-8.6l2.18,-2.36l6.56,-3.28l5.0,-4.16l4.63,-5.74l5.99,-8.09l4.17,-3.23l6.84,-5.49l5.39,-1.92l4.06,0.24l0.23,-0.09l3.72,-3.67l4.51,0.19l4.4,-0.89ZM484.58,19.95l4.42,1.82l-3.25,2.68l-7.14,0.65l-7.16,-0.91l-0.39,-1.37l-0.28,-0.22l-3.48,-0.1l-2.25,-2.15l7.09,-1.48l3.55,1.36l0.28,-0.03l2.42,-1.66l6.18,1.41ZM481.99,33.92l-4.73,1.85l-3.76,-1.06l1.27,-1.02l0.04,-0.43l-1.18,-1.35l4.46,-0.94l0.89,1.83l0.17,0.15l2.83,0.96ZM466.5,23.95l7.64,3.87l-5.63,1.94l-0.19,0.19l-1.35,3.88l-2.08,0.96l-0.16,0.19l-1.14,4.18l-2.71,0.18l-4.94,-2.95l1.95,-1.63l-0.08,-0.51l-3.7,-1.54l-4.79,-4.54l-1.78,-4.01l6.29,-1.88l1.25,1.81l0.25,0.13l3.57,-0.08l0.26,-0.17l0.87,-1.79l3.41,-0.18l3.08,1.94Z\",\n            \"name\": \"Norway\"\n        },\n        \"NA\": {\n            \"path\": \"M461.88,357.98l-1.61,-1.77l-0.94,-1.9l-0.54,-2.58l-0.62,-1.95l-0.83,-4.05l-0.06,-3.13l-0.33,-1.5l-0.07,-0.14l-0.95,-1.06l-1.27,-2.12l-1.3,-3.1l-0.59,-1.71l-1.98,-2.46l-0.13,-1.67l0.99,-0.4l1.44,-0.42l1.48,0.07l1.42,1.11l0.31,0.03l0.32,-0.15l9.99,-0.11l1.66,1.18l0.16,0.06l6.06,0.37l4.69,-1.06l2.01,-0.57l1.5,0.14l0.63,0.37l-1.0,0.41l-0.7,0.01l-0.16,0.05l-1.38,0.88l-0.79,-0.88l-0.29,-0.09l-3.83,0.9l-1.84,0.08l-0.29,0.3l-0.07,8.99l-2.18,0.08l-0.29,0.3l-0.0,17.47l-2.04,1.27l-1.21,0.18l-1.51,-0.49l-0.99,-0.18l-0.36,-1.0l-0.1,-0.14l-0.99,-0.74l-0.4,0.04l-0.98,1.09Z\",\n            \"name\": \"Namibia\"\n        },\n        \"NC\": {\"path\": \"M835.87,338.68l2.06,1.63l1.01,0.94l-0.49,0.32l-1.21,-0.62l-1.76,-1.16l-1.58,-1.36l-1.61,-1.79l-0.16,-0.41l0.54,0.02l1.32,0.83l1.08,0.87l0.79,0.73Z\", \"name\": \"New Caledonia\"},\n        \"NE\": {\n            \"path\": \"M426.67,254.17l0.03,-1.04l-0.24,-0.3l-2.66,-0.53l-0.06,-1.0l-0.07,-0.17l-1.37,-1.62l-0.3,-1.04l0.15,-0.94l1.37,-0.09l0.19,-0.09l0.85,-0.83l3.34,-0.22l2.22,-0.41l0.24,-0.26l0.2,-1.5l1.32,-1.65l0.07,-0.19l-0.01,-5.74l3.4,-1.13l7.24,-5.12l8.46,-4.95l3.76,1.08l1.35,1.39l0.36,0.05l1.39,-0.77l0.55,3.66l0.12,0.2l0.82,0.6l0.03,0.69l0.1,0.21l0.87,0.74l-0.47,0.99l-0.96,5.26l-0.13,3.25l-3.08,2.34l-0.1,0.15l-1.08,3.37l0.08,0.31l0.94,0.86l-0.01,1.51l0.29,0.3l1.25,0.05l-0.14,0.66l-0.51,0.11l-0.24,0.26l-0.06,0.57l-0.04,0.0l-1.59,-2.62l-0.21,-0.14l-0.59,-0.1l-0.23,0.05l-1.83,1.33l-1.79,-0.68l-1.42,-0.17l-0.17,0.03l-0.65,0.32l-1.39,-0.07l-0.19,0.06l-1.4,1.03l-1.12,0.05l-2.97,-1.29l-0.26,0.01l-1.12,0.59l-1.08,-0.04l-0.85,-0.88l-0.11,-0.07l-2.51,-0.95l-0.14,-0.02l-2.69,0.3l-0.16,0.07l-0.65,0.55l-0.1,0.16l-0.34,1.41l-0.69,0.98l-0.05,0.15l-0.13,1.72l-1.47,-1.13l-0.18,-0.06l-0.9,0.01l-0.2,0.08l-0.32,0.28Z\",\n            \"name\": \"Niger\"\n        },\n        \"NG\": {\n            \"path\": \"M442.0,272.7l-2.4,0.83l-0.88,-0.12l-0.19,0.04l-0.89,0.52l-1.78,-0.05l-1.23,-1.44l-0.88,-1.87l-1.77,-1.66l-0.21,-0.08l-3.78,0.03l0.13,-3.75l-0.06,-1.58l0.44,-1.47l0.74,-0.75l1.21,-1.56l0.04,-0.29l-0.22,-0.56l0.44,-0.9l0.01,-0.24l-0.54,-1.44l0.26,-2.97l0.72,-1.06l0.33,-1.37l0.51,-0.43l2.53,-0.28l2.38,0.9l0.89,0.91l0.2,0.09l1.28,0.04l0.15,-0.03l1.06,-0.56l2.9,1.26l0.13,0.02l1.28,-0.06l0.16,-0.06l1.39,-1.02l1.36,0.07l0.15,-0.03l0.64,-0.32l1.22,0.13l1.9,0.73l0.28,-0.04l1.86,-1.35l0.33,0.06l1.62,2.67l0.29,0.14l0.32,-0.04l0.73,0.74l-0.19,0.37l-0.12,0.74l-2.03,1.89l-0.07,0.11l-0.66,1.62l-0.35,1.28l-0.48,0.51l-0.07,0.12l-0.48,1.67l-1.26,0.98l-0.1,0.15l-0.38,1.24l-0.58,1.07l-0.2,0.91l-1.43,0.7l-1.26,-0.93l-0.19,-0.06l-0.95,0.04l-0.2,0.09l-1.41,1.39l-0.61,0.02l-0.26,0.17l-1.19,2.42l-0.61,1.67Z\",\n            \"name\": \"Nigeria\"\n        },\n        \"NZ\": {\n            \"path\": \"M857.9,379.62l1.85,3.1l0.33,0.14l0.22,-0.28l0.04,-1.41l0.57,0.4l0.35,2.06l0.17,0.22l2.02,0.94l1.78,0.26l0.22,-0.06l1.31,-1.01l0.84,0.22l-0.53,2.27l-0.67,1.5l-1.71,-0.05l-0.25,0.12l-0.67,0.89l-0.05,0.23l0.21,1.15l-0.31,0.46l-2.15,3.57l-1.6,0.99l-0.28,-0.51l-0.15,-0.13l-0.72,-0.3l1.27,-2.15l0.01,-0.29l-0.82,-1.63l-0.15,-0.14l-2.5,-1.09l0.05,-0.69l1.67,-0.94l0.15,-0.21l0.42,-2.24l-0.11,-1.95l-0.03,-0.12l-0.97,-1.85l0.05,-0.41l-0.09,-0.25l-1.18,-1.17l-1.94,-2.49l-0.86,-1.64l0.38,-0.09l1.24,1.43l0.12,0.08l1.81,0.68l0.67,2.39ZM853.93,393.55l0.57,1.24l0.44,0.12l1.51,-1.03l0.52,0.91l0.0,1.09l-0.88,1.31l-1.62,2.2l-1.26,1.2l-0.05,0.38l0.64,1.02l-1.4,0.03l-0.14,0.04l-2.14,1.16l-0.14,0.17l-0.67,2.0l-1.38,3.06l-3.07,2.19l-2.12,-0.06l-1.55,-0.99l-0.14,-0.05l-2.53,-0.2l-0.31,-0.84l1.25,-2.15l3.07,-2.97l1.62,-0.59l1.81,-1.17l2.18,-1.63l1.55,-1.65l1.08,-2.18l0.9,-0.72l0.11,-0.17l0.35,-1.56l1.37,-1.07l0.4,0.91Z\",\n            \"name\": \"New Zealand\"\n        },\n        \"NP\": {\"path\": \"M641.26,213.53l-0.14,0.95l0.32,1.64l-0.21,0.78l-1.83,0.04l-2.98,-0.62l-1.86,-0.25l-1.37,-1.3l-0.18,-0.08l-3.38,-0.34l-3.21,-1.49l-2.38,-1.34l-2.16,-0.92l0.84,-2.2l1.51,-1.18l0.89,-0.57l1.83,0.77l2.5,1.76l1.39,0.41l0.78,1.21l0.17,0.13l1.91,0.53l2.0,1.17l2.92,0.66l2.63,0.24Z\", \"name\": \"Nepal\"},\n        \"CI\": {\n            \"path\": \"M413.53,272.08l-0.83,0.02l-1.79,-0.49l-1.64,0.03l-3.04,0.46l-1.73,0.72l-2.4,0.89l-0.12,-0.02l0.16,-1.7l0.19,-0.25l0.06,-0.2l-0.08,-0.99l-0.09,-0.19l-1.06,-1.05l-0.15,-0.08l-0.71,-0.15l-0.51,-0.48l0.45,-0.92l0.02,-0.19l-0.24,-1.16l0.07,-0.43l0.14,-0.0l0.3,-0.26l0.15,-1.1l-0.02,-0.15l-0.13,-0.34l0.09,-0.13l0.83,-0.27l0.19,-0.37l-0.62,-2.02l-0.55,-1.0l0.14,-0.59l0.35,-0.14l0.24,-0.16l0.53,0.29l0.14,0.04l1.93,0.02l0.26,-0.14l0.36,-0.58l0.39,0.01l0.43,-0.17l0.28,0.79l0.43,0.16l0.56,-0.31l0.89,-0.32l0.92,0.45l0.39,0.75l0.14,0.13l1.13,0.53l0.3,-0.03l0.81,-0.59l1.02,-0.08l1.49,0.57l0.62,3.33l-1.03,2.09l-0.65,2.84l0.02,0.2l1.05,2.08l-0.07,0.64Z\",\n            \"name\": \"Ivory Coast\"\n        },\n        \"CH\": {\"path\": \"M444.71,156.27l0.05,0.3l-0.34,0.69l0.13,0.4l1.13,0.58l1.07,0.1l-0.12,0.81l-0.87,0.42l-1.75,-0.37l-0.34,0.18l-0.47,1.1l-0.86,0.07l-0.33,-0.38l-0.41,-0.04l-1.34,1.01l-1.02,0.13l-0.93,-0.58l-0.82,-1.32l-0.37,-0.12l-0.77,0.32l0.02,-0.84l1.74,-1.69l0.09,-0.25l-0.04,-0.38l0.73,0.19l0.26,-0.06l0.6,-0.48l2.02,0.02l0.24,-0.12l0.38,-0.51l2.31,0.84Z\", \"name\": \"Switzerland\"},\n        \"CO\": {\n            \"path\": \"M232.24,284.95l-0.94,-0.52l-1.22,-0.82l-0.31,-0.01l-0.62,0.35l-1.88,-0.31l-0.54,-0.95l-0.29,-0.15l-0.37,0.03l-2.34,-1.33l-0.15,-0.35l0.57,-0.11l0.24,-0.32l-0.1,-1.15l0.46,-0.71l1.11,-0.15l0.21,-0.13l1.05,-1.57l0.95,-1.31l-0.08,-0.43l-0.73,-0.47l0.4,-1.24l0.01,-0.16l-0.53,-2.15l0.44,-0.54l0.06,-0.24l-0.4,-2.13l-0.06,-0.13l-0.93,-1.22l0.21,-0.8l0.52,0.12l0.32,-0.13l0.47,-0.75l0.03,-0.27l-0.52,-1.32l0.09,-0.11l1.14,0.07l0.22,-0.08l1.82,-1.71l0.96,-0.25l0.22,-0.28l0.02,-0.81l0.43,-2.01l1.28,-1.04l1.48,-0.05l0.27,-0.19l0.12,-0.31l1.73,0.19l0.2,-0.05l1.96,-1.28l0.97,-0.56l1.16,-1.16l0.64,0.11l0.43,0.44l-0.31,0.55l-1.49,0.39l-0.19,0.16l-0.6,1.2l-0.97,0.74l-0.73,0.94l-0.06,0.13l-0.3,1.76l-0.68,1.44l0.23,0.43l1.1,0.14l0.27,0.97l0.08,0.13l0.49,0.49l0.17,0.85l-0.27,0.86l-0.01,0.14l0.09,0.53l0.2,0.23l0.52,0.18l0.54,0.79l0.27,0.13l3.18,-0.24l1.31,0.29l1.7,2.08l0.31,0.1l0.96,-0.26l1.75,0.13l1.41,-0.27l0.56,0.27l-0.36,1.07l-0.54,0.81l-0.05,0.13l-0.2,1.8l0.51,1.79l0.07,0.12l0.65,0.68l0.05,0.32l-1.16,1.14l0.05,0.47l0.86,0.52l0.6,0.79l0.31,1.01l-0.7,-0.81l-0.44,-0.01l-0.74,0.77l-4.75,-0.05l-0.3,0.31l0.03,1.57l0.25,0.29l1.2,0.21l-0.02,0.24l-0.1,-0.05l-0.22,-0.02l-1.41,0.41l-0.22,0.29l-0.01,1.82l0.11,0.23l1.04,0.85l0.35,1.3l-0.06,1.02l-1.02,6.26l-0.84,-0.89l-0.19,-0.09l-0.25,-0.02l1.35,-2.13l-0.1,-0.42l-1.92,-1.17l-0.2,-0.04l-1.41,0.2l-0.82,-0.39l-0.26,0.0l-1.29,0.62l-1.63,-0.27l-1.4,-2.5l-0.12,-0.12l-1.1,-0.61l-0.83,-1.2l-1.67,-1.19l-0.27,-0.04l-0.54,0.19Z\",\n            \"name\": \"Colombia\"\n        },\n        \"CN\": {\n            \"path\": \"M740.32,148.94l0.22,0.21l4.3,1.03l2.84,2.2l0.99,2.92l0.28,0.2l3.8,0.0l0.15,-0.04l2.13,-1.24l3.5,-0.8l-1.05,2.29l-0.95,1.13l-0.06,0.12l-0.85,3.41l-1.56,2.81l-2.83,-0.51l-0.19,0.03l-2.15,1.09l-0.15,0.34l0.65,2.59l-0.33,3.3l-1.03,0.07l-0.28,0.3l0.01,0.75l-1.09,-1.2l-0.48,0.05l-0.94,1.6l-3.76,1.26l-0.2,0.36l0.29,1.19l-1.67,-0.08l-1.11,-0.88l-0.42,0.05l-1.69,2.08l-2.71,1.57l-2.04,1.88l-3.42,0.84l-0.11,0.05l-1.8,1.34l-1.54,0.46l0.52,-0.53l0.06,-0.33l-0.44,-0.96l1.84,-1.84l0.02,-0.41l-1.32,-1.56l-0.36,-0.08l-2.23,1.08l-2.83,2.06l-1.52,1.85l-2.32,0.13l-0.2,0.09l-1.28,1.37l-0.03,0.37l1.32,1.97l0.18,0.13l1.83,0.43l0.07,1.08l0.18,0.26l1.98,0.84l0.3,-0.03l2.66,-1.96l2.06,1.04l0.12,0.03l1.4,0.07l0.27,1.0l-3.24,0.73l-0.17,0.11l-1.13,1.5l-2.38,1.4l-0.1,0.1l-1.29,1.99l0.1,0.42l2.6,1.5l0.97,2.72l1.52,2.56l1.66,2.08l-0.03,1.76l-1.4,0.67l-0.15,0.38l0.6,1.47l0.13,0.15l1.29,0.75l-0.35,2.0l-0.58,1.96l-1.22,0.21l-0.2,0.14l-1.83,2.93l-2.02,3.51l-2.29,3.13l-3.4,2.42l-3.42,2.18l-2.75,0.3l-0.15,0.06l-1.32,1.01l-0.68,-0.67l-0.41,-0.01l-1.37,1.27l-3.42,1.28l-2.62,0.4l-0.24,0.21l-0.8,2.57l-0.95,0.11l-0.53,-1.54l0.52,-0.89l-0.19,-0.44l-3.36,-0.84l-0.17,0.01l-1.09,0.4l-2.36,-0.64l-1.0,-0.9l0.35,-1.34l-0.23,-0.37l-2.22,-0.47l-1.15,-0.94l-0.36,-0.02l-2.08,1.37l-2.35,0.29l-1.98,-0.01l-0.13,0.03l-1.32,0.63l-1.28,0.38l-0.21,0.33l0.33,2.65l-0.78,-0.04l-0.14,-0.39l-0.07,-1.04l-0.41,-0.26l-1.72,0.71l-0.96,-0.43l-1.63,-0.86l0.65,-1.95l-0.19,-0.38l-1.43,-0.46l-0.56,-2.27l-0.34,-0.22l-2.26,0.38l0.25,-2.65l2.29,-2.15l0.09,-0.2l0.1,-2.21l-0.07,-2.09l-0.15,-0.25l-1.02,-0.6l-0.8,-1.52l-0.31,-0.16l-1.42,0.2l-2.16,-0.32l0.55,-0.74l0.01,-0.35l-1.17,-1.7l-0.41,-0.08l-1.67,1.07l-1.97,-0.63l-0.25,0.03l-2.89,1.73l-2.26,1.99l-1.82,0.3l-1.0,-0.66l-0.15,-0.05l-1.28,-0.06l-1.75,-0.61l-0.24,0.02l-1.35,0.69l-0.1,0.08l-1.2,1.45l-0.14,-1.41l-0.4,-0.25l-1.46,0.55l-2.83,-0.26l-2.77,-0.61l-1.99,-1.17l-1.91,-0.54l-0.78,-1.21l-0.17,-0.13l-1.36,-0.38l-2.54,-1.79l-2.01,-0.84l-0.28,0.02l-0.89,0.56l-3.31,-1.83l-2.35,-1.67l-0.57,-2.49l1.34,0.28l0.36,-0.28l0.08,-1.42l-0.05,-0.19l-0.93,-1.34l0.24,-2.18l-0.07,-0.22l-2.69,-3.32l-0.15,-0.1l-3.97,-1.11l-0.69,-2.05l-0.11,-0.15l-1.79,-1.3l-0.39,-0.73l-0.36,-1.57l0.08,-1.09l-0.18,-0.3l-1.52,-0.66l-0.22,-0.01l-0.51,0.18l-0.52,-2.21l0.59,-0.55l0.06,-0.35l-0.22,-0.44l2.12,-1.24l1.63,-0.55l2.58,0.39l0.31,-0.16l0.87,-1.75l3.05,-0.34l0.21,-0.12l0.84,-1.12l3.87,-1.59l0.15,-0.14l0.35,-0.68l0.03,-0.17l-0.17,-1.51l1.52,-0.7l0.15,-0.39l-2.12,-5.0l4.62,-1.15l1.35,-0.72l0.14,-0.17l1.72,-5.37l4.7,0.99l0.28,-0.08l1.39,-1.43l0.08,-0.2l0.11,-2.95l1.83,-0.26l0.18,-0.1l1.85,-2.08l0.61,-0.17l0.57,1.97l0.1,0.15l2.2,1.75l3.48,1.17l1.59,2.36l-0.93,3.53l0.04,0.24l0.9,1.35l0.2,0.13l2.98,0.53l3.32,0.43l2.97,1.89l1.49,0.35l1.08,2.67l1.52,1.88l0.24,0.11l2.74,-0.07l5.15,0.67l3.36,-0.41l2.39,0.43l3.67,1.81l0.13,0.03l2.92,-0.0l1.02,0.86l0.34,0.03l2.88,-1.59l3.98,-1.03l3.81,-0.13l3.02,-1.12l1.77,-1.61l1.73,-1.01l0.13,-0.37l-0.41,-1.01l-0.72,-1.07l1.09,-1.66l1.21,0.24l2.57,0.63l0.24,-0.04l2.46,-1.62l3.78,-1.19l0.13,-0.09l1.8,-2.03l1.66,-0.84l3.54,-0.41l1.93,0.35l0.34,-0.22l0.27,-1.12l-0.08,-0.29l-2.27,-2.22l-2.08,-1.07l-0.29,0.01l-1.82,1.12l-2.36,-0.47l-0.14,0.01l-1.18,0.34l-0.46,-0.94l1.69,-3.08l1.1,-2.21l2.75,1.12l0.26,-0.02l3.53,-2.06l0.15,-0.26l-0.02,-1.35l2.18,-3.39l1.35,-1.04l0.12,-0.24l-0.03,-1.85l-0.15,-0.25l-1.0,-0.58l1.68,-1.37l3.01,-0.59l3.25,-0.09l3.67,0.99l2.08,1.18l1.51,3.3l0.95,1.45l0.85,1.99l0.92,3.19ZM697.0,237.37l-1.95,1.12l-1.74,-0.68l-0.06,-1.9l1.08,-1.03l2.62,-0.7l1.23,0.05l0.37,0.65l-1.01,1.08l-0.54,1.4Z\",\n            \"name\": \"China\"\n        },\n        \"CM\": {\n            \"path\": \"M453.76,278.92l-0.26,-0.11l-0.18,-0.02l-1.42,0.31l-1.56,-0.33l-1.17,0.16l-3.7,-0.05l0.3,-1.63l-0.04,-0.21l-0.98,-1.66l-0.15,-0.13l-1.03,-0.38l-0.46,-1.01l-0.13,-0.14l-0.48,-0.27l0.02,-0.46l0.62,-1.72l1.1,-2.25l0.54,-0.02l0.2,-0.09l1.41,-1.39l0.73,-0.03l1.32,0.97l0.31,0.03l1.72,-0.85l0.16,-0.2l0.22,-1.0l0.57,-1.03l0.36,-1.18l1.26,-0.98l0.1,-0.15l0.49,-1.7l0.48,-0.51l0.07,-0.13l0.35,-1.3l0.63,-1.54l2.06,-1.92l0.09,-0.17l0.12,-0.79l0.24,-0.41l-0.04,-0.36l-0.89,-0.91l0.04,-0.45l0.28,-0.06l0.85,1.39l0.16,1.59l-0.09,1.66l0.04,0.17l1.09,1.84l-0.86,-0.02l-0.72,0.17l-1.07,-0.24l-0.34,0.17l-0.54,1.19l0.06,0.34l1.48,1.47l1.06,0.44l0.32,0.94l0.73,1.6l-0.32,0.57l-1.23,2.49l-0.54,0.41l-0.12,0.21l-0.19,1.95l0.24,1.08l-0.18,0.67l0.07,0.28l1.13,1.25l0.24,0.93l0.92,1.29l1.1,0.8l0.1,1.01l0.26,0.73l-0.12,0.93l-1.65,-0.49l-2.02,-0.66l-3.19,-0.11Z\",\n            \"name\": \"Cameroon\"\n        },\n        \"CL\": {\n            \"path\": \"M246.8,429.1l-1.14,0.78l-2.25,1.21l-0.16,0.23l-0.37,2.94l-0.75,0.06l-2.72,-1.07l-2.83,-2.34l-3.06,-1.9l-0.71,-1.92l0.67,-1.84l-0.02,-0.25l-1.22,-2.13l-0.31,-5.41l1.02,-2.95l2.59,-2.4l-0.13,-0.51l-3.32,-0.8l2.06,-2.4l0.07,-0.15l0.79,-4.77l2.44,0.95l0.4,-0.22l1.31,-6.31l-0.16,-0.33l-1.68,-0.8l-0.42,0.21l-0.72,3.47l-1.01,-0.27l0.74,-4.06l0.85,-5.46l1.12,-1.96l0.03,-0.22l-0.71,-2.82l-0.19,-2.94l0.76,-0.07l0.26,-0.2l1.53,-4.62l1.73,-4.52l1.07,-4.2l-0.56,-4.2l0.73,-2.2l0.01,-0.12l-0.29,-3.3l1.46,-3.34l0.45,-5.19l0.8,-5.52l0.78,-5.89l-0.18,-4.33l-0.49,-3.47l1.1,-0.56l0.13,-0.13l0.44,-0.88l0.9,1.29l0.32,1.8l0.1,0.18l1.16,0.97l-0.73,2.33l0.01,0.21l1.33,2.91l0.97,3.6l0.35,0.22l1.57,-0.31l0.16,0.34l-0.79,2.51l-2.61,1.25l-0.17,0.28l0.08,4.36l-0.48,0.79l0.01,0.33l0.6,0.84l-1.62,1.55l-1.67,2.6l-0.89,2.47l-0.02,0.13l0.23,2.56l-1.5,2.76l-0.03,0.21l1.15,4.8l0.11,0.17l0.54,0.42l-0.01,2.37l-1.4,2.7l-0.03,0.15l0.06,2.25l-1.8,1.78l-0.09,0.21l0.02,2.73l0.71,2.63l-1.33,0.94l-0.12,0.17l-0.67,2.64l-0.59,3.03l0.4,3.55l-0.84,0.51l-0.14,0.31l0.58,3.5l0.08,0.16l0.96,0.99l-0.7,1.08l0.11,0.43l1.04,0.55l0.19,0.8l-0.89,0.48l-0.16,0.31l0.26,1.77l-0.89,4.06l-1.31,2.67l-0.03,0.19l0.28,1.53l-0.73,1.88l-1.85,1.37l-0.12,0.26l0.22,3.46l0.06,0.16l0.88,1.19l0.28,0.12l1.32,-0.17l-0.04,2.13l0.04,0.15l1.04,1.95l0.24,0.16l5.94,0.44ZM248.79,430.71l0.0,7.41l0.3,0.3l2.67,0.0l1.01,0.06l-0.54,0.91l-1.99,1.01l-1.13,-0.1l-1.42,-0.27l-1.87,-1.06l-2.57,-0.49l-3.09,-1.9l-2.52,-1.83l-2.65,-2.93l0.93,0.32l3.54,2.29l3.32,1.23l0.34,-0.09l1.29,-1.57l0.83,-2.32l2.11,-1.28l1.43,0.32Z\",\n            \"name\": \"Chile\"\n        },\n        \"CA\": {\n            \"path\": \"M280.14,145.66l-1.66,2.88l0.06,0.37l0.37,0.03l1.5,-1.01l1.17,0.49l-0.64,0.83l0.13,0.46l2.22,0.89l0.28,-0.03l1.02,-0.7l2.09,0.83l-0.69,2.1l0.37,0.38l1.43,-0.45l0.27,1.43l0.74,1.88l-0.95,2.5l-0.88,0.09l-1.34,-0.48l0.49,-2.34l-0.14,-0.32l-0.7,-0.4l-0.36,0.04l-2.81,2.66l-0.63,-0.05l1.2,-1.01l-0.1,-0.52l-2.4,-0.77l-2.79,0.18l-4.65,-0.09l-0.22,-0.54l1.37,-0.99l0.01,-0.48l-0.82,-0.65l1.91,-1.79l2.57,-5.17l1.49,-1.81l2.04,-1.07l0.63,0.08l-0.27,0.51l-1.33,2.07ZM193.92,74.85l-0.01,4.24l0.19,0.28l0.33,-0.07l3.14,-3.22l2.65,2.5l-0.71,3.04l0.06,0.26l2.42,2.88l0.46,0.0l2.66,-3.14l1.83,-3.74l0.03,-0.12l0.13,-4.53l3.23,0.31l3.63,0.64l3.18,2.08l0.13,1.91l-1.79,2.22l-0.0,0.37l1.69,2.2l-0.28,1.8l-4.74,2.84l-3.33,0.62l-2.5,-1.21l-0.41,0.17l-0.73,2.05l-2.39,3.44l-0.74,1.78l-2.78,2.61l-3.48,0.26l-0.17,0.07l-1.98,1.68l-0.1,0.21l-0.15,2.33l-2.68,0.45l-0.17,0.09l-3.1,3.2l-2.75,4.38l-0.99,3.06l-0.14,4.31l0.25,0.31l3.5,0.58l1.07,3.24l1.18,2.76l0.34,0.18l3.43,-0.69l4.55,1.52l2.45,1.32l1.76,1.65l0.12,0.07l3.11,0.96l2.63,1.46l0.13,0.04l4.12,0.2l2.41,0.3l-0.36,2.81l0.8,3.51l1.81,3.78l0.08,0.1l3.73,3.17l0.34,0.03l1.93,-1.08l0.13,-0.15l1.35,-3.44l0.01,-0.18l-1.31,-5.38l-0.08,-0.14l-1.46,-1.5l3.68,-1.51l2.84,-2.46l1.45,-2.55l0.04,-0.17l-0.2,-2.39l-0.04,-0.12l-1.7,-3.07l-2.9,-2.64l2.79,-3.66l0.05,-0.27l-1.08,-3.38l-0.8,-5.75l1.45,-0.75l4.18,1.03l2.6,0.38l0.18,-0.03l1.93,-0.95l2.18,1.23l3.01,2.18l0.73,1.42l0.25,0.16l4.18,0.27l-0.06,2.95l0.83,4.7l0.22,0.24l2.19,0.55l1.75,2.08l0.38,0.07l3.63,-2.03l0.11,-0.11l2.38,-4.06l1.36,-1.43l1.76,3.01l3.26,4.68l2.68,4.19l-0.94,2.09l0.12,0.38l3.31,1.98l2.23,1.98l0.13,0.07l3.94,0.89l1.48,1.02l0.96,2.82l0.22,0.2l1.85,0.43l0.88,1.13l0.17,3.53l-1.68,1.16l-1.76,1.14l-4.08,1.17l-0.11,0.06l-3.08,2.65l-4.11,0.52l-5.35,-0.69l-3.76,-0.02l-2.62,0.23l-0.2,0.1l-2.05,2.29l-3.13,1.41l-0.11,0.08l-3.6,4.24l-2.87,2.92l-0.05,0.36l0.33,0.14l2.13,-0.52l0.15,-0.08l3.98,-4.15l5.16,-2.63l3.58,-0.31l1.82,1.3l-2.09,1.91l-0.09,0.29l0.8,3.46l0.82,2.37l0.15,0.17l3.25,1.56l0.16,0.03l4.14,-0.45l0.21,-0.12l2.03,-2.86l0.11,1.46l0.13,0.22l1.26,0.88l-2.7,1.78l-5.51,1.83l-2.52,1.26l-2.75,2.16l-1.52,-0.18l-0.08,-2.16l4.19,-2.47l0.14,-0.34l-0.3,-0.22l-4.01,0.1l-2.66,0.36l-1.45,-1.56l0.0,-4.16l-0.11,-0.23l-1.11,-0.91l-0.28,-0.05l-1.5,0.48l-0.7,-0.7l-0.45,0.02l-1.91,2.39l-0.8,2.5l-0.82,1.31l-0.95,0.43l-0.77,0.15l-0.23,0.2l-0.18,0.56l-8.2,0.02l-0.13,0.03l-1.19,0.61l-2.95,2.45l-0.78,1.13l-4.6,0.01l-0.12,0.02l-1.13,0.48l-0.13,0.44l0.37,0.55l0.2,0.82l-0.01,0.09l-3.1,1.42l-2.63,0.5l-2.84,1.57l-0.47,0.0l-0.72,-0.4l-0.18,-0.27l0.03,-0.15l0.52,-1.0l1.2,-1.71l0.73,-1.8l0.02,-0.17l-1.03,-5.47l-0.15,-0.21l-2.35,-1.32l0.16,-0.29l-0.05,-0.35l-0.37,-0.38l-0.22,-0.09l-0.56,0.0l-0.35,-0.34l-0.11,-0.65l-0.46,-0.2l-0.39,0.26l-0.2,-0.03l-0.11,-0.33l-0.48,-0.25l-0.21,-0.71l-0.15,-0.18l-3.97,-2.07l-4.8,-2.39l-0.25,-0.01l-2.19,0.89l-0.72,0.03l-3.04,-0.82l-0.14,-0.0l-1.94,0.4l-2.4,-0.98l-2.56,-0.51l-1.7,-0.19l-0.62,-0.44l-0.42,-1.67l-0.3,-0.23l-0.85,0.02l-0.29,0.3l-0.01,0.95l-69.26,-0.01l-4.77,-3.14l-1.78,-1.41l-4.51,-1.38l-1.3,-2.73l0.34,-1.96l-0.17,-0.33l-3.06,-1.37l-0.41,-2.58l-0.11,-0.18l-2.92,-2.4l-0.05,-1.53l1.32,-1.59l0.07,-0.2l-0.07,-2.21l-0.16,-0.26l-4.19,-2.22l-2.52,-4.02l-1.56,-2.6l-0.08,-0.09l-2.28,-1.64l-1.65,-1.48l-1.31,-1.89l-0.38,-0.1l-2.51,1.21l-2.28,1.92l-2.03,-2.22l-1.85,-1.71l-2.44,-1.04l-2.28,-0.12l0.03,-37.72l4.27,0.98l4.0,2.13l2.61,0.4l0.24,-0.07l2.17,-1.81l2.92,-1.33l3.63,0.53l0.18,-0.03l3.72,-1.94l3.89,-1.06l1.6,1.72l0.37,0.06l1.87,-1.04l0.14,-0.19l0.48,-1.83l1.37,0.38l4.18,3.96l0.41,0.0l2.89,-2.62l0.28,2.79l0.37,0.26l3.08,-0.73l0.17,-0.12l0.85,-1.16l2.81,0.24l3.83,1.86l5.86,1.61l3.46,0.75l2.44,-0.26l2.89,1.89l-3.12,1.89l-0.14,0.31l0.24,0.24l4.53,0.92l6.84,-0.5l2.04,-0.71l2.54,2.44l0.39,0.02l2.72,-2.16l-0.01,-0.48l-2.26,-1.61l1.27,-1.16l2.94,-0.19l1.94,-0.42l1.89,0.97l2.49,2.32l0.24,0.08l2.71,-0.33l4.35,1.9l0.17,0.02l3.86,-0.67l3.62,0.1l0.31,-0.33l-0.26,-2.44l1.9,-0.65l3.58,1.36l-0.01,3.84l0.23,0.29l0.34,-0.17l1.51,-3.23l1.81,0.1l0.31,-0.22l1.13,-4.37l-0.08,-0.29l-2.68,-2.73l-2.83,-1.76l0.19,-4.73l2.77,-3.15l3.06,0.69l2.44,1.97l3.24,4.88l-2.05,2.02l0.15,0.51l4.41,0.85ZM265.85,150.7l-0.84,0.04l-3.15,-0.99l-1.77,-1.17l0.19,-0.06l3.17,0.79l2.39,1.27l0.01,0.12ZM249.41,3.71l6.68,0.49l5.34,0.79l4.34,1.6l-0.08,1.24l-5.91,2.56l-6.03,1.21l-2.36,1.38l-0.14,0.34l0.29,0.22l4.37,-0.02l-4.96,3.01l-4.06,1.64l-0.11,0.08l-4.21,4.62l-5.07,0.92l-0.12,0.05l-1.53,1.1l-7.5,0.59l-0.28,0.28l0.24,0.31l2.67,0.54l-1.04,0.6l-0.09,0.44l1.89,2.49l-2.11,1.66l-3.83,1.52l-0.15,0.13l-1.14,2.01l-3.41,1.55l-0.16,0.36l0.35,1.19l0.3,0.22l3.98,-0.19l0.03,0.78l-6.42,2.99l-6.44,-1.41l-7.41,0.79l-3.72,-0.62l-4.48,-0.26l-0.25,-2.0l4.37,-1.13l0.21,-0.38l-1.14,-3.55l1.13,-0.28l6.61,2.29l0.35,-0.12l-0.04,-0.37l-3.41,-3.45l-0.14,-0.08l-3.57,-0.92l1.62,-1.7l4.36,-1.3l0.2,-0.18l0.71,-1.94l-0.12,-0.36l-3.45,-2.15l-0.88,-2.43l6.36,0.23l1.94,0.61l0.23,-0.02l3.91,-2.1l0.15,-0.32l-0.26,-0.24l-5.69,-0.67l-8.69,0.37l-4.3,-1.92l-2.12,-2.39l-2.82,-1.68l-0.44,-1.65l3.41,-1.06l2.93,-0.2l4.91,-0.99l3.69,-2.28l2.93,0.31l2.64,1.68l0.42,-0.1l1.84,-3.23l3.17,-0.96l4.45,-0.69l7.56,-0.26l1.26,0.64l0.18,0.03l7.2,-1.06l10.81,0.8ZM203.94,57.59l0.01,0.32l1.97,2.97l0.51,-0.01l2.26,-3.75l6.05,-1.89l4.08,4.72l-0.36,2.95l0.38,0.33l4.95,-1.36l0.11,-0.05l2.23,-1.77l5.37,2.31l3.32,2.14l0.3,1.89l0.36,0.25l4.48,-1.01l2.49,2.8l0.14,0.09l5.99,1.78l2.09,1.74l2.18,3.83l-4.29,1.91l-0.01,0.54l5.9,2.83l3.95,0.94l3.54,3.84l0.2,0.1l3.58,0.25l-0.67,2.51l-4.18,4.54l-2.84,-1.61l-3.91,-3.95l-0.26,-0.09l-3.24,0.52l-0.25,0.26l-0.32,2.37l0.1,0.26l2.63,2.38l3.42,1.89l0.96,1.0l1.57,3.8l-0.74,2.43l-2.85,-0.96l-6.26,-3.15l-0.38,0.09l0.04,0.39l3.54,3.4l2.55,2.31l0.23,0.78l-6.26,-1.43l-5.33,-2.25l-2.73,-1.73l0.67,-0.86l-0.09,-0.45l-7.38,-4.01l-0.44,0.27l0.03,0.89l-6.85,0.61l-1.8,-1.17l1.43,-2.6l4.56,-0.07l5.15,-0.52l0.23,-0.45l-0.76,-1.34l0.8,-1.89l3.21,-4.06l0.05,-0.29l-0.72,-1.95l-0.97,-1.47l-0.11,-0.1l-3.84,-2.1l-4.53,-1.33l1.09,-0.75l0.05,-0.45l-2.65,-2.75l-0.18,-0.09l-2.12,-0.24l-1.91,-1.47l-0.39,0.02l-1.27,1.25l-4.4,0.56l-9.06,-0.99l-5.28,-1.31l-4.01,-0.67l-1.72,-1.31l2.32,-1.85l0.1,-0.33l-0.28,-0.2l-3.3,-0.02l-0.74,-4.36l1.86,-4.09l2.46,-1.88l5.74,-1.15l-1.5,2.55ZM261.28,159.28l0.19,0.14l1.82,0.42l1.66,-0.05l-0.66,0.68l-0.75,0.16l-3.0,-1.25l-0.46,-0.77l0.51,-0.52l0.68,1.19ZM230.87,84.48l-2.48,0.19l-0.52,-1.74l0.96,-2.17l2.03,-0.53l1.71,1.04l0.02,1.6l-0.22,0.46l-1.5,1.16ZM229.52,58.19l0.14,0.82l-4.99,-0.22l-2.73,0.63l-0.59,-0.23l-2.61,-2.4l0.08,-1.38l0.94,-0.25l5.61,0.51l4.14,2.54ZM222.12,105.0l-0.79,1.63l-0.75,-0.22l-0.52,-0.91l0.04,-0.09l0.84,-1.01l0.74,0.06l0.44,0.55ZM183.77,38.22l2.72,1.65l0.16,0.04l4.83,-0.01l1.92,1.52l-0.51,1.75l0.18,0.36l2.84,1.14l1.56,1.19l0.16,0.06l3.37,0.22l3.65,0.42l4.07,-1.1l5.05,-0.43l3.96,0.35l2.53,1.8l0.48,1.79l-1.37,1.16l-3.6,1.03l-3.22,-0.59l-7.17,0.76l-5.1,0.09l-4.0,-0.6l-6.48,-1.56l-0.81,-2.57l-0.3,-2.49l-0.1,-0.19l-2.51,-2.25l-0.16,-0.07l-5.12,-0.63l-2.61,-1.45l0.75,-1.71l4.88,0.32ZM207.46,91.26l0.42,1.62l0.42,0.19l1.12,-0.55l1.35,0.99l2.74,1.39l2.73,1.2l0.2,1.74l0.35,0.26l1.72,-0.29l1.31,0.97l-1.72,0.96l-3.68,-0.9l-1.34,-1.71l-0.43,-0.04l-2.46,2.1l-3.23,1.85l-0.74,-1.98l-0.31,-0.19l-2.47,0.28l1.49,-1.34l0.1,-0.19l0.32,-3.15l0.79,-3.45l1.34,0.25ZM215.59,102.66l-2.73,2.0l-1.49,-0.08l-0.37,-0.7l1.61,-1.56l3.0,0.03l-0.02,0.3ZM202.79,24.07l0.11,0.12l2.54,1.53l-3.01,1.47l-4.55,4.07l-4.3,0.38l-5.07,-0.68l-2.51,-2.09l0.03,-1.72l1.86,-1.4l0.1,-0.34l-0.29,-0.2l-4.49,0.04l-2.63,-1.79l-1.45,-2.36l1.61,-2.38l1.65,-1.69l2.47,-0.4l0.19,-0.48l-0.72,-0.89l5.1,-0.26l3.1,3.05l0.13,0.07l4.21,1.25l3.99,1.06l1.92,3.65ZM187.5,59.3l-0.15,0.1l-2.59,3.4l-2.5,-0.15l-1.47,-3.92l0.04,-2.24l1.22,-1.92l2.34,-1.26l5.11,0.17l4.28,1.06l-3.36,3.86l-2.9,0.9ZM186.19,48.8l-1.15,1.63l-3.42,-0.35l-2.68,-1.15l1.11,-1.88l3.34,-1.27l2.01,1.63l0.79,1.38ZM185.78,35.41l-0.95,0.13l-4.48,-0.33l-0.4,-0.91l4.5,0.07l1.45,0.82l-0.1,0.21ZM180.76,32.56l-3.43,1.03l-1.85,-1.14l-1.01,-1.92l-0.16,-1.87l2.87,0.2l1.39,0.35l2.75,1.75l-0.55,1.6ZM181.03,76.32l-1.21,1.2l-3.19,-1.26l-0.18,-0.01l-1.92,0.45l-2.88,-1.67l1.84,-1.16l1.6,-1.77l2.45,1.17l1.45,0.77l2.05,2.28ZM169.72,54.76l2.83,0.97l0.14,0.01l4.25,-0.58l0.47,1.01l-2.19,2.16l0.07,0.48l3.61,1.95l-0.41,3.84l-3.87,1.68l-2.23,-0.36l-1.73,-1.75l-6.07,-3.53l0.03,-1.01l4.79,0.55l0.3,-0.16l-0.04,-0.34l-2.55,-2.89l2.59,-2.05ZM174.44,40.56l1.49,1.87l0.07,2.48l-1.07,3.52l-3.87,0.48l-2.41,-0.72l0.05,-2.72l-0.33,-0.3l-3.79,0.36l-0.13,-3.31l2.36,0.14l0.15,-0.03l3.7,-1.74l3.44,0.29l0.31,-0.22l0.03,-0.12ZM170.14,31.5l0.75,1.74l-3.52,-0.52l-4.19,-1.77l-4.65,-0.17l1.65,-1.11l-0.05,-0.52l-2.86,-1.26l-0.13,-1.58l4.52,0.7l6.66,1.99l1.84,2.5ZM134.64,58.08l-1.08,1.93l0.34,0.44l5.44,-1.41l3.37,2.32l0.37,-0.02l2.66,-2.28l2.03,1.38l2.01,4.53l0.53,0.04l1.26,-1.93l0.03,-0.27l-1.67,-4.55l1.82,-0.58l2.36,0.73l2.69,1.84l1.53,4.46l0.77,3.24l0.15,0.19l4.22,2.26l4.32,2.04l-0.21,1.51l-3.87,0.34l-0.19,0.5l1.45,1.54l-0.65,1.23l-4.3,-0.65l-4.4,-1.19l-2.97,0.28l-4.67,1.48l-6.31,0.65l-4.27,0.39l-1.26,-1.91l-0.15,-0.12l-3.42,-1.2l-0.16,-0.01l-2.05,0.45l-2.66,-3.02l1.2,-0.34l3.82,-0.76l3.58,0.19l3.27,-0.78l0.23,-0.29l-0.24,-0.29l-4.84,-1.06l-5.42,0.35l-3.4,-0.09l-0.97,-1.22l5.39,-1.7l0.21,-0.33l-0.3,-0.25l-3.82,0.06l-3.95,-1.1l1.88,-3.13l1.68,-1.81l6.54,-2.84l2.11,0.77ZM158.85,56.58l-1.82,2.62l-3.38,-2.9l0.49,-0.39l3.17,-0.18l1.54,0.86ZM149.71,42.7l1.0,1.87l0.37,0.14l2.17,-0.83l2.33,0.2l0.38,2.16l-1.38,2.17l-8.33,0.76l-6.34,2.15l-3.51,0.1l-0.22,-1.13l4.98,-2.12l0.17,-0.34l-0.31,-0.23l-11.27,0.6l-3.04,-0.78l3.14,-4.57l2.2,-1.35l6.87,1.7l4.4,3.0l0.14,0.05l4.37,0.39l0.27,-0.48l-3.41,-4.68l1.96,-1.62l2.28,0.53l0.79,2.32ZM145.44,29.83l-2.18,0.77l-3.79,-0.0l0.02,-0.31l2.34,-1.5l1.2,0.23l2.42,0.83ZM144.83,34.5l-4.44,1.46l-3.18,-1.48l1.6,-1.36l3.51,-0.53l3.1,0.75l-0.6,1.16ZM119.02,65.87l-6.17,2.07l-1.19,-1.82l-0.13,-0.11l-5.48,-2.32l0.92,-1.7l1.73,-3.44l2.16,-3.15l-0.02,-0.36l-2.09,-2.56l7.84,-0.71l3.59,1.02l6.32,0.27l2.35,1.37l2.25,1.71l-2.68,1.04l-6.21,3.41l-3.1,3.28l-0.08,0.21l0.0,1.81ZM129.66,35.4l-0.3,3.55l-1.77,1.67l-2.34,0.27l-4.62,2.2l-3.89,0.76l-2.83,-0.93l3.85,-3.52l5.04,-3.36l3.75,0.07l3.11,-0.7ZM111.24,152.74l-0.82,0.29l-3.92,-1.39l-0.7,-1.06l-0.12,-0.1l-2.15,-1.09l-0.41,-0.84l-0.2,-0.16l-2.44,-0.56l-0.84,-1.56l0.1,-0.36l2.34,0.64l1.53,0.5l2.28,0.34l0.78,1.04l1.24,1.55l0.09,0.08l2.42,1.3l0.81,1.39ZM88.54,134.82l0.14,0.02l2.0,-0.23l-0.67,3.48l0.06,0.24l1.78,2.22l-0.24,-0.0l-1.4,-1.42l-0.91,-1.53l-1.26,-1.08l-0.42,-1.35l0.09,-0.66l0.82,0.31Z\",\n            \"name\": \"Canada\"\n        },\n        \"CG\": {\n            \"path\": \"M453.66,296.61l-0.9,-0.82l-0.35,-0.04l-0.83,0.48l-0.77,0.83l-1.65,-2.13l1.66,-1.2l0.08,-0.39l-0.81,-1.43l0.59,-0.43l1.62,-0.29l0.24,-0.24l0.1,-0.58l0.94,0.84l0.19,0.08l2.21,0.11l0.27,-0.14l0.81,-1.29l0.32,-1.76l-0.27,-1.96l-0.06,-0.15l-1.08,-1.35l1.02,-2.74l-0.09,-0.34l-0.62,-0.5l-0.22,-0.06l-1.66,0.18l-0.55,-1.03l0.12,-0.73l2.85,0.09l1.98,0.65l2.0,0.59l0.38,-0.25l0.17,-1.3l1.26,-2.24l1.34,-1.19l1.54,0.38l1.35,0.12l-0.11,1.15l-0.74,1.34l-0.5,1.61l-0.31,2.22l0.12,1.41l-0.4,0.9l-0.06,0.88l-0.24,0.67l-1.57,1.15l-1.24,1.41l-1.09,2.43l-0.03,0.13l0.08,1.95l-0.55,0.69l-1.46,1.23l-1.32,1.41l-0.61,-0.29l-0.13,-0.57l-0.29,-0.23l-1.36,-0.02l-0.23,0.1l-0.72,0.81l-0.41,-0.16Z\",\n            \"name\": \"Republic of the Congo\"\n        },\n        \"CF\": {\n            \"path\": \"M459.41,266.56l1.9,-0.17l0.22,-0.12l0.36,-0.5l0.14,0.02l0.55,0.51l0.29,0.07l3.15,-0.96l0.12,-0.07l1.05,-0.97l1.29,-0.87l0.12,-0.33l-0.17,-0.61l0.38,-0.12l2.36,0.15l0.15,-0.03l2.36,-1.17l0.12,-0.1l1.78,-2.72l1.18,-0.96l1.23,-0.34l0.21,0.79l0.07,0.13l1.37,1.5l0.01,0.86l-0.39,1.0l-0.01,0.17l0.16,0.78l0.1,0.17l0.91,0.76l1.89,1.09l1.24,0.92l0.02,0.67l0.12,0.23l1.67,1.3l0.99,1.03l0.61,1.46l0.14,0.15l1.79,0.95l0.2,0.4l-0.44,0.14l-1.54,-0.06l-1.98,-0.26l-0.93,0.22l-0.19,0.14l-0.3,0.48l-0.57,0.05l-0.91,-0.49l-0.26,-0.01l-2.7,1.21l-1.04,-0.23l-0.21,0.03l-0.34,0.19l-0.12,0.13l-0.64,1.3l-1.67,-0.43l-1.77,-0.24l-1.58,-0.91l-2.06,-0.85l-0.27,0.02l-1.42,0.88l-0.97,1.27l-0.06,0.14l-0.19,1.46l-1.3,-0.11l-1.67,-0.42l-0.27,0.07l-1.55,1.41l-0.99,1.76l-0.14,-1.18l-0.13,-0.22l-1.1,-0.78l-0.86,-1.2l-0.2,-0.84l-0.07,-0.13l-1.07,-1.19l0.16,-0.59l0.0,-0.15l-0.24,-1.01l0.18,-1.77l0.5,-0.38l0.09,-0.11l1.18,-2.4Z\",\n            \"name\": \"Central African Republic\"\n        },\n        \"CD\": {\n            \"path\": \"M497.85,276.25l-0.14,2.77l0.2,0.3l0.57,0.19l-0.47,0.52l-1.0,0.71l-0.96,1.31l-0.56,1.22l-0.16,2.04l-0.54,0.89l-0.04,0.15l-0.02,1.76l-0.63,0.61l-0.09,0.2l-0.08,1.33l-0.2,0.11l-0.15,0.21l-0.23,1.37l0.03,0.2l0.6,1.08l0.16,2.96l0.44,2.29l-0.24,1.25l0.01,0.15l0.5,1.46l0.07,0.12l1.41,1.37l1.09,2.56l-0.51,-0.11l-3.45,0.45l-0.67,0.3l-0.15,0.15l-0.71,1.61l0.01,0.26l0.52,1.03l-0.43,2.9l-0.31,2.55l0.13,0.29l0.7,0.46l1.75,0.99l0.31,-0.01l0.26,-0.17l0.15,1.9l-1.44,-0.02l-0.94,-1.28l-0.94,-1.1l-0.17,-0.1l-1.76,-0.33l-0.5,-1.18l-0.42,-0.15l-1.44,0.75l-1.79,-0.32l-0.77,-1.05l-0.2,-0.12l-1.59,-0.23l-0.97,0.04l-0.1,-0.53l-0.27,-0.25l-0.86,-0.06l-1.13,-0.15l-1.62,0.37l-1.04,-0.06l-0.32,0.09l0.11,-2.56l-0.08,-0.21l-0.77,-0.87l-0.17,-1.41l0.36,-1.47l-0.03,-0.21l-0.48,-0.91l-0.04,-1.52l-0.3,-0.29l-2.65,0.02l0.13,-0.53l-0.29,-0.37l-1.28,0.01l-0.28,0.21l-0.07,0.24l-1.35,0.09l-0.26,0.18l-0.62,1.45l-0.25,0.42l-1.17,-0.3l-0.19,0.01l-0.79,0.34l-1.44,0.18l-1.41,-1.96l-0.7,-1.47l-0.61,-1.86l-0.28,-0.21l-7.39,-0.03l-0.92,0.3l-0.78,-0.03l-0.78,0.25l-0.11,-0.25l0.35,-0.15l0.18,-0.26l0.07,-1.02l0.33,-0.52l0.72,-0.42l0.52,0.2l0.33,-0.08l0.76,-0.86l0.99,0.02l0.11,0.48l0.16,0.2l0.94,0.44l0.35,-0.07l1.46,-1.56l1.44,-1.21l0.68,-0.85l0.06,-0.2l-0.08,-1.99l1.04,-2.33l1.1,-1.23l1.62,-1.19l0.11,-0.14l0.29,-0.8l0.08,-0.94l0.38,-0.82l0.03,-0.16l-0.13,-1.38l0.3,-2.16l0.47,-1.51l0.73,-1.31l0.04,-0.12l0.15,-1.51l0.21,-1.66l0.89,-1.16l1.16,-0.7l1.9,0.79l1.69,0.95l1.81,0.24l1.85,0.48l0.35,-0.16l0.71,-1.43l0.16,-0.09l1.03,0.23l0.19,-0.02l2.65,-1.19l0.86,0.46l0.17,0.03l0.81,-0.08l0.23,-0.14l0.31,-0.5l0.75,-0.17l1.83,0.26l1.64,0.06l0.72,-0.21l1.39,1.9l0.16,0.11l1.12,0.3l0.24,-0.04l0.58,-0.36l1.05,0.15l0.15,-0.02l1.15,-0.44l0.47,0.84l0.08,0.09l2.08,1.57Z\",\n            \"name\": \"Democratic Republic of the Congo\"\n        },\n        \"CZ\": {\n            \"path\": \"M463.29,152.22l-0.88,-0.47l-0.18,-0.03l-1.08,0.15l-1.86,-0.94l-0.21,-0.02l-0.88,0.24l-0.13,0.07l-1.25,1.17l-1.63,-0.91l-1.38,-1.36l-1.22,-0.75l-0.24,-1.24l-0.33,-0.75l1.53,-0.6l0.98,-0.84l1.74,-0.62l0.11,-0.07l0.47,-0.47l0.46,0.27l0.24,0.03l0.96,-0.3l1.06,0.95l0.15,0.07l1.57,0.24l-0.1,0.6l0.16,0.32l1.36,0.68l0.41,-0.15l0.28,-0.62l1.29,0.28l0.19,0.84l0.26,0.23l1.73,0.18l0.74,1.02l-0.17,0.0l-0.25,0.13l-0.32,0.49l-0.46,0.11l-0.22,0.23l-0.13,0.57l-0.32,0.1l-0.2,0.22l-0.03,0.14l-0.65,0.25l-1.05,-0.05l-0.28,0.17l-0.22,0.43Z\",\n            \"name\": \"Czech Republic\"\n        },\n        \"CY\": {\"path\": \"M505.03,193.75l-1.51,0.68l-1.0,-0.3l-0.32,-0.63l0.69,-0.06l0.41,0.13l0.19,-0.0l0.62,-0.22l0.31,0.02l0.06,0.22l0.49,0.17l0.06,-0.01Z\", \"name\": \"Cyprus\"},\n        \"CR\": {\n            \"path\": \"M213.0,263.84l-0.98,-0.4l-0.3,-0.31l0.16,-0.24l0.05,-0.21l-0.09,-0.56l-0.1,-0.18l-0.76,-0.65l-0.99,-0.5l-0.74,-0.28l-0.13,-0.58l-0.12,-0.18l-0.66,-0.45l-0.34,-0.0l-0.13,0.31l0.13,0.59l-0.17,0.21l-0.34,-0.42l-0.14,-0.1l-0.7,-0.22l-0.23,-0.34l0.01,-0.62l0.31,-0.74l-0.14,-0.38l-0.3,-0.15l0.47,-0.4l1.48,0.6l0.26,-0.02l0.47,-0.27l0.58,0.15l0.35,0.44l0.17,0.11l0.74,0.17l0.27,-0.07l0.3,-0.27l0.52,1.09l0.97,1.02l0.77,0.71l-0.41,0.1l-0.23,0.3l0.01,1.02l0.12,0.24l0.2,0.14l-0.07,0.05l-0.11,0.3l0.08,0.37l-0.23,0.63Z\",\n            \"name\": \"Costa Rica\"\n        },\n        \"CU\": {\n            \"path\": \"M215.01,226.09l2.08,0.18l1.94,0.03l2.24,0.86l0.95,0.92l0.25,0.08l2.22,-0.28l0.79,0.55l3.68,2.81l0.19,0.06l0.77,-0.03l1.18,0.42l-0.12,0.47l0.27,0.37l1.78,0.1l1.59,0.9l-0.11,0.22l-1.5,0.3l-1.64,0.13l-1.75,-0.2l-2.69,0.19l1.0,-0.86l-0.03,-0.48l-1.02,-0.68l-0.13,-0.05l-1.52,-0.16l-0.74,-0.64l-0.57,-1.42l-0.3,-0.19l-1.36,0.1l-2.23,-0.67l-0.71,-0.52l-0.14,-0.06l-3.2,-0.4l-0.42,-0.25l0.56,-0.39l0.12,-0.33l-0.27,-0.22l-2.46,-0.13l-0.2,0.06l-1.72,1.31l-0.94,0.03l-0.25,0.15l-0.29,0.53l-1.04,0.24l-0.29,-0.07l0.7,-0.43l0.1,-0.11l0.5,-0.87l1.04,-0.54l1.23,-0.49l1.86,-0.25l0.62,-0.28Z\",\n            \"name\": \"Cuba\"\n        },\n        \"SZ\": {\"path\": \"M500.95,353.41l-0.41,0.97l-1.16,0.23l-1.29,-1.26l-0.02,-0.71l0.63,-0.93l0.23,-0.7l0.47,-0.12l1.04,0.4l0.32,1.05l0.2,1.08Z\", \"name\": \"Swaziland\"},\n        \"SY\": {\"path\": \"M510.84,199.83l0.09,-0.11l0.07,-0.2l-0.04,-1.08l0.56,-1.4l1.3,-1.01l0.1,-0.34l-0.41,-1.11l-0.24,-0.19l-0.89,-0.11l-0.2,-1.84l0.55,-1.05l1.3,-1.22l0.09,-0.19l0.09,-1.09l0.39,0.27l0.25,0.04l2.66,-0.77l1.35,0.52l2.06,-0.01l2.93,-1.08l1.35,0.04l2.14,-0.34l-0.83,1.16l-1.31,0.68l-0.16,0.3l0.23,2.03l-0.9,3.25l-5.43,2.87l-4.79,2.91l-2.32,-0.92Z\", \"name\": \"Syria\"},\n        \"KG\": {\n            \"path\": \"M599.04,172.15l0.38,-0.9l1.43,-0.37l4.04,1.02l0.37,-0.23l0.36,-1.64l1.17,-0.52l3.45,1.24l0.2,-0.0l0.86,-0.31l4.09,0.08l3.61,0.31l1.18,1.02l0.11,0.06l1.19,0.34l-0.13,0.26l-3.84,1.58l-0.13,0.1l-0.81,1.08l-3.08,0.34l-0.24,0.16l-0.85,1.7l-2.43,-0.37l-0.14,0.01l-1.79,0.61l-2.39,1.4l-0.12,0.39l0.25,0.49l-0.48,0.45l-4.57,0.43l-3.04,-0.94l-2.45,0.18l0.14,-1.02l2.42,0.44l0.27,-0.08l0.81,-0.81l1.76,0.27l0.21,-0.05l3.21,-2.14l-0.03,-0.51l-2.97,-1.57l-0.26,-0.01l-1.64,0.69l-1.38,-0.84l1.81,-1.67l-0.09,-0.5l-0.46,-0.18Z\",\n            \"name\": \"Kyrgyzstan\"\n        },\n        \"KE\": {\n            \"path\": \"M523.3,287.04l0.06,0.17l1.29,1.8l-1.46,0.84l-0.11,0.11l-0.55,0.93l-0.81,0.16l-0.24,0.24l-0.34,1.69l-0.81,1.06l-0.46,1.58l-0.76,0.63l-3.3,-2.3l-0.16,-1.32l-0.15,-0.23l-9.35,-5.28l-0.02,-2.4l1.92,-2.63l0.91,-1.83l0.01,-0.24l-1.09,-2.86l-0.29,-1.24l-1.09,-1.63l2.93,-2.85l0.92,0.3l0.0,1.19l0.09,0.22l0.86,0.83l0.21,0.08l1.65,0.0l3.09,2.08l0.16,0.05l0.79,0.03l0.54,-0.06l0.58,0.28l1.67,0.2l0.28,-0.12l0.69,-0.98l2.04,-0.94l0.86,0.73l0.19,0.07l1.1,0.0l-1.82,2.36l-0.06,0.18l0.03,9.12Z\",\n            \"name\": \"Kenya\"\n        },\n        \"SS\": {\n            \"path\": \"M505.7,261.39l0.02,1.64l-0.27,0.55l-1.15,0.05l-0.24,0.15l-0.85,1.44l0.22,0.45l1.44,0.17l1.15,1.12l0.42,0.95l0.14,0.15l1.06,0.54l1.33,2.45l-3.06,2.98l-1.44,1.08l-1.75,0.01l-1.92,0.56l-1.5,-0.53l-0.27,0.03l-0.85,0.57l-1.98,-1.5l-0.56,-1.02l-0.37,-0.13l-1.32,0.5l-1.08,-0.15l-0.2,0.04l-0.56,0.35l-0.9,-0.24l-1.44,-1.97l-0.39,-0.77l-0.13,-0.13l-1.78,-0.94l-0.65,-1.5l-1.08,-1.12l-1.57,-1.22l-0.02,-0.68l-0.12,-0.23l-1.37,-1.02l-1.17,-0.68l0.2,-0.08l0.86,-0.48l0.14,-0.18l0.63,-2.22l0.6,-1.02l1.47,-0.28l0.35,0.56l1.29,1.48l0.14,0.09l0.69,0.22l0.22,-0.02l0.83,-0.4l1.58,0.08l0.26,0.39l0.25,0.13l2.49,0.0l0.3,-0.25l0.06,-0.35l1.13,-0.42l0.18,-0.18l0.22,-0.63l0.68,-0.38l1.95,1.37l0.23,0.05l1.29,-0.26l0.19,-0.12l1.23,-1.8l1.36,-1.37l0.08,-0.25l-0.21,-1.52l-0.06,-0.15l-0.25,-0.3l0.94,-0.08l0.26,-0.21l0.1,-0.32l0.6,0.09l-0.25,1.67l0.3,1.83l0.11,0.19l1.22,0.94l0.25,0.73l-0.04,1.2l0.26,0.31l0.09,0.01Z\",\n            \"name\": \"South Sudan\"\n        },\n        \"SR\": {\"path\": \"M278.1,270.26l2.71,0.45l0.31,-0.14l0.19,-0.32l1.82,-0.16l2.25,0.56l-1.09,1.81l-0.04,0.19l0.2,1.72l0.05,0.13l0.9,1.35l-0.39,0.99l-0.21,1.09l-0.48,0.8l-1.2,-0.44l-0.17,-0.01l-1.12,0.24l-0.95,-0.21l-0.35,0.2l-0.25,0.73l0.05,0.29l0.3,0.35l-0.06,0.13l-1.01,-0.15l-1.42,-2.03l-0.32,-1.36l-0.29,-0.23l-0.63,-0.0l-0.95,-1.56l0.41,-1.16l0.01,-0.17l-0.08,-0.35l1.29,-0.56l0.18,-0.22l0.35,-1.97Z\", \"name\": \"Suriname\"},\n        \"KH\": {\"path\": \"M680.28,257.89l-0.93,-1.2l-1.24,-2.56l-0.56,-2.9l1.45,-1.92l3.07,-0.46l2.26,0.35l2.03,0.98l0.38,-0.11l1.0,-1.55l1.86,0.79l0.52,1.51l-0.28,2.82l-4.05,1.88l-0.12,0.45l0.79,1.1l-2.2,0.17l-2.08,0.98l-1.89,-0.33Z\", \"name\": \"Cambodia\"},\n        \"SV\": {\"path\": \"M197.02,248.89l0.18,-0.05l0.59,0.17l0.55,0.51l0.64,0.35l0.06,0.22l0.37,0.21l1.01,-0.28l0.38,0.13l0.16,0.13l-0.14,0.81l-0.18,0.38l-1.22,-0.03l-0.84,-0.23l-1.11,-0.52l-1.31,-0.15l-0.49,-0.38l0.02,-0.08l0.76,-0.57l0.46,-0.27l0.11,-0.35Z\", \"name\": \"El Salvador\"},\n        \"SK\": {\n            \"path\": \"M468.01,150.02l0.05,0.07l0.36,0.1l0.85,-0.37l1.12,1.02l0.33,0.05l1.38,-0.65l1.07,0.3l0.16,0.0l1.69,-0.43l1.95,1.02l-0.51,0.64l-0.45,1.2l-0.32,0.2l-2.55,-0.93l-0.17,-0.01l-0.82,0.2l-0.17,0.11l-0.53,0.68l-0.94,0.32l-0.14,-0.11l-0.29,-0.04l-1.18,0.48l-0.95,0.09l-0.26,0.21l-0.15,0.47l-1.84,0.34l-0.82,-0.31l-1.14,-0.73l-0.2,-0.89l0.42,-0.84l0.91,0.05l0.12,-0.02l0.86,-0.33l0.18,-0.21l0.03,-0.13l0.32,-0.1l0.2,-0.22l0.12,-0.55l0.39,-0.1l0.18,-0.13l0.3,-0.45l0.43,-0.0Z\",\n            \"name\": \"Slovakia\"\n        },\n        \"KR\": {\"path\": \"M737.31,185.72l0.84,0.08l0.27,-0.12l0.89,-1.2l1.63,-0.13l1.1,-0.2l0.21,-0.16l0.12,-0.24l1.86,2.95l0.59,1.79l0.02,3.17l-0.84,1.38l-2.23,0.55l-1.95,1.14l-1.91,0.21l-0.22,-1.21l0.45,-2.07l-0.01,-0.17l-0.99,-2.67l1.54,-0.4l0.17,-0.46l-1.55,-2.24Z\", \"name\": \"South Korea\"},\n        \"SI\": {\"path\": \"M455.77,159.59l1.79,0.21l0.18,-0.04l1.2,-0.68l2.12,-0.08l0.21,-0.1l0.38,-0.42l0.1,0.01l0.28,0.62l-1.71,0.71l-0.18,0.22l-0.21,1.1l-0.71,0.26l-0.2,0.28l0.01,0.55l-0.59,-0.04l-0.79,-0.47l-0.38,0.06l-0.36,0.41l-0.84,-0.05l0.05,-0.15l-0.56,-1.24l0.21,-1.17Z\", \"name\": \"Slovenia\"},\n        \"KP\": {\n            \"path\": \"M747.76,172.02l-0.23,-0.04l-0.26,0.08l-1.09,1.02l-0.78,1.06l-0.06,0.19l0.09,1.95l-1.12,0.57l-0.53,0.58l-0.88,0.82l-1.69,0.51l-1.09,0.79l-0.12,0.22l-0.07,1.17l-0.22,0.25l0.09,0.47l0.96,0.46l1.22,1.1l-0.19,0.37l-0.91,0.16l-1.75,0.14l-0.22,0.12l-0.87,1.18l-0.95,-0.09l-0.3,0.18l-0.97,-0.44l-0.39,0.13l-0.25,0.44l-0.29,0.09l-0.03,-0.2l-0.18,-0.23l-0.62,-0.25l-0.43,-0.29l0.52,-0.97l0.52,-0.3l0.13,-0.38l-0.18,-0.42l0.59,-1.47l0.01,-0.21l-0.16,-0.48l-0.22,-0.2l-1.41,-0.31l-0.82,-0.55l1.74,-1.62l2.73,-1.58l1.62,-1.96l0.96,0.76l0.17,0.06l2.17,0.11l0.31,-0.37l-0.32,-1.31l3.61,-1.21l0.16,-0.13l0.79,-1.34l1.25,1.38Z\",\n            \"name\": \"North Korea\"\n        },\n        \"SO\": {\"path\": \"M543.8,256.48l0.61,-0.05l1.14,-0.37l1.31,-0.25l0.12,-0.05l1.11,-0.81l0.57,-0.0l0.03,0.39l-0.23,1.49l0.01,1.25l-0.52,0.92l-0.7,2.71l-1.19,2.79l-1.54,3.2l-2.13,3.66l-2.12,2.79l-2.92,3.39l-2.47,2.0l-3.76,2.5l-2.33,1.9l-2.77,3.06l-0.61,1.35l-0.28,0.29l-1.22,-1.69l-0.03,-8.92l2.12,-2.76l0.59,-0.68l1.47,-0.04l0.18,-0.06l2.15,-1.71l3.16,-0.11l0.21,-0.09l7.08,-7.55l1.76,-2.12l1.14,-1.57l0.06,-0.18l0.01,-4.67Z\", \"name\": \"Somalia\"},\n        \"SN\": {\n            \"path\": \"M379.28,250.34l-0.95,-1.82l-0.09,-0.1l-0.83,-0.6l0.62,-0.28l0.13,-0.11l1.21,-1.8l0.6,-1.31l0.71,-0.68l1.09,0.2l0.18,-0.02l1.17,-0.53l1.25,-0.03l1.17,0.73l1.59,0.65l1.47,1.83l1.59,1.7l0.12,1.56l0.49,1.46l0.1,0.14l0.85,0.65l0.18,0.82l-0.08,0.57l-0.13,0.05l-1.29,-0.19l-0.29,0.13l-0.11,0.16l-0.35,0.04l-1.83,-0.61l-5.84,-0.13l-0.12,0.02l-0.6,0.26l-0.87,-0.06l-1.01,0.32l-0.26,-1.26l1.9,0.04l0.16,-0.04l0.54,-0.32l0.37,-0.02l0.15,-0.05l0.78,-0.5l0.92,0.46l0.12,0.03l1.09,0.04l0.15,-0.03l1.08,-0.57l0.11,-0.44l-0.51,-0.74l-0.39,-0.1l-0.76,0.39l-0.62,-0.01l-0.92,-0.58l-0.18,-0.05l-0.79,0.04l-0.2,0.09l-0.48,0.51l-2.41,0.06Z\",\n            \"name\": \"Senegal\"\n        },\n        \"SL\": {\"path\": \"M392.19,267.53l-0.44,-0.12l-1.73,-0.97l-1.24,-1.28l-0.4,-0.84l-0.27,-1.65l1.21,-1.0l0.09,-0.12l0.27,-0.66l0.32,-0.41l0.56,-0.05l0.16,-0.07l0.5,-0.41l1.75,0.0l0.59,0.77l0.49,0.96l-0.07,0.64l0.04,0.19l0.36,0.58l-0.03,0.84l0.24,0.2l-0.64,0.65l-1.13,1.37l-0.06,0.14l-0.12,0.66l-0.43,0.58Z\", \"name\": \"Sierra Leone\"},\n        \"SB\": {\"path\": \"M826.74,311.51l0.23,0.29l-0.95,-0.01l-0.39,-0.63l0.65,0.27l0.45,0.09ZM825.01,308.52l-1.18,-1.39l-0.37,-1.06l0.24,0.0l0.82,1.84l0.49,0.6ZM823.21,309.42l-0.44,0.03l-1.43,-0.24l-0.32,-0.24l0.08,-0.5l1.29,0.31l0.72,0.47l0.11,0.18ZM817.9,303.81l2.59,1.44l0.3,0.41l-1.21,-0.66l-1.34,-0.89l-0.34,-0.3ZM813.77,302.4l0.48,0.34l0.1,0.08l-0.33,-0.17l-0.25,-0.25Z\", \"name\": \"Solomon Islands\"},\n        \"SA\": {\n            \"path\": \"M528.24,243.1l-0.2,-0.69l-0.07,-0.12l-0.69,-0.71l-0.18,-0.94l-0.12,-0.19l-1.24,-0.89l-1.28,-2.09l-0.7,-2.08l-0.07,-0.11l-1.73,-1.79l-0.11,-0.07l-1.03,-0.39l-1.57,-2.36l-0.27,-1.72l0.1,-1.53l-0.03,-0.15l-1.44,-2.93l-1.25,-1.13l-1.34,-0.56l-0.72,-1.33l0.11,-0.49l-0.02,-0.2l-0.7,-1.38l-0.08,-0.1l-0.68,-0.56l-0.97,-1.98l-2.8,-4.03l-0.25,-0.13l-0.85,0.01l0.29,-1.11l0.12,-0.97l0.23,-0.81l2.52,0.39l0.23,-0.06l1.08,-0.84l0.6,-0.95l1.78,-0.35l0.22,-0.17l0.37,-0.83l0.74,-0.42l0.08,-0.46l-2.17,-2.4l4.55,-1.26l0.12,-0.06l0.36,-0.32l2.83,0.71l3.67,1.91l7.04,5.5l0.17,0.06l4.64,0.22l2.06,0.24l0.55,1.15l0.28,0.17l1.56,-0.06l0.9,2.15l0.14,0.15l1.14,0.57l0.39,0.85l0.11,0.13l1.59,1.06l0.12,0.91l-0.23,0.83l0.01,0.18l0.32,0.9l0.07,0.11l0.68,0.7l0.33,0.86l0.37,0.65l0.09,0.1l0.76,0.53l0.25,0.04l0.45,-0.12l0.35,0.75l0.1,0.63l0.96,2.68l0.23,0.19l7.53,1.33l0.27,-0.09l0.24,-0.26l0.87,1.41l-1.58,4.96l-7.34,2.54l-7.28,1.02l-2.34,1.17l-0.12,0.1l-1.74,2.63l-0.86,0.32l-0.49,-0.68l-0.28,-0.12l-0.92,0.12l-2.32,-0.25l-0.41,-0.23l-0.15,-0.04l-2.89,0.06l-0.63,0.2l-0.91,-0.59l-0.43,0.11l-0.66,1.27l-0.03,0.21l0.21,0.89l-0.6,0.45Z\",\n            \"name\": \"Saudi Arabia\"\n        },\n        \"SE\": {\n            \"path\": \"M476.42,90.44l-0.15,0.1l-2.43,2.86l-0.07,0.24l0.36,2.31l-3.84,3.1l-4.83,3.38l-0.11,0.15l-1.82,5.45l0.03,0.26l1.78,2.68l2.27,1.99l-2.13,3.88l-2.49,0.82l-0.2,0.24l-0.95,6.05l-1.32,3.09l-2.82,-0.32l-0.3,0.16l-1.34,2.64l-2.48,0.14l-0.76,-3.15l-2.09,-4.04l-1.85,-5.01l1.03,-1.98l2.06,-2.53l0.06,-0.13l0.83,-4.45l-0.06,-0.25l-1.54,-1.86l-0.15,-5.0l1.52,-3.48l2.28,0.06l0.27,-0.16l0.87,-1.59l-0.01,-0.31l-0.8,-1.21l3.79,-5.63l4.07,-7.54l2.23,0.01l0.29,-0.22l0.59,-2.15l4.46,0.66l0.34,-0.26l0.34,-2.64l1.21,-0.14l3.24,2.08l3.78,2.85l0.06,6.37l0.03,0.14l0.67,1.29l-3.95,1.07Z\",\n            \"name\": \"Sweden\"\n        },\n        \"SD\": {\n            \"path\": \"M505.98,259.75l-0.31,-0.9l-0.1,-0.14l-1.2,-0.93l-0.27,-1.66l0.29,-1.83l-0.25,-0.34l-1.16,-0.17l-0.33,0.21l-0.11,0.37l-1.3,0.11l-0.21,0.49l0.55,0.68l0.18,1.29l-1.31,1.33l-1.18,1.72l-1.04,0.21l-2.0,-1.4l-0.32,-0.02l-0.95,0.52l-0.14,0.16l-0.21,0.6l-1.16,0.43l-0.19,0.23l-0.04,0.27l-2.08,0.0l-0.25,-0.39l-0.24,-0.13l-1.81,-0.09l-0.14,0.03l-0.8,0.38l-0.49,-0.16l-1.22,-1.39l-0.42,-0.67l-0.31,-0.14l-1.81,0.35l-0.2,0.14l-0.72,1.24l-0.61,2.14l-0.73,0.4l-0.62,0.22l-0.83,-0.68l-0.12,-0.6l0.38,-0.97l0.01,-1.14l-0.08,-0.2l-1.39,-1.53l-0.25,-0.97l0.03,-0.57l-0.11,-0.25l-0.81,-0.66l-0.03,-1.34l-0.04,-0.14l-0.52,-0.98l-0.31,-0.15l-0.42,0.07l0.12,-0.44l0.63,-1.03l0.03,-0.23l-0.24,-0.88l0.69,-0.66l0.02,-0.41l-0.4,-0.46l0.58,-1.39l1.04,-1.71l1.97,0.16l0.32,-0.3l-0.12,-10.24l0.02,-0.8l2.59,-0.01l0.3,-0.3l0.0,-4.92l29.19,0.0l0.68,2.17l-0.4,0.35l-0.1,0.27l0.36,2.69l0.93,3.15l0.12,0.16l2.05,1.4l-0.99,1.15l-1.75,0.4l-0.15,0.08l-0.79,0.79l-0.08,0.17l-0.24,1.69l-1.07,3.75l-0.0,0.16l0.25,0.96l-0.38,2.1l-0.98,2.41l-1.52,1.3l-1.07,1.94l-0.25,0.99l-1.08,0.64l-0.13,0.18l-0.46,1.65Z\",\n            \"name\": \"Sudan\"\n        },\n        \"DO\": {\"path\": \"M241.7,234.97l0.15,-0.22l1.73,0.01l1.43,0.64l0.15,0.03l0.45,-0.04l0.36,0.74l0.28,0.17l1.02,-0.04l-0.04,0.43l0.27,0.33l1.03,0.09l0.91,0.7l-0.57,0.64l-0.99,-0.47l-0.16,-0.03l-1.11,0.11l-0.79,-0.12l-0.26,0.09l-0.38,0.4l-0.66,0.11l-0.28,-0.45l-0.38,-0.12l-0.83,0.37l-0.14,0.13l-0.85,1.49l-0.27,-0.17l-0.1,-0.58l0.05,-0.67l-0.07,-0.21l-0.44,-0.53l0.35,-0.25l0.12,-0.19l0.19,-1.0l-0.2,-1.4Z\", \"name\": \"Dominican Republic\"},\n        \"DJ\": {\"path\": \"M528.78,253.36l0.34,0.45l-0.06,0.76l-1.26,0.54l-0.05,0.53l0.82,0.53l-0.57,0.83l-0.3,-0.25l-0.27,-0.05l-0.56,0.17l-1.07,-0.03l-0.04,-0.56l-0.16,-0.56l0.76,-1.07l0.76,-0.97l0.89,0.18l0.25,-0.06l0.51,-0.42Z\", \"name\": \"Djibouti\"},\n        \"DK\": {\"path\": \"M452.4,129.07l-1.27,2.39l-2.25,-1.69l-0.26,-1.08l3.15,-1.0l0.63,1.39ZM447.87,126.25l-0.35,0.76l-0.47,-0.24l-0.38,0.09l-1.8,2.53l-0.03,0.29l0.56,1.4l-1.22,0.4l-1.68,-0.41l-0.92,-1.76l-0.07,-3.47l0.38,-0.88l0.62,-0.93l2.07,-0.21l0.19,-0.1l0.84,-0.95l1.5,-0.76l-0.06,1.26l-0.7,1.1l-0.03,0.25l0.3,1.0l0.18,0.19l1.06,0.42Z\", \"name\": \"Denmark\"},\n        \"DE\": {\n            \"path\": \"M445.51,131.69l0.03,0.94l0.21,0.28l2.32,0.74l-0.02,1.0l0.37,0.3l2.55,-0.65l1.36,-0.89l2.63,1.27l1.09,1.01l0.51,1.51l-0.6,0.78l-0.0,0.36l0.88,1.17l0.58,1.68l-0.18,1.08l0.03,0.18l0.87,1.81l-0.66,0.2l-0.55,-0.32l-0.36,0.05l-0.58,0.58l-1.73,0.62l-0.99,0.84l-1.77,0.7l-0.16,0.4l0.42,0.94l0.26,1.34l0.14,0.2l1.25,0.76l1.22,1.2l-0.71,1.2l-0.81,0.37l-0.17,0.32l0.34,1.99l-0.04,0.09l-0.47,-0.39l-0.17,-0.07l-1.2,-0.1l-1.85,0.57l-2.15,-0.13l-0.29,0.18l-0.21,0.5l-0.96,-0.67l-0.24,-0.05l-0.67,0.16l-2.6,-0.94l-0.34,0.1l-0.42,0.57l-1.64,-0.02l0.26,-1.88l1.24,-2.15l-0.21,-0.45l-3.54,-0.58l-0.98,-0.71l0.12,-1.26l-0.05,-0.2l-0.44,-0.64l0.27,-2.18l-0.38,-3.14l1.17,-0.0l0.27,-0.17l0.63,-1.26l0.65,-3.17l-0.02,-0.17l-0.41,-1.0l0.32,-0.47l1.77,-0.16l0.37,0.6l0.47,0.06l1.7,-1.69l0.06,-0.33l-0.55,-1.24l-0.09,-1.51l1.5,0.36l0.16,-0.01l1.22,-0.4Z\",\n            \"name\": \"Germany\"\n        },\n        \"YE\": {\n            \"path\": \"M553.53,242.65l-1.51,0.58l-0.17,0.16l-0.48,1.14l-0.07,0.79l-2.31,1.0l-3.98,1.19l-2.28,1.8l-0.97,0.12l-0.7,-0.14l-0.23,0.05l-1.42,1.03l-1.51,0.47l-2.07,0.13l-0.68,0.15l-0.17,0.1l-0.49,0.6l-0.57,0.16l-0.18,0.13l-0.3,0.49l-1.06,-0.05l-0.13,0.02l-0.73,0.32l-1.48,-0.11l-0.55,-1.26l0.07,-1.32l-0.04,-0.16l-0.39,-0.72l-0.48,-1.85l-0.52,-0.79l0.08,-0.02l0.22,-0.36l-0.23,-1.05l0.24,-0.39l0.04,-0.19l-0.09,-0.95l0.96,-0.72l0.11,-0.31l-0.23,-0.98l0.46,-0.88l0.75,0.49l0.26,0.03l0.63,-0.22l2.76,-0.06l0.5,0.25l2.42,0.26l0.85,-0.11l0.52,0.71l0.35,0.1l1.17,-0.43l0.15,-0.12l1.75,-2.64l2.22,-1.11l6.95,-0.96l2.55,5.58Z\",\n            \"name\": \"Yemen\"\n        },\n        \"AT\": {\n            \"path\": \"M463.17,154.15l-0.14,0.99l-1.15,0.01l-0.24,0.47l0.39,0.56l-0.75,1.84l-0.36,0.4l-2.06,0.07l-0.14,0.04l-1.18,0.67l-1.96,-0.23l-3.43,-0.78l-0.5,-0.97l-0.33,-0.16l-2.47,0.55l-0.2,0.16l-0.18,0.37l-1.27,-0.38l-1.28,-0.09l-0.81,-0.41l0.25,-0.51l0.03,-0.18l-0.05,-0.28l0.35,-0.08l1.16,0.81l0.45,-0.13l0.27,-0.64l2.0,0.12l1.84,-0.57l1.05,0.09l0.71,0.59l0.47,-0.11l0.23,-0.54l0.02,-0.17l-0.32,-1.85l0.69,-0.31l0.13,-0.12l0.73,-1.23l1.61,0.89l0.35,-0.04l1.35,-1.27l0.7,-0.19l1.84,0.93l0.18,0.03l1.08,-0.15l0.81,0.43l-0.07,0.15l-0.02,0.2l0.24,1.06Z\",\n            \"name\": \"Austria\"\n        },\n        \"DZ\": {\n            \"path\": \"M450.58,224.94l-8.31,4.86l-7.23,5.12l-3.46,1.13l-2.42,0.22l-0.02,-1.33l-0.2,-0.28l-1.15,-0.42l-1.45,-0.69l-0.55,-1.13l-0.1,-0.12l-8.45,-5.72l-17.72,-12.17l0.03,-0.38l-0.02,-3.21l3.84,-1.91l2.46,-0.41l2.1,-0.75l0.14,-0.11l0.9,-1.3l2.84,-1.06l0.19,-0.27l0.09,-1.81l1.21,-0.2l0.15,-0.07l1.06,-0.96l3.19,-0.46l0.23,-0.18l0.46,-1.08l-0.08,-0.34l-0.6,-0.54l-0.83,-2.85l-0.18,-1.8l-0.82,-1.57l2.13,-1.37l2.65,-0.49l0.13,-0.05l1.55,-1.15l2.34,-0.85l4.2,-0.51l4.07,-0.23l1.21,0.41l0.23,-0.01l2.3,-1.11l2.52,-0.02l0.94,0.62l0.2,0.05l1.25,-0.13l-0.36,1.03l-0.01,0.14l0.39,2.66l-0.56,2.2l-1.49,1.52l-0.08,0.24l0.22,2.12l0.11,0.2l1.94,1.58l0.02,0.54l0.12,0.23l1.45,1.06l1.04,4.85l0.81,2.42l0.13,1.19l-0.43,2.17l0.17,1.28l-0.31,1.53l0.2,1.56l-0.9,1.02l-0.01,0.38l1.43,1.88l0.09,1.06l0.04,0.13l0.89,1.48l0.37,0.12l1.03,-0.43l1.79,1.12l0.89,1.34Z\",\n            \"name\": \"Algeria\"\n        },\n        \"US\": {\n            \"path\": \"M892.64,99.05l1.16,0.57l0.21,0.02l1.45,-0.38l1.92,0.99l2.17,0.47l-1.65,0.72l-1.75,-0.79l-0.93,-0.7l-0.21,-0.06l-2.11,0.22l-0.35,-0.2l0.09,-0.87ZM183.29,150.37l0.39,1.54l0.12,0.17l0.78,0.55l0.14,0.05l1.74,0.2l2.52,0.5l2.4,0.98l0.17,0.02l1.96,-0.4l3.01,0.81l0.91,-0.02l2.22,-0.88l4.67,2.33l3.86,2.01l0.21,0.71l0.15,0.18l0.33,0.17l-0.02,0.05l0.23,0.43l0.67,0.1l0.21,-0.05l0.1,-0.07l0.05,0.29l0.09,0.16l0.5,0.5l0.21,0.09l0.56,0.0l0.13,0.13l-0.2,0.36l0.12,0.41l2.49,1.39l0.99,5.24l-0.69,1.68l-1.16,1.64l-0.6,1.18l-0.06,0.31l0.04,0.22l0.28,0.43l0.11,0.1l0.85,0.47l0.15,0.04l0.63,0.0l0.14,-0.04l2.87,-1.58l2.6,-0.49l3.28,-1.5l0.17,-0.23l0.04,-0.43l-0.23,-0.93l-0.24,-0.39l0.74,-0.32l4.7,-0.01l0.25,-0.13l0.77,-1.15l2.9,-2.41l1.04,-0.52l8.35,-0.02l0.28,-0.21l0.2,-0.6l0.7,-0.14l1.06,-0.48l0.13,-0.11l0.92,-1.49l0.75,-2.39l1.67,-2.08l0.59,0.6l0.3,0.07l1.52,-0.49l0.88,0.72l-0.0,4.14l0.08,0.2l1.6,1.72l0.31,0.72l-2.42,1.35l-2.55,1.05l-2.64,0.9l-0.14,0.11l-1.33,1.81l-0.44,0.7l-0.05,0.15l-0.03,1.6l0.03,0.14l0.83,1.59l0.24,0.16l0.78,0.06l-1.15,0.33l-1.25,-0.04l-1.83,0.52l-2.51,0.29l-2.17,0.88l-0.17,0.36l0.33,0.22l3.55,-0.54l0.15,0.11l-2.87,0.73l-1.19,0.0l-0.16,-0.33l-0.36,0.06l-0.76,0.82l0.17,0.5l0.42,0.08l-0.45,1.75l-1.4,1.74l-0.04,-0.17l-0.21,-0.22l-0.48,-0.13l-0.77,-0.69l-0.36,-0.03l-0.12,0.34l0.52,1.58l0.09,0.14l0.52,0.43l0.03,0.87l-0.74,1.05l-0.39,0.63l0.05,-0.12l-0.08,-0.34l-1.19,-1.03l-0.28,-2.31l-0.26,-0.26l-0.32,0.19l-0.48,1.27l-0.01,0.19l0.39,1.33l-1.14,-0.31l-0.36,0.18l0.14,0.38l1.57,0.85l0.1,2.58l0.22,0.28l0.55,0.15l0.21,0.81l0.33,2.72l-1.46,1.94l-2.5,0.81l-0.12,0.07l-1.58,1.58l-1.15,0.17l-0.15,0.06l-1.27,1.03l-0.09,0.13l-0.32,0.85l-2.71,1.79l-1.45,1.37l-1.18,1.64l-0.05,0.12l-0.39,1.96l0.0,0.13l0.44,1.91l0.85,2.37l1.1,1.91l0.03,1.2l1.16,3.07l-0.08,1.74l-0.1,0.99l-0.57,1.48l-0.54,0.24l-0.97,-0.26l-0.34,-1.02l-0.12,-0.16l-0.89,-0.58l-2.44,-4.28l-0.34,-0.94l0.49,-1.71l-0.02,-0.21l-0.7,-1.5l-2.0,-2.35l-0.11,-0.08l-0.98,-0.42l-0.25,0.01l-2.42,1.19l-0.26,-0.08l-1.26,-1.29l-1.57,-0.68l-0.16,-0.02l-2.79,0.34l-2.18,-0.3l-1.98,0.19l-1.12,0.45l-0.14,0.44l0.4,0.65l-0.04,1.02l0.09,0.22l0.29,0.3l-0.06,0.05l-0.77,-0.33l-0.26,0.01l-0.87,0.48l-1.64,-0.08l-1.79,-1.39l-0.23,-0.06l-2.11,0.33l-1.75,-0.61l-0.14,-0.01l-1.61,0.2l-2.11,0.64l-0.11,0.06l-2.25,1.99l-2.53,1.21l-1.43,1.38l-0.58,1.22l-0.03,0.12l-0.03,1.86l0.13,1.32l0.3,0.62l-0.46,0.04l-1.71,-0.57l-1.85,-0.79l-0.63,-1.14l-0.54,-1.85l-0.07,-0.12l-1.45,-1.51l-0.86,-1.58l-1.26,-1.87l-0.09,-0.09l-1.76,-1.09l-0.17,-0.04l-2.05,0.05l-0.23,0.12l-1.44,1.97l-1.84,-0.72l-1.19,-0.76l-0.6,-1.45l-0.9,-1.52l-1.49,-1.21l-1.27,-0.87l-0.89,-0.96l-0.22,-0.1l-4.34,-0.0l-0.3,0.3l-0.0,0.84l-6.62,0.02l-5.66,-1.93l-3.48,-1.24l0.11,-0.25l-0.3,-0.42l-3.18,0.3l-2.6,0.2l-0.35,-1.19l-0.08,-0.13l-1.62,-1.61l-0.13,-0.08l-1.02,-0.29l-0.22,-0.66l-0.25,-0.2l-1.31,-0.13l-0.82,-0.7l-0.16,-0.07l-2.25,-0.27l-0.48,-0.34l-0.28,-1.44l-0.07,-0.14l-2.41,-2.84l-2.03,-3.89l0.08,-0.58l-0.1,-0.27l-1.08,-0.94l-1.87,-2.36l-0.33,-2.31l-0.07,-0.15l-1.24,-1.5l0.52,-2.4l-0.09,-2.57l-0.78,-2.3l0.96,-2.83l0.61,-5.66l-0.46,-4.26l-0.79,-2.71l-0.68,-1.4l0.13,-0.26l3.24,0.97l1.28,2.88l0.52,0.06l0.62,-0.84l0.06,-0.22l-0.4,-2.61l-0.74,-2.29l68.9,-0.0l0.3,-0.3l0.01,-0.95l0.32,-0.01ZM32.5,67.43l1.75,1.99l0.41,0.04l1.02,-0.81l3.79,0.25l-0.1,0.72l0.24,0.34l3.83,0.77l2.6,-0.44l5.21,1.41l4.84,0.43l1.9,0.57l0.15,0.01l3.25,-0.71l3.72,1.32l2.52,0.58l-0.03,38.14l0.29,0.3l2.41,0.11l2.34,1.0l1.7,1.59l2.22,2.42l0.42,0.03l2.41,-2.04l2.25,-1.08l1.23,1.76l1.71,1.53l2.24,1.62l1.54,2.56l2.56,4.09l0.11,0.11l4.1,2.17l0.06,1.93l-1.12,1.35l-1.22,-1.14l-2.08,-1.05l-0.68,-2.94l-0.09,-0.16l-3.18,-2.84l-1.32,-3.35l-0.25,-0.19l-2.43,-0.24l-3.93,-0.09l-2.85,-1.02l-5.24,-3.85l-6.77,-2.04l-3.52,0.3l-4.84,-1.7l-2.96,-1.6l-0.23,-0.02l-2.78,0.8l-0.21,0.35l0.46,2.31l-1.11,0.19l-2.9,0.78l-2.24,1.26l-2.42,0.68l-0.29,-1.79l1.07,-3.49l2.54,-1.11l0.12,-0.45l-0.69,-0.96l-0.41,-0.07l-3.19,2.12l-1.76,2.54l-3.57,2.62l-0.03,0.46l1.63,1.59l-2.14,2.38l-2.64,1.49l-2.49,1.09l-0.16,0.17l-0.58,1.48l-3.8,1.79l-0.14,0.14l-0.75,1.57l-2.75,1.41l-1.62,-0.25l-0.16,0.02l-2.35,0.98l-2.54,1.19l-2.06,1.15l-4.05,0.93l-0.1,-0.15l2.45,-1.45l2.49,-1.1l2.61,-1.88l3.03,-0.39l0.19,-0.1l1.2,-1.41l3.43,-2.11l0.61,-0.75l1.81,-1.24l0.13,-0.2l0.42,-2.7l1.24,-2.12l-0.03,-0.35l-0.34,-0.09l-2.73,1.05l-0.67,-0.53l-0.39,0.02l-1.13,1.11l-1.43,-1.62l-0.49,0.06l-0.41,0.8l-0.67,-1.31l-0.42,-0.12l-2.43,1.43l-1.18,-0.0l-0.18,-1.86l0.43,-1.3l-0.09,-0.33l-1.61,-1.33l-0.26,-0.06l-3.11,0.68l-2.0,-1.66l-1.61,-0.85l-0.01,-1.97l-0.11,-0.23l-1.76,-1.48l0.86,-1.96l2.01,-2.13l0.88,-1.94l1.79,-0.25l1.65,0.6l0.31,-0.06l1.91,-1.8l1.67,0.31l0.22,-0.04l1.91,-1.23l0.13,-0.33l-0.47,-1.82l-0.15,-0.19l-1.0,-0.52l1.51,-1.27l0.09,-0.34l-0.29,-0.19l-1.62,0.06l-2.66,0.88l-0.13,0.09l-0.62,0.72l-1.77,-0.8l-0.16,-0.02l-3.48,0.44l-3.5,-0.92l-1.06,-1.61l-2.78,-2.09l3.07,-1.51l5.52,-2.01l1.65,0.0l-0.28,1.73l0.31,0.35l5.29,-0.16l0.23,-0.49l-2.03,-2.59l-0.1,-0.08l-3.03,-1.58l-1.79,-2.12l-2.4,-1.83l-3.18,-1.27l1.13,-1.84l4.28,-0.14l0.15,-0.05l3.16,-2.0l0.13,-0.17l0.57,-2.07l2.43,-2.02l2.42,-0.52l4.67,-1.98l2.22,0.29l0.2,-0.04l3.74,-2.37l3.57,0.91ZM37.66,123.49l-2.31,1.26l-1.04,-0.75l-0.31,-1.35l2.06,-1.16l1.24,-0.51l1.48,0.22l0.76,0.81l-1.89,1.49ZM30.89,233.84l1.2,0.57l0.35,0.3l0.48,0.69l-1.6,0.86l-0.3,0.31l-0.24,-0.14l0.05,-0.54l-0.02,-0.15l-0.36,-0.83l0.05,-0.12l0.39,-0.38l0.07,-0.31l-0.09,-0.27ZM29.06,231.89l0.5,0.14l0.31,0.19l-0.46,0.1l-0.34,-0.43ZM25.02,230.13l0.2,-0.11l0.4,0.47l-0.43,-0.05l-0.17,-0.31ZM21.29,228.68l0.1,-0.07l0.22,0.02l0.02,0.21l-0.02,0.02l-0.32,-0.18ZM6.0,113.33l-1.19,0.45l-1.5,-0.64l-0.94,-0.63l1.76,-0.46l1.71,0.29l0.16,0.98Z\",\n            \"name\": \"United States of America\"\n        },\n        \"LV\": {\"path\": \"M473.99,127.16l0.07,-2.15l1.15,-2.11l2.05,-1.07l1.84,2.48l0.25,0.12l2.01,-0.07l0.29,-0.25l0.45,-2.58l1.85,-0.56l0.98,0.4l2.13,1.33l0.16,0.05l1.97,0.01l1.02,0.7l0.21,1.67l0.71,1.84l-2.44,1.23l-1.36,0.53l-2.28,-1.62l-0.12,-0.05l-1.18,-0.2l-0.28,-0.6l-0.31,-0.17l-2.43,0.35l-4.17,-0.23l-0.12,0.02l-2.45,0.93Z\", \"name\": \"Latvia\"},\n        \"UY\": {\"path\": \"M276.9,363.17l1.3,-0.23l2.4,2.04l0.22,0.07l0.82,-0.07l2.48,1.7l1.93,1.5l1.28,1.67l-0.95,1.14l-0.04,0.31l0.63,1.45l-0.96,1.57l-2.65,1.47l-1.73,-0.53l-0.15,-0.01l-1.25,0.28l-2.22,-1.16l-0.16,-0.03l-1.56,0.08l-1.33,-1.36l0.17,-1.58l0.48,-0.55l0.07,-0.2l-0.02,-2.74l0.66,-2.8l0.57,-2.02Z\", \"name\": \"Uruguay\"},\n        \"LB\": {\"path\": \"M510.44,198.11l-0.48,0.03l-0.26,0.17l-0.15,0.32l-0.21,-0.0l0.72,-1.85l1.19,-1.9l0.74,0.09l0.27,0.73l-1.19,0.93l-0.09,0.13l-0.54,1.36Z\", \"name\": \"Lebanon\"},\n        \"LA\": {\n            \"path\": \"M684.87,248.8l0.61,-0.86l0.05,-0.16l0.11,-2.17l-0.08,-0.22l-1.96,-2.16l-0.15,-2.44l-0.08,-0.18l-1.9,-2.1l-0.19,-0.1l-1.89,-0.18l-0.29,0.15l-0.42,0.76l-1.21,0.06l-0.67,-0.41l-0.31,-0.0l-2.2,1.29l-0.05,-1.77l0.61,-2.7l-0.27,-0.37l-1.44,-0.1l-0.12,-1.31l-0.12,-0.21l-0.87,-0.65l0.38,-0.68l1.76,-1.41l0.08,0.22l0.27,0.2l1.33,0.07l0.31,-0.34l-0.35,-2.75l0.85,-0.25l1.32,1.88l1.11,2.36l0.27,0.17l2.89,0.02l0.78,1.82l-1.32,0.56l-0.12,0.09l-0.72,0.93l0.1,0.45l2.93,1.52l3.62,5.27l1.88,1.78l0.58,1.67l-0.38,2.11l-1.87,-0.79l-0.37,0.11l-0.99,1.54l-1.51,-0.73Z\",\n            \"name\": \"Laos\"\n        },\n        \"TW\": {\"path\": \"M725.6,222.5l-1.5,4.22l-0.82,1.65l-1.01,-1.7l-0.26,-1.8l1.4,-2.48l1.8,-1.81l0.76,0.53l-0.38,1.39Z\", \"name\": \"Taiwan\"},\n        \"TT\": {\"path\": \"M266.35,259.46l0.41,-0.39l0.09,-0.23l-0.04,-0.75l1.14,-0.26l0.2,0.03l-0.07,1.37l-1.73,0.23Z\", \"name\": \"Trinidad and Tobago\"},\n        \"TR\": {\n            \"path\": \"M513.25,175.38l3.63,1.17l0.14,0.01l2.88,-0.45l2.11,0.26l0.18,-0.03l2.9,-1.53l2.51,-0.13l2.25,1.37l0.36,0.88l-0.23,1.36l0.19,0.33l1.81,0.72l0.61,0.53l-1.31,0.64l-0.16,0.34l0.76,3.24l-0.44,0.8l0.01,0.3l1.19,2.02l-0.71,0.29l-0.74,-0.62l-0.15,-0.07l-2.91,-0.37l-0.15,0.02l-1.04,0.43l-2.78,0.44l-1.44,-0.03l-2.83,1.06l-1.95,0.01l-1.28,-0.52l-0.2,-0.01l-2.62,0.76l-0.7,-0.48l-0.47,0.22l-0.13,1.49l-1.01,0.94l-0.58,-0.82l0.79,-0.9l0.04,-0.34l-0.31,-0.15l-1.46,0.23l-2.03,-0.64l-0.3,0.07l-1.65,1.58l-3.58,0.3l-1.94,-1.47l-0.17,-0.06l-2.7,-0.1l-0.28,0.17l-0.51,1.06l-1.47,0.29l-2.32,-1.46l-0.17,-0.05l-2.55,0.05l-1.4,-2.7l-1.72,-1.54l1.11,-2.06l-0.07,-0.37l-1.35,-1.19l2.47,-2.51l3.74,-0.11l0.26,-0.17l0.96,-2.07l4.56,0.38l0.19,-0.05l2.97,-1.92l2.84,-0.83l4.03,-0.06l4.31,2.08ZM488.85,176.8l-1.81,1.38l-0.57,-1.01l0.02,-0.36l0.45,-0.25l0.13,-0.15l0.78,-1.87l-0.11,-0.37l-0.72,-0.47l1.91,-0.71l1.89,0.35l0.25,0.97l0.17,0.2l1.87,0.83l-0.19,0.31l-2.82,0.16l-0.18,0.07l-1.06,0.91Z\",\n            \"name\": \"Turkey\"\n        },\n        \"LK\": {\"path\": \"M625.44,266.07l-0.35,2.4l-0.9,0.61l-1.91,0.5l-1.04,-1.75l-0.43,-3.5l1.0,-3.6l1.34,1.09l1.13,1.72l1.16,2.52Z\", \"name\": \"Sri Lanka\"},\n        \"TN\": {\"path\": \"M444.91,206.18l-0.99,-4.57l-0.12,-0.18l-1.43,-1.04l-0.02,-0.53l-0.11,-0.22l-1.95,-1.59l-0.19,-1.85l1.44,-1.47l0.08,-0.14l0.59,-2.34l-0.38,-2.77l0.44,-1.28l2.52,-1.08l1.41,0.28l-0.06,1.2l0.43,0.28l1.81,-0.9l0.02,0.06l-1.14,1.28l-0.08,0.2l-0.02,1.32l0.11,0.24l0.74,0.6l-0.29,2.18l-1.56,1.35l-0.09,0.32l0.48,1.54l0.28,0.21l1.11,0.04l0.55,1.17l0.15,0.14l0.76,0.35l-0.12,1.79l-1.1,0.72l-0.8,0.91l-1.68,1.04l-0.13,0.32l0.25,1.08l-0.18,0.96l-0.74,0.39Z\", \"name\": \"Tunisia\"},\n        \"TL\": {\"path\": \"M734.21,307.22l0.17,-0.34l1.99,-0.52l1.72,-0.08l0.78,-0.3l0.29,0.1l-0.43,0.32l-2.57,1.09l-1.71,0.59l-0.05,-0.49l-0.19,-0.36Z\", \"name\": \"East Timor\"},\n        \"TM\": {\n            \"path\": \"M553.16,173.51l-0.12,1.0l-0.26,-0.65l0.38,-0.34ZM553.54,173.16l0.13,-0.12l0.43,-0.09l-0.56,0.21ZM555.68,172.6l0.65,-0.14l1.53,0.76l1.71,2.29l0.27,0.12l1.27,-0.14l2.81,-0.04l0.29,-0.38l-0.35,-1.27l1.98,-0.97l1.96,-1.63l3.05,1.44l0.25,2.23l0.14,0.22l0.96,0.61l0.18,0.05l2.61,-0.13l0.68,0.44l1.2,2.97l0.1,0.13l2.85,2.03l1.67,1.41l2.66,1.45l3.13,1.17l-0.05,1.23l-0.36,-0.04l-1.12,-0.73l-0.44,0.14l-0.34,0.89l-1.96,0.52l-0.22,0.23l-0.47,2.17l-1.26,0.78l-1.93,0.42l-0.21,0.18l-0.46,1.14l-1.64,0.33l-2.3,-0.97l-0.2,-2.23l-0.28,-0.27l-1.76,-0.1l-2.78,-2.48l-0.15,-0.07l-1.95,-0.31l-2.82,-1.48l-1.78,-0.27l-0.18,0.03l-1.03,0.51l-1.6,-0.08l-0.22,0.08l-1.72,1.6l-1.83,0.46l-0.39,-1.7l0.36,-3.0l-0.16,-0.3l-1.73,-0.88l0.57,-1.77l-0.25,-0.39l-1.33,-0.14l0.41,-1.85l2.05,0.63l0.21,-0.01l2.2,-0.95l0.09,-0.49l-1.78,-1.75l-0.69,-1.66l-0.07,-0.03Z\",\n            \"name\": \"Turkmenistan\"\n        },\n        \"TJ\": {\n            \"path\": \"M597.99,178.71l-0.23,0.23l-2.57,-0.47l-0.35,0.25l-0.24,1.7l0.32,0.34l2.66,-0.22l3.15,0.95l4.47,-0.42l0.58,2.45l0.39,0.21l0.71,-0.25l1.22,0.53l-0.06,1.01l0.29,1.28l-2.19,-0.0l-1.71,-0.21l-0.23,0.07l-1.51,1.25l-1.05,0.27l-0.77,0.51l-0.71,-0.67l0.22,-2.28l-0.24,-0.32l-0.43,-0.08l0.17,-0.57l-0.16,-0.36l-1.36,-0.66l-0.34,0.05l-1.08,1.01l-0.09,0.15l-0.25,1.09l-0.24,0.26l-1.36,-0.05l-0.27,0.14l-0.65,1.06l-0.58,-0.39l-0.3,-0.02l-1.68,0.86l-0.36,-0.16l1.28,-2.65l0.02,-0.2l-0.54,-2.17l-0.18,-0.21l-1.53,-0.58l0.41,-0.82l1.89,0.13l0.26,-0.12l1.19,-1.63l0.77,-1.82l2.66,-0.55l-0.33,0.87l0.01,0.23l0.36,0.82l0.3,0.18l0.23,-0.02Z\",\n            \"name\": \"Tajikistan\"\n        },\n        \"LS\": {\"path\": \"M493.32,359.69l0.69,0.65l-0.65,1.12l-0.38,0.8l-1.27,0.39l-0.18,0.15l-0.4,0.77l-0.59,0.18l-1.59,-1.78l1.16,-1.5l1.3,-1.02l0.97,-0.46l0.94,0.72Z\", \"name\": \"Lesotho\"},\n        \"TH\": {\n            \"path\": \"M677.42,253.68l-1.7,-0.88l-0.14,-0.03l-1.77,0.04l0.3,-1.64l-0.3,-0.35l-2.21,0.01l-0.3,0.28l-0.2,2.76l-2.15,5.9l-0.02,0.13l0.17,1.83l0.28,0.27l1.45,0.07l0.93,2.1l0.44,2.15l0.08,0.15l1.4,1.44l0.16,0.09l1.43,0.27l1.04,1.05l-0.58,0.73l-1.24,0.22l-0.15,-0.99l-0.15,-0.22l-2.04,-1.1l-0.36,0.06l-0.23,0.23l-0.72,-0.71l-0.41,-1.18l-0.06,-0.11l-1.33,-1.42l-1.22,-1.2l-0.5,0.13l-0.15,0.54l-0.14,-0.41l0.26,-1.48l0.73,-2.38l1.2,-2.57l1.37,-2.35l0.02,-0.27l-0.95,-2.26l0.03,-1.19l-0.29,-1.42l-0.06,-0.13l-1.65,-2.0l-0.46,-0.99l0.62,-0.34l0.13,-0.15l0.92,-2.23l-0.02,-0.27l-1.05,-1.74l-1.57,-1.86l-1.04,-1.96l0.76,-0.34l0.16,-0.16l1.07,-2.63l1.58,-0.1l0.16,-0.06l1.43,-1.11l1.24,-0.52l0.84,0.62l0.13,1.43l0.28,0.27l1.34,0.09l-0.54,2.39l0.05,2.39l0.45,0.25l2.48,-1.45l0.6,0.36l0.17,0.04l1.47,-0.07l0.25,-0.15l0.41,-0.73l1.58,0.15l1.76,1.93l0.15,2.44l0.08,0.18l1.94,2.15l-0.1,1.96l-0.66,0.93l-2.25,-0.34l-3.24,0.49l-0.19,0.12l-1.6,2.12l-0.06,0.24l0.48,2.46Z\",\n            \"name\": \"Thailand\"\n        },\n        \"TF\": {\"path\": \"M593.76,417.73l1.38,0.84l2.15,0.37l0.04,0.31l-0.59,1.24l-3.36,0.19l-0.05,-1.38l0.43,-1.56Z\", \"name\": \"French Southern and Antarctic Lands\"},\n        \"TG\": {\"path\": \"M425.23,269.29l-1.49,0.4l-0.43,-0.68l-0.64,-1.54l-0.18,-1.16l0.54,-2.21l-0.04,-0.24l-0.59,-0.86l-0.23,-1.9l0.0,-1.82l-0.07,-0.19l-0.95,-1.19l0.1,-0.41l1.58,0.04l-0.23,0.97l0.08,0.28l1.55,1.55l0.09,1.13l0.08,0.19l0.42,0.43l-0.11,5.66l0.52,1.53Z\", \"name\": \"Togo\"},\n        \"TD\": {\n            \"path\": \"M457.57,252.46l0.23,-1.08l-0.28,-0.36l-1.32,-0.05l0.0,-1.35l-0.1,-0.22l-0.9,-0.82l0.99,-3.1l3.12,-2.37l0.12,-0.23l0.13,-3.33l0.95,-5.2l0.53,-1.09l-0.07,-0.36l-0.94,-0.81l-0.03,-0.7l-0.12,-0.23l-0.84,-0.61l-0.57,-3.76l2.21,-1.26l19.67,9.88l0.12,9.74l-1.83,-0.15l-0.28,0.14l-1.14,1.89l-0.68,1.62l0.05,0.31l0.33,0.38l-0.61,0.58l-0.08,0.3l0.25,0.93l-0.58,0.95l-0.29,1.01l0.34,0.37l0.67,-0.11l0.39,0.73l0.03,1.4l0.11,0.23l0.8,0.65l-0.01,0.24l-1.38,0.37l-0.11,0.06l-1.27,1.03l-1.83,2.76l-2.21,1.1l-2.34,-0.15l-0.82,0.25l-0.2,0.37l0.19,0.68l-1.16,0.79l-1.01,0.94l-2.92,0.89l-0.5,-0.46l-0.17,-0.08l-0.41,-0.05l-0.28,0.12l-0.38,0.54l-1.36,0.12l0.1,-0.18l0.01,-0.27l-0.78,-1.72l-0.35,-1.03l-0.17,-0.18l-1.03,-0.41l-1.29,-1.28l0.36,-0.78l0.9,0.2l0.14,-0.0l0.67,-0.17l1.36,0.02l0.26,-0.45l-1.32,-2.22l0.09,-1.64l-0.17,-1.68l-0.04,-0.13l-0.93,-1.53Z\",\n            \"name\": \"Chad\"\n        },\n        \"LY\": {\n            \"path\": \"M457.99,226.38l-1.57,0.87l-1.25,-1.28l-0.13,-0.08l-3.85,-1.11l-1.04,-1.57l-0.09,-0.09l-1.98,-1.23l-0.27,-0.02l-0.93,0.39l-0.72,-1.2l-0.09,-1.07l-0.06,-0.16l-1.33,-1.75l0.83,-0.94l0.07,-0.24l-0.21,-1.64l0.31,-1.43l-0.17,-1.29l0.43,-2.26l-0.15,-1.33l-0.73,-2.18l0.99,-0.52l0.16,-0.21l0.22,-1.16l-0.22,-1.06l1.54,-0.95l0.81,-0.92l1.19,-0.78l0.14,-0.23l0.12,-1.76l2.57,0.84l0.16,0.01l0.99,-0.23l2.01,0.45l3.19,1.2l1.12,2.36l0.2,0.16l2.24,0.53l3.5,1.14l2.65,1.36l0.29,-0.01l1.22,-0.71l1.27,-1.32l0.07,-0.29l-0.55,-2.0l0.69,-1.19l1.7,-1.23l1.61,-0.35l3.2,0.54l0.78,1.14l0.24,0.13l0.85,0.01l0.84,0.47l2.35,0.31l0.42,0.63l-0.79,1.16l-0.04,0.26l0.35,1.08l-0.61,1.6l-0.0,0.2l0.73,2.16l0.0,24.24l-2.58,0.01l-0.3,0.29l-0.02,0.62l-19.55,-9.83l-0.28,0.01l-2.53,1.44Z\",\n            \"name\": \"Libya\"\n        },\n        \"AE\": {\"path\": \"M550.59,223.8l0.12,0.08l1.92,-0.41l3.54,0.15l0.23,-0.09l1.71,-1.79l1.86,-1.7l1.31,-1.36l0.26,0.5l0.28,1.72l-0.93,0.01l-0.3,0.26l-0.21,1.73l0.11,0.27l0.08,0.06l-0.7,0.32l-0.17,0.27l-0.01,0.99l-0.68,1.02l-0.05,0.15l-0.06,0.96l-0.32,0.36l-7.19,-1.27l-0.79,-2.22Z\", \"name\": \"United Arab Emirates\"},\n        \"VE\": {\n            \"path\": \"M240.66,256.5l0.65,0.91l-0.03,1.13l-1.05,1.39l-0.03,0.31l0.95,2.0l0.32,0.17l1.08,-0.16l0.24,-0.21l0.56,-1.83l-0.06,-0.29l-0.71,-0.81l-0.1,-1.58l2.9,-0.96l0.19,-0.37l-0.29,-1.02l0.45,-0.41l0.72,1.43l0.26,0.16l1.65,0.04l1.46,1.27l0.08,0.72l0.3,0.27l2.28,0.02l2.55,-0.25l1.34,1.06l0.14,0.06l1.92,0.31l0.2,-0.03l1.4,-0.79l0.15,-0.25l0.02,-0.36l2.82,-0.14l1.17,-0.01l-0.41,0.14l-0.14,0.46l0.86,1.19l0.22,0.12l1.93,0.18l1.73,1.13l0.37,1.9l0.31,0.24l1.21,-0.05l0.52,0.32l-1.63,1.21l-0.11,0.17l-0.22,0.92l0.07,0.27l0.63,0.69l-0.31,0.24l-1.48,0.39l-0.22,0.3l0.04,1.03l-0.59,0.6l-0.01,0.41l1.67,1.87l0.23,0.48l-0.72,0.76l-2.71,0.91l-1.78,0.39l-0.13,0.06l-0.6,0.49l-1.84,-0.58l-1.89,-0.33l-0.18,0.03l-0.47,0.23l-0.02,0.53l0.96,0.56l-0.08,1.58l0.35,1.58l0.26,0.23l1.91,0.19l0.02,0.07l-1.54,0.62l-0.18,0.2l-0.25,0.92l-0.88,0.35l-1.85,0.58l-0.16,0.13l-0.4,0.64l-1.66,0.14l-1.22,-1.18l-0.79,-2.52l-0.67,-0.88l-0.66,-0.43l0.99,-0.98l0.09,-0.26l-0.09,-0.56l-0.08,-0.16l-0.66,-0.69l-0.47,-1.54l0.18,-1.67l0.55,-0.85l0.45,-1.35l-0.15,-0.36l-0.89,-0.43l-0.19,-0.02l-1.39,0.28l-1.76,-0.13l-0.92,0.23l-1.64,-2.01l-0.17,-0.1l-1.54,-0.33l-3.05,0.23l-0.5,-0.73l-0.15,-0.12l-0.45,-0.15l-0.05,-0.28l0.28,-0.86l0.01,-0.15l-0.2,-1.01l-0.08,-0.15l-0.5,-0.5l-0.3,-1.08l-0.25,-0.22l-0.89,-0.12l0.54,-1.18l0.29,-1.73l0.66,-0.85l0.94,-0.7l0.09,-0.11l0.3,-0.6Z\",\n            \"name\": \"Venezuela\"\n        },\n        \"AF\": {\n            \"path\": \"M574.42,192.1l2.24,0.95l0.18,0.02l1.89,-0.38l0.22,-0.18l0.46,-1.14l1.82,-0.4l1.5,-0.91l0.14,-0.19l0.46,-2.12l1.93,-0.51l0.2,-0.18l0.26,-0.68l0.87,0.57l0.13,0.05l0.79,0.09l1.35,0.02l1.83,0.59l0.75,0.34l0.26,-0.01l1.66,-0.85l0.7,0.46l0.42,-0.09l0.72,-1.17l1.32,0.05l0.23,-0.1l0.39,-0.43l0.07,-0.14l0.24,-1.08l0.86,-0.81l0.94,0.46l-0.2,0.64l0.23,0.38l0.49,0.09l-0.21,2.15l0.09,0.25l0.99,0.94l0.38,0.03l0.83,-0.57l1.06,-0.27l0.12,-0.06l1.46,-1.21l1.63,0.2l2.4,0.0l0.17,0.32l-1.12,0.25l-1.23,0.52l-2.86,0.33l-2.69,0.6l-0.13,0.06l-1.46,1.25l-0.07,0.36l0.58,1.18l0.25,1.21l-1.13,1.08l-0.09,0.25l0.09,0.98l-0.53,0.79l-2.22,-0.08l-0.28,0.44l0.83,1.57l-1.3,0.58l-0.13,0.11l-1.06,1.69l-0.05,0.18l0.13,1.51l-0.73,0.58l-0.78,-0.22l-0.14,-0.01l-1.91,0.36l-0.23,0.19l-0.2,0.57l-1.65,-0.0l-0.22,0.1l-1.4,1.56l-0.08,0.19l-0.08,2.13l-2.99,1.05l-1.67,-0.23l-0.27,0.1l-0.39,0.46l-1.43,-0.31l-2.43,0.4l-3.69,-1.23l1.96,-2.15l0.08,-0.24l-0.21,-1.78l-0.23,-0.26l-1.69,-0.42l-0.19,-1.62l-0.77,-2.08l0.98,-1.41l-0.14,-0.45l-0.82,-0.31l0.6,-1.79l0.93,-3.21Z\",\n            \"name\": \"Afghanistan\"\n        },\n        \"IQ\": {\"path\": \"M534.42,190.89l0.13,0.14l1.5,0.78l0.15,1.34l-1.13,0.87l-0.11,0.16l-0.58,2.2l0.04,0.24l1.73,2.67l0.12,0.1l2.99,1.49l1.18,1.94l-0.39,1.89l0.29,0.36l0.5,-0.0l0.02,1.17l0.08,0.2l0.83,0.86l-2.36,-0.29l-0.29,0.13l-1.74,2.49l-4.4,-0.21l-7.03,-5.49l-3.73,-1.94l-2.92,-0.74l-0.89,-3.0l5.33,-2.81l0.15,-0.19l0.95,-3.43l-0.2,-2.0l1.19,-0.61l0.11,-0.09l1.23,-1.73l0.92,-0.38l2.75,0.35l0.81,0.68l0.31,0.05l0.94,-0.38l1.5,3.17Z\", \"name\": \"Iraq\"},\n        \"IS\": {\"path\": \"M384.26,87.96l-0.51,2.35l0.08,0.28l2.61,2.58l-2.99,2.83l-7.16,2.72l-2.08,0.7l-9.51,-1.71l1.89,-1.36l-0.07,-0.53l-4.4,-1.59l3.33,-0.59l0.25,-0.32l-0.11,-1.2l-0.25,-0.27l-4.82,-0.88l1.38,-2.2l3.54,-0.57l3.8,2.74l0.33,0.01l3.68,-2.18l3.02,1.12l0.25,-0.02l4.01,-2.18l3.72,0.27Z\", \"name\": \"Iceland\"},\n        \"IR\": {\n            \"path\": \"M556.2,187.5l2.05,-0.52l0.13,-0.07l1.69,-1.57l1.55,0.08l0.15,-0.03l1.02,-0.5l1.64,0.25l2.82,1.48l1.91,0.3l2.8,2.49l0.18,0.08l1.61,0.09l0.19,2.09l-1.0,3.47l-0.69,2.04l0.18,0.38l0.73,0.28l-0.85,1.22l-0.04,0.28l0.81,2.19l0.19,1.72l0.23,0.26l1.69,0.42l0.17,1.43l-2.18,2.39l-0.01,0.4l1.22,1.42l1.0,1.62l0.12,0.11l2.23,1.11l0.06,2.2l0.2,0.27l1.03,0.38l0.14,0.83l-3.38,1.3l-0.18,0.19l-0.87,2.85l-4.44,-0.76l-2.75,-0.62l-2.64,-0.32l-1.01,-3.11l-0.17,-0.19l-1.2,-0.48l-0.18,-0.01l-1.99,0.51l-2.42,1.25l-2.89,-0.84l-2.48,-2.03l-2.41,-0.79l-1.61,-2.47l-1.84,-3.63l-0.36,-0.15l-1.22,0.4l-1.48,-0.84l-0.37,0.06l-0.72,0.82l-1.08,-1.12l-0.02,-1.35l-0.3,-0.29l-0.43,0.0l0.34,-1.64l-0.04,-0.22l-1.29,-2.11l-0.12,-0.11l-3.0,-1.49l-1.62,-2.49l0.52,-1.98l1.18,-0.92l0.11,-0.27l-0.19,-1.66l-0.16,-0.23l-1.55,-0.81l-1.58,-3.33l-1.3,-2.2l0.41,-0.75l0.03,-0.21l-0.73,-3.12l1.2,-0.59l0.35,0.9l1.26,1.35l0.15,0.09l1.81,0.39l0.91,-0.09l0.15,-0.06l2.9,-2.13l0.7,-0.16l0.48,0.56l-0.75,1.26l0.05,0.37l1.56,1.53l0.28,0.08l0.37,-0.09l0.7,1.89l0.21,0.19l2.31,0.59l1.69,1.4l0.15,0.07l3.66,0.49l3.91,-0.76l0.23,-0.19l0.19,-0.52Z\",\n            \"name\": \"Iran\"\n        },\n        \"AM\": {\"path\": \"M530.51,176.08l2.91,-0.39l0.41,0.63l0.11,0.1l0.66,0.36l-0.32,0.47l0.07,0.41l1.1,0.84l-0.53,0.7l0.06,0.42l1.06,0.8l1.01,0.44l0.04,1.56l-0.44,0.04l-0.88,-1.46l0.01,-0.37l-0.3,-0.31l-0.98,0.01l-0.65,-0.69l-0.26,-0.09l-0.38,0.06l-0.97,-0.82l-1.64,-0.65l0.2,-1.2l-0.02,-0.16l-0.28,-0.69Z\", \"name\": \"Armenia\"},\n        \"IT\": {\n            \"path\": \"M451.68,158.58l0.2,0.16l3.3,0.75l-0.22,1.26l0.02,0.18l0.35,0.78l-1.4,-0.32l-0.21,0.03l-2.04,1.1l-0.16,0.29l0.13,1.47l-0.29,0.82l0.02,0.24l0.82,1.57l0.1,0.11l2.28,1.5l1.29,2.53l2.79,2.43l0.2,0.07l1.83,-0.02l0.31,0.34l-0.46,0.39l0.06,0.5l4.06,1.97l2.06,1.49l0.17,0.36l-0.24,0.53l-1.08,-1.07l-0.15,-0.08l-2.18,-0.49l-0.33,0.15l-1.05,1.91l0.11,0.4l1.63,0.98l-0.22,1.12l-0.84,0.14l-0.22,0.15l-1.27,2.38l-0.54,0.12l0.01,-0.47l0.48,-1.46l0.5,-0.58l0.03,-0.35l-0.97,-1.69l-0.76,-1.48l-0.17,-0.15l-0.94,-0.33l-0.68,-1.18l-0.16,-0.13l-1.53,-0.52l-1.03,-1.14l-0.19,-0.1l-1.78,-0.19l-1.88,-1.3l-2.27,-1.94l-1.64,-1.68l-0.76,-2.94l-0.21,-0.21l-1.22,-0.35l-2.01,-1.0l-0.24,-0.01l-1.15,0.42l-0.11,0.07l-1.38,1.36l-0.5,0.11l0.19,-0.87l-0.21,-0.35l-1.19,-0.34l-0.56,-2.06l0.76,-0.82l0.03,-0.36l-0.68,-1.08l0.04,-0.31l0.68,0.42l0.19,0.04l1.21,-0.15l0.14,-0.06l1.18,-0.89l0.25,0.29l0.25,0.1l1.19,-0.1l0.25,-0.18l0.45,-1.04l1.61,0.34l0.19,-0.02l1.1,-0.53l0.17,-0.22l0.15,-0.95l1.19,0.35l0.35,-0.16l0.23,-0.47l2.11,-0.47l0.45,0.89ZM459.35,184.63l-0.71,1.81l0.0,0.23l0.33,0.79l-0.37,1.03l-1.6,-0.91l-1.33,-0.34l-3.24,-1.36l0.23,-0.99l2.73,0.24l3.95,-0.5ZM443.95,175.91l1.26,1.77l-0.31,3.47l-0.82,-0.13l-0.26,0.08l-0.83,0.79l-0.64,-0.52l-0.1,-3.42l-0.44,-1.34l0.91,0.1l0.21,-0.06l1.01,-0.74Z\",\n            \"name\": \"Italy\"\n        },\n        \"VN\": {\n            \"path\": \"M690.8,230.21l-2.86,1.93l-2.09,2.46l-0.06,0.11l-0.55,1.8l0.04,0.26l4.26,6.1l2.31,1.63l1.46,1.97l1.12,4.62l-0.32,4.3l-1.97,1.57l-2.85,1.62l-2.09,2.14l-2.83,2.13l-0.67,-1.19l0.65,-1.58l-0.09,-0.35l-1.47,-1.14l1.67,-0.79l2.57,-0.18l0.22,-0.47l-0.89,-1.24l3.88,-1.8l0.17,-0.24l0.31,-3.05l-0.01,-0.13l-0.56,-1.63l0.44,-2.48l-0.01,-0.15l-0.63,-1.81l-0.08,-0.12l-1.87,-1.77l-3.64,-5.3l-0.11,-0.1l-2.68,-1.39l0.45,-0.59l1.53,-0.65l0.16,-0.39l-0.97,-2.27l-0.27,-0.18l-2.89,-0.02l-1.04,-2.21l-1.28,-1.83l0.96,-0.46l1.97,0.01l2.43,-0.3l0.13,-0.05l1.95,-1.29l1.04,0.85l0.13,0.06l1.98,0.42l-0.32,1.21l0.09,0.3l1.19,1.07l0.12,0.07l1.88,0.51Z\",\n            \"name\": \"Vietnam\"\n        },\n        \"AR\": {\n            \"path\": \"M258.11,341.34l1.4,1.81l0.51,-0.06l0.89,-1.94l2.51,0.1l0.36,0.49l4.6,4.31l0.15,0.08l1.99,0.39l3.01,1.93l2.5,1.01l0.28,0.91l-2.4,3.97l0.17,0.44l2.57,0.74l2.81,0.41l2.09,-0.44l0.14,-0.07l2.27,-2.06l0.09,-0.17l0.38,-2.2l0.88,-0.36l1.05,1.29l-0.04,1.88l-1.98,1.4l-1.72,1.13l-2.84,2.65l-3.34,3.73l-0.07,0.12l-0.63,2.22l-0.67,2.85l0.02,2.73l-0.47,0.54l-0.07,0.17l-0.36,3.28l0.12,0.27l3.03,2.32l-0.31,1.78l0.11,0.29l1.44,1.15l-0.11,1.17l-2.32,3.57l-3.59,1.51l-4.95,0.6l-2.72,-0.29l-0.32,0.38l0.5,1.67l-0.49,2.13l0.01,0.16l0.4,1.29l-1.27,0.88l-2.41,0.39l-2.33,-1.05l-0.31,0.04l-0.97,0.78l-0.11,0.27l0.35,2.98l0.16,0.23l1.69,0.91l0.31,-0.02l1.08,-0.75l0.46,0.96l-2.1,0.88l-2.01,1.89l-0.09,0.18l-0.36,3.05l-0.51,1.42l-2.16,0.01l-0.19,0.07l-1.96,1.59l-0.1,0.15l-0.72,2.34l0.08,0.31l2.46,2.31l0.13,0.07l2.09,0.56l-0.74,2.45l-2.86,1.75l-0.12,0.14l-1.59,3.71l-2.2,1.24l-0.1,0.09l-1.03,1.54l-0.04,0.23l0.81,3.45l0.06,0.13l1.13,1.32l-2.59,-0.57l-5.89,-0.44l-0.92,-1.73l0.05,-2.4l-0.34,-0.3l-1.49,0.19l-0.72,-0.98l-0.2,-3.21l1.79,-1.33l0.1,-0.13l0.79,-2.04l0.02,-0.16l-0.27,-1.52l1.31,-2.69l0.91,-4.15l-0.23,-1.72l0.91,-0.49l0.15,-0.33l-0.27,-1.16l-0.15,-0.2l-0.87,-0.46l0.65,-1.01l-0.04,-0.37l-1.06,-1.09l-0.54,-3.2l0.83,-0.51l0.14,-0.29l-0.42,-3.6l0.58,-2.98l0.64,-2.5l1.41,-1.0l0.12,-0.32l-0.75,-2.8l-0.01,-2.48l1.81,-1.78l0.09,-0.22l-0.06,-2.3l1.39,-2.69l0.03,-0.14l0.01,-2.58l-0.11,-0.24l-0.57,-0.45l-1.1,-4.59l1.49,-2.73l0.04,-0.17l-0.23,-2.59l0.86,-2.38l1.6,-2.48l1.74,-1.65l0.04,-0.39l-0.64,-0.89l0.42,-0.7l0.04,-0.16l-0.08,-4.26l2.55,-1.23l0.16,-0.18l0.86,-2.75l-0.01,-0.22l-0.22,-0.48l1.84,-2.1l3.0,0.59ZM256.77,438.98l-2.1,0.15l-1.18,-1.14l-0.19,-0.08l-1.53,-0.09l-2.38,-0.0l-0.0,-6.28l0.4,0.65l1.25,2.55l0.11,0.12l3.26,2.07l3.19,0.8l-0.82,1.26Z\",\n            \"name\": \"Argentina\"\n        },\n        \"AU\": {\n            \"path\": \"M705.55,353.06l0.09,0.09l0.37,0.05l0.13,-0.35l-0.57,-1.69l0.48,0.3l0.71,0.99l0.34,0.11l0.2,-0.29l-0.04,-1.37l-0.04,-0.14l-1.22,-2.07l-0.28,-0.9l-0.51,-0.69l0.24,-1.33l0.52,-0.7l0.34,-1.32l0.01,-0.13l-0.25,-1.44l0.51,-0.94l0.1,1.03l0.23,0.26l0.32,-0.14l1.01,-1.72l1.94,-0.84l1.27,-1.14l1.84,-0.92l1.0,-0.18l0.6,0.28l0.26,-0.0l1.94,-0.96l1.48,-0.28l0.19,-0.13l0.32,-0.49l0.51,-0.18l1.42,0.05l2.63,-0.76l0.11,-0.06l1.36,-1.15l0.08,-0.1l0.61,-1.33l1.42,-1.27l0.1,-0.19l0.11,-1.03l0.06,-1.32l1.39,-1.74l0.85,1.79l0.4,0.14l1.07,-0.51l0.11,-0.45l-0.77,-1.05l0.53,-0.84l0.86,0.43l0.43,-0.22l0.29,-1.85l1.29,-1.19l0.6,-0.98l1.16,-0.4l0.2,-0.27l0.02,-0.34l0.74,0.2l0.38,-0.27l0.03,-0.44l1.98,-0.61l1.7,1.08l1.36,1.48l0.22,0.1l1.55,0.02l1.57,0.24l0.33,-0.4l-0.48,-1.27l1.09,-1.86l1.06,-0.63l0.1,-0.42l-0.28,-0.46l0.93,-1.24l1.36,-0.8l1.16,0.27l0.14,0.0l2.1,-0.48l0.23,-0.3l-0.05,-1.3l-0.18,-0.26l-1.08,-0.49l0.44,-0.12l1.52,0.58l1.39,1.06l2.11,0.65l0.19,-0.0l0.59,-0.21l1.44,0.72l0.27,0.0l1.37,-0.68l0.84,0.2l0.26,-0.06l0.37,-0.3l0.82,0.89l-0.56,1.14l-0.84,0.91l-0.75,0.07l-0.26,0.38l0.26,0.9l-0.67,1.15l-0.88,1.24l-0.05,0.25l0.18,0.72l0.12,0.17l1.99,1.42l1.96,0.84l1.25,0.86l1.8,1.51l0.19,0.07l0.63,-0.0l1.15,0.58l0.34,0.7l0.17,0.15l2.39,0.88l0.24,-0.02l1.65,-0.88l0.14,-0.16l0.49,-1.37l0.52,-1.19l0.31,-1.39l0.75,-2.02l0.01,-0.19l-0.33,-1.16l0.16,-0.67l0.0,-0.13l-0.28,-1.41l0.3,-1.78l0.42,-0.45l0.05,-0.33l-0.33,-0.73l0.56,-1.25l0.48,-1.39l0.07,-0.69l0.58,-0.59l0.48,0.84l0.17,1.53l0.17,0.24l0.47,0.23l0.09,0.9l0.05,0.14l0.87,1.23l0.17,1.33l-0.09,0.89l0.03,0.15l0.9,2.0l0.43,0.13l1.38,-0.83l0.71,0.92l1.06,0.88l-0.22,0.96l0.0,0.14l0.53,2.2l0.38,1.3l0.15,0.18l0.52,0.26l0.62,2.01l-0.23,1.27l0.02,0.18l0.81,1.76l0.14,0.14l2.69,1.35l3.21,2.21l-0.2,0.4l0.04,0.34l1.39,1.6l0.95,2.78l0.43,0.16l0.79,-0.46l0.85,0.96l0.39,0.05l0.22,-0.15l0.36,2.33l0.09,0.18l1.78,1.63l1.16,1.01l1.9,2.1l0.67,2.05l0.06,1.47l-0.17,1.64l0.03,0.17l1.16,2.22l-0.14,2.28l-0.43,1.24l-0.68,2.44l0.04,1.63l-0.48,1.92l-1.06,2.43l-1.79,1.32l-0.1,0.12l-0.91,2.15l-0.82,1.37l-0.76,2.47l-0.98,1.46l-0.63,2.14l-0.33,2.02l0.1,0.82l-1.21,0.85l-2.71,0.1l-0.13,0.03l-2.31,1.19l-1.21,1.17l-1.34,1.11l-1.89,-1.18l-1.33,-0.46l0.32,-1.24l-0.4,-0.35l-1.46,0.61l-2.06,1.98l-1.99,-0.73l-1.43,-0.46l-1.45,-0.22l-2.32,-0.81l-1.51,-1.67l-0.45,-2.11l-0.6,-1.5l-0.07,-0.11l-1.23,-1.16l-0.16,-0.08l-1.96,-0.28l0.59,-0.99l0.03,-0.24l-0.61,-2.1l-0.54,-0.08l-1.16,1.85l-1.23,0.29l0.73,-0.88l0.06,-0.12l0.37,-1.57l0.93,-1.33l0.05,-0.2l-0.2,-2.07l-0.53,-0.17l-2.01,2.35l-1.52,0.94l-0.12,0.14l-0.82,1.93l-1.5,-0.9l0.07,-1.32l-0.06,-0.2l-1.57,-2.04l-1.15,-0.92l0.3,-0.41l-0.1,-0.44l-3.21,-1.69l-0.13,-0.03l-1.69,-0.08l-2.35,-1.31l-0.16,-0.04l-4.55,0.27l-3.24,0.99l-2.8,0.91l-2.33,-0.18l-0.17,0.03l-2.63,1.41l-2.14,0.64l-0.2,0.19l-0.47,1.42l-0.8,0.99l-1.99,0.06l-1.55,0.24l-2.27,-0.5l-1.79,0.3l-1.71,0.13l-0.19,0.09l-1.38,1.39l-0.58,-0.1l-0.21,0.04l-1.26,0.8l-1.13,0.85l-1.72,-0.1l-1.6,-0.0l-2.58,-1.76l-1.21,-0.49l0.04,-1.19l1.04,-0.32l0.16,-0.12l0.42,-0.64l0.05,-0.19l-0.09,-0.97l0.3,-2.0l-0.28,-1.64l-1.34,-2.84l-0.39,-1.49l0.1,-1.51l-0.04,-0.17l-0.96,-1.72l-0.06,-0.73l-0.09,-0.19l-1.04,-1.01l-0.3,-2.02l-0.05,-0.12l-1.23,-1.83ZM784.95,393.35l2.39,1.01l0.2,0.01l3.26,-0.96l1.19,0.16l0.16,3.19l-0.78,0.95l-0.07,0.16l-0.19,1.83l-0.43,-0.41l-0.44,0.03l-1.61,1.96l-0.4,-0.12l-1.38,-0.09l-1.43,-2.42l-0.37,-2.03l-1.4,-2.53l0.04,-0.94l1.27,0.2Z\",\n            \"name\": \"Australia\"\n        },\n        \"IL\": {\"path\": \"M509.04,199.22l0.71,0.0l0.27,-0.17l0.15,-0.33l0.19,-0.01l0.02,0.73l-0.27,0.34l0.02,0.08l-0.32,0.62l-0.65,-0.27l-0.41,0.19l-0.52,1.85l0.16,0.35l0.14,0.07l-0.17,0.1l-0.14,0.21l-0.11,0.73l0.39,0.33l0.81,-0.26l0.03,0.64l-0.97,3.43l-1.28,-3.67l0.62,-0.78l-0.03,-0.41l0.58,-1.16l0.5,-2.07l0.27,-0.54Z\", \"name\": \"Israel\"},\n        \"IN\": {\n            \"path\": \"M615.84,192.58l2.4,2.97l-0.24,2.17l0.05,0.2l0.94,1.35l-0.06,0.97l-1.46,-0.3l-0.35,0.36l0.7,3.06l0.12,0.18l2.46,1.75l3.11,1.72l-1.23,0.96l-0.1,0.13l-0.97,2.55l0.16,0.38l2.41,1.02l2.37,1.33l3.27,1.52l3.43,0.37l1.37,1.3l0.17,0.08l1.92,0.25l3.0,0.62l2.15,-0.04l0.28,-0.22l0.29,-1.06l0.0,-0.13l-0.32,-1.66l0.16,-0.94l1.0,-0.37l0.23,2.28l0.18,0.24l2.28,1.02l0.2,0.02l1.52,-0.41l2.06,0.18l2.08,-0.08l0.29,-0.27l0.18,-1.66l-0.1,-0.26l-0.53,-0.44l1.38,-0.23l0.15,-0.07l2.26,-2.0l2.75,-1.65l1.97,0.63l0.25,-0.03l1.54,-0.99l0.89,1.28l-0.72,0.97l0.2,0.48l2.49,0.37l0.11,0.61l-0.69,0.39l-0.15,0.3l0.15,1.22l-1.36,-0.37l-0.23,0.03l-3.24,1.86l-0.15,0.28l0.07,1.44l-1.33,2.16l-0.04,0.13l-0.12,1.24l-0.98,1.91l-1.72,-0.53l-0.39,0.28l-0.09,2.66l-0.52,0.83l-0.04,0.23l0.21,0.89l-0.71,0.36l-1.21,-3.85l-0.29,-0.21l-0.69,0.01l-0.29,0.23l-0.28,1.17l-0.84,-0.84l0.6,-1.17l0.97,-0.13l0.23,-0.16l1.15,-2.25l-0.18,-0.42l-1.54,-0.47l-2.3,0.04l-2.13,-0.33l-0.19,-1.63l-0.26,-0.26l-1.13,-0.13l-1.93,-1.13l-0.42,0.13l-0.88,1.82l0.08,0.37l1.47,1.15l-1.21,0.77l-0.1,0.1l-0.56,0.97l0.13,0.42l1.31,0.61l-0.36,1.35l0.01,0.2l0.85,1.95l0.37,2.05l-0.26,0.68l-1.55,-0.02l-3.09,0.54l-0.25,0.32l0.13,1.84l-1.21,1.4l-3.64,1.79l-2.79,3.04l-1.86,1.61l-2.48,1.68l-0.13,0.25l-0.0,1.0l-1.07,0.55l-2.21,0.9l-1.13,0.13l-0.25,0.19l-0.75,1.96l-0.02,0.15l0.52,3.31l0.13,2.03l-1.03,2.35l-0.03,0.12l-0.01,4.03l-1.02,0.1l-0.23,0.15l-1.14,1.93l0.04,0.36l0.44,0.48l-1.83,0.57l-0.18,0.15l-0.81,1.65l-0.74,0.53l-2.14,-2.12l-1.14,-3.47l-0.96,-2.57l-0.9,-1.26l-1.3,-2.38l-0.61,-3.14l-0.44,-1.62l-2.29,-3.56l-1.03,-4.94l-0.74,-3.29l0.01,-3.12l-0.49,-2.51l-0.41,-0.22l-3.56,1.53l-1.59,-0.28l-2.96,-2.87l0.94,-0.74l0.06,-0.41l-0.74,-1.03l-2.73,-2.1l1.35,-1.43l5.38,0.01l0.29,-0.36l-0.5,-2.29l-0.09,-0.15l-1.33,-1.28l-0.27,-1.96l-0.12,-0.2l-1.36,-1.0l2.42,-2.48l2.77,0.2l0.24,-0.1l2.62,-2.85l1.59,-2.8l2.41,-2.74l0.07,-0.2l-0.04,-1.82l2.01,-1.51l-0.01,-0.49l-1.95,-1.33l-0.83,-1.81l-0.82,-2.27l0.98,-0.97l3.64,0.66l2.89,-0.42l0.17,-0.08l2.18,-2.15Z\",\n            \"name\": \"India\"\n        },\n        \"TZ\": {\n            \"path\": \"M505.77,287.58l0.36,0.23l8.95,5.03l0.15,1.3l0.13,0.21l3.4,2.37l-1.07,2.88l-0.02,0.14l0.15,1.42l0.15,0.23l1.47,0.84l0.05,0.42l-0.66,1.44l-0.02,0.18l0.13,0.72l-0.16,1.16l0.03,0.19l0.87,1.57l1.03,2.48l0.12,0.14l0.53,0.32l-1.59,1.18l-2.64,0.95l-1.45,-0.04l-0.2,0.07l-0.81,0.69l-1.64,0.06l-0.68,0.3l-2.9,-0.69l-1.71,0.17l-0.65,-3.18l-0.05,-0.12l-1.35,-1.88l-0.19,-0.12l-2.41,-0.46l-1.38,-0.74l-1.63,-0.44l-0.96,-0.41l-0.95,-0.58l-1.31,-3.09l-1.47,-1.46l-0.45,-1.31l0.24,-1.34l-0.39,-1.99l0.71,-0.08l0.18,-0.09l0.91,-0.91l0.98,-1.31l0.59,-0.5l0.11,-0.24l-0.02,-0.81l-0.08,-0.2l-0.47,-0.5l-0.1,-0.67l0.51,-0.23l0.18,-0.25l0.14,-1.47l-0.05,-0.2l-0.76,-1.09l0.45,-0.15l2.71,0.03l5.01,-0.19Z\",\n            \"name\": \"Tanzania\"\n        },\n        \"AZ\": {\n            \"path\": \"M539.36,175.66l0.16,0.09l1.11,0.2l0.32,-0.15l0.4,-0.71l1.22,-0.99l1.11,1.33l1.26,2.09l0.22,0.14l1.06,0.13l0.28,0.29l-1.46,0.17l-0.26,0.24l-0.43,2.26l-0.39,0.92l-0.85,0.63l-0.12,0.25l0.06,1.2l-0.22,0.05l-1.28,-1.25l0.74,-1.25l-0.03,-0.35l-0.74,-0.86l-0.3,-0.1l-1.05,0.27l-2.49,1.82l-0.04,-1.46l-0.18,-0.27l-1.09,-0.47l-0.8,-0.6l0.53,-0.7l-0.06,-0.42l-1.11,-0.84l0.34,-0.51l-0.11,-0.43l-0.89,-0.48l-0.33,-0.49l0.25,-0.2l1.78,0.81l1.35,0.18l0.25,-0.09l0.34,-0.35l0.02,-0.39l-1.04,-1.36l0.28,-0.18l0.49,0.07l1.65,1.74ZM533.53,180.16l0.63,0.67l0.22,0.09l0.8,-0.0l0.04,0.31l0.66,1.09l-0.94,-0.21l-1.16,-1.24l-0.25,-0.71Z\",\n            \"name\": \"Azerbaijan\"\n        },\n        \"IE\": {\"path\": \"M405.17,135.35l0.36,2.16l-1.78,2.84l-4.28,1.91l-3.02,-0.43l1.81,-3.13l0.02,-0.26l-1.23,-3.26l3.24,-2.56l1.54,-1.32l0.37,1.33l-0.49,1.77l0.3,0.38l1.49,-0.05l1.68,0.63Z\", \"name\": \"Ireland\"},\n        \"ID\": {\n            \"path\": \"M756.56,287.86l0.69,4.02l0.15,0.21l2.59,1.5l0.39,-0.07l2.05,-2.61l2.75,-1.45l2.09,-0.0l2.08,0.85l1.85,0.89l2.52,0.46l0.08,15.44l-1.72,-1.6l-0.15,-0.07l-2.54,-0.51l-0.29,0.1l-0.53,0.62l-2.53,0.06l0.78,-1.51l1.48,-0.66l0.17,-0.34l-0.65,-2.74l-1.23,-2.19l-0.14,-0.13l-4.85,-2.13l-2.09,-0.23l-3.7,-2.28l-0.41,0.1l-0.67,1.11l-0.63,0.14l-0.41,-0.67l-0.01,-1.01l-0.14,-0.25l-1.39,-0.89l2.05,-0.69l1.73,0.05l0.29,-0.39l-0.21,-0.66l-0.29,-0.21l-3.5,-0.0l-0.9,-1.36l-0.19,-0.13l-2.14,-0.44l-0.65,-0.76l2.86,-0.51l1.28,-0.79l3.75,0.96l0.32,0.76ZM758.01,300.37l-0.79,1.04l-0.14,-1.07l0.4,-0.81l0.29,-0.47l0.24,0.31l-0.0,1.0ZM747.45,292.9l0.48,1.02l-1.45,-0.69l-2.09,-0.21l-1.45,0.16l-1.28,-0.07l0.35,-0.81l2.86,-0.1l2.58,0.68ZM741.15,285.69l-0.16,-0.25l-0.72,-3.08l0.47,-1.86l0.35,-0.38l0.1,0.73l0.25,0.26l1.28,0.19l0.18,0.78l-0.11,1.8l-0.96,-0.18l-0.35,0.22l-0.38,1.52l0.05,0.24ZM741.19,285.75l0.76,0.97l-0.11,0.05l-0.65,-1.02ZM739.18,293.52l-0.61,0.54l-1.44,-0.38l-0.25,-0.55l1.93,-0.09l0.36,0.48ZM728.4,295.87l-0.27,-0.07l-2.26,0.89l-0.37,-0.41l0.27,-0.8l-0.09,-0.33l-1.68,-1.37l0.17,-2.29l-0.42,-0.3l-1.67,0.76l-0.17,0.29l0.21,2.92l0.09,3.34l-1.22,0.28l-0.78,-0.54l0.65,-2.1l0.01,-0.14l-0.39,-2.42l-0.29,-0.25l-0.86,-0.02l-0.63,-1.4l0.99,-1.61l0.35,-1.97l1.24,-3.73l0.49,-0.96l1.95,-1.7l1.86,0.69l3.16,0.35l2.92,-0.1l0.17,-0.06l2.24,-1.65l0.11,0.14l-1.8,2.22l-1.72,0.44l-2.41,-0.48l-4.21,0.13l-2.19,0.36l-0.25,0.24l-0.36,1.9l0.08,0.27l2.24,2.23l0.4,0.02l1.29,-1.08l3.19,-0.58l-0.19,0.06l-1.04,1.4l-2.13,0.94l-0.12,0.45l2.26,3.06l-0.37,0.69l0.03,0.32l1.51,1.95ZM728.48,295.97l0.59,0.76l-0.02,1.37l-1.0,0.55l-0.64,-0.58l1.09,-1.84l-0.02,-0.26ZM728.64,286.95l0.79,-0.14l-0.07,0.39l-0.72,-0.24ZM732.38,310.1l-1.89,0.49l-0.06,-0.06l0.17,-0.64l1.0,-1.42l2.14,-0.87l0.1,0.2l0.04,0.58l-1.49,1.72ZM728.26,305.71l-0.17,0.63l-3.53,0.67l-3.02,-0.28l-0.0,-0.42l1.66,-0.44l1.47,0.71l0.16,0.03l1.75,-0.21l1.69,-0.69ZM722.98,310.33l-0.74,0.03l-2.52,-1.35l1.42,-0.3l1.19,0.7l0.72,0.63l-0.06,0.28ZM716.24,305.63l0.66,0.49l0.22,0.06l1.35,-0.18l0.31,0.53l-4.18,0.77l-0.8,-0.01l0.51,-0.86l1.2,-0.02l0.24,-0.12l0.49,-0.65ZM715.84,280.21l0.09,0.34l2.25,1.86l-2.25,0.22l-0.24,0.17l-0.84,1.71l-0.03,0.15l0.1,2.11l-2.27,1.62l-0.13,0.24l-0.06,2.46l-0.74,2.92l-0.02,-0.05l-0.39,-0.16l-2.62,1.04l-0.86,-1.33l-0.23,-0.14l-1.71,-0.14l-1.19,-0.76l-0.25,-0.03l-2.78,0.84l-0.79,-1.05l-0.26,-0.12l-1.61,0.13l-1.8,-0.25l-0.36,-3.13l-0.15,-0.23l-1.18,-0.65l-1.13,-2.02l-0.33,-2.1l0.27,-2.19l1.05,-1.17l0.28,1.12l0.1,0.16l1.71,1.41l0.28,0.05l1.55,-0.49l1.54,0.17l0.23,-0.07l1.4,-1.21l1.05,-0.19l2.3,0.68l0.16,0.0l2.04,-0.53l0.21,-0.19l1.26,-3.41l0.91,-0.82l0.09,-0.14l0.8,-2.64l2.63,0.0l1.71,0.33l-1.19,1.89l0.02,0.34l1.74,2.24l-0.37,1.0ZM692.67,302.0l0.26,0.19l4.8,0.25l0.28,-0.16l0.44,-0.83l4.29,1.12l0.85,1.52l0.23,0.15l3.71,0.45l2.37,1.15l-2.06,0.69l-2.77,-1.0l-2.25,0.07l-2.57,-0.18l-2.31,-0.45l-2.94,-0.97l-1.84,-0.25l-0.13,0.01l-0.97,0.29l-4.34,-0.98l-0.38,-0.94l-0.25,-0.19l-1.76,-0.14l1.31,-1.84l2.81,0.14l1.97,0.96l0.95,0.19l0.28,0.74ZM685.63,299.27l-2.36,0.04l-2.07,-2.05l-3.17,-2.02l-1.06,-1.5l-1.88,-2.02l-1.22,-1.85l-1.9,-3.49l-2.2,-2.11l-0.71,-2.08l-0.94,-1.99l-0.1,-0.12l-2.21,-1.54l-1.35,-2.17l-1.86,-1.39l-2.53,-2.68l-0.14,-0.81l1.22,0.08l3.76,0.47l2.16,2.4l1.94,1.7l1.37,1.04l2.35,2.67l0.22,0.1l2.44,0.04l1.99,1.62l1.42,2.06l0.09,0.09l1.67,1.0l-0.88,1.8l0.11,0.39l1.44,0.87l0.13,0.04l0.68,0.05l0.41,1.62l0.87,1.4l0.22,0.14l1.71,0.21l1.06,1.38l-0.61,3.04l-0.09,3.6Z\",\n            \"name\": \"Indonesia\"\n        },\n        \"UA\": {\n            \"path\": \"M500.54,141.42l0.9,0.13l0.27,-0.11l0.52,-0.62l0.68,0.13l2.43,-0.3l1.32,1.57l-0.45,0.48l-0.07,0.26l0.21,1.03l0.27,0.24l1.85,0.15l0.76,1.22l-0.05,0.55l0.2,0.31l3.18,1.15l0.18,0.01l1.75,-0.47l1.42,1.41l0.22,0.09l1.42,-0.03l3.44,0.99l0.02,0.65l-0.97,1.62l-0.03,0.24l0.52,1.67l-0.29,0.79l-2.24,0.22l-0.14,0.05l-1.29,0.89l-0.13,0.23l-0.07,1.16l-1.75,0.22l-0.12,0.04l-1.6,0.98l-2.27,0.16l-0.12,0.04l-2.16,1.17l-0.16,0.29l0.15,1.94l0.14,0.23l1.23,0.75l0.18,0.04l2.06,-0.15l-0.22,0.51l-2.67,0.54l-3.27,1.72l-1.0,-0.45l0.45,-1.19l-0.19,-0.39l-2.34,-0.78l0.15,-0.2l2.32,-1.0l0.09,-0.49l-0.73,-0.72l-0.15,-0.08l-3.69,-0.75l-0.14,-0.96l-0.35,-0.25l-2.32,0.39l-0.21,0.15l-0.91,1.7l-1.77,2.1l-0.93,-0.44l-0.24,-0.0l-1.05,0.45l-0.48,-0.25l0.13,-0.07l0.14,-0.15l0.43,-1.04l0.67,-0.97l0.04,-0.26l-0.1,-0.31l0.04,-0.02l0.11,0.19l0.24,0.15l1.48,0.09l0.78,-0.25l0.07,-0.53l-0.27,-0.19l0.09,-0.25l-0.08,-0.33l-0.81,-0.74l-0.34,-1.24l-0.14,-0.18l-0.73,-0.42l0.15,-0.87l-0.11,-0.29l-1.13,-0.86l-0.15,-0.06l-0.97,-0.11l-1.79,-0.97l-0.2,-0.03l-1.66,0.32l-0.13,0.06l-0.52,0.41l-0.95,-0.0l-0.23,0.11l-0.56,0.66l-1.74,0.29l-0.79,0.43l-1.01,-0.68l-0.16,-0.05l-1.57,-0.01l-1.52,-0.35l-0.23,0.04l-0.71,0.45l-0.09,-0.43l-0.13,-0.19l-1.18,-0.74l0.38,-1.02l0.53,-0.64l0.35,0.12l0.37,-0.41l-0.57,-1.29l2.1,-2.5l1.16,-0.36l0.2,-0.2l0.27,-0.92l-0.01,-0.2l-1.1,-2.52l0.79,-0.09l0.13,-0.05l1.3,-0.86l1.83,-0.07l2.48,0.26l2.84,0.8l1.91,0.06l0.88,0.45l0.29,-0.01l0.72,-0.44l0.49,0.58l0.25,0.11l2.2,-0.16l0.94,0.3l0.39,-0.26l0.15,-1.57l0.61,-0.59l2.01,-0.19Z\",\n            \"name\": \"Ukraine\"\n        },\n        \"QA\": {\"path\": \"M548.47,221.47l-0.15,-1.72l0.59,-1.23l0.38,-0.16l0.54,0.6l0.04,1.4l-0.47,1.37l-0.41,0.11l-0.53,-0.37Z\", \"name\": \"Qatar\"},\n        \"MZ\": {\n            \"path\": \"M507.71,314.14l1.65,-0.18l2.96,0.7l0.2,-0.02l0.6,-0.29l1.68,-0.06l0.18,-0.07l0.8,-0.69l1.5,0.02l2.74,-0.98l1.74,-1.27l0.25,0.7l-0.1,2.47l0.31,2.27l0.1,3.97l0.42,1.24l-0.7,1.71l-0.94,1.73l-1.52,1.52l-5.06,2.21l-2.88,2.8l-1.01,0.51l-1.72,1.81l-0.99,0.58l-0.15,0.23l-0.21,1.86l0.04,0.19l1.17,1.95l0.47,1.47l0.03,0.74l0.39,0.28l0.05,-0.01l-0.06,2.13l-0.39,1.19l0.1,0.33l0.42,0.32l-0.28,0.83l-0.95,0.86l-2.03,0.88l-3.08,1.49l-1.1,0.99l-0.09,0.28l0.21,1.13l0.21,0.23l0.38,0.11l-0.14,0.89l-1.39,-0.02l-0.17,-0.94l-0.38,-1.23l-0.2,-0.89l0.44,-2.91l-0.01,-0.14l-0.65,-1.88l-1.15,-3.55l2.52,-2.85l0.68,-1.89l0.29,-0.18l0.14,-0.2l0.28,-1.53l-0.03,-0.19l-0.36,-0.7l0.1,-1.83l0.49,-1.84l-0.01,-3.26l-0.14,-0.25l-1.3,-0.83l-0.11,-0.04l-1.08,-0.17l-0.47,-0.55l-0.1,-0.08l-1.16,-0.54l-0.13,-0.03l-1.83,0.04l-0.32,-2.25l7.19,-1.99l1.32,1.12l0.29,0.06l0.55,-0.19l0.75,0.49l0.11,0.81l-0.49,1.11l-0.02,0.15l0.19,1.81l0.09,0.18l1.63,1.59l0.48,-0.1l0.72,-1.68l0.99,-0.49l0.17,-0.29l-0.21,-3.29l-0.04,-0.13l-1.11,-1.92l-0.9,-0.82l-0.21,-0.08l-0.62,0.03l-0.63,-2.98l0.61,-1.67Z\",\n            \"name\": \"Mozambique\"\n        }\n    },\n    \"height\": 440.7063107441331,\n    \"projection\": {\"type\": \"mill\", \"centralMeridian\": 11.5},\n    \"width\": 900.0\n});"
  },
  {
    "path": "public/admin/js/jvectormap/jvectormap-active.js",
    "content": "(function ($) {\n \"use strict\";\n            var mapData = {\n                \"US\": 298,\n                \"SA\": 200,\n                \"DE\": 220,\n                \"FR\": 540,\n                \"CN\": 120,\n                \"AU\": 760,\n                \"BR\": 550,\n                \"IN\": 200,\n                \"GB\": 120,\n            };\n\n            $('#world-map').vectorMap({\n                map: 'world_mill_en',\n                backgroundColor: \"transparent\",\n                regionStyle: {\n                    initial: {\n                        fill: '#ff9966',\n                        \"fill-opacity\": 0.9,\n                        stroke: 'none',\n                        \"stroke-width\": 0,\n                        \"stroke-opacity\": 0\n                    }\n                },\n\n                series: {\n                    regions: [{\n                        values: mapData,\n                        scale: [\"#ccc\", \"#03a9f4\"],\n                        normalizeFunction: 'polynomial'\n                    }]\n                },\n            });\n  \n})(jQuery); \n"
  },
  {
    "path": "public/admin/js/knob/jquery.knob.js",
    "content": "/*!jQuery Knob*/\n/**\n * Downward compatible, touchable dial\n *\n * Version: 1.2.8\n * Requires: jQuery v1.7+\n *\n * Copyright (c) 2012 Anthony Terrien\n * Under MIT License (http://www.opensource.org/licenses/mit-license.php)\n *\n * Thanks to vor, eskimoblood, spiffistan, FabrizioC\n */\n(function($) {\n\n    /**\n     * Kontrol library\n     */\n    \"use strict\";\n\n    /**\n     * Definition of globals and core\n     */\n    var k = {}, // kontrol\n        max = Math.max,\n        min = Math.min;\n\n    k.c = {};\n    k.c.d = $(document);\n    k.c.t = function (e) {\n        return e.originalEvent.touches.length - 1;\n    };\n\n    /**\n     * Kontrol Object\n     *\n     * Definition of an abstract UI control\n     *\n     * Each concrete component must call this one.\n     * <code>\n     * k.o.call(this);\n     * </code>\n     */\n    k.o = function () {\n        var s = this;\n\n        this.o = null; // array of options\n        this.$ = null; // jQuery wrapped element\n        this.i = null; // mixed HTMLInputElement or array of HTMLInputElement\n        this.g = null; // deprecated 2D graphics context for 'pre-rendering'\n        this.v = null; // value ; mixed array or integer\n        this.cv = null; // change value ; not commited value\n        this.x = 0; // canvas x position\n        this.y = 0; // canvas y position\n        this.w = 0; // canvas width\n        this.h = 0; // canvas height\n        this.$c = null; // jQuery canvas element\n        this.c = null; // rendered canvas context\n        this.t = 0; // touches index\n        this.isInit = false;\n        this.fgColor = null; // main color\n        this.pColor = null; // previous color\n        this.dH = null; // draw hook\n        this.cH = null; // change hook\n        this.eH = null; // cancel hook\n        this.rH = null; // release hook\n        this.scale = 1; // scale factor\n        this.relative = false;\n        this.relativeWidth = false;\n        this.relativeHeight = false;\n        this.$div = null; // component div\n\n        this.run = function () {\n            var cf = function (e, conf) {\n                var k;\n                for (k in conf) {\n                    s.o[k] = conf[k];\n                }\n                s._carve().init();\n                s._configure()\n                    ._draw();\n            };\n\n            if(this.$.data('kontroled')) return;\n            this.$.data('kontroled', true);\n\n            this.extend();\n            this.o = $.extend(\n                {\n                    // Config\n                    min : this.$.data('min') !== undefined ? this.$.data('min') : 0,\n                    max : this.$.data('max') !== undefined ? this.$.data('max') : 100,\n                    stopper : true,\n                    readOnly : this.$.data('readonly') || (this.$.attr('readonly') === 'readonly'),\n\n                    // UI\n                    cursor : (this.$.data('cursor') === true && 30) ||\n                        this.$.data('cursor') || 0,\n                    thickness : (\n                        this.$.data('thickness') &&\n                            Math.max(Math.min(this.$.data('thickness'), 1), 0.01)\n                        ) || 0.35,\n                    lineCap : this.$.data('linecap') || 'butt',\n                    width : this.$.data('width') || 200,\n                    height : this.$.data('height') || 200,\n                    displayInput : this.$.data('displayinput') == null || this.$.data('displayinput'),\n                    displayPrevious : this.$.data('displayprevious'),\n                    fgColor : this.$.data('fgcolor') || '#87CEEB',\n                    inputColor: this.$.data('inputcolor'),\n                    font: this.$.data('font') || 'Arial',\n                    fontWeight: this.$.data('font-weight') || 'bold',\n                    inline : false,\n                    step : this.$.data('step') || 1,\n                    rotation: this.$.data('rotation'),\n\n                    // Hooks\n                    draw : null, // function () {}\n                    change : null, // function (value) {}\n                    cancel : null, // function () {}\n                    release : null, // function (value) {}\n\n                    // Output formatting, allows to add unit: %, ms ...\n                    format: function(v) {\n                        return v;\n                    },\n                    parse: function (v) {\n                        return parseFloat(v);\n                    }\n                }, this.o\n            );\n\n            // finalize options\n            this.o.flip = this.o.rotation === 'anticlockwise' || this.o.rotation === 'acw';\n            if(!this.o.inputColor) {\n                this.o.inputColor = this.o.fgColor;\n            }\n\n            // routing value\n            if(this.$.is('fieldset')) {\n\n                // fieldset = array of integer\n                this.v = {};\n                this.i = this.$.find('input');\n                this.i.each(function(k) {\n                    var $this = $(this);\n                    s.i[k] = $this;\n                    s.v[k] = s.o.parse($this.val());\n\n                    $this.bind(\n                        'change blur'\n                        , function () {\n                            var val = {};\n                            val[k] = $this.val();\n                            s.val(val);\n                        }\n                    );\n                });\n                this.$.find('legend').remove();\n\n            } else {\n\n                // input = integer\n                this.i = this.$;\n                this.v = this.o.parse(this.$.val());\n                (this.v === '') && (this.v = this.o.min);\n\n                this.$.bind(\n                    'change blur'\n                    , function () {\n                        s.val(s._validate(s.o.parse(s.$.val())));\n                    }\n                );\n\n            }\n\n            (!this.o.displayInput) && this.$.hide();\n\n            // adds needed DOM elements (canvas, div)\n            this.$c = $(document.createElement('canvas')).attr({\n                width: this.o.width,\n                height: this.o.height\n            });\n\n            // wraps all elements in a div\n            // add to DOM before Canvas init is triggered\n            this.$div = $('<div style=\"'\n                + (this.o.inline ? 'display:inline;' : '')\n                + 'width:' + this.o.width + 'px;height:' + this.o.height + 'px;'\n                + '\"></div>');\n\n            this.$.wrap(this.$div).before(this.$c);\n            this.$div = this.$.parent();\n\n            if (typeof G_vmlCanvasManager !== 'undefined') {\n                G_vmlCanvasManager.initElement(this.$c[0]);\n            }\n\n            this.c = this.$c[0].getContext ? this.$c[0].getContext('2d') : null;\n\n            if (!this.c) {\n                throw {\n                    name:        \"CanvasNotSupportedException\",\n                    message:     \"Canvas not supported. Please use excanvas on IE8.0.\",\n                    toString:    function(){return this.name + \": \" + this.message}\n                }\n            }\n\n            // hdpi support\n            this.scale = (window.devicePixelRatio || 1) /\n                (\n                    this.c.webkitBackingStorePixelRatio ||\n                        this.c.mozBackingStorePixelRatio ||\n                        this.c.msBackingStorePixelRatio ||\n                        this.c.oBackingStorePixelRatio ||\n                        this.c.backingStorePixelRatio || 1\n                    );\n\n            // detects relative width / height\n            this.relativeWidth = ((this.o.width % 1 !== 0) &&\n                this.o.width.indexOf('%'));\n            this.relativeHeight = ((this.o.height % 1 !== 0) &&\n                this.o.height.indexOf('%'));\n            this.relative = (this.relativeWidth || this.relativeHeight);\n\n            // computes size and carves the component\n            this._carve();\n\n            // prepares props for transaction\n            if (this.v instanceof Object) {\n                this.cv = {};\n                this.copy(this.v, this.cv);\n            } else {\n                this.cv = this.v;\n            }\n\n            // binds configure event\n            this.$\n                .bind(\"configure\", cf)\n                .parent()\n                .bind(\"configure\", cf);\n\n            // finalize init\n            this._listen()\n                ._configure()\n                ._xy()\n                .init();\n\n            this.isInit = true;\n\n            this.$.val(this.o.format(this.v));\n            this._draw();\n\n            return this;\n        };\n\n        this._carve = function() {\n            if(this.relative) {\n                var w = this.relativeWidth ?\n                        this.$div.parent().width() *\n                            parseInt(this.o.width) / 100 :\n                        this.$div.parent().width(),\n                    h = this.relativeHeight ?\n                        this.$div.parent().height() *\n                            parseInt(this.o.height) / 100 :\n                        this.$div.parent().height();\n\n                // apply relative\n                this.w = this.h = Math.min(w, h);\n            } else {\n                this.w = this.o.width;\n                this.h = this.o.height;\n            }\n\n            // finalize div\n            this.$div.css({\n                'width': this.w + 'px',\n                'height': this.h + 'px'\n            });\n\n            // finalize canvas with computed width\n            this.$c.attr({\n                width: this.w,\n                height: this.h\n            });\n\n            // scaling\n            if (this.scale !== 1) {\n                this.$c[0].width = this.$c[0].width * this.scale;\n                this.$c[0].height = this.$c[0].height * this.scale;\n                this.$c.width(this.w);\n                this.$c.height(this.h);\n            }\n\n            return this;\n        }\n\n        this._draw = function () {\n\n            // canvas pre-rendering\n            var d = true;\n\n            s.g = s.c;\n\n            s.clear();\n\n            s.dH\n            && (d = s.dH());\n\n            (d !== false) && s.draw();\n\n        };\n\n        this._touch = function (e) {\n\n            var touchMove = function (e) {\n\n                var v = s.xy2val(\n                    e.originalEvent.touches[s.t].pageX,\n                    e.originalEvent.touches[s.t].pageY\n                );\n\n                if (v == s.cv) return;\n\n                if (s.cH && (s.cH(v) === false)) return;\n\n                s.change(s._validate(v));\n                s._draw();\n            };\n\n            // get touches index\n            this.t = k.c.t(e);\n\n            // First touch\n            touchMove(e);\n\n            // Touch events listeners\n            k.c.d\n                .bind(\"touchmove.k\", touchMove)\n                .bind(\n                \"touchend.k\"\n                , function () {\n                    k.c.d.unbind('touchmove.k touchend.k');\n                    s.val(s.cv);\n                }\n            );\n\n            return this;\n        };\n\n        this._mouse = function (e) {\n\n            var mouseMove = function (e) {\n                var v = s.xy2val(e.pageX, e.pageY);\n\n                if (v == s.cv) return;\n\n                if (s.cH && (s.cH(v) === false)) return;\n\n                s.change(s._validate(v));\n                s._draw();\n            };\n\n            // First click\n            mouseMove(e);\n\n            // Mouse events listeners\n            k.c.d\n                .bind(\"mousemove.k\", mouseMove)\n                .bind(\n                // Escape key cancel current change\n                \"keyup.k\"\n                , function (e) {\n                    if (e.keyCode === 27) {\n                        k.c.d.unbind(\"mouseup.k mousemove.k keyup.k\");\n\n                        if (\n                            s.eH\n                                && (s.eH() === false)\n                            ) return;\n\n                        s.cancel();\n                    }\n                }\n            )\n                .bind(\n                \"mouseup.k\"\n                , function (e) {\n                    k.c.d.unbind('mousemove.k mouseup.k keyup.k');\n                    s.val(s.cv);\n                }\n            );\n\n            return this;\n        };\n\n        this._xy = function () {\n            var o = this.$c.offset();\n            this.x = o.left;\n            this.y = o.top;\n            return this;\n        };\n\n        this._listen = function () {\n\n            if (!this.o.readOnly) {\n                this.$c\n                    .bind(\n                    \"mousedown\"\n                    , function (e) {\n                        e.preventDefault();\n                        s._xy()._mouse(e);\n                    }\n                )\n                    .bind(\n                    \"touchstart\"\n                    , function (e) {\n                        e.preventDefault();\n                        s._xy()._touch(e);\n                    }\n                );\n\n                this.listen();\n            } else {\n                this.$.attr('readonly', 'readonly');\n            }\n\n            if(this.relative) {\n                $(window).resize(function() {\n                    s._carve()\n                        .init();\n                    s._draw();\n                });\n            }\n\n            return this;\n        };\n\n        this._configure = function () {\n\n            // Hooks\n            if (this.o.draw) this.dH = this.o.draw;\n            if (this.o.change) this.cH = this.o.change;\n            if (this.o.cancel) this.eH = this.o.cancel;\n            if (this.o.release) this.rH = this.o.release;\n\n            if (this.o.displayPrevious) {\n                this.pColor = this.h2rgba(this.o.fgColor, \"0.4\");\n                this.fgColor = this.h2rgba(this.o.fgColor, \"0.6\");\n            } else {\n                this.fgColor = this.o.fgColor;\n            }\n\n            return this;\n        };\n\n        this._clear = function () {\n            this.$c[0].width = this.$c[0].width;\n        };\n\n        this._validate = function(v) {\n            return (~~ (((v < 0) ? -0.5 : 0.5) + (v/this.o.step))) * this.o.step;\n        };\n\n        // Abstract methods\n        this.listen = function () {}; // on start, one time\n        this.extend = function () {}; // each time configure triggered\n        this.init = function () {}; // each time configure triggered\n        this.change = function (v) {}; // on change\n        this.val = function (v) {}; // on release\n        this.xy2val = function (x, y) {}; //\n        this.draw = function () {}; // on change / on release\n        this.clear = function () { this._clear(); };\n\n        // Utils\n        this.h2rgba = function (h, a) {\n            var rgb;\n            h = h.substring(1,7)\n            rgb = [parseInt(h.substring(0,2),16)\n                ,parseInt(h.substring(2,4),16)\n                ,parseInt(h.substring(4,6),16)];\n            return \"rgba(\" + rgb[0] + \",\" + rgb[1] + \",\" + rgb[2] + \",\" + a + \")\";\n        };\n\n        this.copy = function (f, t) {\n            for (var i in f) { t[i] = f[i]; }\n        };\n    };\n\n\n    /**\n     * k.Dial\n     */\n    k.Dial = function () {\n        k.o.call(this);\n\n        this.startAngle = null;\n        this.xy = null;\n        this.radius = null;\n        this.lineWidth = null;\n        this.cursorExt = null;\n        this.w2 = null;\n        this.PI2 = 2*Math.PI;\n\n        this.extend = function () {\n            this.o = $.extend(\n                {\n                    bgColor : this.$.data('bgcolor') || '#EEEEEE',\n                    angleOffset : this.$.data('angleoffset') || 0,\n                    angleArc : this.$.data('anglearc') || 360,\n                    inline : true\n                }, this.o\n            );\n        };\n\n        this.val = function (v, triggerRelease) {\n            if (null != v) {\n\n                // reverse format\n                v = this.o.parse(v);\n\n                if (\n                    triggerRelease !== false && (v != this.v) && this.rH &&\n                        (this.rH(v) === false)\n                    ) return;\n\n                this.cv = this.o.stopper ? max(min(v, this.o.max), this.o.min) : v;\n                this.v = this.cv;\n                this.$.val(this.o.format(this.v));\n                this._draw();\n            } else {\n                return this.v;\n            }\n        };\n\n        this.xy2val = function (x, y) {\n            var a, ret;\n\n            a = Math.atan2(\n                x - (this.x + this.w2)\n                , - (y - this.y - this.w2)\n            ) - this.angleOffset;\n\n            if (this.o.flip) {\n                a = this.angleArc - a - this.PI2;\n            }\n\n            if(this.angleArc != this.PI2 && (a < 0) && (a > -0.5)) {\n                // if isset angleArc option, set to min if .5 under min\n                a = 0;\n            } else if (a < 0) {\n                a += this.PI2;\n            }\n\n            ret = ~~ (0.5 + (a * (this.o.max - this.o.min) / this.angleArc))\n                + this.o.min;\n\n            this.o.stopper && (ret = max(min(ret, this.o.max), this.o.min));\n\n            return ret;\n        };\n\n        this.listen = function () {\n            // bind MouseWheel\n            var s = this, mwTimerStop, mwTimerRelease,\n                mw = function (e) {\n                    e.preventDefault();\n\n                    var ori = e.originalEvent\n                        ,deltaX = ori.detail || ori.wheelDeltaX\n                        ,deltaY = ori.detail || ori.wheelDeltaY\n                        ,v = s._validate(s.o.parse(s.$.val()))\n                            + (deltaX>0 || deltaY>0 ? s.o.step : deltaX<0 || deltaY<0 ? -s.o.step : 0);\n\n                    v = max(min(v, s.o.max), s.o.min);\n\n                    s.val(v, false);\n\n                    if(s.rH) {\n                        // Handle mousewheel stop\n                        clearTimeout(mwTimerStop);\n                        mwTimerStop = setTimeout(function() {\n                            s.rH(v);\n                            mwTimerStop = null;\n                        }, 100);\n\n                        // Handle mousewheel releases\n                        if(!mwTimerRelease) {\n                            mwTimerRelease = setTimeout(function() {\n                                if(mwTimerStop) s.rH(v);\n                                mwTimerRelease = null;\n                            }, 200);\n                        }\n                    }\n                }\n                , kval, to, m = 1, kv = {37:-s.o.step, 38:s.o.step, 39:s.o.step, 40:-s.o.step};\n\n            this.$\n                .bind(\n                \"keydown\"\n                ,function (e) {\n                    var kc = e.keyCode;\n\n                    // numpad support\n                    if(kc >= 96 && kc <= 105) {\n                        kc = e.keyCode = kc - 48;\n                    }\n\n                    kval = parseInt(String.fromCharCode(kc));\n\n                    if (isNaN(kval)) {\n\n                        (kc !== 13)         // enter\n                            && (kc !== 8)       // bs\n                            && (kc !== 9)       // tab\n                            && (kc !== 189)     // -\n                            && (kc !== 190 || s.$.val().match(/\\./))     // . only allowed once\n                        && e.preventDefault();\n\n                        // arrows\n                        if ($.inArray(kc,[37,38,39,40]) > -1) {\n                            e.preventDefault();\n\n                            var v = s.o.parse(s.$.val()) + kv[kc] * m;\n                            s.o.stopper && (v = max(min(v, s.o.max), s.o.min));\n\n                            s.change(v);\n                            s._draw();\n\n                            // long time keydown speed-up\n                            to = window.setTimeout(\n                                function () { m *= 2; }, 30\n                            );\n                        }\n                    }\n                }\n            )\n                .bind(\n                \"keyup\"\n                ,function (e) {\n                    if (isNaN(kval)) {\n                        if (to) {\n                            window.clearTimeout(to);\n                            to = null;\n                            m = 1;\n                            s.val(s.$.val());\n                        }\n                    } else {\n                        // kval postcond\n                        (s.$.val() > s.o.max && s.$.val(s.o.max))\n                        || (s.$.val() < s.o.min && s.$.val(s.o.min));\n                    }\n\n                }\n            );\n\n            this.$c.bind(\"mousewheel DOMMouseScroll\", mw);\n            this.$.bind(\"mousewheel DOMMouseScroll\", mw)\n        };\n\n        this.init = function () {\n\n            if (\n                this.v < this.o.min\n                    || this.v > this.o.max\n                ) this.v = this.o.min;\n\n            this.$.val(this.v);\n            this.w2 = this.w / 2;\n            this.cursorExt = this.o.cursor / 100;\n            this.xy = this.w2 * this.scale;\n            this.lineWidth = this.xy * this.o.thickness;\n            this.lineCap = this.o.lineCap;\n            this.radius = this.xy - this.lineWidth / 2;\n\n            this.o.angleOffset\n            && (this.o.angleOffset = isNaN(this.o.angleOffset) ? 0 : this.o.angleOffset);\n\n            this.o.angleArc\n            && (this.o.angleArc = isNaN(this.o.angleArc) ? this.PI2 : this.o.angleArc);\n\n            // deg to rad\n            this.angleOffset = this.o.angleOffset * Math.PI / 180;\n            this.angleArc = this.o.angleArc * Math.PI / 180;\n\n            // compute start and end angles\n            this.startAngle = 1.5 * Math.PI + this.angleOffset;\n            this.endAngle = 1.5 * Math.PI + this.angleOffset + this.angleArc;\n\n            var s = max(\n                String(Math.abs(this.o.max)).length\n                , String(Math.abs(this.o.min)).length\n                , 2\n            ) + 2;\n\n            this.o.displayInput\n                && this.i.css({\n                'width' : ((this.w / 2 + 4) >> 0) + 'px'\n                ,'height' : ((this.w / 3) >> 0) + 'px'\n                ,'position' : 'absolute'\n                ,'vertical-align' : 'middle'\n                ,'margin-top' : ((this.w / 3) >> 0) + 'px'\n                ,'margin-left' : '-' + ((this.w * 3 / 4 + 2) >> 0) + 'px'\n                ,'border' : 0\n                ,'background' : 'none'\n                ,'font' : this.o.fontWeight + ' ' + ((this.w / s) >> 0) + 'px ' + this.o.font\n                ,'text-align' : 'center'\n                ,'color' : this.o.inputColor || this.o.fgColor\n                ,'padding' : '0px'\n                ,'-webkit-appearance': 'none'\n            })\n            || this.i.css({\n                'width' : '0px'\n                ,'visibility' : 'hidden'\n            });\n        };\n\n        this.change = function (v) {\n            this.cv = v;\n            this.$.val(this.o.format(v));\n        };\n\n        this.angle = function (v) {\n            return (v - this.o.min) * this.angleArc / (this.o.max - this.o.min);\n        };\n\n        this.arc = function (v) {\n            var sa, ea;\n            v = this.angle(v);\n            if (this.o.flip) {\n                sa = this.endAngle + 0.00001;\n                ea = sa - v - 0.00001;\n            } else {\n                sa = this.startAngle - 0.00001;\n                ea = sa + v + 0.00001;\n            }\n            this.o.cursor\n                && (sa = ea - this.cursorExt)\n            && (ea = ea + this.cursorExt);\n            return {\n                s: sa,\n                e: ea,\n                d: this.o.flip && !this.o.cursor\n            };\n        };\n\n        this.draw = function () {\n\n            var c = this.g,                 // context\n                a = this.arc(this.cv)       // Arc\n                , pa                        // Previous arc\n                , r = 1;\n\n            c.lineWidth = this.lineWidth;\n            c.lineCap = this.lineCap;\n\n            c.beginPath();\n            c.strokeStyle = this.o.bgColor;\n            c.arc(this.xy, this.xy, this.radius, this.endAngle - 0.00001, this.startAngle + 0.00001, true);\n            c.stroke();\n\n            if (this.o.displayPrevious) {\n                pa = this.arc(this.v);\n                c.beginPath();\n                c.strokeStyle = this.pColor;\n                c.arc(this.xy, this.xy, this.radius, pa.s, pa.e, pa.d);\n                c.stroke();\n                r = (this.cv == this.v);\n            }\n\n            c.beginPath();\n            c.strokeStyle = r ? this.o.fgColor : this.fgColor ;\n            c.arc(this.xy, this.xy, this.radius, a.s, a.e, a.d);\n            c.stroke();\n        };\n\n        this.cancel = function () {\n            this.val(this.v);\n        };\n    };\n\n    $.fn.dial = $.fn.knob = function (o) {\n        return this.each(\n            function () {\n                var d = new k.Dial();\n                d.o = o;\n                d.$ = $(this);\n                d.run();\n            }\n        ).parent();\n    };\n\n})(jQuery);"
  },
  {
    "path": "public/admin/js/knob/knob-active.js",
    "content": "(function ($) {\n \"use strict\";\n \n\t$(\".dial\").knob();\n\n \n})(jQuery); "
  },
  {
    "path": "public/admin/js/main.js",
    "content": "(function ($) {\n \"use strict\";\n\n\t\t/*----------------------------\n\t\t jQuery MeanMenu\n\t\t------------------------------ */\n\t\tjQuery('nav#dropdown').meanmenu();\t\n\t\t\n\t\t\n\t\t\n\t\t$('#sidebarCollapse').on('click', function () {\n                     $('#sidebar').toggleClass('active');\n                     \n                 });\n \n\t\t// Collapse ibox function\n\t\t\t$('#sidebar ul li').on('click', function () {\n\t\t\t\tvar button = $(this).find('i.fa.indicator-mn');\n\t\t\t\tbutton.toggleClass('fa-angle-left').toggleClass('fa-angle-right');\n\t\t\t\t\n\t\t\t});\n\n\t\t\t\n\t\t$('#sidebarCollapse').on('click', function () {\n\t\t\t$(\"body\").toggleClass(\"mini-navbar\");\n\t\t\tSmoothlyMenu();\n\t\t});\n\t\t\n\t\t/*-----------------------------\n\t\t\tMenu Stick\n\t\t---------------------------------*/\n\t\t$(\".sicker-menu\").sticky({topSpacing:0});\n\t\t\n\t\t$(document).on('click', '.header-right-menu .dropdown-menu', function (e) {\n\t\t\t  e.stopPropagation();\n\t\t\t});\n\t\t\t\n\t\t/*--------------------------\n\t\t mCustomScrollbar\n\t\t---------------------------- */\t\n\t\t\t$(window).on(\"load\",function(){\n\t\t\t\t$(\".message-menu, .notification-menu, .comment-scrollbar, .notes-menu-scrollbar, .project-st-menu-scrollbar\").mCustomScrollbar({\n\t\t\t\t\tautoHideScrollbar: true,\n\t\t\t\t\tscrollbarPosition: \"outside\",\n\t\t\t\t\ttheme:\"light-1\"\n\t\t\t\t\t\n\t\t\t\t});\n\t\t\t\t$(\".timeline-scrollbar\").mCustomScrollbar({\n\t\t\t\t\tsetHeight:636,\n\t\t\t\t\tautoHideScrollbar: true,\n\t\t\t\t\tscrollbarPosition: \"outside\",\n\t\t\t\t\ttheme:\"light-1\"\n\t\t\t\t\t\n\t\t\t\t});\n\t\t\t\t$(\".project-list-scrollbar\").mCustomScrollbar({\n\t\t\t\t\tsetHeight:636,\n\t\t\t\t\ttheme:\"light-2\"\n\t\t\t\t});\n\t\t\t\t$(\".messages-scrollbar\").mCustomScrollbar({\n\t\t\t\t\tsetHeight:503,\n\t\t\t\t\tautoHideScrollbar: true,\n\t\t\t\t\tscrollbarPosition: \"outside\",\n\t\t\t\t\ttheme:\"light-1\"\n\t\t\t\t});\n\t\t\t\t$(\".chat-scrollbar\").mCustomScrollbar({\n\t\t\t\t\tsetHeight:250,\n\t\t\t\t\ttheme:\"light-2\"\n\t\t\t\t});\n\t\t\t\t$(\".widgets-chat-scrollbar\").mCustomScrollbar({\n\t\t\t\t\tsetHeight:335,\n\t\t\t\t\tautoHideScrollbar: true,\n\t\t\t\t\tscrollbarPosition: \"outside\",\n\t\t\t\t\ttheme:\"light-1\"\n\t\t\t\t});\n\t\t\t\t$(\".widgets-todo-scrollbar\").mCustomScrollbar({\n\t\t\t\t\tsetHeight:322,\n\t\t\t\t\tautoHideScrollbar: true,\n\t\t\t\t\tscrollbarPosition: \"outside\",\n\t\t\t\t\ttheme:\"light-1\"\n\t\t\t\t});\n\t\t\t\t$(\".user-profile-scrollbar\").mCustomScrollbar({\n\t\t\t\t\tsetHeight:1820,\n\t\t\t\t\tautoHideScrollbar: true,\n\t\t\t\t\tscrollbarPosition: \"outside\",\n\t\t\t\t\ttheme:\"light-1\"\n\t\t\t\t});\n\t\t\t});\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\t// Collapse Chat function\n\t\t\t$('.chat-icon-link').on('click', function () {\n\t\t\t\tvar button = $(this).find('i');\n\t\t\t\tbutton.toggleClass('fa-comments').toggleClass('fa-remove');\n\t\t\t});\n\t\t// Collapse ibox function\n\t\t\t$('.collapse-link').on('click', function () {\n\t\t\t\tvar button = $(this).find('i');\n\t\t\t\tbutton.toggleClass('fa-chevron-up').toggleClass('fa-chevron-down');\n\t\t\t\t$( \".sparkline-content\" ).slideToggle( \"slow\" );\n\t\t\t});\n\t\t\t$(\".collapse-close\").on('click', function(){\n\t\t\t\t$( \"div.about-sparkline\" ).fadeOut( 600 );\n\t\t\t});\n\n\t\t// Collapse ibox function\n\t\t\t$('.smart-collapse-link').on('click', function () {\n\t\t\t\tvar button = $(this).find('i');\n\t\t\t\tbutton.toggleClass('fa-chevron-up').toggleClass('fa-chevron-down');\n\t\t\t\t$( \".smart-sparkline-list\" ).slideToggle( \"slow\" );\n\t\t\t});\n\t\t\t$(\".smart-collapse-close\").on('click', function(){\n\t\t\t\t$( \"div.sparkline-list\" ).fadeOut( 600 );\n\t\t\t});\n\n\n\t\t// Collapse ibox function\n\t\t\t$('.sparkline7-collapse-link').on('click', function () {\n\t\t\t\tvar button = $(this).find('i');\n\t\t\t\tbutton.toggleClass('fa-chevron-up').toggleClass('fa-chevron-down');\n\t\t\t\t$( \".sparkline7-graph\" ).slideToggle( \"slow\" );\n\t\t\t});\n\t\t\t$(\".sparkline7-collapse-close\").on('click', function(){\n\t\t\t\t$( \"div.sparkline7-list\" ).fadeOut( 600 );\n\t\t\t});\n\t\t// Collapse ibox function\n\t\t\t$('.sparkline8-collapse-link').on('click', function () {\n\t\t\t\tvar button = $(this).find('i');\n\t\t\t\tbutton.toggleClass('fa-chevron-up').toggleClass('fa-chevron-down');\n\t\t\t\t$( \".sparkline8-graph\" ).slideToggle( \"slow\" );\n\t\t\t});\n\t\t\t$(\".sparkline8-collapse-close\").on('click', function(){\n\t\t\t\t$( \"div.sparkline8-list\" ).fadeOut( 600 );\n\t\t\t});\n\n\n\t\t// Collapse ibox function\n\t\t\t$('.sparkline9-collapse-link').on('click', function () {\n\t\t\t\tvar button = $(this).find('i');\n\t\t\t\tbutton.toggleClass('fa-chevron-up').toggleClass('fa-chevron-down');\n\t\t\t\t$( \".sparkline9-graph\" ).slideToggle( \"slow\" );\n\t\t\t});\n\t\t\t$(\".sparkline9-collapse-close\").on('click', function(){\n\t\t\t\t$( \"div.sparkline9-list\" ).fadeOut( 600 );\n\t\t\t});\n\t\t\t\n\t\t// Collapse ibox function\n\t\t\t$('.sparkline10-collapse-link').on('click', function () {\n\t\t\t\tvar button = $(this).find('i');\n\t\t\t\tbutton.toggleClass('fa-chevron-up').toggleClass('fa-chevron-down');\n\t\t\t\t$( \".sparkline10-graph\" ).slideToggle( \"slow\" );\n\t\t\t});\n\t\t\t$(\".sparkline10-collapse-close\").on('click', function(){\n\t\t\t\t$( \"div.sparkline10-list\" ).fadeOut( 600 );\n\t\t\t});\n\t\t// Collapse ibox function\n\t\t\t$('.sparkline11-collapse-link').on('click', function () {\n\t\t\t\tvar button = $(this).find('i');\n\t\t\t\tbutton.toggleClass('fa-chevron-up').toggleClass('fa-chevron-down');\n\t\t\t\t$( \".sparkline11-graph\" ).slideToggle( \"slow\" );\n\t\t\t});\n\t\t\t$(\".sparkline11-collapse-close\").on('click', function(){\n\t\t\t\t$( \"div.sparkline11-list\" ).fadeOut( 600 );\n\t\t\t});\n\t\t\t\n\t\t\t\n\t\t// Collapse ibox function\n\t\t\t$('.sparkline12-collapse-link').on('click', function () {\n\t\t\t\tvar button = $(this).find('i');\n\t\t\t\tbutton.toggleClass('fa-chevron-up').toggleClass('fa-chevron-down');\n\t\t\t\t$( \".sparkline12-graph\" ).slideToggle( \"slow\" );\n\t\t\t});\n\t\t\t$(\".sparkline12-collapse-close\").on('click', function(){\n\t\t\t\t$( \"div.sparkline12-list\" ).fadeOut( 600 );\n\t\t\t});\n \n\t\t// Collapse ibox function\n\t\t\t$('.sparkline13-collapse-link').on('click', function () {\n\t\t\t\tvar button = $(this).find('i');\n\t\t\t\tbutton.toggleClass('fa-chevron-up').toggleClass('fa-chevron-down');\n\t\t\t\t$( \".sparkline13-graph\" ).slideToggle( \"slow\" );\n\t\t\t});\n\t\t\t$(\".sparkline13-collapse-close\").on('click', function(){\n\t\t\t\t$( \"div.sparkline13-list\" ).fadeOut( 600 );\n\t\t\t});\n \n\t\t// Collapse ibox function\n\t\t\t$('.sparkline14-collapse-link').on('click', function () {\n\t\t\t\tvar button = $(this).find('i');\n\t\t\t\tbutton.toggleClass('fa-chevron-up').toggleClass('fa-chevron-down');\n\t\t\t\t$( \".sparkline14-graph\" ).slideToggle( \"slow\" );\n\t\t\t});\n\t\t\t$(\".sparkline14-collapse-close\").on('click', function(){\n\t\t\t\t$( \"div.sparkline14-list\" ).fadeOut( 600 );\n\t\t\t});\n \n\t\t// Collapse ibox function\n\t\t\t$('.sparkline15-collapse-link').on('click', function () {\n\t\t\t\tvar button = $(this).find('i');\n\t\t\t\tbutton.toggleClass('fa-chevron-up').toggleClass('fa-chevron-down');\n\t\t\t\t$( \".sparkline15-graph\" ).slideToggle( \"slow\" );\n\t\t\t});\n\t\t\t$(\".sparkline15-collapse-close\").on('click', function(){\n\t\t\t\t$( \"div.sparkline15-list\" ).fadeOut( 600 );\n\t\t\t});\n \n\t\t// Collapse ibox function\n\t\t\t$('.sparkline16-collapse-link').on('click', function () {\n\t\t\t\tvar button = $(this).find('i');\n\t\t\t\tbutton.toggleClass('fa-chevron-up').toggleClass('fa-chevron-down');\n\t\t\t\t$( \".sparkline16-graph\" ).slideToggle( \"slow\" );\n\t\t\t});\n\t\t\t$(\".sparkline16-collapse-close\").on('click', function(){\n\t\t\t\t$( \"div.sparkline16-list\" ).fadeOut( 600 );\n\t\t\t});\n \n\t\t \n \n})(jQuery); "
  },
  {
    "path": "public/admin/js/map/france_departments.js",
    "content": "/*!\n *\n * Jquery Mapael - Dynamic maps jQuery plugin (based on raphael.js)\n * Requires jQuery and Mapael\n *\n * Map of metropolitan France by department\n * Equirectangular projection\n *\n * @author Vincent Brout\n * @source http://fr.m.wikipedia.org/wiki/Fichier:France_location_map-Departements.svg\n */\n(function (factory) {\n    if (typeof exports === 'object') {\n        // CommonJS\n        module.exports = factory(require('jquery'), require('jquery-mapael'));\n    } else if (typeof define === 'function' && define.amd) {\n        // AMD. Register as an anonymous module.\n        define(['jquery', 'mapael'], factory);\n    } else {\n        // Browser globals\n        factory(jQuery, jQuery.mapael);\n    }\n}(function ($, Mapael) {\n\n    \"use strict\";\n    \n    $.extend(true, Mapael, \n        {\n            maps : {\n                france_departments : {\n                    width : 600.08728, \n                    height : 626.26221,\n                    getCoords : function (lat, lon) {\n                        var xfactor,\n                            xoffset,\n                            yfactor,\n                            yoffset,\n                            x,\n                            y;\n                        // Corse\n                        if (lat < 43.15710 && lon > 8.17199) {\n                            xfactor = 43.64246;\n                            xoffset = 181.34520;\n                            x = (lon * xfactor) + xoffset;\n                            \n                            yfactor = -65.77758;\n                            yoffset = 3346.37839;\n                            y = (lat * yfactor) + yoffset;\n                        } else {\n                            xfactor = 45.48385;\n                            xoffset = 220.22005;\n                            x = (lon * xfactor) + xoffset;\n                            \n                            yfactor = -65.97284;\n                            yoffset = 3371.10748;\n                            y = (lat * yfactor) + yoffset;\n                        }\n                        return {x : x, y : y};\n                    },\n                    elems : {\n                        \"department-29\" : \"m 37.28,156.11 c -1.42,1.23 -3.84,1.18 -3.99,3.49 -1.31,-2.24 -8,-0.27 -6.23,1.86 -0.83,0.29 -3.61,-0.09 -4.72,1.08 1.27,-3.15 -2.84,-2.76 -4.74,-1.32 -1.52,0.3 0.5,1.51 -1.67,1.26 -1.43,1.46 -5.78,-1.22 -5,1.7 2.01,2.28 -4.44,-1.17 -2.19,2.21 2.05,2.35 -1.91,-1.21 -3.2,0.17 -2.44,0.46 -5.9,3.28 -4.27,6.2 1.31,1.03 -2.45,2.79 -0.89,4.68 1.85,1.54 -1.54,4.66 1.85,4.99 2.29,0.7 2.49,-2.98 4.87,-0.96 3.08,0.74 5.89,-2.07 8.89,-2.74 1.93,-0.34 5.67,-2.04 6.34,-1.85 -2,1.78 -5.83,1.89 -6.41,4.93 -0.69,1.92 2.11,-0.67 2.33,1.07 1.34,-0.89 2.68,-1.87 3.94,-1.39 3.81,-2.03 -2.75,2.24 0.52,1.99 1.47,0.34 4.01,0.96 4.33,1.46 -1.94,0.3 -3.28,1.07 -4.57,-0.08 -2.38,0.71 -4.58,1.45 -6.63,0.05 -2.75,0.86 -5.75,0.61 -4.18,-2.84 -3.29,-0.24 -0.4,5.1 -3.79,3.67 -1.2,2.84 5.41,0.67 2.62,3.42 0.89,1.41 -0.15,5.78 1.86,2.76 0.83,-2.29 2.62,-4.57 5.09,-2.36 1.97,1.37 5.1,0.79 5.41,4 1.86,2.04 -0.29,6.23 -3,3.6 -3.95,0.62 -7.67,1.95 -11.58,2.45 -2.09,0.38 -5.98,-0.08 -4.41,2.7 2.53,0.06 4.87,1.62 7.03,1.82 2.62,-1.48 5.9,3.16 7.51,5.27 1.61,2.44 2.66,5.4 0.91,7.66 1.94,1.19 5.11,1.18 7.5,0.75 1.99,-0.45 3.16,-2.44 1.04,-3.28 -1.05,-1.98 0.82,-2.27 1.51,-0.45 3.34,0.23 -0.63,-4.11 0.69,-3.65 0.91,2.75 3.66,3.46 5.82,3.53 2.26,0.86 -0.02,-4.66 2.92,-2.01 2.11,1.7 2.69,4.22 4.57,6.13 2.01,0.11 4.17,0.12 6.01,-0.65 1.82,2.12 5.68,2.27 8.25,2.23 1.8,-1.51 -1.55,-4.66 0.95,-5.09 0.94,2.57 3.24,-0.19 3.58,-1.33 2.95,0.23 0.38,-3.13 2.08,-4.2 -0.21,-1.43 -0.64,-3.61 -2.53,-1.94 -1.44,2.09 -1.76,-1.59 -3.7,-1.52 -2.13,-1.41 -5.77,1.37 -6.1,-2.55 -0.44,-2.07 -2.04,-3.22 -2.32,-5.05 -2.23,-0.45 0.49,-4.53 2.59,-4.02 1.42,-1.43 5.76,-1.87 5.77,-3.15 -3.54,-1.5 2.53,-4.55 -0.88,-5.73 0.6,-1.35 -0.87,-3.79 -0.56,-5.72 -3.53,0.13 -1.65,-3.79 0.06,-4.6 -3.56,-1.53 -0.98,-4.21 0.33,-6.05 -1.3,-1.16 -2.22,-1.16 -1.99,-2.94 -3.12,-0.26 -3.41,-4.67 -2.3,-6.54 -0.38,-1.53 -3.23,-0.42 -4.45,-1.94 -2.01,-0.12 -5.18,-1.19 -4.7,2.29 -0.84,1.4 0.25,4.35 -1.82,2.22 -1.36,-0.49 -0.48,-3.38 -2.36,-1.3 -1.28,1.93 -1.52,-3.86 -1.99,-4.38 z m -9.88,28.66 0,0.02 0,-0.02 z\",\n                        \"department-22\" : \"m 77.67,146.73 c -2.58,0.94 -4.37,2.6 -5.78,4.84 1.21,-2.76 0.01,-6.18 -2.26,-2.58 -2.86,-0.54 -4.85,2.02 -7.32,2.35 0.05,-2.38 -5.14,-2.89 -4.97,-0.27 -1.65,0.69 -2.79,2.55 -0.54,3.83 1.42,1.41 -3.19,1.12 -1.21,3.58 0.75,2.79 -2.62,-0.53 -2.95,1.74 -2.03,2.25 0.93,5.14 2.73,6.11 -0.89,1.81 3.77,1.87 0.94,3.62 -2.27,1.33 -1.69,4.1 0.71,4.68 -2.37,0.99 -3.54,4.66 -0.18,4.93 -0.75,1.8 0.34,4.07 1.35,3.89 -2.23,1.45 2.07,3.31 -1.02,4.81 -1.32,1.63 3.39,3.81 -0.37,3.46 -0,1.68 3.4,-0.17 4.6,0.64 2.17,-1.15 0.09,3.47 2.84,1.65 2.78,-2.51 5.12,2.28 8.16,0.11 1.28,-1.21 4.21,0.16 3.71,-2.72 2.36,-2.11 5.53,-0.32 6.55,2.07 3.1,-1.66 5.66,1.79 8.52,1.44 1.09,1.13 1.31,4.63 2.54,1.67 1.77,0.69 4.7,-2.67 4.36,1 -1.42,1.92 -0.06,5.98 2.29,3.25 2.15,-1.33 3.24,-3.52 3.71,-5.84 -1.55,-1.8 3.03,-1.29 4.1,-2.17 2.56,0.5 2.84,5.71 5.3,2.6 2.48,-0.52 4.76,-2.21 4.35,-5.23 2.66,1.35 0.38,-3.98 3.68,-3.07 2.3,0.76 0.88,-1.21 2.74,-1.68 0.93,-2.46 3.26,2.1 3.88,-0.74 2.87,-0.05 0.28,-3.49 2.75,-3.67 -0.67,-1.88 -0.1,-4.12 -0.62,-6.07 1.57,-1.46 2.25,-5.3 0.59,-6.78 -0.36,1.32 -2.86,3.56 -2.08,0.75 -0.58,-2.28 -2.24,-1.04 -3,-0.66 -0.39,-2.19 -3.7,-1.69 -4.26,-4.29 -2.01,-0.96 -0.92,3.96 -2.61,1.33 -0.93,2.11 -1.72,-1.85 -2.25,-2.64 -0.23,-2.69 -5.02,3.57 -3.11,-0.38 2.12,-1.4 -0.5,-4.55 -1.42,-1.9 -1.94,1.15 -2.92,1.92 -4.85,1.1 -2.9,-0.12 0.52,1.54 -2.1,2.49 -3.58,0.78 -5.19,5.69 -8.5,5.48 0.49,3.36 -2.74,-0.19 -2.06,-1.81 -2.95,-1.1 -4.73,-3.24 -4.7,-6.38 -2,-2 -5.44,-3.63 -5.11,-6.81 -0.95,-1.07 -6.79,-1.08 -3.38,-3.09 0.47,-2.76 -4.12,-1.19 -3.66,1.11 -0.44,1.73 -2.27,2.41 -0.65,0.39 1.33,-1.47 1.44,-4.62 0.53,-6.14 z\",\n                        \"department-56\" : \"m 78.99,190.76 c -3.41,-1.13 -2.2,3.92 -5.32,2.9 -1.41,0.4 -1.19,1.61 -2.99,0.82 -1.13,0.79 -2.69,-0.38 -3.4,-0.47 -0.84,-2.28 -6.08,2.96 -4.76,-1.3 -1.92,-0.69 -4.61,-0.08 -6.81,-0.32 -2.56,1.49 -6.48,1.43 -6.89,4.97 1.66,0.45 1.27,1.18 1.54,2.72 2.29,1.28 1.38,6.71 5.21,4.85 2.27,-0.57 4.21,1.54 5.35,2.54 1.09,-1.75 3.9,-1.39 3.21,0.95 0.1,1.55 -1.11,2.84 -0.3,4.77 -2.2,-0.71 -3.03,4.58 -5.67,1.76 -1.43,0.94 1.23,2.98 -0.19,4.47 0.79,3.11 4.25,6.81 7.21,3.89 -1.96,-1.82 1.17,-1.04 2.08,-2.79 1.53,-1.34 1.85,-1.47 0.72,0.46 -0.96,1.01 -3.43,3.3 -0.38,3.09 1.49,0.45 3.45,4.36 4.77,2.88 -0.27,-2.53 3.83,-3.05 1.1,-5.44 1.05,0.63 2.71,-0.96 2.12,1.15 2.98,0.99 -0.94,3.03 -2.44,3.55 -2.08,3.14 3.5,3.77 1.75,6.92 -0.29,1.59 0.31,5.9 2.13,4.03 -1.68,-0.96 -1.89,-7.61 0.51,-4.94 -0.5,1.26 4.8,0.74 3.44,-1.25 0.35,-0.76 1.34,3.45 1.43,0.83 0.89,1.74 3.91,2.47 1.59,0.06 -0.51,-1.47 -0.02,-3.03 -0.87,-4.45 1.76,1.65 1.37,4.11 4.01,4.31 0.21,-1.28 1.88,-0.67 1.78,-2.23 1.83,0.46 2.89,-0.48 3.79,-0.93 2.28,0.82 -0.59,1.71 2.06,2.43 1.57,0.52 0.39,-4.11 1.62,-1.05 -0.46,2.03 -2.17,6.08 -4.56,4.17 -1.51,0.14 -2.97,0.56 -4.53,-0.67 -3.37,0.66 2.51,2.11 2.17,4.25 2.28,1.57 4.95,-1.33 7.46,-0.04 0.09,-2.03 1.34,-0.88 2.36,-1.71 -1.31,-1.38 4.01,-1.27 0.96,-0.1 0.22,1.93 4.41,-1.17 5.9,0.75 1.01,1.43 4.31,0.26 4.44,1.04 -2.33,0.43 -6.75,-0.69 -5.01,3.23 1.5,1.03 2.59,-3.6 4.01,-0.77 1.99,-0.12 4.3,0.38 4.4,-2.43 0.29,-2.58 2.25,-0.15 3.16,-0.22 1.19,-1.05 2.3,-1.01 2.74,0.42 1.6,-0.29 0.66,-3.06 3.03,-2.61 0.96,-1.59 -0.11,-4.05 1.01,-5.76 -1.21,-2.25 -1.75,-4.67 -1.62,-7.13 1.06,-1.01 4.05,-0.69 1.57,-1.96 -1.94,-0.06 -2.1,-1.17 -0.12,-1.66 0.89,-1.32 3.49,-4.07 1.04,-4.6 -2.47,1.93 -2.55,-3.4 -0.68,-4.04 -0.57,-3.25 -3.22,-4.81 -6.13,-5.41 -2.4,0.4 -4.25,0.1 -2.46,-2.49 0.6,-2.26 5.5,-0.56 4.09,-3.23 -1.75,-0.22 -3.84,2.7 -3.33,-0.63 0.01,-3.41 -3.32,-2.88 -4.84,-1.45 -0.88,-3.11 -3.48,-4.72 -6.36,-3.01 -2.15,-0.01 0.26,2.97 -2.05,3.88 -0.09,2.06 -3.87,4.92 -5.31,3.84 -1.21,-1.39 2.06,-7.27 -1.57,-5.21 -1.38,0.54 -2.88,0.33 -3.62,2.06 -0.18,-2.38 -1.59,-4.23 -4.05,-3.7 -1.5,-2.53 -4.89,-0.74 -6.39,-1.56 -0.77,-1.17 -1.33,-2.65 -3.1,-2.43 z\",\n                        \"department-35\" : \"m 134.53,157.78 c -2.29,1.25 -4.29,0.31 -6.19,1.59 -0.35,1.67 -2.93,2.17 -1.16,4.31 0.18,1.71 3.99,2.25 1.51,3.04 0.71,1.27 0.98,3.59 2.33,1.22 1.69,2.12 0.9,4.75 -0.11,6.67 -1.16,1.66 0.84,3.78 -0.19,5.68 1.34,1.46 -2.11,1.58 -0.78,3.48 0.21,2.25 -2.03,-0.13 -2.56,2.08 -1.42,-0.68 -2.58,-1.61 -3.47,0.21 -1.19,0.31 -0.39,2.42 -2.44,1.14 -3.01,-0.11 -1.06,4.1 -3.56,3.46 -0.04,2.21 -0.64,4.46 -2.86,4.2 0.62,1.53 1.56,3.49 1.75,5.16 0.54,-2.03 5.23,-1.03 2.52,0.76 -2.33,-0.69 -5.1,2.03 -3.97,3.88 2.89,-0.33 6.41,0.27 7.93,3.03 1.44,1.66 0.87,2.99 -0.39,4.33 0.11,1.6 0.84,3.69 2.2,1.35 0.71,-0.77 0.83,2.07 1.01,2.45 -1.23,1.26 -2.05,2.91 -3.28,3.92 1.71,0.13 3.61,2.39 0.59,2.1 -2.68,1.22 0.26,4 -0.22,5.86 2.34,-0.34 4.15,-1.76 6.12,-3.07 0.06,2.7 3.03,-0.8 4.56,-0.57 2.43,-1.1 5.63,0.82 7.84,-0.63 3.6,0.5 2.72,-4.87 6.32,-4.78 1.62,-0.77 5.16,-0.84 3.73,-3.31 2.85,-0.62 4.57,1.21 6.54,2.5 1.91,0.57 5.04,2.11 4.63,-1.3 1.15,-1.21 0.6,-2.9 1.92,-3.9 0.7,-1.81 1.08,-4.73 2.39,-6.4 1.07,-2.4 6.58,0.52 5.22,-3.48 -0.09,-3.31 -1.44,-6.24 -2.22,-9.58 0.1,-2.96 -2.26,-6.23 0.02,-8.8 1.83,-2.19 0.74,-5.58 -0.28,-8.01 0.55,-2.21 1.33,-6.39 -2.22,-6.48 -2.56,-0.06 -6.32,-3.21 -7.21,0.93 -2.37,0.79 -4.8,5.49 -7.02,1.82 -2.57,-0.44 -4.28,-3.63 -3.95,-6.18 -0.99,-1.91 -2.39,-5.92 -4.86,-2.88 -3.41,0.04 -8.02,2.16 -10.43,-0.96 -1.67,-2.06 2.03,-3.1 0.24,-4.85 z\",\n                        \"department-44\" : \"m 152.12,215.29 c 0.59,4.69 -7.52,2.23 -7.55,6.92 -2.45,2.92 -6.64,1.42 -9.84,1.79 -2.21,0.47 -4.62,2.21 -6.1,1.16 -2.15,1.71 -5.77,2.38 -4.86,5.66 -0.41,1.99 0.14,5.32 -2.78,5.46 0.29,3.39 -2.45,-0.35 -3.39,1.23 -1.97,-0.43 -3.4,-1.22 -3.87,1.43 -1.39,3.38 -7.86,-1.72 -6.53,3.45 1.04,0.36 3.95,1.27 1.26,1.45 -1.78,0.18 -4.38,-0.42 -5.51,2.1 0.81,1.67 6.76,3.88 3.55,5.8 -1.04,-0.85 -4.89,-1.36 -1.91,0.14 1.73,1.23 3.86,1.82 5.03,0.15 2.77,0.79 5.25,4.76 7.99,1.3 2.33,-2.98 5.67,-3.71 9.18,-3.56 3.26,1.31 7.02,1.76 9.14,4.89 0.59,1.56 5.82,2.63 2.15,2.16 -4.08,-0.08 -5.45,-5.45 -9.25,-4.42 -2.59,-1.44 -6.59,-0.45 -8.62,1.17 0.15,2.98 1.07,6.99 -2.64,7.63 1.56,2.78 6.83,0.77 8.69,4.16 2.99,2.74 4.83,7.09 8.9,8.42 0.9,1.88 5.53,0.57 5.08,3.59 3.08,0.7 6.82,2.86 9.67,1.11 2.13,-1.29 -2.55,-2.42 -0.14,-3.94 -2.91,-1.74 -0.81,-8.5 2.35,-5.93 0.6,2.44 -0.71,8.47 3.28,5.3 3.57,-0.9 -1,-7.35 3.9,-6.19 0.83,-0.5 2.39,-4.6 3.91,-1.32 1.06,2.31 6.94,2.33 4.03,-0.72 -1.16,-2.43 -6.27,-0.49 -4.19,-3.49 1.19,-2.09 4.14,-3.59 2.27,-6.58 -0.11,-2.99 -2.79,0.14 -3.66,-2.47 -0.42,-1.81 -2.18,-3.14 -3.54,-3 1.51,-3.16 6.07,-2.52 8.85,-3.95 3.12,-0.79 9.37,1.47 9.71,-3.23 -1.08,-2.47 -1.12,-5.9 -4.66,-5.46 -2.8,0.23 -7.97,-1.25 -5.65,-4.79 1.85,-0.34 7.04,1.35 6.32,-1.48 -2.96,-1.34 -7.7,-2.06 -7.06,-6.38 -0.89,-2.42 -4.47,-2.43 -3.18,-5.19 -2.78,-1.29 -5.51,-2.7 -8.1,-4.12 -0.73,-0.11 -1.47,-0.12 -2.19,-0.28 z\",\n                        \"department-50\" : \"m 131.13,90.31 c -1.88,0.95 -0.8,4.82 1.86,4.23 3.56,1.9 1.73,6.62 0.2,9.04 2.05,2.45 3.1,5.7 3,9 0.14,1.74 2.63,0.2 3.07,2.34 0.75,1.03 1.85,2.12 2.19,0.36 1.37,1.6 -1.38,2.27 1.05,3.66 1.37,1.28 0.99,6.4 3.69,4.06 1.9,0.29 2.45,1.19 0.04,0.86 -1.6,1.67 0.46,4.57 0.89,5.74 -2.97,1.02 -0.03,4.32 -0.89,6.45 0.25,4.18 2.26,-2.3 3.97,0.71 -3,-1.64 -2.73,4.63 -1.52,5.52 -1.39,1.53 -0.75,4.59 -2.48,6.57 2.85,1.89 0.3,6.73 3.77,8.41 0.72,3.65 6.47,2.47 6.87,4.86 -3.09,-0.67 -6.13,1.28 -9.29,0.14 2.12,2.48 1.69,5.44 3.35,8.16 0.49,2.03 2.9,1.69 3.89,3.28 2.85,0.97 3.52,-2.95 6.22,-3.35 0.5,-4.19 4.83,-0.16 7.12,-0.52 2.46,0.21 4.49,2.11 6.88,1.58 1.14,-3.4 4.72,2.61 6.05,-1.83 2.14,-1.71 4.11,-4.11 4,-6.8 -2.86,-1.65 2.62,-4.05 -1.04,-4.65 -1.19,-1.03 -1.99,-2.17 -3.44,-2.39 0.65,-1.72 0.69,-2.24 -1.24,-1.46 -2.15,-1.56 -3.83,-1.87 -6.18,-1.16 -1.5,-0.55 -4.16,0.68 -4.02,-2.14 -1.26,-0.78 -4.15,-1.48 -1.38,-2.84 0.99,-1.27 1.76,-1.9 2.97,-1.76 1.12,-1.18 3.8,-4.02 0.24,-2.9 -1.76,-0.83 1.02,-4.16 2.87,-2.17 3.08,-0.43 3.89,-3.82 6.01,-5.35 -2.27,-0.59 1.2,-4.39 -1.22,-5.32 -2.09,1.3 -1,0.15 0.07,-0.89 -1.07,-1.07 -4.55,-2.49 -1.49,-2.88 2.17,-1.47 -0.09,-4.82 -1.5,-1.9 -3.17,0.81 -5.99,-2.78 -7.94,-5.02 -1.69,-1.95 2.34,-3.94 -0.73,-4.53 -0.02,-1.64 -2.94,0.31 -1.33,-2.17 1.04,-2.89 -2.27,-4.45 -3.47,-6.64 -1.37,-1.99 -4.59,-6.54 -0.56,-7.31 0.17,-1.79 2.56,-1.35 1.09,-3.59 -0.43,-3.65 -3.79,-3.85 -6.83,-3.94 -3.88,-1.03 -4.69,4.08 -8.52,3.07 -3.16,1.2 -5.48,-1.83 -8.81,-1.65 -2.47,0.02 -3.19,-2.65 -5.7,-1.92 -0.51,-0.38 -1.01,-1.1 -1.74,-0.94 z\",\n                        \"department-53\" : \"m 208.55,167.1 c -1.01,1 0.05,3.16 -1.88,3.54 -1.52,-1.01 -2.64,-0.44 -3.16,1.13 -2.16,0.27 -4.3,-2.6 -6.35,-0.72 -2.51,0.71 -4.34,2.89 -6.91,3.52 -1.47,-0.07 -0.73,-3.05 -2.63,-1.24 -1.44,-0.25 -1.57,0.24 -1.23,1.52 -1.95,1.91 -3.12,-1.9 -4.31,-1.2 -0.57,-2.91 -4.17,-1.79 -5.68,-3.27 -1.71,1.43 -3.54,2.05 -5.24,0.23 -1.62,1.36 -0.04,4.11 -0.87,5.96 1,2.8 1.94,6.2 -0.3,8.68 -1.8,2.64 0.64,5.51 0.63,8.4 0.26,2.57 1.34,4.89 2.01,7.32 0.27,1.9 0.56,4.67 -2.4,4.46 -3.58,-1.21 -3.75,3.46 -4.8,5.71 -0.32,2.32 -3.14,4.44 -1.31,6.55 2.18,1.99 5.34,0.43 7.83,1.57 1.63,0.66 3.95,1.05 3.53,-1.27 2.64,-0.54 3.9,3.91 6.54,1.42 2.25,1.91 5.27,1.85 7.94,2.38 1.76,-0.55 3.96,-1.63 5.33,-1.8 0.74,-3.63 3.49,1.65 5.63,-0.72 3.1,-0.49 -0.69,-2.25 -1.75,-2.95 -1.24,-2.55 5.38,-2.7 2.17,-4.78 -2.1,-2.18 2.21,-3.41 3.9,-3.25 2.7,-2.12 -2.9,-5 -0.82,-7.18 1.54,-1.12 5.56,-0.07 4.23,-2.96 2.04,-1.51 -2.56,-3.7 0.57,-5.19 2.14,-0.95 4.31,-2.8 2.75,-5.2 0.4,-1.84 1.4,-3.83 0.29,-5.45 0.84,-2.27 2.74,-2.67 4.64,-3.69 0.49,-2.31 0.11,-5.38 -2.99,-3.91 -2.18,-0.9 -2.07,-4.02 -1.67,-5.52 -0.9,-1.11 -2.32,-1.86 -3.72,-2.1 z\",\n                        \"department-49\" : \"m 163.22,217.21 c -0.83,2.37 -1.6,5.33 1.37,5.86 1.81,2.08 0.91,5.95 4.42,6.63 2.22,0.05 6.13,2.61 1.99,3.38 -1.68,0.33 -6.88,-1.51 -4.42,1.8 -0.28,3.95 5.62,1.28 7.64,2.98 2.45,0.74 1.41,5.07 2.67,6.48 -2.29,2.93 -6.35,1.4 -9.46,1.86 -2.75,1.47 -6.15,1.11 -8.63,2.95 -2.19,2.35 2.81,0.48 2.57,3.2 0.31,2.29 2.55,1.71 3.57,1.87 1.63,2.89 1.11,5.74 -1.65,7.56 -1.38,3.05 3.73,1.85 4.64,4.57 0.65,0.86 -1.19,3.33 1.44,2.98 2.09,1.51 5.06,-0.93 6.83,0.87 2.12,0.24 3.87,3.37 5.76,0.52 2.61,-0.75 5.23,0.76 7.87,-0.16 3.45,0.68 4.18,-2.89 4.98,-5 2.46,-1.53 5.74,1.7 7.32,-1.15 3.52,-0.32 7.2,-1.11 10.47,-0.77 1.05,1.17 -2.26,1.94 0.29,2.63 2.66,0.88 1.49,-3.86 4.67,-2.23 0.32,-1.55 1.08,-6.07 4.26,-4.7 1.02,-3.55 0.54,-7.68 3.15,-10.63 1.2,-1.75 2.78,-3.33 2.02,-5.32 0.89,-2.49 1.94,-4.87 2.33,-7.52 -2.3,-1.25 2.95,-6.06 -1.28,-5.83 -1.14,3.4 -4.78,-0.25 -6.77,-0.21 -1.89,-1.86 -5.83,-3.95 -7.59,-1.47 -2.9,0.48 -5.51,-3.13 -2.87,-5.2 -1.31,-0.36 -3.53,1.25 -5.3,-0.11 -1.96,-0.38 -3.12,0.57 -3.07,-1.96 -1.12,-2.87 -4.12,0.14 -5.77,-2.2 -1.77,-0.71 -0.8,2.61 -3.03,1.75 -3.13,1.53 -6.89,1.32 -10.17,-0.06 -1.72,-2.25 -3.57,1.59 -5.08,-1.25 -0.8,-0.99 -3.72,-1.84 -2.9,0.37 -3.4,0.17 -6.97,-0.89 -10.18,-1.14 -0.72,-0.44 -1.37,-0.99 -2.14,-1.36 z\",\n                        \"department-85\" : \"m 161.28,265.2 c -0.97,1.7 -1.54,3.91 -3.7,2.64 -1.76,1.98 1.21,6.33 -3.05,6.68 -4.15,2.13 -1.3,-4.19 -2.86,-6.14 -3.81,-0.88 -3.43,4.2 -2.06,6.39 -1.18,1.59 2.88,3.89 -0.56,4.36 -2.8,1.01 -5.58,-1.25 -8.45,-1.27 -0.94,-1.21 -1.09,-3.22 -3.4,-2.64 -2.06,0.15 -1.35,-2.2 -3.49,-1.71 -2.48,-1.21 -5.24,-7.8 -7.15,-2.42 -0.59,3.85 -5.53,4.8 -4.91,9.21 0.37,4.17 5.72,4.87 7.16,8.67 2.67,2.58 4.99,5.43 6.65,8.8 0.87,1.89 0.24,6.13 2,6.75 0.16,-1.73 0.12,-2.45 1.07,-0.5 1.66,2.86 6.15,2.45 7.02,5.1 3.4,-0.42 6.93,0.3 7.04,4.36 1.27,2.81 4.49,-1.27 6.02,1.84 2.09,-0.13 3,3.11 4.96,3.02 -0.36,-3.97 4.41,-1.93 6.48,-3.3 1.71,-1.96 4.7,-2.5 6.81,-2.37 -1.17,1.68 -0.83,3.92 1.65,2.75 2.07,-0.36 4.04,-2.66 5.25,0.14 2.09,1.8 3.55,-0.97 5.61,-0.12 1.62,-1.38 3.3,-2.9 5.04,-3.72 0.18,-2.56 -3.47,-1.87 -3.87,-1.44 -0.63,-2.59 1.8,-5.29 -0.47,-7.7 0.94,-1.38 2.03,-1.54 1.08,-3.45 0.09,-2.1 -0.29,-4.13 -1.61,-5.22 0.65,-2.15 -1.16,-2.52 -0.79,-4.52 -1.57,-1.94 -3.3,-3.94 -1.89,-6.5 -1.72,-1.62 -5.39,-2.92 -5.22,-6.11 0.38,-2.29 -3.29,-2.9 -3.68,-5.31 -1.81,-2.01 -4.49,-1.74 -7.1,-1.32 -3.49,-1.03 -6.73,-2.66 -9.6,-4.96 z\",\n                        \"department-79\" : \"m 211.41,263.54 c -3.47,1 -7.46,-0.24 -10.55,2.01 -1.54,0.87 -3.61,1.5 -3.45,-0.55 -2.89,-0.11 -3.46,3 -4.1,4.64 -2.76,1.84 -6.3,1.53 -9.35,1.02 -2.77,-0.37 -6.01,2.62 -2.55,4.27 1.05,2.29 0.26,5.24 3.5,6.22 3.7,1.27 0.35,4.83 3.08,6.91 1.95,2.46 1.89,5.88 3.13,8.43 0.79,2.29 0.53,5.23 -0.6,6.69 2.08,1.92 -1.04,5.98 0.79,6.87 2.26,-2.05 4.86,2.6 1.35,3.21 -1.82,2.1 -4.84,2.03 -7.01,3.55 -1.92,3.7 2.7,4.91 3.24,8.13 1.44,0.37 2.62,0.88 2.81,2.1 3.32,-0.93 5.83,3.57 8.63,3.01 2.89,1.17 6.03,0.6 8.47,3.22 3.7,-0.54 3.87,6.56 7.56,4.57 1.73,-2.11 1.24,-5.98 4.87,-5.81 1.63,-2.21 4.23,-2.49 6.45,-1.63 1.55,-1.48 2.11,-4.78 -0.83,-4.33 -3.29,-1.46 -1.71,-5.49 -0.5,-7.4 1.75,-0.97 0.56,-7.43 -1.84,-3.75 -2.3,2.89 -5.28,-1.21 -4.22,-3.39 -2.48,-2.03 -1.19,-5.37 -2.68,-7.99 1.33,-2.02 1.71,-4.55 3.11,-6.42 -0.55,-0.92 -2.28,-2.13 -2.08,-2.45 -3.66,1.58 0.19,-4.05 1.24,-5.25 2.3,-2.33 -3.14,-3.07 -0.93,-5.56 1.44,-1.85 -3.47,-1.82 -0.33,-2.92 3.33,-0.16 0.56,-1.18 -0.24,-2.53 0.5,-2.54 0.1,-5.85 -1.91,-7.36 -1.96,-0.52 -0.38,-5.88 -4.15,-4.77 -2.43,-0.12 2.22,-3.17 -0.9,-2.74 z\",\n                        \"department-17\" : \"m 175.73,312.62 c -2.1,1.05 -4.89,0.98 -6.33,3.16 -2.59,0.12 1.24,4.72 -2.26,5.02 -2,0.79 -4.42,5.17 -2.11,6.01 2.93,0 2.49,3.17 4.17,4.84 0.72,1.37 3.67,5.65 0.03,4.87 -2.18,0.36 1.95,2.77 0.48,4.24 1.55,2.23 0.05,3.13 -1.55,3.46 -0.38,1.57 -2.23,1.63 -0.92,3.81 0.7,3.56 3.92,5.46 6.53,7.53 -3.66,-0.31 -5.1,-4.96 -7.98,-5.25 -3.89,-1.1 -3.52,4.91 -2.88,6.67 2.74,-1.46 4.76,2.94 7.48,3.54 3.34,1.31 3.69,5.42 7.19,6.15 4.09,3 7.55,7.17 8.5,12.27 0.26,3.76 5.67,2.29 7.12,1.56 -1.08,5.27 6.99,0.78 7.08,5.12 0.92,1.82 -0.24,5.87 1.93,6.53 3.38,-1.84 5.25,4.16 8.91,4.29 2.53,1.16 3.84,-3.72 5.99,-0.43 0.42,-1.35 1.41,-3.02 1.97,-3.79 -0.43,-1.67 1.72,-4.75 -1.44,-5.53 -1.82,-0.53 -4.59,0.36 -3.27,-2.54 -1.47,-1.11 -5.11,-3.27 -7.08,-1.29 -2.02,-1.16 -0.75,-3.34 0.78,-3.22 -1.02,-0.53 -4.64,-2.27 -1.19,-3.33 4.28,-0.66 -2.5,-4.27 0.56,-5.26 2.44,-2.46 -2.28,-2.77 -2.54,-4.29 2.17,-2.32 -2.75,-3.59 -3.55,-5.14 -2.87,0.92 -0.97,-2.62 0.33,-2.63 -2.65,-1.14 -0.44,-4.4 -1.57,-5.27 -2.89,0.77 -1.45,-2.34 0.53,-2.18 1.34,-1.34 4.68,-0.44 6.11,-2.14 2.35,-0.74 2.26,3.5 4.57,1.02 2.44,-0.29 1.26,-3.78 2.59,-5.17 -1.46,-1.93 -1.99,-4.68 1.15,-4.47 0.21,-2.43 -3.03,-4.09 -3.83,-6.1 -0.81,-1.69 -4.49,-0.9 -5.2,-3.54 -1.75,0.56 -3.25,0.45 -4.22,-0.82 -1.42,1.85 -1.72,-1.94 -2.91,-0.25 -3.3,-0.03 -3.97,-4.4 -7.72,-2.73 0.56,-2.08 -4.7,-2.08 -3.15,-4.59 -0.87,-1.66 -4.22,-2.08 -2.44,-4.29 -0.3,-2.54 -4.15,-5.59 -5.48,-2.93 -1.22,-0.57 -5.78,1.4 -3.85,-1.55 0.3,-0.71 0.63,-1.62 -0.55,-1.38 z m -24.48,7.33 c -2.5,0.03 -3.87,1.14 -1.7,3.09 3.95,0.17 7.19,2.31 10.9,3.68 3.89,-1.05 -3.64,-4.87 -5.82,-4.1 0.29,-2.41 -4.61,1.24 -3.83,-1.48 1.5,1.02 1.83,-1.02 0.46,-1.19 z m 4.27,13.72 c -0.7,1.54 2.03,3.7 0.87,5.86 3.02,2.81 6.53,5.8 7.08,10.16 2.32,-1.62 3.28,-6.49 0.08,-7.91 -0.51,-2.29 -0.47,-5.1 -3.54,-5.11 -1.46,-1 -2.65,-2.71 -4.49,-2.99 z\",\n                        \"department-33\" : \"m 170.37,365.5 c -2.88,2.39 -3.66,6.38 -3.67,9.99 -0.06,6.47 -0.57,12.93 -1.99,19.26 -0.93,8.17 -1.59,16.38 -2.58,24.55 0.15,2.18 -1.38,7.44 -0.06,8.1 -0.08,-3.31 1.98,-7.54 4.36,-8.96 1.97,1.72 7.34,5.74 3.76,7.49 -2.73,1.04 -6.38,-2.36 -6.38,2.52 -1.52,2.69 -2.74,7 -1.06,9.24 2.84,-0.63 5.96,-2.27 7.61,-3.75 2.03,1.26 5.7,0.92 3.77,4.43 -2.89,4.65 3.5,-0.33 5.45,2.23 3.86,1.51 7.87,-3.74 11.26,-0.84 -1.42,4.09 4.44,3.2 5.19,6.56 1.94,1.37 4.07,0.77 4.89,3.31 2.18,0.86 -1.21,6.6 3.33,5.68 2.58,1.12 6.14,0.42 4.75,-3.03 1.75,-3.72 3.17,3 5.62,1.04 3.5,-1.1 3.84,-4.91 0.95,-7.06 1.78,-1.99 6.6,-1.58 3.43,-5.47 1.27,-2.35 -1.77,-5.16 1.09,-7.2 -1.95,-2.11 4.08,0.01 3.42,-3.48 2.15,-0.49 2.85,-2.17 2.61,-3.54 1.82,1.01 2.01,-3.15 -0.54,-1.86 -1.24,-1.31 -2.01,-2.64 0.2,-3.47 -0.33,-1.44 2,-1.21 2.56,-1.67 0.96,3.46 0.77,-3.24 2.88,-0.59 3.44,-0.12 -2.08,-5.38 2.19,-5.6 -0.3,-3.57 -4.29,-0.98 -5.16,1.24 -2.94,-0.94 -4.42,-0.02 -6.92,-0.52 -0.48,-1.95 -5.24,-0.86 -1.96,-2.84 3,-2.61 -1.26,-5.76 1.74,-8.21 0.18,-2.65 3.61,-7.86 -1.4,-8.03 -1.8,0.66 -3.02,1.85 -4.53,-0.13 -2.79,3.68 -7.23,0.65 -9.47,-1.85 -1.02,0.81 -2.89,-3.34 -3.74,-0.02 -1.83,-2.9 -1.15,-5.89 -1.94,-8.56 -2.49,-1.97 -7.58,0.6 -7.16,-4.13 -0.99,3.32 -7.86,-1.7 -5.65,3.47 1.12,5.25 -0.04,11.74 4.13,15.79 1.6,0.97 5.46,1.4 5.09,3.59 -1.14,-1.76 -5.95,-2.2 -2.42,0.16 0.89,1.86 0.32,4.86 0.46,6.96 -0.86,-3.57 -0.31,-7.65 -4.4,-9.5 -4,-3.65 -3.81,-9.3 -4.62,-14.2 -0.83,-4.14 -2.82,-8.05 -6.26,-10.61 -1.82,-3.68 -6.55,-3.9 -8.36,-7.63 -0.3,-0.84 1.03,-2.73 -0.47,-2.88 z\",\n                        \"department-40\" : \"m 169.77,433.93 c -1.39,4.09 -9.03,1.92 -8.11,7.38 -1.02,7.04 -1.81,14.11 -3.21,21.09 -1.27,6.3 -2.02,12.7 -3.64,18.93 -1,6.23 -2.25,12.44 -3.8,18.55 2.58,-1.5 3.77,4.05 6.97,1.91 3.34,1.32 5.68,-3.95 8.44,-2.39 2.07,1.33 0.83,1.91 -0.48,2.62 2.25,0.71 3.66,-2.53 5.72,-0.83 1.43,1.01 3.09,-0.31 2.14,-1.78 2.65,0.58 4.62,-1.18 7.1,-0.71 0.89,-0.91 2.56,-0.97 3.4,-1.93 1.42,1.18 2.14,3.21 3.39,1.18 1.9,-0.75 2.12,-1.21 2.41,0.33 1.62,2.42 3.07,-1.23 4.2,0.55 1.35,-0.65 5.1,-4.97 5.14,-2 -2.25,3.45 3.32,-1.25 4.51,1.48 1.42,-0.66 5.29,-2.61 3.41,-4.06 -2.62,-1.1 2.2,-2.69 0.51,-4.53 -0.4,-2.09 3.75,-3.09 1.72,-4.6 0.25,-1.62 -1.17,-3.73 0.82,-4.32 -0.1,-1.59 -0.15,-2.99 -0.15,-4.15 -3.84,-1.04 1.14,-3.46 2.82,-3.81 1.4,0.08 1.6,0.86 2.46,-0.49 1.85,-0.5 2.29,-3.87 4,-0.74 -0.03,1.42 -1.08,2.56 1.12,3.35 3.85,1.54 0.42,-3.68 2.06,-5.19 -1.31,-3.01 1.52,-6.01 2.73,-8.67 -3.45,-0.68 -6.76,-2.36 -10.44,-2.46 -3.14,0.72 -0.38,-5.12 -3.37,-6.17 -1.68,-2.94 -3.31,0.33 -2.44,2.4 -1.45,2.03 -6.15,0.75 -7.76,-0.49 0.06,-2.43 0.64,-4.45 -1.66,-5.74 -0.75,-1.94 -4.67,-0.97 -4.92,-3.99 -2.01,-1.55 -5.69,-1.4 -4.21,-4.64 -1.24,-2.31 -3.79,0.2 -5.94,-0.34 -3.05,3.71 -7.01,-1.41 -10.49,1 -4.03,1.42 2.63,-4.52 -0.65,-5.54 -1.61,0.68 -2.43,-1.07 -3.83,-1.21 z\",\n                        \"department-64\" : \"m 211.2,495.72 c -1.9,1.07 -4.71,-0.23 -5.99,2.39 -1.98,0.52 -4.11,-1.44 -6.18,0.45 -1.47,-0.65 2.04,-3.79 -1.1,-2.24 -1.84,1.1 -3.29,3.13 -5.1,2.48 -1.96,1.45 -5,-2.73 -6.29,0.37 -1.3,-1.42 -2.42,-3.2 -3.7,-1.06 -1.86,0.3 -2.9,1.44 -5.06,0.79 -0.86,1.97 -4.19,-0.71 -3.64,2.4 -2.25,0.68 -5.49,-1.09 -7.26,1.32 -3.27,-0.97 2.34,-1.26 -0.09,-2.53 -2.18,-3.25 -4.64,2.8 -7.39,1.71 -2.74,0.92 -5.67,0.14 -7,-2.21 -3.51,1.11 -4.76,4.93 -7.06,7.37 -1.86,2.09 -5.86,0.94 -7.14,3.17 0.39,1.82 2.63,2.08 2.45,4.31 2.16,-0.79 5.47,-0.83 4.92,2.37 1.44,2.55 2.98,-0.5 3.6,-1.51 2.37,0.53 4.98,1.17 7.12,1.91 1.21,3.15 -0.34,6.66 -1.84,9.39 -3.7,1.82 -0.21,5.81 2.82,5.62 2.52,-0.18 0.25,-6.64 4.3,-5.38 -2.77,2.45 0.66,4.77 3.15,4.41 2.76,1.62 4.75,2.53 7.73,3.53 2.51,0.74 4.11,3.68 7.28,2.92 2.81,1.52 7.35,-3.02 7.16,2.26 -1.02,2.96 3.25,2.28 4.34,4.46 1.78,1.41 3.01,6.8 5.13,3.41 1.29,-2.94 5.1,2.52 7.14,-0.85 1.53,-1.11 3.1,-1.71 2.2,-4.29 -2.14,-2.89 3.19,-3.06 1.08,-6.08 -0.73,-2.21 1.82,-2.45 1.78,-4.48 3.8,1.19 0.42,-4.25 3.06,-5 2.06,-1.26 1.63,-4.46 4.21,-4.01 0.61,-1.33 0.15,-2.87 1.47,-3.33 2.68,-2.17 -1.51,-4.94 1.51,-6.75 3.94,0.18 -1.17,-3.74 0.89,-5.91 -0.71,-3.82 -1.88,1.82 -3.23,0.54 -0.52,-1.85 0.16,-3.46 1.54,-4.09 -0.91,-1.78 -0.41,-4.39 -2.84,-4.92 0.66,-3.73 -2.6,-1.04 -3.99,-2.95 z\",\n                        \"department-65\" : \"m 216.99,494.91 c -1.84,0.25 -2.8,4.03 -0.53,4.11 1.88,1.3 0.29,3.67 2.23,4.92 -1.93,0.09 -2.67,2 -1.81,3.38 0.3,1.54 2.42,-3.88 2.78,-0.62 0.04,1.77 -0.37,4.08 1.04,5.66 -0.74,1.52 -3.19,0.65 -3.23,3.06 1.46,1.22 1.22,2.8 0.07,4.31 -0.99,0.9 -1.52,1.78 -1.24,3.38 -1.18,1.4 -2.47,-0.59 -2.75,1.65 -0.31,2.34 -3.5,2.62 -2.83,5.08 -0.23,1.21 0.77,2.46 -1.27,2.75 -1.74,-1.03 -0.67,2.29 -2.47,2.46 -0.22,2.15 1.18,4.49 -1.44,5.52 0.13,2.35 0.39,5.58 3.33,6.26 1.51,1 2.85,2.84 4.69,1.37 -0.57,1.85 1.47,3.6 2.41,4.96 1.56,0.38 2.66,3.5 4.75,1.97 1.8,-0.64 3.96,-1.24 5.98,-1.71 2.21,-1.74 5.92,-0.18 6.53,2.47 2.16,1.45 2.84,-4.54 5.11,-1.48 1.05,2.42 6.1,0.26 2.72,-1.38 -0.47,-1.86 -0.16,-4.75 -0.08,-7.05 -0.01,-1.71 0.82,-4 2.68,-2.21 3.39,1.23 2.02,-4.26 4.56,-5.2 1.78,-1.39 -1.78,-2.01 -0.27,-3.71 -0.3,-0.99 -0.83,-2.98 -1.65,-1.25 -1.08,0.21 -3.2,2.39 -2.44,-0.12 -0.09,-1.57 2.08,-1.37 1.06,-3.26 -1.4,-1.24 -3.29,-2.47 -4.49,-3.12 -2.02,-2.1 3.51,-3.46 2.42,-5.76 0.93,-0.47 4.3,-0.56 1.96,-2.04 0.32,-1.95 5.47,-3.77 2.06,-5.05 -2.3,-1.28 -4.63,-0.69 -6.84,-1.39 -2.1,2.1 -2.26,-2.3 -4.28,-0.93 -1.76,1.3 -0.81,-1.74 -2.47,-1.53 -0.55,-2.46 -4.01,1.85 -5.67,-0.21 0.62,-1.85 -3.42,-2.4 -1.35,-4.21 1.51,-1.16 -1.9,-2.45 -1.19,-4.22 -1.14,-1.21 -3.48,-0.65 -4.39,-2.66 -2.13,-0.62 -0.57,-4.95 -3.7,-4.22 z\",\n                        \"department-32\" : \"m 246.37,463.78 c -1.87,2.87 -5.69,0.08 -7.22,3.28 -1.88,1.49 -4.2,0.57 -5.81,2.33 -2.39,-0.54 -4.55,-3.39 -6.11,0.1 -0.16,1.89 -1.71,0.96 -1.7,-0.3 -2.5,0.36 -4.05,2.53 -2.63,4.96 0.01,3.29 -6.18,-0.5 -3.3,-1.85 -0.54,-2.21 -2.13,-1.97 -3.07,-0.29 -1.34,0.89 -1.71,2.04 -3.36,1.03 -1.68,0.34 -3.48,1.37 -4.38,2.76 1.22,0.28 3.13,1.71 1.37,2.42 1.01,1.6 0.51,3.2 -0.73,3.83 -0.07,2.44 2.42,4.6 -0.76,5.86 -1.18,1.63 0.66,4.33 -1.94,5.01 -0.42,1.69 2.27,1.13 1.62,3.13 2.18,-0.55 3.63,0.28 6.01,0.22 1.55,-0.54 3.47,-2.96 4.82,-0.45 0.15,2.77 2.68,4.35 4.51,5.25 2.48,-0.68 1.19,3.49 3.25,4.21 -0.48,0.88 -2.09,2.3 -0,3.14 1.28,0.27 0.25,2.29 2,2.07 2.01,0.08 3.81,-1.91 5.13,-0.1 0.83,0.3 0.34,2.73 2.13,1.32 1.65,-1.02 1.99,3.25 3.69,0.87 2.91,0.44 5.72,1.25 8.79,1.59 2.28,-1 2.83,-4 4.96,-4.85 -0.08,-1.97 1.2,-2.17 2.72,-1.09 2.04,-2.03 5.8,0.4 7.36,1.79 1.25,2.38 1.53,-1.44 1.56,-2.27 1.63,-0.08 0.78,-2.07 1.64,-3.14 -1.95,-1.43 1.97,-2.65 1.07,-4.39 -0.66,-1.2 0.97,-1.78 2.08,-0.85 0.33,-1.45 2.39,-1.29 3.2,-2.18 2.33,0.7 0.78,-3.33 -0.81,-2.33 -0.96,-0.86 -0.26,-2.97 -2.3,-2.06 -1.55,-0.33 0.33,-2.07 -1.76,-1.78 -1.88,-0.75 0.92,-3.18 -2.09,-3.14 -1.61,-1.44 -2.45,-4.37 -4.36,-5.15 -3.35,1.69 1.17,-3.08 -1.5,-3.24 0.76,-1.49 -1.03,-2.76 -0.22,-4.22 -1.16,-1.24 -2.92,-1.03 -4.29,-1.63 -2.35,1.17 -1.75,-1.94 -0.23,-2.55 1.5,-1.23 1.3,-2.73 1.39,-4.08 3.53,-0.83 -1.38,-2.38 -2.33,-0.22 -1.18,0.08 -0.41,-3.33 -2.53,-1.63 -1.28,0.69 -2.36,3.52 -3.35,0.81 -0.67,-0.82 -1.46,-1.92 -2.53,-2.18 z\",\n                        \"department-47\" : \"m 230.07,418.5 c -0.81,0.77 -0.9,3.82 -1.83,1.38 -1.82,-0.02 -3.21,2.14 -3.88,3.3 1.04,0.9 2.08,1.66 3.3,1.8 -0.04,1.51 -1.7,2.55 -2.03,4.05 -1.55,0.64 -2.55,2.47 -3.24,3.29 -3.01,0.59 -4.44,4.14 -2.78,6.75 -1.33,1.76 2.46,5.68 -1.08,5.69 -2.16,-0.16 -3.67,2.4 -1.25,3.45 1.89,2.62 -1.53,5.28 -3.79,5.58 -0.01,1.94 -0.52,5.85 2.43,4.84 2.83,-0.58 4.82,1.94 7.53,1.7 1.96,-0.36 2.73,1.43 1.07,2.55 -0.51,2.08 -4.01,5.95 -0.67,6.93 1.39,-0.27 1.71,-1.54 2.32,0.34 1.42,0.2 1.56,-3.84 3.99,-2.43 2.21,2.53 4.49,0.26 7.07,0 2.57,-0.7 3.69,-3.71 6.77,-2.71 1.7,-0.39 3.39,-2.44 4.44,0.28 1.31,3.29 3.19,-0.23 4.88,-1.16 0.36,-1.62 1.13,-2.69 2.56,-3.54 -1.25,-2.97 5.51,1.65 4.18,-2.52 -0.96,-0.29 -2.25,-1.68 -0.22,-2.14 2.35,-0.03 2.05,-4.03 2.4,-5.78 -1.23,-1.07 -4.15,-1.71 -2.2,-3.71 -0.38,-1.68 1.32,-4.27 2.55,-1.77 1.53,0.85 4.19,-0.22 5.25,-0.41 0.48,-2.12 -0.42,-3.89 -1.57,-5.33 0.06,-1.97 -1.67,-5.18 -1.15,-6.13 2.23,0.07 5.01,-2.93 1.78,-3.93 -1.73,-2.48 -5.12,-2.94 -6.92,-0.28 -2.08,2.1 -3.89,-1.44 -2.14,-3.04 0.26,-1.39 -1.37,-4.01 -2.62,-1.92 -2.44,1.01 -5.83,0.37 -7,-0.95 -2.41,-0.18 -2.86,2.94 -5.17,1.62 -2.31,0.8 -5.39,2.91 -7.69,0.67 0.42,-2.17 -0.14,-6.16 -2.93,-6.02 -0.81,0.25 -1.86,0.44 -2.38,-0.43 z\",\n                        \"department-31\" : \"m 290.02,474.31 c -1.06,1.38 -2.08,2.2 -3.14,1.27 -0.58,4.46 -6.27,-1.79 -5.29,3.06 -1.9,-0.93 -3.5,1.28 -0.64,0.98 2.48,2.1 -3.77,2.63 -4.93,4.19 -2.22,1.21 -0.1,-1.87 -2.62,-1.46 -1.27,-3.41 -2.92,1.42 -4.53,-1.01 -1.38,1.57 -7.9,0.39 -4.49,3.87 1.19,2.36 4.47,2.68 3.64,5.37 2.67,0.06 0.55,2.9 3.52,1.95 0.58,0.93 0.66,2.79 2.12,2.09 2.71,3.12 -2.63,3.32 -4.16,4.93 -1.1,-1.53 -1.56,1.15 -1.34,1.61 0.44,1.44 -2.97,2.2 -1.16,3.88 -0.09,2.59 -2.4,2.6 -1.68,5.18 -1.9,1.75 -3.41,-2.85 -6.25,-2.48 -1.97,-0.25 -2.83,1.49 -4.6,-0.2 -0.73,3 -3.35,2.98 -4.53,6.1 -1.7,0.77 -1.89,0.75 -1.75,2.05 -1.29,1.74 -3.85,2.87 -2.67,4.97 -1.64,0.77 -2.86,0.43 -2.8,2.37 -2.19,1.55 -3.92,4.34 -0.36,4.93 1.97,0.94 4.52,4.07 1.77,4.79 -1.3,4.88 3.7,-2.96 3.72,1.66 0.49,1.32 -0.65,2.24 1.07,3.28 -2.79,1.64 -2.18,9.05 -6.68,5.6 -1.73,2.41 -1.93,7.77 -0.38,10.18 1.27,3.59 5.97,0.17 8.88,1.83 2.51,-1.92 -1.95,-5.09 0.25,-7.4 -0.76,-3.42 2.9,-4.02 4.93,-2.32 1.62,-0.12 4.31,1.32 2.68,-1.53 -0.93,-1.79 -1.4,-4.59 1.53,-4.74 -1.15,-3.31 5.98,-1.18 5.47,-5.37 -2.22,-1.5 -0.83,-5.26 0.13,-6.33 2.45,2.03 0.85,-3.56 3.56,-1.87 1.66,-2.07 2.75,0.56 4.53,0.43 1.14,1.96 2.46,4.41 4.04,1.37 2.25,-2.5 -5.64,-2.56 -1.56,-4.98 1.91,-0.32 6.85,-0.7 5.84,-3.41 -3.62,0.11 -4.71,-4.72 -0.54,-4.92 1.7,1.78 3.23,3.99 3.46,6.31 3.43,1.14 2.88,-2.05 2.74,-4.44 1.24,-0.74 2.86,2.59 3.98,0.85 2.05,0.25 3.31,3.93 3.51,0.42 1.87,-1.02 3.37,-2.54 3.2,-4.86 1.65,-0.79 5.11,0.92 3.61,-2.58 0.23,-2.56 3.55,-6.11 4.18,-1.52 0.52,0.87 1.91,-3.3 3.78,-0.91 2.24,0.69 2.87,-1.22 1.62,-2.8 0.91,-0.95 2.23,-3.84 -0.03,-2.5 -1.07,2.43 -6.09,-0.82 -6.91,-3.1 -0.98,-3.43 -6.75,-3 -7.98,-6.29 2.91,-1.68 0.76,-3.48 -1.25,-4.16 3.26,-0.53 0.29,-2.11 -0.5,-3.7 0.64,-3.06 -3.23,-3.07 -3.17,-5.79 -1.79,-0.87 -1.06,-3.76 -1.85,-4.82 z\",\n                        \"department-09\" : \"m 281,514.26 c -1.93,0.45 -2.81,3.42 -0.61,3.74 0.47,1.06 3.65,0.84 1.91,2.92 -1.78,0.48 -2.86,1.94 -5,1.65 -1.94,-0.47 -2.72,3.01 -0.2,2.59 2.24,0.58 1.95,2.32 0.27,3.21 -1.24,2.42 -2.69,-0.31 -3.19,-1.7 -1.18,-0.65 -2.35,-0.74 -3.49,-1.68 -1.21,1.5 -3.6,0.41 -3.5,3.08 -0.69,0.69 -2.14,-1.23 -2.07,0.85 0.78,1.23 -1.59,1.79 -0.08,3.25 -1.18,1.45 2.43,1.96 0.17,3.11 -0.33,2.96 -5.7,1.12 -4.88,4.08 -1,0.73 -3.51,0.76 -1.93,2.67 -0.14,2.58 1.36,4.98 3.85,6.04 1.3,1.43 2.44,-0.82 3.84,0.84 2.2,0.69 5.28,-0.08 6.42,2.49 -0.04,2.84 2.56,2.9 4.54,2 2.27,0.7 5.31,-0.62 6.28,1.97 2.47,1.03 1.46,6.42 4.53,5.84 0.33,-1.46 -0.02,-3.65 2.25,-2.77 2.58,-1.67 3.67,2.32 6.42,1.51 1.59,0.01 4.16,0.09 3.44,2.23 1.96,0.82 4.9,1.1 6.14,-0.77 0.17,-1.61 2.36,0.02 3.34,-1.21 1.09,-1.15 1.09,-3.64 3.34,-2.57 1.75,-1.21 4.32,-0.24 5.87,-0.95 0.4,-2.48 -3.41,-3.46 -4.42,-5.35 -2.08,0.81 -4.89,2.28 -6.69,-0.08 -1.29,-0.72 0.48,-2.24 -1.27,-3.27 -1.88,-0.45 -2.07,-2.21 -0.54,-3.2 2.84,0.11 5.65,-1.41 4.42,-4.62 -1.62,-0.54 -3.31,-2.15 -0.6,-2.68 1.86,-1.01 -0.44,-3.29 0.61,-4.77 -1.01,-0.87 -2.68,-1.46 -1.18,-2.69 -0.07,-1.43 -0.47,-4.45 -2.45,-3.41 -0.92,1.43 -0.96,-2.2 -2.67,-1.24 -2.3,-0.25 -5.38,-1.98 -6.1,-3.66 0.91,-1.6 -0.72,-3.91 -1.67,-5.05 -0.92,0.6 -1.38,4.39 -1.98,1.49 -1.2,-0.67 -2.47,-1.05 -3.16,-0.2 -0.47,-1.65 -2.24,-0.25 -2.45,-1.94 -1.91,1 1.34,4.52 -1.22,4.39 -1.46,2.03 -3.74,-0.79 -2.75,-2.52 -1.34,-0.95 -2.09,-3.13 -3.54,-3.63 z\",\n                        \"department-11\" : \"m 322.74,505.07 c -2.05,0.87 -0.82,6.47 -3.43,3.37 -1.24,-1.83 -5.19,2.71 -5.61,-1.17 -0.96,-1.29 -3.24,1.91 -4.87,-0.09 -1.63,-0.8 -2.35,3.52 -2.64,0.63 -0.96,-2.44 -1.93,-1.82 -2.84,-0.31 -0.91,1.07 -1.52,2.84 -0.93,4.7 -1.36,0.65 -4.52,-0.56 -3.73,2 -2.59,1.87 -0.87,4.71 -0.49,7.11 -1.27,1.72 2.24,1.99 3.14,3.2 1.19,0.53 2.27,1.21 2.96,0.05 1.12,0.9 1.35,2.64 3.05,1.69 2.12,0.9 2.09,4.11 1.18,5.21 3.13,0.75 0.58,4.42 2.61,6.09 -0.39,0.99 -3.64,-0.55 -2.72,1.47 3.15,0.22 2.69,5.73 -0.43,5.57 -2.23,-0.56 -4.71,2.43 -1.69,3.29 1.21,1.07 1.25,2.2 0.94,3.14 2.17,2.52 4.98,0.67 7.49,0.33 1.51,2.48 4.82,3.48 4.44,6.58 1.77,-0.41 3.17,-3.16 4.49,-3.39 3.31,0.6 4.11,-3.13 3.04,-5.57 -1.83,-2.22 -0.3,-4.53 2.45,-3.77 2.55,1.09 4.79,-0.72 7.38,0.01 2.84,0.15 6.37,1.82 8.78,-0.17 0.65,-3.39 5.24,-6.04 7.54,-2.78 1.85,0.63 5.78,4.21 6.08,0.38 -0.45,-2.41 3.52,0.65 2.08,-2.31 -2.01,-0.09 -2.51,-4.47 -0.81,-3.38 -1.64,2.12 0.92,2.66 1.07,0.34 -0.46,-2.15 2.38,-4.6 1.05,-6.15 -2.36,0.27 -1.35,-5.67 0.64,-3.13 -2.54,0.73 1.01,4.03 1.12,0.84 1.32,-2.4 3.72,-4.96 4.13,-7.43 -1.48,-1.18 -2.13,-3.67 -4.25,-2.51 -1.21,-1.56 -3.82,-0.43 -5.13,-2.43 -2.87,1.08 -0.98,-4.2 -4.12,-2.08 -1.35,-0.41 -2.91,-0.78 -3.72,-1.82 -0.39,1.7 -3.42,0.2 -2.88,2.31 -1.03,1.88 -2.16,4.69 -4.29,2.05 -1.21,-0.21 -0.6,-4.63 -2.32,-1.66 -2.18,1.62 -3.12,-0.12 -3.87,-2.12 -3.09,-0.03 -1.41,-4.42 0.31,-5.1 -2.19,-1.27 -5.18,-2.28 -7.77,-1.42 -1.98,2 -4.51,-1.63 -6.72,-1.15 -0.21,-0.07 -0.4,-0.62 -0.72,-0.42 z\",\n                        \"department-34\" : \"m 390.74,470.95 c -2.99,-0.26 -2.82,5.22 -4.91,4.05 -0.85,-0.82 -3.55,2.9 -1.7,3.78 -2.23,1.02 -3.63,-1.19 -4.2,-2.93 -1.16,0.9 -4.89,3.4 -3.25,0.24 -0.72,-2.79 -3.95,-1 -5.3,0 -2.69,-1.07 -4.43,1.99 -3.3,4.01 -2.19,2.21 -5.5,0.8 -7.8,-0.28 -1.78,1.11 -0.38,3.61 -0.42,5.05 -1.55,1.49 1.67,5.37 -2.24,4.09 -1.98,-1.46 -4.85,0.46 -4.95,2.6 -2.71,0.38 -5.15,2.58 -7.61,2.47 -1.2,-2.9 -5.65,-2.66 -5.41,0.83 -0.2,2.13 -0.02,4.29 2.09,5.91 -1.23,1.35 0.72,3.85 -1.77,4.6 -0.84,1.05 -3.22,1.42 -1.8,2.86 -2.1,0.55 -3.27,4.78 -0.38,4.9 0.41,3.09 3.29,3.1 4.71,0.7 1.12,1.12 0.35,3.34 2.55,3.76 2.97,1.15 1.66,-5.18 5.05,-4.27 1.09,-0.26 0.38,-2.58 1.62,-0.55 1.21,1.33 3.32,1.66 5.28,1.1 -0.81,3.2 2.64,2.34 4.33,4 1.73,-0.69 2.59,1.52 4.38,0.6 1.39,1.92 3.62,4.56 5.52,1.34 2.58,-2.15 5.39,-4.64 8.99,-3.22 1.68,-2.14 3.28,-4.7 5.33,-6.66 2.9,-0.94 5.12,-2.93 7.63,-4.62 1.32,-0.52 2.38,-2.93 0.36,-1.17 -0.86,0.97 -3.9,2.82 -4.09,1.95 2.86,-0.54 3.94,-3.18 5.35,-4.98 2.22,-0.89 3.15,-3.57 5.97,-3.69 2.76,-1.69 5.46,-2.2 8.14,-1.32 3.13,-2.28 2.15,-5.6 0.6,-8.52 -0.42,-1.85 -2.64,-1.51 -3.41,-3.24 -1.72,-0.64 -2.58,-4.02 -5.12,-2.47 -0.36,-1.17 1.06,-3.05 -1.22,-3.23 -1.16,-1.21 -1.48,-2.47 -3.51,-1.47 -2.48,1.54 -3.44,-1.7 -1.82,-3.25 0.15,-1.49 -1.98,-1.29 -2.11,-2.79 -0.5,-0.22 -1.04,-0.13 -1.56,-0.19 z\",\n                        \"department-81\" : \"m 317.26,455.8 c -1.38,0.45 -1.96,1.61 -3.59,0.76 -0.3,1.95 -3.52,3.22 -5.56,2.27 -1.35,-1.6 -1.97,-0.02 -0.95,1.04 -0.95,0.36 -4.67,-1.27 -3.47,1.46 -0.16,1.66 -2.33,-1.92 -2.18,0.76 -1.1,0.98 -2.79,-1.57 -4.48,-0.74 -2.96,-0.67 -1.32,3.31 0.16,3.83 0.79,1.92 -1.89,3.01 -2.42,4.25 -1.32,0.93 -1.16,3.17 -3.54,1.88 -3.23,0.63 2.44,1.72 -0.33,3.16 -1.29,2.54 1.59,4.57 1.92,6.82 3.43,0.3 1.18,4.78 4.33,5.68 1.56,1.28 -3.01,2.06 -0.13,2.25 2.4,0.02 1.46,2.84 -0.02,3.51 0.41,1.89 3.59,2.46 5.14,3.73 3.27,0.27 2.72,5.06 6.14,5.64 1.57,0.82 3.54,1.72 3.47,-0.75 2.28,-0.44 1.4,2 0.21,3 0.06,1.82 2.22,2.93 2.93,4.31 2.14,0.3 3.89,-2.52 5.16,0.35 2.18,0.85 0.37,-3.47 2.64,-4.11 1.88,0.14 4.42,2.05 6.83,2.16 2.71,-2.86 6.35,1.58 9.11,-0.98 1.2,-0.64 2.07,-1.84 2.78,-2.36 -0.59,-1.87 0.29,-4.05 -1.8,-5.38 -0.4,-2.17 -0.06,-5.25 1.22,-6.85 1.68,0.37 3.78,1.08 4.87,2.68 2.13,-1.79 6.04,-1.49 7.35,-3.74 0.82,-2 0.39,-5.04 -2.37,-4.51 -1.51,-1.26 -3.19,-1.55 -4.19,0.39 -2.37,0.97 -5.11,-0.89 -6.55,-2.85 -1.52,-2.15 -3.76,-4.35 -2.85,-6.85 -1.52,-0.96 -0.28,-3.74 -2.85,-4.01 -0.47,-0.84 1.76,-2.39 -0.4,-3.07 -0.29,-2.52 -2.16,-4.07 -4.11,-4.88 -0.57,-2.53 -3.81,-3.32 -5.31,-4.22 -0.15,-2.48 -4.32,0.72 -4.86,-1.12 1.44,0.14 3.17,-1.78 0.74,-1.46 -0.91,0.39 -2.23,-1.71 -3,-2.06 z\",\n                        \"department-82\" : \"m 270.52,443.01 c -2.14,1.16 -4.19,2.19 -6.63,2.16 -1.8,1.76 -1.62,-2.78 -3.54,-0.83 0.31,1.77 -1.92,4.88 1.19,4.85 2.39,1.55 0.09,4.21 -0.3,6.31 -0.44,1.21 -4,0.94 -1.6,2.01 1.97,0.84 -0.06,4.23 -1.88,2.4 -1.71,-1.22 -1.76,0.34 -2.14,1.6 -2.88,-0.32 -2.21,4.49 -0.81,4.92 0.76,-1.3 4.97,-1.27 3.43,0.36 -1.84,1.04 -0.66,3.8 -2.94,4.81 -1.25,0.84 -0.68,2.87 0.84,1.84 1.82,0.52 5.75,1.1 3.97,3.56 1.04,0.67 0.69,2.25 0.98,2.38 1.77,0.78 -1.98,4.07 1.01,3.39 2.26,-0.43 4.92,-0.42 6.74,-1.49 1.27,0.58 2.39,0.31 3.28,-0.35 1.56,0.75 2.53,2.41 3.56,2.88 1.74,-0.62 2.22,-2.04 4.12,-2 1.89,-0.5 1.91,-2.44 -0.22,-2.07 -1.95,-1.13 1.52,-1.46 1.74,-1.49 -0.38,-2.02 1.51,-2.5 2.7,-1.14 2.06,1 2.76,-3.06 4.11,-1.34 0.99,-1.05 2.54,-1.76 3.38,-2.23 -0.31,-0.89 -2.82,-2.03 -0.52,-2.27 3.19,1.02 3.39,-3.02 5.79,-4.18 1.52,-1.98 -2.9,-3.42 -1.35,-5.63 1.94,-1.07 4.17,0.24 5.66,0.61 0.71,-1.21 1.03,-1.65 2.08,-0.63 0.24,-1.33 0.21,-2.59 2.09,-1.85 1.1,0.24 2.24,0.41 1.15,-0.79 0.51,-1.8 4.19,2 3.66,-0.96 -0.31,-2.1 -2.39,0.61 -2.47,-1.31 -3.3,-1.19 0.65,-3.45 1.77,-4.89 0.21,-2.45 -4.44,-0.16 -4.38,-2.98 0.49,-1.88 -1.6,-1.91 -2.4,-1.54 -1.21,-0.58 -1.91,1.84 -3.15,0.41 -2.28,-0.21 -4.04,4.15 -5.85,2.74 -0.79,-2.47 -3.62,0.05 -1.56,1.51 0.31,2.35 -3.95,2.36 -3.07,-0.25 -2.24,-2.68 -3.51,1.69 -5.86,2.39 -1.45,2.53 -2.73,-0.71 -4.63,-0.48 -0.83,-1.02 1.91,-4.61 -0.86,-3.31 -1.97,2.14 -4.17,-0.81 -5.73,-2.04 -1.54,-0.03 -2.07,-2.27 -2.71,-3.05 0.48,-0.77 3.85,-1.24 1.34,-2.04 z\",\n                        \"department-12\" : \"m 344.82,407.22 c -2.14,2.24 -4.92,3.53 -5.91,6.44 -0.2,3.05 -2.88,4.6 -2.81,7.85 -2.78,1.77 -2.83,6.44 -7.03,4.76 -2.85,0.81 -3.66,-2.92 -6.7,-0.63 -2.79,-0.18 -0.5,4.84 -3.68,4.44 -1,2.09 -4.35,0.18 -4.99,0.68 -2.27,1.36 -4.93,3.35 -6.47,5.56 -0.5,0.74 -1.33,-2.39 -1.72,0.49 -3.55,0.2 0.23,4.71 0.28,6.73 2.91,2.12 -2.27,3.27 -0.47,5.85 1.39,1.46 5.91,0.06 3.8,3.53 -3.1,-0.35 -2.94,5.1 0.37,3.8 0.84,2.24 2.93,2.1 3.97,0.28 0.64,-0.72 3.02,-0.92 4.38,-1.29 0.38,2.53 5.59,1.47 2.9,3.68 1.7,0.61 3.86,-0.93 4.36,1.52 3.19,-0.21 4.33,4.36 7.18,4.97 1.07,2.25 3.3,4.6 2.21,6.63 2.23,0.9 1.85,3.49 2.9,4.9 -1.38,2.72 2.8,5.25 4.08,7.58 2.19,1.85 5.01,1.88 6.77,-0.28 2.08,1.32 5.71,0.5 5.44,3.99 1.27,0.35 3.33,-1.02 4.93,0.31 1.97,-0.43 -0.03,-3.71 1.21,-5.08 -2.26,-3.18 1.08,-5.37 3.72,-2.96 2.82,0.94 5.31,-0.91 4.29,-3.64 1.04,-3.15 6.02,0.38 5.11,-4.28 0.93,-2.39 7.18,-5.33 2.04,-7.25 -1.51,-0.47 -2.97,-0.34 -3.42,-2.06 -1.73,1.9 -3.93,-2.51 -0.51,-1.95 0.48,-1.6 1.14,-3.68 2.65,-4.73 -0.68,-4.43 -9.42,2.3 -6.63,-3.08 -1.18,-1.25 -3.15,-1.32 -3.65,-2.81 -2.6,0.85 1.8,-4.01 -0.75,-5.21 -0.72,-3.41 2.21,-7.15 -2.14,-9.54 -0.76,-2.6 0.83,-5.86 -2.52,-7.49 -2.49,-2.83 -5.19,-5.99 -4.63,-9.9 -1,-0.3 1.62,-2.72 -0.79,-2.1 -2.92,-0.77 -0.83,-7.54 -5.15,-5.36 -2.76,2.56 0.68,-4.65 -2.57,-4.34 z\",\n                        \"department-46\" : \"m 289.52,399.9 c -1.93,0.63 -3.22,2.08 -5.19,2.51 -0.55,2.48 1.91,5.04 0.2,6.77 1.53,1.17 0.68,2.13 -0.64,2.71 -0.49,1.39 -2.82,1.08 -2.03,3.22 -2.04,0.31 -3.93,1.87 -1.84,3.73 -0.63,1.48 -1.5,2.57 -2.96,3.19 -1.15,2.55 -6.2,0.92 -4.86,4.75 -0.81,1.54 -2.94,2.2 -2.41,4.25 -2.21,-0.14 -3.42,2.82 -5.02,1.78 1.06,2.16 1.42,4.31 1.76,6.68 1.42,0.87 1.66,2.27 1.65,3.98 1.08,0.06 4.12,-1.76 2.93,0.81 -1.71,0.25 -2.37,1.31 -0.78,2.24 0.3,2.25 3.42,1.16 3.62,3.37 1.9,1.69 3.3,-0.16 5.08,-0.35 0.72,1.57 -2.26,4.22 0.76,4.02 1.46,0.62 1.81,2.15 3.19,0.31 1.85,-0.6 3.07,-3.05 4.33,-3.46 2.43,-0.2 1.29,4.21 3.91,2.83 1.72,-1.05 -1.79,-4.67 1.45,-4.27 1,-0.03 1.35,3.17 2.11,1.18 -1.32,-1.83 1.53,0.24 1.9,-1.51 1.38,-1.16 3.1,-1.29 4.45,-0.92 0.2,-1.96 1.81,0.11 2.71,-1.11 1.67,0.1 4.18,-1.49 1.89,-2.9 -0.47,-2.26 -2.34,-4.82 -1.67,-6.85 1.76,-0.03 1.59,-1.88 3.42,-1.54 2.32,-1.45 3.8,-3.77 6.26,-4.75 1.66,-0.78 4.05,1.82 5.11,-0.84 2.37,0.13 1.47,-2.41 -0.05,-3.14 -0.16,-1.64 0.62,-3.82 -1.82,-3.9 0.88,-2.1 0.95,-4.43 1.69,-6.42 -0.75,-2.19 -3.06,-3.63 -3.78,-5.98 -0.22,-1.15 1.69,-2.17 -0.2,-3.09 0.38,-3.82 -4.01,-3.64 -6.05,-1.43 -0.4,-1.8 -2.37,-1.92 -3.03,-0.03 -1.66,0.66 -3.24,2.7 -4.53,1.71 -1.67,0.61 -1.38,-2.93 -3.39,-2.7 -0.94,-2.08 -2.85,-4.19 -5.2,-4.37 -1.54,-0.53 -2.13,1.38 -2.99,-0.49 z\",\n                        \"department-24\" : \"m 247.71,356.64 c -1.33,1.72 -2.15,5.44 -4.37,3.98 -1.29,2.19 0.65,6.02 -2.78,7.22 -1.07,1.73 -1.22,3.17 -3.43,2.89 -1.35,1.3 -2.7,2.47 -3.69,2.4 1.31,1.44 -2.43,1.19 -1.92,3.33 -1.11,2.86 2.21,7.18 -2.16,7.82 -1.72,1.11 -2.1,4.21 -4.37,4.44 -1.83,-1.85 -4.84,-0.09 -5.58,2.19 -1.71,0.92 1.62,1.85 -0.97,2.36 -2.09,3.33 4.38,0.08 4.2,3.85 0.13,2.45 -1.7,4.67 -1.9,7.15 -2.34,1.81 1.75,4.57 -1.01,6.63 -1.98,1.62 -0.57,1.93 1.18,2.08 1.5,2.41 4.72,0.24 7.34,1.24 1.58,-2.14 3.57,-4.36 5.67,-1.25 -1.59,1.46 -2.98,1.82 -1.65,4.38 2.67,1.95 3.57,5.11 3.66,7.87 2.89,2.27 5.83,-2.31 8.31,-0.64 1.5,-0.14 1.73,-2.6 3.78,-2.17 1.74,-0.66 1.71,2.87 4.06,1.59 2.32,0.27 4.87,-3.2 5.62,0.33 1.53,0.48 -2.2,5.61 1.71,4.55 1.86,-2.63 5.57,-3.37 7.55,-0.26 1.61,0.15 2.83,4.14 2.8,0.73 3.09,-1.47 0.93,-6.06 5.03,-5.87 2.1,-1.49 4.63,-2.68 4.89,-5.07 -3.18,-2.94 3.24,-2.15 2.07,-5.03 1.39,-0.77 2.75,-1.97 3.62,-3.12 -2.55,-1.45 1.11,-2.89 -0.92,-4.95 -0.82,-1.88 -0.06,-3.23 0.88,-4.14 -1.12,-2.13 -3.92,-5.19 -1.35,-6.5 -1.47,-1.44 -7.7,-0.59 -6.45,-3.12 3.25,-2.31 -3.9,-1.43 -1.21,-3.75 2.08,-0.54 1.75,-2.32 -0.17,-2.44 -0.66,-1.42 -0.44,-4.25 1.4,-4.42 0.7,-1.32 4.27,-4.12 0.61,-3.76 -2.11,-1.25 -0.47,-1.95 0.2,-2.77 -1.16,-1.12 -2.39,-0.61 -3.26,-2.06 -1.89,0.78 -2.29,-1.48 -4.2,-1.06 -0.44,-1.95 3.54,-4.4 -0.69,-4.44 -2.48,1.66 -3.1,-3.01 -4.18,-4.31 -2.45,-0.69 -5.34,1.33 -6.92,-0.8 -0.28,1.94 -2.24,3.99 -3.3,1.71 -4.01,-0.32 1.3,-5.83 -3.25,-6.54 -2.23,1.7 -3.48,-1.31 -4.85,-0.28 z\",\n                        \"department-16\" : \"m 252.54,327.65 c -2.29,0.72 -1.44,3.44 -4.4,2.98 -1.27,1.85 -4.05,0.47 -4.98,-1.39 -0.68,-3.54 -5.06,1.6 -1.79,2.2 -0.58,3.13 -3.4,1.11 -5.1,0.91 -3.14,1.37 -5.19,-1.3 -7.86,-1.81 -1.52,1.5 -2.93,-1.91 -4.66,0.15 -1.97,-0.37 -2.45,3.38 -5.06,2.24 -1.93,0.04 0.82,2.24 -1.2,2.74 0.87,2.68 -3.95,2.15 -2.09,4.68 -0.28,1.91 -3.6,0.31 -2.2,2.53 -0.11,1.44 2.16,2.96 -0.03,4.42 -0.09,1.53 -0.09,4.77 -2.18,3.4 -1.96,2.42 -3.18,-3.47 -5.22,-0.43 -2.04,1.16 -4.38,0.45 -6.15,1.89 -2.73,1.16 0.38,1.62 1.39,1.98 -2.76,2.08 2.9,5.14 -0.46,5.78 -1.46,1.75 0.17,2.05 1.51,1.62 1.01,2.19 5.21,3.29 2.97,5.77 2.34,0.08 4.85,3.05 1.84,4.29 -0.18,1.67 3.8,4.33 0.08,4.95 -3.11,0.84 0.04,2.57 1.34,2.89 -0.62,0.79 -3.1,1.95 -1.06,3.18 2.2,-2.04 4.86,0.36 7.25,0.92 -0.44,1.96 0.03,3.48 2.36,2.77 1.73,0.17 2.65,2.07 3.44,2.83 1.42,-1.43 3.54,-1.84 5.23,-0.38 1.69,-1.46 2.03,-3.29 3.72,-4.47 1.1,-1.12 3.55,-1.27 2.27,-3.69 -1.79,-2.79 1.03,-5.85 1.8,-7.57 0.23,-1.21 1.54,0.42 2.16,-1.12 1.02,-1.12 2.42,-1.8 3.66,-1.6 0.38,-3.16 4.03,-3.24 3.74,-6.43 -0.64,-1.42 -0.09,-4.56 1.85,-3.02 1.5,-1.35 2.27,-4.04 4,-5.85 1.03,-2.13 3.92,-2.7 3.46,-5.45 1.36,-0.67 3.4,1.91 3.05,-0.98 1.5,-1.75 2.07,-3.92 1.46,-6.01 -0.57,-2.93 3.18,0.64 4.34,-1.8 2.69,-1.02 0.69,-6.52 -1.66,-5.43 -1.88,-0.53 -3.24,-3.11 -1.94,-5.21 -0.3,-3.28 -2.38,-2.24 -4.88,-2.46 z\",\n                        \"department-86\" : \"m 220.19,259.01 c -2.67,1.11 -1.14,6.66 -4.7,5.46 -1.12,2.67 -0.28,6.33 2.34,7.3 1.21,2.8 -0.12,6.86 2.81,8.58 -0.34,0.88 -4.74,0.94 -2.01,2.12 1.66,0.91 -1.21,4.66 1.86,5.01 0.17,2.88 -3.53,4.96 -3.39,7.51 2.34,-1.74 2.86,1.09 4.01,2.56 -2.36,1.41 -1.42,4.19 -3.11,6.09 1.11,2.79 0.46,6.03 2.68,8.32 -0.98,2.26 1.88,5.6 3.64,2.56 3.26,-2.86 4.22,4.09 1.42,5.44 -1.17,2.3 -1.1,6.6 2.78,6.31 1.76,0.42 -1.54,4.9 1.9,4.82 2.58,2.29 6.42,0.33 9.24,2 3.12,-1.13 -1.64,-3.61 1.54,-4.88 2.93,-0.45 3.66,4.64 7.15,2.55 2.65,-1.24 4.01,-4.64 7.5,-3.07 5.18,0.43 -2.68,-6.17 1.99,-6.32 0.93,-3.5 4.73,-3.96 7.28,-4.09 1.27,-2.3 2.21,-5.88 5.59,-4.54 3.05,-1.23 4.82,-4.66 1.43,-6.65 -0.96,-2.09 -0.63,-5.43 -4.09,-4.96 -2.4,-0.38 -3.1,-2.52 -5.49,-3.06 -4.32,-2.56 0.87,-7.41 -2.39,-10.17 -3.73,-2.36 -3.49,-7.19 -7.25,-9.59 -1.82,-2.65 -1.18,-7.21 -5.41,-7.83 -3.82,-1.6 1.37,4.35 -2.65,2.83 -3.22,-0.17 -6.05,2.2 -9.36,1.21 -5,0.41 0.09,-6.41 -3.44,-7.54 -1.02,-1.75 -5.86,1.14 -3.94,-2.42 -1.49,-2.05 -5.43,-1.78 -6.57,-4.86 -0.36,-0.36 -0.83,-0.61 -1.33,-0.67 z\",\n                        \"department-37\" : \"m 248.48,223.77 c -1.42,3.62 -6.45,2.73 -8.2,5.37 -1.46,1.36 -3.9,-2.72 -3.72,0.4 1.37,1.11 1.66,4.33 -0.82,2.81 -1.82,-1.23 -6.06,-3.74 -5.96,0.05 -1.81,2.38 0.79,4.4 -1.19,6.79 -1.59,2.5 -0.38,5.84 -2.27,7.78 -1.62,2.49 -3.61,4.89 -3.44,8.06 -0.62,2.26 -1.45,6.53 1.54,7.19 1.25,-0.87 1.94,2.54 3.31,0.71 0.97,1.11 -0.63,5.21 2.13,3.2 1.8,-1.1 1.89,1.61 3.57,1.4 0.89,2.11 -1.82,7.48 2.05,6.94 1.94,-0.66 4.56,0.68 6.7,-0.98 1.61,-0.96 6.42,0.73 3.58,-2.33 -0.63,-2.85 4.7,0.45 5.56,1.73 0.59,2.71 0.86,5.99 3.94,7.28 1.95,1.88 1.63,7.78 6,6.31 1.43,1.23 2.54,1.03 3.52,-0.09 1.84,-0.7 -1.13,-3.48 0.89,-4.6 0.94,-2.88 0.5,-6.24 2.1,-8.75 -0.51,-3.01 1.88,-5.04 4.77,-5.05 2.3,-0.22 4.18,2.32 5.36,-0.8 1.09,-2.04 2.29,-3.59 3.83,-4.89 -0.17,-3.29 -2.68,-5.86 -4.09,-8.7 -1.3,-3.91 -5.06,-1e-4 -7.13,-2.72 -1.96,-2.54 1.63,-6.07 -1.07,-8.64 1.91,-0.4 1.97,-2.18 -0.13,-2.78 -0.17,-1.99 -3.11,-4.5 -0.71,-6.14 -0.62,-1.2 -2.55,-4.44 -3.27,-1.51 -0.57,-2.17 -2.63,-4.19 -4.63,-1.88 -3.07,2.82 -2.07,-3.8 -2.27,-4.29 -2.95,-0.2 -5.98,-1.05 -8.71,-0.82 -1.21,0.63 -0.51,-1.11 -1.23,-1.05 z\",\n                        \"department-72\" : \"m 231.9,172.51 c -2.61,0.34 -4.43,1.91 -6.19,3.04 -1.38,0.48 -2.05,1.94 -3.42,2.6 -0.33,3.05 -3.2,-1.34 -4.33,0.83 -1.43,1.08 -5.63,0.06 -4.24,2.95 -3.08,-0.79 0.86,3.38 -1.37,4.58 -0.86,1.81 1.85,4.28 -0.94,5.2 -2.01,1.1 -4.73,3.07 -1.86,4.9 -0.99,1.29 0.02,2.59 -0.74,3.79 -2.44,-0.68 -6.78,1.67 -3.4,3.85 0.73,2.09 1.76,4.48 -1.53,4.5 -2.58,-0.44 -3.89,2.42 -1.36,3.52 0.5,2.29 -5.19,2.01 -2.45,4.82 3.47,-0.45 1.48,4.86 3.4,5.98 2.31,-1.32 4.91,2 6.78,-0.52 3.29,0.6 -2.46,2.42 0.25,4.06 0.74,1.66 3.87,2.49 4.49,0.08 2.3,1.12 4.71,0.48 6.02,2.83 1.69,1.36 4.05,0.33 5.35,2.19 1.62,-0.93 1.69,-2.65 3.94,-1.78 2.54,-0.05 4.67,2.82 7.14,2.4 0.9,-1.5 -2.93,-3.52 -0.02,-4.31 1.04,1.34 2.82,2.12 3.33,-0.2 2.31,-0.39 4.79,-1.35 6.51,-2.6 -2.85,-2.23 1.58,-5.3 3.79,-5.52 0.46,-1.4 2.4,-3.52 3.78,-4.83 -1.44,-1.85 -0.29,-6.03 1.78,-3.82 -1.09,-2.59 3.21,-2.96 0.58,-5.37 0.08,-1.7 1.43,-3.61 -1.11,-3.97 -1.64,-2.45 2.4,-1.51 1.74,-3.29 -2.05,-0.4 1.4,-1.62 0.89,-2.96 2.29,0.52 3.2,-1.49 0.55,-1.94 -2.01,-0.09 -3.25,-2.56 -5.32,-1.22 -2.38,-0.82 -2.49,-6.22 -5.36,-4.81 0.79,2.39 -2.74,0.17 -4.1,0.37 -1.11,-1.06 -2.58,-1.99 -2.45,-3.6 -1.86,0.23 -5.36,-0.71 -4.94,-3.08 -0.44,-3.4 0.09,-8.02 -4.58,-8.58 l -0.59,-0.08 2e-5,0 z\",\n                        \"department-61\" : \"m 236.9,140.22 c -1.37,2.93 -4.44,0.95 -5.77,0.51 -0.7,2.09 -2.92,0.83 -4.24,2.34 -1.35,-2.77 -4.38,-0.25 -5.26,1.87 -3.09,0.73 -4.56,4.12 -8.22,4.12 0.6,2.97 -3.23,-1.05 -4.99,-0.78 -2.07,-0.19 -4.42,-1.53 -4.55,1.51 -1.86,-0.97 -4.38,-5.01 -6.99,-1.88 -2.67,0.7 -5.63,2.58 -8.38,0.81 -1.94,-0.21 0.58,2.41 -2,2.73 -2.21,0.79 -4.81,2.48 -5.8,4.18 1.64,0.47 4.03,2.64 4.89,3.81 -2.6,1.08 -0.04,3.17 -0.37,4.16 -0.1,3.46 -3.63,4.61 -4.76,7.47 1.29,1.59 1.78,3.06 3.56,2.81 -0.2,2.49 3.05,0.83 2.04,-0.77 2.19,0.16 3.37,-1.72 3.97,1.42 2.29,-1.26 4.74,-2.16 6.49,-3.76 2.15,-0.24 4.6,-0.72 6.51,1.02 1.07,-1.63 2.35,-2.41 3.95,-1.42 1.83,-1.07 -0.27,-4.47 3.02,-3.12 1.81,1.18 3.45,2.14 1.99,3.87 0.35,2.25 1.92,4.62 4.47,2.94 1.72,0.65 -0.84,6.99 2.46,4.03 1.16,0.36 3.03,2.09 3.43,-0.38 1.63,-0.81 2.66,-2.19 4.04,-2.85 0.28,-1.38 5.31,-3.16 7.52,-1.96 3.9,1.26 2.59,5.53 3.26,8.6 -0.11,2.92 4.56,1.76 5.41,3.53 -0.07,1.99 3.35,3.78 5.67,2.91 3.19,-3.99 3.88,7.21 7.66,3.4 3.17,-1.53 -1.64,-4 -0.17,-6.33 -3.57,-0.8 0.8,-4.69 3.13,-4.08 2.2,-1.01 6.03,-4.76 3.83,-6.66 -0.95,-2.15 2.33,-4.5 -0.88,-5.72 0.72,-2.4 -4.26,-1.56 -3.98,-4.43 -1.88,-0.39 0.25,-5.19 -3.06,-4.1 -0.43,-1.15 -0.37,-2.32 -1.89,-2.36 3.89,-2.53 -0.45,-5.72 -3.19,-6.87 -1.23,-0.78 -2.92,-1.32 -1.88,-2.86 -1.36,-1.19 -1.22,-3.67 -3.26,-1.5 -2.58,-0.67 -7.27,0.22 -7.13,-3.52 0.64,-0.73 0.75,-2.65 -0.53,-2.7 z\",\n                        \"department-27\" : \"m 242.33,106.21 c -2.25,1.4 -4.46,3.12 -7.27,3.2 -3.13,0.01 -1.44,3.96 -0.97,5.79 -0.25,1.42 -0.2,3.07 0.05,4.32 1.56,-2.67 4.74,1.16 1.61,1.68 -3.49,1.51 3.09,2.25 1.65,4.56 -0.6,1.84 0.47,2.5 1.82,3.11 -1.56,1.19 -0.91,2.9 -0.68,4.31 -3.08,-0.3 -1.43,3.4 0.78,3.14 1.11,2.25 -1.15,5.22 -2.03,7.57 1.97,1.86 5.79,2.95 8.17,1.67 1.68,-0.94 2.06,2.46 2.78,2.55 -1.38,3.04 5.18,3.21 5.92,5.84 1.68,1.55 -0.55,2.63 -0.78,3.74 1.84,0.46 1,3.47 3.6,1.89 2.3,-0.06 2.09,-4.03 4.58,-2.4 2.21,-1.11 4.77,-0.84 6.52,-3.04 1.78,1 3.18,0.1 2.69,-1.95 1.73,0.3 3.34,2.1 5.52,1.18 1.73,0.91 5.58,0.54 5.97,-1.71 -2.26,-3.14 2.59,-4.24 4.24,-5.72 -0.13,-1.58 -1.51,-4.22 1.43,-3.88 0.74,-0.67 -0.33,-1.93 0.53,-2.57 -1.47,0.74 -2.69,-0.27 -1.44,-1.58 -1.04,-1.31 -2.12,-4.8 0.61,-3.44 1.11,-1.2 0.8,-1.98 2.49,-1.09 3.37,-0.07 4.6,-2.86 5.45,-5.81 0.13,-2.58 1.39,-4.89 2.52,-6.95 1.56,-1.59 3.56,2.74 3.6,-0.58 -1.93,-1.54 -0.62,-5.1 -2.69,-7.09 -0.94,-2.78 -3.12,-0.33 -5.23,-1.99 -1.74,0.33 -2.23,-3.11 -4.08,-1.45 -2.23,-1.34 -5.13,-1.37 -7.71,-1.23 -0.89,1.39 -2.82,1.34 -2.49,3.35 -1.48,1.47 -1.23,4.8 -4.4,3.5 -1.42,0.9 -3.69,0.83 -4.18,2.58 -2.63,-0.42 -3.44,1.09 -2.81,3.24 -1.76,0.32 -3.16,0.76 -4.2,-0.95 -1.28,0.44 -0.68,-4.41 -2.73,-1.94 -0.92,0.95 -1.47,-2.05 -3.03,-1.54 0.47,-2.75 5.09,0.66 3.34,-3.08 -0.36,-1.37 -2.02,1.31 -1.95,-1 -2.7,-0.13 -3.88,-2.85 -6.72,-1.29 -2.27,1 -3.56,-0.22 -5.16,-1.45 -2.66,0.51 -3.03,-3.16 -5.33,-3.52 z\",\n                        \"department-14\" : \"m 231.23,109.9 c -4.06,0.09 -6.85,2.84 -9.55,5.38 -3.34,2.06 -7.05,3.56 -10.99,3.85 -1.95,1.92 -3.54,-1.01 -5.94,-1.28 -2.67,-1.83 -5.65,-1.96 -8.71,-2.47 -2.52,-0.48 -5.06,0.57 -7.64,-0.13 -3.42,-0.41 -7.08,-0.38 -10.19,-1.98 -1.94,-1.82 -4.91,-0.74 -7.32,-0.9 -3.6,0.27 -1.56,4.12 -3.38,5.89 0.35,2.42 2.43,4.3 4.66,5.41 1.29,2.26 4.25,1.82 4.95,-0.81 0.89,1.47 2.18,1.84 0.71,3.15 -2.85,2.72 2.74,3.63 1.8,6.79 0.25,1.58 -1.34,2.53 0.39,3.45 -2.56,1.47 -4.13,6.64 -7.82,4.57 -1.7,0.05 -2.56,3.86 0.25,2.27 1.68,0.8 -1.5,3.01 -2.33,3.69 -1.18,-0.64 -2.61,2.05 -3.44,2.77 1.51,0.52 3.07,1.11 2.99,2.92 1.94,0.53 4.35,0.57 6.32,-0.18 1.55,1.73 4.66,1.77 5.78,1.31 0.33,1.85 2.06,-2.55 3.65,-1.79 1.67,-0.4 2.88,-1.72 1.91,-3.16 2.07,-1.17 2.99,1.93 4.94,0.32 1.69,0.63 2.6,-1.47 4.44,-1.14 2.02,-2.53 4.71,-0.49 6.27,0.75 0.09,2.25 1.52,-0.03 1.58,-1.02 2.72,0.42 5.75,0.47 7.89,2.34 0.72,-2.21 4.15,-0.58 5.38,-3.06 1.98,-1.59 4.45,-2.16 5.53,-4.57 1.56,-0.47 2.62,-1.63 3.42,0.6 1.16,-0.33 2.13,-1.63 3.58,-1.13 0.5,-2.08 1.78,-0.88 2.61,-0.44 1.61,0.55 3,0.24 4,-1.29 0.95,1.22 2.59,1.22 2.01,-0.7 1.28,-2.16 0.25,-3.37 -2.04,-3.81 -1.78,-1.67 1.38,-2.37 1.39,-3.02 -1.93,-1.58 2.62,-4.1 -0.98,-4.39 -0.16,-2.06 0.6,-4.48 -2.13,-4.95 -3.24,-2.19 4.22,-2.19 0.79,-4.43 -0.9,-0.04 -3.11,2.04 -1.98,-0.25 -0.33,-1.14 -1.2,-1.29 -0.01,-2.61 -1.49,-1.67 0.64,-7.09 -2.8,-5.97 z\",\n                        \"department-76\" : \"m 285.08,67.51 c -1.66,1.28 -3.92,-0.27 -5.32,2.21 -2.55,2.82 -5.75,4.75 -9.23,6.16 -2.69,2.07 -6.27,0.91 -9.1,2.49 -3.04,0.83 -5.97,2.2 -9.16,2.2 -4.64,-0.08 -8.38,2.85 -12.2,5.03 -3.19,1.24 -5.65,3.53 -8.97,4.44 -4.45,0.63 -4.32,5.58 -6.08,8.7 -1.33,2.41 -3.69,6.09 0.02,7.66 2.71,1.09 5.28,1.25 8.39,1.98 3.84,1.23 7.92,-4.2 10.87,-0.97 1.02,1.67 2.99,3.04 4.68,1.44 -0.81,3.45 3.88,2.23 5.92,1.74 1.25,0.7 1.48,-1.8 1.82,0.62 0.74,1.56 3.24,0.12 3.81,1.84 1.65,-0.96 2.48,4.22 -0.34,2.48 -3.28,0.03 0.21,1.48 0.51,2.68 2.73,-3.35 2.83,4.25 5.77,2.84 2.8,-0.27 -0.27,-3.85 3.3,-3.41 1.82,-0.28 2.83,-2.57 4.57,-2.23 0.36,-1.37 4.68,0.8 4.04,-2.57 1.27,-2.05 1.52,-4.08 4.3,-5.05 2.08,0.14 5.31,0.85 7.56,1.4 2.14,-0.45 3.59,3.15 6.18,2.19 2.06,0.69 2.28,-3.97 4.3,-4.86 1.52,-1.49 -0.75,-3.01 -1.45,-0.94 -2.42,-0.89 0.93,-2.53 -0.81,-3.95 0.3,-1.61 -2.27,-1.27 -1.03,-2.58 -0.73,-1.35 1.8,-2.21 -0.04,-3.48 1.02,-1.01 3.32,-5.11 0.67,-2.57 -2.48,-0.31 0.5,-3.34 1.11,-4.23 -0.07,-1.57 3.34,-0.34 1.01,-2.16 -2.4,-2.69 -1.34,-6.85 -4.28,-9.1 -3.65,-1.5 -5.37,-5.07 -8.6,-7.13 -2.03,-0.46 -0.42,-2.8 -2.2,-2.85 z\",\n                        \"department-60\" : \"m 299.82,88.06 c -0.68,1.53 -2.52,3 -2.62,4.61 0.88,0.83 2.72,-2.26 2.36,0.47 -2.03,0.88 -1.5,2.81 -1.5,4.35 -1.65,1.28 0.75,1.64 0.2,3.03 0.54,1.64 1.83,2.54 0.02,4.14 0.78,1.65 2.88,-1.94 3.18,0.81 -0.81,1.88 -3.2,3.3 -3.32,5.72 1.83,-0.19 -0.44,1.38 1.38,2.1 1.48,2.13 0.75,4.92 2.41,6.82 0.2,2.27 -1.63,1.56 -2.48,0.39 -2.21,-0.34 -2.49,2.24 -0.48,2.81 -0.83,1.16 -0.47,2.78 1.13,3 2.38,-0.91 4.68,1.32 7.04,0.62 2.19,-0.63 4.26,-0.42 6.14,-1.88 1.82,-1.52 2.59,1.29 4.7,0.92 0.24,2.48 3.26,-1.11 3.69,1.4 -0.75,1.55 3.2,0.09 3.21,-1.39 1.69,-0.21 1.93,2.59 3.71,1.86 2.57,0.22 4.8,1.97 6.25,3.43 0.62,-1.34 1.71,-1.33 1.95,0.34 1.46,2.81 2.94,-2.02 4.79,0.35 1.09,0.96 1.32,2.68 2.73,1.05 0.38,2.06 2.62,0.41 2.41,-0.61 2.06,-2.04 3.56,2.74 5.7,0.23 1.37,0.79 3.07,-1.58 3.55,0.59 0.9,-2.08 4.02,0.32 3.84,-2.61 0.97,-1.2 1.9,-2.09 3.15,-2.84 -1.43,-0.2 -1,-3.93 -2.02,-1.23 0.12,2.36 -0.59,-0.15 -0.51,-1.14 -0.98,-0.34 -1.96,-0.8 -2.82,-1.45 1.46,-1.59 0.58,-5.08 -1.78,-5.51 -1.64,-1.93 1.32,-3.14 3,-2.37 2.78,-1.33 1.45,-5.56 2.96,-6.93 1.83,1.02 3.46,-1.08 0.88,-1.43 -2.12,-0.58 0.91,-1.96 -1.18,-3 -0.31,-1.21 1.9,-1.71 1.13,-3.46 1.11,-2.28 -2.26,-3.66 -0.83,-5.46 -1.28,-1.35 1.28,-1.82 0.48,-3.31 0.33,-2.37 -2.35,1.17 -1.98,-1.22 -1.06,0.07 -2.21,3.33 -3.26,0.83 -1.15,-1.16 -2.97,0.6 -2.46,1.87 -0.95,-1.04 -2.28,-2.96 -3.61,-2.19 0.98,1.2 1.14,2.51 -0.39,1.26 -0.14,2.4 -4.2,0.61 -3.1,3.55 -0.54,2.6 -5.29,-1.86 -5.5,1.9 0.32,2.24 -2.85,2.23 -2.21,0.03 -1.14,-1.83 -2.74,1.59 -3.58,-0.97 -1.21,-1.4 -2.44,-1.07 -3.66,-0.6 -0.85,-3.25 -4.16,-1.53 -6.1,-3.1 -0.93,-1.42 -3.34,-0.98 -4.87,-2.04 -2.87,-0.39 -5.38,1.28 -8.22,0.91 -0.21,-2.15 -3.87,-1.59 -4.92,-1.24 -1.09,-1.54 -2.79,1.74 -4.47,0.11 -1.06,-0.76 -1.06,-1.17 -0.69,-2.16 -0.99,-0.72 -2.08,-1.47 -3.42,-1.36 z\",\n                        \"department-80\" : \"m 292.25,47.76 c -3.3,0.48 -3.7,7.09 -0.18,7.88 1.08,1.67 4.2,2.74 3.06,4.24 -2.73,-1.29 -6.63,-3.63 -7.9,0.8 -0.08,3.06 -3.29,5.38 -4.22,7.27 1.37,-0.11 3.64,-1.46 3.18,1.37 3.11,1.87 5.05,5.06 7.98,7.06 3.9,1.29 3.89,5.38 5.12,8.61 0.56,2.66 4.89,3.47 4.09,5.66 1.46,2.82 4.15,-0.88 5.54,0.73 2.25,-2 4.72,2.18 7.27,1.01 2.7,-0.93 5.98,-1.02 8.68,0.5 1.84,-0.03 3.1,2.73 5.49,1.65 1.93,0.79 2.11,3.17 3.94,1.57 2.03,0.38 2.41,3.33 4.24,1.67 1.8,-0.87 1.46,4.54 3.03,1.36 0.02,-3.92 4.11,-1.35 5.69,-2.17 -0.71,-2.24 0.89,-2.61 2.47,-2.96 0.23,-1.49 2.58,-0.96 0.98,-2.41 1.05,-1.53 0.91,1.46 2.09,-0.25 0.9,2.74 1.49,1.35 3.01,0.23 1.35,0.58 3.49,2.16 3.45,-0.59 1.21,0.66 3.53,0.99 2.21,-1.27 0.39,-2.05 -3.23,-2.65 -0.99,-4.12 0.13,-1.56 -2.17,-2.32 -0.06,-3.42 -0.06,-1.95 2.47,-2.66 2.02,-5.11 0.89,-1.27 2.86,-3.19 2.9,-4.11 -2.64,0.29 0.37,-2.52 -2.05,-2.42 -2.22,-1.41 -5.14,-3.16 -7.9,-1.23 -1.34,-2.15 -4.91,2.97 -5.09,0.51 1.42,-1.44 -0.8,-3.49 -2.15,-1.79 -0.94,1.46 -4.33,1.85 -2.41,-0.4 3.11,-2.33 -2.99,-5.63 -2.46,-2.07 1.41,1.98 -2.63,-0.12 -3.46,-0.4 -1.61,-0.21 -3.12,-0.74 -2.69,-2.12 -1.34,-0.69 -1.48,3.04 -2.43,0.22 -3.21,-2.44 -3.38,5.35 -5.85,1.64 -1.72,-1.93 1.49,-5.21 3.99,-5.44 1.33,-2.2 -4.48,-3.79 -5.35,-1.18 -0.74,-1.34 -1.37,-2.06 -1.64,-0.43 -2.88,-0.65 -5.6,0.07 -8.2,1.37 -1.11,-1.55 -3.47,0.2 -3.68,-2.58 1.41,-3.13 -8.2,-2.22 -4.92,-5.34 -0.16,-2.3 -3.14,1.95 -4.11,-1.07 -2.18,-2.39 -5.42,-2.15 -7.98,-0.54 -2.27,1.67 -2.44,-2.55 -4.75,-1.91 z\",\n                        \"department-95\" : \"m 297.89,122.77 c -1.93,0.92 -1.82,3.28 -2.24,5.06 -0.18,1.39 -0.88,2.57 -1.71,3.66 -1.18,2.5 3.25,0.35 3.28,2.76 0.67,1.03 2.44,0.71 2.86,-0.15 1.62,0.83 1.89,-1.96 3.5,-0.67 1.15,0.5 1.54,1.3 0.91,2.4 0.05,1.46 1.28,0.91 1.47,-0.15 1.23,-1.85 1.56,1.36 3.2,0.93 1.81,-0.33 2.63,2.19 4.51,1.19 1,-0.65 2.03,-0.32 2.94,-0.74 0.27,0.84 -0.01,2.32 1.49,2.09 1.39,0.41 0.73,2.42 2.34,2.4 -0.26,0.82 -0.29,3.2 0.91,1.57 0.86,-1.05 2.61,-1.25 3.07,-2.57 1.17,0.19 2.33,0.34 3.34,-0.64 1.5,0.48 3.52,2.04 5,0.44 1.28,-0.6 2.07,-1.91 3.13,-2.67 -1.04,-1.28 1.15,-1.17 1.41,-2.36 0.47,-0.74 -0.21,-1.51 0.41,-2.34 -0.57,-0.87 -1.19,-1.72 -1.74,-2.51 -0.76,0.04 -0.35,1.66 -1.56,0.99 -1.63,0.01 0.09,-1.59 -1.48,-1.79 -0.96,-0.62 -1.98,-0.38 -2.67,-1.33 -1.15,-0.06 -2.21,-0.73 -3.09,-0.09 -0.52,-1.59 -2.64,-3.14 -3.11,-0.65 -0.81,0.43 -3.97,1.21 -2.53,-0.5 -0.87,-1.58 -3.19,1.28 -3.56,-1.01 -1.15,-0.35 -2.65,-0.19 -3.11,-1.46 -1.37,0.13 -2.53,1.17 -3.72,1.84 -1.32,-0.26 -2.69,0.49 -4.1,0.64 -1.33,0.67 -2.12,-0.84 -3.46,0.08 -0.96,-1.47 -2.91,-0.73 -4.2,-0.81 -0.5,-0.95 -2.12,-1.82 -0.57,-2.52 0.13,-0.53 -0.36,-1.09 -0.9,-1.1 z\",\n                        \"department-78\" : \"m 292.32,132.84 c -1.68,0.81 -3.67,0.76 -5.14,1.83 -1.97,-1.3 -0.99,2.02 -0.1,2.67 0.55,0.79 -1.34,2.61 0.69,2.07 1.64,-0.39 0.59,0.65 0.37,1.44 0.56,0.92 0.3,2.44 1.88,2.64 -0.09,1.26 1.67,1.89 0.48,3.08 1.64,0.66 2.24,2.6 1.48,4.19 -1.03,2.01 0.99,3.08 1.85,4.34 -0.58,1.19 -2.9,3.12 -0.68,3.75 -0.47,1.26 0.09,2.42 1.54,2.47 0.18,1.99 1.68,2.21 3.27,2.53 -0.41,1.11 -0.51,2.96 1.4,2.43 1.42,0.39 2.18,2 1.59,3.43 0.23,1.67 0.57,3.89 2.53,3.87 0.36,1.68 3.78,2.12 3.77,0.29 -0.23,-1.35 1.17,-2.66 1.54,-4.05 1.67,-0.97 -2.33,-2.06 -0.18,-2.66 1.44,0.17 3.44,0.88 3.57,-1.25 0.08,-1.12 0.7,-1.71 1.35,-2.36 -0.8,-1.15 -2.97,-2.42 -1.13,-3.55 0.61,-1.71 3.54,-1.04 3.46,-3.33 -0.81,-1.48 0.7,-1.23 1.5,-1.61 0.73,-1.13 2.67,-0.43 2.55,-1.99 1.23,0.53 1.88,-0.53 0.53,-1.07 -0.97,-1.07 -3.27,-1.54 -2.66,-3.59 -0.02,-1.82 0.75,-3.53 2.25,-4.55 0.27,-1.43 0.56,-2.46 -1.03,-2.77 0.42,-2.23 -2.99,-1.71 -2.63,-3.73 -1.61,-0.09 -3.2,1.35 -4.8,0.6 -1.14,-1.79 -3.8,-0.64 -4.79,-2.64 -0.79,0.03 -1.9,3.2 -2.31,1.04 -0.6,-0.85 0.89,-2.23 -0.76,-2.51 -1.37,-1.91 -2.01,1.2 -3.59,0.52 -1.03,1.41 -3.22,0.49 -3.58,-1.01 -1.62,-1.22 -2.88,0.79 -4.21,-0.53 z\",\n                        \"department-28\" : \"m 287.11,142.32 c -2.1,1.04 1.22,5.31 -2.55,5.04 -3.13,0.47 -2.25,4.05 -2.79,5.7 -2.08,1.39 -4.66,0.71 -6.89,0.79 -1.67,0.17 -4.55,-2.91 -4.14,0.39 -0.94,1.3 -4.08,-0.75 -3.86,1.85 -2.43,0.08 -5.51,1.27 -7.37,1.58 -1.08,1.71 -3.78,2.6 -2.33,4.99 0.77,3.5 4.78,4.24 6.38,7.09 -0.22,2.23 -1.98,4.13 0.4,5.86 -1.32,2.12 -2.68,4.96 -5.61,5.63 -2.31,-0.78 -5.36,3.02 -2.13,3.95 -1.7,2.27 2.62,5.08 0.17,6.87 0.96,1.32 5.87,1.56 4.27,3.23 -2.59,-0.41 -2.61,3.43 0.12,2 1.93,-0.18 2.86,0.02 4.27,-1.38 2.46,-1.17 2.35,1.12 0.44,1.89 0.94,1.94 5.72,-0.14 5.24,3.16 2.38,1.44 2.98,5.53 5.88,5 2.46,1.01 5.04,1.84 7.07,-0.1 2.12,0.96 1.21,-4.35 3.42,-1.33 2.91,1.91 0.9,-4.73 4.83,-2.76 1.99,-0.3 2.54,-3.35 5.19,-2.24 2.89,0.64 5.49,-1.07 8.22,-1.66 2.33,-1.48 0.35,-5.82 3.98,-5.14 -0.56,-1.06 0.03,-1.81 0.2,-2.18 -1.12,-2.33 1.98,-4.62 -0.13,-6.47 1.22,-2.57 0.51,-6.45 -1.46,-7.17 0.98,-3.67 -3.12,-0.53 -4.61,-2.82 -3.57,-1.35 -1.08,-6.34 -4.19,-7.79 -2.86,0.53 -0.05,-3.49 -3.13,-2.7 -2.21,-2.24 -5.44,-5.53 -2.5,-8.36 -1.41,-1.65 -2.75,-3.31 -1.37,-5.55 -0.35,-2.12 -1.91,-3.29 -1.97,-5.44 -0.63,-1.06 -1.8,-1.83 -3.04,-1.94 z\",\n                        \"department-75\" : \"m 326.98,144.71 c -1.27,-0.06 -2.46,0.68 -3.27,1.54 -0.47,-0.15 -0.85,0.06 -1.23,0.25 -0.65,0.03 -1.66,1.18 -0.69,1.52 0.81,0.18 0.93,1.2 1.8,1.35 1.65,0.28 3.42,1.43 5.03,0.39 1.03,-0.88 2.21,0.62 3.32,0.28 0.54,-0.43 0.6,-1.27 -0.33,-1.23 -0.68,-0.16 -1.14,-0.33 -1.46,-0.06 -0.34,-1.13 -0.06,-2.23 -0.93,-3.14 -0.12,-1.14 -1.17,-0.96 -2.05,-0.92 l -0.18,0 -0.03,3e-4 z\",\n                        \"department-93\" : \"m 336.5,137.58 c -0.46,0.33 -1.14,0.34 -1.42,0.97 -0.75,1.19 -2.15,1.71 -3.14,2.62 -0.82,-0.03 -1.72,-0.07 -2.53,-0.25 -0.64,-0.37 -1.29,-1.34 -2.07,-0.64 -0.6,0.3 -1.08,1.1 -1.81,0.59 -0.35,-0.19 -1.46,-0.42 -1.19,0.3 0.56,0.53 2.05,0.32 2.05,1.33 -0.06,0.69 -1.13,1.34 -0.68,2.02 1.05,0.43 2.37,-0.21 3.33,0.37 0.27,0.54 0.5,1.08 0.89,1.55 0.18,0.57 -0.13,1.72 0.86,1.53 1.07,-0.15 2.16,-1.04 3.23,-0.34 1.04,0.72 2.32,1.35 3.05,2.37 -0.11,0.74 1.41,0.94 1.04,0.05 -0.24,-0.71 -0.92,-1.55 -0.78,-2.26 0.67,-0.23 -0.04,-0.79 -0.4,-0.86 0.27,-0.43 -0.26,-0.81 -0.29,-1.14 0.41,-0.57 1.31,-0.71 1.23,-1.58 -0.09,-0.8 0.8,-1.4 0.35,-2.19 -0.23,-0.84 -1.06,-1.46 -1.25,-2.26 0.77,-0.61 0.45,-1.99 -0.49,-2.17 z\",\n                        \"department-94\" : \"m 332.85,147.49 c -0.56,0.21 -2.03,0.43 -2.18,1.01 0.31,0.21 1.82,-0.09 1.77,0.51 0.02,0.58 -0.23,1.64 -1.05,1.16 -1.03,-0.16 -2.09,-1.01 -3.03,-0.14 -0.7,0.5 -1.59,0.2 -2.33,0.5 -0.4,1.12 0.01,2.46 -0.66,3.53 -0.23,0.79 0.87,0.44 1.11,0.99 0.42,0.39 0.99,0.13 1.33,-0.1 0.46,0.44 -0.1,1.74 0.84,1.68 0.59,-0.25 1.17,-0.38 1.79,-0.16 1.34,-0.05 2.64,-0.54 3.94,-0.71 0.51,0.63 0.39,1.61 1.15,2.11 0.31,0.19 0.6,0.29 0.75,0.66 0.59,0.31 1.26,-0.47 0.77,-0.99 -0.01,-0.93 1.56,-1.44 0.88,-2.44 0.49,-0.32 0.24,-1.11 0.85,-1.28 0.43,-0.58 -0.47,-0.6 -0.83,-0.71 -0.34,-0.52 0.66,-1.17 0.14,-1.69 0.12,-0.8 -1.11,-0.7 -1.2,-1.46 -1.03,-1.05 -2.25,-2.13 -3.71,-2.49 -0.1,-0.01 -0.2,-0.01 -0.31,0 z\",\n                        \"department-92\" : \"m 324.24,141.53 c -2,0.52 -3.26,2.41 -5.06,3.32 -1.07,0.77 -1.1,2.2 -0.99,3.39 -0.4,0.4 -0.48,0.98 -0.25,1.53 0.01,0.71 0.73,0.52 1.15,0.65 0.16,0.65 0.67,1.01 1.28,1.14 0.25,0.33 0.49,0.67 0.86,0.85 0.32,0.72 0.72,1.57 1.66,1.53 0.78,-0.01 1.11,0.83 1.08,1.46 0.36,0.27 0.92,-0.2 1.18,0.31 0.73,-0.09 0.08,-1 0.1,-1.43 0.14,-0.72 0.7,-1.47 0.38,-2.22 -0.12,-0.62 0.28,-1.24 0.24,-1.78 -0.96,-0.79 -2.46,-0.33 -3.22,-1.42 -0.37,-0.47 -1.1,-0.68 -1.44,-1.08 0.22,-1.13 1.41,-1.83 2.5,-1.7 0.39,-0.7 1.58,-0.82 1.76,-1.68 -0.35,-0.89 1.37,-1.42 0.54,-2.3 -0.48,-0.39 -1.16,-0.56 -1.77,-0.58 z\",\n                        \"department-91\" : \"m 320.25,153.32 c -0.58,0.51 -0.49,1.56 -1.65,1.15 -1.09,0.27 -1.38,1.31 -2.58,1.12 0.11,1.05 -0.02,2.93 -1.5,3.32 -1.61,-0.22 -1.97,1.45 -2.84,2.24 0.58,0.86 2.2,1.77 1.79,2.96 -1.64,0.36 -0.55,3.52 -2.55,3.44 -0.79,0.15 -3.39,-0.81 -2.43,0.71 1.02,0.53 2.16,1.11 0.51,1.61 -0.86,0.93 -0.75,2.41 -1.65,3.25 0.14,1.24 1.76,2.59 0.46,3.92 0.71,0.75 2.78,0.14 2.06,1.92 1.07,1.28 -0.54,2.43 0.19,3.85 0.08,0.92 -1.54,1.43 -0.06,2.16 1.67,1.02 3.4,-0.35 5.09,-0.44 0.79,-1.48 2.15,0.97 2.97,-0.44 -0.22,-1.14 1.58,-0.26 1.55,-1.49 0.43,-1.63 2.01,-0.33 2.65,0.23 -0.12,0.95 0.48,1.61 1.08,0.67 0.98,0.38 1.68,0 2.09,-1.03 1.19,-0.35 1.89,2.24 3.4,1.07 0.49,-0.63 -0.03,-1.81 1.37,-1.59 1.11,-0.46 0.12,-2.39 1.77,-2.49 0.99,-0.33 0.83,-1.84 2.2,-1.42 0.62,-0.47 2.15,-0.38 0.97,-1.39 -1.69,-0.77 -1.16,-2.85 -1,-4.34 0.63,-1.35 -0.62,-2.47 -0.1,-3.88 0.63,-1.33 0.75,-2.86 1.78,-3.97 -0.3,-0.67 -1.97,-1.85 -0.32,-2.16 1.12,-0.7 -0.81,-1.91 0.75,-2.52 1.46,0.63 1.85,-1.77 0.18,-1 -1.09,-0.51 -1.76,-1.71 -2.13,-2.88 -1.08,-0.05 -2.24,1 -2.98,0.91 -0.9,-0.56 -2.37,0.31 -3.35,-0.26 0.08,-0.81 -0.25,-1.5 -1.11,-1.09 -0.9,-1.03 -1.16,0.24 -1.83,0.61 -0.49,-0.5 -1.91,-0.11 -1.24,-1.2 -0.57,-1.05 -2.44,-1.17 -3.52,-1.52 z\",\n                        \"department-45\" : \"m 320.43,181.91 c -1.93,3.75 -6.85,2.12 -9.9,4.16 -1.95,2.44 0.54,6.83 -3.34,8.04 -0.15,3.54 -2.85,4.96 -6.06,5.24 -2.92,1.1 -6.42,-0.72 -8.49,2.39 -1.57,0.69 -5.05,0.19 -3.17,3.06 1.8,0.69 1.81,1.21 0.63,2.66 -1.69,2.43 4.05,3.22 1.25,6.02 -2.34,2.28 -0.38,4.59 0.09,7.04 1.76,1.74 4.95,-1.17 6.29,2.07 1.03,2.45 2.79,7.52 5.89,3.78 1.72,-3.2 5.45,1.69 8.15,-0.49 3.31,-0.11 8.68,-1.55 10.42,2.55 3,0.8 5.42,3.73 8.74,2.17 2.13,1.16 4.32,2.3 6.96,2.83 1.97,1.01 3.09,6.61 5.84,4.26 -0,-3.62 2.76,-1.68 4.41,-0.43 2.59,0.81 2.19,-2.3 2.2,-3.37 1.94,-0.4 6.46,-0.48 3.87,-3.36 0.34,-3.56 -2.17,-6.48 -4.41,-8.39 0.34,-3.92 6.29,-1.58 7.84,-4.63 1.26,-2.84 -2.35,-5.65 1.12,-7.77 4,-1.7 4.51,-6.41 1.51,-9.33 -2.16,-2.35 -2.73,-6.91 -6.87,-6.87 -1.86,0.13 -5.92,3.75 -6.03,-0.07 -2.63,1.14 -5.36,4.25 -8.22,1.8 -2.17,-0.24 -6.58,1.49 -7.34,0.08 2.67,-1.6 4.53,-6.27 0.45,-7.38 -2.86,-1.04 -1.71,-5.28 -5.43,-4.57 -1.53,-1.38 -4.89,2.52 -5.34,-1.02 -0.33,-0.2 -0.71,-0.32 -1.06,-0.48 z\",\n                        \"department-41\" : \"m 266.29,195.63 c -2.06,2.95 -7.43,0.3 -8.5,3.42 -1.9,1 -2.23,2.67 -0.22,3.62 0.19,3.26 0.26,5.82 -1.16,8.6 -4.07,-1.69 0.07,5.24 -3.5,5.91 -0.99,3.4 -6.81,3.06 -5.94,7 2.53,-0.22 6.07,1.21 9.36,0.87 2.33,-0.38 3.21,0.87 2.33,3.13 -0.6,3 2.08,2.14 3.12,0.52 2.68,-0.46 3,3.47 5.15,1.95 3.31,1.92 -0.52,5.3 2.24,7.5 2.87,2.54 0.27,5.57 1.51,8.9 -2.12,3.16 1.39,5.4 4.47,4.52 3.84,-0.06 2.69,7.22 7.32,5.56 1.87,-1.68 3.74,-3.34 6.46,-2 0.88,-3.66 5.55,-2.27 8.48,-2.51 2.88,0.7 4.8,4.16 8.08,3.56 2.17,-0.93 0.23,-5.2 4,-4.24 2.53,1.03 9.23,0.49 7.7,-3.24 -2.46,-1.98 -1.75,-6.33 1.55,-6.48 1.62,0.43 3.89,1.9 3.49,-1.2 0.4,-2.84 -2.55,-3.04 -1.96,-5.71 -0.66,-1.86 -5.5,-1.35 -2.85,-4.03 2.3,-0.71 6.5,-3.18 2.67,-5.2 -3.4,-0.6 -6.94,-0.37 -10.34,0.3 -2.3,0.89 -5.75,-3.14 -6.32,0.82 -3.73,2.59 -5.33,-2.8 -6.15,-5.3 -2.21,-2.59 -5.58,2.04 -6.3,-1.81 -0.8,-1.62 0.46,-2.55 -1.18,-3.79 1.15,-2.66 3.49,-5.56 -0.29,-7.32 0.2,-1.64 2.39,-4.45 -1.04,-3.94 -1.34,-0.61 -4.15,-1.65 -3.51,1.01 -2.97,0.88 -5.87,1.72 -8.76,0.26 -3.05,-0.48 -3.65,-3.81 -5.67,-5.58 -0.41,-3.18 -5.31,-0.86 -5.28,-3.08 0.5,-0.52 3.23,-1.6 1.02,-2.02 z\",\n                        \"department-36\" : \"m 292.75,252.32 c -0.22,1.96 -4.71,0.36 -3.09,3.11 -2.43,-0.72 -5.02,-1.03 -6.59,1.34 -2.69,0.52 -2.88,2.56 -1.18,4.37 -0.27,2.79 -3.21,4.19 -4.35,6.82 -1.44,3.03 -4.42,-1.33 -6.53,0.46 -3.18,0.46 -2.88,3.92 -3.68,6.03 -1.05,3.06 -0.95,6.5 -2.13,9.41 1.56,2.64 -2,4.95 -4.07,2.91 -3.4,-0.16 1.5,2.15 0.47,4.03 -1.36,3.26 -0.89,7.48 3.29,8.02 1.63,1.02 1.82,2.51 4.05,2.13 3.15,0.49 2.87,3.8 3.42,5.86 3.01,0.61 1.99,2.49 1.57,4.47 1.47,-0.43 1.97,1.71 3.8,0.38 1.85,0.34 2.68,-2.93 4.56,-0.65 1.37,1.89 2.88,2.94 4.14,0.35 1.12,-1.38 3.37,-4.31 4.14,-1.21 1.33,-0.81 3.52,-2.34 3.35,0.47 1.47,0.6 2.78,-3.28 3.75,-0.32 2.88,0.93 1.17,-5.91 4.57,-3.2 2.52,2.22 5.64,-0.66 8.59,0.82 2.5,1.04 7.68,2.32 7.46,-1.55 4.04,-2.02 -1.08,-5.26 0.41,-8.47 1.23,-2.22 0.34,-4.16 -1.32,-5.77 1.29,-2.28 -5.15,-3.19 -2.63,-5.41 3.7,-2.03 -4.12,-5.08 0.13,-6.45 0.15,-1.85 5.09,-3.55 1.3,-4.36 -3.14,-0.2 -1.71,-2.81 -0.75,-4.45 0.55,-3.16 -4.43,-3.11 -2.28,-6.14 0.71,-2.59 -1.84,-0.34 -2.34,-2.38 -2.14,-1.4 -4.51,2.29 -6.97,0.12 -1.89,-0.3 -3.87,-1.35 -1.68,-3.08 2.9,-1.88 1.03,-5.37 -2,-5.37 -1.57,-1.11 -2.26,-2.41 -4.45,-1.38 -1.18,-0.07 -1.7,-1.07 -2.98,-0.88 z\",\n                        \"department-18\" : \"m 323.87,229.07 c -2.35,0.13 -9.34,2.52 -5.77,4.83 3.63,-0.55 1.32,4.29 3.95,4.19 1.09,2.3 -0.24,7.95 -2.97,4.02 -2.53,0.84 -4.38,3.27 -2.23,5.76 1.94,2.35 0.54,4.87 -2.44,4.09 -2,0.97 -4.54,0.79 -6.09,-0.04 -3.26,0.8 0.48,4.8 -3.11,4.5 -2.3,-0.84 -0.78,2.92 -3.07,3.74 -2.13,3.21 4.52,3.78 6.54,2.69 2.19,-2.06 2.95,2.09 4.74,0.99 0.13,1.95 -1.78,4.73 1.47,5.08 2.39,1.98 -3.09,7.46 2.34,7.01 1.98,2.06 -4.63,4.48 -3.1,6.87 3.2,0.9 1.23,3.63 0.29,5.24 0.67,1.68 4.73,1.92 3.03,4.22 4.54,2.34 -0.65,6.57 2.07,9.85 1.42,2.13 -0.12,3.45 -1.35,4.8 0.97,3.01 6.38,2.02 6.61,-1.43 1.68,-1.43 2.79,-4.1 5.74,-3.71 2.61,-0.19 8.61,0.85 7.95,-3.28 -1.28,-1.97 -0.29,-4.02 -0.99,-5.76 1.11,-0.26 2.76,0.38 2.1,-1.66 2.77,0.03 3.8,-5.99 6.55,-2.38 4.02,-0.1 5.48,-4.84 9.43,-5.17 5.09,1.19 4.04,-5.2 3.91,-8.3 0.71,-2.84 1.27,-6.86 -1.24,-8.77 -0.49,-3.87 -0.61,-7.69 -2.18,-11.39 0.6,-4.25 -6.27,-4.24 -4.71,-8.26 2.14,-3.02 2.74,-7.4 -0.15,-10.16 -1.82,-0.35 -3.52,2.23 -5.06,-0.44 -2.66,-2.76 -1.08,3.94 -4.37,2.1 -2.06,-1.93 -3.82,-6.36 -7.51,-5.63 -1.58,-0.2 -3.8,-3.83 -5.86,-1.15 -1.78,-0.24 -2.82,-2.01 -4.51,-2.45 z\",\n                        \"department-23\" : \"m 301.06,306.59 c -2.18,-0.09 -0.48,5.24 -3.46,3.84 -1.17,-2.86 -2.05,0.79 -3.59,0.42 -1.13,-0.79 -0,-3.31 -1.73,-1.25 -1.24,0.55 -2.36,1.38 -2.36,-0.7 -1.54,-0.88 -2.18,2.59 -3.79,3.02 -0.98,0.84 -2.88,2.44 -0.45,2.76 0.29,1.69 -1.79,2.6 -0.56,4.04 -2.11,0.16 0.28,2.07 -1.84,2.35 -1.71,2.37 1.37,3.88 3.12,3.98 -0.87,1.98 3.03,2.32 1.47,4.18 0.81,1.46 2.68,2.16 2.08,4.13 0.59,1.41 -1.07,3.49 1.38,3.72 1.8,2.32 -4.92,2.97 -1.35,4.46 1.26,1.18 3.64,-2.06 4.21,0.35 0.31,1.19 0.8,2.47 -1.06,2.08 -1.31,1.78 2.07,3.75 3.94,3.02 1.79,0.62 3.88,-3.62 3.75,-0.15 0.21,1.27 2.24,2.17 2.82,1.56 1.47,1.11 3.83,3.39 1.98,4.77 0.21,1.09 -0.08,4.28 1.82,2.42 1.13,0.08 1.99,-1.04 3.2,-0.95 0.33,-2.76 3.75,-2.96 4.66,-0.46 1.35,-0.17 2.6,0.94 3.34,-0.03 1.49,1.32 3.49,2.43 4.82,3.44 0.2,2.09 4,0.09 3.38,-1.73 2.36,-0.58 5.37,1.33 6.38,-2.1 -1.37,-1.09 -2.62,-1.96 -3.06,-3.78 -1.55,-1.24 -1.59,-2.93 0.65,-2.9 0.54,-1.38 1.04,-2.45 2.73,-1.85 0.62,-1.79 3.09,-2.23 2.56,-4.51 0.36,-1.75 3.84,-1.53 2.12,-3.52 1.2,-2.89 -2.25,-4.14 -2.04,-6.95 -0.08,-2.21 1.4,-4.81 -1.02,-6.11 0.02,-2.5 -1.86,-3.91 -2.39,-6.08 -1.13,-1.7 -3.1,0.63 -2.89,-2.06 -0.52,-1.65 -1.48,-0.92 -2.17,-0.16 -2.13,-0.72 -3.54,-2.45 -1.59,-4.12 -3.08,0.61 -1.54,-4.21 -4.75,-3.19 -2.85,-0.75 -5.52,1.57 -8.05,0.18 -2.39,-0.94 -4.83,-0.98 -7.12,-1.05 -1.87,0.89 -3.74,0.71 -4.87,-1.08 l -0.28,-0.01 10e-6,10e-5 z\",\n                        \"department-87\" : \"m 281.04,310.22 c -0.51,0.05 -1.17,0.12 -1.14,0.78 -0.25,1 -1.41,1.2 -2.23,0.78 -0.91,-0.55 -1.46,0.97 -2.37,0.47 -0.41,-0.24 -0.15,-1.36 -0.88,-1.06 -0.15,0.36 -0.49,0.69 -0.87,0.31 -0.42,-0.56 -1.48,-0.46 -1.39,0.36 -0.29,0.51 -0.98,0.78 -0.95,1.46 -0.55,0.47 -1.05,-0.38 -1.56,-0.48 -1.22,-0.29 -2.83,0.17 -3.07,1.56 0.1,1.34 -1.16,2.36 -1.14,3.65 -1.12,-0.21 -2.43,-0.58 -3.48,-0.02 -0.57,-0.29 -1.43,-0.46 -1.55,0.41 -0.29,0.71 -1.42,0.57 -1.53,1.41 -0.45,0.32 -0.59,0.81 -0.41,1.28 -0.57,0.79 -2.14,-0.04 -2.35,1.21 -0.11,1.15 1.52,1.66 1.49,2.82 0.45,0.61 -0.22,1.55 0.51,2.07 0.3,0.78 -1.04,0.68 -1.22,1.21 0.1,0.73 1.16,1.32 0.57,2.1 -0.2,0.88 -0.43,1.82 -0.37,2.7 0.55,0.71 1.53,1.06 1.85,1.96 0.6,0.29 0.77,-1.11 1.42,-0.47 0.52,0.57 1.56,1 1.37,1.9 0.17,0.33 0.61,0.45 0.5,0.91 0.25,0.56 0.69,1.22 0.15,1.8 -0.4,0.33 -0.69,0.93 -0.79,1.33 -1.08,0.03 -1.62,1.44 -2.79,1.15 -0.74,0.09 -1.45,-0.83 -2.12,-0.41 -0.07,0.49 0.25,0.98 0.12,1.53 -0.13,0.54 0.63,1.01 0.41,1.49 -0.44,0.28 -0.27,0.69 -0.21,1.04 -0.23,1.22 -1.06,2.19 -1.62,3.25 -0.26,0.54 0.17,1.51 -0.39,1.85 -0.92,-0.16 -1.85,-1.49 -2.8,-0.78 -0.33,0.63 -0.36,1.44 0.03,2.02 -0.07,0.89 -1.28,0.52 -1.72,1.1 -0.39,0.39 -0.56,0.91 -1.06,1.2 -0.36,0.39 -0.09,1.12 -0.8,1.16 -0.53,0.7 0.73,1.29 1.05,1.78 1.12,0.48 2.72,-0.73 3.83,0.16 0.41,0.49 0.74,1.16 1.39,1.34 0.08,1.16 -0.5,2.25 -0.79,3.32 0.28,0.85 0.98,1.77 1.99,1.46 0.49,0.16 0.41,1.27 1.18,1.08 1.27,-0.42 1.02,-2.31 2.06,-2.9 0.55,0.27 0.58,1.69 1.39,1.27 0.5,-0.37 1.3,-0.2 1.85,-0.57 0.8,-0.12 1.59,0.64 2.37,0.08 1.2,-0.25 2.21,0.92 2.02,2.08 -0.09,0.92 0.66,1.5 1.35,1.88 0.41,0.32 0.61,1.42 1.32,0.86 0.49,-0.58 1.3,-0.68 1.86,-0.14 0.33,0.35 1.23,0.52 1.23,1.08 -0.69,0.87 -1.91,1.66 -1.92,2.87 0.34,0.84 1.26,0.35 1.87,0.21 0.56,0.26 0.58,0.97 0.93,1.33 0.84,-0.26 2.33,-0.56 2.49,0.7 0.19,0.63 0.87,0.23 0.77,-0.27 0.67,-0.31 0.04,-1.73 0.98,-1.81 0.57,0.07 0.21,-0.87 0.71,-0.67 0.95,0.21 1.74,1.1 2.68,1.15 0.76,-1.2 1.96,-2.1 2.52,-3.45 0.35,-0.6 1.02,-0.45 1.52,-0.23 0.86,-0.13 0.35,-1.3 0.75,-1.74 0.56,-0.03 0.98,-0.4 1.21,-0.85 0.63,0.05 0.58,1.16 1.29,0.85 0.37,-0.17 0.08,-0.99 0.68,-0.63 0.79,0.46 1.82,0.91 2.6,0.18 0.48,-0.4 0.34,-1.43 1.2,-1.3 1.25,0.1 2.05,-1.03 2.55,-1.98 0.73,-0.73 1.34,-1.82 2.34,-2.13 0.74,0.12 1.5,-0.28 1.86,-0.87 0.93,-0.17 1.13,-1.16 1.48,-1.85 0.37,-0.07 0.64,0.49 1.11,0.2 0.61,0.2 0.96,1.44 1.71,0.76 0.42,-0.5 1.1,0.52 1.33,-0.26 -0.03,-0.66 0.6,-0.53 1.03,-0.64 0.45,-0.2 0.16,-0.77 -0.12,-0.88 -0.02,-0.51 -0.84,-0.68 -0.83,-1.1 0.48,-0.35 0.14,-0.82 -0.21,-1.07 0.24,-0.6 0.41,-1.25 0.01,-1.83 -0.05,-0.55 1.2,0 0.86,-0.75 -0.45,-0.79 -0.3,-1.85 -1.25,-2.36 -0.47,-0.29 -0.97,-0.56 -1.37,-0.86 -0.42,0.28 -0.85,0.21 -1.19,-0.2 -0.57,-0.6 -1.85,-0.61 -1.72,-1.7 0.17,-0.43 0.1,-1.78 -0.62,-1.22 -0.17,0.44 -0.43,0.74 -0.89,0.86 -0.71,0.92 -2.04,0.24 -2.93,0.86 -0.49,0.28 -0.9,0.12 -1.15,-0.31 -0.68,-0.45 -1.84,-0.44 -2.21,-1.23 0.21,-0.61 -0.04,-1.24 -0.49,-1.61 0.25,-0.59 1.1,-0.28 1.36,-0.78 0.47,0.27 0.94,-0.21 0.51,-0.63 -0.6,-0.41 0.17,-1.39 -0.62,-1.58 -0.8,-0.29 -1.69,0.05 -2.03,0.8 -0.73,0.21 -1.51,-0.02 -1.97,-0.63 -0.45,-0.19 -1.31,-0.18 -0.96,-0.92 0.42,-1.4 2.91,-1.11 2.81,-2.77 -0.02,-0.79 -0.76,-1.12 -1.46,-1.02 -0.74,-0.49 -0.23,-1.62 0.01,-2.28 0.07,-0.84 -0.67,-1.62 -0.2,-2.45 -0.01,-0.95 -1.08,-1.21 -1.63,-1.75 -0.29,-0.44 -0.89,-1.12 -0.22,-1.54 0.59,-0.47 -0.22,-1.14 -0.7,-1.29 -0.29,-0.51 -0.96,-0.67 -1.32,-1.01 0.65,-0.4 0.49,-1.69 -0.42,-1.53 -0.93,0.06 -2.05,-0.18 -2.28,-1.2 -0.52,-0.39 -1.08,-1.35 -0.53,-1.94 0.31,-0.58 0.65,-1.21 1.38,-1.2 0.66,-0.47 -0.77,-0.84 -0.18,-1.34 0.43,-0.32 0.7,-0.79 0.48,-1.28 -0.02,-0.63 0.42,-1.1 0.86,-1.45 0.24,-0.83 0.18,-2.06 -0.9,-2.22 -0.7,-0.32 -0.2,-1.35 -0.83,-1.79 -0.85,-0.67 -1.34,-1.98 -2.45,-2.23 l -0.03,0.01 z\",\n                        \"department-19\" : \"m 313.35,352.38 c -1.86,0.13 -2.22,1.42 -2.96,2.7 -1.7,-0.45 -2.02,1.25 -3.41,1.04 0.1,2.65 -3.23,3.39 -4.97,1.84 -1.53,1.04 -2.82,2.64 -4.95,2.95 -1.42,1.63 -2.47,3.68 -4.63,4.05 -0.78,2.4 -3.28,0.32 -4.72,1.32 -0.15,-2.02 -2.14,1.24 -2.3,2.01 -1.89,-1.15 -2.49,2.34 -3.89,3.21 -1.28,0.53 -3.65,-2.27 -4.12,0.75 -1.21,1.38 2.97,2.44 0.01,3.18 -0.68,2.09 4.29,0.8 2.12,3.47 -1.5,0.61 -1.7,2.64 -3.24,3.07 -0.37,1.74 -0.74,3.8 1.62,4.02 0.64,1.56 -3.73,2.47 -1.44,3.5 2.52,-0.79 2.31,2.08 0.75,2.84 2.1,1.86 4.91,0.57 6.95,2.2 -1.97,1.83 -0.08,4.96 1.55,6.77 1.57,0.57 3.76,-3.02 4.88,-0.71 2.49,-1.36 5.15,0.9 6.6,2.82 0.89,1.66 2.62,2.3 3.51,3.98 0.84,-0.76 2.22,0.94 2.83,-0.95 1.95,-0.25 4.19,-4.21 5.12,-0.84 2.18,-2.19 5.35,-1.42 8,-1.89 1.92,-1.72 -3.18,-4.39 -0.13,-5.96 1.44,-0.92 3.38,-0.83 2.82,-3.25 -0.27,-1.27 3.56,-2.56 1.06,-3.66 -2.12,-2.49 1.31,-4.07 2.09,-6.03 1.52,-1.54 3.08,-3.21 4.69,-4.48 0.47,-1.62 0.7,-3.32 -0.12,-4.93 2.48,-0.49 5.95,4.22 7.88,1.25 -2.68,-1.36 -0.86,-4.01 -0.65,-6.27 0.65,-2.61 -0.12,-4.5 -1.81,-6.42 -0.37,-1.09 0.41,-2.79 1.03,-3.68 2.2,0.41 0.72,-2.34 1.39,-3.43 -0.08,-1.62 -1.77,-3.7 -2.72,-1.42 -1.49,2.45 -5.53,-1.84 -5.69,2.21 -1.2,1.04 -3.48,1.86 -3.57,-0.45 -2.4,-0.22 -2.77,-1.54 -4.33,-2.87 -0.57,1 -2.92,0.03 -3.77,-0.11 0.11,-0.94 -1.07,-1.2 -1.5,-1.83 z\",\n                        \"department-15\" : \"m 334.72,370.94 c -1.28,1.82 -1.55,4.58 0.43,5.9 -1.81,2.51 -4.37,0.04 -6.57,-1.17 -2.6,-1.06 0.22,2.76 -1.15,4.1 -0.02,1.86 -2.79,1.83 -3.22,3.86 -1.83,1.13 -3.51,3.59 -4.24,5.64 0.35,1.77 2.71,2.41 0.56,3.82 -1.95,0.87 -0.07,4.99 -2.89,4.16 -3.55,0.88 -0.82,4.03 -0.22,5.71 -0.43,1.88 -4.6,-0.03 -2.81,2.9 -0.04,1.62 2.21,2.57 0.46,3.91 0.13,3.08 4.46,4.57 3.6,7.69 -0.92,1.52 -0.85,3.76 -1.46,5.32 3.14,-0.54 0.43,4.14 3.05,4.94 0.99,0 -0.12,-3.03 2.23,-2.19 1.58,-0.83 4.01,-1.56 4.43,0.74 2.75,-0.34 6.48,0.85 7.12,-2.96 2.85,-1.73 1.71,-5.71 4.3,-7.33 -0.14,-2.33 1,-4.52 2.76,-5.39 0.66,-1.77 2.62,-2.11 3.53,-3.79 2.71,0.19 1.23,4.39 2.14,5.14 1.36,-1.39 4.37,-1.42 3.78,1.12 0.34,1.62 0.97,4.51 2.8,3.48 0.84,2.32 -0.52,5.11 1.01,7.65 0.5,1.69 1.9,2.45 2.17,0.12 0.35,-2.14 2.27,-2.85 1.68,-4.93 0.92,-1.91 0.56,-5.47 2.78,-5.83 -0.12,-1.77 1.65,-6.61 3.22,-3.03 1.26,2.36 3.56,-0.59 3.31,-2.05 0.59,-1.14 0.92,-2.65 1.95,-1.09 1.6,-1 4.29,-1.63 3.3,-3.81 1.88,-0.88 -1.23,-1.49 -1.31,-2.37 -2.47,-0.36 0.7,-4.16 -1.68,-4.86 0.04,-1.43 3.56,1.01 2.84,-0.76 -3.52,-0.25 -3.97,-3.78 -3.79,-6.72 -2.86,-0.25 -0.48,-5.68 -3.84,-4.2 -1,0.06 -0.92,-1.73 -2.53,-0.75 -1.83,0.05 -2.03,-0.79 -0.71,-1.66 -1.98,-0.82 1.54,-2.18 -0.51,-2.67 -1.63,1.16 -2.03,4.92 -4.8,3.76 -3.45,-0.77 -2.59,-5.89 -6.01,-5.8 -1.98,-1.95 -3.93,0.16 -6.22,-0.38 -1.82,0.76 -1.98,-2.81 -2.23,-3.3 -2,0.21 -2.37,-1.95 -4.2,-1.04 -0.86,-1.4 -2.85,0.57 -2.19,-1.65 -0.21,-0.26 -0.61,-0.13 -0.87,-0.22 z\",\n                        \"department-30\" : \"m 402.45,438.56 c -1.2,2.08 -2.01,3.99 -4.41,4.18 -0.91,2.13 4,4.03 1.37,6.32 -0.45,1.86 3.55,2.45 0.94,3.7 -0.76,1.99 0.11,3.59 0.97,5.15 -2.84,-2.29 -3.24,4.22 -6.65,2.09 -2.84,1.31 -5.14,-3.82 -7.86,-2.71 -1.9,-0.09 0.68,4.12 -2.36,3.87 -3.59,-0.21 -7.54,0.01 -9.81,-3.3 -3.88,-0.94 -1.76,4.82 -5.2,4.63 -0.2,1.99 1.7,1.26 2.49,1.37 0.64,2.2 6.26,1.35 5.12,4.79 -0.92,1.9 -5.78,3.67 -3.13,5.83 2.48,-0.75 3.13,1.64 2.84,3.17 1.93,-1.62 4.32,-2.9 4.52,0.69 1.23,0.34 3.7,1.07 1.85,-0.84 1.05,-1.8 2.07,-3.7 4.36,-3.11 -0.01,-3.76 5,-4.67 6.38,-1.85 2.32,1.17 -2.54,5.3 1.82,4.76 1.89,-0.76 3.45,-1.45 3.7,1.02 2.53,0.02 1.7,2.08 1.81,3.51 2.89,-1.55 4.4,2.61 6.33,3.87 2.8,0.69 3.15,4.82 3.78,7.11 -0.67,2.22 -2.4,3.52 -4.18,3.93 1.03,2.15 2.04,4.41 2.86,6.75 1.85,2.05 3.54,0.51 3.74,-1.66 2.08,-0.46 3.52,-1.72 3.36,-3.55 0.97,2.31 4.15,-0.86 5.01,-1.94 1.98,0.27 2.78,-2.49 0.23,-2.01 -0.41,-2.17 1.81,-4.53 3.24,-5.76 1.92,-1.29 6.52,3.05 5.01,-1.07 0.59,-2.7 2.29,-5.32 1.74,-7.95 1.25,-0.84 -1.73,-1.91 0.74,-2.53 2.32,-1.47 3.71,-3.79 6.04,-5.21 0.4,-1.57 0.8,-2.1 2,-2.68 -1.38,-1.85 -2.67,-6.36 -5.46,-5.62 -1.54,-2.69 0.63,-6.1 -0.98,-8.69 -2.44,0.11 -1.5,-4.81 -4.22,-4.74 -2.14,-0.69 -5.48,-5.75 -7.17,-2.57 0.92,4.08 -4.49,2.27 -2.46,-0.85 -1.91,-1.19 -5.21,1.01 -5.19,3.34 -1.4,3.16 -4.03,-1.21 -5.4,-1.88 -1.7,0.52 -1.47,-2.53 -3.73,-1.05 -1.71,1.8 -2.68,-0.11 -1.46,-1.57 -0.15,-1.56 -0.74,-2.62 0.35,-3.62 -1.57,-1 -0.67,-2.78 -2.91,-3.32 z\",\n                        \"department-48\" : \"m 373.48,404.94 c -1.47,0.89 -3.46,3.53 -5.12,1.98 -0.01,1.49 -1.57,1.93 -1.04,3.5 -1.43,1.81 -3.11,1.2 -3.88,-0.85 -2.88,-0.45 -1.07,4.27 -3.39,4.9 -1.4,1.6 -1.16,4.02 -1.76,5.9 0.45,1.49 -1.64,2.13 -1.6,3.92 -1.61,2.48 1.66,4.55 3.09,6.26 2.11,1.84 -1.38,5.67 2.08,6.72 1.92,1.77 1.3,4.27 0.7,6.32 -0.81,2.08 2.13,3.68 0.68,5.63 -1.2,1 -0.69,2.92 0.49,1.55 -0.34,2.49 4.49,1.53 3.22,4.04 -0.61,3.08 3.16,-0.47 4.71,0.57 2.33,-0.24 2.39,2.9 4.55,3.55 1.02,2.18 4.4,1.65 6.21,1.9 1.73,0.64 4.49,-0.1 3.28,-2.39 -0.17,-1.71 2.49,-2.35 3.14,-0.7 2.15,-0.14 3.4,3.16 5.36,2.3 1.4,-0.48 2.81,0.78 3.7,-1.01 1.48,-0.27 0.79,-2.83 2.56,-1.71 0.48,-1.13 -1.37,-1.78 -0.45,-3.23 -0.32,-1.45 2.55,-2.77 -0.12,-3.02 -0.49,-1.4 -1.27,-2.69 0.33,-3.79 -0.9,-1.25 -2.65,-3.18 -2.62,-4.42 1.46,-1.07 3.7,-0.89 3.95,-3.34 1.21,-1.8 0.03,-4.2 -0.54,-6.13 -0.14,-2.55 -3.1,-2.32 -3.01,-4.96 -0.51,-1.42 -0.74,-3.3 -1.23,-4.8 0.21,-0.99 -1.02,-2.2 -0.2,-3.43 -0.96,-0.75 -2.32,-0.83 -1.55,-2.36 -1.84,1.16 -1.86,-1.71 -3.45,-2.23 0.02,-3.18 -3.5,-0.79 -4.63,-2.01 2.18,-2.04 -3.67,-4.45 -2.82,-1.23 0.29,3.23 -3.33,0.7 -4.65,2.81 -2.12,0.38 -2.38,-3.83 -3.37,-5.42 -0.69,-1.57 0.03,-3.98 -2.15,-4.28 l -0.25,-0.51 -0.23,-0.01 -2.2e-4,-1e-4 z\",\n                        \"department-63\" : \"m 350.25,319.87 c -2.41,0.1 -1.39,6.08 -4.36,2.69 -2.2,-1.55 -1.13,2.91 -3.36,2.6 -0.99,2.15 -2.4,5.06 -4.99,2.48 -3.53,1.71 0.74,5.9 1.02,8.31 0.33,2.26 -0.13,3.09 -1.85,4.34 -0.59,3.07 -2.87,5.1 -5.46,5.93 -0.78,1.08 -3.3,2.29 -0.7,4.14 1.84,2.94 6.68,6.33 3.76,10.01 -3.59,1.58 -0.37,5.2 0.63,7.47 -1.63,3.1 2.57,5.33 4.8,4.69 1.04,1.88 3.32,0.49 2.64,2.92 1.95,3.55 6.09,-0.43 8.67,2.01 3.48,0.74 2.44,6.76 6.82,5.67 2.39,-1.04 2.55,-4.68 5.97,-4.03 2.84,-0.11 5.33,-4.21 7.45,-3.45 1.17,-0.15 2.17,-1.54 3.06,0.31 2.88,1.39 5.17,-2.92 7.03,0.16 3.24,-0.64 2.05,6.51 5.21,2.85 1.13,-3.37 5.41,3.07 6.68,-1.35 0.83,-2.19 5.07,4.34 4.28,-0.59 0.72,-2.92 5.73,-4.1 3.45,-7.91 -0.98,-3.57 -2.63,-6.42 -6.17,-8.13 -2.69,-2.1 -1.82,-6.45 -4.74,-8.34 -0.45,-1.7 -2.19,-2.8 -0.35,-4.4 -0.69,-2.91 2.62,-4.84 -0.62,-6.96 -2.59,-1.57 -3.98,-4.12 -5.91,-6.12 -2.16,0.37 -6.24,1.62 -5.45,-1.98 -1.98,-2.68 -5.33,1.55 -7.73,-0.76 -2.66,-0.65 -5.11,0.01 -7.56,-0.72 -1.51,-1.52 -2.18,-2.56 -4.49,-2.07 -3.09,-0.49 -3.15,-3.91 -5.15,-5.29 0.27,-2.13 2.01,-5.11 -1.71,-4.35 l -0.47,-0.05 -0.43,-0.12 0,0 z\",\n                        \"department-42\" : \"m 397.37,318.49 c -1.6,0.83 -3.4,1.29 -4.64,2.21 -1.3,0.59 1.02,2.59 0.48,3.98 0.61,1.85 -0.41,4.23 1.11,6.23 -1.61,2.5 2.37,7.25 -2.15,7.3 -1.09,-0.11 -1.49,1.09 -2.88,0.34 -2.32,2.56 2.22,3.36 1.74,5.81 -1.98,1.61 -0.24,4.65 -2.31,6.15 1.69,0.49 1.3,2.13 2.33,2.91 2.23,1.34 1.14,4.92 3.25,6.83 1.78,1.97 5.01,2.91 6.17,5.68 -1.24,2.45 2.85,3.93 0.67,5.95 0.89,3.06 -5.47,3.2 -3.23,7.04 0.42,3.41 2.25,-3.4 4.17,-0.43 0.87,1.44 1.19,2.02 2.38,0.77 1.23,1.18 1.39,0.75 2.25,-0.33 1.05,-0.89 3.38,0.13 2.65,-1.8 2.25,-0.56 4.93,-0.17 6.2,1.72 1.74,-1.96 5.45,1.48 2.47,2.65 0.55,1.23 1.98,1.3 0.84,2.91 0.86,2.54 3.62,-1.67 4.48,1.3 1.58,2.36 4.9,0.89 6.79,-0.08 -1.25,-1.91 1.2,-3.4 2.26,-5.02 1.49,-1.32 5.89,-1.48 4.47,-4.32 -0.52,-1.74 0.97,-3.48 -0.58,-5.25 -0.48,-1.69 -3.61,1.7 -3.93,-1.3 0.42,-2.1 -0.24,-3.68 -1.93,-4.86 -1.43,0.06 -2.67,-1.02 -4.29,-0.14 -2.32,-0.62 -2.91,-2.86 -5.1,-4.24 -1.42,-1.8 -2.51,-3.8 -0.78,-6.03 1.82,-2.31 -3.43,-0.74 -1.14,-3.43 0.94,-1.31 1.04,-3.98 1.15,-5.42 -2.5,-0.01 -3.12,-2.67 -2.32,-4.33 -1.63,-1.26 -2.43,-3.07 -4.07,-4.21 0.9,-0.54 3.97,0.36 2.35,-1.72 -1.31,0.09 -3.3,-2.79 -0.85,-2.47 1.97,-1.74 0.65,-5.53 4.11,-6 0.97,-0.45 2.45,1.37 2.78,-0.77 -0.25,-1.57 -2.38,-2.12 -0.65,-3.5 -1.51,-1.51 -2.16,1.22 -2.41,1.83 -1.97,-0.74 -4.16,3.26 -5.16,1 1.12,-2.05 -1.54,-0.14 -2.23,-1.49 -1.1,1.9 -3.25,0.89 -4.63,-0.3 -2.08,0.61 -5.43,3.53 -6.14,-0.27 -1.61,-0.39 -4.74,-0.44 -2.93,-2.93 0.29,-0.63 0.34,-2.13 -0.72,-1.99 z\",\n                        \"department-69\" : \"m 433.73,316.51 c -1.23,0.46 -2.5,0.15 -2.78,2.07 -0.74,1.45 -2.37,-0.51 -2.67,-1.28 -0.69,1.49 -2.76,2.38 -3.71,0.45 -1.68,-1.33 -4.39,-0.82 -4.01,1.84 -0.71,1.65 0.63,2.41 1.38,3.48 -2.55,0.77 0.51,1.73 0.61,2.71 -0.41,1.66 -1.38,2.06 -2.7,1.09 -2.04,0.63 -3.43,2.17 -3.25,4.46 0.34,2.11 -3.89,1.45 -1.52,3.28 0.64,0.85 2.57,0.6 1.5,2.34 -0.59,0.49 -3.83,-0.49 -1.93,0.9 1.83,0.38 1.7,2.77 3.5,3.41 0.3,1.24 -1.23,2.13 0.17,3.34 0.85,1.23 3.47,0.4 1.96,2.6 -0.03,1.87 -0.27,3.49 -1.48,4.83 0.06,1.49 3.29,0.29 1.61,2.31 -1.06,1.85 -1.32,4.02 0.45,5.41 1.27,1.35 2.68,3.31 4.18,4.13 1.51,1.5 3.36,-0.41 4.88,1.05 1.7,-0.73 1.49,2.06 2.91,2.19 -1.19,1.71 0.21,5.2 2.42,3.21 1.24,-1.16 2.04,4.15 2.96,1.45 1.23,-1.41 3.83,-2.33 3.98,-4.32 -1.76,-0.7 -2.47,-2.54 -4.09,-3.51 1.84,-0.94 3.53,1.28 4.58,-0.77 1.51,-1.17 4.45,-0.14 5.27,-1.51 0.95,-0.25 2.74,0.97 2.03,-1.03 1.24,-1.85 2.79,-4.63 5.26,-4.54 0.24,-2.22 -3.33,-1.77 -3.23,-3.97 -1.59,-0.5 -1.14,-2.19 0.43,-1.77 0.7,-2.69 -4,-0.18 -5.55,-0.99 -1.61,0.21 -2.66,0.21 -2.4,-1.73 -0.63,-1.95 -1.32,-4.61 -3.64,-4.95 -0.96,0.68 -1.86,1.05 -1.38,-0.57 -0.83,-1.37 -2.55,-0.91 -3.49,-1.92 2.14,-2.03 -0.39,-5.26 0.95,-7.43 1.04,-0.99 -1.1,-2.32 0.59,-3.24 1.49,-1.45 2.32,-4.9 -0.84,-4.45 -2.61,-1.01 0.89,-5.07 -2.78,-5.24 -1.21,-1.33 2.19,-1.14 0.43,-2.68 -0.12,-0.26 -0.3,-0.58 -0.61,-0.66 z\",\n                        \"department-43\" : \"m 379.31,374.73 c -1.62,2.39 -4.9,1.8 -6.71,0.33 -0.7,1.72 -0.87,1.21 -1.91,0.1 -0.8,1.98 -3.58,1.56 -4.38,3.23 -1.25,1.09 -2.57,1.35 -4.33,1.17 0.74,1.5 -1.58,1.78 -0.04,2.79 -2.08,1.77 1.79,1.15 2.36,1.2 -0.13,1.97 3.13,-0.54 2.89,1.98 -0.29,1.8 0.97,2.96 2.14,3.73 -0.86,2.28 -0.05,5.34 2.48,5.9 2.93,0.43 -0.37,2.07 -1.36,0.74 -1.49,0.56 1.82,1.51 0.26,2.94 -1.01,2.64 2.59,2.31 2.97,4.1 -2.04,1.24 0.26,1.73 1.03,2.74 1.8,0.69 0.7,3.92 2.11,5.44 0.56,1.74 1.53,5.67 3.68,3.09 2.13,0.18 4,-0.58 3.52,-3.06 1.72,-1.57 4.47,0.99 3.25,2.73 2.03,-0.35 4.24,-0.91 4.56,1.81 1.6,0.42 1.42,3.2 3.32,1.95 -0.31,0.86 -0.01,2.7 1.4,1.48 3.08,-0.04 2.22,-4.19 4.35,-5.07 0.8,1.72 0.74,-0.65 2.16,-0.3 0.91,-0.43 0.22,-3.47 2.51,-2.52 2.14,-0.66 5.33,0.63 5.55,-2.64 1.54,-1.36 1.15,-4.48 3.81,-3.54 1.57,0.05 2.24,-1.12 0.99,-2.15 -1.14,-2.94 5.69,-1.67 3.23,-3.83 -1.6,-1.11 -0.01,-3.44 1.47,-3.61 -1.01,-0.84 -1.65,-2.84 0.52,-2.06 0.75,0.25 1.93,2.57 1.79,0.63 -0.57,-2.5 2.93,-4.77 1.26,-7.19 -1.2,-1.98 -2.64,-2.48 -4.48,-1.26 -2.08,-0.82 0.53,-3 -1.95,-3.68 1.6,-1.09 1.44,-3.36 -0.89,-3.47 -2.17,2.19 -2.9,-2.58 -5.24,-0.98 -1.45,-1.18 -2.23,0.2 -2.36,1.14 -1.72,-0.24 -2.79,0.8 -3.72,1.87 -0.74,-1.86 -1.9,-0.59 -2.28,0.4 -0.52,-2.16 -2.78,-4.05 -4.23,-1.53 -0.3,1.52 -1.03,1.38 -1.49,0.05 -2.13,0.67 -3.37,-3.95 -4.67,-1.3 0.12,2.86 -4.25,0.82 -5.13,-0.4 -0.84,1.48 -2.99,4.23 -4.08,1.09 -0.06,-2.97 -3.34,-1.73 -4.39,-4.01 z\",\n                        \"department-07\" : \"m 436.62,378.68 c -2.11,1.19 -5.05,1.82 -5.73,4.31 -0.61,0.74 -1.7,1.47 -0.63,2.83 -1.48,1.55 -5.39,0.21 -5.65,3.05 -0.4,2.17 -2.13,4.1 -1.51,6.11 -0.82,1.35 -2.2,-3.55 -3.34,-0.83 2.87,1.6 -1.37,1.64 -1.06,3.7 -0.07,1.01 2.58,2.11 0.3,2.78 -2.43,-0.04 -3.73,1.92 -2.22,3.92 -1.62,1.35 -4.39,-0.37 -4.36,2.53 -1.51,1.8 -1.89,5.12 -5.04,3.9 -1.64,0.68 -4.72,-0.35 -3.54,2.75 -1.69,0.44 -2.07,1.93 -3.57,0.7 -0.65,2.39 -1.67,4.38 -3.7,5.18 0.05,1.23 -0.23,2.66 0.56,3.58 -0.09,2.42 0.91,5.06 1.8,7.31 3.3,1.24 2.04,5.97 4.07,8.24 1.96,0.49 1.37,2.56 2.59,3.64 -1.74,0.94 0.2,3.57 -1,5.13 1.45,0.08 4.13,-2.2 4.71,0.49 2.27,-0.88 3.84,4.84 5.98,2.4 0.11,-2.69 3.06,-5.02 5.54,-4.01 -0.84,1.71 0.49,4.93 2.22,2.69 -1.12,-4.19 4.37,-2.87 5.2,-0.35 2.07,1.28 5.06,2.67 3.99,-1.18 -0.44,-2.49 0.5,-4.84 0.92,-7.23 2.57,-1.67 0.05,-4.72 1.41,-6.94 -1.34,-2.75 2.73,-3.36 2.63,-6.07 2.5,-3.08 -0.98,-6.81 0.47,-10.07 2,-1.59 2.83,-4.11 4.16,-6.22 -0.81,-2.28 2.55,-4.4 -0.11,-6.44 -1.37,-1.98 -0.41,-4.12 -0.17,-5.92 -1.82,-0.69 -0.96,-3.19 -2.25,-4.49 1.8,-2.26 -0.83,-5.08 0.05,-7.93 1.49,-3.08 -3.02,-4.17 -1.77,-7.12 l -0.36,-0.33 -0.59,-0.1 0,0 z\",\n                        \"department-26\" : \"m 448.07,380.12 c -2.89,1.17 -5.09,3.5 -8.19,2.69 -0.39,2.66 -1.05,6.79 0.49,9.42 -1.96,1.97 0.32,3.64 0.34,5.76 2.35,1.37 -0.99,4.81 1.33,6.93 2.06,2.38 -0.62,5.13 -0.81,7.77 -1.22,2.58 -4.32,4.41 -3.69,7.71 1.66,3.46 0.06,6.59 -1.3,9.7 -3.02,0.93 -0.83,4.24 -2.03,6.3 0.95,3.33 -2.55,6.12 -1.92,9.81 1.2,3.03 7.51,-0.99 7.1,4.18 0.14,2.04 0.67,4.67 2.58,1.79 2.97,-0.92 6.04,-2.27 9.06,-3.52 1.12,3.67 4.14,-0.81 5.13,-0.14 -0.85,1.68 -0.59,3.54 -0.5,5.19 1.36,1.14 3.35,1.14 4.16,-0.1 1.72,1.86 4.28,0.89 5.95,1.95 0.03,1.94 0.09,3.52 2.41,3.44 1.06,4.04 4.77,0.96 6.47,-0.43 -1.58,-2.47 1.9,-2.75 3,-1.1 1.64,-1.37 2.06,-2.86 1.41,-5.21 1.53,-2.36 -2.87,-0.24 -1.73,-2.96 -1.59,-0.67 -0.77,-1.18 -0.59,-2.32 -2.51,0.48 -4.35,-1.04 -6.35,-0.89 -1.23,-1.45 -2.87,-1.53 -2.12,-3.69 -1.62,-1.67 -0.01,-2.82 1.69,-1.61 2.12,-0.83 -1.87,-1.85 -0.65,-3.64 -0.28,-2.93 4.33,0.48 6.05,0.59 1.73,0.39 1.15,-2.66 3.01,-2.35 -1.71,-1.67 -3.84,-2.97 -1.6,-5.43 1.79,-1.45 -0.55,-5.71 2.99,-3.98 1.94,0.82 3.33,-0.86 4.9,-1.06 1.29,-0.88 2.08,-3.19 -0.35,-2.44 -2.24,0.57 -3.91,-2.09 -6.41,-1.58 -1.16,-1.43 -2.84,-3.52 -4.34,-3.81 0.14,1.78 -6.09,-0.53 -3.44,-2.33 -1.37,-2.79 0.85,-6.84 0.11,-10.1 0.96,-2.47 -1.42,-5.35 0.09,-7.37 -2.07,0.93 -4.59,4.84 -6.88,1.6 -1.84,0.62 -4.04,-0.31 -5.88,-1.61 -1.29,0.02 -2.1,2.02 -3.13,0.34 2.95,-1.62 2.73,-5.57 1.54,-8.29 2.1,-1.71 -0.25,-3.63 -2.12,-2.9 0.27,-1.74 0.99,-4.37 -1.59,-2.47 -1.31,0.06 -1.04,-2.86 -3.02,-2.37 -0.42,-0.45 -0.36,-1.52 -1.19,-1.46 z m -1.27,60.35 c 2.68,0.18 1.93,3.2 4.79,3.14 -1.88,1.51 -2.98,3.63 -4.06,5.91 -1.76,-1.35 -5.66,0.15 -4.33,-3.15 -1.66,-0.66 1.47,-2.81 1.37,-4.36 0.67,-0.62 1.73,-0.72 2.23,-1.54 z\",\n                        \"department-84\" : \"m 446.86,440.69 c -1.95,0.68 -2.59,2.23 -3.24,3.95 -1.54,1.08 0.24,1.84 -0.38,3.25 0.79,1.16 2.95,0.74 4.3,1.12 1.33,-1.76 1.41,-4.26 3.76,-4.92 -0.23,-0.92 -2.69,-0.73 -2.57,-2.42 -0.66,-0.27 -1.12,-0.97 -1.86,-0.99 z m -10.7,6.69 c -1.75,0.63 -4.36,-0.72 -3.75,2.23 -0.47,1.96 1.22,3.5 1.32,5.13 2.22,-0.26 1.8,3.29 1.6,4.89 -0.71,1.78 -0.16,4.41 1.97,3.57 1.39,1.79 2.8,3.83 3.94,5.76 0.11,1.52 -2.28,0.28 -1.54,2.26 -0.27,1.54 -4.74,2.54 -1.78,2.92 1.98,0.36 4.26,0.33 5.81,1.82 2.69,0.61 4.43,2.7 6.08,4.74 0.55,2.14 2.45,3.17 4.31,4.09 2.3,2.43 5.12,0.03 7.83,1.23 2.38,1.21 4.48,2.96 6.96,4.03 2.69,1.26 6.11,1.9 8.79,0.34 1.35,-1.61 3.7,-0.97 4.73,-3.09 0.97,-1.51 -1.94,-2.24 -1.96,-3.86 -1.56,-1.86 -3.42,-4.41 -6.24,-2.8 -2.07,0.95 -0.48,-2.95 0.61,-3.43 0.51,-1.33 1.55,-2.66 -0.1,-3.23 -0.29,-2.08 -4.3,-0.54 -3.06,-3.3 0.45,-2.01 1.86,-3.87 1.45,-6.01 -1.1,0.12 -2.63,0.07 -2.14,-1.74 0.53,-2.35 -2.66,-1.28 -2.71,-3.51 -1.05,-0.88 -3.35,-0.4 -2.48,-2.73 -0.01,-3.12 -4.03,-0.26 -5.3,-2.66 -1.51,-1.06 -0.98,1.74 -2.66,0.68 -2.01,-0.15 -3.06,-1.35 -2.27,-3.12 -1.69,-0.64 1.81,-3.73 -0.28,-2.95 -1.07,2.14 -3.56,1.91 -4.6,0.21 -2.41,0.78 -4.55,2.65 -7.11,2.79 -1.53,-0.33 -4,4.19 -3.94,0.55 -0.37,-2.16 -0.51,-5.06 -3.51,-4.81 z\",\n                        \"department-13\" : \"m 436.6,474.08 c -0.74,1.85 -4.74,2.73 -4.06,4.51 1.26,0.66 -1.41,1.72 -0.12,3.06 0.08,2.7 -2.74,5.11 -1.37,7.86 -2.28,-0.28 -6.4,-2.34 -7.04,1.21 -2.02,1.17 -2.34,4.33 0.25,4.07 -0.26,2.18 -2.99,1.15 -3.24,3.2 -2.53,0.88 -3.65,1.48 -5.33,3.13 -3.12,0.45 -3.32,4.69 0.25,3.69 2.78,0.47 5.55,1.05 8.35,0.35 2.37,-0.45 7.29,1.42 4.55,4.28 -0.6,3.55 5.03,2.05 7.33,2.58 1.71,0.43 5.71,0.01 2.7,-2.11 -3.88,-1.35 -2.85,-5.16 -3.05,-8.31 -0.04,-1.21 -2.55,-5.59 -0.42,-2.89 1.89,2.36 1,5.34 0.95,8.05 0.88,2.13 3.62,3.05 5.46,4.22 1.53,-0.81 -2.25,-2.45 0.5,-3.11 1.91,-1.46 4.03,-0.52 5.49,0.58 3.35,0.39 4.55,-4.15 1.3,-5.2 -0.68,-1.48 -0.16,-6.09 1.79,-3.06 2.23,-0.56 2.91,0.56 2.79,2.29 1.26,2.1 3.09,1.09 4.71,0.38 1.06,3.09 -3.48,5.94 -6.44,5.14 -4.78,-0.48 -3.49,6.19 0.68,5.18 2.9,-0.06 6.07,0.58 8.6,-1.26 3.09,-1.75 3.91,2.83 3.27,4.72 2.03,1.28 -2.35,4.61 1.58,4.55 2.59,-0.26 5.17,0.78 7.33,0.32 0.97,2.95 3.72,1.97 5.67,1.14 -0.33,-3.01 1.95,-4.41 4.07,-5.87 -0.58,-2.14 -2.28,-2.58 -3.96,-3.03 2.56,-1.22 -1.49,-6.49 2.6,-5.65 1.54,0.73 3.39,-0.95 1.08,-1.75 -1.32,-1.96 -3.23,-3.39 -1.84,-5.73 2.26,-2.81 -4.73,-2.76 -1.41,-4.42 -0.82,-3.37 2.37,-4.88 5.13,-5.19 1.46,-1.69 -2.03,-5.66 -3.21,-2.42 -1.87,0.81 -3.79,1.87 -5.79,2.74 -4.96,0.73 -9.29,-2.44 -13.26,-4.94 -3.21,-1.31 -6.53,0.84 -9.27,-1.96 -2.79,-0.81 -2.96,-3.66 -4.98,-5.35 -1.7,-2.34 -4.64,-3.03 -7.08,-4.31 -1.52,-0.14 -3,-0.57 -4.52,-0.71 z\",\n                        \"department-83\" : \"m 517.2,482.16 c -2.21,0.45 -4.51,0.15 -4.56,3.03 -1.71,2.89 -5.34,-0.75 -6.7,-2.47 -3.07,-2.54 -3.41,4.73 -6.6,3.29 -1.58,1.5 -2.96,3.5 -4.46,4.67 -1.25,-1.47 -1.71,-3.25 -3.55,-3.95 0.03,-1.86 -1.87,-1.86 -1.91,-0.09 -1.33,1.02 -2.66,0.95 -3.16,-0.75 -1.91,-1.9 -4.18,0.89 -2.09,2.04 0.53,1.23 1.97,1.94 0.53,3.38 -2.84,-0.21 -5.92,2 -4.84,5.1 -3.44,1.27 3.35,1.25 1.35,3.57 -0.22,1.94 -1.24,3.31 0.74,4.69 0.22,1.73 4.1,2.93 0.81,3.75 -2.63,-1.28 -3.72,1.11 -2.27,3.16 -1.33,1.63 -0.65,2.88 1.29,2.7 1.09,1.33 2.34,3.31 -0.22,3.83 -2.89,1.3 -2.33,4.54 -1.48,6.82 1.05,1.11 2.71,1.01 3.71,1.52 -0.45,1.28 3.17,1.21 0.61,2.02 -2.2,1.64 1.53,2.03 2.31,3.24 1.87,0.49 2.01,-2.69 4.02,-1.64 0.25,-1.17 -3.62,-2.32 -0.77,-2.94 1.5,-0.75 1.25,1.72 3.11,0.9 1.98,-0.44 2.88,1.82 4.97,0.72 2.49,0.17 1.79,3.18 -0.25,3.1 1.03,0.17 3.75,1.02 4.22,-0.22 -1.87,-1.01 -0.43,-5.47 2.18,-4.51 2.27,-1.02 4.3,0.74 5.47,2.2 2.95,0.7 -0.7,-3.95 2.56,-4.14 1.82,-1.17 4.32,-0.11 5.81,-1.82 1.19,-1.87 3.53,-0.69 3.91,0.87 1.83,-0.26 1.02,-2.97 3.25,-2.97 -1.94,-1.52 0.52,-2.56 0.71,-4.09 -0.88,-1.35 -6.14,0.84 -4.2,-1.29 1.98,-0.49 3.13,-1.3 3.41,-3.27 3.09,-0.38 1.58,-4.33 3.42,-5.76 2.02,1.51 4.49,0.53 6.29,-0.38 1.97,-1.45 2.07,-3.69 -0.21,-4.86 0.39,-1.48 -0.82,-2.76 0.73,-4.13 0.32,-1.33 0.43,-3.31 -1.68,-2.51 -2.08,-0.91 -4.86,-2.77 -4.6,-5.2 1.21,-2.45 -1.26,-3.59 -2.82,-4.44 -1.3,-0.4 -2.5,0.43 -2.84,-1.45 -0.36,-2.95 -3.06,-1.75 -4.46,-0.37 0.04,-0.84 -0.83,-2.43 -1.72,-1.38 z\",\n                        \"department-06\" : \"m 534.65,445.17 c -2.26,1.07 -5.06,2.58 -4.36,5.66 -3,-0.21 -3.04,3.43 -4.06,5.54 -1.08,2.46 0.95,4.86 2.25,6.92 -1.14,3.22 2.36,4.62 4.05,6.69 0.63,2.61 3.53,3.37 4.77,5.63 -2.57,2.29 -4.92,-3.17 -6.86,-0.03 -0.74,2.32 -3.13,1.4 -4.56,1.36 1.15,1.61 -2.67,2.88 0.34,3.69 1.19,1.89 -4.95,1.17 -2.32,3.78 0.53,1.35 2.49,-0.04 3.3,1.63 2.89,-0.16 1.89,3.58 2.03,5.2 1.45,1.97 3.65,3.89 6.12,3.69 1.22,2.02 -1.58,4.04 -0.48,6.02 -0.26,2.6 3.76,2.43 2.74,-0.52 1.75,-2.03 4.78,-1.82 7.05,-2.83 2.15,2.34 0.79,-2.94 1.42,-4.1 0.35,-2.64 3.85,-1.42 4.44,-3.92 1.43,-0.64 4.04,-1.22 4.41,0.38 0.69,-1.18 0.32,-2.51 2.45,-2.28 -0.13,-1.76 1.58,-4.07 3.07,-2.16 1.7,0.06 1.19,-2.66 3.34,-2.27 -0.27,-2.4 -3,-5.81 0.3,-7.3 1.54,-1.45 0.99,-4.2 3.51,-4.76 2.78,-1.39 1.89,-4.43 4.17,-6.12 1.59,-2.77 -3.27,-4.24 -1.5,-7.3 -1.21,-2.71 -2.61,1.55 -4.47,0.73 -2.22,0.84 -4.68,1.32 -6.76,2.38 -2.04,0.2 -3.62,-0.51 -4.81,-1.86 -2.43,0.52 -3.44,-1.96 -5.53,-2.49 -1.15,-2.34 -3.58,-0.83 -4.96,-2.82 -1.54,-1.59 -4.78,0.61 -4.95,-2.66 -1.4,-1.9 -2.37,-3.95 -3.93,-5.85 l -0.23,-0.02 -1.8e-4,10e-5 z\",\n                        \"department-04\" : \"m 536.03,425.47 c -1.91,1.96 -3.88,3.46 -6.49,4.44 -1.02,2.88 -4.75,3.12 -5.32,6.34 -1.11,1.83 -1.21,3.9 -4.02,3.07 -3.01,-0.06 -6.66,-0.3 -8.11,-3.08 -0.64,-1.8 -3.43,-1.98 -2.19,0.22 -0.26,3.25 -2.7,-0.14 -4.23,1.68 -1.44,0.61 2.06,5.8 -1.43,5.09 -2.1,-2.16 -2.71,-5.63 -6.09,-5.69 -0.87,3.33 -6.54,3.63 -7.12,7.81 -0.96,1.13 -2.01,2.66 -0.4,3.1 -0.61,1.4 0.72,5.52 -1.66,2.94 -0.44,-1.65 -2.49,-3.59 -2.83,-0.6 1.02,1.86 2.62,3.82 3.95,5.12 -2.91,0.83 -6.3,-2.29 -9.28,0.12 -0.78,0.38 -3.94,0.37 -2.37,1.8 0.52,0.59 -1.17,0.62 -1.27,-0.25 -1.21,-2.36 -3.58,-0.6 -2.43,1.22 -2.05,0.82 -5.12,3.55 -2.92,5.69 3.34,-0.23 0.15,4.71 -0.09,6.55 -0.21,2.32 3.26,0.85 3.55,3.17 2.24,1.52 -3.59,5.18 -1.33,6.48 2.81,-2.13 5.06,0.73 6.7,2.59 0.57,1.46 2.26,4.38 3.61,1.7 2.13,0.13 4.41,4.24 5.38,0.42 1.94,-1.62 1.55,2.48 3.59,2.29 0.43,1.7 2.31,4.04 2.93,1.23 2.03,-0.76 2.24,-3.96 4.52,-2.9 1.73,-1.32 3.93,-6.5 5.92,-2.58 1.76,2.61 6.67,4.01 6.46,-0.53 1.66,-0.48 3.88,-1.21 5.41,-0.9 0.99,2.9 3.19,-2.27 4.59,0.48 1.62,-0.3 5.25,-1.56 1.66,-2.44 0.5,-1.52 2.15,-2.44 0.07,-3.65 2.45,0.82 5.17,0.99 6.43,-1.88 1.98,-0.91 4.27,3.34 5.6,0.53 -2.39,-1.94 -3.94,-3.66 -5.54,-6.13 -1.97,-1.55 -3.7,-3.16 -3.01,-5.85 -1.63,-2.1 -3.46,-4.86 -1.89,-7.35 0.29,-2.57 2.02,-4.78 3.68,-5.75 -0.2,-4 5.64,-3.6 4.5,-7.78 -0.28,-2.01 3.78,-1.57 1.15,-3.33 -2.21,-1.59 -4,-5.51 -0.76,-7.08 1.56,-1.02 4.77,-6.03 1.11,-6.32 z\",\n                        \"department-05\" : \"m 505.98,394.66 c -0.92,0.25 -1.63,1.24 -1.1,2.16 0.19,0.48 0.58,1.51 -0.28,1.51 -1.03,0.5 -0.62,1.96 -1.08,2.79 -0.5,0.85 0.81,1.35 1.44,1.52 1.22,0.46 2.5,-0.16 3.7,-0.25 0.54,0.61 -0.39,1.36 0.2,1.99 0.46,0.55 -0.24,1.49 0.61,1.76 1.28,0.11 1.04,1.22 0.99,2.19 0.04,1.33 -0.36,2.63 -0.12,3.94 -0.53,0.79 -1.69,0.39 -2,-0.4 -0.51,-1.19 -2.09,-0.47 -2.63,0.32 -1,0.97 -2.33,-0.4 -3.46,0.21 -0.85,0.38 -1.73,-1.03 -2.42,-0.12 -0.98,1 -2.08,1.88 -3.19,2.74 -0.6,-0.52 -1.36,-2.29 -1.99,-0.92 -0.19,0.45 -0.47,0.63 -0.95,0.63 -0.5,0.26 -1.64,0.37 -1.59,1.05 0.28,0.44 1.46,0.83 1.02,1.47 -0.54,0.3 -1.13,0.65 -1.29,1.26 -0.7,-0.05 -1.3,0.89 -1.97,0.42 -0.72,-0.21 -1.09,0.98 -1.85,0.43 -0.58,0.09 -1.28,-0.82 -1.74,-0.36 0.25,1.1 -0.94,2.04 -0.76,3.1 0.52,0.18 0.81,0.66 0.78,1.23 -0.53,0.61 -1.46,0.99 -1.58,1.94 -0.18,0.9 -1.25,0.06 -1.79,0.32 -0.68,0.37 -1.24,1.41 -2.12,0.79 -0.93,-0.21 -2.04,-0.85 -2.95,-0.39 -0.57,0.89 0.83,2.18 -0.26,2.82 -0.65,0.74 -0.7,1.84 -1.37,2.59 -0.33,0.63 -0.72,1.79 0.31,1.98 1.01,0.26 1.61,1.36 2.24,2.13 -0.07,0.59 -1.06,0.18 -1.47,0.37 -0.6,0.27 -0.26,1.22 -0.74,1.67 -0.29,0.65 -1.01,0.59 -1.49,0.18 -0.57,-0.34 -1.27,-0.05 -1.74,-0.61 -0.9,-0.62 -2,-0.67 -3.03,-0.83 -0.44,-0.35 -1.26,-0.9 -0.84,0.18 0.34,0.85 -0.18,1.94 0.35,2.71 0.46,0.27 1.64,0.66 1.06,1.38 -0.5,0.81 -1.41,0.3 -2.05,-0.05 -0.52,-0.37 -1.25,0.09 -0.87,0.7 0.33,0.77 0.86,1.66 0.62,2.5 -0.66,0.38 0.12,0.97 0.62,0.79 0.61,0.08 0.48,1.09 1.17,1.15 0.27,0.47 0.79,0.78 1.25,0.32 0.66,-0.57 1.26,0.29 1.64,0.72 1.26,0.36 2.77,-0.21 3.93,0.31 -0.15,0.66 -1.33,1.39 -0.16,1.75 0.4,0.17 0.78,0.55 0.44,0.97 -0.13,0.75 0.67,1.6 1.38,1.06 0.44,-0.36 1.29,0.39 0.73,0.76 -0.45,0.57 -0.47,1.41 -0.01,1.94 -0.06,0.96 -0.14,2.01 0.32,2.89 0.74,-0.36 1.48,-0.84 2.32,-1.03 0.89,-0.54 2.04,-0.3 3.03,-0.47 1.36,0.7 2.9,1.36 4.48,1.28 0.82,-0.57 -0.52,-1.06 -0.97,-1.25 -0.83,-0.92 -1,-2.37 -2.18,-3.02 -0.89,-0.61 -0.47,-1.72 -0.01,-2.44 0.2,-0.82 1.38,-0.21 1.78,0.12 0.44,0.5 0.07,1.39 0.76,1.79 0.27,0.34 1.29,1.11 1.39,0.28 -0.46,-0.7 -0.4,-1.72 0.04,-2.4 0.24,-0.63 -0.28,-0.96 -0.8,-0.99 -0.4,-0.58 -0.19,-1.66 0.53,-1.93 1.11,-0.98 1.03,-2.64 1.93,-3.7 0.84,-0.83 2.18,-1.02 2.91,-1.96 0.3,-0.69 1.08,-1.23 1.8,-1.37 0.77,0.34 0.76,-0.99 0.72,-1.47 0.2,-0.8 1.42,-0.33 1.96,-0.19 0.77,0.29 1.87,0.6 1.76,1.64 -0.03,0.5 0.41,0.7 0.8,0.64 0.65,1.23 1.63,2.21 2.33,3.38 0.67,0.53 1.08,-0.73 1.28,-1.18 0.53,-1.39 -0.98,-2.61 -0.83,-3.89 0.95,-0.06 1.68,-0.79 2.53,-1.06 0.55,0.33 1.53,1.41 2.02,0.36 0.44,-0.73 0.48,-1.61 -0.08,-2.27 0.17,-0.42 0.83,-0.77 1.24,-0.86 0.91,1 1.94,1.96 2.46,3.23 0.51,0.3 1.22,-0.11 1.7,0.41 0.56,0.61 1.25,1.09 2.14,1 1.98,0.14 3.96,0.2 5.94,0.29 0.53,-0.84 0.08,-2.27 1.05,-2.94 1.09,-0.75 1.13,-2.18 1.48,-3.28 1.39,0.19 2.51,-0.88 3.23,-1.94 0.77,-0.23 0.49,-1.3 1.27,-1.53 0.82,-0.72 1.93,-0.86 2.92,-1.25 0.49,-0.42 0.51,-1.23 1.32,-1.26 0.83,-0.36 1.14,-1.4 1.93,-1.78 0.77,0.27 1.79,0.29 2.08,-0.66 0.66,-1.38 2.4,-1.81 3.71,-1.06 0.39,0.18 1.29,0.5 1.12,-0.27 0.09,-1.44 -0.99,-2.46 -1.92,-3.38 -0.16,-1.25 0.2,-2.81 -0.7,-3.82 0.26,-0.63 1.23,-1.27 0.5,-1.95 -0.48,-0.56 -0.7,-1.27 -1.5,-1.47 -0.9,-0.29 -1.99,-1.36 -2.93,-0.65 -1.03,0.93 -2.61,0.14 -3.63,-0.46 -1.39,-1.22 -3.06,-2.05 -4.52,-3.16 -0.14,-0.64 0.04,-1.36 -0.18,-2.01 0.26,-0.67 0.64,-1.39 0.32,-2.14 -0.46,-0.77 -0.27,-1.65 -0.34,-2.48 -0.67,-1.47 -2.82,-0.12 -3.68,-1.29 -0.42,-1.05 0.19,-2.49 -0.93,-3.24 -0.45,-0.58 -0.89,-1.29 -0.84,-2.02 -0.58,-0.55 -1.68,-0.52 -2.38,-0.21 -0.4,0.9 -1.61,1.62 -2.44,0.8 -0.83,-0.16 -1.61,0.86 -1.3,1.66 0.16,0.65 0.15,1.68 -0.74,1.69 -0.9,0.39 -1.54,-0.53 -2.43,-0.47 -0.85,-0.07 -1.72,-0.21 -2.49,-0.62 0.67,-1.13 -0.23,-2.74 -1.37,-3.11 -0.83,0.45 -1.99,0.92 -2.79,0.12 -0.24,-0.12 -0.29,-0.52 -0.63,-0.43 z\",\n                        \"department-38\" : \"m 464.21,344.5 c -2.79,1.9 -2.68,8.48 -7.27,6.99 -0.9,-2.78 -3.83,-2.24 -5.03,-0.76 -2.02,0.29 1.51,1.68 1.08,3.08 2.47,0.08 3.5,3.16 0.44,2.72 -1.73,1.6 -3.23,3.88 -3.85,5.57 -1.57,-1.3 -1.06,1.72 -2.92,0.29 -3.28,-0.47 -4.55,3.17 -7.48,1.48 -1.5,1.31 5.74,3.47 2.07,5.5 -2.26,2.06 -5.1,3.74 -4.23,6.93 0.77,2.57 -0.06,8.04 4.48,6.03 2.27,2 6.34,-5.1 8.45,-0.76 1.77,0.21 1.71,3.96 3.93,1.45 1.68,0.13 -1.09,4.61 1.72,3.03 1.9,0.92 2.02,2.4 0.5,3.24 1.61,2.88 0.73,6.17 -0.85,8.65 1.08,-0.16 3.1,-1.79 4.37,0.45 2.36,0.7 4.24,0.15 6.23,1.33 0.84,-0.27 3.02,-1.03 3.81,-2.77 2.64,0.63 -1.49,2.67 0.72,4.47 0.38,3.59 -0.09,7.56 -0.56,11.3 0.4,1.45 0.41,2.4 -0.01,3.62 1.24,0.79 4,2.16 3.74,0.13 2.61,1.83 4.3,5.05 7.54,4.72 2.17,2.94 5.3,0.26 5.21,-2.58 1.66,1.44 8.14,-0.42 5.75,-2.57 -0.07,-1 2.61,-2.26 3.54,-2.4 2.26,2.99 3.89,-3.83 6.67,-1.32 2.19,0.23 3.45,-0.22 5.31,-1.27 0.97,1.39 3.24,2.32 2.54,-0.45 1.1,-3.23 -1.77,-5.43 -1.86,-8.01 -3.37,1.84 -6.82,-1.82 -3.61,-4.41 -0.13,-1.84 0.52,-3.31 1.32,-4.86 -1.82,-0.13 -3.26,-1.51 -5.13,-0.74 1.43,-2.69 -1.8,-4.98 -0.71,-7.76 -0.38,-2.56 4.12,-3.93 2.03,-6.04 0.5,-3.14 -3.24,-5.89 -6.15,-5.13 -1.66,-1.14 -3.77,-5.23 -5.46,-1.87 -0.31,1.87 -0.63,3.21 -0.4,4.62 -2.15,1.23 -4.77,-3.87 -7.68,-2.52 -0.95,-2.94 -2.79,-6.19 -4.33,-9.02 -1.66,-2.41 -2.31,-5.84 -4.73,-7.23 -0.04,-3.77 -5.4,-5.53 -5.81,-9.3 0.88,-1.39 -2.2,-3.36 -3.39,-3.83 z\",\n                        \"department-73\" : \"m 486.16,340.96 c -0.45,0.45 0.31,1.19 0.03,1.77 -0.43,2.29 -1.49,4.41 -1.88,6.69 -0.26,1.38 -0.01,2.88 -0.3,4.22 -0.62,0.31 0.02,1.17 -0.58,1.57 -0.45,1.17 -1.58,0.73 -2.55,0.64 -0.84,0.07 0.16,1.14 -0.18,1.7 -0.39,0.69 -1.23,1.27 -0.9,2.19 0.16,0.81 -0.73,0.85 -1.28,0.92 -0.46,0.22 -0.52,0.84 -0.99,1.02 -0.1,0.57 -0.89,1.04 -0.26,1.63 0.76,1.32 2.36,2.45 2.11,4.11 0.23,0.33 0.74,0.34 0.74,0.83 0.84,0.69 0.84,1.99 1.51,2.8 0.86,0.69 -0.26,2.79 1.33,2.79 0.69,-0.42 1.75,-0.43 2.21,0.36 0.86,0.8 2.15,0.9 3.12,1.6 0.57,0.15 0.69,0.71 1.06,1.03 0.59,0.02 1.32,-1.15 0.42,-1.31 -0.57,-0.83 0.26,-1.71 0.62,-2.42 0.32,-0.63 -0.18,-1.37 -0.02,-1.93 0.76,-0.47 1.65,-0.69 2.47,-1.04 0.43,0.56 1.01,1.07 1.58,1.38 0.13,0.76 0.39,1.57 1.25,1.79 0.96,0.51 2.24,-0.49 3,0.51 0.5,0.17 1.21,-0.47 1.46,0.31 0.64,1.59 2.48,2.51 2.66,4.29 -0.29,0.15 -0.79,0.54 -0.21,0.73 0.85,0.23 0.12,1.35 0.11,1.91 -0.05,0.98 -1.42,0.76 -1.63,1.63 -0.67,0.52 -0.97,1.32 -0.71,2.16 0.28,0.8 -0.51,1.41 -0.41,2.16 0.41,0.87 0.74,1.73 1.41,2.45 0.62,1.01 -0.59,1.95 -0.5,2.93 0.52,0.56 1.11,-0.22 1.49,-0.5 0.92,-0.1 1.37,0.91 2.13,1.15 0.63,-0.3 1.62,-0.2 1.66,0.68 -0.1,1.41 1.8,2.18 2.81,1.25 0.65,-0.79 1.23,0.33 1.67,0.84 0.46,0.64 0.68,1.43 0.45,2.15 0.54,0.74 1.75,0.36 2.53,0.62 0.86,0.16 1.92,1 2.66,0.13 0.38,-0.92 -0.65,-2.23 0.57,-2.71 0.35,-0.45 0.85,-0.56 1.27,-0.15 0.94,0.49 1.73,-0.4 2.13,-1.14 0.91,-0.24 1.86,0.12 2.72,0.29 0.81,-0.21 1.62,-0.66 2.1,-1.32 0.99,-0.68 2.46,0.1 3.22,-1.02 0.35,-0.43 0.97,-0.89 1.45,-0.3 0.85,0.52 2.11,0.47 2.52,1.51 0.72,0.63 1.87,0.09 2.61,-0.25 0.41,-0.56 -0.74,-1.63 0.24,-1.82 0.89,-0.31 2.18,-0.09 2.35,-1.31 0.28,-0.94 0.93,-1.7 1.94,-1.85 1,-0.19 1.96,-0.56 2.92,-0.94 0.28,0.29 0.54,1.02 1.07,0.58 0.47,-0.87 0.96,-2.03 2.06,-2.12 0.86,-0.78 0.12,-2.12 -0.06,-3.06 -0.11,-0.72 -1,-1.93 0.07,-2.33 0.68,-0.07 0.41,-0.73 0.59,-1.12 0.98,-0.99 1.63,-2.36 1.9,-3.7 -0.59,-0.97 -1.87,-1.22 -2.71,-1.86 -0.94,-0.95 -0.87,-3.04 -2.54,-3.15 -0.56,-0.01 -0.92,-0.42 -0.89,-0.96 -0.58,-0.7 -1.85,-0.56 -2.18,-1.57 -0.64,-1.44 -0.23,-3.2 -1.06,-4.6 -0.34,-1.1 0.49,-2.08 0.76,-3.02 -0.69,-0.83 -1.62,-1.51 -2.76,-1.31 -0.88,0.14 -0.91,-0.82 -1.25,-1.33 -0.99,-0.62 -2.63,-0.33 -3.11,-1.66 -0.83,-0.95 -1.39,-2.07 -1.33,-3.37 -0.05,-0.49 -0.09,-1.83 -0.91,-1.34 -0.91,0.06 -1.72,0.7 -1.99,1.6 -0.42,0.52 -0.86,1.4 -1.45,1.52 -0.4,-0.17 -1.27,-0.31 -0.7,-0.87 0.23,-0.66 -0.51,-1.2 -0.28,-1.88 -0.34,-0.89 -0.91,-2.04 -1.95,-2.2 -0.89,-0.13 -2.19,0.76 -2.83,-0.15 -0.09,-0.52 -0.37,-0.96 -0.88,-1.06 -0.72,-0.81 -1.07,-2.03 -1.15,-3.07 0.63,0.06 1.62,-0.31 1.26,-1.11 -0.35,-1.05 -1.53,-1.04 -2.36,-1.47 -0.67,-0.01 -0.86,0.94 -1.52,1.08 -0.85,0.88 -1.48,2.09 -1.51,3.29 -0.72,0.95 -0.91,2.24 -1.97,2.95 -0.76,0.61 -1.69,1.28 -1.54,2.39 -0.21,0.67 -0.99,1.04 -1.01,1.82 -0.44,0.97 -0.54,2.37 -1.86,2.41 -1.14,0.38 -2.33,0.53 -3.53,0.54 -0.06,-0.45 0.01,-1.66 -0.76,-1.32 -0.31,0.13 -0.76,0.69 -1.03,0.56 -0.25,-0.91 0.24,-2.16 -0.62,-2.79 -0.14,-0.81 -1.14,-1.57 -1.94,-1.34 -0.21,0.5 -0.78,0.26 -1.03,-0.06 -0.76,0.04 -0.24,1.32 -0.76,1.53 -0.34,-0.65 -1.25,-0.37 -1.8,-0.73 -0.47,-0.07 -0.73,0.7 -1.2,0.25 -0.48,-0.36 -1.21,-0.4 -1.7,-0.51 0.01,-0.61 -0.44,-1.04 -0.93,-1.29 0.04,-0.57 0.55,-1.77 -0.49,-1.68 -0.47,-0.1 -0.19,-0.97 -0.81,-1.05 -0.66,-0.37 -1.22,0.91 -1.76,0.14 -0.38,-0.36 -0.12,-1.3 -0.92,-1.18 -1.02,-0.5 -0.45,-1.96 -0.7,-2.86 -0.23,-1.29 -0.31,-2.65 -0.65,-3.91 -0.34,-0.35 -0.97,-0.38 -1.43,-0.38 z\",\n                        \"department-74\" : \"m 522.73,306.41 c -1.97,0.51 -4.09,-0.11 -6.02,0.54 -1.69,0.88 -2.87,2.78 -4.92,2.88 -1.61,0.19 -3.71,0.06 -4.62,1.7 -1.07,1.16 -2.72,2.21 -2.73,3.97 0.1,0.69 1.48,0.71 0.93,1.55 -0.41,0.84 0.21,1.93 0.9,2.4 0.42,0.09 0.95,-0.58 1.26,0.01 0.37,0.53 0.48,1.32 -0.23,1.62 -1.53,1.19 -3.48,2.08 -4.62,3.7 0.15,0.96 -1.06,1.44 -1.7,1.89 -0.92,0.54 -2.12,0.67 -2.99,-0.02 -0.94,-0.11 -1.74,0.7 -2.72,0.57 -1.73,-0.1 -3.26,0.92 -4.93,1 -0.77,0.2 -1.52,0.85 -1.16,1.71 0.19,0.63 -0.32,1.15 -0.97,1 -0.99,0.19 -1.36,-0.93 -2.04,-1.36 -0.25,0.5 -0.16,1.27 -0.57,1.8 -0.32,1.76 -0.11,3.58 -0.18,5.37 -0.05,1.02 1.4,1.33 1.1,2.4 -0.08,0.89 -0.37,2.18 0.97,1.91 0.75,0.22 0.29,1.37 0.52,1.94 0.31,1.44 0.48,2.91 0.5,4.37 0.07,0.67 0.88,0.58 1.19,0.96 -0.06,0.61 0.65,1.43 1.18,0.8 0.34,-0.42 1.1,-0.12 1.48,0.06 -0.19,0.54 0.13,1.08 0.73,0.94 0.45,0.32 -0.03,1.12 0.02,1.58 0.26,0.43 0.87,0.53 0.99,1.06 0.58,0.39 1.43,1.09 2.13,0.73 0.22,-0.52 0.78,-0.22 1.09,0 0.59,0.21 1.53,0.05 1.32,-0.78 -0.01,-0.66 0.68,-0.27 0.9,0.03 0.57,0.28 0.97,-0.69 1.55,-0.21 0.84,0.25 1.11,1.08 1.58,1.67 0.61,0.22 0.16,1.19 0.32,1.69 -0.08,0.68 0.71,0.6 0.85,0.07 0.5,-0.09 1,0.52 0.86,1.04 0.4,0.69 1.5,0.24 2.16,0.27 0.76,-0.24 1.79,-0.22 2.32,-0.85 0.55,-0.82 0.59,-1.89 1.06,-2.69 0.59,-0.47 1.08,-1.17 0.58,-1.84 1.1,-1.12 2.6,-2.01 3.15,-3.59 0.44,-0.46 0.57,-1.04 0.46,-1.64 0.43,-1.24 1.14,-2.4 2.27,-3.1 0.24,-0.19 0.68,-1.23 1.02,-0.66 0.87,0.56 2.4,0.81 2.5,2.07 0.05,0.67 -0.39,0.98 -1.01,0.85 -0.65,0.38 0.05,1.31 0.13,1.86 0.25,0.92 1.4,1.05 1.58,2.03 0.48,0.87 1.65,0.01 2.41,0.12 0.73,-0.31 1.18,0.28 1.5,0.85 0.45,0.56 1.16,1.11 0.82,1.91 -0.09,0.58 0.7,0.95 0.24,1.52 -0.21,0.76 0.9,0.79 1.18,0.23 0.84,-0.71 0.9,-2.01 2.02,-2.43 1.02,-0.06 1.62,-1 1.61,-1.96 -0.09,-1.02 0.58,-2.66 1.85,-2.26 0.39,0.29 1.11,0.3 0.98,-0.35 0.01,-0.41 0.22,-0.99 0.72,-0.64 1.66,0.72 3.32,-0.42 4.67,-1.3 1.07,-1.02 1.17,-2.69 2.2,-3.72 0.24,-1.07 0.13,-2.38 -0.92,-2.98 -0.31,-0.29 0.4,-0.66 0.03,-1.04 -1.08,-1.72 -2.7,-3.09 -3.82,-4.78 -0.93,-0.47 -1.81,1.29 -2.7,0.56 -0.35,-0.84 0.72,-1.72 0.05,-2.53 0.03,-0.72 1.46,-1.61 0.49,-2.23 -0.76,-0.34 -1.61,-0.31 -2.36,-0.72 -0.84,-0.04 -2.06,-0.19 -2.06,-1.31 0.09,-1.22 0.81,-2.32 0.63,-3.59 0.03,-1.74 2.08,-2.69 2.14,-4.38 -0.61,-2.1 -2.81,-3.32 -3.41,-5.34 0.58,-0.82 1.83,-1.33 1.69,-2.56 0.1,-0.89 0.32,-2.26 -0.88,-2.5 -2.33,-0.82 -4.77,-1.84 -7.27,-1.85 z\",\n                        \"department-71\" : \"m 412,260.36 c -2.93,0.55 -4.26,2.21 -6.96,2.68 -1.28,2.48 2.3,4.5 -0.5,6.99 -1.43,0.66 -3.07,3.09 -0.49,1.44 1.9,1.91 -1.31,5.49 2.35,6.61 2.41,2.48 -3.47,2.49 -1.06,5.02 0.77,3.39 -3.9,1.03 -5.18,3.67 -2.25,1.4 -4.63,2.62 -7.04,3.38 -0.31,-4.58 -4.86,-2.18 -7.6,-2.64 0.33,3.18 3.53,4.95 4.3,8.11 0.37,1.27 1.28,3.31 0.8,5.05 2.56,1.6 5.5,0.03 6.06,3.56 2.3,-0.67 6.83,0.19 5.63,3.81 -1.65,2.24 1.1,6.27 -0.41,7.48 -1.83,-0.26 -2.1,1.92 -4,2.06 1.17,2.28 -1.61,6.17 2.72,5.49 0.93,1.98 2.84,2.96 4.81,1.08 2.24,-1.83 4.53,2.66 6.18,-0.34 0.99,0.81 3.97,-0.12 2.52,2.07 1.82,0.5 3.17,-1.98 5.29,-1.84 0.91,-1.94 0.34,-5.84 2.53,-7.3 2.38,-0.25 4.64,4.02 6.14,0.44 0.69,1.02 2.58,2.86 3.18,0.21 1.5,-2.57 5.41,0.79 2.63,2.19 4.35,0.26 -0.17,5.73 3.79,5.35 1.63,-2.32 1.8,-5.62 3.02,-8.28 1.07,-3.54 2,-7.12 3.47,-10.47 -0.24,-4.22 3.76,-4.44 6.12,-2.01 2.73,0.91 5.4,-3.24 7.43,-0.63 0.71,4.46 5.42,3.07 8.23,1.96 3.48,-0.33 -0.18,-2.98 -1.2,-3.64 -0.19,-2.06 -0.14,-4 2.12,-4.12 -1.13,-2.06 2.54,-2.7 0.55,-4.54 0.27,-1.18 -1.25,-2.07 -0.87,-3.37 -1.29,-1.52 -2.14,-2.53 -0.54,-4.28 -1.91,-0.7 -4.07,-3.41 -0.68,-3.56 1.47,-0.64 5.77,0.15 2.85,-1.99 -1.77,-0.79 -1.54,-3.02 -3.84,-2.16 -2.27,0.63 -1.51,-5.03 -4.1,-2.86 0.12,-2.06 -1.07,-4.73 -3.5,-2.61 -2.78,0.86 -4.3,2.07 -6.4,-0.46 -1.94,0.4 -2.39,2.11 -4.89,0.86 -2.61,0.33 -5.24,2.44 -8.14,3.19 -1.76,-0.3 -4.71,2.29 -4.23,-1.06 -3.18,-0.15 -5.08,-3.48 -5.63,-5.52 -2.23,0.19 -4.16,-1.65 -6.41,-2.36 0.94,-2.91 -1.62,-1.37 -2.5,-0.96 0.79,-4 -4.82,-1.4 -5.2,-5.1 -0.71,0.24 -0.8,-0.59 -1.34,-0.6 z\",\n                        \"department-03\" : \"m 355.26,283.59 c -2.47,0.46 -4.86,3.44 -6.02,4.72 -1.76,-0.99 -3.8,2.31 -4.59,-0.78 -1.76,0.08 -2.97,3.69 -5.04,3.94 1.97,2.84 -4.43,0.31 -1.55,2.39 0.4,1.42 -1.37,2.94 0.6,3.99 1.55,3.09 -3.65,5.08 -5.37,3.61 -2.24,1.35 -6.48,-0.24 -7.16,3.06 -1.54,1.23 -3.6,4.68 -1.43,6.74 2.23,0.25 1.54,1.18 0.45,2.24 0.46,1.75 3.06,2.36 3.77,1.35 1.79,0.78 0.58,3.48 2.71,2.33 2.32,1.7 3.03,4.85 4.13,7.52 1.59,1.1 1.36,3.94 4.21,3.81 2.2,-0.4 1.29,-4.32 4.06,-4.34 -0.38,-2.36 1.13,-2.81 2.64,-1.17 2.87,2.05 0.78,-4.7 4.25,-3.15 2.6,-0.56 4.31,1.53 2.01,3.27 -0.51,2.53 2.71,1.85 2.18,4.56 1.6,1.64 4.19,2.18 6.12,1.98 0.53,3.71 5.09,1.32 7.41,2.58 2.46,-0.35 4.25,2.07 6.4,-0.15 2.05,-0.87 3.81,1.48 3.14,3.62 2.97,-0.38 6.89,-1.86 7.42,2.51 1.3,0.31 3.13,3.55 3.29,0.55 1.79,-0.98 4.46,0.16 5.67,-2.24 -1.33,-3.25 -0.2,-6.45 -1.49,-9.65 1.17,-1.65 -1.28,-4.71 -0.7,-6.42 1.4,-0.12 2.34,-1.59 4.2,-1.58 1.27,-1.45 2.99,-2.22 4.25,-3.49 2.82,-0.46 -0.34,-5.16 1.28,-7.19 1.51,-3 -3.08,-4.88 -5.16,-3.65 -1.18,-1.3 -1.26,-3.58 -3.47,-2.38 -1.93,-1.04 -3.95,-1.45 -2.9,-4.14 -1.14,-2.8 -2.34,-5.73 -4.5,-8.23 0.48,-2.03 -3.61,-4.95 -2.1,-1.56 -0.34,1.45 -3.05,0.68 -1.66,2.91 -1.17,0.41 -2.72,0.17 -3.32,2.29 -3.21,0.75 -0.8,-5.19 -4.58,-3.84 -1.04,2.99 -3.56,1.08 -4.7,-0.26 -2.1,1.25 -4.73,3.83 -6.34,0.2 -2.17,-1.67 -4.84,-2.89 -5.84,-5.6 -0.73,-0.27 -1.51,-0.18 -2.26,-0.35 z\",\n                        \"department-58\" : \"m 361.05,231.75 c -1.61,0.98 -3.32,2.58 -5.23,1.22 -1.54,0.66 -5.16,0.31 -5.72,1.84 1.58,2.33 4.2,5.39 3.03,8.27 -0.46,2.34 -4.01,5.74 -0.25,7.04 1.92,1.64 3.66,3.16 3.28,5.91 2.2,3.19 1.4,7.61 2.45,10.69 2.84,1.44 0.59,4.96 1.6,7.25 -1.99,2.66 1.02,5.99 -1.24,8.7 -1.75,2.29 0.81,5.12 3.16,5.53 1.64,1.06 3.28,4.95 5.39,2.27 1.52,-1.93 3.16,-1.38 4.16,0.57 1.96,0.7 3.24,-3.41 4.93,-1.11 0.68,1.01 0.94,1.95 1.13,3.28 1.84,0.37 2.58,-2.94 4.39,-2.04 -0.61,-1.82 -0.49,-2.4 1.36,-2.38 -0.2,-1.17 -0.22,-3.61 1.45,-1.97 2.29,2.03 7.01,-1.91 8.02,2.31 1.41,2.29 3.54,-1.84 5.75,-1.47 1.68,-2.02 4.85,-2.71 6.51,-3.23 -0.22,-2.14 -1.12,-3.85 1.59,-4.65 -0.2,-2.28 -4.24,-3.86 -1.97,-6.79 0.18,-2.41 -4.07,0.3 -1.77,-2.02 2.77,-1.18 2.72,-4.62 1.41,-6.48 -0.21,-2.71 3.29,-1.57 3.61,-3.64 2.41,0.12 4.36,-0.55 4.66,-3.1 0.33,-2.07 -2.28,-4.7 -4.14,-3.18 -2.16,-1.91 1.5,-6.7 -2.23,-6.47 -2.06,-0.11 -3.88,3.63 -5.15,0.03 -0.32,-1.35 -0.05,-4.35 -2.03,-2.79 -1.29,0.05 -2.91,2.04 -2.96,-0.58 1.08,-0.8 1.65,-3.07 -0.35,-2.77 -1.09,1.35 -0.9,4.62 -3.13,2.61 -0.88,-1.42 -3.65,0.48 -4.06,-2.21 -1.01,-1.24 -3.05,-2.54 -4.54,-2.45 -1.62,0.35 -0.42,-3.16 -2.49,-3.09 -1.47,-0.17 -1.9,-4.94 -2.3,-1.85 0.35,2 -0.34,3.67 -2.39,2.1 -2.63,-1.51 -3.86,4.14 -5.82,1.03 -1.87,-1.04 -4.17,1.13 -5,-2 -2.26,0.34 -4.45,-1.48 -4.25,-4 -0.17,-0.32 -0.55,-0.4 -0.88,-0.38 z\",\n                        \"department-89\" : \"m 374.12,178.1 c -1.36,2.82 -5.36,0.91 -7.76,1.83 -2.91,0.12 -7.22,-0.23 -8.27,2.98 0.14,3.17 1.58,6.21 -2.22,8.02 -3.13,1.63 -1.03,2.94 1.17,4.04 2.28,2.02 1.91,5.48 4.92,6.98 0.09,2.23 1.57,5.13 -1.56,6.65 -2.34,1.36 -4.04,3.95 -2.14,6.31 -0.68,1.5 0.04,4.08 -2.76,4.29 -2.25,0.39 -7.34,0.64 -4.79,4.05 2.45,0.93 4.06,4.45 3.33,7.05 1.14,3.61 5.07,3.17 7.39,1.37 1.4,1.71 1.46,5.08 4.64,4.36 1.07,1.7 2.94,2.2 4.19,1.56 2.83,2.78 4.94,-2.42 8.04,-0.36 2.24,0.32 0.05,-5.91 2.11,-2.26 1.33,1.79 2.94,3.05 3.85,4.95 3.33,-1.09 4.42,4.4 7.1,3.73 1.63,0.4 3.4,2.47 3.61,-0.47 1.06,-2.78 3.75,-0.39 1.71,1.41 -0.27,3 5.9,-2.28 4.47,2.93 0.46,3.12 3.19,1.32 4.4,0.59 4.42,-0.6 -2.45,-5.06 1.49,-6.94 2.21,-1.57 -0.41,-5.47 2.78,-6.83 1.14,-2.73 3.9,-5.69 3.26,-8.58 1.88,-0.52 1.26,-1.92 0.64,-3.48 1.6,-1.09 4.66,-1.22 3.88,-4.34 0.07,-2.34 -0.26,-3.73 -2.7,-3.42 -3.53,-2.05 4.19,-4.69 -0.03,-5.12 -1.97,-0.1 -2.62,-5.1 -3.28,-1.27 -2.05,-2.67 -2.92,2.59 -5.45,0.23 -2.35,0.79 -5.27,0.01 -8.15,0.79 0.15,-1.59 0.88,-6.21 -1.65,-3.46 -2.36,-1.38 1.3,-2.55 -1.24,-3.58 -0.94,-2.75 -2.25,-5.79 -4.33,-7.09 0.87,-2.25 -1.27,-2.36 -1.7,-0.43 -3.07,1.65 -2.16,-4.29 -5.46,-2.45 0.07,-1.1 1.54,-2.74 1.12,-4.43 -0.2,-2.34 -3.48,-5.41 -5.2,-7.74 -2.07,-0.04 -3.97,0.46 -4.78,-1.75 -0.22,-0.05 -0.43,-0.1 -0.65,-0.14 z\",\n                        \"department-77\" : \"m 360.11,130.7 c -0.75,1.23 -0.27,2.29 -2.33,1.67 -1.38,-0.38 -1.84,2.1 -2.56,0.07 -2.14,0.21 -4.49,1.91 -6.24,0.1 -2.04,-1.53 -3.2,3.4 -5.16,0.88 -1.56,1.65 -2.68,-3.86 -4.86,-1.22 -1.42,0.6 -1.4,2.29 -1.08,2.9 -0.79,0.91 -3.3,2.12 -0.93,2.41 0.92,1.64 0.15,3.36 1.66,4.95 -0.21,1.86 -2.5,3.75 -0.77,5.03 -0.42,1.69 1.07,3.83 0.45,5.54 1.88,0.5 -0.47,2.18 -0.41,3.35 -1.82,0.99 1.36,3.93 -1.65,3.64 -0.82,0.84 0.31,2.38 -1.22,3.04 1.7,1.22 -0.11,2.87 -0.29,4.11 -0.83,2.76 -0.35,5.7 -0.38,8.61 1.13,0.77 2.32,2.24 0.22,2.19 -1.67,0.77 -3.86,1.83 -3.71,4.1 -3.26,-0.23 0.46,3.05 -0.39,4.73 1.93,0.89 5.35,1.9 4.16,4.93 0.05,1.63 -0.21,2.35 -1.8,2.26 -2.59,2.58 2.06,2.09 3.18,0.95 1.95,0.94 4.16,-0.38 5.89,1.16 1.74,-0.08 3.98,-1.65 3.26,-2.69 2.16,-0.61 3.3,-0.11 2.62,2.03 1.99,0.05 3.64,-2.23 5.85,-2.23 1.28,-2.5 4.18,-3.1 5.17,-5.95 -1.75,-1.86 -0.91,-4.39 0.11,-6.51 2.23,0.08 3.58,-0.87 5.81,-1.29 2.4,1.59 4.47,-0.91 6.89,0.03 1.85,0.05 2.21,-2.32 4.09,-1.22 1.02,-1.56 -1.94,-1.95 -0.46,-3.63 -1.01,-1.71 -0.67,-2.54 1.28,-3.16 -0.64,-1.19 -1.85,-3.14 0.59,-2.27 3.2,-0.16 -0.39,-3.09 2.44,-3.84 0.11,-1.36 2.11,-1.25 2.34,-2.32 -1.35,-1.35 -2.61,-1.35 -4.33,-0.87 -0.83,-1.72 0,-2.93 0.73,-4.28 -0.27,-1.41 0.18,-2.58 -1.57,-2.81 -0.08,-1.26 -2.46,0.08 -1.43,-1.87 0.29,-0.92 3.06,-1.11 0.77,-1.96 -2,-1.6 4.65,-0.07 2.85,-3.04 -0.62,0.26 -2.18,0.96 -1.62,-0.5 -2.19,-0.35 -3.93,-1.72 -3.63,-4.09 -1.91,1.44 -2.54,-0.3 -3.11,-1.76 -2.53,1.6 -2.02,-2.84 -4.2,-3.33 -1.26,-1.06 -2.94,-1.79 -1.15,-3.4 -0.57,-2.97 -1.82,-4.38 -5.07,-4.44 z\",\n                        \"department-10\" : \"m 415.76,157.34 c -2.6,0.51 -5.55,-0.05 -7.71,1.48 -2.64,-2.28 -2.21,2.93 -5.08,1.84 -1.93,0.67 -1.61,4.36 -4.3,3.88 -0.4,1.61 -1.36,1.64 -2.59,1.72 1.3,3.01 -1.42,4.79 -3.84,3.13 -2.09,-1.39 -6.82,1.14 -6.65,-2.55 -0.6,-0.93 -2.3,-0.55 -2.52,-2.29 -2.04,-2.28 -2.83,1.06 -4.5,1.77 -0.06,1.25 0.93,2.82 -1.41,3.08 -3.5,-1.29 1.33,2.83 -1.65,2.81 -1.9,0.54 0.78,2.64 -0.38,3.85 2.1,0.63 -0.62,5.56 2.52,3.51 3.16,-0.12 4.15,3.44 6.03,5.22 0.01,1.47 3.08,2.04 0.93,3.9 2.08,0.85 -3.12,4.07 0.15,3.27 2.29,-0.8 2.03,4.35 4.19,2.52 1.08,-0.14 0.3,-2.78 1.94,-1.13 0.93,0.76 -0.96,2.98 1.14,2.23 2.34,1.66 1.67,5.24 3.89,6.96 2.43,1.45 -2.11,1.84 0.59,3.02 0.73,-0.46 1.14,-2.22 1.92,-0.23 0.37,1.61 -1.44,4.62 1.62,3.35 1.95,0.01 2.99,-0.54 4.79,0.26 0.99,-3.03 2.57,1.82 4.01,-0.76 0.84,-1.92 1.99,-0.84 2.76,-0.15 -0.14,-1.03 0.29,-2.65 1.27,-1.4 -0.33,2.78 3.95,3.53 3.81,0.39 2.92,-0.59 5.93,0.14 8.85,-0.56 2.39,0.31 2.85,-0.77 1.49,-2.56 2.05,-2.2 4.43,-1.32 6.94,-0.84 2.63,-1.11 0.34,-3.51 -1.25,-4.11 2.37,-0.23 3.32,-3.91 6.03,-1.87 3.03,1.11 1.67,-2.97 2.47,-4.56 1.68,-1.76 -0.94,-2.47 -0.07,-3.99 1.1,-2.25 -0.53,-3.76 -1.25,-5.67 2.38,-2.25 -3.94,-1.43 -2.88,-4.17 -1.47,-0.37 -2.51,-0.25 -2.96,-1.8 0.24,-1.72 -4.18,-2.97 -1.75,-4.03 0.72,-2.19 1.43,-3.93 -1.16,-5.04 -2.33,-0.81 -3.68,3.05 -5.35,0.57 -2.15,0.43 -4.7,-0.92 -6.23,-2.52 -2.9,-1.25 -2.44,-3.78 -2.05,-6.39 -0.16,-1 -0.29,-2.51 -1.75,-2.14 z\",\n                        \"department-51\" : \"m 405.08,111.51 c -1.06,0.78 -0.74,4.64 -2.69,2.03 -2.26,-0.62 -3.69,-3.04 -5.85,-0.46 -0.76,1.47 -0.53,3.07 -2.6,1.59 -2.67,0.5 -5.66,1.55 -7.69,3.27 1.02,2.06 1.46,4.73 0.89,6.32 2.55,-0.42 1.18,3.01 3.85,2.11 0.48,4.28 -5.3,-0.05 -6.19,3.06 -0.39,1.65 2.79,4.09 -0.6,4.59 -2.26,3.23 5.49,0.01 3.06,3.78 -2.35,0.83 -2.21,3.44 -4.02,4.55 -0.04,2.3 -3.69,1.38 -3.38,4.24 -1.75,1.12 0.58,4.63 -2.54,3.99 -2.46,-0.16 -1.14,0.3 -0.32,1.22 0.08,0.89 -3.17,1.69 -1.26,2.59 2.53,0.21 3.88,3.9 1.46,5.7 0.25,2.2 1.1,2.12 2.94,1.45 1.92,0.52 2.98,4.27 5.46,4.81 -0.12,4.68 6.56,0.97 8.91,3.79 3.18,-0.68 -0.17,-4.93 3.46,-4.46 0.45,-2.04 3.42,-1.33 3.65,-3.97 0.75,-2.28 4.33,-0.39 4.38,-3.49 1.36,-0.34 2.79,1.39 3.81,-0.56 2.71,0.28 5.46,-1.6 7.64,0.42 0.89,2.81 -1.6,6.2 2.08,7.6 1.6,3.05 5.89,1.61 7.51,3.56 1.84,-1.76 4.32,-2.12 5.98,-0.45 1.91,-1.07 7.38,1.87 5.1,-2.02 -2.42,-2.79 6.05,-2.46 2.44,-5.4 -1.35,-0.11 -4.14,-0.27 -1.58,-1.69 1.66,-0.63 3.72,1.24 5.25,-0.9 2.3,1.31 5.6,-0.99 4.11,-3.45 -1.93,-1.13 -3.33,-3.27 -5.05,-4.35 0.2,-1.89 3.07,-2.43 1.04,-4.46 -0.24,-2.76 1.96,-3.93 4.51,-4.61 2.25,-1.35 -0.39,-2.44 -0.39,-3.09 2.85,-0.57 0.54,-4.33 -1.51,-2.09 2.09,-1.98 1.44,-5.68 -0.12,-8.2 -0.96,-1.63 -1.81,-3.48 0.73,-4.04 -0.24,-1.82 -2.4,-2.81 -3.5,-3.66 -2.15,0.23 -1.49,3.78 -3.82,1.54 -2.45,0 -5.77,-1.84 -7.92,0.23 -2.68,0.36 -2.07,-5.98 -5.47,-3.2 -2.64,0.89 -6.12,0.77 -7.24,-2.32 -2.8,0.56 -4.24,-2.36 -6.09,-4.01 -2.61,-1.4 -5.28,-1.58 -8.44,-1.57 z\",\n                        \"department-02\" : \"m 388.2,68.13 c -1.08,1.13 -2.82,3.24 -4.4,1.16 -2.84,-2.2 -4.67,3.68 -7.97,1.02 -2.67,-1.47 -4.82,2.26 -7.41,-0.08 -2.13,-0.29 -5.92,2.27 -2.52,2.96 -2.98,2.53 -3.74,6.36 -5.63,9.48 -1.75,0.96 2.24,2.4 -0.4,3.91 1.95,1.43 2.51,4.94 2.65,7.7 -1.5,0.24 -0.31,2.46 -1.01,3.2 2.8,2.14 0.67,5.53 0.21,7.42 1.3,1.39 -0.62,2.75 2.02,3.19 1.86,2.58 -4.01,-0.19 -2.57,2.99 0.21,2.78 -1.91,6.35 -4.84,5.03 -3.19,2.38 3.18,2.33 1.82,4.68 0.73,2 -0.93,3.6 1.68,4.15 1.16,1.34 2.5,-0.57 2.39,2.15 3.19,1.07 -5.03,3.79 0.04,3.92 2.54,0.03 3.91,4.01 2.15,5.73 2.04,1.28 3.84,3.72 5.3,5.32 1.97,-1.81 1.27,4.11 3.47,1.27 1.13,0.14 0.62,4.1 3.08,3.73 1.02,1.15 2.26,2.18 2.67,-0.16 1.3,-1.34 1.82,-3.4 3.99,-3.73 1.01,-2.49 2.46,-4.36 4.65,-6 0.1,-2.93 -6.07,0.28 -3.5,-3.33 4.06,-0.79 -1.61,-3.63 1.16,-5.63 1.74,-0.53 6.13,1.2 5.33,-1.72 -2.24,0.27 -1.72,-2.21 -3.92,-2.36 2.32,-2 -2.35,-5.73 0.53,-7.34 2.85,-0.42 5.37,-3.57 8.29,-1.65 -0.29,-1.73 3.19,-4.87 4.55,-2.85 1.43,0.76 4.63,3.46 4.24,0.06 0.75,-1.54 -0.52,-3.16 0.75,-4.21 -1.86,-2.09 0.18,-3.94 0.86,-5.41 -1.97,-0.87 0.95,-3.51 -1.67,-4.78 -1.57,-3.69 5.08,0.31 4.01,-3.96 1.21,-2.05 5.54,-3.68 5.14,-6.49 -2.5,-0.39 -0.05,-2.22 -0.82,-3.84 1.25,-2 2.5,-4.89 -0.05,-6.15 1.79,-3.26 -2.77,-4.61 -5.35,-3.57 -2.14,-1.09 -7,-0.34 -5.08,-4.21 -1.57,-0.94 -4.83,3.39 -5.36,0.08 -2.78,-0.3 -5.86,-1.9 -8.53,-1.67 z\",\n                        \"department-59\" : \"m 335.57,0.12 c -3.45,1.43 -6.99,2.74 -10.76,2.39 -2.72,1.29 -8.66,1.44 -9.11,3.85 2.44,2.79 3.25,6.62 4.77,9.94 0.43,4.77 5.56,3.66 8.58,4.42 2.32,1.45 -4.63,1.65 -1.51,3.98 2.44,0.67 -1.2,3.42 2.07,2.61 2.93,3.85 6.72,1.92 9.95,3.5 2.19,-0.65 4.1,-0.87 5.68,0.87 0.41,-1.85 2.1,-1.38 0.62,-3.01 2.05,-2.57 7.25,2.09 2.69,2.82 -1.83,1.68 0.07,3.54 -0.61,5.52 2.34,0.14 3.9,-1 3.93,1.59 2.5,-1.01 7,0.2 5.64,3.54 1.27,0.39 3.92,-0.75 2.32,1.89 -3.74,0.21 -4.27,4.12 -0.66,5.49 2.67,1.86 -0.52,2.17 0.31,4.28 2.66,0.03 5.42,1.44 5.6,3.59 -3.49,-0.01 -0.66,2 -1.8,3.32 -2.94,0.76 0.82,2.08 -1.93,3.52 1.19,2.22 -2.19,4.81 1.75,6.08 2.76,1.37 5.33,-1.11 8.08,0.5 2.78,-2.8 7.12,1.76 9.94,-1.66 1.88,-2.21 4.77,3.11 6.2,-0.72 3.06,-1.45 6.64,0.94 9.78,1.44 0.46,3.12 6.54,-3.53 4.81,1.34 0,2.28 5.16,2.43 7.07,2.12 1.13,-1.37 -0.83,-4.12 2.33,-4.63 2.68,-0.88 0.57,-5.07 -0.84,-5.54 -3.3,1 -0.12,-4.14 0.06,-5.58 2.39,-1.25 2.41,-3.76 -0.41,-4.14 -0.6,4.11 -2.68,-3.09 -5.06,-3.38 -1.96,-3.39 -6.66,2.37 -9.45,-1.06 -3.02,-1.09 -5.18,0.58 -6.36,2.66 -3.42,-1.36 -0.95,-6.36 -2.22,-9.19 -1.09,-3.5 -4.72,-3.12 -7.3,-3.15 1.15,-5.24 -5.66,2.5 -7.97,-1.03 -3.9,-1.63 -1.34,-6.5 -3.82,-9.41 1.83,-3.67 -3.12,-4.71 -3.84,-8.29 -2.91,-1.52 -7.12,1 -10.06,2.09 -0.33,4.97 -4.26,1.63 -6.9,0.96 -1.64,-3.04 -3.74,-6.42 -7.35,-5.98 -1.29,-2.74 -2.17,-6.28 -0.14,-8.73 -2.25,-2.77 -2.84,-5.71 -4.09,-8.81 z m 28.08,54.5 0.01,0.01 -0.01,-0.01 z\",\n                        \"department-62\" : \"m 313.33,5.46 c -4.94,0.63 -9.82,2.03 -14.3,4.19 -2.31,2.03 -4.44,4.39 -7.41,5.25 0.4,3 1.9,6.23 -0.01,9.07 -1.39,2.89 0.06,6.1 -0.08,9.15 0.12,1.92 1.85,2.89 0.02,4.03 0.23,3.04 -1.19,6.37 -0.33,9.17 2.74,1.63 4.65,4.95 7.93,2.3 3.81,-2.29 6.82,4.56 9.77,1.72 1.01,1.14 -1.99,2.68 0.88,2.9 2.1,1.36 5.3,1.26 4.69,4.15 0.88,1.54 2.94,0.71 3.92,1.37 1.81,-1.07 3.99,-1.33 5.74,-1.4 1.16,1.12 1.77,-0.42 1.57,-0.98 1.33,-0.36 1.77,3.47 2.74,0.75 1.51,-1.51 6.22,0.91 4.51,2.46 -2.54,0.07 -6.33,4.05 -3.27,5.63 1.73,2.15 1.55,-3.53 4.22,-2.43 1.09,-0.01 1.95,2.52 2.26,-0.06 2.83,-0.7 -0.14,2.46 2.59,2.02 1.28,-0.01 4.09,2 4.68,1.23 -1.22,-1.42 0.73,-3.47 2.15,-1.5 3.8,-0.04 -3.11,6.76 1.65,4.07 2.16,-2.39 3.64,-1.2 4.04,1.36 2.23,-1.54 4.16,-0.79 6.67,-1.69 1.7,0.68 3.25,0.84 2.92,-1.52 2.01,-0.93 -0.86,-3.26 1.69,-4.17 -3.08,-1.56 3.06,-1.88 0.19,-3.89 0.22,-1.46 4.13,-1.5 1.13,-2.69 -0.34,-2.78 -7.17,-0.62 -4.12,-4.27 0.8,-2.23 -5.36,-4.49 -3.06,-6.23 1.03,-0.79 5.01,-2.22 2.55,-3.36 -2.01,2.19 -1.83,-1.12 -1.83,-2.28 -1.69,-2.27 -3.83,-0.79 -5.87,-1.11 1.15,-3.86 -4.88,0.62 -3.97,-3.05 1.99,-1.08 -1.84,-2.64 0.61,-4.04 1.4,-1.06 3.51,-1.23 1.17,-2.9 -1.51,-1.43 -4.89,0 -2.23,1.47 -1.85,-0.59 -1.52,3.3 -3.1,0.89 -1.9,-1.78 -4.14,1.01 -6.2,-0.92 -1.66,1.28 -2.66,-1.12 -4.47,0.08 -1.69,-1.59 -4.29,-2.33 -5.63,-3.51 2,-1.35 -3.65,-3.85 0.56,-4.64 3.01,-2.03 -3.3,-1.35 -4.61,-1.78 -3.99,-1.02 -3.27,-5.59 -5.16,-8.44 -1.11,-2.34 -2,-6.31 -5.19,-6.38 z\",\n                        \"department-08\" : \"m 440.07,60.88 c -1.81,2.16 -4.2,3.74 -5.88,5.87 0.42,3.23 -0.62,6.85 -4.6,6.61 -2.61,1.4 -5.4,3.78 -8.53,2.23 -2.57,-0.31 -6.87,-3.07 -8.21,0.49 -1.09,2.27 2.57,2.05 1.26,4.47 -0.9,1.91 -2.03,4.96 -1.4,6.42 2.68,1.57 -1.58,4.47 -2.94,5.51 -2.03,1.01 -1.06,5.37 -4.36,3.7 -3.54,0.85 2.51,3.79 -0.29,5.51 1.51,0.87 0.58,2.56 -0.65,3.44 -0.53,1.71 1.98,3.37 -0.03,4.16 0.01,4.05 5.16,0.95 6.98,2.81 3.3,0.55 4.18,4.27 7.37,4.91 1.8,0.07 3.13,4.15 6,2.59 2.07,-0.07 4.96,-2.29 5.47,0.74 0.38,2.71 2.61,2.41 4.09,0.8 2.57,1.18 5.4,0.24 7.56,1.64 0.31,-2.7 3.11,-2.45 4.13,-0.68 1.4,-1.13 3.89,-1.64 4.64,-3.09 -2.15,-1.79 -0.62,-5.71 2.04,-5.88 0.24,-1.22 -1.21,-1.95 0.54,-2.89 0.24,-2.32 -1.77,-3.52 -2.04,-5.72 1.86,-0.63 0.83,-2.98 2.1,-3.97 -0.49,-2.87 2.16,-0.91 2.97,0.03 2.69,-1.68 3.87,3.39 6.05,0.41 0.28,-2.43 4.57,-1.6 3.3,-4.01 -0.97,-0.75 -4.08,1.55 -3.04,-1.15 1.75,-1.77 -2.34,-4.79 -3.97,-3 -1.63,-0.09 -2.52,-1.03 -3.35,-1.82 -2.04,-0.2 -1.16,-4.65 -4.28,-3.56 -2.09,-0.97 -3.75,-3.12 -6.22,-1.46 -1.91,0.12 -3.56,-0.3 -2.44,-2.42 -2.07,-2.68 2.55,-6.08 -1.42,-8.03 -4.13,-0.79 1.05,-4.77 -0.06,-7.24 0.2,-2.35 3.01,-3.4 2.16,-5.95 -1.43,-0.71 -2.14,0.48 -2.93,-1.47 z\",\n                        \"department-55\" : \"m 466.47,97.47 c -1.56,1.83 -3.96,2.91 -5.49,4.69 -1.73,-0.62 -3.36,-2.29 -5.13,-1.66 -3.57,-3.74 -2.07,3.57 -4.83,4.43 1.86,1.88 2.97,4.89 1.69,6.85 0.61,2.43 -4.88,3.04 -2.52,6.02 2.38,3.31 -6.19,2.92 -2.28,6.6 -4.21,1.78 0.99,5.9 0.55,8.83 -0.1,1.57 -1.24,3.24 0.94,2.92 1.75,1.64 -1.92,3.15 0.48,3.93 0.25,3.59 -6.19,2.07 -5.18,5.89 1.08,1.97 -0.23,3.47 -1.14,4.72 1.38,2.47 5.49,3.27 5.15,6.61 0.23,1.76 -1.52,5.98 0.78,6.29 1.9,-2.79 1.64,2.85 3.89,1.37 2.31,2.74 5.53,4.67 8.96,5.55 2.27,1.43 4.35,3.02 5.92,5.23 2.69,2.59 4.85,-1.27 7.77,-0.65 1.95,-0.75 1.99,-2.61 4.21,-1.43 3.14,0.06 4.5,-5.18 1.4,-6.29 -3.87,-2.46 6.35,-3.69 1.46,-4.42 -1.47,-2.21 0.74,-5.44 -1.65,-7.38 0.52,-3.01 3.49,-5.5 2.03,-8.71 1.74,-1.41 -2.37,-3.07 0.56,-4.22 1.59,-0.69 4.2,-1.75 1.55,-3.18 -1.32,-1.7 3.57,-5.15 -0.4,-5.57 1.51,-1.93 -0.24,-3.53 -1.91,-2.99 -2.09,-1.69 1.38,-6.16 -1.64,-5.8 -0.54,-2.63 -0.07,-4.79 1.7,-6.78 -2.19,-0.64 -1.63,-2.43 -1.84,-4.23 -1.39,-1.72 -2.89,-6.03 -5.8,-3.74 -2.4,-0.05 -3.98,1.51 -4.61,0.54 -0.96,-0.51 -0.02,-0.62 -1.25,-1.61 0.46,-1.47 -0.85,-2.06 -0.1,-2.7 -0.17,-2.17 1.28,-0.21 0.11,-1.81 -0.06,-2.69 -0.83,-5.88 -3.37,-7.28 z\",\n                        \"department-54\" : \"m 483.26,101.56 c -1.75,2.39 -6.72,-0.76 -7.03,2.38 -2.62,-1.44 -7.36,1.12 -6.17,4.43 0.74,4.88 5.26,0.58 8.1,1.48 2.96,1.01 3.57,5.58 4.1,7.38 3.12,1.31 -1.93,3.72 -0.52,5.95 -0.87,2.35 2.62,1.44 1.12,3.56 0.09,2.56 -0.17,4.4 2.68,4.39 0.95,1.44 -0.85,2.5 1.32,3.1 0.08,2.43 -2.65,4.77 0.06,6.73 -1.86,1.53 -5.42,2.68 -2.94,4.96 -0.32,3.14 0.42,6.53 -2.29,8.78 0.3,2.26 1.85,3.57 0.92,5.93 -0.21,2.42 4.1,2.54 0.74,3.73 -2.75,0.52 -2.79,3.37 -0.09,3.76 0.33,2.01 0.1,5.32 3,2.95 5.39,-1.2 1.3,5.69 5.29,7.31 -0.38,3.55 5.14,2.54 6.11,0.87 0.8,0.45 2.56,2.67 3.02,-0.32 0.4,-3.41 3.98,0.7 5.58,-2.34 2.07,-1.7 2.85,1.78 5.26,0.83 2.41,0.96 5.78,-1.97 8.72,-1.33 -0.11,-2.51 2.69,-4.44 3.49,-1.11 1.87,2.12 5.7,3.02 8.46,2.03 1.11,-2.51 3,0.55 4.43,-2.06 1.4,-3.3 8.67,-2.58 5.72,-7.33 -1.28,-1.26 -2.12,-2.52 -2.84,-3.74 -2.12,0.62 -3.12,-2.23 -5.19,-0.6 -3.43,-1.47 -6.2,-3.18 -9.79,-3.87 -0.04,-2.22 -3.9,-2.63 -5.43,-4.68 -2.97,-0.67 -5.52,-2.5 -8.38,-2.2 -1.35,-2.37 -4.49,-3.45 -2.73,-6.5 1.93,-3.82 -4.9,-3.21 -7.26,-3.68 -1.33,-1.55 -2.62,-2.04 -4.55,-3.04 0.53,-3.54 -7.57,-4.55 -4.54,-8.33 3.1,1.07 1.22,-3.19 3.24,-3.88 -1.85,-1.34 -2.22,-2.92 0.05,-3.88 0.24,-1.64 -0.87,-4.88 -1.53,-5.53 -2.45,-0.97 -0.9,-3.36 -2.63,-4.79 -0.94,-2.62 2.2,-6.94 -2.47,-7.44 -1.91,-1.02 -2.61,-3.63 -5,-3.91 z\",\n                        \"department-57\" : \"m 503.4,104.95 c -3.5,0.04 -5.26,4.42 -8.98,3.78 -1.89,-0.4 -2.66,-4.83 -4.84,-2.71 4.17,0.85 -0.69,5.81 2.03,8.08 0.95,1.12 1.47,1.12 0.16,1.85 2.72,1.47 3.97,5.18 2.78,8.12 -3.16,1.23 2.9,3.39 -0.76,4.28 0.68,2.17 0.05,3.22 -2.29,2.94 -2.22,3.61 4.41,3.78 4.47,6.79 0.32,2.5 4.34,1.92 4.61,4.09 2.63,0.22 7.9,-0.18 8.05,3.09 -1.51,2.09 -1.02,3.76 1.16,4.61 -0.07,2.41 2.71,3.1 4.16,2.64 2.31,1.86 5.93,1.31 7.61,4.01 3.25,1.89 6.08,3.97 9.68,5.11 1.62,1.34 4.4,1.49 5.37,1.07 1.15,1.63 4.32,0.61 3.99,3.06 2.04,2.55 6.14,5.26 8.81,1.93 1.69,-2.04 5.6,-6.38 2.03,-8.09 -0.63,-2.26 4.24,-5.88 0.71,-8.42 -2.28,-1.08 -5.5,-4.67 -6.48,-0.31 -1.32,2.17 -2.68,0.9 -2.94,-0.66 -3.5,-1.06 4.07,-2.79 -0.09,-3.01 -2.21,-1.11 -5.81,-2.3 -5.04,-4.57 1.13,0.06 2.3,-2.29 3.7,-2.54 0.74,-1.99 0.82,-7.28 3.45,-6.47 0.09,2.59 1.3,4.57 3.75,4.84 3.24,0.28 5.22,3.37 8.36,2.73 2.95,-1.6 5.64,0.34 8.22,0.72 1.73,-1.99 3.39,-5.75 3.26,-7.88 -3.15,-1.08 -5.79,-2.77 -6.37,-6.36 -2.47,-1.1 -4.98,-1.26 -6.78,1.45 -3.22,2.32 -7.72,1.44 -11.17,-0.38 -0.64,3.79 -3.96,0.62 -3.06,-1.79 -1.61,-2.56 -5.77,-3.52 -8.36,-2.33 2.56,4.39 -5.29,4.06 -5.55,1.2 0.78,-2.3 -2.24,-2.11 -2.29,-4.46 -1.24,-2.84 -6.04,-4.38 -3.87,-7.88 -2.52,-2.26 -3.82,-6.64 -8.27,-6.11 -4.17,1.53 -5.59,-3.04 -9.23,-2.45 z\",\n                        \"department-67\" : \"m 544.44,133.33 c -2.55,1.2 -1.86,5.34 -3.54,7.57 -2.79,-0.45 -3.98,5.32 -0.38,4.93 0.87,1.03 5.75,1.83 2.14,2.53 -1.78,1.5 1.91,2.4 0.8,3.44 3.07,0.38 2.8,-5.61 5.59,-2.68 1.27,0.5 2.75,1.06 3.36,2.31 3.21,1.88 -0.45,5.47 -1.04,7.67 0.4,1.75 3.37,1.12 1.47,2.94 -0.9,2.92 -2.34,6.34 -5.54,7.14 -1.52,-0.27 -6.22,0.31 -2.38,1.08 1.92,0.81 -2.32,1.02 0.26,2.27 -0.26,2.11 -1.22,5.21 -0.98,7.34 -1.59,2.69 3.49,1.95 4.06,2.53 1.12,2.38 5.28,1.06 5.74,4.01 2.04,-0.84 -0.91,2.57 1.9,1.72 3.01,0.58 6.32,2.58 6.2,5.56 1.67,1.12 3.39,4.4 5.2,1.29 0.87,-3.2 3.75,-5.3 4.22,-8.66 0.15,-2.7 3.74,-3.64 2.22,-6.76 -0.27,-3.01 1.17,-6.05 2.5,-8.7 1.39,-2.29 -0.7,-5.94 1.56,-8.31 1.96,-2.54 5.71,-3.61 6.25,-7.2 0.97,-1.38 2.5,-0.59 3.09,-2.39 3.71,-1.2 3.61,-5.01 5.11,-7.95 0.24,-2.03 5.28,-4.42 1.59,-4.91 -3.51,-0.14 -6.34,-2.15 -9.28,-3.81 -2.69,-1.53 -5.76,0.29 -8.43,-1.4 -2.54,1.19 -6.23,-0.86 -8.22,1.79 -0.69,2.41 -2.45,7.76 -5.69,4.83 -2.43,-2.51 -5.76,1.35 -8.43,-0.25 -1.12,-1.59 -3.01,-2.5 -4.57,-2.09 -2.06,-1.13 -5.18,-2.13 -4.56,-5.04 0.33,-0.23 0.21,-0.84 -0.21,-0.81 z\",\n                        \"department-88\" : \"m 543.7,170.72 c -3.31,1.38 -6.33,2.9 -8.64,5.73 -1.29,0.67 -1.97,-1.71 -3,0.67 -1.48,2.53 -4.46,-1.14 -6.53,-0.37 -3.07,0.39 -1.42,-5.29 -4.45,-2.86 -1.72,1.06 0.93,4.33 -2.07,2.2 -1.78,0.74 -4.05,0.76 -5.72,1.72 -1.57,1.83 -1.69,-1.56 -3.59,-0.23 -1.77,0.14 -2.17,-3.2 -3.48,-0.63 -1.05,2.66 -5.79,-1 -5.2,1.97 -0.89,2.75 -2.59,1.71 -3.28,0.37 -0.1,2.4 -3.59,0.58 -5.16,1.87 -1.7,-0.72 0.13,-3.65 -2.1,-3.15 -3.28,-1.76 1.05,-7.74 -3.76,-6.9 -1.91,1.57 -3.93,0.03 -4.94,2.56 -1.62,0.54 -3.6,-1.45 -4.31,0.83 -0.98,2.28 -4.98,-0.54 -5.76,2.63 -1.49,-1.12 -4.76,0.24 -4.44,1.84 2.72,-0.76 -1.5,4.16 1.48,2.83 2.58,-2.8 4.27,0.92 5.47,2.86 0.99,2.29 2.44,-0.84 3.66,1.62 0.19,1.46 -0.14,2.91 2.21,2.73 1.05,0.81 2.84,3.4 0.16,2.99 -1.16,2.1 -0.8,4.9 -2.74,6.18 0.01,1.72 3.18,0.08 3.76,2.45 2.71,0.96 3.73,3.61 3.02,6.15 1.1,2.31 3.31,-2.88 3.5,0.86 1.43,3.89 3.56,-4.88 4.18,-0.76 -1.87,1.59 0.22,2.12 0.99,0.26 2.44,-0.34 2.63,-4.83 6.01,-3.79 2.78,-2.08 1.94,3.16 3.04,3.81 1.67,1.1 3.1,2.11 4.88,0.16 2.8,0.02 6.14,-1.3 7.82,1.99 0.57,3.89 4.42,1.42 5.62,-0.82 2.89,-1.35 3.54,3.7 6.5,4.05 2.19,0.9 3.46,2.55 5.11,3.85 2.21,-0.74 5.19,-1.96 3.36,-4.73 1.56,-1.66 0.35,-4.44 1.89,-6.56 0.98,-1.7 3.7,-2.62 3.88,-5.25 1.52,-1.58 3,-3.43 1.6,-5.14 1.49,-2.96 3.07,-5.84 4.54,-8.75 0.95,-1.35 2.26,-2.99 0.28,-4.02 -1.87,1.29 -5.67,-0.97 -2.92,-2.78 -2.18,-1.78 1.85,-5.54 -0.21,-7.07 -0.57,-0.2 -0.01,-1.38 -0.66,-1.38 z\",\n                        \"department-52\" : \"m 446.82,158.96 c -1.69,0.91 -3.13,-0.45 -4.82,1.2 -1.12,-0.83 -4.57,-0.69 -3.54,0.9 2.8,-1.2 4.68,3.32 1.31,3.37 -2.26,0.28 -2.04,1.83 -1.08,2.97 1.74,4.14 -5.82,-1.2 -5.38,2.99 -0.5,1.16 -1.78,3.02 -1.22,3.88 2.37,0.94 2.16,4.62 5.26,4.46 -0.97,2.99 5.41,1.68 2.86,4.7 2.62,1.68 0.37,4.97 1.38,6.77 1.02,1.49 -1.35,3.52 -0.54,5.29 0.17,4.44 -5.3,-1.1 -6.39,2.93 -2.48,1.02 2.31,2.62 0.41,4.4 1.49,1.78 5.61,0.36 3.83,3.87 2.37,-0.59 4.42,1.86 1.79,3.34 0.65,2.75 2.75,-2.78 3.64,0.5 0.65,2.55 3.6,4.14 3.33,6.7 -1.31,0.89 -4.49,2.9 -1.32,2.84 1.47,1.51 -1.34,5.58 1.92,4.46 1.63,-2.16 2.42,0.63 2.94,1.7 1.79,1.42 3.81,1.4 4.82,-0.8 0.79,0.32 -0.13,2.53 1.75,2.49 0.96,1.39 3.18,1.14 1.74,3.15 0.89,2.65 3.78,-3.01 5.24,-0.13 1.75,-1.89 1.15,-6.06 4.57,-5.11 1.28,-1.4 3.49,1.3 4.33,-1.4 1.59,-1.92 1.63,2.72 3.95,1.22 2.18,-0.12 2.71,-1.17 2.09,-3.01 0.93,-1.34 1.22,-2.86 -0.38,-3.56 -0.59,-2.58 1.37,-2.98 3.06,-3.3 -0.71,-3.1 2.46,-1.42 3.57,-1.95 -0.16,-2.01 1.36,-3.53 2.99,-3.36 -0.29,-2.42 -2.17,-4.47 -4.19,-2.78 -1.26,-1.95 0.41,-5.52 -3.04,-6.35 -1,-1.34 -2.58,-2.41 -4.02,-2.13 -1.13,-1.43 1.6,-1.92 0.97,-3.42 1.1,-1.79 0.88,-4.33 2.89,-4.52 -0.46,-2.76 -4.86,-1.71 -3.68,-4.79 -1.34,-2.4 -3.06,0.93 -3.95,-2 -1.16,-2.97 -3.69,-4.38 -6.2,-2.11 -0.59,-1.91 1.12,-3.24 -1.32,-3.92 1.85,-0.41 3.47,-2.52 0.93,-3.26 -0.38,-1.87 -1.16,-2.02 -2.78,-2.58 -1.73,-3.16 -6.41,-1.82 -8.19,-4.99 -2.15,-0.46 -2.78,-2.81 -5.04,-3 -0.12,-2.21 -1.01,-1.61 -2.26,-0.66 -2.79,-0.35 1.41,-5.66 -2.22,-4.93 z\",\n                        \"department-70\" : \"m 499.88,202.89 c -2.63,0.3 -4.89,2.11 -5.97,4.12 -0.94,0.91 -3.97,2.32 -2.12,-0.03 0.13,-1.92 -1.88,-0.34 -1.76,0.64 -1.02,1.34 -0.98,3.88 -3.06,3.55 -0.55,1.66 -1.23,4.46 -3.43,2.67 -1.42,0.7 -1.13,3.58 -3.32,2.54 -2.26,2.15 1.83,3.96 -0.2,6.21 1.24,3.12 -4.32,4.77 -5.32,1.82 -0.58,-0.92 -2.73,2.87 -4.37,1.01 -1.22,1.14 -4.49,-0.07 -3.8,2.59 -2.11,1.09 0.1,3.94 1.06,1.41 2.21,-1.57 4.14,3.91 2.96,5.69 -0.66,2.07 -2.95,2.72 -4.23,3.24 1.21,1.06 -1.76,2.05 0.86,1.83 2.25,0.29 -0.16,6.1 3.34,4.24 1.79,2.16 -1.88,5.33 1.36,5.71 1.44,2.16 3.91,4.38 6.57,2.71 2.27,-0.86 4.59,0.16 6.71,-1.75 2.79,-1.14 5.72,-4.18 8.47,-2.76 2.5,-0.09 4.56,-1.97 5.85,-3.76 1.83,0.46 2.61,-0.36 2.86,-1.77 2.63,-0.46 5.27,-1.6 5.54,-4.7 2.29,-1.29 5.83,-3.32 7.88,-0.71 1.23,-0.95 5.65,1.5 4.64,-1.81 -0.18,-2.44 4.57,1.54 3.74,-2.01 -0.12,-2.68 3.06,0.48 4.42,0.6 2.85,1.79 2.94,-3.34 1.04,-4.6 1.68,-2.26 -0.76,-5 -0.83,-7.47 -0.79,-2.86 4.43,-4.21 1.79,-6.71 -2.08,-2.66 -6.24,-2.87 -7.71,-6.14 -2.5,-2.92 -3.93,3.02 -6.8,2.39 -1.62,-1.8 -2.57,-4.88 -5.66,-4.53 -2.96,-0.21 -6.08,3.12 -8.15,0.41 -2.4,-0.51 0.23,-4.03 -2.37,-4.63 z\",\n                        \"department-21\" : \"m 430.26,202.39 c -2.98,-0.36 -2.28,3.5 -2.89,4.09 -3.52,0.85 -7.72,-0.28 -10.91,1.13 0.12,1.91 0.16,3.7 -1.78,4.39 -1.43,2.57 2.23,2.59 2.78,2.96 0.78,2.82 0.56,7.26 -3.23,7.04 -0.11,2.16 1.99,3.62 -1,3.9 0.72,2.94 -2.41,6.52 -3.86,9.44 -2.44,2.06 0.03,6.34 -3.4,7.86 -0.01,1.52 1.54,3.57 2.08,4.44 2.08,-1.74 -0.71,3.97 0.05,5.35 0.76,2.06 4.84,0.48 4.74,3.88 -1.32,3.42 1.69,6.38 5.01,6.9 1.3,1.42 0.65,2.78 2.51,1.23 2.03,0.22 0.19,2.75 2.63,2.77 2.7,1.39 5.44,1.37 6.15,4.62 1.34,1.99 4.7,1.98 4.57,4.24 2.88,-1.34 6.42,-1.22 9.16,-3.33 2.31,-0.8 6.07,-0.86 8.14,-1.17 2.91,2.58 6.21,-1.12 9.25,-0.89 2.24,-0.61 1.63,-2.43 0.75,-3.34 1.62,-2.89 6.07,-2.65 6.78,-6.47 1.41,-2.73 2.01,-5.54 2.73,-8.48 0.14,-1.92 1.96,-2.74 -0.25,-3.51 0.43,-2.24 1.54,-5.31 -1.69,-5.06 -0.44,-1.89 -1.3,-4.9 -2.86,-4.55 0.22,-3.37 5.14,-1.91 4.96,-5.91 0.76,-2.96 -2.67,-7.08 -4.51,-2.82 -2.22,-0.25 -3.54,-1.43 -5.3,0.74 -2.39,1.02 -0.78,-3.81 -3.53,-3.94 -1.77,-1.18 -0.62,-3.19 -2.39,-0.9 -3.64,2.12 -4.58,-4.93 -7.28,-2.21 -2.89,-0.45 0.78,-4.91 -3.01,-5.07 0.9,-1.64 5.08,-3.23 1.85,-5.04 -1.35,-1.96 -2.46,-6.59 -4.91,-3.77 -2.57,-0.44 2.15,-3.15 -0.94,-3.86 -1.96,-0.39 -2.06,-0.68 -1.78,-2.38 -2.58,-1.59 -5.78,-1.16 -8.59,-2.28 l 0,0 z\",\n                        \"department-25\" : \"m 524.75,232.72 c 0.6,3.47 -5.06,1.11 -4.41,4.65 -1.59,0.18 -4.21,0.28 -5.1,0.07 -2.83,-2.93 -7.31,0.27 -8.34,3.45 -1.29,2.51 -4.23,1.18 -5.23,3.59 -1.44,0.48 -2.41,0.42 -2.71,1.78 -2.17,0.44 -3.6,3.16 -6.39,2.02 -3.22,-0.12 -5.72,2.6 -8.74,3.57 -3.03,0.32 -3.9,3.34 -1.23,5.03 3.1,1.51 4.18,4.87 1.57,7.47 0.1,1.6 -1.31,3.03 -1.29,4.53 1.26,1.41 2.75,-3.16 3.11,0.11 0.9,2.49 4.55,-0.29 4.63,2.13 3.8,0.81 1.81,4.9 4.19,7.22 0.91,2.91 5.17,1.46 6.56,4.25 3.53,2.93 0.14,6.33 -2.84,7.54 -1.4,1.89 0.42,3.62 -1.39,5.19 -0.75,2.81 3.69,5.73 3.76,1.72 2.39,-2.03 4.37,-4.58 7.12,-6.18 2.26,-1.76 5.45,-2.91 6.57,-5.72 -0.74,-2.93 1.48,-6 -0.08,-9.15 0.11,-4.19 6.86,-3.29 9.42,-5.9 2.72,-1.98 2.28,-6.41 5.92,-7.6 2.76,-2.22 4.53,-5.44 7.39,-7.56 -0.61,-3.67 3.46,-4.22 4.78,-6.73 -0.15,-3.82 -4.97,0.07 -7.07,-1.46 0.7,-1.9 3.21,-4.13 1.45,-6.71 -0.76,-1.48 -0.67,-2.19 0.61,-2.92 -0.66,-3.47 -5.22,-3.74 -7.78,-2.34 -1.29,-1.12 -3.19,-0.98 -4.5,-2.06 z\",\n                        \"department-2B\" : \"m 591.47,517.82 c -3.8,0.59 0.96,5.58 -2.34,7.11 0.41,2.37 -1.56,4.36 0.27,6.51 0.91,2.65 0.16,5.25 -1.21,7.52 -1.7,1.4 -2.28,-3.59 -4.88,-2.82 -2.72,-0.68 -5.78,0.73 -6.51,3.55 -0.96,3.57 -5.53,1.85 -7.86,3.52 -1.89,1.06 -3.87,1.71 -4.61,3.96 -1.27,0.02 -3.62,-0.97 -3.17,1.52 -0.83,1.46 -4.01,3 -1.97,4.89 -0.74,1.76 -0.34,3.49 -2.71,3.49 -0.21,1.44 -2.22,2.88 0.58,2.71 2.53,1.11 5.12,2.12 7.69,3.24 1.52,0.72 3.8,-1.59 3.24,1.35 1.14,3.16 4.05,4.22 6.73,6.16 3.36,0.28 1.41,5.5 4.55,6.47 1.71,1.96 0.79,6.36 4.83,5.7 0.18,2.3 0.59,4.8 0.39,7.09 3.14,0.81 -1.89,5.25 2.18,4.96 1.78,0.52 2.82,0.98 4.16,-0.94 3.62,-1.36 0.49,-5.59 2.73,-7.46 1.3,-1.69 2.64,-3.75 1.77,-5.45 1.89,-0.05 4.02,-2.43 3.98,-4.66 -3.67,0.56 1.98,-2.55 0.4,-4.61 0.47,-4.5 -0.6,-8.88 -1.01,-13.3 -0.14,-3.75 0.34,-7.67 -0.54,-11.31 -2.55,0.11 -3.67,-4.24 -3.35,-6.45 -0.43,-3.66 1.56,-7.1 1.67,-10.65 -0.63,-3.67 -1.07,-7.33 -1.55,-11 -0.76,-1.12 -2.26,-1.12 -3.47,-1.1 z\",\n                        \"department-2A\" : \"m 553.92,559.49 c -0.76,0.55 -0.1,3.85 1.13,1.96 1.53,-0.6 3.16,1.13 1.04,1.7 0.18,1.06 4.56,1.95 3.28,3.75 -1.7,0.83 -4.95,1.13 -5.71,2.43 1.47,0.55 1.4,3.03 1,3.92 1.78,0.17 -1.16,0.99 0.63,1.63 0.63,1.3 2.89,1.78 3.93,2.6 2.01,-0.69 1.72,2.93 3.31,3.71 -1.37,1.54 -4.97,1.78 -3.83,4.58 -1,1.17 -4.84,0.3 -2.28,2.46 0.58,1.07 -0.7,3.38 1.57,2.3 2.41,0.81 4.08,-2.02 6.12,-1.18 1.97,1.46 -0.22,3.37 0.14,5 -2.75,0 1.8,1.85 -1.02,2.54 -3.01,0.03 -0.83,3.83 -3.9,3.99 -1.68,0.23 1.57,0.7 1.54,1.65 1.76,-0.59 3.68,-1.62 3.39,1.11 1.89,0.2 4.59,0.62 6.1,1.72 -1.54,1.28 -2.78,3.54 -5.39,3.37 -1.08,2.57 -0.44,5.65 2.26,6.65 0.47,1.48 3.07,1.49 4.07,2.79 2.06,-0.18 4.37,2.72 5.98,1.13 0.61,-0.03 -0.33,2.68 1.6,1.9 1.78,0.68 -1.94,3.73 1.39,3.43 1.92,2.48 5.07,2.16 5.35,-1.31 -0.28,-1.01 -2.21,1.4 -1.26,-0.4 -1.13,-2.4 4.15,-2.95 2.21,-5.91 -0.37,-2.45 4.29,-3.07 3.59,-5.68 -1.11,-1.47 -3.9,2.07 -2.85,-0.95 0.15,-2.4 3.01,0.56 2.82,-1.99 2.59,-0.18 0.07,-3.36 2.35,-4.13 0.15,-3.28 0.23,-6.85 -0.14,-10.22 -1.57,-1.53 -3.07,3.01 -4.83,0.98 -2.75,0.63 -3.37,-1.87 -1.99,-3.78 0.22,-1.35 -2.56,-0.55 -1.08,-2.17 -0.85,-2.32 1.32,-7.41 -2.67,-6.39 -2.45,-0.98 -0.65,-4.44 -2.73,-5.65 -2.85,-1.24 -1.36,-6.19 -4.82,-6.53 -1.64,-1.96 -4.77,-2 -5.5,-4.65 -1.21,-1.02 -0.51,-3.66 -2.85,-2.55 -2.75,-0.46 -5.3,-1.82 -7.74,-2.91 -1.28,-0.57 -2.84,-0.72 -4.21,-0.9 z\",\n                        \"department-66\" : \"m 350.33,540.74 c -2.96,0.38 -4.31,2.8 -5.6,5.05 -3.53,0.71 -7.2,-0.41 -10.77,-0.57 -2.35,1.71 -6.82,-1.75 -7.77,1.56 0.2,2.13 1.85,4.41 0.81,6.44 -1.56,1.89 -4.34,1.3 -5.68,3.47 -1.35,1.08 -2.18,1.99 -3.65,0.52 -2.39,0.04 -5.76,-0.02 -7.25,1.69 -0.99,2.71 -4.23,1.36 -5.45,3.77 -3.15,-0.36 -6.54,2.28 -5.14,5.7 2.43,0.62 5.15,0.58 6.86,2.76 2.19,0.36 3.92,1.1 3.79,3.75 0.25,2.56 3.21,3.71 5.32,2.52 1.96,-1.04 2.2,-4.45 4.97,-3.96 2.58,-0.15 5.03,-1.38 7.33,0.7 1.62,1.14 4.07,1.03 4.94,3.03 1.26,1.86 4.32,3.14 5.35,0.56 1.73,0.75 6.82,2.34 4.14,-1.14 0.71,-2.52 4.05,-2.95 6.3,-2.62 1.56,-1.63 3.48,-3.18 5.81,-2.8 0.99,-2.12 3.1,-0.12 4.88,-0.88 1.63,1.07 2.93,3.67 5.54,2.51 3.2,-0.39 -1.16,-3.71 -1.44,-5.38 -2.92,-1.29 -2.81,-4.63 -3.06,-7.37 0.78,-2.2 -2.64,-2.22 -1.43,-4.12 2.29,1.97 1.16,-2.93 1.55,-4.24 0.36,-2.22 -0.89,-3.89 -3.17,-3.82 -1.26,-1.48 0.41,-4.01 -2.35,-4.33 -1.89,-0.44 -3.32,-1.87 -4.85,-2.81 z\",\n                        \"department-01\" : \"m 445.43,302.59 c -1.44,3.02 -1.75,6.16 -3.18,9.18 -0.78,3.16 -1.85,6.34 -2.91,9.5 -0.74,1.88 -1.31,3.79 -0.09,5.37 -0.73,2.05 -2.97,3.67 -1.95,5.9 -1.67,2.26 0.87,5.73 -1.18,7.83 1.88,0.01 3.46,1.61 3.99,2.62 2.16,-1.53 3.89,1.88 4.07,3.41 0.92,1.26 -0.03,3.77 2.46,2.77 2.89,0.46 5.98,-0.89 8.76,0.39 1.35,2.24 3.89,2.93 5.42,0.31 1.18,-1.7 1.66,-5.65 4.09,-5.27 2.02,1.24 3.75,2.88 3.08,4.98 1.95,2.32 3.67,4.97 5.93,6.73 1.33,1.23 0.17,0.8 -0.53,0.61 0.61,1.8 3.11,2.49 3.34,4.83 0.97,0.84 1.38,-1.89 2.87,-1.59 -0.3,-1.63 1.67,-2.68 0.77,-4.34 3.81,0.96 3.71,-3.34 3.75,-5.95 0.89,-3.44 1.98,-6.82 2.27,-10.31 -1.07,-2.3 -1.36,-4.85 -1.09,-7.47 0.3,-1.5 0.9,-3.58 2.27,-1.4 2.48,1.01 0.53,-3.51 3.59,-2.7 2.71,-0.13 3.55,-3.26 1.37,-4.78 1.32,-2.8 5.95,-1.73 6.82,-4.09 -1.66,-3.05 4.61,-7.07 -0.2,-9.19 -2.62,-2.47 -4.13,2.14 -6.1,3.38 -0.9,2.11 -2.5,3.05 -3.65,4.53 -1.99,2.56 -5.47,0.79 -8.11,1.25 0.84,-3.04 -2.73,-3.43 -3.76,-4.72 -2.02,1.65 -3.16,4.49 -6.19,4.68 -2.73,0.46 -1.81,-2.02 -1.56,-3.51 -1.42,0.56 -1.69,-0.36 -2.26,-1.49 -0.06,1.35 -0.96,2.99 -0.83,0.6 -1.4,-1.01 -1.59,-2.59 -1.58,-3.72 -1.32,-0.93 -3.93,-1.28 -2.29,-3.07 -1.76,-1.43 -5.48,-1.31 -5.42,-4.72 -2.13,-0.62 -4.08,0.9 -6.23,1.42 -1.93,-0.36 -3.28,-2.81 -5.2,-1.46 0.07,-0.1 -0.3,-0.68 -0.54,-0.51 z\",\n                        \"department-39\" : \"m 472.04,250.64 c -2.16,1.79 -1.36,5.28 -2.94,7.45 0.09,2.73 -2.31,4.73 -3.53,7.05 -3.03,-0.47 -5.35,3.74 -3.19,4.71 -2.06,0.47 -3.73,5.36 -0.52,4.7 1.33,0.76 0.69,4.17 3.48,3.21 1.68,-0.66 1.23,2.18 3.27,2.09 2.46,1.35 -0.2,2.67 -1.91,2.03 -2.06,-0.51 -4.46,1.94 -1.6,2.77 2.43,1.33 -1.33,3.03 1.08,4.08 0.89,2.1 1.19,3.82 2.13,6.05 -2.12,0.95 -0.43,3.73 -3.06,3.72 -1.86,2.41 0.74,4.14 2.3,5.69 -0.13,2.93 -6.18,0.76 -4.86,4.67 0.41,1.69 3.59,1.72 2.72,3.84 0.3,1.7 2.14,1.5 2.39,1.42 0.16,2.17 2.98,0.53 1.91,2.98 -0.9,3.13 3.87,1.82 4.85,0.12 1.46,-0.55 2.58,-4.59 4.24,-1.99 2.29,0.06 2.46,3.2 3.09,3.77 2.93,-0.04 7.08,0.91 8.5,-2.49 2.02,-1.97 3.8,-4.92 6.21,-7.02 2.27,-1.54 0.39,-4.74 2.54,-6.4 1.4,-1.49 3.11,-3.84 -0.06,-3.89 -2.06,-1.17 -3.31,-3.74 -0.87,-5.29 0.4,-1.53 -1.44,-3.09 0.76,-4.19 2.73,-1.36 6.13,-4.43 2.26,-6.76 -1.6,-2.02 -3.91,-2.65 -5.92,-3.04 -1.27,-2 -1.73,-3.98 -2.6,-5.89 -0.82,-0.25 1.22,-2.33 -1.1,-2.27 -1.84,-1.29 -4.2,-1.14 -5.91,-2.76 -0.62,-1.82 -0.09,-1.2 -1.26,-0.03 -2.05,2.08 -3.47,-2.98 -0.74,-2.02 0.76,-1.1 -0.4,-3.36 1.4,-4.52 2.37,-3.1 -2.64,-4.46 -3.59,-6.62 -0.37,-1.97 -2.06,-4.51 -3.97,-2.34 -2.56,0.88 -4.13,-1.12 -5.49,-2.82 z\",\n                        \"department-68\" : \"m 549.43,183.82 c -2.25,1 -2.94,3.73 -3.79,5.81 -0.9,2.15 -3.75,4.26 -2.11,6.74 -0.93,2.22 -2.92,4.25 -3.93,6.64 -2.43,1.18 -3.51,3.7 -3.19,6.38 0.13,1.69 -1.55,2.36 -0.44,3.95 0.77,2.64 -4.62,1.97 -2.6,4.52 2.13,1.91 5.37,1.9 7.52,3.96 0.67,1.81 1.6,4.32 0.06,6.09 -1.78,1.43 -0.08,4 1.85,2.88 1.83,0.98 2.47,3.66 3.32,5.16 -0.72,2.04 1.34,2.1 2.39,2.44 -0.32,1.38 -1.23,4 1.33,3.32 1.03,1.33 2.07,1.29 3.35,0.31 2.56,-0.08 5.85,0.35 7.17,-2.31 -0.73,-1.24 -0.96,-2.18 0.78,-1.43 2.66,0.8 0.35,-2.42 2.52,-2.38 0.82,-0.85 -1.99,-1.47 0.03,-2.05 1.88,-1.02 4.21,-2.78 2.05,-4.99 -1.7,-1.63 -3.7,-3.88 -1.43,-6.04 0.91,-2.16 -1.41,-4.57 0.56,-6.71 0.67,-2 0.44,-4 1.78,-5.83 -0.03,-2.09 3.45,-4.94 0.43,-6.95 -3.06,-1.46 0.88,-6.62 -2.19,-7 -1.65,-0.56 -1.53,-2.31 -3.25,-2.51 -0.17,-1.94 -0.33,-3.93 -2.69,-4.35 -2.09,-1.1 -4.78,-1.23 -5.71,-3.58 0.07,-2.15 -2.48,-1.52 -3.79,-2.06 z\",\n                        \"department-90\" : \"m 532.37,216.22 c -0.55,0.23 -0.49,0.97 -0.95,1.33 -0.62,0.8 -1.51,1.36 -1.95,2.3 -0.77,0.99 -0.8,2.48 -0.08,3.5 -0.03,0.67 0.48,1.24 0.41,1.93 -0.01,0.83 -0.07,1.76 0.62,2.36 0.29,0.29 0.48,0.66 0.1,0.97 -0.14,0.38 -0.57,0.43 -0.76,0.72 -0.05,0.5 0.53,0.78 0.56,1.29 0.18,0.47 0.52,0.85 0.75,1.28 0.26,0.15 0.87,0.53 0.4,0.81 -0.7,0.47 -0.05,1.72 0.76,1.5 0.78,0.02 1.57,-0.19 2.27,-0.46 0.8,0.18 1.42,0.82 1.45,1.64 0.04,0.86 1.41,0.54 1.43,1.42 0.01,0.47 0.26,1.11 -0.01,1.5 -0.5,0.35 -0.45,-0.64 -0.86,-0.74 -0.5,-0.2 -0.94,0.42 -0.64,0.85 0.2,0.34 -0.18,0.93 0.34,1.04 0.43,0.61 0.84,1.44 0.71,2.19 -0.36,0.5 0.42,0.64 0.75,0.45 0.83,-0.18 1.47,-0.8 2.26,-1.07 0.62,-0.6 -0.22,-1.42 -0.38,-2.05 -0.12,-0.36 -0.45,-1.06 0.17,-1.13 0.42,-0.08 0.81,-0.3 1.15,-0.48 0.96,0.2 1.82,0.91 2.86,0.71 1.1,-0.11 2.47,-0.62 2.45,-1.94 0.16,-1 -0.69,-1.62 -1.41,-2.13 -0.16,-0.46 -0.02,-1.09 -0.52,-1.4 -0.45,-0.55 -0.43,-1.71 -1.38,-1.73 -0.72,-0.12 -1.46,0.05 -1.95,0.59 -0.4,0.24 -0.3,-0.53 -0.6,-0.62 -0.31,-0.79 -0.34,-1.73 0.1,-2.47 0.16,-0.36 0.01,-1.1 0.63,-0.98 0.41,0.01 0.38,-0.37 0.4,-0.64 0.61,-1 -0.15,-2.14 -0.3,-3.13 0.23,-0.47 0.38,-1.05 -0.1,-1.44 -0.8,-1.1 -2.3,-1.18 -3.29,-2.06 -0.38,-0.36 -0.84,-0.58 -1.33,-0.6 -0.84,-0.67 -2.13,-0.38 -2.92,-1.15 -0.45,-0.63 -0.74,-1.4 -0.95,-2.13 -0.05,-0.04 -0.12,-0.05 -0.18,-0.04 z\"\n                    }\n                }\n            }\n        }\n    );\n\n    return Mapael;\n\n}));"
  },
  {
    "path": "public/admin/js/map/jquery.mapael.js",
    "content": "/*!\n *\n * Jquery Mapael - Dynamic maps jQuery plugin (based on raphael.js)\n * Requires jQuery, raphael.js and jquery.mousewheel\n *\n * Version: 2.1.0\n *\n * Copyright (c) 2017 Vincent Brout (https://www.vincentbroute.fr/mapael)\n * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php).\n *\n * Thanks to Indigo744\n *\n */\n(function (factory) {\n    if (typeof exports === 'object') {\n        // CommonJS\n        module.exports = factory(require('jquery'), require('raphael'), require('jquery-mousewheel'));\n    } else if (typeof define === 'function' && define.amd) {\n        // AMD. Register as an anonymous module.\n        define(['jquery', 'raphael', 'mousewheel'], factory);\n    } else {\n        // Browser globals\n        factory(jQuery, Raphael, jQuery.fn.mousewheel);\n    }\n}(function ($, Raphael, mousewheel, undefined) {\n\n    \"use strict\";\n\n    // The plugin name (used on several places)\n    var pluginName = \"mapael\";\n\n    // Version number of jQuery Mapael. See http://semver.org/ for more information.\n    var version = \"2.1.0\";\n\n    /*\n     * Mapael constructor\n     * Init instance vars and call init()\n     * @param container the DOM element on which to apply the plugin\n     * @param options the complete options to use\n     */\n    var Mapael = function (container, options) {\n        var self = this;\n\n        // the global container (DOM element object)\n        self.container = container;\n\n        // the global container (jQuery object)\n        self.$container = $(container);\n\n        // the global options\n        self.options = self.extendDefaultOptions(options);\n\n        // zoom TimeOut handler (used to set and clear)\n        self.zoomTO = 0;\n\n        // zoom center coordinate (set at touchstart)\n        self.zoomCenterX = 0;\n        self.zoomCenterY = 0;\n\n        // Zoom pinch (set at touchstart and touchmove)\n        self.previousPinchDist = 0;\n\n        // Zoom data\n        self.zoomData = {\n            zoomLevel: 0,\n            zoomX: 0,\n            zoomY: 0,\n            panX: 0,\n            panY: 0\n        };\n\n        // resize TimeOut handler (used to set and clear)\n        self.resizeTO = 0;\n\n        // Panning: tell if panning action is in progress\n        self.panning = false;\n\n        // Panning TimeOut handler (used to set and clear)\n        self.panningTO = 0;\n\n        // Animate view box Interval handler (used to set and clear)\n        self.animationIntervalID = null;\n\n        // Map subcontainer jQuery object\n        self.$map = $(\".\" + self.options.map.cssClass, self.container);\n\n        // Save initial HTML content (used by destroy method)\n        self.initialMapHTMLContent = self.$map.html();\n\n        // Allow to store legend containers and initial contents (used by destroy method)\n        self.createdLegends = {};\n\n        // The tooltip jQuery object\n        self.$tooltip = {};\n\n        // The paper Raphael object\n        self.paper = {};\n\n        // The areas object list\n        self.areas = {};\n\n        // The plots object list\n        self.plots = {};\n\n        // The links object list\n        self.links = {};\n\n        // The map configuration object (taken from map file)\n        self.mapConf = {};\n\n        // Let's start the initialization\n        self.init();\n    };\n\n    /*\n     * Mapael Prototype\n     * Defines all methods and properties needed by Mapael\n     * Each mapael object inherits their properties and methods from this prototype\n     */\n    Mapael.prototype = {\n\n        /*\n         * Version number\n         */\n        version: version,\n\n        /*\n         * Initialize the plugin\n         * Called by the constructor\n         */\n        init: function () {\n            var self = this;\n\n            // Init check for class existence\n            if (self.options.map.cssClass === \"\" || $(\".\" + self.options.map.cssClass, self.container).length === 0) {\n                throw new Error(\"The map class `\" + self.options.map.cssClass + \"` doesn't exists\");\n            }\n\n            // Create the tooltip container\n            self.$tooltip = $(\"<div>\").addClass(self.options.map.tooltip.cssClass).css(\"display\", \"none\");\n\n            // Get the map container, empty it then append tooltip\n            self.$map.empty().append(self.$tooltip);\n\n            // Get the map from $.mapael or $.fn.mapael (backward compatibility)\n            if ($[pluginName] && $[pluginName].maps && $[pluginName].maps[self.options.map.name]) {\n                // Mapael version >= 2.x\n                self.mapConf = $[pluginName].maps[self.options.map.name];\n            } else if ($.fn[pluginName] && $.fn[pluginName].maps && $.fn[pluginName].maps[self.options.map.name]) {\n                // Mapael version <= 1.x - DEPRECATED\n                self.mapConf = $.fn[pluginName].maps[self.options.map.name];\n                if (window.console && window.console.warn) {\n                    window.console.warn(\"Extending $.fn.mapael is deprecated (map '\" + self.options.map.name + \"')\");\n                }\n            } else {\n                throw new Error(\"Unknown map '\" + self.options.map.name + \"'\");\n            }\n\n            // Create Raphael paper\n            self.paper = new Raphael(self.$map[0], self.mapConf.width, self.mapConf.height);\n\n            // issue #135: Check for Raphael bug on text element boundaries\n            if (self.isRaphaelBBoxBugPresent() === true) {\n                self.destroy();\n                throw new Error(\"Can't get boundary box for text (is your container hidden? See #135)\");\n            }\n\n            // add plugin class name on element\n            self.$container.addClass(pluginName);\n\n            if (self.options.map.tooltip.css) self.$tooltip.css(self.options.map.tooltip.css);\n            self.paper.setViewBox(0, 0, self.mapConf.width, self.mapConf.height, false);\n\n            // Handle map size\n            if (self.options.map.width) {\n                // NOT responsive: map has a fixed width\n                self.paper.setSize(self.options.map.width, self.mapConf.height * (self.options.map.width / self.mapConf.width));\n\n                // Create the legends for plots taking into account the scale of the map\n                self.createLegends(\"plot\", self.plots, (self.options.map.width / self.mapConf.width));\n            } else {\n                // Responsive: handle resizing of the map\n                self.handleMapResizing();\n            }\n\n            // Draw map areas\n            $.each(self.mapConf.elems, function (id) {\n                var elemOptions = self.getElemOptions(\n                    self.options.map.defaultArea,\n                    (self.options.areas[id] ? self.options.areas[id] : {}),\n                    self.options.legend.area\n                );\n                self.areas[id] = {\"mapElem\": self.paper.path(self.mapConf.elems[id]).attr(elemOptions.attrs)};\n            });\n\n            // Hook that allows to add custom processing on the map\n            if (self.options.map.beforeInit) self.options.map.beforeInit(self.$container, self.paper, self.options);\n\n            // Init map areas in a second loop (prevent texts to be hidden by map elements)\n            $.each(self.mapConf.elems, function (id) {\n                var elemOptions = self.getElemOptions(\n                    self.options.map.defaultArea,\n                    (self.options.areas[id] ? self.options.areas[id] : {}),\n                    self.options.legend.area\n                );\n                self.initElem(self.areas[id], elemOptions, id);\n            });\n\n            // Draw links\n            self.links = self.drawLinksCollection(self.options.links);\n\n            // Draw plots\n            $.each(self.options.plots, function (id) {\n                self.plots[id] = self.drawPlot(id);\n            });\n\n            // Attach zoom event\n            self.$container.on(\"zoom.\" + pluginName, function (e, zoomOptions) {\n                self.onZoomEvent(e, zoomOptions);\n            });\n\n            if (self.options.map.zoom.enabled) {\n                // Enable zoom\n                self.initZoom(self.mapConf.width, self.mapConf.height, self.options.map.zoom);\n            }\n\n            // Set initial zoom\n            if (self.options.map.zoom.init !== undefined) {\n                if (self.options.map.zoom.init.animDuration === undefined) {\n                    self.options.map.zoom.init.animDuration = 0;\n                }\n                self.$container.trigger(\"zoom\", self.options.map.zoom.init);\n            }\n\n            // Create the legends for areas\n            self.createLegends(\"area\", self.areas, 1);\n\n            // Attach update event\n            self.$container.on(\"update.\" + pluginName, function (e, opt) {\n                self.onUpdateEvent(e, opt);\n            });\n\n            // Attach showElementsInRange event\n            self.$container.on(\"showElementsInRange.\" + pluginName, function (e, opt) {\n                self.onShowElementsInRange(e, opt);\n            });\n\n            // Hook that allows to add custom processing on the map\n            if (self.options.map.afterInit) self.options.map.afterInit(self.$container, self.paper, self.areas, self.plots, self.options);\n\n            $(self.paper.desc).append(\" and Mapael \" + self.version + \" (https://www.vincentbroute.fr/mapael/)\");\n        },\n\n        /*\n         * Destroy mapael\n         * This function effectively detach mapael from the container\n         *   - Set the container back to the way it was before mapael instanciation\n         *   - Remove all data associated to it (memory can then be free'ed by browser)\n         *\n         * This method can be call directly by user:\n         *     $(\".mapcontainer\").data(\"mapael\").destroy();\n         *\n         * This method is also automatically called if the user try to call mapael\n         * on a container already containing a mapael instance\n         */\n        destroy: function () {\n            var self = this;\n\n            // Detach all event listeners attached to the container\n            self.$container.off(\".\" + pluginName);\n            self.$map.off(\".\" + pluginName);\n\n            // Detach the global resize event handler\n            if (self.onResizeEvent) $(window).off(\"resize.\" + pluginName, self.onResizeEvent);\n\n            // Empty the container (this will also detach all event listeners)\n            self.$map.empty();\n\n            // Replace initial HTML content\n            self.$map.html(self.initialMapHTMLContent);\n\n            // Empty legend containers and replace initial HTML content\n            for (var id in self.createdLegends) {\n                self.createdLegends[id].container.empty();\n                self.createdLegends[id].container.html(self.createdLegends[id].initialHTMLContent);\n            }\n\n            // Remove mapael class\n            self.$container.removeClass(pluginName);\n\n            // Remove the data\n            self.$container.removeData(pluginName);\n\n            // Remove all internal reference\n            self.container = undefined;\n            self.$container = undefined;\n            self.options = undefined;\n            self.paper = undefined;\n            self.$map = undefined;\n            self.$tooltip = undefined;\n            self.mapConf = undefined;\n            self.areas = undefined;\n            self.plots = undefined;\n            self.links = undefined;\n        },\n\n        handleMapResizing: function () {\n            var self = this;\n\n            // onResizeEvent: call when the window element trigger the resize event\n            // We create it inside this function (and not in the prototype) in order to have a closure\n            // Otherwise, in the prototype, 'this' when triggered is *not* the mapael object but the global window\n            self.onResizeEvent = function () {\n                // Clear any previous setTimeout (avoid too much triggering)\n                clearTimeout(self.resizeTO);\n                // setTimeout to wait for the user to finish its resizing\n                self.resizeTO = setTimeout(function () {\n                    self.$map.trigger(\"resizeEnd\");\n                }, 150);\n            };\n\n            // Attach resize handler\n            $(window).on(\"resize.\" + pluginName, self.onResizeEvent);\n\n            // Attach resize end handler, and call it once\n            self.$map.on(\"resizeEnd.\" + pluginName, function (e, isInit) {\n                var containerWidth = self.$map.width();\n\n                if (self.paper.width != containerWidth) {\n                    var newScale = containerWidth / self.mapConf.width;\n                    // Set new size\n                    self.paper.setSize(containerWidth, self.mapConf.height * newScale);\n\n                    // Create plots legend again to take into account the new scale\n                    if (isInit || self.options.legend.redrawOnResize) {\n                        self.createLegends(\"plot\", self.plots, newScale);\n                    }\n                }\n            }).trigger(\"resizeEnd\", [true]);\n        },\n\n        /*\n         * Extend the user option with the default one\n         * @param options the user options\n         * @return new options object\n         */\n        extendDefaultOptions: function (options) {\n\n            // Extend default options with user options\n            options = $.extend(true, {}, Mapael.prototype.defaultOptions, options);\n\n            // Extend legend default options\n            $.each(['area', 'plot'], function (key, type) {\n                if ($.isArray(options.legend[type])) {\n                    for (var i = 0; i < options.legend[type].length; ++i)\n                        options.legend[type][i] = $.extend(true, {}, Mapael.prototype.legendDefaultOptions[type], options.legend[type][i]);\n                } else {\n                    options.legend[type] = $.extend(true, {}, Mapael.prototype.legendDefaultOptions[type], options.legend[type]);\n                }\n            });\n\n            return options;\n        },\n\n        /*\n         * Init the element \"elem\" on the map (drawing, setting attributes, events, tooltip, ...)\n         */\n        initElem: function (elem, elemOptions, id) {\n            var self = this;\n            var bbox = {};\n            var textPosition = {};\n\n            // Assign value attribute to element\n            if (elemOptions.value !== undefined){\n                elem.value = elemOptions.value;\n            }\n\n            // Init the label related to the element\n            if (elemOptions.text && elemOptions.text.content !== undefined) {\n                // Set a text label in the area\n                bbox = elem.mapElem.getBBox();\n                textPosition = self.getTextPosition(bbox, elemOptions.text.position, elemOptions.text.margin);\n                elemOptions.text.attrs[\"text-anchor\"] = textPosition.textAnchor;\n                elem.textElem = self.paper.text(textPosition.x, textPosition.y, elemOptions.text.content).attr(elemOptions.text.attrs);\n                $(elem.textElem.node).attr(\"data-id\", id);\n            }\n\n            // Set user event handlers\n            if (elemOptions.eventHandlers) self.setEventHandlers(id, elemOptions, elem.mapElem, elem.textElem);\n\n            // Set hover option for mapElem\n            self.setHoverOptions(elem.mapElem, elemOptions.attrs, elemOptions.attrsHover);\n\n            // Set hover option for textElem\n            if (elem.textElem) self.setHoverOptions(elem.textElem, elemOptions.text.attrs, elemOptions.text.attrsHover);\n\n            // Set hover behavior only if attrsHover is set for area or for text\n            if (($.isEmptyObject(elemOptions.attrsHover) === false) ||\n                (elem.textElem && $.isEmptyObject(elemOptions.text.attrsHover) === false)) {\n                // Set hover behavior\n                self.setHover(elem.mapElem, elem.textElem);\n            }\n\n            // Init the tooltip\n            if (elemOptions.tooltip) {\n                elem.mapElem.tooltip = elemOptions.tooltip;\n                self.setTooltip(elem.mapElem);\n\n                if (elemOptions.text && elemOptions.text.content !== undefined) {\n                    elem.textElem.tooltip = elemOptions.tooltip;\n                    self.setTooltip(elem.textElem);\n                }\n            }\n\n            // Init the link\n            if (elemOptions.href) {\n                elem.mapElem.href = elemOptions.href;\n                elem.mapElem.target = elemOptions.target;\n                self.setHref(elem.mapElem);\n\n                if (elemOptions.text && elemOptions.text.content !== undefined) {\n                    elem.textElem.href = elemOptions.href;\n                    elem.textElem.target = elemOptions.target;\n                    self.setHref(elem.textElem);\n                }\n            }\n\n            if (elemOptions.cssClass !== undefined) {\n                $(elem.mapElem.node).addClass(elemOptions.cssClass);\n            }\n\n            $(elem.mapElem.node).attr(\"data-id\", id);\n        },\n\n        /*\n         * Init zoom and panning for the map\n         * @param mapWidth\n         * @param mapHeight\n         * @param zoomOptions\n         */\n        initZoom: function (mapWidth, mapHeight, zoomOptions) {\n            var self = this;\n            var mousedown = false;\n            var previousX = 0;\n            var previousY = 0;\n            var fnZoomButtons = {\n                \"reset\": function () {\n                    self.$container.trigger(\"zoom\", {\"level\": 0});\n                },\n                \"in\": function () {\n                    self.$container.trigger(\"zoom\", {\"level\": \"+1\"});\n                },\n                \"out\": function () {\n                    self.$container.trigger(\"zoom\", {\"level\": -1});\n                }\n            };\n\n            // init Zoom data\n            $.extend(self.zoomData, {\n                zoomLevel: 0,\n                panX: 0,\n                panY: 0\n            });\n\n            // init zoom buttons\n            $.each(zoomOptions.buttons, function(type, opt) {\n                if (fnZoomButtons[type] === undefined) throw new Error(\"Unknown zoom button '\" + type + \"'\");\n                // Create div with classes, contents and title (for tooltip)\n                var $button = $(\"<div>\").addClass(opt.cssClass)\n                    .html(opt.content)\n                    .attr(\"title\", opt.title);\n                // Assign click event\n                $button.on(\"click.\" + pluginName, fnZoomButtons[type]);\n                // Append to map\n                self.$map.append($button);\n            });\n\n            // Update the zoom level of the map on mousewheel\n            if (self.options.map.zoom.mousewheel) {\n                self.$map.on(\"mousewheel.\" + pluginName, function (e) {\n                    var zoomLevel = (e.deltaY > 0) ? 1 : -1;\n                    var coord = self.mapPagePositionToXY(e.pageX, e.pageY);\n\n                    self.$container.trigger(\"zoom\", {\n                        \"fixedCenter\": true,\n                        \"level\": self.zoomData.zoomLevel + zoomLevel,\n                        \"x\": coord.x,\n                        \"y\": coord.y\n                    });\n\n                    e.preventDefault();\n                });\n            }\n\n            // Update the zoom level of the map on touch pinch\n            if (self.options.map.zoom.touch) {\n                self.$map.on(\"touchstart.\" + pluginName, function (e) {\n                    if (e.originalEvent.touches.length === 2) {\n                        self.zoomCenterX = (e.originalEvent.touches[0].pageX + e.originalEvent.touches[1].pageX) / 2;\n                        self.zoomCenterY = (e.originalEvent.touches[0].pageY + e.originalEvent.touches[1].pageY) / 2;\n                        self.previousPinchDist = Math.sqrt(Math.pow((e.originalEvent.touches[1].pageX - e.originalEvent.touches[0].pageX), 2) + Math.pow((e.originalEvent.touches[1].pageY - e.originalEvent.touches[0].pageY), 2));\n                    }\n                });\n\n                self.$map.on(\"touchmove.\" + pluginName, function (e) {\n                    var pinchDist = 0;\n                    var zoomLevel = 0;\n\n                    if (e.originalEvent.touches.length === 2) {\n                        pinchDist = Math.sqrt(Math.pow((e.originalEvent.touches[1].pageX - e.originalEvent.touches[0].pageX), 2) + Math.pow((e.originalEvent.touches[1].pageY - e.originalEvent.touches[0].pageY), 2));\n\n                        if (Math.abs(pinchDist - self.previousPinchDist) > 15) {\n                            var coord = self.mapPagePositionToXY(self.zoomCenterX, self.zoomCenterY);\n                            zoomLevel = (pinchDist - self.previousPinchDist) / Math.abs(pinchDist - self.previousPinchDist);\n                            self.$container.trigger(\"zoom\", {\n                                \"fixedCenter\": true,\n                                \"level\": self.zoomData.zoomLevel + zoomLevel,\n                                \"x\": coord.x,\n                                \"y\": coord.y\n                            });\n                            self.previousPinchDist = pinchDist;\n                        }\n                        return false;\n                    }\n                });\n            }\n\n            // When the user drag the map, prevent to move the clicked element instead of dragging the map (behaviour seen with Firefox)\n            self.$map.on(\"dragstart\", function() {\n                return false;\n            });\n\n            // Panning\n            $(\"body\").on(\"mouseup.\" + pluginName + (zoomOptions.touch ? \" touchend.\" + pluginName : \"\"), function () {\n                mousedown = false;\n                setTimeout(function () {\n                    self.panning = false;\n                }, 50);\n            });\n\n            self.$map.on(\"mousedown.\" + pluginName + (zoomOptions.touch ? \" touchstart.\" + pluginName : \"\"), function (e) {\n                if (e.pageX !== undefined) {\n                    mousedown = true;\n                    previousX = e.pageX;\n                    previousY = e.pageY;\n                } else {\n                    if (e.originalEvent.touches.length === 1) {\n                        mousedown = true;\n                        previousX = e.originalEvent.touches[0].pageX;\n                        previousY = e.originalEvent.touches[0].pageY;\n                    }\n                }\n            }).on(\"mousemove.\" + pluginName + (zoomOptions.touch ? \" touchmove.\" + pluginName : \"\"), function (e) {\n                var currentLevel = self.zoomData.zoomLevel;\n                var pageX = 0;\n                var pageY = 0;\n\n                if (e.pageX !== undefined) {\n                    pageX = e.pageX;\n                    pageY = e.pageY;\n                } else {\n                    if (e.originalEvent.touches.length === 1) {\n                        pageX = e.originalEvent.touches[0].pageX;\n                        pageY = e.originalEvent.touches[0].pageY;\n                    } else {\n                        mousedown = false;\n                    }\n                }\n\n                if (mousedown && currentLevel !== 0) {\n                    var offsetX = (previousX - pageX) / (1 + (currentLevel * zoomOptions.step)) * (mapWidth / self.paper.width);\n                    var offsetY = (previousY - pageY) / (1 + (currentLevel * zoomOptions.step)) * (mapHeight / self.paper.height);\n                    var panX = Math.min(Math.max(0, self.paper._viewBox[0] + offsetX), (mapWidth - self.paper._viewBox[2]));\n                    var panY = Math.min(Math.max(0, self.paper._viewBox[1] + offsetY), (mapHeight - self.paper._viewBox[3]));\n\n                    if (Math.abs(offsetX) > 5 || Math.abs(offsetY) > 5) {\n                        $.extend(self.zoomData, {\n                            panX: panX,\n                            panY: panY,\n                            zoomX: panX + self.paper._viewBox[2] / 2,\n                            zoomY: panY + self.paper._viewBox[3] / 2\n                        });\n                        self.paper.setViewBox(panX, panY, self.paper._viewBox[2], self.paper._viewBox[3]);\n\n                        clearTimeout(self.panningTO);\n                        self.panningTO = setTimeout(function () {\n                            self.$map.trigger(\"afterPanning\", {\n                                x1: panX,\n                                y1: panY,\n                                x2: (panX + self.paper._viewBox[2]),\n                                y2: (panY + self.paper._viewBox[3])\n                            });\n                        }, 150);\n\n                        previousX = pageX;\n                        previousY = pageY;\n                        self.panning = true;\n                    }\n                    return false;\n                }\n            });\n        },\n\n        /*\n         * Map a mouse position to a map position\n         *      Transformation principle:\n         *          ** start with (pageX, pageY) absolute mouse coordinate\n         *          - Apply translation: take into accounts the map offset in the page\n         *          ** from this point, we have relative mouse coordinate\n         *          - Apply homothetic transformation: take into accounts initial factor of map sizing (fullWidth / actualWidth)\n         *          - Apply homothetic transformation: take into accounts the zoom factor\n         *          ** from this point, we have relative map coordinate\n         *          - Apply translation: take into accounts the current panning of the map\n         *          ** from this point, we have absolute map coordinate\n         * @param pageX: mouse client coordinate on X\n         * @param pageY: mouse client coordinate on Y\n         * @return map coordinate {x, y}\n         */\n        mapPagePositionToXY: function(pageX, pageY) {\n            var self = this;\n            var offset = self.$map.offset();\n            var initFactor = (self.options.map.width) ? (self.mapConf.width / self.options.map.width) : (self.mapConf.width / self.$map.width());\n            var zoomFactor = 1 / (1 + (self.zoomData.zoomLevel * self.options.map.zoom.step));\n            return {\n                x: (zoomFactor * initFactor * (pageX - offset.left)) + self.zoomData.panX,\n                y: (zoomFactor * initFactor * (pageY - offset.top)) + self.zoomData.panY\n            };\n        },\n\n        /*\n         * Zoom on the map at a specific level focused on specific coordinates\n         * If no coordinates are specified, the zoom will be focused on the center of the map\n         * options :\n         *    \"level\" : level of the zoom between minLevel and maxLevel\n         *    \"x\" or \"latitude\" : x coordinate or latitude of the point to focus on\n         *    \"y\" or \"longitude\" : y coordinate or longitude of the point to focus on\n         *    \"fixedCenter\" : set to true in order to preserve the position of x,y in the canvas when zoomed\n         *    \"animDuration\" : zoom duration\n         */\n        onZoomEvent: function (e, zoomOptions) {\n            var self = this;\n            var newLevel = self.zoomData.zoomLevel;\n            var panX = 0;\n            var panY = 0;\n            var previousZoomLevel = (1 + self.zoomData.zoomLevel * self.options.map.zoom.step);\n            var zoomLevel = 0;\n            var animDuration = (zoomOptions.animDuration !== undefined) ? zoomOptions.animDuration : self.options.map.zoom.animDuration;\n            var offsetX = 0;\n            var offsetY = 0;\n            var coords = {};\n\n            // Get user defined zoom level\n            if (zoomOptions.level !== undefined) {\n                if (typeof zoomOptions.level === \"string\") {\n                    // level is a string, either \"n\", \"+n\" or \"-n\"\n                    if ((zoomOptions.level.slice(0, 1) === '+') || (zoomOptions.level.slice(0, 1) === '-')) {\n                        // zoomLevel is relative\n                        newLevel = self.zoomData.zoomLevel + parseInt(zoomOptions.level);\n                    } else {\n                        // zoomLevel is absolute\n                        newLevel = parseInt(zoomOptions.level);\n                    }\n                } else {\n                    // level is integer\n                    if (zoomOptions.level < 0) {\n                        // zoomLevel is relative\n                        newLevel = self.zoomData.zoomLevel + zoomOptions.level;\n                    } else {\n                        // zoomLevel is absolute\n                        newLevel = zoomOptions.level;\n                    }\n                }\n                // Make sure we stay in the boundaries\n                newLevel = Math.min(Math.max(newLevel, self.options.map.zoom.minLevel), self.options.map.zoom.maxLevel);\n            }\n\n            zoomLevel = (1 + newLevel * self.options.map.zoom.step);\n\n            if (zoomOptions.latitude !== undefined && zoomOptions.longitude !== undefined) {\n                coords = self.mapConf.getCoords(zoomOptions.latitude, zoomOptions.longitude);\n                zoomOptions.x = coords.x;\n                zoomOptions.y = coords.y;\n            }\n\n            if (zoomOptions.x === undefined)\n                zoomOptions.x = self.paper._viewBox[0] + self.paper._viewBox[2] / 2;\n\n            if (zoomOptions.y === undefined)\n                zoomOptions.y = (self.paper._viewBox[1] + self.paper._viewBox[3] / 2);\n\n            if (newLevel === 0) {\n                panX = 0;\n                panY = 0;\n            } else if (zoomOptions.fixedCenter !== undefined && zoomOptions.fixedCenter === true) {\n                offsetX = self.zoomData.panX + ((zoomOptions.x - self.zoomData.panX) * (zoomLevel - previousZoomLevel)) / zoomLevel;\n                offsetY = self.zoomData.panY + ((zoomOptions.y - self.zoomData.panY) * (zoomLevel - previousZoomLevel)) / zoomLevel;\n\n                panX = Math.min(Math.max(0, offsetX), (self.mapConf.width - (self.mapConf.width / zoomLevel)));\n                panY = Math.min(Math.max(0, offsetY), (self.mapConf.height - (self.mapConf.height / zoomLevel)));\n            } else {\n                panX = Math.min(Math.max(0, zoomOptions.x - (self.mapConf.width / zoomLevel) / 2), (self.mapConf.width - (self.mapConf.width / zoomLevel)));\n                panY = Math.min(Math.max(0, zoomOptions.y - (self.mapConf.height / zoomLevel) / 2), (self.mapConf.height - (self.mapConf.height / zoomLevel)));\n            }\n\n            // Update zoom level of the map\n            if (zoomLevel == previousZoomLevel && panX == self.zoomData.panX && panY == self.zoomData.panY) return;\n\n            if (animDuration > 0) {\n                self.animateViewBox(panX, panY, self.mapConf.width / zoomLevel, self.mapConf.height / zoomLevel, animDuration, self.options.map.zoom.animEasing);\n            } else {\n                self.paper.setViewBox(panX, panY, self.mapConf.width / zoomLevel, self.mapConf.height / zoomLevel);\n                clearTimeout(self.zoomTO);\n                self.zoomTO = setTimeout(function () {\n                    self.$map.trigger(\"afterZoom\", {\n                        x1: panX,\n                        y1: panY,\n                        x2: (panX + (self.mapConf.width / zoomLevel)),\n                        y2: (panY + (self.mapConf.height / zoomLevel))\n                    });\n                }, 150);\n            }\n\n            $.extend(self.zoomData, {\n                zoomLevel: newLevel,\n                panX: panX,\n                panY: panY,\n                zoomX: panX + self.paper._viewBox[2] / 2,\n                zoomY: panY + self.paper._viewBox[3] / 2\n            });\n        },\n\n        /*\n         * Show some element in range defined by user\n         * Triggered by user $(\".mapcontainer\").trigger(\"showElementsInRange\", [opt]);\n         *\n         * @param opt the options\n         *  opt.hiddenOpacity opacity for hidden element (default = 0.3)\n         *  opt.animDuration animation duration in ms (default = 0)\n         *  opt.afterShowRange callback\n         *  opt.ranges the range to show:\n         *  Example:\n         *  opt.ranges = {\n         *      'plot' : {\n         *          0 : {                        // valueIndex\n         *              'min': 1000,\n         *              'max': 1200\n         *          },\n         *          1 : {                        // valueIndex\n         *              'min': 10,\n         *              'max': 12\n         *          }\n         *      },\n         *      'area' : {\n         *          {'min': 10, 'max': 20}    // No valueIndex, only an object, use 0 as valueIndex (easy case)\n         *      }\n         *  }\n         */\n        onShowElementsInRange: function(e, opt) {\n            var self = this;\n\n            // set animDuration to default if not defined\n            if (opt.animDuration === undefined) {\n                opt.animDuration = 0;\n            }\n\n            // set hiddenOpacity to default if not defined\n            if (opt.hiddenOpacity === undefined) {\n                opt.hiddenOpacity = 0.3;\n            }\n\n            // handle area\n            if (opt.ranges && opt.ranges.area) {\n                self.showElemByRange(opt.ranges.area, self.areas, opt.hiddenOpacity, opt.animDuration);\n            }\n\n            // handle plot\n            if (opt.ranges && opt.ranges.plot) {\n                self.showElemByRange(opt.ranges.plot, self.plots, opt.hiddenOpacity, opt.animDuration);\n            }\n\n            // handle link\n            if (opt.ranges && opt.ranges.link) {\n                self.showElemByRange(opt.ranges.link, self.links, opt.hiddenOpacity, opt.animDuration);\n            }\n\n            // Call user callback\n            if (opt.afterShowRange) opt.afterShowRange();\n        },\n\n        /*\n         * Show some element in range\n         * @param ranges: the ranges\n         * @param elems: list of element on which to check against previous range\n         * @hiddenOpacity: the opacity when hidden\n         * @animDuration: the animation duration\n         */\n        showElemByRange: function(ranges, elems, hiddenOpacity, animDuration) {\n            var self = this;\n            // Hold the final opacity value for all elements consolidated after applying each ranges\n            // This allow to set the opacity only once for each elements\n            var elemsFinalOpacity = {};\n\n            // set object with one valueIndex to 0 if we have directly the min/max\n            if (ranges.min !== undefined || ranges.max !== undefined) {\n                ranges = {0: ranges};\n            }\n\n            // Loop through each valueIndex\n            $.each(ranges, function (valueIndex) {\n                var range = ranges[valueIndex];\n                // Check if user defined at least a min or max value\n                if (range.min === undefined && range.max === undefined) {\n                    return true; // skip this iteration (each loop), goto next range\n                }\n                // Loop through each elements\n                $.each(elems, function (id) {\n                    var elemValue = elems[id].value;\n                    // set value with one valueIndex to 0 if not object\n                    if (typeof elemValue !== \"object\") {\n                        elemValue = [elemValue];\n                    }\n                    // Check existence of this value index\n                    if (elemValue[valueIndex] === undefined) {\n                        return true; // skip this iteration (each loop), goto next element\n                    }\n                    // Check if in range\n                    if ((range.min !== undefined && elemValue[valueIndex] < range.min) ||\n                        (range.max !== undefined && elemValue[valueIndex] > range.max)) {\n                        // Element not in range\n                        elemsFinalOpacity[id] = hiddenOpacity;\n                    } else {\n                        // Element in range\n                        elemsFinalOpacity[id] = 1;\n                    }\n                });\n            });\n            // Now that we looped through all ranges, we can really assign the final opacity\n            $.each(elemsFinalOpacity, function (id) {\n                self.setElementOpacity(elems[id], elemsFinalOpacity[id], animDuration);\n            });\n        },\n\n        /*\n         * Set element opacity\n         * Handle elem.mapElem and elem.textElem\n         * @param elem the element\n         * @param opacity the opacity to apply\n         * @param animDuration the animation duration to use\n         */\n        setElementOpacity: function(elem, opacity, animDuration) {\n            // Ensure no animation is running\n            //elem.mapElem.stop();\n            //if (elem.textElem) elem.textElem.stop();\n\n            // If final opacity is not null, ensure element is shown before proceeding\n            if (opacity > 0) {\n                elem.mapElem.show();\n                if (elem.textElem) elem.textElem.show();\n            }\n            if (animDuration > 0) {\n                // Animate attribute\n                elem.mapElem.animate({\"opacity\": opacity}, animDuration, \"linear\", function () {\n                    // If final attribute is 0, hide\n                    if (opacity === 0) elem.mapElem.hide();\n                });\n                // Handle text element\n                if (elem.textElem) {\n                    // Animate attribute\n                    elem.textElem.animate({\"opacity\": opacity}, animDuration, \"linear\", function () {\n                        // If final attribute is 0, hide\n                        if (opacity === 0) elem.textElem.hide();\n                    });\n                }\n            } else {\n                // Set attribute\n                elem.mapElem.attr({\"opacity\": opacity});\n                // For null opacity, hide it\n                if (opacity === 0) elem.mapElem.hide();\n                // Handle text elemen\n                if (elem.textElem) {\n                    // Set attribute\n                    elem.textElem.attr({\"opacity\": opacity});\n                    // For null opacity, hide it\n                    if (opacity === 0) elem.textElem.hide();\n                }\n            }\n        },\n\n        /*\n         *\n         * Update the current map\n         * Refresh attributes and tooltips for areas and plots\n         * @param opt option for the refresh :\n         *  opt.mapOptions: options to update for plots and areas\n         *  opt.replaceOptions: whether mapsOptions should entirely replace current map options, or just extend it\n         *  opt.opt.newPlots new plots to add to the map\n         *  opt.newLinks new links to add to the map\n         *  opt.deletePlotKeys plots to delete from the map (array, or \"all\" to remove all plots)\n         *  opt.deleteLinkKeys links to remove from the map (array, or \"all\" to remove all links)\n         *  opt.setLegendElemsState the state of legend elements to be set : show (default) or hide\n         *  opt.animDuration animation duration in ms (default = 0)\n         *  opt.afterUpdate Hook that allows to add custom processing on the map\n         */\n        onUpdateEvent: function (e, opt) {\n            var self = this;\n            // Abort if opt is undefined\n            if (typeof opt !== \"object\")  return;\n\n            var i = 0;\n            var animDuration = (opt.animDuration) ? opt.animDuration : 0;\n\n            // This function remove an element using animation (or not, depending on animDuration)\n            // Used for deletePlotKeys and deleteLinkKeys\n            var fnRemoveElement = function (elem) {\n                // Unset all event handlers\n                self.unsetHover(elem.mapElem, elem.textElem);\n                if (animDuration > 0) {\n                    elem.mapElem.animate({\"opacity\": 0}, animDuration, \"linear\", function () {\n                        elem.mapElem.remove();\n                    });\n                    if (elem.textElem) {\n                        elem.textElem.animate({\"opacity\": 0}, animDuration, \"linear\", function () {\n                            elem.textElem.remove();\n                        });\n                    }\n                } else {\n                    elem.mapElem.remove();\n                    if (elem.textElem) {\n                        elem.textElem.remove();\n                    }\n                }\n            };\n\n            // This function show an element using animation\n            // Used for newPlots and newLinks\n            var fnShowElement = function (elem) {\n                // Starts with hidden elements\n                elem.mapElem.attr({opacity: 0});\n                if (elem.textElem) elem.textElem.attr({opacity: 0});\n                // Set final element opacity\n                self.setElementOpacity(\n                    elem,\n                    (elem.mapElem.originalAttrs.opacity !== undefined) ? elem.mapElem.originalAttrs.opacity : 1,\n                    animDuration\n                );\n            };\n\n            if (typeof opt.mapOptions === \"object\") {\n                if (opt.replaceOptions === true) self.options = self.extendDefaultOptions(opt.mapOptions);\n                else $.extend(true, self.options, opt.mapOptions);\n\n                // IF we update areas, plots or legend, then reset all legend state to \"show\"\n                if (opt.mapOptions.areas !== undefined || opt.mapOptions.plots !== undefined || opt.mapOptions.legend !== undefined) {\n                    $(\"[data-type='elem']\", self.$container).each(function (id, elem) {\n                        if ($(elem).attr('data-hidden') === \"1\") {\n                            // Toggle state of element by clicking\n                            $(elem).trigger(\"click\", [false, animDuration]);\n                        }\n                    });\n                }\n            }\n\n            // Delete plots by name if deletePlotKeys is array\n            if (typeof opt.deletePlotKeys === \"object\") {\n                for (; i < opt.deletePlotKeys.length; i++) {\n                    if (self.plots[opt.deletePlotKeys[i]] !== undefined) {\n                        fnRemoveElement(self.plots[opt.deletePlotKeys[i]]);\n                        delete self.plots[opt.deletePlotKeys[i]];\n                    }\n                }\n                // Delete ALL plots if deletePlotKeys is set to \"all\"\n            } else if (opt.deletePlotKeys === \"all\") {\n                $.each(self.plots, function (id, elem) {\n                    fnRemoveElement(elem);\n                });\n                // Empty plots object\n                self.plots = {};\n            }\n\n            // Delete links by name if deleteLinkKeys is array\n            if (typeof opt.deleteLinkKeys === \"object\") {\n                for (i = 0; i < opt.deleteLinkKeys.length; i++) {\n                    if (self.links[opt.deleteLinkKeys[i]] !== undefined) {\n                        fnRemoveElement(self.links[opt.deleteLinkKeys[i]]);\n                        delete self.links[opt.deleteLinkKeys[i]];\n                    }\n                }\n                // Delete ALL links if deleteLinkKeys is set to \"all\"\n            } else if (opt.deleteLinkKeys === \"all\") {\n                $.each(self.links, function (id, elem) {\n                    fnRemoveElement(elem);\n                });\n                // Empty links object\n                self.links = {};\n            }\n\n            // New plots\n            if (typeof opt.newPlots === \"object\") {\n                $.each(opt.newPlots, function (id) {\n                    if (self.plots[id] === undefined) {\n                        self.options.plots[id] = opt.newPlots[id];\n                        self.plots[id] = self.drawPlot(id);\n                        if (animDuration > 0) {\n                            fnShowElement(self.plots[id]);\n                        }\n                    }\n                });\n            }\n\n            // New links\n            if (typeof opt.newLinks === \"object\") {\n                var newLinks = self.drawLinksCollection(opt.newLinks);\n                $.extend(self.links, newLinks);\n                $.extend(self.options.links, opt.newLinks);\n                if (animDuration > 0) {\n                    $.each(newLinks, function (id) {\n                        fnShowElement(newLinks[id]);\n                    });\n                }\n            }\n\n            // Update areas attributes and tooltips\n            $.each(self.areas, function (id) {\n                // Avoid updating unchanged elements\n                if ((typeof opt.mapOptions === \"object\" &&\n                    (\n                        (typeof opt.mapOptions.map === \"object\" && typeof opt.mapOptions.map.defaultArea === \"object\")\n                        || (typeof opt.mapOptions.areas === \"object\" && typeof opt.mapOptions.areas[id] === \"object\")\n                        || (typeof opt.mapOptions.legend === \"object\" && typeof opt.mapOptions.legend.area === \"object\")\n                    ))\n                    || opt.replaceOptions === true\n                ) {\n                    var elemOptions = self.getElemOptions(\n                        self.options.map.defaultArea,\n                        (self.options.areas[id] ? self.options.areas[id] : {}),\n                        self.options.legend.area\n                    );\n                    self.updateElem(elemOptions, self.areas[id], animDuration);\n                }\n            });\n\n            // Update plots attributes and tooltips\n            $.each(self.plots, function (id) {\n                // Avoid updating unchanged elements\n                if ((typeof opt.mapOptions ===\"object\" &&\n                    (\n                        (typeof opt.mapOptions.map === \"object\" && typeof opt.mapOptions.map.defaultPlot === \"object\")\n                        || (typeof opt.mapOptions.plots === \"object\" && typeof opt.mapOptions.plots[id] === \"object\")\n                        || (typeof opt.mapOptions.legend === \"object\" && typeof opt.mapOptions.legend.plot === \"object\")\n                    ))\n                    || opt.replaceOptions === true\n                ) {\n                    var elemOptions = self.getElemOptions(\n                        self.options.map.defaultPlot,\n                        (self.options.plots[id] ? self.options.plots[id] : {}),\n                        self.options.legend.plot\n                    );\n                    if (elemOptions.type == \"square\") {\n                        elemOptions.attrs.width = elemOptions.size;\n                        elemOptions.attrs.height = elemOptions.size;\n                        elemOptions.attrs.x = self.plots[id].mapElem.attrs.x - (elemOptions.size - self.plots[id].mapElem.attrs.width) / 2;\n                        elemOptions.attrs.y = self.plots[id].mapElem.attrs.y - (elemOptions.size - self.plots[id].mapElem.attrs.height) / 2;\n                    } else if (elemOptions.type == \"image\") {\n                        elemOptions.attrs.width = elemOptions.width;\n                        elemOptions.attrs.height = elemOptions.height;\n                        elemOptions.attrs.x = self.plots[id].mapElem.attrs.x - (elemOptions.width - self.plots[id].mapElem.attrs.width) / 2;\n                        elemOptions.attrs.y = self.plots[id].mapElem.attrs.y - (elemOptions.height - self.plots[id].mapElem.attrs.height) / 2;\n                    } else if (elemOptions.type == \"svg\") {\n                        if (elemOptions.attrs.transform !== undefined) {\n                            elemOptions.attrs.transform = self.plots[id].mapElem.baseTransform + elemOptions.attrs.transform;\n                        }\n                    }else { // Default : circle\n                        elemOptions.attrs.r = elemOptions.size / 2;\n                    }\n\n                    self.updateElem(elemOptions, self.plots[id], animDuration);\n                }\n            });\n\n            // Update links attributes and tooltips\n            $.each(self.links, function (id) {\n                // Avoid updating unchanged elements\n                if ((typeof opt.mapOptions === \"object\" &&\n                    (\n                        (typeof opt.mapOptions.map === \"object\" && typeof opt.mapOptions.map.defaultLink === \"object\")\n                        || (typeof opt.mapOptions.links === \"object\" && typeof opt.mapOptions.links[id] === \"object\")\n                    ))\n                    || opt.replaceOptions === true\n                ) {\n                    var elemOptions = self.getElemOptions(\n                        self.options.map.defaultLink,\n                        (self.options.links[id] ? self.options.links[id] : {}),\n                        {}\n                    );\n\n                    self.updateElem(elemOptions, self.links[id], animDuration);\n                }\n            });\n\n            // Update legends\n            if (opt.mapOptions && (\n                    (typeof opt.mapOptions.legend === \"object\")\n                    || (typeof opt.mapOptions.map === \"object\" && typeof opt.mapOptions.map.defaultArea === \"object\")\n                    || (typeof opt.mapOptions.map === \"object\" && typeof opt.mapOptions.map.defaultPlot === \"object\")\n                )) {\n                // Show all elements on the map before updating the legends\n                $(\"[data-type='elem']\", self.$container).each(function (id, elem) {\n                    if ($(elem).attr('data-hidden') === \"1\") {\n                        $(elem).trigger(\"click\", [false, animDuration]);\n                    }\n                });\n\n                self.createLegends(\"area\", self.areas, 1);\n                if (self.options.map.width) {\n                    self.createLegends(\"plot\", self.plots, (self.options.map.width / self.mapConf.width));\n                } else {\n                    self.createLegends(\"plot\", self.plots, (self.$map.width() / self.mapConf.width));\n                }\n            }\n\n            // Hide/Show all elements based on showlegendElems\n            //      Toggle (i.e. click) only if:\n            //          - slice legend is shown AND we want to hide\n            //          - slice legend is hidden AND we want to show\n            if (typeof opt.setLegendElemsState === \"object\") {\n                // setLegendElemsState is an object listing the legend we want to hide/show\n                $.each(opt.setLegendElemsState, function (legendCSSClass, action) {\n                    // Search for the legend\n                    var $legend = self.$container.find(\".\" + legendCSSClass)[0];\n                    if ($legend !== undefined) {\n                        // Select all elem inside this legend\n                        $(\"[data-type='elem']\", $legend).each(function (id, elem) {\n                            if (($(elem).attr('data-hidden') === \"0\" && action === \"hide\") ||\n                                ($(elem).attr('data-hidden') === \"1\" && action === \"show\")) {\n                                // Toggle state of element by clicking\n                                $(elem).trigger(\"click\", [false, animDuration]);\n                            }\n                        });\n                    }\n                });\n            } else {\n                // setLegendElemsState is a string, or is undefined\n                // Default : \"show\"\n                var action = (opt.setLegendElemsState === \"hide\") ? \"hide\" : \"show\";\n\n                $(\"[data-type='elem']\", self.$container).each(function (id, elem) {\n                    if (($(elem).attr('data-hidden') === \"0\" && action === \"hide\") ||\n                        ($(elem).attr('data-hidden') === \"1\" && action === \"show\")) {\n                        // Toggle state of element by clicking\n                        $(elem).trigger(\"click\", [false, animDuration]);\n                    }\n                });\n            }\n            if (opt.afterUpdate) opt.afterUpdate(self.$container, self.paper, self.areas, self.plots, self.options);\n        },\n\n        /*\n         * Draw all links between plots on the paper\n         */\n        drawLinksCollection: function (linksCollection) {\n            var self = this;\n            var p1 = {};\n            var p2 = {};\n            var coordsP1 = {};\n            var coordsP2 = {};\n            var links = {};\n\n            $.each(linksCollection, function (id) {\n                var elemOptions = self.getElemOptions(self.options.map.defaultLink, linksCollection[id], {});\n\n                if (typeof linksCollection[id].between[0] == 'string') {\n                    p1 = self.options.plots[linksCollection[id].between[0]];\n                } else {\n                    p1 = linksCollection[id].between[0];\n                }\n\n                if (typeof linksCollection[id].between[1] == 'string') {\n                    p2 = self.options.plots[linksCollection[id].between[1]];\n                } else {\n                    p2 = linksCollection[id].between[1];\n                }\n\n                if (p1.latitude !== undefined && p1.longitude !== undefined) {\n                    coordsP1 = self.mapConf.getCoords(p1.latitude, p1.longitude);\n                } else {\n                    coordsP1.x = p1.x;\n                    coordsP1.y = p1.y;\n                }\n\n                if (p2.latitude !== undefined && p2.longitude !== undefined) {\n                    coordsP2 = self.mapConf.getCoords(p2.latitude, p2.longitude);\n                } else {\n                    coordsP2.x = p2.x;\n                    coordsP2.y = p2.y;\n                }\n                links[id] = self.drawLink(id, coordsP1.x, coordsP1.y, coordsP2.x, coordsP2.y, elemOptions);\n            });\n            return links;\n        },\n\n        /*\n         * Draw a curved link between two couples of coordinates a(xa,ya) and b(xb, yb) on the paper\n         */\n        drawLink: function (id, xa, ya, xb, yb, elemOptions) {\n            var self = this;\n            var elem = {};\n            // Compute the \"curveto\" SVG point, d(x,y)\n            // c(xc, yc) is the center of (xa,ya) and (xb, yb)\n            var xc = (xa + xb) / 2;\n            var yc = (ya + yb) / 2;\n\n            // Equation for (cd) : y = acd * x + bcd (d is the cure point)\n            var acd = -1 / ((yb - ya) / (xb - xa));\n            var bcd = yc - acd * xc;\n\n            // dist(c,d) = dist(a,b) (=abDist)\n            var abDist = Math.sqrt((xb - xa) * (xb - xa) + (yb - ya) * (yb - ya));\n\n            // Solution for equation dist(cd) = sqrt((xd - xc) + (yd - yc))\n            // dist(c,d) = (xd - xc) + (yd - yc)\n            // We assume that dist(c,d) = dist(a,b)\n            // so : (xd - xc) + (yd - yc) - dist(a,b) = 0\n            // With the factor : (xd - xc) + (yd - yc) - (factor*dist(a,b)) = 0\n            // (xd - xc) + (acd*xd + bcd - yc) - (factor*dist(a,b)) = 0\n            var a = 1 + acd * acd;\n            var b = -2 * xc + 2 * acd * bcd - 2 * acd * yc;\n            var c = xc * xc + bcd * bcd - bcd * yc - yc * bcd + yc * yc - ((elemOptions.factor * abDist) * (elemOptions.factor * abDist));\n            var delta = b * b - 4 * a * c;\n            var x = 0;\n            var y = 0;\n\n            // There are two solutions, we choose one or the other depending on the sign of the factor\n            if (elemOptions.factor > 0) {\n                x = (-b + Math.sqrt(delta)) / (2 * a);\n                y = acd * x + bcd;\n            } else {\n                x = (-b - Math.sqrt(delta)) / (2 * a);\n                y = acd * x + bcd;\n            }\n\n            elem.mapElem = self.paper.path(\"m \" + xa + \",\" + ya + \" C \" + x + \",\" + y + \" \" + xb + \",\" + yb + \" \" + xb + \",\" + yb + \"\").attr(elemOptions.attrs);\n            self.initElem(elem, elemOptions, id);\n\n            return elem;\n        },\n\n        /*\n         * Check wether newAttrs object bring modifications to originalAttrs object\n         */\n        isAttrsChanged: function(originalAttrs, newAttrs) {\n            for (var key in newAttrs) {\n                if (typeof originalAttrs[key] === 'undefined' || newAttrs[key] !== originalAttrs[key]) {\n                    return true;\n                }\n            }\n            return false;\n        },\n\n        /*\n         * Update the element \"elem\" on the map with the new elemOptions options\n         */\n        updateElem: function (elemOptions, elem, animDuration) {\n            var self = this;\n            var bbox;\n            var textPosition;\n            var plotOffsetX;\n            var plotOffsetY;\n\n            if (elemOptions.value !== undefined)\n                elem.value = elemOptions.value;\n\n            if (elemOptions.toFront === true) {\n                elem.mapElem.toFront();\n            }\n\n            // Update the label\n            if (elem.textElem) {\n                if (elemOptions.text !== undefined && elemOptions.text.content !== undefined && elemOptions.text.content != elem.textElem.attrs.text)\n                    elem.textElem.attr({text: elemOptions.text.content});\n\n                bbox = elem.mapElem.getBBox();\n\n                if (elemOptions.size || (elemOptions.width && elemOptions.height)) {\n                    if (elemOptions.type == \"image\" || elemOptions.type == \"svg\") {\n                        plotOffsetX = (elemOptions.width - bbox.width) / 2;\n                        plotOffsetY = (elemOptions.height - bbox.height) / 2;\n                    } else {\n                        plotOffsetX = (elemOptions.size - bbox.width) / 2;\n                        plotOffsetY = (elemOptions.size - bbox.height) / 2;\n                    }\n                    bbox.x -= plotOffsetX;\n                    bbox.x2 += plotOffsetX;\n                    bbox.y -= plotOffsetY;\n                    bbox.y2 += plotOffsetY;\n                }\n\n                textPosition = self.getTextPosition(bbox, elemOptions.text.position, elemOptions.text.margin);\n                if (textPosition.x != elem.textElem.attrs.x || textPosition.y != elem.textElem.attrs.y) {\n                    if (animDuration > 0) {\n                        elem.textElem.attr({\"text-anchor\": textPosition.textAnchor});\n                        elem.textElem.animate({x: textPosition.x, y: textPosition.y}, animDuration);\n                    } else\n                        elem.textElem.attr({\n                            x: textPosition.x,\n                            y: textPosition.y,\n                            \"text-anchor\": textPosition.textAnchor\n                        });\n                }\n\n                self.setHoverOptions(elem.textElem, elemOptions.text.attrs, elemOptions.text.attrsHover);\n                if (animDuration > 0)\n                    elem.textElem.animate(elemOptions.text.attrs, animDuration);\n                else\n                    elem.textElem.attr(elemOptions.text.attrs);\n            }\n\n            // Update elements attrs and attrsHover\n            self.setHoverOptions(elem.mapElem, elemOptions.attrs, elemOptions.attrsHover);\n\n            if (self.isAttrsChanged(elem.mapElem.attrs, elemOptions.attrs)) {\n                if (animDuration > 0)\n                    elem.mapElem.animate(elemOptions.attrs, animDuration);\n                else\n                    elem.mapElem.attr(elemOptions.attrs);\n            }\n\n            // Update dimensions of SVG plots\n            if (elemOptions.type == \"svg\") {\n\n                if (bbox === undefined) {\n                    bbox = elem.mapElem.getBBox();\n                }\n                elem.mapElem.transform(\"m\" + (elemOptions.width / elem.mapElem.originalWidth) + \",0,0,\" + (elemOptions.height / elem.mapElem.originalHeight) + \",\" + bbox.x + \",\" + bbox.y);\n            }\n\n            // Update the tooltip\n            if (elemOptions.tooltip) {\n                if (elem.mapElem.tooltip === undefined) {\n                    self.setTooltip(elem.mapElem);\n                    if (elem.textElem) self.setTooltip(elem.textElem);\n                }\n                elem.mapElem.tooltip = elemOptions.tooltip;\n                if (elem.textElem) elem.textElem.tooltip = elemOptions.tooltip;\n            }\n\n            // Update the link\n            if (elemOptions.href !== undefined) {\n                if (elem.mapElem.href === undefined) {\n                    self.setHref(elem.mapElem);\n                    if (elem.textElem) self.setHref(elem.textElem);\n                }\n                elem.mapElem.href = elemOptions.href;\n                elem.mapElem.target = elemOptions.target;\n                if (elem.textElem) {\n                    elem.textElem.href = elemOptions.href;\n                    elem.textElem.target = elemOptions.target;\n                }\n            }\n        },\n\n        /*\n         * Draw the plot\n         */\n        drawPlot: function (id) {\n            var self = this;\n            var plot = {};\n            var coords = {};\n            var elemOptions = self.getElemOptions(\n                self.options.map.defaultPlot,\n                (self.options.plots[id] ? self.options.plots[id] : {}),\n                self.options.legend.plot\n            );\n\n            if (elemOptions.x !== undefined && elemOptions.y !== undefined)\n                coords = {x: elemOptions.x, y: elemOptions.y};\n            else if (elemOptions.plotsOn !== undefined && self.areas[elemOptions.plotsOn].mapElem !== undefined){\n                var path = self.areas[elemOptions.plotsOn].mapElem;\n                var bbox = path.getBBox();\n                var _x = Math.floor(bbox.x + bbox.width/2.0);\n                var _y = Math.floor(bbox.y + bbox.height/2.0);\n                coords = {x: _x, y: _y};\n            }\n            else\n                coords = self.mapConf.getCoords(elemOptions.latitude, elemOptions.longitude);\n\n            if (elemOptions.type == \"square\") {\n                plot = {\n                    \"mapElem\": self.paper.rect(\n                        coords.x - (elemOptions.size / 2),\n                        coords.y - (elemOptions.size / 2),\n                        elemOptions.size,\n                        elemOptions.size\n                    ).attr(elemOptions.attrs)\n                };\n            } else if (elemOptions.type == \"image\") {\n                plot = {\n                    \"mapElem\": self.paper.image(\n                        elemOptions.url,\n                        coords.x - elemOptions.width / 2,\n                        coords.y - elemOptions.height / 2,\n                        elemOptions.width,\n                        elemOptions.height\n                    ).attr(elemOptions.attrs)\n                };\n            } else if (elemOptions.type == \"svg\") {\n                if (elemOptions.attrs.transform === undefined) {\n                    elemOptions.attrs.transform = \"\";\n                }\n\n                plot = {\"mapElem\": self.paper.path(elemOptions.path)};\n                plot.mapElem.originalWidth = plot.mapElem.getBBox().width;\n                plot.mapElem.originalHeight = plot.mapElem.getBBox().height;\n\n                plot.mapElem.baseTransform = \"m\" + (elemOptions.width / plot.mapElem.originalWidth) + \",0,0,\" + (elemOptions.height / plot.mapElem.originalHeight) + \",\" + (coords.x - elemOptions.width / 2) + \",\" + (coords.y - elemOptions.height / 2);\n                elemOptions.attrs.transform = plot.mapElem.baseTransform + elemOptions.attrs.transform;\n                plot.mapElem.attr(elemOptions.attrs);\n            } else { // Default = circle\n                plot = {\"mapElem\": self.paper.circle(coords.x, coords.y, elemOptions.size / 2).attr(elemOptions.attrs)};\n            }\n            self.initElem(plot, elemOptions, id);\n            return plot;\n        },\n\n        /*\n         * Set target link on elem\n         */\n        setHref: function (elem) {\n            var self = this;\n            elem.attr({cursor: \"pointer\"});\n            $(elem.node).on(\"click.\" + pluginName, function () {\n                if (!self.panning && elem.href)\n                    window.open(elem.href, elem.target);\n            });\n        },\n\n        /*\n         * Set a tooltip for the areas and plots\n         * @param elem area or plot element\n         * @param content the content to set in the tooltip\n         */\n        setTooltip: function (elem) {\n            var self = this;\n            var tooltipTO = 0;\n            var cssClass = self.$tooltip.attr('class');\n\n\n\n            var updateTooltipPosition = function (x, y) {\n\n                var offsetLeft = 10;\n                var offsetTop = 20;\n\n                if (typeof elem.tooltip.offset === \"object\") {\n                    if (typeof elem.tooltip.offset.left !== \"undefined\") {\n                        offsetLeft = elem.tooltip.offset.left;\n                    }\n                    if (typeof elem.tooltip.offset.top !== \"undefined\") {\n                        offsetTop = elem.tooltip.offset.top;\n                    }\n                }\n\n                var tooltipPosition = {\n                    \"left\": Math.min(self.$map.width() - self.$tooltip.outerWidth() - 5, x - self.$map.offset().left + offsetLeft),\n                    \"top\": Math.min(self.$map.height() - self.$tooltip.outerHeight() - 5, y - self.$map.offset().top + offsetTop)\n                };\n\n                if (typeof elem.tooltip.overflow === \"object\") {\n                    if (elem.tooltip.overflow.right === true) {\n                        tooltipPosition.left = x - self.$map.offset().left + 10;\n                    }\n                    if (selem.tooltip.overflow.bottom === true) {\n                        tooltipPosition.top = y - self.$map.offset().top + 20;\n                    }\n                }\n\n                self.$tooltip.css(tooltipPosition);\n            };\n\n            $(elem.node).on(\"mouseover.\" + pluginName, function (e) {\n                tooltipTO = setTimeout(\n                    function () {\n                        self.$tooltip.attr(\"class\", cssClass);\n                        if (elem.tooltip !== undefined) {\n                            if (elem.tooltip.content !== undefined) {\n                                // if tooltip.content is function, call it. Otherwise, assign it directly.\n                                var content = (typeof elem.tooltip.content === \"function\") ? elem.tooltip.content(elem) : elem.tooltip.content;\n                                self.$tooltip.html(content).css(\"display\", \"block\");\n                            }\n                            if (elem.tooltip.cssClass !== undefined) {\n                                self.$tooltip.addClass(elem.tooltip.cssClass);\n                            }\n                        }\n                        updateTooltipPosition(e.pageX, e.pageY);\n                    }, 120\n                );\n            }).on(\"mouseout.\" + pluginName, function () {\n                clearTimeout(tooltipTO);\n                self.$tooltip.css(\"display\", \"none\");\n            }).on(\"mousemove.\" + pluginName, function (e) {\n                updateTooltipPosition(e.pageX, e.pageY);\n            });\n        },\n\n        /*\n         * Set user defined handlers for events on areas and plots\n         * @param id the id of the element\n         * @param elemOptions the element parameters\n         * @param mapElem the map element to set callback on\n         * @param textElem the optional text within the map element\n         */\n        setEventHandlers: function (id, elemOptions, mapElem, textElem) {\n            var self = this;\n            $.each(elemOptions.eventHandlers, function (event) {\n                (function (event) {\n                    $(mapElem.node).on(event, function (e) {\n                        if (!self.panning) elemOptions.eventHandlers[event](e, id, mapElem, textElem, elemOptions);\n                    });\n                    if (textElem) {\n                        $(textElem.node).on(event, function (e) {\n                            if (!self.panning) elemOptions.eventHandlers[event](e, id, mapElem, textElem, elemOptions);\n                        });\n                    }\n                })(event);\n            });\n        },\n\n        /*\n         * Draw a legend for areas and / or plots\n         * @param legendOptions options for the legend to draw\n         * @param legendType the type of the legend : \"area\" or \"plot\"\n         * @param elems collection of plots or areas on the maps\n         * @param legendIndex index of the legend in the conf array\n         */\n        drawLegend: function (legendOptions, legendType, elems, scale, legendIndex) {\n            var self = this;\n            var $legend = {};\n            var legendPaper = {};\n            var width = 0;\n            var height = 0;\n            var title = null;\n            var elem = {};\n            var elemBBox = {};\n            var label = {};\n            var i = 0;\n            var x = 0;\n            var y = 0;\n            var yCenter = 0;\n            var sliceOptions = [];\n            var length = 0;\n\n            $legend = $(\".\" + legendOptions.cssClass, self.$container);\n\n            if (typeof self.createdLegends[legendOptions.cssClass] ==='undefined') {\n                self.createdLegends[legendOptions.cssClass] = {\n                    container: $legend,\n                    initialHTMLContent: $legend.html()\n                };\n            }\n\n            $legend.empty();\n\n            legendPaper = new Raphael($legend.get(0));\n            // Set some data to object\n            $(legendPaper.canvas).attr({\"data-type\": legendType, \"data-index\": legendIndex});\n\n            height = width = 0;\n\n            // Set the title of the legend\n            if (legendOptions.title && legendOptions.title !== \"\") {\n                title = legendPaper.text(legendOptions.marginLeftTitle, 0, legendOptions.title).attr(legendOptions.titleAttrs);\n                title.attr({y: 0.5 * title.getBBox().height});\n\n                width = legendOptions.marginLeftTitle + title.getBBox().width;\n                height += legendOptions.marginBottomTitle + title.getBBox().height;\n            }\n\n            // Calculate attrs (and width, height and r (radius)) for legend elements, and yCenter for horizontal legends\n\n            for (i = 0, length = legendOptions.slices.length; i < length; ++i) {\n                var yCenterCurrent = 0;\n\n                sliceOptions[i] = $.extend(true, {}, (legendType == \"plot\") ? self.options.map.defaultPlot : self.options.map.defaultArea, legendOptions.slices[i]);\n\n                if (legendOptions.slices[i].legendSpecificAttrs === undefined) {\n                    legendOptions.slices[i].legendSpecificAttrs = {};\n                }\n\n                $.extend(true, sliceOptions[i].attrs, legendOptions.slices[i].legendSpecificAttrs);\n\n                if (legendType == \"area\") {\n                    if (sliceOptions[i].attrs.width === undefined)\n                        sliceOptions[i].attrs.width = 30;\n                    if (sliceOptions[i].attrs.height === undefined)\n                        sliceOptions[i].attrs.height = 20;\n                } else if (sliceOptions[i].type == \"square\") {\n                    if (sliceOptions[i].attrs.width === undefined)\n                        sliceOptions[i].attrs.width = sliceOptions[i].size;\n                    if (sliceOptions[i].attrs.height === undefined)\n                        sliceOptions[i].attrs.height = sliceOptions[i].size;\n                } else if (sliceOptions[i].type == \"image\" || sliceOptions[i].type == \"svg\") {\n                    if (sliceOptions[i].attrs.width === undefined)\n                        sliceOptions[i].attrs.width = sliceOptions[i].width;\n                    if (sliceOptions[i].attrs.height === undefined)\n                        sliceOptions[i].attrs.height = sliceOptions[i].height;\n                } else {\n                    if (sliceOptions[i].attrs.r === undefined)\n                        sliceOptions[i].attrs.r = sliceOptions[i].size / 2;\n                }\n\n                // Compute yCenter for this legend slice\n                yCenterCurrent = legendOptions.marginBottomTitle;\n                // Add title height if it exists\n                if (title) {\n                    yCenterCurrent += title.getBBox().height;\n                }\n                if (legendType == \"plot\" && (sliceOptions[i].type === undefined || sliceOptions[i].type == \"circle\")) {\n                    yCenterCurrent += scale * sliceOptions[i].attrs.r;\n                } else {\n                    yCenterCurrent += scale * sliceOptions[i].attrs.height / 2;\n                }\n                // Update yCenter if current larger\n                yCenter = Math.max(yCenter, yCenterCurrent);\n            }\n\n            if (legendOptions.mode == \"horizontal\") {\n                width = legendOptions.marginLeft;\n            }\n\n            // Draw legend elements (circle, square or image in vertical or horizontal mode)\n            for (i = 0, length = sliceOptions.length; i < length; ++i) {\n                if (sliceOptions[i].display === undefined || sliceOptions[i].display === true) {\n                    if (legendType == \"area\") {\n                        if (legendOptions.mode == \"horizontal\") {\n                            x = width + legendOptions.marginLeft;\n                            y = yCenter - (0.5 * scale * sliceOptions[i].attrs.height);\n                        } else {\n                            x = legendOptions.marginLeft;\n                            y = height;\n                        }\n\n                        elem = legendPaper.rect(x, y, scale * (sliceOptions[i].attrs.width), scale * (sliceOptions[i].attrs.height));\n                    } else if (sliceOptions[i].type == \"square\") {\n                        if (legendOptions.mode == \"horizontal\") {\n                            x = width + legendOptions.marginLeft;\n                            y = yCenter - (0.5 * scale * sliceOptions[i].attrs.height);\n                        } else {\n                            x = legendOptions.marginLeft;\n                            y = height;\n                        }\n\n                        elem = legendPaper.rect(x, y, scale * (sliceOptions[i].attrs.width), scale * (sliceOptions[i].attrs.height));\n\n                    } else if (sliceOptions[i].type == \"image\" || sliceOptions[i].type == \"svg\") {\n                        if (legendOptions.mode == \"horizontal\") {\n                            x = width + legendOptions.marginLeft;\n                            y = yCenter - (0.5 * scale * sliceOptions[i].attrs.height);\n                        } else {\n                            x = legendOptions.marginLeft;\n                            y = height;\n                        }\n\n                        if (sliceOptions[i].type == \"image\") {\n                            elem = legendPaper.image(\n                                sliceOptions[i].url, x, y, scale * sliceOptions[i].attrs.width, scale * sliceOptions[i].attrs.height);\n                        } else {\n                            elem = legendPaper.path(sliceOptions[i].path);\n\n                            if (sliceOptions[i].attrs.transform === undefined) {\n                                sliceOptions[i].attrs.transform = \"\";\n                            }\n                            sliceOptions[i].attrs.transform = \"m\" + ((scale * sliceOptions[i].width) / elem.getBBox().width) + \",0,0,\" + ((scale * sliceOptions[i].height) / elem.getBBox().height) + \",\" + x + \",\" + y + sliceOptions[i].attrs.transform;\n                        }\n                    } else {\n                        if (legendOptions.mode == \"horizontal\") {\n                            x = width + legendOptions.marginLeft + scale * (sliceOptions[i].attrs.r);\n                            y = yCenter;\n                        } else {\n                            x = legendOptions.marginLeft + scale * (sliceOptions[i].attrs.r);\n                            y = height + scale * (sliceOptions[i].attrs.r);\n                        }\n                        elem = legendPaper.circle(x, y, scale * (sliceOptions[i].attrs.r));\n                    }\n\n                    // Set attrs to the element drawn above\n                    delete sliceOptions[i].attrs.width;\n                    delete sliceOptions[i].attrs.height;\n                    delete sliceOptions[i].attrs.r;\n                    elem.attr(sliceOptions[i].attrs);\n                    elemBBox = elem.getBBox();\n\n                    // Draw the label associated with the element\n                    if (legendOptions.mode == \"horizontal\") {\n                        x = width + legendOptions.marginLeft + elemBBox.width + legendOptions.marginLeftLabel;\n                        y = yCenter;\n                    } else {\n                        x = legendOptions.marginLeft + elemBBox.width + legendOptions.marginLeftLabel;\n                        y = height + (elemBBox.height / 2);\n                    }\n\n                    label = legendPaper.text(x, y, sliceOptions[i].label).attr(legendOptions.labelAttrs);\n\n                    // Update the width and height for the paper\n                    if (legendOptions.mode == \"horizontal\") {\n                        var currentHeight = legendOptions.marginBottom + elemBBox.height;\n                        width += legendOptions.marginLeft + elemBBox.width + legendOptions.marginLeftLabel + label.getBBox().width;\n                        if (sliceOptions[i].type != \"image\" && legendType != \"area\") {\n                            currentHeight += legendOptions.marginBottomTitle;\n                        }\n                        // Add title height if it exists\n                        if (title) {\n                            currentHeight += title.getBBox().height;\n                        }\n                        height = Math.max(height, currentHeight);\n                    } else {\n                        width = Math.max(width, legendOptions.marginLeft + elemBBox.width + legendOptions.marginLeftLabel + label.getBBox().width);\n                        height += legendOptions.marginBottom + elemBBox.height;\n                    }\n\n                    $(elem.node).attr({\"data-type\": \"elem\", \"data-index\": i, \"data-hidden\": 0});\n                    $(label.node).attr({\"data-type\": \"label\", \"data-index\": i, \"data-hidden\": 0});\n\n                    // Hide map elements when the user clicks on a legend item\n                    if (legendOptions.hideElemsOnClick.enabled) {\n                        // Hide/show elements when user clicks on a legend element\n                        label.attr({cursor: \"pointer\"});\n                        elem.attr({cursor: \"pointer\"});\n\n                        self.setHoverOptions(elem, sliceOptions[i].attrs, sliceOptions[i].attrs);\n                        self.setHoverOptions(label, legendOptions.labelAttrs, legendOptions.labelAttrsHover);\n                        self.setHover(elem, label);\n                        self.handleClickOnLegendElem(legendOptions, legendOptions.slices[i], label, elem, elems, legendIndex);\n                    }\n                }\n            }\n\n            // VMLWidth option allows you to set static width for the legend\n            // only for VML render because text.getBBox() returns wrong values on IE6/7\n            if (Raphael.type != \"SVG\" && legendOptions.VMLWidth)\n                width = legendOptions.VMLWidth;\n\n            legendPaper.setSize(width, height);\n        },\n\n        /*\n         * Allow to hide elements of the map when the user clicks on a related legend item\n         * @param legendOptions options for the legend to draw\n         * @param sliceOptions options of the slice\n         * @param label label of the legend item\n         * @param elem element of the legend item\n         * @param elems collection of plots or areas displayed on the map\n         * @param legendIndex index of the legend in the conf array\n         */\n        handleClickOnLegendElem: function (legendOptions, sliceOptions, label, elem, elems, legendIndex) {\n            var self = this;\n\n            /**\n             *\n             * @param e\n             * @param hideOtherElems : option used for the 'exclusive' mode to enabled only one item from the legend\n             * at once\n             * @param animDuration : used in the 'update' event in order to apply the same animDuration on the legend items\n             */\n            var hideMapElems = function (e, hideOtherElems, animDuration) {\n                var elemValue = 0;\n                var hidden = $(label.node).attr('data-hidden');\n                var hiddenNewAttr = (hidden === '0') ? {\"data-hidden\": '1'} : {\"data-hidden\": '0'};\n\n                // Check animDuration: if not set, this is a regular click, use the value specified in options\n                if (animDuration === undefined) animDuration = legendOptions.hideElemsOnClick.animDuration;\n\n                if (hidden === '0') {\n                    if (animDuration > 0) label.animate({\"opacity\": 0.5}, animDuration);\n                    else label.attr({\"opacity\": 0.5});\n                } else {\n                    if (animDuration > 0) label.animate({\"opacity\": 1}, animDuration);\n                    else label.attr({\"opacity\": 1});\n                }\n\n                $.each(elems, function (id) {\n                    // Retreive stored data of element\n                    //      'hidden-by' contains the list of legendIndex that is hiding this element\n                    var hiddenBy = elems[id].mapElem.data('hidden-by');\n                    // Set to empty object if undefined\n                    if (hiddenBy === undefined) hiddenBy = {};\n\n                    if ($.isArray(elems[id].value)) {\n                        elemValue = elems[id].value[legendIndex];\n                    } else {\n                        elemValue = elems[id].value;\n                    }\n\n                    // Hide elements whose value matches with the slice of the clicked legend item\n                    if (self.getLegendSlice(elemValue, legendOptions) === sliceOptions) {\n                        (function (id) {\n                            if (hidden === '0') { // we want to hide this element\n                                hiddenBy[legendIndex] = true; // add legendIndex to the data object for later use\n                                self.setElementOpacity(elems[id], legendOptions.hideElemsOnClick.opacity, animDuration);\n                            } else { // We want to show this element\n                                delete hiddenBy[legendIndex]; // Remove this legendIndex from object\n                                // Check if another legendIndex is defined\n                                // We will show this element only if no legend is no longer hiding it\n                                if ($.isEmptyObject(hiddenBy)) {\n                                    self.setElementOpacity(\n                                        elems[id],\n                                        elems[id].mapElem.originalAttrs.opacity !== undefined ? elems[id].mapElem.originalAttrs.opacity : 1,\n                                        animDuration\n                                    );\n                                }\n                            }\n                            // Update elem data with new values\n                            elems[id].mapElem.data('hidden-by', hiddenBy);\n                        })(id);\n                    }\n                });\n\n                $(elem.node).attr(hiddenNewAttr);\n                $(label.node).attr(hiddenNewAttr);\n\n                if ((hideOtherElems === undefined || hideOtherElems === true)\n                    && legendOptions.exclusive !== undefined && legendOptions.exclusive === true\n                ) {\n                    $(\"[data-type='elem'][data-hidden=0]\", self.$container).each(function () {\n                        if ($(this).attr('data-index') !== $(elem.node).attr('data-index')) {\n                            $(this).trigger(\"click\", false);\n                        }\n                    });\n                }\n            };\n            $(label.node).on(\"click.\" + pluginName, hideMapElems);\n            $(elem.node).on(\"click.\" + pluginName, hideMapElems);\n\n            if (sliceOptions.clicked !== undefined && sliceOptions.clicked === true) {\n                $(elem.node).trigger(\"click\", false);\n            }\n        },\n\n        /*\n         * Create all legends for a specified type (area or plot)\n         * @param legendType the type of the legend : \"area\" or \"plot\"\n         * @param elems collection of plots or areas displayed on the map\n         * @param scale scale ratio of the map\n         */\n        createLegends: function (legendType, elems, scale) {\n            var self = this;\n            var legendsOptions = self.options.legend[legendType];\n\n            if (!$.isArray(self.options.legend[legendType])) {\n                legendsOptions = [self.options.legend[legendType]];\n            }\n\n            for (var j = 0; j < legendsOptions.length; ++j) {\n                // Check for class existence\n                if (legendsOptions[j].cssClass === \"\" || $(\".\" + legendsOptions[j].cssClass, self.$container).length === 0) {\n                    throw new Error(\"The legend class `\" + legendsOptions[j].cssClass + \"` doesn't exists.\");\n                }\n                if (legendsOptions[j].display === true && $.isArray(legendsOptions[j].slices) && legendsOptions[j].slices.length > 0) {\n                    self.drawLegend(legendsOptions[j], legendType, elems, scale, j);\n                }\n            }\n        },\n\n        /*\n         * Set the attributes on hover and the attributes to restore for a map element\n         * @param elem the map element\n         * @param originalAttrs the original attributes to restore on mouseout event\n         * @param attrsHover the attributes to set on mouseover event\n         */\n        setHoverOptions: function (elem, originalAttrs, attrsHover) {\n            // Disable transform option on hover for VML (IE<9) because of several bugs\n            if (Raphael.type != \"SVG\") delete attrsHover.transform;\n            elem.attrsHover = attrsHover;\n\n            if (elem.attrsHover.transform) elem.originalAttrs = $.extend({transform: \"s1\"}, originalAttrs);\n            else elem.originalAttrs = originalAttrs;\n        },\n\n        /*\n         * Set the hover behavior (mouseover & mouseout) for plots and areas\n         * @param mapElem the map element\n         * @param textElem the optional text element (within the map element)\n         */\n        setHover: function (mapElem, textElem) {\n            var self = this;\n            var $mapElem = {};\n            var $textElem = {};\n            var mouseoverTimeout = 0;\n            var mouseoutTimeout = 0;\n            var overBehaviour = function () {\n                clearTimeout(mouseoutTimeout);\n                mouseoverTimeout = setTimeout(function () {\n                    self.elemHover(mapElem, textElem);\n                }, 120);\n            };\n            var outBehaviour = function () {\n                clearTimeout(mouseoverTimeout);\n                mouseoutTimeout = setTimeout(function(){\n                    self.elemOut(mapElem, textElem);\n                }, 120);\n            };\n\n            $mapElem = $(mapElem.node);\n            $mapElem.on(\"mouseover.\" + pluginName, overBehaviour);\n            $mapElem.on(\"mouseout.\" + pluginName, outBehaviour);\n\n            if (textElem) {\n                $textElem = $(textElem.node);\n                $textElem.on(\"mouseover.\" + pluginName, overBehaviour);\n                $(textElem.node).on(\"mouseout.\" + pluginName, outBehaviour);\n            }\n        },\n\n        /*\n         * Remove the hover behavior for plots and areas\n         * @param mapElem the map element\n         * @param textElem the optional text element (within the map element)\n         */\n        unsetHover: function (mapElem, textElem) {\n            $(mapElem.node).off(\".\" + pluginName);\n            if (textElem) $(textElem.node).off(\".\" + pluginName);\n        },\n\n        /*\n         * Set he behaviour for \"mouseover\" event\n         * @param mapElem mapElem the map element\n         * @param textElem the optional text element (within the map element)\n         */\n        elemHover: function (mapElem, textElem) {\n            var self = this;\n            // Set mapElem\n            if (mapElem.attrsHover.animDuration > 0) mapElem.animate(mapElem.attrsHover, mapElem.attrsHover.animDuration);\n            else mapElem.attr(mapElem.attrsHover);\n            // Set textElem\n            if (textElem) {\n                if (textElem.attrsHover.animDuration > 0) textElem.animate(textElem.attrsHover, textElem.attrsHover.animDuration);\n                else textElem.attr(textElem.attrsHover);\n            }\n            // workaround for older version of Raphael\n            if (self.paper.safari) self.paper.safari();\n        },\n\n        /*\n         * Set he behaviour for \"mouseout\" event\n         * @param mapElem the map element\n         * @param textElem the optional text element (within the map element)\n         */\n        elemOut: function (mapElem, textElem) {\n            var self = this;\n            // Set mapElem\n            if (mapElem.attrsHover.animDuration > 0) mapElem.animate(mapElem.originalAttrs, mapElem.attrsHover.animDuration);\n            else mapElem.attr(mapElem.originalAttrs);\n            // Set textElem\n            if (textElem) {\n                if (textElem.attrsHover.animDuration > 0) textElem.animate(textElem.originalAttrs, textElem.attrsHover.animDuration);\n                else textElem.attr(textElem.originalAttrs);\n            }\n\n            // workaround for older version of Raphael\n            if (self.paper.safari) self.paper.safari();\n        },\n\n        /*\n         * Get element options by merging default options, element options and legend options\n         * @param defaultOptions\n         * @param elemOptions\n         * @param legendOptions\n         */\n        getElemOptions: function (defaultOptions, elemOptions, legendOptions) {\n            var self = this;\n            var options = $.extend(true, {}, defaultOptions, elemOptions);\n            if (options.value !== undefined) {\n                if ($.isArray(legendOptions)) {\n                    for (var i = 0, length = legendOptions.length; i < length; ++i) {\n                        options = $.extend(true, {}, options, self.getLegendSlice(options.value[i], legendOptions[i]));\n                    }\n                } else {\n                    options = $.extend(true, {}, options, self.getLegendSlice(options.value, legendOptions));\n                }\n            }\n            return options;\n        },\n\n        /*\n         * Get the coordinates of the text relative to a bbox and a position\n         * @param bbox the boundary box of the element\n         * @param textPosition the wanted text position (inner, right, left, top or bottom)\n         * @param margin number or object {x: val, y:val} margin between the bbox and the text\n         */\n        getTextPosition: function (bbox, textPosition, margin) {\n            var textX = 0;\n            var textY = 0;\n            var textAnchor = \"\";\n\n            if (typeof margin === \"number\") {\n                if (textPosition === \"bottom\" || textPosition === \"top\") {\n                    margin = {x: 0, y: margin};\n                } else if (textPosition === \"right\" || textPosition === \"left\") {\n                    margin = {x: margin, y: 0};\n                } else {\n                    margin = {x: 0, y: 0};\n                }\n            }\n\n            switch (textPosition) {\n                case \"bottom\" :\n                    textX = ((bbox.x + bbox.x2) / 2) + margin.x;\n                    textY = bbox.y2 + margin.y;\n                    textAnchor = \"middle\";\n                    break;\n                case \"top\" :\n                    textX = ((bbox.x + bbox.x2) / 2) + margin.x;\n                    textY = bbox.y - margin.y;\n                    textAnchor = \"middle\";\n                    break;\n                case \"left\" :\n                    textX = bbox.x - margin.x;\n                    textY = ((bbox.y + bbox.y2) / 2) + margin.y;\n                    textAnchor = \"end\";\n                    break;\n                case \"right\" :\n                    textX = bbox.x2 + margin.x;\n                    textY = ((bbox.y + bbox.y2) / 2) + margin.y;\n                    textAnchor = \"start\";\n                    break;\n                default : // \"inner\" position\n                    textX = ((bbox.x + bbox.x2) / 2) + margin.x;\n                    textY = ((bbox.y + bbox.y2) / 2) + margin.y;\n                    textAnchor = \"middle\";\n            }\n            return {\"x\": textX, \"y\": textY, \"textAnchor\": textAnchor};\n        },\n\n        /*\n         * Get the legend conf matching with the value\n         * @param value the value to match with a slice in the legend\n         * @param legend the legend params object\n         * @return the legend slice matching with the value\n         */\n        getLegendSlice: function (value, legend) {\n            for (var i = 0, length = legend.slices.length; i < length; ++i) {\n                if ((legend.slices[i].sliceValue !== undefined && value == legend.slices[i].sliceValue)\n                    || ((legend.slices[i].sliceValue === undefined)\n                    && (legend.slices[i].min === undefined || value >= legend.slices[i].min)\n                    && (legend.slices[i].max === undefined || value <= legend.slices[i].max))\n                ) {\n                    return legend.slices[i];\n                }\n            }\n            return {};\n        },\n\n        /*\n         * Animated view box changes\n         * As from http://code.voidblossom.com/animating-viewbox-easing-formulas/,\n         * (from https://github.com/theshaun works on mapael)\n         * @param x coordinate of the point to focus on\n         * @param y coordinate of the point to focus on\n         * @param w map defined width\n         * @param h map defined height\n         * @param duration defined length of time for animation\n         * @param easingFunction defined Raphael supported easing_formula to use\n         * @param callback method when animated action is complete\n         */\n        animateViewBox: function (x, y, w, h, duration, easingFunction) {\n            var self = this;\n            var cx = self.paper._viewBox ? self.paper._viewBox[0] : 0;\n            var dx = x - cx;\n            var cy = self.paper._viewBox ? self.paper._viewBox[1] : 0;\n            var dy = y - cy;\n            var cw = self.paper._viewBox ? self.paper._viewBox[2] : self.paper.width;\n            var dw = w - cw;\n            var ch = self.paper._viewBox ? self.paper._viewBox[3] : self.paper.height;\n            var dh = h - ch;\n            var interval = 25;\n            var steps = duration / interval;\n            var currentStep = 0;\n            var easingFormula;\n\n            easingFunction = easingFunction || \"linear\";\n            easingFormula = Raphael.easing_formulas[easingFunction];\n\n            clearInterval(self.animationIntervalID);\n\n            self.animationIntervalID = setInterval(function () {\n                    var ratio = currentStep / steps;\n                    self.paper.setViewBox(cx + dx * easingFormula(ratio),\n                        cy + dy * easingFormula(ratio),\n                        cw + dw * easingFormula(ratio),\n                        ch + dh * easingFormula(ratio), false);\n                    if (currentStep++ >= steps) {\n                        clearInterval(self.animationIntervalID);\n                        clearTimeout(self.zoomTO);\n                        self.zoomTO = setTimeout(function () {\n                            self.$map.trigger(\"afterZoom\", {x1: x, y1: y, x2: (x + w), y2: (y + h)});\n                        }, 150);\n                    }\n                }, interval\n            );\n        },\n\n        /*\n         * Check for Raphael bug regarding drawing while beeing hidden (under display:none)\n         * See https://github.com/neveldo/jQuery-Mapael/issues/135\n         * @return true/false\n         *\n         * Wants to override this behavior? Use prototype overriding:\n         *     $.mapael.prototype.isRaphaelBBoxBugPresent = function() {return false;};\n         */\n        isRaphaelBBoxBugPresent: function(){\n            var self = this;\n            // Draw text, then get its boundaries\n            var text_elem = self.paper.text(-50, -50, \"TEST\");\n            var text_elem_bbox = text_elem.getBBox();\n            // remove element\n            text_elem.remove();\n            // If it has no height and width, then the paper is hidden\n            return (text_elem_bbox.width === 0 && text_elem_bbox.height === 0);\n        },\n\n        // Default map options\n        defaultOptions: {\n            map: {\n                cssClass: \"map\",\n                tooltip: {\n                    cssClass: \"mapTooltip\"\n                },\n                defaultArea: {\n                    attrs: {\n                        fill: \"#343434\",\n                        stroke: \"#5d5d5d\",\n                        \"stroke-width\": 1,\n                        \"stroke-linejoin\": \"round\"\n                    },\n                    attrsHover: {\n                        fill: \"#f38a03\",\n                        animDuration: 300\n                    },\n                    text: {\n                        position: \"inner\",\n                        margin: 10,\n                        attrs: {\n                            \"font-size\": 15,\n                            fill: \"#c7c7c7\"\n                        },\n                        attrsHover: {\n                            fill: \"#eaeaea\",\n                            \"animDuration\": 300\n                        }\n                    },\n                    target: \"_self\",\n                    cssClass: \"area\"\n                },\n                defaultPlot: {\n                    type: \"circle\",\n                    size: 15,\n                    attrs: {\n                        fill: \"#0088db\",\n                        stroke: \"#fff\",\n                        \"stroke-width\": 0,\n                        \"stroke-linejoin\": \"round\"\n                    },\n                    attrsHover: {\n                        \"stroke-width\": 3,\n                        animDuration: 300\n                    },\n                    text: {\n                        position: \"right\",\n                        margin: 10,\n                        attrs: {\n                            \"font-size\": 15,\n                            fill: \"#c7c7c7\"\n                        },\n                        attrsHover: {\n                            fill: \"#eaeaea\",\n                            animDuration: 300\n                        }\n                    },\n                    target: \"_self\",\n                    cssClass: \"plot\"\n                },\n                defaultLink: {\n                    factor: 0.5,\n                    attrs: {\n                        stroke: \"#0088db\",\n                        \"stroke-width\": 2\n                    },\n                    attrsHover: {\n                        animDuration: 300\n                    },\n                    text: {\n                        position: \"inner\",\n                        margin: 10,\n                        attrs: {\n                            \"font-size\": 15,\n                            fill: \"#c7c7c7\"\n                        },\n                        attrsHover: {\n                            fill: \"#eaeaea\",\n                            animDuration: 300\n                        }\n                    },\n                    target: \"_self\",\n                    cssClass: \"link\"\n                },\n                zoom: {\n                    enabled: false,\n                    minLevel: 0,\n                    maxLevel: 10,\n                    step: 0.25,\n                    mousewheel: true,\n                    touch: true,\n                    animDuration: 200,\n                    animEasing: \"linear\",\n                    buttons: {\n                        \"reset\": {\n                            cssClass: \"zoomButton zoomReset\",\n                            content: \"&#8226;\", // bullet sign\n                            title: \"Reset zoom\"\n                        },\n                        \"in\": {\n                            cssClass: \"zoomButton zoomIn\",\n                            content: \"+\",\n                            title: \"Zoom in\"\n                        },\n                        \"out\": {\n                            cssClass: \"zoomButton zoomOut\",\n                            content: \"&#8722;\", // minus sign\n                            title: \"Zoom out\"\n                        }\n                    }\n                }\n            },\n            legend: {\n                redrawOnResize: true,\n                area: [],\n                plot: []\n            },\n            areas: {},\n            plots: {},\n            links: {}\n        },\n\n        // Default legends option\n        legendDefaultOptions: {\n            area: {\n                cssClass: \"areaLegend\",\n                display: true,\n                marginLeft: 10,\n                marginLeftTitle: 5,\n                marginBottomTitle: 10,\n                marginLeftLabel: 10,\n                marginBottom: 10,\n                titleAttrs: {\n                    \"font-size\": 16,\n                    fill: \"#343434\",\n                    \"text-anchor\": \"start\"\n                },\n                labelAttrs: {\n                    \"font-size\": 12,\n                    fill: \"#343434\",\n                    \"text-anchor\": \"start\"\n                },\n                labelAttrsHover: {\n                    fill: \"#787878\",\n                    animDuration: 300\n                },\n                hideElemsOnClick: {\n                    enabled: true,\n                    opacity: 0.2,\n                    animDuration: 300\n                },\n                slices: [],\n                mode: \"vertical\"\n            },\n            plot: {\n                cssClass: \"plotLegend\",\n                display: true,\n                marginLeft: 10,\n                marginLeftTitle: 5,\n                marginBottomTitle: 10,\n                marginLeftLabel: 10,\n                marginBottom: 10,\n                titleAttrs: {\n                    \"font-size\": 16,\n                    fill: \"#343434\",\n                    \"text-anchor\": \"start\"\n                },\n                labelAttrs: {\n                    \"font-size\": 12,\n                    fill: \"#343434\",\n                    \"text-anchor\": \"start\"\n                },\n                labelAttrsHover: {\n                    fill: \"#787878\",\n                    animDuration: 300\n                },\n                hideElemsOnClick: {\n                    enabled: true,\n                    opacity: 0.2,\n                    animDuration: 300\n                },\n                slices: [],\n                mode: \"vertical\"\n            }\n        }\n\n    };\n\n    // Extend jQuery with Mapael\n    if ($[pluginName] === undefined) $[pluginName] = Mapael;\n\n    // Add jQuery DOM function\n    $.fn[pluginName] = function (options) {\n        // Call Mapael on each element\n        return this.each(function () {\n            // Avoid leaking problem on multiple instanciation by removing an old mapael object on a container\n            if ($.data(this, pluginName)) {\n                $.data(this, pluginName).destroy();\n            }\n            // Create Mapael and save it as jQuery data\n            // This allow external access to Mapael using $(\".mapcontainer\").data(\"mapael\")\n            $.data(this, pluginName, new Mapael(this, options));\n        });\n    };\n\n    return Mapael;\n\n}));"
  },
  {
    "path": "public/admin/js/map/map-active.js",
    "content": "(function ($) {\n \"use strict\";\n\t\n\t\t\n\t\t$(\".mapcontainer\").mapael({\n                map: {\n                    name: \"world_countries\",\n                    defaultArea: {\n                        attrs: {\n                            stroke: \"#000\",\n                            \"stroke-width\": 1\n                        }\n                    }\n                },\n                legend: {\n                    plot: {\n\t\t\t\t\t\tslices: [\n                            {\n                                attrs: {\n                                    fill: \"#ff9999\"\n                                },\n\t\t\t\t\t\t\t\tlabel: true,\n                                size: 30\n                            }\n                        ]\n                    }\n                },\n                plots: {\n                    'paris': {\n                        latitude: 48.86,\n                        longitude: 2.3444,\n                        value: 500000000,\n                        tooltip: {content: \"Meeting In Paris\"}\n                    }\n                },\n                areas: {\n                    \"AF\": {\n                        \"value\": \"35320445\",\n                        \"attrs\": {\n                            \"href\": \"#\"\n                        },\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Afghanistan<\\/span><br \\/>Population : 35320445\"\n                        }\n                    },\n                    \"ZA\": {\n                        \"value\": \"50586757\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">South Africa<\\/span><br \\/>Population : 50586757\"\n                        }\n                    },\n                    \"AL\": {\n                        \"value\": \"3215988\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Albania<\\/span><br \\/>Population : 3215988\"\n                        }\n                    },\n                    \"DZ\": {\n                        \"value\": \"35980193\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Algeria<\\/span><br \\/>Population : 35980193\"\n                        }\n                    },\n                    \"DE\": {\n                        \"value\": \"81726000\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Germany<\\/span><br \\/>Population : 81726000\"\n                        }\n                    },\n                    \"AD\": {\n                        \"value\": \"86165\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Andorra<\\/span><br \\/>Population : 86165\"\n                        }\n                    },\n                    \"AO\": {\n                        \"value\": \"19618432\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Angola<\\/span><br \\/>Population : 19618432\"\n                        }\n                    },\n                    \"AG\": {\n                        \"value\": \"89612\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Antigua And Barbuda<\\/span><br \\/>Population : 89612\"\n                        }\n                    },\n                    \"SA\": {\n                        \"value\": \"28082541\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Saudi Arabia<\\/span><br \\/>Population : 28082541\"\n                        }\n                    },\n                    \"AR\": {\n                        \"value\": \"40764561\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Argentina<\\/span><br \\/>Population : 40764561\"\n                        }\n                    },\n                    \"AM\": {\n                        \"value\": \"3100236\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Armenia<\\/span><br \\/>Population : 3100236\"\n                        }\n                    },\n                    \"AU\": {\n                        \"value\": \"22620600\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Australia<\\/span><br \\/>Population : 22620600\"\n                        }\n                    },\n                    \"AT\": {\n                        \"value\": \"8419000\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Austria<\\/span><br \\/>Population : 8419000\"\n                        }\n                    },\n                    \"AZ\": {\n                        \"value\": \"9168000\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Azerbaijan<\\/span><br \\/>Population : 9168000\"\n                        }\n                    },\n                    \"BS\": {\n                        \"value\": \"347176\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Bahamas<\\/span><br \\/>Population : 347176\"\n                        }\n                    },\n                    \"BH\": {\n                        \"value\": \"1323535\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Bahrain<\\/span><br \\/>Population : 1323535\"\n                        }\n                    },\n                    \"BD\": {\n                        \"value\": \"150493658\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Bangladesh<\\/span><br \\/>Population : 150493658\"\n                        }\n                    },\n                    \"BB\": {\n                        \"value\": \"273925\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Barbados<\\/span><br \\/>Population : 273925\"\n                        }\n                    },\n                    \"BE\": {\n                        \"value\": \"11008000\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Belgium<\\/span><br \\/>Population : 11008000\"\n                        }\n                    },\n                    \"BZ\": {\n                        \"value\": \"356600\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Belize<\\/span><br \\/>Population : 356600\"\n                        }\n                    },\n                    \"BJ\": {\n                        \"value\": \"9099922\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Benin<\\/span><br \\/>Population : 9099922\"\n                        }\n                    },\n                    \"BT\": {\n                        \"value\": \"738267\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Bhutan<\\/span><br \\/>Population : 738267\"\n                        }\n                    },\n                    \"BY\": {\n                        \"value\": \"9473000\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Belarus<\\/span><br \\/>Population : 9473000\"\n                        }\n                    },\n                    \"MM\": {\n                        \"value\": \"48336763\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Myanmar<\\/span><br \\/>Population : 48336763\"\n                        }\n                    },\n                    \"BO\": {\n                        \"value\": \"10088108\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Bolivia, Plurinational State Of<\\/span><br \\/>Population : 10088108\"\n                        }\n                    },\n                    \"BA\": {\n                        \"value\": \"3752228\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Bosnia And Herzegovina<\\/span><br \\/>Population : 3752228\"\n                        }\n                    },\n                    \"BW\": {\n                        \"value\": \"2030738\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Botswana<\\/span><br \\/>Population : 2030738\"\n                        }\n                    },\n                    \"BR\": {\n                        \"value\": \"196655014\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Brazil<\\/span><br \\/>Population : 196655014\"\n                        }\n                    },\n                    \"BN\": {\n                        \"value\": \"405938\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Brunei Darussalam<\\/span><br \\/>Population : 405938\"\n                        }\n                    },\n                    \"BG\": {\n                        \"value\": \"7476000\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Bulgaria<\\/span><br \\/>Population : 7476000\"\n                        }\n                    },\n                    \"BF\": {\n                        \"value\": \"16967845\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Burkina Faso<\\/span><br \\/>Population : 16967845\"\n                        }\n                    },\n                    \"BI\": {\n                        \"value\": \"8575172\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Burundi<\\/span><br \\/>Population : 8575172\"\n                        }\n                    },\n                    \"KH\": {\n                        \"value\": \"14305183\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Cambodia<\\/span><br \\/>Population : 14305183\"\n                        }\n                    },\n                    \"CM\": {\n                        \"value\": \"20030362\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Cameroon<\\/span><br \\/>Population : 20030362\"\n                        }\n                    },\n                    \"CA\": {\n                        \"value\": \"34482779\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Canada<\\/span><br \\/>Population : 34482779\"\n                        }\n                    },\n                    \"CV\": {\n                        \"value\": \"500585\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Cape Verde<\\/span><br \\/>Population : 500585\"\n                        }\n                    },\n                    \"CF\": {\n                        \"value\": \"4486837\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Central African Republic<\\/span><br \\/>Population : 4486837\"\n                        }\n                    },\n                    \"CL\": {\n                        \"value\": \"17269525\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Chile<\\/span><br \\/>Population : 17269525\"\n                        }\n                    },\n                    \"CN\": {\n                        \"value\": \"1344130000\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">China<\\/span><br \\/>Population : 1344130000\"\n                        }\n                    },\n                    \"CY\": {\n                        \"value\": \"1116564\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Cyprus<\\/span><br \\/>Population : 1116564\"\n                        }\n                    },\n                    \"CO\": {\n                        \"value\": \"46927125\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Colombia<\\/span><br \\/>Population : 46927125\"\n                        }\n                    },\n                    \"KM\": {\n                        \"value\": \"753943\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Comoros<\\/span><br \\/>Population : 753943\"\n                        }\n                    },\n                    \"CG\": {\n                        \"value\": \"4139748\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Congo<\\/span><br \\/>Population : 4139748\"\n                        }\n                    },\n                    \"CD\": {\n                        \"value\": \"67757577\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Congo, The Democratic Republic Of The<\\/span><br \\/>Population : 67757577\"\n                        }\n                    },\n                    \"KP\": {\n                        \"value\": \"24451285\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Korea, Democratic People's Republic Of<\\/span><br \\/>Population : 24451285\"\n                        }\n                    },\n                    \"KR\": {\n                        \"value\": \"49779000\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Korea, Republic Of<\\/span><br \\/>Population : 49779000\"\n                        }\n                    },\n                    \"CR\": {\n                        \"value\": \"4726575\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Costa Rica<\\/span><br \\/>Population : 4726575\"\n                        }\n                    },\n                    \"CI\": {\n                        \"value\": \"20152894\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">C\\u00d4te D'ivoire<\\/span><br \\/>Population : 20152894\"\n                        }\n                    },\n                    \"HR\": {\n                        \"value\": \"4407000\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Croatia<\\/span><br \\/>Population : 4407000\"\n                        }\n                    },\n                    \"CU\": {\n                        \"value\": \"11253665\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Cuba<\\/span><br \\/>Population : 11253665\"\n                        }\n                    },\n                    \"DK\": {\n                        \"value\": \"5574000\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Denmark<\\/span><br \\/>Population : 5574000\"\n                        }\n                    },\n                    \"DJ\": {\n                        \"value\": \"905564\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Djibouti<\\/span><br \\/>Population : 905564\"\n                        }\n                    },\n                    \"DM\": {\n                        \"value\": \"67675\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Dominica<\\/span><br \\/>Population : 67675\"\n                        }\n                    },\n                    \"EG\": {\n                        \"value\": \"82536770\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Egypt<\\/span><br \\/>Population : 82536770\"\n                        }\n                    },\n                    \"AE\": {\n                        \"value\": \"7890924\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">United Arab Emirates<\\/span><br \\/>Population : 7890924\"\n                        }\n                    },\n                    \"EC\": {\n                        \"value\": \"14666055\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Ecuador<\\/span><br \\/>Population : 14666055\"\n                        }\n                    },\n                    \"ER\": {\n                        \"value\": \"5415280\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Eritrea<\\/span><br \\/>Population : 5415280\"\n                        }\n                    },\n                    \"ES\": {\n                        \"value\": \"46235000\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Spain<\\/span><br \\/>Population : 46235000\"\n                        }\n                    },\n                    \"EE\": {\n                        \"value\": \"1340000\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Estonia<\\/span><br \\/>Population : 1340000\"\n                        }\n                    },\n                    \"US\": {\n                        \"value\": \"311591917\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">United States<\\/span><br \\/>Population : 311591917\"\n                        }\n                    },\n                    \"ET\": {\n                        \"value\": \"84734262\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Ethiopia<\\/span><br \\/>Population : 84734262\"\n                        }\n                    },\n                    \"FJ\": {\n                        \"value\": \"868406\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Fiji<\\/span><br \\/>Population : 868406\"\n                        }\n                    },\n                    \"FI\": {\n                        \"value\": \"5387000\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Finland<\\/span><br \\/>Population : 5387000\"\n                        }\n                    },\n                    \"FR\": {\n                        \"value\": \"65436552\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">France<\\/span><br \\/>Population : 65436552\"\n                        }\n                    },\n                    \"GA\": {\n                        \"value\": \"1534262\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Gabon<\\/span><br \\/>Population : 1534262\"\n                        }\n                    },\n                    \"GM\": {\n                        \"value\": \"1776103\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Gambia<\\/span><br \\/>Population : 1776103\"\n                        }\n                    },\n                    \"GE\": {\n                        \"value\": \"4486000\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Georgia<\\/span><br \\/>Population : 4486000\"\n                        }\n                    },\n                    \"GH\": {\n                        \"value\": \"24965816\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Ghana<\\/span><br \\/>Population : 24965816\"\n                        }\n                    },\n                    \"GR\": {\n                        \"value\": \"11304000\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Greece<\\/span><br \\/>Population : 11304000\"\n                        }\n                    },\n                    \"GD\": {\n                        \"value\": \"104890\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Grenada<\\/span><br \\/>Population : 104890\"\n                        }\n                    },\n                    \"GT\": {\n                        \"value\": \"14757316\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Guatemala<\\/span><br \\/>Population : 14757316\"\n                        }\n                    },\n                    \"GN\": {\n                        \"value\": \"10221808\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Guinea<\\/span><br \\/>Population : 10221808\"\n                        }\n                    },\n                    \"GQ\": {\n                        \"value\": \"720213\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Equatorial Guinea<\\/span><br \\/>Population : 720213\"\n                        }\n                    },\n                    \"GW\": {\n                        \"value\": \"1547061\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Guinea-bissau<\\/span><br \\/>Population : 1547061\"\n                        }\n                    },\n                    \"GY\": {\n                        \"value\": \"756040\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Guyana<\\/span><br \\/>Population : 756040\"\n                        }\n                    },\n                    \"HT\": {\n                        \"value\": \"10123787\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Haiti<\\/span><br \\/>Population : 10123787\"\n                        }\n                    },\n                    \"HN\": {\n                        \"value\": \"7754687\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Honduras<\\/span><br \\/>Population : 7754687\"\n                        }\n                    },\n                    \"HU\": {\n                        \"value\": \"9971000\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Hungary<\\/span><br \\/>Population : 9971000\"\n                        }\n                    },\n                    \"JM\": {\n                        \"value\": \"2709300\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Jamaica<\\/span><br \\/>Population : 2709300\"\n                        }\n                    },\n                    \"JP\": {\n                        \"value\": \"127817277\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Japan<\\/span><br \\/>Population : 127817277\"\n                        }\n                    },\n                    \"MH\": {\n                        \"value\": \"54816\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Marshall Islands<\\/span><br \\/>Population : 54816\"\n                        }\n                    },\n                    \"PW\": {\n                        \"value\": \"20609\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Palau<\\/span><br \\/>Population : 20609\"\n                        }\n                    },\n                    \"SB\": {\n                        \"value\": \"552267\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Solomon Islands<\\/span><br \\/>Population : 552267\"\n                        }\n                    },\n                    \"IN\": {\n                        \"value\": \"1241491960\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">India<\\/span><br \\/>Population : 1241491960\"\n                        }\n                    },\n                    \"ID\": {\n                        \"value\": \"242325638\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Indonesia<\\/span><br \\/>Population : 242325638\"\n                        }\n                    },\n                    \"JO\": {\n                        \"value\": \"6181000\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Jordan<\\/span><br \\/>Population : 6181000\"\n                        }\n                    },\n                    \"IR\": {\n                        \"value\": \"74798599\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Iran, Islamic Republic Of<\\/span><br \\/>Population : 74798599\"\n                        }\n                    },\n                    \"IQ\": {\n                        \"value\": \"32961959\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Iraq<\\/span><br \\/>Population : 32961959\"\n                        }\n                    },\n                    \"IE\": {\n                        \"value\": \"4487000\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Ireland<\\/span><br \\/>Population : 4487000\"\n                        }\n                    },\n                    \"IS\": {\n                        \"value\": \"319000\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Iceland<\\/span><br \\/>Population : 319000\"\n                        }\n                    },\n                    \"IL\": {\n                        \"value\": \"7765700\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Israel<\\/span><br \\/>Population : 7765700\"\n                        }\n                    },\n                    \"IT\": {\n                        \"value\": \"60770000\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Italy<\\/span><br \\/>Population : 60770000\"\n                        }\n                    },\n                    \"KZ\": {\n                        \"value\": \"16558459\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Kazakhstan<\\/span><br \\/>Population : 16558459\"\n                        }\n                    },\n                    \"KE\": {\n                        \"value\": \"41609728\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Kenya<\\/span><br \\/>Population : 41609728\"\n                        }\n                    },\n                    \"KG\": {\n                        \"value\": \"5507000\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Kyrgyzstan<\\/span><br \\/>Population : 5507000\"\n                        }\n                    },\n                    \"KI\": {\n                        \"value\": \"101093\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Kiribati<\\/span><br \\/>Population : 101093\"\n                        }\n                    },\n                    \"KW\": {\n                        \"value\": \"2818042\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Kuwait<\\/span><br \\/>Population : 2818042\"\n                        }\n                    },\n                    \"LA\": {\n                        \"value\": \"6288037\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Lao People's Democratic Republic<\\/span><br \\/>Population : 6288037\"\n                        }\n                    },\n                    \"LS\": {\n                        \"value\": \"2193843\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Lesotho<\\/span><br \\/>Population : 2193843\"\n                        }\n                    },\n                    \"LV\": {\n                        \"value\": \"2220000\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Latvia<\\/span><br \\/>Population : 2220000\"\n                        }\n                    },\n                    \"LB\": {\n                        \"value\": \"4259405\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Lebanon<\\/span><br \\/>Population : 4259405\"\n                        }\n                    },\n                    \"LR\": {\n                        \"value\": \"4128572\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Liberia<\\/span><br \\/>Population : 4128572\"\n                        }\n                    },\n                    \"LY\": {\n                        \"value\": \"6422772\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Libya<\\/span><br \\/>Population : 6422772\"\n                        }\n                    },\n                    \"LI\": {\n                        \"value\": \"36304\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Liechtenstein<\\/span><br \\/>Population : 36304\"\n                        }\n                    },\n                    \"LT\": {\n                        \"value\": \"3203000\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Lithuania<\\/span><br \\/>Population : 3203000\"\n                        }\n                    },\n                    \"LU\": {\n                        \"value\": \"517000\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Luxembourg<\\/span><br \\/>Population : 517000\"\n                        }\n                    },\n                    \"MK\": {\n                        \"value\": \"2063893\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Macedonia, The Former Yugoslav Republic Of<\\/span><br \\/>Population : 2063893\"\n                        }\n                    },\n                    \"MG\": {\n                        \"value\": \"21315135\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Madagascar<\\/span><br \\/>Population : 21315135\"\n                        }\n                    },\n                    \"MY\": {\n                        \"value\": \"28859154\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Malaysia<\\/span><br \\/>Population : 28859154\"\n                        }\n                    },\n                    \"MW\": {\n                        \"value\": \"15380888\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Malawi<\\/span><br \\/>Population : 15380888\"\n                        }\n                    },\n                    \"MV\": {\n                        \"value\": \"320081\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Maldives<\\/span><br \\/>Population : 320081\"\n                        }\n                    },\n                    \"ML\": {\n                        \"value\": \"15839538\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Mali<\\/span><br \\/>Population : 15839538\"\n                        }\n                    },\n                    \"MT\": {\n                        \"value\": \"419000\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Malta<\\/span><br \\/>Population : 419000\"\n                        }\n                    },\n                    \"MA\": {\n                        \"value\": \"32272974\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Morocco<\\/span><br \\/>Population : 32272974\"\n                        }\n                    },\n                    \"MU\": {\n                        \"value\": \"1286051\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Mauritius<\\/span><br \\/>Population : 1286051\"\n                        }\n                    },\n                    \"MR\": {\n                        \"value\": \"3541540\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Mauritania<\\/span><br \\/>Population : 3541540\"\n                        }\n                    },\n                    \"MX\": {\n                        \"value\": \"114793341\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Mexico<\\/span><br \\/>Population : 114793341\"\n                        }\n                    },\n                    \"FM\": {\n                        \"value\": \"111542\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Micronesia, Federated States Of<\\/span><br \\/>Population : 111542\"\n                        }\n                    },\n                    \"MD\": {\n                        \"value\": \"3559000\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Moldova, Republic Of<\\/span><br \\/>Population : 3559000\"\n                        }\n                    },\n                    \"MC\": {\n                        \"value\": \"35427\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Monaco<\\/span><br \\/>Population : 35427\"\n                        }\n                    },\n                    \"MN\": {\n                        \"value\": \"2800114\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Mongolia<\\/span><br \\/>Population : 2800114\"\n                        }\n                    },\n                    \"ME\": {\n                        \"value\": \"632261\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Montenegro<\\/span><br \\/>Population : 632261\"\n                        }\n                    },\n                    \"MZ\": {\n                        \"value\": \"23929708\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Mozambique<\\/span><br \\/>Population : 23929708\"\n                        }\n                    },\n                    \"NA\": {\n                        \"value\": \"2324004\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Namibia<\\/span><br \\/>Population : 2324004\"\n                        }\n                    },\n                    \"NP\": {\n                        \"value\": \"30485798\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Nepal<\\/span><br \\/>Population : 30485798\"\n                        }\n                    },\n                    \"NI\": {\n                        \"value\": \"5869859\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Nicaragua<\\/span><br \\/>Population : 5869859\"\n                        }\n                    },\n                    \"NE\": {\n                        \"value\": \"16068994\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Niger<\\/span><br \\/>Population : 16068994\"\n                        }\n                    },\n                    \"NG\": {\n                        \"value\": \"162470737\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Nigeria<\\/span><br \\/>Population : 162470737\"\n                        }\n                    },\n                    \"NO\": {\n                        \"value\": \"4952000\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Norway<\\/span><br \\/>Population : 4952000\"\n                        }\n                    },\n                    \"NZ\": {\n                        \"value\": \"4405200\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">New Zealand<\\/span><br \\/>Population : 4405200\"\n                        }\n                    },\n                    \"OM\": {\n                        \"value\": \"2846145\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Oman<\\/span><br \\/>Population : 2846145\"\n                        }\n                    },\n                    \"UG\": {\n                        \"value\": \"34509205\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Uganda<\\/span><br \\/>Population : 34509205\"\n                        }\n                    },\n                    \"UZ\": {\n                        \"value\": \"29341200\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Uzbekistan<\\/span><br \\/>Population : 29341200\"\n                        }\n                    },\n                    \"PK\": {\n                        \"value\": \"176745364\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Pakistan<\\/span><br \\/>Population : 176745364\"\n                        }\n                    },\n                    \"PS\": {\n                        \"value\": \"4019433\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Palestine, State Of<\\/span><br \\/>Population : 4019433\"\n                        }\n                    },\n                    \"PA\": {\n                        \"value\": \"3571185\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Panama<\\/span><br \\/>Population : 3571185\"\n                        }\n                    },\n                    \"PG\": {\n                        \"value\": \"7013829\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Papua New Guinea<\\/span><br \\/>Population : 7013829\"\n                        }\n                    },\n                    \"PY\": {\n                        \"value\": \"6568290\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Paraguay<\\/span><br \\/>Population : 6568290\"\n                        }\n                    },\n                    \"NL\": {\n                        \"value\": \"16696000\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Netherlands<\\/span><br \\/>Population : 16696000\"\n                        }\n                    },\n                    \"PE\": {\n                        \"value\": \"29399817\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Peru<\\/span><br \\/>Population : 29399817\"\n                        }\n                    },\n                    \"PH\": {\n                        \"value\": \"94852030\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Philippines<\\/span><br \\/>Population : 94852030\"\n                        }\n                    },\n                    \"PL\": {\n                        \"value\": \"38216000\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Poland<\\/span><br \\/>Population : 38216000\"\n                        }\n                    },\n                    \"PT\": {\n                        \"value\": \"10637000\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Portugal<\\/span><br \\/>Population : 10637000\"\n                        }\n                    },\n                    \"QA\": {\n                        \"value\": \"1870041\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Qatar<\\/span><br \\/>Population : 1870041\"\n                        }\n                    },\n                    \"DO\": {\n                        \"value\": \"10056181\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Dominican Republic<\\/span><br \\/>Population : 10056181\"\n                        }\n                    },\n                    \"RO\": {\n                        \"value\": \"21390000\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Romania<\\/span><br \\/>Population : 21390000\"\n                        }\n                    },\n                    \"GB\": {\n                        \"value\": \"62641000\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">United Kingdom<\\/span><br \\/>Population : 62641000\"\n                        }\n                    },\n                    \"RU\": {\n                        \"value\": \"141930000\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Russian Federation<\\/span><br \\/>Population : 141930000\"\n                        }\n                    },\n                    \"RW\": {\n                        \"value\": \"10942950\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Rwanda<\\/span><br \\/>Population : 10942950\"\n                        }\n                    },\n                    \"KN\": {\n                        \"value\": \"53051\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Saint Kitts And Nevis<\\/span><br \\/>Population : 53051\"\n                        }\n                    },\n                    \"SM\": {\n                        \"value\": \"31735\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">San Marino<\\/span><br \\/>Population : 31735\"\n                        }\n                    },\n                    \"VC\": {\n                        \"value\": \"109365\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Saint Vincent And The Grenadines<\\/span><br \\/>Population : 109365\"\n                        }\n                    },\n                    \"LC\": {\n                        \"value\": \"176000\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Saint Lucia<\\/span><br \\/>Population : 176000\"\n                        }\n                    },\n                    \"SV\": {\n                        \"value\": \"6227491\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">El Salvador<\\/span><br \\/>Population : 6227491\"\n                        }\n                    },\n                    \"WS\": {\n                        \"value\": \"183874\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Samoa<\\/span><br \\/>Population : 183874\"\n                        }\n                    },\n                    \"ST\": {\n                        \"value\": \"168526\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Sao Tome And Principe<\\/span><br \\/>Population : 168526\"\n                        }\n                    },\n                    \"SN\": {\n                        \"value\": \"12767556\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Senegal<\\/span><br \\/>Population : 12767556\"\n                        }\n                    },\n                    \"RS\": {\n                        \"value\": \"7261000\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Serbia<\\/span><br \\/>Population : 7261000\"\n                        }\n                    },\n                    \"SC\": {\n                        \"value\": \"86000\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Seychelles<\\/span><br \\/>Population : 86000\"\n                        }\n                    },\n                    \"SL\": {\n                        \"value\": \"5997486\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Sierra Leone<\\/span><br \\/>Population : 5997486\"\n                        }\n                    },\n                    \"SG\": {\n                        \"value\": \"5183700\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Singapore<\\/span><br \\/>Population : 5183700\"\n                        }\n                    },\n                    \"SK\": {\n                        \"value\": \"5440000\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Slovakia<\\/span><br \\/>Population : 5440000\"\n                        }\n                    },\n                    \"SI\": {\n                        \"value\": \"2052000\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Slovenia<\\/span><br \\/>Population : 2052000\"\n                        }\n                    },\n                    \"SO\": {\n                        \"value\": \"9556873\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Somalia<\\/span><br \\/>Population : 9556873\"\n                        }\n                    },\n                    \"SD\": {\n                        \"value\": \"34318385\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Sudan<\\/span><br \\/>Population : 34318385\"\n                        }\n                    },\n                    \"SS\": {\n                        \"value\": \"10314021\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">South Sudan<\\/span><br \\/>Population : 10314021\"\n                        }\n                    },\n                    \"LK\": {\n                        \"value\": \"20869000\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Sri Lanka<\\/span><br \\/>Population : 20869000\"\n                        }\n                    },\n                    \"SE\": {\n                        \"value\": \"9453000\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Sweden<\\/span><br \\/>Population : 9453000\"\n                        }\n                    },\n                    \"CH\": {\n                        \"value\": \"7907000\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Switzerland<\\/span><br \\/>Population : 7907000\"\n                        }\n                    },\n                    \"SR\": {\n                        \"value\": \"529419\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Suriname<\\/span><br \\/>Population : 529419\"\n                        }\n                    },\n                    \"SZ\": {\n                        \"value\": \"1067773\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Swaziland<\\/span><br \\/>Population : 1067773\"\n                        }\n                    },\n                    \"SY\": {\n                        \"value\": \"20820311\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Syrian Arab Republic<\\/span><br \\/>Population : 20820311\"\n                        }\n                    },\n                    \"TJ\": {\n                        \"value\": \"6976958\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Tajikistan<\\/span><br \\/>Population : 6976958\"\n                        }\n                    },\n                    \"TZ\": {\n                        \"value\": \"46218486\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Tanzania, United Republic Of<\\/span><br \\/>Population : 46218486\"\n                        }\n                    },\n                    \"TD\": {\n                        \"value\": \"11525496\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Chad<\\/span><br \\/>Population : 11525496\"\n                        }\n                    },\n                    \"CZ\": {\n                        \"value\": \"10546000\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Czech Republic<\\/span><br \\/>Population : 10546000\"\n                        }\n                    },\n                    \"TH\": {\n                        \"value\": \"69518555\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Thailand<\\/span><br \\/>Population : 69518555\"\n                        }\n                    },\n                    \"TL\": {\n                        \"value\": \"1175880\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Timor-leste<\\/span><br \\/>Population : 1175880\"\n                        }\n                    },\n                    \"TG\": {\n                        \"value\": \"6154813\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Togo<\\/span><br \\/>Population : 6154813\"\n                        }\n                    },\n                    \"TO\": {\n                        \"value\": \"104509\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Tonga<\\/span><br \\/>Population : 104509\"\n                        }\n                    },\n                    \"TT\": {\n                        \"value\": \"1346350\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Trinidad And Tobago<\\/span><br \\/>Population : 1346350\"\n                        }\n                    },\n                    \"TN\": {\n                        \"value\": \"10673800\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Tunisia<\\/span><br \\/>Population : 10673800\"\n                        }\n                    },\n                    \"TM\": {\n                        \"value\": \"5105301\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Turkmenistan<\\/span><br \\/>Population : 5105301\"\n                        }\n                    },\n                    \"TR\": {\n                        \"value\": \"73639596\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Turkey<\\/span><br \\/>Population : 73639596\"\n                        }\n                    },\n                    \"TV\": {\n                        \"value\": \"9847\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Tuvalu<\\/span><br \\/>Population : 9847\"\n                        }\n                    },\n                    \"VU\": {\n                        \"value\": \"245619\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Vanuatu<\\/span><br \\/>Population : 245619\"\n                        }\n                    },\n                    \"VE\": {\n                        \"value\": \"29278000\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Venezuela, Bolivarian Republic Of<\\/span><br \\/>Population : 29278000\"\n                        }\n                    },\n                    \"VN\": {\n                        \"value\": \"87840000\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Viet Nam<\\/span><br \\/>Population : 87840000\"\n                        }\n                    },\n                    \"UA\": {\n                        \"value\": \"45706100\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Ukraine<\\/span><br \\/>Population : 45706100\"\n                        }\n                    },\n                    \"UY\": {\n                        \"value\": \"3368595\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Uruguay<\\/span><br \\/>Population : 3368595\"\n                        }\n                    },\n                    \"YE\": {\n                        \"value\": \"24799880\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Yemen<\\/span><br \\/>Population : 24799880\"\n                        }\n                    },\n                    \"ZM\": {\n                        \"value\": \"13474959\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Zambia<\\/span><br \\/>Population : 13474959\"\n                        }\n                    },\n                    \"ZW\": {\n                        \"value\": \"12754378\",\n                        \"href\": \"#\",\n                        \"tooltip\": {\n                            \"content\": \"<span style=\\\"font-weight:bold;\\\">Zimbabwe<\\/span><br \\/>Population : 12754378\"\n                        }\n                    }\n                }\n            });\n})(jQuery); "
  },
  {
    "path": "public/admin/js/map/usa_states.js",
    "content": "/*!\n *\n * Jquery Mapael - Dynamic maps jQuery plugin (based on raphael.js)\n * Requires jQuery and Mapael\n *\n * Map of USA by state\n * \n * @source http://the55.net/_11/sketch/us_map\n */\n(function (factory) {\n    if (typeof exports === 'object') {\n        // CommonJS\n        module.exports = factory(require('jquery'), require('jquery-mapael'));\n    } else if (typeof define === 'function' && define.amd) {\n        // AMD. Register as an anonymous module.\n        define(['jquery', 'mapael'], factory);\n    } else {\n        // Browser globals\n        factory(jQuery, jQuery.mapael);\n    }\n}(function ($, Mapael) {\n\n    \"use strict\";\n    \n    $.extend(true, Mapael,\n        {\n            maps :{\n                usa_states : {\n                    width : 959,\n                    height : 593,\n                    latLngToGrid: function(lat, lng, phi1, phi2, midLng, scale) {\n                        var pi =Math.PI\n                            , midLat = (phi1 + phi2) / 2\n                            , n, tmp1, tmp2, tmp3, x, y, p;\n\n                        n = (Math.sin(phi1 / 180 * pi) + Math.sin(phi2 / 180 * pi)) / 2;\n                        tmp1 = Math.sqrt(Math.cos(phi1 / 180 * pi)) + 2 * n * Math.sin(phi1 / 180 * pi);\n                        tmp2 = scale * Math.pow(tmp1 - 2 * n * Math.sin(midLat / 180 * pi),0.5) / n;\n                        tmp3 = n * (lng - midLng);\n                        p = scale * Math.pow(tmp1 - 2 * n * Math.sin(lat / 180 * pi),0.5) / n;\n                        x = p * Math.sin(tmp3 / 180 * pi);\n                        y = tmp2 - p * Math.cos(tmp3 / 180 * pi);\n                        \n                        return([x,y]);\n                    },\n                    getCoords : function (lat, lon) {\n                        var coords = {},\n                            xOffset,\n                            yOffset,\n                            scaleX,\n                            scaleY,\n                            phi1,\n                            phi2,\n                            midLng,\n                            scale;\n                        if(lat > 51) { // alaska\n                            phi1= 15;\n                            phi2= 105;\n                            midLng = -134;\n                            scale = 530;\n                            coords = this.latLngToGrid(lat, lon, phi1, phi2, midLng, scale);\n                            xOffset = 190;\n                            yOffset = 543;\n                            scaleX= 1;\n                            scaleY= -1;\n\n                        } else if (lon < -140) { // hawaii\n                            phi1= 0;\n                            phi2= 26;\n                            midLng = -166;\n                            scale = 1280;\n                            coords = this.latLngToGrid(lat, lon, phi1, phi2, midLng, scale);\n                            xOffset = 115;\n                            yOffset = 723;\n                            scaleX= 1;\n                            scaleY= -1;\n                        } else {\n                            xOffset = -17;\n                            yOffset = -22;\n                            scaleX = 10.05;\n                            scaleY = 6.26;\n\n                            coords[0] = 50.0 + 124.03149777329222 * ((1.9694462586094064-(lat* Math.PI / 180)) * Math.sin(0.6010514667026994 * (lon + 96) * Math.PI / 180));\n                            coords[1] = 50.0 + 1.6155950752393982 * 124.03149777329222 * 0.02613325650382181 - 1.6155950752393982* 124.03149777329222 * (1.3236744353715044- (1.9694462586094064-(lat* Math.PI / 180)) * Math.cos(0.6010514667026994 * (lon + 96) * Math.PI / 180));\n                        }\n                        return {x : (coords[0] * scaleX + xOffset), y : (coords[1] * scaleY + yOffset)};\n                    },\n                    elems : {\n                        \"HI\" : \"m 233.08751,519.30948 1.93993,-3.55655 2.26326,-0.32332 0.32332,0.8083 -2.1016,3.07157 -2.42491,0 z m 10.18466,-3.71821 6.14313,2.58657 2.10159,-0.32332 1.61661,-3.87987 -0.64664,-3.39488 -4.2032,-0.48498 -4.04153,1.77827 -0.96996,3.71821 z m 30.71563,10.023 3.7182,5.49647 2.42492,-0.32332 1.13163,-0.48498 1.45495,1.29329 3.71821,-0.16166 0.96997,-1.45495 -2.90991,-1.77827 -1.93993,-3.71822 -2.1016,-3.55654 -5.8198,2.9099 -0.64664,1.77828 z m 20.20765,8.89137 1.29329,-1.93994 4.68817,0.96996 0.64665,-0.48498 6.14312,0.64664 -0.32332,1.2933 -2.58658,1.45494 -4.36485,-0.32332 -5.49648,-1.6166 z m 5.33482,5.17315 1.93994,3.87987 3.07155,-1.13163 0.32333,-1.61662 -1.61661,-2.10159 -3.71821,-0.32332 0,1.29329 z m 6.95143,-1.13163 2.26326,-2.9099 4.68817,2.42492 4.36485,1.13163 4.36486,2.74824 0,1.93993 -3.55654,1.77828 -4.84985,0.96996 -2.42491,-1.45495 -4.84984,-6.62811 z m 16.65111,15.51947 1.61661,-1.29328 3.39489,1.61662 7.59807,3.55654 3.39489,2.10159 1.6166,2.42492 1.93994,4.36485 4.04153,2.58658 -0.32332,1.2933 -3.87987,3.23322 -4.20319,1.45495 -1.45495,-0.64664 -3.07157,1.77826 -2.42491,3.23323 -2.26326,2.9099 -1.77828,-0.16166 -3.55654,-2.58658 -0.32332,-4.52651 0.64664,-2.42492 -1.61661,-5.65814 -2.1016,-1.77828 -0.16166,-2.58658 2.26326,-0.96996 2.1016,-3.07156 0.48498,-0.96997 -1.61661,-1.77828 -0.32332,-2.1016 z\",\n                        \"AK\" : \"m 158.07671,453.67502 -0.32332,85.35713 1.6166,0.96996 3.07157,0.16166 1.45494,-1.13162 2.58658,0 0.16167,2.9099 6.95143,6.78977 0.48499,2.58658 3.39488,-1.93994 0.64665,-0.16166 0.32332,-3.07156 1.45494,-1.61661 1.13164,-0.16166 1.93993,-1.45496 3.07156,2.1016 0.64665,2.90991 1.93993,1.13162 1.13163,2.42492 3.87988,1.77827 3.39488,5.98147 2.74823,3.87986 2.26326,2.74825 1.45496,3.7182 5.01149,1.77828 5.17317,2.10159 0.96996,4.36486 0.48498,3.07156 -0.96996,3.39489 -1.77828,2.26325 -1.61661,-0.8083 -1.45495,-3.07157 -2.74824,-1.45494 -1.77827,-1.13164 -0.80831,0.80831 1.45495,2.74825 0.16166,3.7182 -1.13163,0.48498 -1.93993,-1.93993 -2.10159,-1.29329 0.48498,1.61661 1.29328,1.77828 -0.8083,0.8083 c 0,0 -0.8083,-0.32332 -1.29328,-0.96997 -0.485,-0.64664 -2.1016,-3.39488 -2.1016,-3.39488 l -0.96997,-2.26326 c 0,0 -0.32332,1.29329 -0.96997,0.96996 -0.64665,-0.32332 -1.29329,-1.45494 -1.29329,-1.45494 l 1.77827,-1.93994 -1.45495,-1.45495 0,-5.0115 -0.8083,0 -0.8083,3.39488 -1.13164,0.485 -0.96996,-3.71822 -0.64665,-3.71821 -0.80831,-0.48498 0.32333,5.65815 0,1.13162 -1.45496,-1.29328 -3.55654,-5.98147 -2.1016,-0.48498 -0.64664,-3.71821 -1.61661,-2.9099 -1.61662,-1.13164 0,-2.26325 2.1016,-1.29329 -0.48498,-0.32332 -2.58658,0.64664 -3.39489,-2.42491 -2.58658,-2.90991 -4.84983,-2.58658 -4.04154,-2.58658 1.2933,-3.23322 0,-1.61661 -1.77828,1.61661 -2.9099,1.13163 -3.71821,-1.13163 -5.65815,-2.42491 -5.49647,0 -0.64664,0.48498 -6.46645,-3.87988 -2.1016,-0.32332 -2.74824,-5.8198 -3.55655,0.32332 -3.55655,1.45495 0.48499,4.52652 1.13162,-2.9099 0.96998,0.32332 -1.45496,4.36485 3.23322,-2.74824 0.64665,1.61661 -3.87987,4.36485 -1.29329,-0.32332 -0.48498,-1.93994 -1.29329,-0.8083 -1.29329,1.13163 -2.74824,-1.77827 -3.07157,2.1016 -1.77826,2.10159 -3.39489,2.1016 -4.68818,-0.16167 -0.48498,-2.10159 3.7182,-0.64665 0,-1.29328 -2.26326,-0.64666 0.96998,-2.42491 2.26325,-3.87987 0,-1.77827 0.16166,-0.80831 4.36486,-2.26326 0.96996,1.29329 2.74825,0 -1.29329,-2.58657 -3.71822,-0.32333 -5.01149,2.74824 -2.42492,3.39488 -1.77827,2.58659 -1.13163,2.26326 -4.20319,1.45494 -3.07157,2.58658 -0.323321,1.61662 2.263257,0.96997 0.808313,2.10158 -2.748249,3.23323 -6.466439,4.2032 -7.759747,4.20319 -2.101597,1.13162 -5.334818,1.13164 -5.334826,2.26325 1.778275,1.29329 -1.454954,1.45495 -0.484982,1.13163 -2.748238,-0.96997 -3.23322,0.16166 -0.808312,2.26326 -0.969963,0 0.323321,-2.42492 -3.556551,1.2933 -2.909899,0.96996 -3.394886,-1.29329 -2.909901,1.93993 -3.233224,0 -2.101597,1.2933 -1.616612,0.8083 -2.101595,-0.32332 -2.58658,-1.13163 -2.263257,0.64665 -0.969967,0.96996 -1.616613,-1.13162 0,-1.93994 3.071564,-1.29329 6.304787,0.64665 4.364853,-1.61662 2.101596,-2.10159 2.909902,-0.64665 1.778273,-0.80831 2.748241,0.16166 1.616612,1.2933 0.969963,-0.32332 2.263257,-2.74824 3.07157,-0.96998 3.39488,-0.64664 1.293294,-0.32332 0.646642,0.48498 0.808312,0 1.293284,-3.71821 4.041533,-1.45494 1.939936,-3.71821 2.263259,-4.52652 1.616615,-1.45495 0.323321,-2.58658 -1.616615,1.29329 -3.394893,0.64665 -0.646642,-2.42492 -1.293284,-0.32332 -0.969973,0.96996 -0.16166,2.90991 -1.454955,-0.16167 -1.454944,-5.8198 -1.293294,1.29328 -1.131624,-0.48498 -0.32332,-1.93993 -4.041533,0.16166 -2.101596,1.13163 -2.586578,-0.32332 1.454944,-1.45495 0.484981,-2.58658 -0.646641,-1.93994 1.454954,-0.96996 1.293284,-0.16166 -0.646642,-1.77828 0,-4.36485 -0.969963,-0.96997 -0.808312,1.45495 -6.143123,0 -1.454951,-1.29329 -0.646645,-3.87986 -2.101596,-3.55656 0,-0.96996 2.101596,-0.80831 0.161661,-2.1016 1.131628,-1.13162 -0.808305,-0.48498 -1.29329,0.48498 -1.131628,-2.74824 0.969967,-5.01151 4.526514,-3.23321 2.586575,-1.61662 1.939936,-3.7182 2.748249,-1.2933 2.586578,1.13164 0.323321,2.42492 2.424917,-0.32334 3.23322,-2.42491 1.616615,0.64665 0.969962,0.64664 1.616615,0 2.263259,-1.29329 0.808313,-4.36486 c 0,0 0.323321,-2.90989 0.969963,-3.39488 0.646642,-0.48498 0.969963,-0.96996 0.969963,-0.96996 l -1.131623,-1.93994 -2.58658,0.80831 -3.23323,0.8083 -1.939936,-0.48498 -3.556541,-1.77828 -5.011495,-0.16166 -3.556551,-3.7182 0.484981,-3.87987 0.646652,-2.42492 -2.101596,-1.77827 -1.939938,-3.71822 0.484983,-0.8083 6.789771,-0.48498 2.101596,0 0.969963,0.96996 0.646652,0 -0.16166,-1.61661 3.879862,-0.64664 2.586577,0.32332 1.454955,1.13163 -1.454955,2.1016 -0.484981,1.45494 2.748249,1.61662 5.011497,1.77827 1.778276,-0.96996 -2.263257,-4.36485 -0.969974,-3.23323 0.969974,-0.80831 -3.394891,-1.93993 -0.484983,-1.13164 0.484983,-1.6166 -0.808304,-3.87987 -2.909909,-4.68818 -2.424918,-4.20319 2.909909,-1.93994 3.233222,0 1.778276,0.64665 4.203192,-0.16166 3.718205,-3.55654 1.131633,-3.07157 3.718212,-2.42492 1.616604,0.96997 2.748239,-0.64665 3.718209,-2.1016 1.13164,-0.16166 0.96996,0.80832 4.52651,-0.16167 2.74824,-3.07156 1.13163,0 3.55655,2.42491 1.93993,2.1016 -0.48498,1.13163 0.64664,1.13163 1.61662,-1.61661 3.87987,0.32332 0.32332,3.7182 1.93994,1.45496 7.11309,0.64664 6.30479,4.20319 1.45494,-0.96996 5.17317,2.58658 2.10159,-0.64664 1.93994,-0.80832 4.84983,1.93994 4.36486,2.9099 z m -115.102797,28.93736 2.101596,5.33482 -0.161662,0.96997 -2.909902,-0.32333 -1.778273,-4.04153 -1.778273,-1.45494 -2.424919,0 -0.16166,-2.58659 1.778273,-2.42492 1.131629,2.42492 1.45495,1.45495 2.748241,0.64665 z m -2.58658,33.46387 3.718209,0.80831 3.718207,0.96996 0.808307,0.96998 -1.616612,3.7182 -3.071564,-0.16166 -3.394885,-3.55654 -0.161662,-2.74825 z m -20.692636,-14.06452 1.13163,2.58657 1.131628,1.61662 -1.131628,0.8083 -2.101597,-3.07156 0,-1.93993 0.969967,0 z m -13.7412027,73.07087 3.3948853,-2.26326 3.3948854,-0.96997 2.58658,0.32332 0.484983,1.61661 1.939935,0.48499 1.939934,-1.93993 -0.323322,-1.61661 2.748241,-0.64665 2.909902,2.58658 -1.131629,1.77827 -4.364852,1.13163 -2.748242,-0.48498 -3.718207,-1.13163 -4.3648533,1.45495 -1.616612,0.32332 -1.1316284,-0.64664 z m 48.9833487,-4.52651 1.616612,1.93993 2.101593,-1.61661 -1.454948,-1.2933 -2.263257,0.96998 z m 2.909902,3.07155 1.131624,-2.26325 2.101597,0.32332 -0.808303,1.93993 -2.424918,0 z m 23.602535,-1.93993 1.454954,1.77827 0.969974,-1.13162 -0.808313,-1.93994 -1.616615,1.29329 z m 8.72971,-12.44791 1.131633,5.8198 2.909899,0.80831 5.011495,-2.90991 4.364853,-2.58658 -1.6166,-2.42491 0.48498,-2.42492 -2.1016,1.29329 -2.909898,-0.80831 1.616605,-1.13162 1.939933,0.8083 3.87987,-1.77828 0.48499,-1.45494 -2.42492,-0.80831 0.8083,-1.93994 -2.74824,1.93994 -4.688172,3.55655 -4.849834,2.9099 -1.293294,1.13163 z m 42.35524,-19.88433 2.42492,-1.45495 -0.96997,-1.77828 -1.77827,0.96997 0.32332,2.26326 z\",\n                        \"FL\" : \"m 759.8167,439.1428 2.26566,7.3186 3.7297,9.74226 5.33479,9.3763 3.71819,6.30476 4.84982,5.49646 4.04151,3.71819 1.6166,2.90989 -1.13162,1.29328 -0.8083,1.29328 2.90988,7.43639 2.90989,2.90988 2.58657,5.3348 3.55653,5.81978 4.52649,8.24468 1.29329,7.59804 0.48498,11.96288 0.64664,1.77826 -0.32332,3.39487 -2.42491,1.29329 0.32332,1.93992 -0.64664,1.93993 0.32332,2.4249 0.48498,1.93993 -2.74822,3.23321 -3.07155,1.45494 -3.87985,0.16166 -1.45495,1.61661 -2.4249,0.96996 -1.29329,-0.48498 -1.13162,-0.96996 -0.32332,-2.90989 -0.80831,-3.39487 -3.39487,-5.17314 -3.55653,-2.26324 -3.87985,-0.32332 -0.8083,1.29328 -3.07155,-4.36483 -0.64664,-3.55653 -2.58657,-4.04151 -1.77826,-1.13163 -1.61661,2.10159 -1.77826,-0.32332 -2.10159,-5.01148 -2.90989,-3.87985 -2.90989,-5.33479 -2.58656,-3.07155 -3.55653,-3.71819 2.10158,-2.42491 3.23321,-5.49646 -0.16166,-1.6166 -4.52649,-0.96996 -1.61661,0.64664 0.32333,0.64664 2.58656,0.96996 -1.45494,4.5265 -0.8083,0.48498 -1.77827,-4.04151 -1.29328,-4.84982 -0.32332,-2.74823 1.45494,-4.68815 0,-9.53797 -3.07155,-3.71819 -1.29328,-3.07155 -5.17314,-1.29328 -1.93992,-0.64664 -1.61661,-2.58657 -3.39487,-1.61661 -1.13162,-3.39487 -2.74823,-0.96996 -2.42491,-3.71819 -4.20317,-1.45494 -2.90989,-1.45495 -2.58656,0 -4.04152,0.80831 -0.16166,1.93992 0.80831,0.96996 -0.48499,1.13163 -3.07154,-0.16166 -3.71819,3.55653 -3.55654,1.93992 -3.87985,0 -3.23321,1.29329 -0.32332,-2.74823 -1.6166,-1.93993 -2.90989,-1.13162 -1.6166,-1.45495 -8.08303,-3.87985 -7.59804,-1.77826 -4.36483,0.64664 -5.98144,0.48498 -5.98144,2.10159 -3.47924,0.61296 -0.23792,-8.04975 -2.58657,-1.93992 -1.77827,-1.77827 0.32332,-3.07156 10.18462,-1.29328 25.5424,-2.90989 6.78975,-0.64664 5.436,0.28027 2.58657,3.87986 1.45494,1.45494 8.09816,0.51522 10.81975,-0.64664 21.51239,-1.29329 5.44572,-0.67437 5.10758,0.20451 0.42683,2.90989 2.233,0.8083 0.23494,-4.63 -1.52822,-4.17295 1.3084,-1.43983 5.55463,0.45475 5.17314,0.32332 z m 12.54541,132.40508 2.42492,-0.64664 1.29328,-0.24249 1.45496,-2.34409 2.34408,-1.61661 1.29329,0.48499 1.69744,0.32332 0.40415,1.05079 -3.4757,1.21246 -4.2032,1.45495 -2.34408,1.21246 -0.88914,-0.88914 z m 13.4987,-5.01149 1.21246,1.0508 2.74824,-2.10159 5.33481,-4.20319 3.7182,-3.87987 2.50575,-6.6281 0.96997,-1.69744 0.16166,-3.39488 -0.72748,0.48498 -0.96996,2.82907 -1.45496,4.60733 -3.23322,5.254 -4.36484,4.20318 -3.39488,1.93993 -2.50575,1.53578 z\",\n                        \"NH\" : \"m 880.79902,142.42476 0.869,-1.0765 1.09022,-3.29102 -2.54308,-0.91347 -0.48499,-3.07156 -3.87985,-1.13162 -0.32332,-2.74824 -7.27475,-23.44082 -4.60142,-14.542988 -0.89708,-0.0051 -0.64664,1.616605 -0.64664,-0.484981 -0.96997,-0.969963 -1.45494,1.939925 -0.0485,5.032054 0.31165,5.667218 1.93992,2.74824 0,4.04152 -3.7182,5.06278 -2.58657,1.13164 0,1.13162 1.13163,1.77827 0,8.56802 -0.80831,9.21467 -0.16166,4.84982 0.96997,1.2933 -0.16166,4.52649 -0.48499,1.77828 0.96881,0.70922 16.78767,-4.42455 2.17487,-0.60245 1.84357,-2.77333 3.60523,-1.61312 z\",\n                        \"MI\" : \"M581.61931,82.059006 L 583.4483,80.001402 L 585.62022,79.201221 L 590.99286,75.314624 L 593.27908,74.743065 L 593.73634,75.200319 L 588.59232,80.344339 L 585.27728,82.287628 L 583.21967,83.202124 L 581.61931,82.059006 z M 667.79369,114.18719 L 668.44033,116.69293 L 671.67355,116.85459 L 672.96684,115.64213 C 672.96684,115.64213 672.88601,114.18719 672.56269,114.02552 C 672.23936,113.86386 670.94608,112.16642 670.94608,112.16642 L 668.76366,112.40891 L 667.14704,112.57057 L 666.82372,113.7022 L 667.79369,114.18719 z M 567.49209,111.21318 L 568.20837,110.63278 L 570.9566,109.82447 L 574.51313,107.56123 L 574.51313,106.59126 L 575.15978,105.94462 L 581.14121,104.97466 L 583.56612,103.03473 L 587.93095,100.93315 L 588.09261,99.639864 L 590.03254,96.729975 L 591.8108,95.921673 L 593.10409,94.143408 L 595.36733,91.880161 L 599.73217,89.455254 L 604.42032,88.970273 L 605.55194,90.101896 L 605.22862,91.071859 L 601.51043,92.041822 L 600.05549,95.113371 L 597.79224,95.921673 L 597.30726,98.34658 L 594.88235,101.57979 L 594.55903,104.16636 L 595.36733,104.65134 L 596.3373,103.51972 L 599.89383,100.60983 L 601.18711,101.90311 L 603.45036,101.90311 L 606.68357,102.87307 L 608.13851,104.0047 L 609.59345,107.07625 L 612.34168,109.82447 L 616.22153,109.66281 L 617.67648,108.69285 L 619.29308,109.98613 L 620.90969,110.47112 L 622.20297,109.66281 L 623.33459,109.66281 L 624.9512,108.69285 L 628.99271,105.13632 L 632.38758,104.0047 L 639.01566,103.68138 L 643.54215,101.74145 L 646.12872,100.44817 L 647.58367,100.60983 L 647.58367,106.26794 L 648.06865,106.59126 L 650.97853,107.39957 L 652.91846,106.91458 L 659.06156,105.29798 L 660.19318,104.16636 L 661.64813,104.65134 L 661.64813,111.60274 L 664.88134,114.67429 L 666.17462,115.32093 L 667.4679,116.29089 L 666.17462,116.61421 L 665.36632,116.29089 L 661.64813,115.80591 L 659.54654,116.45255 L 657.28329,116.29089 L 654.05008,117.74584 L 652.27182,117.74584 L 646.45204,116.45255 L 641.27891,116.61421 L 639.33898,119.20078 L 632.38758,119.84742 L 629.96267,120.65572 L 628.83105,123.72727 L 627.53777,124.8589 L 627.05279,124.69724 L 625.59784,123.08063 L 621.07135,125.50554 L 620.42471,125.50554 L 619.29308,123.88893 L 618.48478,124.05059 L 616.54486,128.41543 L 615.57489,132.45694 L 612.39377,139.45774 L 611.21701,138.42347 L 609.84527,137.39215 L 607.90449,127.10413 L 604.36001,125.73408 L 602.30743,123.44785 L 590.18707,120.70437 L 587.3318,119.67473 L 579.10138,117.50199 L 571.21139,116.35887 L 567.49209,111.21318 z,M697.8,177.2L694.6,168.9L692.3,159.9L689.9,156.7L687.3,154.9L685.7,156L681.8,157.8L679.9,162.8L677.1,166.5L676,167.2L674.5,166.5 C 674.5,166.5 671.9,165.1 672.1,164.4 C 672.3,163.8 672.6,159.4 672.6,159.4L676,158.1L676.8,154.7L677.4,152.1L679.9,150.5L679.5,140.5L677.9,138.2L676.6,137.4L675.8,135.3L676.6,134.5L678.2,134.8L678.4,133.2L676,131L674.7,128.4L672.1,128.4L667.6,126.9L662.1,123.5L659.3,123.5L658.7,124.2L657.7,123.7L654.6,121.4L651.7,123.2L648.8,125.5L649.2,129L650.1,129.3L652.2,129.8L652.7,130.6L650.1,131.4L647.5,131.8L646.1,133.5L645.8,135.6L646.1,137.3L646.4,142.8L642.8,144.9L642.2,144.7L642.2,140.5L643.5,138.1L644.1,135.6L643.3,134.8L641.4,135.6L640.4,139.8L637.7,141L635.9,142.9L635.7,143.9L636.4,144.7L635.7,147.3L633.5,147.8L633.5,148.9L634.3,151.3L633.1,157.5L631.5,161.5L632.2,166.2L632.7,167.3L631.9,169.8L631.5,170.6L631.2,173.3L634.8,179.3L637.7,185.8L639.1,190.6L638.3,195.3L637.3,201.3L634.9,206.4L634.6,209.2L631.3,212.3L635.8,212.1L657.2,209.9L664.4,208.9L664.5,210.5L671.4,209.3L681.7,207.8L685.5,207.4L685.7,206.8L685.8,205.3L687.9,201.6L689.9,199.9L689.7,194.8L691.3,193.2L692.4,192.9L692.6,189.3L694.2,186.3L695.2,186.9L695.4,187.5L696.2,187.7L698.1,186.7L697.8,177.2z\",\n                        \"VT\" : \"m 844.48416,154.05791 0.3167,-5.34563 -2.89071,-10.78417 -0.64664,-0.32332 -2.9099,-1.29329 0.8083,-2.90989 -0.8083,-2.10159 -2.70005,-4.63998 0.96997,-3.87986 -0.80831,-5.17315 -2.42491,-6.46644 -0.80557,-4.92251 26.41936,-6.73182 0.3087,5.52221 1.91626,2.74223 0,4.04152 -3.70715,5.05799 -2.58657,1.14267 -0.011,1.12057 1.30997,1.51912 -0.31093,8.09797 -0.60943,9.25886 -0.22795,5.55694 0.96996,1.29329 -0.16166,4.57069 -0.48498,1.68989 1.01418,0.72716 -7.43755,1.50671 -4.50174,0.72383 z\",\n                        \"ME\" : \"m 922.83976,78.830719 1.93993,2.101586 2.26325,3.718191 0,1.939926 -2.10159,4.688153 -1.93993,0.646642 -3.39487,3.071549 -4.84981,5.496454 c 0,0 -0.64664,0 -1.29328,0 -0.64664,0 -0.96997,-2.101584 -0.96997,-2.101584 l -1.77826,0.16166 -0.96996,1.454944 -2.42491,1.45495 -0.96996,1.45494 1.6166,1.45494 -0.48498,0.64665 -0.48498,2.74822 -1.93993,-0.16166 0,-1.6166 -0.32332,-1.29329 -1.45494,0.32333 -1.77827,-3.23321 -2.10158,1.29328 1.29328,1.45494 0.32332,1.13163 -0.8083,1.29328 0.32332,3.07155 0.16166,1.6166 -1.6166,2.58657 -2.90989,0.48498 -0.32332,2.90989 -5.3348,3.07155 -1.29328,0.48498 -1.61661,-1.45494 -3.07155,3.55653 0.96997,3.23321 -1.45495,1.29328 -0.16166,4.36483 -1.12328,6.25936 -2.46225,-1.15595 -0.48499,-3.07156 -3.87985,-1.13163 -0.32332,-2.74824 -7.27475,-23.44082 -4.69858,-14.639742 1.42054,-0.118165 1.51379,0.409899 0,-2.586568 1.3083,-4.496456 2.58657,-4.688153 1.45495,-4.041512 -1.93993,-2.424907 0,-5.981437 0.8083,-0.969963 0.80831,-2.748228 -0.16166,-1.454944 -0.16167,-4.849814 1.77827,-4.849814 2.90989,-8.891326 2.10158,-4.203172 1.29329,0 1.29328,0.16166 0,1.131623 1.29329,2.263247 2.74822,0.646642 0.80831,-0.808303 0,-0.969962 4.04151,-2.909889 1.77826,-1.778265 1.45495,0.161661 5.98143,2.424907 1.93993,0.969962 9.05299,29.907187 5.98143,0 0.80831,1.939926 0.16166,4.849814 2.90988,2.263246 0.80831,0 0.16166,-0.484981 -0.48498,-1.131623 2.74822,-0.161661 z m -20.93175,30.147531 1.53578,-1.53578 1.37412,1.0508 0.56581,2.42492 -1.69744,0.88913 -1.77827,-2.82907 z m 6.70893,-5.90062 1.77827,1.8591 c 0,0 1.29329,0.0808 1.29329,-0.2425 0,-0.32332 0.24249,-2.02076 0.24249,-2.02076 l 0.88914,-0.8083 -0.80831,-1.77828 -2.02076,0.72748 -1.37412,2.26326 z\",\n                        \"RI\" : \"m 874.07001,178.89536 -3.69579,-14.95599 6.26928,-1.84514 2.19113,1.92712 3.30649,4.32065 2.6879,4.40209 -2.99934,1.62479 -1.29328,-0.16166 -1.13162,1.77827 -2.42491,1.93992 -2.90986,0.96995 z\",\n                        \"NY\" : \"m 830.37944,188.7456 -1.13163,-0.96996 -2.58658,-0.16166 -2.26324,-1.93992 -1.63061,-6.12913 -3.45846,0.0905 -2.44371,-2.7082 -19.38532,4.38194 -43.00178,8.72969 -7.52965,1.22799 -0.73816,-6.46834 1.4281,-1.12538 1.29328,-1.13162 0.96997,-1.61661 1.77826,-1.13162 1.93993,-1.77827 0.48498,-1.6166 2.10158,-2.74823 1.13163,-0.96996 -0.16166,-0.96997 -1.29329,-3.07154 -1.77826,-0.16166 -1.93993,-6.1431 2.90989,-1.77827 4.36483,-1.45494 4.04152,-1.29329 3.23321,-0.48498 6.30475,-0.16166 1.93993,1.29329 1.6166,0.16166 2.10159,-1.29329 2.58657,-1.13162 5.17313,-0.48498 2.10159,-1.77827 1.77826,-3.23321 1.61661,-1.93992 2.10158,0 1.93993,-1.13163 0.16166,-2.26324 -1.45494,-2.10159 -0.32332,-1.45494 1.13162,-2.10159 0,-1.45494 -1.77827,0 -1.77826,-0.8083 -0.8083,-1.13163 -0.16166,-2.58657 5.81977,-5.49645 0.64664,-0.8083 1.45495,-2.90989 2.90989,-4.5265 2.74823,-3.71819 2.10158,-2.4249 2.4151,-1.82561 3.08136,-1.24594 5.49645,-1.29329 3.23321,0.16166 4.5265,-1.45494 7.56519,-2.07117 0.51979,4.97967 2.42492,6.46644 0.8083,5.17315 -0.96996,3.87986 2.58657,4.5265 0.8083,2.10159 -0.8083,2.9099 2.9099,1.29328 0.64664,0.32332 3.07156,10.99294 -0.53629,5.05967 -0.48498,10.83127 0.8083,5.49647 0.8083,3.55654 1.45495,7.27474 0,8.08304 -1.13163,2.26325 1.83933,1.99279 0.79655,1.67842 -1.93992,1.77827 0.32332,1.29328 1.29328,-0.32332 1.45495,-1.29328 2.26324,-2.58657 1.13163,-0.64664 1.6166,0.64664 2.26325,0.16166 7.92136,-3.87985 2.90989,-2.74823 1.29328,-1.45494 4.20317,1.6166 -3.39487,3.55653 -3.87985,2.90989 -7.11306,5.33479 -2.58656,0.96997 -5.81978,1.93992 -4.04151,1.13163 -1.17474,-0.53293 -0.24402,-3.68853 0.48498,-2.74824 -0.16166,-2.10158 -2.81351,-1.699 -4.5265,-0.96997 -3.87986,-1.13162 -3.7182,-1.77828 z\",\n                        \"PA\" : \"m 825.1237,224.69205 1.30842,-0.271 2.32953,-1.25325 1.21188,-2.48307 1.61661,-2.26325 3.23321,-3.07156 0,-0.8083 -2.42491,-1.6166 -3.55654,-2.42492 -0.96996,-2.58657 -2.74824,-0.32332 -0.16166,-1.13163 -0.8083,-2.74823 2.26326,-1.13162 0.16166,-2.42492 -1.2933,-1.29329 0.16166,-1.61661 1.93994,-3.07155 0,-3.07156 2.69763,-2.64588 -0.92028,-0.67498 -2.52408,-0.19291 -2.29449,-1.93992 -1.54992,-6.11606 -3.50458,0.10052 -2.45523,-2.70333 -18.09099,4.19777 -43.00178,8.72969 -8.89135,1.45494 -0.62067,-6.52139 -5.36253,5.06765 -1.29329,0.48498 -4.20229,3.00889 2.91076,19.13745 2.48166,9.72936 3.5718,19.26149 3.26931,-0.63768 11.94358,-1.50247 37.92663,-7.6652 14.87621,-2.82332 8.30035,-1.62236 0.26711,-0.23853 2.1016,-1.61662 2.10158,-0.68084 z\",\n                        \"NJ\" : \"m 829.67942,188.46016 -2.32255,2.73427 0,3.07156 -1.93994,3.07155 -0.16166,1.61662 1.2933,1.29328 -0.16166,2.42492 -2.26326,1.13162 0.8083,2.74823 0.16166,1.13163 2.74824,0.32332 0.96996,2.58657 3.55654,2.42492 2.42491,1.6166 0,0.80831 -2.98321,2.69656 -1.61661,2.26324 -1.45495,2.74824 -2.26325,1.29328 -0.46245,1.60248 -0.2425,1.21246 -0.60923,2.60674 1.09227,2.24419 3.23321,2.90989 4.84981,2.26325 4.04151,0.64664 0.16166,1.45494 -0.8083,0.96996 0.32332,2.74823 0.8083,0 2.10159,-2.4249 0.8083,-4.84982 2.74823,-4.04151 3.07155,-6.46642 1.13162,-5.49645 -0.64664,-1.13163 -0.16166,-9.37631 -1.61661,-3.39486 -1.13162,0.8083 -2.74823,0.32332 -0.48498,-0.48498 1.13163,-0.96997 2.10158,-1.93992 0.0631,-1.09383 -0.38439,-3.43384 0.57337,-2.74824 -0.11747,-1.96901 -2.80754,-1.75035 -5.09214,-1.17576 -4.13744,-1.38163 -3.58563,-1.64569 z\",\n                        \"DE\" : \"m 825.6261,228.2791 0.36831,-2.14689 0.37507,-1.69105 -1.623,0.39776 -1.61546,0.46756 -2.20626,1.7643 1.72012,5.04288 2.26326,5.65812 2.10158,9.69965 1.61662,6.30478 5.01148,-0.16166 6.14212,-1.18068 -2.26423,-7.38627 -0.96997,0.48498 -3.55653,-2.4249 -1.77826,-4.68816 -1.93993,-3.55653 -3.14712,-2.87031 -0.86416,-2.09812 0.36636,-1.61546 z\",\n                        \"MD\" : \"m 839.79175,252.41476 -6.00855,1.20384 -5.1429,0.11746 -1.84356,-6.92233 -1.92481,-9.16932 -2.57262,-6.18845 -1.28838,-4.39833 -7.50602,1.62236 -14.87621,2.82332 -37.45143,7.5509 1.1313,5.01166 0.96996,5.65811 0.32332,-0.32332 2.1016,-2.4249 2.26324,-2.61766 2.42491,-0.61556 1.45496,-1.45495 1.77826,-2.58657 1.29328,0.64665 2.90989,-0.32333 2.58658,-2.10158 2.00689,-1.45327 1.84523,-0.48498 1.64435,1.12995 2.90989,1.45494 1.93992,1.77827 1.21246,1.53578 4.12235,1.69743 0,2.90989 5.49646,1.29329 1.14444,0.54198 1.4119,-2.02832 2.88197,1.97016 -1.27817,2.48193 -0.76527,3.98566 -1.77826,2.58657 0,2.10159 0.64664,1.77827 5.06395,1.35569 4.3111,-0.0617 3.07154,0.96997 2.10159,0.32332 0.96996,-2.10159 -1.45494,-2.10158 0,-1.77827 -2.42491,-2.10159 -2.10158,-5.49645 1.29328,-5.3348 -0.16166,-2.10158 -1.29328,-1.29329 c 0,0 1.45494,-1.6166 1.45494,-2.26324 0,-0.64665 0.48498,-2.10159 0.48498,-2.10159 l 1.93993,-1.29328 1.93992,-1.61661 0.48498,0.96997 -1.45494,1.6166 -1.29328,3.71819 0.32332,1.13162 1.77826,0.32332 0.48498,5.49646 -2.10158,0.96996 0.32332,3.55653 0.48498,-0.16166 1.13162,-1.93992 1.61661,1.77826 -1.61661,1.29329 -0.32332,3.39487 2.58657,3.39487 3.87985,0.48498 1.61661,-0.8083 3.23655,4.18293 1.35835,0.5363 6.65367,-2.79695 2.00758,-4.02387 -0.43596,-4.90798 z m -15.96958,9.02872 1.13162,2.50575 0.16166,1.77827 1.13163,1.8591 c 0,0 0.88914,-0.88914 0.88914,-1.21246 0,-0.32332 -0.72747,-3.07156 -0.72747,-3.07156 l -0.72748,-2.34409 -1.8591,0.48499 z\",\n                        \"VA\" : \"m 831.63885,266.06892 -0.14391,-1.94703 6.45343,-2.54988 -0.77041,3.21784 -2.91995,3.77911 -0.41809,4.58582 0.46175,3.39044 -1.82797,4.97816 -2.16427,1.91614 -1.47034,-4.64081 0.44589,-5.44911 1.587,-4.18307 0.76687,-3.09761 z m 3.34019,28.30136 -58.17418,12.57543 -37.42697,5.27907 -6.67833,-0.37518 -2.58525,1.92638 -7.33913,0.22069 -8.38211,0.97767 -10.91496,1.61462 10.46943,-5.6112 -0.0131,-2.07493 1.52005,-2.14613 10.55378,-11.50143 3.94672,4.47746 3.78301,0.96398 2.54346,-1.14032 2.23722,-1.31116 2.53661,1.34352 3.91417,-1.42776 1.87673,-4.55634 2.60092,0.54002 2.85524,-2.13125 1.79927,0.4936 2.82721,-3.67657 0.34825,-2.08311 -0.96366,-1.27557 1.00277,-1.86663 5.27427,-12.27715 0.61677,-5.73508 1.22889,-0.52354 2.17853,2.44287 3.93586,-0.30117 1.92921,-7.57363 2.79399,-0.56086 1.04975,-2.74107 2.57982,-2.34688 2.77183,-5.69519 0.0849,-5.06755 9.82151,3.82282 c 0.68085,0.34042 0.83288,-5.04915 0.83288,-5.04915 l 3.65256,1.59833 0.0683,2.93816 5.78425,1.29949 2.13295,1.1762 1.65992,2.05569 -0.65455,3.64867 -1.94744,2.59098 0.10985,2.05907 0.58896,1.85291 4.97875,1.26843 4.45127,0.0399 3.06883,0.95864 1.94351,0.3093 0.71481,3.08846 3.19044,0.40253 0.86807,1.20002 -0.43949,4.69008 1.37473,1.10255 -0.47895,1.93039 1.22941,0.78977 -0.2218,1.3846 -2.69399,-0.0949 0.089,1.61552 2.28099,1.54287 0.12154,1.4119 1.77311,1.78538 0.49179,2.52413 -2.55304,1.38131 1.57222,1.4943 5.80102,-1.68583 3.60762,6.01193 z\",\n                        \"WV\" : \"m 761.18551,238.96731 1.11201,4.94453 1.08344,6.03133 2.13029,-2.58034 2.26324,-3.07156 2.53838,-0.61555 1.45495,-1.45494 1.77827,-2.58657 1.44498,0.64664 2.90989,-0.32332 2.58658,-2.10159 2.00689,-1.45326 1.84523,-0.48499 1.30392,1.01647 3.64325,1.82163 1.93993,1.77827 1.37412,1.29328 -0.76172,5.55494 -5.83491,-2.54122 -4.24525,-1.62202 -0.10114,5.17843 -2.74764,5.53673 -2.53003,2.42666 -1.19209,2.74939 -2.64358,0.5001 -0.89784,3.60188 -1.04323,3.94967 -3.96824,0.34074 -2.32373,-2.43888 -1.07115,0.55941 -0.63268,5.4697 -1.35029,3.5345 -4.9584,10.95497 0.89669,1.1607 -0.20586,1.90854 -2.80869,3.88447 -1.8085,-0.54429 -2.96805,2.15974 -2.54238,-0.57221 -1.99923,4.55557 c 0,0 -3.25931,1.43022 -3.92291,1.36772 -0.16051,-0.0151 -2.4691,-1.2491 -2.4691,-1.2491 l -2.33652,1.37937 -2.4098,1.0444 -3.74469,-0.88912 -1.1214,-1.16828 -2.19222,-3.02336 -3.14259,-1.98812 -1.71157,-3.62324 -4.28488,-3.46819 -0.64665,-2.26325 -2.58657,-1.45495 -0.80831,-1.6166 -0.24249,-5.25398 2.18242,-0.0808 1.93994,-0.8083 0.16166,-2.74823 1.6166,-1.45495 0.16166,-5.01148 0.96996,-3.87986 1.29329,-0.64664 1.29328,1.13162 0.48499,1.77827 1.77827,-0.96997 0.48498,-1.6166 -1.13162,-1.77827 0,-2.42491 0.96996,-1.29329 2.26325,-3.39487 1.29328,-1.45494 2.1016,0.48498 2.26324,-1.61662 3.07155,-3.39487 2.26326,-3.87986 0.32332,-5.65811 0.48498,-5.01149 0,-4.68816 -1.13162,-3.07155 0.96996,-1.45496 1.28348,-1.29328 3.49125,19.82712 4.63101,-0.75115 12.42832,-1.79965 z\",\n                        \"OH\" : \"m 735.32497,193.32832 -6.09354,4.05335 -3.87985,2.26325 -3.39487,3.71819 -4.04151,3.87985 -3.23321,0.8083 -2.90989,0.48498 -5.49646,2.58657 -2.10158,0.16166 -3.39487,-3.07155 -5.17314,0.64665 -2.58656,-1.45495 -2.38107,-1.35083 -4.89257,0.70341 -10.18462,1.61661 -11.20687,2.18473 1.29329,14.63028 1.77827,13.74117 2.58656,23.4408 0.56582,4.83117 4.12235,-0.12902 2.42491,-0.80831 3.3638,1.50314 2.07049,4.36483 5.13894,-0.0171 1.89174,2.1187 1.76117,-0.0653 2.53839,-1.34146 2.50417,0.3715 5.42128,0.48268 1.72697,-2.13268 2.34565,-1.29328 2.07049,-0.68085 0.64664,2.74824 1.77828,0.96996 3.47569,2.34407 2.18242,-0.0808 1.33312,-0.49248 0.18471,-2.76153 1.58536,-1.45496 0.0992,-4.79272 c 0,0 1.02396,-4.10906 1.02396,-4.10906 l 1.29927,-0.60128 1.32135,1.14774 0.53815,1.69702 1.71913,-1.03742 0.43898,-1.46075 -1.11669,-1.90306 0.0663,-2.31443 0.749,-1.07231 2.15276,-3.30648 1.05022,-1.54334 2.10159,0.48498 2.26325,-1.61661 3.07155,-3.39487 2.77149,-4.07873 0.32033,-5.05551 0.48498,-5.01149 -0.17678,-5.30688 -0.95484,-2.89478 0.35124,-1.18978 1.80439,-1.75011 -2.28879,-9.04733 -2.90989,-19.36177 z\",\n                        \"IN\" : \"m 619.56954,299.97132 0.0653,-2.85858 0.48499,-4.52651 2.26324,-2.90988 1.77828,-3.87987 2.58656,-4.20317 -0.48498,-5.81979 -1.77826,-2.74823 -0.32332,-3.23321 0.8083,-5.49647 -0.48498,-6.95141 -1.2933,-16.00441 -1.29328,-15.35776 -0.97047,-11.72002 3.07106,0.88951 1.45495,0.96996 1.13162,-0.32332 2.10159,-1.93992 2.82957,-1.61699 5.0928,-0.16204 21.98587,-2.26326 5.57573,-0.53316 1.50314,15.95621 4.25135,36.84155 0.59846,5.7716 -0.3715,2.26325 1.22798,1.79537 0.0964,1.37255 -2.52129,1.59951 -3.53943,1.55131 -3.20213,0.55028 -0.59846,4.86693 -4.57469,3.31247 -2.79642,4.01044 0.32332,2.37673 -0.58134,1.5342 -3.32647,0 -1.58553,-1.6166 -2.49331,1.2622 -2.68296,1.50314 0.16167,3.05445 -1.19379,0.25803 -0.46788,-1.01814 -2.16688,-1.50314 -3.25032,1.34148 -1.55131,3.00625 -1.43784,-0.8083 -1.45495,-1.59951 -4.46434,0.48499 -5.59283,0.96996 -2.90989,1.55132 z\",\n                        \"IL\" : \"m 619.54145,300.34244 0.0312,-3.22971 0.56739,-4.64596 2.33253,-2.91586 1.86665,-4.07576 2.23302,-3.99533 -0.3715,-5.2524 -2.00521,-3.54257 -0.0964,-3.34668 0.69483,-5.26951 -0.82541,-7.17837 -1.06634,-15.77745 -1.29328,-15.01734 -0.92228,-11.6392 -0.27251,-0.92139 -0.8083,-2.58657 -1.29328,-3.71819 -1.61661,-1.77827 -1.45494,-2.58656 -0.23357,-5.48896 -45.79643,2.59825 0.22862,2.37195 2.28623,0.68587 0.91448,1.14311 0.45725,1.82898 3.88658,3.42934 0.68588,2.28623 -0.68588,3.42934 -1.82898,3.65796 -0.68586,2.51484 -2.28623,1.82899 -1.82898,0.68587 -5.25832,1.37173 -0.68587,1.82898 -0.68587,2.05761 0.68587,1.37174 1.82898,1.60036 -0.22862,4.1152 -1.82899,1.60036 -0.68586,1.60036 0,2.74347 -1.82898,0.45724 -1.60036,1.14312 -0.22862,1.37174 0.22862,2.0576 -1.71467,1.31457 -1.0288,2.80064 0.45724,3.65795 2.28623,7.31593 7.31593,7.54455 5.48693,3.65796 -0.22862,4.34383 0.9145,1.37174 6.40143,0.45724 2.74347,1.37174 -0.68586,3.65796 -2.28623,5.94419 -0.68587,3.20072 2.28622,3.88658 6.40144,5.25832 4.57246,0.68587 2.05759,5.0297 2.05761,3.20071 -0.91449,2.97209 1.60036,4.11521 1.82898,2.05761 1.41403,-0.88069 0.90766,-2.07479 2.21308,-1.7472 2.13147,-0.6144 2.60253,1.1798 3.62699,1.3757 1.18895,-0.29823 0.19987,-2.25845 -1.2873,-2.41179 0.30422,-2.37672 1.8384,-1.34745 3.02254,-0.81029 1.2609,-0.45852 -0.61261,-1.38688 -0.79137,-2.35437 1.4326,-0.98096 1.15747,-3.21403 z\",\n                        \"CT\" : \"m 874.06831,178.86288 -3.67743,-14.87881 -4.71882,0.92031 -21.22878,4.74309 1.00019,3.22567 1.45495,7.27474 0.17678,8.96692 -1.22002,2.17487 1.92079,1.93234 4.27153,-3.90564 3.55653,-3.23321 1.93992,-2.10159 0.80831,0.64664 2.74822,-1.45494 5.17314,-1.13162 7.79469,-3.17877 z\",\n                        \"WI\" : \"m 615.06589,197.36866 -0.0667,-3.15742 -1.17911,-4.5265 -0.64664,-6.14309 -1.13162,-2.42491 0.96996,-3.07155 0.8083,-2.90989 1.45495,-2.58656 -0.64665,-3.39487 -0.64664,-3.55653 0.48498,-1.77827 1.93993,-2.42491 0.16166,-2.74823 -0.8083,-1.29328 0.64664,-2.58657 -0.45252,-4.17071 2.74823,-5.65811 2.90989,-6.78974 0.16166,-2.26325 -0.32332,-0.96996 -0.80831,0.48498 -4.20317,6.30476 -2.74823,4.04151 -1.93992,1.77827 -0.8083,2.26324 -1.95495,0.8083 -1.13162,1.93993 -1.45495,-0.32332 -0.16166,-1.77827 1.29329,-2.4249 2.10158,-4.68816 1.77827,-1.6166 0.99083,-2.35785 -2.56045,-1.90134 -1.97482,-10.36699 -3.54747,-1.34198 -1.94626,-2.30833 -12.12971,-2.72164 -2.87589,-1.01205 -8.21312,-2.16729 -7.91792,-1.15875 -3.76516,-5.13067 -0.7504,0.55401 -1.19791,-0.16166 -0.64665,-1.13162 -1.33401,0.29655 -1.13163,0.16166 -1.77826,0.96996 -0.96997,-0.64664 0.64665,-1.93993 1.93992,-3.07155 1.13162,-1.13162 -1.93992,-1.45494 -2.10159,0.8083 -2.90989,1.93992 -7.43638,3.23321 -2.90989,0.64664 -2.90988,-0.48498 -0.98173,-0.87825 -2.1167,2.83518 -0.22862,2.74347 0,8.45903 -1.14312,1.60037 -5.25832,3.88657 -2.28622,5.94419 0.45724,0.22862 2.51485,2.05761 0.68586,3.20072 -1.82898,3.20071 0,3.88659 0.45725,6.63005 2.97209,2.9721 3.42935,0 1.82898,3.20072 3.42933,0.45724 3.88659,5.71557 7.0873,4.11521 2.0576,2.74347 0.9145,7.43024 0.68586,3.31502 2.28623,1.60036 0.22862,1.37174 -2.0576,3.42933 0.22862,3.20073 2.51485,3.88658 2.51485,1.14311 2.97209,0.45724 1.34234,1.38012 45.29836,-2.66945 z\",\n                        \"NC\" : \"m 834.98153,294.31554 2.085,4.91735 3.55653,6.46642 2.4249,2.42491 0.64664,2.26325 -2.4249,0.16166 0.8083,0.64664 -0.32332,4.20317 -2.58657,1.29328 -0.64664,2.10159 -1.29328,2.90989 -3.7182,1.6166 -2.4249,-0.32332 -1.45495,-0.16166 -1.6166,-1.29328 0.32332,1.29328 0,0.96997 1.93993,0 0.8083,1.29328 -1.93993,6.30476 4.20317,0 0.64665,1.6166 2.26324,-2.26324 1.29329,-0.48499 -1.93993,3.55653 -3.07155,4.84982 -1.29328,0 -1.13163,-0.48498 -2.74822,0.64664 -5.17314,2.42491 -6.46642,5.33479 -3.39487,4.68815 -1.93992,6.46642 -0.48498,2.42491 -4.68816,0.48498 -5.45313,1.33666 -9.94641,-8.20253 -12.60954,-7.59805 -2.90989,-0.80831 -12.60953,1.45495 -4.27646,0.75015 -1.6166,-3.23322 -2.97036,-2.1167 -16.48939,0.48498 -7.27474,0.8083 -9.05299,4.52651 -6.14311,2.58656 -21.17755,2.58658 0.50009,-4.05433 1.77827,-1.45494 2.74824,-0.64665 0.64664,-3.7182 4.20318,-2.74822 3.87985,-1.45496 4.20319,-3.55653 4.36483,-2.10159 0.64664,-3.07156 3.87986,-3.87985 0.64664,-0.16166 c 0,0 0,1.13163 0.80831,1.13163 0.8083,0 1.93993,0.32332 1.93993,0.32332 l 2.26325,-3.55654 2.10159,-0.64665 2.26324,0.32333 1.61662,-3.55653 2.90989,-2.58658 0.48498,-2.10159 0.1875,-3.64819 4.2765,-0.0225 7.19859,-0.85579 15.75723,-2.25243 15.13604,-2.08657 21.64048,-4.71935 19.98332,-4.25857 11.17694,-2.40581 5.04998,-1.15688 z m 4.27046,33.20657 2.58658,-2.50575 3.15238,-2.58658 1.53578,-0.64664 0.16166,-2.02076 -0.64664,-6.14312 -1.45495,-2.34408 -0.64665,-1.8591 0.72748,-0.2425 2.74824,5.49648 0.40415,4.44567 -0.16166,3.39489 -3.39488,1.53577 -2.82907,2.42492 -1.13162,1.21246 -1.0508,-0.16166 z\",\n                        \"DC\" : \"m 805.81945,250.84384 -1.85828,-1.82417 -1.23263,-0.68629 1.44301,-2.02247 2.88909,1.9485 -1.24119,2.58443 z\",\n                        \"MA\" : \"m 899.62349,173.25394 2.17192,-0.68588 0.45726,-1.71467 1.0288,0.11431 1.0288,2.28624 -1.25742,0.45724 -3.8866,0.11432 0.45724,-0.57156 z m -9.37354,0.80018 2.28622,-2.62917 1.60037,0 1.82899,1.48605 -2.40054,1.0288 -2.17192,1.0288 -1.14312,-0.91448 z m -34.79913,-21.98819 17.64687,-4.64068 2.26326,-0.64664 1.91408,-2.79571 3.73677,-1.66331 2.88924,4.41284 -2.42491,5.17314 -0.32332,1.45494 1.93993,2.58657 1.13162,-0.8083 1.77827,0 2.26324,2.58656 3.87986,5.98144 3.55653,0.48498 2.26324,-0.96996 1.77827,-1.77827 -0.80831,-2.74822 -2.10158,-1.61661 -1.45495,0.8083 -0.96996,-1.29328 0.48498,-0.48498 2.10159,-0.16166 1.77826,0.8083 1.93993,2.42491 0.96996,2.90989 0.32332,2.4249 -4.20317,1.45495 -3.87985,1.93992 -3.87985,4.5265 -1.93993,1.45494 0,-0.96996 2.42491,-1.45495 0.48498,-1.77826 -0.8083,-3.07155 -2.90989,1.45494 -0.8083,1.45495 0.48498,2.26324 -2.06633,1.00043 -2.7472,-4.52713 -3.39488,-4.36484 -2.0705,-1.81247 -6.53327,1.8762 -5.09233,1.05079 -20.67516,4.59221 -0.66776,-4.76785 0.64664,-10.58877 4.28927,-0.88914 6.78975,-1.2933 z\",\n                        \"TN\" : \"m 696.67788,318.25411 -51.89309,5.01149 -15.75956,1.77826 -4.6212,0.51271 -3.86835,-0.0277 -0.22097,4.10083 -8.18538,0.26401 -6.95141,0.64664 -8.09083,-0.12386 -1.41378,7.07286 -1.69623,5.48005 -3.29317,2.75084 -1.34874,4.38106 -0.32332,2.58657 -4.04152,2.26324 1.45494,3.55654 -0.96996,4.36484 -0.96838,0.78965 108.15855,-10.40755 0.40327,-3.95494 1.81073,-1.49039 2.83415,-0.74945 0.67193,-3.71698 4.0986,-2.70496 4.04693,-1.49403 4.08358,-3.57033 4.43609,-2.02546 0.52126,-3.06735 4.0646,-3.98499 0.5508,-0.11417 c 0,0 0.0312,1.13162 0.83955,1.13162 0.8083,0 1.93993,0.35457 1.93993,0.35457 l 2.26325,-3.58779 2.07034,-0.64664 2.27511,0.29521 1.59831,-3.53286 2.95525,-2.64391 0.42168,-1.93911 0.30896,-3.71115 -2.14655,-0.19977 -2.60168,2.02833 -6.99331,0.0291 -18.35929,2.38682 -8.06109,1.9082 z\",\n                        \"AR\" : \"m 593.82477,343.05296 -3.97988,0.7167 -5.11215,-0.63403 0.4207,-1.60207 2.97975,-2.56669 0.94338,-3.65625 -1.82898,-2.9721 -78.41757,2.51485 1.60036,6.85869 -1e-5,8.23042 1.37175,10.97399 0.22862,37.83693 2.28623,1.94329 2.97209,-1.37173 2.74348,1.14311 0.68034,6.5733 55.62126,-1.1406 1.14563,-2.09037 -0.28662,-3.54951 -1.82563,-2.9721 1.59869,-1.48521 -1.59869,-2.5115 0.6842,-2.50983 1.36839,-5.60543 2.51819,-2.06263 -0.68587,-2.28456 3.65797,-5.37179 2.74347,-1.36839 -0.11348,-1.49358 -0.34544,-1.82564 2.85695,-5.59873 2.40304,-1.25659 0.38413,-3.42763 1.77067,-1.2417 -3.14352,-0.48427 -1.34146,-4.01044 2.80408,-2.37671 0.55026,-2.0192 1.27948,-4.04661 1.06619,-3.25539 z\",\n                        \"MO\" : \"m 558.44022,248.11316 -2.51987,-3.08725 -1.14312,-2.28623 -64.35723,2.40054 -2.28626,0.11431 1.25743,2.51485 -0.22862,2.28622 2.51484,3.88659 3.0864,4.11521 3.08641,2.74347 2.16123,0.22862 1.49673,0.9145 0,2.97209 -1.82897,1.60036 -0.45726,2.28622 2.05761,3.42935 2.51486,2.97209 2.51484,1.82898 1.37173,11.65975 0.31414,36.07221 0.22862,4.68675 0.45724,5.38351 22.43299,-0.86682 23.20603,-0.68587 20.80466,-0.80101 11.65474,-0.2303 2.1694,3.426 -0.68419,3.3075 -3.08725,2.40304 -0.57239,1.83734 5.37849,0.45726 3.89496,-0.68588 1.71718,-5.49363 0.65142,-5.85679 2.09803,-2.55516 2.59603,-1.48689 0.0514,-3.05024 1.01602,-1.93648 -1.69423,-2.54377 -1.33093,0.98426 -1.99262,-2.22724 -1.28503,-4.759 0.80101,-2.5182 -1.94413,-3.42766 -1.83064,-4.5758 -4.79941,-0.79934 -6.9688,-5.59875 -1.71886,-4.11353 0.79935,-3.20072 2.05927,-6.05767 0.45892,-2.86363 -1.94914,-1.03131 -6.85534,-0.79767 -1.02797,-1.71216 -0.1118,-4.23036 -5.48694,-3.43101 -6.97551,-7.7715 -2.28622,-7.31593 -0.23029,-4.22532 0.80101,-2.2879 z\",\n                        \"GA\" : \"m 672.29229,355.5518 0,2.18242 0.16166,2.1016 0.64664,3.39487 3.39488,7.92137 2.42491,9.86131 1.45494,6.14311 1.61661,4.84981 1.45495,6.95141 2.10159,6.30477 2.58657,3.39488 0.48498,3.39487 1.93993,0.8083 0.16166,2.1016 -1.77827,4.84981 -0.48498,3.23322 -0.16166,1.93993 1.61661,4.36484 0.32332,5.3348 -0.80831,2.42491 0.64665,0.80831 1.45495,0.8083 0.2047,3.21809 2.23301,3.34953 2.25044,2.16205 7.92138,0.16166 10.81975,-0.64664 21.51239,-1.29328 5.44572,-0.67437 4.57725,0.0277 0.16166,2.90989 2.58657,0.8083 0.32332,-4.36484 -1.61661,-4.5265 1.13163,-1.6166 5.81978,0.8083 4.97741,0.31778 -0.77542,-6.29879 2.26324,-10.02295 1.45495,-4.20318 -0.48499,-2.58656 3.33441,-6.2443 -0.5103,-1.35168 -1.91341,0.70458 -2.58656,-1.2933 -0.64665,-2.10159 -1.29328,-3.55653 -2.26326,-2.10159 -2.58656,-0.64664 -1.61661,-4.84982 -2.92501,-6.335 -4.20317,-1.93993 -2.1016,-1.93993 -1.29329,-2.58657 -2.10158,-1.93993 -2.26325,-1.29329 -2.26325,-2.90989 -3.07155,-2.26324 -4.52651,-1.77828 -0.48498,-1.45494 -2.42491,-2.90989 -0.48498,-1.45495 -3.39488,-4.97048 -3.51987,0.0992 -3.75491,-2.35614 -1.41828,-1.29328 -0.32332,-1.77827 0.8708,-1.93992 2.22664,-1.11014 -0.63394,-2.09722 -41.86975,4.98893 z\",\n                        \"SC\" : \"m 764.94328,408.16488 -1.77706,0.9695 -2.58657,-1.29329 -0.64664,-2.10159 -1.29328,-3.55653 -2.26326,-2.1016 -2.58657,-0.64664 -1.6166,-4.84981 -2.74824,-5.98145 -4.20317,-1.93994 -2.1016,-1.93992 -1.29328,-2.58657 -2.10159,-1.93994 -2.26325,-1.29328 -2.26325,-2.90989 -3.07155,-2.26324 -4.52651,-1.77828 -0.48498,-1.45494 -2.4249,-2.90989 -0.48499,-1.45496 -3.39488,-5.17313 -3.39487,0.16166 -4.04152,-2.42492 -1.29328,-1.29328 -0.32332,-1.77827 0.8083,-1.93992 2.26325,-0.96998 -0.51082,-2.28908 5.7681,-2.33657 9.1155,-4.589 7.77473,-0.80831 16.1144,-0.42248 2.63825,1.87743 1.6791,3.35822 4.30235,-0.60998 12.60953,-1.45496 2.90989,0.80831 12.60954,7.59806 10.10808,8.12168 -5.42117,5.45834 -2.58657,6.1431 -0.48498,6.30476 -1.6166,0.8083 -1.13163,2.74823 -2.4249,0.64664 -2.10159,3.55653 -2.74823,2.74823 -2.26324,3.39487 -1.61661,0.8083 -3.55653,3.39487 -2.90989,0.16166 0.96997,3.23321 -5.01148,5.49646 -2.10159,1.29328 z\",\n                        \"KY\" : \"m 725.9944,295.2707 -2.29332,2.40168 -3.57819,3.99404 -4.92455,5.46467 -1.21577,1.71577 -0.0625,2.10158 -4.37986,2.16409 -5.65812,3.39488 -7.23187,1.79885 -51.86789,4.89886 -15.75956,1.77826 -4.6212,0.51271 -3.86835,-0.0277 -0.22695,4.22028 -8.17941,0.14456 -6.95141,0.64664 -7.98748,-0.0602 1.20778,-1.32008 2.49954,-1.54085 0.22863,-3.20073 0.91449,-1.82898 -1.60682,-2.5389 0.80183,-1.90681 2.26326,-1.77826 2.10158,-0.64665 2.74823,1.29329 3.55654,1.29328 1.13163,-0.32332 0.16166,-2.26325 -1.29329,-2.42491 0.32332,-2.26325 1.93993,-1.45494 2.58658,-0.64665 1.6166,-0.64664 -0.8083,-1.77827 -0.64664,-1.93993 1.50662,-0.9958 c 0.003,-0.0371 1.25396,-3.52229 1.23829,-3.65781 l 3.05322,-1.47868 5.31979,-0.96996 4.49404,-0.48498 1.39244,1.62743 1.52827,0.8708 1.59077,-3.10821 3.18708,-1.28262 2.20509,1.48403 0.41056,0.99904 1.17352,-0.26401 -0.16167,-2.95293 3.13087,-1.74919 2.14809,-1.07348 1.52936,1.66081 3.31815,-0.0442 0.58733,-1.57125 -0.36751,-2.26324 2.60053,-3.9985 4.77655,-3.4379 0.70595,-4.83586 2.92502,-0.45591 3.79146,-1.64568 2.44332,-1.70824 -0.19833,-1.56493 -1.14245,-1.45494 0.56582,-2.99491 4.18485,-0.1175 2.29991,-0.7458 3.34739,1.4291 2.05411,4.36484 5.13229,0.0108 2.05101,2.20819 1.61545,-0.1477 2.60169,-1.27817 5.23706,0.57337 2.57492,0.21751 1.68758,-2.05624 2.61795,-1.42588 1.88178,-0.7071 0.64664,2.83663 2.04343,1.05834 2.64276,2.08249 0.11747,5.67324 0.8083,1.57241 2.58972,1.55628 0.77164,2.29451 4.15989,3.43694 1.80531,3.62324 2.45655,1.65852 z\",\n                        \"AL\" : \"m 631.30647,460.41572 -1.4906,-14.3215 -2.74824,-18.75264 0.16166,-14.06449 0.8083,-31.03885 -0.16166,-16.65106 0.16509,-6.41906 44.48448,-3.61945 -0.1478,2.18242 0.16166,2.1016 0.64665,3.39487 3.39488,7.92137 2.4249,9.86131 1.45495,6.14311 1.6166,4.84982 1.45496,6.95141 2.10158,6.30476 2.58657,3.39489 0.48498,3.39486 1.93994,0.80831 0.16166,2.10159 -1.77828,4.84982 -0.48498,3.23322 -0.16166,1.93992 1.61662,4.36485 0.32332,5.33479 -0.80832,2.42492 0.64666,0.8083 1.45494,0.8083 0.32814,2.88882 -5.59766,-0.35355 -6.78975,0.64665 -25.5424,2.90988 -10.41156,1.40677 -0.22138,2.8774 1.77827,1.77827 2.58657,1.93992 0.58086,7.93544 -5.54206,2.5729 -2.74822,-0.32332 2.74822,-1.93993 0,-0.96996 -3.07154,-5.98144 -2.26325,-0.64664 -1.45495,4.36483 -1.29328,2.74823 -0.64664,-0.16166 -2.74823,0 z\",\n                        \"LA\" : \"m 607.96706,459.16125 -3.28461,-3.16614 1.00991,-5.50023 -0.66135,-0.89308 -9.26167,1.00656 -25.02832,0.45892 -0.68419,-2.39468 0.91281,-8.4557 3.31588,-5.94585 5.03136,-8.69102 -0.57407,-2.39802 1.25659,-0.68085 0.45893,-1.95249 -2.28624,-2.05593 -0.11179,-1.94245 -1.83066,-4.34551 -0.14705,-6.3386 -55.47379,0.92397 0.0286,9.57357 0.68587,9.37353 0.68587,3.88658 2.51485,4.11521 0.91449,5.02971 4.34383,5.48693 0.22862,3.20072 0.68587,0.68587 -0.68587,8.45904 -2.97209,5.02969 1.60036,2.05761 -0.68588,2.51484 -0.68586,7.31593 -1.37174,3.20071 0.12246,3.61645 4.68648,-1.52015 12.11335,0.20701 10.34627,3.55653 6.46642,1.13163 3.71819,-1.45495 3.23321,1.13163 3.23321,0.96996 0.8083,-2.10159 -3.23321,-1.13162 -2.58657,0.48498 -2.74823,-1.6166 c 0,0 0.16167,-1.29329 0.80831,-1.45495 0.64664,-0.16166 3.07155,-0.96996 3.07155,-0.96996 l 1.77826,1.45494 1.77827,-0.96996 3.23321,0.64664 1.45494,2.42491 0.32332,2.26325 4.52649,0.32332 1.77827,1.77826 -0.8083,1.61661 -1.29329,0.8083 1.61661,1.6166 8.40634,3.55653 3.55653,-1.29328 0.96997,-2.42491 2.58656,-0.64664 1.77827,-1.45494 1.29328,0.96996 0.8083,2.90989 -2.26324,0.8083 0.64664,0.64664 3.39487,-1.29328 2.26325,-3.39487 0.8083,-0.48498 -2.10159,-0.32332 0.8083,-1.61661 -0.16166,-1.45494 2.10159,-0.48498 1.13162,-1.29329 0.64664,0.8083 c 0,0 -0.16166,3.07155 0.64665,3.07155 0.8083,0 4.20317,0.64665 4.20317,0.64665 l 4.04151,1.93992 0.96996,1.45495 2.90989,0 1.13163,0.96996 2.26324,-3.07155 0,-1.45495 -1.29328,0 -3.39487,-2.74822 -5.81978,-0.80831 -3.23321,-2.26324 1.13163,-2.74823 2.26324,0.32332 0.16166,-0.64664 -1.77826,-0.96996 0,-0.48499 3.23321,0 1.77826,-3.07154 -1.29328,-1.93993 -0.32332,-2.74823 -1.45495,0.16166 -1.93992,2.10159 -0.64664,2.58657 -3.07155,-0.64665 -0.96997,-1.77826 1.77827,-1.93993 1.90333,-3.4456 -1.0611,-2.41227 -1.16564,-3.98133 z\",\n                        \"MS\" : \"m 631.55882,459.34458 -0.25426,1.25615 -5.17314,0 -1.45494,-0.8083 -2.10159,-0.32332 -6.78974,1.93992 -1.77826,-0.8083 -2.58657,4.20317 -1.10254,0.77802 -1.12383,-2.48798 -1.14312,-3.88659 -3.42933,-3.20071 1.1431,-5.54455 -0.68586,-0.91449 -1.82898,0.22862 -7.91792,0.87337 -24.5465,0.37337 -0.76974,-2.22536 0.87337,-8.3768 3.11684,-5.67281 5.22707,-9.1449 -0.44574,-2.4326 1.23686,-0.65625 0.43587,-1.91947 -2.31748,-2.07898 -0.11512,-2.14148 -1.83572,-4.12109 -0.109,-5.96277 1.32753,-2.48097 -0.2233,-3.41575 -1.76949,-3.08259 1.52642,-1.48221 -1.57061,-2.49954 0.45725,-1.65221 1.5774,-6.52637 2.48595,-2.03635 -0.64167,-2.36697 3.65797,-5.30253 2.83186,-1.35642 -0.22097,-1.67516 -0.28813,-1.6811 2.87606,-5.56767 2.34572,-1.23151 0.15163,-0.89301 37.34348,-3.88117 0.18486,6.28333 0.16166,16.65106 -0.8083,31.03885 -0.16166,14.06449 2.74824,18.75264 1.48437,13.39529 z\",\n                        \"IA\" : \"m 569.19154,199.5843 0.26438,2.7862 2.22372,0.57726 0.95394,1.22533 0.50001,1.85536 3.79284,3.35865 0.68587,2.3915 -0.67434,3.42447 -1.58231,3.23198 -0.79934,2.74179 -2.17275,1.60204 -1.71551,0.5724 -5.57902,1.8602 -1.39146,3.84869 0.72864,1.37174 1.84051,1.68259 -0.28293,4.03629 -1.76315,1.53786 -0.77141,1.64314 0.12722,2.77632 -1.88631,0.45724 -1.62545,1.10491 -0.27879,1.35263 0.27879,2.11492 -1.55102,1.11607 -2.47053,-3.13328 -1.26257,-2.44987 -65.73582,2.51485 -0.91803,0.16544 -2.0524,-4.51596 -0.22862,-6.63007 -1.60036,-4.11521 -0.68586,-5.25831 -2.28623,-3.65797 -0.91448,-4.80107 -2.74348,-7.54455 -1.14311,-5.37264 -1.37174,-2.17191 -1.60036,-2.74346 1.95398,-4.84383 1.37174,-5.71557 -2.74347,-2.05761 -0.45725,-2.74347 0.9145,-2.51485 1.71467,0 82.654,-1.26948 0.83426,4.18312 2.25218,1.56097 0.25671,1.42309 -2.02954,3.38931 0.19041,3.20552 2.51486,3.7982 2.52679,1.29362 3.07928,0.50305 0.65834,0.83236 z\",\n                        \"MN\" : \"m 475.23781,128.82439 -0.45725,-8.45904 -1.82898,-7.31592 -1.82898,-13.488725 -0.45725,-9.830778 -1.82898,-3.429343 -1.60036,-5.029695 0,-10.28802 0.68586,-3.886587 -1.82093,-5.451667 30.13242,0.03527 0.32332,-8.244684 0.64664,-0.161661 2.26325,0.484982 1.93992,0.808302 0.8083,5.496456 1.45495,6.143098 1.6166,1.616605 4.84982,0 0.32332,1.454944 6.30476,0.323321 0,2.101586 4.84981,0 0.32332,-1.293284 1.13162,-1.131623 2.26325,-0.646642 1.29328,0.969963 2.90989,0 3.87985,2.586567 5.3348,2.424907 2.42491,0.484982 0.48498,-0.969963 1.45494,-0.484982 0.48498,2.909889 2.58657,1.293284 0.48498,-0.484982 1.29329,0.161661 0,2.101586 2.58656,0.969963 3.07155,0 1.61661,-0.808303 3.23321,-3.233209 2.58656,-0.484981 0.80831,1.778265 0.48498,1.293283 0.96996,0 0.96996,-0.808302 8.89133,-0.323321 1.77826,3.071549 0.64665,0 0.71361,-1.084279 4.43991,-0.370665 -0.6121,2.279459 -3.93872,1.837125 -9.24578,4.061128 -4.77474,2.006897 -3.07155,2.586568 -2.42491,3.55653 -2.26324,3.879851 -1.77827,0.808304 -4.52649,5.01147 -1.29329,0.16166 -4.32778,2.75712 -2.46288,3.20511 -0.22862,3.19139 0.0944,8.04335 -1.37604,1.68875 -5.08154,3.75997 -2.23008,5.98241 2.87175,2.23371 0.67989,3.22698 -1.85524,3.23893 0.17079,3.74802 0.36886,6.7304 3.02825,3.00199 3.329,0 1.89111,3.1326 3.37917,0.50327 3.85916,5.67147 7.08729,4.11675 2.14315,2.87512 0.67115,6.43951 -81.2115,1.14479 -0.33792,-35.67685 -0.45724,-2.97209 -4.11521,-3.42934 -1.14312,-1.82898 0,-1.60037 2.0576,-1.60035 1.37174,-1.37174 0.22863,-3.20072 z\",\n                        \"OK\" : \"m 380.34313,320.82146 -16.68418,-1.27331 -0.88022,10.95243 20.46538,1.15688 32.05555,1.3036 -2.3346,24.41865 -0.45725,17.83257 0.22863,1.60036 4.34383,3.65796 2.0576,1.14311 0.68587,-0.22862 0.68587,-2.05761 1.37174,1.82899 2.0576,0 0,-1.37174 2.74347,1.37174 -0.45724,3.88658 4.11521,0.22862 2.51484,1.14312 4.11521,0.68587 2.51485,1.82898 2.28623,-2.0576 3.42934,0.68586 2.51485,3.42934 0.91448,0 0,2.28623 2.28623,0.68586 2.28622,-2.28622 1.82899,0.68586 2.51484,0 0.9145,2.51486 6.30107,2.07897 1.37174,-0.68586 1.82898,-4.11521 1.14311,0 1.14312,2.0576 4.11521,0.68587 3.65795,1.37174 2.9721,0.91449 1.82899,-0.91449 0.68586,-2.51485 4.34383,0 2.0576,0.91449 2.74347,-2.05761 1.14312,0 0.68587,1.60036 4.1152,0 1.60036,-2.0576 1.82899,0.45724 2.0576,2.51486 3.20071,1.82897 3.20073,0.9145 1.94108,1.11893 -0.3891,-37.21701 -1.37175,-10.97398 -0.16046,-8.87234 -1.43989,-6.53773 -0.7782,-7.17964 -0.0681,-3.81622 -12.13684,0.31874 -46.41004,-0.45724 -45.03891,-2.05762 -24.2912,-1.37173 z\",\n                        \"TX\" : \"m 361.46423,330.57358 22.69079,1.08594 31.09269,1.14312 -2.33461,23.4558 -0.29676,18.15352 0.0681,2.08179 4.34383,3.81843 1.98665,1.44716 1.18421,-0.55969 0.37337,-1.81772 1.14032,1.80362 2.11164,0.0439 -0.003,-1.44709 1.66994,0.96727 1.1387,0.40887 -0.35927,3.96765 4.08819,0.0935 2.92532,1.19717 3.95474,0.52538 2.38138,2.07898 2.1241,-2.07617 3.72494,0.61491 2.22091,3.22494 1.07496,0.32096 -0.16047,1.96527 2.21361,0.79229 2.33015,-2.0548 2.13302,0.61492 2.22938,0.0355 0.93307,2.43544 6.32809,2.11445 1.59305,-0.76693 1.48947,-4.17771 0.34072,0 0.90649,0.0816 1.22905,2.06863 3.92988,0.66528 3.337,1.12288 3.42563,1.19597 1.84058,-0.975 0.71376,-2.51484 4.45322,0.0442 1.80874,0.93078 2.79925,-2.10651 1.10364,0.0442 0.85104,1.60507 4.05472,0 1.51887,-2.02862 1.86737,0.40724 1.94603,2.40328 3.52057,2.04415 2.85876,0.80981 1.51362,0.79984 2.4467,1.99732 3.04304,-1.32779 2.69109,1.13888 0.56381,6.10594 -0.0398,9.70217 0.68586,9.53401 0.70218,3.60511 2.67533,4.41986 0.89818,4.95073 4.21595,5.53802 0.19602,3.14494 0.74637,0.78584 -0.73007,8.38007 -2.8721,5.0065 1.53297,2.15287 -0.63008,2.33808 -0.66957,7.40432 -1.50432,3.338 0.29488,3.50235 -5.66488,1.58518 -9.86129,4.5265 -0.96996,1.93992 -2.58657,1.93993 -2.10158,1.45494 -1.29329,0.8083 -5.65811,5.3348 -2.74823,2.10159 -5.3348,3.2332 -5.65811,2.42491 -6.30476,3.39487 -1.77826,1.45495 -5.81978,3.55653 -3.39487,0.64664 -3.87985,5.49645 -4.04151,0.32333 -0.96997,1.93992 2.26325,1.93993 -1.45495,5.49645 -1.29328,4.5265 -1.13162,3.87985 -0.8083,4.52649 0.8083,2.42491 1.77826,6.9514 0.96997,6.14309 1.77826,2.74823 -0.96996,1.45495 -3.07155,1.93992 -5.65812,-3.87985 -5.49645,-1.13162 -1.29329,0.48498 -3.23321,-0.64664 -4.20317,-3.07155 -5.17313,-1.13162 -7.59805,-3.39487 -2.10158,-3.87986 -1.29329,-6.46641 -3.2332,-1.93993 -0.64665,-2.26325 0.64665,-0.64664 0.32332,-3.39487 -1.29329,-0.64664 -0.64664,-0.96996 1.29328,-4.36484 -1.6166,-2.26324 -3.23321,-1.29329 -3.39487,-4.36483 -3.55653,-6.62808 -4.20317,-2.58657 0.16166,-1.93992 -5.3348,-12.2862 -0.8083,-4.20317 -1.77826,-1.93992 -0.16166,-1.45495 -5.98144,-5.33479 -2.58657,-3.07155 0,-1.13163 -2.58657,-2.10158 -6.78974,-1.13163 -7.43638,-0.64664 -3.07155,-2.26324 -4.52649,1.77826 -3.55653,1.45495 -2.26325,3.2332 -0.96996,3.7182 -4.36483,6.14309 -2.42491,2.42491 -2.58657,-0.96996 -1.77826,-1.13163 -1.93993,-0.64664 -3.87985,-2.26324 0,-0.64665 -1.77826,-1.93992 -5.17314,-2.10159 -7.43638,-7.7597 -2.26325,-4.68815 0,-8.08303 -3.23321,-6.46642 -0.48498,-2.74822 -1.6166,-0.96997 -1.13163,-2.10158 -5.01147,-2.10159 -1.29328,-1.6166 -7.11307,-7.92137 -1.29328,-3.23321 -4.68816,-2.26325 -1.45495,-4.36487 -2.58659,-2.90987 -1.93991,-0.48496 -0.64923,-4.67764 8.00187,0.68589 29.03499,2.74345 29.03508,1.60036 2.23353,-19.46182 3.88655,-55.55502 1.60039,-18.74732 1.37174,0.0286 m 99.02935,229.66274 -0.56581,-7.11308 -2.74824,-7.19392 -0.56582,-7.03225 1.53578,-8.24471 3.31406,-6.87059 3.4757,-5.41565 3.1524,-3.55655 0.64664,0.2425 -4.769,6.6281 -4.36484,6.54728 -2.02077,6.62809 -0.32332,5.17316 0.88913,6.14312 2.58658,7.19392 0.48498,5.17314 0.16166,1.45496 -0.88913,0.24248 z\",\n                        \"NM\" : \"m 288.15255,424.01315 -0.77541,-4.7481 8.64378,0.5254 30.17176,2.9459 27.26816,1.68989 2.21527,-18.70747 3.85736,-55.87597 1.73768,-19.38923 1.5717,0.12856 0.8254,-11.16339 -104.00445,-10.63595 -17.49735,120.43481 15.46067,1.98915 1.29328,-10.02295 29.23215,2.82935 z\",\n                        \"KS\" : \"m 507.88059,324.38028 -12.61826,0.20443 -46.08909,-0.45723 -44.55748,-2.05763 -24.62974,-1.25741 3.89379,-64.59497 22.08346,0.67517 40.28913,0.8414 44.30124,0.98758 5.09563,0 2.1844,2.1624 2.01766,-0.0214 1.6403,1.01247 -0.0625,3.00923 -1.82898,1.72537 -0.33225,2.23217 1.84308,3.40233 2.95236,3.19506 2.32735,1.61446 1.30077,11.24082 0.18913,36.08573 z\",\n                        \"NE\" : \"m 486.09787,240.70058 3.23061,7.01991 -0.12863,2.30252 3.45922,5.49388 2.71929,3.15234 -5.04948,0 -43.48256,-0.93868 -40.78686,-0.8903 -22.25222,-0.78387 1.07277,-21.32785 -32.31824,-2.92025 4.34383,-44.00986 15.54633,1.02881 20.11879,1.1431 17.83257,1.14312 23.77676,1.14311 10.74526,-0.45724 2.0576,2.28622 4.80108,2.9721 1.14311,0.91449 4.34383,-1.37174 3.88659,-0.45724 2.74347,-0.22863 1.82898,1.37174 4.05743,1.60036 2.97209,1.60036 0.45725,1.60036 0.91449,2.0576 1.82898,0 0.79798,0.0462 0.89423,4.68182 2.92026,8.46792 0.57253,3.75671 2.52349,3.77425 0.56959,5.11414 1.60724,4.24037 0.25234,6.47426 z\",\n                        \"SD\" : \"m 476.44687,204.02465 -0.0474,-0.58087 -2.89571,-4.84544 1.86023,-4.71211 1.49273,-5.88654 -2.78187,-2.07971 -0.38516,-2.74346 0.7924,-2.55435 3.18851,0.0152 -0.12308,-5.00614 -0.3333,-30.17425 -0.61773,-3.76758 -4.07232,-3.33093 -0.98263,-1.67696 -0.0625,-1.60882 2.02212,-1.5294 1.53222,-1.66567 0.24496,-2.65679 -58.25709,-1.60035 -54.79921,-3.44909 -5.32527,63.69119 14.59027,0.9038 19.94985,1.20561 17.74305,0.92859 23.77676,1.30358 11.9827,-0.42464 1.9663,2.24518 5.19464,3.25335 0.76389,0.72275 4.54144,-1.45281 6.54054,-0.61491 1.6753,1.33627 4.20451,1.59613 2.94506,1.63583 0.39898,1.48381 1.03949,2.24088 2.23737,-0.20136 z\",\n                        \"ND\" : \"m 475.30528,128.91846 -0.61491,-8.43367 -1.67695,-6.81592 -1.89149,-13.02422 -0.45724,-10.987026 -1.73946,-3.077142 -1.75661,-5.194396 0.0312,-10.44427 0.62336,-3.824087 -1.8341,-5.467761 -28.64225,-0.564027 -18.59095,-0.646642 -26.51232,-1.293284 -22.94634,-2.133869 -6.99324,67.176834 54.93224,3.34365 58.06901,1.38583 z\",\n                        \"WY\" : \"m 360.37668,143.27587 -106.7426,-13.45706 -14.08348,88.45803 113.26461,13.58549 7.56147,-88.58646 z\",\n                        \"MT\" : \"M 369.20952,56.969133 338.5352,54.1613 l -29.26055,-3.55653 -29.26054,-4.041512 -32.3321,-5.334795 -18.42929,-3.39487 -32.72365,-6.932736 -4.47902,21.347532 3.42934,7.544541 -1.37174,4.572452 1.82898,4.572451 3.20073,1.371739 4.62082,10.769453 2.6951,3.176523 0.45724,1.143118 3.42934,1.143118 0.45725,2.057593 -7.0873,17.603953 0,2.51485 2.51485,3.20071 0.91448,0 4.80107,-2.97209 0.68588,-1.14312 1.60036,0.68587 -0.22863,5.25832 2.74348,12.57425 2.97209,2.51484 0.91448,0.68587 1.82899,2.28622 -0.45725,3.42935 0.68587,3.42933 1.14312,0.9145 2.28622,-2.28623 2.74347,0 3.20072,1.60036 2.51485,-0.91449 4.11521,0 3.65795,1.60036 2.74348,-0.45725 0.45724,-2.9721 2.97209,-0.68586 1.37174,1.37174 0.45725,3.20071 1.42587,0.83464 1.88695,-11.03474 106.74567,13.42892 8.80221,-86.299157 z\",\n                        \"CO\" : \"m 380.03242,320.96457 4.90324,-86.32496 -113.38856,-12.64396 -12.21382,87.93916 120.69914,11.02976 z\",\n                        \"ID\" : \"m 148.47881,176.48395 8.77087,-35.22072 1.37174,-4.22952 2.51484,-5.94418 -1.25742,-2.28623 -2.51486,0.11431 -0.80017,-1.0288 0.45725,-1.14311 0.34292,-3.08641 4.45815,-5.48695 1.82898,-0.45724 1.14311,-1.14311 0.57156,-3.20072 0.91448,-0.68586 3.88659,-5.82988 3.88659,-4.34383 0.22862,-3.772268 -3.42934,-2.629163 -1.53555,-4.400983 13.62491,-63.341691 13.51759,2.528111 -4.40808,21.383013 3.56035,7.485352 -1.58111,4.66084 1.96985,4.641233 3.13822,1.255191 3.83534,9.556588 3.51269,4.437154 0.50725,1.143118 3.34095,1.143118 0.36885,2.097075 -6.97101,17.376092 -0.16518,2.56593 2.63112,3.3217 0.90508,-0.0489 4.91129,-3.0256 0.67742,-1.09497 1.56231,0.65886 -0.27844,5.35372 2.73925,12.58271 3.91783,3.17791 1.68118,2.16545 -0.71661,4.08386 1.06622,2.80741 1.06163,1.09128 2.47929,-2.35142 2.84816,0.0489 2.91925,1.3352 2.78002,-0.68193 3.79426,-0.16048 3.9789,1.60036 2.74348,-0.29676 0.49674,-3.03731 2.93259,-0.76483 1.26017,1.51591 0.44093,2.94496 1.42434,1.21321 -8.386,53.60866 c 0,0 -87.96599,-16.70061 -94.95939,-18.20435 z\",\n                        \"UT\" : \"m 259.49836,310.10509 -83.74903,-11.87225 20.58761,-112.54135 46.78031,8.74514 -1.4848,10.63042 -2.31162,13.17266 7.80769,0.92837 16.40652,1.80479 8.21097,0.85564 -12.24765,88.27658 z\",\n                        \"AZ\" : \"m 144.9112,382.62909 -2.62701,2.15833 -0.32332,1.45495 0.48498,0.96996 18.91427,10.66959 12.12454,7.59804 14.7111,8.56801 16.81269,10.02295 12.2862,2.42491 24.95116,2.70491 17.25561,-119.12707 -83.73563,-11.91725 -3.09239,16.41246 -1.60629,0.0153 -1.71467,2.62916 -2.51485,-0.11432 -1.25742,-2.74347 -2.74347,-0.34293 -0.9145,-1.14311 -0.91448,0 -0.9145,0.57156 -1.94329,1.0288 -0.1143,6.97298 -0.22864,1.71467 -0.57154,12.57424 -1.48605,2.17191 -0.57156,3.31503 2.74347,4.91539 1.25742,5.82988 0.80019,1.0288 1.0288,0.57156 -0.11432,2.28622 -1.60035,1.37173 -3.42934,1.71467 -1.94329,1.9433 -1.48605,3.65795 -0.57156,4.91539 -2.85778,2.74347 -2.0576,0.68587 0.13569,0.82988 -0.45725,1.71467 0.45725,0.80018 3.65796,0.57154 -0.57156,2.74348 -1.48605,2.17191 -3.77227,0.91449 z\",\n                        \"NV\" : \"m 196.39273,185.57552 -23.63891,128.82275 -1.83224,0.34915 -1.57276,2.40618 -2.37294,0.0107 -1.47195,-2.74347 -2.61847,-0.37842 -0.77092,-1.10763 -1.03783,-0.054 -2.77837,1.64429 -0.31026,6.78548 -0.36209,5.77717 -0.34857,8.59281 -1.4471,2.08916 -2.43892,-1.07403 -69.079886,-104.20119 18.989116,-67.58491 93.0921,20.66601 z\",\n                        \"OR\" : \"m 148.72184,175.53153 8.8497,-34.80151 1.05079,-4.22952 2.35437,-5.62323 -0.61551,-1.16288 -2.51486,-0.0462 -1.2816,-1.6707 0.45724,-1.46407 0.50341,-3.24688 4.45815,-5.48695 1.82898,-1.09915 1.14311,-1.14311 1.48604,-3.56563 4.04706,-5.6694 3.56563,-3.8624 0.22862,-3.451314 -3.26886,-2.468682 -1.78341,-4.642625 -12.66377,-3.61197 -15.08909,-3.54365 -15.43202,0.114306 -0.45724,-1.371729 -5.48695,2.057604 -4.45814,-0.571559 -2.40054,-1.600361 -1.25742,0.685875 -4.68676,-0.228632 -1.71467,-1.371729 -5.25832,-2.057604 -0.800182,0.114316 -4.34383,-1.486056 -1.943291,1.828983 -6.172812,-0.342927 -5.944183,-4.115209 0.685865,-0.80018 0.228621,-7.773173 -2.286225,-3.886577 -4.115208,-0.571559 -0.685865,-2.514847 -2.353932,-0.466565 -5.798525,2.058784 -2.263247,6.466418 -3.233209,10.022949 -3.23321,6.466419 -5.011474,14.064461 -6.466419,13.579473 -8.083023,12.60952 -1.939926,2.90989 -0.808302,8.568 0.386095,12.08023 112.578342,26.32133 z\",\n                        \"WA\" : \"m 102.07324,7.6117734 4.36483,1.4549443 9.69963,2.7482283 8.568,1.939925 20.0459,5.658117 22.95579,5.658116 15.22312,3.207173 -13.63236,63.585811 -12.445,-3.525318 -15.50801,-3.570679 -15.22929,0.03324 -0.45557,-1.344699 -5.59922,2.179293 -4.59543,-0.736744 -2.14697,-1.584054 -1.31321,0.657976 -4.73566,-0.140243 -1.69836,-1.349633 -5.26304,-2.112303 -0.734971,0.146918 -4.389122,-1.524448 -1.893298,1.817379 -6.265906,-0.298733 -5.925698,-4.125702 0.778957,-0.932763 0.121223,-7.677452 -2.281999,-3.839701 -4.115208,-0.60704 -0.67741,-2.510616 -2.275512,-0.456932 -3.554948,1.230576 -2.263247,-3.219247 0.323321,-2.909889 2.748228,-0.323321 1.616605,-4.041511 -2.586568,-1.131624 0.161661,-3.718191 4.364833,-0.646641 -2.748228,-2.748228 -1.454945,-7.113061 0.646642,-2.909888 0,-7.921363 -1.778265,-3.23321 2.263247,-9.376307 2.101586,0.484981 2.424907,2.909889 2.748228,2.586567 3.233209,1.939926 4.526493,2.101586 3.071551,0.646642 2.909889,1.454944 3.394873,0.969963 2.263246,-0.16166 0,-2.424908 1.293284,-1.131623 2.101582,-1.293284 0.32333,1.131624 0.32332,1.778265 -2.263251,0.484981 -0.323321,2.101586 1.778262,1.454945 1.13163,2.424907 0.64664,1.939925 1.45494,-0.16166 0.16166,-1.293284 -0.96996,-1.293284 -0.48498,-3.233209 0.8083,-1.778265 -0.64664,-1.454944 0,-2.263247 1.77827,-3.55653 -1.13163,-2.586568 -2.42491,-4.8498139 0.32333,-0.8083023 1.13162,-0.8083024 z m -9.456692,5.9789646 2.020764,-0.16166 0.484982,1.374119 1.535779,-1.616615 2.344082,0 0.808303,1.535779 -1.53578,1.69744 0.646652,0.808313 -0.727477,2.020761 -1.374119,0.404146 c 0,0 -0.889138,0.08084 -0.889138,-0.242485 0,-0.323321 1.454955,-2.586578 1.454955,-2.586578 l -1.69744,-0.565817 -0.323321,1.454954 -0.727478,0.646642 -1.535782,-2.263257 -0.484982,-2.505742 z\",\n                        \"CA\" : \"m 144.69443,382.19813 3.94008,-0.48862 1.48604,-2.01144 0.54454,-2.94109 -3.55152,-0.59012 -0.51417,-0.66822 0.4775,-2.03231 -0.15928,-0.58967 1.92257,-0.61959 3.04278,-2.83268 0.58156,-4.9951 1.3799,-3.40211 1.94329,-2.16626 3.51887,-1.58967 1.65439,-1.60483 0.0687,-2.10884 -0.99333,-0.58001 -1.02315,-1.07273 -1.15522,-5.84845 -2.6852,-4.83009 0.56581,-3.505 -2.41958,-1.02931 -69.061322,-104.1784 18.902112,-67.60149 -67.079863,-15.69796 -1.506896,4.73324 -0.161661,7.43638 -5.173135,11.80121 -3.071548,2.58657 -0.323321,1.13162 -1.778266,0.80831 -1.454944,4.20317 -0.808302,3.23321 2.748228,4.20317 1.616605,4.20317 1.131623,3.55653 -0.323321,6.46642 -1.778265,3.07155 -0.646642,5.81978 -0.969963,3.71819 1.778265,3.87985 2.748228,4.52649 2.263247,4.84982 1.293283,4.04151 -0.32332,3.23321 -0.323321,0.48498 0,2.10158 5.658116,6.30476 -0.484981,2.42491 -0.646642,2.26325 -0.646642,1.93992 0.16166,8.24469 2.101586,3.71819 1.939926,2.58656 2.748228,0.48499 0.969963,2.74822 -1.131623,3.55653 -2.101587,1.61661 -1.131623,0 -0.808302,3.87985 0.484981,2.90989 3.23321,4.36483 1.616604,5.3348 1.454944,4.68815 1.293284,3.07155 3.39487,5.81978 1.454944,2.58656 0.484982,2.90989 1.616604,0.96996 0,2.42491 -0.808302,1.93993 -1.778265,7.11306 -0.484982,1.93992 2.424908,2.74823 4.203172,0.48498 4.526493,1.77827 3.879851,2.10158 2.909889,0 2.909888,3.07155 2.586567,4.84982 1.131624,2.26324 3.879851,2.10159 4.849814,0.8083 1.454944,2.10159 0.646642,3.23321 -1.454944,0.64664 0.323321,0.96996 3.233211,0.8083 2.748228,0.16167 3.159889,-1.68685 3.879854,4.20317 0.808302,2.26325 2.586572,4.20317 0.32332,3.23321 0,9.37631 0.48498,1.77826 10.02295,1.45495 19.72257,2.74822 13.84504,1.3497 z m -88.135212,-43.71668 1.293288,1.53578 -0.16166,1.29329 -3.233221,-0.0808 -0.565814,-1.21246 -0.646644,-1.45495 3.314051,-0.0808 z m 1.939932,0 1.212458,-0.64664 3.556543,2.10159 3.07156,1.21245 -0.889136,0.64666 -4.526509,-0.2425 -1.61661,-1.61661 -0.808306,-1.45495 z m 20.692614,19.80348 1.778265,2.34408 0.808313,0.96997 1.535779,0.56581 0.565807,-1.45495 -0.969963,-1.77827 -2.667403,-2.02076 -1.050798,0.16166 0,1.21246 z m -1.454955,8.64886 1.778276,3.15239 1.212458,1.93994 -1.454954,0.24248 -1.293284,-1.21245 c 0,0 -0.727477,-1.45495 -0.727477,-1.85911 0,-0.40414 0,-2.18242 0,-2.18242 l 0.484981,-0.0808 z\"\n                    }\n                }\n            }\n        }\n    );\n\n    return Mapael;\n\n}));"
  },
  {
    "path": "public/admin/js/map/world_countries.js",
    "content": "/*!\n *\n * Jquery Mapael - Dynamic maps jQuery plugin (based on raphael.js)\n * Requires jQuery and Mapael\n *\n * Map of World by country\n * \n * @source http://backspace.com/mapapp/javascript_world/\n */\n\n(function (factory) {\n    if (typeof exports === 'object') {\n        // CommonJS\n        module.exports = factory(require('jquery'), require('jquery-mapael'));\n    } else if (typeof define === 'function' && define.amd) {\n        // AMD. Register as an anonymous module.\n        define(['jquery', 'mapael'], factory);\n    } else {\n        // Browser globals\n        factory(jQuery, jQuery.mapael);\n    }\n}(function ($, Mapael) {\n\n    \"use strict\";\n    \n    $.extend(true, Mapael,\n        {\n            maps :  {\n                world_countries : {\n                    width : 1000,\n                    height : 400,\n                    getCoords : function (lat, lon) {\n                        var xfactor = 2.752;\n                        var xoffset = 473.75;\n                        var x = (lon * xfactor) + xoffset;\n                        \n                        var yfactor = -2.753;\n                        var yoffset = 231;\n                        var y = (lat * yfactor) + yoffset;\n                        \n                        return {x : x, y : y};\n                    },\n                    'elems': {\n                        \"AE\" : \"M615.622,164.177l0.582,0.000l0.000,0.580l2.324,-0.289l2.326,0.000l1.455,0.000l2.033,-1.743l2.034,-1.743l1.745,-1.742l0.583,0.871l0.291,2.324l-1.456,0.000l-0.289,1.742l0.581,0.291l-1.163,0.580l0.000,1.161l-0.873,1.162l0.000,1.162l-0.580,0.580l-8.430,-1.452l-0.872,-2.613l0.291,0.871z\",\n                        \"AF\" : \"M642.364,132.815l2.617,1.162l2.034,-0.291l0.581,-1.452l2.325,-0.291l1.454,-0.870l0.583,-2.323l2.326,-0.291l0.580,-1.162l1.164,0.871l0.871,0.000l1.453,0.000l2.035,0.582l0.871,0.290l2.036,-0.872l0.872,0.582l0.872,-1.162l1.745,0.000l0.289,-0.291l0.290,-1.161l1.455,-1.161l1.454,0.871l-0.291,0.871l0.581,0.000l0.000,2.323l0.873,0.872l1.161,-0.581l1.162,-0.291l1.744,-1.162l1.745,0.290l2.909,0.000l0.580,0.582l-1.743,0.290l-1.454,0.581l-2.907,0.291l-3.197,0.580l-1.454,1.161l0.581,1.162l0.289,1.452l-1.450,1.161l0.289,1.162l-0.872,0.871l-2.616,0.000l1.161,1.743l-1.742,0.580l-1.162,1.743l0.000,1.743l-0.875,0.580l-1.160,0.000l-2.036,0.290l-0.292,0.581l-2.034,0.000l-1.452,1.742l-0.291,2.323l-3.488,1.161l-2.035,-0.289l-0.581,0.580l-1.455,-0.291l-2.907,0.291l-4.649,-1.452l2.615,-2.323l-0.289,-1.742l-2.036,-0.581l-0.290,-1.743l-0.873,-2.032l1.163,-1.742l-1.163,-0.291l0.873,-2.032l-1.161,3.485z\",\n                        \"AL\" : \"M530.451,115.973l-0.289,0.871l0.289,1.161l1.165,0.581l0.000,0.872l-0.873,0.291l-0.292,0.869l-1.160,1.453l-0.583,-0.291l0.000,-0.580l-1.454,-0.871l-0.292,-1.452l0.292,-1.742l0.292,-0.872l-0.584,-0.580l0.000,-0.872l1.163,-1.162l0.292,0.291l0.582,0.000l0.581,0.581l0.582,0.290l-0.289,-1.162z\",\n                        \"AM\" : \"M593.82,118.005l3.780,-0.580l0.581,0.870l0.871,0.291l-0.289,0.872l1.452,0.871l-0.871,0.871l1.163,0.871l1.162,0.290l0.000,2.032l-0.873,0.000l-1.163,-1.451l0.000,-0.581l-1.160,0.000l-0.873,-0.581l-0.582,0.000l-1.162,-0.871l-2.036,-0.580l0.292,-1.452l0.292,0.872z\",\n                        \"AO\" : \"M518.825,247.227l0.582,2.032l0.871,1.453l0.581,0.87l0.874,1.452h2.033l0.873-0.581l1.452,0.581l0.582-0.871l0.581-1.451l1.744-0.291v-0.29h1.452l-0.289,0.871h3.488v1.742l0.579,1.161l-0.579,1.453l0.29,1.74l0.873,1.162v3.195l0.581-0.292h1.162l1.745-0.29h1.161l0.291,0.871l-0.291,1.452l0.583,1.161l-0.292,1.161v0.873h-5.524l-0.289,8.711l2.034,2.322l1.745,1.744l-5.232,1.161l-6.396-0.582l-2.033-1.161h-11.047l-0.581,0.291l-1.745-1.161l-1.743-0.292l-1.455,0.581l-1.452,0.581l-0.29-1.742l0.581-2.612l0.871-2.324v-1.161l0.874-2.613l0.871-1.163l1.452-1.742l0.873-1.16l0.292-2.033v-1.451l-0.874-1.162l-0.871-1.742l-0.581-1.452v-0.581l0.872-1.161l-0.872-2.613l-0.291-1.742l-1.455-1.741l0.292-0.582l1.163-0.581l0.581,0.291l1.162-0.581L518.825,247.227zM508.071,246.646l-0.874,0.291l-0.581-2.031l1.163-1.163l0.87-0.581l0.874,0.871l-0.874,0.58l-0.578,0.872V246.646z\",\n                        \"AR\" : \"M293.546,382.836h-2.616l-1.454-0.87h-1.745h-2.907v-6.389l1.163,1.45l1.163,2.033l3.779,1.744l3.778,0.58L293.546,382.836zM295,291.656l1.452,2.033l1.163-2.323l3.198,0.29l0.291,0.581l5.232,4.356l2.326,0.29l3.198,2.033l2.906,1.161l0.291,1.162l-2.617,4.354l2.617,0.58l3.197,0.581l2.326-0.581l2.326-2.032l0.582-2.322l1.163-0.58l1.454,1.45v2.324l-2.325,1.45l-1.745,1.163l-3.198,2.612l-3.779,3.777l-0.582,2.321l-0.872,2.613l0.291,2.905l-0.872,0.58v1.741l-0.29,1.452l3.487,2.323l-0.291,2.033l1.745,1.161l-0.291,1.162l-2.616,3.773l-4.07,1.455l-5.522,0.579l-2.907-0.29l0.582,1.451l-0.582,2.033l0.291,1.452l-1.454,0.871l-2.907,0.58l-2.616-1.161l-1.163,0.871l0.583,2.613l1.744,0.872l1.452-0.872l0.873,1.453l-2.617,0.87l-2.035,1.743l-0.582,2.613l-0.58,1.451h-2.617l-2.035,1.451l-0.873,2.033l2.617,2.032l2.615,0.582l-0.872,2.613l-3.197,1.452l-1.744,3.194l-2.616,1.161l-1.163,1.163l0.872,2.902l2.035,1.742l-1.163-0.291l-2.617-0.29l-6.685-0.58l-1.163-1.453v-2.03h-1.744l-0.873-0.873l-0.291-2.904l2.035-1.161l0.873-1.741l-0.292-1.453l1.455-2.323l0.872-3.775l-0.291-1.451l1.452-0.58l-0.29-1.162l-1.454-0.289l0.873-1.162l-1.162-1.162l-0.582-3.194l1.164-0.581l-0.582-3.193l0.582-2.904l0.872-2.613l1.453-0.87l-0.581-2.615l-0.292-2.613l2.326-1.742l-0.29-2.323l1.744-2.613v-2.613l-0.873-0.58l-1.163-4.646l1.744-2.904l-0.291-2.612l0.872-2.614l2.035-2.324l1.744-1.741l-0.872-1.163l0.582-0.87v-4.646l2.907-1.451l1.163-2.613l-0.291-0.872l2.034-2.324L295,291.656z\",\n                        \"AT\" : \"M520.57,98.549l-0.292,1.162l-1.453,0.000l0.582,0.581l-1.164,1.742l-0.291,0.580l-2.616,0.000l-1.162,0.582l-2.326,-0.291l-4.069,-0.580l-0.582,-0.872l-2.615,0.292l-0.291,0.580l-1.746,-0.291l-1.452,0.000l-1.162,-0.581l0.289,-0.581l0.000,-0.580l0.873,-0.291l1.452,0.871l0.292,-0.871l2.326,0.291l2.034,-0.581l1.452,0.000l0.584,0.581l0.290,-0.291l-0.290,-1.742l0.872,-0.580l1.162,-1.162l2.035,0.871l1.453,-1.162l0.871,0.000l2.326,0.581l1.163,0.000l1.455,0.581l-0.292,0.291l-0.292,-0.870z\",\n                        \"AU\" : \"M874.039,343.054l2.616,0.871l1.454-0.29l2.325-0.581l1.453,0.291l0.291,3.193l-0.87,0.872l-0.293,2.321l-1.162-0.579l-1.744,1.741h-0.582l-1.743-0.289l-1.745-2.324l-0.289-1.742l-1.744-2.323l0.29-1.451L874.039,343.054zM868.806,268.715l1.163,2.324l1.744-1.163l0.873,1.163l1.452,1.161l-0.289,1.161l0.58,2.324l0.291,1.45l0.873,0.29l0.579,2.323l-0.289,1.453l0.871,1.741l3.198,1.453l1.744,1.451l2.034,1.161l-0.582,0.581l1.745,1.742l0.87,2.904l1.165-0.581l1.163,1.452l0.581-0.581l0.579,2.904l2.036,1.742l1.163,1.161l2.034,2.033l0.873,2.322v1.452v1.742l1.163,2.323v2.323l-0.582,1.452l-0.581,2.323v1.742l-0.582,2.033l-1.162,2.322l-2.034,1.453l-1.163,2.031l-0.872,1.453l-0.872,2.322l-0.871,1.451l-0.873,2.033l-0.292,1.743v0.87l-1.452,1.163h-3.198l-2.326,1.159l-1.452,1.163l-1.454,1.161l-2.325-1.45l-1.743-0.293l0.289-1.45l-1.452,0.58l-2.325,1.744l-2.326-0.581l-1.743-0.582h-1.454l-2.616-0.871l-1.744-1.743l-0.582-2.032l-0.58-1.452l-1.456-1.162l-2.614-0.29l0.873-1.161l-0.581-2.033l-1.455,1.744l-2.326,0.579l1.455-1.452l0.292-1.74l1.161-1.453l-0.291-2.032l-2.324,2.612l-1.745,0.873l-0.873,2.03l-2.323-1.161l0.29-1.452l-1.744-1.741l-1.455-1.161l0.583-0.581l-3.779-1.743h-1.744l-2.616-1.45l-4.942,0.29l-3.778,0.871l-2.907,1.162l-2.615-0.292l-2.908,1.451l-2.616,0.581l-0.289,1.452l-1.163,1.161h-2.325l-1.744,0.291l-2.325-0.581l-2.036,0.29l-2.034,0.291l-1.455,1.452l-0.871-0.291l-1.452,0.871l-1.163,0.873h-2.036h-2.034l-2.906-1.744l-1.452-0.58v-1.742l1.452-0.291l0.581-0.58l-0.29-1.161l0.58-1.743l-0.29-1.741l-1.454-2.614l-0.579-1.742v-1.452l-0.873-1.743l-0.29-0.87l-1.163-1.162l-0.292-2.033l-1.454-2.323l-0.579-1.161l1.163,1.161l-0.874-2.321l1.455,0.58l0.873,1.161v-1.451l-1.454-2.033l-0.292-0.87l-0.582-0.872l0.29-1.742l0.584-0.581l0.289-1.451l-0.289-1.453l1.162-2.032l0.292,2.032l1.161-1.743l2.034-1.159l1.454-1.162l2.034-0.872l1.454-0.29l0.581,0.29l2.325-0.871l1.455-0.29l0.579-0.58l0.582-0.291h1.744l2.616-0.871l1.745-1.161l0.579-1.452l1.744-1.452v-1.162v-1.45l2.036-2.324l1.163,2.324l1.163-0.292l-0.871-1.45l0.871-1.453l1.163,0.871l0.289-2.322l1.454-1.162l0.58-1.162l1.454-0.58v-0.581l1.163,0.291l0.291-0.872l1.163-0.291l1.163-0.289l2.034,1.161l1.743,1.742h1.453l1.744,0.291l-0.581-1.742l1.454-2.032l1.163-0.873l-0.291-0.581l1.162-1.452l1.744-1.161l1.165,0.291l2.323-0.291v-1.452l-2.034-0.87l1.453-0.58l2.035,0.869l1.453,1.163l2.326,0.581l0.581-0.29l1.744,0.87l1.744-0.87l0.871,0.29l0.872-0.581l1.164,1.451l-0.873,1.453l-0.872,1.16h-0.873l0.292,1.162l-0.873,1.452l-1.163,1.161l0.292,0.872l2.325,1.452l2.034,0.87l1.454,0.871l2.034,1.742h0.581l1.452,0.582l0.582,0.87l2.617,1.161l1.745-1.161l0.581-1.452l0.581-1.161l0.29-1.452l0.873-2.322l-0.291-1.161v-0.872l-0.291-1.452l0.291-2.322l0.581-0.29l-0.29-1.163l0.581-1.451l0.582-1.452v-0.872l1.163-0.869l0.58,1.45l0.291,1.743l0.581,0.291l0.291,1.16l0.871,1.163l0.292,1.74L868.806,268.715z\",\n                        \"AZ\" : \"M597.6,121.78l0.873,0.581h1.16v0.581l1.163,1.451l-2.033-0.29l-1.163-1.453l-0.582-0.871H597.6zM604.285,117.715h1.165l0.29-0.581l1.744-1.162l1.452,1.452l1.453,2.033h1.165l0.87,0.871h-2.325l-0.292,2.322l-0.579,0.873l-0.873,0.58v1.452l-0.582,0.291l-1.743-1.453l0.871-1.451l-0.871-0.871l-0.872,0.291l-3.488,2.032v-2.032l-1.162-0.291l-1.163-0.871l0.871-0.871l-1.452-0.871l0.289-0.871l-0.871-0.291l-0.581-0.871l0.581-0.29l2.034,0.581l1.454,0.29l0.582-0.29l-1.455-1.453l0.582-0.29h0.873L604.285,117.715z\",\n                        \"BA\" : \"M526.091,107.552l0.871,0.000l-0.581,1.161l1.455,1.162l-0.582,1.161l-0.581,0.291l-0.582,0.290l-0.872,0.581l-0.291,1.451l-2.614,-1.161l-0.874,-1.161l-1.162,-0.581l-1.163,-0.871l-0.579,-0.872l-1.454,-1.451l0.581,-0.872l1.162,0.581l0.582,-0.581l1.163,0.000l2.325,0.291l2.033,0.000l-1.163,-0.581z\",\n                        \"BD\" : \"M728.989,170.275l-0.292,2.033l-0.871,-0.291l0.291,2.033l-0.872,-1.452l-0.292,-1.452l-0.290,-1.162l-1.163,-1.742l-2.615,0.000l0.289,1.161l-0.873,1.453l-1.161,-0.581l-0.581,0.581l-0.582,-0.292l-1.164,-0.289l-0.290,-2.324l-1.160,-2.032l0.579,-1.742l-1.744,-0.582l0.582,-1.160l1.743,-0.873l-2.034,-1.451l1.163,-2.032l2.034,1.451l1.454,0.000l0.291,2.032l2.616,0.291l2.327,0.000l1.743,0.291l-1.454,2.324l-1.163,0.289l-0.872,1.452l1.454,1.452l0.581,-1.742l0.872,0.000l-1.454,-4.356z\",\n                        \"BE\" : \"M482.78,89.837l2.034,0.000l2.617,-0.580l1.745,1.451l1.452,0.582l-0.290,1.742l-0.583,0.291l-0.290,1.451l-2.615,-1.161l-1.162,0.000l-2.036,-1.162l-1.163,-1.161l-1.452,0.000l-0.293,-0.872l-2.036,0.581z\",\n                        \"BF\" : \"M465.919,204.54l-1.744,-0.872l-1.452,0.291l-0.872,0.581l-1.164,-0.581l-0.579,-0.871l-1.165,-0.582l-0.290,-1.741l0.873,-1.161l0.000,-0.871l2.034,-2.324l0.291,-1.742l0.872,-0.871l1.452,0.581l1.163,-0.581l0.291,-0.872l2.035,-1.161l0.582,-0.871l2.617,-1.162l1.452,-0.290l0.582,0.581l2.035,0.000l-0.292,1.161l0.292,1.162l1.453,2.033l0.291,1.161l3.198,0.581l-0.291,2.032l-0.583,0.872l-1.161,0.290l-0.584,1.162l-0.870,0.290l-2.616,0.000l-1.163,-0.290l-0.872,0.290l-1.163,0.000l-4.942,0.000l0.000,1.452l-0.290,-2.323z\",\n                        \"BG\" : \"M536.265,109.294l0.581,1.162l1.164,-0.291l2.035,0.581l4.071,0.000l1.452,-0.581l3.196,-0.581l2.035,0.872l1.454,0.290l-1.163,1.161l-1.163,2.033l0.872,1.452l-2.324,-0.290l-2.907,0.871l0.000,1.452l-2.326,0.000l-2.034,-0.872l-2.326,0.872l-2.036,-0.290l0.000,-1.743l-1.452,-0.871l0.290,-0.292l-0.290,-0.289l0.580,-0.871l1.164,-0.871l-1.454,-1.162l-0.290,-1.161l-0.871,0.581z\",\n                        \"BI\" : \"M554.579,243.451l-0.290,-3.484l-0.583,-1.161l1.743,0.290l0.874,-1.743l1.454,0.291l0.000,0.871l0.582,0.871l0.000,0.872l-0.582,0.580l-1.163,1.454l-0.872,0.870l1.163,-0.289z\",\n                        \"BJ\" : \"M481.037,213.833l-2.037,0.290l-0.872,-2.033l0.290,-6.388l-0.579,-0.289l-0.291,-1.454l-0.872,-0.871l-0.873,-0.871l0.582,-1.452l0.870,-0.290l0.584,-1.162l1.161,-0.290l0.583,-0.872l1.161,-0.871l0.874,0.000l2.034,1.453l0.000,1.160l0.580,1.453l-0.580,1.160l0.291,0.873l-1.454,1.452l-0.582,0.871l-0.581,1.743l0.000,1.741l0.289,-4.647z\",\n                        \"BN\" : \"M787.998,218.479l1.163,-0.872l2.324,-1.741l0.000,1.451l-0.291,1.743l-1.163,0.000l-0.580,0.870l1.453,1.451z\",\n                        \"BO\" : \"M300.812,291.656l-3.197,-0.290l-1.163,2.323l-1.452,-2.033l-3.781,-0.582l-2.033,2.324l-2.036,0.582l-1.163,-4.065l-1.453,-2.906l0.872,-2.612l-1.453,-1.163l-0.291,-2.031l-1.454,-2.033l1.745,-2.904l-1.163,-2.324l0.582,-0.869l-0.582,-0.872l1.163,-1.452l0.000,-2.323l0.290,-2.033l0.582,-0.873l-2.326,-4.355l2.035,0.000l1.163,0.000l0.872,-0.870l2.326,-0.872l1.453,-1.162l3.487,-0.580l-0.289,2.031l0.289,1.163l0.000,1.743l2.909,2.612l3.196,0.290l0.872,1.162l2.035,0.581l1.163,0.872l1.744,0.000l1.453,0.580l0.000,1.743l0.582,0.871l0.000,1.162l-0.582,0.000l0.872,3.195l5.233,0.000l-0.291,1.740l0.291,0.873l1.453,0.871l0.872,1.742l-0.581,2.032l-0.873,1.453l0.291,1.451l-0.872,0.580l0.000,-0.871l-2.615,-1.451l-2.616,0.000l-4.652,0.871l-1.453,2.324l0.000,1.451l-1.163,3.485l0.291,0.581z\",\n                        \"BR\" : \"M315.056,314.017l3.778,-3.777l3.198,-2.613l1.745,-1.163l2.325,-1.450l0.000,-2.324l-1.454,-1.450l-1.162,0.580l0.580,-1.742l0.292,-1.454l0.000,-1.741l-1.163,-0.290l-0.872,0.290l-1.163,0.000l-0.290,-1.162l-0.291,-2.613l-0.291,-0.581l-2.035,-0.871l-1.163,0.581l-2.907,-0.581l0.291,-3.776l-0.872,-1.452l0.872,-0.580l-0.291,-1.451l0.873,-1.453l0.581,-2.032l-0.872,-1.742l-1.453,-0.871l-0.291,-0.873l0.291,-1.740l-5.233,0.000l-0.872,-3.195l0.582,0.000l0.000,-1.162l-0.582,-0.871l0.000,-1.743l-1.453,-0.580l-1.744,0.000l-1.163,-0.872l-2.035,-0.581l-0.872,-1.162l-3.196,-0.290l-2.909,-2.612l0.000,-1.743l-0.289,-1.163l0.289,-2.031l-3.487,0.580l-1.453,1.162l-2.326,0.872l-0.872,0.870l-1.163,0.000l-2.035,0.000l-1.744,0.292l-1.163,-0.292l0.292,-4.066l-2.326,1.453l-2.616,0.000l-0.872,-1.453l-1.744,0.000l0.581,-1.451l-1.744,-1.451l-1.163,-2.614l0.872,-0.581l0.000,-1.162l1.744,-0.581l-0.290,-1.451l0.581,-1.162l0.291,-1.161l3.198,-2.034l2.033,-0.289l0.583,-0.580l2.324,0.290l1.163,-7.551l0.291,-1.161l-0.582,-1.743l-1.162,-0.871l0.000,-2.033l1.453,-0.581l0.582,0.290l0.291,-0.871l-1.745,-0.290l0.000,-1.742l5.233,0.000l0.871,-0.871l0.873,0.871l0.582,1.452l0.581,-0.290l1.452,1.451l2.036,-0.289l0.580,-0.582l2.036,-0.870l1.162,-0.291l0.291,-1.162l2.035,-0.871l-0.291,-0.581l-2.324,-0.289l-0.292,-1.744l0.000,-1.741l-1.163,-0.872l0.582,0.000l2.034,0.290l2.326,0.582l0.581,-0.582l2.035,-0.580l3.198,-0.871l0.872,-1.162l-0.291,-0.580l1.453,-0.291l0.582,0.582l-0.290,1.451l0.872,0.290l0.580,1.161l-0.580,1.162l-0.582,2.324l0.582,1.451l0.291,1.162l1.743,1.162l1.454,0.290l0.290,-0.581l0.872,0.000l1.163,-0.581l0.871,-0.871l1.454,0.290l0.872,0.000l1.454,0.291l0.290,-0.581l-0.581,-0.581l0.291,-0.870l1.163,0.289l1.162,-0.289l1.745,0.581l1.161,0.581l0.873,-0.873l0.582,0.292l0.290,0.581l1.453,0.000l0.872,-1.162l0.872,-2.034l1.745,-2.323l0.872,-0.290l0.581,1.452l1.744,4.936l1.453,0.291l0.000,2.032l-2.034,2.323l0.872,0.872l4.942,0.290l0.000,2.904l2.034,-2.033l3.489,1.163l4.650,1.741l1.163,1.453l-0.290,1.451l3.197,-0.872l5.232,1.453l4.070,0.000l4.069,2.322l3.780,3.196l2.034,0.582l2.326,0.289l0.872,0.870l1.162,3.485l0.291,1.452l-1.162,4.646l-1.163,1.742l-4.070,3.775l-1.744,3.194l-2.035,2.323l-0.581,0.290l-0.873,2.034l0.291,4.936l-0.872,4.357l-0.290,1.742l-0.873,1.162l-0.581,3.774l-2.615,3.483l-0.583,2.906l-2.034,1.161l-0.872,1.453l-2.907,0.000l-4.360,1.160l-1.745,1.162l-3.197,0.871l-3.198,2.324l-2.325,2.613l-0.581,2.032l0.581,1.452l-0.581,2.904l-0.581,1.163l-2.035,1.742l-2.907,4.645l-2.325,2.323l-2.036,1.162l-1.162,2.615l-1.744,1.740l-0.872,-1.740l1.163,-1.164l-1.454,-2.032l-2.325,-1.451l-2.907,-1.743l-0.872,0.000l-2.907,-2.033l1.744,-0.292z\",\n                        \"BS\" : \"M260.408,165.628h-0.872l-0.581-1.452l-1.163-0.871l0.872-1.743l0.581,0.291l1.164,2.033V165.628zM259.536,157.788l-2.907,0.581l-0.291-1.162l1.454-0.29l1.744,0.29V157.788zM261.86,157.788l-0.58,2.032l-0.583-0.29l0.291-1.451l-1.453-1.162v-0.291L261.86,157.788z\",\n                        \"BT\" : \"M726.082,154.594l1.163,0.871l0.000,1.742l-2.326,0.000l-2.326,-0.290l-1.744,0.581l-2.615,-1.162l0.000,-0.581l1.743,-2.033l1.454,-0.580l2.035,0.580l1.453,0.000l-1.163,-0.872z\",\n                        \"BW\" : \"M544.405,281.784l0.582,0.580l0.870,1.742l2.907,2.903l1.455,0.292l0.000,0.870l0.580,1.744l2.326,0.579l1.745,1.162l-4.071,2.033l-2.324,2.032l-0.871,1.742l-0.874,1.161l-1.452,0.293l-0.584,1.161l-0.289,0.870l-1.744,0.582l-2.327,0.000l-1.162,-0.872l-1.162,-0.290l-1.454,0.580l-0.582,1.453l-1.452,0.870l-1.164,1.162l-2.033,0.290l-0.582,-0.872l0.289,-1.741l-1.741,-2.613l-0.874,-0.580l0.000,-7.843l2.908,-0.289l0.000,-9.582l2.033,-0.291l4.361,-0.871l0.871,1.162l1.744,-1.162l0.874,0.000l1.743,-0.582l0.291,0.291l-1.163,-2.034z\",\n                        \"BY\" : \"M538.301,82.579l2.907,0.000l2.908,-0.872l0.578,-1.452l2.326,-1.162l-0.290,-1.160l1.745,-0.291l2.906,-1.162l2.908,0.581l0.290,0.872l1.454,-0.291l2.615,0.581l0.289,1.161l-0.578,0.871l1.743,1.743l1.163,0.581l-0.292,0.290l2.036,0.580l0.872,0.872l-1.163,0.580l-2.326,-0.290l-0.581,0.290l0.871,0.872l0.583,2.033l-2.328,0.000l-0.870,0.580l-0.290,1.451l-0.873,-0.289l-2.615,0.000l-0.583,-0.581l-1.162,0.581l-1.163,-0.291l-2.036,-0.290l-3.196,-0.581l-2.615,-0.291l-2.035,0.291l-1.746,0.581l-1.163,0.000l0.000,-1.161l-0.871,-1.162l1.453,-0.582l0.000,-1.161l-0.582,-0.870l0.289,1.452z\",\n                        \"BZ\" : \"M228.433,181.89l0.000,-0.290l0.290,-0.290l0.582,0.580l0.872,-1.742l0.580,0.000l0.000,0.290l0.581,0.000l-0.289,0.872l-0.292,1.162l0.292,0.289l-0.292,1.162l0.000,0.291l-0.290,1.161l-0.582,0.872l-0.291,0.000l-0.581,0.870l-0.872,0.000l0.292,-2.903l0.000,2.324z\",\n                        \"CA\" : \"M298.487,102.905l2.035,0.291h2.617l-1.454,1.162l-0.872,0.29l-3.488-1.162l-0.873-1.161l1.163-0.872L298.487,102.905zM303.719,95.937h-1.454l-3.488-0.872l-2.616-1.162l0.872-0.291l3.779,0.581l2.616,1.162L303.719,95.937zM133.669,97.679l-1.163,0.291l-4.651-1.162l-0.872-1.162l-2.324-0.871l-0.582-0.871l-2.907-0.581l-0.872-1.452V91.29l2.907,0.581l1.744,0.58l2.617,0.291l0.872,0.872l1.454,1.162l2.615,1.162L133.669,97.679zM319.125,91.581l-1.744,2.323l1.744-0.871l2.035,0.581l-1.163,0.871l2.617,0.873l1.163-0.582l2.906,0.871l-0.872,1.742l1.744-0.291l0.292,1.452l0.872,1.742l-1.164,2.323h-1.162l-1.744-0.29l0.582-2.323l-0.872-0.29l-3.198,2.323h-1.453l1.744-1.452l-2.617-0.581h-2.907h-5.232l-0.58-0.872l1.744-0.871l-1.164-0.871l2.326-1.451l2.906-4.356l1.745-1.743l2.325-0.87h1.163l-0.582,0.87L319.125,91.581zM108.38,82.289l2.616-0.291l-0.58,3.195l2.324,2.323h-1.163l-1.744-1.453l-0.871-1.161l-1.454-0.871l-0.582-1.162l0.291-0.871L108.38,82.289zM255.466,59.928l-0.872,1.453l-1.453-0.291l-0.582-0.58v-0.291l1.163-0.872h1.163L255.466,59.928zM248.198,58.477l-3.197,1.451h-1.744l-0.581-0.581l2.034-1.452h3.779L248.198,58.477zM239.478,50.346l0.291,1.161l1.454-0.29l1.744,0.581l2.906,1.162l3.198,0.871l0.29,1.162l2.035-0.29l1.745,0.871l-2.326,0.872l-4.361-0.581l-1.453-1.161l-2.617,1.452l-4.069,1.451l-0.872-1.742l-3.779,0.291l2.325-1.162l0.291-2.323l1.163-2.613L239.478,50.346zM265.058,46.28l-3.198,0.291l-0.58-1.453l1.162-1.451l2.326-0.581l2.326,0.871v1.161l-0.291,0.292L265.058,46.28zM210.41,40.763l-1.744,1.162l-3.488-0.872l-2.325,0.291l-3.779-1.162l2.325-0.872l2.035-1.162l2.907,0.581l1.744,0.581l0.581,0.581L210.41,40.763zM224.653,39.891v2.614l3.488-2.032l3.197,1.742l-0.581,2.033l2.616,2.032l2.907-2.032l2.035-2.324v-3.195l4.069,0.292l4.07,0.29l3.488,1.452l0.291,1.452l-2.035,1.452l1.744,1.451l-0.291,1.162l-5.231,2.033l-3.779,0.291l-2.907-0.581l-0.872,1.161l-2.617,2.323l-0.872,1.453l-3.196,1.743l-3.78,0.29l-2.325,1.162l-0.292,1.741l-3.197,0.291l-3.198,2.324l-2.907,2.904l-1.162,2.323l-0.292,3.194l4.07,0.291l1.454,2.614l1.163,2.033l3.779-0.582l5.232,1.453l2.616,0.871l2.035,1.452l3.489,0.582l2.907,1.162l4.651,0.29l2.906,0.291l-0.581,2.323l0.872,2.614l2.035,3.194l4.07,2.613l2.326-0.871l1.452-2.903l-1.452-4.357l-2.035-1.452l4.36-1.162l3.197-2.033l1.455-1.742l-0.292-2.032l-1.744-2.324L257.5,69.22l3.489-2.904l-1.162-2.323l-1.163-4.355l2.034-0.582l4.651,0.582l2.907,0.29l2.326-0.581l2.616,0.872l3.198,1.451l0.872,1.162l4.941,0.291v2.323l0.872,3.484l2.616,0.291l1.745,1.742l4.07-1.742l2.616-2.904l1.744-1.161l2.325,2.323l3.488,3.484l3.198,3.195l-1.163,1.742l3.487,1.742l2.616,1.451l4.36,0.872l1.744,0.871l1.163,2.324l2.035,0.29l1.163,0.872l0.291,3.194l-2.035,1.161l-2.035,0.872l-4.65,0.871l-3.198,2.323l-4.942,0.582l-5.814-0.582h-4.07h-2.906l-2.326,2.033l-3.488,1.162l-3.779,3.775l-3.197,2.613l2.325-0.58l4.36-3.486l5.814-2.322l4.069-0.291l2.326,1.162l-2.616,2.032l0.872,2.905l0.872,2.032l3.779,1.452l4.361-0.581l2.906-2.903l0.292,2.032l1.744,0.871l-3.489,1.742l-6.104,1.743l-2.616,1.161l-3.198,2.033l-2.034-0.291l-0.29-2.323l4.94-2.324h-4.36l-3.197,0.291l-1.744-1.452v-3.775l-1.163-0.87l-2.035,0.581l-0.872-0.581l-2.035,2.032l-0.873,2.033l-0.872,1.162l-1.162,0.58h-0.872l-0.292,0.871h-5.232h-4.07l-1.163,0.581l-2.907,1.743l-0.291,0.29l-0.872,1.162h-2.616h-2.616l-1.454,0.291l0.582,0.581l0.291,0.871l-0.291,0.291l-3.488,1.453l-2.907,0.29l-3.197,1.452h-0.581l-0.872-0.29l-0.292-0.581v-0.29l0.581-0.873l1.163-1.451l0.872-1.742l-0.58-2.323l-0.583-2.613l-2.906-1.162l0.581-0.581l-0.581-0.29h-0.581l-0.583-0.291l-0.29-0.871l-0.583,0.291h-0.58v-0.291l-0.582-0.291l-0.291-0.58l-2.035-0.871l-2.326-0.872l-2.616-1.162l-2.617-1.161l-2.326,0.87h-0.872l-3.488-0.581l-2.325,0.291l-2.616-0.871l-2.907-0.291l-1.744-0.291l-0.871-0.581l-0.582-1.452h-0.873v1.161h-5.813h-9.302h-9.302h-8.43h-8.138h-8.14h-8.43h-2.616h-8.139h-7.849h-0.582l-5.231-2.613l-2.036-1.452l-4.941-0.871l-1.454-2.614l0.291-1.742l-3.488-1.161l-0.291-2.033l-3.488-2.033v-1.452l1.454-1.452v-1.743l-4.65-1.742l-2.908-2.903l-1.744-2.033l-2.616-1.162l-1.744-1.162l-1.454-1.451l-2.616,0.871L95.3,68.93l-2.326-1.741l-2.035-1.162l-2.616-0.872h-2.616V49.475V39.311l5.232,0.581l4.069,1.453h2.907l2.616-0.871l3.198-0.871l4.07,0.29l4.069-1.162l4.651-0.87l1.744,1.162l2.035-0.581l0.872-1.452l1.744,0.29l4.651,2.613l3.778-1.742l0.292,2.033l3.487-0.581l0.872-0.872l3.487,0.292l4.071,1.161l6.395,0.871l3.779,0.582l2.907-0.291l3.488,1.452l-3.779,1.453l4.94,0.581l7.559-0.291l2.325-0.581l2.906,1.742l2.908-1.451l-2.616-1.162l1.744-0.871l3.196-0.291l2.326-0.29l2.035,0.871l2.907,1.452l3.197-0.291l4.65,1.162l4.361-0.291h4.07l-0.291-1.742l2.326-0.581l4.36,1.162v2.614l1.744-2.324h2.035l1.454-2.614l-3.198-1.742l-3.196-1.162l0.291-2.903l3.198-2.033l3.778,0.29l2.617,1.453l3.779,2.904l-2.326,1.451L224.653,39.891zM159.54,29.728l-1.453,1.453l6.104-0.871l3.779,1.451l3.197-1.451l2.617,0.871l2.035,2.613l1.454-1.161l-1.745-2.615l2.327-0.581l2.615,0.581l3.198,1.162l1.744,2.613l0.872,2.033l4.651,1.162l4.941,1.452l-0.29,1.162l-4.651,0.29l1.744,0.872l-0.873,1.162l-4.941-0.581l-4.651-0.581h-3.198l-5.231,1.162l-6.977,0.291l-4.941,0.29l-1.454-1.452l-3.778-0.58l-2.617,0.29l-3.198-2.323l1.744-0.291l4.36-0.29h3.778l3.488-0.291l-5.233-0.871l-5.813,0.291h-4.069l-1.454-1.162l6.396-0.871h-4.07l-4.941-0.872l2.325-2.033l2.036-1.162l7.267-1.452L159.54,29.728zM185.993,29.147l-2.326,1.742l-4.361-2.032l1.163-0.291h3.488L185.993,29.147zM263.604,30.018l0.291,0.582h-2.907h-2.906l-3.197,0.29l-0.582-0.29l-3.198-1.452l0.291-0.872l1.163-0.291l6.396,0.291L263.604,30.018zM235.409,29.728l2.325,1.743l2.326-2.323l6.977-0.872l4.941,2.614l-0.582,2.033l5.523-0.871l2.616-1.162l6.104,1.451l3.78,1.162l0.29,1.162l5.233-0.581l2.906,1.742l6.687,1.162l2.326,1.161l2.616,2.614l-5.233,1.162l6.687,1.742l4.359,0.582l3.779,2.613l4.36,0.29l-0.872,1.743l-4.651,3.194l-3.488-1.162l-4.36-2.613l-3.488,0.291l-0.291,1.742l2.907,1.452l3.778,1.452l0.872,0.581l2.036,2.904l-1.164,1.743l-3.488-0.582l-6.685-2.323l3.779,2.323l2.906,1.743l0.292,0.871l-7.268-0.871l-6.104-1.743l-3.198-1.161l0.872-0.871l-4.07-1.451l-4.07-1.453v0.871l-7.848,0.582L257.5,53.25l1.745-2.033h5.232l5.814-0.291l-1.163-0.871l1.163-1.452l3.488-2.613l-0.872-1.162l-0.873-1.162l-4.36-1.162l-5.522-1.161l1.743-0.581l-2.907-1.742h-2.325l-2.326-1.162l-1.453,0.87l-4.942,0.292l-9.883-0.581l-5.814-0.581l-4.651-0.582l-2.325-0.871l2.908-1.451h-3.78l-0.872-2.615l2.036-2.613l2.906-0.87l6.977-0.872L235.409,29.728zM197.62,27.985l3.198,0.582l4.942-0.582l0.582,0.872l-2.617,1.452l4.361,1.162l-0.582,2.323l-4.361,1.162l-2.907-0.291l-1.744-0.871l-6.976-2.323l0.29-0.871l5.523,0.29l-3.196-1.742L197.62,27.985zM217.096,30.89l-2.907,2.033h-3.197l-1.454-2.613v-1.452l1.454-1.162l2.616-0.581h5.814l5.232,0.871l-4.069,2.324L217.096,30.89zM142.099,34.665l-7.267,1.162l-1.453-1.162l-6.396-1.452l1.455-1.162l1.743-2.033l2.326-1.742l-2.615-1.742l9.301-0.29l4.07,0.581h6.976l2.616,0.871l2.907,1.162l-3.488,0.87l-6.686,1.743l-3.488,2.032V34.665zM216.224,24.792l-1.744,1.162l-3.778-0.291l-3.489-0.871l1.453-1.162l4.07-0.58l2.326,0.871L216.224,24.792zM202.562,19.855l2.035,1.452l0.291,1.452l-1.454,2.033l-4.36,0.291l-2.908-0.582v-1.452h-4.65v-2.033h2.906l4.07-0.871l4.07,0.291V19.855zM175.819,21.307l1.163,1.162l2.324-0.582l2.907,0.291l0.582,1.161l-1.745,1.453l-9.301,0.291l-6.977,1.162h-4.07l-0.291-0.873l5.523-1.16l-12.208,0.29l-4.07-0.29l3.779-2.904l2.616-0.581l7.848,0.871l4.942,1.453l4.651,0.29l-3.779-2.613l2.326-0.871l2.907,0.29L175.819,21.307zM213.026,18.984l3.198,0.872h5.523l2.326,0.871l-0.582,1.161l2.906,0.582l1.744,0.58h3.779l4.069,0.29l4.361-0.58l5.522-0.29l4.651,0.29l2.907,0.871l0.582,1.162l-1.744,0.871l-4.07,0.582l-3.488-0.291l-7.848,0.291h-5.813l-4.36-0.291l-7.268-0.871l-0.872-1.453l-0.582-1.451l-2.617-1.162l-5.814-0.291l-3.196-0.871l1.163-1.162L213.026,18.984zM154.018,17.532l-0.582,2.033l-2.035,0.871l-2.616,0.29l-4.941,1.161l-4.65,0.291l-3.488-0.582l4.651-2.032l5.523-1.742h4.36L154.018,17.532zM215.351,17.823h-1.163l-5.231-0.291l-0.582-0.581h5.522l1.744,0.581L215.351,17.823zM170.586,17.243l-5.232,0.87l-4.071-0.87l2.326-0.873l3.779-0.29l4.07,0.29L170.586,17.243zM172.04,14.919l-3.488,0.291H163.9v-0.291l2.907-0.872l1.453,0.29L172.04,14.919zM210.12,16.37l-4.07,0.581l-2.326-0.87l-1.163-0.871l-0.291-1.162h3.488l1.744,0.29l3.198,0.872L210.12,16.37zM198.201,15.499l1.163,1.162l-4.361-0.291l-4.65-0.871h-6.104l2.616-0.871l-3.198-0.581l-0.291-1.162l5.524,0.291l7.266,1.161L198.201,15.499zM234.246,12.015l3.198,0.871l-3.779,0.582l-4.942,2.322h-4.942l-5.813-0.291l-2.907-1.162v-0.87l2.325-0.872h-4.941l-3.198-0.872l-1.744-1.162l2.034-1.161l1.744-0.871l2.907-0.291l-1.163-0.581l6.395-0.29l3.489,1.452l4.651,0.871l4.36,0.29L234.246,12.015zM285.116,2.432l7.558,0.29l5.813,0.291l4.942,0.58v0.873l-6.685,1.161l-6.687,0.581l-2.616,0.582h6.104L287.15,8.53l-4.651,0.581l-4.651,2.324l-5.813,0.58l-1.744,0.581l-8.139,0.291l3.778,0.291l-2.035,0.58l2.326,1.162l-2.616,1.162l-4.36,0.581l-1.162,1.162l-3.779,0.871l0.291,0.581h4.65v0.581l-7.267,1.741l-7.268-0.871l-7.848,0.291l-4.361-0.291h-4.941l-0.581-1.452l5.231-0.581l-1.454-2.033h1.744l7.268,1.162l-3.779-1.742l-4.36-0.582l2.326-1.162l4.651-0.581l0.872-0.871l-3.779-1.162l-1.163-1.451h7.558l2.034,0.29l4.361-0.87l-6.105-0.291h-9.883L227.85,8.53l-2.325-1.162l-3.197-0.581l-0.582-1.162l4.07-0.291l3.197-0.29l5.232-0.291l4.07-1.162l3.488,0.291l2.906,0.582l2.327-1.453l3.487-0.291l4.942-0.29l8.429-0.291l1.454,0.291l7.849-0.291h6.104L285.116,2.432z\",\n                        \"CD\" : \"M558.648,221.382l-0.289,3.196l1.162,0.289l-0.873,0.871l-0.871,0.872l-1.163,1.451l-0.581,1.161l-0.291,2.324l-0.582,0.871l0.000,2.324l-0.871,0.580l0.000,1.742l-0.290,0.290l-0.293,1.453l0.583,1.161l0.290,3.484l0.581,2.324l-0.290,1.452l0.290,1.742l1.744,1.452l1.455,3.485l-1.163,-0.290l-3.490,0.581l-0.873,0.290l-0.873,1.742l0.873,1.161l-0.580,3.195l-0.293,2.904l0.584,0.291l2.035,1.160l0.581,-0.581l0.289,2.904l-2.033,0.000l-1.163,-1.451l-0.872,-1.162l-2.325,-0.291l-0.581,-1.452l-1.745,0.873l-2.036,-0.291l-0.871,-1.452l-1.743,-0.291l-1.454,0.291l0.000,-0.872l-1.164,-0.290l-1.161,0.000l-1.745,0.290l-1.162,0.000l-0.581,0.292l0.000,-3.196l-0.873,-1.162l-0.290,-1.740l0.579,-1.453l-0.579,-1.161l0.000,-1.743l-3.488,0.000l0.289,-0.871l-1.452,0.000l0.000,0.290l-1.745,0.291l-0.581,1.452l-0.582,0.871l-1.452,-0.581l-0.873,0.581l-2.033,0.000l-0.874,-1.452l-0.581,-0.871l-0.871,-1.453l-0.582,-2.032l-8.140,-0.290l-1.162,0.581l-0.581,-0.291l-1.163,0.581l-0.582,-0.871l0.874,-0.291l0.000,-1.161l0.578,-0.872l0.874,-0.580l0.871,0.291l0.873,-0.873l1.452,0.000l0.292,0.582l0.871,0.580l1.744,-1.741l1.456,-1.454l0.870,-0.870l-0.289,-2.033l1.162,-2.903l1.453,-1.162l1.746,-1.452l0.290,-0.871l0.000,-1.162l0.581,-0.871l-0.292,-1.451l0.292,-2.614l0.579,-1.451l0.874,-1.744l0.291,-1.452l0.289,-2.032l0.874,-1.452l1.452,-0.870l2.326,0.870l1.745,1.162l2.033,0.290l2.036,0.580l0.871,-1.742l0.291,-0.290l1.454,0.290l2.907,-1.160l1.163,0.579l0.871,-0.290l0.291,-0.580l1.163,-0.291l2.034,0.291l1.744,0.000l0.873,-0.291l1.743,2.323l1.161,0.291l0.873,-0.291l1.166,0.000l1.450,-0.581l0.874,1.162l-2.325,-2.032z\",\n                        \"CF\" : \"M515.918,210.638l2.325,-0.290l0.293,-0.871l0.579,0.291l0.582,0.580l3.488,-1.162l1.163,-1.161l1.454,-0.872l-0.292,-0.870l0.871,-0.291l2.618,0.291l2.617,-1.452l2.034,-2.905l1.452,-1.161l1.744,-0.581l0.292,1.162l1.452,1.742l0.000,1.162l-0.289,1.163l0.000,0.870l0.871,0.870l2.327,1.162l1.452,1.162l0.000,0.871l1.743,1.452l1.163,1.161l0.873,1.743l2.034,0.871l0.292,0.871l-0.873,0.291l-1.744,0.000l-2.034,-0.291l-1.163,0.291l-0.291,0.580l-0.871,0.290l-1.163,-0.579l-2.907,1.160l-1.454,-0.290l-0.291,0.290l-0.871,1.742l-2.036,-0.580l-2.033,-0.290l-1.745,-1.162l-2.326,-0.870l-1.452,0.870l-0.874,1.452l-0.289,2.032l-1.744,-0.290l-2.036,-0.290l-1.452,1.451l-1.455,2.325l-0.289,-0.581l-0.292,-1.453l-1.163,-0.872l-1.161,-1.452l0.000,-0.870l-1.454,-1.452l0.289,-0.870l-0.289,-1.162l0.289,-2.033l0.581,-0.581l-1.455,2.614z\",\n                        \"CG\" : \"M509.523,244.033l-0.874,-0.871l-0.870,0.581l-1.163,1.163l-2.325,-2.906l2.035,-1.742l-0.872,-1.743l0.872,-0.580l1.745,-0.291l0.289,-1.451l1.454,1.451l2.616,0.000l0.581,-1.162l0.582,-1.741l-0.291,-2.324l-1.454,-1.452l1.163,-3.194l-0.581,-0.580l-2.036,0.000l-0.871,-1.162l0.291,-1.451l3.488,0.289l2.034,0.581l2.327,0.871l0.289,-1.741l1.455,-2.325l1.452,-1.451l2.036,0.290l1.744,0.290l-0.291,1.452l-0.874,1.744l-0.579,1.451l-0.292,2.614l0.292,1.451l-0.581,0.871l0.000,1.162l-0.290,0.871l-1.746,1.452l-1.453,1.162l-1.162,2.903l0.289,2.033l-0.870,0.870l-1.456,1.454l-1.744,1.741l-0.871,-0.580l-0.292,-0.582l-1.452,0.000l-0.873,0.873l0.871,0.291z\",\n                        \"CH\" : \"M500.22,100.292l0.000,0.580l-0.289,0.581l1.162,0.581l1.452,0.000l-0.289,1.162l-1.163,0.290l-2.034,-0.290l-0.583,1.161l-1.453,0.000l-0.291,-0.290l-1.744,0.871l-1.160,0.000l-1.165,-0.581l-0.871,-1.161l-1.454,0.580l0.000,-1.451l2.034,-1.453l0.000,-0.580l1.163,0.291l0.873,-0.582l2.324,0.000l0.582,-0.580l-2.906,-0.871z\",\n                        \"CI\" : \"M465.919,217.317l-1.162,0.000l-2.034,-0.580l-1.744,0.000l-3.197,0.580l-2.036,0.581l-2.615,1.162l-0.582,0.000l0.289,-2.323l0.293,-0.291l-0.293,-1.162l-1.162,-1.161l-0.871,-0.290l-0.582,-0.581l0.582,-1.452l-0.291,-1.162l0.000,-0.870l0.581,0.000l0.000,-1.162l-0.290,-0.581l0.290,-0.290l1.162,-0.290l-0.871,-2.323l-0.581,-1.163l0.290,-0.871l0.581,-0.290l0.292,-0.292l0.870,0.582l2.037,0.000l0.582,-0.871l0.581,0.000l0.582,-0.291l0.579,1.162l0.583,-0.290l1.161,-0.292l1.165,0.582l0.579,0.871l1.164,0.581l0.872,-0.581l1.452,-0.291l1.744,0.872l0.874,3.775l-1.164,2.323l-0.872,3.195l1.162,2.323l0.000,-1.161z\",\n                        \"CL\" : \"M284.825,375.578v6.389h2.907h1.745l-0.872,1.162l-2.326,0.87l-1.454-0.291l-1.744-0.289l-1.744-0.582l-2.907-0.58l-3.487-1.451l-2.907-1.453l-3.779-3.193l2.326,0.58l3.778,2.033l3.78,0.87l1.453-1.16l0.872-2.033l2.326-1.162L284.825,375.578zM285.987,289.915l1.163,4.065l2.035-0.582l0.291,0.872l-1.163,2.613l-2.907,1.451v4.646l-0.582,0.87l0.872,1.163l-1.744,1.741l-2.035,2.324l-0.872,2.614l0.291,2.612l-1.744,2.904l1.163,4.646l0.873,0.58v2.613l-1.744,2.613l0.29,2.323l-2.326,1.742l0.292,2.613l0.581,2.615l-1.453,0.87l-0.872,2.613l-0.582,2.904l0.582,3.193l-1.164,0.581l0.582,3.194l1.162,1.162l-0.873,1.162l1.454,0.289l0.29,1.162l-1.452,0.58l0.291,1.451l-0.872,3.775l-1.455,2.323l0.292,1.453l-0.873,1.741l-2.035,1.161l0.291,2.904l0.873,0.873h1.744v2.03l1.163,1.453l6.685,0.58l2.617,0.29h-2.617l-1.163,0.581l-2.616,1.162l-0.291,2.612h-1.162l-3.198-0.87l-3.198-2.032l-3.488-1.453l-0.872-1.74l0.872-1.744l-1.454-1.742l-0.291-4.646l1.163-2.614l2.907-2.323l-4.07-0.581l2.617-2.612l0.872-4.357l2.907,0.873l1.453-5.808l-1.744-0.581l-0.872,3.484l-1.744-0.582l0.872-3.773l0.872-5.228l1.454-1.742l-0.872-2.905l-0.291-2.902l1.163-0.29l1.744-4.356l1.744-4.356l1.162-4.064l-0.581-4.065l0.872-2.323l-0.292-3.485l1.744-3.192l0.292-5.518l0.872-5.519l0.871-6.388v-4.356l-0.582-3.774l1.163-0.872l0.872-1.45l1.454,2.032l0.291,2.031l1.454,1.163l-0.872,2.612L285.987,289.915z\",\n                        \"CM\" : \"M509.814,224.578l-0.291,0.000l-1.744,0.289l-1.744,-0.289l-1.163,0.000l-4.652,0.000l0.582,-2.034l-1.163,-1.742l-1.163,-0.582l-0.581,-1.160l-0.872,-0.581l0.000,-0.581l0.872,-2.032l1.164,-2.614l0.872,0.000l1.743,-1.743l0.871,0.000l1.746,1.161l1.744,-0.870l0.291,-1.162l0.580,-1.161l0.581,-1.452l1.455,-1.161l0.581,-1.742l0.582,-0.582l0.289,-1.452l0.873,-1.742l2.326,-2.323l0.000,-0.872l0.289,-0.580l-1.163,-0.871l0.292,-0.871l0.582,-0.291l1.162,1.742l0.292,1.743l-0.292,2.032l1.453,2.324l-1.453,0.000l-0.581,0.289l-1.455,-0.289l-0.579,1.161l1.742,1.743l1.165,0.581l0.289,1.161l0.872,1.743l-0.290,0.870l-1.455,2.614l-0.581,0.581l-0.289,2.033l0.289,1.162l-0.289,0.870l1.454,1.452l0.000,0.870l1.161,1.452l1.163,0.872l0.292,1.453l0.289,0.581l-0.289,1.741l-2.327,-0.871l-2.034,-0.581l3.488,0.289z\",\n                        \"CN\" : \"M777.533,179.567l-2.325,1.451l-2.326-0.871v-2.323l1.163-1.453l3.196-0.581h1.455l0.581,0.872l-1.163,1.451L777.533,179.567zM825.204,94.194l4.651,0.871l3.488,1.742l0.871,2.614h4.361l2.325-0.872l4.651-0.871l-1.454,2.323l-1.163,1.162l-0.871,2.904l-2.034,2.613l-3.198-0.291l-2.325,0.871l0.581,2.324l-0.29,3.194l-1.454,0.291v1.161l-1.744-1.451l-1.163,1.451l-4.067,1.162l0.289,1.453h-2.325l-1.452-0.872l-1.745,2.032l-3.198,1.453l-2.033,1.742l-3.781,0.871l-2.033,1.162l-3.197,0.871l1.452-1.453l-0.58-1.16l2.325-1.742l-1.455-1.453l-2.324,1.162l-3.197,1.742l-1.745,1.742l-2.615,0.291l-1.452,1.16l1.452,1.743l2.326,0.581v1.162l2.325,0.872l2.906-2.033l2.616,1.162h1.744l0.289,1.452l-3.777,0.871l-1.454,1.452l-2.615,1.453l-1.453,1.742l3.196,1.742l0.872,2.614l1.743,2.613l1.745,2.033v2.033l-1.745,0.581l0.873,1.453l1.455,0.87l-0.292,2.324l-0.873,2.323h-1.452l-2.034,3.194l-2.326,3.484l-2.327,3.195l-3.778,2.613l-4.069,2.323l-2.905,0.291l-1.744,1.162l-0.873-0.871l-1.743,1.452l-3.779,1.451l-2.906,0.291l-0.872,2.904l-1.454,0.29l-0.873-2.033l0.584-1.162l-3.488-0.872l-1.455,0.581l-2.615-0.87l-1.454-0.873l0.581-1.742l-2.615-0.581l-1.452-0.871l-2.328,1.451l-2.615,0.291h-2.034l-1.454,0.58l-1.453,0.582l0.29,2.903h-1.455l-0.289-0.581v-1.161l-2.034,0.87l-1.163-0.581l-2.035-1.162l0.872-2.033l-1.743-0.581l-0.873-2.613l-2.905,0.58l0.29-3.484l2.615-2.323l0.291-2.033l-0.291-2.323l-1.161-0.581l-0.873-1.452h-1.455l-3.194-0.291l1.161-1.161l-1.455-1.743l-2.034,1.162l-2.033-0.581l-3.198,1.742l-2.615,2.033l-2.326,0.29l-1.162-0.872h-1.453l-2.035-0.58l-1.454,0.58l-1.743,2.033l-0.292-2.033l-1.744,0.582L713,154.013l-2.906-0.581l-2.326-1.162l-2.034-0.581l-1.162-1.452l-1.454-0.291l-2.615-1.742l-2.326-0.871l-1.162,0.581l-3.781-2.033l-2.615-1.742l-0.873-2.904l2.036,0.291v-1.453l-1.163-1.161l0.293-2.324l-2.908-3.194l-4.361-1.161l-0.87-2.033l-2.036-1.451l-0.58-0.582l-0.292-1.742v-1.161l-1.743-0.582l-0.874,0.291l-0.579-2.324l0.579-0.871l-0.289-0.581l2.615-1.162l2.036-0.58l2.906,0.291l0.871-1.744l3.489-0.29l1.162-1.162l4.362-1.451l0.289-0.581l-0.289-1.743l2.033-0.581l-2.617-4.646l5.524-1.162l1.452-0.58l2.034-4.938l5.232,0.873l1.744-1.162v-2.904l2.328-0.291l2.033-1.742l1.163-0.29l0.581,2.032l2.326,1.452l4.067,0.872l1.746,2.323l-0.873,3.194l0.873,1.162l3.197,0.582l3.778,0.29l3.488,1.742l1.743,0.291l1.163,2.613l1.455,1.453h3.196l5.522,0.58l3.78-0.291l2.615,0.291l4.069,1.743h3.489l1.162,0.871l3.197-1.451l4.361-0.873l4.359-0.29l3.198-0.871l1.745-1.452l2.033-0.871l-0.581-0.872l-0.873-1.161l1.454-1.742l1.745,0.29l2.614,0.581l2.908-1.452l4.069-1.162l2.034-1.742l2.035-0.872l4.07-0.29l2.034,0.29l0.291-1.162l-2.325-1.741l-2.326-0.872l-2.036,0.872l-2.904-0.291l-1.455,0.291l-0.581-1.162l1.744-2.613l1.453-2.324l3.197,1.162l4.068-1.742v-1.162l2.328-2.903l1.452-0.872v-1.452l-1.452-0.871l2.325-1.162l3.486-0.58h3.491l4.067,0.58l2.617,1.162l1.744,2.903l0.871,1.161l0.874,1.453L825.204,94.194z\",\n                        \"CO\" : \"M266.221,231.256l-1.163,-0.582l-1.163,-0.870l-0.871,0.290l-2.326,-0.290l-0.582,-1.161l-0.580,0.000l-2.907,-1.452l-0.291,-0.872l1.162,-0.290l-0.290,-1.451l0.582,-0.873l1.452,-0.289l1.164,-1.744l1.161,-1.452l-1.161,-0.580l0.580,-1.452l-0.580,-2.613l0.580,-0.580l-0.580,-2.325l-1.164,-1.451l0.582,-1.451l0.872,0.289l0.582,-0.871l-0.872,-1.741l0.290,-0.292l1.454,0.000l2.034,-2.031l1.163,-0.291l0.000,-0.872l0.581,-2.322l1.744,-1.162l1.745,0.000l0.000,-0.582l2.325,0.291l2.035,-1.451l1.163,-0.582l1.454,-1.451l0.872,0.290l0.580,0.581l-0.290,0.871l-2.035,0.581l-0.581,1.452l-1.163,0.580l-0.581,1.162l-0.582,2.033l-0.581,1.452l1.453,0.290l0.291,1.161l0.580,0.582l0.292,1.161l-0.292,1.161l0.000,0.581l0.583,0.000l0.872,1.162l3.488,-0.291l1.453,0.291l2.035,2.323l1.163,-0.290l2.034,0.290l1.454,-0.290l0.872,0.290l-0.291,1.452l-0.872,0.871l0.000,2.033l0.581,2.033l0.582,0.580l0.291,0.580l-1.454,1.453l0.872,0.580l0.873,1.162l0.872,2.614l-0.581,0.290l-0.582,-1.452l-0.873,-0.871l-0.871,0.871l-5.233,0.000l0.000,1.742l1.745,0.290l-0.291,0.871l-0.582,-0.290l-1.453,0.581l0.000,2.033l1.162,0.871l0.582,1.743l-0.291,1.161l-1.163,7.551l-1.452,-1.454l-0.582,-0.290l1.744,-2.613l-2.326,-1.452l-1.452,0.290l-1.164,-0.579l-1.453,0.870l-2.035,-0.291l-1.744,-2.903l-1.163,-0.870l-0.872,-1.163l-1.744,-1.452l0.872,-0.291z\",\n                        \"CR\" : \"M245.292,208.315l-1.453,-0.580l-0.582,-0.582l0.291,-0.580l0.000,-0.581l-0.872,-0.579l-0.872,-0.582l-1.163,-0.291l0.000,-0.872l-0.872,-0.580l0.291,0.871l-0.582,0.581l-0.581,-0.581l-0.872,-0.291l-0.291,-0.580l0.000,-0.871l0.291,-0.871l-0.872,-0.291l0.581,-0.580l0.581,-0.291l1.745,0.581l0.581,-0.290l0.871,0.290l0.583,0.581l0.872,0.000l0.581,-0.581l0.580,1.452l1.164,1.162l1.162,1.161l-0.872,0.291l0.000,1.161l0.583,0.291l-0.583,0.581l0.291,0.289l-0.291,0.582l0.290,-0.580z\",\n                        \"CU\" : \"M247.326,167.081l2.326,0.290l2.326,0.000l2.325,0.871l1.163,1.161l2.616,-0.290l0.873,0.581l2.325,1.743l1.744,1.161l0.871,0.000l1.744,0.581l-0.290,0.871l2.035,0.000l2.325,1.161l-0.581,0.581l-1.744,0.291l-1.745,0.290l-2.035,-0.290l-3.778,0.290l1.743,-1.452l-1.161,-0.871l-1.744,0.000l-0.872,-0.871l-0.582,-1.742l-1.744,0.289l-2.616,-0.870l-0.582,-0.581l-3.779,-0.291l-0.872,-0.581l0.872,-0.580l-2.616,-0.290l-2.034,1.451l-1.163,0.000l-0.292,0.580l-1.452,0.292l-1.163,0.000l1.454,-0.872l0.581,-1.161l1.453,-0.581l1.163,-0.581l2.325,-0.290l-0.581,0.290z\",\n                        \"CY\" : \"M567.37,134.557l0.000,0.291l-2.909,1.161l-1.162,-0.581l-0.874,-1.161l1.456,0.000l0.580,0.290l0.582,-0.290l0.582,0.000l0.290,0.290l0.581,0.000l0.581,0.000l-0.293,0.000z\",\n                        \"CZ\" : \"M520.57,97.388l-1.455,-0.581l-1.163,0.000l-2.326,-0.581l-0.871,0.000l-1.453,1.162l-2.035,-0.871l-1.744,-1.161l-1.163,-0.582l-0.289,-1.161l-0.584,-0.872l2.036,-0.580l0.871,-0.871l2.036,-0.291l0.581,-0.581l0.871,0.290l1.165,-0.290l1.453,0.872l2.036,0.291l-0.293,0.580l1.454,0.580l0.581,-0.580l1.746,0.290l0.290,0.872l2.034,0.290l1.454,1.161l-0.874,0.000l-0.580,0.582l-0.582,0.000l-0.292,0.581l-0.289,0.289l-0.290,0.291l-0.871,0.290l-1.165,0.000l0.289,-0.581z\",\n                        \"DE\" : \"M501.093,79.674l0.000,1.161l2.906,0.582l0.000,0.872l2.617,-0.291l1.744,-0.872l2.907,1.163l1.452,0.870l0.583,1.452l-0.872,0.581l1.163,1.162l0.581,1.452l-0.292,0.870l1.165,1.742l-1.165,0.290l-0.871,-0.290l-0.581,0.581l-2.036,0.291l-0.871,0.871l-2.036,0.580l0.584,0.872l0.289,1.161l1.163,0.582l1.744,1.161l-1.162,1.162l-0.872,0.580l0.290,1.742l-0.290,0.291l-0.584,-0.581l-1.452,0.000l-2.034,0.581l-2.326,-0.291l-0.292,0.871l-1.452,-0.871l-0.873,0.291l-2.906,-0.871l-0.582,0.580l-2.324,0.000l0.290,-2.032l1.455,-1.743l-4.070,-0.580l-1.166,-0.581l0.000,-1.452l-0.579,-0.581l0.290,-1.742l-0.290,-2.904l1.454,0.000l0.871,-1.162l0.581,-2.323l-0.581,-1.161l0.581,-0.581l2.327,0.000l0.582,0.581l1.742,-1.451l-0.581,-0.872l0.000,-1.743l2.035,0.581l-1.744,0.581z\",\n                        \"DJ\" : \"M592.368,196.119l0.581,0.871l0.000,1.161l-1.453,0.582l1.161,0.580l-1.161,1.452l-0.583,-0.290l-0.581,0.000l-1.743,0.000l0.000,-0.871l0.000,-0.581l0.871,-1.452l0.872,-1.162l1.164,0.291l-0.872,0.581z\",\n                        \"DK\" : \"M508.649,77.933l-1.743,2.323l-2.615-1.452l-0.582-1.162l4.07-0.872L508.649,77.933zM503.708,75.609l-0.581,1.162l-0.871-0.291l-2.036,2.033l0.873,1.161l-1.744,0.582l-2.035-0.582l-1.161-1.451v-2.904l0.289-0.581l0.872-0.871h2.325l1.163-0.871l2.035-0.871v1.453l-0.872,0.87l0.291,0.871L503.708,75.609z\",\n                        \"DO\" : \"M276.396,176.664l0.290,-0.291l2.034,0.000l1.744,0.580l0.872,0.000l0.291,0.872l1.454,0.000l0.000,0.871l1.162,0.000l1.454,1.162l-0.872,1.161l-1.453,-0.871l-1.164,0.290l-0.872,-0.290l-0.581,0.581l-1.163,0.290l-0.290,-0.871l-0.873,0.581l-1.161,1.743l-0.872,-0.291l0.000,-0.871l0.000,-0.872l-0.582,-0.580l0.582,-0.582l0.290,-1.161l0.290,1.451z\",\n                        \"DZ\" : \"M506.906,166.5l-9.592,5.226l-7.849,5.227l-4.070,1.453l-2.906,0.000l0.000,-1.742l-1.452,-0.291l-1.454,-0.872l-0.873,-1.161l-9.301,-6.098l-9.301,-6.098l-10.176,-6.679l0.000,-0.291l0.000,-0.290l0.000,-3.194l4.361,-2.032l2.906,-0.581l2.036,-0.581l1.162,-1.452l3.197,-1.162l0.000,-2.032l1.744,-0.291l1.162,-0.870l3.782,-0.582l0.289,-0.871l-0.582,-0.580l-0.871,-2.905l-0.291,-1.742l-1.163,-1.742l2.907,-1.452l2.907,-0.581l1.744,-1.161l2.617,-0.872l4.650,-0.289l4.651,-0.291l1.162,0.291l2.615,-1.162l2.911,0.000l1.160,0.871l2.035,-0.290l-0.581,1.451l0.290,2.614l-0.579,2.323l-1.745,1.451l0.290,2.034l2.325,1.742l0.000,0.581l1.745,1.162l1.163,4.936l0.871,2.322l0.000,1.453l-0.291,2.033l0.000,1.451l-0.291,1.452l0.291,1.743l-1.162,1.161l1.744,2.033l0.000,1.162l1.163,1.451l1.163,-0.580l2.035,1.451l-1.452,-1.743z\",\n                        \"EC\" : \"M252.85,240.258l1.453,-2.033l-0.581,-1.162l-1.163,1.162l-1.744,-1.162l0.581,-0.581l-0.291,-2.613l0.873,-0.580l0.581,-1.454l0.872,-2.031l0.000,-0.872l1.454,-0.581l1.744,-1.160l2.907,1.452l0.580,0.000l0.582,1.161l2.326,0.290l0.871,-0.290l1.163,0.870l1.163,0.582l0.581,2.324l-0.872,1.741l-3.198,2.904l-3.196,0.871l-1.744,2.613l-0.582,1.742l-1.454,1.162l-1.162,-1.451l-1.163,-0.290l-1.163,0.290l0.000,-1.162l0.873,-0.582l0.291,1.160z\",\n                        \"EE\" : \"M540.626,72.125l0.291,-1.743l-0.872,0.290l-1.744,-0.870l-0.291,-1.743l3.489,-0.581l3.488,-0.582l2.906,0.582l2.906,0.000l0.291,0.291l-1.745,1.742l0.582,2.614l-1.163,0.871l-2.034,0.000l-2.614,-1.162l-1.165,-0.290l2.325,-0.581z\",\n                        \"EG\" : \"M569.987,149.947l-0.874,0.872l-0.581,2.323l-0.873,1.162l-0.582,0.580l-0.870,-0.871l-1.164,-1.161l-2.034,-4.066l-0.291,0.291l1.163,2.903l1.744,2.904l2.034,4.065l0.873,1.743l0.871,1.452l2.618,2.904l-0.584,0.580l0.000,1.743l3.198,2.613l0.581,0.580l-10.755,0.000l-10.755,0.000l-11.045,0.000l0.000,-10.162l0.000,-9.873l-0.871,-2.324l0.579,-1.451l-0.289,-1.162l0.871,-1.452l3.779,0.000l2.615,0.581l2.615,0.871l1.456,0.580l2.033,-0.870l1.165,-0.872l2.323,-0.290l2.036,0.290l0.872,1.452l0.580,-0.870l2.036,0.580l2.327,0.290l1.161,-0.870l-2.038,-4.935z\",\n                        \"EH\" : \"M449.643,156.336l-0.292,-1.452l0.581,0.000l0.000,0.290l0.000,0.291l0.000,4.355l-9.011,-0.290l0.000,7.261l-2.615,0.000l-0.581,1.451l0.581,4.066l-11.046,0.000l-0.582,0.871l0.289,-1.162l6.107,-0.291l0.290,-0.870l1.162,-1.162l0.874,-3.775l4.069,-3.194l1.162,-3.485l0.872,0.000l0.873,-2.323l2.324,-0.291l1.165,0.581l1.161,0.000l0.872,-0.871l-1.745,0.000z\",\n                        \"ER\" : \"M590.332,196.409l-0.872,-0.871l-1.162,-1.452l-1.163,-1.162l-0.871,-0.870l-2.326,-1.162l-1.744,0.000l-0.873,-0.580l-1.453,0.870l-1.743,-1.452l-0.873,2.033l-3.198,-0.581l-0.290,-0.870l1.161,-4.065l0.291,-2.033l0.874,-0.873l2.035,-0.289l1.454,-1.742l1.452,3.193l0.871,2.614l1.454,1.452l3.779,2.613l1.454,1.453l1.453,1.742l0.871,0.871l1.455,0.871l-0.872,0.581l1.164,0.291z\",\n                        \"ES\" : \"M448.769,115.683l0.292,-1.743l-1.163,-1.452l3.778,-1.742l3.489,0.290l3.778,0.000l2.908,0.581l2.324,-0.290l4.362,0.290l1.163,0.871l4.940,1.452l1.163,-0.580l2.907,1.161l3.197,-0.292l0.292,1.454l-2.616,2.032l-3.489,0.580l-0.291,0.872l-1.744,1.451l-1.162,2.324l1.162,1.451l-1.453,1.162l-0.581,1.742l-2.325,0.581l-1.744,2.323l-3.489,0.000l-2.616,0.000l-1.743,0.872l-1.165,1.161l-1.452,-0.291l-0.871,-0.870l-0.874,-1.742l-2.615,-0.291l0.000,-1.162l0.871,-0.871l0.291,-0.871l-0.873,-0.581l0.873,-2.032l-1.162,-1.452l1.162,-0.291l0.000,-1.451l0.582,-0.291l0.000,-2.033l1.163,-0.870l-0.581,-1.452l-1.746,0.000l-0.291,0.290l-1.744,0.000l-0.581,-1.162l-1.163,0.291l1.163,-0.581z\",\n                        \"ET\" : \"M578.125,189.73l1.743,1.452l1.453,-0.870l0.873,0.580l1.744,0.000l2.326,1.162l0.871,0.870l1.163,1.162l1.162,1.452l0.872,0.871l-0.872,1.162l-0.871,1.452l0.000,0.581l0.000,0.871l1.743,0.000l0.581,0.000l0.583,0.290l-0.583,1.161l1.163,1.453l0.873,1.452l1.163,0.871l9.010,3.194l2.328,0.000l-7.850,8.421l-3.780,0.000l-2.324,2.033l-1.744,0.000l-0.874,0.870l-1.743,0.000l-1.161,-0.870l-2.618,1.162l-0.581,1.160l-2.036,-0.290l-0.580,-0.290l-0.580,0.000l-0.874,0.000l-3.489,-2.323l-2.033,0.000l-0.873,-0.871l0.000,-1.742l-1.452,-0.290l-1.455,-3.196l-1.454,-0.580l-0.290,-1.161l-1.452,-1.161l-1.746,-0.291l0.872,-1.452l1.455,0.000l0.582,-0.872l0.000,-2.613l0.579,-2.903l1.454,-0.582l0.292,-1.162l1.163,-2.322l1.743,-1.162l0.872,-2.904l0.581,-2.323l3.198,0.581l-0.873,2.033z\",\n                        \"FI\" : \"M552.544,41.053l-0.584,2.033l4.363,1.743l-2.617,2.032l3.198,3.194l-1.744,2.324l2.325,2.033l-1.162,1.742l4.069,2.032l-0.871,1.161l-2.617,1.742l-5.814,3.485l-4.941,0.291l-4.941,0.871l-4.362,0.580l-1.744,-1.451l-2.615,-0.871l0.581,-2.614l-1.452,-2.613l1.452,-1.453l2.616,-1.742l6.106,-3.193l2.033,-0.582l-0.289,-1.160l-4.072,-1.162l-0.872,-1.162l0.000,-4.065l-4.361,-2.033l-3.486,-1.452l1.453,-0.581l3.198,1.452l3.488,0.000l2.908,0.581l2.615,-1.162l1.452,-2.032l4.362,-1.162l3.487,1.162l1.162,-2.032z\",\n                        \"FJ\" : \"M964.732,278.588l0.873,0.871l-0.292,1.452l-1.744,0.291l-1.452-0.291l-0.292-1.162l0.873-0.87l1.455,0.291L964.732,278.588zM969.382,276.557l-1.741,0.579l-2.036,0.582l-0.292-1.161l1.455-0.291l0.873-0.291l1.741-0.871h-0.01h0.58l-0.29,1.162l-0.29,0.291H969.382z\",\n                        \"FK\" : \"M305.173,373.544l3.488,-1.741l2.326,0.870l1.744,-1.161l2.034,1.161l-0.872,0.871l-3.778,0.872l-1.164,-0.872l-2.325,1.162l1.453,1.162z\",\n                        \"FR\" : \"M329.008,223.997l-0.873,1.162h-1.453l-0.29-0.581l-0.582-0.292l-0.872,0.873l-1.162-0.581l0.581-1.162l0.291-1.162l0.582-1.161l-1.164-1.742l-0.289-1.743l1.453-2.612l0.872,0.289l2.034,0.872l2.907,2.323l0.582,1.161l-1.744,2.323L329.008,223.997zM500.22,115.102l-1.161,2.033l-1.164-0.582l-0.581-1.742l0.581-1.162l1.744-0.871L500.22,115.102zM483.652,92.451l2.036,1.162h1.162l2.615,1.162l0.581,0.291h0.871l1.165,0.581l4.07,0.58l-1.455,1.744l-0.29,2.032l-0.873,0.581l-1.163-0.291v0.581l-2.033,1.453v1.452l1.453-0.581l0.871,1.162l-0.291,0.871l0.872,1.162l-0.872,0.871l0.582,2.033l1.454,0.291l-0.291,1.162l-2.325,1.452l-5.523-0.581l-4.069,0.872l-0.292,1.741l-3.196,0.292l-2.907-1.162l-1.163,0.58l-4.94-1.452l-1.163-0.872l1.452-1.742l0.582-5.517l-2.907-2.905l-2.034-1.451l-4.36-0.872v-2.033l3.488-0.581l4.651,0.581l-0.872-2.903l2.615,1.162l6.396-2.324l0.87-2.324l2.325-0.29l0.293,0.872h1.452L483.652,92.451z\",\n                        \"GA\" : \"M504.291,242l-2.908,-2.904l-1.744,-2.322l-1.744,-2.905l0.291,-0.871l0.582,-0.871l0.581,-2.033l0.582,-2.033l0.871,0.000l4.070,0.000l0.000,-3.483l1.163,0.000l1.744,0.289l1.744,-0.289l0.291,0.000l-0.291,1.451l0.871,1.162l2.036,0.000l0.581,0.580l-1.163,3.194l1.454,1.452l0.291,2.324l-0.582,1.741l-0.581,1.162l-2.616,0.000l-1.454,-1.451l-0.289,1.451l-1.745,0.291l-0.872,0.580l0.872,1.743l2.035,-1.742z\",\n                        \"GB\" : \"M458.072,80.835l-1.452,2.033l-2.036-0.58h-1.745l0.582-1.453l-0.582-1.451l2.326-0.291L458.072,80.835zM465.629,69.802l-3.198,2.903l2.907-0.289h2.907l-0.582,2.032l-2.615,2.613h2.907l0.29,0.291l2.325,3.484l2.035,0.291l1.745,3.195l0.581,1.161l3.486,0.291l-0.29,2.033l-1.452,0.58l1.163,1.452l-2.617,1.453h-3.488l-4.94,0.871l-1.164-0.581l-1.744,1.161l-2.616-0.291l-2.034,1.162l-1.453-0.581l4.069-2.904l2.616-0.581l-4.359-0.581l-0.873-0.872l2.906-0.871l-1.454-1.451l0.582-2.033l4.069,0.291l0.291-1.452l-1.744-1.743l-3.488-0.58l-0.582-0.871l0.872-1.162l-0.872-0.581l-1.452,1.162V76.19l-1.454-1.453l0.873-2.904l2.326-2.032h2.033H465.629z\",\n                        \"GE\" : \"M588.298,116.844l0.291,-1.161l-0.582,-2.034l-1.743,-0.871l-1.455,-0.580l-1.162,-0.581l0.581,-0.581l2.325,0.581l3.779,0.581l3.780,1.162l0.581,0.580l1.745,-0.580l2.614,0.580l0.581,1.162l1.745,0.871l-0.582,0.290l1.455,1.452l-0.582,0.290l-1.454,-0.290l-2.034,-0.580l-0.581,0.290l-3.780,0.580l-2.615,-1.452l2.907,-0.291z\",\n                        \"GH\" : \"M476.676,214.704l-4.361,1.452l-1.452,1.161l-2.617,0.581l-2.327,-0.581l0.000,-1.161l-1.162,-2.323l0.872,-3.195l1.164,-2.323l-0.874,-3.775l-0.290,-2.323l0.000,-1.452l4.942,0.000l1.163,0.000l0.872,-0.290l1.163,0.290l0.000,0.872l0.871,1.161l0.000,2.033l0.292,2.322l0.871,0.872l-0.581,2.613l0.000,1.162l0.872,1.742l-0.582,-1.162z\",\n                        \"GL\" : \"M344.996,3.593l9.302,-1.451l9.593,0.000l3.488,-0.871l9.883,-0.291l21.800,0.291l17.442,2.322l-5.232,0.872l-10.465,0.290l-14.824,0.291l1.453,0.289l9.593,-0.289l8.429,0.871l5.232,-0.582l2.326,0.872l-2.907,1.452l6.977,-0.871l13.370,-1.162l8.139,0.581l1.455,1.162l-11.047,2.032l-1.743,0.580l-8.721,0.581l6.395,0.000l-3.196,2.033l-2.326,1.742l0.290,3.195l3.198,1.742l-4.361,0.000l-4.361,0.872l4.943,1.451l0.581,2.323l-2.908,0.291l3.781,2.323l-6.106,0.291l2.906,1.160l-0.871,0.872l-3.780,0.581l-3.777,0.000l3.488,1.742l0.000,1.161l-5.522,-1.161l-1.455,0.871l3.778,0.582l3.488,1.741l1.163,2.324l-4.940,0.580l-2.034,-1.162l-3.489,-1.742l0.871,2.033l-3.197,1.452l7.267,0.000l3.780,0.290l-7.269,2.324l-7.557,2.322l-7.848,0.872l-3.198,0.000l-2.907,0.871l-3.779,2.903l-5.814,2.034l-2.034,0.290l-3.489,0.581l-4.069,0.580l-2.326,1.742l0.000,2.034l-1.453,1.742l-4.360,2.033l0.872,2.323l-1.162,2.323l-1.454,2.613l-3.779,0.000l-4.069,-2.033l-5.524,0.000l-2.615,-1.742l-2.036,-2.614l-4.650,-3.484l-1.454,-1.742l-0.291,-2.324l-3.778,-2.613l0.872,-2.033l-1.744,-0.871l2.617,-3.194l4.359,-1.162l0.872,-1.161l0.582,-2.034l-3.198,0.873l-1.454,0.289l-2.325,0.582l-3.488,-0.871l0.000,-2.034l0.871,-1.452l2.617,0.000l5.523,0.872l-4.651,-1.742l-2.325,-1.162l-2.907,0.581l-2.326,-0.872l3.198,-2.322l-1.744,-1.162l-2.035,-2.033l-3.489,-2.904l-3.488,-0.871l0.000,-1.162l-7.266,-1.742l-5.814,0.000l-7.558,0.000l-6.685,0.290l-3.199,-0.870l-4.649,-1.743l7.266,-0.871l5.523,-0.291l-11.917,-0.580l-6.105,-1.162l0.291,-1.161l10.464,-1.162l10.173,-1.452l0.872,-0.871l-7.266,-1.162l2.326,-1.161l9.592,-1.742l4.070,-0.290l-1.163,-1.162l6.395,-0.872l8.429,-0.289l8.430,0.000l3.199,0.580l7.266,-1.453l6.395,1.162l4.070,0.291l5.523,0.871l-6.395,-1.451l-0.290,1.453z\",\n                        \"GM\" : \"M427.549,194.667l0.291,-1.162l2.909,0.000l0.581,-0.581l0.871,0.000l1.163,0.581l0.873,0.000l0.870,-0.581l0.582,0.872l-1.163,0.581l-1.162,0.000l-1.163,-0.581l-1.163,0.581l-0.582,0.000l-0.580,0.581l2.327,0.291z\",\n                        \"GN\" : \"M450.514,209.768l-0.871,0.000l-0.582,1.161l-0.581,0.000l-0.582,-0.581l0.290,-1.162l-1.162,-1.741l-0.872,0.290l-0.581,0.000l-0.581,0.290l0.000,-1.161l-0.582,-0.581l0.000,-0.870l-0.581,-1.163l-0.582,-0.871l-2.326,0.000l-0.581,0.580l-0.871,0.000l-0.292,0.581l-0.289,0.582l-1.455,1.451l-1.453,-1.742l-0.873,-1.163l-0.870,-0.289l-0.582,-0.581l-0.291,-1.161l-0.582,-0.582l-0.581,-0.580l1.163,-1.162l0.873,0.000l0.581,-0.580l0.582,0.000l0.580,-0.291l-0.291,-0.871l0.291,-0.291l0.000,-0.871l1.453,0.000l2.036,0.581l0.581,0.000l0.000,-0.290l1.744,0.290l0.289,-0.290l0.293,1.162l0.290,0.000l0.581,-0.582l0.582,0.291l0.871,0.580l1.165,0.291l0.579,-0.580l0.873,-0.582l0.871,-0.290l0.581,0.000l0.582,0.581l0.292,0.871l1.162,1.162l-0.582,0.580l-0.291,1.162l0.582,-0.291l0.581,0.291l-0.290,0.871l0.871,0.581l-0.581,0.290l-0.290,0.871l0.581,1.163l0.871,2.323l-1.162,0.290l-0.290,0.290l0.290,0.581l0.000,1.162l0.581,0.000z\",\n                        \"GQ\" : \"M499.931,228.061l-0.582,-0.290l0.871,-3.193l4.652,0.000l0.000,3.483l-4.070,0.000l0.871,0.000z\",\n                        \"GR\" : \"M538.882,132.815l1.744,0.871l2.034-0.29l2.033,0.29v0.582l1.455-0.291l-0.292,0.581l-4.067,0.291v-0.291l-3.199-0.581L538.882,132.815zM547.02,116.553l-0.871,1.742l-0.581,0.291h-1.745l-1.454-0.291l-3.196,0.872l1.744,1.451l-1.454,0.291h-1.452l-1.454-1.16l-0.582,0.58l0.582,1.452l1.454,1.453l-0.872,0.58l1.452,1.162l1.455,0.871v1.452l-2.617-0.581l0.873,1.452l-1.745,0.291l0.872,2.323h-1.744l-2.326-1.161l-0.871-2.324l-0.581-1.742l-1.163-1.162l-1.452-1.742v-0.58l1.16-1.453l0.292-0.87l0.873-0.291v-0.871l1.742-0.291l1.164-0.58h1.452l0.582-0.291l0.29-0.29l2.036,0.29l2.325-0.872l2.034,0.872h2.326v-1.452L547.02,116.553z\",\n                        \"GT\" : \"M225.816,193.215l-1.453,-0.580l-1.744,0.000l-1.163,-0.581l-1.454,-1.162l0.000,-0.871l0.291,-0.581l-0.291,-0.580l1.164,-2.033l3.487,0.000l0.292,-0.871l-0.582,-0.291l-0.291,-0.581l-1.162,-0.581l-0.872,-0.870l1.163,0.000l0.000,-1.743l2.615,0.000l2.617,0.000l0.000,2.324l-0.292,2.903l0.872,0.000l0.872,0.581l0.292,-0.291l0.872,0.291l-1.455,1.162l-1.161,0.580l-0.292,0.581l0.292,0.581l-0.583,0.580l-0.581,0.291l0.000,0.290l-0.580,0.291l-0.873,0.581l0.000,-0.580z\",\n                        \"GW\" : \"M432.201,200.475l-1.452,-1.162l-1.164,0.000l-0.582,-0.871l0.000,-0.291l-0.871,-0.580l-0.292,-0.581l1.453,-0.581l0.874,0.000l0.871,-0.290l4.942,0.290l0.000,0.871l-0.291,0.291l0.291,0.871l-0.580,0.291l-0.582,0.000l-0.581,0.580l-0.873,0.000l1.163,-1.162z\",\n                        \"GY\" : \"M309.243,208.025l1.744,0.871l1.744,1.742l0.000,1.452l1.162,0.000l1.453,1.452l1.163,0.873l-0.582,2.613l-1.453,0.579l0.000,0.872l-0.581,1.161l1.453,2.032l0.872,0.000l0.291,1.744l1.744,2.322l-0.872,0.000l-1.454,-0.290l-0.871,0.871l-1.163,0.581l-0.872,0.000l-0.290,0.581l-1.454,-0.290l-1.743,-1.162l-0.291,-1.162l-0.582,-1.451l0.582,-2.324l0.580,-1.162l-0.580,-1.161l-0.872,-0.290l0.290,-1.451l-0.582,-0.582l-1.453,0.291l-2.035,-2.322l0.873,-0.582l0.000,-1.163l1.743,-0.580l0.582,-0.581l-0.872,-0.871l0.290,-1.161l-2.036,1.452z\",\n                        \"HN\" : \"M233.374,195.248l-0.291,-0.871l-0.872,-0.291l0.000,-1.162l-0.291,-0.289l-0.582,0.000l-1.161,0.289l0.000,-0.289l-0.872,-0.581l-0.582,-0.581l-0.873,-0.291l0.583,-0.580l-0.292,-0.581l0.292,-0.581l1.161,-0.580l1.455,-1.162l0.289,0.000l0.582,-0.291l0.581,0.000l0.291,0.000l0.582,0.000l1.163,0.291l1.162,-0.291l0.873,-0.290l0.581,-0.290l0.872,0.290l0.581,0.000l0.582,0.000l0.581,-0.290l1.454,0.580l0.289,0.000l0.872,0.582l0.873,0.580l0.871,0.291l0.873,0.870l-1.162,0.000l-0.291,0.291l-0.872,0.291l-0.872,0.000l-0.581,0.290l-0.582,0.000l-0.290,-0.290l-0.291,0.000l-0.291,0.580l-0.291,0.000l0.000,0.581l-1.163,0.871l-0.581,0.291l-0.291,0.289l-0.581,-0.580l-0.581,0.871l-0.582,-0.291l-0.871,0.291l0.290,1.162l-0.581,0.000l-0.291,0.871l0.872,0.000z\",\n                        \"HR\" : \"M525.51,104.647l0.871,1.163l0.873,0.870l-1.163,0.872l-1.163,-0.581l-2.033,0.000l-2.325,-0.291l-1.163,0.000l-0.582,0.581l-1.162,-0.581l-0.581,0.872l1.454,1.451l0.579,0.872l1.163,0.871l1.162,0.581l0.874,1.161l2.614,1.161l-0.289,0.580l-2.615,-1.160l-1.746,-0.871l-2.326,-0.871l-2.326,-2.033l0.582,-0.291l-1.453,-1.162l0.000,-0.870l-1.744,-0.291l-0.871,1.161l-0.873,-1.161l0.292,-0.870l1.743,0.000l0.580,-0.291l0.873,0.291l1.163,0.000l0.000,-0.582l0.871,-0.290l0.293,-1.162l2.325,-0.580l0.871,0.290l2.036,1.161l2.325,0.581l-0.871,0.581z\",\n                        \"HT\" : \"M272.326,176.083l1.744,0.290l2.326,0.291l0.290,1.451l-0.290,1.161l-0.582,0.582l0.582,0.580l0.000,0.872l-1.745,-0.581l-1.453,0.290l-1.744,-0.290l-1.163,0.581l-1.454,-0.872l0.291,-0.871l2.326,0.291l2.325,0.290l0.872,-0.581l-1.163,-1.161l0.000,-1.161l-1.744,-0.292l-0.582,0.870z\",\n                        \"HU\" : \"M518.243,102.034l1.164,-1.742l-0.582,-0.581l1.453,0.000l0.292,-1.162l1.454,0.872l0.871,0.290l2.324,-0.581l0.291,-0.291l1.163,-0.290l1.163,-0.290l0.289,0.000l1.455,-0.290l0.582,-0.581l0.870,-0.291l2.908,0.872l0.582,-0.290l1.452,0.870l0.291,0.581l-1.743,0.581l-1.164,2.034l-1.742,1.741l-2.325,0.581l-1.455,0.000l-2.326,0.580l-0.871,0.581l-2.325,-0.581l-2.036,-1.161l-0.871,-0.290l-0.582,-1.162l0.582,0.000z\",\n                        \"ID\" : \"M806.019,259.132h-1.163l-3.488-2.033l2.326-0.289l1.454,0.58l1.162,0.871L806.019,259.132zM816.193,258.842l-2.323,0.581l-0.292-0.291l0.292-0.871l1.16-1.742l2.617-1.16l0.29,0.58l0.29,0.871L816.193,258.842zM798.17,253.326l1.163,0.58l1.745-0.29l0.581,1.161l-3.198,0.582l-1.745,0.58l-1.743-0.291l1.162-1.451h1.455L798.17,253.326zM812.123,253.326l-0.579,1.451l-4.072,0.871l-3.486-0.58v-0.871l2.034-0.581l1.745,0.871l1.743-0.29L812.123,253.326zM772.881,249.55l5.232,0.29l0.582-1.161l4.94,1.452l1.163,1.742l4.07,0.58l3.487,1.452l-3.196,1.162l-3.199-1.162h-2.325h-2.907l-2.615-0.58l-3.199-1.162l-2.033-0.29l-1.163,0.29l-4.942-0.871l-0.58-1.452h-2.325l1.745-2.613h3.488l2.033,1.163l1.162,0.289L772.881,249.55zM844.679,248.098l-1.452,1.742l-0.292-2.032l0.583-0.871l0.58-1.162l0.581,0.871V248.098zM824.043,240.548l-1.163,0.87l-1.745-0.58l-0.581-1.162h2.907L824.043,240.548zM833.053,239.386l0.871,2.032l-2.325-0.87l-2.324-0.29h-1.454h-2.034l0.582-1.452l3.486-0.291L833.053,239.386zM842.935,234.16l0.874,4.355l2.906,1.743l2.325-2.905l3.199-1.741h2.323l2.326,0.87l2.033,1.162l2.909,0.581v8.712l0.29,9.002l-2.615-2.323l-2.91-0.29l-0.578,0.58l-3.489,0.291l1.161-2.323l1.744-0.871l-0.579-2.904l-1.454-2.323l-5.233-2.324l-2.323-0.289l-4.069-2.613L840.901,242l-1.162,0.292l-0.581-1.163v-1.161l-2.034-1.161l2.906-1.162h2.034l-0.289-0.581h-4.072l-1.161-1.742l-2.327-0.58l-1.161-1.161l3.778-0.872l1.455-0.872l4.359,1.162L842.935,234.16zM818.518,226.9l-2.325,2.904l-2.034,0.58l-2.615-0.58h-4.651l-2.325,0.58l-0.292,2.033l2.326,2.323l1.454-1.161l5.23-0.872l-0.29,1.161l-1.162-0.289l-1.163,1.451l-2.326,1.162l2.615,3.483l-0.581,0.872l2.326,3.194v1.742l-1.452,0.872l-0.874-0.872l1.165-2.323l-2.617,1.162l-0.871-0.873l0.579-0.869l-2.033-1.743l0.291-2.613l-2.036,0.871l0.292,3.195v3.773l-1.744,0.581l-1.165-0.871l0.874-2.613l-0.291-2.613h-1.162l-0.871-2.033l1.161-1.741l0.289-2.033l1.455-4.356l0.581-0.871l2.326-2.032l2.033,0.58l3.488,0.582l3.199-0.292l2.615-2.032L818.518,226.9zM828.111,227.771l-0.29,2.323h-1.452l-0.292,1.452l1.162,1.451l-0.87,0.291l-1.165-1.742l-0.871-3.485l0.581-2.032l0.873-1.162l0.29,1.452l1.744,0.291L828.111,227.771zM798.17,226.029l3.197,2.322l-3.197,0.292l-1.162,2.031l0.292,2.614l-2.618,1.742v2.613L793.52,242l-0.581-0.871l-2.908,1.163l-1.161-1.743l-2.034-0.29l-1.163-0.872l-3.488,1.162l-0.871-1.452l-1.744,0.29l-2.328-0.29l-0.581-3.775l-1.163-0.871l-1.452-2.322l-0.292-2.323l0.292-2.613l1.452-1.743l0.584,1.743l2.033,1.741l1.744-0.581h1.744l1.453-1.16l1.454-0.291l2.615,0.581l2.036-0.581l1.452-3.774l1.163-0.872l0.871-3.193h3.198l2.325,0.58l-1.454,2.323l2.036,2.614L798.17,226.029zM765.034,246.937l-2.907,0.29l-2.325-2.321l-3.779-2.324l-1.162-1.743l-2.033-2.323l-1.165-2.033l-2.325-3.774l-2.326-2.323l-0.871-2.323l-0.873-2.032l-2.615-1.743l-1.454-2.322l-2.034-1.743l-2.908-2.903l-0.289-1.451h1.745l4.358,0.58l2.618,2.614l2.033,2.032l1.453,1.161l2.615,2.905h2.908l2.325,2.032l1.454,2.322l2.033,1.161l-0.871,2.323l1.454,0.871h0.872l0.581,2.033l0.873,1.451l2.034,0.291l1.452,1.742l-0.871,3.485V246.937z\",\n                        \"IE\" : \"M456.62,82.869l0.579,2.032l-2.034,2.323l-4.942,1.743l-3.779,-0.581l2.036,-2.904l-1.454,-2.613l3.779,-2.323l2.033,-1.162l0.582,1.451l-0.582,1.454l1.745,0.000l-2.037,-0.580z\",\n                        \"IL\" : \"M572.021,140.946l-0.293,0.870l-1.163,-0.289l-0.578,1.743l0.871,0.289l-0.871,0.581l0.000,0.581l1.160,-0.291l0.000,0.872l-1.160,4.645l-2.038,-4.935l0.873,-0.872l0.581,-1.451l0.584,-2.033l0.289,-0.582l0.289,0.000l0.872,0.000l0.291,-0.580l0.582,0.000l0.000,1.162l-0.289,0.290l0.000,0.000z\",\n                        \"IN\" : \"M688.002,133.396l2.909,3.194l-0.293,2.324l1.163,1.160l0.000,1.453l-2.036,-0.291l0.873,2.904l2.615,1.742l3.781,2.034l-1.745,1.161l-1.163,2.613l2.908,1.162l2.614,1.161l3.490,1.742l3.779,0.291l1.453,1.452l2.325,0.290l3.197,0.581l2.326,0.000l0.291,-1.162l-0.291,-1.742l0.000,-1.161l1.744,-0.582l0.292,2.033l0.000,0.581l2.615,1.162l1.744,-0.581l2.326,0.290l2.326,0.000l0.000,-1.742l-1.163,-0.871l2.326,-0.290l2.615,-2.033l3.198,-1.742l2.033,0.580l2.035,-1.162l1.455,1.743l-1.161,1.162l3.194,0.290l0.000,1.162l-0.871,0.580l0.291,1.452l-2.034,-0.290l-3.489,1.742l0.000,1.742l-1.453,2.323l-0.292,1.162l-1.163,2.322l-2.033,-0.580l-0.290,2.904l-0.583,0.872l0.291,1.161l-1.162,0.581l-1.454,-4.356l-0.872,0.000l-0.581,1.742l-1.454,-1.452l0.872,-1.452l1.163,-0.289l1.454,-2.324l-1.743,-0.291l-2.327,0.000l-2.616,-0.291l-0.291,-2.032l-1.454,0.000l-2.034,-1.451l-1.163,2.032l2.034,1.451l-1.743,0.873l-0.582,1.160l1.744,0.582l-0.579,1.742l1.160,2.032l0.290,2.324l-0.290,1.162l-2.034,-0.291l-3.197,0.580l0.000,2.033l-1.455,1.742l-4.069,1.744l-2.904,3.484l-2.038,1.743l-2.906,1.742l0.000,1.161l-1.163,0.581l-2.615,1.161l-1.162,0.000l-0.874,2.323l0.582,3.484l0.000,2.324l-1.163,2.614l0.000,4.644l-1.454,0.000l-1.160,2.325l0.870,0.871l-2.615,0.581l-0.874,2.032l-1.163,0.581l-2.615,-2.323l-1.163,-4.067l-1.162,-2.613l-0.874,-1.451l-1.452,-2.613l-0.581,-3.485l-0.581,-1.742l-2.618,-3.775l-1.161,-5.227l-0.584,-3.485l0.000,-3.194l-0.581,-2.613l-4.068,1.451l-2.035,-0.290l-3.488,-3.194l1.454,-1.162l-0.873,-0.871l-3.198,-2.323l1.745,-2.033l6.106,0.000l-0.583,-2.324l-1.455,-1.451l-0.579,-2.032l-1.745,-1.162l3.197,-2.904l3.199,0.291l2.904,-2.904l1.745,-2.904l2.618,-2.614l0.000,-2.032l2.325,-1.743l-2.325,-1.161l-0.874,-2.032l-1.160,-2.324l1.453,-1.162l4.069,0.581l3.196,-0.290l-2.617,2.323z\",\n                        \"IQ\" : \"M598.763,131.943l1.744,0.872l0.289,1.742l-1.452,0.871l-0.581,2.033l2.033,2.613l3.200,1.453l1.454,2.323l-0.292,1.742l0.872,0.000l0.000,1.742l1.454,1.452l-1.744,-0.290l-1.744,-0.291l-2.037,2.614l-5.230,0.000l-7.561,-5.517l-4.067,-2.032l-3.488,-0.873l-1.163,-3.193l6.103,-2.904l1.163,-3.195l-0.292,-2.032l1.454,-0.872l1.454,-1.742l1.164,-0.291l3.197,0.291l0.873,0.872l1.452,-0.581l-1.745,-3.193z\",\n                        \"IR\" : \"M622.309,128.75l2.323,-0.582l2.036,-1.742l1.745,0.291l1.162,-0.581l2.034,0.290l2.907,1.452l2.325,0.290l3.200,2.324l2.034,0.000l0.289,2.323l-1.161,3.485l-0.873,2.032l1.163,0.291l-1.163,1.742l0.873,2.032l0.290,1.743l2.036,0.581l0.289,1.742l-2.615,2.323l1.453,1.452l1.162,1.742l2.617,1.162l0.000,2.613l1.453,0.291l0.290,1.452l-4.070,1.162l-1.161,3.193l-4.943,-0.580l-3.197,-0.871l-2.906,-0.291l-1.454,-3.194l-1.163,-0.581l-2.034,0.581l-2.908,1.162l-3.196,-0.872l-2.907,-2.033l-2.617,-0.870l-1.745,-2.614l-2.034,-3.774l-1.744,0.580l-1.744,-0.871l-0.871,1.161l-1.454,-1.452l0.000,-1.742l-0.872,0.000l0.292,-1.742l-1.454,-2.323l-3.200,-1.453l-2.033,-2.613l0.581,-2.033l1.452,-0.871l-0.289,-1.742l-1.744,-0.872l-1.745,-3.193l-1.452,-2.324l0.579,-0.871l-0.870,-2.904l1.743,-0.871l0.582,0.871l1.163,1.453l2.033,0.289l0.873,0.000l3.489,-2.032l0.872,-0.290l0.871,0.871l-0.871,1.451l1.743,1.453l0.582,-0.291l0.873,2.033l2.615,0.580l1.744,1.453l4.069,0.291l4.360,-0.581l-0.293,0.581z\",\n                        \"IS\" : \"M433.944,48.313l-0.870,1.742l3.196,1.742l-3.488,2.033l-8.138,2.033l-2.326,0.581l-3.488,-0.581l-7.849,-0.871l2.906,-1.162l-6.103,-1.451l4.940,-0.291l0.000,-0.871l-5.811,-0.580l1.744,-2.033l4.067,-0.291l4.362,1.742l4.360,-1.451l3.198,0.871l4.649,-1.452l-4.651,-0.290z\",\n                        \"IT\" : \"M516.5,125.846l-0.873,2.033l0.292,0.872l-0.582,1.451l-2.034-0.871l-1.454-0.291l-3.777-1.451l0.289-1.452l3.199,0.29l2.904-0.29L516.5,125.846zM499.059,117.715l1.743,1.742l-0.291,3.775l-1.452-0.291l-1.164,0.871l-0.872-0.58l-0.291-3.195l-0.579-1.742l1.452,0.291L499.059,117.715zM507.779,102.325l4.069,0.581l-0.289,1.452l0.581,1.161l-2.326-0.291l-2.035,0.872v1.452l-0.292,0.871l0.873,1.162l2.615,1.452l1.455,2.324l2.906,2.323h2.326l0.58,0.58l-0.872,0.582l2.617,0.871l2.036,0.871l2.324,1.451l0.291,0.581l-0.581,0.873l-1.455-1.453l-2.325-0.289l-1.163,1.742l2.036,1.16l-0.581,1.453h-0.873l-1.745,2.323l-0.87,0.291v-0.871l0.289-1.453l0.872-0.58l-1.161-1.742l-0.873-1.162l-1.161-0.58l-0.873-1.162l-1.744-0.29l-1.163-1.162l-2.034-0.291l-2.036-1.162l-2.615-1.741l-1.744-1.743l-0.872-2.614l-1.454-0.29l-2.325-0.872l-1.163,0.291l-1.743,1.162l-1.163,0.291l0.291-1.162l-1.454-0.291l-0.582-2.033l0.872-0.871l-0.872-1.162l0.291-0.871l1.165,0.581h1.16l1.744-0.871l0.291,0.29h1.453l0.583-1.162l2.034,0.29l1.163-0.29l0.289-1.162l1.745,0.291l0.291-0.58l2.615-0.292L507.779,102.325z\",\n                        \"JM\" : \"M260.116,180.148l2.036,0.290l1.452,0.581l0.291,0.871l-1.743,0.000l-0.872,0.291l-1.454,-0.291l-1.744,-1.161l0.290,-0.581l1.164,-0.290l-0.580,-0.290z\",\n                        \"JO\" : \"M571.728,141.816l0.293,-0.870l3.195,1.161l5.234,-2.903l1.163,3.193l-0.582,0.582l-5.522,1.451l2.905,2.614l-0.872,0.581l-0.581,0.871l-2.036,0.290l-0.581,1.161l-1.161,0.582l-3.196,-0.291l0.000,-0.291l1.160,-4.645l0.000,-0.872l0.581,-0.871l0.000,1.743z\",\n                        \"JP\" : \"M844.39,137.17l0.289,0.871l-1.452,1.742l-1.163-1.161l-1.454,0.871l-0.58,1.452l-2.035-0.581l0.292-1.452l1.452-1.743l1.452,0.291l1.165-1.161L844.39,137.17zM861.832,128.75l-1.165,2.323l0.584,1.162l-1.455,2.033l-3.488,1.452h-4.94l-3.78,3.195l-1.742-1.162l-0.292-2.033l-4.651,0.582l-3.488,1.451h-3.198l2.909,2.032l-1.745,4.646l-1.743,1.162l-1.454-1.162l0.582-2.323l-1.745-0.871l-1.163-1.742l2.617-0.871l1.452-1.742l2.907-1.453l2.035-2.033l5.523-0.581l2.907,0.291l2.904-4.646l1.746,1.162l4.07-2.614l1.452-1.161l1.744-3.484l-0.292-2.904l1.164-1.742l2.906-0.581l1.454,3.774v2.324l-2.615,2.613V128.75zM869.969,109.584l1.744,0.58l2.036-1.162l0.58,2.904l-4.068,0.871l-2.326,2.613l-4.36-1.742l-1.453,2.904h-3.199l-0.29-2.613l1.454-2.033l2.906-0.291l0.873-3.775l0.581-2.032l3.488,2.613L869.969,109.584z\",\n                        \"KE\" : \"M586.553,233.289l1.745,2.323l-2.034,1.162l-0.582,1.161l-1.163,0.000l-0.291,2.032l-0.872,1.161l-0.581,1.744l-1.162,0.871l-3.780,-2.615l-0.291,-1.742l-9.883,-5.517l-0.582,-0.289l0.000,-2.906l0.872,-1.161l1.164,-1.742l1.163,-2.033l-1.163,-3.194l-0.291,-1.452l-1.452,-1.742l1.743,-1.743l1.745,-1.741l1.452,0.290l0.000,1.742l0.873,0.871l2.033,0.000l3.489,2.323l0.874,0.000l0.580,0.000l0.580,0.290l2.036,0.290l0.581,-1.160l2.618,-1.162l1.161,0.870l1.743,0.000l-2.325,3.196l0.000,-9.873z\",\n                        \"KG\" : \"M669.108,114.811l0.581,-1.162l1.745,-0.580l4.649,0.871l0.292,-1.452l1.745,-0.581l3.779,1.162l1.161,-0.291l4.361,0.000l4.068,0.291l1.455,0.871l1.744,0.581l-0.289,0.581l-4.362,1.451l-1.162,1.162l-3.490,0.290l-0.871,1.744l-2.906,-0.291l-2.036,0.580l-2.615,1.162l0.289,0.580l-0.579,0.871l-5.233,0.291l-3.488,-0.871l-2.908,0.290l0.291,-1.743l2.906,0.582l0.873,-0.871l2.326,0.289l3.488,-2.032l-3.199,-1.451l-2.034,0.580l-2.035,-0.871l2.326,-1.742l0.872,0.291z\",\n                        \"KH\" : \"M758.638,201.637l-1.162,-1.453l-1.454,-2.613l-0.580,-3.485l1.741,-2.323l3.781,-0.581l2.326,0.581l2.326,0.872l1.160,-1.743l2.617,0.871l0.581,2.033l-0.289,3.194l-4.651,2.033l1.162,1.742l-2.906,0.290l-2.326,1.162l2.326,0.580z\",\n                        \"KO\" : \"M531.032,115.392l-0.289,0.581l-0.292,0.000l-0.289,-1.162l-0.582,-0.290l-0.581,-0.581l0.581,-0.871l0.582,0.000l0.289,-0.871l0.581,-0.291l0.293,0.291l0.581,0.290l0.290,0.581l0.583,0.000l0.579,0.580l0.292,0.000l-0.292,0.580l-0.290,0.292l0.000,0.290l-0.581,0.000l1.455,-0.581z\",\n                        \"KP\" : \"M833.343,114.229l0.292,0.582l-0.872,0.000l-1.164,0.872l-0.872,0.870l0.000,2.033l-1.452,0.581l-0.291,0.582l-1.163,0.580l-1.744,0.580l-1.163,0.582l-0.292,1.451l-0.289,0.291l1.163,0.290l1.452,1.161l-0.290,0.871l-1.162,0.000l-2.035,0.291l-0.874,1.161l-1.452,0.000l-1.454,-0.290l-0.289,0.290l-0.874,0.290l0.000,-0.580l-0.581,0.000l-0.871,-0.581l0.871,-1.161l0.581,-0.291l-0.291,-0.580l0.583,-1.453l0.000,-0.580l-1.744,-0.291l-1.162,-0.580l2.033,-1.742l3.198,-1.453l1.745,-2.032l1.453,0.871l2.325,0.000l-0.289,-1.452l4.067,-1.163l1.163,-1.451l-1.744,-1.451z\",\n                        \"KR\" : \"M826.948,124.684l2.617,3.194l0.582,2.034l0.000,2.903l-1.163,1.742l-2.326,0.582l-2.325,0.870l-2.326,0.291l-0.292,-1.452l0.292,-2.033l-1.163,-2.903l2.036,-0.291l-1.745,-2.614l1.452,0.000l0.874,-1.161l2.035,-0.291l1.162,0.000l-0.290,0.871z\",\n                        \"KW\" : \"M605.74,148.496l0.581,1.162l-0.291,0.580l0.871,2.323l-1.743,0.000l-0.873,-1.452l-2.326,-0.290l2.037,-2.614l-1.744,-0.291z\",\n                        \"KZ\" : \"M669.108,114.811l-1.454,0.291l-3.779,2.033l-1.163,2.032l-1.163,0.000l-0.580,-1.452l-3.489,0.000l-0.581,-2.323l-1.453,0.000l0.290,-2.614l-3.196,-2.032l-4.944,0.290l-3.196,0.291l-2.618,-2.614l-2.324,-0.872l-4.071,-2.031l-0.580,-0.291l-6.976,1.742l0.000,10.164l-1.455,0.000l-1.744,-2.033l-2.034,-0.871l-3.199,0.581l-1.160,0.871l0.000,-0.581l0.582,-1.163l-0.582,-0.869l-3.197,-1.162l-1.165,-2.323l-1.453,-0.581l-0.291,-1.161l2.909,0.289l0.000,-2.032l2.324,-0.290l2.326,0.290l0.581,-2.614l-0.581,-1.742l-2.616,0.291l-2.326,-0.872l-3.196,1.452l-2.618,0.581l-1.452,-0.581l0.289,-1.452l-1.743,-1.742l-2.034,0.000l-2.327,-1.742l1.453,-2.323l-0.580,-0.290l2.036,-3.195l2.906,1.742l0.289,-2.032l5.814,-3.195l4.362,0.000l5.812,2.032l3.489,1.163l2.906,-1.163l4.360,-0.290l3.488,1.453l0.871,-0.872l3.781,0.291l0.581,-1.453l-4.362,-1.742l2.618,-1.451l-0.581,-0.582l2.617,-0.870l-2.036,-1.743l1.454,-1.160l10.172,-0.872l1.454,-0.582l6.976,-1.161l2.326,-1.161l4.942,0.580l0.872,2.905l2.906,-0.581l3.488,0.872l-0.290,1.451l2.618,0.000l6.974,-2.614l-0.871,0.872l3.488,2.033l6.104,6.968l1.453,-1.451l3.780,1.742l4.070,-0.872l1.455,0.581l1.160,1.452l2.034,0.581l1.163,1.162l3.488,-0.291l1.455,1.743l-2.034,1.742l-2.328,0.291l0.000,2.904l-1.744,1.162l-5.232,-0.873l-2.034,4.938l-1.453,0.580l-5.524,1.162l2.617,4.646l-2.033,0.580l0.289,1.743l-1.744,-0.581l-1.455,-0.871l-4.068,-0.291l-4.361,0.000l-1.161,0.291l-3.779,-1.162l-1.745,0.581l-0.292,1.452l-4.649,-0.871l-1.745,0.580l0.581,-1.162z\",\n                        \"LA\" : \"M763.29,191.763l0.872,-1.451l0.291,-2.323l-2.327,-2.324l0.000,-2.613l-2.325,-2.323l-2.036,0.000l-0.582,0.871l-1.452,0.000l-0.871,-0.581l-2.907,1.742l0.000,-2.323l0.579,-2.904l-1.743,-0.289l-0.290,-1.744l-1.163,-0.580l0.581,-1.162l2.326,-1.742l0.289,0.581l1.455,0.000l-0.290,-2.904l1.453,-0.581l1.454,2.324l1.161,2.322l3.488,0.000l1.165,2.614l-1.747,0.580l-0.870,0.872l3.197,1.742l2.325,3.194l1.745,2.614l2.036,1.742l0.870,2.032l-0.581,2.614l-2.617,-0.871l-1.160,1.743l2.326,0.872z\",\n                        \"LB\" : \"M572.31,139.494l-0.582,0.000l-0.291,0.580l-0.872,0.000l0.872,-2.323l1.454,-2.032l1.163,0.000l0.581,1.162l-1.452,1.161l0.873,-1.452z\",\n                        \"LK\" : \"M699.047,210.348l-0.579,2.904l-1.165,0.581l-2.323,0.582l-1.455,-2.034l-0.292,-4.066l1.166,-4.356l2.033,1.454l1.162,2.032l-1.453,-2.903z\",\n                        \"LR\" : \"M452.549,219.06l-0.873,0.000l-2.615,-1.453l-2.617,-2.032l-2.324,-1.452l-1.744,-1.742l0.580,-0.872l0.000,-0.871l1.454,-1.452l1.163,-1.451l0.581,0.000l0.872,-0.290l1.162,1.741l-0.290,1.162l0.582,0.581l0.581,0.000l0.582,-1.161l0.871,0.000l0.000,0.870l0.291,1.162l-0.582,1.452l0.582,0.581l0.871,0.290l1.162,1.161l0.293,1.162l-0.293,0.291l0.289,-2.323z\",\n                        \"LS\" : \"M553.416,310.531l1.163,0.872l-0.873,1.451l-0.581,0.871l-1.454,0.292l-0.581,0.869l-0.871,0.291l-2.036,-2.032l1.454,-1.742l1.453,-1.163l1.163,-0.579l-1.163,-0.870z\",\n                        \"LT\" : \"M536.265,81.417l-0.291,-0.582l0.582,-0.870l-1.454,-0.291l-2.906,-0.581l-0.580,-2.322l3.197,-0.871l4.649,0.290l2.618,-0.290l0.581,0.580l1.455,0.291l2.614,1.162l0.290,1.160l-2.326,1.162l-0.578,1.452l-2.908,0.872l-2.907,0.000l-0.582,-0.872l1.454,0.290z\",\n                        \"LU\" : \"M490.338,93.032l0.579,0.581l0.000,1.452l-0.871,0.000l-0.581,-0.291l0.290,-1.451l-0.583,0.291z\",\n                        \"LV\" : \"M531.616,76.771l0.290,-2.033l1.162,-1.742l2.616,-0.871l2.326,2.033l2.035,0.000l0.581,-2.033l2.325,-0.581l1.165,0.290l2.614,1.162l2.034,0.000l1.455,0.581l0.291,1.161l0.871,1.742l-2.906,1.162l-1.745,0.291l-2.614,-1.162l-1.455,-0.291l-0.581,-0.580l-2.618,0.290l-4.649,-0.290l3.197,-0.871z\",\n                        \"LY\" : \"M514.755,167.951l-2.036,1.162l-1.452,-1.452l-4.361,-1.161l-1.452,-1.743l-2.035,-1.451l-1.163,0.580l-1.163,-1.451l0.000,-1.162l-1.744,-2.033l1.162,-1.161l-0.291,-1.743l0.291,-1.452l0.000,-1.451l0.291,-2.033l0.000,-1.453l-0.871,-2.322l1.162,-0.581l0.290,-1.162l-0.290,-1.161l2.034,-1.162l0.872,-0.870l1.164,-0.873l0.291,-2.032l3.195,0.872l1.165,0.000l2.326,0.290l3.486,1.161l1.456,2.614l2.325,0.581l4.067,1.161l2.907,1.162l1.165,-0.581l1.453,-1.452l-0.582,-2.033l0.874,-1.162l1.741,-1.451l2.036,-0.290l3.778,0.580l0.873,1.161l1.163,0.000l0.871,0.582l2.616,0.291l0.582,0.870l-0.871,1.452l0.289,1.162l-0.579,1.451l0.871,2.324l0.000,9.873l0.000,10.162l0.000,5.228l-3.199,0.291l0.000,0.870l-11.045,-5.227l-11.046,-5.226l2.616,-1.451z\",\n                        \"MA\" : \"M459.526,132.525l1.743,1.161l2.616,0.000l2.615,0.581l1.164,0.000l1.163,1.742l0.291,1.742l0.871,2.905l0.582,0.580l-0.289,0.871l-3.782,0.582l-1.162,0.870l-1.744,0.291l0.000,2.032l-3.197,1.162l-1.162,1.452l-2.036,0.581l-2.906,0.581l-4.361,2.032l0.000,3.194l-0.581,0.000l0.292,1.452l-1.745,0.000l-0.872,0.871l-1.161,0.000l-1.165,-0.581l-2.324,0.291l-0.873,2.323l-0.872,0.000l-1.162,3.485l-4.069,3.194l-0.874,3.775l-1.162,1.162l-0.290,0.870l-6.107,0.291l0.000,-1.161l1.165,-0.872l0.871,-1.451l-0.291,-0.872l1.164,-2.033l1.454,-1.742l0.871,-0.291l0.873,-1.742l0.000,-1.451l0.870,-1.742l2.036,-0.872l1.745,-2.904l1.452,-1.162l2.326,-0.289l2.326,-1.743l1.452,-0.871l2.036,-2.323l-0.582,-3.194l1.163,-2.323l0.290,-1.452l1.744,-2.033l2.906,-1.162l2.037,-1.162l1.745,-2.903l0.871,-1.742l-2.035,0.000z\",\n                        \"MD\" : \"M547.02,98.259l0.584,-0.290l2.033,-0.290l2.034,0.870l1.162,0.000l1.166,0.872l-0.293,0.871l1.164,0.580l0.290,1.162l0.873,0.580l0.000,0.291l0.290,0.291l-0.581,0.290l-1.743,0.000l-0.293,-0.581l-0.581,0.291l0.291,0.580l-0.872,0.871l-0.291,0.872l-0.872,0.291l-0.291,-1.163l0.291,-1.161l-0.291,-1.161l-1.453,-1.742l-0.873,-1.162l-0.871,-0.872l0.873,0.290z\",\n                        \"ME\" : \"M528.417,113.94l-0.292,-0.291l-1.163,1.162l0.000,0.872l-0.581,0.000l-0.579,-0.872l-1.163,-0.582l0.289,-0.580l0.291,-1.451l0.872,-0.581l0.582,-0.290l0.873,0.290l0.290,0.581l0.872,0.290l1.162,0.581l-0.290,0.000l-0.581,0.871l0.582,0.000z\",\n                        \"MG\" : \"M610.099,265.23l0.873,1.163l0.582,1.742l0.579,3.485l0.584,1.160l-0.293,1.454l-0.581,0.579l-0.871,-1.451l-0.583,0.872l0.583,2.032l-0.291,1.160l-0.582,0.581l-0.292,2.325l-1.162,3.194l-1.161,3.775l-1.744,5.226l-1.162,3.775l-1.165,3.195l-2.325,0.581l-2.325,1.162l-1.455,-0.582l-2.324,-0.871l-0.872,-1.453l0.000,-2.613l-1.163,-2.032l0.000,-2.033l0.292,-2.032l1.452,-0.582l0.000,-0.871l1.163,-2.032l0.289,-1.742l-0.579,-1.453l-0.582,-1.451l-0.291,-2.614l1.163,-1.743l0.289,-1.742l1.455,0.000l1.452,-0.581l0.872,-0.579l1.454,0.000l1.455,-1.454l2.325,-1.740l0.872,-1.454l-0.580,-1.160l1.161,0.289l1.744,-1.743l0.000,-1.742l0.873,-1.160l-0.871,-1.160z\",\n                        \"MK\" : \"M530.451,115.973l0.292,0.000l0.289,-0.581l1.455,-0.581l0.581,0.000l1.161,-0.290l1.165,0.000l1.452,0.871l0.000,1.743l-0.290,0.290l-0.582,0.290l-1.452,0.000l-1.164,0.580l-1.742,0.291l-1.165,-0.581l-0.289,-1.161l-0.289,0.871z\",\n                        \"ML\" : \"M440.34,190.602l0.871,-0.290l0.583,-1.743l0.872,0.000l1.744,0.871l1.455,-0.580l1.161,0.000l0.581,-0.581l11.046,0.000l0.582,-2.032l-0.582,-0.291l-1.454,-11.906l-1.161,-11.615l4.070,-0.291l9.301,6.098l9.301,6.098l0.873,1.161l1.454,0.872l1.452,0.291l0.000,1.742l2.906,0.000l0.000,6.097l-1.452,2.034l-0.291,1.452l-2.326,0.580l-3.778,0.291l-0.872,0.870l-1.744,0.291l-2.035,0.000l-0.582,-0.581l-1.452,0.290l-2.617,1.162l-0.582,0.871l-2.035,1.161l-0.291,0.872l-1.163,0.581l-1.452,-0.581l-0.872,0.871l-0.291,1.742l-2.034,2.324l0.000,0.871l-0.873,1.161l0.290,1.741l-1.161,0.292l-0.583,0.290l-0.579,-1.162l-0.582,0.291l-0.581,0.000l-0.582,0.871l-2.037,0.000l-0.870,-0.582l-0.292,0.292l-0.871,-0.581l0.290,-0.871l-0.581,-0.291l-0.582,0.291l0.291,-1.162l0.582,-0.580l-1.162,-1.162l-0.292,-0.871l-0.582,-0.581l-0.581,0.000l-0.871,0.290l-0.873,0.582l-0.579,0.580l-1.165,-0.291l-0.871,-0.580l-0.582,-0.291l-0.581,0.582l-0.290,0.000l-0.293,-1.162l0.000,-0.871l0.000,-1.162l-1.162,-0.581l-0.581,-1.742l0.000,1.742z\",\n                        \"MM\" : \"M747.882,175.501l-1.743,1.163l-2.034,0.000l-1.163,3.194l-1.165,0.290l1.455,2.613l1.744,1.742l1.163,2.034l-1.163,2.323l-0.871,0.580l0.582,1.162l1.741,2.322l0.582,1.453l-0.290,1.452l1.162,2.322l-1.454,2.614l-1.452,2.903l-0.289,-2.031l0.870,-2.033l-0.870,-1.742l0.289,-2.904l-1.163,-1.453l-0.871,-3.484l-0.581,-3.484l-1.164,-2.034l-1.743,1.162l-3.200,2.033l-1.454,-0.291l-1.741,-0.580l0.870,-3.486l-0.579,-2.612l-2.036,-2.904l0.290,-1.161l-1.744,-0.291l-1.743,-2.323l-0.291,-2.033l0.871,0.291l0.292,-2.033l1.162,-0.581l-0.291,-1.161l0.583,-0.872l0.290,-2.904l2.033,0.580l1.163,-2.322l0.292,-1.162l1.453,-2.323l0.000,-1.742l3.489,-1.742l2.034,0.290l-0.291,-1.452l0.871,-0.580l0.000,-1.162l1.455,0.000l0.873,1.452l1.161,0.580l0.291,2.324l-0.291,2.032l-2.615,2.323l-0.290,3.484l2.905,-0.580l0.873,2.614l1.743,0.580l-0.872,2.033l2.035,1.162l1.163,0.580l2.035,-0.870l0.000,1.161l-2.326,1.742l-0.581,1.162l1.454,-0.580z\",\n                        \"MN\" : \"M715.327,95.356l2.907,-0.582l5.232,-2.323l4.069,-1.161l2.616,0.871l2.908,0.000l1.741,1.162l2.617,0.290l4.071,0.581l2.617,-2.033l-1.163,-1.453l2.907,-2.902l3.196,1.161l2.327,0.290l3.488,0.580l0.290,2.324l4.069,1.162l2.617,-0.582l3.487,-0.290l2.618,0.290l2.615,1.162l1.743,1.453l2.616,0.000l3.490,0.581l2.616,-0.872l3.488,-0.291l4.070,-2.033l1.745,0.291l1.452,0.871l3.197,-0.290l-1.453,2.324l-1.744,2.612l0.581,1.162l1.455,-0.290l2.904,0.290l2.036,-0.872l2.327,0.872l2.325,1.742l-0.291,1.161l-2.034,-0.289l-4.071,0.289l-2.035,0.872l-2.034,1.742l-4.069,1.162l-2.909,1.451l-2.614,-0.580l-1.745,-0.290l-1.454,1.742l0.873,1.162l0.581,0.871l-2.033,0.871l-1.745,1.452l-3.199,0.871l-4.359,0.289l-4.361,0.873l-3.197,1.451l-1.163,-0.870l-3.489,0.000l-4.069,-1.743l-2.615,-0.291l-3.781,0.291l-5.522,-0.580l-3.196,0.000l-1.456,-1.453l-1.163,-2.613l-1.743,-0.291l-3.488,-1.742l-3.778,-0.290l-3.198,-0.581l-0.873,-1.162l0.873,-3.194l-1.746,-2.323l-4.067,-0.872l-2.326,-1.451l0.581,2.032z\",\n                        \"MR\" : \"M440.34,190.602l-2.034,-1.742l-1.454,-2.033l-2.034,-0.580l-1.163,-0.872l-1.454,0.000l-1.452,0.581l-1.456,-0.291l-0.871,0.872l-0.290,-1.453l0.871,-1.451l0.290,-2.614l-0.290,-2.613l-0.291,-1.453l0.291,-1.161l-0.871,-1.452l-1.454,-1.161l0.582,-0.871l11.046,0.000l-0.581,-4.066l0.581,-1.451l2.615,0.000l0.000,-7.261l9.011,0.290l0.000,-4.355l10.176,6.679l-4.070,0.291l1.161,11.615l1.454,11.906l0.582,0.291l-0.582,2.032l-11.046,0.000l-0.581,0.581l-1.161,0.000l-1.455,0.580l-1.744,-0.871l-0.872,0.000l-0.583,1.743l0.871,-0.290z\",\n                        \"MW\" : \"M568.822,262.618l-0.582,2.032l0.582,3.776l1.165,-0.291l0.871,0.871l1.163,2.034l0.289,3.483l-1.163,0.581l-0.871,2.032l-1.744,-1.742l-0.292,-2.032l0.582,-1.161l-0.290,-1.161l-0.873,-0.582l-0.871,0.291l-1.455,-1.454l-1.452,-0.580l0.580,-2.612l0.872,-0.873l-0.290,-2.323l0.290,-2.322l0.582,-0.582l-0.582,-2.322l-1.452,-1.452l2.907,0.581l0.289,0.871l1.163,1.161l-0.582,-3.776z\",\n                        \"MX\" : \"M206.341,159.82l-1.163,2.324l-0.291,2.033l-0.290,3.774l-0.291,1.162l0.581,1.743l0.872,1.161l0.582,2.033l1.744,2.323l0.581,1.452l1.163,1.451l2.906,0.582l1.163,1.161l2.326,-0.871l2.034,-0.290l2.035,-0.291l1.745,-0.581l1.743,-1.161l0.872,-1.452l0.000,-2.323l0.582,-0.871l2.034,-0.581l2.908,-0.872l2.324,0.291l1.745,-0.291l0.582,0.582l0.000,1.161l-1.454,1.742l-0.873,1.742l0.582,0.581l-0.291,1.162l-0.872,2.033l-0.582,-0.581l-0.581,0.000l-0.580,0.000l-0.872,1.742l-0.582,-0.580l-0.290,0.290l0.000,0.290l-2.617,0.000l-2.615,0.000l0.000,1.743l-1.163,0.000l0.872,0.870l1.162,0.581l0.291,0.581l0.582,0.291l-0.292,0.871l-3.487,0.000l-1.164,2.033l0.291,0.580l-0.291,0.581l0.000,0.871l-3.197,-2.903l-1.454,-0.872l-2.325,-0.870l-1.453,0.290l-2.325,1.161l-1.163,0.291l-2.035,-0.872l-2.035,-0.580l-2.617,-1.162l-2.034,-0.291l-3.198,-1.451l-2.325,-1.161l-0.582,-0.872l-1.453,0.000l-2.906,-0.871l-1.163,-1.453l-2.907,-1.451l-1.454,-1.742l-0.581,-1.453l0.872,-0.290l-0.291,-0.581l0.582,-0.871l0.000,-0.871l-0.873,-1.161l-0.290,-1.162l-0.872,-1.452l-2.325,-2.614l-2.908,-2.322l-1.453,-1.453l-2.325,-1.161l-0.290,-0.872l0.290,-1.451l-1.454,-0.871l-1.453,-1.162l-0.872,-2.032l-1.454,-0.291l-1.453,-1.452l-1.454,-1.161l0.000,-0.871l-1.453,-2.033l-1.162,-2.324l0.290,-0.870l-2.035,-1.162l-0.872,0.000l-1.744,-0.581l-0.290,1.162l0.290,1.161l0.290,2.034l0.872,1.161l2.036,2.032l0.581,0.581l0.291,0.290l0.581,0.872l0.291,0.000l0.581,1.742l0.872,0.580l0.581,1.162l1.745,1.162l0.872,2.613l0.872,1.162l0.872,1.452l0.000,1.452l1.453,0.000l0.872,1.160l1.164,1.454l0.000,0.290l-1.164,1.161l-0.581,0.000l-0.581,-1.742l-2.035,-1.452l-1.744,-1.453l-1.454,-0.580l0.000,-2.033l-0.291,-1.452l-1.453,-0.870l-1.744,-1.453l-0.581,0.581l-0.582,-0.871l-1.743,-0.581l-1.745,-1.742l0.291,0.000l1.163,0.000l1.162,-0.872l0.000,-1.451l-2.034,-1.742l-1.744,-0.871l-0.873,-1.742l-1.162,-1.744l-1.163,-2.322l-1.163,-2.323l3.198,-0.291l3.487,-0.290l-0.290,0.581l4.070,1.452l6.395,1.742l5.232,0.000l2.326,0.000l0.000,-1.162l4.650,0.000l1.163,1.162l1.453,0.871l1.454,1.162l0.872,1.451l0.872,1.453l1.454,0.871l2.325,0.871l1.744,-2.323l2.035,0.000l2.034,1.161l1.454,1.742l0.872,1.742l1.744,1.452l0.582,2.033l0.581,1.162l2.326,0.871l1.744,0.580l-1.163,0.000z\",\n                        \"MY\" : \"M751.953,213.833l0.29,1.451l1.744-0.289l0.873-1.162l0.582,0.29l1.741,1.743l1.165,1.741l0.29,1.743l-0.29,1.452v0.87l0.29,1.453l0.871,0.871l1.162,2.322v1.162h-2.033l-2.616-2.033l-3.195-2.032l-0.295-1.452l-1.452-1.743l-0.581-2.322l-0.871-1.452l0.289-2.031l-0.58-1.162l0.291-0.582L751.953,213.833zM800.205,218.769l-2.034,0.871l-2.325-0.58h-3.198l-0.871,3.193l-1.163,0.872l-1.452,3.774l-2.036,0.581l-2.615-0.581l-1.454,0.291l-1.453,1.16h-1.744l-1.744,0.581l-2.033-1.741l-0.584-1.743l2.036,0.871l2.325-0.581l0.581-2.322l1.163-0.29l3.197-0.581l2.036-2.324l1.162-1.741l1.453,1.451l0.58-0.87h1.163l0.291-1.743v-1.451l2.327-1.743l1.161-2.322h1.162l1.455,1.452v1.162l2.034,0.869l2.325,0.872l-0.29,0.872l-1.744,0.289L800.205,218.769z\",\n                        \"MZ\" : \"M568.822,262.618l2.036,-0.292l3.486,0.872l0.581,-0.291l2.036,-0.289l0.872,-0.581l1.746,0.000l2.907,-1.162l2.323,-1.452l0.292,1.162l0.000,2.613l0.289,2.614l0.000,4.064l0.584,1.453l-0.873,2.033l-0.873,1.742l-1.742,1.742l-2.618,1.161l-3.199,1.163l-2.905,3.194l-1.163,0.290l-2.036,2.033l-1.162,0.580l0.000,2.034l1.162,2.032l0.582,1.741l0.000,0.874l0.581,-0.292l-0.291,2.614l-0.290,1.451l0.581,0.290l-0.291,1.162l-1.161,1.161l-2.327,0.873l-3.198,1.451l-1.452,1.162l0.289,1.161l0.873,0.000l-0.291,1.452l-2.034,0.000l-0.291,-1.162l-0.580,-1.161l0.000,-1.162l0.290,-2.904l-0.582,-2.033l-1.452,-3.774l2.904,-3.195l0.874,-2.033l0.289,-0.290l0.293,-1.452l-0.293,-0.870l0.000,-2.033l0.582,-2.032l0.000,-3.486l-1.452,-0.871l-1.163,-0.289l-0.582,-0.582l-1.452,-0.581l-2.325,0.000l0.000,-0.870l-0.292,-2.033l8.429,-2.325l1.455,1.454l0.871,-0.291l0.873,0.582l0.290,1.161l-0.582,1.161l0.292,2.032l1.744,1.742l0.871,-2.032l1.163,-0.581l-0.289,-3.483l-1.163,-2.034l-0.871,-0.871l-1.165,0.291l-0.582,-3.776l-0.582,2.032z\",\n                        \"NA\" : \"M518.825,309.661l-2.036,-2.325l-1.163,-2.033l-0.579,-2.613l-0.584,-2.032l-1.161,-4.065l0.000,-3.485l-0.291,-1.452l-1.163,-1.162l-1.454,-2.034l-1.452,-3.483l-0.582,-1.743l-2.034,-2.613l-0.291,-2.033l1.452,-0.581l1.455,-0.581l1.743,0.292l1.745,1.161l0.581,-0.291l11.047,0.000l2.033,1.162l6.396,0.582l5.232,-1.162l2.326,-0.582l1.745,0.000l0.871,0.582l0.290,0.289l-1.743,0.582l-0.874,0.000l-1.744,1.162l-0.871,-1.162l-4.361,0.871l-2.033,0.291l0.000,9.582l-2.908,0.289l0.000,7.843l0.000,10.163l-2.326,1.451l-1.452,0.290l-1.744,-0.581l-1.162,-0.290l-0.582,-1.162l-1.163,-0.580l1.163,-1.453z\",\n                        \"NC\" : \"M930.142,289.042l2.325,1.452l1.452,1.454l-1.162,0.579l-1.453,-0.871l-2.036,-1.162l-1.744,-1.452l-1.742,-1.741l-0.582,-1.162l1.161,0.000l1.745,1.162l1.162,0.870l-0.874,-0.871z\",\n                        \"NCY\" : \"M563.881,134.267l0.289,0.000l0.291,-0.581l2.035,0.000l2.326,-0.871l-1.745,1.162l0.293,0.580l-0.293,0.000l-0.581,0.000l-0.581,0.000l-0.290,-0.290l-0.582,0.000l-0.582,0.290l0.580,0.290z\",\n                        \"NE\" : \"M479.583,198.151l0.291,-2.032l-3.198,-0.581l-0.291,-1.161l-1.453,-2.033l-0.292,-1.162l0.292,-1.161l1.744,-0.291l0.872,-0.870l3.778,-0.291l2.326,-0.580l0.291,-1.452l1.452,-2.034l0.000,-6.097l4.070,-1.453l7.849,-5.227l9.592,-5.226l4.361,1.161l1.452,1.452l2.036,-1.162l0.581,4.357l1.164,0.871l0.000,0.871l1.163,0.871l-0.581,1.162l-1.164,5.517l-0.292,3.484l-3.486,2.614l-1.165,3.775l1.165,0.871l0.000,1.742l1.742,0.291l-0.289,1.161l-0.582,0.291l-0.292,0.871l-0.289,0.000l-2.036,-2.904l-0.580,-0.291l-2.327,1.453l-2.033,-0.581l-1.455,-0.291l-0.872,0.291l-1.453,0.000l-1.743,1.161l-1.455,0.000l-3.196,-1.161l-1.452,0.581l-1.165,0.000l-1.163,-1.162l-2.617,-0.872l-3.195,0.291l-0.582,0.581l-0.292,1.452l-0.871,1.161l-0.291,2.324l-2.034,-1.453l-0.874,0.000l1.161,-0.871z\",\n                        \"NG\" : \"M497.023,217.898l-2.615,0.871l-1.164,0.000l-1.161,0.581l-2.037,0.000l-1.452,-1.743l-0.873,-2.032l-2.033,-1.742l-2.036,0.000l-2.615,0.000l0.289,-4.647l0.000,-1.741l0.581,-1.743l0.582,-0.871l1.454,-1.452l-0.291,-0.873l0.580,-1.160l-0.580,-1.453l0.000,-1.160l0.291,-2.324l0.871,-1.161l0.292,-1.452l0.582,-0.581l3.195,-0.291l2.617,0.872l1.163,1.162l1.165,0.000l1.452,-0.581l3.196,1.161l1.455,0.000l1.743,-1.161l1.453,0.000l0.872,-0.291l1.455,0.291l2.033,0.581l2.327,-1.453l0.580,0.291l2.036,2.904l0.289,0.000l1.163,0.871l-0.289,0.580l0.000,0.872l-2.326,2.323l-0.873,1.742l-0.289,1.452l-0.582,0.582l-0.581,1.742l-1.455,1.161l-0.581,1.452l-0.580,1.161l-0.291,1.162l-1.744,0.870l-1.746,-1.161l-0.871,0.000l-1.743,1.743l-0.872,0.000l-1.164,2.614l0.872,-2.032z\",\n                        \"NI\" : \"M237.734,200.475l-0.872,-0.871l-1.163,-1.162l-0.581,-0.871l-1.163,-0.871l-1.454,-1.162l0.291,-0.580l0.291,0.580l0.291,-0.290l0.872,0.000l0.291,-0.871l0.581,0.000l-0.290,-1.162l0.871,-0.291l0.582,0.291l0.581,-0.871l0.581,0.580l0.291,-0.289l0.581,-0.291l1.163,-0.871l0.000,-0.581l0.291,0.000l0.291,-0.580l0.291,0.000l0.290,0.290l0.582,0.000l0.581,-0.290l0.872,0.000l0.872,-0.291l0.291,-0.291l1.162,0.000l-0.291,0.291l-0.290,0.581l0.290,0.871l-0.582,1.162l-0.289,0.870l0.000,1.453l0.000,0.580l0.289,1.162l-0.580,0.290l-0.291,1.161l0.291,0.872l-0.581,0.581l0.000,0.871l0.581,0.290l-0.581,0.581l-0.872,0.000l-0.583,-0.581l-0.871,-0.290l-0.581,0.290l-1.745,-0.581l0.581,-0.291z\",\n                        \"NL\" : \"M490.628,83.74l2.035,0.000l0.581,1.161l-0.581,2.323l-0.871,1.162l-1.454,0.000l0.290,2.904l-1.452,-0.582l-1.745,-1.451l-2.617,0.580l-2.034,0.000l1.452,-0.870l2.618,-4.066l-3.778,1.161z\",\n                        \"NO\" : \"M551.381,35.246l8.43,2.032l-3.488,0.582l3.198,1.742l-4.942,1.161l-2.034,0.29l1.161-2.032l-3.486-1.162l-4.362,1.162l-1.452,2.032l-2.615,1.162l-2.907-0.581h-3.488l-3.198-1.452l-1.453,0.581l-1.744,0.29l-0.582,1.743l-5.231-0.291l-0.582,1.452h-2.615l-1.745,2.033l-2.906,2.903l-4.361,3.775l1.165,1.162l-0.873,0.872h-2.907l-1.744,2.613l0.29,3.775l1.743,1.162l-1.162,3.484l-2.033,1.742l-1.455,1.742l-1.742-1.742l-5.524,3.194l-3.488,0.582l-3.778-1.452l-1.163-2.905l-0.871-6.387l2.615-1.743l7.268-2.323l5.523-2.904l4.941-3.774l6.685-5.228l4.651-2.033l7.559-3.484l5.813-1.162h4.651l4.069-2.324l5.231,0.291L551.381,35.246zM541.79,16.951l-6.105,1.162l-4.941-0.87l2.036-0.582l-1.747-0.872l5.814-0.58l0.873,1.161L541.79,16.951zM524.058,11.724l9.01,2.033l-6.977,1.162l-1.452,2.032l-2.325,0.581l-1.455,2.324h-3.196l-6.104-1.743l2.615-0.87l-4.069-0.873l-5.523-2.323l-2.036-2.033l7.56-1.162l1.454,1.162l3.777-0.291l1.163-0.871h4.07L524.058,11.724zM543.823,9.692l5.522,1.161l-4.358,1.452l-7.849,0.29l-8.14-0.581l-0.582-0.58h-3.777l-3.199-1.453l8.722-0.58l3.778,0.58l2.906-0.871L543.823,9.692z\",\n                        \"NP\" : \"M716.198,154.304l0.000,1.161l0.291,1.742l-0.291,1.162l-2.326,0.000l-3.197,-0.581l-2.325,-0.290l-1.453,-1.452l-3.779,-0.291l-3.490,-1.742l-2.614,-1.161l-2.908,-1.162l1.163,-2.613l1.745,-1.161l1.162,-0.582l2.326,0.871l2.616,1.742l1.454,0.291l1.162,1.452l2.034,0.581l2.326,1.162l2.906,0.580l-3.198,-0.291z\",\n                        \"NZ\" : \"M949.907,343.345l0.873,1.161l1.745-1.161l0.87,1.161v1.161l-0.87,1.452l-2.036,2.033l-1.163,1.161l0.873,1.162h-2.034l-2.327,1.162l-0.871,1.74l-1.455,2.904l-2.323,1.161l-1.165,0.871l-2.615-0.289l-1.742-0.872h-3.198l-0.292-1.162l1.453-2.033l3.49-2.613l1.744-0.58l2.034-1.16l2.325-1.452l1.744-1.453l1.162-2.032l0.872-0.58l0.58-1.452l1.745-1.451L949.907,343.345zM954.559,330.277l1.743,2.904l0.292-1.743l1.16,0.58l0.293,2.324l2.324,0.872h1.745l1.743-0.872l1.453,0.289l-0.871,2.326l-0.873,1.74h-2.033l-0.582,0.581v1.452l-0.289,0.291l-1.165,1.452l-1.163,2.032l-2.325,1.161l-0.29-0.87l-1.162-0.291l1.452-2.322l-0.871-1.453l-2.907-1.16v-0.873l2.035-1.159l0.58-2.034l-0.289-1.743l-1.164-1.743l0.292-0.58l-1.454-1.161l-2.034-2.323l-1.162-2.032l0.87-0.291l1.455,1.453l2.325,0.87L954.559,330.277z\",\n                        \"OM\" : \"M635.678,172.888l-0.871,1.742h-1.163l-0.58,0.581l-0.582,1.452l0.29,1.742l-0.29,0.581l-1.163-0.29l-1.744,1.162l-0.291,1.452l-0.58,0.581h-1.743l-1.165,0.582v1.162l-1.163,0.581l-1.452-0.291l-2.034,1.162h-1.163l-0.873-1.743l-2.325-4.645l8.431-2.613l1.745-5.519l-1.165-2.032v-1.162l0.873-1.162v-1.161l1.162-0.581l-0.581-0.291l0.289-1.742h1.456l1.161,1.742l1.745,1.161l2.036,0.291l1.45,0.581l1.165,1.452l0.871,0.872l0.872,0.58v0.582l-0.872,1.451l-0.582,0.872L635.678,172.888zM628.995,159.82l-0.291,0.291l-0.583-0.871l0.874-0.872l0.289,0.291L628.995,159.82z\",\n                        \"PA\" : \"M259.244,211.219l-0.872,-0.871l-0.580,-1.452l0.872,-0.871l-0.872,-0.290l-0.582,-0.871l-1.163,-0.581l-1.162,0.000l-0.582,1.162l-1.162,0.580l-0.582,0.000l-0.291,0.581l1.163,1.451l-0.581,0.581l-0.582,0.291l-1.163,0.290l-0.581,-1.742l-0.291,0.291l-0.872,0.000l-0.581,-1.162l-1.163,-0.291l-0.580,-0.290l-1.164,0.000l-0.291,0.581l-0.290,-0.291l0.290,-0.580l0.291,-0.582l-0.291,-0.289l0.583,-0.581l-0.583,-0.291l0.000,-1.161l0.872,-0.291l1.163,1.162l0.000,0.581l0.872,0.000l0.291,-0.291l0.872,0.872l1.163,-0.291l1.163,-0.581l1.744,-0.579l0.872,-0.873l1.744,0.000l-0.291,0.291l1.745,0.291l1.163,0.291l0.871,0.870l0.872,0.870l-0.290,0.292l0.872,1.741l-0.582,0.871l-0.872,-0.289l0.582,-1.451z\",\n                        \"PE\" : \"M282.208,279.17l-0.872,1.451l-1.163,0.872l-2.905,-1.743l-0.292,-1.162l-5.232,-2.613l-4.942,-3.195l-2.325,-1.451l-1.163,-2.323l0.581,-0.871l-2.326,-3.485l-2.905,-5.227l-2.326,-5.517l-1.163,-1.161l-0.872,-2.033l-2.325,-1.743l-1.745,-1.161l0.872,-1.162l-1.453,-2.613l0.872,-2.033l2.326,-1.742l0.291,1.160l-0.873,0.582l0.000,1.162l1.163,-0.290l1.163,0.290l1.162,1.451l1.454,-1.162l0.582,-1.742l1.744,-2.613l3.196,-0.871l3.198,-2.904l0.872,-1.741l-0.581,-2.324l0.872,-0.291l1.744,1.452l0.872,1.163l1.163,0.870l1.744,2.903l2.035,0.291l1.453,-0.870l1.164,0.579l1.452,-0.290l2.326,1.452l-1.744,2.613l0.582,0.290l1.452,1.454l-2.324,-0.290l-0.583,0.580l-2.033,0.289l-3.198,2.034l-0.291,1.161l-0.581,1.162l0.290,1.451l-1.744,0.581l0.000,1.162l-0.872,0.581l1.163,2.614l1.744,1.451l-0.581,1.451l1.744,0.000l0.872,1.453l2.616,0.000l2.326,-1.453l-0.292,4.066l1.163,0.292l1.744,-0.292l2.326,4.355l-0.582,0.873l-0.290,2.033l0.000,2.323l-1.163,1.452l0.582,0.872l-0.582,0.869l1.163,2.324l1.745,-2.904z\",\n                        \"PG\" : \"M902.817,249.55l-0.873,0.29l-1.163-0.871l-1.162-1.742l-0.581-2.032l0.581-0.289l0.29,0.579l0.583,0.872l1.452,1.741l1.163,0.871L902.817,249.55zM892.063,246.065l-1.455,0.292l-0.29,0.58l-1.454,0.871l-1.452,0.582h-1.452l-2.328-0.872l-1.453-0.872v-0.871l2.616,0.582l1.454-0.292l0.289-1.159l0.582-0.293l0.292,1.452h1.452l0.873-1.159l1.452-0.873l-0.289-1.741h1.741l0.584,0.58l-0.291,1.452L892.063,246.065zM878.982,251.292l2.326,1.742l1.741,2.904h1.745v1.16l2.035,0.582l-0.87,0.291l2.904,1.16l-0.29,0.871l-1.744,0.292l-0.87-0.872l-2.328-0.291l-2.616-0.29l-2.325-1.743l-1.452-1.451l-1.454-2.613l-3.488-1.161l-2.326,0.871l-1.744,0.871l0.292,2.032l-2.034,0.871l-1.744-0.29l-2.617-0.29l-0.29-9.002v-8.712l4.94,1.742l4.941,1.451l2.036,1.453l1.452,1.452l0.292,1.741l4.649,1.743l0.583,1.451l-2.328,0.291L878.982,251.292zM895.259,243.451l-0.873,0.582l-0.582-1.741l-0.579-0.873l-1.162-0.87l-1.455-1.162l-2.034-0.871l0.579-0.58l1.455,0.58l1.163,0.581l1.163,0.871l0.87,1.161l1.165,0.871L895.259,243.451z\",\n                        \"PH\" : \"M821.715,207.735l0.292,2.033v1.451l-0.872,2.322l-0.871-2.612l-1.454,1.452l0.871,2.033l-0.871,1.16l-3.199-1.452l-0.581-2.032l0.874-1.452l-1.745-1.161l-0.873,1.161l-1.452-0.29l-2.034,1.742l-0.292-0.871l0.871-2.323l1.744-0.871l1.455-0.872l1.163,1.162l2.035-0.87l0.29-1.162h2.033v-2.323l2.036,1.453l0.29,1.451L821.715,207.735zM815.03,202.798l-0.871,0.87l-0.873,1.744l-0.871,0.579l-1.744-1.741l0.582-0.871l0.581-0.581l0.289-1.743l1.455-0.29l-0.292,2.033l2.036-2.614L815.03,202.798zM799.916,205.413l-3.488,2.612l1.163-2.033l2.034-1.741l1.743-1.744l1.454-2.902l0.291,2.322l-1.745,1.453L799.916,205.413zM809.216,198.151l1.743,0.872h1.745v1.161l-1.452,1.162l-1.745,0.871v-1.162l0.292-1.451L809.216,198.151zM819.099,197.571l0.874,2.904l-2.036-0.582v0.872l0.581,1.741l-1.162,0.582l-0.29-2.033h-0.584l-0.578-1.742l1.743,0.291v-1.162l-1.743-2.033h2.614L819.099,197.571zM808.344,194.958l-0.873,2.323l-1.161-1.162l-1.454-2.323l2.615,0.291L808.344,194.958zM807.764,180.148l1.743,0.581l0.871-0.581v0.581l-0.289,1.162l0.87,2.033l-0.581,2.324l-1.744,0.87l-0.29,2.323l0.582,2.033l1.452,0.29l1.165-0.29l3.486,1.451l-0.289,1.743l0.87,0.581l-0.289,1.161l-2.036-1.161l-1.163-1.452l-0.579,0.871l-1.744-1.743l-2.617,0.581l-1.454-0.581l0.291-1.162l0.873-0.871l-0.873-0.58l-0.291,1.162l-1.453-1.743l-0.29-1.161l-0.291-2.613l1.162,0.871l0.292-4.355l0.871-2.324H807.764z\",\n                        \"PK\" : \"M680.735,128.75l2.036,1.451l0.870,2.033l4.361,1.162l-2.617,2.323l-3.196,0.290l-4.069,-0.581l-1.453,1.162l1.160,2.324l0.874,2.032l2.325,1.161l-2.325,1.743l0.000,2.032l-2.618,2.614l-1.745,2.904l-2.904,2.904l-3.199,-0.291l-3.197,2.904l1.745,1.162l0.579,2.032l1.455,1.451l0.583,2.324l-6.106,0.000l-1.745,2.033l-2.033,-0.871l-0.873,-2.033l-2.034,-2.033l-5.234,0.580l-4.360,0.000l-4.068,0.291l1.161,-3.193l4.070,-1.162l-0.290,-1.452l-1.453,-0.291l0.000,-2.613l-2.617,-1.162l-1.162,-1.742l-1.453,-1.452l4.649,1.452l2.907,-0.291l1.455,0.291l0.581,-0.580l2.035,0.289l3.488,-1.161l0.291,-2.323l1.452,-1.742l2.034,0.000l0.292,-0.581l2.036,-0.290l1.160,0.000l0.875,-0.580l0.000,-1.743l1.162,-1.743l1.742,-0.580l-1.161,-1.743l2.616,0.000l0.872,-0.871l-0.289,-1.162l1.450,-1.161l-0.289,-1.452l-0.581,-1.162l1.454,-1.161l3.197,-0.580l2.907,-0.291l1.454,-0.581l-1.743,0.290z\",\n                        \"PL\" : \"M515.047,90.418l-1.165,-1.742l0.292,-0.870l-0.581,-1.452l-1.163,-1.162l0.872,-0.581l-0.583,-1.452l1.744,-0.870l4.362,-1.163l3.489,-1.161l2.614,0.581l0.291,0.580l2.617,0.291l3.489,0.290l4.940,-0.290l1.454,0.290l0.582,0.872l0.289,1.452l0.582,0.870l0.000,1.161l-1.453,0.582l0.871,1.162l0.000,1.161l1.455,2.614l-0.292,0.580l-1.452,0.580l-2.617,2.033l0.872,1.452l-0.582,-0.289l-2.616,-1.163l-2.033,0.582l-1.455,-0.291l-1.453,0.581l-1.455,-1.163l-1.160,0.582l0.000,-0.291l-1.454,-1.161l-2.034,-0.290l-0.290,-0.872l-1.746,-0.290l-0.581,0.580l-1.454,-0.580l0.293,-0.580l-2.036,-0.291l1.453,0.872z\",\n                        \"PR\" : \"M291.219,180.148l1.455,0.000l0.581,0.581l-0.872,0.871l-2.035,0.000l-1.453,0.000l-0.291,-1.162l0.582,-0.290l-2.033,0.000z\",\n                        \"PS\" : \"M571.728,141.816l0.000,1.743l-0.581,0.871l-1.160,0.291l0.000,-0.581l0.871,-0.581l-0.871,-0.289l0.578,-1.743l-1.163,-0.289z\",\n                        \"PT\" : \"M448.769,115.683l1.163,-0.581l1.163,-0.291l0.581,1.162l1.744,0.000l0.291,-0.290l1.746,0.000l0.581,1.452l-1.163,0.870l0.000,2.033l-0.582,0.291l0.000,1.451l-1.162,0.291l1.162,1.452l-0.873,2.032l0.873,0.581l-0.291,0.871l-0.871,0.871l0.000,1.162l-0.874,0.581l-1.452,-0.290l-1.454,0.290l0.292,-2.324l-0.292,-1.451l-1.163,-0.291l-0.581,-1.162l0.291,-1.742l0.871,-1.160l0.292,-0.873l0.582,-1.741l0.000,-1.162l-0.582,-0.871l0.292,1.161z\",\n                        \"PY\" : \"M301.103,292.237l1.163,-3.485l0.000,-1.451l1.453,-2.324l4.652,-0.871l2.616,0.000l2.615,1.451l0.000,0.871l0.872,1.452l-0.291,3.776l2.907,0.581l1.163,-0.581l2.035,0.871l0.291,0.581l0.291,2.613l0.290,1.162l1.163,0.000l0.872,-0.290l1.163,0.290l0.000,1.741l-0.292,1.454l-0.580,1.742l-0.582,2.322l-2.325,2.032l-2.326,0.581l-3.197,-0.581l-2.617,-0.580l2.617,-4.354l-0.291,-1.162l-2.906,-1.161l-3.198,-2.034l-2.326,-0.290l5.232,4.356z\",\n                        \"QA\" : \"M613.587,162.725l0.000,-1.743l0.582,-1.452l0.873,-0.290l0.871,0.871l0.000,1.451l-0.581,1.744l-0.872,0.000l0.873,0.581z\",\n                        \"RO\" : \"M536.265,99.13l1.163,-0.581l1.744,0.581l1.745,0.000l1.163,0.581l1.162,-0.581l2.036,-0.291l0.579,-0.580l1.163,0.000l0.873,0.290l0.871,0.872l0.873,1.162l1.453,1.742l0.291,1.161l-0.291,1.161l0.291,1.163l1.452,0.580l1.166,-0.580l1.161,0.580l0.289,0.581l-1.450,0.581l-0.874,0.000l-0.872,3.194l-1.454,-0.290l-2.035,-0.872l-3.196,0.581l-1.452,0.581l-4.071,0.000l-2.035,-0.581l-1.164,0.291l-0.581,-1.162l-0.581,-0.581l0.581,-0.291l-0.581,-0.289l-0.871,0.580l-1.745,-0.872l-0.289,-1.161l-1.454,-0.580l-0.293,-0.872l-1.741,-1.161l2.325,-0.581l1.742,-1.741l1.164,-2.034l-1.743,0.581z\",\n                        \"RS\" : \"M531.325,106.1l1.454,0.580l0.289,1.161l1.745,0.872l0.871,-0.580l0.581,0.289l-0.581,0.291l0.581,0.581l-0.871,0.581l0.290,1.161l1.454,1.162l-1.164,0.871l-0.580,0.871l0.290,0.289l-0.290,0.292l-1.165,0.000l-1.161,0.290l0.000,-0.290l0.290,-0.292l0.292,-0.580l-0.292,0.000l-0.579,-0.580l-0.583,0.000l-0.290,-0.581l-0.581,-0.290l-0.293,-0.291l-0.581,0.291l-0.289,0.871l-0.582,0.000l0.290,0.000l-1.162,-0.581l-0.872,-0.290l-0.290,-0.581l-0.873,-0.290l0.581,-0.291l0.582,-1.161l-1.455,-1.162l0.581,-1.161l-0.871,0.000l1.163,-0.872l-0.873,-0.870l-0.871,-1.163l2.326,-0.580l1.455,0.000l1.741,1.161l-0.293,-0.872z\",\n                        \"RU\" : \"M869.098,91.29l2.907,4.936l-4.07-0.87l-1.743,4.065l2.614,2.613v2.033l-2.034-1.743l-1.743,2.323l-0.582-2.323l0.292-2.904l-0.292-2.904l0.582-2.033v-3.775l-1.454-2.613l0.291-3.774l2.326-1.162l-0.872-1.452l1.163-0.29l0.58,1.742l1.162,2.614l-0.29,2.903L869.098,91.29zM536.265,81.417l-4.94,0.29l-3.488-0.29l0.58-1.452l3.779-0.872l2.906,0.581l1.454,0.291l-0.582,0.871L536.265,81.417zM969.382,36.116l-3.196,0.291l-0.581-0.871l3.777-1.162h-0.01l0.58-0.29h2.326l3.779,0.872v0.29l-2.907,0.871h-3.778H969.382zM869.098,29.728h-4.069l-5.814-0.29l-0.582-0.29l2.618-1.162h3.488l4.067,0.872L869.098,29.728zM888.574,24.501l-3.198,1.162l-4.36-0.291l-4.942-1.16l0.582-0.873l5.232,0.291L888.574,24.501zM873.167,23.049l-2.324,2.033h-9.884l-4.651,0.58l-5.521-1.742l1.454-1.742l3.778-0.582h7.266L873.167,23.049zM632.19,36.407l-1.743,0.291l-9.012-0.291l-0.581-1.161l-4.941-0.872l-0.581-1.452l2.907-0.582V30.89l5.232-2.323l-2.325-0.291l6.393-2.613l-0.578-1.162l6.104-1.452l9.011-1.742l9.3-0.581l4.653-0.871l5.23-0.581l2.036,1.162l-1.745,0.871l-9.883,1.452l-8.43,1.162l-8.43,2.613l-4.069,2.614l-4.361,2.904l0.584,2.033L632.19,36.407zM969.382,52.379h-0.291l-3.486,1.161l-3.488-0.29l2.615,1.452l1.454,2.323l1.455,0.58l0.289,1.162l-0.873,0.872l-4.94-0.582l-7.849,2.033l-2.325,0.291l-4.362,2.033l-4.069,1.742l-0.871,1.161l-4.069-2.033l-6.977,2.324l-1.452-1.162l-2.618,1.162l-3.488-0.291l-0.871,1.742l-3.486,2.613l0.29,1.162l2.906,0.582l-0.291,4.064h-2.615l-1.163,2.324l1.163,1.161l-4.651,1.452l-1.163,3.194l-4.07,0.582l-0.87,2.903l-3.781,2.613l-1.162-2.032l-1.163-3.775l-1.454-6.389l1.164-3.775l2.324-1.453l0.291-1.451l4.36-0.581l4.942-3.484l4.649-2.904l4.943-2.033l2.326-3.775h-3.489l-1.744,2.324l-6.977,3.194l-2.034-3.485l-7.269,0.872l-6.975,4.646l2.325,1.742l-6.105,0.58l-4.359,0.291l0.291-2.032l-4.358-0.292l-3.199,1.453l-8.431-0.581l-9.01,0.871l-9.013,5.227l-10.463,6.679l4.357,0.29l1.165,1.743l2.615,0.581l1.744-1.452l3.196,0.291l3.78,2.904l0.29,2.323l-2.326,2.904v3.194l-1.452,4.356l-4.07,4.066l-0.87,1.741l-3.781,3.194l-3.777,3.194l-1.744,1.742l-3.488,1.452l-1.744,0.291l-1.744-1.453l-3.78,2.033l-0.579,0.871l-0.292-0.582v-1.161l1.454-0.291l0.29-3.194l-0.581-2.324l2.325-0.871l3.198,0.291l2.034-2.613l0.871-2.904l1.163-1.162l1.454-2.323l-4.651,0.871l-2.325,0.872h-4.361l-0.871-2.614l-3.488-1.742l-4.651-0.871l-1.16-2.904l-0.874-1.453l-0.871-1.161l-1.744-2.903l-2.617-1.162l-4.067-0.58h-3.491l-3.486,0.58l-2.325,1.162l1.452,0.871v1.452l-1.452,0.872l-2.328,2.903v1.162l-4.068,1.742l-3.197-1.162l-3.197,0.291l-1.452-0.871l-1.745-0.291l-4.069,2.033l-3.488,0.291l-2.616,0.872l-3.49-0.581h-2.615l-1.743-1.453l-2.615-1.162l-2.618-0.291l-3.486,0.291l-2.617,0.582l-4.069-1.162l-0.29-2.324l-3.488-0.58l-2.326-0.29l-3.196-1.162l-2.907,2.903l1.163,1.453l-2.617,2.033l-4.07-0.581l-2.617-0.29l-1.741-1.162h-2.908l-2.616-0.871l-4.068,1.161l-5.232,2.324l-2.907,0.582l-1.163,0.29l-1.454-1.742l-3.488,0.291l-1.163-1.162l-2.034-0.582l-1.16-1.452l-1.455-0.581l-4.069,0.872l-3.78-1.742l-1.453,1.451l-6.104-6.968l-3.488-2.033l0.871-0.871l-6.975,2.613h-2.617l0.29-1.451l-3.488-0.872l-2.906,0.581l-0.872-2.904l-4.941-0.581l-2.326,1.161l-6.977,1.162l-1.454,0.582l-10.172,0.872l-1.454,1.161l2.036,1.743l-2.617,0.87l0.581,0.581l-2.617,1.452l4.361,1.742l-0.581,1.453l-3.78-0.291l-0.871,0.872l-3.488-1.452l-4.36,0.29l-2.906,1.162l-3.488-1.162l-5.812-2.032h-4.361l-5.814,3.194l-0.289,2.033l-2.906-1.742l-2.036,3.195l0.58,0.29l-1.452,2.324l2.326,1.742h2.034l1.743,1.741l-0.289,1.453l1.452,0.581l-1.163,1.452l-2.906,0.581l-2.615,2.614l2.615,2.613l-0.289,2.032l2.906,3.194l-1.744,1.162l-0.29,0.581h-1.165l-2.033-1.743h-0.873l-1.745-0.871l-0.581-1.162l-2.614-0.58l-1.745,0.58l-0.581-0.58l-3.78-1.162l-3.778-0.581l-2.325-0.581l-0.581,0.581l-3.488-2.323l-3.197-1.161l-2.326-1.743l2.034-0.29l2.328-2.324l-1.455-1.162l4.07-1.162l-0.292-0.581l-2.323,0.581v-1.161l1.452-0.871l2.615-0.291l0.582-0.871l-0.582-1.452l1.163-1.451l-0.29-0.873l-4.07-0.871h-1.454l-1.744-1.162l-2.034,0.291l-3.488-0.871V91.29l-0.871-1.162h-2.327l-0.29-0.871l0.873-0.581l-1.744-1.742l-2.906,0.29h-0.872l-0.584,0.582h-1.16l-0.583-2.033l-0.871-0.872l0.581-0.291l2.326,0.291l1.163-0.58l-0.872-0.872l-2.036-0.581l0.292-0.29l-1.163-0.581l-1.743-1.742l0.578-0.871l-0.289-1.162l-2.615-0.581l-1.454,0.291l-0.29-0.872l-2.907-0.581l-0.871-1.742l-0.291-1.161l-1.455-0.582l1.163-0.871l-0.582-2.613l1.745-1.742l-0.291-0.291l3.199-1.742l-2.908-1.162l5.813-3.485l2.617-1.742l0.871-1.162l-4.069-2.032l1.162-1.742l-2.325-2.033l1.744-2.324l-3.198-3.194l2.617-2.033l-4.362-1.743l0.584-2.033l2.034-0.29l4.942-1.161l2.615-0.872l4.651,1.743l7.557,0.58l10.465,3.195l2.035,1.162v1.741l-2.906,1.453l-4.651,0.871l-12.21-2.033l-2.033,0.291l4.651,2.033v1.161l0.292,2.904l3.486,0.872l2.036,0.58l0.581-1.161l-1.746-1.162l1.746-1.162l6.685,1.742l2.326-0.581l-1.745-2.033l6.396-2.903l2.323,0.29l2.617,0.871l1.745-1.742l-2.326-1.742l1.163-1.742l-2.034-1.452l7.848,0.872l1.453,1.452l-3.489,0.289v1.453l2.326,1.162l4.361-0.582l0.581-2.033l5.812-1.161l9.594-2.323h2.034l-2.907,1.742l3.488,0.29l2.034-0.871h5.232l4.069-1.161l3.197,1.452l2.906-1.742l-2.906-1.453l1.454-1.162l8.14,0.872l3.778,0.871l10.176,3.194l1.742-1.452l-2.907-1.452v-0.581l-3.197-0.291l0.874-1.162l-1.455-2.323v-0.871l4.943-2.323l1.742-2.613l2.035-0.582l7.268,0.872l0.581,1.451l-2.615,2.324l1.743,0.871l0.872,1.742l-0.581,3.775l3.198,1.743l-1.165,1.742l-5.521,4.066l3.197,0.29l1.161-0.871l2.907-0.872l0.874-1.161l2.325-1.453l-1.744-1.452l1.454-1.742l-3.198-0.291l-0.582-1.451l2.326-2.904l-3.778-2.324l4.94-1.741l-0.581-2.033h1.453l1.454,1.452l-1.163,2.613l2.907,0.581l-1.162-2.033l4.65-0.872l5.522-0.29l5.232,1.451l-2.617-2.032l-0.29-3.195l4.94-0.291h6.688l5.812-0.29l-2.324-1.451l3.197-1.743l3.197-0.29l5.521-1.162l7.27-0.58l0.872-0.582l7.268-0.291l2.325,0.582l6.104-1.452h4.94l0.873-1.161l2.615-1.162l6.396-1.161l4.651,0.87l-3.489,0.872l6.104,0.291l0.874,1.452l2.324-0.871h8.141l6.104,1.452l2.325,1.162l-0.873,1.451l-2.907,0.581l-7.267,1.743l-2.036,0.581l3.49,0.58l4.068,0.581l2.326-0.581l1.452,1.743l1.165-0.581l4.359-0.582l9.013,0.582l0.579,1.161l11.628,0.582v-2.033l5.814,0.291h4.359l4.651,1.451l1.163,1.742l-1.745,1.162l3.488,2.323l4.36,1.161l2.615-2.904l4.653,1.162l4.65-0.871l5.233,0.871l2.034-0.581l4.648,0.29l-2.033-2.614l3.488-1.161l24.998,1.741l2.327,1.743l7.267,2.032l11.045-0.581l5.524,0.581l2.324,1.162l-0.58,2.033l3.486,0.581l3.78-0.581h4.941l4.94,0.581l5.234-0.29l4.938,2.323l3.488-0.872l-2.322-1.742l1.162-1.162l8.721,0.872l5.812-0.292l7.848,1.453l4.069,1.162h-0.01l6.976,2.033l6.977,2.614v1.742l1.744,0.871l-0.581-2.033l7.559,0.291l5.231,2.613l-2.616,1.162l-4.651,0.29v2.613l-1.161,0.581h-2.617l-2.034-0.871l-3.779-0.871l-0.582-1.162l-2.615-0.58l-3.199,0.58l-1.452-1.162l0.581-0.872l-3.198,0.582l1.165,1.452l-1.745,1.162H969.382zM762.998,15.499l-15.406,1.162l4.94-3.484l2.328-0.291h2.034l6.977,1.742L762.998,15.499zM614.46,9.401l-3.488,0.291l-2.617,0.29l-0.289,0.581l-3.199,0.291l-3.197-0.581l1.743-0.871h-6.104l5.233-0.581h4.359l0.291,0.581l1.744-0.581l2.618-0.291l4.067,0.581L614.46,9.401zM748.754,14.047l-5.812,0.29l-7.85-0.87l-4.359-0.872l-2.325-2.033l-3.779-0.581l7.268-1.742L738,7.369l5.232,1.452l6.396,2.614L748.754,14.047z\",\n                        \"RW\" : \"M557.485,234.16l1.163,1.452l-0.289,1.741l-0.582,0.291l-1.454,-0.291l-0.874,1.743l-1.743,-0.290l0.293,-1.453l0.290,-0.290l0.000,-1.742l0.871,-0.580l0.582,0.290l-1.743,0.871z\",\n                        \"SA\" : \"M591.496,185.956l-0.291,-1.162l-0.873,-0.871l-0.290,-1.162l-1.453,-0.871l-1.454,-2.323l-0.582,-2.322l-2.034,-1.744l-1.163,-0.580l-1.743,-2.613l-0.292,-1.744l0.000,-1.741l-1.453,-2.904l-1.454,-1.162l-1.453,-0.580l-0.871,-1.452l0.000,-0.872l-0.581,-1.451l-0.874,-0.582l-1.162,-2.032l-1.452,-2.033l-1.456,-2.033l-1.452,0.000l0.290,-1.451l0.292,-0.871l0.292,-1.162l3.196,0.291l1.161,-0.582l0.581,-1.161l2.036,-0.290l0.581,-0.871l0.872,-0.581l-2.905,-2.614l5.522,-1.451l0.582,-0.582l3.488,0.873l4.067,2.032l7.561,5.517l5.230,0.000l2.326,0.290l0.873,1.452l1.743,0.000l1.165,2.323l1.452,0.581l0.289,0.871l2.036,1.162l0.290,1.162l-0.290,0.870l0.290,0.872l0.584,0.871l0.578,0.871l0.292,0.581l0.873,0.581l0.872,0.000l0.290,0.871l0.291,0.871l0.872,2.613l8.430,1.452l0.580,-0.580l1.165,2.031l-1.745,5.519l-8.430,2.613l-7.849,1.162l-2.615,1.161l-2.036,2.904l-1.163,0.291l-0.580,-0.873l-1.164,0.292l-2.615,-0.292l-0.582,-0.289l-3.197,0.000l-0.582,0.289l-1.161,-0.869l-0.873,1.451l0.289,1.161l1.161,-0.872z\",\n                        \"SB\" : \"M919.968,259.712l0.871,0.873h-2.034l-0.873-1.453l1.452,0.58H919.968zM916.48,257.972l-0.874,0.289l-1.743-0.289l-0.58-0.582v-1.161l2.034,0.581l0.873,0.58L916.48,257.972zM918.805,257.39l-0.291,0.582l-2.034-2.613l-0.582-1.453h0.871l0.873,2.033L918.805,257.39zM913.863,253.906v0.581l-2.034-1.161l-1.454-1.162l-1.161-0.871l0.579-0.29l1.164,0.871l2.326,1.161L913.863,253.906zM907.468,251.002l-0.581,0.29l-1.162-0.58l-1.163-1.162v-0.581l1.744,1.162L907.468,251.002z\",\n                        \"SD\" : \"M567.37,204.831l-0.582,0.000l0.000,-1.452l-0.292,-0.873l-1.453,-1.160l-0.292,-1.742l0.292,-2.033l-1.162,-0.291l-0.293,0.582l-1.452,0.289l0.582,0.582l0.291,1.742l-1.454,1.451l-1.453,2.033l-1.454,0.291l-2.325,-1.744l-1.163,0.582l0.000,0.871l-1.454,0.581l-0.290,0.582l-2.617,0.000l-0.289,-0.582l-2.035,0.000l-1.164,0.291l-0.581,-0.291l-1.452,-1.452l-0.584,-0.871l-2.033,0.581l-0.581,1.161l-0.872,2.324l-0.874,0.581l-0.872,0.289l-0.290,0.000l-0.871,-0.870l0.000,-0.870l0.289,-1.163l0.000,-1.162l-1.452,-1.742l-0.292,-1.162l0.000,-0.580l-1.162,-0.871l0.000,-1.453l-0.582,-1.161l-0.873,0.290l0.293,-1.161l0.580,-1.162l-0.289,-1.162l0.871,-0.870l-0.582,-0.581l0.872,-1.743l1.164,-2.032l2.324,0.291l0.000,-11.036l0.000,-0.870l3.199,-0.291l0.000,-5.228l11.045,0.000l10.755,0.000l10.755,0.000l0.874,2.615l-0.581,0.580l0.289,2.614l1.163,3.485l1.164,0.580l1.454,0.872l-1.454,1.742l-2.035,0.289l-0.874,0.873l-0.291,2.033l-1.161,4.065l0.290,0.870l-0.581,2.323l-0.872,2.904l-1.743,1.162l-1.163,2.322l-0.292,1.162l-1.454,0.582l-0.579,2.903l0.000,-0.291z\",\n                        \"SE\" : \"M534.813,50.346l-2.617,1.742l0.291,1.742l-4.362,2.324l-5.230,2.323l-2.036,3.774l2.036,2.033l2.615,1.452l-2.615,3.194l-2.907,0.581l-0.873,4.647l-1.744,2.613l-3.197,-0.291l-1.455,2.033l-3.196,0.291l-0.874,-2.614l-2.323,-3.194l-2.327,-3.776l1.455,-1.742l2.033,-1.742l1.162,-3.485l-1.743,-1.162l-0.290,-3.775l1.744,-2.612l2.907,0.000l0.873,-0.872l-1.165,-1.162l4.361,-3.774l2.907,-2.904l1.745,-2.033l2.615,0.000l0.582,-1.452l5.232,0.290l0.582,-1.742l1.744,-0.290l3.486,1.452l4.361,2.033l0.000,4.065l0.872,1.162l4.649,-0.871z\",\n                        \"SI\" : \"M511.848,102.905l2.326,0.291l1.162,-0.582l2.616,0.000l0.291,-0.580l0.582,0.000l0.582,1.162l-2.325,0.580l-0.293,1.162l-0.871,0.290l0.000,0.582l-1.163,0.000l-0.873,-0.291l-0.580,0.291l-1.743,0.000l0.581,-0.291l-0.581,-1.162l-0.289,1.452z\",\n                        \"SK\" : \"M525.802,94.774l0.000,0.291l1.160,-0.582l1.455,1.163l1.453,-0.581l1.455,0.291l2.033,-0.582l2.616,1.163l-0.872,0.870l-0.580,0.872l-0.582,0.290l-2.908,-0.872l-0.870,0.291l-0.582,0.581l-1.455,0.290l-0.289,0.000l-1.163,0.290l-1.163,0.290l-0.291,0.291l-2.324,0.581l-0.871,-0.290l-1.454,-0.872l-0.292,-0.870l0.292,-0.291l0.289,-0.581l1.165,0.000l0.871,-0.290l0.290,-0.291l0.289,-0.289l0.292,-0.581l0.582,0.000l0.580,-0.582l-0.874,0.000z\",\n                        \"SL\" : \"M442.376,212.381l-0.873,-0.291l-2.034,-1.161l-1.455,-1.452l-0.289,-0.871l-0.292,-2.033l1.455,-1.451l0.289,-0.582l0.292,-0.581l0.871,0.000l0.581,-0.580l2.326,0.000l0.582,0.871l0.581,1.163l0.000,0.870l0.582,0.581l0.000,1.161l0.581,-0.290l-1.163,1.451l-1.454,1.452l0.000,0.871l0.580,-0.872z\",\n                        \"SN\" : \"M427.84,193.505l-1.162,-2.032l-1.454,-1.161l1.164,-0.291l1.452,-2.032l0.582,-1.452l0.871,-0.872l1.456,0.291l1.452,-0.581l1.454,0.000l1.163,0.872l2.034,0.580l1.454,2.033l2.034,1.742l0.000,1.742l0.581,1.742l1.162,0.581l0.000,1.162l0.000,0.871l-0.289,0.290l-1.744,-0.290l0.000,0.290l-0.581,0.000l-2.036,-0.581l-1.453,0.000l-4.942,-0.290l-0.871,0.290l-0.874,0.000l-1.453,0.581l-0.291,-2.323l2.327,0.291l0.580,-0.581l0.582,0.000l1.163,-0.581l1.163,0.581l1.162,0.000l1.163,-0.581l-0.582,-0.872l-0.870,0.581l-0.873,0.000l-1.163,-0.581l-0.871,0.000l-0.581,0.581l2.909,0.000z\",\n                        \"SO\" : \"M610.681,199.023l1.452,-0.290l1.162,-0.871l1.165,0.000l0.000,0.871l-0.291,1.451l0.000,1.453l-0.582,1.161l-0.581,2.904l-1.452,2.904l-1.747,3.484l-2.323,4.066l-2.326,3.194l-3.199,3.775l-2.907,2.323l-4.068,2.613l-2.616,2.033l-2.908,3.486l-0.582,1.451l-0.580,0.581l-1.745,-2.323l0.000,-9.873l2.325,-3.196l0.874,-0.870l1.744,0.000l2.324,-2.033l3.780,0.000l7.850,-8.421l1.742,-2.323l1.163,-1.742l0.000,-1.452l0.000,-2.614l0.000,-1.161l0.290,0.000l0.873,0.000l-1.163,0.581z\",\n                        \"SOL\" : \"M608.355,204.831l-1.163,1.742l-1.742,2.323l-2.328,0.000l-9.010,-3.194l-1.163,-0.871l-0.873,-1.452l-1.163,-1.453l0.583,-1.161l1.161,-1.452l0.873,0.580l0.582,1.162l1.163,1.162l1.163,0.000l2.614,-0.580l3.199,-0.582l2.327,-0.580l1.452,-0.291l0.871,-0.580l1.744,0.000l-0.290,0.000l0.000,1.161l0.000,2.614l0.000,-1.452z\",\n                        \"SR\" : \"M316.509,214.415l3.198,0.580l0.290,-0.291l2.326,-0.289l2.907,0.580l-1.453,2.612l0.289,1.743l1.164,1.742l-0.582,1.161l-0.290,1.163l-0.581,1.162l-1.745,-0.581l-1.162,0.289l-1.163,-0.289l-0.291,0.870l0.581,0.581l-0.290,0.581l-1.454,-0.291l-1.744,-2.322l-0.291,-1.744l-0.872,0.000l-1.453,-2.032l0.581,-1.161l0.000,-0.872l1.453,-0.579l-0.582,2.613z\",\n                        \"SS\" : \"M567.37,204.831l0.000,2.322l-0.582,0.872l-1.455,0.000l-0.872,1.452l1.746,0.291l1.452,1.161l0.290,1.161l1.454,0.580l1.455,3.196l-1.745,1.741l-1.743,1.743l-1.745,1.162l-1.744,0.000l-2.326,0.580l-1.744,-0.580l-1.163,0.870l-2.325,-2.032l-0.874,-1.162l-1.450,0.581l-1.166,0.000l-0.873,0.291l-1.161,-0.291l-1.743,-2.323l-0.292,-0.871l-2.034,-0.871l-0.873,-1.743l-1.163,-1.161l-1.743,-1.452l0.000,-0.871l-1.452,-1.162l-2.037,-1.162l0.872,-0.289l0.874,-0.581l0.872,-2.324l0.581,-1.161l2.033,-0.581l0.584,0.871l1.452,1.452l0.581,0.291l1.164,-0.291l2.035,0.000l0.289,0.582l2.617,0.000l0.290,-0.582l1.454,-0.581l0.000,-0.871l1.163,-0.582l2.325,1.744l1.454,-0.291l1.453,-2.033l1.454,-1.451l-0.291,-1.742l-0.582,-0.582l1.452,-0.289l0.293,-0.582l1.162,0.291l-0.292,2.033l0.292,1.742l1.453,1.160l0.292,0.873l0.000,1.452l-0.582,0.000z\",\n                        \"SV\" : \"M232.211,194.086l-0.291,0.581l-1.743,0.000l-0.872,-0.290l-1.164,-0.581l-1.452,0.000l-0.873,-0.581l0.000,-0.580l0.873,-0.581l0.580,-0.291l0.000,-0.290l0.581,-0.291l0.873,0.291l0.582,0.581l0.872,0.581l0.000,0.289l1.161,-0.289l0.582,0.000l0.291,0.289l0.000,-1.162z\",\n                        \"SY\" : \"M580.45,139.204l-5.234,2.903l-3.195,-1.161l0.289,-0.290l0.000,-1.162l0.873,-1.452l1.452,-1.161l-0.581,-1.162l-1.163,0.000l-0.290,-2.033l0.582,-1.161l0.871,-0.582l0.581,-0.580l0.290,-1.742l0.873,0.580l2.907,-0.870l1.454,0.581l2.327,0.000l3.196,-0.872l1.453,0.000l3.197,-0.581l-1.454,1.742l-1.454,0.872l0.292,2.032l-1.163,3.195l6.103,-2.904z\",\n                        \"SZ\" : \"M562.136,304.433l-0.581,1.161l-1.744,0.290l-1.452,-1.451l-0.292,-0.871l0.870,-1.161l0.293,-0.581l0.872,-0.290l1.163,0.580l0.580,1.161l-0.291,-1.162z\",\n                        \"TD\" : \"M513.593,195.538l0.289,-1.161l-1.742,-0.291l0.000,-1.742l-1.165,-0.871l1.165,-3.775l3.486,-2.614l0.292,-3.484l1.164,-5.517l0.581,-1.162l-1.163,-0.871l0.000,-0.871l-1.164,-0.871l-0.581,-4.357l2.616,-1.451l11.046,5.226l11.045,5.227l0.000,11.036l-2.324,-0.291l-1.164,2.032l-0.872,1.743l0.582,0.581l-0.871,0.870l0.289,1.162l-0.580,1.162l-0.293,1.161l0.873,-0.290l0.582,1.161l0.000,1.453l1.162,0.871l0.000,0.580l-1.744,0.581l-1.452,1.161l-2.034,2.905l-2.617,1.452l-2.618,-0.291l-0.871,0.291l0.292,0.870l-1.454,0.872l-1.163,1.161l-3.488,1.162l-0.582,-0.580l-0.579,-0.291l-0.293,0.871l-2.325,0.290l0.290,-0.870l-0.872,-1.743l-0.289,-1.161l-1.165,-0.581l-1.742,-1.743l0.579,-1.161l1.455,0.289l0.581,-0.289l1.453,0.000l-1.453,-2.324l0.292,-2.032l-0.292,-1.743l1.162,1.742z\",\n                        \"TF\" : \"M663.583,364.542l1.746,0.872l2.617,0.581l0.000,0.291l-0.584,1.452l-4.360,0.000l0.000,-1.452l0.292,-1.161l-0.289,0.583z\",\n                        \"TG\" : \"M479,214.123l-2.324,0.581l-0.582,-1.162l-0.872,-1.742l0.000,-1.162l0.581,-2.613l-0.871,-0.872l-0.292,-2.322l0.000,-2.033l-0.871,-1.161l0.000,-0.872l2.616,0.000l-0.582,1.452l0.873,0.871l0.872,0.871l0.291,1.454l0.579,0.289l-0.290,6.388l-0.872,-2.033z\",\n                        \"TH\" : \"M756.022,197.571l-2.325,-1.452l-2.325,0.000l0.290,-2.033l-2.326,0.000l-0.291,2.904l-1.454,4.065l-0.871,2.613l0.290,1.745l1.744,0.289l1.163,2.323l0.291,2.613l1.745,1.452l1.453,0.291l1.454,1.452l-0.873,1.162l-1.744,0.289l-0.290,-1.451l-2.326,-1.163l-0.291,0.582l-1.163,-1.162l-0.582,-1.452l-1.452,-1.452l-1.163,-1.161l-0.582,1.452l-0.581,-1.452l0.292,-1.742l0.871,-2.615l1.452,-2.903l1.454,-2.614l-1.162,-2.322l0.290,-1.452l-0.582,-1.453l-1.741,-2.322l-0.582,-1.162l0.871,-0.580l1.163,-2.323l-1.163,-2.034l-1.744,-1.742l-1.455,-2.613l1.165,-0.290l1.163,-3.194l2.034,0.000l1.743,-1.163l1.454,-0.580l1.163,0.580l0.290,1.744l1.743,0.289l-0.579,2.904l0.000,2.323l2.907,-1.742l0.871,0.581l1.452,0.000l0.582,-0.871l2.036,0.000l2.325,2.323l0.000,2.613l2.327,2.324l-0.291,2.323l-0.872,1.451l-2.326,-0.581l-3.781,0.581l-1.741,2.323l-0.580,-3.485z\",\n                        \"TJ\" : \"M669.108,120.329l-0.873,0.871l-2.906,-0.582l-0.291,1.743l2.908,-0.290l3.488,0.871l5.233,-0.291l0.579,2.324l0.874,-0.291l1.743,0.582l0.000,1.160l0.292,1.742l-2.909,0.000l-1.745,-0.290l-1.744,1.162l-1.162,0.291l-1.161,0.581l-0.873,-0.872l0.000,-2.323l-0.581,0.000l0.291,-0.871l-1.454,-0.871l-1.455,1.161l-0.290,1.161l-0.289,0.291l-1.745,0.000l-0.872,1.162l-0.872,-0.582l-2.036,0.872l-0.871,-0.290l1.744,-2.614l-0.582,-2.032l-2.033,-0.871l0.579,-1.162l2.328,0.290l1.452,-1.743l0.872,-1.741l3.488,-0.582l-0.581,1.163l0.581,0.871l-0.873,0.000z\",\n                        \"TL\" : \"M817.647,255.359l0.580,-0.582l2.327,-0.580l1.744,-0.291l0.871,-0.290l1.164,0.290l-1.164,0.871l-2.905,1.162l-2.037,0.871l-0.290,-0.871l0.290,0.580z\",\n                        \"TM\" : \"M642.364,132.815l-0.289,-2.323l-2.034,0.000l-3.200,-2.324l-2.325,-0.290l-2.907,-1.452l-2.034,-0.290l-1.162,0.581l-1.745,-0.291l-2.036,1.742l-2.323,0.582l-0.582,-2.033l0.289,-2.904l-2.033,-0.871l0.581,-2.033l-1.743,0.000l0.578,-2.323l2.617,0.581l2.326,-0.872l-2.033,-1.742l-0.582,-1.451l-2.328,0.581l-0.289,2.032l-0.871,-1.742l1.160,-0.871l3.199,-0.581l2.034,0.871l1.744,2.033l1.455,0.000l3.199,0.000l-0.583,-1.452l2.325,-0.871l2.325,-1.742l3.778,1.451l0.292,2.324l1.163,0.580l2.907,-0.290l0.871,0.580l1.455,2.904l2.906,1.742l2.034,1.453l2.909,1.162l3.487,1.160l0.000,1.742l-0.871,0.000l-1.164,-0.871l-0.580,1.162l-2.326,0.291l-0.583,2.323l-1.454,0.870l-2.325,0.291l-0.581,1.452l-2.034,0.291l2.617,1.162z\",\n                        \"TN\" : \"M499.931,147.625l-1.163,-4.936l-1.745,-1.162l0.000,-0.581l-2.325,-1.742l-0.290,-2.034l1.745,-1.451l0.579,-2.323l-0.290,-2.614l0.581,-1.451l2.908,-1.163l2.034,0.291l-0.291,1.453l2.325,-0.872l0.292,0.291l-1.454,1.451l0.000,1.161l1.162,0.872l-0.580,2.324l-1.745,1.451l0.582,1.452l1.452,0.000l0.583,1.452l1.163,0.290l-0.291,2.032l-1.164,0.873l-0.872,0.870l-2.034,1.162l0.290,1.161l-0.290,1.162l1.162,-0.581z\",\n                        \"TR\" : \"M575.509,117.135l3.777,1.161l3.199-0.291l2.323,0.291l3.489-1.451l2.906-0.291l2.615,1.452l0.292,0.872l-0.292,1.452l2.036,0.58l1.162,0.872l-1.743,0.871l0.87,2.904l-0.579,0.871l1.452,2.324l-1.452,0.581l-0.873-0.872l-3.197-0.291l-1.164,0.291l-3.196,0.581h-1.453l-3.196,0.872h-2.327l-1.454-0.581l-2.906,0.871l-0.873-0.58l-0.29,1.742l-0.581,0.58l-0.871,0.582l-0.873-1.452l0.873-0.872l-1.455,0.291l-2.325-0.871l-2.033,1.742l-4.07,0.29l-2.326-1.452h-2.906l-0.582,1.162l-2.036,0.29l-2.615-1.452h-2.906l-1.744-2.904l-2.034-1.452l1.455-2.033l-1.747-1.452l2.907-2.613h4.361l1.163-2.033l5.232,0.29l3.197-1.742l3.196-0.871h4.65L575.509,117.135zM548.764,119.167l-2.325,1.451l-0.871-1.451v-0.581l0.581-0.291l0.871-1.742l-1.452-0.581l2.907-0.871l2.324,0.29l0.291,1.162l2.615,0.872l-0.58,0.58l-3.198,0.291L548.764,119.167z\",\n                        \"TT\" : \"M304.01,201.346l1.454,-0.291l0.581,0.000l0.000,2.033l-2.326,0.291l-0.581,-0.291l0.872,-0.582l0.000,1.160z\",\n                        \"TW\" : \"M808.926,163.886l-1.744,4.356l-1.163,2.322l-1.452,-2.322l-0.292,-2.033l1.744,-2.614l2.325,-2.322l1.163,0.871l0.581,-1.742z\",\n                        \"TZ\" : \"M567.077,233.58l0.582,0.289l9.883,5.517l0.291,1.742l3.780,2.615l-1.163,3.484l0.000,1.452l1.744,1.161l0.292,0.581l-0.873,1.743l0.289,0.871l-0.289,1.162l0.873,1.742l1.161,2.903l1.162,0.581l-2.323,1.452l-2.907,1.162l-1.746,0.000l-0.872,0.581l-2.036,0.289l-0.581,0.291l-3.486,-0.872l-2.036,0.292l-0.582,-3.776l-1.163,-1.161l-0.289,-0.871l-2.907,-0.581l-1.456,-0.870l-1.743,-0.291l-1.161,-0.581l-1.162,-0.581l-1.455,-3.485l-1.744,-1.452l-0.290,-1.742l0.290,-1.452l-0.581,-2.324l1.163,-0.289l0.872,-0.870l1.163,-1.454l0.582,-0.580l0.000,-0.872l-0.582,-0.871l0.000,-0.871l0.582,-0.291l0.289,-1.741l-1.163,-1.452l0.874,-0.291l3.196,0.000l-5.522,0.289z\",\n                        \"UA\" : \"M561.265,87.806l1.160,0.000l0.584,-0.582l0.872,0.000l2.907,-0.290l1.744,1.742l-0.873,0.581l0.290,0.871l2.327,0.000l0.871,1.162l0.000,0.581l3.488,0.870l2.034,-0.290l1.745,1.162l1.454,0.000l4.070,0.870l0.290,0.873l-1.163,1.451l0.582,1.452l-0.582,0.871l-2.615,0.291l-1.452,0.871l0.000,1.161l-2.329,0.292l-1.744,0.869l-2.615,0.000l-2.323,1.162l0.289,1.743l1.161,0.581l2.907,-0.290l-0.580,1.161l-2.906,0.290l-3.781,1.742l-1.452,-0.581l0.582,-1.451l-3.198,-0.581l0.579,-0.580l2.619,-0.872l-0.874,-0.581l-4.068,-0.871l-0.292,-0.872l-2.614,0.291l-0.874,1.452l-2.325,2.033l-1.161,-0.580l-1.166,0.580l-1.452,-0.580l0.872,-0.291l0.291,-0.872l0.872,-0.871l-0.291,-0.580l0.581,-0.291l0.293,0.581l1.743,0.000l0.581,-0.290l-0.290,-0.291l0.000,-0.291l-0.873,-0.580l-0.290,-1.162l-1.164,-0.580l0.293,-0.871l-1.166,-0.872l-1.162,0.000l-2.034,-0.870l-2.033,0.290l-0.584,0.290l-1.163,0.000l-0.579,0.580l-2.036,0.291l-1.162,0.581l-1.163,-0.581l-1.745,0.000l-1.744,-0.581l-1.163,0.581l-0.291,-0.581l-1.452,-0.870l0.580,-0.872l0.872,-0.870l0.582,0.289l-0.872,-1.452l2.617,-2.033l1.452,-0.580l0.292,-0.580l-1.455,-2.614l1.163,0.000l1.746,-0.581l2.035,-0.291l2.615,0.291l3.196,0.581l2.036,0.290l1.163,0.291l1.162,-0.581l0.583,0.581l2.615,0.000l0.873,0.289l0.290,-1.451l0.870,-0.580l-2.328,0.000z\",\n                        \"UG\" : \"M561.555,233.869l-3.196,0.000l-0.874,0.291l-1.743,0.871l-0.582,-0.290l0.000,-2.324l0.582,-0.871l0.291,-2.324l0.581,-1.161l1.163,-1.451l0.871,-0.872l0.873,-0.871l-1.162,-0.289l0.289,-3.196l1.163,-0.870l1.744,0.580l2.326,-0.580l1.744,0.000l1.745,-1.162l1.452,1.742l0.291,1.452l1.163,3.194l-1.163,2.033l-1.164,1.742l-0.872,1.161l0.000,2.906l5.522,-0.289z\",\n                        \"US\" : \"M45.593,178.406l-0.292,0.581l-0.873-0.581l0.292-0.581l-0.582-1.162l0.29-0.291l0.292-0.29l-0.292-0.582l0.292-0.29h0.291l0.872,0.581l0.582,0.291l0.581,0.29l0.582,0.872v0.29l-1.162,0.581L45.593,178.406zM44.14,174.05l-0.872,0.29l-0.582-0.581l-0.292-0.29l0.292-0.291l0.872,0.291l0.872,0.29L44.14,174.05zM42.395,172.598l-0.29,0.291h-1.453l0.29-0.291H42.395zM39.779,172.308v0.29l-0.291-0.29h-0.873l-0.582-0.582l0.873-0.581v0.291L39.779,172.308zM35.128,170.564l-0.291,0.292l-0.872-0.582v-0.291l0.581-0.29l0.582,0.29V170.564zM212.735,95.065l0.582,1.452l0.871,0.581l1.744,0.291l2.907,0.291l2.616,0.871l2.325-0.291l3.488,0.581h0.872l2.326-0.87l2.617,1.161l2.616,1.162l2.326,0.872l2.035,0.871l0.291,0.58l0.582,0.291v0.291h0.58l0.583-0.291l0.29,0.871l0.583,0.291h0.581l0.581,0.29l-0.581,0.581l2.906,1.162l0.583,2.613l0.58,2.323l-0.872,1.742l-1.163,1.451l-0.581,0.873v0.29l0.292,0.581l0.872,0.29h0.581l3.197-1.452l2.907-0.29l3.488-1.453l0.291-0.291l-0.291-0.871l-0.582-0.581l1.454-0.291h2.616h2.616l0.872-1.162l0.291-0.29l2.907-1.743l1.163-0.581h4.07h5.232l0.292-0.871h0.872l1.162-0.58l0.872-1.162l0.873-2.033l2.035-2.032l0.872,0.581l2.035-0.581l1.163,0.87v3.775l1.744,1.452l0.582,1.161l-2.907,1.162l-2.907,0.872l-2.907,0.872l-1.453,1.742l-0.582,0.581v1.453l0.872,1.451h1.163l-0.291-0.871l0.872,0.581l-0.291,0.871l-1.744,0.291h-1.162l-2.036,0.581h-1.452l-1.454,0.291l-2.326,0.58l4.07-0.291l0.872,0.291l-4.07,0.872H270l0.291-0.29l-0.872,0.872h0.872l-0.582,2.032l-2.035,2.033l-0.291-0.58l-0.582-0.291l-0.872-0.581l0.582,1.452l0.582,0.58v0.873l-0.873,1.161l-1.453,2.033h-0.291l0.873-1.742l-1.454-1.162l-0.291-2.322l-0.58,1.16l0.58,1.743l-1.744-0.291l1.744,0.871l0.291,2.614l0.873,0.291l0.291,0.871l0.291,2.613l-1.745,2.033l-2.907,0.871l-1.743,1.742H257.5l-1.452,1.162l-0.291,0.87l-2.907,1.744l-1.744,1.451l-1.163,1.452l-0.582,2.033l0.582,1.742l0.873,2.614l1.163,1.742v1.161l1.453,3.195v2.032l-0.29,0.871l-0.582,1.742l-0.873,0.291l-1.453-0.291l-0.291-1.161l-1.163-0.582l-1.454-2.323l-1.162-2.032l-0.583-1.161l0.583-1.743l-0.583-1.742l-2.325-2.323l-0.873-0.291l-2.906,1.162h-0.581l-1.163-1.451l-1.744-0.581l-3.197,0.29l-2.326-0.29l-2.326,0.29l-0.872,0.291l0.292,0.87v1.162l0.581,0.582l-0.581,0.29l-0.872-0.581l-1.164,0.581h-2.034l-2.035-1.452l-2.325,0.291l-2.035-0.581l-1.745,0.29l-2.325,0.581l-2.325,2.033l-2.908,1.162l-1.452,1.162l-0.582,1.451v1.742v1.452l0.582,0.871h-1.163l-1.744-0.58l-2.326-0.872l-0.581-1.162l-0.582-2.033l-1.744-1.452l-0.873-1.742l-1.453-1.742l-2.034-1.162h-2.036l-1.743,2.323l-2.326-0.871l-1.454-0.871l-0.872-1.453l-0.872-1.451l-1.454-1.162l-1.454-0.871l-1.163-1.162h-4.65v1.162h-2.326h-5.232l-6.395-1.742l-4.07-1.451l0.29-0.582l-3.487,0.291l-3.198,0.291l-0.581-1.453l-1.744-1.451l-1.163-0.582l-0.291-0.58l-1.743-0.291l-0.872-0.581l-2.616-0.29l-0.582-0.582l-0.291-1.452l-2.908-2.904l-2.034-3.775v-0.582l-1.163-0.871l-2.326-2.323l-0.291-2.322l-1.454-1.453l0.582-2.322v-2.324l-0.872-2.032l0.872-2.614l0.582-2.613l0.291-2.323l-0.581-3.775l-0.873-2.323l-0.872-1.162l0.291-0.58l4.069,0.87l1.454,2.613l0.581-0.87l-0.291-2.033l-0.872-2.324h7.849h8.139h2.616h8.43h8.14h8.138h8.43h9.302h9.302h5.813v-1.161H212.735zM52.569,73.867l-2.616,1.162l-1.454-0.871l-0.581-1.162l2.616-1.162l1.454-0.29l1.744,0.29l1.163,0.871L52.569,73.867zM17.978,66.316l-1.744,0.291l-1.745-0.581l-1.744-0.582l2.907-0.581l2.035,0.291L17.978,66.316zM1.118,55.572l1.744,0.582l1.744-0.291l2.035,0.581l2.907,0.581l-0.291,0.29l-2.035,0.581l-2.326-0.87l-0.872-0.291H1.409l-0.582-0.29L1.118,55.572zM47.046,35.246l1.744,1.161l1.453-0.291h4.651l-0.291,0.582l4.36,0.58l2.617-0.29l5.813,0.871l5.232,0.29l2.326,0.291l3.488-0.291l4.36,0.581l2.907,0.581v10.164v15.681h2.616l2.616,0.872l2.035,1.162L95.3,68.93l2.906-1.452l2.616-0.871l1.454,1.451l1.744,1.162l2.616,1.162l1.744,2.033l2.908,2.903l4.65,1.742v1.743l-1.454,1.452l-1.454-1.162l-2.615-0.871l-0.583-2.323l-3.778-2.323l-1.454-2.324l-2.616-0.291h-4.361l-3.197-0.871l-5.814-2.903l-2.616-0.581l-4.651-0.872l-3.778,0.291l-5.523-1.453l-3.198-1.161l-3.197,0.581l0.581,2.033l-1.454,0.29l-3.196,0.58l-2.326,0.873l-3.198,0.581l-0.291-1.742l1.163-2.614l2.907-0.871l-0.582-0.581l-3.488,1.452l-2.035,1.742l-4.07,2.033l2.035,1.161l-2.617,2.033l-2.907,1.162l-2.616,0.871l-0.872,1.162l-4.07,1.451l-0.872,1.452l-3.198,1.162l-2.035-0.29l-2.615,0.871l-2.617,0.87l-2.326,0.872l-4.65,0.871l-0.581-0.582l2.907-1.162l2.906-0.87l2.907-1.453l3.489-0.291l1.163-1.161l3.779-1.742l0.582-0.581l2.035-0.873l0.58-2.033l1.455-1.742l-3.198,0.872l-0.872-0.582L36,70.382l-1.745-1.453l-0.872,0.872l-1.162-1.162l-2.617,0.871h-1.743l-0.292-1.453l0.581-1.162l-1.744-0.87l-3.487,0.581l-2.326-1.452l-2.035-0.581v-1.452l-2.035-1.162l1.163-1.742l2.035-1.452l1.163-1.452l2.035-0.29l2.034,0.58l2.036-1.451l2.035,0.29l2.326-0.872l-0.583-1.161l-1.743-0.582l2.034-1.162h-1.453l-2.906,0.871l-0.873,0.581l-2.325-0.581l-3.779,0.291l-4.07-0.871l-1.163-0.871l-3.487-1.742l3.778-1.162l6.105-1.451h2.325l-0.29,1.451h5.814l-2.327-1.742l-3.197-1.162l-2.034-1.162l-2.616-1.161l-3.779-0.871l1.455-1.452l4.941-0.291l3.488-1.162l0.582-1.453l2.906-1.161l2.617-0.291L36,36.116h2.616l4.07-1.452L47.046,35.246z\",\n                        \"UY\" : \"M315.056,314.017l1.744,-0.292l2.907,2.033l0.872,0.000l2.907,1.743l2.325,1.451l1.454,2.032l-1.163,1.164l0.872,1.740l-1.453,1.742l-2.907,1.453l-2.035,-0.582l-1.454,0.291l-2.616,-1.162l-2.035,0.000l-1.453,-1.452l0.000,-1.741l0.872,-0.580l-0.291,-2.905l0.872,-2.614l-0.582,2.321z\",\n                        \"UZ\" : \"M656.899,128.168l0.000,-1.742l-3.487,-1.160l-2.909,-1.162l-2.034,-1.453l-2.906,-1.742l-1.455,-2.904l-0.871,-0.580l-2.907,0.290l-1.163,-0.580l-0.292,-2.324l-3.778,-1.451l-2.325,1.742l-2.325,0.871l0.583,1.452l-3.199,0.000l0.000,-10.164l6.976,-1.742l0.580,0.291l4.071,2.031l2.324,0.872l2.618,2.614l3.196,-0.291l4.944,-0.290l3.196,2.032l-0.290,2.614l1.453,0.000l0.581,2.323l3.489,0.000l0.580,1.452l1.163,0.000l1.163,-2.032l3.779,-2.033l1.454,-0.291l0.872,0.291l-2.326,1.742l2.035,0.871l2.034,-0.580l3.199,1.451l-3.488,2.032l-2.326,-0.289l-0.873,0.000l-0.581,-0.871l0.581,-1.163l-3.488,0.582l-0.872,1.741l-1.452,1.743l-2.328,-0.290l-0.579,1.162l2.033,0.871l0.582,2.032l-1.744,2.614l-2.035,-0.582l1.453,0.000z\",\n                        \"VE\" : \"M277.558,198.442l-0.290,0.871l-1.454,0.291l0.872,1.161l0.000,1.452l-1.454,1.451l1.164,2.324l1.162,-0.290l0.582,-1.743l-0.872,-1.161l0.000,-2.033l3.487,-1.161l-0.582,-1.162l1.163,-0.871l0.872,1.742l2.035,0.291l1.744,1.451l0.000,0.871l2.617,0.000l2.907,-0.289l1.452,1.161l2.326,0.290l1.455,-0.582l0.000,-0.869l3.487,0.000l3.198,-0.291l-2.326,0.871l0.872,1.451l2.326,0.000l2.034,1.454l0.291,2.323l1.453,-0.292l1.164,0.872l-2.036,1.452l-0.290,1.161l0.872,0.871l-0.582,0.581l-1.743,0.580l0.000,1.163l-0.873,0.582l2.035,2.322l0.291,0.580l-0.872,1.162l-3.198,0.871l-2.035,0.580l-0.581,0.582l-2.326,-0.582l-2.034,-0.290l-0.582,0.000l1.163,0.872l0.000,1.741l0.292,1.744l2.324,0.289l0.291,0.581l-2.035,0.871l-0.291,1.162l-1.162,0.291l-2.036,0.870l-0.580,0.582l-2.036,0.289l-1.452,-1.451l-0.872,-2.614l-0.873,-1.162l-0.872,-0.580l1.454,-1.453l-0.291,-0.580l-0.582,-0.580l-0.581,-2.033l0.000,-2.033l0.872,-0.871l0.291,-1.452l-0.872,-0.290l-1.454,0.290l-2.034,-0.290l-1.163,0.290l-2.035,-2.323l-1.453,-0.291l-3.488,0.291l-0.872,-1.162l-0.583,0.000l0.000,-0.581l0.292,-1.161l-0.292,-1.161l-0.580,-0.582l-0.291,-1.161l-1.453,-0.290l0.581,-1.452l0.582,-2.033l0.581,-1.162l1.163,-0.580l0.581,-1.452l-2.035,0.581z\",\n                        \"VN\" : \"M771.137,171.726l-3.488,2.324l-2.326,2.614l-0.581,1.742l2.034,2.904l2.617,3.774l2.325,1.743l1.744,2.033l1.163,5.226l-0.290,4.647l-2.327,2.032l-3.195,1.741l-2.037,2.325l-3.486,2.322l-1.164,-1.740l0.872,-1.745l-2.034,-1.451l2.326,-1.162l2.906,-0.290l-1.162,-1.742l4.651,-2.033l0.289,-3.194l-0.581,-2.033l0.581,-2.614l-0.870,-2.032l-2.036,-1.742l-1.745,-2.614l-2.325,-3.194l-3.197,-1.742l0.870,-0.872l1.747,-0.580l-1.165,-2.614l-3.488,0.000l-1.161,-2.322l-1.454,-2.324l1.454,-0.580l2.034,0.000l2.615,-0.291l2.329,-1.451l1.452,0.870l2.615,0.581l-0.581,1.742l1.454,0.872l-2.615,-0.870z\",\n                        \"VU\" : \"M935.666,276.266l-0.872,0.291l-0.874-1.163v-0.871L935.666,276.266zM933.628,271.91l0.583,2.324l-0.874-0.292h-0.58l-0.29-0.58v-2.322L933.628,271.91z\",\n                        \"YE\" : \"M619.983,185.084l-2.034,0.872l-0.583,1.161l0.000,0.872l-2.616,1.160l-4.651,1.453l-2.326,1.742l-1.162,0.291l-0.871,-0.291l-1.744,1.161l-1.745,0.581l-2.327,0.291l-0.580,0.000l-0.581,0.871l-0.582,0.000l-0.581,0.871l-1.455,-0.290l-0.870,0.580l-1.745,-0.290l-0.873,-1.452l0.292,-1.452l-0.581,-0.871l-0.581,-2.032l-0.874,-1.163l0.583,-0.289l-0.291,-1.162l0.582,-0.581l-0.291,-1.161l1.161,-0.872l-0.289,-1.161l0.873,-1.451l1.161,0.869l0.582,-0.289l3.197,0.000l0.582,0.289l2.615,0.292l1.164,-0.292l0.580,0.873l1.163,-0.291l2.036,-2.904l2.615,-1.161l7.849,-1.162l2.325,4.645l-0.873,-1.743z\",\n                        \"ZA\" : \"M560.392,311.403l-0.29,0.291l-1.165,1.451l-0.87,1.451l-1.453,2.034l-3.198,2.902l-2.034,1.451l-2.036,1.453l-2.906,0.871l-1.452,0.29l-0.293,0.58l-1.743-0.29l-1.161,0.581l-3.199-0.581l-1.452,0.29h-1.164l-2.906,0.872l-2.325,0.58l-1.744,0.871l-1.162,0.29l-1.163-1.161h-0.871l-1.454-1.161v0.292l-0.29-0.583v-1.741l-0.873-1.742l0.873-0.581v-2.032l-2.034-2.613l-1.165-2.323l-2.034-3.484l1.163-1.453l1.163,0.58l0.582,1.162l1.162,0.29l1.744,0.581l1.452-0.29l2.325-1.451v-10.163l0.874,0.58l1.741,2.613l-0.289,1.741l0.582,0.872l2.033-0.29l1.164-1.162l1.452-0.87l0.582-1.453l1.454-0.58l1.162,0.29l1.162,0.872h2.326l1.744-0.582l0.289-0.87l0.584-1.161l1.452-0.293l0.874-1.16l0.871-1.742l2.324-2.032l4.07-2.033h1.163l1.163,0.581l0.871-0.289l1.454,0.289l1.452,3.774l0.582,2.033l-0.29,2.903v1.162l-1.163-0.58l-0.872,0.29l-0.293,0.581l-0.87,1.161l0.292,0.871l1.452,1.451l1.744-0.29l0.581-1.161h2.034l-0.582,2.031l-0.579,2.323l-0.584,1.162L560.392,311.403zM553.416,310.531l-1.162-0.87l-1.163,0.579l-1.453,1.163l-1.454,1.742l2.036,2.032l0.871-0.291l0.581-0.869l1.454-0.292l0.58-0.871l0.873-1.451L553.416,310.531z\",\n                        \"ZM\" : \"M563.881,256.229l1.452,1.452l0.582,2.322l-0.582,0.582l-0.290,2.322l0.290,2.323l-0.872,0.873l-0.580,2.612l1.452,0.580l-8.429,2.325l0.292,2.033l-2.036,0.289l-1.744,1.162l-0.291,0.871l-0.872,0.291l-2.616,2.322l-1.454,1.744l-0.872,0.000l-0.872,-0.291l-3.197,-0.291l-0.291,-0.291l-0.290,-0.289l-0.871,-0.582l-1.745,0.000l-2.326,0.582l-1.745,-1.744l-2.034,-2.322l0.289,-8.711l5.524,0.000l0.000,-0.873l0.292,-1.161l-0.583,-1.161l0.291,-1.452l-0.291,-0.871l1.164,0.290l0.000,0.872l1.454,-0.291l1.743,0.291l0.871,1.452l2.036,0.291l1.745,-0.873l0.581,1.452l2.325,0.291l0.872,1.162l1.163,1.451l2.033,0.000l-0.289,-2.904l-0.581,0.581l-2.035,-1.160l-0.584,-0.291l0.293,-2.904l0.580,-3.195l-0.873,-1.161l0.873,-1.742l0.873,-0.290l3.490,-0.581l1.163,0.290l1.162,0.581l1.161,0.581l1.743,0.291l-1.456,-0.870z\",\n                        \"ZW\" : \"M559.521,292.237l-1.454,-0.289l-0.871,0.289l-1.163,-0.581l-1.163,0.000l-1.745,-1.162l-2.326,-0.579l-0.580,-1.744l0.000,-0.870l-1.455,-0.292l-2.907,-2.903l-0.870,-1.742l-0.582,-0.580l-1.163,-2.034l3.197,0.291l0.872,0.291l0.872,0.000l1.454,-1.744l2.616,-2.322l0.872,-0.291l0.291,-0.871l1.744,-1.162l2.036,-0.289l0.000,0.870l2.325,0.000l1.452,0.581l0.582,0.582l1.163,0.289l1.452,0.871l0.000,3.486l-0.582,2.032l0.000,2.033l0.293,0.870l-0.293,1.452l-0.289,0.290l-0.874,2.033l2.904,-3.195z\"\n    \n                    }\n                }\n            }\n        }\n    );\n\n    return Mapael;\n\n}));"
  },
  {
    "path": "public/admin/js/masking-active.js",
    "content": "(function ($) {\n \"use strict\";\n\t\t// Masking form\n\t\t$('#cvv').mask('999', {placeholder:'X'});\n\t\t$('#card').mask('9999-9999-9999-9999', {placeholder:'X'});\n\t\t$(\"#phone\").mask('(999) 999-9999', {placeholder:'X'});\n\t\t$(\"#date\").mask('99/99/9999', {placeholder:'X'});\n\t\t$(\"#serial\").mask('***-***-***-***-***-***', {placeholder:'_'});\n\t\t$(\"#tax\").mask('99-9999999', {placeholder:'X'});\n \n})(jQuery); "
  },
  {
    "path": "public/admin/js/mock-active.js",
    "content": "(function ($) {\n \"use strict\";\n //ajax mocks\n    $.mockjaxSettings.responseTime = 500; \n    \n    $.mockjax({\n        url: '/post',\n        response: function(settings) {\n            log(settings, this);\n        }\n    });\n\n    $.mockjax({\n        url: '/error',\n        status: 400,\n        statusText: 'Bad Request',\n        response: function(settings) {\n            this.responseText = 'Please input correct value'; \n            log(settings, this);\n        }        \n    });\n    \n    $.mockjax({\n        url: '/status',\n        status: 500,\n        response: function(settings) {\n            this.responseText = 'Internal Server Error';\n            log(settings, this);\n        }        \n    });\n  \n    $.mockjax({\n        url: '/groups',\n        response: function(settings) {\n            this.responseText = [ \n             {value: 0, text: 'Guest'},\n             {value: 1, text: 'Service'},\n             {value: 2, text: 'Customer'},\n             {value: 3, text: 'Operator'},\n             {value: 4, text: 'Support'},\n             {value: 5, text: 'Admin'}\n           ];\n           log(settings, this);\n        }        \n    });\n    \n    function log(settings, response) {\n            var s = [], str;\n            s.push(settings.type.toUpperCase() + ' url = \"' + settings.url + '\"');\n            for(var a in settings.data) {\n                if(settings.data[a] && typeof settings.data[a] === 'object') {\n                    str = [];\n                    for(var j in settings.data[a]) {str.push(j+': \"'+settings.data[a][j]+'\"');}\n                    str = '{ '+str.join(', ')+' }';\n                } else {\n                    str = '\"'+settings.data[a]+'\"';\n                }\n                s.push(a + ' = ' + str);\n            }\n            s.push('RESPONSE: status = ' + response.status);\n\n            if(response.responseText) {\n                if($.isArray(response.responseText)) {\n                    s.push('[');\n                    $.each(response.responseText, function(i, v){\n                       s.push('{value: ' + v.value+', text: \"'+v.text+'\"}');\n                    }); \n                    s.push(']');\n                } else {\n                   s.push($.trim(response.responseText));\n                }\n            }\n            s.push('--------------------------------------\\n');\n            $('#console').val(s.join('\\n') + $('#console').val());\n    }                 \n\n})(jQuery); "
  },
  {
    "path": "public/admin/js/modal-active.js",
    "content": "(function ($) {\n \"use strict\";\n\n\t\t$(\".login-modal-pro, .default-popup, .modal-bounce\").addClass(\"bounce animated\");\n\t\t\t$(\".fullwidth-popup, .modal-pulse\").addClass(\"pulse animated\");\n\t\t\t$(\".Customwidth-popup, .modal-rubberBand\").addClass(\"rubberBand animated\");\n\t\t\t$(\".FullColor-popup, .modal-shake\").addClass(\"shake animated\");\n\t\t\t$(\".default-popup-information, .modal-swing\").addClass(\"swing animated\");\n\t\t\t$(\".fullwidth-popup-information, .modal-tada\").addClass(\"tada animated\");\n\t\t\t$(\".Customwidth-popup-information, .modal-wobble\").addClass(\"wobble animated\");\n\t\t\t$(\".FullColor-popup-information, .modal-jello\").addClass(\"jello animated\");\n\t\t\t$(\".default-popup-PrimaryModal, .modal-bounceIn\").addClass(\"bounceIn animated\");\n\t\t\t$(\".fullwidth-popup-InformationproModal, .modal-bounceInDown\").addClass(\"bounceInDown animated\");\n\t\t\t$(\".Customwidth-popup-WarningModal, .modal-bounceInLeft\").addClass(\"bounceInLeft animated\");\n\t\t\t$(\".FullColor-popup-DangerModal, .modal-bounceInRight\").addClass(\"bounceInRight animated\");\n\t\t\t$(\".FullColor-popup-AlertModal, .modal-bounceInUp\").addClass(\"bounceInUp animated\");\n\t\t\t$(\".modal-bounceOut\").addClass(\"bounceOut animated\");\n\t\t\t$(\".modal-fadeIn\").addClass(\"fadeIn animated\");\n\t\t\t$(\".modal-fadeInDown\").addClass(\"fadeInDown animated\");\n\t\t\t$(\".modal-fadeInDownBig\").addClass(\"fadeInDownBig animated\");\n\t\t\t$(\".modal-fadeInLeft\").addClass(\"fadeInLeft animated\");\n\t\t\t$(\".modal-fadeInLeftBig\").addClass(\"fadeInLeftBig animated\");\n\t\t\t$(\".modal-fadeInRight\").addClass(\"fadeInRight animated\");\n\t\t\t$(\".modal-fadeInUp\").addClass(\"fadeInUp animated\");\n\t\t\t$(\".modal-flip\").addClass(\"flip animated\");\n\t\t\t$(\".modal-flipInX\").addClass(\"flipInX animated\");\n\t\t\t$(\".modal-flipInY\").addClass(\"flipInY animated\");\n\t\t\t$(\".modal-lightSpeedIn\").addClass(\"lightSpeedIn animated\");\n\t\t\t$(\".modal-rotateIn\").addClass(\"rotateIn animated\");\n\t\t\t$(\".modal-rotateInDownLeft\").addClass(\"rotateInDownLeft animated\");\n\t\t\t$(\".modal-rotateInDownRight\").addClass(\"rotateInDownRight animated\");\n\t\t\t$(\".modal-rotateInUpLeft\").addClass(\"rotateInUpLeft animated\");\n\t\t\t$(\".modal-rotateInUpRight\").addClass(\"rotateInUpRight animated\");\n\t\t\t$(\".modal-hinge\").addClass(\"hinge animated\");\n\t\t\t$(\".modal-rollIn\").addClass(\"rollIn animated\");\n\t\t\t$(\".modal-zoomIn\").addClass(\"zoomIn animated\");\n\t\t\t$(\".modal-zoomInDown\").addClass(\"zoomInDown animated\");\n\t\t\t$(\".modal-zoomInLeft\").addClass(\"zoomInLeft animated\");\n\t\t\t$(\".modal-zoomInRight\").addClass(\"zoomInRight animated\");\n\t\t\t$(\".modal-zoomInUp\").addClass(\"zoomInUp animated\");\n\t\t\t$(\".modal-slideInDown\").addClass(\"slideInDown animated\");\n\t\t\t$(\".modal-slideInLeft\").addClass(\"slideInLeft animated\");\n\t\t\t$(\".modal-slideInRight\").addClass(\"slideInRight animated\");\n\t\t\t$(\".modal-slideInUp\").addClass(\"slideInUp animated\");\n\t\t\t$(\".modal-flash\").addClass(\"flash animated\");   \n \n})(jQuery); "
  },
  {
    "path": "public/admin/js/multiple-email/multiple-email-active.js",
    "content": "\n\n    function validateEmail(email) {\n    var re = /^([\\w-]+(?:\\.[\\w-]+)*)@((?:[\\w-]+\\.)*\\w[\\w-]{0,66})\\.([a-z]{2,6}(?:\\.[a-z]{2})?)$/i;\n    return re.test(email);\n\t}\n\t(function( $ ){\n\t\t $.fn.multipleInput = function() {\n\t\t\t  return this.each(function() {\n\t\t\t\t   // list of email addresses as unordered list\n\t\t\t\t   $list = $('<ul/>');\n\t\t\t\t   // input\n\t\t\t\t   var $input = $('<input type=\"email\" id=\"email_search\" class=\"email_search multiemail\"/>').keyup(function(event) { \n\t\t\t\t\t\tif(event.which == 13 || event.which == 32 || event.which == 188) {                        \n\t\t\t\t\t\t\t if(event.which==188){\n\t\t\t\t\t\t\t   var val = $(this).val().slice(0, -1);// remove space/comma from value\n\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t else{\n\t\t\t\t\t\t\t var val = $(this).val(); // key press is space or comma                        \n\t\t\t\t\t\t\t }                         \n\t\t\t\t\t\t\t if(validateEmail(val)){\n\t\t\t\t\t\t\t // append to list of emails with remove button\n\t\t\t\t\t\t\t $list.append($('<li class=\"multipleInput-email\"><span>' + val + '</span></li>')\n\t\t\t\t\t\t\t\t  .append($('<a href=\"#\" class=\"multipleInput-close\" title=\"Remove\"><i class=\"glyphicon glyphicon-remove-sign\"></i></a>')\n\t\t\t\t\t\t\t\t\t   .on('click', function(e) {\n\t\t\t\t\t\t\t\t\t\t\t$(this).parent().remove();\n\t\t\t\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\t\t   })\n\t\t\t\t\t\t\t\t  )\n\t\t\t\t\t\t\t );\n\t\t\t\t\t\t\t $(this).attr('placeholder', '');\n\t\t\t\t\t\t\t // empty input\n\t\t\t\t\t\t\t $(this).val('');\n\t\t\t\t\t\t\t  }\n\t\t\t\t\t\t\t  else{\n\t\t\t\t\t\t\t\talert('Please enter valid email id, Thanks!');\n\t\t\t\t\t\t\t  }\n\t\t\t\t\t\t}\n\t\t\t\t   });\n\t\t\t\t   // container div\n\t\t\t\t   var $container = $('<div class=\"multipleInput-container\" />').on('click', function() {\n\t\t\t\t\t\t$input.focus();\n\t\t\t\t   });\n\t\t\t\t   // insert elements into DOM\n\t\t\t\t   $container.append($list).append($input).insertAfter($(this));\n\t\t\t\t   return $(this).hide();\n\t\t\t  });\n\t\t };\n\t})( jQuery );\n\t$('#recipient_email').multipleInput();\n\n\n"
  },
  {
    "path": "public/admin/js/notification-active.js",
    "content": "(function ($) {\n \"use strict\";\n \n\t\t\t// Mini Notifications active class\n\t\t\t $('#miniDefaultAnimation').on('click', function () {\n                Lobibox.notify('default', {\n                    size: 'mini',\n                    msg: 'Lorem ipsum dolor sit amet hears farmer indemnity inherent.'\n                });\n            });\n            $('#miniInfoAnimation').on('click', function () {\n                Lobibox.notify('info', {\n                    size: 'mini',\n                    msg: 'Lorem ipsum dolor sit amet hears farmer indemnity inherent.'\n                });\n            });\n            $('#miniWarningAnimation').on('click', function () {\n                Lobibox.notify('warning', {\n                    size: 'mini',\n                    msg: 'Lorem ipsum dolor sit amet hears farmer indemnity inherent.'\n                });\n            });\n            $('#miniErrorAnimation').on('click', function () {\n                Lobibox.notify('error', {\n                    size: 'mini',\n                    msg: 'Lorem ipsum dolor sit amet hears farmer indemnity inherent.'\n                });\n            });\n            $('#miniSuccessAnimation').on('click', function () {\n                Lobibox.notify('success', {\n                    size: 'mini',\n                    msg: 'Lorem ipsum dolor sit amet hears farmer indemnity inherent.'\n                });\n            });\n\t\t\t\n\t\t\t// large Notifications active class\n\t\t\t $('#largeDefaultBasic').on('click', function () {\n                Lobibox.notify('default', {\n                    size: 'large',\n                    msg: 'Lorem ipsum dolor sit amet hears farmer indemnity inherent, youngest nestor serene horse, already, ipsum unplanted trace line. Making queries worketh game unplanted trace how erring poles.'\n                });\n            });\n            $('#largeInfoBasic').on('click', function () {\n                Lobibox.notify('info', {\n                    size: 'large',\n                    msg: 'Lorem ipsum dolor sit amet hears farmer indemnity inherent, youngest nestor serene horse, already, ipsum unplanted trace line. Making queries worketh game unplanted trace how erring poles.'\n                });\n            });\n            $('#largeWarningBasic').on('click', function () {\n                Lobibox.notify('warning', {\n                    size: 'large',\n                    msg: 'Lorem ipsum dolor sit amet hears farmer indemnity inherent, youngest nestor serene horse, already, ipsum unplanted trace line. Making queries worketh game unplanted trace how erring poles.'\n                });\n            });\n            $('#largeErrorBasic').on('click', function () {\n                Lobibox.notify('error', {\n                    size: 'large',\n                    msg: 'Lorem ipsum dolor sit amet hears farmer indemnity inherent, youngest nestor serene horse, already, ipsum unplanted trace line. Making queries worketh game unplanted trace how erring poles.'\n                });\n            });\n            $('#largeSuccessBasic').on('click', function () {\n                Lobibox.notify('success', {\n                    size: 'large',\n                    msg: 'Lorem ipsum dolor sit amet hears farmer indemnity inherent, youngest nestor serene horse, already, ipsum unplanted trace line. Making queries worketh game unplanted trace how erring poles.'\n                });\n            });\n\t\t\t// Notifications Custom Animation active class\n\t\t\t$('#basicInfoAnimation').on('click', function () {\n                Lobibox.notify('info', {\n                    showClass: 'fadeInDown',\n                    hideClass: 'fadeUpDown',\n                    msg: 'Lorem ipsum dolor sit amet against apennine any created, spend loveliest, building stripes.'\n                });\n            });\n            $('#basicWarningAnimation').on('click', function () {\n                Lobibox.notify('warning', {\n                    showClass: 'bounceIn',\n                    hideClass: 'bounceOut',\n                    msg: 'Lorem ipsum dolor sit amet against apennine any created, spend loveliest, building stripes.'\n                });\n            });\n            $('#basicErrorAnimation').on('click', function () {\n                Lobibox.notify('error', {\n                    showClass: 'zoomInUp',\n                    hideClass: 'zoomOutDown',\n                    msg: 'Lorem ipsum dolor sit amet against apennine any created, spend loveliest, building stripes.'\n                });\n            });\n            $('#basicSuccessAnimation').on('click', function () {\n                Lobibox.notify('success', {\n                    showClass: 'rollIn',\n                    hideClass: 'rollOut',\n                    msg: 'Lorem ipsum dolor sit amet against apennine any created, spend loveliest, building stripes.'\n                });\n            });\n \n\t\t\t// Notifications Custom Width active class\n\t\t\t $('#basicInfoWidth').on('click', function () {\n                Lobibox.notify('info', {\n                    width: 300,\n                    msg: 'Lorem ipsum dolor sit amet against apennine any created, spend loveliest, building stripes.'\n                });\n            });\n            $('#basicWarningWidth').on('click', function () {\n                Lobibox.notify('warning', {\n                    width: 500,\n                    msg: 'Lorem ipsum dolor sit amet against apennine any created, spend loveliest, building stripes.'\n                });\n            });\n            $('#basicErrorWidth').on('click', function () {\n                Lobibox.notify('error', {\n                    width: $(window).width(),\n                    msg: 'Lorem ipsum dolor sit amet against apennine any created, spend loveliest, building stripes.'\n                });\n            });\n            $('#basicSuccessWidth').on('click', function () {\n                Lobibox.notify('success', {\n                    width: 600,\n                    msg: 'Lorem ipsum dolor sit amet against apennine any created, spend loveliest, building stripes.'\n                });\n            });\n\t\t\t\n\t\t\t// Notifications Position active class\n\t\t\t$('#basicInfoPosition').on('click', function () {\n                Lobibox.notify('info', {\n                    position: 'top left',\n                    msg: 'Lorem ipsum dolor sit amet against apennine any created, spend loveliest, building stripes.'\n                });\n            });\n            $('#basicWarningPosition').on('click', function () {\n                Lobibox.notify('warning', {\n                    position: 'top right',\n                    msg: 'Lorem ipsum dolor sit amet against apennine any created, spend loveliest, building stripes.'\n                });\n            });\n            $('#basicErrorPosition').on('click', function () {\n                Lobibox.notify('error', {\n                    position: 'bottom left',\n                    msg: 'Lorem ipsum dolor sit amet against apennine any created, spend loveliest, building stripes.'\n                });\n            });\n            $('#basicSuccessPosition').on('click', function () {\n                Lobibox.notify('success', {\n                    position: 'bottom right',\n                    msg: 'Lorem ipsum dolor sit amet against apennine any created, spend loveliest, building stripes.'\n                });\n            });\n\t\t\t\n\t\t\t// Notifications No Delay active class\n\t\t\t$('#basicDefaultNoDelay').on('click', function () {\n                Lobibox.notify('default', {\n                    delay: false,\n                    title: 'Info title',\n                    msg: 'Lorem ipsum dolor sit amet against apennine any created, spend loveliest, building stripes.'\n                });\n            });\n            $('#basicInfoNoDelay').on('click', function () {\n                Lobibox.notify('info', {\n                    delay: false,\n                    title: 'Info title',\n                    msg: 'Lorem ipsum dolor sit amet against apennine any created, spend loveliest, building stripes.'\n                });\n            });\n            $('#basicWarningNoDelay').on('click', function () {\n                Lobibox.notify('warning', {\n                    delay: false,\n                    title: 'Warning title',\n                    msg: 'Lorem ipsum dolor sit amet against apennine any created, spend loveliest, building stripes.'\n                });\n            });\n            $('#basicErrorNoDelay').on('click', function () {\n                Lobibox.notify('error', {\n                    delay: false,\n                    title: 'Error title',\n                    msg: 'Lorem ipsum dolor sit amet against apennine any created, spend loveliest, building stripes.'\n                });\n            });\n            $('#basicSuccessNoDelay').on('click', function () {\n                Lobibox.notify('success', {\n                    delay: false,\n                    title: 'Success title',\n                    msg: 'Lorem ipsum dolor sit amet against apennine any created, spend loveliest, building stripes.'\n                });\n            });\n\t\t\t// Notifications Custom Delay active class\n\t\t\t$('#basicDefaultCustomDelay').on('click', function () {\n                Lobibox.notify('default', {\n                    delay: 15000,\n                    msg: 'Lorem ipsum dolor sit amet against apennine any created, spend loveliest, building stripes.'\n                });\n            });\n            $('#basicInfoCustomDelay').on('click', function () {\n                Lobibox.notify('info', {\n                    delay: 15000,\n                    msg: 'Lorem ipsum dolor sit amet against apennine any created, spend loveliest, building stripes.'\n                });\n            });\n            $('#basicWarningCustomDelay').on('click', function () {\n                Lobibox.notify('warning', {\n                    delay: 15000,\n                    msg: 'Lorem ipsum dolor sit amet against apennine any created, spend loveliest, building stripes.'\n                });\n            });\n            $('#basicErrorCustomDelay').on('click', function () {\n                Lobibox.notify('error', {\n                    delay: 15000,\n                    msg: 'Lorem ipsum dolor sit amet against apennine any created, spend loveliest, building stripes.'\n                });\n            });\n            $('#basicSuccessCustomDelay').on('click', function () {\n                Lobibox.notify('success', {\n                    delay: 15000,\n                    msg: 'Lorem ipsum dolor sit amet against apennine any created, spend loveliest, building stripes.'\n                });\n            });\n\t\t\t\n\t\t\t// Notifications No Icon active class\n\t\t\t $('#basicDefaultNoIcon').on('click', function () {\n                Lobibox.notify('default', {\n                    icon: false,\n                    msg: 'Lorem ipsum dolor sit amet against apennine any created, spend loveliest, building stripes.'\n                });\n            });\n            $('#basicInfoNoIcon').on('click', function () {\n                Lobibox.notify('info', {\n                    icon: false,\n                    msg: 'Lorem ipsum dolor sit amet against apennine any created, spend loveliest, building stripes.'\n                });\n            });\n            $('#basicWarningNoIcon').on('click', function () {\n                Lobibox.notify('warning', {\n                    icon: false,\n                    msg: 'Lorem ipsum dolor sit amet against apennine any created, spend loveliest, building stripes.'\n                });\n            });\n            $('#basicErrorNoIcon').on('click', function () {\n                Lobibox.notify('error', {\n                    icon: false,\n                    msg: 'Lorem ipsum dolor sit amet against apennine any created, spend loveliest, building stripes.'\n                });\n            });\n            $('#basicSuccessNoIcon').on('click', function () {\n                Lobibox.notify('success', {\n                    icon: false,\n                    msg: 'Lorem ipsum dolor sit amet against apennine any created, spend loveliest, building stripes.'\n                });\n            });\n\t\t\t\n\t\t\t// Notifications Custom Title active class\n\t\t\t$('#basicDefaultCustomTitle').on('click', function () {\n                Lobibox.notify('default', {\n                    title: 'Info title',\n                    msg: 'Lorem ipsum dolor sit amet against apennine any created, spend loveliest, building stripes.'\n                });\n            });\n            $('#basicInfoCustomTitle').on('click', function () {\n                Lobibox.notify('info', {\n                    title: 'Info title',\n                    msg: 'Lorem ipsum dolor sit amet against apennine any created, spend loveliest, building stripes.'\n                });\n            });\n            $('#basicWarningCustomTitle').on('click', function () {\n                Lobibox.notify('warning', {\n                    title: 'Warning title',\n                    msg: 'Lorem ipsum dolor sit amet against apennine any created, spend loveliest, building stripes.'\n                });\n            });\n            $('#basicErrorCustomTitle').on('click', function () {\n                Lobibox.notify('error', {\n                    title: 'Error title',\n                    msg: 'Lorem ipsum dolor sit amet against apennine any created, spend loveliest, building stripes.'\n                });\n            });\n            $('#basicSuccessCustomTitle').on('click', function () {\n                Lobibox.notify('success', {\n                    title: 'Success title',\n                    msg: 'Lorem ipsum dolor sit amet against apennine any created, spend loveliest, building stripes.'\n                });\n            });\n\t\t\t\n\t\t\t// Notifications Image active class\n\t\t\t$('#basicDefaultImage').on('click', function () {\n                Lobibox.notify('default', {\n                    img: 'img/notification/1.jpg',\n                    msg: 'Lorem ipsum dolor sit amet against apennine any created, spend loveliest, building stripes.'\n                });\n            });\n            $('#basicInfoImage').on('click', function () {\n                Lobibox.notify('info', {\n                    img: 'img/notification/1.jpg',\n                    msg: 'Lorem ipsum dolor sit amet against apennine any created, spend loveliest, building stripes.'\n                });\n            });\n            $('#basicWarningImage').on('click', function () {\n                Lobibox.notify('warning', {\n                    img: 'img/notification/2.jpg',\n                    msg: 'Lorem ipsum dolor sit amet against apennine any created, spend loveliest, building stripes.'\n                });\n            });\n            $('#basicErrorImage').on('click', function () {\n                Lobibox.notify('error', {\n                    img: 'img/notification/3.jpg',\n                    msg: 'Lorem ipsum dolor sit amet against apennine any created, spend loveliest, building stripes.'\n                });\n            });\n            $('#basicSuccessImage').on('click', function () {\n                Lobibox.notify('success', {\n                    img: 'img/notification/4.jpg',\n                    msg: 'Lorem ipsum dolor sit amet against apennine any created, spend loveliest, building stripes.'\n                });\n            });\n\t\t\t\n\t\t\t// Basic notifications active class\n\t\t\t$('#basicDefault').on('click', function () {\n                Lobibox.notify('default', {\n                    msg: 'Lorem ipsum dolor sit amet against apennine any created, spend loveliest, building stripes.'\n                });\n            });\n\t\t\t$('#basicInfo').on('click', function () {\n                Lobibox.notify('info', {\n                    msg: 'Lorem ipsum dolor sit amet against apennine any created, spend loveliest, building stripes.'\n                });\n            });\n            $('#basicWarning').on('click', function () {\n                Lobibox.notify('warning', {\n                    msg: 'Lorem ipsum dolor sit amet against apennine any created, spend loveliest, building stripes.'\n                });\n            });\n            $('#basicError').on('click', function () {\n                Lobibox.notify('error', {\n                    msg: 'Lorem ipsum dolor sit amet against apennine any created, spend loveliest, building stripes.'\n                });\n            });\n\t\t\t$('#basicSuccess').on('click', function () {\n                Lobibox.notify('success', {\n                    msg: 'Lorem ipsum dolor sit amet against apennine any created, spend loveliest, building stripes.'\n                });\n            });\n\t\t\t\n\t\t\t// Notifications No Sound active class\n\t\t\t$('#basicInfoNoSound').on('click', function () {\n                Lobibox.notify('info', {\n                    sound: false,\n                    msg: 'Lorem ipsum dolor sit amet against apennine any created, spend loveliest, building stripes.'\n                });\n            });\n            $('#basicWarningNoSound').on('click', function () {\n                Lobibox.notify('warning', {\n                    sound: false,\n                    msg: 'Lorem ipsum dolor sit amet against apennine any created, spend loveliest, building stripes.'\n                });\n            });\n            $('#basicErrorNoSound').on('click', function () {\n                Lobibox.notify('error', {\n                    sound: false,\n                    msg: 'Lorem ipsum dolor sit amet against apennine any created, spend loveliest, building stripes.'\n                });\n            });\n            $('#basicSuccessNoSound').on('click', function () {\n                Lobibox.notify('success', {\n                    sound: false,\n                    msg: 'Lorem ipsum dolor sit amet against apennine any created, spend loveliest, building stripes.'\n                });\n            });\n            \n \n})(jQuery); "
  },
  {
    "path": "public/admin/js/password-meter/password-meter-active.js",
    "content": "(function ($) {\n \"use strict\";\n \n\t\t\t// Example 1\n            var options1 = {};\n            options1.ui = {\n                container: \"#pwd-container1\",\n                showVerdictsInsideProgressBar: true,\n                viewports: {\n                    progress: \".pwstrength_viewport_progress\"\n                }\n            };\n            options1.common = {\n                debug: false,\n            };\n            $('.example1').pwstrength(options1);\n\n            // Example 2\n            var options2 = {};\n            options2.ui = {\n                container: \"#pwd-container2\",\n                showStatus: true,\n                showProgressBar: false,\n                viewports: {\n                    verdict: \".pwstrength_viewport_verdict\"\n                }\n            };\n            $('.example2').pwstrength(options2);\n\n            // Example 3\n            var options3 = {};\n            options3.ui = {\n                container: \"#pwd-container3\",\n                showVerdictsInsideProgressBar: true,\n                viewports: {\n                    progress: \".pwstrength_viewport_progress2\"\n                }\n            };\n            options3.common = {\n                debug: true,\n                usernameField: \"#username\"\n            };\n            $('.example3').pwstrength(options3);\n\n            // Example 4\n            var options4 = {};\n            options4.ui = {\n                container: \"#pwd-container4\",\n                viewports: {\n                    progress: \".pwstrength_viewport_progress4\",\n                    verdict: \".pwstrength_viewport_verdict4\"\n                }\n            };\n            options4.common = {\n                zxcvbn: true,\n                zxcvbnTerms: ['samurai', 'shogun', 'bushido', 'daisho', 'seppuku'],\n                userInputs: ['#year', '#familyname']\n            };\n            $('.example4').pwstrength(options4);\n\t\t\t\n\t\n})(jQuery); "
  },
  {
    "path": "public/admin/js/password-meter/zxcvbn.js",
    "content": "(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.zxcvbn = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){\n    var adjacency_graphs;adjacency_graphs={qwerty:{\"!\":[\"`~\",null,null,\"2@\",\"qQ\",null],'\"':[\";:\",\"[{\",\"]}\",null,null,\"/?\"],\"#\":[\"2@\",null,null,\"4$\",\"eE\",\"wW\"],$:[\"3#\",null,null,\"5%\",\"rR\",\"eE\"],\"%\":[\"4$\",null,null,\"6^\",\"tT\",\"rR\"],\"&\":[\"6^\",null,null,\"8*\",\"uU\",\"yY\"],\"'\":[\";:\",\"[{\",\"]}\",null,null,\"/?\"],\"(\":[\"8*\",null,null,\"0)\",\"oO\",\"iI\"],\")\":[\"9(\",null,null,\"-_\",\"pP\",\"oO\"],\"*\":[\"7&\",null,null,\"9(\",\"iI\",\"uU\"],\"+\":[\"-_\",null,null,null,\"]}\",\"[{\"],\",\":[\"mM\",\"kK\",\"lL\",\".>\",null,null],\"-\":[\"0)\",null,null,\"=+\",\"[{\",\"pP\"],\".\":[\",<\",\"lL\",\";:\",\"/?\",null,null],\"/\":[\".>\",\";:\",\"'\\\"\",null,null,null],0:[\"9(\",null,null,\"-_\",\"pP\",\"oO\"],1:[\"`~\",null,null,\"2@\",\"qQ\",null],2:[\"1!\",null,null,\"3#\",\"wW\",\"qQ\"],3:[\"2@\",null,null,\"4$\",\"eE\",\"wW\"],4:[\"3#\",null,null,\"5%\",\"rR\",\"eE\"],5:[\"4$\",null,null,\"6^\",\"tT\",\"rR\"],6:[\"5%\",null,null,\"7&\",\"yY\",\"tT\"],7:[\"6^\",null,null,\"8*\",\"uU\",\"yY\"],8:[\"7&\",null,null,\"9(\",\"iI\",\"uU\"],9:[\"8*\",null,null,\"0)\",\"oO\",\"iI\"],\":\":[\"lL\",\"pP\",\"[{\",\"'\\\"\",\"/?\",\".>\"],\";\":[\"lL\",\"pP\",\"[{\",\"'\\\"\",\"/?\",\".>\"],\"<\":[\"mM\",\"kK\",\"lL\",\".>\",null,null],\"=\":[\"-_\",null,null,null,\"]}\",\"[{\"],\">\":[\",<\",\"lL\",\";:\",\"/?\",null,null],\"?\":[\".>\",\";:\",\"'\\\"\",null,null,null],\"@\":[\"1!\",null,null,\"3#\",\"wW\",\"qQ\"],A:[null,\"qQ\",\"wW\",\"sS\",\"zZ\",null],B:[\"vV\",\"gG\",\"hH\",\"nN\",null,null],C:[\"xX\",\"dD\",\"fF\",\"vV\",null,null],D:[\"sS\",\"eE\",\"rR\",\"fF\",\"cC\",\"xX\"],E:[\"wW\",\"3#\",\"4$\",\"rR\",\"dD\",\"sS\"],F:[\"dD\",\"rR\",\"tT\",\"gG\",\"vV\",\"cC\"],G:[\"fF\",\"tT\",\"yY\",\"hH\",\"bB\",\"vV\"],H:[\"gG\",\"yY\",\"uU\",\"jJ\",\"nN\",\"bB\"],I:[\"uU\",\"8*\",\"9(\",\"oO\",\"kK\",\"jJ\"],J:[\"hH\",\"uU\",\"iI\",\"kK\",\"mM\",\"nN\"],K:[\"jJ\",\"iI\",\"oO\",\"lL\",\",<\",\"mM\"],L:[\"kK\",\"oO\",\"pP\",\";:\",\".>\",\",<\"],M:[\"nN\",\"jJ\",\"kK\",\",<\",null,null],N:[\"bB\",\"hH\",\"jJ\",\"mM\",null,null],O:[\"iI\",\"9(\",\"0)\",\"pP\",\"lL\",\"kK\"],P:[\"oO\",\"0)\",\"-_\",\"[{\",\";:\",\"lL\"],Q:[null,\"1!\",\"2@\",\"wW\",\"aA\",null],R:[\"eE\",\"4$\",\"5%\",\"tT\",\"fF\",\"dD\"],S:[\"aA\",\"wW\",\"eE\",\"dD\",\"xX\",\"zZ\"],T:[\"rR\",\"5%\",\"6^\",\"yY\",\"gG\",\"fF\"],U:[\"yY\",\"7&\",\"8*\",\"iI\",\"jJ\",\"hH\"],V:[\"cC\",\"fF\",\"gG\",\"bB\",null,null],W:[\"qQ\",\"2@\",\"3#\",\"eE\",\"sS\",\"aA\"],X:[\"zZ\",\"sS\",\"dD\",\"cC\",null,null],Y:[\"tT\",\"6^\",\"7&\",\"uU\",\"hH\",\"gG\"],Z:[null,\"aA\",\"sS\",\"xX\",null,null],\"[\":[\"pP\",\"-_\",\"=+\",\"]}\",\"'\\\"\",\";:\"],\"\\\\\":[\"]}\",null,null,null,null,null],\"]\":[\"[{\",\"=+\",null,\"\\\\|\",null,\"'\\\"\"],\"^\":[\"5%\",null,null,\"7&\",\"yY\",\"tT\"],_:[\"0)\",null,null,\"=+\",\"[{\",\"pP\"],\"`\":[null,null,null,\"1!\",null,null],a:[null,\"qQ\",\"wW\",\"sS\",\"zZ\",null],b:[\"vV\",\"gG\",\"hH\",\"nN\",null,null],c:[\"xX\",\"dD\",\"fF\",\"vV\",null,null],d:[\"sS\",\"eE\",\"rR\",\"fF\",\"cC\",\"xX\"],e:[\"wW\",\"3#\",\"4$\",\"rR\",\"dD\",\"sS\"],f:[\"dD\",\"rR\",\"tT\",\"gG\",\"vV\",\"cC\"],g:[\"fF\",\"tT\",\"yY\",\"hH\",\"bB\",\"vV\"],h:[\"gG\",\"yY\",\"uU\",\"jJ\",\"nN\",\"bB\"],i:[\"uU\",\"8*\",\"9(\",\"oO\",\"kK\",\"jJ\"],j:[\"hH\",\"uU\",\"iI\",\"kK\",\"mM\",\"nN\"],k:[\"jJ\",\"iI\",\"oO\",\"lL\",\",<\",\"mM\"],l:[\"kK\",\"oO\",\"pP\",\";:\",\".>\",\",<\"],m:[\"nN\",\"jJ\",\"kK\",\",<\",null,null],n:[\"bB\",\"hH\",\"jJ\",\"mM\",null,null],o:[\"iI\",\"9(\",\"0)\",\"pP\",\"lL\",\"kK\"],p:[\"oO\",\"0)\",\"-_\",\"[{\",\";:\",\"lL\"],q:[null,\"1!\",\"2@\",\"wW\",\"aA\",null],r:[\"eE\",\"4$\",\"5%\",\"tT\",\"fF\",\"dD\"],s:[\"aA\",\"wW\",\"eE\",\"dD\",\"xX\",\"zZ\"],t:[\"rR\",\"5%\",\"6^\",\"yY\",\"gG\",\"fF\"],u:[\"yY\",\"7&\",\"8*\",\"iI\",\"jJ\",\"hH\"],v:[\"cC\",\"fF\",\"gG\",\"bB\",null,null],w:[\"qQ\",\"2@\",\"3#\",\"eE\",\"sS\",\"aA\"],x:[\"zZ\",\"sS\",\"dD\",\"cC\",null,null],y:[\"tT\",\"6^\",\"7&\",\"uU\",\"hH\",\"gG\"],z:[null,\"aA\",\"sS\",\"xX\",null,null],\"{\":[\"pP\",\"-_\",\"=+\",\"]}\",\"'\\\"\",\";:\"],\"|\":[\"]}\",null,null,null,null,null],\"}\":[\"[{\",\"=+\",null,\"\\\\|\",null,\"'\\\"\"],\"~\":[null,null,null,\"1!\",null,null]},dvorak:{\"!\":[\"`~\",null,null,\"2@\",\"'\\\"\",null],'\"':[null,\"1!\",\"2@\",\",<\",\"aA\",null],\"#\":[\"2@\",null,null,\"4$\",\".>\",\",<\"],$:[\"3#\",null,null,\"5%\",\"pP\",\".>\"],\"%\":[\"4$\",null,null,\"6^\",\"yY\",\"pP\"],\"&\":[\"6^\",null,null,\"8*\",\"gG\",\"fF\"],\"'\":[null,\"1!\",\"2@\",\",<\",\"aA\",null],\"(\":[\"8*\",null,null,\"0)\",\"rR\",\"cC\"],\")\":[\"9(\",null,null,\"[{\",\"lL\",\"rR\"],\"*\":[\"7&\",null,null,\"9(\",\"cC\",\"gG\"],\"+\":[\"/?\",\"]}\",null,\"\\\\|\",null,\"-_\"],\",\":[\"'\\\"\",\"2@\",\"3#\",\".>\",\"oO\",\"aA\"],\"-\":[\"sS\",\"/?\",\"=+\",null,null,\"zZ\"],\".\":[\",<\",\"3#\",\"4$\",\"pP\",\"eE\",\"oO\"],\"/\":[\"lL\",\"[{\",\"]}\",\"=+\",\"-_\",\"sS\"],0:[\"9(\",null,null,\"[{\",\"lL\",\"rR\"],1:[\"`~\",null,null,\"2@\",\"'\\\"\",null],2:[\"1!\",null,null,\"3#\",\",<\",\"'\\\"\"],3:[\"2@\",null,null,\"4$\",\".>\",\",<\"],4:[\"3#\",null,null,\"5%\",\"pP\",\".>\"],5:[\"4$\",null,null,\"6^\",\"yY\",\"pP\"],6:[\"5%\",null,null,\"7&\",\"fF\",\"yY\"],7:[\"6^\",null,null,\"8*\",\"gG\",\"fF\"],8:[\"7&\",null,null,\"9(\",\"cC\",\"gG\"],9:[\"8*\",null,null,\"0)\",\"rR\",\"cC\"],\":\":[null,\"aA\",\"oO\",\"qQ\",null,null],\";\":[null,\"aA\",\"oO\",\"qQ\",null,null],\"<\":[\"'\\\"\",\"2@\",\"3#\",\".>\",\"oO\",\"aA\"],\"=\":[\"/?\",\"]}\",null,\"\\\\|\",null,\"-_\"],\">\":[\",<\",\"3#\",\"4$\",\"pP\",\"eE\",\"oO\"],\"?\":[\"lL\",\"[{\",\"]}\",\"=+\",\"-_\",\"sS\"],\"@\":[\"1!\",null,null,\"3#\",\",<\",\"'\\\"\"],A:[null,\"'\\\"\",\",<\",\"oO\",\";:\",null],B:[\"xX\",\"dD\",\"hH\",\"mM\",null,null],C:[\"gG\",\"8*\",\"9(\",\"rR\",\"tT\",\"hH\"],D:[\"iI\",\"fF\",\"gG\",\"hH\",\"bB\",\"xX\"],E:[\"oO\",\".>\",\"pP\",\"uU\",\"jJ\",\"qQ\"],F:[\"yY\",\"6^\",\"7&\",\"gG\",\"dD\",\"iI\"],G:[\"fF\",\"7&\",\"8*\",\"cC\",\"hH\",\"dD\"],H:[\"dD\",\"gG\",\"cC\",\"tT\",\"mM\",\"bB\"],I:[\"uU\",\"yY\",\"fF\",\"dD\",\"xX\",\"kK\"],J:[\"qQ\",\"eE\",\"uU\",\"kK\",null,null],K:[\"jJ\",\"uU\",\"iI\",\"xX\",null,null],L:[\"rR\",\"0)\",\"[{\",\"/?\",\"sS\",\"nN\"],M:[\"bB\",\"hH\",\"tT\",\"wW\",null,null],N:[\"tT\",\"rR\",\"lL\",\"sS\",\"vV\",\"wW\"],O:[\"aA\",\",<\",\".>\",\"eE\",\"qQ\",\";:\"],P:[\".>\",\"4$\",\"5%\",\"yY\",\"uU\",\"eE\"],Q:[\";:\",\"oO\",\"eE\",\"jJ\",null,null],R:[\"cC\",\"9(\",\"0)\",\"lL\",\"nN\",\"tT\"],S:[\"nN\",\"lL\",\"/?\",\"-_\",\"zZ\",\"vV\"],T:[\"hH\",\"cC\",\"rR\",\"nN\",\"wW\",\"mM\"],U:[\"eE\",\"pP\",\"yY\",\"iI\",\"kK\",\"jJ\"],V:[\"wW\",\"nN\",\"sS\",\"zZ\",null,null],W:[\"mM\",\"tT\",\"nN\",\"vV\",null,null],X:[\"kK\",\"iI\",\"dD\",\"bB\",null,null],Y:[\"pP\",\"5%\",\"6^\",\"fF\",\"iI\",\"uU\"],Z:[\"vV\",\"sS\",\"-_\",null,null,null],\"[\":[\"0)\",null,null,\"]}\",\"/?\",\"lL\"],\"\\\\\":[\"=+\",null,null,null,null,null],\"]\":[\"[{\",null,null,null,\"=+\",\"/?\"],\"^\":[\"5%\",null,null,\"7&\",\"fF\",\"yY\"],_:[\"sS\",\"/?\",\"=+\",null,null,\"zZ\"],\"`\":[null,null,null,\"1!\",null,null],a:[null,\"'\\\"\",\",<\",\"oO\",\";:\",null],b:[\"xX\",\"dD\",\"hH\",\"mM\",null,null],c:[\"gG\",\"8*\",\"9(\",\"rR\",\"tT\",\"hH\"],d:[\"iI\",\"fF\",\"gG\",\"hH\",\"bB\",\"xX\"],e:[\"oO\",\".>\",\"pP\",\"uU\",\"jJ\",\"qQ\"],f:[\"yY\",\"6^\",\"7&\",\"gG\",\"dD\",\"iI\"],g:[\"fF\",\"7&\",\"8*\",\"cC\",\"hH\",\"dD\"],h:[\"dD\",\"gG\",\"cC\",\"tT\",\"mM\",\"bB\"],i:[\"uU\",\"yY\",\"fF\",\"dD\",\"xX\",\"kK\"],j:[\"qQ\",\"eE\",\"uU\",\"kK\",null,null],k:[\"jJ\",\"uU\",\"iI\",\"xX\",null,null],l:[\"rR\",\"0)\",\"[{\",\"/?\",\"sS\",\"nN\"],m:[\"bB\",\"hH\",\"tT\",\"wW\",null,null],n:[\"tT\",\"rR\",\"lL\",\"sS\",\"vV\",\"wW\"],o:[\"aA\",\",<\",\".>\",\"eE\",\"qQ\",\";:\"],p:[\".>\",\"4$\",\"5%\",\"yY\",\"uU\",\"eE\"],q:[\";:\",\"oO\",\"eE\",\"jJ\",null,null],r:[\"cC\",\"9(\",\"0)\",\"lL\",\"nN\",\"tT\"],s:[\"nN\",\"lL\",\"/?\",\"-_\",\"zZ\",\"vV\"],t:[\"hH\",\"cC\",\"rR\",\"nN\",\"wW\",\"mM\"],u:[\"eE\",\"pP\",\"yY\",\"iI\",\"kK\",\"jJ\"],v:[\"wW\",\"nN\",\"sS\",\"zZ\",null,null],w:[\"mM\",\"tT\",\"nN\",\"vV\",null,null],x:[\"kK\",\"iI\",\"dD\",\"bB\",null,null],y:[\"pP\",\"5%\",\"6^\",\"fF\",\"iI\",\"uU\"],z:[\"vV\",\"sS\",\"-_\",null,null,null],\"{\":[\"0)\",null,null,\"]}\",\"/?\",\"lL\"],\"|\":[\"=+\",null,null,null,null,null],\"}\":[\"[{\",null,null,null,\"=+\",\"/?\"],\"~\":[null,null,null,\"1!\",null,null]},keypad:{\"*\":[\"/\",null,null,null,\"-\",\"+\",\"9\",\"8\"],\"+\":[\"9\",\"*\",\"-\",null,null,null,null,\"6\"],\"-\":[\"*\",null,null,null,null,null,\"+\",\"9\"],\".\":[\"0\",\"2\",\"3\",null,null,null,null,null],\"/\":[null,null,null,null,\"*\",\"9\",\"8\",\"7\"],0:[null,\"1\",\"2\",\"3\",\".\",null,null,null],1:[null,null,\"4\",\"5\",\"2\",\"0\",null,null],2:[\"1\",\"4\",\"5\",\"6\",\"3\",\".\",\"0\",null],3:[\"2\",\"5\",\"6\",null,null,null,\".\",\"0\"],4:[null,null,\"7\",\"8\",\"5\",\"2\",\"1\",null],5:[\"4\",\"7\",\"8\",\"9\",\"6\",\"3\",\"2\",\"1\"],6:[\"5\",\"8\",\"9\",\"+\",null,null,\"3\",\"2\"],7:[null,null,null,\"/\",\"8\",\"5\",\"4\",null],8:[\"7\",null,\"/\",\"*\",\"9\",\"6\",\"5\",\"4\"],9:[\"8\",\"/\",\"*\",\"-\",\"+\",null,\"6\",\"5\"]},mac_keypad:{\"*\":[\"/\",null,null,null,null,null,\"-\",\"9\"],\"+\":[\"6\",\"9\",\"-\",null,null,null,null,\"3\"],\"-\":[\"9\",\"/\",\"*\",null,null,null,\"+\",\"6\"],\".\":[\"0\",\"2\",\"3\",null,null,null,null,null],\"/\":[\"=\",null,null,null,\"*\",\"-\",\"9\",\"8\"],0:[null,\"1\",\"2\",\"3\",\".\",null,null,null],1:[null,null,\"4\",\"5\",\"2\",\"0\",null,null],2:[\"1\",\"4\",\"5\",\"6\",\"3\",\".\",\"0\",null],3:[\"2\",\"5\",\"6\",\"+\",null,null,\".\",\"0\"],4:[null,null,\"7\",\"8\",\"5\",\"2\",\"1\",null],5:[\"4\",\"7\",\"8\",\"9\",\"6\",\"3\",\"2\",\"1\"],6:[\"5\",\"8\",\"9\",\"-\",\"+\",null,\"3\",\"2\"],7:[null,null,null,\"=\",\"8\",\"5\",\"4\",null],8:[\"7\",null,\"=\",\"/\",\"9\",\"6\",\"5\",\"4\"],9:[\"8\",\"=\",\"/\",\"*\",\"-\",\"+\",\"6\",\"5\"],\"=\":[null,null,null,null,\"/\",\"9\",\"8\",\"7\"]}},module.exports=adjacency_graphs;\n\n},{}],2:[function(require,module,exports){\n    var feedback,scoring;scoring=require(\"./scoring\"),feedback={default_feedback:{warning:\"\",suggestions:[\"Use a few words, avoid common phrases\",\"No need for symbols, digits, or uppercase letters\"]},get_feedback:function(e,s){var a,t,r,n,o,i;if(0===s.length)return this.default_feedback;if(e>2)return{warning:\"\",suggestions:[]};for(n=s[0],i=s.slice(1),t=0,r=i.length;r>t;t++)o=i[t],o.token.length>n.token.length&&(n=o);return feedback=this.get_match_feedback(n,1===s.length),a=\"Add another word or two. Uncommon words are better.\",null!=feedback?(feedback.suggestions.unshift(a),null==feedback.warning&&(feedback.warning=\"\")):feedback={warning:\"\",suggestions:[a]},feedback},get_match_feedback:function(e,s){var a,t;switch(e.pattern){case\"dictionary\":return this.get_dictionary_match_feedback(e,s);case\"spatial\":return a=e.graph.toUpperCase(),t=1===e.turns?\"Straight rows of keys are easy to guess\":\"Short keyboard patterns are easy to guess\",{warning:t,suggestions:[\"Use a longer keyboard pattern with more turns\"]};case\"repeat\":return t=1===e.base_token.length?'Repeats like \"aaa\" are easy to guess':'Repeats like \"abcabcabc\" are only slightly harder to guess than \"abc\"',{warning:t,suggestions:[\"Avoid repeated words and characters\"]};case\"sequence\":return{warning:\"Sequences like abc or 6543 are easy to guess\",suggestions:[\"Avoid sequences\"]};case\"regex\":if(\"recent_year\"===e.regex_name)return{warning:\"Recent years are easy to guess\",suggestions:[\"Avoid recent years\",\"Avoid years that are associated with you\"]};break;case\"date\":return{warning:\"Dates are often easy to guess\",suggestions:[\"Avoid dates and years that are associated with you\"]}}},get_dictionary_match_feedback:function(e,s){var a,t,r,n,o;return n=\"passwords\"===e.dictionary_name?!s||e.l33t||e.reversed?e.guesses_log10<=4?\"This is similar to a commonly used password\":void 0:e.rank<=10?\"This is a top-10 common password\":e.rank<=100?\"This is a top-100 common password\":\"This is a very common password\":\"english\"===e.dictionary_name?s?\"A word by itself is easy to guess\":void 0:\"surnames\"===(a=e.dictionary_name)||\"male_names\"===a||\"female_names\"===a?s?\"Names and surnames by themselves are easy to guess\":\"Common names and surnames are easy to guess\":\"\",r=[],o=e.token,o.match(scoring.START_UPPER)?r.push(\"Capitalization doesn't help very much\"):o.match(scoring.ALL_UPPER)&&o.toLowerCase()!==o&&r.push(\"All-uppercase is almost as easy to guess as all-lowercase\"),e.reversed&&e.token.length>=4&&r.push(\"Reversed words aren't much harder to guess\"),e.l33t&&r.push(\"Predictable substitutions like '@' instead of 'a' don't help very much\"),t={warning:n,suggestions:r}}},module.exports=feedback;\n\n},{\"./scoring\":6}],3:[function(require,module,exports){\n    var frequency_lists;frequency_lists={passwords:\"123456,password,12345678,qwerty,123456789,12345,1234,111111,1234567,dragon,123123,baseball,abc123,football,monkey,letmein,shadow,master,696969,mustang,666666,qwertyuiop,123321,1234567890,pussy,superman,654321,1qaz2wsx,7777777,fuckyou,qazwsx,jordan,123qwe,000000,killer,trustno1,hunter,harley,zxcvbnm,asdfgh,buster,batman,soccer,tigger,charlie,sunshine,iloveyou,fuckme,ranger,hockey,computer,starwars,asshole,pepper,klaster,112233,zxcvbn,freedom,princess,maggie,pass,ginger,11111111,131313,fuck,love,cheese,159753,summer,chelsea,dallas,biteme,matrix,yankees,6969,corvette,austin,access,thunder,merlin,secret,diamond,hello,hammer,fucker,1234qwer,silver,gfhjkm,internet,samantha,golfer,scooter,test,orange,cookie,q1w2e3r4t5,maverick,sparky,phoenix,mickey,bigdog,snoopy,guitar,whatever,chicken,camaro,mercedes,peanut,ferrari,falcon,cowboy,welcome,sexy,samsung,steelers,smokey,dakota,arsenal,boomer,eagles,tigers,marina,nascar,booboo,gateway,yellow,porsche,monster,spider,diablo,hannah,bulldog,junior,london,purple,compaq,lakers,iceman,qwer1234,hardcore,cowboys,money,banana,ncc1701,boston,tennis,q1w2e3r4,coffee,scooby,123654,nikita,yamaha,mother,barney,brandy,chester,fuckoff,oliver,player,forever,rangers,midnight,chicago,bigdaddy,redsox,angel,badboy,fender,jasper,slayer,rabbit,natasha,marine,bigdick,wizard,marlboro,raiders,prince,casper,fishing,flower,jasmine,iwantu,panties,adidas,winter,winner,gandalf,password1,enter,ghbdtn,1q2w3e4r,golden,cocacola,jordan23,winston,madison,angels,panther,blowme,sexsex,bigtits,spanky,bitch,sophie,asdfasdf,horny,thx1138,toyota,tiger,dick,canada,12344321,blowjob,8675309,muffin,liverpoo,apples,qwerty123,passw0rd,abcd1234,pokemon,123abc,slipknot,qazxsw,123456a,scorpion,qwaszx,butter,startrek,rainbow,asdfghjkl,razz,newyork,redskins,gemini,cameron,qazwsxedc,florida,liverpool,turtle,sierra,viking,booger,butthead,doctor,rocket,159357,dolphins,captain,bandit,jaguar,packers,pookie,peaches,789456,asdf,dolphin,helpme,blue,theman,maxwell,qwertyui,shithead,lovers,maddog,giants,nirvana,metallic,hotdog,rosebud,mountain,warrior,stupid,elephant,suckit,success,bond007,jackass,alexis,porn,lucky,scorpio,samson,q1w2e3,azerty,rush2112,driver,freddy,1q2w3e4r5t,sydney,gators,dexter,red123,123456q,12345a,bubba,creative,voodoo,golf,trouble,america,nissan,gunner,garfield,bullshit,asdfghjk,5150,fucking,apollo,1qazxsw2,2112,eminem,legend,airborne,bear,beavis,apple,brooklyn,godzilla,skippy,4815162342,buddy,qwert,kitten,magic,shelby,beaver,phantom,asdasd,xavier,braves,darkness,blink182,copper,platinum,qweqwe,tomcat,01012011,girls,bigboy,102030,animal,police,online,11223344,voyager,lifehack,12qwaszx,fish,sniper,315475,trinity,blazer,heaven,lover,snowball,playboy,loveme,bubbles,hooters,cricket,willow,donkey,topgun,nintendo,saturn,destiny,pakistan,pumpkin,digital,sergey,redwings,explorer,tits,private,runner,therock,guinness,lasvegas,beatles,789456123,fire,cassie,christin,qwerty1,celtic,asdf1234,andrey,broncos,007007,babygirl,eclipse,fluffy,cartman,michigan,carolina,testing,alexande,birdie,pantera,cherry,vampire,mexico,dickhead,buffalo,genius,montana,beer,minecraft,maximus,flyers,lovely,stalker,metallica,doggie,snickers,speedy,bronco,lol123,paradise,yankee,horses,magnum,dreams,147258369,lacrosse,ou812,goober,enigma,qwertyu,scotty,pimpin,bollocks,surfer,cock,poohbear,genesis,star,asd123,qweasdzxc,racing,hello1,hawaii,eagle1,viper,poopoo,einstein,boobies,12345q,bitches,drowssap,simple,badger,alaska,action,jester,drummer,111222,spitfire,forest,maryjane,champion,diesel,svetlana,friday,hotrod,147258,chevy,lucky1,westside,security,google,badass,tester,shorty,thumper,hitman,mozart,zaq12wsx,boobs,reddog,010203,lizard,a123456,123456789a,ruslan,eagle,1232323q,scarface,qwerty12,147852,a12345,buddha,porno,420420,spirit,money1,stargate,qwe123,naruto,mercury,liberty,12345qwert,semperfi,suzuki,popcorn,spooky,marley,scotland,kitty,cherokee,vikings,simpsons,rascal,qweasd,hummer,loveyou,michael1,patches,russia,jupiter,penguin,passion,cumshot,vfhbyf,honda,vladimir,sandman,passport,raider,bastard,123789,infinity,assman,bulldogs,fantasy,sucker,1234554321,horney,domino,budlight,disney,ironman,usuckballz1,softball,brutus,redrum,bigred,mnbvcxz,fktrcfylh,karina,marines,digger,kawasaki,cougar,fireman,oksana,monday,cunt,justice,nigger,super,wildcats,tinker,logitech,dancer,swordfis,avalon,everton,alexandr,motorola,patriots,hentai,madonna,pussy1,ducati,colorado,connor,juventus,galore,smooth,freeuser,warcraft,boogie,titanic,wolverin,elizabet,arizona,valentin,saints,asdfg,accord,test123,password123,christ,yfnfif,stinky,slut,spiderma,naughty,chopper,hello123,ncc1701d,extreme,skyline,poop,zombie,pearljam,123qweasd,froggy,awesome,vision,pirate,fylhtq,dreamer,bullet,predator,empire,123123a,kirill,charlie1,panthers,penis,skipper,nemesis,rasdzv3,peekaboo,rolltide,cardinal,psycho,danger,mookie,happy1,wanker,chevelle,manutd,goblue,9379992,hobbes,vegeta,fyfcnfcbz,852456,picard,159951,windows,loverboy,victory,vfrcbv,bambam,serega,123654789,turkey,tweety,galina,hiphop,rooster,changeme,berlin,taurus,suckme,polina,electric,avatar,134679,maksim,raptor,alpha1,hendrix,newport,bigcock,brazil,spring,a1b2c3,madmax,alpha,britney,sublime,darkside,bigman,wolfpack,classic,hercules,ronaldo,letmein1,1q2w3e,741852963,spiderman,blizzard,123456789q,cheyenne,cjkysirj,tiger1,wombat,bubba1,pandora,zxc123,holiday,wildcat,devils,horse,alabama,147852369,caesar,12312,buddy1,bondage,pussycat,pickle,shaggy,catch22,leather,chronic,a1b2c3d4,admin,qqq111,qaz123,airplane,kodiak,freepass,billybob,sunset,katana,phpbb,chocolat,snowman,angel1,stingray,firebird,wolves,zeppelin,detroit,pontiac,gundam,panzer,vagina,outlaw,redhead,tarheels,greenday,nastya,01011980,hardon,engineer,dragon1,hellfire,serenity,cobra,fireball,lickme,darkstar,1029384756,01011,mustang1,flash,124578,strike,beauty,pavilion,01012000,bobafett,dbrnjhbz,bigmac,bowling,chris1,ytrewq,natali,pyramid,rulez,welcome1,dodgers,apache,swimming,whynot,teens,trooper,fuckit,defender,precious,135790,packard,weasel,popeye,lucifer,cancer,icecream,142536,raven,swordfish,presario,viktor,rockstar,blonde,james1,wutang,spike,pimp,atlanta,airforce,thailand,casino,lennon,mouse,741852,hacker,bluebird,hawkeye,456123,theone,catfish,sailor,goldfish,nfnmzyf,tattoo,pervert,barbie,maxima,nipples,machine,trucks,wrangler,rocks,tornado,lights,cadillac,bubble,pegasus,madman,longhorn,browns,target,666999,eatme,qazwsx123,microsoft,dilbert,christia,baller,lesbian,shooter,xfiles,seattle,qazqaz,cthutq,amateur,prelude,corona,freaky,malibu,123qweasdzxc,assassin,246810,atlantis,integra,pussies,iloveu,lonewolf,dragons,monkey1,unicorn,software,bobcat,stealth,peewee,openup,753951,srinivas,zaqwsx,valentina,shotgun,trigger,veronika,bruins,coyote,babydoll,joker,dollar,lestat,rocky1,hottie,random,butterfly,wordpass,smiley,sweety,snake,chipper,woody,samurai,devildog,gizmo,maddie,soso123aljg,mistress,freedom1,flipper,express,hjvfirf,moose,cessna,piglet,polaris,teacher,montreal,cookies,wolfgang,scully,fatboy,wicked,balls,tickle,bunny,dfvgbh,foobar,transam,pepsi,fetish,oicu812,basketba,toshiba,hotstuff,sunday,booty,gambit,31415926,impala,stephani,jessica1,hooker,lancer,knicks,shamrock,fuckyou2,stinger,314159,redneck,deftones,squirt,siemens,blaster,trucker,subaru,renegade,ibanez,manson,swinger,reaper,blondie,mylove,galaxy,blahblah,enterpri,travel,1234abcd,babylon5,indiana,skeeter,master1,sugar,ficken,smoke,bigone,sweetpea,fucked,trfnthbyf,marino,escort,smitty,bigfoot,babes,larisa,trumpet,spartan,valera,babylon,asdfghj,yankees1,bigboobs,stormy,mister,hamlet,aardvark,butterfl,marathon,paladin,cavalier,manchester,skater,indigo,hornet,buckeyes,01011990,indians,karate,hesoyam,toronto,diamonds,chiefs,buckeye,1qaz2wsx3edc,highland,hotsex,charger,redman,passwor,maiden,drpepper,storm,pornstar,garden,12345678910,pencil,sherlock,timber,thuglife,insane,pizza,jungle,jesus1,aragorn,1a2b3c,hamster,david1,triumph,techno,lollol,pioneer,catdog,321654,fktrctq,morpheus,141627,pascal,shadow1,hobbit,wetpussy,erotic,consumer,blabla,justme,stones,chrissy,spartak,goforit,burger,pitbull,adgjmptw,italia,barcelona,hunting,colors,kissme,virgin,overlord,pebbles,sundance,emerald,doggy,racecar,irina,element,1478963,zipper,alpine,basket,goddess,poison,nipple,sakura,chichi,huskers,13579,pussys,q12345,ultimate,ncc1701e,blackie,nicola,rommel,matthew1,caserta,omega,geronimo,sammy1,trojan,123qwe123,philips,nugget,tarzan,chicks,aleksandr,bassman,trixie,portugal,anakin,dodger,bomber,superfly,madness,q1w2e3r4t5y6,loser,123asd,fatcat,ybrbnf,soldier,warlock,wrinkle1,desire,sexual,babe,seminole,alejandr,951753,11235813,westham,andrei,concrete,access14,weed,letmein2,ladybug,naked,christop,trombone,tintin,bluesky,rhbcnbyf,qazxswedc,onelove,cdtnkfyf,whore,vfvjxrf,titans,stallion,truck,hansolo,blue22,smiles,beagle,panama,kingkong,flatron,inferno,mongoose,connect,poiuyt,snatch,qawsed,juice,blessed,rocker,snakes,turbo,bluemoon,sex4me,finger,jamaica,a1234567,mulder,beetle,fuckyou1,passat,immortal,plastic,123454321,anthony1,whiskey,dietcoke,suck,spunky,magic1,monitor,cactus,exigen,planet,ripper,teen,spyder,apple1,nolimit,hollywoo,sluts,sticky,trunks,1234321,14789632,pickles,sailing,bonehead,ghbdtnbr,delta,charlott,rubber,911911,112358,molly1,yomama,hongkong,jumper,william1,ilovesex,faster,unreal,cumming,memphis,1123581321,nylons,legion,sebastia,shalom,pentium,geheim,werewolf,funtime,ferret,orion,curious,555666,niners,cantona,sprite,philly,pirates,abgrtyu,lollipop,eternity,boeing,super123,sweets,cooldude,tottenha,green1,jackoff,stocking,7895123,moomoo,martini,biscuit,drizzt,colt45,fossil,makaveli,snapper,satan666,maniac,salmon,patriot,verbatim,nasty,shasta,asdzxc,shaved,blackcat,raistlin,qwerty12345,punkrock,cjkywt,01012010,4128,waterloo,crimson,twister,oxford,musicman,seinfeld,biggie,condor,ravens,megadeth,wolfman,cosmos,sharks,banshee,keeper,foxtrot,gn56gn56,skywalke,velvet,black1,sesame,dogs,squirrel,privet,sunrise,wolverine,sucks,legolas,grendel,ghost,cats,carrot,frosty,lvbnhbq,blades,stardust,frog,qazwsxed,121314,coolio,brownie,groovy,twilight,daytona,vanhalen,pikachu,peanuts,licker,hershey,jericho,intrepid,ninja,1234567a,zaq123,lobster,goblin,punisher,strider,shogun,kansas,amadeus,seven7,jason1,neptune,showtime,muscle,oldman,ekaterina,rfrfirf,getsome,showme,111222333,obiwan,skittles,danni,tanker,maestro,tarheel,anubis,hannibal,anal,newlife,gothic,shark,fighter,blue123,blues,123456z,princes,slick,chaos,thunder1,sabine,1q2w3e4r5t6y,python,test1,mirage,devil,clover,tequila,chelsea1,surfing,delete,potato,chubby,panasonic,sandiego,portland,baggins,fusion,sooners,blackdog,buttons,californ,moscow,playtime,mature,1a2b3c4d,dagger,dima,stimpy,asdf123,gangster,warriors,iverson,chargers,byteme,swallow,liquid,lucky7,dingdong,nymets,cracker,mushroom,456852,crusader,bigguy,miami,dkflbvbh,bugger,nimrod,tazman,stranger,newpass,doodle,powder,gotcha,guardian,dublin,slapshot,septembe,147896325,pepsi1,milano,grizzly,woody1,knights,photos,2468,nookie,charly,rammstein,brasil,123321123,scruffy,munchkin,poopie,123098,kittycat,latino,walnut,1701,thegame,viper1,1passwor,kolobok,picasso,robert1,barcelon,bananas,trance,auburn,coltrane,eatshit,goodluck,starcraft,wheels,parrot,postal,blade,wisdom,pink,gorilla,katerina,pass123,andrew1,shaney14,dumbass,osiris,fuck_inside,oakland,discover,ranger1,spanking,lonestar,bingo,meridian,ping,heather1,dookie,stonecol,megaman,192837465,rjntyjr,ledzep,lowrider,25802580,richard1,firefly,griffey,racerx,paradox,ghjcnj,gangsta,zaq1xsw2,tacobell,weezer,sirius,halflife,buffett,shiloh,123698745,vertigo,sergei,aliens,sobaka,keyboard,kangaroo,sinner,soccer1,0.0.000,bonjour,socrates,chucky,hotboy,sprint,0007,sarah1,scarlet,celica,shazam,formula1,sommer,trebor,qwerasdf,jeep,mailcreated5240,bollox,asshole1,fuckface,honda1,rebels,vacation,lexmark,penguins,12369874,ragnarok,formula,258456,tempest,vfhecz,tacoma,qwertz,colombia,flames,rockon,duck,prodigy,wookie,dodgeram,mustangs,123qaz,sithlord,smoker,server,bang,incubus,scoobydo,oblivion,molson,kitkat,titleist,rescue,zxcv1234,carpet,1122,bigballs,tardis,jimbob,xanadu,blueeyes,shaman,mersedes,pooper,pussy69,golfing,hearts,mallard,12312312,kenwood,patrick1,dogg,cowboys1,oracle,123zxc,nuttertools,102938,topper,1122334455,shemale,sleepy,gremlin,yourmom,123987,gateway1,printer,monkeys,peterpan,mikey,kingston,cooler,analsex,jimbo,pa55word,asterix,freckles,birdman,frank1,defiant,aussie,stud,blondes,tatyana,445566,aspirine,mariners,jackal,deadhead,katrin,anime,rootbeer,frogger,polo,scooter1,hallo,noodles,thomas1,parola,shaolin,celine,11112222,plymouth,creampie,justdoit,ohyeah,fatass,assfuck,amazon,1234567q,kisses,magnus,camel,nopass,bosco,987456,6751520,harley1,putter,champs,massive,spidey,lightnin,camelot,letsgo,gizmodo,aezakmi,bones,caliente,12121,goodtime,thankyou,raiders1,brucelee,redalert,aquarius,456654,catherin,smokin,pooh,mypass,astros,roller,porkchop,sapphire,qwert123,kevin1,a1s2d3f4,beckham,atomic,rusty1,vanilla,qazwsxedcrfv,hunter1,kaktus,cxfcnmt,blacky,753159,elvis1,aggies,blackjac,bangkok,scream,123321q,iforgot,power1,kasper,abc12,buster1,slappy,shitty,veritas,chevrole,amber1,01012001,vader,amsterdam,jammer,primus,spectrum,eduard,granny,horny1,sasha1,clancy,usa123,satan,diamond1,hitler,avenger,1221,spankme,123456qwerty,simba,smudge,scrappy,labrador,john316,syracuse,front242,falcons,husker,candyman,commando,gator,pacman,delta1,pancho,krishna,fatman,clitoris,pineappl,lesbians,8j4ye3uz,barkley,vulcan,punkin,boner,celtics,monopoly,flyboy,romashka,hamburg,123456aa,lick,gangbang,223344,area51,spartans,aaa111,tricky,snuggles,drago,homerun,vectra,homer1,hermes,topcat,cuddles,infiniti,1234567890q,cosworth,goose,phoenix1,killer1,ivanov,bossman,qawsedrf,peugeot,exigent,doberman,durango,brandon1,plumber,telefon,horndog,laguna,rbhbkk,dawg,webmaster,breeze,beast,porsche9,beefcake,leopard,redbull,oscar1,topdog,godsmack,theking,pics,omega1,speaker,viktoria,fuckers,bowler,starbuck,gjkbyf,valhalla,anarchy,blacks,herbie,kingpin,starfish,nokia,loveit,achilles,906090,labtec,ncc1701a,fitness,jordan1,brando,arsenal1,bull,kicker,napass,desert,sailboat,bohica,tractor,hidden,muppet,jackson1,jimmy1,terminator,phillies,pa55w0rd,terror,farside,swingers,legacy,frontier,butthole,doughboy,jrcfyf,tuesday,sabbath,daniel1,nebraska,homers,qwertyuio,azamat,fallen,agent007,striker,camels,iguana,looker,pinkfloy,moloko,qwerty123456,dannyboy,luckydog,789654,pistol,whocares,charmed,skiing,select,franky,puppy,daniil,vladik,vette,vfrcbvrf,ihateyou,nevada,moneys,vkontakte,mandingo,puppies,666777,mystic,zidane,kotenok,dilligaf,budman,bunghole,zvezda,123457,triton,golfball,technics,trojans,panda,laptop,rookie,01011991,15426378,aberdeen,gustav,jethro,enterprise,igor,stripper,filter,hurrican,rfnthbyf,lespaul,gizmo1,butch,132435,dthjybrf,1366613,excalibu,963852,nofear,momoney,possum,cutter,oilers,moocow,cupcake,gbpltw,batman1,splash,svetik,super1,soleil,bogdan,melissa1,vipers,babyboy,tdutybq,lancelot,ccbill,keystone,passwort,flamingo,firefox,dogman,vortex,rebel,noodle,raven1,zaphod,killme,pokemon1,coolman,danila,designer,skinny,kamikaze,deadman,gopher,doobie,warhammer,deeznuts,freaks,engage,chevy1,steve1,apollo13,poncho,hammers,azsxdc,dracula,000007,sassy,bitch1,boots,deskjet,12332,macdaddy,mighty,rangers1,manchest,sterlin,casey1,meatball,mailman,sinatra,cthulhu,summer1,bubbas,cartoon,bicycle,eatpussy,truelove,sentinel,tolkien,breast,capone,lickit,summit,123456k,peter1,daisy1,kitty1,123456789z,crazy1,jamesbon,texas1,sexygirl,362436,sonic,billyboy,redhot,microsof,microlab,daddy1,rockets,iloveyo,fernand,gordon24,danie,cutlass,polska,star69,titties,pantyhos,01011985,thekid,aikido,gofish,mayday,1234qwe,coke,anfield,sony,lansing,smut,scotch,sexx,catman,73501505,hustler,saun,dfkthbz,passwor1,jenny1,azsxdcfv,cheers,irish1,gabrie,tinman,orioles,1225,charlton,fortuna,01011970,airbus,rustam,xtreme,bigmoney,zxcasd,retard,grumpy,huskies,boxing,4runner,kelly1,ultima,warlord,fordf150,oranges,rotten,asdfjkl,superstar,denali,sultan,bikini,saratoga,thor,figaro,sixers,wildfire,vladislav,128500,sparta,mayhem,greenbay,chewie,music1,number1,cancun,fabie,mellon,poiuytrewq,cloud9,crunch,bigtime,chicken1,piccolo,bigbird,321654987,billy1,mojo,01011981,maradona,sandro,chester1,bizkit,rjirfrgbde,789123,rightnow,jasmine1,hyperion,treasure,meatloaf,armani,rovers,jarhead,01011986,cruise,coconut,dragoon,utopia,davids,cosmo,rfhbyf,reebok,1066,charli,giorgi,sticks,sayang,pass1234,exodus,anaconda,zaqxsw,illini,woofwoof,emily1,sandy1,packer,poontang,govols,jedi,tomato,beaner,cooter,creamy,lionking,happy123,albatros,poodle,kenworth,dinosaur,greens,goku,happyday,eeyore,tsunami,cabbage,holyshit,turkey50,memorex,chaser,bogart,orgasm,tommy1,volley,whisper,knopka,ericsson,walleye,321123,pepper1,katie1,chickens,tyler1,corrado,twisted,100000,zorro,clemson,zxcasdqwe,tootsie,milana,zenith,fktrcfylhf,shania,frisco,polniypizdec0211,crazybab,junebug,fugazi,rereirf,vfvekz,1001,sausage,vfczyz,koshka,clapton,justin1,anhyeuem,condom,fubar,hardrock,skywalker,tundra,cocks,gringo,150781,canon,vitalik,aspire,stocks,samsung1,applepie,abc12345,arjay,gandalf1,boob,pillow,sparkle,gmoney,rockhard,lucky13,samiam,everest,hellyeah,bigsexy,skorpion,rfrnec,hedgehog,australi,candle,slacker,dicks,voyeur,jazzman,america1,bobby1,br0d3r,wolfie,vfksirf,1qa2ws3ed,13243546,fright,yosemite,temp,karolina,fart,barsik,surf,cheetah,baddog,deniska,starship,bootie,milena,hithere,kume,greatone,dildo,50cent,0.0.0.000,albion,amanda1,midget,lion,maxell,football1,cyclone,freeporn,nikola,bonsai,kenshin,slider,balloon,roadkill,killbill,222333,jerkoff,78945612,dinamo,tekken,rambler,goliath,cinnamon,malaka,backdoor,fiesta,packers1,rastaman,fletch,sojdlg123aljg,stefano,artemis,calico,nyjets,damnit,robotech,duchess,rctybz,hooter,keywest,18436572,hal9000,mechanic,pingpong,operator,presto,sword,rasputin,spank,bristol,faggot,shado,963852741,amsterda,321456,wibble,carrera,alibaba,majestic,ramses,duster,route66,trident,clipper,steeler,wrestlin,divine,kipper,gotohell,kingfish,snake1,passwords,buttman,pompey,viagra,zxcvbnm1,spurs,332211,slutty,lineage2,oleg,macross,pooter,brian1,qwert1,charles1,slave,jokers,yzerman,swimmer,ne1469,nwo4life,solnce,seamus,lolipop,pupsik,moose1,ivanova,secret1,matador,love69,420247,ktyjxrf,subway,cinder,vermont,pussie,chico,florian,magick,guiness,allsop,ghetto,flash1,a123456789,typhoon,dfkthf,depeche,skydive,dammit,seeker,fuckthis,crysis,kcj9wx5n,umbrella,r2d2c3po,123123q,snoopdog,critter,theboss,ding,162534,splinter,kinky,cyclops,jayhawk,456321,caramel,qwer123,underdog,caveman,onlyme,grapes,feather,hotshot,fuckher,renault,george1,sex123,pippen,000001,789987,floppy,cunts,megapass,1000,pornos,usmc,kickass,great1,quattro,135246,wassup,helloo,p0015123,nicole1,chivas,shannon1,bullseye,java,fishes,blackhaw,jamesbond,tunafish,juggalo,dkflbckfd,123789456,dallas1,translator,122333,beanie,alucard,gfhjkm123,supersta,magicman,ashley1,cohiba,xbox360,caligula,12131415,facial,7753191,dfktynbyf,cobra1,cigars,fang,klingon,bob123,safari,looser,10203,deepthroat,malina,200000,tazmania,gonzo,goalie,jacob1,monaco,cruiser,misfit,vh5150,tommyboy,marino13,yousuck,sharky,vfhufhbnf,horizon,absolut,brighton,123456r,death1,kungfu,maxx,forfun,mamapapa,enter1,budweise,banker,getmoney,kostya,qazwsx12,bigbear,vector,fallout,nudist,gunners,royals,chainsaw,scania,trader,blueboy,walrus,eastside,kahuna,qwerty1234,love123,steph,01011989,cypress,champ,undertaker,ybrjkfq,europa,snowboar,sabres,moneyman,chrisbln,minime,nipper,groucho,whitey,viewsonic,penthous,wolf359,fabric,flounder,coolguy,whitesox,passme,smegma,skidoo,thanatos,fucku2,snapple,dalejr,mondeo,thesims,mybaby,panasoni,sinbad,thecat,topher,frodo,sneakers,q123456,z1x2c3,alfa,chicago1,taylor1,ghjcnjnfr,cat123,olivier,cyber,titanium,0420,madison1,jabroni,dang,hambone,intruder,holly1,gargoyle,sadie1,static,poseidon,studly,newcastl,sexxxx,poppy,johannes,danzig,beastie,musica,buckshot,sunnyday,adonis,bluedog,bonkers,2128506,chrono,compute,spawn,01011988,turbo1,smelly,wapbbs,goldstar,ferrari1,778899,quantum,pisces,boomboom,gunnar,1024,test1234,florida1,nike,superman1,multiplelo,custom,motherlode,1qwerty,westwood,usnavy,apple123,daewoo,korn,stereo,sasuke,sunflowe,watcher,dharma,555777,mouse1,assholes,babyblue,123qwerty,marius,walmart,snoop,starfire,tigger1,paintbal,knickers,aaliyah,lokomotiv,theend,winston1,sapper,rover,erotica,scanner,racer,zeus,sexy69,doogie,bayern,joshua1,newbie,scott1,losers,droopy,outkast,martin1,dodge1,wasser,ufkbyf,rjycnfynby,thirteen,12345z,112211,hotred,deejay,hotpussy,192837,jessic,philippe,scout,panther1,cubbies,havefun,magpie,fghtkm,avalanch,newyork1,pudding,leonid,harry1,cbr600,audia4,bimmer,fucku,01011984,idontknow,vfvfgfgf,1357,aleksey,builder,01011987,zerocool,godfather,mylife,donuts,allmine,redfish,777888,sascha,nitram,bounce,333666,smokes,1x2zkg8w,rodman,stunner,zxasqw12,hoosier,hairy,beretta,insert,123456s,rtyuehe,francesc,tights,cheese1,micron,quartz,hockey1,gegcbr,searay,jewels,bogey,paintball,celeron,padres,bing,syncmaster,ziggy,simon1,beaches,prissy,diehard,orange1,mittens,aleksandra,queens,02071986,biggles,thongs,southpark,artur,twinkle,gretzky,rabota,cambiami,monalisa,gollum,chuckles,spike1,gladiator,whisky,spongebob,sexy1,03082006,mazafaka,meathead,4121,ou8122,barefoot,12345678q,cfitymrf,bigass,a1s2d3,kosmos,blessing,titty,clevelan,terrapin,ginger1,johnboy,maggot,clarinet,deeznutz,336699,stumpy,stoney,footbal,traveler,volvo,bucket,snapon,pianoman,hawkeyes,futbol,casanova,tango,goodboy,scuba,honey1,sexyman,warthog,mustard,abc1234,nickel,10203040,meowmeow,1012,boricua,prophet,sauron,12qwas,reefer,andromeda,crystal1,joker1,90210,goofy,loco,lovesex,triangle,whatsup,mellow,bengals,monster1,maste,01011910,lover1,love1,123aaa,sunshin,smeghead,hokies,sting,welder,rambo,cerberus,bunny1,rockford,monke,1q2w3e4r5,goldwing,gabriell,buzzard,crjhgbjy,james007,rainman,groove,tiberius,purdue,nokia6300,hayabusa,shou,jagger,diver,zigzag,poochie,usarmy,phish,redwood,redwing,12345679,salamander,silver1,abcd123,sputnik,boobie,ripple,eternal,12qw34er,thegreat,allstar,slinky,gesperrt,mishka,whiskers,pinhead,overkill,sweet1,rhfcjnrf,montgom240,sersolution,jamie1,starman,proxy,swords,nikolay,bacardi,rasta,badgirl,rebecca1,wildman,penny1,spaceman,1007,10101,logan1,hacked,bulldog1,helmet,windsor,buffy1,runescape,trapper,123451,banane,dbrnjh,ripken,12345qwe,frisky,shun,fester,oasis,lightning,ib6ub9,cicero,kool,pony,thedog,784512,01011992,megatron,illusion,edward1,napster,11223,squash,roadking,woohoo,19411945,hoosiers,01091989,tracker,bagira,midway,leavemealone,br549,14725836,235689,menace,rachel1,feng,laser,stoned,realmadrid,787898,balloons,tinkerbell,5551212,maria1,pobeda,heineken,sonics,moonlight,optimus,comet,orchid,02071982,jaybird,kashmir,12345678a,chuang,chunky,peach,mortgage,rulezzz,saleen,chuckie,zippy,fishing1,gsxr750,doghouse,maxim,reader,shai,buddah,benfica,chou,salomon,meister,eraser,blackbir,bigmike,starter,pissing,angus,deluxe,eagles1,hardcock,135792468,mian,seahawks,godfathe,bookworm,gregor,intel,talisman,blackjack,babyface,hawaiian,dogfood,zhong,01011975,sancho,ludmila,medusa,mortimer,123456654321,roadrunn,just4me,stalin,01011993,handyman,alphabet,pizzas,calgary,clouds,password2,cgfhnfr,f**k,cubswin,gong,lexus,max123,xxx123,digital1,gfhjkm1,7779311,missy1,michae,beautifu,gator1,1005,pacers,buddie,chinook,heckfy,dutchess,sally1,breasts,beowulf,darkman,jenn,tiffany1,zhei,quan,qazwsx1,satana,shang,idontkno,smiths,puddin,nasty1,teddybea,valkyrie,passwd,chao,boxster,killers,yoda,cheater,inuyasha,beast1,wareagle,foryou,dragonball,mermaid,bhbirf,teddy1,dolphin1,misty1,delphi,gromit,sponge,qazzaq,fytxrf,gameover,diao,sergi,beamer,beemer,kittykat,rancid,manowar,adam12,diggler,assword,austin1,wishbone,gonavy,sparky1,fisting,thedude,sinister,1213,venera,novell,salsero,jayden,fuckoff1,linda1,vedder,02021987,1pussy,redline,lust,jktymrf,02011985,dfcbkbq,dragon12,chrome,gamecube,titten,cong,bella1,leng,02081988,eureka,bitchass,147369,banner,lakota,123321a,mustafa,preacher,hotbox,02041986,z1x2c3v4,playstation,01011977,claymore,electra,checkers,zheng,qing,armagedon,02051986,wrestle,svoboda,bulls,nimbus,alenka,madina,newpass6,onetime,aa123456,bartman,02091987,silverad,electron,12345t,devil666,oliver1,skylar,rhtdtlrj,gobucks,johann,12011987,milkman,02101985,camper,thunderb,bigbutt,jammin,davide,cheeks,goaway,lighter,claudi,thumbs,pissoff,ghostrider,cocaine,teng,squall,lotus,hootie,blackout,doitnow,subzero,02031986,marine1,02021988,pothead,123456qw,skate,1369,peng,antoni,neng,miao,bcfields,1492,marika,794613,musashi,tulips,nong,piao,chai,ruan,southpar,02061985,nude,mandarin,654123,ninjas,cannabis,jetski,xerxes,zhuang,kleopatra,dickie,bilbo,pinky,morgan1,1020,1017,dieter,baseball1,tottenham,quest,yfnfkmz,dirtbike,1234567890a,mango,jackson5,ipswich,iamgod,02011987,tdutybz,modena,qiao,slippery,qweasd123,bluefish,samtron,toon,111333,iscool,02091986,petrov,fuzzy,zhou,1357924680,mollydog,deng,02021986,1236987,pheonix,zhun,ghblehjr,othello,starcraf,000111,sanfran,a11111,cameltoe,badman,vasilisa,jiang,1qaz2ws,luan,sveta,12qw12,akira,chuai,369963,cheech,beatle,pickup,paloma,01011983,caravan,elizaveta,gawker,banzai,pussey,mullet,seng,bingo1,bearcat,flexible,farscape,borussia,zhuai,templar,guitar1,toolman,yfcntymrf,chloe1,xiang,slave1,guai,nuggets,02081984,mantis,slim,scorpio1,fyutkbyf,thedoors,02081987,02061986,123qq123,zappa,fergie,7ugd5hip2j,huai,asdfzxcv,sunflower,pussyman,deadpool,bigtit,01011982,love12,lassie,skyler,gatorade,carpedie,jockey,mancity,spectre,02021984,cameron1,artemka,reng,02031984,iomega,jing,moritz,spice,rhino,spinner,heater,zhai,hover,talon,grease,qiong,corleone,ltybcrf,tian,cowboy1,hippie,chimera,ting,alex123,02021985,mickey1,corsair,sonoma,aaron1,xxxpass,bacchus,webmaste,chuo,xyz123,chrysler,spurs1,artem,shei,cosmic,01020304,deutsch,gabriel1,123455,oceans,987456321,binladen,latinas,a12345678,speedo,buttercu,02081989,21031988,merlot,millwall,ceng,kotaku,jiong,dragonba,2580,stonecold,snuffy,01011999,02011986,hellos,blaze,maggie1,slapper,istanbul,bonjovi,babylove,mazda,bullfrog,phoeni,meng,porsche1,nomore,02061989,bobdylan,capslock,orion1,zaraza,teddybear,ntktajy,myname,rong,wraith,mets,niao,02041984,smokie,chevrolet,dialog,gfhjkmgfhjkm,dotcom,vadim,monarch,athlon,mikey1,hamish,pian,liang,coolness,chui,thoma,ramones,ciccio,chippy,eddie1,house1,ning,marker,cougars,jackpot,barbados,reds,pdtplf,knockers,cobalt,amateurs,dipshit,napoli,kilroy,pulsar,jayhawks,daemon,alexey,weng,shuang,9293709b13,shiner,eldorado,soulmate,mclaren,golfer1,andromed,duan,50spanks,sexyboy,dogshit,02021983,shuo,kakashka,syzygy,111111a,yeahbaby,qiang,netscape,fulham,120676,gooner,zhui,rainbow6,laurent,dog123,halifax,freeway,carlitos,147963,eastwood,microphone,monkey12,1123,persik,coldbeer,geng,nuan,danny1,fgtkmcby,entropy,gadget,just4fun,sophi,baggio,carlito,1234567891,02021989,02041983,specialk,piramida,suan,bigblue,salasana,hopeful,mephisto,bailey1,hack,annie1,generic,violetta,spencer1,arcadia,02051983,hondas,9562876,trainer,jones1,smashing,liao,159632,iceberg,rebel1,snooker,temp123,zang,matteo,fastball,q2w3e4r5,bamboo,fuckyo,shutup,astro,buddyboy,nikitos,redbird,maxxxx,shitface,02031987,kuai,kissmyass,sahara,radiohea,1234asdf,wildcard,maxwell1,patric,plasma,heynow,bruno1,shao,bigfish,misfits,sassy1,sheng,02011988,02081986,testpass,nanook,cygnus,licking,slavik,pringles,xing,1022,ninja1,submit,dundee,tiburon,pinkfloyd,yummy,shuai,guang,chopin,obelix,insomnia,stroker,1a2s3d4f,1223,playboy1,lazarus,jorda,spider1,homerj,sleeper,02041982,darklord,cang,02041988,02041987,tripod,magician,jelly,telephon,15975,vsjasnel12,pasword,iverson3,pavlov,homeboy,gamecock,amigo,brodie,budapest,yjdsqgfhjkm,reckless,02011980,pang,tiger123,2469,mason1,orient,01011979,zong,cdtnbr,maksimka,1011,bushido,taxman,giorgio,sphinx,kazantip,02101984,concorde,verizon,lovebug,georg,sam123,seadoo,qazwsxedc123,jiao,jezebel,pharmacy,abnormal,jellybea,maxime,puffy,islander,bunnies,jiggaman,drakon,010180,pluto,zhjckfd,12365,classics,crusher,mordor,hooligan,strawberry,02081985,scrabble,hawaii50,1224,wg8e3wjf,cthtuf,premium,arrow,123456qwe,mazda626,ramrod,tootie,rhjrjlbk,ghost1,1211,bounty,niang,02071984,goat,killer12,sweetnes,porno1,masamune,426hemi,corolla,mariposa,hjccbz,doomsday,bummer,blue12,zhao,bird33,excalibur,samsun,kirsty,buttfuck,kfhbcf,zhuo,marcello,ozzy,02021982,dynamite,655321,master12,123465,lollypop,stepan,1qa2ws,spiker,goirish,callum,michael2,moonbeam,attila,henry1,lindros,andrea1,sporty,lantern,12365478,nextel,violin,volcom,998877,water1,imation,inspiron,dynamo,citadel,placebo,clowns,tiao,02061988,tripper,dabears,haggis,merlin1,02031985,anthrax,amerika,iloveme,vsegda,burrito,bombers,snowboard,forsaken,katarina,a1a2a3,woofer,tigger2,fullmoon,tiger2,spock,hannah1,snoopy1,sexxxy,sausages,stanislav,cobain,robotics,exotic,green123,mobydick,senators,pumpkins,fergus,asddsa,147741,258852,windsurf,reddevil,vfitymrf,nevermind,nang,woodland,4417,mick,shui,q1q2q3,wingman,69696,superb,zuan,ganesh,pecker,zephyr,anastasiya,icu812,larry1,02081982,broker,zalupa,mihail,vfibyf,dogger,7007,paddle,varvara,schalke,1z2x3c,presiden,yankees2,tuning,poopy,02051982,concord,vanguard,stiffy,rjhjktdf,felix1,wrench,firewall,boxer,bubba69,popper,02011984,temppass,gobears,cuan,tipper,fuckme1,kamila,thong,puss,bigcat,drummer1,02031982,sowhat,digimon,tigers1,rang,jingle,bian,uranus,soprano,mandy1,dusty1,fandango,aloha,pumpkin1,postman,02061980,dogcat,bombay,pussy123,onetwo,highheel,pippo,julie1,laura1,pepito,beng,smokey1,stylus,stratus,reload,duckie,karen1,jimbo1,225588,369258,krusty,snappy,asdf12,electro,111qqq,kuang,fishin,clit,abstr,christma,qqqqq1,1234560,carnage,guyver,boxers,kittens,zeng,1000000,qwerty11,toaster,cramps,yugioh,02061987,icehouse,zxcvbnm123,pineapple,namaste,harrypotter,mygirl,falcon1,earnhard,fender1,spikes,nutmeg,01081989,dogboy,02091983,369852,softail,mypassword,prowler,bigboss,1112,harvest,heng,jubilee,killjoy,basset,keng,zaqxswcde,redsox1,biao,titan,misfit99,robot,wifey,kidrock,02101987,gameboy,enrico,1z2x3c4v,broncos1,arrows,havana,banger,cookie1,chriss,123qw,platypus,cindy1,lumber,pinball,foxy,london1,1023,05051987,02041985,password12,superma,longbow,radiohead,nigga,12051988,spongebo,qwert12345,abrakadabra,dodgers1,02101989,chillin,niceguy,pistons,hookup,santafe,bigben,jets,1013,vikings1,mankind,viktoriya,beardog,hammer1,02071980,reddwarf,magelan,longjohn,jennife,gilles,carmex2,02071987,stasik,bumper,doofus,slamdunk,pixies,garion,steffi,alessandro,beerman,niceass,warrior1,honolulu,134679852,visa,johndeer,mother1,windmill,boozer,oatmeal,aptiva,busty,delight,tasty,slick1,bergkamp,badgers,guitars,puffin,02091981,nikki1,irishman,miller1,zildjian,123000,airwolf,magnet,anai,install,02041981,02061983,astra,romans,megan1,mudvayne,freebird,muscles,dogbert,02091980,02091984,snowflak,01011900,mang,joseph1,nygiants,playstat,junior1,vjcrdf,qwer12,webhompas,giraffe,pelican,jefferso,comanche,bruiser,monkeybo,kjkszpj,123456l,micro,albany,02051987,angel123,epsilon,aladin,death666,hounddog,josephin,altima,chilly,02071988,78945,ultra,02041979,gasman,thisisit,pavel,idunno,kimmie,05051985,paulie,ballin,medion,moondog,manolo,pallmall,climber,fishbone,genesis1,153624,toffee,tbone,clippers,krypton,jerry1,picturs,compass,111111q,02051988,1121,02081977,sairam,getout,333777,cobras,22041987,bigblock,severin,booster,norwich,whiteout,ctrhtn,123456m,02061984,hewlett,shocker,fuckinside,02031981,chase1,white1,versace,123456789s,basebal,iloveyou2,bluebell,08031986,anthon,stubby,foreve,undertak,werder,saiyan,mama123,medic,chipmunk,mike123,mazdarx7,qwe123qwe,bowwow,kjrjvjnbd,celeb,choochoo,demo,lovelife,02051984,colnago,lithium,02051989,15051981,zzzxxx,welcom,anastasi,fidelio,franc,26061987,roadster,stone55,drifter,hookem,hellboy,1234qw,cbr900rr,sinned,good123654,storm1,gypsy,zebra,zachary1,toejam,buceta,02021979,testing1,redfox,lineage,mike1,highbury,koroleva,nathan1,washingt,02061982,02091985,vintage,redbaron,dalshe,mykids,11051987,macbeth,julien,james123,krasotka,111000,10011986,987123,pipeline,tatarin,sensei,codered,komodo,frogman,7894561230,nascar24,juicy,01031988,redrose,mydick,pigeon,tkbpfdtnf,smirnoff,1215,spam,winner1,flyfish,moskva,81fukkc,21031987,olesya,starligh,summer99,13041988,fishhead,freesex,super12,06061986,azazel,scoobydoo,02021981,cabron,yogibear,sheba1,konstantin,tranny,chilli,terminat,ghbywtccf,slowhand,soccer12,cricket1,fuckhead,1002,seagull,achtung,blam,bigbob,bdsm,nostromo,survivor,cnfybckfd,lemonade,boomer1,rainbow1,rober,irinka,cocksuck,peaches1,itsme,sugar1,zodiac,upyours,dinara,135791,sunny1,chiara,johnson1,02041989,solitude,habibi,sushi,markiz,smoke1,rockies,catwoman,johnny1,qwerty7,bearcats,username,01011978,wanderer,ohshit,02101986,sigma,stephen1,paradigm,02011989,flanker,sanity,jsbach,spotty,bologna,fantasia,chevys,borabora,cocker,74108520,123ewq,12021988,01061990,gtnhjdbx,02071981,01011960,sundevil,3000gt,mustang6,gagging,maggi,armstron,yfnfkb,13041987,revolver,02021976,trouble1,madcat,jeremy1,jackass1,volkswag,30051985,corndog,pool6123,marines1,03041991,pizza1,piggy,sissy,02031979,sunfire,angelus,undead,24061986,14061991,wildbill,shinobi,45m2do5bs,123qwer,21011989,cleopatr,lasvega,hornets,amorcit,11081989,coventry,nirvana1,destin,sidekick,20061988,02081983,gbhfvblf,sneaky,bmw325,22021989,nfytxrf,sekret,kalina,zanzibar,hotone,qazws,wasabi,heidi1,highlander,blues1,hitachi,paolo,23041987,slayer1,simba1,02011981,tinkerbe,kieran,01121986,172839,boiler,1125,bluesman,waffle,asdfgh01,threesom,conan,1102,reflex,18011987,nautilus,everlast,fatty,vader1,01071986,cyborg,ghbdtn123,birddog,rubble,02071983,suckers,02021973,skyhawk,12qw12qw,dakota1,joebob,nokia6233,woodie,longdong,lamer,troll,ghjcnjgfhjkm,420000,boating,nitro,armada,messiah,1031,penguin1,02091989,americ,02071989,redeye,asdqwe123,07071987,monty1,goten,spikey,sonata,635241,tokiohotel,sonyericsson,citroen,compaq1,1812,umpire,belmont,jonny,pantera1,nudes,palmtree,14111986,fenway,bighead,razor,gryphon,andyod22,aaaaa1,taco,10031988,enterme,malachi,dogface,reptile,01041985,dindom,handball,marseille,candy1,19101987,torino,tigge,matthias,viewsoni,13031987,stinker,evangelion,24011985,123456123,rampage,sandrine,02081980,thecrow,astral,28041987,sprinter,private1,seabee,shibby,02101988,25081988,fearless,junkie,01091987,aramis,antelope,draven,fuck1,mazda6,eggman,02021990,barselona,buddy123,19061987,fyfnjkbq,nancy1,12121990,10071987,sluggo,kille,hotties,irishka,zxcasdqwe123,shamus,fairlane,honeybee,soccer10,13061986,fantomas,17051988,10051987,20111986,gladiato,karachi,gambler,gordo,01011995,biatch,matthe,25800852,papito,excite,buffalo1,bobdole,cheshire,player1,28021992,thewho,10101986,pinky1,mentor,tomahawk,brown1,03041986,bismillah,bigpoppa,ijrjkfl,01121988,runaway,08121986,skibum,studman,helper,squeak,holycow,manfred,harlem,glock,gideon,987321,14021985,yellow1,wizard1,margarit,success1,medved,sf49ers,lambda,pasadena,johngalt,quasar,1776,02031980,coldplay,amand,playa,bigpimp,04041991,capricorn,elefant,sweetness,bruce1,luca,dominik,10011990,biker,09051945,datsun,elcamino,trinitro,malice,audi,voyager1,02101983,joe123,carpente,spartan1,mario1,glamour,diaper,12121985,22011988,winter1,asimov,callisto,nikolai,pebble,02101981,vendetta,david123,boytoy,11061985,02031989,iloveyou1,stupid1,cayman,casper1,zippo,yamahar1,wildwood,foxylady,calibra,02041980,27061988,dungeon,leedsutd,30041986,11051990,bestbuy,antares,dominion,24680,01061986,skillet,enforcer,derparol,01041988,196969,29071983,f00tball,purple1,mingus,25031987,21031990,remingto,giggles,klaste,3x7pxr,01011994,coolcat,29051989,megane,20031987,02051980,04041988,synergy,0000007,macman,iforget,adgjmp,vjqgfhjkm,28011987,rfvfcenhf,16051989,25121987,16051987,rogue,mamamia,08051990,20091991,1210,carnival,bolitas,paris1,dmitriy,dimas,05051989,papillon,knuckles,29011985,hola,tophat,28021990,100500,cutiepie,devo,415263,ducks,ghjuhfvvf,asdqwe,22021986,freefall,parol,02011983,zarina,buste,vitamin,warez,bigones,17061988,baritone,jamess,twiggy,mischief,bitchy,hetfield,1003,dontknow,grinch,sasha_007,18061990,12031985,12031987,calimero,224466,letmei,15011987,acmilan,alexandre,02031977,08081988,whiteboy,21051991,barney1,02071978,money123,18091985,bigdawg,02031988,cygnusx1,zoloto,31011987,firefigh,blowfish,screamer,lfybbk,20051988,chelse,11121986,01031989,harddick,sexylady,30031988,02041974,auditt,pizdec,kojak,kfgjxrf,20091988,123456ru,wp2003wp,1204,15051990,slugger,kordell1,03031986,swinging,01011974,02071979,rockie,dimples,1234123,1dragon,trucking,rusty2,roger1,marijuana,kerouac,02051978,08031985,paco,thecure,keepout,kernel,noname123,13121985,francisc,bozo,02011982,22071986,02101979,obsidian,12345qw,spud,tabasco,02051985,jaguars,dfktynby,kokomo,popova,notused,sevens,4200,magneto,02051976,roswell,15101986,21101986,lakeside,bigbang,aspen,little1,14021986,loki,suckmydick,strawber,carlos1,nokian73,dirty1,joshu,25091987,16121987,02041975,advent,17011987,slimshady,whistler,10101990,stryker,22031984,15021985,01031985,blueball,26031988,ksusha,bahamut,robocop,w_pass,chris123,impreza,prozac,bookie,bricks,13021990,alice1,cassandr,11111q,john123,4ever,korova,02051973,142857,25041988,paramedi,eclipse1,salope,07091990,1124,darkangel,23021986,999666,nomad,02051981,smackdow,01021990,yoyoma,argentin,moonligh,57chevy,bootys,hardone,capricor,galant,spanker,dkflbr,24111989,magpies,krolik,21051988,cevthrb,cheddar,22041988,bigbooty,scuba1,qwedsa,duffman,bukkake,acura,johncena,sexxy,p@ssw0rd,258369,cherries,12345s,asgard,leopold,fuck123,mopar,lalakers,dogpound,matrix1,crusty,spanner,kestrel,fenris,universa,peachy,assasin,lemmein,eggplant,hejsan,canucks,wendy1,doggy1,aikman,tupac,turnip,godlike,fussball,golden1,19283746,april1,django,petrova,captain1,vincent1,ratman,taekwondo,chocha,serpent,perfect1,capetown,vampir,amore,gymnast,timeout,nbvjatq,blue32,ksenia,k.lvbkf,nazgul,budweiser,clutch,mariya,sylveste,02051972,beaker,cartman1,q11111,sexxx,forever1,loser1,marseill,magellan,vehpbr,sexgod,jktxrf,hallo123,132456,liverpool1,southpaw,seneca,camden,357159,camero,tenchi,johndoe,145236,roofer,741963,vlad,02041978,fktyrf,zxcv123,wingnut,wolfpac,notebook,pufunga7782,brandy1,biteme1,goodgirl,redhat,02031978,challeng,millenium,hoops,maveric,noname,angus1,gaell,onion,olympus,sabrina1,ricard,sixpack,gratis,gagged,camaross,hotgirls,flasher,02051977,bubba123,goldfing,moonshin,gerrard,volkov,sonyfuck,mandrake,258963,tracer,lakers1,asians,susan1,money12,helmut,boater,diablo2,1234zxcv,dogwood,bubbles1,happy2,randy1,aries,beach1,marcius2,navigator,goodie,hellokitty,fkbyjxrf,earthlink,lookout,jumbo,opendoor,stanley1,marie1,12345m,07071977,ashle,wormix,murzik,02081976,lakewood,bluejays,loveya,commande,gateway2,peppe,01011976,7896321,goth,oreo,slammer,rasmus,faith1,knight1,stone1,redskin,ironmaiden,gotmilk,destiny1,dejavu,1master,midnite,timosha,espresso,delfin,toriamos,oberon,ceasar,markie,1a2s3d,ghhh47hj7649,vjkjrj,daddyo,dougie,disco,auggie,lekker,therock1,ou8123,start1,noway,p4ssw0rd,shadow12,333444,saigon,2fast4u,capecod,23skidoo,qazxcv,beater,bremen,aaasss,roadrunner,peace1,12345qwer,02071975,platon,bordeaux,vbkfirf,135798642,test12,supernov,beatles1,qwert40,optimist,vanessa1,prince1,ilovegod,nightwish,natasha1,alchemy,bimbo,blue99,patches1,gsxr1000,richar,hattrick,hott,solaris,proton,nevets,enternow,beavis1,amigos,159357a,ambers,lenochka,147896,suckdick,shag,intercourse,blue1234,spiral,02061977,tosser,ilove,02031975,cowgirl,canuck,q2w3e4,munch,spoons,waterboy,123567,evgeniy,savior,zasada,redcar,mamacita,terefon,globus,doggies,htubcnhfwbz,1008,cuervo,suslik,azertyui,limewire,houston1,stratfor,steaua,coors,tennis1,12345qwerty,stigmata,derf,klondike,patrici,marijuan,hardball,odyssey,nineinch,boston1,pass1,beezer,sandr,charon,power123,a1234,vauxhall,875421,awesome1,reggae,boulder,funstuff,iriska,krokodil,rfntymrf,sterva,champ1,bball,peeper,m123456,toolbox,cabernet,sheepdog,magic32,pigpen,02041977,holein1,lhfrjy,banan,dabomb,natalie1,jennaj,montana1,joecool,funky,steven1,ringo,junio,sammy123,qqqwww,baltimor,footjob,geezer,357951,mash4077,cashmone,pancake,monic,grandam,bongo,yessir,gocubs,nastia,vancouve,barley,dragon69,watford,ilikepie,02071976,laddie,123456789m,hairball,toonarmy,pimpdadd,cvthnm,hunte,davinci,lback,sophie1,firenze,q1234567,admin1,bonanza,elway7,daman,strap,azert,wxcvbn,afrika,theforce,123456t,idefix,wolfen,houdini,scheisse,default,beech,maserati,02061976,sigmachi,dylan1,bigdicks,eskimo,mizzou,02101976,riccardo,egghead,111777,kronos,ghbrjk,chaos1,jomama,rfhnjirf,rodeo,dolemite,cafc91,nittany,pathfind,mikael,password9,vqsablpzla,purpl,gabber,modelsne,myxworld,hellsing,punker,rocknrol,fishon,fuck69,02041976,lolol,twinkie,tripleh,cirrus,redbone,killer123,biggun,allegro,gthcbr,smith1,wanking,bootsy,barry1,mohawk,koolaid,5329,futurama,samoht,klizma,996633,lobo,honeys,peanut1,556677,zxasqw,joemama,javelin,samm,223322,sandra1,flicks,montag,nataly,3006,tasha1,1235789,dogbone,poker1,p0o9i8u7,goodday,smoothie,toocool,max333,metroid,archange,vagabond,billabon,22061941,tyson1,02031973,darkange,skateboard,evolutio,morrowind,wizards,frodo1,rockin,cumslut,plastics,zaqwsxcde,5201314,doit,outback,bumble,dominiqu,persona,nevermore,alinka,02021971,forgetit,sexo,all4one,c2h5oh,petunia,sheeba,kenny1,elisabet,aolsucks,woodstoc,pumper,02011975,fabio,granada,scrapper,123459,minimoni,q123456789,breaker,1004,02091976,ncc74656,slimshad,friendster,austin31,wiseguy,donner,dilbert1,132465,blackbird,buffet,jellybean,barfly,behappy,01011971,carebear,fireblad,02051975,boxcar,cheeky,kiteboy,hello12,panda1,elvisp,opennow,doktor,alex12,02101977,pornking,flamengo,02091975,snowbird,lonesome,robin1,11111a,weed420,baracuda,bleach,12345abc,nokia1,metall,singapor,mariner,herewego,dingo,tycoon,cubs,blunts,proview,123456789d,kamasutra,lagnaf,vipergts,navyseal,starwar,masterbate,wildone,peterbil,cucumber,butkus,123qwert,climax,deniro,gotribe,cement,scooby1,summer69,harrier,shodan,newyear,02091977,starwars1,romeo1,sedona,harald,doubled,sasha123,bigguns,salami,awnyce,kiwi,homemade,pimping,azzer,bradley1,warhamme,linkin,dudeman,qwe321,pinnacle,maxdog,flipflop,lfitymrf,fucker1,acidburn,esquire,sperma,fellatio,jeepster,thedon,sexybitch,pookey,spliff,widget,vfntvfnbrf,trinity1,mutant,samuel1,meliss,gohome,1q2q3q,mercede,comein,grin,cartoons,paragon,henrik,rainyday,pacino,senna,bigdog1,alleycat,12345qaz,narnia,mustang2,tanya1,gianni,apollo11,wetter,clovis,escalade,rainbows,freddy1,smart1,daisydog,s123456,cocksucker,pushkin,lefty,sambo,fyutkjxtr,hiziad,boyz,whiplash,orchard,newark,adrenalin,1598753,bootsie,chelle,trustme,chewy,golfgti,tuscl,ambrosia,5wr2i7h8,penetration,shonuf,jughead,payday,stickman,gotham,kolokol,johnny5,kolbasa,stang,puppydog,charisma,gators1,mone,jakarta,draco,nightmar,01011973,inlove,laetitia,02091973,tarpon,nautica,meadow,0192837465,luckyone,14881488,chessie,goldeney,tarakan,69camaro,bungle,wordup,interne,fuckme2,515000,dragonfl,sprout,02081974,gerbil,bandit1,02071971,melanie1,phialpha,camber,kathy1,adriano,gonzo1,10293847,bigjohn,bismarck,7777777a,scamper,12348765,rabbits,222777,bynthytn,dima123,alexander1,mallorca,dragster,favorite6,beethove,burner,cooper1,fosters,hello2,normandy,777999,sebring,1michael,lauren1,blake1,killa,02091971,nounours,trumpet1,thumper1,playball,xantia,rugby1,rocknroll,guillaum,angela1,strelok,prosper,buttercup,masterp,dbnfkbr,cambridg,venom,treefrog,lumina,1234566,supra,sexybabe,freee,shen,frogs,driller,pavement,grace1,dicky,checker,smackdown,pandas,cannibal,asdffdsa,blue42,zyjxrf,nthvbyfnjh,melrose,neon,jabber,gamma,369258147,aprilia,atticus,benessere,catcher,skipper1,azertyuiop,sixty9,thierry,treetop,jello,melons,123456789qwe,tantra,buzzer,catnip,bouncer,computer1,sexyone,ananas,young1,olenka,sexman,mooses,kittys,sephiroth,contra,hallowee,skylark,sparkles,777333,1qazxsw23edc,lucas1,q1w2e3r,gofast,hannes,amethyst,ploppy,flower2,hotass,amatory,volleyba,dixie1,bettyboo,ticklish,02061974,frenchy,phish1,murphy1,trustno,02061972,leinad,mynameis,spooge,jupiter1,hyundai,frosch,junkmail,abacab,marbles,32167,casio,sunshine1,wayne1,longhair,caster,snicker,02101973,gannibal,skinhead,hansol,gatsby,segblue2,montecar,plato,gumby,kaboom,matty,bosco1,888999,jazzy,panter,jesus123,charlie2,giulia,candyass,sex69,travis1,farmboy,special1,02041973,letsdoit,password01,allison1,abcdefg1,notredam,ilikeit,789654123,liberty1,rugger,uptown,alcatraz,123456w,airman,007bond,navajo,kenobi,terrier,stayout,grisha,frankie1,fluff,1qazzaq1,1234561,virginie,1234568,tango1,werdna,octopus,fitter,dfcbkbcf,blacklab,115599,montrose,allen1,supernova,frederik,ilovepussy,justice1,radeon,playboy2,blubber,sliver,swoosh,motocros,lockdown,pearls,thebear,istheman,pinetree,biit,1234rewq,rustydog,tampabay,titts,babycake,jehovah,vampire1,streaming,collie,camil,fidelity,calvin1,stitch,gatit,restart,puppy1,budgie,grunt,capitals,hiking,dreamcas,zorro1,321678,riffraff,makaka,playmate,napalm,rollin,amstel,zxcvb123,samanth,rumble,fuckme69,jimmys,951357,pizzaman,1234567899,tralala,delpiero,alexi,yamato,itisme,1million,vfndtq,kahlua,londo,wonderboy,carrots,tazz,ratboy,rfgecnf,02081973,nico,fujitsu,tujhrf,sergbest,blobby,02051970,sonic1,1357911,smirnov,video1,panhead,bucky,02031974,44332211,duffer,cashmoney,left4dead,bagpuss,salman,01011972,titfuck,66613666,england1,malish,dresden,lemans,darina,zapper,123456as,123456qqq,met2002,02041972,redstar,blue23,1234509876,pajero,booyah,please1,tetsuo,semper,finder,hanuman,sunlight,123456n,02061971,treble,cupoi,password99,dimitri,3ip76k2,popcorn1,lol12345,stellar,nympho,shark1,keith1,saskia,bigtruck,revoluti,rambo1,asd222,feelgood,phat,gogators,bismark,cola,puck,furball,burnout,slonik,bowtie,mommy1,icecube,fabienn,mouser,papamama,rolex,giants1,blue11,trooper1,momdad,iklo,morten,rhubarb,gareth,123456d,blitz,canada1,r2d2,brest,tigercat,usmarine,lilbit,benny1,azrael,lebowski,12345r,madagaskar,begemot,loverman,dragonballz,italiano,mazda3,naughty1,onions,diver1,cyrano,capcom,asdfg123,forlife,fisherman,weare138,requiem,mufasa,alpha123,piercing,hellas,abracadabra,duckman,caracas,macintos,02011971,jordan2,crescent,fduecn,hogtied,eatmenow,ramjet,18121812,kicksass,whatthe,discus,rfhfvtkmrf,rufus1,sqdwfe,mantle,vegitto,trek,dan123,paladin1,rudeboy,liliya,lunchbox,riversid,acapulco,libero,dnsadm,maison,toomuch,boobear,hemlock,sextoy,pugsley,misiek,athome,migue,altoids,marcin,123450,rhfcfdbwf,jeter2,rhinos,rjhjkm,mercury1,ronaldinho,shampoo,makayla,kamilla,masterbating,tennesse,holger,john1,matchbox,hores,poptart,parlament,goodyear,asdfgh1,02081970,hardwood,alain,erection,hfytnrb,highlife,implants,benjami,dipper,jeeper,bendover,supersonic,babybear,laserjet,gotenks,bama,natedogg,aol123,pokemo,rabbit1,raduga,sopranos,cashflow,menthol,pharao,hacking,334455,ghjcnbnenrf,lizzy,muffin1,pooky,penis1,flyer,gramma,dipset,becca,ireland1,diana1,donjuan,pong,ziggy1,alterego,simple1,cbr900,logger,111555,claudia1,cantona7,matisse,ljxtymrf,victori,harle,mamas,encore,mangos,iceman1,diamon,alexxx,tiamat,5000,desktop,mafia,smurf,princesa,shojou,blueberr,welkom,maximka,123890,123q123,tammy1,bobmarley,clips,demon666,ismail,termite,laser1,missie,altair,donna1,bauhaus,trinitron,mogwai,flyers88,juniper,nokia5800,boroda,jingles,qwerasdfzxcv,shakur,777666,legos,mallrats,1qazxsw,goldeneye,tamerlan,julia1,backbone,spleen,49ers,shady,darkone,medic1,justi,giggle,cloudy,aisan,douche,parkour,bluejay,huskers1,redwine,1qw23er4,satchmo,1231234,nineball,stewart1,ballsack,probes,kappa,amiga,flipper1,dortmund,963258,trigun,1237895,homepage,blinky,screwy,gizzmo,belkin,chemist,coolhand,chachi,braves1,thebest,greedisgood,pro100,banana1,101091m,123456g,wonderfu,barefeet,8inches,1111qqqq,kcchiefs,qweasdzxc123,metal1,jennifer1,xian,asdasd123,pollux,cheerleaers,fruity,mustang5,turbos,shopper,photon,espana,hillbill,oyster,macaroni,gigabyte,jesper,motown,tuxedo,buster12,triplex,cyclones,estrell,mortis,holla,456987,fiddle,sapphic,jurassic,thebeast,ghjcnjq,baura,spock1,metallica1,karaoke,nemrac58,love1234,02031970,flvbybcnhfnjh,frisbee,diva,ajax,feathers,flower1,soccer11,allday,mierda,pearl1,amature,marauder,333555,redheads,womans,egorka,godbless,159263,nimitz,aaaa1111,sashka,madcow,socce,greywolf,baboon,pimpdaddy,123456789r,reloaded,lancia,rfhfylfi,dicker,placid,grimace,22446688,olemiss,whores,culinary,wannabe,maxi,1234567aa,amelie,riley1,trample,phantom1,baberuth,bramble,asdfqwer,vides,4you,abc123456,taichi,aztnm,smother,outsider,hakr,blackhawk,bigblack,girlie,spook,valeriya,gianluca,freedo,1q2q3q4q,handbag,lavalamp,cumm,pertinant,whatup,nokia123,redlight,patrik,111aaa,poppy1,dfytxrf,aviator,sweeps,kristin1,cypher,elway,yinyang,access1,poophead,tucson,noles1,monterey,waterfal,dank,dougal,918273,suede,minnesot,legman,bukowski,ganja,mammoth,riverrat,asswipe,daredevi,lian,arizona1,kamikadze,alex1234,smile1,angel2,55bgates,bellagio,0001,wanrltw,stiletto,lipton,arsena,biohazard,bbking,chappy,tetris,as123456,darthvad,lilwayne,nopassword,7412369,123456789987654321,natchez,glitter,14785236,mytime,rubicon,moto,pyon,wazzup,tbird,shane1,nightowl,getoff,beckham7,trueblue,hotgirl,nevermin,deathnote,13131,taffy,bigal,copenhag,apricot,gallaries,dtkjcbgtl,totoro,onlyone,civicsi,jesse1,baby123,sierra1,festus,abacus,sickboy,fishtank,fungus,charle,golfpro,teensex,mario66,seaside,aleksei,rosewood,blackberry,1020304050,bedlam,schumi,deerhunt,contour,darkelf,surveyor,deltas,pitchers,741258963,dipstick,funny1,lizzard,112233445566,jupiter2,softtail,titman,greenman,z1x2c3v4b5,smartass,12345677,notnow,myworld,nascar1,chewbacc,nosferatu,downhill,dallas22,kuan,blazers,whales,soldat,craving,powerman,yfcntyf,hotrats,cfvceyu,qweasdzx,princess1,feline,qqwwee,chitown,1234qaz,mastermind,114477,dingbat,care1839,standby,kismet,atreides,dogmeat,icarus,monkeyboy,alex1,mouses,nicetits,sealteam,chopper1,crispy,winter99,rrpass1,myporn,myspace1,corazo,topolino,ass123,lawman,muffy,orgy,1love,passord,hooyah,ekmzyf,pretzel,amonra,nestle,01011950,jimbeam,happyman,z12345,stonewal,helios,manunited,harcore,dick1,gaymen,2hot4u,light1,qwerty13,kakashi,pjkjnj,alcatel,taylo,allah,buddydog,ltkmaby,mongo,blonds,start123,audia6,123456v,civilwar,bellaco,turtles,mustan,deadspin,aaa123,fynjirf,lucky123,tortoise,amor,summe,waterski,zulu,drag0n,dtxyjcnm,gizmos,strife,interacial,pusyy,goose1,bear1,equinox,matri,jaguar1,tobydog,sammys,nachos,traktor,bryan1,morgoth,444555,dasani,miami1,mashka,xxxxxx1,ownage,nightwin,hotlips,passmast,cool123,skolko,eldiablo,manu,1357908642,screwyou,badabing,foreplay,hydro,kubrick,seductive,demon1,comeon,galileo,aladdin,metoo,happines,902100,mizuno,caddy,bizzare,girls1,redone,ohmygod,sable,bonovox,girlies,hamper,opus,gizmodo1,aaabbb,pizzahut,999888,rocky2,anton1,kikimora,peavey,ocelot,a1a2a3a4,2wsx3edc,jackie1,solace,sprocket,galary,chuck1,volvo1,shurik,poop123,locutus,virago,wdtnjxtr,tequier,bisexual,doodles,makeitso,fishy,789632145,nothing1,fishcake,sentry,libertad,oaktree,fivestar,adidas1,vegitta,mississi,spiffy,carme,neutron,vantage,agassi,boners,123456789v,hilltop,taipan,barrage,kenneth1,fister,martian,willem,lfybkf,bluestar,moonman,ntktdbpjh,paperino,bikers,daffy,benji,quake,dragonfly,suckcock,danilka,lapochka,belinea,calypso,asshol,camero1,abraxas,mike1234,womam,q1q2q3q4q5,youknow,maxpower,pic's,audi80,sonora,raymond1,tickler,tadpole,belair,crazyman,finalfantasy,999000,jonatha,paisley,kissmyas,morgana,monste,mantra,spunk,magic123,jonesy,mark1,alessand,741258,baddest,ghbdtnrfrltkf,zxccxz,tictac,augustin,racers,7grout,foxfire,99762000,openit,nathanie,1z2x3c4v5b,seadog,gangbanged,lovehate,hondacbr,harpoon,mamochka,fisherma,bismilla,locust,wally1,spiderman1,saffron,utjhubq,123456987,20spanks,safeway,pisser,bdfyjd,kristen1,bigdick1,magenta,vfhujif,anfisa,friday13,qaz123wsx,0987654321q,tyrant,guan,meggie,kontol,nurlan,ayanami,rocket1,yaroslav,websol76,mutley,hugoboss,websolutions,elpaso,gagarin,badboys,sephirot,918273645,newuser,qian,edcrfv,booger1,852258,lockout,timoxa94,mazda323,firedog,sokolova,skydiver,jesus777,1234567890z,soulfly,canary,malinka,guillerm,hookers,dogfart,surfer1,osprey,india123,rhjkbr,stoppedby,nokia5530,123456789o,blue1,werter,divers,3000,123456f,alpina,cali,whoknows,godspeed,986532,foreskin,fuzzy1,heyyou,didier,slapnuts,fresno,rosebud1,sandman1,bears1,blade1,honeybun,queen1,baronn,pakista,philipp,9111961,topsecret,sniper1,214365,slipper,letsfuck,pippen33,godawgs,mousey,qw123456,scrotum,loveis,lighthou,bp2002,nancy123,jeffrey1,susieq,buddy2,ralphie,trout1,willi,antonov,sluttey,rehbwf,marty1,darian,losangeles,letme1n,12345d,pusssy,godiva,ender,golfnut,leonidas,a1b2c3d4e5,puffer,general1,wizzard,lehjxrf,racer1,bigbucks,cool12,buddys,zinger,esprit,vbienrf,josep,tickling,froggie,987654321a,895623,daddys,crumbs,gucci,mikkel,opiate,tracy1,christophe,came11,777555,petrovich,humbug,dirtydog,allstate,horatio,wachtwoord,creepers,squirts,rotary,bigd,georgia1,fujifilm,2sweet,dasha,yorkie,slimjim,wiccan,kenzie,system1,skunk,b12345,getit,pommes,daredevil,sugars,bucker,piston,lionheart,1bitch,515051,catfight,recon,icecold,fantom,vodafone,kontakt,boris1,vfcnth,canine,01011961,valleywa,faraon,chickenwing101,qq123456,livewire,livelife,roosters,jeepers,ilya1234,coochie,pavlik,dewalt,dfhdfhf,architec,blackops,1qaz2wsx3edc4rfv,rhfcjnf,wsxedc,teaser,sebora,25252,rhino1,ankara,swifty,decimal,redleg,shanno,nermal,candies,smirnova,dragon01,photo1,ranetki,a1s2d3f4g5,axio,wertzu,maurizio,6uldv8,zxcvasdf,punkass,flowe,graywolf,peddler,3rjs1la7qe,mpegs,seawolf,ladyboy,pianos,piggies,vixen,alexus,orpheus,gdtrfb,z123456,macgyver,hugetits,ralph1,flathead,maurici,mailru,goofball,nissan1,nikon,stopit,odin,big1,smooch,reboot,famil,bullit,anthony7,gerhard,methos,124038,morena,eagle2,jessica2,zebras,getlost,gfynthf,123581321,sarajevo,indon,comets,tatjana,rfgbnjirf,joystick,batman12,123456c,sabre,beerme,victory1,kitties,1475369,badboy1,booboo1,comcast,slava,squid,saxophon,lionhear,qaywsx,bustle,nastena,roadway,loader,hillside,starlight,24681012,niggers,access99,bazooka,molly123,blackice,bandi,cocacol,nfhfrfy,timur,muschi,horse1,quant4307s,squerting,oscars,mygirls,flashman,tangerin,goofy1,p0o9i8,housewifes,newness,monkey69,escorpio,password11,hippo,warcraft3,qazxsw123,qpalzm,ribbit,ghbdtndctv,bogota,star123,258000,lincoln1,bigjim,lacoste,firestorm,legenda,indain,ludacris,milamber,1009,evangeli,letmesee,a111111,hooters1,bigred1,shaker,husky,a4tech,cnfkrth,argyle,rjhjdf,nataha,0o9i8u7y,gibson1,sooners1,glendale,archery,hoochie,stooge,aaaaaa1,scorpions,school1,vegas1,rapier,mike23,bassoon,groupd2013,macaco,baker1,labia,freewill,santiag,silverado,butch1,vflfufcrfh,monica1,rugrat,cornhole,aerosmit,bionicle,gfgfvfvf,daniel12,virgo,fmale,favorite2,detroit1,pokey,shredder,baggies,wednesda,cosmo1,mimosa,sparhawk,firehawk,romario,911turbo,funtimes,fhntvrf,nexus6,159753456,timothy1,bajingan,terry1,frenchie,raiden,1mustang,babemagnet,74123698,nadejda,truffles,rapture,douglas1,lamborghini,motocross,rjcvjc,748596,skeeter1,dante1,angel666,telecom,carsten,pietro,bmw318,astro1,carpediem,samir,orang,helium,scirocco,fuzzball,rushmore,rebelz,hotspur,lacrimosa,chevys10,madonna1,domenico,yfnfirf,jachin,shelby1,bloke,dawgs,dunhill,atlanta1,service1,mikado,devilman,angelit,reznor,euphoria,lesbain,checkmat,browndog,phreak,blaze1,crash1,farida,mutter,luckyme,horsemen,vgirl,jediknig,asdas,cesare,allnight,rockey,starlite,truck1,passfan,close-up,samue,cazzo,wrinkles,homely,eatme1,sexpot,snapshot,dima1995,asthma,thetruth,ducky,blender,priyanka,gaucho,dutchman,sizzle,kakarot,651550,passcode,justinbieber,666333,elodie,sanjay,110442,alex01,lotus1,2300mj,lakshmi,zoomer,quake3,12349876,teapot,12345687,ramada,pennywis,striper,pilot1,chingon,optima,nudity,ethan1,euclid,beeline,loyola,biguns,zaq12345,bravo1,disney1,buffa,assmunch,vivid,6661313,wellingt,aqwzsx,madala11,9874123,sigmar,pictere,tiptop,bettyboop,dinero,tahiti,gregory1,bionic,speed1,fubar1,lexus1,denis1,hawthorn,saxman,suntzu,bernhard,dominika,camaro1,hunter12,balboa,bmw2002,seville,diablo1,vfhbyjxrf,1234abc,carling,lockerroom,punani,darth,baron1,vaness,1password,libido,picher,232425,karamba,futyn007,daydream,11001001,dragon123,friends1,bopper,rocky123,chooch,asslover,shimmer,riddler,openme,tugboat,sexy123,midori,gulnara,christo,swatch,laker,offroad,puddles,hackers,mannheim,manager1,horseman,roman1,dancer1,komputer,pictuers,nokia5130,ejaculation,lioness,123456y,evilone,nastenka,pushok,javie,lilman,3141592,mjolnir,toulouse,pussy2,bigworm,smoke420,fullback,extensa,dreamcast,belize,delboy,willie1,casablanca,csyjxtr,ricky1,bonghit,salvator,basher,pussylover,rosie1,963258741,vivitron,cobra427,meonly,armageddon,myfriend,zardoz,qwedsazxc,kraken,fzappa,starfox,333999,illmatic,capoeira,weenie,ramzes,freedom2,toasty,pupkin,shinigami,fhvfutljy,nocturne,churchil,thumbnils,tailgate,neworder,sexymama,goarmy,cerebus,michelle1,vbifyz,surfsup,earthlin,dabulls,basketbal,aligator,mojojojo,saibaba,welcome2,wifes,wdtnjr,12345w,slasher,papabear,terran,footman,hocke,153759,texans,tom123,sfgiants,billabong,aassdd,monolith,xxx777,l3tm31n,ticktock,newone,hellno,japanees,contortionist,admin123,scout1,alabama1,divx1,rochard,privat,radar1,bigdad,fhctybq,tortuga,citrus,avanti,fantasy1,woodstock,s12345,fireman1,embalmer,woodwork,bonzai,konyor,newstart,jigga,panorama,goats,smithy,rugrats,hotmama,daedalus,nonstop,fruitbat,lisenok,quaker,violator,12345123,my3sons,cajun,fraggle,gayboy,oldfart,vulva,knickerless,orgasms,undertow,binky,litle,kfcnjxrf,masturbation,bunnie,alexis1,planner,transexual,sparty,leeloo,monies,fozzie,stinger1,landrove,anakonda,scoobie,yamaha1,henti,star12,rfhlbyfk,beyonce,catfood,cjytxrf,zealots,strat,fordtruc,archangel,silvi,sativa,boogers,miles1,bigjoe,tulip,petite,greentea,shitter,jonboy,voltron,morticia,evanescence,3edc4rfv,longshot,windows1,serge,aabbcc,starbucks,sinful,drywall,prelude1,www123,camel1,homebrew,marlins,123412,letmeinn,domini,swampy,plokij,fordf350,webcam,michele1,bolivi,27731828,wingzero,qawsedrftg,shinji,sverige,jasper1,piper1,cummer,iiyama,gocats,amour,alfarome,jumanji,mike69,fantasti,1monkey,w00t88,shawn1,lorien,1a2s3d4f5g,koleso,murph,natascha,sunkist,kennwort,emine,grinder,m12345,q1q2q3q4,cheeba,money2,qazwsxedc1,diamante,prosto,pdiddy,stinky1,gabby1,luckys,franci,pornographic,moochie,gfhjdjp,samdog,empire1,comicbookdb,emili,motdepasse,iphone,braveheart,reeses,nebula,sanjose,bubba2,kickflip,arcangel,superbow,porsche911,xyzzy,nigger1,dagobert,devil1,alatam,monkey2,barbara1,12345v,vfpfafrf,alessio,babemagn,aceman,arrakis,kavkaz,987789,jasons,berserk,sublime1,rogue1,myspace,buckwhea,csyekz,pussy4me,vette1,boots1,boingo,arnaud,budlite,redstorm,paramore,becky1,imtheman,chango,marley1,milkyway,666555,giveme,mahalo,lux2000,lucian,paddy,praxis,shimano,bigpenis,creeper,newproject2004,rammstei,j3qq4h7h2v,hfljcnm,lambchop,anthony2,bugman,gfhjkm12,dreamer1,stooges,cybersex,diamant,cowboyup,maximus1,sentra,615243,goethe,manhatta,fastcar,selmer,1213141516,yfnfitymrf,denni,chewey,yankee1,elektra,123456789p,trousers,fishface,topspin,orwell,vorona,sodapop,motherfu,ibilltes,forall,kookie,ronald1,balrog,maximilian,mypasswo,sonny1,zzxxcc,tkfkdg,magoo,mdogg,heeled,gitara,lesbos,marajade,tippy,morozova,enter123,lesbean,pounded,asd456,fialka,scarab,sharpie,spanky1,gstring,sachin,12345asd,princeto,hellohel,ursitesux,billows,1234kekc,kombat,cashew,duracell,kseniya,sevenof9,kostik,arthur1,corvet07,rdfhnbhf,songoku,tiberian,needforspeed,1qwert,dropkick,kevin123,panache,libra,a123456a,kjiflm,vfhnsirf,cntgfy,iamcool,narut,buffer,sk8ordie,urlaub,fireblade,blanked,marishka,gemini1,altec,gorillaz,chief1,revival47,ironman1,space1,ramstein,doorknob,devilmaycry,nemesis1,sosiska,pennstat,monday1,pioner,shevchenko,detectiv,evildead,blessed1,aggie,coffees,tical,scotts,bullwink,marsel,krypto,adrock,rjitxrf,asmodeus,rapunzel,theboys,hotdogs,deepthro,maxpayne,veronic,fyyeirf,otter,cheste,abbey1,thanos,bedrock,bartok,google1,xxxzzz,rodent,montecarlo,hernande,mikayla,123456789l,bravehea,12locked,ltymub,pegasus1,ameteur,saltydog,faisal,milfnew,momsuck,everques,ytngfhjkz,m0nkey,businessbabe,cooki,custard,123456ab,lbvjxrf,outlaws,753357,qwerty78,udacha,insider,chees,fuckmehard,shotokan,katya,seahorse,vtldtlm,turtle1,mike12,beebop,heathe,everton1,darknes,barnie,rbcekz,alisher,toohot,theduke,555222,reddog1,breezy,bulldawg,monkeyman,baylee,losangel,mastermi,apollo1,aurelie,zxcvb12345,cayenne,bastet,wsxzaq,geibcnbr,yello,fucmy69,redwall,ladybird,bitchs,cccccc1,rktjgfnhf,ghjdthrf,quest1,oedipus,linus,impalass,fartman,12345k,fokker,159753a,optiplex,bbbbbb1,realtor,slipkno,santacru,rowdy,jelena,smeller,3984240,ddddd1,sexyme,janet1,3698741,eatme69,cazzone,today1,poobear,ignatius,master123,newpass1,heather2,snoopdogg,blondinka,pass12,honeydew,fuckthat,890098890,lovem,goldrush,gecko,biker1,llama,pendejo,avalanche,fremont,snowman1,gandolf,chowder,1a2b3c4d5e,flyguy,magadan,1fuck,pingvin,nokia5230,ab1234,lothar,lasers,bignuts,renee1,royboy,skynet,12340987,1122334,dragrace,lovely1,22334455,booter,12345612,corvett,123456qq,capital1,videoes,funtik,wyvern,flange,sammydog,hulkster,13245768,not4you,vorlon,omegared,l58jkdjp!,filippo,123mudar,samadams,petrus,chris12,charlie123,123456789123,icetea,sunderla,adrian1,123qweas,kazanova,aslan,monkey123,fktyeirf,goodsex,123ab,lbtest,banaan,bluenose,837519,asd12345,waffenss,whateve,1a2a3a4a,trailers,vfhbirf,bhbcrf,klaatu,turk182,monsoon,beachbum,sunbeam,succes,clyde1,viking1,rawhide,bubblegum,princ,mackenzi,hershey1,222555,dima55,niggaz,manatee,aquila,anechka,pamel,bugsbunn,lovel,sestra,newport1,althor,hornyman,wakeup,zzz111,phishy,cerber,torrent,thething,solnishko,babel,buckeye1,peanu,ethernet,uncencored,baraka,665544,chris2,rb26dett,willy1,choppers,texaco,biggirl,123456b,anna2614,sukebe,caralho,callofduty,rt6ytere,jesus7,angel12,1money,timelord,allblack,pavlova,romanov,tequiero,yitbos,lookup,bulls23,snowflake,dickweed,barks,lever,irisha,firestar,fred1234,ghjnjnbg,danman,gatito,betty1,milhouse,kbctyjr,masterbaiting,delsol,papit,doggys,123698741,bdfyjdf,invictus,bloods,kayla1,yourmama,apple2,angelok,bigboy1,pontiac1,verygood,yeshua,twins2,porn4me,141516,rasta69,james2,bosshog,candys,adventur,stripe,djkjlz,dokken,austin316,skins,hogwarts,vbhevbh,navigato,desperado,xxx666,cneltyn,vasiliy,hazmat,daytek,eightbal,fred1,four20,74227422,fabia,aerosmith,manue,wingchun,boohoo,hombre,sanity72,goatboy,fuckm,partizan,avrora,utahjazz,submarin,pussyeat,heinlein,control1,costaric,smarty,chuan,triplets,snowy,snafu,teacher1,vangogh,vandal,evergree,cochise,qwerty99,pyramid1,saab900,sniffer,qaz741,lebron23,mark123,wolvie,blackbelt,yoshi,feeder,janeway,nutella,fuking,asscock,deepak,poppie,bigshow,housewife,grils,tonto,cynthia1,temptress,irakli,belle1,russell1,manders,frank123,seabass,gforce,songbird,zippy1,naught,brenda1,chewy1,hotshit,topaz,43046721,girfriend,marinka,jakester,thatsme,planeta,falstaff,patrizia,reborn,riptide,cherry1,shuan,nogard,chino,oasis1,qwaszx12,goodlife,davis1,1911a1,harrys,shitfuck,12345678900,russian7,007700,bulls1,porshe,danil,dolphi,river1,sabaka,gobigred,deborah1,volkswagen,miamo,alkaline,muffdive,1letmein,fkbyrf,goodguy,hallo1,nirvan,ozzie,cannonda,cvbhyjdf,marmite,germany1,joeblow,radio1,love11,raindrop,159852,jacko,newday,fathead,elvis123,caspe,citibank,sports1,deuce,boxter,fakepass,golfman,snowdog,birthday4,nonmembe,niklas,parsifal,krasota,theshit,1235813,maganda,nikita1,omicron,cassie1,columbo,buick,sigma1,thistle,bassin,rickster,apteka,sienna,skulls,miamor,coolgirl,gravis,1qazxc,virgini,hunter2,akasha,batma,motorcyc,bambino,tenerife,fordf250,zhuan,iloveporn,markiza,hotbabes,becool,fynjybyf,wapapapa,forme,mamont,pizda,dragonz,sharon1,scrooge,mrbill,pfloyd,leeroy,natedog,ishmael,777111,tecumseh,carajo,nfy.irf,0000000000o,blackcock,fedorov,antigone,feanor,novikova,bobert,peregrin,spartan117,pumkin,rayman,manuals,tooltime,555333,bonethug,marina1,bonnie1,tonyhawk,laracroft,mahalkita,18273645,terriers,gamer,hoser,littlema,molotok,glennwei,lemon1,caboose,tater,12345654321,brians,fritz1,mistral,jigsaw,fuckshit,hornyguy,southside,edthom,antonio1,bobmarle,pitures,ilikesex,crafty,nexus,boarder,fulcrum,astonvil,yanks1,yngwie,account1,zooropa,hotlegs,sammi,gumbo,rover1,perkele,maurolarastefy,lampard,357753,barracud,dmband,abcxyz,pathfinder,335577,yuliya,micky,jayman,asdfg12345,1596321,halcyon,rerfhtre,feniks,zaxscd,gotyoass,jaycee,samson1,jamesb,vibrate,grandpri,camino,colossus,davidb,mamo4ka,nicky1,homer123,pinguin,watermelon,shadow01,lasttime,glider,823762,helen1,pyramids,tulane,osama,rostov,john12,scoote,bhbyrf,gohan,galeries,joyful,bigpussy,tonka,mowgli,astalavista,zzz123,leafs,dalejr8,unicorn1,777000,primal,bigmama,okmijn,killzone,qaz12345,snookie,zxcvvcxz,davidc,epson,rockman,ceaser,beanbag,katten,3151020,duckhunt,segreto,matros,ragnar,699669,sexsexse,123123z,fuckyeah,bigbutts,gbcmrf,element1,marketin,saratov,elbereth,blaster1,yamahar6,grime,masha,juneau,1230123,pappy,lindsay1,mooner,seattle1,katzen,lucent,polly1,lagwagon,pixie,misiaczek,666666a,smokedog,lakers24,eyeball,ironhors,ametuer,volkodav,vepsrf,kimmy,gumby1,poi098,ovation,1q2w3,drinker,penetrating,summertime,1dallas,prima,modles,takamine,hardwork,macintosh,tahoe,passthie,chiks,sundown,flowers1,boromir,music123,phaedrus,albert1,joung,malakas,gulliver,parker1,balder,sonne,jessie1,domainlock2005,express1,vfkbyf,youandme,raketa,koala,dhjnvytyjub,nhfrnjh,testibil,ybrbnjc,987654321q,axeman,pintail,pokemon123,dogggg,shandy,thesaint,11122233,x72jhhu3z,theclash,raptors,zappa1,djdjxrf,hell666,friday1,vivaldi,pluto1,lance1,guesswho,jeadmi,corgan,skillz,skippy1,mango1,gymnastic,satori,362514,theedge,cxfcnkbdfz,sparkey,deicide,bagels,lololol,lemmings,r4e3w2q1,silve,staind,schnuffi,dazzle,basebal1,leroy1,bilbo1,luckie,qwerty2,goodfell,hermione,peaceout,davidoff,yesterda,killah,flippy,chrisb,zelda1,headless,muttley,fuckof,tittys,catdaddy,photog,beeker,reaver,ram1500,yorktown,bolero,tryagain,arman,chicco,learjet,alexei,jenna1,go2hell,12s3t4p55,momsanaladventure,mustang9,protoss,rooter,ginola,dingo1,mojave,erica1,1qazse4,marvin1,redwolf,sunbird,dangerou,maciek,girsl,hawks1,packard1,excellen,dashka,soleda,toonces,acetate,nacked,jbond007,alligator,debbie1,wellhung,monkeyma,supers,rigger,larsson,vaseline,rjnzhf,maripos,123456asd,cbr600rr,doggydog,cronic,jason123,trekker,flipmode,druid,sonyvaio,dodges,mayfair,mystuff,fun4me,samanta,sofiya,magics,1ranger,arcane,sixtynin,222444,omerta,luscious,gbyudby,bobcats,envision,chance1,seaweed,holdem,tomate,mensch,slicer,acura1,goochi,qweewq,punter,repoman,tomboy,never1,cortina,gomets,147896321,369852147,dogma,bhjxrf,loglatin,eragon,strato,gazelle,growler,885522,klaudia,payton34,fuckem,butchie,scorpi,lugano,123456789k,nichola,chipper1,spide,uhbujhbq,rsalinas,vfylfhby,longhorns,bugatti,everquest,!qaz2wsx,blackass,999111,snakeman,p455w0rd,fanatic,family1,pfqxbr,777vlad,mysecret,marat,phoenix2,october1,genghis,panties1,cooker,citron,ace123,1234569,gramps,blackcoc,kodiak1,hickory,ivanhoe,blackboy,escher,sincity,beaks,meandyou,spaniel,canon1,timmy1,lancaste,polaroid,edinburg,fuckedup,hotman,cueball,golfclub,gopack,bookcase,worldcup,dkflbvbhjdbx,twostep,17171717aa,letsplay,zolushka,stella1,pfkegf,kingtut,67camaro,barracuda,wiggles,gjhjkm,prancer,patata,kjifhf,theman1,romanova,sexyass,copper1,dobber,sokolov,pomidor,algernon,cadman,amoremio,william2,silly1,bobbys,hercule,hd764nw5d7e1vb1,defcon,deutschland,robinhood,alfalfa,machoman,lesbens,pandora1,easypay,tomservo,nadezhda,goonies,saab9000,jordyn,f15eagle,dbrecz,12qwerty,greatsex,thrawn,blunted,baywatch,doggystyle,loloxx,chevy2,january1,kodak,bushel,78963214,ub6ib9,zz8807zpl,briefs,hawker,224488,first1,bonzo,brent1,erasure,69213124,sidewind,soccer13,622521,mentos,kolibri,onepiece,united1,ponyboy,keksa12,wayer,mypussy,andrej,mischa,mille,bruno123,garter,bigpun,talgat,familia,jazzy1,mustang8,newjob,747400,bobber,blackbel,hatteras,ginge,asdfjkl;,camelot1,blue44,rebbyt34,ebony1,vegas123,myboys,aleksander,ijrjkflrf,lopata,pilsner,lotus123,m0nk3y,andreev,freiheit,balls1,drjynfrnt,mazda1,waterpolo,shibumi,852963,123bbb,cezer121,blondie1,volkova,rattler,kleenex,ben123,sanane,happydog,satellit,qazplm,qazwsxedcrfvtgb,meowmix,badguy,facefuck,spice1,blondy,major1,25000,anna123,654321a,sober1,deathrow,patterso,china1,naruto1,hawkeye1,waldo1,butchy,crayon,5tgb6yhn,klopik,crocodil,mothra,imhorny,pookie1,splatter,slippy,lizard1,router,buratino,yahweh,123698,dragon11,123qwe456,peepers,trucker1,ganjaman,1hxboqg2,cheyanne,storys,sebastie,zztop,maddison,4rfv3edc,darthvader,jeffro,iloveit,victor1,hotty,delphin,lifeisgood,gooseman,shifty,insertions,dude123,abrupt,123masha,boogaloo,chronos,stamford,pimpster,kthjxrf,getmein,amidala,flubber,fettish,grapeape,dantes,oralsex,jack1,foxcg33,winchest,francis1,getin,archon,cliffy,blueman,1basebal,sport1,emmitt22,porn123,bignasty,morga,123hfjdk147,ferrar,juanito,fabiol,caseydog,steveo,peternorth,paroll,kimchi,bootleg,gaijin,secre,acacia,eatme2,amarillo,monkey11,rfhfgep,tylers,a1a2a3a4a5,sweetass,blower,rodina,babushka,camilo,cimbom,tiffan,vfnbkmlf,ohbaby,gotigers,lindsey1,dragon13,romulus,qazxsw12,zxcvbn1,dropdead,hitman47,snuggle,eleven11,bloopers,357mag,avangard,bmw320,ginscoot,dshade,masterkey,voodoo1,rootedit,caramba,leahcim,hannover,8phrowz622,tim123,cassius,000000a,angelito,zzzzz1,badkarma,star1,malaga,glenwood,footlove,golf1,summer12,helpme1,fastcars,titan1,police1,polinka,k.jdm,marusya,augusto,shiraz,pantyhose,donald1,blaise,arabella,brigada,c3por2d2,peter01,marco1,hellow,dillweed,uzumymw,geraldin,loveyou2,toyota1,088011,gophers,indy500,slainte,5hsu75kpot,teejay,renat,racoon,sabrin,angie1,shiznit,harpua,sexyred,latex,tucker1,alexandru,wahoo,teamwork,deepblue,goodison,rundmc,r2d2c3p0,puppys,samba,ayrton,boobed,999777,topsecre,blowme1,123321z,loudog,random1,pantie,drevil,mandolin,121212q,hottub,brother1,failsafe,spade1,matvey,open1234,carmen1,priscill,schatzi,kajak,gooddog,trojans1,gordon1,kayak,calamity,argent,ufhvjybz,seviyi,penfold,assface,dildos,hawkwind,crowbar,yanks,ruffles,rastus,luv2epus,open123,aquafina,dawns,jared1,teufel,12345c,vwgolf,pepsi123,amores,passwerd,01478520,boliva,smutty,headshot,password3,davidd,zydfhm,gbgbcmrf,pornpass,insertion,ceckbr,test2,car123,checkit,dbnfkbq,niggas,nyyankee,muskrat,nbuhtyjr,gunner1,ocean1,fabienne,chrissy1,wendys,loveme89,batgirl,cerveza,igorek,steel1,ragman,boris123,novifarm,sexy12,qwerty777,mike01,giveitup,123456abc,fuckall,crevice,hackerz,gspot,eight8,assassins,texass,swallows,123458,baldur,moonshine,labatt,modem,sydney1,voland,dbnfkz,hotchick,jacker,princessa,dawgs1,holiday1,booper,reliant,miranda1,jamaica1,andre1,badnaamhere,barnaby,tiger7,david12,margaux,corsica,085tzzqi,universi,thewall,nevermor,martin6,qwerty77,cipher,apples1,0102030405,seraphim,black123,imzadi,gandon,ducati99,1shadow,dkflbvbhjdyf,44magnum,bigbad,feedme,samantha1,ultraman,redneck1,jackdog,usmc0311,fresh1,monique1,tigre,alphaman,cool1,greyhoun,indycar,crunchy,55chevy,carefree,willow1,063dyjuy,xrated,assclown,federica,hilfiger,trivia,bronco1,mamita,100200300,simcity,lexingky,akatsuki,retsam,johndeere,abudfv,raster,elgato,businka,satanas,mattingl,redwing1,shamil,patate,mannn,moonstar,evil666,b123456,bowl300,tanechka,34523452,carthage,babygir,santino,bondarenko,jesuss,chico1,numlock,shyguy,sound1,kirby1,needit,mostwanted,427900,funky1,steve123,passions,anduril,kermit1,prospero,lusty,barakuda,dream1,broodwar,porky,christy1,mahal,yyyyyy1,allan1,1sexy,flintsto,capri,cumeater,heretic,robert2,hippos,blindax,marykay,collecti,kasumi,1qaz!qaz,112233q,123258,chemistr,coolboy,0o9i8u,kabuki,righton,tigress,nessie,sergej,andrew12,yfafyz,ytrhjvfyn,angel7,victo,mobbdeep,lemming,transfor,1725782,myhouse,aeynbr,muskie,leno4ka,westham1,cvbhyjd,daffodil,pussylicker,pamela1,stuffer,warehous,tinker1,2w3e4r,pluton,louise1,polarbea,253634,prime1,anatoliy,januar,wysiwyg,cobraya,ralphy,whaler,xterra,cableguy,112233a,porn69,jamesd,aqualung,jimmy123,lumpy,luckyman,kingsize,golfing1,alpha7,leeds1,marigold,lol1234,teabag,alex11,10sne1,saopaulo,shanny,roland1,basser,3216732167,carol1,year2005,morozov,saturn1,joseluis,bushed,redrock,memnoch,lalaland,indiana1,lovegod,gulnaz,buffalos,loveyou1,anteater,pattaya,jaydee,redshift,bartek,summerti,coffee1,ricochet,incest,schastie,rakkaus,h2opolo,suikoden,perro,dance1,loveme1,whoopass,vladvlad,boober,flyers1,alessia,gfcgjhn,pipers,papaya,gunsling,coolone,blackie1,gonads,gfhjkzytn,foxhound,qwert12,gangrel,ghjvtntq,bluedevi,mywife,summer01,hangman,licorice,patter,vfr750,thorsten,515253,ninguna,dakine,strange1,mexic,vergeten,12345432,8phrowz624,stampede,floyd1,sailfish,raziel,ananda,giacomo,freeme,crfprf,74185296,allstars,master01,solrac,gfnhbjn,bayliner,bmw525,3465xxx,catter,single1,michael3,pentium4,nitrox,mapet123456,halibut,killroy,xxxxx1,phillip1,poopsie,arsenalfc,buffys,kosova,all4me,32165498,arslan,opensesame,brutis,charles2,pochta,nadegda,backspac,mustang0,invis,gogeta,654321q,adam25,niceday,truckin,gfdkbr,biceps,sceptre,bigdave,lauras,user345,sandys,shabba,ratdog,cristiano,natha,march13,gumball,getsdown,wasdwasd,redhead1,dddddd1,longlegs,13572468,starsky,ducksoup,bunnys,omsairam,whoami,fred123,danmark,flapper,swanky,lakings,yfhenj,asterios,rainier,searcher,dapper,ltdjxrf,horsey,seahawk,shroom,tkfkdgo,aquaman,tashkent,number9,messi10,1asshole,milenium,illumina,vegita,jodeci,buster01,bareback,goldfinger,fire1,33rjhjds,sabian,thinkpad,smooth1,sully,bonghits,sushi1,magnavox,colombi,voiture,limpone,oldone,aruba,rooster1,zhenya,nomar5,touchdow,limpbizkit,rhfcfdxbr,baphomet,afrodita,bball1,madiso,ladles,lovefeet,matthew2,theworld,thunderbird,dolly1,123rrr,forklift,alfons,berkut,speedy1,saphire,oilman,creatine,pussylov,bastard1,456258,wicked1,filimon,skyline1,fucing,yfnfkbz,hot123,abdulla,nippon,nolimits,billiard,booty1,buttplug,westlife,coolbean,aloha1,lopas,asasin,1212121,october2,whodat,good4u,d12345,kostas,ilya1992,regal,pioneer1,volodya,focus1,bastos,nbvjif,fenix,anita1,vadimka,nickle,jesusc,123321456,teste,christ1,essendon,evgenii,celticfc,adam1,forumwp,lovesme,26exkp,chillout,burly,thelast1,marcus1,metalgear,test11,ronaldo7,socrate,world1,franki,mommie,vicecity,postov1000,charlie3,oldschool,333221,legoland,antoshka,counterstrike,buggy,mustang3,123454,qwertzui,toons,chesty,bigtoe,tigger12,limpopo,rerehepf,diddle,nokia3250,solidsnake,conan1,rockroll,963369,titanic1,qwezxc,cloggy,prashant,katharin,maxfli,takashi,cumonme,michael9,mymother,pennstate,khalid,48151623,fightclub,showboat,mateusz,elrond,teenie,arrow1,mammamia,dustydog,dominator,erasmus,zxcvb1,1a2a3a,bones1,dennis1,galaxie,pleaseme,whatever1,junkyard,galadriel,charlies,2wsxzaq1,crimson1,behemoth,teres,master11,fairway,shady1,pass99,1batman,joshua12,baraban,apelsin,mousepad,melon,twodogs,123321qwe,metalica,ryjgrf,pipiska,rerfhfxf,lugnut,cretin,iloveu2,powerade,aaaaaaa1,omanko,kovalenko,isabe,chobits,151nxjmt,shadow11,zcxfcnkbdf,gy3yt2rgls,vfhbyrf,159753123,bladerunner,goodone,wonton,doodie,333666999,fuckyou123,kitty123,chisox,orlando1,skateboa,red12345,destroye,snoogans,satan1,juancarlo,goheels,jetson,scottt,fuckup,aleksa,gfhfljrc,passfind,oscar123,derrick1,hateme,viper123,pieman,audi100,tuffy,andover,shooter1,10000,makarov,grant1,nighthaw,13576479,browneye,batigol,nfvfhf,chocolate1,7hrdnw23,petter,bantam,morlii,jediknight,brenden,argonaut,goodstuf,wisconsi,315920,abigail1,dirtbag,splurge,k123456,lucky777,valdepen,gsxr600,322223,ghjnjrjk,zaq1xsw2cde3,schwanz,walter1,letmein22,nomads,124356,codeblue,nokian70,fucke,footbal1,agyvorc,aztecs,passw0r,smuggles,femmes,ballgag,krasnodar,tamuna,schule,sixtynine,empires,erfolg,dvader,ladygaga,elite1,venezuel,nitrous,kochamcie,olivia1,trustn01,arioch,sting1,131415,tristar,555000,maroon,135799,marsik,555556,fomoco,natalka,cwoui,tartan,davecole,nosferat,hotsauce,dmitry,horus,dimasik,skazka,boss302,bluebear,vesper,ultras,tarantul,asd123asd,azteca,theflash,8ball,1footbal,titlover,lucas123,number6,sampson1,789852,party1,dragon99,adonai,carwash,metropol,psychnau,vthctltc,hounds,firework,blink18,145632,wildcat1,satchel,rice80,ghtktcnm,sailor1,cubano,anderso,rocks1,mike11,famili,dfghjc,besiktas,roygbiv,nikko,bethan,minotaur,rakesh,orange12,hfleuf,jackel,myangel,favorite7,1478520,asssss,agnieszka,haley1,raisin,htubyf,1buster,cfiekz,derevo,1a2a3a4a5a,baltika,raffles,scruffy1,clitlick,louis1,buddha1,fy.nrf,walker1,makoto,shadow2,redbeard,vfvfvskfhfve,mycock,sandydog,lineman,network1,favorite8,longdick,mustangg,mavericks,indica,1killer,cisco1,angelofwar,blue69,brianna1,bubbaa,slayer666,level42,baldrick,brutus1,lowdown,haribo,lovesexy,500000,thissuck,picker,stephy,1fuckme,characte,telecast,1bigdog,repytwjdf,thematrix,hammerhe,chucha,ganesha,gunsmoke,georgi,sheltie,1harley,knulla,sallas,westie,dragon7,conker,crappie,margosha,lisboa,3e2w1q,shrike,grifter,ghjcnjghjcnj,asdfg1,mnbvcxz1,myszka,posture,boggie,rocketman,flhtyfkby,twiztid,vostok,pi314159,force1,televizor,gtkmvtym,samhain,imcool,jadzia,dreamers,strannik,k2trix,steelhea,nikitin,commodor,brian123,chocobo,whopper,ibilljpf,megafon,ararat,thomas12,ghbrjkbcn,q1234567890,hibernia,kings1,jim123,redfive,68camaro,iawgk2,xavier1,1234567u,d123456,ndirish,airborn,halfmoon,fluffy1,ranchero,sneaker,soccer2,passion1,cowman,birthday1,johnn,razzle,glock17,wsxqaz,nubian,lucky2,jelly1,henderso,eric1,123123e,boscoe01,fuck0ff,simpson1,sassie,rjyjgkz,nascar3,watashi,loredana,janus,wilso,conman,david2,mothe,iloveher,snikers,davidj,fkmnthyfnbdf,mettss,ratfink,123456h,lostsoul,sweet16,brabus,wobble,petra1,fuckfest,otters,sable1,svetka,spartacu,bigstick,milashka,1lover,pasport,champagn,papichul,hrvatska,hondacivic,kevins,tacit,moneybag,gohogs,rasta1,246813579,ytyfdbcnm,gubber,darkmoon,vitaliy,233223,playboys,tristan1,joyce1,oriflame,mugwump,access2,autocad,thematri,qweqwe123,lolwut,ibill01,multisyn,1233211,pelikan,rob123,chacal,1234432,griffon,pooch,dagestan,geisha,satriani,anjali,rocketma,gixxer,pendrago,vincen,hellokit,killyou,ruger,doodah,bumblebe,badlands,galactic,emachines,foghorn,jackso,jerem,avgust,frontera,123369,daisymae,hornyboy,welcome123,tigger01,diabl,angel13,interex,iwantsex,rockydog,kukolka,sawdust,online1,3234412,bigpapa,jewboy,3263827,dave123,riches,333222,tony1,toggle,farter,124816,tities,balle,brasilia,southsid,micke,ghbdtn12,patit,ctdfcnjgjkm,olds442,zzzzzz1,nelso,gremlins,gypsy1,carter1,slut69,farcry,7415963,michael8,birdie1,charl,123456789abc,100001,aztec,sinjin,bigpimpi,closeup,atlas1,nvidia,doggone,classic1,manana,malcolm1,rfkbyf,hotbabe,rajesh,dimebag,ganjubas,rodion,jagr68,seren,syrinx,funnyman,karapuz,123456789n,bloomin,admin18533362,biggdogg,ocarina,poopy1,hellome,internet1,booties,blowjobs,matt1,donkey1,swede,1jennife,evgeniya,lfhbyf,coach1,444777,green12,patryk,pinewood,justin12,271828,89600506779,notredame,tuborg,lemond,sk8ter,million1,wowser,pablo1,st0n3,jeeves,funhouse,hiroshi,gobucs,angeleye,bereza,winter12,catalin,qazedc,andros,ramazan,vampyre,sweethea,imperium,murat,jamest,flossy,sandeep,morgen,salamandra,bigdogg,stroller,njdevils,nutsack,vittorio,%%passwo,playful,rjyatnrf,tookie,ubnfhf,michi,777444,shadow13,devils1,radiance,toshiba1,beluga,amormi,dandfa,trust1,killemall,smallville,polgara,billyb,landscap,steves,exploite,zamboni,damage11,dzxtckfd,trader12,pokey1,kobe08,damager,egorov,dragon88,ckfdbr,lisa69,blade2,audis4,nelson1,nibbles,23176djivanfros,mutabor,artofwar,matvei,metal666,hrfzlz,schwinn,poohbea,seven77,thinker,123456789qwerty,sobriety,jakers,karamelka,vbkfyf,volodin,iddqd,dale03,roberto1,lizaveta,qqqqqq1,cathy1,08154711,davidm,quixote,bluenote,tazdevil,katrina1,bigfoot1,bublik,marma,olechka,fatpussy,marduk,arina,nonrev67,qqqq1111,camill,wtpfhm,truffle,fairview,mashina,voltaire,qazxswedcvfr,dickface,grassy,lapdance,bosstone,crazy8,yackwin,mobil,danielit,mounta1n,player69,bluegill,mewtwo,reverb,cnthdf,pablito,a123321,elena1,warcraft1,orland,ilovemyself,rfntyjr,joyride,schoo,dthjxrf,thetachi,goodtimes,blacksun,humpty,chewbacca,guyute,123xyz,lexicon,blue45,qwe789,galatasaray,centrino,hendrix1,deimos,saturn5,craig1,vlad1996,sarah123,tupelo,ljrnjh,hotwife,bingos,1231231,nicholas1,flamer,pusher,1233210,heart1,hun999,jiggy,giddyup,oktober,123456zxc,budda,galahad,glamur,samwise,oneton,bugsbunny,dominic1,scooby2,freetime,internat,159753852,sc00ter,wantit,mazinger,inflames,laracrof,greedo,014789,godofwar,repytwjd,water123,fishnet,venus1,wallace1,tenpin,paula1,1475963,mania,novikov,qwertyasdfgh,goldmine,homies,777888999,8balls,holeinon,paper1,samael,013579,mansur,nikit,ak1234,blueline,polska1,hotcock,laredo,windstar,vbkbwbz,raider1,newworld,lfybkrf,catfish1,shorty1,piranha,treacle,royale,2234562,smurfs,minion,cadence,flapjack,123456p,sydne,135531,robinhoo,nasdaq,decatur,cyberonline,newage,gemstone,jabba,touchme,hooch,pigdog,indahous,fonzie,zebra1,juggle,patrick2,nihongo,hitomi,oldnavy,qwerfdsa,ukraina,shakti,allure,kingrich,diane1,canad,piramide,hottie1,clarion,college1,5641110,connect1,therion,clubber,velcro,dave1,astra1,13579-,astroboy,skittle,isgreat,photoes,cvzefh1gkc,001100,2cool4u,7555545,ginger12,2wsxcde3,camaro69,invader,domenow,asd1234,colgate,qwertasdfg,jack123,pass01,maxman,bronte,whkzyc,peter123,bogie,yecgaa,abc321,1qay2wsx,enfield,camaroz2,trashman,bonefish,system32,azsxdcfvgb,peterose,iwantyou,dick69,temp1234,blastoff,capa200,connie1,blazin,12233445,sexybaby,123456j,brentfor,pheasant,hommer,jerryg,thunders,august1,lager,kapusta,boobs1,nokia5300,rocco1,xytfu7,stars1,tugger,123sas,blingbling,1bubba,0wnsyo0,1george,baile,richard2,habana,1diamond,sensatio,1golfer,maverick1,1chris,clinton1,michael7,dragons1,sunrise1,pissant,fatim,mopar1,levani,rostik,pizzapie,987412365,oceans11,748159263,cum4me,palmetto,4r3e2w1q,paige1,muncher,arsehole,kratos,gaffer,banderas,billys,prakash,crabby,bungie,silver12,caddis,spawn1,xboxlive,sylvania,littlebi,524645,futura,valdemar,isacs155,prettygirl,big123,555444,slimer,chicke,newstyle,skypilot,sailormoon,fatluvr69,jetaime,sitruc,jesuschrist,sameer,bear12,hellion,yendor,country1,etnies,conejo,jedimast,darkknight,toobad,yxcvbn,snooks,porn4life,calvary,alfaromeo,ghostman,yannick,fnkfynblf,vatoloco,homebase,5550666,barret,1111111111zz,odysseus,edwardss,favre4,jerrys,crybaby,xsw21qaz,firestor,spanks,indians1,squish,kingair,babycakes,haters,sarahs,212223,teddyb,xfactor,cumload,rhapsody,death123,three3,raccoon,thomas2,slayer66,1q2q3q4q5q,thebes,mysterio,thirdeye,orkiox.,nodoubt,bugsy,schweiz,dima1996,angels1,darkwing,jeronimo,moonpie,ronaldo9,peaches2,mack10,manish,denise1,fellowes,carioca,taylor12,epaulson,makemoney,oc247ngucz,kochanie,3edcvfr4,vulture,1qw23e,1234567z,munchie,picard1,xthtgfirf,sportste,psycho1,tahoe1,creativ,perils,slurred,hermit,scoob,diesel1,cards1,wipeout,weeble,integra1,out3xf,powerpc,chrism,kalle,ariadne,kailua,phatty,dexter1,fordman,bungalow,paul123,compa,train1,thejoker,jys6wz,pussyeater,eatmee,sludge,dominus,denisa,tagheuer,yxcvbnm,bill1,ghfdlf,300zx,nikita123,carcass,semaj,ramone,muenchen,animal1,greeny,annemari,dbrf134,jeepcj7,mollys,garten,sashok,ironmaid,coyotes,astoria,george12,westcoast,primetim,123456o,panchito,rafae,japan1,framer,auralo,tooshort,egorova,qwerty22,callme,medicina,warhawk,w1w2w3w4,cristia,merli,alex22,kawaii,chatte,wargames,utvols,muaddib,trinket,andreas1,jjjjj1,cleric,scooters,cuntlick,gggggg1,slipknot1,235711,handcuff,stussy,guess1,leiceste,ppppp1,passe,lovegun,chevyman,hugecock,driver1,buttsex,psychnaut1,cyber1,black2,alpha12,melbourn,man123,metalman,yjdsqujl,blondi,bungee,freak1,stomper,caitlin1,nikitina,flyaway,prikol,begood,desperad,aurelius,john1234,whosyourdaddy,slimed123,bretagne,den123,hotwheel,king123,roodypoo,izzicam,save13tx,warpten,nokia3310,samolet,ready1,coopers,scott123,bonito,1aaaaa,yomomma,dawg1,rache,itworks,asecret,fencer,451236,polka,olivetti,sysadmin,zepplin,sanjuan,479373,lickem,hondacrx,pulamea,future1,naked1,sexyguy,w4g8at,lollol1,declan,runner1,rumple,daddy123,4snz9g,grandprix,calcio,whatthefuck,nagrom,asslick,pennst,negrit,squiggy,1223334444,police22,giovann,toronto1,tweet,yardbird,seagate,truckers,554455,scimitar,pescator,slydog,gaysex,dogfish,fuck777,12332112,qazxswed,morkovka,daniela1,imback,horny69,789123456,123456789w,jimmy2,bagger,ilove69,nikolaus,atdhfkm,rebirth,1111aaaa,pervasive,gjgeufq,dte4uw,gfhnbpfy,skeletor,whitney1,walkman,delorean,disco1,555888,as1234,ishikawa,fuck12,reaper1,dmitrii,bigshot,morrisse,purgen,qwer4321,itachi,willys,123123qwe,kisska,roma123,trafford,sk84life,326159487,pedros,idiom,plover,bebop,159875321,jailbird,arrowhea,qwaszx123,zaxscdvf,catlover,bakers,13579246,bones69,vermont1,helloyou,simeon,chevyz71,funguy,stargaze,parolparol,steph1,bubby,apathy,poppet,laxman,kelly123,goodnews,741236,boner1,gaetano,astonvilla,virtua,luckyboy,rocheste,hello2u,elohim,trigger1,cstrike,pepsicola,miroslav,96385274,fistfuck,cheval,magyar,svetlanka,lbfyjxrf,mamedov,123123123q,ronaldo1,scotty1,1nicole,pittbull,fredd,bbbbb1,dagwood,gfhkfvtyn,ghblehrb,logan5,1jordan,sexbomb,omega2,montauk,258741,dtythf,gibbon,winamp,thebomb,millerli,852654,gemin,baldy,halflife2,dragon22,mulberry,morrigan,hotel6,zorglub,surfin,951159,excell,arhangel,emachine,moses1,968574,reklama,bulldog2,cuties,barca,twingo,saber,elite11,redtruck,casablan,ashish,moneyy,pepper12,cnhtktw,rjcnbr,arschloch,phenix,cachorro,sunita,madoka,joselui,adams1,mymoney,hemicuda,fyutkjr,jake12,chicas,eeeee1,sonnyboy,smarties,birdy,kitten1,cnfcbr,island1,kurosaki,taekwond,konfetka,bennett1,omega3,jackson2,fresca,minako,octavian,kban667,feyenoord,muaythai,jakedog,fktrcfylhjdyf,1357911q,phuket,sexslave,fktrcfylhjdbx,asdfjk,89015173454,qwerty00,kindbud,eltoro,sex6969,nyknicks,12344321q,caballo,evenflow,hoddle,love22,metro1,mahalko,lawdog,tightass,manitou,buckie,whiskey1,anton123,335533,password4,primo,ramair,timbo,brayden,stewie,pedro1,yorkshir,ganster,hellothe,tippy1,direwolf,genesi,rodrig,enkeli,vaz21099,sorcerer,winky,oneshot,boggle,serebro,badger1,japanes,comicbook,kamehame,alcat,denis123,echo45,sexboy,gr8ful,hondo,voetbal,blue33,2112rush,geneviev,danni1,moosey,polkmn,matthew7,ironhead,hot2trot,ashley12,sweeper,imogen,blue21,retep,stealth1,guitarra,bernard1,tatian,frankfur,vfnhbwf,slacking,haha123,963741,asdasdas,katenok,airforce1,123456789qaz,shotgun1,12qwasz,reggie1,sharo,976431,pacifica,dhip6a,neptun,kardon,spooky1,beaut,555555a,toosweet,tiedup,11121314,startac,lover69,rediska,pirata,vfhrbp,1234qwerty,energize,hansolo1,playbo,larry123,oemdlg,cnjvfnjkju,a123123,alexan,gohawks,antonius,fcbayern,mambo,yummy1,kremlin,ellen1,tremere,vfiekz,bellevue,charlie9,izabella,malishka,fermat,rotterda,dawggy,becket,chasey,kramer1,21125150,lolit,cabrio,schlong,arisha,verity,3some,favorit,maricon,travelle,hotpants,red1234,garrett1,home123,knarf,seven777,figment,asdewq,canseco,good2go,warhol,thomas01,pionee,al9agd,panacea,chevy454,brazzers,oriole,azerty123,finalfan,patricio,northsta,rebelde,bulldo,stallone,boogie1,7uftyx,cfhfnjd,compusa,cornholi,config,deere,hoopster,sepultura,grasshop,babygurl,lesbo,diceman,proverbs,reddragon,nurbek,tigerwoo,superdup,buzzsaw,kakaroto,golgo13,edwar,123qaz123,butter1,sssss1,texas2,respekt,ou812ic,123456qaz,55555a,doctor1,mcgwire,maria123,aol999,cinders,aa1234,joness,ghbrjkmyj,makemone,sammyboy,567765,380zliki,theraven,testme,mylene,elvira26,indiglo,tiramisu,shannara,baby1,123666,gfhreh,papercut,johnmish,orange8,bogey1,mustang7,bagpipes,dimarik,vsijyjr,4637324,ravage,cogito,seven11,natashka,warzone,hr3ytm,4free,bigdee,000006,243462536,bigboi,123333,trouts,sandy123,szevasz,monica2,guderian,newlife1,ratchet,r12345,razorbac,12345i,piazza31,oddjob,beauty1,fffff1,anklet,nodrog,pepit,olivi,puravida,robert12,transam1,portman,bubbadog,steelers1,wilson1,eightball,mexico1,superboy,4rfv5tgb,mzepab,samurai1,fuckslut,colleen1,girdle,vfrcbvec,q1w2e3r4t,soldier1,19844891,alyssa1,a12345a,fidelis,skelter,nolove,mickeymouse,frehley,password69,watermel,aliska,soccer15,12345e,ladybug1,abulafia,adagio,tigerlil,takehana,hecate,bootneck,junfan,arigato,wonkette,bobby123,trustnoone,phantasm,132465798,brianjo,w12345,t34vfrc1991,deadeye,1robert,1daddy,adida,check1,grimlock,muffi,airwalk,prizrak,onclick,longbeac,ernie1,eadgbe,moore1,geniu,shadow123,bugaga,jonathan1,cjrjkjdf,orlova,buldog,talon1,westport,aenima,541233432442,barsuk,chicago2,kellys,hellbent,toughguy,iskander,skoal,whatisit,jake123,scooter2,fgjrfkbgcbc,ghandi,love13,adelphia,vjhrjdrf,adrenali,niunia,jemoeder,rainbo,all4u8,anime1,freedom7,seraph,789321,tommys,antman,firetruc,neogeo,natas,bmwm3,froggy1,paul1,mamit,bayview,gateways,kusanagi,ihateu,frederi,rock1,centurion,grizli,biggin,fish1,stalker1,3girls,ilovepor,klootzak,lollo,redsox04,kirill123,jake1,pampers,vasya,hammers1,teacup,towing,celtic1,ishtar,yingyang,4904s677075,dahc1,patriot1,patrick9,redbirds,doremi,rebecc,yoohoo,makarova,epiphone,rfgbnfy,milesd,blister,chelseafc,katana1,blackrose,1james,primrose,shock5,hard1,scooby12,c6h12o6,dustoff,boing,chisel,kamil,1william,defiant1,tyvugq,mp8o6d,aaa340,nafets,sonnet,flyhigh,242526,crewcom,love23,strike1,stairway,katusha,salamand,cupcake1,password0,007james,sunnie,multisync,harley01,tequila1,fred12,driver8,q8zo8wzq,hunter01,mozzer,temporar,eatmeraw,mrbrownxx,kailey,sycamore,flogger,tincup,rahasia,ganymede,bandera,slinger,1111122222,vander,woodys,1cowboy,khaled,jamies,london12,babyboo,tzpvaw,diogenes,budice,mavrick,135797531,cheeta,macros,squonk,blackber,topfuel,apache1,falcon16,darkjedi,cheeze,vfhvtkfl,sparco,change1,gfhfif,freestyl,kukuruza,loveme2,12345f,kozlov,sherpa,marbella,44445555,bocephus,1winner,alvar,hollydog,gonefish,iwantin,barman,godislove,amanda18,rfpfynbg,eugen,abcdef1,redhawk,thelema,spoonman,baller1,harry123,475869,tigerman,cdtnjxrf,marillio,scribble,elnino,carguy,hardhead,l2g7k3,troopers,selen,dragon76,antigua,ewtosi,ulysse,astana,paroli,cristo,carmex,marjan,bassfish,letitbe,kasparov,jay123,19933991,blue13,eyecandy,scribe,mylord,ukflbjkec,ellie1,beaver1,destro,neuken,halfpint,ameli,lilly1,satanic,xngwoj,12345trewq,asdf1,bulldogg,asakura,jesucrist,flipside,packers4,biggy,kadett,biteme69,bobdog,silverfo,saint1,bobbo,packman,knowledg,foolio,fussbal,12345g,kozerog,westcoas,minidisc,nbvcxw,martini1,alastair,rasengan,superbee,memento,porker,lena123,florenc,kakadu,bmw123,getalife,bigsky,monkee,people1,schlampe,red321,memyself,0147896325,12345678900987654321,soccer14,realdeal,gfgjxrf,bella123,juggs,doritos,celtics1,peterbilt,ghbdtnbrb,gnusmas,xcountry,ghbdtn1,batman99,deusex,gtnhjdf,blablabl,juster,marimba,love2,rerjkrf,alhambra,micros,siemens1,assmaste,moonie,dashadasha,atybrc,eeeeee1,wildrose,blue55,davidl,xrp23q,skyblue,leo123,ggggg1,bestfriend,franny,1234rmvb,fun123,rules1,sebastien,chester2,hakeem,winston2,fartripper,atlant,07831505,iluvsex,q1a2z3,larrys,009900,ghjkju,capitan,rider1,qazxsw21,belochka,andy123,hellya,chicca,maximal,juergen,password1234,howard1,quetzal,daniel123,qpwoeiruty,123555,bharat,ferrari3,numbnuts,savant,ladydog,phipsi,lovepussy,etoile,power2,mitten,britneys,chilidog,08522580,2fchbg,kinky1,bluerose,loulo,ricardo1,doqvq3,kswbdu,013cpfza,timoha,ghbdtnghbdtn,3stooges,gearhead,browns1,g00ber,super7,greenbud,kitty2,pootie,toolshed,gamers,coffe,ibill123,freelove,anasazi,sister1,jigger,natash,stacy1,weronika,luzern,soccer7,hoopla,dmoney,valerie1,canes,razdvatri,washere,greenwoo,rfhjkbyf,anselm,pkxe62,maribe,daniel2,maxim1,faceoff,carbine,xtkjdtr,buddy12,stratos,jumpman,buttocks,aqswdefr,pepsis,sonechka,steeler1,lanman,nietzsch,ballz,biscuit1,wrxsti,goodfood,juventu,federic,mattman,vika123,strelec,jledfyxbr,sideshow,4life,fredderf,bigwilly,12347890,12345671,sharik,bmw325i,fylhtqrf,dannon4,marky,mrhappy,drdoom,maddog1,pompier,cerbera,goobers,howler,jenny69,evely,letitrid,cthuttdyf,felip,shizzle,golf12,t123456,yamah,bluearmy,squishy,roxan,10inches,dollface,babygirl1,blacksta,kaneda,lexingto,canadien,222888,kukushka,sistema,224422,shadow69,ppspankp,mellons,barbie1,free4all,alfa156,lostone,2w3e4r5t,painkiller,robbie1,binger,8dihc6,jaspe,rellik,quark,sogood,hoopstar,number2,snowy1,dad2ownu,cresta,qwe123asd,hjvfyjdf,gibsonsg,qbg26i,dockers,grunge,duckling,lfiekz,cuntsoup,kasia1,1tigger,woaini,reksio,tmoney,firefighter,neuron,audia3,woogie,powerboo,powermac,fatcock,12345666,upnfmc,lustful,porn1,gotlove,amylee,kbytqrf,11924704,25251325,sarasota,sexme,ozzie1,berliner,nigga1,guatemal,seagulls,iloveyou!,chicken2,qwerty21,010203040506,1pillow,libby1,vodoley,backlash,piglets,teiubesc,019283,vonnegut,perico,thunde,buckey,gtxtymrf,manunite,iiiii1,lost4815162342,madonn,270873_,britney1,kevlar,piano1,boondock,colt1911,salamat,doma77ns,anuradha,cnhjqrf,rottweil,newmoon,topgun1,mauser,fightclu,birthday21,reviewpa,herons,aassddff,lakers32,melissa2,vredina,jiujitsu,mgoblue,shakey,moss84,12345zxcvb,funsex,benji1,garci,113322,chipie,windex,nokia5310,pwxd5x,bluemax,cosita,chalupa,trotsky,new123,g3ujwg,newguy,canabis,gnaget,happydays,felixx,1patrick,cumface,sparkie,kozlova,123234,newports,broncos7,golf18,recycle,hahah,harrypot,cachondo,open4me,miria,guessit,pepsione,knocker,usmc1775,countach,playe,wiking,landrover,cracksevi,drumline,a7777777,smile123,manzana,panty,liberta,pimp69,dolfan,quality1,schnee,superson,elaine22,webhompass,mrbrownx,deepsea,4wheel,mamasita,rockport,rollie,myhome,jordan12,kfvgjxrf,hockey12,seagrave,ford1,chelsea2,samsara,marissa1,lamesa,mobil1,piotrek,tommygun,yyyyy1,wesley1,billy123,homersim,julies,amanda12,shaka,maldini,suzenet,springst,iiiiii1,yakuza,111111aa,westwind,helpdesk,annamari,bringit,hopefull,hhhhhhh1,saywhat,mazdarx8,bulova,jennife1,baikal,gfhjkmxbr,victoria1,gizmo123,alex99,defjam,2girls,sandrock,positivo,shingo,syncmast,opensesa,silicone,fuckina,senna1,karlos,duffbeer,montagne,gehrig,thetick,pepino,hamburge,paramedic,scamp,smokeweed,fabregas,phantoms,venom121293,2583458,badone,porno69,manwhore,vfvf123,notagain,vbktyf,rfnthbyrf,wildblue,kelly001,dragon66,camell,curtis1,frolova,1212123,dothedew,tyler123,reddrago,planetx,promethe,gigolo,1001001,thisone,eugeni,blackshe,cruzazul,incognito,puller,joonas,quick1,spirit1,gazza,zealot,gordito,hotrod1,mitch1,pollito,hellcat,mythos,duluth,383pdjvl,easy123,hermos,binkie,its420,lovecraf,darien,romina,doraemon,19877891,syclone,hadoken,transpor,ichiro,intell,gargamel,dragon2,wavpzt,557744,rjw7x4,jennys,kickit,rjynfrn,likeit,555111,corvus,nec3520,133113,mookie1,bochum,samsung2,locoman0,154ugeiu,vfvfbgfgf,135792,[start],tenni,20001,vestax,hufmqw,neveragain,wizkid,kjgfnf,nokia6303,tristen,saltanat,louie1,gandalf2,sinfonia,alpha3,tolstoy,ford150,f00bar,1hello,alici,lol12,riker1,hellou,333888,1hunter,qw1234,vibrator,mets86,43211234,gonzale,cookies1,sissy1,john11,bubber,blue01,cup2006,gtkmvtyb,nazareth,heybaby,suresh,teddie,mozilla,rodeo1,madhouse,gamera,123123321,naresh,dominos,foxtrot1,taras,powerup,kipling,jasonb,fidget,galena,meatman,alpacino,bookmark,farting,humper,titsnass,gorgon,castaway,dianka,anutka,gecko1,fucklove,connery,wings1,erika1,peoria,moneymaker,ichabod,heaven1,paperboy,phaser,breakers,nurse1,westbrom,alex13,brendan1,123asd123,almera,grubber,clarkie,thisisme,welkom01,51051051051,crypto,freenet,pflybwf,black12,testme2,changeit,autobahn,attica,chaoss,denver1,tercel,gnasher23,master2,vasilii,sherman1,gomer,bigbuck,derek1,qwerzxcv,jumble,dragon23,art131313,numark,beasty,cxfcnmttcnm,updown,starion,glist,sxhq65,ranger99,monkey7,shifter,wolves1,4r5t6y,phone1,favorite5,skytommy,abracada,1martin,102030405060,gatech,giulio,blacktop,cheer1,africa1,grizzly1,inkjet,shemales,durango1,booner,11223344q,supergirl,vanyarespekt,dickless,srilanka,weaponx,6string,nashvill,spicey,boxer1,fabien,2sexy2ho,bowhunt,jerrylee,acrobat,tawnee,ulisse,nolimit8,l8g3bkde,pershing,gordo1,allover,gobrowns,123432,123444,321456987,spoon1,hhhhh1,sailing1,gardenia,teache,sexmachine,tratata,pirate1,niceone,jimbos,314159265,qsdfgh,bobbyy,ccccc1,carla1,vjkjltw,savana,biotech,frigid,123456789g,dragon10,yesiam,alpha06,oakwood,tooter,winsto,radioman,vavilon,asnaeb,google123,nariman,kellyb,dthyjcnm,password6,parol1,golf72,skate1,lthtdj,1234567890s,kennet,rossia,lindas,nataliya,perfecto,eminem1,kitana,aragorn1,rexona,arsenalf,planot,coope,testing123,timex,blackbox,bullhead,barbarian,dreamon,polaris1,cfvjktn,frdfhbev,gametime,slipknot666,nomad1,hfgcjlbz,happy69,fiddler,brazil1,joeboy,indianali,113355,obelisk,telemark,ghostrid,preston1,anonim,wellcome,verizon1,sayangku,censor,timeport,dummies,adult1,nbnfybr,donger,thales,iamgay,sexy1234,deadlift,pidaras,doroga,123qwe321,portuga,asdfgh12,happys,cadr14nu,pi3141,maksik,dribble,cortland,darken,stepanova,bommel,tropic,sochi2014,bluegras,shahid,merhaba,nacho,2580456,orange44,kongen,3cudjz,78girl,my3kids,marcopol,deadmeat,gabbie,saruman,jeepman,freddie1,katie123,master99,ronal,ballbag,centauri,killer7,xqgann,pinecone,jdeere,geirby,aceshigh,55832811,pepsimax,rayden,razor1,tallyho,ewelina,coldfire,florid,glotest,999333,sevenup,bluefin,limaperu,apostol,bobbins,charmed1,michelin,sundin,centaur,alphaone,christof,trial1,lions1,45645,just4you,starflee,vicki1,cougar1,green2,jellyfis,batman69,games1,hihje863,crazyzil,w0rm1,oklick,dogbite,yssup,sunstar,paprika,postov10,124578963,x24ik3,kanada,buckster,iloveamy,bear123,smiler,nx74205,ohiostat,spacey,bigbill,doudo,nikolaeva,hcleeb,sex666,mindy1,buster11,deacons,boness,njkcnsq,candy2,cracker1,turkey1,qwertyu1,gogreen,tazzzz,edgewise,ranger01,qwerty6,blazer1,arian,letmeinnow,cigar1,jjjjjj1,grigio,frien,tenchu,f9lmwd,imissyou,filipp,heathers,coolie,salem1,woodduck,scubadiv,123kat,raffaele,nikolaev,dapzu455,skooter,9inches,lthgfhjkm,gr8one,ffffff1,zujlrf,amanda69,gldmeo,m5wkqf,rfrltkf,televisi,bonjou,paleale,stuff1,cumalot,fuckmenow,climb7,mark1234,t26gn4,oneeye,george2,utyyflbq,hunting1,tracy71,ready2go,hotguy,accessno,charger1,rudedog,kmfdm,goober1,sweetie1,wtpmjgda,dimensio,ollie1,pickles1,hellraiser,mustdie,123zzz,99887766,stepanov,verdun,tokenbad,anatol,bartende,cidkid86,onkelz,timmie,mooseman,patch1,12345678c,marta1,dummy1,bethany1,myfamily,history1,178500,lsutiger,phydeaux,moren,dbrnjhjdbx,gnbxrf,uniden,drummers,abpbrf,godboy,daisy123,hogan1,ratpack,irland,tangerine,greddy,flore,sqrunch,billyjoe,q55555,clemson1,98745632,marios,ishot,angelin,access12,naruto12,lolly,scxakv,austin12,sallad,cool99,rockit,mongo1,mark22,ghbynth,ariadna,senha,docto,tyler2,mobius,hammarby,192168,anna12,claire1,pxx3eftp,secreto,greeneye,stjabn,baguvix,satana666,rhbcnbyjxrf,dallastx,garfiel,michaelj,1summer,montan,1234ab,filbert,squids,fastback,lyudmila,chucho,eagleone,kimberle,ar3yuk3,jake01,nokids,soccer22,1066ad,ballon,cheeto,review69,madeira,taylor2,sunny123,chubbs,lakeland,striker1,porche,qwertyu8,digiview,go1234,ferari,lovetits,aditya,minnow,green3,matman,cellphon,fortytwo,minni,pucara,69a20a,roman123,fuente,12e3e456,paul12,jacky,demian,littleman,jadakiss,vlad1997,franca,282860,midian,nunzio,xaccess2,colibri,jessica0,revilo,654456,harvey1,wolf1,macarena,corey1,husky1,arsen,milleniu,852147,crowes,redcat,combat123654,hugger,psalms,quixtar,ilovemom,toyot,ballss,ilovekim,serdar,james23,avenger1,serendip,malamute,nalgas,teflon,shagger,letmein6,vyjujnjxbt,assa1234,student1,dixiedog,gznybwf13,fuckass,aq1sw2de3,robroy,hosehead,sosa21,123345,ias100,teddy123,poppin,dgl70460,zanoza,farhan,quicksilver,1701d,tajmahal,depechemode,paulchen,angler,tommy2,recoil,megamanx,scarecro,nicole2,152535,rfvtgb,skunky,fatty1,saturno,wormwood,milwauke,udbwsk,sexlover,stefa,7bgiqk,gfnhbr,omar10,bratan,lbyfvj,slyfox,forest1,jambo,william3,tempus,solitari,lucydog,murzilka,qweasdzxc1,vehpbkrf,12312345,fixit,woobie,andre123,123456789x,lifter,zinaida,soccer17,andone,foxbat,torsten,apple12,teleport,123456i,leglover,bigcocks,vologda,dodger1,martyn,d6o8pm,naciona,eagleeye,maria6,rimshot,bentley1,octagon,barbos,masaki,gremio,siemen,s1107d,mujeres,bigtits1,cherr,saints1,mrpink,simran,ghzybr,ferrari2,secret12,tornado1,kocham,picolo,deneme,onelove1,rolan,fenster,1fuckyou,cabbie,pegaso,nastyboy,password5,aidana,mine2306,mike13,wetone,tigger69,ytreza,bondage1,myass,golova,tolik,happyboy,poilkj,nimda2k,rammer,rubies,hardcore1,jetset,hoops1,jlaudio,misskitt,1charlie,google12,theone1,phred,porsch,aalborg,luft4,charlie5,password7,gnosis,djgabbab,1daniel,vinny,borris,cumulus,member1,trogdor,darthmau,andrew2,ktjybl,relisys,kriste,rasta220,chgobndg,weener,qwerty66,fritter,followme,freeman1,ballen,blood1,peache,mariso,trevor1,biotch,gtfullam,chamonix,friendste,alligato,misha1,1soccer,18821221,venkat,superd,molotov,bongos,mpower,acun3t1x,dfcmrf,h4x3d,rfhfufylf,tigran,booyaa,plastic1,monstr,rfnhby,lookatme,anabolic,tiesto,simon123,soulman,canes1,skyking,tomcat1,madona,bassline,dasha123,tarheel1,dutch1,xsw23edc,qwerty123456789,imperator,slaveboy,bateau,paypal,house123,pentax,wolf666,drgonzo,perros,digger1,juninho,hellomoto,bladerun,zzzzzzz1,keebler,take8422,fffffff1,ginuwine,israe,caesar1,crack1,precious1,garand,magda1,zigazaga,321ewq,johnpaul,mama1234,iceman69,sanjeev,treeman,elric,rebell,1thunder,cochon,deamon,zoltan,straycat,uhbyuj,luvfur,mugsy,primer,wonder1,teetime,candycan,pfchfytw,fromage,gitler,salvatio,piggy1,23049307,zafira,chicky,sergeev,katze,bangers,andriy,jailbait,vaz2107,ghbhjlf,dbjktnnf,aqswde,zaratustra,asroma,1pepper,alyss,kkkkk1,ryan1,radish,cozumel,waterpol,pentium1,rosebowl,farmall,steinway,dbrekz,baranov,jkmuf,another1,chinacat,qqqqqqq1,hadrian,devilmaycry4,ratbag,teddy2,love21,pullings,packrat,robyn1,boobo,qw12er34,tribe1,rosey,celestia,nikkie,fortune12,olga123,danthema,gameon,vfrfhjys,dilshod,henry14,jenova,redblue,chimaera,pennywise,sokrates,danimal,qqaazz,fuaqz4,killer2,198200,tbone1,kolyan,wabbit,lewis1,maxtor,egoist,asdfas,spyglass,omegas,jack12,nikitka,esperanz,doozer,matematika,wwwww1,ssssss1,poiu0987,suchka,courtney1,gungho,alpha2,fktyjxrf,summer06,bud420,devildriver,heavyd,saracen,foucault,choclate,rjdfktyrj,goblue1,monaro,jmoney,dcpugh,efbcapa201,qqh92r,pepsicol,bbb747,ch5nmk,honeyb,beszoptad,tweeter,intheass,iseedeadpeople,123dan,89231243658s,farside1,findme,smiley1,55556666,sartre,ytcnjh,kacper,costarica,134679258,mikeys,nolimit9,vova123,withyou,5rxypn,love143,freebie,rescue1,203040,michael6,12monkey,redgreen,steff,itstime,naveen,good12345,acidrain,1dawg,miramar,playas,daddio,orion2,852741,studmuff,kobe24,senha123,stephe,mehmet,allalone,scarface1,helloworld,smith123,blueyes,vitali,memphis1,mybitch,colin1,159874,1dick,podaria,d6wnro,brahms,f3gh65,dfcbkmtd,xxxman,corran,ugejvp,qcfmtz,marusia,totem,arachnid,matrix2,antonell,fgntrf,zemfira,christos,surfing1,naruto123,plato1,56qhxs,madzia,vanille,043aaa,asq321,mutton,ohiostate,golde,cdznjckfd,rhfcysq,green5,elephan,superdog,jacqueli,bollock,lolitas,nick12,1orange,maplelea,july23,argento,waldorf,wolfer,pokemon12,zxcvbnmm,flicka,drexel,outlawz,harrie,atrain,juice2,falcons1,charlie6,19391945,tower1,dragon21,hotdamn,dirtyboy,love4ever,1ginger,thunder2,virgo1,alien1,bubblegu,4wwvte,123456789qqq,realtime,studio54,passss,vasilek,awsome,giorgia,bigbass,2002tii,sunghile,mosdef,simbas,count0,uwrl7c,summer05,lhepmz,ranger21,sugarbea,principe,5550123,tatanka,9638v,cheerios,majere,nomercy,jamesbond007,bh90210,7550055,jobber,karaganda,pongo,trickle,defamer,6chid8,1q2a3z,tuscan,nick123,.adgjm,loveyo,hobbes1,note1234,shootme,171819,loveporn,9788960,monty123,fabrice,macduff,monkey13,shadowfa,tweeker,hanna1,madball,telnet,loveu2,qwedcxzas,thatsit,vfhcbr,ptfe3xxp,gblfhfcs,ddddddd1,hakkinen,liverune,deathsta,misty123,suka123,recon1,inferno1,232629,polecat,sanibel,grouch,hitech,hamradio,rkfdbfnehf,vandam,nadin,fastlane,shlong,iddqdidkfa,ledzeppelin,sexyfeet,098123,stacey1,negras,roofing,lucifer1,ikarus,tgbyhn,melnik,barbaria,montego,twisted1,bigal1,jiggle,darkwolf,acerview,silvio,treetops,bishop1,iwanna,pornsite,happyme,gfccdjhl,114411,veritech,batterse,casey123,yhntgb,mailto,milli,guster,q12345678,coronet,sleuth,fuckmeha,armadill,kroshka,geordie,lastochka,pynchon,killall,tommy123,sasha1996,godslove,hikaru,clticic,cornbrea,vfkmdbyf,passmaster,123123123a,souris,nailer,diabolo,skipjack,martin12,hinata,mof6681,brookie,dogfight,johnso,karpov,326598,rfvbrflpt,travesti,caballer,galaxy1,wotan,antoha,art123,xakep1234,ricflair,pervert1,p00kie,ambulanc,santosh,berserker,larry33,bitch123,a987654321,dogstar,angel22,cjcbcrf,redhouse,toodles,gold123,hotspot,kennedy1,glock21,chosen1,schneide,mainman,taffy1,3ki42x,4zqauf,ranger2,4meonly,year2000,121212a,kfylsi,netzwerk,diese,picasso1,rerecz,225522,dastan,swimmer1,brooke1,blackbea,oneway,ruslana,dont4get,phidelt,chrisp,gjyxbr,xwing,kickme,shimmy,kimmy1,4815162342lost,qwerty5,fcporto,jazzbo,mierd,252627,basses,sr20det,00133,florin,howdy1,kryten,goshen,koufax,cichlid,imhotep,andyman,wrest666,saveme,dutchy,anonymou,semprini,siempre,mocha1,forest11,wildroid,aspen1,sesam,kfgekz,cbhbec,a55555,sigmanu,slash1,giggs11,vatech,marias,candy123,jericho1,kingme,123a123,drakula,cdjkjxm,mercur,oneman,hoseman,plumper,ilovehim,lancers,sergey1,takeshi,goodtogo,cranberr,ghjcnj123,harvick,qazxs,1972chev,horsesho,freedom3,letmein7,saitek,anguss,vfvfgfgfz,300000,elektro,toonporn,999111999q,mamuka,q9umoz,edelweis,subwoofer,bayside,disturbe,volition,lucky3,12345678z,3mpz4r,march1,atlantida,strekoza,seagrams,090909t,yy5rbfsc,jack1234,sammy12,sampras,mark12,eintrach,chaucer,lllll1,nochance,whitepower,197000,lbvekz,passer,torana,12345as,pallas,koolio,12qw34,nokia8800,findout,1thomas,mmmmm1,654987,mihaela,chinaman,superduper,donnas,ringo1,jeroen,gfdkjdf,professo,cdtnrf,tranmere,tanstaaf,himera,ukflbfnjh,667788,alex32,joschi,w123456,okidoki,flatline,papercli,super8,doris1,2good4u,4z34l0ts,pedigree,freeride,gsxr1100,wulfgar,benjie,ferdinan,king1,charlie7,djdxbr,fhntvbq,ripcurl,2wsx1qaz,kingsx,desade,sn00py,loveboat,rottie,evgesha,4money,dolittle,adgjmpt,buzzers,brett1,makita,123123qweqwe,rusalka,sluts1,123456e,jameson1,bigbaby,1z2z3z,ckjybr,love4u,fucker69,erhfbyf,jeanluc,farhad,fishfood,merkin,giant1,golf69,rfnfcnhjaf,camera1,stromb,smoothy,774411,nylon,juice1,rfn.irf,newyor,123456789t,marmot,star11,jennyff,jester1,hisashi,kumquat,alex777,helicopt,merkur,dehpye,cummin,zsmj2v,kristjan,april12,englan,honeypot,badgirls,uzumaki,keines,p12345,guita,quake1,duncan1,juicer,milkbone,hurtme,123456789b,qq123456789,schwein,p3wqaw,54132442,qwertyytrewq,andreeva,ruffryde,punkie,abfkrf,kristinka,anna1987,ooooo1,335533aa,umberto,amber123,456123789,456789123,beelch,manta,peeker,1112131415,3141592654,gipper,wrinkle5,katies,asd123456,james11,78n3s5af,michael0,daboss,jimmyb,hotdog1,david69,852123,blazed,sickan,eljefe,2n6wvq,gobills,rfhfcm,squeaker,cabowabo,luebri,karups,test01,melkor,angel777,smallvil,modano,olorin,4rkpkt,leslie1,koffie,shadows1,littleon,amiga1,topeka,summer20,asterix1,pitstop,aloysius,k12345,magazin,joker69,panocha,pass1word,1233214,ironpony,368ejhih,88keys,pizza123,sonali,57np39,quake2,1234567890qw,1020304,sword1,fynjif,abcde123,dfktyjr,rockys,grendel1,harley12,kokakola,super2,azathoth,lisa123,shelley1,girlss,ibragim,seven1,jeff24,1bigdick,dragan,autobot,t4nvp7,omega123,900000,hecnfv,889988,nitro1,doggie1,fatjoe,811pahc,tommyt,savage1,pallino,smitty1,jg3h4hfn,jamielee,1qazwsx,zx123456,machine1,asdfgh123,guinnes,789520,sharkman,jochen,legend1,sonic2,extreme1,dima12,photoman,123459876,nokian95,775533,vaz2109,april10,becks,repmvf,pooker,qwer12345,themaster,nabeel,monkey10,gogetit,hockey99,bbbbbbb1,zinedine,dolphin2,anelka,1superma,winter01,muggsy,horny2,669966,kuleshov,jesusis,calavera,bullet1,87t5hdf,sleepers,winkie,vespa,lightsab,carine,magister,1spider,shitbird,salavat,becca1,wc18c2,shirak,galactus,zaskar,barkley1,reshma,dogbreat,fullsail,asasa,boeder,12345ta,zxcvbnm12,lepton,elfquest,tony123,vkaxcs,savatage,sevilia1,badkitty,munkey,pebbles1,diciembr,qapmoc,gabriel2,1qa2ws3e,cbcmrb,welldone,nfyufh,kaizen,jack11,manisha,grommit,g12345,maverik,chessman,heythere,mixail,jjjjjjj1,sylvia1,fairmont,harve,skully,global1,youwish,pikachu1,badcat,zombie1,49527843,ultra1,redrider,offsprin,lovebird,153426,stymie,aq1sw2,sorrento,0000001,r3ady41t,webster1,95175,adam123,coonass,159487,slut1,gerasim,monkey99,slutwife,159963,1pass1page,hobiecat,bigtymer,all4you,maggie2,olamide,comcast1,infinit,bailee,vasileva,.ktxrf,asdfghjkl1,12345678912,setter,fuckyou7,nnagqx,lifesuck,draken,austi,feb2000,cable1,1234qwerasdf,hax0red,zxcv12,vlad7788,nosaj,lenovo,underpar,huskies1,lovegirl,feynman,suerte,babaloo,alskdjfhg,oldsmobi,bomber1,redrover,pupuce,methodman,phenom,cutegirl,countyli,gretsch,godisgood,bysunsu,hardhat,mironova,123qwe456rty,rusty123,salut,187211,555666777,11111z,mahesh,rjntyjxtr,br00klyn,dunce1,timebomb,bovine,makelove,littlee,shaven,rizwan,patrick7,42042042,bobbijo,rustem,buttmunc,dongle,tiger69,bluecat,blackhol,shirin,peaces,cherub,cubase,longwood,lotus7,gwju3g,bruin,pzaiu8,green11,uyxnyd,seventee,dragon5,tinkerbel,bluess,bomba,fedorova,joshua2,bodyshop,peluche,gbpacker,shelly1,d1i2m3a4,ghtpbltyn,talons,sergeevna,misato,chrisc,sexmeup,brend,olddog,davros,hazelnut,bridget1,hzze929b,readme,brethart,wild1,ghbdtnbr1,nortel,kinger,royal1,bucky1,allah1,drakkar,emyeuanh,gallaghe,hardtime,jocker,tanman,flavio,abcdef123,leviatha,squid1,skeet,sexse,123456x,mom4u4mm,lilred,djljktq,ocean11,cadaver,baxter1,808state,fighton,primavera,1andrew,moogle,limabean,goddess1,vitalya,blue56,258025,bullride,cicci,1234567d,connor1,gsxr11,oliveoil,leonard1,legsex,gavrik,rjnjgtc,mexicano,2bad4u,goodfellas,ornw6d,mancheste,hawkmoon,zlzfrh,schorsch,g9zns4,bashful,rossi46,stephie,rfhfntkm,sellout,123fuck,stewar1,solnze,00007,thor5200,compaq12,didit,bigdeal,hjlbyf,zebulon,wpf8eu,kamran,emanuele,197500,carvin,ozlq6qwm,3syqo15hil,pennys,epvjb6,asdfghjkl123,198000,nfbcbz,jazzer,asfnhg66,zoloft,albundy,aeiou,getlaid,planet1,gjkbyjxrf,alex2000,brianb,moveon,maggie11,eieio,vcradq,shaggy1,novartis,cocoloco,dunamis,554uzpad,sundrop,1qwertyu,alfie,feliks,briand,123www,red456,addams,fhntv1998,goodhead,theway,javaman,angel01,stratoca,lonsdale,15987532,bigpimpin,skater1,issue43,muffie,yasmina,slowride,crm114,sanity729,himmel,carolcox,bustanut,parabola,masterlo,computador,crackhea,dynastar,rockbott,doggysty,wantsome,bigten,gaelle,juicy1,alaska1,etower,sixnine,suntan,froggies,nokia7610,hunter11,njnets,alicante,buttons1,diosesamo,elizabeth1,chiron,trustnoo,amatuers,tinytim,mechta,sammy2,cthulu,trs8f7,poonam,m6cjy69u35,cookie12,blue25,jordans,santa1,kalinka,mikey123,lebedeva,12345689,kissss,queenbee,vjybnjh,ghostdog,cuckold,bearshare,rjcntyrj,alinochka,ghjcnjrdfibyj,aggie1,teens1,3qvqod,dauren,tonino,hpk2qc,iqzzt580,bears85,nascar88,theboy,njqcw4,masyanya,pn5jvw,intranet,lollone,shadow99,00096462,techie,cvtifhbrb,redeemed,gocanes,62717315,topman,intj3a,cobrajet,antivirus,whyme,berserke,ikilz083,airedale,brandon2,hopkig,johanna1,danil8098,gojira,arthu,vision1,pendragon,milen,chrissie,vampiro,mudder,chris22,blowme69,omega7,surfers,goterps,italy1,baseba11,diego1,gnatsum,birdies,semenov,joker123,zenit2011,wojtek,cab4ma99,watchmen,damia,forgotte,fdm7ed,strummer,freelanc,cingular,orange77,mcdonalds,vjhjpjdf,kariya,tombston,starlet,hawaii1,dantheman,megabyte,nbvjirf,anjing,ybrjkftdbx,hotmom,kazbek,pacific1,sashimi,asd12,coorslig,yvtte545,kitte,elysium,klimenko,cobblers,kamehameha,only4me,redriver,triforce,sidorov,vittoria,fredi,dank420,m1234567,fallout2,989244342a,crazy123,crapola,servus,volvos,1scooter,griffin1,autopass,ownzyou,deviant,george01,2kgwai,boeing74,simhrq,hermosa,hardcor,griffy,rolex1,hackme,cuddles1,master3,bujhtr,aaron123,popolo,blader,1sexyred,gerry1,cronos,ffvdj474,yeehaw,bob1234,carlos2,mike77,buckwheat,ramesh,acls2h,monster2,montess,11qq22ww,lazer,zx123456789,chimpy,masterch,sargon,lochness,archana,1234qwert,hbxfhl,sarahb,altoid,zxcvbn12,dakot,caterham,dolomite,chazz,r29hqq,longone,pericles,grand1,sherbert,eagle3,pudge,irontree,synapse,boome,nogood,summer2,pooki,gangsta1,mahalkit,elenka,lbhtrnjh,dukedog,19922991,hopkins1,evgenia,domino1,x123456,manny1,tabbycat,drake1,jerico,drahcir,kelly2,708090a,facesit,11c645df,mac123,boodog,kalani,hiphop1,critters,hellothere,tbirds,valerka,551scasi,love777,paloalto,mrbrown,duke3d,killa1,arcturus,spider12,dizzy1,smudger,goddog,75395,spammy,1357997531,78678,datalife,zxcvbn123,1122112211,london22,23dp4x,rxmtkp,biggirls,ownsu,lzbs2twz,sharps,geryfe,237081a,golakers,nemesi,sasha1995,pretty1,mittens1,d1lakiss,speedrac,gfhjkmm,sabbat,hellrais,159753258,qwertyuiop123,playgirl,crippler,salma,strat1,celest,hello5,omega5,cheese12,ndeyl5,edward12,soccer3,cheerio,davido,vfrcbr,gjhjctyjr,boscoe,inessa,shithole,ibill,qwepoi,201jedlz,asdlkj,davidk,spawn2,ariel1,michael4,jamie123,romantik,micro1,pittsbur,canibus,katja,muhtar,thomas123,studboy,masahiro,rebrov,patrick8,hotboys,sarge1,1hammer,nnnnn1,eistee,datalore,jackdani,sasha2010,mwq6qlzo,cmfnpu,klausi,cnhjbntkm,andrzej,ilovejen,lindaa,hunter123,vvvvv1,novembe,hamster1,x35v8l,lacey1,1silver,iluvporn,valter,herson,alexsandr,cojones,backhoe,womens,777angel,beatit,klingon1,ta8g4w,luisito,benedikt,maxwel,inspecto,zaq12ws,wladimir,bobbyd,peterj,asdfg12,hellspawn,bitch69,nick1234,golfer23,sony123,jello1,killie,chubby1,kodaira52,yanochka,buckfast,morris1,roaddogg,snakeeye,sex1234,mike22,mmouse,fucker11,dantist,brittan,vfrfhjdf,doc123,plokijuh,emerald1,batman01,serafim,elementa,soccer9,footlong,cthuttdbx,hapkido,eagle123,getsmart,getiton,batman2,masons,mastiff,098890,cfvfhf,james7,azalea,sherif,saun24865709,123red,cnhtrjpf,martina1,pupper,michael5,alan12,shakir,devin1,ha8fyp,palom,mamulya,trippy,deerhunter,happyone,monkey77,3mta3,123456789f,crownvic,teodor,natusik,0137485,vovchik,strutter,triumph1,cvetok,moremone,sonnen,screwbal,akira1,sexnow,pernille,independ,poopies,samapi,kbcbxrf,master22,swetlana,urchin,viper2,magica,slurpee,postit,gilgames,kissarmy,clubpenguin,limpbizk,timber1,celin,lilkim,fuckhard,lonely1,mom123,goodwood,extasy,sdsadee23,foxglove,malibog,clark1,casey2,shell1,odense,balefire,dcunited,cubbie,pierr,solei,161718,bowling1,areyukesc,batboy,r123456,1pionee,marmelad,maynard1,cn42qj,cfvehfq,heathrow,qazxcvbn,connecti,secret123,newfie,xzsawq21,tubitzen,nikusha,enigma1,yfcnz123,1austin,michaelc,splunge,wanger,phantom2,jason2,pain4me,primetime21,babes1,liberte,sugarray,undergro,zonker,labatts,djhjyf,watch1,eagle5,madison2,cntgfirf,sasha2,masterca,fiction7,slick50,bruins1,sagitari,12481632,peniss,insuranc,2b8riedt,12346789,mrclean,ssptx452,tissot,q1w2e3r4t5y6u7,avatar1,comet1,spacer,vbrjkf,pass11,wanker1,14vbqk9p,noshit,money4me,sayana,fish1234,seaways,pipper,romeo123,karens,wardog,ab123456,gorilla1,andrey123,lifesucks,jamesr,4wcqjn,bearman,glock22,matt11,dflbvrf,barbi,maine1,dima1997,sunnyboy,6bjvpe,bangkok1,666666q,rafiki,letmein0,0raziel0,dalla,london99,wildthin,patrycja,skydog,qcactw,tmjxn151,yqlgr667,jimmyd,stripclub,deadwood,863abgsg,horses1,qn632o,scatman,sonia1,subrosa,woland,kolya,charlie4,moleman,j12345,summer11,angel11,blasen,sandal,mynewpas,retlaw,cambria,mustang4,nohack04,kimber45,fatdog,maiden1,bigload,necron,dupont24,ghost123,turbo2,.ktymrf,radagast,balzac,vsevolod,pankaj,argentum,2bigtits,mamabear,bumblebee,mercury7,maddie1,chomper,jq24nc,snooky,pussylic,1lovers,taltos,warchild,diablo66,jojo12,sumerki,aventura,gagger,annelies,drumset,cumshots,azimut,123580,clambake,bmw540,birthday54,psswrd,paganini,wildwest,filibert,teaseme,1test,scampi,thunder5,antosha,purple12,supersex,hhhhhh1,brujah,111222333a,13579a,bvgthfnjh,4506802a,killians,choco,qqqwwweee,raygun,1grand,koetsu13,sharp1,mimi92139,fastfood,idontcare,bluered,chochoz,4z3al0ts,target1,sheffiel,labrat,stalingrad,147123,cubfan,corvett1,holden1,snapper1,4071505,amadeo,pollo,desperados,lovestory,marcopolo,mumbles,familyguy,kimchee,marcio,support1,tekila,shygirl1,trekkie,submissi,ilaria,salam,loveu,wildstar,master69,sales1,netware,homer2,arseniy,gerrity1,raspberr,atreyu,stick1,aldric,tennis12,matahari,alohomora,dicanio,michae1,michaeld,666111,luvbug,boyscout,esmerald,mjordan,admiral1,steamboa,616913,ybhdfyf,557711,555999,sunray,apokalipsis,theroc,bmw330,buzzy,chicos,lenusik,shadowma,eagles05,444222,peartree,qqq123,sandmann,spring1,430799,phatass,andi03,binky1,arsch,bamba,kenny123,fabolous,loser123,poop12,maman,phobos,tecate,myxworld4,metros,cocorico,nokia6120,johnny69,hater,spanked,313233,markos,love2011,mozart1,viktoriy,reccos,331234,hornyone,vitesse,1um83z,55555q,proline,v12345,skaven,alizee,bimini,fenerbahce,543216,zaqqaz,poi123,stabilo,brownie1,1qwerty1,dinesh,baggins1,1234567t,davidkin,friend1,lietuva,octopuss,spooks,12345qq,myshit,buttface,paradoxx,pop123,golfin,sweet69,rfghbp,sambuca,kayak1,bogus1,girlz,dallas12,millers,123456zx,operatio,pravda,eternal1,chase123,moroni,proust,blueduck,harris1,redbarch,996699,1010101,mouche,millenni,1123456,score1,1234565,1234576,eae21157,dave12,pussyy,gfif1991,1598741,hoppy,darrian,snoogins,fartface,ichbins,vfkbyrf,rusrap,2741001,fyfrjylf,aprils,favre,thisis,bannana,serval,wiggum,satsuma,matt123,ivan123,gulmira,123zxc123,oscar2,acces,annie2,dragon0,emiliano,allthat,pajaro,amandine,rawiswar,sinead,tassie,karma1,piggys,nokias,orions,origami,type40,mondo,ferrets,monker,biteme2,gauntlet,arkham,ascona,ingram01,klem1,quicksil,bingo123,blue66,plazma,onfire,shortie,spjfet,123963,thered,fire777,lobito,vball,1chicken,moosehea,elefante,babe23,jesus12,parallax,elfstone,number5,shrooms,freya,hacker1,roxette,snoops,number7,fellini,dtlmvf,chigger,mission1,mitsubis,kannan,whitedog,james01,ghjgecr,rfnfgekmnf,everythi,getnaked,prettybo,sylvan,chiller,carrera4,cowbo,biochem,azbuka,qwertyuiop1,midnight1,informat,audio1,alfred1,0range,sucker1,scott2,russland,1eagle,torben,djkrjlfd,rocky6,maddy1,bonobo,portos,chrissi,xjznq5,dexte,vdlxuc,teardrop,pktmxr,iamtheone,danijela,eyphed,suzuki1,etvww4,redtail,ranger11,mowerman,asshole2,coolkid,adriana1,bootcamp,longcut,evets,npyxr5,bighurt,bassman1,stryder,giblet,nastja,blackadd,topflite,wizar,cumnow,technolo,bassboat,bullitt,kugm7b,maksimus,wankers,mine12,sunfish,pimpin1,shearer9,user1,vjzgjxnf,tycobb,80070633pc,stanly,vitaly,shirley1,cinzia,carolyn1,angeliqu,teamo,qdarcv,aa123321,ragdoll,bonit,ladyluck,wiggly,vitara,jetbalance,12345600,ozzman,dima12345,mybuddy,shilo,satan66,erebus,warrio,090808qwe,stupi,bigdan,paul1234,chiapet,brooks1,philly1,dually,gowest,farmer1,1qa2ws3ed4rf,alberto1,beachboy,barne,aa12345,aliyah,radman,benson1,dfkthbq,highball,bonou2,i81u812,workit,darter,redhook,csfbr5yy,buttlove,episode1,ewyuza,porthos,lalal,abcd12,papero,toosexy,keeper1,silver7,jujitsu,corset,pilot123,simonsay,pinggolf,katerinka,kender,drunk1,fylhjvtlf,rashmi,nighthawk,maggy,juggernaut,larryb,cabibble,fyabcf,247365,gangstar,jaybee,verycool,123456789qw,forbidde,prufrock,12345zxc,malaika,blackbur,docker,filipe,koshechka,gemma1,djamaal,dfcbkmtdf,gangst,9988aa,ducks1,pthrfkj,puertorico,muppets,griffins,whippet,sauber,timofey,larinso,123456789zxc,quicken,qsefth,liteon,headcase,bigdadd,zxc321,maniak,jamesc,bassmast,bigdogs,1girls,123xxx,trajan,lerochka,noggin,mtndew,04975756,domin,wer123,fumanchu,lambada,thankgod,june22,kayaking,patchy,summer10,timepass,poiu1234,kondor,kakka,lament,zidane10,686xqxfg,l8v53x,caveman1,nfvthkfy,holymoly,pepita,alex1996,mifune,fighter1,asslicker,jack22,abc123abc,zaxxon,midnigh,winni,psalm23,punky,monkey22,password13,mymusic,justyna,annushka,lucky5,briann,495rus19,withlove,almaz,supergir,miata,bingbong,bradpitt,kamasutr,yfgjktjy,vanman,pegleg,amsterdam1,123a321,letmein9,shivan,korona,bmw520,annette1,scotsman,gandal,welcome12,sc00by,qpwoei,fred69,m1sf1t,hamburg1,1access,dfkmrbhbz,excalibe,boobies1,fuckhole,karamel,starfuck,star99,breakfas,georgiy,ywvxpz,smasher,fatcat1,allanon,12345n,coondog,whacko,avalon1,scythe,saab93,timon,khorne,atlast,nemisis,brady12,blenheim,52678677,mick7278,9skw5g,fleetwoo,ruger1,kissass,pussy7,scruff,12345l,bigfun,vpmfsz,yxkck878,evgeny,55667788,lickher,foothill,alesis,poppies,77777778,californi,mannie,bartjek,qhxbij,thehulk,xirt2k,angelo4ek,rfkmrekznjh,tinhorse,1david,sparky12,night1,luojianhua,bobble,nederland,rosemari,travi,minou,ciscokid,beehive,565hlgqo,alpine1,samsung123,trainman,xpress,logistic,vw198m2n,hanter,zaqwsx123,qwasz,mariachi,paska,kmg365,kaulitz,sasha12,north1,polarbear,mighty1,makeksa11,123456781,one4all,gladston,notoriou,polniypizdec110211,gosia,grandad,xholes,timofei,invalidp,speaker1,zaharov,maggiema,loislane,gonoles,br5499,discgolf,kaskad,snooper,newman1,belial,demigod,vicky1,pridurok,alex1990,tardis1,cruzer,hornie,sacramen,babycat,burunduk,mark69,oakland1,me1234,gmctruck,extacy,sexdog,putang,poppen,billyd,1qaz2w,loveable,gimlet,azwebitalia,ragtop,198500,qweas,mirela,rock123,11bravo,sprewell,tigrenok,jaredleto,vfhbif,blue2,rimjob,catwalk,sigsauer,loqse,doromich,jack01,lasombra,jonny5,newpassword,profesor,garcia1,123as123,croucher,demeter,4_life,rfhfvtkm,superman2,rogues,assword1,russia1,jeff1,mydream,z123456789,rascal1,darre,kimberl,pickle1,ztmfcq,ponchik,lovesporn,hikari,gsgba368,pornoman,chbjun,choppy,diggity,nightwolf,viktori,camar,vfhecmrf,alisa1,minstrel,wishmaster,mulder1,aleks,gogirl,gracelan,8womys,highwind,solstice,dbrnjhjdyf,nightman,pimmel,beertje,ms6nud,wwfwcw,fx3tuo,poopface,asshat,dirtyd,jiminy,luv2fuck,ptybnxtvgbjy,dragnet,pornogra,10inch,scarlet1,guido1,raintree,v123456,1aaaaaaa,maxim1935,hotwater,gadzooks,playaz,harri,brando1,defcon1,ivanna,123654a,arsenal2,candela,nt5d27,jaime1,duke1,burton1,allstar1,dragos,newpoint,albacore,1236987z,verygoodbot,1wildcat,fishy1,ptktysq,chris11,puschel,itdxtyrj,7kbe9d,serpico,jazzie,1zzzzz,kindbuds,wenef45313,1compute,tatung,sardor,gfyfcjybr,test99,toucan,meteora,lysander,asscrack,jowgnx,hevnm4,suckthis,masha123,karinka,marit,oqglh565,dragon00,vvvbbb,cheburashka,vfrfrf,downlow,unforgiven,p3e85tr,kim123,sillyboy,gold1,golfvr6,quicksan,irochka,froglegs,shortsto,caleb1,tishka,bigtitts,smurfy,bosto,dropzone,nocode,jazzbass,digdug,green7,saltlake,therat,dmitriev,lunita,deaddog,summer0,1212qq,bobbyg,mty3rh,isaac1,gusher,helloman,sugarbear,corvair,extrem,teatime,tujazopi,titanik,efyreg,jo9k2jw2,counchac,tivoli,utjvtnhbz,bebit,jacob6,clayton1,incubus1,flash123,squirter,dima2010,cock1,rawks,komatsu,forty2,98741236,cajun1,madelein,mudhoney,magomed,q111111,qaswed,consense,12345b,bakayaro,silencer,zoinks,bigdic,werwolf,pinkpuss,96321478,alfie1,ali123,sarit,minette,musics,chato,iaapptfcor,cobaka,strumpf,datnigga,sonic123,yfnecbr,vjzctvmz,pasta1,tribbles,crasher,htlbcrf,1tiger,shock123,bearshar,syphon,a654321,cubbies1,jlhanes,eyespy,fucktheworld,carrie1,bmw325is,suzuk,mander,dorina,mithril,hondo1,vfhnbyb,sachem,newton1,12345x,7777755102q,230857z,xxxsex,scubapro,hayastan,spankit,delasoul,searock6,fallout3,nilrem,24681357,pashka,voluntee,pharoh,willo,india1,badboy69,roflmao,gunslinger,lovergir,mama12,melange,640xwfkv,chaton,darkknig,bigman1,aabbccdd,harleyd,birdhouse,giggsy,hiawatha,tiberium,joker7,hello1234,sloopy,tm371855,greendog,solar1,bignose,djohn11,espanol,oswego,iridium,kavitha,pavell,mirjam,cyjdsvujljv,alpha5,deluge,hamme,luntik,turismo,stasya,kjkbnf,caeser,schnecke,tweety1,tralfaz,lambrett,prodigy1,trstno1,pimpshit,werty1,karman,bigboob,pastel,blackmen,matthew8,moomin,q1w2e,gilly,primaver,jimmyg,house2,elviss,15975321,1jessica,monaliza,salt55,vfylfhbyrf,harley11,tickleme,murder1,nurgle,kickass1,theresa1,fordtruck,pargolf,managua,inkognito,sherry1,gotit,friedric,metro2033,slk230,freeport,cigarett,492529,vfhctkm,thebeach,twocats,bakugan,yzerman1,charlieb,motoko,skiman,1234567w,pussy3,love77,asenna,buffie,260zntpc,kinkos,access20,mallard1,fuckyou69,monami,rrrrr1,bigdog69,mikola,1boomer,godzila,ginger2,dima2000,skorpion39,dima1234,hawkdog79,warrior2,ltleirf,supra1,jerusale,monkey01,333z333,666888,kelsey1,w8gkz2x1,fdfnfh,msnxbi,qwe123rty,mach1,monkey3,123456789qq,c123456,nezabudka,barclays,nisse,dasha1,12345678987654321,dima1993,oldspice,frank2,rabbitt,prettyboy,ov3ajy,iamthema,kawasak,banjo1,gtivr6,collants,gondor,hibees,cowboys2,codfish,buster2,purzel,rubyred,kayaker,bikerboy,qguvyt,masher,sseexx,kenshiro,moonglow,semenova,rosari,eduard1,deltaforce,grouper,bongo1,tempgod,1taylor,goldsink,qazxsw1,1jesus,m69fg2w,maximili,marysia,husker1,kokanee,sideout,googl,south1,plumber1,trillian,00001,1357900,farkle,1xxxxx,pascha,emanuela,bagheera,hound1,mylov,newjersey,swampfox,sakic19,torey,geforce,wu4etd,conrail,pigman,martin2,ber02,nascar2,angel69,barty,kitsune,cornet,yes90125,goomba,daking,anthea,sivart,weather1,ndaswf,scoubidou,masterchief,rectum,3364068,oranges1,copter,1samanth,eddies,mimoza,ahfywbz,celtic88,86mets,applemac,amanda11,taliesin,1angel,imhere,london11,bandit12,killer666,beer1,06225930,psylocke,james69,schumach,24pnz6kc,endymion,wookie1,poiu123,birdland,smoochie,lastone,rclaki,olive1,pirat,thunder7,chris69,rocko,151617,djg4bb4b,lapper,ajcuivd289,colole57,shadow7,dallas21,ajtdmw,executiv,dickies,omegaman,jason12,newhaven,aaaaaas,pmdmscts,s456123789,beatri,applesauce,levelone,strapon,benladen,creaven,ttttt1,saab95,f123456,pitbul,54321a,sex12345,robert3,atilla,mevefalkcakk,1johnny,veedub,lilleke,nitsuj,5t6y7u8i,teddys,bluefox,nascar20,vwjetta,buffy123,playstation3,loverr,qweasd12,lover2,telekom,benjamin1,alemania,neutrino,rockz,valjean,testicle,trinity3,realty,firestarter,794613852,ardvark,guadalup,philmont,arnold1,holas,zw6syj,birthday299,dover1,sexxy1,gojets,741236985,cance,blue77,xzibit,qwerty88,komarova,qweszxc,footer,rainger,silverst,ghjcnb,catmando,tatooine,31217221027711,amalgam,69dude,qwerty321,roscoe1,74185,cubby,alfa147,perry1,darock,katmandu,darknight,knicks1,freestuff,45454,kidman,4tlved,axlrose,cutie1,quantum1,joseph10,ichigo,pentium3,rfhectkm,rowdy1,woodsink,justforfun,sveta123,pornografia,mrbean,bigpig,tujheirf,delta9,portsmou,hotbod,kartal,10111213,fkbyf001,pavel1,pistons1,necromancer,verga,c7lrwu,doober,thegame1,hatesyou,sexisfun,1melissa,tuczno18,bowhunte,gobama,scorch,campeon,bruce2,fudge1,herpderp,bacon1,redsky,blackeye,19966991,19992000,ripken8,masturba,34524815,primax,paulina1,vp6y38,427cobra,4dwvjj,dracon,fkg7h4f3v6,longview,arakis,panama1,honda2,lkjhgfdsaz,razors,steels,fqkw5m,dionysus,mariajos,soroka,enriqu,nissa,barolo,king1234,hshfd4n279,holland1,flyer1,tbones,343104ky,modems,tk421,ybrbnrf,pikapp,sureshot,wooddoor,florida2,mrbungle,vecmrf,catsdogs,axolotl,nowayout,francoi,chris21,toenail,hartland,asdjkl,nikkii,onlyyou,buckskin,fnord,flutie,holen1,rincewind,lefty1,ducky1,199000,fvthbrf,redskin1,ryno23,lostlove,19mtpgam19,abercrom,benhur,jordan11,roflcopter,ranma,phillesh,avondale,igromania,p4ssword,jenny123,tttttt1,spycams,cardigan,2112yyz,sleepy1,paris123,mopars,lakers34,hustler1,james99,matrix3,popimp,12pack,eggbert,medvedev,testit,performa,logitec,marija,sexybeast,supermanboy,iwantit,rjktcj,jeffer,svarog,halo123,whdbtp,nokia3230,heyjoe,marilyn1,speeder,ibxnsm,prostock,bennyboy,charmin,codydog,parol999,ford9402,jimmer,crayola,159357258,alex77,joey1,cayuga,phish420,poligon,specops,tarasova,caramelo,draconis,dimon,cyzkhw,june29,getbent,1guitar,jimjam,dictiona,shammy,flotsam,0okm9ijn,crapper,technic,fwsadn,rhfdxtyrj,zaq11qaz,anfield1,159753q,curious1,hip-hop,1iiiii,gfhjkm2,cocteau,liveevil,friskie,crackhead,b1afra,elektrik,lancer1,b0ll0cks,jasond,z1234567,tempest1,alakazam,asdfasd,duffy1,oneday,dinkle,qazedctgb,kasimir,happy7,salama,hondaciv,nadezda,andretti,cannondale,sparticu,znbvjd,blueice,money01,finster,eldar,moosie,pappa,delta123,neruda,bmw330ci,jeanpaul,malibu1,alevtina,sobeit,travolta,fullmetal,enamorad,mausi,boston12,greggy,smurf1,ratrace,ichiban,ilovepus,davidg,wolf69,villa1,cocopuff,football12,starfury,zxc12345,forfree,fairfiel,dreams1,tayson,mike2,dogday,hej123,oldtimer,sanpedro,clicker,mollycat,roadstar,golfe,lvbnhbq1,topdevice,a1b2c,sevastopol,calli,milosc,fire911,pink123,team3x,nolimit5,snickers1,annies,09877890,jewel1,steve69,justin11,autechre,killerbe,browncow,slava1,christer,fantomen,redcloud,elenberg,beautiful1,passw0rd1,nazira,advantag,cockring,chaka,rjpzdrf,99941,az123456,biohazar,energie,bubble1,bmw323,tellme,printer1,glavine,1starwar,coolbeans,april17,carly1,quagmire,admin2,djkujuhfl,pontoon,texmex,carlos12,thermo,vaz2106,nougat,bob666,1hockey,1john,cricke,qwerty10,twinz,totalwar,underwoo,tijger,lildevil,123q321,germania,freddd,1scott,beefy,5t4r3e2w1q,fishbait,nobby,hogger,dnstuff,jimmyc,redknapp,flame1,tinfloor,balla,nfnfhby,yukon1,vixens,batata,danny123,1zxcvbnm,gaetan,homewood,greats,tester1,green99,1fucker,sc0tland,starss,glori,arnhem,goatman,1234asd,supertra,bill123,elguapo,sexylegs,jackryan,usmc69,innow,roaddog,alukard,winter11,crawler,gogiants,rvd420,alessandr,homegrow,gobbler,esteba,valeriy,happy12,1joshua,hawking,sicnarf,waynes,iamhappy,bayadera,august2,sashas,gotti,dragonfire,pencil1,halogen,borisov,bassingw,15975346,zachar,sweetp,soccer99,sky123,flipyou,spots3,xakepy,cyclops1,dragon77,rattolo58,motorhea,piligrim,helloween,dmb2010,supermen,shad0w,eatcum,sandokan,pinga,ufkfrnbrf,roksana,amista,pusser,sony1234,azerty1,1qasw2,ghbdt,q1w2e3r4t5y6u7i8,ktutylf,brehznev,zaebali,shitass,creosote,gjrtvjy,14938685,naughtyboy,pedro123,21crack,maurice1,joesakic,nicolas1,matthew9,lbyfhf,elocin,hfcgbplzq,pepper123,tiktak,mycroft,ryan11,firefly1,arriva,cyecvevhbr,loreal,peedee,jessica8,lisa01,anamari,pionex,ipanema,airbag,frfltvbz,123456789aa,epwr49,casper12,sweethear,sanandreas,wuschel,cocodog,france1,119911,redroses,erevan,xtvgbjy,bigfella,geneve,volvo850,evermore,amy123,moxie,celebs,geeman,underwor,haslo1,joy123,hallow,chelsea0,12435687,abarth,12332145,tazman1,roshan,yummie,genius1,chrisd,ilovelife,seventy7,qaz1wsx2,rocket88,gaurav,bobbyboy,tauchen,roberts1,locksmit,masterof,www111,d9ungl,volvos40,asdasd1,golfers,jillian1,7xm5rq,arwpls4u,gbhcf2,elloco,football2,muerte,bob101,sabbath1,strider1,killer66,notyou,lawnboy,de7mdf,johnnyb,voodoo2,sashaa,homedepo,bravos,nihao123,braindea,weedhead,rajeev,artem1,camille1,rockss,bobbyb,aniston,frnhbcf,oakridge,biscayne,cxfcnm,dressage,jesus3,kellyann,king69,juillet,holliste,h00ters,ripoff,123645,1999ar,eric12,123777,tommi,dick12,bilder,chris99,rulezz,getpaid,chicubs,ender1,byajhvfnbrf,milkshak,sk8board,freakshow,antonella,monolit,shelb,hannah01,masters1,pitbull1,1matthew,luvpussy,agbdlcid,panther2,alphas,euskadi,8318131,ronnie1,7558795,sweetgirl,cookie59,sequoia,5552555,ktyxbr,4500455,money7,severus,shinobu,dbityrf,phisig,rogue2,fractal,redfred,sebastian1,nelli,b00mer,cyberman,zqjphsyf6ctifgu,oldsmobile,redeemer,pimpi,lovehurts,1slayer,black13,rtynfdh,airmax,g00gle,1panther,artemon,nopasswo,fuck1234,luke1,trinit,666000,ziadma,oscardog,davex,hazel1,isgood,demond,james5,construc,555551,january2,m1911a1,flameboy,merda,nathan12,nicklaus,dukester,hello99,scorpio7,leviathan,dfcbktr,pourquoi,vfrcbv123,shlomo,rfcgth,rocky3,ignatz,ajhneyf,roger123,squeek,4815162342a,biskit,mossimo,soccer21,gridlock,lunker,popstar,ghhh47hj764,chutney,nitehawk,vortec,gamma1,codeman,dragula,kappasig,rainbow2,milehigh,blueballs,ou8124me,rulesyou,collingw,mystere,aster,astrovan,firetruck,fische,crawfish,hornydog,morebeer,tigerpaw,radost,144000,1chance,1234567890qwe,gracie1,myopia,oxnard,seminoles,evgeni,edvard,partytim,domani,tuffy1,jaimatadi,blackmag,kzueirf,peternor,mathew1,maggie12,henrys,k1234567,fasted,pozitiv,cfdtkbq,jessica7,goleafs,bandito,girl78,sharingan,skyhigh,bigrob,zorros,poopers,oldschoo,pentium2,gripper,norcal,kimba,artiller,moneymak,00197400,272829,shadow1212,thebull,handbags,all4u2c,bigman2,civics,godisgoo,section8,bandaid,suzanne1,zorba,159123,racecars,i62gbq,rambo123,ironroad,johnson2,knobby,twinboys,sausage1,kelly69,enter2,rhjirf,yessss,james12,anguilla,boutit,iggypop,vovochka,06060,budwiser,romuald,meditate,good1,sandrin,herkules,lakers8,honeybea,11111111a,miche,rangers9,lobster1,seiko,belova,midcon,mackdadd,bigdaddy1,daddie,sepultur,freddy12,damon1,stormy1,hockey2,bailey12,hedimaptfcor,dcowboys,sadiedog,thuggin,horny123,josie1,nikki2,beaver69,peewee1,mateus,viktorija,barrys,cubswin1,matt1234,timoxa,rileydog,sicilia,luckycat,candybar,julian1,abc456,pussylip,phase1,acadia,catty,246800,evertonf,bojangle,qzwxec,nikolaj,fabrizi,kagome,noncapa0,marle,popol,hahaha1,cossie,carla10,diggers,spankey,sangeeta,cucciolo,breezer,starwar1,cornholio,rastafari,spring99,yyyyyyy1,webstar,72d5tn,sasha1234,inhouse,gobuffs,civic1,redstone,234523,minnie1,rivaldo,angel5,sti2000,xenocide,11qq11,1phoenix,herman1,holly123,tallguy,sharks1,madri,superbad,ronin,jalal123,hardbody,1234567r,assman1,vivahate,buddylee,38972091,bonds25,40028922,qrhmis,wp2005,ceejay,pepper01,51842543,redrum1,renton,varadero,tvxtjk7r,vetteman,djhvbrc,curly1,fruitcak,jessicas,maduro,popmart,acuari,dirkpitt,buick1,bergerac,golfcart,pdtpljxrf,hooch1,dudelove,d9ebk7,123452000,afdjhbn,greener,123455432,parachut,mookie12,123456780,jeepcj5,potatoe,sanya,qwerty2010,waqw3p,gotika,freaky1,chihuahu,buccanee,ecstacy,crazyboy,slickric,blue88,fktdnbyf,2004rj,delta4,333222111,calient,ptbdhw,1bailey,blitz1,sheila1,master23,hoagie,pyf8ah,orbita,daveyboy,prono1,delta2,heman,1horny,tyrik123,ostrov,md2020,herve,rockfish,el546218,rfhbyjxrf,chessmaster,redmoon,lenny1,215487,tomat,guppy,amekpass,amoeba,my3girls,nottingh,kavita,natalia1,puccini,fabiana,8letters,romeos,netgear,casper2,taters,gowings,iforgot1,pokesmot,pollit,lawrun,petey1,rosebuds,007jr,gthtcnhjqrf,k9dls02a,neener,azertyu,duke11,manyak,tiger01,petros,supermar,mangas,twisty,spotter,takagi,dlanod,qcmfd454,tusymo,zz123456,chach,navyblue,gilbert1,2kash6zq,avemaria,1hxboqg2s,viviane,lhbjkjubz2957704,nowwowtg,1a2b3c4,m0rn3,kqigb7,superpuper,juehtw,gethigh,theclown,makeme,pradeep,sergik,deion21,nurik,devo2706,nbvibt,roman222,kalima,nevaeh,martin7,anathema,florian1,tamwsn3sja,dinmamma,133159,123654q,slicks,pnp0c08,yojimbo,skipp,kiran,pussyfuck,teengirl,apples12,myballs,angeli,1234a,125678,opelastra,blind1,armagedd,fish123,pitufo,chelseaf,thedevil,nugget1,cunt69,beetle1,carter15,apolon,collant,password00,fishboy,djkrjdf,deftone,celti,three11,cyrus1,lefthand,skoal1,ferndale,aries1,fred01,roberta1,chucks,cornbread,lloyd1,icecrea,cisco123,newjerse,vfhrbpf,passio,volcom1,rikimaru,yeah11,djembe,facile,a1l2e3x4,batman7,nurbol,lorenzo1,monica69,blowjob1,998899,spank1,233391,n123456,1bear,bellsout,999998,celtic67,sabre1,putas,y9enkj,alfabeta,heatwave,honey123,hard4u,insane1,xthysq,magnum1,lightsaber,123qweqwe,fisher1,pixie1,precios,benfic,thegirls,bootsman,4321rewq,nabokov,hightime,djghjc,1chelsea,junglist,august16,t3fkvkmj,1232123,lsdlsd12,chuckie1,pescado,granit,toogood,cathouse,natedawg,bmw530,123kid,hajime,198400,engine1,wessonnn,kingdom1,novembre,1rocks,kingfisher,qwerty89,jordan22,zasranec,megat,sucess,installutil,fetish01,yanshi1982,1313666,1314520,clemence,wargod,time1,newzealand,snaker,13324124,cfrehf,hepcat,mazahaka,bigjay,denisov,eastwest,1yellow,mistydog,cheetos,1596357,ginger11,mavrik,bubby1,bhbyf,pyramide,giusepp,luthien,honda250,andrewjackie,kentavr,lampoon,zaq123wsx,sonicx,davidh,1ccccc,gorodok,windsong,programm,blunt420,vlad1995,zxcvfdsa,tarasov,mrskin,sachas,mercedes1,koteczek,rawdog,honeybear,stuart1,kaktys,richard7,55555n,azalia,hockey10,scouter,francy,1xxxxxx,julie456,tequilla,penis123,schmoe,tigerwoods,1ferrari,popov,snowdrop,matthieu,smolensk,cornflak,jordan01,love2000,23wesdxc,kswiss,anna2000,geniusnet,baby2000,33ds5x,waverly,onlyone4,networkingpe,raven123,blesse,gocards,wow123,pjflkork,juicey,poorboy,freeee,billybo,shaheen,zxcvbnm.,berlit,truth1,gepard,ludovic,gunther1,bobby2,bob12345,sunmoon,septembr,bigmac1,bcnjhbz,seaking,all4u,12qw34er56ty,bassie,nokia5228,7355608,sylwia,charvel,billgate,davion,chablis,catsmeow,kjiflrf,amylynn,rfvbkkf,mizredhe,handjob,jasper12,erbol,solara,bagpipe,biffer,notime,erlan,8543852,sugaree,oshkosh,fedora,bangbus,5lyedn,longball,teresa1,bootyman,aleksand,qazwsxedc12,nujbhc,tifosi,zpxvwy,lights1,slowpoke,tiger12,kstate,password10,alex69,collins1,9632147,doglover,baseball2,security1,grunts,orange2,godloves,213qwe879,julieb,1qazxsw23edcvfr4,noidea,8uiazp,betsy1,junior2,parol123,123456zz,piehonkii,kanker,bunky,hingis,reese1,qaz123456,sidewinder,tonedup,footsie,blackpoo,jalapeno,mummy1,always1,josh1,rockyboy,plucky,chicag,nadroj,blarney,blood123,wheaties,packer1,ravens1,mrjones,gfhjkm007,anna2010,awatar,guitar12,hashish,scale1,tomwaits,amrita,fantasma,rfpfym,pass2,tigris,bigair,slicker,sylvi,shilpa,cindylou,archie1,bitches1,poppys,ontime,horney1,camaroz28,alladin,bujhm,cq2kph,alina1,wvj5np,1211123a,tetons,scorelan,concordi,morgan2,awacs,shanty,tomcat14,andrew123,bear69,vitae,fred99,chingy,octane,belgario,fatdaddy,rhodan,password23,sexxes,boomtown,joshua01,war3demo,my2kids,buck1,hot4you,monamour,12345aa,yumiko,parool,carlton1,neverland,rose12,right1,sociald,grouse,brandon0,cat222,alex00,civicex,bintang,malkav,arschloc,dodgeviper,qwerty666,goduke,dante123,boss1,ontheroc,corpsman,love14,uiegu451,hardtail,irondoor,ghjrehfnehf,36460341,konijn,h2slca,kondom25,123456ss,cfytxrf,btnjey,nando,freemail,comander,natas666,siouxsie,hummer1,biomed,dimsum,yankees0,diablo666,lesbian1,pot420,jasonm,glock23,jennyb,itsmine,lena2010,whattheh,beandip,abaddon,kishore,signup,apogee,biteme12,suzieq,vgfun4,iseeyou,rifleman,qwerta,4pussy,hawkman,guest1,june17,dicksuck,bootay,cash12,bassale,ktybyuhfl,leetch,nescafe,7ovtgimc,clapton1,auror,boonie,tracker1,john69,bellas,cabinboy,yonkers,silky1,ladyffesta,drache,kamil1,davidp,bad123,snoopy12,sanche,werthvfy,achille,nefertiti,gerald1,slage33,warszawa,macsan26,mason123,kotopes,welcome8,nascar99,kiril,77778888,hairy1,monito,comicsans,81726354,killabee,arclight,yuo67,feelme,86753099,nnssnn,monday12,88351132,88889999,websters,subito,asdf12345,vaz2108,zvbxrpl,159753456852,rezeda,multimed,noaccess,henrique,tascam,captiva,zadrot,hateyou,sophie12,123123456,snoop1,charlie8,birmingh,hardline,libert,azsxdcf,89172735872,rjpthju,bondar,philips1,olegnaruto,myword,yakman,stardog,banana12,1234567890w,farout,annick,duke01,rfj422,billard,glock19,shaolin1,master10,cinderel,deltaone,manning1,biggreen,sidney1,patty1,goforit1,766rglqy,sevendus,aristotl,armagedo,blumen,gfhfyjz,kazakov,lekbyxxx,accord1,idiota,soccer16,texas123,victoire,ololo,chris01,bobbbb,299792458,eeeeeee1,confiden,07070,clarks,techno1,kayley,stang1,wwwwww1,uuuuu1,neverdie,jasonr,cavscout,481516234,mylove1,shaitan,1qazxcvb,barbaros,123456782000,123wer,thissucks,7seven,227722,faerie,hayduke,dbacks,snorkel,zmxncbv,tiger99,unknown1,melmac,polo1234,sssssss1,1fire,369147,bandung,bluejean,nivram,stanle,ctcnhf,soccer20,blingbli,dirtball,alex2112,183461,skylin,boobman,geronto,brittany1,yyz2112,gizmo69,ktrcec,dakota12,chiken,sexy11,vg08k714,bernadet,1bulldog,beachs,hollyb,maryjoy,margo1,danielle1,chakra,alexand,hullcity,matrix12,sarenna,pablos,antler,supercar,chomsky,german1,airjordan,545ettvy,camaron,flight1,netvideo,tootall,valheru,481516,1234as,skimmer,redcross,inuyash,uthvfy,1012nw,edoardo,bjhgfi,golf11,9379992a,lagarto,socball,boopie,krazy,.adgjmptw,gaydar,kovalev,geddylee,firstone,turbodog,loveee,135711,badbo,trapdoor,opopop11,danny2,max2000,526452,kerry1,leapfrog,daisy2,134kzbip,1andrea,playa1,peekab00,heskey,pirrello,gsewfmck,dimon4ik,puppie,chelios,554433,hypnodanny,fantik,yhwnqc,ghbdtngjrf,anchorag,buffett1,fanta,sappho,024680,vialli,chiva,lucylu,hashem,exbntkm,thema,23jordan,jake11,wildside,smartie,emerica,2wj2k9oj,ventrue,timoth,lamers,baerchen,suspende,boobis,denman85,1adam12,otello,king12,dzakuni,qsawbbs,isgay,porno123,jam123,daytona1,tazzie,bunny123,amaterasu,jeffre,crocus,mastercard,bitchedup,chicago7,aynrand,intel1,tamila,alianza,mulch,merlin12,rose123,alcapone,mircea,loveher,joseph12,chelsea6,dorothy1,wolfgar,unlimite,arturik,qwerty3,paddy1,piramid,linda123,cooool,millie1,warlock1,forgotit,tort02,ilikeyou,avensis,loveislife,dumbass1,clint1,2110se,drlove,olesia,kalinina,sergey123,123423,alicia1,markova,tri5a3,media1,willia1,xxxxxxx1,beercan,smk7366,jesusislord,motherfuck,smacker,birthday5,jbaby,harley2,hyper1,a9387670a,honey2,corvet,gjmptw,rjhjkmbien,apollon,madhuri,3a5irt,cessna17,saluki,digweed,tamia1,yja3vo,cfvlehfr,1111111q,martyna,stimpy1,anjana,yankeemp,jupiler,idkfa,1blue,fromv,afric,3xbobobo,liverp00l,nikon1,amadeus1,acer123,napoleo,david7,vbhjckfdf,mojo69,percy1,pirates1,grunt1,alenushka,finbar,zsxdcf,mandy123,1fred,timewarp,747bbb,druids,julia123,123321qq,spacebar,dreads,fcbarcelona,angela12,anima,christopher1,stargazer,123123s,hockey11,brewski,marlbor,blinker,motorhead,damngood,werthrf,letmein3,moremoney,killer99,anneke,eatit,pilatus,andrew01,fiona1,maitai,blucher,zxgdqn,e5pftu,nagual,panic1,andron,openwide,alphabeta,alison1,chelsea8,fende,mmm666,1shot2,a19l1980,123456@,1black,m1chael,vagner,realgood,maxxx,vekmnbr,stifler,2509mmh,tarkan,sherzod,1234567b,gunners1,artem2010,shooby,sammie1,p123456,piggie,abcde12345,nokia6230,moldir,piter,1qaz3edc,frequenc,acuransx,1star,nikeair,alex21,dapimp,ranjan,ilovegirls,anastasiy,berbatov,manso,21436587,leafs1,106666,angelochek,ingodwetrust,123456aaa,deano,korsar,pipetka,thunder9,minka,himura,installdevic,1qqqqq,digitalprodu,suckmeoff,plonker,headers,vlasov,ktr1996,windsor1,mishanya,garfield1,korvin,littlebit,azaz09,vandamme,scripto,s4114d,passward,britt1,r1chard,ferrari5,running1,7xswzaq,falcon2,pepper76,trademan,ea53g5,graham1,volvos80,reanimator,micasa,1234554321q,kairat,escorpion,sanek94,karolina1,kolovrat,karen2,1qaz@wsx,racing1,splooge,sarah2,deadman1,creed1,nooner,minicoop,oceane,room112,charme,12345ab,summer00,wetcunt,drewman,nastyman,redfire,appels,merlin69,dolfin,bornfree,diskette,ohwell,12345678qwe,jasont,madcap,cobra2,dolemit1,whatthehell,juanit,voldemar,rocke,bianc,elendil,vtufgjkbc,hotwheels,spanis,sukram,pokerface,k1ller,freakout,dontae,realmadri,drumss,gorams,258789,snakey,jasonn,whitewolf,befree,johnny99,pooka,theghost,kennys,vfvektxrf,toby1,jumpman23,deadlock,barbwire,stellina,alexa1,dalamar,mustanggt,northwes,tesoro,chameleo,sigtau,satoshi,george11,hotcum,cornell1,golfer12,geek01d,trololo,kellym,megapolis,pepsi2,hea666,monkfish,blue52,sarajane,bowler1,skeets,ddgirls,hfccbz,bailey01,isabella1,dreday,moose123,baobab,crushme,000009,veryhot,roadie,meanone,mike18,henriett,dohcvtec,moulin,gulnur,adastra,angel9,western1,natura,sweetpe,dtnfkm,marsbar,daisys,frogger1,virus1,redwood1,streetball,fridolin,d78unhxq,midas,michelob,cantik,sk2000,kikker,macanudo,rambone,fizzle,20000,peanuts1,cowpie,stone32,astaroth,dakota01,redso,mustard1,sexylove,giantess,teaparty,bobbin,beerbong,monet1,charles3,anniedog,anna1988,cameleon,longbeach,tamere,qpful542,mesquite,waldemar,12345zx,iamhere,lowboy,canard,granp,daisymay,love33,moosejaw,nivek,ninjaman,shrike01,aaa777,88002000600,vodolei,bambush,falcor,harley69,alphaomega,severine,grappler,bosox,twogirls,gatorman,vettes,buttmunch,chyna,excelsio,crayfish,birillo,megumi,lsia9dnb9y,littlebo,stevek,hiroyuki,firehous,master5,briley2,gangste,chrisk,camaleon,bulle,troyboy,froinlaven,mybutt,sandhya,rapala,jagged,crazycat,lucky12,jetman,wavmanuk,1heather,beegee,negril,mario123,funtime1,conehead,abigai,mhorgan,patagoni,travel1,backspace,frenchfr,mudcat,dashenka,baseball3,rustys,741852kk,dickme,baller23,griffey1,suckmycock,fuhrfzgc,jenny2,spuds,berlin1,justfun,icewind,bumerang,pavlusha,minecraft123,shasta1,ranger12,123400,twisters,buthead,miked,finance1,dignity7,hello9,lvjdp383,jgthfnjh,dalmatio,paparoach,miller31,2bornot2b,fathe,monterre,theblues,satans,schaap,jasmine2,sibelius,manon,heslo,jcnhjd,shane123,natasha2,pierrot,bluecar,iloveass,harriso,red12,london20,job314,beholder,reddawg,fuckyou!,pussylick,bologna1,austintx,ole4ka,blotto,onering,jearly,balbes,lightbul,bighorn,crossfir,lee123,prapor,1ashley,gfhjkm22,wwe123,09090,sexsite,marina123,jagua,witch1,schmoo,parkview,dragon3,chilango,ultimo,abramova,nautique,2bornot2,duende,1arthur,nightwing,surfboar,quant4307,15s9pu03,karina1,shitball,walleye1,wildman1,whytesha,1morgan,my2girls,polic,baranova,berezuckiy,kkkkkk1,forzima,fornow,qwerty02,gokart,suckit69,davidlee,whatnow,edgard,tits1,bayshore,36987412,ghbphfr,daddyy,explore1,zoidberg,5qnzjx,morgane,danilov,blacksex,mickey12,balsam,83y6pv,sarahc,slaye,all4u2,slayer69,nadia1,rlzwp503,4cranker,kaylie,numberon,teremok,wolf12,deeppurple,goodbeer,aaa555,66669999,whatif,harmony1,ue8fpw,3tmnej,254xtpss,dusty197,wcksdypk,zerkalo,dfnheirf,motorol,digita,whoareyou,darksoul,manics,rounders,killer11,d2000lb,cegthgfhjkm,catdog1,beograd,pepsico,julius1,123654987,softbal,killer23,weasel1,lifeson,q123456q,444555666,bunches,andy1,darby1,service01,bear11,jordan123,amega,duncan21,yensid,lerxst,rassvet,bronco2,fortis,pornlove,paiste,198900,asdflkjh,1236547890,futur,eugene1,winnipeg261,fk8bhydb,seanjohn,brimston,matthe1,bitchedu,crisco,302731,roxydog,woodlawn,volgograd,ace1210,boy4u2ownnyc,laura123,pronger,parker12,z123456z,andrew13,longlife,sarang,drogba,gobruins,soccer4,holida,espace,almira,murmansk,green22,safina,wm00022,1chevy,schlumpf,doroth,ulises,golf99,hellyes,detlef,mydog,erkina,bastardo,mashenka,sucram,wehttam,generic1,195000,spaceboy,lopas123,scammer,skynyrd,daddy2,titani,ficker,cr250r,kbnthfnehf,takedown,sticky1,davidruiz,desant,nremtp,painter1,bogies,agamemno,kansas1,smallfry,archi,2b4dnvsx,1player,saddie,peapod,6458zn7a,qvw6n2,gfxqx686,twice2,sh4d0w3d,mayfly,375125,phitau,yqmbevgk,89211375759,kumar1,pfhfpf,toyboy,way2go,7pvn4t,pass69,chipster,spoony,buddycat,diamond3,rincewin,hobie,david01,billbo,hxp4life,matild,pokemon2,dimochka,clown1,148888,jenmt3,cuxldv,cqnwhy,cde34rfv,simone1,verynice,toobig,pasha123,mike00,maria2,lolpop,firewire,dragon9,martesana,a1234567890,birthday3,providen,kiska,pitbulls,556655,misawa,damned69,martin11,goldorak,gunship,glory1,winxclub,sixgun,splodge,agent1,splitter,dome69,ifghjb,eliza1,snaiper,wutang36,phoenix7,666425,arshavin,paulaner,namron,m69fg1w,qwert1234,terrys,zesyrmvu,joeman,scoots,dwml9f,625vrobg,sally123,gostoso,symow8,pelota,c43qpul5rz,majinbuu,lithium1,bigstuff,horndog1,kipelov,kringle,1beavis,loshara,octobe,jmzacf,12342000,qw12qw,runescape1,chargers1,krokus,piknik,jessy,778811,gjvbljh,474jdvff,pleaser,misskitty,breaker1,7f4df451,dayan,twinky,yakumo,chippers,matia,tanith,len2ski1,manni,nichol1,f00b4r,nokia3110,standart,123456789i,shami,steffie,larrywn,chucker,john99,chamois,jjjkkk,penmouse,ktnj2010,gooners,hemmelig,rodney1,merlin01,bearcat1,1yyyyy,159753z,1fffff,1ddddd,thomas11,gjkbyrf,ivanka,f1f2f3,petrovna,phunky,conair,brian2,creative1,klipsch,vbitymrf,freek,breitlin,cecili,westwing,gohabsgo,tippmann,1steve,quattro6,fatbob,sp00ky,rastas,1123581,redsea,rfnmrf,jerky1,1aaaaaa,spk666,simba123,qwert54321,123abcd,beavis69,fyfyfc,starr1,1236547,peanutbutter,sintra,12345abcde,1357246,abcde1,climbon,755dfx,mermaids,monte1,serkan,geilesau,777win,jasonc,parkside,imagine1,rockhead,producti,playhard,principa,spammer,gagher,escada,tsv1860,dbyjuhfl,cruiser1,kennyg,montgome,2481632,pompano,cum123,angel6,sooty,bear01,april6,bodyhamm,pugsly,getrich,mikes,pelusa,fosgate,jasonp,rostislav,kimberly1,128mo,dallas11,gooner1,manuel1,cocacola1,imesh,5782790,password8,daboys,1jones,intheend,e3w2q1,whisper1,madone,pjcgujrat,1p2o3i,jamesp,felicida,nemrac,phikap,firecat,jrcfyjxrf,matt12,bigfan,doedel,005500,jasonx,1234567k,badfish,goosey,utjuhfabz,wilco,artem123,igor123,spike123,jor23dan,dga9la,v2jmsz,morgan12,avery1,dogstyle,natasa,221195ws,twopac,oktober7,karthik,poop1,mightymo,davidr,zermatt,jehova,aezakmi1,dimwit,monkey5,serega123,qwerty111,blabl,casey22,boy123,1clutch,asdfjkl1,hariom,bruce10,jeep95,1smith,sm9934,karishma,bazzzz,aristo,669e53e1,nesterov,kill666,fihdfv,1abc2,anna1,silver11,mojoman,telefono,goeagles,sd3lpgdr,rfhfynby,melinda1,llcoolj,idteul,bigchief,rocky13,timberwo,ballers,gatekeep,kashif,hardass,anastasija,max777,vfuyjkbz,riesling,agent99,kappas,dalglish,tincan,orange3,turtoise,abkbvjy,mike24,hugedick,alabala,geolog,aziza,devilboy,habanero,waheguru,funboy,freedom5,natwest,seashore,impaler,qwaszx1,pastas,bmw535,tecktonik,mika00,jobsearc,pinche,puntang,aw96b6,1corvett,skorpio,foundati,zzr1100,gembird,vfnhjcrby,soccer18,vaz2110,peterp,archer1,cross1,samedi,dima1992,hunter99,lipper,hotbody,zhjckfdf,ducati1,trailer1,04325956,cheryl1,benetton,kononenko,sloneczko,rfgtkmrf,nashua,balalaika,ampere,eliston,dorsai,digge,flyrod,oxymoron,minolta,ironmike,majortom,karimov,fortun,putaria,an83546921an13,blade123,franchis,mxaigtg5,dynxyu,devlt4,brasi,terces,wqmfuh,nqdgxz,dale88,minchia,seeyou,housepen,1apple,1buddy,mariusz,bighouse,tango2,flimflam,nicola1,qwertyasd,tomek1,shumaher,kartoshka,bassss,canaries,redman1,123456789as,preciosa,allblacks,navidad,tommaso,beaudog,forrest1,green23,ryjgjxrf,go4it,ironman2,badnews,butterba,1grizzly,isaeva,rembrand,toront,1richard,bigjon,yfltymrf,1kitty,4ng62t,littlejo,wolfdog,ctvtyjd,spain1,megryan,tatertot,raven69,4809594q,tapout,stuntman,a131313,lagers,hotstuf,lfdbl11,stanley2,advokat,boloto,7894561,dooker,adxel187,cleodog,4play,0p9o8i,masterb,bimota,charlee,toystory,6820055,6666667,crevette,6031769,corsa,bingoo,dima1990,tennis11,samuri,avocado,melissa6,unicor,habari,metart,needsex,cockman,hernan,3891576,3334444,amigo1,gobuffs2,mike21,allianz,2835493,179355,midgard,joey123,oneluv,ellis1,towncar,shonuff,scouse,tool69,thomas19,chorizo,jblaze,lisa1,dima1999,sophia1,anna1989,vfvekbxrf,krasavica,redlegs,jason25,tbontb,katrine,eumesmo,vfhufhbnrf,1654321,asdfghj1,motdepas,booga,doogle,1453145,byron1,158272,kardinal,tanne,fallen1,abcd12345,ufyljy,n12345,kucing,burberry,bodger,1234578,februar,1234512,nekkid,prober,harrison1,idlewild,rfnz90,foiegras,pussy21,bigstud,denzel,tiffany2,bigwill,1234567890zzz,hello69,compute1,viper9,hellspaw,trythis,gococks,dogballs,delfi,lupine,millenia,newdelhi,charlest,basspro,1mike,joeblack,975310,1rosebud,batman11,misterio,fucknut,charlie0,august11,juancho,ilonka,jigei743ks,adam1234,889900,goonie,alicat,ggggggg1,1zzzzzzz,sexywife,northstar,chris23,888111,containe,trojan1,jason5,graikos,1ggggg,1eeeee,tigers01,indigo1,hotmale,jacob123,mishima,richard3,cjxb2014,coco123,meagain,thaman,wallst,edgewood,bundas,1power,matilda1,maradon,hookedup,jemima,r3vi3wpass,2004-10-,mudman,taz123,xswzaq,emerson1,anna21,warlord1,toering,pelle,tgwdvu,masterb8,wallstre,moppel,priora,ghjcnjrdfif,yoland,12332100,1j9e7f6f,jazzzz,yesman,brianm,42qwerty42,12345698,darkmanx,nirmal,john31,bb123456,neuspeed,billgates,moguls,fj1200,hbhlair,shaun1,ghbdfn,305pwzlr,nbu3cd,susanb,pimpdad,mangust6403,joedog,dawidek,gigante,708090,703751,700007,ikalcr,tbivbn,697769,marvi,iyaayas,karen123,jimmyboy,dozer1,e6z8jh,bigtime1,getdown,kevin12,brookly,zjduc3,nolan1,cobber,yr8wdxcq,liebe,m1garand,blah123,616879,action1,600000,sumitomo,albcaz,asian1,557799,dave69,556699,sasa123,streaker,michel1,karate1,buddy7,daulet,koks888,roadtrip,wapiti,oldguy,illini1,1234qq,mrspock,kwiatek,buterfly,august31,jibxhq,jackin,taxicab,tristram,talisker,446655,444666,chrisa,freespace,vfhbfyyf,chevell,444333,notyours,442244,christian1,seemore,sniper12,marlin1,joker666,multik,devilish,crf450,cdfoli,eastern1,asshead,duhast,voyager2,cyberia,1wizard,cybernet,iloveme1,veterok,karandash,392781,looksee,diddy,diabolic,foofight,missey,herbert1,bmw318i,premier1,zsfmpv,eric1234,dun6sm,fuck11,345543,spudman,lurker,bitem,lizzy1,ironsink,minami,339311,s7fhs127,sterne,332233,plankton,galax,azuywe,changepa,august25,mouse123,sikici,killer69,xswqaz,quovadis,gnomik,033028pw,777777a,barrakuda,spawn666,goodgod,slurp,morbius,yelnats,cujo31,norman1,fastone,earwig,aureli,wordlife,bnfkbz,yasmi,austin123,timberla,missy2,legalize,netcom,liljon,takeit,georgin,987654321z,warbird,vitalina,all4u3,mmmmmm1,bichon,ellobo,wahoos,fcazmj,aksarben,lodoss,satnam,vasili,197800,maarten,sam138989,0u812,ankita,walte,prince12,anvils,bestia,hoschi,198300,univer,jack10,ktyecbr,gr00vy,hokie,wolfman1,fuckwit,geyser,emmanue,ybrjkftd,qwerty33,karat,dblock,avocat,bobbym,womersle,1please,nostra,dayana,billyray,alternat,iloveu1,qwerty69,rammstein1,mystikal,winne,drawde,executor,craxxxs,ghjcnjnf,999888777,welshman,access123,963214785,951753852,babe69,fvcnthlfv,****me,666999666,testing2,199200,nintendo64,oscarr,guido8,zhanna,gumshoe,jbird,159357456,pasca,123452345,satan6,mithrand,fhbirf,aa1111aa,viggen,ficktjuv,radial9,davids1,rainbow7,futuro,hipho,platin,poppy123,rhenjq,fulle,rosit,chicano,scrumpy,lumpy1,seifer,uvmrysez,autumn1,xenon,susie1,7u8i9o0p,gamer1,sirene,muffy1,monkeys1,kalinin,olcrackmaster,hotmove,uconn,gshock,merson,lthtdyz,pizzaboy,peggy1,pistache,pinto1,fishka,ladydi,pandor,baileys,hungwell,redboy,rookie1,amanda01,passwrd,clean1,matty1,tarkus,jabba1,bobster,beer30,solomon1,moneymon,sesamo,fred11,sunnysid,jasmine5,thebears,putamadre,workhard,flashbac,counter1,liefde,magnat,corky1,green6,abramov,lordik,univers,shortys,david3,vip123,gnarly,1234567s,billy2,honkey,deathstar,grimmy,govinda,direktor,12345678s,linus1,shoppin,rekbrjdf,santeria,prett,berty75,mohican,daftpunk,uekmyfhf,chupa,strats,ironbird,giants56,salisbur,koldun,summer04,pondscum,jimmyj,miata1,george3,redshoes,weezie,bartman1,0p9o8i7u,s1lver,dorkus,125478,omega9,sexisgood,mancow,patric1,jetta1,074401,ghjuhtcc,gfhjk,bibble,terry2,123213,medicin,rebel2,hen3ry,4freedom,aldrin,lovesyou,browny,renwod,winnie1,belladon,1house,tyghbn,blessme,rfhfrfnbwf,haylee,deepdive,booya,phantasy,gansta,cock69,4mnveh,gazza1,redapple,structur,anakin1,manolito,steve01,poolman,chloe123,vlad1998,qazwsxe,pushit,random123,ontherocks,o236nq,brain1,dimedrol,agape,rovnogod,1balls,knigh,alliso,love01,wolf01,flintstone,beernuts,tuffguy,isengard,highfive,alex23,casper99,rubina,getreal,chinita,italian1,airsoft,qwerty23,muffdiver,willi1,grace123,orioles1,redbull1,chino1,ziggy123,breadman,estefan,ljcneg,gotoit,logan123,wideglid,mancity1,treess,qwe123456,kazumi,qweasdqwe,oddworld,naveed,protos,towson,a801016,godislov,at_asp,bambam1,soccer5,dark123,67vette,carlos123,hoser1,scouser,wesdxc,pelus,dragon25,pflhjn,abdula,1freedom,policema,tarkin,eduardo1,mackdad,gfhjkm11,lfplhfgthvf,adilet,zzzzxxxx,childre,samarkand,cegthgegth,shama,fresher,silvestr,greaser,allout,plmokn,sexdrive,nintendo1,fantasy7,oleander,fe126fd,crumpet,pingzing,dionis,hipster,yfcnz,requin,calliope,jerome1,housecat,abc123456789,doghot,snake123,augus,brillig,chronic1,gfhjkbot,expediti,noisette,master7,caliban,whitetai,favorite3,lisamari,educatio,ghjhjr,saber1,zcegth,1958proman,vtkrbq,milkdud,imajica,thehip,bailey10,hockey19,dkflbdjcnjr,j123456,bernar,aeiouy,gamlet,deltachi,endzone,conni,bcgfybz,brandi1,auckland2010,7653ajl1,mardigra,testuser,bunko18,camaro67,36936,greenie,454dfmcq,6xe8j2z4,mrgreen,ranger5,headhunt,banshee1,moonunit,zyltrc,hello3,pussyboy,stoopid,tigger11,yellow12,drums1,blue02,kils123,junkman,banyan,jimmyjam,tbbucs,sportster,badass1,joshie,braves10,lajolla,1amanda,antani,78787,antero,19216801,chich,rhett32,sarahm,beloit,sucker69,corkey,nicosnn,rccola,caracol,daffyduc,bunny2,mantas,monkies,hedonist,cacapipi,ashton1,sid123,19899891,patche,greekgod,cbr1000,leader1,19977991,ettore,chongo,113311,picass,cfif123,rhtfnbd,frances1,andy12,minnette,bigboy12,green69,alices,babcia,partyboy,javabean,freehand,qawsed123,xxx111,harold1,passwo,jonny1,kappa1,w2dlww3v5p,1merlin,222999,tomjones,jakeman,franken,markhegarty,john01,carole1,daveman,caseys,apeman,mookey,moon123,claret,titans1,residentevil,campari,curitiba,dovetail,aerostar,jackdaniels,basenji,zaq12w,glencoe,biglove,goober12,ncc170,far7766,monkey21,eclipse9,1234567v,vanechka,aristote,grumble,belgorod,abhishek,neworleans,pazzword,dummie,sashadog,diablo11,mst3000,koala1,maureen1,jake99,isaiah1,funkster,gillian1,ekaterina20,chibears,astra123,4me2no,winte,skippe,necro,windows9,vinograd,demolay,vika2010,quiksilver,19371ayj,dollar1,shecky,qzwxecrv,butterfly1,merrill1,scoreland,1crazy,megastar,mandragora,track1,dedhed,jacob2,newhope,qawsedrftgyh,shack1,samvel,gatita,shyster,clara1,telstar,office1,crickett,truls,nirmala,joselito,chrisl,lesnik,aaaabbbb,austin01,leto2010,bubbie,aaa12345,widder,234432,salinger,mrsmith,qazsedcft,newshoes,skunks,yt1300,bmw316,arbeit,smoove,123321qweewq,123qazwsx,22221111,seesaw,0987654321a,peach1,1029384756q,sereda,gerrard8,shit123,batcave,energy1,peterb,mytruck,peter12,alesya,tomato1,spirou,laputaxx,magoo1,omgkremidia,knight12,norton1,vladislava,shaddy,austin11,jlbyjxrf,kbdthgekm,punheta,fetish69,exploiter,roger2,manstein,gtnhjd,32615948worms,dogbreath,ujkjdjkjvrf,vodka1,ripcord,fatrat,kotek1,tiziana,larrybir,thunder3,nbvfnb,9kyq6fge,remembe,likemike,gavin1,shinigam,yfcnfcmz,13245678,jabbar,vampyr,ane4ka,lollipo,ashwin,scuderia,limpdick,deagle,3247562,vishenka,fdhjhf,alex02,volvov70,mandys,bioshock,caraca,tombraider,matrix69,jeff123,13579135,parazit,black3,noway1,diablos,hitmen,garden1,aminor,decembe,august12,b00ger,006900,452073t,schach,hitman1,mariner1,vbnmrf,paint1,742617000027,bitchboy,pfqxjyjr,5681392,marryher,sinnet,malik1,muffin12,aninha,piolin,lady12,traffic1,cbvjyf,6345789,june21,ivan2010,ryan123,honda99,gunny,coorslight,asd321,hunter69,7224763,sonofgod,dolphins1,1dolphin,pavlenko,woodwind,lovelov,pinkpant,gblfhfcbyf,hotel1,justinbiebe,vinter,jeff1234,mydogs,1pizza,boats1,parrothe,shawshan,brooklyn1,cbrown,1rocky,hemi426,dragon64,redwings1,porsches,ghostly,hubbahub,buttnut,b929ezzh,sorokina,flashg,fritos,b7mguk,metatron,treehous,vorpal,8902792,marcu,free123,labamba,chiefs1,zxc123zxc,keli_14,hotti,1steeler,money4,rakker,foxwoods,free1,ahjkjd,sidorova,snowwhit,neptune1,mrlover,trader1,nudelamb,baloo,power7,deltasig,bills1,trevo,7gorwell,nokia6630,nokia5320,madhatte,1cowboys,manga1,namtab,sanjar,fanny1,birdman1,adv12775,carlo1,dude1998,babyhuey,nicole11,madmike,ubvyfpbz,qawsedr,lifetec,skyhook,stalker123,toolong,robertso,ripazha,zippy123,1111111a,manol,dirtyman,analslut,jason3,dutches,minhasenha,cerise,fenrir,jayjay1,flatbush,franka,bhbyjxrf,26429vadim,lawntrax,198700,fritzy,nikhil,ripper1,harami,truckman,nemvxyheqdd5oqxyxyzi,gkfytnf,bugaboo,cableman,hairpie,xplorer,movado,hotsex69,mordred,ohyeah1,patrick3,frolov,katieh,4311111q,mochaj,presari,bigdo,753951852,freedom4,kapitan,tomas1,135795,sweet123,pokers,shagme,tane4ka,sentinal,ufgyndmv,jonnyb,skate123,123456798,123456788,very1,gerrit,damocles,dollarbi,caroline1,lloyds,pizdets,flatland,92702689,dave13,meoff,ajnjuhfabz,achmed,madison9,744744z,amonte,avrillavigne,elaine1,norma1,asseater,everlong,buddy23,cmgang1,trash1,mitsu,flyman,ulugbek,june27,magistr,fittan,sebora64,dingos,sleipnir,caterpil,cindys,212121qaz,partys,dialer,gjytltkmybr,qweqaz,janvier,rocawear,lostboy,aileron,sweety1,everest1,pornman,boombox,potter1,blackdic,44448888,eric123,112233aa,2502557i,novass,nanotech,yourname,x12345,indian1,15975300,1234567l,carla51,chicago0,coleta,cxzdsaewq,qqwweerr,marwan,deltic,hollys,qwerasd,pon32029,rainmake,nathan0,matveeva,legioner,kevink,riven,tombraid,blitzen,a54321,jackyl,chinese1,shalimar,oleg1995,beaches1,tommylee,eknock,berli,monkey23,badbob,pugwash,likewhoa,jesus2,yujyd360,belmar,shadow22,utfp5e,angelo1,minimax,pooder,cocoa1,moresex,tortue,lesbia,panthe,snoopy2,drumnbass,alway,gmcz71,6jhwmqku,leppard,dinsdale,blair1,boriqua,money111,virtuagirl,267605,rattlesn,1sunshin,monica12,veritas1,newmexic,millertime,turandot,rfvxfnrf,jaydog,kakawka,bowhunter,booboo12,deerpark,erreway,taylorma,rfkbybyf,wooglin,weegee,rexdog,iamhorny,cazzo1,vhou812,bacardi1,dctktyyfz,godpasi,peanut12,bertha1,fuckyoubitch,ghosty,altavista,jertoot,smokeit,ghjcnbvtyz,fhnehxbr,rolsen,qazxcdews,maddmaxx,redrocke,qazokm,spencer2,thekiller,asdf11,123sex,tupac1,p1234567,dbrown,1biteme,tgo4466,316769,sunghi,shakespe,frosty1,gucci1,arcana,bandit01,lyubov,poochy,dartmout,magpies1,sunnyd,mouseman,summer07,chester7,shalini,danbury,pigboy,dave99,deniss,harryb,ashley11,pppppp1,01081988m,balloon1,tkachenko,bucks1,master77,pussyca,tricky1,zzxxccvv,zoulou,doomer,mukesh,iluv69,supermax,todays,thefox,don123,dontask,diplom,piglett,shiney,fahbrf,qaz12wsx,temitope,reggin,project1,buffy2,inside1,lbpfqyth,vanilla1,lovecock,u4slpwra,fylh.irf,123211,7ertu3ds,necroman,chalky,artist1,simpso,4x7wjr,chaos666,lazyacres,harley99,ch33s3,marusa,eagle7,dilligas,computadora,lucky69,denwer,nissan350z,unforgiv,oddball,schalke0,aztec1,borisova,branden1,parkave,marie123,germa,lafayett,878kckxy,405060,cheeseca,bigwave,fred22,andreea,poulet,mercutio,psycholo,andrew88,o4izdmxu,sanctuar,newhome,milion,suckmydi,rjvgm.nth,warior,goodgame,1qwertyuiop,6339cndh,scorpio2,macker,southbay,crabcake,toadie,paperclip,fatkid,maddo,cliff1,rastafar,maries,twins1,geujdrf,anjela,wc4fun,dolina,mpetroff,rollout,zydeco,shadow3,pumpki,steeda,volvo240,terras,blowjo,blue2000,incognit,badmojo,gambit1,zhukov,station1,aaronb,graci,duke123,clipper1,qazxsw2,ledzeppe,kukareku,sexkitte,cinco,007008,lakers12,a1234b,acmilan1,afhfjy,starrr,slutty3,phoneman,kostyan,bonzo1,sintesi07,ersatz,cloud1,nephilim,nascar03,rey619,kairos,123456789e,hardon1,boeing1,juliya,hfccdtn,vgfun8,polizei,456838,keithb,minouche,ariston,savag,213141,clarkken,microwav,london2,santacla,campeo,qr5mx7,464811,mynuts,bombo,1mickey,lucky8,danger1,ironside,carter12,wyatt1,borntorun,iloveyou123,jose1,pancake1,tadmichaels,monsta,jugger,hunnie,triste,heat7777,ilovejesus,queeny,luckycharm,lieben,gordolee85,jtkirk,forever21,jetlag,skylane,taucher,neworlea,holera,000005,anhnhoem,melissa7,mumdad,massimiliano,dima1994,nigel1,madison3,slicky,shokolad,serenit,jmh1978,soccer123,chris3,drwho,rfpzdrf,1qasw23ed,free4me,wonka,sasquatc,sanan,maytag,verochka,bankone,molly12,monopoli,xfqybr,lamborgini,gondolin,candycane,needsome,jb007,scottie1,brigit,0147258369,kalamazo,lololyo123,bill1234,ilovejes,lol123123,popkorn,april13,567rntvm,downunde,charle1,angelbab,guildwars,homeworld,qazxcvbnm,superma1,dupa123,kryptoni,happyy,artyom,stormie,cool11,calvin69,saphir,konovalov,jansport,october8,liebling,druuna,susans,megans,tujhjdf,wmegrfux,jumbo1,ljb4dt7n,012345678910,kolesnik,speculum,at4gftlw,kurgan,93pn75,cahek0980,dallas01,godswill,fhifdby,chelsea4,jump23,barsoom,catinhat,urlacher,angel99,vidadi1,678910,lickme69,topaz1,westend,loveone,c12345,gold12,alex1959,mamon,barney12,1maggie,alex12345,lp2568cskt,s1234567,gjikbdctyf,anthony0,browns99,chips1,sunking,widespre,lalala1,tdutif,fucklife,master00,alino4ka,stakan,blonde1,phoebus,tenore,bvgthbz,brunos,suzjv8,uvdwgt,revenant,1banana,veroniqu,sexfun,sp1der,4g3izhox,isakov,shiva1,scooba,bluefire,wizard12,dimitris,funbags,perseus,hoodoo,keving,malboro,157953,a32tv8ls,latics,animate,mossad,yejntb,karting,qmpq39zr,busdrive,jtuac3my,jkne9y,sr20dett,4gxrzemq,keylargo,741147,rfktylfhm,toast1,skins1,xcalibur,gattone,seether,kameron,glock9mm,julio1,delenn,gameday,tommyd,str8edge,bulls123,66699,carlsberg,woodbird,adnama,45auto,codyman,truck2,1w2w3w4w,pvjegu,method1,luetdi,41d8cd98f00b,bankai,5432112345,94rwpe,reneee,chrisx,melvins,775577,sam2000,scrappy1,rachid,grizzley,margare,morgan01,winstons,gevorg,gonzal,crawdad,gfhfdjp,babilon,noneya,pussy11,barbell,easyride,c00li0,777771,311music,karla1,golions,19866891,peejay,leadfoot,hfvbkm,kr9z40sy,cobra123,isotwe,grizz,sallys,****you,aaa123a,dembel,foxs14,hillcres,webman,mudshark,alfredo1,weeded,lester1,hovepark,ratface,000777fffa,huskie,wildthing,elbarto,waikiki,masami,call911,goose2,regin,dovajb,agricola,cjytxrj,andy11,penny123,family01,a121212,1braves,upupa68,happy100,824655,cjlove,firsttim,kalel,redhair,dfhtymt,sliders,bananna,loverbo,fifa2008,crouton,chevy350,panties2,kolya1,alyona,hagrid,spagetti,q2w3e4r,867530,narkoman,nhfdvfnjkju123,1ccccccc,napolean,0072563,allay,w8sted,wigwam,jamesk,state1,parovoz,beach69,kevinb,rossella,logitech1,celula,gnocca,canucks1,loginova,marlboro1,aaaa1,kalleanka,mester,mishutka,milenko,alibek,jersey1,peterc,1mouse,nedved,blackone,ghfplybr,682regkh,beejay,newburgh,ruffian,clarets,noreaga,xenophon,hummerh2,tenshi,smeagol,soloyo,vfhnby,ereiamjh,ewq321,goomie,sportin,cellphone,sonnie,jetblack,saudan,gblfhfc,matheus,uhfvjnf,alicja,jayman1,devon1,hexagon,bailey2,vtufajy,yankees7,salty1,908070,killemal,gammas,eurocard,sydney12,tuesday1,antietam,wayfarer,beast666,19952009sa,aq12ws,eveli,hockey21,haloreach,dontcare,xxxx1,andrea11,karlmarx,jelszo,tylerb,protools,timberwolf,ruffneck,pololo,1bbbbb,waleed,sasami,twinss,fairlady,illuminati,alex007,sucks1,homerjay,scooter7,tarbaby,barmaley,amistad,vanes,randers,tigers12,dreamer2,goleafsg,googie,bernie1,as12345,godeep,james3,phanto,gwbush,cumlover,2196dc,studioworks,995511,golf56,titova,kaleka,itali,socks1,kurwamac,daisuke,hevonen,woody123,daisie,wouter,henry123,gostosa,guppie,porpoise,iamsexy,276115,paula123,1020315,38gjgeuftd,rjrfrjkf,knotty,idiot1,sasha12345,matrix13,securit,radical1,ag764ks,jsmith,coolguy1,secretar,juanas,sasha1988,itout,00000001,tiger11,1butthea,putain,cavalo,basia1,kobebryant,1232323,12345asdfg,sunsh1ne,cyfqgth,tomkat,dorota,dashit,pelmen,5t6y7u,whipit,smokeone,helloall,bonjour1,snowshoe,nilknarf,x1x2x3,lammas,1234599,lol123456,atombomb,ironchef,noclue,alekseev,gwbush1,silver2,12345678m,yesican,fahjlbnf,chapstic,alex95,open1,tiger200,lisichka,pogiako,cbr929,searchin,tanya123,alex1973,phil413,alex1991,dominati,geckos,freddi,silenthill,egroeg,vorobey,antoxa,dark666,shkola,apple22,rebellio,shamanking,7f8srt,cumsucker,partagas,bill99,22223333,arnster55,fucknuts,proxima,silversi,goblues,parcells,vfrcbvjdf,piloto,avocet,emily2,1597530,miniskir,himitsu,pepper2,juiceman,venom1,bogdana,jujube,quatro,botafogo,mama2010,junior12,derrickh,asdfrewq,miller2,chitarra,silverfox,napol,prestigio,devil123,mm111qm,ara123,max33484,sex2000,primo1,sephan,anyuta,alena2010,viborg,verysexy,hibiscus,terps,josefin,oxcart,spooker,speciali,raffaello,partyon,vfhvtkflrf,strela,a123456z,worksuck,glasss,lomonosov,dusty123,dukeblue,1winter,sergeeva,lala123,john22,cmc09,sobolev,bettylou,dannyb,gjkrjdybr,hagakure,iecnhbr,awsedr,pmdmsctsk,costco,alekseeva,fktrcttd,bazuka,flyingv,garuda,buffy16,gutierre,beer12,stomatolog,ernies,palmeiras,golf123,love269,n.kmgfy,gjkysqgbpltw,youare,joeboo,baksik,lifeguar,111a111,nascar8,mindgame,dude1,neopets,frdfkfyu,june24,phoenix8,penelopa,merlin99,mercenar,badluck,mishel,bookert,deadsexy,power9,chinchil,1234567m,alex10,skunk1,rfhkcjy,sammycat,wright1,randy2,marakesh,temppassword,elmer251,mooki,patrick0,bonoedge,1tits,chiar,kylie1,graffix,milkman1,cornel,mrkitty,nicole12,ticketmaster,beatles4,number20,ffff1,terps1,superfre,yfdbufnjh,jake1234,flblfc,1111qq,zanuda,jmol01,wpoolejr,polopol,nicolett,omega13,cannonba,123456789.,sandy69,ribeye,bo243ns,marilena,bogdan123,milla,redskins1,19733791,alias1,movie1,ducat,marzena,shadowru,56565,coolman1,pornlover,teepee,spiff,nafanya,gateway3,fuckyou0,hasher,34778,booboo69,staticx,hang10,qq12345,garnier,bosco123,1234567qw,carson1,samso,1xrg4kcq,cbr929rr,allan123,motorbik,andrew22,pussy101,miroslava,cytujdbr,camp0017,cobweb,snusmumrik,salmon1,cindy2,aliya,serendipity,co437at,tincouch,timmy123,hunter22,st1100,vvvvvv1,blanka,krondor,sweeti,nenit,kuzmich,gustavo1,bmw320i,alex2010,trees1,kyliem,essayons,april26,kumari,sprin,fajita,appletre,fghbjhb,1green,katieb,steven2,corrado1,satelite,1michell,123456789c,cfkfvfylhf,acurarsx,slut543,inhere,bob2000,pouncer,k123456789,fishie,aliso,audia8,bluetick,soccer69,jordan99,fromhell,mammoth1,fighting54,mike25,pepper11,extra1,worldwid,chaise,vfr800,sordfish,almat,nofate,listopad,hellgate,dctvghbdf,jeremia,qantas,lokiju,honker,sprint1,maral,triniti,compaq3,sixsix6,married1,loveman,juggalo1,repvtyrj,zxcasdqw,123445,whore1,123678,monkey6,west123,warcraf,pwnage,mystery1,creamyou,ant123,rehjgfnrf,corona1,coleman1,steve121,alderaan,barnaul,celeste1,junebug1,bombshel,gretzky9,tankist,targa,cachou,vaz2101,playgolf,boneyard,strateg,romawka,iforgotit,pullup,garbage1,irock,archmage,shaft1,oceano,sadies,alvin1,135135ab,psalm69,lmfao,ranger02,zaharova,33334444,perkman,realman,salguod,cmoney,astonmartin,glock1,greyfox,viper99,helpm,blackdick,46775575,family5,shazbot,dewey1,qwertyas,shivani,black22,mailman1,greenday1,57392632,red007,stanky,sanchez1,tysons,daruma,altosax,krayzie,85852008,1forever,98798798,irock.,123456654,142536789,ford22,brick1,michela,preciou,crazy4u,01telemike01,nolife,concac,safety1,annie123,brunswic,destini,123456qwer,madison0,snowball1,137946,1133557799,jarule,scout2,songohan,thedead,00009999,murphy01,spycam,hirsute,aurinko,associat,1miller,baklan,hermes1,2183rm,martie,kangoo,shweta,yvonne1,westsid,jackpot1,rotciv,maratik,fabrika,claude1,nursultan,noentry,ytnhjufnm,electra1,ghjcnjnfr1,puneet,smokey01,integrit,bugeye,trouble2,14071789,paul01,omgwtf,dmh415,ekilpool,yourmom1,moimeme,sparky11,boludo,ruslan123,kissme1,demetrio,appelsin,asshole3,raiders2,bunns,fynjybj,billygoa,p030710p$e4o,macdonal,248ujnfk,acorns,schmidt1,sparrow1,vinbylrj,weasle,jerom,ycwvrxxh,skywalk,gerlinde,solidus,postal1,poochie1,1charles,rhianna,terorist,rehnrf,omgwtfbbq,assfucke,deadend,zidan,jimboy,vengence,maroon5,7452tr,dalejr88,sombra,anatole,elodi,amazonas,147789,q12345q,gawker1,juanma,kassidy,greek1,bruces,bilbob,mike44,0o9i8u7y6t,kaligula,agentx,familie,anders1,pimpjuice,0128um,birthday10,lawncare,hownow,grandorgue,juggerna,scarfac,kensai,swatteam,123four,motorbike,repytxbr,other1,celicagt,pleomax,gen0303,godisgreat,icepick,lucifer666,heavy1,tea4two,forsure,02020,shortdog,webhead,chris13,palenque,3techsrl,knights1,orenburg,prong,nomarg,wutang1,80637852730,laika,iamfree,12345670,pillow1,12343412,bigears,peterg,stunna,rocky5,12123434,damir,feuerwehr,7418529630,danone,yanina,valenci,andy69,111222q,silvia1,1jjjjj,loveforever,passwo1,stratocaster,8928190a,motorolla,lateralu,ujujkm,chubba,ujkjdf,signon,123456789zx,serdce,stevo,wifey200,ololo123,popeye1,1pass,central1,melena,luxor,nemezida,poker123,ilovemusic,qaz1234,noodles1,lakeshow,amarill,ginseng,billiam,trento,321cba,fatback,soccer33,master13,marie2,newcar,bigtop,dark1,camron,nosgoth,155555,biglou,redbud,jordan7,159789,diversio,actros,dazed,drizzit,hjcnjd,wiktoria,justic,gooses,luzifer,darren1,chynna,tanuki,11335577,icculus,boobss,biggi,firstson,ceisi123,gatewa,hrothgar,jarhead1,happyjoy,felipe1,bebop1,medman,athena1,boneman,keiths,djljgfl,dicklick,russ120,mylady,zxcdsa,rock12,bluesea,kayaks,provista,luckies,smile4me,bootycal,enduro,123123f,heartbre,ern3sto,apple13,bigpappa,fy.njxrf,bigtom,cool69,perrito,quiet1,puszek,cious,cruella,temp1,david26,alemap,aa123123,teddies,tricolor,smokey12,kikiriki,mickey01,robert01,super5,ranman,stevenso,deliciou,money777,degauss,mozar,susanne1,asdasd12,shitbag,mommy123,wrestle1,imfree,fuckyou12,barbaris,florent,ujhijr,f8yruxoj,tefjps,anemone,toltec,2gether,left4dead2,ximen,gfkmvf,dunca,emilys,diana123,16473a,mark01,bigbro,annarbor,nikita2000,11aa11,tigres,llllll1,loser2,fbi11213,jupite,qwaszxqw,macabre,123ert,rev2000,mooooo,klapaucius,bagel1,chiquit,iyaoyas,bear101,irocz28,vfktymrfz,smokey2,love99,rfhnbyf,dracul,keith123,slicko,peacock1,orgasmic,thesnake,solder,wetass,doofer,david5,rhfcyjlfh,swanny,tammys,turkiye,tubaman,estefani,firehose,funnyguy,servo,grace17,pippa1,arbiter,jimmy69,nfymrf,asdf67nm,rjcnzy,demon123,thicknes,sexysex,kristall,michail,encarta,banderos,minty,marchenko,de1987ma,mo5kva,aircav,naomi1,bonni,tatoo,cronaldo,49ers1,mama1963,1truck,telecaster,punksnotdead,erotik,1eagles,1fender,luv269,acdeehan,tanner1,freema,1q3e5t7u,linksys,tiger6,megaman1,neophyte,australia1,mydaddy,1jeffrey,fgdfgdfg,gfgekz,1986irachka,keyman,m0b1l3,dfcz123,mikeyg,playstation2,abc125,slacker1,110491g,lordsoth,bhavani,ssecca,dctvghbdtn,niblick,hondacar,baby01,worldcom,4034407,51094didi,3657549,3630000,3578951,sweetpussy,majick,supercoo,robert11,abacabb,panda123,gfhjkm13,ford4x4,zippo1,lapin,1726354,lovesong,dude11,moebius,paravoz,1357642,matkhau,solnyshko,daniel4,multiplelog,starik,martusia,iamtheman,greentre,jetblue,motorrad,vfrcbvev,redoak,dogma1,gnorman,komlos,tonka1,1010220,666satan,losenord,lateralus,absinthe,command1,jigga1,iiiiiii1,pants1,jungfrau,926337,ufhhbgjnnth,yamakasi,888555,sunny7,gemini69,alone1,zxcvbnmz,cabezon,skyblues,zxc1234,456123a,zero00,caseih,azzurra,legolas1,menudo,murcielago,785612,779977,benidorm,viperman,dima1985,piglet1,hemligt,hotfeet,7elephants,hardup,gamess,a000000,267ksyjf,kaitlynn,sharkie,sisyphus,yellow22,667766,redvette,666420,mets69,ac2zxdty,hxxrvwcy,cdavis,alan1,noddy,579300,druss,eatshit1,555123,appleseed,simpleplan,kazak,526282,fynfyfyfhbde,birthday6,dragon6,1pookie,bluedevils,omg123,hj8z6e,x5dxwp,455445,batman23,termin,chrisbrown,animals1,lucky9,443322,kzktxrf,takayuki,fermer,assembler,zomu9q,sissyboy,sergant,felina,nokia6230i,eminem12,croco,hunt4red,festina,darknigh,cptnz062,ndshnx4s,twizzler,wnmaz7sd,aamaax,gfhfcjkmrf,alabama123,barrynov,happy5,punt0it,durandal,8xuuobe4,cmu9ggzh,bruno12,316497,crazyfrog,vfvfktyf,apple3,kasey1,mackdaddy,anthon1,sunnys,angel3,cribbage,moon1,donal,bryce1,pandabear,mwss474,whitesta,freaker,197100,bitche,p2ssw0rd,turnb,tiktonik,moonlite,ferret1,jackas,ferrum,bearclaw,liberty2,1diablo,caribe,snakeeyes,janbam,azonic,rainmaker,vetalik,bigeasy,baby1234,sureno13,blink1,kluivert,calbears,lavanda,198600,dhtlbyf,medvedeva,fox123,whirling,bonscott,freedom9,october3,manoman,segredo,cerulean,robinso,bsmith,flatus,dannon,password21,rrrrrr1,callista,romai,rainman1,trantor,mickeymo,bulldog7,g123456,pavlin,pass22,snowie,hookah,7ofnine,bubba22,cabible,nicerack,moomoo1,summer98,yoyo123,milan1,lieve27,mustang69,jackster,exocet,nadege,qaz12,bahama,watson1,libras,eclipse2,bahram,bapezm,up9x8rww,ghjcnjz,themaste,deflep27,ghost16,gattaca,fotograf,junior123,gilber,gbjyth,8vjzus,rosco1,begonia,aldebara,flower12,novastar,buzzman,manchild,lopez1,mama11,william7,yfcnz1,blackstar,spurs123,moom4242,1amber,iownyou,tightend,07931505,paquito,1johnson,smokepot,pi31415,snowmass,ayacdc,jessicam,giuliana,5tgbnhy6,harlee,giuli,bigwig,tentacle,scoubidou2,benelli,vasilina,nimda,284655,jaihind,lero4ka,1tommy,reggi,ididit,jlbyjxtcndj,mike26,qbert,wweraw,lukasz,loosee123,palantir,flint1,mapper,baldie,saturne,virgin1,meeeee,elkcit,iloveme2,blue15,themoon,radmir,number3,shyanne,missle,hannelor,jasmina,karin1,lewie622,ghjcnjqgfhjkm,blasters,oiseau,sheela,grinders,panget,rapido,positiv,twink,fltkbyf,kzsfj874,daniel01,enjoyit,nofags,doodad,rustler,squealer,fortunat,peace123,khushi,devils2,7inches,candlebo,topdawg,armen,soundman,zxcqweasd,april7,gazeta,netman,hoppers,bear99,ghbjhbntn,mantle7,bigbo,harpo,jgordon,bullshi,vinny1,krishn,star22,thunderc,galinka,phish123,tintable,nightcrawler,tigerboy,rbhgbx,messi,basilisk,masha1998,nina123,yomamma,kayla123,geemoney,0000000000d,motoman,a3jtni,ser123,owen10,italien,vintelok,12345rewq,nightime,jeepin,ch1tt1ck,mxyzptlk,bandido,ohboy,doctorj,hussar,superted,parfilev,grundle,1jack,livestrong,chrisj,matthew3,access22,moikka,fatone,miguelit,trivium,glenn1,smooches,heiko,dezember,spaghett,stason,molokai,bossdog,guitarma,waderh,boriska,photosho,path13,hfrtnf,audre,junior24,monkey24,silke,vaz21093,bigblue1,trident1,candide,arcanum,klinker,orange99,bengals1,rosebu,mjujuj,nallepuh,mtwapa1a,ranger69,level1,bissjop,leica,1tiffany,rutabega,elvis77,kellie1,sameas,barada,karabas,frank12,queenb,toutoune,surfcity,samanth1,monitor1,littledo,kazakova,fodase,mistral1,april22,carlit,shakal,batman123,fuckoff2,alpha01,5544332211,buddy3,towtruck,kenwood1,vfiekmrf,jkl123,pypsik,ranger75,sitges,toyman,bartek1,ladygirl,booman,boeing77,installsqlst,222666,gosling,bigmack,223311,bogos,kevin2,gomez1,xohzi3g4,kfnju842,klubnika,cubalibr,123456789101,kenpo,0147852369,raptor1,tallulah,boobys,jjones,1q2s3c,moogie,vid2600,almas,wombat1,extra300,xfiles1,green77,sexsex1,heyjude,sammyy,missy123,maiyeuem,nccpl25282,thicluv,sissie,raven3,fldjrfn,buster22,broncos2,laurab,letmein4,harrydog,solovey,fishlips,asdf4321,ford123,superjet,norwegen,movieman,psw333333,intoit,postbank,deepwate,ola123,geolog323,murphys,eshort,a3eilm2s2y,kimota,belous,saurus,123321qaz,i81b4u,aaa12,monkey20,buckwild,byabybnb,mapleleafs,yfcnzyfcnz,baby69,summer03,twista,246890,246824,ltcnhjth,z1z2z3,monika1,sad123,uto29321,bathory,villan,funkey,poptarts,spam967888,705499fh,sebast,porn1234,earn381,1porsche,whatthef,123456789y,polo12,brillo,soreilly,waters1,eudora,allochka,is_a_bot,winter00,bassplay,531879fiz,onemore,bjarne,red911,kot123,artur1,qazxdr,c0rvette,diamond7,matematica,klesko,beaver12,2enter,seashell,panam,chaching,edward2,browni,xenogear,cornfed,aniram,chicco22,darwin1,ancella2,sophie2,vika1998,anneli,shawn41,babie,resolute,pandora2,william8,twoone,coors1,jesusis1,teh012,cheerlea,renfield,tessa1,anna1986,madness1,bkmlfh,19719870,liebherr,ck6znp42,gary123,123654z,alsscan,eyedoc,matrix7,metalgea,chinito,4iter,falcon11,7jokx7b9du,bigfeet,tassadar,retnuh,muscle1,klimova,darion,batistuta,bigsur,1herbier,noonie,ghjrehjh,karimova,faustus,snowwhite,1manager,dasboot,michael12,analfuck,inbed,dwdrums,jaysoncj,maranell,bsheep75,164379,rolodex,166666,rrrrrrr1,almaz666,167943,russel1,negrito,alianz,goodpussy,veronik,1w2q3r4e,efremov,emb377,sdpass,william6,alanfahy,nastya1995,panther5,automag,123qwe12,vfvf2011,fishe,1peanut,speedie,qazwsx1234,pass999,171204j,ketamine,sheena1,energizer,usethis1,123abc123,buster21,thechamp,flvbhfk,frank69,chane,hopeful1,claybird,pander,anusha,bigmaxxx,faktor,housebed,dimidrol,bigball,shashi,derby1,fredy,dervish,bootycall,80988218126,killerb,cheese2,pariss,mymail,dell123,catbert,christa1,chevytru,gjgjdf,00998877,overdriv,ratten,golf01,nyyanks,dinamite,bloembol,gismo,magnus1,march2,twinkles,ryan22,duckey,118a105b,kitcat,brielle,poussin,lanzarot,youngone,ssvegeta,hero63,battle1,kiler,fktrcfylh1,newera,vika1996,dynomite,oooppp,beer4me,foodie,ljhjuf,sonshine,godess,doug1,constanc,thinkbig,steve2,damnyou,autogod,www333,kyle1,ranger7,roller1,harry2,dustin1,hopalong,tkachuk,b00bies,bill2,deep111,stuffit,fire69,redfish1,andrei123,graphix,1fishing,kimbo1,mlesp31,ifufkbyf,gurkan,44556,emily123,busman,and123,8546404,paladine,1world,bulgakov,4294967296,bball23,1wwwww,mycats,elain,delta6,36363,emilyb,color1,6060842,cdtnkfyrf,hedonism,gfgfrfhkj,5551298,scubad,gostate,sillyme,hdbiker,beardown,fishers,sektor,00000007,newbaby,rapid1,braves95,gator2,nigge,anthony3,sammmy,oou812,heffer,phishin,roxanne1,yourass,hornet1,albator,2521659,underwat,tanusha,dianas,3f3fpht7op,dragon20,bilbobag,cheroke,radiatio,dwarf1,majik,33st33,dochka,garibald,robinh,sham69,temp01,wakeboar,violet1,1w2w3w,registr,tonite,maranello,1593570,parolamea,galatasara,loranthos,1472583,asmodean,1362840,scylla,doneit,jokerr,porkypig,kungen,mercator,koolhaas,come2me,debbie69,calbear,liverpoolfc,yankees4,12344321a,kennyb,madma,85200258,dustin23,thomas13,tooling,mikasa,mistic,crfnbyf,112233445,sofia1,heinz57,colts1,price1,snowey,joakim,mark11,963147,cnhfcnm,kzinti,1bbbbbbb,rubberdu,donthate,rupert1,sasha1992,regis1,nbuhbwf,fanboy,sundial,sooner1,wayout,vjnjhjkf,deskpro,arkangel,willie12,mikeyb,celtic1888,luis1,buddy01,duane1,grandma1,aolcom,weeman,172839456,basshead,hornball,magnu,pagedown,molly2,131517,rfvtgbyhn,astonmar,mistery,madalina,cash1,1happy,shenlong,matrix01,nazarova,369874125,800500,webguy,rse2540,ashley2,briank,789551,786110,chunli,j0nathan,greshnik,courtne,suckmyco,mjollnir,789632147,asdfg1234,754321,odelay,ranma12,zebedee,artem777,bmw318is,butt1,rambler1,yankees9,alabam,5w76rnqp,rosies,mafioso,studio1,babyruth,tranzit,magical123,gfhjkm135,12345$,soboleva,709394,ubique,drizzt1,elmers,teamster,pokemons,1472583690,1597532486,shockers,merckx,melanie2,ttocs,clarisse,earth1,dennys,slobber,flagman,farfalla,troika,4fa82hyx,hakan,x4ww5qdr,cumsuck,leather1,forum1,july20,barbel,zodiak,samuel12,ford01,rushfan,bugsy1,invest1,tumadre,screwme,a666666,money5,henry8,tiddles,sailaway,starburs,100years,killer01,comando,hiromi,ranetka,thordog,blackhole,palmeira,verboten,solidsna,q1w1e1,humme,kevinc,gbrfxe,gevaudan,hannah11,peter2,vangar,sharky7,talktome,jesse123,chuchi,pammy,!qazxsw2,siesta,twenty1,wetwilly,477041,natural1,sun123,daniel3,intersta,shithead1,hellyea,bonethugs,solitair,bubbles2,father1,nick01,444000,adidas12,dripik,cameron2,442200,a7nz8546,respublika,fkojn6gb,428054,snoppy,rulez1,haslo,rachael1,purple01,zldej102,ab12cd34,cytuehjxrf,madhu,astroman,preteen,handsoff,mrblonde,biggio,testin,vfdhif,twolves,unclesam,asmara,kpydskcw,lg2wmgvr,grolsch,biarritz,feather1,williamm,s62i93,bone1,penske,337733,336633,taurus1,334433,billet,diamondd,333000,nukem,fishhook,godogs,thehun,lena1982,blue00,smelly1,unb4g9ty,65pjv22,applegat,mikehunt,giancarlo,krillin,felix123,december1,soapy,46doris,nicole23,bigsexy1,justin10,pingu,bambou,falcon12,dgthtl,1surfer,qwerty01,estrellit,nfqcjy,easygo,konica,qazqwe,1234567890m,stingers,nonrev,3e4r5t,champio,bbbbbb99,196400,allen123,seppel,simba2,rockme,zebra3,tekken3,endgame,sandy2,197300,fitte,monkey00,eldritch,littleone,rfyfgkz,1member,66chevy,oohrah,cormac,hpmrbm41,197600,grayfox,elvis69,celebrit,maxwell7,rodders,krist,1camaro,broken1,kendall1,silkcut,katenka,angrick,maruni,17071994a,tktyf,kruemel,snuffles,iro4ka,baby12,alexis01,marryme,vlad1994,forward1,culero,badaboom,malvin,hardtoon,hatelove,molley,knopo4ka,duchess1,mensuck,cba321,kickbutt,zastava,wayner,fuckyou6,eddie123,cjkysir,john33,dragonfi,cody1,jabell,cjhjrf,badseed,sweden1,marihuana,brownlov,elland,nike1234,kwiettie,jonnyboy,togepi,billyk,robert123,bb334,florenci,ssgoku,198910,bristol1,bob007,allister,yjdujhjl,gauloise,198920,bellaboo,9lives,aguilas,wltfg4ta,foxyroxy,rocket69,fifty50,babalu,master21,malinois,kaluga,gogosox,obsessio,yeahrigh,panthers1,capstan,liza2000,leigh1,paintball1,blueskie,cbr600f3,bagdad,jose98,mandreki,shark01,wonderbo,muledeer,xsvnd4b2,hangten,200001,grenden,anaell,apa195,model1,245lufpq,zip100,ghjcgtrn,wert1234,misty2,charro,juanjose,fkbcrf,frostbit,badminto,buddyy,1doctor,vanya,archibal,parviz,spunky1,footboy,dm6tzsgp,legola,samadhi,poopee,ytdxz2ca,hallowboy,dposton,gautie,theworm,guilherme,dopehead,iluvtits,bobbob1,ranger6,worldwar,lowkey,chewbaca,oooooo99,ducttape,dedalus,celular,8i9o0p,borisenko,taylor01,111111z,arlingto,p3nnywiz,rdgpl3ds,boobless,kcmfwesg,blacksab,mother2,markus1,leachim,secret2,s123456789,1derful,espero,russell2,tazzer,marykate,freakme,mollyb,lindros8,james00,gofaster,stokrotka,kilbosik,aquamann,pawel1,shedevil,mousie,slot2009,october6,146969,mm259up,brewcrew,choucho,uliana,sexfiend,fktirf,pantss,vladimi,starz,sheeps,12341234q,bigun,tiggers,crjhjcnm,libtech,pudge1,home12,zircon,klaus1,jerry2,pink1,lingus,monkey66,dumass,polopolo09,feuerweh,rjyatnf,chessy,beefer,shamen,poohbear1,4jjcho,bennevis,fatgirls,ujnbrf,cdexswzaq,9noize9,rich123,nomoney,racecar1,hacke,clahay,acuario,getsum,hondacrv,william0,cheyenn,techdeck,atljhjdf,wtcacq,suger,fallenangel,bammer,tranquil,carla123,relayer,lespaul1,portvale,idontno,bycnbnen,trooper2,gennadiy,pompon,billbob,amazonka,akitas,chinatow,atkbrc,busters,fitness1,cateye,selfok2013,1murphy,fullhous,mucker,bajskorv,nectarin,littlebitch,love24,feyenoor,bigal37,lambo1,pussybitch,icecube1,biged,kyocera,ltybcjdf,boodle,theking1,gotrice,sunset1,abm1224,fromme,sexsells,inheat,kenya1,swinger1,aphrodit,kurtcobain,rhind101,poidog,poiulkjh,kuzmina,beantown,tony88,stuttgar,drumer,joaqui,messenge,motorman,amber2,nicegirl,rachel69,andreia,faith123,studmuffin,jaiden,red111,vtkmybr,gamecocks,gumper,bosshogg,4me2know,tokyo1,kleaner,roadhog,fuckmeno,phoenix3,seeme,buttnutt,boner69,andreyka,myheart,katerin,rugburn,jvtuepip,dc3ubn,chile1,ashley69,happy99,swissair,balls2,fylhttdf,jimboo,55555d,mickey11,voronin,m7hsqstm,stufff,merete,weihnachte,dowjones,baloo1,freeones,bears34,auburn1,beverl,timberland,1elvis,guinness1,bombadil,flatron1,logging7,telefoon,merl1n,masha1,andrei1,cowabung,yousuck1,1matrix,peopl,asd123qwe,sweett,mirror1,torrente,joker12,diamond6,jackaroo,00000a,millerlite,ironhorse,2twins,stryke,gggg1,zzzxxxccc,roosevel,8363eddy,angel21,depeche1,d0ct0r,blue14,areyou,veloce,grendal,frederiksberg,cbcntvf,cb207sl,sasha2000,was.here,fritzz,rosedale,spinoza,cokeisit,gandalf3,skidmark,ashley01,12345j,1234567890qaz,sexxxxxx,beagles,lennart,12345789,pass10,politic,max007,gcheckou,12345611,tiffy,lightman,mushin,velosiped,brucewayne,gauthie,elena123,greenegg,h2oski,clocker,nitemare,123321s,megiddo,cassidy1,david13,boywonde,flori,peggy12,pgszt6md,batterie,redlands,scooter6,bckhere,trueno,bailey11,maxwell2,bandana,timoth1,startnow,ducati74,tiern,maxine1,blackmetal,suzyq,balla007,phatfarm,kirsten1,titmouse,benhogan,culito,forbin,chess1,warren1,panman,mickey7,24lover,dascha,speed2,redlion,andrew10,johnwayn,nike23,chacha1,bendog,bullyboy,goldtree,spookie,tigger99,1cookie,poutine,cyclone1,woodpony,camaleun,bluesky1,dfadan,eagles20,lovergirl,peepshow,mine1,dima1989,rjdfkmxer,11111aaaaa,machina,august17,1hhhhh,0773417k,1monster,freaksho,jazzmin,davidw,kurupt,chumly,huggies,sashenka,ccccccc1,bridge1,giggalo,cincinna,pistol1,hello22,david77,lightfoo,lucky6,jimmy12,261397,lisa12,tabaluga,mysite,belo4ka,greenn,eagle99,punkrawk,salvado,slick123,wichsen,knight99,dummys,fefolico,contrera,kalle1,anna1984,delray,robert99,garena,pretende,racefan,alons,serenada,ludmilla,cnhtkjr,l0swf9gx,hankster,dfktynbyrf,sheep1,john23,cv141ab,kalyani,944turbo,crystal2,blackfly,zrjdktdf,eus1sue1,mario5,riverplate,harddriv,melissa3,elliott1,sexybitc,cnhfyybr,jimdavis,bollix,beta1,amberlee,skywalk1,natala,1blood,brattax,shitty1,gb15kv99,ronjon,rothmans,thedoc,joey21,hotboi,firedawg,bimbo38,jibber,aftermat,nomar,01478963,phishing,domodo,anna13,materia,martha1,budman1,gunblade,exclusiv,sasha1997,anastas,rebecca2,fackyou,kallisti,fuckmyass,norseman,ipswich1,151500,1edward,intelinside,darcy1,bcrich,yjdjcnbf,failte,buzzzz,cream1,tatiana1,7eleven,green8,153351,1a2s3d4f5g6h,154263,milano1,bambi1,bruins77,rugby2,jamal1,bolita,sundaypunch,bubba12,realmadr,vfyxtcnth,iwojima,notlob,black666,valkiria,nexus1,millerti,birthday100,swiss1,appollo,gefest,greeneyes,celebrat,tigerr,slava123,izumrud,bubbabub,legoman,joesmith,katya123,sweetdream,john44,wwwwwww1,oooooo1,socal,lovespor,s5r8ed67s,258147,heidis,cowboy22,wachovia,michaelb,qwe1234567,i12345,255225,goldie1,alfa155,45colt,safeu851,antonova,longtong,1sparky,gfvznm,busen,hjlbjy,whateva,rocky4,cokeman,joshua3,kekskek1,sirocco,jagman,123456qwert,phinupi,thomas10,loller,sakur,vika2011,fullred,mariska,azucar,ncstate,glenn74,halima,aleshka,ilovemylife,verlaat,baggie,scoubidou6,phatboy,jbruton,scoop1,barney11,blindman,def456,maximus2,master55,nestea,11223355,diego123,sexpistols,sniffy,philip1,f12345,prisonbreak,nokia2700,ajnjuhfa,yankees3,colfax,ak470000,mtnman,bdfyeirf,fotball,ichbin,trebla,ilusha,riobravo,beaner1,thoradin,polkaudi,kurosawa,honda123,ladybu,valerik,poltava,saviola,fuckyouguys,754740g0,anallove,microlab1,juris01,ncc1864,garfild,shania1,qagsud,makarenko,cindy69,lebedev,andrew11,johnnybo,groovy1,booster1,sanders1,tommyb,johnson4,kd189nlcih,hondaman,vlasova,chick1,sokada,sevisgur,bear2327,chacho,sexmania,roma1993,hjcnbckfd,valley1,howdie,tuppence,jimandanne,strike3,y4kuz4,nhfnfnf,tsubasa,19955991,scabby,quincunx,dima1998,uuuuuu1,logica,skinner1,pinguino,lisa1234,xpressmusic,getfucked,qqqq1,bbbb1,matulino,ulyana,upsman,johnsmith,123579,co2000,spanner1,todiefor,mangoes,isabel1,123852,negra,snowdon,nikki123,bronx1,booom,ram2500,chuck123,fireboy,creek1,batman13,princesse,az12345,maksat,1knight,28infern,241455,r7112s,muselman,mets1986,katydid,vlad777,playme,kmfdm1,asssex,1prince,iop890,bigbroth,mollymoo,waitron,lizottes,125412,juggler,quinta,0sister0,zanardi,nata123,heckfyxbr,22q04w90e,engine2,nikita95,zamira,hammer22,lutscher,carolina1,zz6319,sanman,vfuflfy,buster99,rossco,kourniko,aggarwal,tattoo1,janice1,finger1,125521,19911992,shdwlnds,rudenko,vfvfgfgf123,galatea,monkeybu,juhani,premiumcash,classact,devilmay,helpme2,knuddel,hardpack,ramil,perrit,basil1,zombie13,stockcar,tos8217,honeypie,nowayman,alphadog,melon1,talula,125689,tiribon12,tornike,haribol,telefone,tiger22,sucka,lfytxrf,chicken123,muggins,a23456,b1234567,lytdybr,otter1,pippa,vasilisk,cooking1,helter,78978,bestboy,viper7,ahmed1,whitewol,mommys,apple5,shazam1,chelsea7,kumiko,masterma,rallye,bushmast,jkz123,entrar,andrew6,nathan01,alaric,tavasz,heimdall,gravy1,jimmy99,cthlwt,powerr,gthtrhtcnjr,canesfan,sasha11,ybrbnf_25,august9,brucie,artichok,arnie1,superdude,tarelka,mickey22,dooper,luners,holeshot,good123,gettysbu,bicho,hammer99,divine5,1zxcvbn,stronzo,q22222,disne,bmw750il,godhead,hallodu,aerith,nastik,differen,cestmoi,amber69,5string,pornosta,dirtygirl,ginger123,formel1,scott12,honda200,hotspurs,johnatha,firstone123,lexmark1,msconfig,karlmasc,l123456,123qweasdzx,baldman,sungod,furka,retsub,9811020,ryder1,tcglyued,astron,lbvfcbr,minddoc,dirt49,baseball12,tbear,simpl,schuey,artimus,bikman,plat1num,quantex,gotyou,hailey1,justin01,ellada,8481068,000002,manimal,dthjybxrf,buck123,dick123,6969696,nospam,strong1,kodeord,bama12,123321w,superman123,gladiolus,nintend,5792076,dreamgirl,spankme1,gautam,arianna1,titti,tetas,cool1234,belladog,importan,4206969,87e5nclizry,teufelo7,doller,yfl.irf,quaresma,3440172,melis,bradle,nnmaster,fast1,iverso,blargh,lucas12,chrisg,iamsam,123321az,tomjerry,kawika,2597174,standrew,billyg,muskan,gizmodo2,rz93qpmq,870621345,sathya,qmezrxg4,januari,marthe,moom4261,cum2me,hkger286,lou1988,suckit1,croaker,klaudia1,753951456,aidan1,fsunoles,romanenko,abbydog,isthebes,akshay,corgi,fuck666,walkman555,ranger98,scorpian,hardwareid,bluedragon,fastman,2305822q,iddqdiddqd,1597532,gopokes,zvfrfcb,w1234567,sputnik1,tr1993,pa$$w0rd,2i5fdruv,havvoc,1357913,1313131,bnm123,cowd00d,flexscan,thesims2,boogiema,bigsexxy,powerstr,ngc4565,joshman,babyboy1,123jlb,funfunfu,qwe456,honor1,puttana,bobbyj,daniel21,pussy12,shmuck,1232580,123578951,maxthedo,hithere1,bond0007,gehenna,nomames,blueone,r1234567,bwana,gatinho,1011111,torrents,cinta,123451234,tiger25,money69,edibey,pointman,mmcm19,wales1,caffreys,phaedra,bloodlus,321ret32,rufuss,tarbit,joanna1,102030405,stickboy,lotrfotr34,jamshid,mclarenf1,ataman,99ford,yarrak,logan2,ironlung,pushistik,dragoon1,unclebob,tigereye,pinokio,tylerj,mermaid1,stevie1,jaylen,888777,ramana,roman777,brandon7,17711771s,thiago,luigi1,edgar1,brucey,videogam,classi,birder,faramir,twiddle,cubalibre,grizzy,fucky,jjvwd4,august15,idinahui,ranita,nikita1998,123342,w1w2w3,78621323,4cancel,789963,(null,vassago,jaydog472,123452,timt42,canada99,123589,rebenok,htyfnf,785001,osipov,maks123,neverwinter,love2010,777222,67390436,eleanor1,bykemo,aquemini,frogg,roboto,thorny,shipmate,logcabin,66005918,nokian,gonzos,louisian,1abcdefg,triathlo,ilovemar,couger,letmeino,supera,runvs,fibonacci,muttly,58565254,5thgbqi,vfnehsv,electr,jose12,artemis1,newlove,thd1shr,hawkey,grigoryan,saisha,tosca,redder,lifesux,temple1,bunnyman,thekids,sabbeth,tarzan1,182838,158uefas,dell50,1super,666222,47ds8x,jackhamm,mineonly,rfnfhbyf,048ro,665259,kristina1,bombero,52545856,secure1,bigloser,peterk,alex2,51525354,anarchy1,superx,teenslut,money23,sigmapi,sanfrancisco,acme34,private5,eclips,qwerttrewq,axelle,kokain,hardguy,peter69,jesuschr,dyanna,dude69,sarah69,toyota91,amberr,45645645,bugmenot,bigted,44556677,556644,wwr8x9pu,alphaome,harley13,kolia123,wejrpfpu,revelati,nairda,sodoff,cityboy,pinkpussy,dkalis,miami305,wow12345,triplet,tannenbau,asdfasdf1,darkhors,527952,retired1,soxfan,nfyz123,37583867,goddes,515069,gxlmxbewym,1warrior,36925814,dmb2011,topten,karpova,89876065093rax,naturals,gateway9,cepseoun,turbot,493949,cock22,italia1,sasafras,gopnik,stalke,1qazxdr5,wm2006,ace1062,alieva,blue28,aracel,sandia,motoguzz,terri1,emmajane,conej,recoba,alex1995,jerkyboy,cowboy12,arenrone,precisio,31415927,scsa316,panzer1,studly1,powerhou,bensam,mashoutq,billee,eeyore1,reape,thebeatl,rul3z,montesa,doodle1,cvzefh1gk,424365,a159753,zimmerma,gumdrop,ashaman,grimreap,icandoit,borodina,branca,dima2009,keywest1,vaders,bubluk,diavolo,assss,goleta,eatass,napster1,382436,369741,5411pimo,lenchik,pikach,gilgamesh,kalimera,singer1,gordon2,rjycnbnewbz,maulwurf,joker13,2much4u,bond00,alice123,robotec,fuckgirl,zgjybz,redhorse,margaret1,brady1,pumpkin2,chinky,fourplay,1booger,roisin,1brandon,sandan,blackheart,cheez,blackfin,cntgfyjdf,mymoney1,09080706,goodboss,sebring1,rose1,kensingt,bigboner,marcus12,ym3cautj,struppi,thestone,lovebugs,stater,silver99,forest99,qazwsx12345,vasile,longboar,mkonji,huligan,rhfcbdfz,airmail,porn11,1ooooo,sofun,snake2,msouthwa,dougla,1iceman,shahrukh,sharona,dragon666,france98,196800,196820,ps253535,zjses9evpa,sniper01,design1,konfeta,jack99,drum66,good4you,station2,brucew,regedit,school12,mvtnr765,pub113,fantas,tiburon1,king99,ghjcnjgbpltw,checkito,308win,1ladybug,corneliu,svetasveta,197430,icicle,imaccess,ou81269,jjjdsl,brandon6,bimbo1,smokee,piccolo1,3611jcmg,children2,cookie2,conor1,darth1,margera,aoi856,paully,ou812345,sklave,eklhigcz,30624700,amazing1,wahooo,seau55,1beer,apples2,chulo,dolphin9,heather6,198206,198207,hergood,miracle1,njhyflj,4real,milka,silverfi,fabfive,spring12,ermine,mammy,jumpjet,adilbek,toscana,caustic,hotlove,sammy69,lolita1,byoung,whipme,barney01,mistys,tree1,buster3,kaylin,gfccgjhn,132333,aishiteru,pangaea,fathead1,smurph,198701,ryslan,gasto,xexeylhf,anisimov,chevyss,saskatoo,brandy12,tweaker,irish123,music2,denny1,palpatin,outlaw1,lovesuck,woman1,mrpibb,diadora,hfnfneq,poulette,harlock,mclaren1,cooper12,newpass3,bobby12,rfgecnfcerf,alskdjfh,mini14,dukers,raffael,199103,cleo123,1234567qwertyu,mossberg,scoopy,dctulf,starline,hjvjxrf,misfits1,rangers2,bilbos,blackhea,pappnase,atwork,purple2,daywalker,summoner,1jjjjjjj,swansong,chris10,laluna,12345qqq,charly1,lionsden,money99,silver33,hoghead,bdaddy,199430,saisg002,nosaints,tirpitz,1gggggg,jason13,kingss,ernest1,0cdh0v99ue,pkunzip,arowana,spiri,deskjet1,armine,lances,magic2,thetaxi,14159265,cacique,14142135,orange10,richard0,backdraf,255ooo,humtum,kohsamui,c43dae874d,wrestling1,cbhtym,sorento,megha,pepsiman,qweqwe12,bliss7,mario64,korolev,balls123,schlange,gordit,optiquest,fatdick,fish99,richy,nottoday,dianne1,armyof1,1234qwerasdfzxcv,bbonds,aekara,lidiya,baddog1,yellow5,funkie,ryan01,greentree,gcheckout,marshal1,liliput,000000z,rfhbyrf,gtogto43,rumpole,tarado,marcelit,aqwzsxedc,kenshin1,sassydog,system12,belly1,zilla,kissfan,tools1,desember,donsdad,nick11,scorpio6,poopoo1,toto99,steph123,dogfuck,rocket21,thx113,dude12,sanek,sommar,smacky,pimpsta,letmego,k1200rs,lytghjgtnhjdcr,abigale,buddog,deles,baseball9,roofus,carlsbad,hamzah,hereiam,genial,schoolgirlie,yfz450,breads,piesek,washear,chimay,apocalyp,nicole18,gfgf1234,gobulls,dnevnik,wonderwall,beer1234,1moose,beer69,maryann1,adpass,mike34,birdcage,hottuna,gigant,penquin,praveen,donna123,123lol123,thesame,fregat,adidas11,selrahc,pandoras,test3,chasmo,111222333000,pecos,daniel11,ingersol,shana1,mama12345,cessna15,myhero,1simpson,nazarenko,cognit,seattle2,irina1,azfpc310,rfycthdf,hardy1,jazmyn,sl1200,hotlanta,jason22,kumar123,sujatha,fsd9shtyu,highjump,changer,entertai,kolding,mrbig,sayuri,eagle21,qwertzu,jorge1,0101dd,bigdong,ou812a,sinatra1,htcnjhfy,oleg123,videoman,pbyfblf,tv612se,bigbird1,kenaidog,gunite,silverma,ardmore,123123qq,hotbot,cascada,cbr600f4,harakiri,chico123,boscos,aaron12,glasgow1,kmn5hc,lanfear,1light,liveoak,fizika,ybrjkftdyf,surfside,intermilan,multipas,redcard,72chevy,balata,coolio1,schroede,kanat,testerer,camion,kierra,hejmeddig,antonio2,tornados,isidor,pinkey,n8skfswa,ginny1,houndog,1bill,chris25,hastur,1marine,greatdan,french1,hatman,123qqq,z1z2z3z4,kicker1,katiedog,usopen,smith22,mrmagoo,1234512i,assa123,7seven7,monster7,june12,bpvtyf,149521,guenter,alex1985,voronina,mbkugegs,zaqwsxcderfv,rusty5,mystic1,master0,abcdef12,jndfkb,r4zpm3,cheesey,skripka,blackwhite,sharon69,dro8smwq,lektor,techman,boognish,deidara,heckfyf,quietkey,authcode,monkey4,jayboy,pinkerto,merengue,chulita,bushwick,turambar,kittykit,joseph2,dad123,kristo,pepote,scheiss,hambone1,bigballa,restaura,tequil,111luzer,euro2000,motox,denhaag,chelsi,flaco1,preeti,lillo,1001sin,passw,august24,beatoff,555555d,willis1,kissthis,qwertyz,rvgmw2gl,iloveboobies,timati,kimbo,msinfo,dewdrop,sdbaker,fcc5nky2,messiah1,catboy,small1,chode,beastie1,star77,hvidovre,short1,xavie,dagobah,alex1987,papageno,dakota2,toonami,fuerte,jesus33,lawina,souppp,dirtybir,chrish,naturist,channel1,peyote,flibble,gutentag,lactate,killem,zucchero,robinho,ditka,grumpy1,avr7000,boxxer,topcop,berry1,mypass1,beverly1,deuce1,9638527410,cthuttdf,kzkmrf,lovethem,band1t,cantona1,purple11,apples123,wonderwo,123a456,fuzzie,lucky99,dancer2,hoddling,rockcity,winner12,spooty,mansfiel,aimee1,287hf71h,rudiger,culebra,god123,agent86,daniel0,bunky1,notmine,9ball,goofus,puffy1,xyh28af4,kulikov,bankshot,vurdf5i2,kevinm,ercole,sexygirls,razvan,october7,goater,lollie,raissa,thefrog,mdmaiwa3,mascha,jesussaves,union1,anthony9,crossroa,brother2,areyuke,rodman91,toonsex,dopeman,gericom,vaz2115,cockgobbler,12356789,12345699,signatur,alexandra1,coolwhip,erwin1,awdrgyjilp,pens66,ghjrjgtyrj,linkinpark,emergenc,psych0,blood666,bootmort,wetworks,piroca,johnd,iamthe1,supermario,homer69,flameon,image1,bebert,fylhtq1,annapoli,apple11,hockey22,10048,indahouse,mykiss,1penguin,markp,misha123,foghat,march11,hank1,santorin,defcon4,tampico,vbnhjafy,robert22,bunkie,athlon64,sex777,nextdoor,koskesh,lolnoob,seemnemaailm,black23,march15,yeehaa,chiqui,teagan,siegheil,monday2,cornhusk,mamusia,chilis,sthgrtst,feldspar,scottm,pugdog,rfghjy,micmac,gtnhjdyf,terminato,1jackson,kakosja,bogomol,123321aa,rkbvtyrj,tresor,tigertig,fuckitall,vbkkbjy,caramon,zxc12,balin,dildo1,soccer09,avata,abby123,cheetah1,marquise,jennyc,hondavfr,tinti,anna1985,dennis2,jorel,mayflowe,icema,hal2000,nikkis,bigmouth,greenery,nurjan,leonov,liberty7,fafnir,larionov,sat321321,byteme1,nausicaa,hjvfynbrf,everto,zebra123,sergio1,titone,wisdom1,kahala,104328q,marcin1,salima,pcitra,1nnnnn,nalini,galvesto,neeraj,rick1,squeeky,agnes1,jitterbu,agshar,maria12,0112358,traxxas,stivone,prophet1,bananza,sommer1,canoneos,hotfun,redsox11,1bigmac,dctdjkjl,legion1,everclea,valenok,black9,danny001,roxie1,1theman,mudslide,july16,lechef,chula,glamis,emilka,canbeef,ioanna,cactus1,rockshox,im2cool,ninja9,thvfrjdf,june28,milo17,missyou,micky1,nbibyf,nokiaa,goldi,mattias,fuckthem,asdzxc123,ironfist,junior01,nesta,crazzy,killswit,hygge,zantac,kazama,melvin1,allston,maandag,hiccup,prototyp,specboot,dwl610,hello6,159456,baldhead,redwhite,calpoly,whitetail,agile1,cousteau,matt01,aust1n,malcolmx,gjlfhjr,semperf1,ferarri,a1b2c3d,vangelis,mkvdari,bettis36,andzia,comand,tazzman,morgaine,pepluv,anna1990,inandout,anetka,anna1997,wallpape,moonrake,huntress,hogtie,cameron7,sammy7,singe11,clownboy,newzeala,wilmar,safrane,rebeld,poopi,granat,hammertime,nermin,11251422,xyzzy1,bogeys,jkmxbr,fktrcfyl,11223311,nfyrbcn,11223300,powerpla,zoedog,ybrbnbyf,zaphod42,tarawa,jxfhjdfirf,dude1234,g5wks9,goobe,czekolada,blackros,amaranth,medical1,thereds,julija,nhecsyfujkjdt,promopas,buddy4,marmalad,weihnachten,tronic,letici,passthief,67mustan,ds7zamnw,morri,w8woord,cheops,pinarell,sonofsam,av473dv,sf161pn,5c92v5h6,purple13,tango123,plant1,1baby,xufrgemw,fitta,1rangers,spawns,kenned,taratata,19944991,11111118,coronas,4ebouux8,roadrash,corvette1,dfyjdf846,marley12,qwaszxerdfcv,68stang,67stang,racin,ellehcim,sofiko,nicetry,seabass1,jazzman1,zaqwsx1,laz2937,uuuuuuu1,vlad123,rafale,j1234567,223366,nnnnnn1,226622,junkfood,asilas,cer980,daddymac,persepho,neelam,00700,shithappens,255555,qwertyy,xbox36,19755791,qweasd1,bearcub,jerryb,a1b1c1,polkaudio,basketball1,456rty,1loveyou,marcus2,mama1961,palace1,transcend,shuriken,sudhakar,teenlove,anabelle,matrix99,pogoda,notme,bartend,jordana,nihaoma,ataris,littlegi,ferraris,redarmy,giallo,fastdraw,accountbloc,peludo,pornostar,pinoyako,cindee,glassjaw,dameon,johnnyd,finnland,saudade,losbravo,slonko,toplay,smalltit,nicksfun,stockhol,penpal,caraj,divedeep,cannibus,poppydog,pass88,viktory,walhalla,arisia,lucozade,goldenbo,tigers11,caball,ownage123,tonna,handy1,johny,capital5,faith2,stillher,brandan,pooky1,antananarivu,hotdick,1justin,lacrimos,goathead,bobrik,cgtwbfkbcn,maywood,kamilek,gbplf123,gulnar,beanhead,vfvjyn,shash,viper69,ttttttt1,hondacr,kanako,muffer,dukies,justin123,agapov58,mushka,bad11bad,muleman,jojo123,andreika,makeit,vanill,boomers,bigals,merlin11,quacker,aurelien,spartak1922,ligeti,diana2,lawnmowe,fortune1,awesom,rockyy,anna1994,oinker,love88,eastbay,ab55484,poker0,ozzy666,papasmurf,antihero,photogra,ktm250,painkill,jegr2d2,p3orion,canman,dextur,qwest123,samboy,yomismo,sierra01,herber,vfrcbvvfrcbv,gloria1,llama1,pie123,bobbyjoe,buzzkill,skidrow,grabber,phili,javier1,9379992q,geroin,oleg1994,sovereig,rollover,zaq12qaz,battery1,killer13,alina123,groucho1,mario12,peter22,butterbean,elise1,lucycat,neo123,ferdi,golfer01,randie,gfhfyjbr,ventura1,chelsea3,pinoy,mtgox,yrrim7,shoeman,mirko,ffggyyo,65mustan,ufdibyjd,john55,suckfuck,greatgoo,fvfnjhb,mmmnnn,love20,1bullshi,sucesso,easy1234,robin123,rockets1,diamondb,wolfee,nothing0,joker777,glasnost,richar1,guille,sayan,koresh,goshawk,alexx,batman21,a123456b,hball,243122,rockandr,coolfool,isaia,mary1,yjdbrjdf,lolopc,cleocat,cimbo,lovehina,8vfhnf,passking,bonapart,diamond2,bigboys,kreator,ctvtyjdf,sassy123,shellac,table54781,nedkelly,philbert,sux2bu,nomis,sparky99,python1,littlebear,numpty,silmaril,sweeet,jamesw,cbufhtnf,peggysue,wodahs,luvsex,wizardry,venom123,love4you,bama1,samat,reviewpass,ned467,cjkjdtq,mamula,gijoe,amersham,devochka,redhill,gisel,preggo,polock,cando,rewster,greenlantern,panasonik,dave1234,mikeee,1carlos,miledi,darkness1,p0o9i8u7y6,kathryn1,happyguy,dcp500,assmaster,sambuka,sailormo,antonio3,logans,18254288,nokiax2,qwertzuiop,zavilov,totti,xenon1,edward11,targa1,something1,tony_t,q1w2e3r4t5y6u7i8o9p0,02551670,vladimir1,monkeybutt,greenda,neel21,craiger,saveliy,dei008,honda450,fylhtq95,spike2,fjnq8915,passwordstandard,vova12345,talonesi,richi,gigemags,pierre1,westin,trevoga,dorothee,bastogne,25563o,brandon3,truegrit,krimml,iamgreat,servis,a112233,paulinka,azimuth,corperfmonsy,358hkyp,homerun1,dogbert1,eatmyass,cottage1,savina,baseball7,bigtex,gimmesum,asdcxz,lennon1,a159357,1bastard,413276191q,pngfilt,pchealth,netsnip,bodiroga,1matt,webtvs,ravers,adapters,siddis,mashamasha,coffee2,myhoney,anna1982,marcia1,fairchil,maniek,iloveluc,batmonh,wildon,bowie1,netnwlnk,fancy1,tom204,olga1976,vfif123,queens1,ajax01,lovess,mockba,icam4usb,triada,odinthor,rstlne,exciter,sundog,anchorat,girls69,nfnmzyrf,soloma,gti16v,shadowman,ottom,rataros,tonchin,vishal,chicken0,pornlo,christiaan,volante,likesit,mariupol,runfast,gbpltw123,missys,villevalo,kbpjxrf,ghibli,calla,cessna172,kinglear,dell11,swift1,walera,1cricket,pussy5,turbo911,tucke,maprchem56458,rosehill,thekiwi1,ygfxbkgt,mandarinka,98xa29,magnit,cjfrf,paswoord,grandam1,shenmue,leedsuni,hatrick,zagadka,angeldog,michaell,dance123,koichi,bballs,29palms,xanth,228822,ppppppp1,1kkkkk,1lllll,mynewbots,spurss,madmax1,224455,city1,mmmmmmm1,nnnnnnn1,biedronka,thebeatles,elessar,f14tomcat,jordan18,bobo123,ayi000,tedbear,86chevyx,user123,bobolink,maktub,elmer1,flyfishi,franco1,gandalf0,traxdata,david21,enlighte,dmitrij,beckys,1giants,flippe,12345678w,jossie,rugbyman,snowcat,rapeme,peanut11,gemeni,udders,techn9ne,armani1,chappie,war123,vakantie,maddawg,sewanee,jake5253,tautt1,anthony5,letterma,jimbo2,kmdtyjr,hextall,jessica6,amiga500,hotcunt,phoenix9,veronda,saqartvelo,scubas,sixer3,williamj,nightfal,shihan,melnikova,kosssss,handily,killer77,jhrl0821,march17,rushman,6gcf636i,metoyou,irina123,mine11,primus1,formatters,matthew5,infotech,gangster1,jordan45,moose69,kompas,motoxxx,greatwhi,cobra12,kirpich,weezer1,hello23,montse,tracy123,connecte,cjymrf,hemingwa,azreal,gundam00,mobila,boxman,slayers1,ravshan,june26,fktrcfylhjd,bermuda1,tylerd,maersk,qazwsx11,eybdthcbntn,ash123,camelo,kat123,backd00r,cheyenne1,1king,jerkin,tnt123,trabant,warhammer40k,rambos,punto,home77,pedrito,1frank,brille,guitarman,george13,rakas,tgbxtcrbq,flute1,bananas1,lovezp1314,thespot,postie,buster69,sexytime,twistys,zacharia,sportage,toccata,denver7,terry123,bogdanova,devil69,higgins1,whatluck,pele10,kkk666,jeffery1,1qayxsw2,riptide1,chevy11,munchy,lazer1,hooker1,ghfgjh,vergesse,playgrou,4077mash,gusev,humpin,oneputt,hydepark,monster9,tiger8,tangsoo,guy123,hesoyam1,uhtqneyu,thanku,lomond,ortezza,kronik,geetha,rabbit66,killas,qazxswe,alabaste,1234567890qwerty,capone1,andrea12,geral,beatbox,slutfuck,booyaka,jasmine7,ostsee,maestro1,beatme,tracey1,buster123,donaldduck,ironfish,happy6,konnichi,gintonic,momoney1,dugan1,today2,enkidu,destiny2,trim7gun,katuha,fractals,morganstanley,polkadot,gotime,prince11,204060,fifa2010,bobbyt,seemee,amanda10,airbrush,bigtitty,heidie,layla1,cotton1,5speed,fyfnjkmtdyf,flynavy,joxury8f,meeko,akuma,dudley1,flyboy1,moondog1,trotters,mariami,signin,chinna,legs11,pussy4,1s1h1e1f1,felici,optimus1,iluvu,marlins1,gavaec,balance1,glock40,london01,kokot,southwes,comfort1,sammy11,rockbottom,brianc,litebeer,homero,chopsuey,greenlan,charit,freecell,hampster,smalldog,viper12,blofeld,1234567890987654321,realsex,romann,cartman2,cjdthitycndj,nelly1,bmw528,zwezda,masterba,jeep99,turtl,america2,sunburst,sanyco,auntjudy,125wm,blue10,qwsazx,cartma,toby12,robbob,red222,ilovecock,losfix16,1explore,helge,vaz2114,whynotme,baba123,mugen,1qazwsxedc,albertjr,0101198,sextime,supras,nicolas2,wantsex,pussy6,checkm8,winam,24gordon,misterme,curlew,gbljhfcs,medtech,franzi,butthea,voivod,blackhat,egoiste,pjkeirf,maddog69,pakalolo,hockey4,igor1234,rouges,snowhite,homefree,sexfreak,acer12,dsmith,blessyou,199410,vfrcbvjd,falco02,belinda1,yaglasph,april21,groundho,jasmin1,nevergiveup,elvir,gborv526,c00kie,emma01,awesome2,larina,mike12345,maximu,anupam,bltynbabrfwbz,tanushka,sukkel,raptor22,josh12,schalke04,cosmodog,fuckyou8,busybee,198800,bijoux,frame1,blackmor,giveit,issmall,bear13,123-123,bladez,littlegirl,ultra123,fletch1,flashnet,loploprock,rkelly,12step,lukas1,littlewhore,cuntfinger,stinkyfinger,laurenc,198020,n7td4bjl,jackie69,camel123,ben1234,1gateway,adelheid,fatmike,thuglove,zzaaqq,chivas1,4815162342q,mamadou,nadano,james22,benwin,andrea99,rjirf,michou,abkbgg,d50gnn,aaazzz,a123654,blankman,booboo11,medicus,bigbone,197200,justine1,bendix,morphius,njhvjp,44mag,zsecyus56,goodbye1,nokiadermo,a333444,waratsea,4rzp8ab7,fevral,brillian,kirbys,minim,erathia,grazia,zxcvb1234,dukey,snaggle,poppi,hymen,1video,dune2000,jpthjdf,cvbn123,zcxfcnkbdfz,astonv,ginnie,316271,engine3,pr1ncess,64chevy,glass1,laotzu,hollyy,comicbooks,assasins,nuaddn9561,scottsda,hfcnfvfy,accobra,7777777z,werty123,metalhead,romanson,redsand,365214,shalo,arsenii,1989cc,sissi,duramax,382563,petera,414243,mamapap,jollymon,field1,fatgirl,janets,trompete,matchbox20,rambo2,nepenthe,441232,qwertyuiop10,bozo123,phezc419hv,romantika,lifestyl,pengui,decembre,demon6,panther6,444888,scanman,ghjcnjabkz,pachanga,buzzword,indianer,spiderman3,tony12,startre,frog1,fyutk,483422,tupacshakur,albert12,1drummer,bmw328i,green17,aerdna,invisibl,summer13,calimer,mustaine,lgnu9d,morefun,hesoyam123,escort1,scrapland,stargat,barabbas,dead13,545645,mexicali,sierr,gfhfpbn,gonchar,moonstafa,searock,counte,foster1,jayhawk1,floren,maremma,nastya2010,softball1,adaptec,halloo,barrabas,zxcasd123,hunny,mariana1,kafedra,freedom0,green420,vlad1234,method7,665566,tooting,hallo12,davinchi,conducto,medias,666444,invernes,madhatter,456asd,12345678i,687887,le33px,spring00,help123,bellybut,billy5,vitalik1,river123,gorila,bendis,power666,747200,footslav,acehigh,qazxswedc123,q1a1z1,richard9,peterburg,tabletop,gavrilov,123qwe1,kolosov,fredrau,run4fun,789056,jkbvgbflf,chitra,87654321q,steve22,wideopen,access88,surfe,tdfyutkbjy,impossib,kevin69,880888,cantina,887766,wxcvb,dontforg,qwer1209,asslicke,mamma123,indig,arkasha,scrapp,morelia,vehxbr,jones2,scratch1,cody11,cassie12,gerbera,dontgotm,underhil,maks2010,hollywood1,hanibal,elena2010,jason11,1010321,stewar,elaman,fireplug,goodby,sacrific,babyphat,bobcat12,bruce123,1233215,tony45,tiburo,love15,bmw750,wallstreet,2h0t4me,1346795,lamerz,munkee,134679q,granvill,1512198,armastus,aiden1,pipeutvj,g1234567,angeleyes,usmc1,102030q,putangina,brandnew,shadowfax,eagles12,1falcon,brianw,lokomoti,2022958,scooper,pegas,jabroni1,2121212,buffal,siffredi,wewiz,twotone,rosebudd,nightwis,carpet1,mickey2,2525252,sleddog,red333,jamesm,2797349,jeff12,onizuka,felixxxx,rf6666,fine1,ohlala,forplay,chicago5,muncho,scooby11,ptichka,johnnn,19851985p,dogphil3650,totenkopf,monitor2,macross7,3816778,dudder,semaj1,bounder,racerx1,5556633,7085506,ofclr278,brody1,7506751,nantucke,hedj2n4q,drew1,aessedai,trekbike,pussykat,samatron,imani,9124852,wiley1,dukenukem,iampurehaha2,9556035,obvious1,mccool24,apache64,kravchenko,justforf,basura,jamese,s0ccer,safado,darksta,surfer69,damian1,gjpbnbd,gunny1,wolley,sananton,zxcvbn123456,odt4p6sv8,sergei1,modem1,mansikka,zzzz1,rifraf,dima777,mary69,looking4,donttell,red100,ninjutsu,uaeuaeman,bigbri,brasco,queenas8151,demetri,angel007,bubbl,kolort,conny,antonia1,avtoritet,kaka22,kailayu,sassy2,wrongway,chevy3,1nascar,patriots1,chrisrey,mike99,sexy22,chkdsk,sd3utre7,padawan,a6pihd,doming,mesohorny,tamada,donatello,emma22,eather,susan69,pinky123,stud69,fatbitch,pilsbury,thc420,lovepuss,1creativ,golf1234,hurryup,1honda,huskerdu,marino1,gowron,girl1,fucktoy,gtnhjpfdjlcr,dkjfghdk,pinkfl,loreli,7777777s,donkeykong,rockytop,staples1,sone4ka,xxxjay,flywheel,toppdogg,bigbubba,aaa123456,2letmein,shavkat,paule,dlanor,adamas,0147852,aassaa,dixon1,bmw328,mother12,ilikepussy,holly2,tsmith,excaliber,fhutynbyf,nicole3,tulipan,emanue,flyvholm,currahee,godsgift,antonioj,torito,dinky1,sanna,yfcnzvjz,june14,anime123,123321456654,hanswurst,bandman,hello101,xxxyyy,chevy69,technica,tagada,arnol,v00d00,lilone,filles,drumandbass,dinamit,a1234a,eatmeat,elway07,inout,james6,dawid1,thewolf,diapason,yodaddy,qscwdv,fuckit1,liljoe,sloeber,simbacat,sascha1,qwe1234,1badger,prisca,angel17,gravedig,jakeyboy,longboard,truskawka,golfer11,pyramid7,highspee,pistola,theriver,hammer69,1packers,dannyd,alfonse,qwertgfdsa,11119999,basket1,ghjtrn,saralee,12inches,paolo1,zse4xdr5,taproot,sophieh6,grizzlie,hockey69,danang,biggums,hotbitch,5alive,beloved1,bluewave,dimon95,koketka,multiscan,littleb,leghorn,poker2,delite,skyfir,bigjake,persona1,amberdog,hannah12,derren,ziffle,1sarah,1assword,sparky01,seymur,tomtom1,123321qw,goskins,soccer19,luvbekki,bumhole,2balls,1muffin,borodin,monkey9,yfeiybrb,1alex,betmen,freder,nigger123,azizbek,gjkzrjdf,lilmike,1bigdadd,1rock,taganrog,snappy1,andrey1,kolonka,bunyan,gomango,vivia,clarkkent,satur,gaudeamus,mantaray,1month,whitehea,fargus,andrew99,ray123,redhawks,liza2009,qw12345,den12345,vfhnsyjdf,147258369a,mazepa,newyorke,1arsenal,hondas2000,demona,fordgt,steve12,birthday2,12457896,dickster,edcwsxqaz,sahalin,pantyman,skinny1,hubertus,cumshot1,chiro,kappaman,mark3434,canada12,lichking,bonkers1,ivan1985,sybase,valmet,doors1,deedlit,kyjelly,bdfysx,ford11,throatfuck,backwood,fylhsq,lalit,boss429,kotova,bricky,steveh,joshua19,kissa,imladris,star1234,lubimka,partyman,crazyd,tobias1,ilike69,imhome,whome,fourstar,scanner1,ujhjl312,anatoli,85bears,jimbo69,5678ytr,potapova,nokia7070,sunday1,kalleank,1996gta,refinnej,july1,molodec,nothanks,enigm,12play,sugardog,nhfkbdfkb,larousse,cannon1,144444,qazxcdew,stimorol,jhereg,spawn7,143000,fearme,hambur,merlin21,dobie,is3yeusc,partner1,dekal,varsha,478jfszk,flavi,hippo1,9hmlpyjd,july21,7imjfstw,lexxus,truelov,nokia5200,carlos6,anais,mudbone,anahit,taylorc,tashas,larkspur,animal2000,nibiru,jan123,miyvarxar,deflep,dolore,communit,ifoptfcor,laura2,anadrol,mamaliga,mitzi1,blue92,april15,matveev,kajlas,wowlook1,1flowers,shadow14,alucard1,1golf,bantha,scotlan,singapur,mark13,manchester1,telus01,superdav,jackoff1,madnes,bullnuts,world123,clitty,palmer1,david10,spider10,sargsyan,rattlers,david4,windows2,sony12,visigoth,qqqaaa,penfloor,cabledog,camilla1,natasha123,eagleman,softcore,bobrov,dietmar,divad,sss123,d1234567,tlbyjhju,1q1q1q1,paraiso,dav123,lfiekmrf,drachen,lzhan16889,tplate,gfghbrf,casio1,123boots1,123test,sys64738,heavymetal,andiamo,meduza,soarer,coco12,negrita,amigas,heavymet,bespin,1asdfghj,wharfrat,wetsex,tight1,janus1,sword123,ladeda,dragon98,austin2,atep1,jungle1,12345abcd,lexus300,pheonix1,alex1974,123qw123,137955,bigtim,shadow88,igor1994,goodjob,arzen,champ123,121ebay,changeme1,brooksie,frogman1,buldozer,morrowin,achim,trish1,lasse,festiva,bubbaman,scottb,kramit,august22,tyson123,passsword,oompah,al123456,fucking1,green45,noodle1,looking1,ashlynn,al1716,stang50,coco11,greese,bob111,brennan1,jasonj,1cherry,1q2345,1xxxxxxx,fifa2011,brondby,zachar1,satyam,easy1,magic7,1rainbow,cheezit,1eeeeeee,ashley123,assass1,amanda123,jerbear,1bbbbbb,azerty12,15975391,654321z,twinturb,onlyone1,denis1988,6846kg3r,jumbos,pennydog,dandelion,haileris,epervier,snoopy69,afrodite,oldpussy,green55,poopypan,verymuch,katyusha,recon7,mine69,tangos,contro,blowme2,jade1,skydive1,fiveiron,dimo4ka,bokser,stargirl,fordfocus,tigers2,platina,baseball11,raque,pimper,jawbreak,buster88,walter34,chucko,penchair,horizon1,thecure1,scc1975,adrianna1,kareta,duke12,krille,dumbfuck,cunt1,aldebaran,laverda,harumi,knopfler,pongo1,pfhbyf,dogman1,rossigno,1hardon,scarlets,nuggets1,ibelieve,akinfeev,xfhkbr,athene,falcon69,happie,billly,nitsua,fiocco,qwerty09,gizmo2,slava2,125690,doggy123,craigs,vader123,silkeborg,124365,peterm,123978,krakatoa,123699,123592,kgvebmqy,pensacol,d1d2d3,snowstor,goldenboy,gfg65h7,ev700,church1,orange11,g0dz1ll4,chester3,acheron,cynthi,hotshot1,jesuschris,motdepass,zymurgy,one2one,fietsbel,harryp,wisper,pookster,nn527hp,dolla,milkmaid,rustyboy,terrell1,epsilon1,lillian1,dale3,crhbgrf,maxsim,selecta,mamada,fatman1,ufkjxrf,shinchan,fuckuall,women1,000008,bossss,greta1,rbhjxrf,mamasboy,purple69,felicidade,sexy21,cathay,hunglow,splatt,kahless,shopping1,1gandalf,themis,delta7,moon69,blue24,parliame,mamma1,miyuki,2500hd,jackmeof,razer,rocker1,juvis123,noremac,boing747,9z5ve9rrcz,icewater,titania,alley1,moparman,christo1,oliver2,vinicius,tigerfan,chevyy,joshua99,doda99,matrixx,ekbnrf,jackfrost,viper01,kasia,cnfhsq,triton1,ssbt8ae2,rugby8,ramman,1lucky,barabash,ghtlfntkm,junaid,apeshit,enfant,kenpo1,shit12,007000,marge1,shadow10,qwerty789,richard8,vbitkm,lostboys,jesus4me,richard4,hifive,kolawole,damilola,prisma,paranoya,prince2,lisaann,happyness,cardss,methodma,supercop,a8kd47v5,gamgee,polly123,irene1,number8,hoyasaxa,1digital,matthew0,dclxvi,lisica,roy123,2468013579,sparda,queball,vaffanculo,pass1wor,repmvbx,999666333,freedom8,botanik,777555333,marcos1,lubimaya,flash2,einstei,08080,123456789j,159951159,159357123,carrot1,alina1995,sanjos,dilara,mustang67,wisteria,jhnjgtl12,98766789,darksun,arxangel,87062134,creativ1,malyshka,fuckthemall,barsic,rocksta,2big4u,5nizza,genesis2,romance1,ofcourse,1horse,latenite,cubana,sactown,789456123a,milliona,61808861,57699434,imperia,bubba11,yellow3,change12,55495746,flappy,jimbo123,19372846,19380018,cutlass1,craig123,klepto,beagle1,solus,51502112,pasha1,19822891,46466452,19855891,petshop,nikolaevna,119966,nokia6131,evenpar,hoosier1,contrasena,jawa350,gonzo123,mouse2,115511,eetfuk,gfhfvgfvgfv,1crystal,sofaking,coyote1,kwiatuszek,fhrflbq,valeria1,anthro,0123654789,alltheway,zoltar,maasikas,wildchil,fredonia,earlgrey,gtnhjczy,matrix123,solid1,slavko,12monkeys,fjdksl,inter1,nokia6500,59382113kevinp,spuddy,cachero,coorslit,password!,kiba1z,karizma,vova1994,chicony,english1,bondra12,1rocket,hunden,jimbob1,zpflhjn1,th0mas,deuce22,meatwad,fatfree,congas,sambora,cooper2,janne,clancy1,stonie,busta,kamaz,speedy2,jasmine3,fahayek,arsenal0,beerss,trixie1,boobs69,luansantana,toadman,control2,ewing33,maxcat,mama1964,diamond4,tabaco,joshua0,piper2,music101,guybrush,reynald,pincher,katiebug,starrs,pimphard,frontosa,alex97,cootie,clockwor,belluno,skyeseth,booty69,chaparra,boochie,green4,bobcat1,havok,saraann,pipeman,aekdb,jumpshot,wintermu,chaika,1chester,rjnjatq,emokid,reset1,regal1,j0shua,134679a,asmodey,sarahh,zapidoo,ciccione,sosexy,beckham23,hornets1,alex1971,delerium,manageme,connor11,1rabbit,sane4ek,caseyboy,cbljhjdf,redsox20,tttttt99,haustool,ander,pantera6,passwd1,journey1,9988776655,blue135,writerspace,xiaoyua123,justice2,niagra,cassis,scorpius,bpgjldsgjldthnf,gamemaster,bloody1,retrac,stabbin,toybox,fight1,ytpyf.,glasha,va2001,taylor11,shameles,ladylove,10078,karmann,rodeos,eintritt,lanesra,tobasco,jnrhjqcz,navyman,pablit,leshka,jessica3,123vika,alena1,platinu,ilford,storm7,undernet,sasha777,1legend,anna2002,kanmax1994,porkpie,thunder0,gundog,pallina,easypass,duck1,supermom,roach1,twincam,14028,tiziano,qwerty32,123654789a,evropa,shampoo1,yfxfkmybr,cubby1,tsunami1,fktrcttdf,yasacrac,17098,happyhap,bullrun,rodder,oaktown,holde,isbest,taylor9,reeper,hammer11,julias,rolltide1,compaq123,fourx4,subzero1,hockey9,7mary3,busines,ybrbnjcbr,wagoneer,danniash,portishead,digitex,alex1981,david11,infidel,1snoopy,free30,jaden,tonto1,redcar27,footie,moskwa,thomas21,hammer12,burzum,cosmo123,50000,burltree,54343,54354,vwpassat,jack5225,cougars1,burlpony,blackhorse,alegna,petert,katemoss,ram123,nels0n,ferrina,angel77,cstock,1christi,dave55,abc123a,alex1975,av626ss,flipoff,folgore,max1998,science1,si711ne,yams7,wifey1,sveiks,cabin1,volodia,ox3ford,cartagen,platini,picture1,sparkle1,tiedomi,service321,wooody,christi1,gnasher,brunob,hammie,iraffert,bot2010,dtcyeirf,1234567890p,cooper11,alcoholi,savchenko,adam01,chelsea5,niewiem,icebear,lllooottt,ilovedick,sweetpus,money8,cookie13,rfnthbyf1988,booboo2,angus123,blockbus,david9,chica1,nazaret,samsung9,smile4u,daystar,skinnass,john10,thegirl,sexybeas,wasdwasd1,sigge1,1qa2ws3ed4rf5tg,czarny,ripley1,chris5,ashley19,anitha,pokerman,prevert,trfnthby,tony69,georgia2,stoppedb,qwertyuiop12345,miniclip,franky1,durdom,cabbages,1234567890o,delta5,liudmila,nhfycajhvths,court1,josiew,abcd1,doghead,diman,masiania,songline,boogle,triston,deepika,sexy4me,grapple,spacebal,ebonee,winter0,smokewee,nargiza,dragonla,sassys,andy2000,menards,yoshio,massive1,suckmy1k,passat99,sexybo,nastya1996,isdead,stratcat,hokuto,infix,pidoras,daffyduck,cumhard,baldeagl,kerberos,yardman,shibainu,guitare,cqub6553,tommyy,bk.irf,bigfoo,hecto,july27,james4,biggus,esbjerg,isgod,1irish,phenmarr,jamaic,roma1990,diamond0,yjdbrjd,girls4me,tampa1,kabuto,vaduz,hanse,spieng,dianochka,csm101,lorna1,ogoshi,plhy6hql,2wsx4rfv,cameron0,adebayo,oleg1996,sharipov,bouboule,hollister1,frogss,yeababy,kablam,adelante,memem,howies,thering,cecilia1,onetwo12,ojp123456,jordan9,msorcloledbr,neveraga,evh5150,redwin,1august,canno,1mercede,moody1,mudbug,chessmas,tiikeri,stickdaddy77,alex15,kvartira,7654321a,lollol123,qwaszxedc,algore,solana,vfhbyfvfhbyf,blue72,misha1111,smoke20,junior13,mogli,threee,shannon2,fuckmylife,kevinh,saransk,karenw,isolde,sekirarr,orion123,thomas0,debra1,laketaho,alondra,curiva,jazz1234,1tigers,jambos,lickme2,suomi,gandalf7,028526,zygote,brett123,br1ttany,supafly,159000,kingrat,luton1,cool-ca,bocman,thomasd,skiller,katter,mama777,chanc,tomass,1rachel,oldno7,rfpfyjdf,bigkev,yelrah,primas,osito,kipper1,msvcr71,bigboy11,thesun,noskcaj,chicc,sonja1,lozinka,mobile1,1vader,ummagumma,waves1,punter12,tubgtn,server1,irina1991,magic69,dak001,pandemonium,dead1,berlingo,cherrypi,1montana,lohotron,chicklet,asdfgh123456,stepside,ikmvw103,icebaby,trillium,1sucks,ukrnet,glock9,ab12345,thepower,robert8,thugstools,hockey13,buffon,livefree,sexpics,dessar,ja0000,rosenrot,james10,1fish,svoloch,mykitty,muffin11,evbukb,shwing,artem1992,andrey1992,sheldon1,passpage,nikita99,fubar123,vannasx,eight888,marial,max2010,express2,violentj,2ykn5ccf,spartan11,brenda69,jackiech,abagail,robin2,grass1,andy76,bell1,taison,superme,vika1995,xtr451,fred20,89032073168,denis1984,2000jeep,weetabix,199020,daxter,tevion,panther8,h9iymxmc,bigrig,kalambur,tsalagi,12213443,racecar02,jeffrey4,nataxa,bigsam,purgator,acuracl,troutbum,potsmoke,jimmyz,manutd1,nytimes,pureevil,bearss,cool22,dragonage,nodnarb,dbrbyu,4seasons,freude,elric1,werule,hockey14,12758698,corkie,yeahright,blademan,tafkap,clave,liziko,hofner,jeffhardy,nurich,runne,stanisla,lucy1,monk3y,forzaroma,eric99,bonaire,blackwoo,fengshui,1qaz0okm,newmoney,pimpin69,07078,anonymer,laptop1,cherry12,ace111,salsa1,wilbur1,doom12,diablo23,jgtxzbhr,under1,honda01,breadfan,megan2,juancarlos,stratus1,ackbar,love5683,happytim,lambert1,cbljhtyrj,komarov,spam69,nfhtkrf,brownn,sarmat,ifiksr,spike69,hoangen,angelz,economia,tanzen,avogadro,1vampire,spanners,mazdarx,queequeg,oriana,hershil,sulaco,joseph11,8seconds,aquariu,cumberla,heather9,anthony8,burton12,crystal0,maria3,qazwsxc,snow123,notgood,198520,raindog,heehaw,consulta,dasein,miller01,cthulhu1,dukenuke,iubire,baytown,hatebree,198505,sistem,lena12,welcome01,maraca,middleto,sindhu,mitsou,phoenix5,vovan,donaldo,dylandog,domovoy,lauren12,byrjuybnj,123llll,stillers,sanchin,tulpan,smallvill,1mmmmm,patti1,folgers,mike31,colts18,123456rrr,njkmrjz,phoenix0,biene,ironcity,kasperok,password22,fitnes,matthew6,spotligh,bujhm123,tommycat,hazel5,guitar11,145678,vfcmrf,compass1,willee,1barney,jack2000,littleminge,shemp,derrek,xxx12345,littlefuck,spuds1,karolinka,camneely,qwertyu123,142500,brandon00,munson15,falcon3,passssap,z3cn2erv,goahead,baggio10,141592,denali1,37kazoo,copernic,123456789asd,orange88,bravada,rush211,197700,pablo123,uptheass,samsam1,demoman,mattylad10,heydude,mister2,werken,13467985,marantz,a22222,f1f2f3f4,fm12mn12,gerasimova,burrito1,sony1,glenny,baldeagle,rmfidd,fenomen,verbati,forgetme,5element,wer138,chanel1,ooicu812,10293847qp,minicooper,chispa,myturn,deisel,vthrehbq,boredboi4u,filatova,anabe,poiuyt1,barmalei,yyyy1,fourkids,naumenko,bangbros,pornclub,okaykk,euclid90,warrior3,kornet,palevo,patatina,gocart,antanta,jed1054,clock1,111111w,dewars,mankind1,peugeot406,liten,tahira,howlin,naumov,rmracing,corone,cunthole,passit,rock69,jaguarxj,bumsen,197101,sweet2,197010,whitecat,sawadee,money100,yfhrjnbrb,andyboy,9085603566,trace1,fagget,robot1,angel20,6yhn7ujm,specialinsta,kareena,newblood,chingada,boobies2,bugger1,squad51,133andre,call06,ashes1,ilovelucy,success2,kotton,cavalla,philou,deebee,theband,nine09,artefact,196100,kkkkkkk1,nikolay9,onelov,basia,emilyann,sadman,fkrjujkbr,teamomuch,david777,padrino,money21,firdaus,orion3,chevy01,albatro,erdfcv,2legit,sarah7,torock,kevinn,holio,soloy,enron714,starfleet,qwer11,neverman,doctorwh,lucy11,dino12,trinity7,seatleon,o123456,pimpman,1asdfgh,snakebit,chancho,prorok,bleacher,ramire,darkseed,warhorse,michael123,1spanky,1hotdog,34erdfcv,n0th1ng,dimanche,repmvbyf,michaeljackson,login1,icequeen,toshiro,sperme,racer2,veget,birthday26,daniel9,lbvekmrf,charlus,bryan123,wspanic,schreibe,1andonly,dgoins,kewell,apollo12,egypt1,fernie,tiger21,aa123456789,blowj,spandau,bisquit,12345678d,deadmau5,fredie,311420,happyface,samant,gruppa,filmstar,andrew17,bakesale,sexy01,justlook,cbarkley,paul11,bloodred,rideme,birdbath,nfkbcvfy,jaxson,sirius1,kristof,virgos,nimrod1,hardc0re,killerbee,1abcdef,pitcher1,justonce,vlada,dakota99,vespucci,wpass,outside1,puertori,rfvbkf,teamlosi,vgfun2,porol777,empire11,20091989q,jasong,webuivalidat,escrima,lakers08,trigger2,addpass,342500,mongini,dfhtybr,horndogg,palermo1,136900,babyblu,alla98,dasha2010,jkelly,kernow,yfnecz,rockhopper,toeman,tlaloc,silver77,dave01,kevinr,1234567887654321,135642,me2you,8096468644q,remmus,spider7,jamesa,jilly,samba1,drongo,770129ji,supercat,juntas,tema1234,esthe,1234567892000,drew11,qazqaz123,beegees,blome,rattrace,howhigh,tallboy,rufus2,sunny2,sou812,miller12,indiana7,irnbru,patch123,letmeon,welcome5,nabisco,9hotpoin,hpvteb,lovinit,stormin,assmonke,trill,atlanti,money1234,cubsfan,mello1,stars2,ueptkm,agate,dannym88,lover123,wordz,worldnet,julemand,chaser1,s12345678,pissword,cinemax,woodchuc,point1,hotchkis,packers2,bananana,kalender,420666,penguin8,awo8rx3wa8t,hoppie,metlife,ilovemyfamily,weihnachtsbau,pudding1,luckystr,scully1,fatboy1,amizade,dedham,jahbless,blaat,surrende,****er,1panties,bigasses,ghjuhfvbcn,asshole123,dfktyrb,likeme,nickers,plastik,hektor,deeman,muchacha,cerebro,santana5,testdrive,dracula1,canalc,l1750sq,savannah1,murena,1inside,pokemon00,1iiiiiii,jordan20,sexual1,mailliw,calipso,014702580369,1zzzzzz,1jjjjjj,break1,15253545,yomama1,katinka,kevin11,1ffffff,martijn,sslazio,daniel5,porno2,nosmas,leolion,jscript,15975312,pundai,kelli1,kkkddd,obafgkm,marmaris,lilmama,london123,rfhfnt,elgordo,talk87,daniel7,thesims3,444111,bishkek,afrika2002,toby22,1speedy,daishi,2children,afroman,qqqqwwww,oldskool,hawai,v55555,syndicat,pukimak,fanatik,tiger5,parker01,bri5kev6,timexx,wartburg,love55,ecosse,yelena03,madinina,highway1,uhfdbwfgf,karuna,buhjvfybz,wallie,46and2,khalif,europ,qaz123wsx456,bobbybob,wolfone,falloutboy,manning18,scuba10,schnuff,ihateyou1,lindam,sara123,popcor,fallengun,divine1,montblanc,qwerty8,rooney10,roadrage,bertie1,latinus,lexusis,rhfvfnjhcr,opelgt,hitme,agatka,1yamaha,dmfxhkju,imaloser,michell1,sb211st,silver22,lockedup,andrew9,monica01,sassycat,dsobwick,tinroof,ctrhtnyj,bultaco,rhfcyjzhcr,aaaassss,14ss88,joanne1,momanddad,ahjkjdf,yelhsa,zipdrive,telescop,500600,1sexsex,facial1,motaro,511647,stoner1,temujin,elephant1,greatman,honey69,kociak,ukqmwhj6,altezza,cumquat,zippos,kontiki,123max,altec1,bibigon,tontos,qazsew,nopasaran,militar,supratt,oglala,kobayash,agathe,yawetag,dogs1,cfiekmrf,megan123,jamesdea,porosenok,tiger23,berger1,hello11,seemann,stunner1,walker2,imissu,jabari,minfd,lollol12,hjvfy,1-oct,stjohns,2278124q,123456789qwer,alex1983,glowworm,chicho,mallards,bluedevil,explorer1,543211,casita,1time,lachesis,alex1982,airborn1,dubesor,changa,lizzie1,captaink,socool,bidule,march23,1861brr,k.ljxrf,watchout,fotze,1brian,keksa2,aaaa1122,matrim,providian,privado,dreame,merry1,aregdone,davidt,nounour,twenty2,play2win,artcast2,zontik,552255,shit1,sluggy,552861,dr8350,brooze,alpha69,thunder6,kamelia2011,caleb123,mmxxmm,jamesh,lfybkjd,125267,125000,124536,bliss1,dddsss,indonesi,bob69,123888,tgkbxfgy,gerar,themack,hijodeputa,good4now,ddd123,clk430,kalash,tolkien1,132forever,blackb,whatis,s1s2s3s4,lolkin09,yamahar,48n25rcc,djtiesto,111222333444555,bigbull,blade55,coolbree,kelse,ichwill,yamaha12,sakic,bebeto,katoom,donke,sahar,wahine,645202,god666,berni,starwood,june15,sonoio,time123,llbean,deadsoul,lazarev,cdtnf,ksyusha,madarchod,technik,jamesy,4speed,tenorsax,legshow,yoshi1,chrisbl,44e3ebda,trafalga,heather7,serafima,favorite4,havefun1,wolve,55555r,james13,nosredna,bodean,jlettier,borracho,mickael,marinus,brutu,sweet666,kiborg,rollrock,jackson6,macross1,ousooner,9085084232,takeme,123qwaszx,firedept,vfrfhjd,jackfros,123456789000,briane,cookie11,baby22,bobby18,gromova,systemofadown,martin01,silver01,pimaou,darthmaul,hijinx,commo,chech,skyman,sunse,2vrd6,vladimirovna,uthvfybz,nicole01,kreker,bobo1,v123456789,erxtgb,meetoo,drakcap,vfvf12,misiek1,butane,network2,flyers99,riogrand,jennyk,e12345,spinne,avalon11,lovejone,studen,maint,porsche2,qwerty100,chamberl,bluedog1,sungam,just4u,andrew23,summer22,ludic,musiclover,aguil,beardog1,libertin,pippo1,joselit,patito,bigberth,digler,sydnee,jockstra,poopo,jas4an,nastya123,profil,fuesse,default1,titan2,mendoz,kpcofgs,anamika,brillo021,bomberman,guitar69,latching,69pussy,blues2,phelge,ninja123,m7n56xo,qwertasd,alex1976,cunningh,estrela,gladbach,marillion,mike2000,258046,bypop,muffinman,kd5396b,zeratul,djkxbwf,john77,sigma2,1linda,selur,reppep,quartz1,teen1,freeclus,spook1,kudos4ever,clitring,sexiness,blumpkin,macbook,tileman,centra,escaflowne,pentable,shant,grappa,zverev,1albert,lommerse,coffee11,777123,polkilo,muppet1,alex74,lkjhgfdsazx,olesica,april14,ba25547,souths,jasmi,arashi,smile2,2401pedro,mybabe,alex111,quintain,pimp1,tdeir8b2,makenna,122333444455555,%e2%82%ac,tootsie1,pass111,zaqxsw123,gkfdfybt,cnfnbcnbrf,usermane,iloveyou12,hard69,osasuna,firegod,arvind,babochka,kiss123,cookie123,julie123,kamakazi,dylan2,223355,tanguy,nbhtqa,tigger13,tubby1,makavel,asdflkj,sambo1,mononoke,mickeys,gayguy,win123,green33,wcrfxtvgbjy,bigsmall,1newlife,clove,babyfac,bigwaves,mama1970,shockwav,1friday,bassey,yarddog,codered1,victory7,bigrick,kracker,gulfstre,chris200,sunbanna,bertuzzi,begemotik,kuolema,pondus,destinee,123456789zz,abiodun,flopsy,amadeusptfcor,geronim,yggdrasi,contex,daniel6,suck1,adonis1,moorea,el345612,f22raptor,moviebuf,raunchy,6043dkf,zxcvbnm123456789,eric11,deadmoin,ratiug,nosliw,fannies,danno,888889,blank1,mikey2,gullit,thor99,mamiya,ollieb,thoth,dagger1,websolutionssu,bonker,prive,1346798520,03038,q1234q,mommy2,contax,zhipo,gwendoli,gothic1,1234562000,lovedick,gibso,digital2,space199,b26354,987654123,golive,serious1,pivkoo,better1,824358553,794613258,nata1980,logout,fishpond,buttss,squidly,good4me,redsox19,jhonny,zse45rdx,matrixxx,honey12,ramina,213546879,motzart,fall99,newspape,killit,gimpy,photowiz,olesja,thebus,marco123,147852963,bedbug,147369258,hellbound,gjgjxrf,123987456,lovehurt,five55,hammer01,1234554321a,alina2011,peppino,ang238,questor,112358132,alina1994,alina1998,money77,bobjones,aigerim,cressida,madalena,420smoke,tinchair,raven13,mooser,mauric,lovebu,adidas69,krypton1,1111112,loveline,divin,voshod,michaelm,cocotte,gbkbuhbv,76689295,kellyj,rhonda1,sweetu70,steamforums,geeque,nothere,124c41,quixotic,steam181,1169900,rfcgthcrbq,rfvbkm,sexstuff,1231230,djctvm,rockstar1,fulhamfc,bhecbr,rfntyf,quiksilv,56836803,jedimaster,pangit,gfhjkm777,tocool,1237654,stella12,55378008,19216811,potte,fender12,mortalkombat,ball1,nudegirl,palace22,rattrap,debeers,lickpussy,jimmy6,not4u2c,wert12,bigjuggs,sadomaso,1357924,312mas,laser123,arminia,branford,coastie,mrmojo,19801982,scott11,banaan123,ingres,300zxtt,hooters6,sweeties,19821983,19831985,19833891,sinnfein,welcome4,winner69,killerman,tachyon,tigre1,nymets1,kangol,martinet,sooty1,19921993,789qwe,harsingh,1597535,thecount,phantom3,36985214,lukas123,117711,pakistan1,madmax11,willow01,19932916,fucker12,flhrci,opelagila,theword,ashley24,tigger3,crazyj,rapide,deadfish,allana,31359092,sasha1993,sanders2,discman,zaq!2wsx,boilerma,mickey69,jamesg,babybo,jackson9,orion7,alina2010,indien,breeze1,atease,warspite,bazongaz,1celtic,asguard,mygal,fitzgera,1secret,duke33,cyklone,dipascuc,potapov,1escobar2,c0l0rad0,kki177hk,1little,macondo,victoriya,peter7,red666,winston6,kl?benhavn,muneca,jackme,jennan,happylife,am4h39d8nh,bodybuil,201980,dutchie,biggame,lapo4ka,rauchen,black10,flaquit,water12,31021364,command2,lainth88,mazdamx5,typhon,colin123,rcfhlfc,qwaszx11,g0away,ramir,diesirae,hacked1,cessna1,woodfish,enigma2,pqnr67w5,odgez8j3,grisou,hiheels,5gtgiaxm,2580258,ohotnik,transits,quackers,serjik,makenzie,mdmgatew,bryana,superman12,melly,lokit,thegod,slickone,fun4all,netpass,penhorse,1cooper,nsync,asdasd22,otherside,honeydog,herbie1,chiphi,proghouse,l0nd0n,shagg,select1,frost1996,casper123,countr,magichat,greatzyo,jyothi,3bears,thefly,nikkita,fgjcnjk,nitros,hornys,san123,lightspe,maslova,kimber1,newyork2,spammm,mikejone,pumpk1n,bruiser1,bacons,prelude9,boodie,dragon4,kenneth2,love98,power5,yodude,pumba,thinline,blue30,sexxybj,2dumb2live,matt21,forsale,1carolin,innova,ilikeporn,rbgtkjd,a1s2d3f,wu9942,ruffus,blackboo,qwerty999,draco1,marcelin,hideki,gendalf,trevon,saraha,cartmen,yjhbkmcr,time2go,fanclub,ladder1,chinni,6942987,united99,lindac,quadra,paolit,mainstre,beano002,lincoln7,bellend,anomie,8520456,bangalor,goodstuff,chernov,stepashka,gulla,mike007,frasse,harley03,omnislash,8538622,maryjan,sasha2011,gineok,8807031,hornier,gopinath,princesit,bdr529,godown,bosslady,hakaone,1qwe2,madman1,joshua11,lovegame,bayamon,jedi01,stupid12,sport123,aaa666,tony44,collect1,charliem,chimaira,cx18ka,trrim777,chuckd,thedream,redsox99,goodmorning,delta88,iloveyou11,newlife2,figvam,chicago3,jasonk,12qwer,9875321,lestat1,satcom,conditio,capri50,sayaka,9933162,trunks1,chinga,snooch,alexand1,findus,poekie,cfdbyf,kevind,mike1969,fire13,leftie,bigtuna,chinnu,silence1,celos1,blackdra,alex24,gfgfif,2boobs,happy8,enolagay,sataniv1993,turner1,dylans,peugeo,sasha1994,hoppel,conno,moonshot,santa234,meister1,008800,hanako,tree123,qweras,gfitymrf,reggie31,august29,supert,joshua10,akademia,gbljhfc,zorro123,nathalia,redsox12,hfpdjl,mishmash,nokiae51,nyyankees,tu190022,strongbo,none1,not4u2no,katie2,popart,harlequi,santan,michal1,1therock,screwu,csyekmrf,olemiss1,tyrese,hoople,sunshin1,cucina,starbase,topshelf,fostex,california1,castle1,symantec,pippolo,babare,turntabl,1angela,moo123,ipvteb,gogolf,alex88,cycle1,maxie1,phase2,selhurst,furnitur,samfox,fromvermine,shaq34,gators96,captain2,delonge,tomatoe,bisous,zxcvbnma,glacius,pineapple1,cannelle,ganibal,mko09ijn,paraklast1974,hobbes12,petty43,artema,junior8,mylover,1234567890d,fatal1ty,prostreet,peruan,10020,nadya,caution1,marocas,chanel5,summer08,metal123,111lox,scrapy,thatguy,eddie666,washingto,yannis,minnesota_hp,lucky4,playboy6,naumova,azzurro,patat,dale33,pa55wd,speedster,zemanova,saraht,newto,tony22,qscesz,arkady,1oliver,death6,vkfwx046,antiflag,stangs,jzf7qf2e,brianp,fozzy,cody123,startrek1,yoda123,murciela,trabajo,lvbnhbtdf,canario,fliper,adroit,henry5,goducks,papirus,alskdj,soccer6,88mike,gogetter,tanelorn,donking,marky1,leedsu,badmofo,al1916,wetdog,akmaral,pallet,april24,killer00,nesterova,rugby123,coffee12,browseui,ralliart,paigow,calgary1,armyman,vtldtltd,frodo2,frxtgb,iambigal,benno,jaytee,2hot4you,askar,bigtee,brentwoo,palladin,eddie2,al1916w,horosho,entrada,ilovetits,venture1,dragon19,jayde,chuvak,jamesl,fzr600,brandon8,vjqvbh,snowbal,snatch1,bg6njokf,pudder,karolin,candoo,pfuflrf,satchel1,manteca,khongbiet,critter1,partridg,skyclad,bigdon,ginger69,brave1,anthony4,spinnake,chinadol,passout,cochino,nipples1,15058,lopesk,sixflags,lloo999,parkhead,breakdance,cia123,fidodido,yuitre12,fooey,artem1995,gayathri,medin,nondriversig,l12345,bravo7,happy13,kazuya,camster,alex1998,luckyy,zipcode,dizzle,boating1,opusone,newpassw,movies23,kamikazi,zapato,bart316,cowboys0,corsair1,kingshit,hotdog12,rolyat,h200svrm,qwerty4,boofer,rhtyltkm,chris999,vaz21074,simferopol,pitboss,love3,britania,tanyshka,brause,123qwerty123,abeille,moscow1,ilkaev,manut,process1,inetcfg,dragon05,fortknox,castill,rynner,mrmike,koalas,jeebus,stockpor,longman,juanpabl,caiman,roleplay,jeremi,26058,prodojo,002200,magical1,black5,bvlgari,doogie1,cbhtqa,mahina,a1s2d3f4g5h6,jblpro,usmc01,bismilah,guitar01,april9,santana1,1234aa,monkey14,sorokin,evan1,doohan,animalsex,pfqxtyjr,dimitry,catchme,chello,silverch,glock45,dogleg,litespee,nirvana9,peyton18,alydar,warhamer,iluvme,sig229,minotavr,lobzik,jack23,bushwack,onlin,football123,joshua5,federov,winter2,bigmax,fufnfrhbcnb,hfpldfnhb,1dakota,f56307,chipmonk,4nick8,praline,vbhjh123,king11,22tango,gemini12,street1,77879,doodlebu,homyak,165432,chuluthu,trixi,karlito,salom,reisen,cdtnkzxjr,pookie11,tremendo,shazaam,welcome0,00000ty,peewee51,pizzle,gilead,bydand,sarvar,upskirt,legends1,freeway1,teenfuck,ranger9,darkfire,dfymrf,hunt0802,justme1,buffy1ma,1harry,671fsa75yt,burrfoot,budster,pa437tu,jimmyp,alina2006,malacon,charlize,elway1,free12,summer02,gadina,manara,gomer1,1cassie,sanja,kisulya,money3,pujols,ford50,midiland,turga,orange6,demetriu,freakboy,orosie1,radio123,open12,vfufpby,mustek,chris33,animes,meiling,nthtvjr,jasmine9,gfdkjd,oligarh,marimar,chicago9,.kzirf,bugssgub,samuraix,jackie01,pimpjuic,macdad,cagiva,vernost,willyboy,fynjyjdf,tabby1,privet123,torres9,retype,blueroom,raven11,q12we3,alex1989,bringiton,ridered,kareltje,ow8jtcs8t,ciccia,goniners,countryb,24688642,covingto,24861793,beyblade,vikin,badboyz,wlafiga,walstib,mirand,needajob,chloes,balaton,kbpfdtnf,freyja,bond9007,gabriel12,stormbri,hollage,love4eve,fenomeno,darknite,dragstar,kyle123,milfhunter,ma123123123,samia,ghislain,enrique1,ferien12,xjy6721,natalie2,reglisse,wilson2,wesker,rosebud7,amazon1,robertr,roykeane,xtcnth,mamatata,crazyc,mikie,savanah,blowjob69,jackie2,forty1,1coffee,fhbyjxrf,bubbah,goteam,hackedit,risky1,logoff,h397pnvr,buck13,robert23,bronc,st123st,godflesh,pornog,iamking,cisco69,septiembr,dale38,zhongguo,tibbar,panther9,buffa1,bigjohn1,mypuppy,vehvfycr,april16,shippo,fire1234,green15,q123123,gungadin,steveg,olivier1,chinaski,magnoli,faithy,storm12,toadfrog,paul99,78791,august20,automati,squirtle,cheezy,positano,burbon,nunya,llebpmac,kimmi,turtle2,alan123,prokuror,violin1,durex,pussygal,visionar,trick1,chicken6,29024,plowboy,rfybreks,imbue,sasha13,wagner1,vitalogy,cfymrf,thepro,26028,gorbunov,dvdcom,letmein5,duder,fastfun,pronin,libra1,conner1,harley20,stinker1,20068,20038,amitech,syoung,dugway,18068,welcome7,jimmypag,anastaci,kafka1,pfhfnecnhf,catsss,campus100,shamal,nacho1,fire12,vikings2,brasil1,rangerover,mohamma,peresvet,14058,cocomo,aliona,14038,qwaser,vikes,cbkmdf,skyblue1,ou81234,goodlove,dfkmltvfh,108888,roamer,pinky2,static1,zxcv4321,barmen,rock22,shelby2,morgans,1junior,pasword1,logjam,fifty5,nhfrnjhbcn,chaddy,philli,nemesis2,ingenier,djkrjd,ranger3,aikman8,knothead,daddy69,love007,vsythb,ford350,tiger00,renrut,owen11,energy12,march14,alena123,robert19,carisma,orange22,murphy11,podarok,prozak,kfgeirf,wolf13,lydia1,shazza,parasha,akimov,tobbie,pilote,heather4,baster,leones,gznfxjr,megama,987654321g,bullgod,boxster1,minkey,wombats,vergil,colegiata,lincol,smoothe,pride1,carwash1,latrell,bowling3,fylhtq123,pickwick,eider,bubblebox,bunnies1,loquit,slipper1,nutsac,purina,xtutdfhf,plokiju,1qazxs,uhjpysq,zxcvbasdfg,enjoy1,1pumpkin,phantom7,mama22,swordsma,wonderbr,dogdays,milker,u23456,silvan,dfkthbr,slagelse,yeahman,twothree,boston11,wolf100,dannyg,troll1,fynjy123,ghbcnfd,bftest,ballsdeep,bobbyorr,alphasig,cccdemo,fire123,norwest,claire2,august10,lth1108,problemas,sapito,alex06,1rusty,maccom,goirish1,ohyes,bxdumb,nabila,boobear1,rabbit69,princip,alexsander,travail,chantal1,dogggy,greenpea,diablo69,alex2009,bergen09,petticoa,classe,ceilidh,vlad2011,kamakiri,lucidity,qaz321,chileno,cexfhf,99ranger,mcitra,estoppel,volvos60,carter80,webpass,temp12,touareg,fcgbhby,bubba8,sunitha,200190ru,bitch2,shadow23,iluvit,nicole0,ruben1,nikki69,butttt,shocker1,souschef,lopotok01,kantot,corsano,cfnfyf,riverat,makalu,swapna,all4u9,cdtnkfy,ntktgepbr,ronaldo99,thomasj,bmw540i,chrisw,boomba,open321,z1x2c3v4b5n6m7,gaviota,iceman44,frosya,chris100,chris24,cosette,clearwat,micael,boogyman,pussy9,camus1,chumpy,heccrbq,konoplya,chester8,scooter5,ghjgfufylf,giotto,koolkat,zero000,bonita1,ckflrbq,j1964,mandog,18n28n24a,renob,head1,shergar,ringo123,tanita,sex4free,johnny12,halberd,reddevils,biolog,dillinge,fatb0y,c00per,hyperlit,wallace2,spears1,vitamine,buheirf,sloboda,alkash,mooman,marion1,arsenal7,sunder,nokia5610,edifier,pippone,fyfnjkmtdbx,fujimo,pepsi12,kulikova,bolat,duetto,daimon,maddog01,timoshka,ezmoney,desdemon,chesters,aiden,hugues,patrick5,aikman08,robert4,roenick,nyranger,writer1,36169544,foxmulder,118801,kutter,shashank,jamjar,118811,119955,aspirina,dinkus,1sailor,nalgene,19891959,snarf,allie1,cracky,resipsa,45678912,kemerovo,19841989,netware1,alhimik,19801984,nicole123,19761977,51501984,malaka1,montella,peachfuz,jethro1,cypress1,henkie,holdon,esmith,55443322,1friend,quique,bandicoot,statistika,great123,death13,ucht36,master4,67899876,bobsmith,nikko1,jr1234,hillary1,78978978,rsturbo,lzlzdfcz,bloodlust,shadow00,skagen,bambina,yummies,88887777,91328378,matthew4,itdoes,98256518,102938475,alina2002,123123789,fubared,dannys,123456321,nikifor,suck69,newmexico,scubaman,rhbcnb,fifnfy,puffdadd,159357852,dtheyxbr,theman22,212009164,prohor,shirle,nji90okm,newmedia,goose5,roma1995,letssee,iceman11,aksana,wirenut,pimpdady,1212312121,tamplier,pelican1,domodedovo,1928374655,fiction6,duckpond,ybrecz,thwack,onetwo34,gunsmith,murphydo,fallout1,spectre1,jabberwo,jgjesq,turbo6,bobo12,redryder,blackpus,elena1971,danilova,antoin,bobo1234,bobob,bobbobbo,dean1,222222a,jesusgod,matt23,musical1,darkmage,loppol,werrew,josepha,rebel12,toshka,gadfly,hawkwood,alina12,dnomyar,sexaddict,dangit,cool23,yocrack,archimed,farouk,nhfkzkz,lindalou,111zzzzz,ghjatccjh,wethepeople,m123456789,wowsers,kbkbxrf,bulldog5,m_roesel,sissinit,yamoon6,123ewqasd,dangel,miruvor79,kaytee,falcon7,bandit11,dotnet,dannii,arsenal9,miatamx5,1trouble,strip4me,dogpile,sexyred1,rjdfktdf,google10,shortman,crystal7,awesome123,cowdog,haruka,birthday28,jitter,diabolik,boomer12,dknight,bluewate,hockey123,crm0624,blueboys,willy123,jumpup,google2,cobra777,llabesab,vicelord,hopper1,gerryber,remmah,j10e5d4,qqqqqqw,agusti,fre_ak8yj,nahlik,redrobin,scott3,epson1,dumpy,bundao,aniolek,hola123,jergens,itsasecret,maxsam,bluelight,mountai1,bongwater,1london,pepper14,freeuse,dereks,qweqw,fordgt40,rfhfdfy,raider12,hunnybun,compac,splicer,megamon,tuffgong,gymnast1,butter11,modaddy,wapbbs_1,dandelio,soccer77,ghjnbdjcnjzybt,123xyi2,fishead,x002tp00,whodaman,555aaa,oussama,brunodog,technici,pmtgjnbl,qcxdw8ry,schweden,redsox3,throbber,collecto,japan10,dbm123dm,hellhoun,tech1,deadzone,kahlan,wolf123,dethklok,xzsawq,bigguy1,cybrthc,chandle,buck01,qq123123,secreta,williams1,c32649135,delta12,flash33,123joker,spacejam,polopo,holycrap,daman1,tummybed,financia,nusrat,euroline,magicone,jimkirk,ameritec,daniel26,sevenn,topazz,kingpins,dima1991,macdog,spencer5,oi812,geoffre,music11,baffle,123569,usagi,cassiope,polla,lilcrowe,thecakeisalie,vbhjndjhtw,vthokies,oldmans,sophie01,ghoster,penny2,129834,locutus1,meesha,magik,jerry69,daddysgirl,irondesk,andrey12,jasmine123,vepsrfyn,likesdick,1accord,jetboat,grafix,tomuch,showit,protozoa,mosias98,taburetka,blaze420,esenin,anal69,zhv84kv,puissant,charles0,aishwarya,babylon6,bitter1,lenina,raleigh1,lechat,access01,kamilka,fynjy,sparkplu,daisy3112,choppe,zootsuit,1234567j,rubyrose,gorilla9,nightshade,alternativa,cghfdjxybr,snuggles1,10121v,vova1992,leonardo1,dave2,matthewd,vfhfnbr,1986mets,nobull,bacall,mexican1,juanjo,mafia1,boomer22,soylent,edwards1,jordan10,blackwid,alex86,gemini13,lunar2,dctvcjcfnm,malaki,plugger,eagles11,snafu2,1shelly,cintaku,hannah22,tbird1,maks5843,irish88,homer22,amarok,fktrcfylhjdf,lincoln2,acess,gre69kik,need4speed,hightech,core2duo,blunt1,ublhjgjybrf,dragon33,1autopas,autopas1,wwww1,15935746,daniel20,2500aa,massim,1ggggggg,96ford,hardcor1,cobra5,blackdragon,vovan_lt,orochimaru,hjlbntkb,qwertyuiop12,tallen,paradoks,frozenfish,ghjuhfvvbcn,gerri1,nuggett,camilit,doright,trans1,serena1,catch2,bkmyeh,fireston,afhvfwtdn,purple3,figure8,fuckya,scamp1,laranja,ontheoutside,louis123,yellow7,moonwalk,mercury2,tolkein,raide,amenra,a13579,dranreb,5150vh,harish,tracksta,sexking,ozzmosis,katiee,alomar,matrix19,headroom,jahlove,ringding,apollo8,132546,132613,12345672000,saretta,135798,136666,thomas7,136913,onetwothree,hockey33,calida,nefertit,bitwise,tailhook,boop4,kfgecbr,bujhmbujhm,metal69,thedark,meteoro,felicia1,house12,tinuviel,istina,vaz2105,pimp13,toolfan,nina1,tuesday2,maxmotives,lgkp500,locksley,treech,darling1,kurama,aminka,ramin,redhed,dazzler,jager1,stpiliot,cardman,rfvtym,cheeser,14314314,paramoun,samcat,plumpy,stiffie,vsajyjr,panatha,qqq777,car12345,098poi,asdzx,keegan1,furelise,kalifornia,vbhjckfd,beast123,zcfvfzkexifz,harry5,1birdie,96328i,escola,extra330,henry12,gfhfyjqz,14u2nv,max1234,templar1,1dave,02588520,catrin,pangolin,marhaba,latin1,amorcito,dave22,escape1,advance1,yasuhiro,grepw,meetme,orange01,ernes,erdna,zsergn,nautica1,justinb,soundwav,miasma,greg78,nadine1,sexmad,lovebaby,promo1,excel1,babys,dragonma,camry1,sonnenschein,farooq,wazzkaprivet,magal,katinas,elvis99,redsox24,rooney1,chiefy,peggys,aliev,pilsung,mudhen,dontdoit,dennis12,supercal,energia,ballsout,funone,claudiu,brown2,amoco,dabl1125,philos,gjdtkbntkm,servette,13571113,whizzer,nollie,13467982,upiter,12string,bluejay1,silkie,william4,kosta1,143333,connor12,sustanon,06068,corporat,ssnake,laurita,king10,tahoes,arsenal123,sapato,charless,jeanmarc,levent,algerie,marine21,jettas,winsome,dctvgbplf,1701ab,xxxp455w0rd5,lllllll1,ooooooo1,monalis,koufax32,anastasya,debugger,sarita2,jason69,ufkxjyjr,gjlcnfdf,1jerry,daniel10,balinor,sexkitten,death2,qwertasdfgzxcvb,s9te949f,vegeta1,sysman,maxxam,dimabilan,mooose,ilovetit,june23,illest,doesit,mamou,abby12,longjump,transalp,moderato,littleguy,magritte,dilnoza,hawaiiguy,winbig,nemiroff,kokaine,admira,myemail,dream2,browneyes,destiny7,dragonss,suckme1,asa123,andranik,suckem,fleshbot,dandie,timmys,scitra,timdog,hasbeen,guesss,smellyfe,arachne,deutschl,harley88,birthday27,nobody1,papasmur,home1,jonass,bunia3,epatb1,embalm,vfvekmrf,apacer,12345656,estreet,weihnachtsbaum,mrwhite,admin12,kristie1,kelebek,yoda69,socken,tima123,bayern1,fktrcfylth,tamiya,99strenght,andy01,denis2011,19delta,stokecit,aotearoa,stalker2,nicnac,conrad1,popey,agusta,bowl36,1bigfish,mossyoak,1stunner,getinnow,jessejames,gkfnjy,drako,1nissan,egor123,hotness,1hawaii,zxc123456,cantstop,1peaches,madlen,west1234,jeter1,markis,judit,attack1,artemi,silver69,153246,crazy2,green9,yoshimi,1vette,chief123,jasper2,1sierra,twentyon,drstrang,aspirant,yannic,jenna123,bongtoke,slurpy,1sugar,civic97,rusty21,shineon,james19,anna12345,wonderwoman,1kevin,karol1,kanabis,wert21,fktif6115,evil1,kakaha,54gv768,826248s,tyrone1,1winston,sugar2,falcon01,adelya,mopar440,zasxcd,leecher,kinkysex,mercede1,travka,11234567,rebon,geekboy\".split(\",\"),\n        english_wikipedia:\"the,of,and,in,was,is,for,as,on,with,by,he,at,from,his,an,were,are,which,doc,https,also,or,has,had,first,one,their,its,after,new,who,they,two,her,she,been,other,when,time,during,there,into,school,more,may,years,over,only,year,most,would,world,city,some,where,between,later,three,state,such,then,national,used,made,known,under,many,university,united,while,part,season,team,these,american,than,film,second,born,south,became,states,war,through,being,including,both,before,north,high,however,people,family,early,history,album,area,them,series,against,until,since,district,county,name,work,life,group,music,following,number,company,several,four,called,played,released,career,league,game,government,house,each,based,day,same,won,use,station,club,international,town,located,population,general,college,east,found,age,march,end,september,began,home,public,church,line,june,river,member,system,place,century,band,july,york,january,october,song,august,best,former,british,party,named,held,village,show,local,november,took,service,december,built,another,major,within,along,members,five,single,due,although,small,old,left,final,large,include,building,served,president,received,games,death,february,main,third,set,children,own,order,species,park,law,air,published,road,died,book,men,women,army,often,according,education,central,country,division,english,top,included,development,french,community,among,water,play,side,list,times,near,late,form,original,different,center,power,led,students,german,moved,court,six,land,council,island,u.s.,record,million,research,art,established,award,street,military,television,given,region,support,western,production,non,political,point,cup,period,business,title,started,various,election,using,england,role,produced,become,program,works,field,total,office,class,written,association,radio,union,level,championship,director,few,force,created,department,founded,services,married,though,per,n't,site,open,act,short,society,version,royal,present,northern,worked,professional,full,returned,joined,story,france,european,currently,language,social,california,india,days,design,st.,further,round,australia,wrote,san,project,control,southern,railway,board,popular,continued,free,battle,considered,video,common,position,living,half,playing,recorded,red,post,described,average,records,special,modern,appeared,announced,areas,rock,release,elected,others,example,term,opened,similar,formed,route,census,current,schools,originally,lake,developed,race,himself,forces,addition,information,upon,province,match,event,songs,result,events,win,eastern,track,lead,teams,science,human,construction,minister,germany,awards,available,throughout,training,style,body,museum,australian,health,seven,signed,chief,eventually,appointed,sea,centre,debut,tour,points,media,light,range,character,across,features,families,largest,indian,network,less,performance,players,refer,europe,sold,festival,usually,taken,despite,designed,committee,process,return,official,episode,institute,stage,followed,performed,japanese,personal,thus,arts,space,low,months,includes,china,study,middle,magazine,leading,japan,groups,aircraft,featured,federal,civil,rights,model,coach,canadian,books,remained,eight,type,independent,completed,capital,academy,instead,kingdom,organization,countries,studies,competition,sports,size,above,section,finished,gold,involved,reported,management,systems,industry,directed,market,fourth,movement,technology,bank,ground,campaign,base,lower,sent,rather,added,provided,coast,grand,historic,valley,conference,bridge,winning,approximately,films,chinese,awarded,degree,russian,shows,native,female,replaced,municipality,square,studio,medical,data,african,successful,mid,bay,attack,previous,operations,spanish,theatre,student,republic,beginning,provide,ship,primary,owned,writing,tournament,culture,introduced,texas,related,natural,parts,governor,reached,ireland,units,senior,decided,italian,whose,higher,africa,standard,income,professor,placed,regional,los,buildings,championships,active,novel,energy,generally,interest,via,economic,previously,stated,itself,channel,below,operation,leader,traditional,trade,structure,limited,runs,prior,regular,famous,saint,navy,foreign,listed,artist,catholic,airport,results,parliament,collection,unit,officer,goal,attended,command,staff,commission,lived,location,plays,commercial,places,foundation,significant,older,medal,self,scored,companies,highway,activities,programs,wide,musical,notable,library,numerous,paris,towards,individual,allowed,plant,property,annual,contract,whom,highest,initially,required,earlier,assembly,artists,rural,seat,practice,defeated,ended,soviet,length,spent,manager,press,associated,author,issues,additional,characters,lord,zealand,policy,engine,township,noted,historical,complete,financial,religious,mission,contains,nine,recent,represented,pennsylvania,administration,opening,secretary,lines,report,executive,youth,closed,theory,writer,italy,angeles,appearance,feature,queen,launched,legal,terms,entered,issue,edition,singer,greek,majority,background,source,anti,cultural,complex,changes,recording,stadium,islands,operated,particularly,basketball,month,uses,port,castle,mostly,names,fort,selected,increased,status,earth,subsequently,pacific,cover,variety,certain,goals,remains,upper,congress,becoming,studied,irish,nature,particular,loss,caused,chart,dr.,forced,create,era,retired,material,review,rate,singles,referred,larger,individuals,shown,provides,products,speed,democratic,poland,parish,olympics,cities,themselves,temple,wing,genus,households,serving,cost,wales,stations,passed,supported,view,cases,forms,actor,male,matches,males,stars,tracks,females,administrative,median,effect,biography,train,engineering,camp,offered,chairman,houses,mainly,19th,surface,therefore,nearly,score,ancient,subject,prime,seasons,claimed,experience,specific,jewish,failed,overall,believed,plot,troops,greater,spain,consists,broadcast,heavy,increase,raised,separate,campus,1980s,appears,presented,lies,composed,recently,influence,fifth,nations,creek,references,elections,britain,double,cast,meaning,earned,carried,producer,latter,housing,brothers,attempt,article,response,border,remaining,nearby,direct,ships,value,workers,politician,academic,label,1970s,commander,rule,fellow,residents,authority,editor,transport,dutch,projects,responsible,covered,territory,flight,races,defense,tower,emperor,albums,facilities,daily,stories,assistant,managed,primarily,quality,function,proposed,distribution,conditions,prize,journal,code,vice,newspaper,corps,highly,constructed,mayor,critical,secondary,corporation,rugby,regiment,ohio,appearances,serve,allow,nation,multiple,discovered,directly,scene,levels,growth,elements,acquired,1990s,officers,physical,20th,latin,host,jersey,graduated,arrived,issued,literature,metal,estate,vote,immediately,quickly,asian,competed,extended,produce,urban,1960s,promoted,contemporary,global,formerly,appear,industrial,types,opera,ministry,soldiers,commonly,mass,formation,smaller,typically,drama,shortly,density,senate,effects,iran,polish,prominent,naval,settlement,divided,basis,republican,languages,distance,treatment,continue,product,mile,sources,footballer,format,clubs,leadership,initial,offers,operating,avenue,officially,columbia,grade,squadron,fleet,percent,farm,leaders,agreement,likely,equipment,website,mount,grew,method,transferred,intended,renamed,iron,asia,reserve,capacity,politics,widely,activity,advanced,relations,scottish,dedicated,crew,founder,episodes,lack,amount,build,efforts,concept,follows,ordered,leaves,positive,economy,entertainment,affairs,memorial,ability,illinois,communities,color,text,railroad,scientific,focus,comedy,serves,exchange,environment,cars,direction,organized,firm,description,agency,analysis,purpose,destroyed,reception,planned,revealed,infantry,architecture,growing,featuring,household,candidate,removed,situated,models,knowledge,solo,technical,organizations,assigned,conducted,participated,largely,purchased,register,gained,combined,headquarters,adopted,potential,protection,scale,approach,spread,independence,mountains,titled,geography,applied,safety,mixed,accepted,continues,captured,rail,defeat,principal,recognized,lieutenant,mentioned,semi,owner,joint,liberal,actress,traffic,creation,basic,notes,unique,supreme,declared,simply,plants,sales,massachusetts,designated,parties,jazz,compared,becomes,resources,titles,concert,learning,remain,teaching,versions,content,alongside,revolution,sons,block,premier,impact,champions,districts,generation,estimated,volume,image,sites,account,roles,sport,quarter,providing,zone,yard,scoring,classes,presence,performances,representatives,hosted,split,taught,origin,olympic,claims,critics,facility,occurred,suffered,municipal,damage,defined,resulted,respectively,expanded,platform,draft,opposition,expected,educational,ontario,climate,reports,atlantic,surrounding,performing,reduced,ranked,allows,birth,nominated,younger,newly,kong,positions,theater,philadelphia,heritage,finals,disease,sixth,laws,reviews,constitution,tradition,swedish,theme,fiction,rome,medicine,trains,resulting,existing,deputy,environmental,labour,classical,develop,fans,granted,receive,alternative,begins,nuclear,fame,buried,connected,identified,palace,falls,letters,combat,sciences,effort,villages,inspired,regions,towns,conservative,chosen,animals,labor,attacks,materials,yards,steel,representative,orchestra,peak,entitled,officials,returning,reference,northwest,imperial,convention,examples,ocean,publication,painting,subsequent,frequently,religion,brigade,fully,sides,acts,cemetery,relatively,oldest,suggested,succeeded,achieved,application,programme,cells,votes,promotion,graduate,armed,supply,flying,communist,figures,literary,netherlands,korea,worldwide,citizens,1950s,faculty,draw,stock,seats,occupied,methods,unknown,articles,claim,holds,authorities,audience,sweden,interview,obtained,covers,settled,transfer,marked,allowing,funding,challenge,southeast,unlike,crown,rise,portion,transportation,sector,phase,properties,edge,tropical,standards,institutions,philosophy,legislative,hills,brand,fund,conflict,unable,founding,refused,attempts,metres,permanent,starring,applications,creating,effective,aired,extensive,employed,enemy,expansion,billboard,rank,battalion,multi,vehicle,fought,alliance,category,perform,federation,poetry,bronze,bands,entry,vehicles,bureau,maximum,billion,trees,intelligence,greatest,screen,refers,commissioned,gallery,injury,confirmed,setting,treaty,adult,americans,broadcasting,supporting,pilot,mobile,writers,programming,existence,squad,minnesota,copies,korean,provincial,sets,defence,offices,agricultural,internal,core,northeast,retirement,factory,actions,prevent,communications,ending,weekly,containing,functions,attempted,interior,weight,bowl,recognition,incorporated,increasing,ultimately,documentary,derived,attacked,lyrics,mexican,external,churches,centuries,metropolitan,selling,opposed,personnel,mill,visited,presidential,roads,pieces,norwegian,controlled,18th,rear,influenced,wrestling,weapons,launch,composer,locations,developing,circuit,specifically,studios,shared,canal,wisconsin,publishing,approved,domestic,consisted,determined,comic,establishment,exhibition,southwest,fuel,electronic,cape,converted,educated,melbourne,hits,wins,producing,norway,slightly,occur,surname,identity,represent,constituency,funds,proved,links,structures,athletic,birds,contest,users,poet,institution,display,receiving,rare,contained,guns,motion,piano,temperature,publications,passenger,contributed,toward,cathedral,inhabitants,architect,exist,athletics,muslim,courses,abandoned,signal,successfully,disambiguation,tennessee,dynasty,heavily,maryland,jews,representing,budget,weather,missouri,introduction,faced,pair,chapel,reform,height,vietnam,occurs,motor,cambridge,lands,focused,sought,patients,shape,invasion,chemical,importance,communication,selection,regarding,homes,voivodeship,maintained,borough,failure,aged,passing,agriculture,oregon,teachers,flow,philippines,trail,seventh,portuguese,resistance,reaching,negative,fashion,scheduled,downtown,universities,trained,skills,scenes,views,notably,typical,incident,candidates,engines,decades,composition,commune,chain,inc.,austria,sale,values,employees,chamber,regarded,winners,registered,task,investment,colonial,swiss,user,entirely,flag,stores,closely,entrance,laid,journalist,coal,equal,causes,turkish,quebec,techniques,promote,junction,easily,dates,kentucky,singapore,residence,violence,advance,survey,humans,expressed,passes,streets,distinguished,qualified,folk,establish,egypt,artillery,visual,improved,actual,finishing,medium,protein,switzerland,productions,operate,poverty,neighborhood,organisation,consisting,consecutive,sections,partnership,extension,reaction,factor,costs,bodies,device,ethnic,racial,flat,objects,chapter,improve,musicians,courts,controversy,membership,merged,wars,expedition,interests,arab,comics,gain,describes,mining,bachelor,crisis,joining,decade,1930s,distributed,habitat,routes,arena,cycle,divisions,briefly,vocals,directors,degrees,object,recordings,installed,adjacent,demand,voted,causing,businesses,ruled,grounds,starred,drawn,opposite,stands,formal,operates,persons,counties,compete,wave,israeli,ncaa,resigned,brief,greece,combination,demographics,historian,contain,commonwealth,musician,collected,argued,louisiana,session,cabinet,parliamentary,electoral,loan,profit,regularly,conservation,islamic,purchase,17th,charts,residential,earliest,designs,paintings,survived,moth,items,goods,grey,anniversary,criticism,images,discovery,observed,underground,progress,additionally,participate,thousands,reduce,elementary,owners,stating,iraq,resolution,capture,tank,rooms,hollywood,finance,queensland,reign,maintain,iowa,landing,broad,outstanding,circle,path,manufacturing,assistance,sequence,gmina,crossing,leads,universal,shaped,kings,attached,medieval,ages,metro,colony,affected,scholars,oklahoma,coastal,soundtrack,painted,attend,definition,meanwhile,purposes,trophy,require,marketing,popularity,cable,mathematics,mississippi,represents,scheme,appeal,distinct,factors,acid,subjects,roughly,terminal,economics,senator,diocese,prix,contrast,argentina,czech,wings,relief,stages,duties,16th,novels,accused,whilst,equivalent,charged,measure,documents,couples,request,danish,defensive,guide,devices,statistics,credited,tries,passengers,allied,frame,puerto,peninsula,concluded,instruments,wounded,differences,associate,forests,afterwards,replace,requirements,aviation,solution,offensive,ownership,inner,legislation,hungarian,contributions,actors,translated,denmark,steam,depending,aspects,assumed,injured,severe,admitted,determine,shore,technique,arrival,measures,translation,debuted,delivered,returns,rejected,separated,visitors,damaged,storage,accompanied,markets,industries,losses,gulf,charter,strategy,corporate,socialist,somewhat,significantly,physics,mounted,satellite,experienced,constant,relative,pattern,restored,belgium,connecticut,partners,harvard,retained,networks,protected,mode,artistic,parallel,collaboration,debate,involving,journey,linked,salt,authors,components,context,occupation,requires,occasionally,policies,tamil,ottoman,revolutionary,hungary,poem,versus,gardens,amongst,audio,makeup,frequency,meters,orthodox,continuing,suggests,legislature,coalition,guitarist,eighth,classification,practices,soil,tokyo,instance,limit,coverage,considerable,ranking,colleges,cavalry,centers,daughters,twin,equipped,broadway,narrow,hosts,rates,domain,boundary,arranged,12th,whereas,brazilian,forming,rating,strategic,competitions,trading,covering,baltimore,commissioner,infrastructure,origins,replacement,praised,disc,collections,expression,ukraine,driven,edited,austrian,solar,ensure,premiered,successor,wooden,operational,hispanic,concerns,rapid,prisoners,childhood,meets,influential,tunnel,employment,tribe,qualifying,adapted,temporary,celebrated,appearing,increasingly,depression,adults,cinema,entering,laboratory,script,flows,romania,accounts,fictional,pittsburgh,achieve,monastery,franchise,formally,tools,newspapers,revival,sponsored,processes,vienna,springs,missions,classified,13th,annually,branches,lakes,gender,manner,advertising,normally,maintenance,adding,characteristics,integrated,decline,modified,strongly,critic,victims,malaysia,arkansas,nazi,restoration,powered,monument,hundreds,depth,15th,controversial,admiral,criticized,brick,honorary,initiative,output,visiting,birmingham,progressive,existed,carbon,1920s,credits,colour,rising,hence,defeating,superior,filmed,listing,column,surrounded,orleans,principles,territories,struck,participation,indonesia,movements,index,commerce,conduct,constitutional,spiritual,ambassador,vocal,completion,edinburgh,residing,tourism,finland,bears,medals,resident,themes,visible,indigenous,involvement,basin,electrical,ukrainian,concerts,boats,styles,processing,rival,drawing,vessels,experimental,declined,touring,supporters,compilation,coaching,cited,dated,roots,string,explained,transit,traditionally,poems,minimum,representation,14th,releases,effectively,architectural,triple,indicated,greatly,elevation,clinical,printed,10th,proposal,peaked,producers,romanized,rapidly,stream,innings,meetings,counter,householder,honour,lasted,agencies,document,exists,surviving,experiences,honors,landscape,hurricane,harbor,panel,competing,profile,vessel,farmers,lists,revenue,exception,customers,11th,participants,wildlife,utah,bible,gradually,preserved,replacing,symphony,begun,longest,siege,provinces,mechanical,genre,transmission,agents,executed,videos,benefits,funded,rated,instrumental,ninth,similarly,dominated,destruction,passage,technologies,thereafter,outer,facing,affiliated,opportunities,instrument,governments,scholar,evolution,channels,shares,sessions,widespread,occasions,engineers,scientists,signing,battery,competitive,alleged,eliminated,supplies,judges,hampshire,regime,portrayed,penalty,taiwan,denied,submarine,scholarship,substantial,transition,victorian,http,nevertheless,filed,supports,continental,tribes,ratio,doubles,useful,honours,blocks,principle,retail,departure,ranks,patrol,yorkshire,vancouver,inter,extent,afghanistan,strip,railways,component,organ,symbol,categories,encouraged,abroad,civilian,periods,traveled,writes,struggle,immediate,recommended,adaptation,egyptian,graduating,assault,drums,nomination,historically,voting,allies,detailed,achievement,percentage,arabic,assist,frequent,toured,apply,and/or,intersection,maine,touchdown,throne,produces,contribution,emerged,obtain,archbishop,seek,researchers,remainder,populations,clan,finnish,overseas,fifa,licensed,chemistry,festivals,mediterranean,injuries,animated,seeking,publisher,volumes,limits,venue,jerusalem,generated,trials,islam,youngest,ruling,glasgow,germans,songwriter,persian,municipalities,donated,viewed,belgian,cooperation,posted,tech,dual,volunteer,settlers,commanded,claiming,approval,delhi,usage,terminus,partly,electricity,locally,editions,premiere,absence,belief,traditions,statue,indicate,manor,stable,attributed,possession,managing,viewers,chile,overview,seed,regulations,essential,minority,cargo,segment,endemic,forum,deaths,monthly,playoffs,erected,practical,machines,suburb,relation,mrs.,descent,indoor,continuous,characterized,solutions,caribbean,rebuilt,serbian,summary,contested,psychology,pitch,attending,muhammad,tenure,drivers,diameter,assets,venture,punk,airlines,concentration,athletes,volunteers,pages,mines,influences,sculpture,protest,ferry,behalf,drafted,apparent,furthermore,ranging,romanian,democracy,lanka,significance,linear,d.c.,certified,voters,recovered,tours,demolished,boundaries,assisted,identify,grades,elsewhere,mechanism,1940s,reportedly,aimed,conversion,suspended,photography,departments,beijing,locomotives,publicly,dispute,magazines,resort,conventional,platforms,internationally,capita,settlements,dramatic,derby,establishing,involves,statistical,implementation,immigrants,exposed,diverse,layer,vast,ceased,connections,belonged,interstate,uefa,organised,abuse,deployed,cattle,partially,filming,mainstream,reduction,automatic,rarely,subsidiary,decides,merger,comprehensive,displayed,amendment,guinea,exclusively,manhattan,concerning,commons,radical,serbia,baptist,buses,initiated,portrait,harbour,choir,citizen,sole,unsuccessful,manufactured,enforcement,connecting,increases,patterns,sacred,muslims,clothing,hindu,unincorporated,sentenced,advisory,tanks,campaigns,fled,repeated,remote,rebellion,implemented,texts,fitted,tribute,writings,sufficient,ministers,21st,devoted,jurisdiction,coaches,interpretation,pole,businessman,peru,sporting,prices,cuba,relocated,opponent,arrangement,elite,manufacturer,responded,suitable,distinction,calendar,dominant,tourist,earning,prefecture,ties,preparation,anglo,pursue,worship,archaeological,chancellor,bangladesh,scores,traded,lowest,horror,outdoor,biology,commented,specialized,loop,arriving,farming,housed,historians,'the,patent,pupils,christianity,opponents,athens,northwestern,maps,promoting,reveals,flights,exclusive,lions,norfolk,hebrew,extensively,eldest,shops,acquisition,virtual,renowned,margin,ongoing,essentially,iranian,alternate,sailed,reporting,conclusion,originated,temperatures,exposure,secured,landed,rifle,framework,identical,martial,focuses,topics,ballet,fighters,belonging,wealthy,negotiations,evolved,bases,oriented,acres,democrat,heights,restricted,vary,graduation,aftermath,chess,illness,participating,vertical,collective,immigration,demonstrated,leaf,completing,organic,missile,leeds,eligible,grammar,confederate,improvement,congressional,wealth,cincinnati,spaces,indicates,corresponding,reaches,repair,isolated,taxes,congregation,ratings,leagues,diplomatic,submitted,winds,awareness,photographs,maritime,nigeria,accessible,animation,restaurants,philippine,inaugural,dismissed,armenian,illustrated,reservoir,speakers,programmes,resource,genetic,interviews,camps,regulation,computers,preferred,travelled,comparison,distinctive,recreation,requested,southeastern,dependent,brisbane,breeding,playoff,expand,bonus,gauge,departed,qualification,inspiration,shipping,slaves,variations,shield,theories,munich,recognised,emphasis,favour,variable,seeds,undergraduate,territorial,intellectual,qualify,mini,banned,pointed,democrats,assessment,judicial,examination,attempting,objective,partial,characteristic,hardware,pradesh,execution,ottawa,metre,drum,exhibitions,withdrew,attendance,phrase,journalism,logo,measured,error,christians,trio,protestant,theology,respective,atmosphere,buddhist,substitute,curriculum,fundamental,outbreak,rabbi,intermediate,designation,globe,liberation,simultaneously,diseases,experiments,locomotive,difficulties,mainland,nepal,relegated,contributing,database,developments,veteran,carries,ranges,instruction,lodge,protests,obama,newcastle,experiment,physician,describing,challenges,corruption,delaware,adventures,ensemble,succession,renaissance,tenth,altitude,receives,approached,crosses,syria,croatia,warsaw,professionals,improvements,worn,airline,compound,permitted,preservation,reducing,printing,scientist,activist,comprises,sized,societies,enters,ruler,gospel,earthquake,extend,autonomous,croatian,serial,decorated,relevant,ideal,grows,grass,tier,towers,wider,welfare,columns,alumni,descendants,interface,reserves,banking,colonies,manufacturers,magnetic,closure,pitched,vocalist,preserve,enrolled,cancelled,equation,2000s,nickname,bulgaria,heroes,exile,mathematical,demands,input,structural,tube,stem,approaches,argentine,axis,manuscript,inherited,depicted,targets,visits,veterans,regard,removal,efficiency,organisations,concepts,lebanon,manga,petersburg,rally,supplied,amounts,yale,tournaments,broadcasts,signals,pilots,azerbaijan,architects,enzyme,literacy,declaration,placing,batting,incumbent,bulgarian,consistent,poll,defended,landmark,southwestern,raid,resignation,travels,casualties,prestigious,namely,aims,recipient,warfare,readers,collapse,coached,controls,volleyball,coup,lesser,verse,pairs,exhibited,proteins,molecular,abilities,integration,consist,aspect,advocate,administered,governing,hospitals,commenced,coins,lords,variation,resumed,canton,artificial,elevated,palm,difficulty,civic,efficient,northeastern,inducted,radiation,affiliate,boards,stakes,byzantine,consumption,freight,interaction,oblast,numbered,seminary,contracts,extinct,predecessor,bearing,cultures,functional,neighboring,revised,cylinder,grants,narrative,reforms,athlete,tales,reflect,presidency,compositions,specialist,cricketer,founders,sequel,widow,disbanded,associations,backed,thereby,pitcher,commanding,boulevard,singers,crops,militia,reviewed,centres,waves,consequently,fortress,tributary,portions,bombing,excellence,nest,payment,mars,plaza,unity,victories,scotia,farms,nominations,variant,attacking,suspension,installation,graphics,estates,comments,acoustic,destination,venues,surrender,retreat,libraries,quarterback,customs,berkeley,collaborated,gathered,syndrome,dialogue,recruited,shanghai,neighbouring,psychological,saudi,moderate,exhibit,innovation,depot,binding,brunswick,situations,certificate,actively,shakespeare,editorial,presentation,ports,relay,nationalist,methodist,archives,experts,maintains,collegiate,bishops,maintaining,temporarily,embassy,essex,wellington,connects,reformed,bengal,recalled,inches,doctrine,deemed,legendary,reconstruction,statements,palestinian,meter,achievements,riders,interchange,spots,auto,accurate,chorus,dissolved,missionary,thai,operators,e.g.,generations,failing,delayed,cork,nashville,perceived,venezuela,cult,emerging,tomb,abolished,documented,gaining,canyon,episcopal,stored,assists,compiled,kerala,kilometers,mosque,grammy,theorem,unions,segments,glacier,arrives,theatrical,circulation,conferences,chapters,displays,circular,authored,conductor,fewer,dimensional,nationwide,liga,yugoslavia,peer,vietnamese,fellowship,armies,regardless,relating,dynamic,politicians,mixture,serie,somerset,imprisoned,posts,beliefs,beta,layout,independently,electronics,provisions,fastest,logic,headquartered,creates,challenged,beaten,appeals,plains,protocol,graphic,accommodate,iraqi,midfielder,span,commentary,freestyle,reflected,palestine,lighting,burial,virtually,backing,prague,tribal,heir,identification,prototype,criteria,dame,arch,tissue,footage,extending,procedures,predominantly,updated,rhythm,preliminary,cafe,disorder,prevented,suburbs,discontinued,retiring,oral,followers,extends,massacre,journalists,conquest,larvae,pronounced,behaviour,diversity,sustained,addressed,geographic,restrictions,voiced,milwaukee,dialect,quoted,grid,nationally,nearest,roster,twentieth,separation,indies,manages,citing,intervention,guidance,severely,migration,artwork,focusing,rivals,trustees,varied,enabled,committees,centered,skating,slavery,cardinals,forcing,tasks,auckland,youtube,argues,colored,advisor,mumbai,requiring,theological,registration,refugees,nineteenth,survivors,runners,colleagues,priests,contribute,variants,workshop,concentrated,creator,lectures,temples,exploration,requirement,interactive,navigation,companion,perth,allegedly,releasing,citizenship,observation,stationed,ph.d.,sheep,breed,discovers,encourage,kilometres,journals,performers,isle,saskatchewan,hybrid,hotels,lancashire,dubbed,airfield,anchor,suburban,theoretical,sussex,anglican,stockholm,permanently,upcoming,privately,receiver,optical,highways,congo,colours,aggregate,authorized,repeatedly,varies,fluid,innovative,transformed,praise,convoy,demanded,discography,attraction,export,audiences,ordained,enlisted,occasional,westminster,syrian,heavyweight,bosnia,consultant,eventual,improving,aires,wickets,epic,reactions,scandal,i.e.,discrimination,buenos,patron,investors,conjunction,testament,construct,encountered,celebrity,expanding,georgian,brands,retain,underwent,algorithm,foods,provision,orbit,transformation,associates,tactical,compact,varieties,stability,refuge,gathering,moreover,manila,configuration,gameplay,discipline,entity,comprising,composers,skill,monitoring,ruins,museums,sustainable,aerial,altered,codes,voyage,friedrich,conflicts,storyline,travelling,conducting,merit,indicating,referendum,currency,encounter,particles,automobile,workshops,acclaimed,inhabited,doctorate,cuban,phenomenon,dome,enrollment,tobacco,governance,trend,equally,manufacture,hydrogen,grande,compensation,download,pianist,grain,shifted,neutral,evaluation,define,cycling,seized,array,relatives,motors,firms,varying,automatically,restore,nicknamed,findings,governed,investigate,manitoba,administrator,vital,integral,indonesian,confusion,publishers,enable,geographical,inland,naming,civilians,reconnaissance,indianapolis,lecturer,deer,tourists,exterior,rhode,bassist,symbols,scope,ammunition,yuan,poets,punjab,nursing,cent,developers,estimates,presbyterian,nasa,holdings,generate,renewed,computing,cyprus,arabia,duration,compounds,gastropod,permit,valid,touchdowns,facade,interactions,mineral,practiced,allegations,consequence,goalkeeper,baronet,copyright,uprising,carved,targeted,competitors,mentions,sanctuary,fees,pursued,tampa,chronicle,capabilities,specified,specimens,toll,accounting,limestone,staged,upgraded,philosophical,streams,guild,revolt,rainfall,supporter,princeton,terrain,hometown,probability,assembled,paulo,surrey,voltage,developer,destroyer,floors,lineup,curve,prevention,potentially,onwards,trips,imposed,hosting,striking,strict,admission,apartments,solely,utility,proceeded,observations,euro,incidents,vinyl,profession,haven,distant,expelled,rivalry,runway,torpedo,zones,shrine,dimensions,investigations,lithuania,idaho,pursuit,copenhagen,considerably,locality,wireless,decrease,genes,thermal,deposits,hindi,habitats,withdrawn,biblical,monuments,casting,plateau,thesis,managers,flooding,assassination,acknowledged,interim,inscription,guided,pastor,finale,insects,transported,activists,marshal,intensity,airing,cardiff,proposals,lifestyle,prey,herald,capitol,aboriginal,measuring,lasting,interpreted,occurring,desired,drawings,healthcare,panels,elimination,oslo,ghana,blog,sabha,intent,superintendent,governors,bankruptcy,p.m.,equity,disk,layers,slovenia,prussia,quartet,mechanics,graduates,politically,monks,screenplay,nato,absorbed,topped,petition,bold,morocco,exhibits,canterbury,publish,rankings,crater,dominican,enhanced,planes,lutheran,governmental,joins,collecting,brussels,unified,streak,strategies,flagship,surfaces,oval,archive,etymology,imprisonment,instructor,noting,remix,opposing,servant,rotation,width,trans,maker,synthesis,excess,tactics,snail,ltd.,lighthouse,sequences,cornwall,plantation,mythology,performs,foundations,populated,horizontal,speedway,activated,performer,diving,conceived,edmonton,subtropical,environments,prompted,semifinals,caps,bulk,treasury,recreational,telegraph,continent,portraits,relegation,catholics,graph,velocity,rulers,endangered,secular,observer,learns,inquiry,idol,dictionary,certification,estimate,cluster,armenia,observatory,revived,nadu,consumers,hypothesis,manuscripts,contents,arguments,editing,trails,arctic,essays,belfast,acquire,promotional,undertaken,corridor,proceedings,antarctic,millennium,labels,delegates,vegetation,acclaim,directing,substance,outcome,diploma,philosopher,malta,albanian,vicinity,degc,legends,regiments,consent,terrorist,scattered,presidents,gravity,orientation,deployment,duchy,refuses,estonia,crowned,separately,renovation,rises,wilderness,objectives,agreements,empress,slopes,inclusion,equality,decree,ballot,criticised,rochester,recurring,struggled,disabled,henri,poles,prussian,convert,bacteria,poorly,sudan,geological,wyoming,consistently,minimal,withdrawal,interviewed,proximity,repairs,initiatives,pakistani,republicans,propaganda,viii,abstract,commercially,availability,mechanisms,naples,discussions,underlying,lens,proclaimed,advised,spelling,auxiliary,attract,lithuanian,editors,o'brien,accordance,measurement,novelist,ussr,formats,councils,contestants,indie,facebook,parishes,barrier,battalions,sponsor,consulting,terrorism,implement,uganda,crucial,unclear,notion,distinguish,collector,attractions,filipino,ecology,investments,capability,renovated,iceland,albania,accredited,scouts,armor,sculptor,cognitive,errors,gaming,condemned,successive,consolidated,baroque,entries,regulatory,reserved,treasurer,variables,arose,technological,rounded,provider,rhine,agrees,accuracy,genera,decreased,frankfurt,ecuador,edges,particle,rendered,calculated,careers,faction,rifles,americas,gaelic,portsmouth,resides,merchants,fiscal,premises,coin,draws,presenter,acceptance,ceremonies,pollution,consensus,membrane,brigadier,nonetheless,genres,supervision,predicted,magnitude,finite,differ,ancestry,vale,delegation,removing,proceeds,placement,emigrated,siblings,molecules,payments,considers,demonstration,proportion,newer,valve,achieving,confederation,continuously,luxury,notre,introducing,coordinates,charitable,squadrons,disorders,geometry,winnipeg,ulster,loans,longtime,receptor,preceding,belgrade,mandate,wrestler,neighbourhood,factories,buddhism,imported,sectors,protagonist,steep,elaborate,prohibited,artifacts,prizes,pupil,cooperative,sovereign,subspecies,carriers,allmusic,nationals,settings,autobiography,neighborhoods,analog,facilitate,voluntary,jointly,newfoundland,organizing,raids,exercises,nobel,machinery,baltic,crop,granite,dense,websites,mandatory,seeks,surrendered,anthology,comedian,bombs,slot,synopsis,critically,arcade,marking,equations,halls,indo,inaugurated,embarked,speeds,clause,invention,premiership,likewise,presenting,demonstrate,designers,organize,examined,km/h,bavaria,troop,referee,detection,zurich,prairie,rapper,wingspan,eurovision,luxembourg,slovakia,inception,disputed,mammals,entrepreneur,makers,evangelical,yield,clergy,trademark,defunct,allocated,depicting,volcanic,batted,conquered,sculptures,providers,reflects,armoured,locals,walt,herzegovina,contracted,entities,sponsorship,prominence,flowing,ethiopia,marketed,corporations,withdraw,carnegie,induced,investigated,portfolio,flowering,opinions,viewing,classroom,donations,bounded,perception,leicester,fruits,charleston,academics,statute,complaints,smallest,deceased,petroleum,resolved,commanders,algebra,southampton,modes,cultivation,transmitter,spelled,obtaining,sizes,acre,pageant,bats,abbreviated,correspondence,barracks,feast,tackles,raja,derives,geology,disputes,translations,counted,constantinople,seating,macedonia,preventing,accommodation,homeland,explored,invaded,provisional,transform,sphere,unsuccessfully,missionaries,conservatives,highlights,traces,organisms,openly,dancers,fossils,absent,monarchy,combining,lanes,stint,dynamics,chains,missiles,screening,module,tribune,generating,miners,nottingham,seoul,unofficial,owing,linking,rehabilitation,citation,louisville,mollusk,depicts,differential,zimbabwe,kosovo,recommendations,responses,pottery,scorer,aided,exceptions,dialects,telecommunications,defines,elderly,lunar,coupled,flown,25th,espn,formula_1,bordered,fragments,guidelines,gymnasium,valued,complexity,papal,presumably,maternal,challenging,reunited,advancing,comprised,uncertain,favorable,twelfth,correspondent,nobility,livestock,expressway,chilean,tide,researcher,emissions,profits,lengths,accompanying,witnessed,itunes,drainage,slope,reinforced,feminist,sanskrit,develops,physicians,outlets,isbn,coordinator,averaged,termed,occupy,diagnosed,yearly,humanitarian,prospect,spacecraft,stems,enacted,linux,ancestors,karnataka,constitute,immigrant,thriller,ecclesiastical,generals,celebrations,enhance,heating,advocated,evident,advances,bombardment,watershed,shuttle,wicket,twitter,adds,branded,teaches,schemes,pension,advocacy,conservatory,cairo,varsity,freshwater,providence,seemingly,shells,cuisine,specially,peaks,intensive,publishes,trilogy,skilled,nacional,unemployment,destinations,parameters,verses,trafficking,determination,infinite,savings,alignment,linguistic,countryside,dissolution,measurements,advantages,licence,subfamily,highlands,modest,regent,algeria,crest,teachings,knockout,brewery,combine,conventions,descended,chassis,primitive,fiji,explicitly,cumberland,uruguay,laboratories,bypass,elect,informal,preceded,holocaust,tackle,minneapolis,quantity,securities,console,doctoral,religions,commissioners,expertise,unveiled,precise,diplomat,standings,infant,disciplines,sicily,endorsed,systematic,charted,armored,mild,lateral,townships,hurling,prolific,invested,wartime,compatible,galleries,moist,battlefield,decoration,convent,tubes,terrestrial,nominee,requests,delegate,leased,dubai,polar,applying,addresses,munster,sings,commercials,teamed,dances,eleventh,midland,cedar,flee,sandstone,snails,inspection,divide,asset,themed,comparable,paramount,dairy,archaeology,intact,institutes,rectangular,instances,phases,reflecting,substantially,applies,vacant,lacked,copa,coloured,encounters,sponsors,encoded,possess,revenues,ucla,chaired,a.m.,enabling,playwright,stoke,sociology,tibetan,frames,motto,financing,illustrations,gibraltar,chateau,bolivia,transmitted,enclosed,persuaded,urged,folded,suffolk,regulated,bros.,submarines,myth,oriental,malaysian,effectiveness,narrowly,acute,sunk,replied,utilized,tasmania,consortium,quantities,gains,parkway,enlarged,sided,employers,adequate,accordingly,assumption,ballad,mascot,distances,peaking,saxony,projected,affiliation,limitations,metals,guatemala,scots,theaters,kindergarten,verb,employer,differs,discharge,controller,seasonal,marching,guru,campuses,avoided,vatican,maori,excessive,chartered,modifications,caves,monetary,sacramento,mixing,institutional,celebrities,irrigation,shapes,broadcaster,anthem,attributes,demolition,offshore,specification,surveys,yugoslav,contributor,auditorium,lebanese,capturing,airports,classrooms,chennai,paths,tendency,determining,lacking,upgrade,sailors,detected,kingdoms,sovereignty,freely,decorative,momentum,scholarly,georges,gandhi,speculation,transactions,undertook,interact,similarities,cove,teammate,constituted,painters,tends,madagascar,partnerships,afghan,personalities,attained,rebounds,masses,synagogue,reopened,asylum,embedded,imaging,catalogue,defenders,taxonomy,fiber,afterward,appealed,communists,lisbon,rica,judaism,adviser,batsman,ecological,commands,lgbt,cooling,accessed,wards,shiva,employs,thirds,scenic,worcester,tallest,contestant,humanities,economist,textile,constituencies,motorway,tram,percussion,cloth,leisure,1880s,baden,flags,resemble,riots,coined,sitcom,composite,implies,daytime,tanzania,penalties,optional,competitor,excluded,steering,reversed,autonomy,reviewer,breakthrough,professionally,damages,pomeranian,deputies,valleys,ventures,highlighted,electorate,mapping,shortened,executives,tertiary,specimen,launching,bibliography,sank,pursuing,binary,descendant,marched,natives,ideology,turks,adolf,archdiocese,tribunal,exceptional,nigerian,preference,fails,loading,comeback,vacuum,favored,alter,remnants,consecrated,spectators,trends,patriarch,feedback,paved,sentences,councillor,astronomy,advocates,broader,commentator,commissions,identifying,revealing,theatres,incomplete,enables,constituent,reformation,tract,haiti,atmospheric,screened,explosive,czechoslovakia,acids,symbolic,subdivision,liberals,incorporate,challenger,erie,filmmaker,laps,kazakhstan,organizational,evolutionary,chemicals,dedication,riverside,fauna,moths,maharashtra,annexed,gen.,resembles,underwater,garnered,timeline,remake,suited,educator,hectares,automotive,feared,latvia,finalist,narrator,portable,airways,plaque,designing,villagers,licensing,flank,statues,struggles,deutsche,migrated,cellular,jacksonville,wimbledon,defining,highlight,preparatory,planets,cologne,employ,frequencies,detachment,readily,libya,resign,halt,helicopters,reef,landmarks,collaborative,irregular,retaining,helsinki,folklore,weakened,viscount,interred,professors,memorable,mega,repertoire,rowing,dorsal,albeit,progressed,operative,coronation,liner,telugu,domains,philharmonic,detect,bengali,synthetic,tensions,atlas,dramatically,paralympics,xbox,shire,kiev,lengthy,sued,notorious,seas,screenwriter,transfers,aquatic,pioneers,unesco,radius,abundant,tunnels,syndicated,inventor,accreditation,janeiro,exeter,ceremonial,omaha,cadet,predators,resided,prose,slavic,precision,abbot,deity,engaging,cambodia,estonian,compliance,demonstrations,protesters,reactor,commodore,successes,chronicles,mare,extant,listings,minerals,tonnes,parody,cultivated,traders,pioneering,supplement,slovak,preparations,collision,partnered,vocational,atoms,malayalam,welcomed,documentation,curved,functioning,presently,formations,incorporates,nazis,botanical,nucleus,ethical,greeks,metric,automated,whereby,stance,europeans,duet,disability,purchasing,email,telescope,displaced,sodium,comparative,processor,inning,precipitation,aesthetic,import,coordination,feud,alternatively,mobility,tibet,regained,succeeding,hierarchy,apostolic,catalog,reproduction,inscriptions,vicar,clusters,posthumously,rican,loosely,additions,photographic,nowadays,selective,derivative,keyboards,guides,collectively,affecting,combines,operas,networking,decisive,terminated,continuity,finishes,ancestor,consul,heated,simulation,leipzig,incorporating,georgetown,formula_2,circa,forestry,portrayal,councillors,advancement,complained,forewings,confined,transaction,definitions,reduces,televised,1890s,rapids,phenomena,belarus,alps,landscapes,quarterly,specifications,commemorate,continuation,isolation,antenna,downstream,patents,ensuing,tended,saga,lifelong,columnist,labeled,gymnastics,papua,anticipated,demise,encompasses,madras,antarctica,interval,icon,rams,midlands,ingredients,priory,strengthen,rouge,explicit,gaza,aging,securing,anthropology,listeners,adaptations,underway,vista,malay,fortified,lightweight,violations,concerto,financed,jesuit,observers,trustee,descriptions,nordic,resistant,opted,accepts,prohibition,andhra,inflation,negro,wholly,imagery,spur,instructed,gloucester,cycles,middlesex,destroyers,statewide,evacuated,hyderabad,peasants,mice,shipyard,coordinate,pitching,colombian,exploring,numbering,compression,countess,hiatus,exceed,raced,archipelago,traits,soils,o'connor,vowel,android,facto,angola,amino,holders,logistics,circuits,emergence,kuwait,partition,emeritus,outcomes,submission,promotes,barack,negotiated,loaned,stripped,50th,excavations,treatments,fierce,participant,exports,decommissioned,cameo,remarked,residences,fuselage,mound,undergo,quarry,node,midwest,specializing,occupies,etc.,showcase,molecule,offs,modules,salon,exposition,revision,peers,positioned,hunters,competes,algorithms,reside,zagreb,calcium,uranium,silicon,airs,counterpart,outlet,collectors,sufficiently,canberra,inmates,anatomy,ensuring,curves,aviv,firearms,basque,volcano,thrust,sheikh,extensions,installations,aluminum,darker,sacked,emphasized,aligned,asserted,pseudonym,spanning,decorations,eighteenth,orbital,spatial,subdivided,notation,decay,macedonian,amended,declining,cyclist,feat,unusually,commuter,birthplace,latitude,activation,overhead,30th,finalists,whites,encyclopedia,tenor,qatar,survives,complement,concentrations,uncommon,astronomical,bangalore,pius,genome,memoir,recruit,prosecutor,modification,paired,container,basilica,arlington,displacement,germanic,mongolia,proportional,debates,matched,calcutta,rows,tehran,aerospace,prevalent,arise,lowland,24th,spokesman,supervised,advertisements,clash,tunes,revelation,wanderers,quarterfinals,fisheries,steadily,memoirs,pastoral,renewable,confluence,acquiring,strips,slogan,upstream,scouting,analyst,practitioners,turbine,strengthened,heavier,prehistoric,plural,excluding,isles,persecution,turin,rotating,villain,hemisphere,unaware,arabs,corpus,relied,singular,unanimous,schooling,passive,angles,dominance,instituted,aria,outskirts,balanced,beginnings,financially,structured,parachute,viewer,attitudes,subjected,escapes,derbyshire,erosion,addressing,styled,declaring,originating,colts,adjusted,stained,occurrence,fortifications,baghdad,nitrogen,localities,yemen,galway,debris,lodz,victorious,pharmaceutical,substances,unnamed,dwelling,atop,developmental,activism,voter,refugee,forested,relates,overlooking,genocide,kannada,insufficient,oversaw,partisan,dioxide,recipients,factions,mortality,capped,expeditions,receptors,reorganized,prominently,atom,flooded,flute,orchestral,scripts,mathematician,airplay,detached,rebuilding,dwarf,brotherhood,salvation,expressions,arabian,cameroon,poetic,recruiting,bundesliga,inserted,scrapped,disabilities,evacuation,pasha,undefeated,crafts,rituals,aluminium,norm,pools,submerged,occupying,pathway,exams,prosperity,wrestlers,promotions,basal,permits,nationalism,trim,merge,gazette,tributaries,transcription,caste,porto,emerge,modeled,adjoining,counterparts,paraguay,redevelopment,renewal,unreleased,equilibrium,similarity,minorities,soviets,comprise,nodes,tasked,unrelated,expired,johan,precursor,examinations,electrons,socialism,exiled,admiralty,floods,wigan,nonprofit,lacks,brigades,screens,repaired,hanover,fascist,labs,osaka,delays,judged,statutory,colt,col.,offspring,solving,bred,assisting,retains,somalia,grouped,corresponds,tunisia,chaplain,eminent,chord,22nd,spans,viral,innovations,possessions,mikhail,kolkata,icelandic,implications,introduces,racism,workforce,alto,compulsory,admits,censorship,onset,reluctant,inferior,iconic,progression,liability,turnout,satellites,behavioral,coordinated,exploitation,posterior,averaging,fringe,krakow,mountainous,greenwich,para,plantations,reinforcements,offerings,famed,intervals,constraints,individually,nutrition,1870s,taxation,threshold,tomatoes,fungi,contractor,ethiopian,apprentice,diabetes,wool,gujarat,honduras,norse,bucharest,23rd,arguably,accompany,prone,teammates,perennial,vacancy,polytechnic,deficit,okinawa,functionality,reminiscent,tolerance,transferring,myanmar,concludes,neighbours,hydraulic,economically,slower,plots,charities,synod,investor,catholicism,identifies,bronx,interpretations,adverse,judiciary,hereditary,nominal,sensor,symmetry,cubic,triangular,tenants,divisional,outreach,representations,passages,undergoing,cartridge,testified,exceeded,impacts,limiting,railroads,defeats,regain,rendering,humid,retreated,reliability,governorate,antwerp,infamous,implied,packaging,lahore,trades,billed,extinction,ecole,rejoined,recognizes,projection,qualifications,stripes,forts,socially,lexington,accurately,sexuality,westward,wikipedia,pilgrimage,abolition,choral,stuttgart,nests,expressing,strikeouts,assessed,monasteries,reconstructed,humorous,marxist,fertile,consort,urdu,patronage,peruvian,devised,lyric,baba,nassau,communism,extraction,popularly,markings,inability,litigation,accounted,processed,emirates,tempo,cadets,eponymous,contests,broadly,oxide,courtyard,frigate,directory,apex,outline,regency,chiefly,patrols,secretariat,cliffs,residency,privy,armament,australians,dorset,geometric,genetics,scholarships,fundraising,flats,demographic,multimedia,captained,documentaries,updates,canvas,blockade,guerrilla,songwriting,administrators,intake,drought,implementing,fraction,cannes,refusal,inscribed,meditation,announcing,exported,ballots,formula_3,curator,basel,arches,flour,subordinate,confrontation,gravel,simplified,berkshire,patriotic,tuition,employing,servers,castile,posting,combinations,discharged,miniature,mutations,constellation,incarnation,ideals,necessity,granting,ancestral,crowds,pioneered,mormon,methodology,rama,indirect,complexes,bavarian,patrons,uttar,skeleton,bollywood,flemish,viable,bloc,breeds,triggered,sustainability,tailed,referenced,comply,takeover,latvian,homestead,platoon,communal,nationality,excavated,targeting,sundays,posed,physicist,turret,endowment,marginal,dispatched,commentators,renovations,attachment,collaborations,ridges,barriers,obligations,shareholders,prof.,defenses,presided,rite,backgrounds,arbitrary,affordable,gloucestershire,thirteenth,inlet,miniseries,possesses,detained,pressures,subscription,realism,solidarity,proto,postgraduate,noun,burmese,abundance,homage,reasoning,anterior,robust,fencing,shifting,vowels,garde,profitable,loch,anchored,coastline,samoa,terminology,prostitution,magistrate,venezuelan,speculated,regulate,fixture,colonists,digit,induction,manned,expeditionary,computational,centennial,principally,vein,preserving,engineered,numerical,cancellation,conferred,continually,borne,seeded,advertisement,unanimously,treaties,infections,ions,sensors,lowered,amphibious,lava,fourteenth,bahrain,niagara,nicaragua,squares,congregations,26th,periodic,proprietary,1860s,contributors,seller,overs,emission,procession,presumed,illustrator,zinc,gases,tens,applicable,stretches,reproductive,sixteenth,apparatus,accomplishments,canoe,guam,oppose,recruitment,accumulated,limerick,namibia,staging,remixes,ordnance,uncertainty,pedestrian,temperate,treason,deposited,registry,cerambycidae,attracting,lankan,reprinted,shipbuilding,homosexuality,neurons,eliminating,1900s,resume,ministries,beneficial,blackpool,surplus,northampton,licenses,constructing,announcer,standardized,alternatives,taipei,inadequate,failures,yields,medalist,titular,obsolete,torah,burlington,predecessors,lublin,retailers,castles,depiction,issuing,gubernatorial,propulsion,tiles,damascus,discs,alternating,pomerania,peasant,tavern,redesignated,27th,illustration,focal,mans,codex,specialists,productivity,antiquity,controversies,promoter,pits,companions,behaviors,lyrical,prestige,creativity,swansea,dramas,approximate,feudal,tissues,crude,campaigned,unprecedented,chancel,amendments,surroundings,allegiance,exchanges,align,firmly,optimal,commenting,reigning,landings,obscure,1850s,contemporaries,paternal,devi,endurance,communes,incorporation,denominations,exchanged,routing,resorts,amnesty,slender,explores,suppression,heats,pronunciation,centred,coupe,stirling,freelance,treatise,linguistics,laos,informs,discovering,pillars,encourages,halted,robots,definitive,maturity,tuberculosis,venetian,silesian,unchanged,originates,mali,lincolnshire,quotes,seniors,premise,contingent,distribute,danube,gorge,logging,dams,curling,seventeenth,specializes,wetlands,deities,assess,thickness,rigid,culminated,utilities,substrate,insignia,nile,assam,shri,currents,suffrage,canadians,mortar,asteroid,bosnian,discoveries,enzymes,sanctioned,replica,hymn,investigators,tidal,dominate,derivatives,converting,leinster,verbs,honoured,criticisms,dismissal,discrete,masculine,reorganization,unlimited,wurttemberg,sacks,allocation,bahn,jurisdictions,participates,lagoon,famine,communion,culminating,surveyed,shortage,cables,intersects,cassette,foremost,adopting,solicitor,outright,bihar,reissued,farmland,dissertation,turnpike,baton,photographed,christchurch,kyoto,finances,rails,histories,linebacker,kilkenny,accelerated,dispersed,handicap,absorption,rancho,ceramic,captivity,cites,font,weighed,mater,utilize,bravery,extract,validity,slovenian,seminars,discourse,ranged,duel,ironically,warships,sega,temporal,surpassed,prolonged,recruits,northumberland,greenland,contributes,patented,eligibility,unification,discusses,reply,translates,beirut,relies,torque,northward,reviewers,monastic,accession,neural,tramway,heirs,sikh,subscribers,amenities,taliban,audit,rotterdam,wagons,kurdish,favoured,combustion,meanings,persia,browser,diagnostic,niger,formula_4,denomination,dividing,parameter,branding,badminton,leningrad,sparked,hurricanes,beetles,propeller,mozambique,refined,diagram,exhaust,vacated,readings,markers,reconciliation,determines,concurrent,imprint,primera,organism,demonstrating,filmmakers,vanderbilt,affiliates,traction,evaluated,defendants,megachile,investigative,zambia,assassinated,rewarded,probable,staffordshire,foreigners,directorate,nominees,consolidation,commandant,reddish,differing,unrest,drilling,bohemia,resembling,instrumentation,considerations,haute,promptly,variously,dwellings,clans,tablet,enforced,cockpit,semifinal,hussein,prisons,ceylon,emblem,monumental,phrases,correspond,crossover,outlined,characterised,acceleration,caucus,crusade,protested,composing,rajasthan,habsburg,rhythmic,interception,inherent,cooled,ponds,spokesperson,gradual,consultation,kuala,globally,suppressed,builders,avengers,suffix,integer,enforce,fibers,unionist,proclamation,uncovered,infrared,adapt,eisenhower,utilizing,captains,stretched,observing,assumes,prevents,analyses,saxophone,caucasus,notices,villains,dartmouth,mongol,hostilities,stretching,veterinary,lenses,texture,prompting,overthrow,excavation,islanders,masovian,battleship,biographer,replay,degradation,departing,luftwaffe,fleeing,oversight,immigrated,serbs,fishermen,strengthening,respiratory,italians,denotes,radial,escorted,motif,wiltshire,expresses,accessories,reverted,establishments,inequality,protocols,charting,famously,satirical,entirety,trench,friction,atletico,sampling,subset,weekday,upheld,sharply,correlation,incorrect,mughal,travelers,hasan,earnings,offset,evaluate,specialised,recognizing,flexibility,nagar,postseason,algebraic,capitalism,crystals,melodies,polynomial,racecourse,defences,austro,wembley,attracts,anarchist,resurrection,reviewing,decreasing,prefix,ratified,mutation,displaying,separating,restoring,assemblies,ordinance,priesthood,cruisers,appoint,moldova,imports,directive,epidemic,militant,senegal,signaling,restriction,critique,retrospective,nationalists,undertake,sioux,canals,algerian,redesigned,philanthropist,depict,conceptual,turbines,intellectuals,eastward,applicants,contractors,vendors,undergone,namesake,ensured,tones,substituted,hindwings,arrests,tombs,transitional,principality,reelection,taiwanese,cavity,manifesto,broadcasters,spawned,thoroughbred,identities,generators,proposes,hydroelectric,johannesburg,cortex,scandinavian,killings,aggression,boycott,catalyst,physiology,fifteenth,waterfront,chromosome,organist,costly,calculation,cemeteries,flourished,recognise,juniors,merging,disciples,ashore,workplace,enlightenment,diminished,debated,hailed,podium,educate,mandated,distributor,litre,electromagnetic,flotilla,estuary,peterborough,staircase,selections,melodic,confronts,wholesale,integrate,intercepted,catalonia,unite,immense,palatinate,switches,earthquakes,occupational,successors,praising,concluding,faculties,firstly,overhaul,empirical,metacritic,inauguration,evergreen,laden,winged,philosophers,amalgamated,geoff,centimeters,napoleonic,upright,planting,brewing,fined,sensory,migrants,wherein,inactive,headmaster,warwickshire,siberia,terminals,denounced,academia,divinity,bilateral,clive,omitted,peerage,relics,apartheid,syndicate,fearing,fixtures,desirable,dismantled,ethnicity,valves,biodiversity,aquarium,ideological,visibility,creators,analyzed,tenant,balkan,postwar,supplier,smithsonian,risen,morphology,digits,bohemian,wilmington,vishnu,demonstrates,aforementioned,biographical,mapped,khorasan,phosphate,presentations,ecosystem,processors,calculations,mosaic,clashes,penned,recalls,coding,angular,lattice,macau,accountability,extracted,pollen,therapeutic,overlap,violinist,deposed,candidacy,infants,covenant,bacterial,restructuring,dungeons,ordination,conducts,builds,invasive,customary,concurrently,relocation,cello,statutes,borneo,entrepreneurs,sanctions,packet,rockefeller,piedmont,comparisons,waterfall,receptions,glacial,surge,signatures,alterations,advertised,enduring,somali,botanist,100th,canonical,motifs,longitude,circulated,alloy,indirectly,margins,preserves,internally,besieged,shale,peripheral,drained,baseman,reassigned,tobago,soloist,socio,grazing,contexts,roofs,portraying,ottomans,shrewsbury,noteworthy,lamps,supplying,beams,qualifier,portray,greenhouse,stronghold,hitter,rites,cretaceous,urging,derive,nautical,aiming,fortunes,verde,donors,reliance,exceeding,exclusion,exercised,simultaneous,continents,guiding,pillar,gradient,poznan,eruption,clinics,moroccan,indicator,trams,piers,parallels,fragment,teatro,potassium,satire,compressed,businessmen,influx,seine,perspectives,shelters,decreases,mounting,formula_5,confederacy,equestrian,expulsion,mayors,liberia,resisted,affinity,shrub,unexpectedly,stimulus,amtrak,deported,perpendicular,statesman,wharf,storylines,romanesque,weights,surfaced,interceptions,dhaka,crambidae,orchestras,rwanda,conclude,constitutes,subsidiaries,admissions,prospective,shear,bilingual,campaigning,presiding,domination,commemorative,trailing,confiscated,petrol,acquisitions,polymer,onlyinclude,chloride,elevations,resolutions,hurdles,pledged,likelihood,objected,erect,encoding,databases,aristotle,hindus,marshes,bowled,ministerial,grange,acronym,annexation,squads,ambient,pilgrims,botany,sofla,astronomer,planetary,descending,bestowed,ceramics,diplomacy,metabolism,colonization,potomac,africans,engraved,recycling,commitments,resonance,disciplinary,jamaican,narrated,spectral,tipperary,waterford,stationary,arbitration,transparency,threatens,crossroads,slalom,oversee,centenary,incidence,economies,livery,moisture,newsletter,autobiographical,bhutan,propelled,dependence,moderately,adobe,barrels,subdivisions,outlook,labelled,stratford,arising,diaspora,barony,automobiles,ornamental,slated,norms,primetime,generalized,analysts,vectors,libyan,yielded,certificates,rooted,vernacular,belarusian,marketplace,prediction,fairfax,malawi,viruses,wooded,demos,mauritius,prosperous,coincided,liberties,huddersfield,ascent,warnings,hinduism,glucose,pulitzer,unused,filters,illegitimate,acquitted,protestants,canopy,staple,psychedelic,winding,abbas,pathways,cheltenham,lagos,niche,invaders,proponents,barred,conversely,doncaster,recession,embraced,rematch,concession,emigration,upgrades,bowls,tablets,remixed,loops,kensington,shootout,monarchs,organizers,harmful,punjabi,broadband,exempt,neolithic,profiles,portrays,parma,cyrillic,quasi,attested,regimental,revive,torpedoes,heidelberg,rhythms,spherical,denote,hymns,icons,theologian,qaeda,exceptionally,reinstated,comune,playhouse,lobbying,grossing,viceroy,delivers,visually,armistice,utrecht,syllable,vertices,analogous,annex,refurbished,entrants,knighted,disciple,rhetoric,detailing,inactivated,ballads,algae,intensified,favourable,sanitation,receivers,pornography,commemorated,cannons,entrusted,manifold,photographers,pueblo,textiles,steamer,myths,marquess,onward,liturgical,romney,uzbekistan,consistency,denoted,hertfordshire,convex,hearings,sulfur,universidad,podcast,selecting,emperors,arises,justices,1840s,mongolian,exploited,termination,digitally,infectious,sedan,symmetric,penal,illustrate,formulation,attribute,problematic,modular,inverse,berth,searches,rutgers,leicestershire,enthusiasts,lockheed,upwards,transverse,accolades,backward,archaeologists,crusaders,nuremberg,defects,ferries,vogue,containers,openings,transporting,separates,lumpur,purchases,attain,wichita,topology,woodlands,deleted,periodically,syntax,overturned,musicals,corp.,strasbourg,instability,nationale,prevailing,cache,marathi,versailles,unmarried,grains,straits,antagonist,segregation,assistants,d'etat,contention,dictatorship,unpopular,motorcycles,criterion,analytical,salzburg,militants,hanged,worcestershire,emphasize,paralympic,erupted,convinces,offences,oxidation,nouns,populace,atari,spanned,hazardous,educators,playable,births,baha'i,preseason,generates,invites,meteorological,handbook,foothills,enclosure,diffusion,mirza,convergence,geelong,coefficient,connector,formula_6,cylindrical,disasters,pleaded,knoxville,contamination,compose,libertarian,arrondissement,franciscan,intercontinental,susceptible,initiation,malaria,unbeaten,consonants,waived,saloon,popularized,estadio,pseudo,interdisciplinary,transports,transformers,carriages,bombings,revolves,ceded,collaborator,celestial,exemption,colchester,maltese,oceanic,ligue,crete,shareholder,routed,depictions,ridden,advisors,calculate,lending,guangzhou,simplicity,newscast,scheduling,snout,eliot,undertaking,armenians,nottinghamshire,whitish,consulted,deficiency,salle,cinemas,superseded,rigorous,kerman,convened,landowners,modernization,evenings,pitches,conditional,scandinavia,differed,formulated,cyclists,swami,guyana,dunes,electrified,appalachian,abdomen,scenarios,prototypes,sindh,consonant,adaptive,boroughs,wolverhampton,modelling,cylinders,amounted,minimize,ambassadors,lenin,settler,coincide,approximation,grouping,murals,bullying,registers,rumours,engagements,energetic,vertex,annals,bordering,geologic,yellowish,runoff,converts,allegheny,facilitated,saturdays,colliery,monitored,rainforest,interfaces,geographically,impaired,prevalence,joachim,paperback,slowed,shankar,distinguishing,seminal,categorized,authorised,auspices,bandwidth,asserts,rebranded,balkans,supplemented,seldom,weaving,capsule,apostles,populous,monmouth,payload,symphonic,densely,shoreline,managerial,masonry,antioch,averages,textbooks,royalist,coliseum,tandem,brewers,diocesan,posthumous,walled,incorrectly,distributions,ensued,reasonably,graffiti,propagation,automation,harmonic,augmented,middleweight,limbs,elongated,landfall,comparatively,literal,grossed,koppen,wavelength,1830s,cerebral,boasts,congestion,physiological,practitioner,coasts,cartoonist,undisclosed,frontal,launches,burgundy,qualifiers,imposing,stade,flanked,assyrian,raided,multiplayer,montane,chesapeake,pathology,drains,vineyards,intercollegiate,semiconductor,grassland,convey,citations,predominant,rejects,benefited,yahoo,graphs,busiest,encompassing,hamlets,explorers,suppress,minors,graphical,calculus,sediment,intends,diverted,mainline,unopposed,cottages,initiate,alumnus,towed,autism,forums,darlington,modernist,oxfordshire,lectured,capitalist,suppliers,panchayat,actresses,foundry,southbound,commodity,wesleyan,divides,palestinians,luton,caretaker,nobleman,mutiny,organizer,preferences,nomenclature,splits,unwilling,offenders,timor,relying,halftime,semitic,arithmetic,milestone,jesuits,arctiidae,retrieved,consuming,contender,edged,plagued,inclusive,transforming,khmer,federally,insurgents,distributing,amherst,rendition,prosecutors,viaduct,disqualified,kabul,liturgy,prevailed,reelected,instructors,swimmers,aperture,churchyard,interventions,totals,darts,metropolis,fuels,fluent,northbound,correctional,inflicted,barrister,realms,culturally,aristocratic,collaborating,emphasizes,choreographer,inputs,ensembles,humboldt,practised,endowed,strains,infringement,archaeologist,congregational,magna,relativity,efficiently,proliferation,mixtape,abruptly,regeneration,commissioning,yukon,archaic,reluctantly,retailer,northamptonshire,universally,crossings,boilers,nickelodeon,revue,abbreviation,retaliation,scripture,routinely,medicinal,benedictine,kenyan,retention,deteriorated,glaciers,apprenticeship,coupling,researched,topography,entrances,anaheim,pivotal,compensate,arched,modify,reinforce,dusseldorf,journeys,motorsport,conceded,sumatra,spaniards,quantitative,loire,cinematography,discarded,botswana,morale,engined,zionist,philanthropy,sainte,fatalities,cypriot,motorsports,indicators,pricing,institut,bethlehem,implicated,gravitational,differentiation,rotor,thriving,precedent,ambiguous,concessions,forecast,conserved,fremantle,asphalt,landslide,middlesbrough,formula_7,humidity,overseeing,chronological,diaries,multinational,crimean,turnover,improvised,youths,declares,tasmanian,canadiens,fumble,refinery,weekdays,unconstitutional,upward,guardians,brownish,imminent,hamas,endorsement,naturalist,martyrs,caledonia,chords,yeshiva,reptiles,severity,mitsubishi,fairs,installment,substitution,repertory,keyboardist,interpreter,silesia,noticeable,rhineland,transmit,inconsistent,booklet,academies,epithet,pertaining,progressively,aquatics,scrutiny,prefect,toxicity,rugged,consume,o'donnell,evolve,uniquely,cabaret,mediated,landowner,transgender,palazzo,compilations,albuquerque,induce,sinai,remastered,efficacy,underside,analogue,specify,possessing,advocating,compatibility,liberated,greenville,mecklenburg,header,memorials,sewage,rhodesia,1800s,salaries,atoll,coordinating,partisans,repealed,amidst,subjective,optimization,nectar,evolving,exploits,madhya,styling,accumulation,raion,postage,responds,buccaneers,frontman,brunei,choreography,coated,kinetic,sampled,inflammatory,complementary,eclectic,norte,vijay,a.k.a,mainz,casualty,connectivity,laureate,franchises,yiddish,reputed,unpublished,economical,periodicals,vertically,bicycles,brethren,capacities,unitary,archeological,tehsil,domesday,wehrmacht,justification,angered,mysore,fielded,abuses,nutrients,ambitions,taluk,battleships,symbolism,superiority,neglect,attendees,commentaries,collaborators,predictions,yorker,breeders,investing,libretto,informally,coefficients,memorandum,pounder,collingwood,tightly,envisioned,arbor,mistakenly,captures,nesting,conflicting,enhancing,streetcar,manufactures,buckinghamshire,rewards,commemorating,stony,expenditure,tornadoes,semantic,relocate,weimar,iberian,sighted,intending,ensign,beverages,expectation,differentiate,centro,utilizes,saxophonist,catchment,transylvania,ecosystems,shortest,sediments,socialists,ineffective,kapoor,formidable,heroine,guantanamo,prepares,scattering,pamphlet,verified,elector,barons,totaling,shrubs,pyrenees,amalgamation,mutually,longitudinal,comte,negatively,masonic,envoy,sexes,akbar,mythical,tonga,bishopric,assessments,malaya,warns,interiors,reefs,reflections,neutrality,musically,nomadic,waterways,provence,collaborate,scaled,adulthood,emerges,euros,optics,incentives,overland,periodical,liege,awarding,realization,slang,affirmed,schooner,hokkaido,czechoslovak,protectorate,undrafted,disagreed,commencement,electors,spruce,swindon,fueled,equatorial,inventions,suites,slovene,backdrop,adjunct,energies,remnant,inhabit,alliances,simulcast,reactors,mosques,travellers,outfielder,plumage,migratory,benin,experimented,fibre,projecting,drafting,laude,evidenced,northernmost,indicted,directional,replication,croydon,comedies,jailed,organizes,devotees,reservoirs,turrets,originate,economists,songwriters,junta,trenches,mounds,proportions,comedic,apostle,azerbaijani,farmhouse,resembled,disrupted,playback,mixes,diagonal,relevance,govern,programmer,gdansk,maize,soundtracks,tendencies,mastered,impacted,believers,kilometre,intervene,chairperson,aerodrome,sails,subsidies,ensures,aesthetics,congresses,ratios,sardinia,southernmost,functioned,controllers,downward,randomly,distortion,regents,palatine,disruption,spirituality,vidhan,tracts,compiler,ventilation,anchorage,symposium,assert,pistols,excelled,avenues,convoys,moniker,constructions,proponent,phased,spines,organising,schleswig,policing,campeonato,mined,hourly,croix,lucrative,authenticity,haitian,stimulation,burkina,espionage,midfield,manually,staffed,awakening,metabolic,biographies,entrepreneurship,conspicuous,guangdong,preface,subgroup,mythological,adjutant,feminism,vilnius,oversees,honourable,tripoli,stylized,kinase,societe,notoriety,altitudes,configurations,outward,transmissions,announces,auditor,ethanol,clube,nanjing,mecca,haifa,blogs,postmaster,paramilitary,depart,positioning,potent,recognizable,spire,brackets,remembrance,overlapping,turkic,articulated,scientology,operatic,deploy,readiness,biotechnology,restrict,cinematographer,inverted,synonymous,administratively,westphalia,commodities,replaces,downloads,centralized,munitions,preached,sichuan,fashionable,implementations,matrices,hiv/aids,loyalist,luzon,celebrates,hazards,heiress,mercenaries,synonym,creole,ljubljana,technician,auditioned,technicians,viewpoint,wetland,mongols,princely,sharif,coating,dynasties,southward,doubling,formula_8,mayoral,harvesting,conjecture,goaltender,oceania,spokane,welterweight,bracket,gatherings,weighted,newscasts,mussolini,affiliations,disadvantage,vibrant,spheres,sultanate,distributors,disliked,establishes,marches,drastically,yielding,jewellery,yokohama,vascular,airlift,canons,subcommittee,repression,strengths,graded,outspoken,fused,pembroke,filmography,redundant,fatigue,repeal,threads,reissue,pennant,edible,vapor,corrections,stimuli,commemoration,dictator,anand,secession,amassed,orchards,pontifical,experimentation,greeted,bangor,forwards,decomposition,quran,trolley,chesterfield,traverse,sermons,burials,skier,climbs,consultants,petitioned,reproduce,parted,illuminated,kurdistan,reigned,occupants,packaged,geometridae,woven,regulating,protagonists,crafted,affluent,clergyman,consoles,migrant,supremacy,attackers,caliph,defect,convection,rallies,huron,resin,segunda,quota,warship,overseen,criticizing,shrines,glamorgan,lowering,beaux,hampered,invasions,conductors,collects,bluegrass,surrounds,substrates,perpetual,chronology,pulmonary,executions,crimea,compiling,noctuidae,battled,tumors,minsk,novgorod,serviced,yeast,computation,swamps,theodor,baronetcy,salford,uruguayan,shortages,odisha,siberian,novelty,cinematic,invitational,decks,dowager,oppression,bandits,appellate,state-of-the-art,clade,palaces,signalling,galaxies,industrialist,tensor,learnt,incurred,magistrates,binds,orbits,ciudad,willingness,peninsular,basins,biomedical,shafts,marlborough,bournemouth,withstand,fitzroy,dunedin,variance,steamship,integrating,muscular,fines,akron,bulbophyllum,malmo,disclosed,cornerstone,runways,medicines,twenty20,gettysburg,progresses,frigates,bodied,transformations,transforms,helens,modelled,versatile,regulator,pursuits,legitimacy,amplifier,scriptures,voyages,examines,presenters,octagonal,poultry,formula_9,anatolia,computed,migrate,directorial,hybrids,localized,preferring,guggenheim,persisted,grassroots,inflammation,fishery,otago,vigorous,professions,instructional,inexpensive,insurgency,legislators,sequels,surnames,agrarian,stainless,nairobi,minas,forerunner,aristocracy,transitions,sicilian,showcased,doses,hiroshima,summarized,gearbox,emancipation,limitation,nuclei,seismic,abandonment,dominating,appropriations,occupations,electrification,hilly,contracting,exaggerated,entertainer,kazan,oricon,cartridges,characterization,parcel,maharaja,exceeds,aspiring,obituary,flattened,contrasted,narration,replies,oblique,outpost,fronts,arranger,talmud,keynes,doctrines,endured,confesses,fortification,supervisors,kilometer,academie,jammu,bathurst,piracy,prostitutes,navarre,cumulative,cruises,lifeboat,twinned,radicals,interacting,expenditures,wexford,libre,futsal,curated,clockwise,colloquially,procurement,immaculate,lyricist,enhancement,porcelain,alzheimer,highlighting,judah,disagreements,storytelling,sheltered,wroclaw,vaudeville,contrasts,neoclassical,compares,contrasting,deciduous,francaise,descriptive,cyclic,reactive,antiquities,meiji,repeats,creditors,forcibly,newmarket,picturesque,impending,uneven,bison,raceway,solvent,ecumenical,optic,professorship,harvested,waterway,banjo,pharaoh,geologist,scanning,dissent,recycled,unmanned,retreating,gospels,aqueduct,branched,tallinn,groundbreaking,syllables,hangar,designations,procedural,craters,cabins,encryption,anthropologist,montevideo,outgoing,inverness,chattanooga,fascism,calais,chapels,groundwater,downfall,misleading,robotic,tortricidae,pixel,handel,prohibit,crewe,renaming,reprised,kickoff,leftist,spaced,integers,causeway,pines,authorship,organise,ptolemy,accessibility,virtues,lesions,iroquois,qur'an,atheist,synthesized,biennial,confederates,dietary,skaters,stresses,tariff,koreans,intercity,republics,quintet,baroness,naive,amplitude,insistence,tbilisi,residues,grammatical,diversified,egyptians,accompaniment,vibration,repository,mandal,topological,distinctions,coherent,invariant,batters,nuevo,internationals,implements,follower,bahia,widened,independents,cantonese,totaled,guadalajara,wolverines,befriended,muzzle,surveying,hungarians,medici,deportation,rayon,approx,recounts,attends,clerical,hellenic,furnished,alleging,soluble,systemic,gallantry,bolshevik,intervened,hostel,gunpowder,specialising,stimulate,leiden,removes,thematic,floral,bafta,printers,conglomerate,eroded,analytic,successively,lehigh,thessaloniki,kilda,clauses,ascended,nehru,scripted,tokugawa,competence,diplomats,exclude,consecration,freedoms,assaults,revisions,blacksmith,textual,sparse,concacaf,slain,uploaded,enraged,whaling,guise,stadiums,debuting,dormitory,cardiovascular,yunnan,dioceses,consultancy,notions,lordship,archdeacon,collided,medial,airfields,garment,wrestled,adriatic,reversal,refueling,verification,jakob,horseshoe,intricate,veracruz,sarawak,syndication,synthesizer,anthologies,stature,feasibility,guillaume,narratives,publicized,antrim,intermittent,constituents,grimsby,filmmaking,doping,unlawful,nominally,transmitting,documenting,seater,internationale,ejected,steamboat,alsace,boise,ineligible,geared,vassal,mustered,ville,inline,pairing,eurasian,kyrgyzstan,barnsley,reprise,stereotypes,rushes,conform,firefighters,deportivo,revolutionaries,rabbis,concurrency,charters,sustaining,aspirations,algiers,chichester,falkland,morphological,systematically,volcanoes,designate,artworks,reclaimed,jurist,anglia,resurrected,chaotic,feasible,circulating,simulated,environmentally,confinement,adventist,harrisburg,laborers,ostensibly,universiade,pensions,influenza,bratislava,octave,refurbishment,gothenburg,putin,barangay,annapolis,breaststroke,illustrates,distorted,choreographed,promo,emphasizing,stakeholders,descends,exhibiting,intrinsic,invertebrates,evenly,roundabout,salts,formula_10,strata,inhibition,branching,stylistic,rumored,realises,mitochondrial,commuted,adherents,logos,bloomberg,telenovela,guineas,charcoal,engages,winery,reflective,siena,cambridgeshire,ventral,flashback,installing,engraving,grasses,traveller,rotated,proprietor,nationalities,precedence,sourced,trainers,cambodian,reductions,depleted,saharan,classifications,biochemistry,plaintiffs,arboretum,humanist,fictitious,aleppo,climates,bazaar,his/her,homogeneous,multiplication,moines,indexed,linguist,skeletal,foliage,societal,differentiated,informing,mammal,infancy,archival,cafes,malls,graeme,musee,schizophrenia,fargo,pronouns,derivation,descend,ascending,terminating,deviation,recaptured,confessions,weakening,tajikistan,bahadur,pasture,b/hip,donegal,supervising,sikhs,thinkers,euclidean,reinforcement,friars,portage,fuscous,lucknow,synchronized,assertion,choirs,privatization,corrosion,multitude,skyscraper,royalties,ligament,usable,spores,directs,clashed,stockport,fronted,dependency,contiguous,biologist,backstroke,powerhouse,frescoes,phylogenetic,welding,kildare,gabon,conveyed,augsburg,severn,continuum,sahib,lille,injuring,passeriformesfamily,succeeds,translating,unitarian,startup,turbulent,outlying,philanthropic,stanislaw,idols,claremont,conical,haryana,armagh,blended,implicit,conditioned,modulation,rochdale,labourers,coinage,shortstop,potsdam,gears,obesity,bestseller,advisers,bouts,comedians,jozef,lausanne,taxonomic,correlated,columbian,marne,indications,psychologists,libel,edict,beaufort,disadvantages,renal,finalized,racehorse,unconventional,disturbances,falsely,zoology,adorned,redesign,executing,narrower,commended,appliances,stalls,resurgence,saskatoon,miscellaneous,permitting,epoch,formula_11,cumbria,forefront,vedic,eastenders,disposed,supermarkets,rower,inhibitor,magnesium,colourful,yusuf,harrow,formulas,centrally,balancing,ionic,nocturnal,consolidate,ornate,raiding,charismatic,accelerate,nominate,residual,dhabi,commemorates,attribution,uninhabited,mindanao,atrocities,genealogical,romani,applicant,enactment,abstraction,trough,pulpit,minuscule,misconduct,grenades,timely,supplements,messaging,curvature,ceasefire,telangana,susquehanna,braking,redistribution,shreveport,neighbourhoods,gregorian,widowed,khuzestan,empowerment,scholastic,evangelist,peptide,topical,theorist,historia,thence,sudanese,museo,jurisprudence,masurian,frankish,headlined,recounted,netball,petitions,tolerant,hectare,truncated,southend,methane,captives,reigns,massif,subunit,acidic,weightlifting,footballers,sabah,britannia,tunisian,segregated,sawmill,withdrawing,unpaid,weaponry,somme,perceptions,unicode,alcoholism,durban,wrought,waterfalls,jihad,auschwitz,upland,eastbound,adjective,anhalt,evaluating,regimes,guildford,reproduced,pamphlets,hierarchical,maneuvers,hanoi,fabricated,repetition,enriched,arterial,replacements,tides,globalization,adequately,westbound,satisfactory,fleets,phosphorus,lastly,neuroscience,anchors,xinjiang,membranes,improvisation,shipments,orthodoxy,submissions,bolivian,mahmud,ramps,leyte,pastures,outlines,flees,transmitters,fares,sequential,stimulated,novice,alternately,symmetrical,breakaway,layered,baronets,lizards,blackish,edouard,horsepower,penang,principals,mercantile,maldives,overwhelmingly,hawke,rallied,prostate,conscription,juveniles,maccabi,carvings,strikers,sudbury,spurred,improves,lombardy,macquarie,parisian,elastic,distillery,shetland,humane,brentford,wrexham,warehouses,routines,encompassed,introductory,isfahan,instituto,palais,revolutions,sporadic,impoverished,portico,fellowships,speculative,enroll,dormant,adhere,fundamentally,sculpted,meritorious,template,upgrading,reformer,rectory,uncredited,indicative,creeks,galveston,radically,hezbollah,firearm,educating,prohibits,trondheim,locus,refit,headwaters,screenings,lowlands,wasps,coarse,attaining,sedimentary,perished,pitchfork,interned,cerro,stagecoach,aeronautical,liter,transitioned,haydn,inaccurate,legislatures,bromwich,knesset,spectroscopy,butte,asiatic,degraded,concordia,catastrophic,lobes,wellness,pensacola,periphery,hapoel,theta,horizontally,freiburg,liberalism,pleas,durable,warmian,offenses,mesopotamia,shandong,unsuitable,hospitalized,appropriately,phonetic,encompass,conversions,observes,illnesses,breakout,assigns,crowns,inhibitors,nightly,manifestation,fountains,maximize,alphabetical,sloop,expands,newtown,widening,gaddafi,commencing,camouflage,footprint,tyrol,barangays,universite,highlanders,budgets,query,lobbied,westchester,equator,stipulated,pointe,distinguishes,allotted,embankment,advises,storing,loyalists,fourier,rehearsals,starvation,gland,rihanna,tubular,expressive,baccalaureate,intersections,revered,carbonate,eritrea,craftsmen,cosmopolitan,sequencing,corridors,shortlisted,bangladeshi,persians,mimic,parades,repetitive,recommends,flanks,promoters,incompatible,teaming,ammonia,greyhound,solos,improper,legislator,newsweek,recurrent,vitro,cavendish,eireann,crises,prophets,mandir,strategically,guerrillas,formula_12,ghent,contenders,equivalence,drone,sociological,hamid,castes,statehood,aland,clinched,relaunched,tariffs,simulations,williamsburg,rotate,mediation,smallpox,harmonica,lodges,lavish,restrictive,o'sullivan,detainees,polynomials,echoes,intersecting,learners,elects,charlemagne,defiance,epsom,liszt,facilitating,absorbing,revelations,padua,pieter,pious,penultimate,mammalian,montenegrin,supplementary,widows,aromatic,croats,roanoke,trieste,legions,subdistrict,babylonian,grasslands,volga,violently,sparsely,oldies,telecommunication,respondents,quarries,downloadable,commandos,taxpayer,catalytic,malabar,afforded,copying,declines,nawab,junctions,assessing,filtering,classed,disused,compliant,christoph,gottingen,civilizations,hermitage,caledonian,whereupon,ethnically,springsteen,mobilization,terraces,indus,excel,zoological,enrichment,simulate,guitarists,registrar,cappella,invoked,reused,manchu,configured,uppsala,genealogy,mergers,casts,curricular,rebelled,subcontinent,horticultural,parramatta,orchestrated,dockyard,claudius,decca,prohibiting,turkmenistan,brahmin,clandestine,obligatory,elaborated,parasitic,helix,constraint,spearheaded,rotherham,eviction,adapting,albans,rescues,sociologist,guiana,convicts,occurrences,kamen,antennas,asturias,wheeled,sanitary,deterioration,trier,theorists,baseline,announcements,valea,planners,factual,serialized,serials,bilbao,demoted,fission,jamestown,cholera,alleviate,alteration,indefinite,sulfate,paced,climatic,valuation,artisans,proficiency,aegean,regulators,fledgling,sealing,influencing,servicemen,frequented,cancers,tambon,narayan,bankers,clarified,embodied,engraver,reorganisation,dissatisfied,dictated,supplemental,temperance,ratification,puget,nutrient,pretoria,papyrus,uniting,ascribed,cores,coptic,schoolhouse,barrio,1910s,armory,defected,transatlantic,regulates,ported,artefacts,specifies,boasted,scorers,mollusks,emitted,navigable,quakers,projective,dialogues,reunification,exponential,vastly,banners,unsigned,dissipated,halves,coincidentally,leasing,purported,escorting,estimation,foxes,lifespan,inflorescence,assimilation,showdown,staunch,prologue,ligand,superliga,telescopes,northwards,keynote,heaviest,taunton,redeveloped,vocalists,podlaskie,soyuz,rodents,azores,moravian,outset,parentheses,apparel,domestically,authoritative,polymers,monterrey,inhibit,launcher,jordanian,folds,taxis,mandates,singled,liechtenstein,subsistence,marxism,ousted,governorship,servicing,offseason,modernism,prism,devout,translators,islamist,chromosomes,pitted,bedfordshire,fabrication,authoritarian,javanese,leaflets,transient,substantive,predatory,sigismund,assassinate,diagrams,arrays,rediscovered,reclamation,spawning,fjord,peacekeeping,strands,fabrics,highs,regulars,tirana,ultraviolet,athenian,filly,barnet,naacp,nueva,favourites,terminates,showcases,clones,inherently,interpreting,bjorn,finely,lauded,unspecified,chola,pleistocene,insulation,antilles,donetsk,funnel,nutritional,biennale,reactivated,southport,primate,cavaliers,austrians,interspersed,restarted,suriname,amplifiers,wladyslaw,blockbuster,sportsman,minogue,brightness,benches,bridgeport,initiating,israelis,orbiting,newcomers,externally,scaling,transcribed,impairment,luxurious,longevity,impetus,temperament,ceilings,tchaikovsky,spreads,pantheon,bureaucracy,1820s,heraldic,villas,formula_13,galician,meath,avoidance,corresponded,headlining,connacht,seekers,rappers,solids,monograph,scoreless,opole,isotopes,himalayas,parodies,garments,microscopic,republished,havilland,orkney,demonstrators,pathogen,saturated,hellenistic,facilitates,aerodynamic,relocating,indochina,laval,astronomers,bequeathed,administrations,extracts,nagoya,torquay,demography,medicare,ambiguity,renumbered,pursuant,concave,syriac,electrode,dispersal,henan,bialystok,walsall,crystalline,puebla,janata,illumination,tianjin,enslaved,coloration,championed,defamation,grille,johor,rejoin,caspian,fatally,planck,workings,appointing,institutionalized,wessex,modernized,exemplified,regatta,jacobite,parochial,programmers,blending,eruptions,insurrection,regression,indices,sited,dentistry,mobilized,furnishings,levant,primaries,ardent,nagasaki,conqueror,dorchester,opined,heartland,amman,mortally,wellesley,bowlers,outputs,coveted,orthography,immersion,disrepair,disadvantaged,curate,childless,condensed,codice_1,remodeled,resultant,bolsheviks,superfamily,saxons,2010s,contractual,rivalries,malacca,oaxaca,magnate,vertebrae,quezon,olympiad,yucatan,tyres,macro,specialization,commendation,caliphate,gunnery,exiles,excerpts,fraudulent,adjustable,aramaic,interceptor,drumming,standardization,reciprocal,adolescents,federalist,aeronautics,favorably,enforcing,reintroduced,zhejiang,refining,biplane,banknotes,accordion,intersect,illustrating,summits,classmate,militias,biomass,massacres,epidemiology,reworked,wrestlemania,nantes,auditory,taxon,elliptical,chemotherapy,asserting,avoids,proficient,airmen,yellowstone,multicultural,alloys,utilization,seniority,kuyavian,huntsville,orthogonal,bloomington,cultivars,casimir,internment,repulsed,impedance,revolving,fermentation,parana,shutout,partnering,empowered,islamabad,polled,classify,amphibians,greyish,obedience,4x100,projectile,khyber,halfback,relational,d'ivoire,synonyms,endeavour,padma,customized,mastery,defenceman,berber,purge,interestingly,covent,promulgated,restricting,condemnation,hillsborough,walkers,privateer,intra,captaincy,naturalized,huffington,detecting,hinted,migrating,bayou,counterattack,anatomical,foraging,unsafe,swiftly,outdated,paraguayan,attire,masjid,endeavors,jerseys,triassic,quechua,growers,axial,accumulate,wastewater,cognition,fungal,animator,pagoda,kochi,uniformly,antibody,yerevan,hypotheses,combatants,italianate,draining,fragmentation,snowfall,formative,inversion,kitchener,identifier,additive,lucha,selects,ashland,cambrian,racetrack,trapping,congenital,primates,wavelengths,expansions,yeomanry,harcourt,wealthiest,awaited,punta,intervening,aggressively,vichy,piloted,midtown,tailored,heyday,metadata,guadalcanal,inorganic,hadith,pulses,francais,tangent,scandals,erroneously,tractors,pigment,constabulary,jiangsu,landfill,merton,basalt,astor,forbade,debuts,collisions,exchequer,stadion,roofed,flavour,sculptors,conservancy,dissemination,electrically,undeveloped,existent,surpassing,pentecostal,manifested,amend,formula_14,superhuman,barges,tunis,analytics,argyll,liquids,mechanized,domes,mansions,himalayan,indexing,reuters,nonlinear,purification,exiting,timbers,triangles,decommissioning,departmental,causal,fonts,americana,sept.,seasonally,incomes,razavi,sheds,memorabilia,rotational,terre,sutra,protege,yarmouth,grandmaster,annum,looted,imperialism,variability,liquidation,baptised,isotope,showcasing,milling,rationale,hammersmith,austen,streamlined,acknowledging,contentious,qaleh,breadth,turing,referees,feral,toulon,unofficially,identifiable,standout,labeling,dissatisfaction,jurgen,angrily,featherweight,cantons,constrained,dominates,standalone,relinquished,theologians,markedly,italics,downed,nitrate,likened,gules,craftsman,singaporean,pixels,mandela,moray,parity,departement,antigen,academically,burgh,brahma,arranges,wounding,triathlon,nouveau,vanuatu,banded,acknowledges,unearthed,stemming,authentication,byzantines,converge,nepali,commonplace,deteriorating,recalling,palette,mathematicians,greenish,pictorial,ahmedabad,rouen,validation,u.s.a.,'best,malvern,archers,converter,undergoes,fluorescent,logistical,notification,transvaal,illicit,symphonies,stabilization,worsened,fukuoka,decrees,enthusiast,seychelles,blogger,louvre,dignitaries,burundi,wreckage,signage,pinyin,bursts,federer,polarization,urbana,lazio,schism,nietzsche,venerable,administers,seton,kilograms,invariably,kathmandu,farmed,disqualification,earldom,appropriated,fluctuations,kermanshah,deployments,deformation,wheelbase,maratha,psalm,bytes,methyl,engravings,skirmish,fayette,vaccines,ideally,astrology,breweries,botanic,opposes,harmonies,irregularities,contended,gaulle,prowess,constants,aground,filipinos,fresco,ochreous,jaipur,willamette,quercus,eastwards,mortars,champaign,braille,reforming,horned,hunan,spacious,agitation,draught,specialties,flourishing,greensboro,necessitated,swedes,elemental,whorls,hugely,structurally,plurality,synthesizers,embassies,assad,contradictory,inference,discontent,recreated,inspectors,unicef,commuters,embryo,modifying,stints,numerals,communicated,boosted,trumpeter,brightly,adherence,remade,leases,restrained,eucalyptus,dwellers,planar,grooves,gainesville,daimler,anzac,szczecin,cornerback,prized,peking,mauritania,khalifa,motorized,lodging,instrumentalist,fortresses,cervical,formula_15,passerine,sectarian,researches,apprenticed,reliefs,disclose,gliding,repairing,queue,kyushu,literate,canoeing,sacrament,separatist,calabria,parkland,flowed,investigates,statistically,visionary,commits,dragoons,scrolls,premieres,revisited,subdued,censored,patterned,elective,outlawed,orphaned,leyland,richly,fujian,miniatures,heresy,plaques,countered,nonfiction,exponent,moravia,dispersion,marylebone,midwestern,enclave,ithaca,federated,electronically,handheld,microscopy,tolls,arrivals,climbers,continual,cossacks,moselle,deserts,ubiquitous,gables,forecasts,deforestation,vertebrates,flanking,drilled,superstructure,inspected,consultative,bypassed,ballast,subsidy,socioeconomic,relic,grenada,journalistic,administering,accommodated,collapses,appropriation,reclassified,foreword,porte,assimilated,observance,fragmented,arundel,thuringia,gonzaga,shenzhen,shipyards,sectional,ayrshire,sloping,dependencies,promenade,ecuadorian,mangrove,constructs,goalscorer,heroism,iteration,transistor,omnibus,hampstead,cochin,overshadowed,chieftain,scalar,finishers,ghanaian,abnormalities,monoplane,encyclopaedia,characterize,travancore,baronetage,bearers,biking,distributes,paving,christened,inspections,banco,humber,corinth,quadratic,albanians,lineages,majored,roadside,inaccessible,inclination,darmstadt,fianna,epilepsy,propellers,papacy,montagu,bhutto,sugarcane,optimized,pilasters,contend,batsmen,brabant,housemates,sligo,ascot,aquinas,supervisory,accorded,gerais,echoed,nunavut,conservatoire,carniola,quartermaster,gminas,impeachment,aquitaine,reformers,quarterfinal,karlsruhe,accelerator,coeducational,archduke,gelechiidae,seaplane,dissident,frenchman,palau,depots,hardcover,aachen,darreh,denominational,groningen,parcels,reluctance,drafts,elliptic,counters,decreed,airship,devotional,contradiction,formula_16,undergraduates,qualitative,guatemalan,slavs,southland,blackhawks,detrimental,abolish,chechen,manifestations,arthritis,perch,fated,hebei,peshawar,palin,immensely,havre,totalling,rampant,ferns,concourse,triples,elites,olympian,larva,herds,lipid,karabakh,distal,monotypic,vojvodina,batavia,multiplied,spacing,spellings,pedestrians,parchment,glossy,industrialization,dehydrogenase,patriotism,abolitionist,mentoring,elizabethan,figurative,dysfunction,abyss,constantin,middletown,stigma,mondays,gambia,gaius,israelites,renounced,nepalese,overcoming,buren,sulphur,divergence,predation,looting,iberia,futuristic,shelved,anthropological,innsbruck,escalated,clermont,entrepreneurial,benchmark,mechanically,detachments,populist,apocalyptic,exited,embryonic,stanza,readership,chiba,landlords,expansive,boniface,therapies,perpetrators,whitehall,kassel,masts,carriageway,clinch,pathogens,mazandaran,undesirable,teutonic,miocene,nagpur,juris,cantata,compile,diffuse,dynastic,reopening,comptroller,o'neal,flourish,electing,scientifically,departs,welded,modal,cosmology,fukushima,libertadores,chang'an,asean,generalization,localization,afrikaans,cricketers,accompanies,emigrants,esoteric,southwards,shutdown,prequel,fittings,innate,wrongly,equitable,dictionaries,senatorial,bipolar,flashbacks,semitism,walkway,lyrically,legality,sorbonne,vigorously,durga,samoan,karel,interchanges,patna,decider,registering,electrodes,anarchists,excursion,overthrown,gilan,recited,michelangelo,advertiser,kinship,taboo,cessation,formula_17,premiers,traversed,madurai,poorest,torneo,exerted,replicate,spelt,sporadically,horde,landscaping,razed,hindered,esperanto,manchuria,propellant,jalan,baha'is,sikkim,linguists,pandit,racially,ligands,dowry,francophone,escarpment,behest,magdeburg,mainstay,villiers,yangtze,grupo,conspirators,martyrdom,noticeably,lexical,kazakh,unrestricted,utilised,sired,inhabits,proofs,joseon,pliny,minted,buddhists,cultivate,interconnected,reuse,viability,australasian,derelict,resolving,overlooks,menon,stewardship,playwrights,thwarted,filmfare,disarmament,protections,bundles,sidelined,hypothesized,singer/songwriter,forage,netted,chancery,townshend,restructured,quotation,hyperbolic,succumbed,parliaments,shenandoah,apical,kibbutz,storeys,pastors,lettering,ukrainians,hardships,chihuahua,avail,aisles,taluka,antisemitism,assent,ventured,banksia,seamen,hospice,faroe,fearful,woreda,outfield,chlorine,transformer,tatar,panoramic,pendulum,haarlem,styria,cornice,importing,catalyzes,subunits,enamel,bakersfield,realignment,sorties,subordinates,deanery,townland,gunmen,tutelage,evaluations,allahabad,thrace,veneto,mennonite,sharia,subgenus,satisfies,puritan,unequal,gastrointestinal,ordinances,bacterium,horticulture,argonauts,adjectives,arable,duets,visualization,woolwich,revamped,euroleague,thorax,completes,originality,vasco,freighter,sardar,oratory,sects,extremes,signatories,exporting,arisen,exacerbated,departures,saipan,furlongs,d'italia,goring,dakar,conquests,docked,offshoot,okrug,referencing,disperse,netting,summed,rewritten,articulation,humanoid,spindle,competitiveness,preventive,facades,westinghouse,wycombe,synthase,emulate,fostering,abdel,hexagonal,myriad,caters,arjun,dismay,axiom,psychotherapy,colloquial,complemented,martinique,fractures,culmination,erstwhile,atrium,electronica,anarchism,nadal,montpellier,algebras,submitting,adopts,stemmed,overcame,internacional,asymmetric,gallipoli,gliders,flushing,extermination,hartlepool,tesla,interwar,patriarchal,hitherto,ganges,combatant,marred,philology,glastonbury,reversible,isthmus,undermined,southwark,gateshead,andalusia,remedies,hastily,optimum,smartphone,evade,patrolled,beheaded,dopamine,waivers,ugandan,gujarati,densities,predicting,intestinal,tentative,interstellar,kolonia,soloists,penetrated,rebellions,qeshlaq,prospered,colegio,deficits,konigsberg,deficient,accessing,relays,kurds,politburo,codified,incarnations,occupancy,cossack,metaphysical,deprivation,chopra,piccadilly,formula_18,makeshift,protestantism,alaskan,frontiers,faiths,tendon,dunkirk,durability,autobots,bonuses,coinciding,emails,gunboat,stucco,magma,neutrons,vizier,subscriptions,visuals,envisaged,carpets,smoky,schema,parliamentarian,immersed,domesticated,parishioners,flinders,diminutive,mahabharata,ballarat,falmouth,vacancies,gilded,twigs,mastering,clerics,dalmatia,islington,slogans,compressor,iconography,congolese,sanction,blends,bulgarians,moderator,outflow,textures,safeguard,trafalgar,tramways,skopje,colonialism,chimneys,jazeera,organisers,denoting,motivations,ganga,longstanding,deficiencies,gwynedd,palladium,holistic,fascia,preachers,embargo,sidings,busan,ignited,artificially,clearwater,cemented,northerly,salim,equivalents,crustaceans,oberliga,quadrangle,historiography,romanians,vaults,fiercely,incidental,peacetime,tonal,bhopal,oskar,radha,pesticides,timeslot,westerly,cathedrals,roadways,aldershot,connectors,brahmins,paler,aqueous,gustave,chromatic,linkage,lothian,specialises,aggregation,tributes,insurgent,enact,hampden,ghulam,federations,instigated,lyceum,fredrik,chairmanship,floated,consequent,antagonists,intimidation,patriarchate,warbler,heraldry,entrenched,expectancy,habitation,partitions,widest,launchers,nascent,ethos,wurzburg,lycee,chittagong,mahatma,merseyside,asteroids,yokosuka,cooperatives,quorum,redistricting,bureaucratic,yachts,deploying,rustic,phonology,chorale,cellist,stochastic,crucifixion,surmounted,confucian,portfolios,geothermal,crested,calibre,tropics,deferred,nasir,iqbal,persistence,essayist,chengdu,aborigines,fayetteville,bastion,interchangeable,burlesque,kilmarnock,specificity,tankers,colonels,fijian,quotations,enquiry,quito,palmerston,delle,multidisciplinary,polynesian,iodine,antennae,emphasised,manganese,baptists,galilee,jutland,latent,excursions,skepticism,tectonic,precursors,negligible,musique,misuse,vitoria,expressly,veneration,sulawesi,footed,mubarak,chongqing,chemically,midday,ravaged,facets,varma,yeovil,ethnographic,discounted,physicists,attache,disbanding,essen,shogunate,cooperated,waikato,realising,motherwell,pharmacology,sulfide,inward,expatriate,devoid,cultivar,monde,andean,groupings,goran,unaffected,moldovan,postdoctoral,coleophora,delegated,pronoun,conductivity,coleridge,disapproval,reappeared,microbial,campground,olsztyn,fostered,vaccination,rabbinical,champlain,milestones,viewership,caterpillar,effected,eupithecia,financier,inferred,uzbek,bundled,bandar,balochistan,mysticism,biosphere,holotype,symbolizes,lovecraft,photons,abkhazia,swaziland,subgroups,measurable,falkirk,valparaiso,ashok,discriminatory,rarity,tabernacle,flyweight,jalisco,westernmost,antiquarian,extracellular,margrave,colspan=9,midsummer,digestive,reversing,burgeoning,substitutes,medallist,khrushchev,guerre,folio,detonated,partido,plentiful,aggregator,medallion,infiltration,shaded,santander,fared,auctioned,permian,ramakrishna,andorra,mentors,diffraction,bukit,potentials,translucent,feminists,tiers,protracted,coburg,wreath,guelph,adventurer,he/she,vertebrate,pipelines,celsius,outbreaks,australasia,deccan,garibaldi,unionists,buildup,biochemical,reconstruct,boulders,stringent,barbed,wording,furnaces,pests,befriends,organises,popes,rizal,tentacles,cadre,tallahassee,punishments,occidental,formatted,mitigation,rulings,rubens,cascades,inducing,choctaw,volta,synagogues,movable,altarpiece,mitigate,practise,intermittently,encountering,memberships,earns,signify,retractable,amounting,pragmatic,wilfrid,dissenting,divergent,kanji,reconstituted,devonian,constitutions,levied,hendrik,starch,costal,honduran,ditches,polygon,eindhoven,superstars,salient,argus,punitive,purana,alluvial,flaps,inefficient,retracted,advantageous,quang,andersson,danville,binghamton,symbolize,conclave,shaanxi,silica,interpersonal,adept,frans,pavilions,lubbock,equip,sunken,limburg,activates,prosecutions,corinthian,venerated,shootings,retreats,parapet,orissa,riviere,animations,parodied,offline,metaphysics,bluffs,plume,piety,fruition,subsidized,steeplechase,shanxi,eurasia,angled,forecasting,suffragan,ashram,larval,labyrinth,chronicler,summaries,trailed,merges,thunderstorms,filtered,formula_19,advertisers,alpes,informatics,parti,constituting,undisputed,certifications,javascript,molten,sclerosis,rumoured,boulogne,hmong,lewes,breslau,notts,bantu,ducal,messengers,radars,nightclubs,bantamweight,carnatic,kaunas,fraternal,triggering,controversially,londonderry,visas,scarcity,offaly,uprisings,repelled,corinthians,pretext,kuomintang,kielce,empties,matriculated,pneumatic,expos,agile,treatises,midpoint,prehistory,oncology,subsets,hydra,hypertension,axioms,wabash,reiterated,swapped,achieves,premio,ageing,overture,curricula,challengers,subic,selangor,liners,frontline,shutter,validated,normalized,entertainers,molluscs,maharaj,allegation,youngstown,synth,thoroughfare,regionally,pillai,transcontinental,pedagogical,riemann,colonia,easternmost,tentatively,profiled,herefordshire,nativity,meuse,nucleotide,inhibits,huntingdon,throughput,recorders,conceding,domed,homeowners,centric,gabled,canoes,fringes,breeder,subtitled,fluoride,haplogroup,zionism,izmir,phylogeny,kharkiv,romanticism,adhesion,usaaf,delegations,lorestan,whalers,biathlon,vaulted,mathematically,pesos,skirmishes,heisman,kalamazoo,gesellschaft,launceston,interacts,quadruple,kowloon,psychoanalysis,toothed,ideologies,navigational,valence,induces,lesotho,frieze,rigging,undercarriage,explorations,spoof,eucharist,profitability,virtuoso,recitals,subterranean,sizeable,herodotus,subscriber,huxley,pivot,forewing,warring,boleslaw,bharatiya,suffixes,trois,percussionist,downturn,garrisons,philosophies,chants,mersin,mentored,dramatist,guilds,frameworks,thermodynamic,venomous,mehmed,assembling,rabbinic,hegemony,replicas,enlargement,claimant,retitled,utica,dumfries,metis,deter,assortment,tubing,afflicted,weavers,rupture,ornamentation,transept,salvaged,upkeep,callsign,rajput,stevenage,trimmed,intracellular,synchronization,consular,unfavorable,royalists,goldwyn,fasting,hussars,doppler,obscurity,currencies,amiens,acorn,tagore,townsville,gaussian,migrations,porta,anjou,graphite,seaport,monographs,gladiators,metrics,calligraphy,sculptural,swietokrzyskie,tolombeh,eredivisie,shoals,queries,carts,exempted,fiberglass,mirrored,bazar,progeny,formalized,mukherjee,professed,amazon.com,cathode,moreton,removable,mountaineers,nagano,transplantation,augustinian,steeply,epilogue,adapter,decisively,accelerating,mediaeval,substituting,tasman,devonshire,litres,enhancements,himmler,nephews,bypassing,imperfect,argentinian,reims,integrates,sochi,ascii,licences,niches,surgeries,fables,versatility,indra,footpath,afonso,crore,evaporation,encodes,shelling,conformity,simplify,updating,quotient,overt,firmware,umpires,architectures,eocene,conservatism,secretion,embroidery,f.c..,tuvalu,mosaics,shipwreck,prefectural,cohort,grievances,garnering,centerpiece,apoptosis,djibouti,bethesda,formula_20,shonen,richland,justinian,dormitories,meteorite,reliably,obtains,pedagogy,hardness,cupola,manifolds,amplification,steamers,familial,dumbarton,jerzy,genital,maidstone,salinity,grumman,signifies,presbytery,meteorology,procured,aegis,streamed,deletion,nuestra,mountaineering,accords,neuronal,khanate,grenoble,axles,dispatches,tokens,turku,auctions,propositions,planters,proclaiming,recommissioned,stravinsky,obverse,bombarded,waged,saviour,massacred,reformist,purportedly,resettlement,ravenna,embroiled,minden,revitalization,hikers,bridging,torpedoed,depletion,nizam,affectionately,latitudes,lubeck,spore,polymerase,aarhus,nazism,101st,buyout,galerie,diets,overflow,motivational,renown,brevet,deriving,melee,goddesses,demolish,amplified,tamworth,retake,brokerage,beneficiaries,henceforth,reorganised,silhouette,browsers,pollutants,peron,lichfield,encircled,defends,bulge,dubbing,flamenco,coimbatore,refinement,enshrined,grizzlies,capacitor,usefulness,evansville,interscholastic,rhodesian,bulletins,diamondbacks,rockers,platted,medalists,formosa,transporter,slabs,guadeloupe,disparate,concertos,violins,regaining,mandible,untitled,agnostic,issuance,hamiltonian,brampton,srpska,homology,downgraded,florentine,epitaph,kanye,rallying,analysed,grandstand,infinitely,antitrust,plundered,modernity,colspan=3|total,amphitheatre,doric,motorists,yemeni,carnivorous,probabilities,prelate,struts,scrapping,bydgoszcz,pancreatic,signings,predicts,compendium,ombudsman,apertura,appoints,rebbe,stereotypical,valladolid,clustered,touted,plywood,inertial,kettering,curving,d'honneur,housewives,grenadier,vandals,barbarossa,necked,waltham,reputedly,jharkhand,cistercian,pursues,viscosity,organiser,cloister,islet,stardom,moorish,himachal,strives,scripps,staggered,blasts,westwards,millimeters,angolan,hubei,agility,admirals,mordellistena,coincides,platte,vehicular,cordillera,riffs,schoolteacher,canaan,acoustics,tinged,reinforcing,concentrates,daleks,monza,selectively,musik,polynesia,exporter,reviving,macclesfield,bunkers,ballets,manors,caudal,microbiology,primes,unbroken,outcry,flocks,pakhtunkhwa,abelian,toowoomba,luminous,mould,appraisal,leuven,experimentally,interoperability,hideout,perak,specifying,knighthood,vasily,excerpt,computerized,niels,networked,byzantium,reaffirmed,geographer,obscured,fraternities,mixtures,allusion,accra,lengthened,inquest,panhandle,pigments,revolts,bluetooth,conjugate,overtaken,foray,coils,breech,streaks,impressionist,mendelssohn,intermediary,panned,suggestive,nevis,upazila,rotunda,mersey,linnaeus,anecdotes,gorbachev,viennese,exhaustive,moldavia,arcades,irrespective,orator,diminishing,predictive,cohesion,polarized,montage,avian,alienation,conus,jaffna,urbanization,seawater,extremity,editorials,scrolling,dreyfus,traverses,topographic,gunboats,extratropical,normans,correspondents,recognises,millennia,filtration,ammonium,voicing,complied,prefixes,diplomas,figurines,weakly,gated,oscillator,lucerne,embroidered,outpatient,airframe,fractional,disobedience,quarterbacks,formula_21,shinto,chiapas,epistle,leakage,pacifist,avignon,penrith,renders,mantua,screenplays,gustaf,tesco,alphabetically,rations,discharges,headland,tapestry,manipur,boolean,mediator,ebenezer,subchannel,fable,bestselling,ateneo,trademarks,recurrence,dwarfs,britannica,signifying,vikram,mediate,condensation,censuses,verbandsgemeinde,cartesian,sprang,surat,britons,chelmsford,courtenay,statistic,retina,abortions,liabilities,closures,mississauga,skyscrapers,saginaw,compounded,aristocrat,msnbc,stavanger,septa,interpretive,hinder,visibly,seeding,shutouts,irregularly,quebecois,footbridge,hydroxide,implicitly,lieutenants,simplex,persuades,midshipman,heterogeneous,officiated,crackdown,lends,tartu,altars,fractions,dissidents,tapered,modernisation,scripting,blazon,aquaculture,thermodynamics,sistan,hasidic,bellator,pavia,propagated,theorized,bedouin,transnational,mekong,chronicled,declarations,kickstarter,quotas,runtime,duquesne,broadened,clarendon,brownsville,saturation,tatars,electorates,malayan,replicated,observable,amphitheater,endorsements,referral,allentown,mormons,pantomime,eliminates,typeface,allegorical,varna,conduction,evoke,interviewer,subordinated,uyghur,landscaped,conventionally,ascend,edifice,postulated,hanja,whitewater,embarking,musicologist,tagalog,frontage,paratroopers,hydrocarbons,transliterated,nicolae,viewpoints,surrealist,asheville,falklands,hacienda,glide,opting,zimbabwean,discal,mortgages,nicaraguan,yadav,ghosh,abstracted,castilian,compositional,cartilage,intergovernmental,forfeited,importation,rapping,artes,republika,narayana,condominium,frisian,bradman,duality,marche,extremist,phosphorylation,genomes,allusions,valencian,habeas,ironworks,multiplex,harpsichord,emigrate,alternated,breda,waffen,smartphones,familiarity,regionalliga,herbaceous,piping,dilapidated,carboniferous,xviii,critiques,carcinoma,sagar,chippewa,postmodern,neapolitan,excludes,notoriously,distillation,tungsten,richness,installments,monoxide,chand,privatisation,molded,maths,projectiles,luoyang,epirus,lemma,concentric,incline,erroneous,sideline,gazetted,leopards,fibres,renovate,corrugated,unilateral,repatriation,orchestration,saeed,rockingham,loughborough,formula_22,bandleader,appellation,openness,nanotechnology,massively,tonnage,dunfermline,exposes,moored,ridership,motte,eurobasket,majoring,feats,silla,laterally,playlist,downwards,methodologies,eastbourne,daimyo,cellulose,leyton,norwalk,oblong,hibernian,opaque,insular,allegory,camogie,inactivation,favoring,masterpieces,rinpoche,serotonin,portrayals,waverley,airliner,longford,minimalist,outsourcing,excise,meyrick,qasim,organisational,synaptic,farmington,gorges,scunthorpe,zoned,tohoku,librarians,davao,decor,theatrically,brentwood,pomona,acquires,planter,capacitors,synchronous,skateboarding,coatings,turbocharged,ephraim,capitulation,scoreboard,hebrides,ensues,cereals,ailing,counterpoint,duplication,antisemitic,clique,aichi,oppressive,transcendental,incursions,rename,renumbering,powys,vestry,bitterly,neurology,supplanted,affine,susceptibility,orbiter,activating,overlaps,ecoregion,raman,canoer,darfur,microorganisms,precipitated,protruding,torun,anthropologists,rennes,kangaroos,parliamentarians,edits,littoral,archived,begum,rensselaer,microphones,ypres,empower,etruscan,wisden,montfort,calibration,isomorphic,rioting,kingship,verbally,smyrna,cohesive,canyons,fredericksburg,rahul,relativistic,micropolitan,maroons,industrialized,henchmen,uplift,earthworks,mahdi,disparity,cultured,transliteration,spiny,fragmentary,extinguished,atypical,inventors,biosynthesis,heralded,curacao,anomalies,aeroplane,surya,mangalore,maastricht,ashkenazi,fusiliers,hangzhou,emitting,monmouthshire,schwarzenegger,ramayana,peptides,thiruvananthapuram,alkali,coimbra,budding,reasoned,epithelial,harbors,rudimentary,classically,parque,ealing,crusades,rotations,riparian,pygmy,inertia,revolted,microprocessor,calendars,solvents,kriegsmarine,accademia,cheshmeh,yoruba,ardabil,mitra,genomic,notables,propagate,narrates,univision,outposts,polio,birkenhead,urinary,crocodiles,pectoral,barrymore,deadliest,rupees,chaim,protons,comical,astrophysics,unifying,formula_23,vassals,cortical,audubon,pedals,tenders,resorted,geophysical,lenders,recognising,tackling,lanarkshire,doctrinal,annan,combating,guangxi,estimating,selectors,tribunals,chambered,inhabiting,exemptions,curtailed,abbasid,kandahar,boron,bissau,150th,codenamed,wearer,whorl,adhered,subversive,famer,smelting,inserting,mogadishu,zoologist,mosul,stumps,almanac,olympiacos,stamens,participatory,cults,honeycomb,geologists,dividend,recursive,skiers,reprint,pandemic,liber,percentages,adversely,stoppage,chieftains,tubingen,southerly,overcrowding,unorganized,hangars,fulfil,hails,cantilever,woodbridge,pinus,wiesbaden,fertilization,fluorescence,enhances,plenary,troublesome,episodic,thrissur,kickboxing,allele,staffing,garda,televisions,philatelic,spacetime,bullpen,oxides,leninist,enrolling,inventive,truro,compatriot,ruskin,normative,assay,gotha,murad,illawarra,gendarmerie,strasse,mazraeh,rebounded,fanfare,liaoning,rembrandt,iranians,emirate,governs,latency,waterfowl,chairmen,katowice,aristocrats,eclipsed,sentient,sonatas,interplay,sacking,decepticons,dynamical,arbitrarily,resonant,petar,velocities,alludes,wastes,prefectures,belleville,sensibility,salvadoran,consolidating,medicaid,trainees,vivekananda,molar,porous,upload,youngster,infused,doctorates,wuhan,annihilation,enthusiastically,gamespot,kanpur,accumulating,monorail,operetta,tiling,sapporo,finns,calvinist,hydrocarbon,sparrows,orienteering,cornelis,minster,vuelta,plebiscite,embraces,panchayats,focussed,remediation,brahman,olfactory,reestablished,uniqueness,northumbria,rwandan,predominately,abode,ghats,balances,californian,uptake,bruges,inert,westerns,reprints,cairn,yarra,resurfaced,audible,rossini,regensburg,italiana,fleshy,irrigated,alerts,yahya,varanasi,marginalized,expatriates,cantonment,normandie,sahitya,directives,rounder,hulls,fictionalized,constables,inserts,hipped,potosi,navies,biologists,canteen,husbandry,augment,fortnight,assamese,kampala,o'keefe,paleolithic,bluish,promontory,consecutively,striving,niall,reuniting,dipole,friendlies,disapproved,thrived,netflix,liberian,dielectric,medway,strategist,sankt,pickups,hitters,encode,rerouted,claimants,anglesey,partitioned,cavan,flutes,reared,repainted,armaments,bowed,thoracic,balliol,piero,chaplains,dehestan,sender,junkers,sindhi,sickle,dividends,metallurgy,honorific,berths,namco,springboard,resettled,gansu,copyrighted,criticizes,utopian,bendigo,ovarian,binomial,spaceflight,oratorio,proprietors,supergroup,duplicated,foreground,strongholds,revolved,optimize,layouts,westland,hurler,anthropomorphic,excelsior,merchandising,reeds,vetoed,cryptography,hollyoaks,monash,flooring,ionian,resilience,johnstown,resolves,lawmakers,alegre,wildcards,intolerance,subculture,selector,slums,formulate,bayonet,istvan,restitution,interchangeably,awakens,rostock,serpentine,oscillation,reichstag,phenotype,recessed,piotr,annotated,preparedness,consultations,clausura,preferential,euthanasia,genoese,outcrops,freemasonry,geometrical,genesee,islets,prometheus,panamanian,thunderbolt,terraced,stara,shipwrecks,futebol,faroese,sharqi,aldermen,zeitung,unify,formula_24,humanism,syntactic,earthen,blyth,taxed,rescinded,suleiman,cymru,dwindled,vitality,superieure,resupply,adolphe,ardennes,rajiv,profiling,olympique,gestation,interfaith,milosevic,tagline,funerary,druze,silvery,plough,shrubland,relaunch,disband,nunatak,minimizing,excessively,waned,attaching,luminosity,bugle,encampment,electrostatic,minesweeper,dubrovnik,rufous,greenock,hochschule,assyrians,extracting,malnutrition,priya,attainment,anhui,connotations,predicate,seabirds,deduced,pseudonyms,gopal,plovdiv,refineries,imitated,kwazulu,terracotta,tenets,discourses,brandeis,whigs,dominions,pulmonate,landslides,tutors,determinant,richelieu,farmstead,tubercles,technicolor,hegel,redundancy,greenpeace,shortening,mules,distilled,xxiii,fundamentalist,acrylic,outbuildings,lighted,corals,signaled,transistors,cavite,austerity,76ers,exposures,dionysius,outlining,commutative,permissible,knowledgeable,howrah,assemblage,inhibited,crewmen,mbit/s,pyramidal,aberdeenshire,bering,rotates,atheism,howitzer,saone,lancet,fermented,contradicted,materiel,ofsted,numeric,uniformity,josephus,nazarene,kuwaiti,noblemen,pediment,emergent,campaigner,akademi,murcia,perugia,gallen,allsvenskan,finned,cavities,matriculation,rosters,twickenham,signatory,propel,readable,contends,artisan,flamboyant,reggio,italo,fumbles,widescreen,rectangle,centimetres,collaborates,envoys,rijeka,phonological,thinly,refractive,civilisation,reductase,cognate,dalhousie,monticello,lighthouses,jitsu,luneburg,socialite,fermi,collectible,optioned,marquee,jokingly,architecturally,kabir,concubine,nationalisation,watercolor,wicklow,acharya,pooja,leibniz,rajendra,nationalized,stalemate,bloggers,glutamate,uplands,shivaji,carolingian,bucuresti,dasht,reappears,muscat,functionally,formulations,hinged,hainan,catechism,autosomal,incremental,asahi,coeur,diversification,multilateral,fewest,recombination,finisher,harrogate,hangul,feasts,photovoltaic,paget,liquidity,alluded,incubation,applauded,choruses,malagasy,hispanics,bequest,underparts,cassava,kazimierz,gastric,eradication,mowtowr,tyrosine,archbishopric,e9e9e9,unproductive,uxbridge,hydrolysis,harbours,officio,deterministic,devonport,kanagawa,breaches,freetown,rhinoceros,chandigarh,janos,sanatorium,liberator,inequalities,agonist,hydrophobic,constructors,nagorno,snowboarding,welcomes,subscribed,iloilo,resuming,catalysts,stallions,jawaharlal,harriers,definitively,roughriders,hertford,inhibiting,elgar,randomized,incumbents,episcopate,rainforests,yangon,improperly,kemal,interpreters,diverged,uttarakhand,umayyad,phnom,panathinaikos,shabbat,diode,jiangxi,forbidding,nozzle,artistry,licensee,processions,staffs,decimated,expressionism,shingle,palsy,ontology,mahayana,maribor,sunil,hostels,edwardian,jetty,freehold,overthrew,eukaryotic,schuylkill,rawalpindi,sheath,recessive,ferenc,mandibles,berlusconi,confessor,convergent,ababa,slugging,rentals,sephardic,equivalently,collagen,markov,dynamically,hailing,depressions,sprawling,fairgrounds,indistinguishable,plutarch,pressurized,banff,coldest,braunschweig,mackintosh,sociedad,wittgenstein,tromso,airbase,lecturers,subtitle,attaches,purified,contemplated,dreamworks,telephony,prophetic,rockland,aylesbury,biscay,coherence,aleksandar,judoka,pageants,theses,homelessness,luthor,sitcoms,hinterland,fifths,derwent,privateers,enigmatic,nationalistic,instructs,superimposed,conformation,tricycle,dusan,attributable,unbeknownst,laptops,etching,archbishops,ayatollah,cranial,gharbi,interprets,lackawanna,abingdon,saltwater,tories,lender,minaj,ancillary,ranching,pembrokeshire,topographical,plagiarism,murong,marque,chameleon,assertions,infiltrated,guildhall,reverence,schenectady,formula_25,kollam,notary,mexicana,initiates,abdication,basra,theorems,ionization,dismantling,eared,censors,budgetary,numeral,verlag,excommunicated,distinguishable,quarried,cagliari,hindustan,symbolizing,watertown,descartes,relayed,enclosures,militarily,sault,devolved,dalian,djokovic,filaments,staunton,tumour,curia,villainous,decentralized,galapagos,moncton,quartets,onscreen,necropolis,brasileiro,multipurpose,alamos,comarca,jorgen,concise,mercia,saitama,billiards,entomologist,montserrat,lindbergh,commuting,lethbridge,phoenician,deviations,anaerobic,denouncing,redoubt,fachhochschule,principalities,negros,announcers,seconded,parrots,konami,revivals,approving,devotee,riyadh,overtook,morecambe,lichen,expressionist,waterline,silverstone,geffen,sternites,aspiration,behavioural,grenville,tripura,mediums,genders,pyotr,charlottesville,sacraments,programmable,ps100,shackleton,garonne,sumerian,surpass,authorizing,interlocking,lagoons,voiceless,advert,steeple,boycotted,alouettes,yosef,oxidative,sassanid,benefiting,sayyid,nauru,predetermined,idealism,maxillary,polymerization,semesters,munchen,conor,outfitted,clapham,progenitor,gheorghe,observational,recognitions,numerically,colonized,hazrat,indore,contaminants,fatality,eradicate,assyria,convocation,cameos,skillful,skoda,corfu,confucius,overtly,ramadan,wollongong,placements,d.c..,permutation,contemporaneous,voltages,elegans,universitat,samar,plunder,dwindling,neuter,antonin,sinhala,campania,solidified,stanzas,fibrous,marburg,modernize,sorcery,deutscher,florets,thakur,disruptive,infielder,disintegration,internazionale,vicariate,effigy,tripartite,corrective,klamath,environs,leavenworth,sandhurst,workmen,compagnie,hoseynabad,strabo,palisades,ordovician,sigurd,grandsons,defection,viacom,sinhalese,innovator,uncontrolled,slavonic,indexes,refrigeration,aircrew,superbike,resumption,neustadt,confrontations,arras,hindenburg,ripon,embedding,isomorphism,dwarves,matchup,unison,lofty,argos,louth,constitutionally,transitive,newington,facelift,degeneration,perceptual,aviators,enclosing,igneous,symbolically,academician,constitutionality,iso/iec,sacrificial,maturation,apprentices,enzymology,naturalistic,hajji,arthropods,abbess,vistula,scuttled,gradients,pentathlon,etudes,freedmen,melaleuca,thrice,conductive,sackville,franciscans,stricter,golds,kites,worshiped,monsignor,trios,orally,tiered,primacy,bodywork,castleford,epidemics,alveolar,chapelle,chemists,hillsboro,soulful,warlords,ngati,huguenot,diurnal,remarking,luger,motorways,gauss,jahan,cutoff,proximal,bandai,catchphrase,jonubi,ossetia,codename,codice_2,throated,itinerant,chechnya,riverfront,leela,evoked,entailed,zamboanga,rejoining,circuitry,haymarket,khartoum,feuds,braced,miyazaki,mirren,lubusz,caricature,buttresses,attrition,characterizes,widnes,evanston,materialism,contradictions,marist,midrash,gainsborough,ulithi,turkmen,vidya,escuela,patrician,inspirations,reagent,premierships,humanistic,euphrates,transitioning,belfry,zedong,adaption,kaliningrad,lobos,epics,waiver,coniferous,polydor,inductee,refitted,moraine,unsatisfactory,worsening,polygamy,rajya,nested,subgenre,broadside,stampeders,lingua,incheon,pretender,peloton,persuading,excitation,multan,predates,tonne,brackish,autoimmune,insulated,podcasts,iraqis,bodybuilding,condominiums,midlothian,delft,debtor,asymmetrical,lycaenidae,forcefully,pathogenic,tamaulipas,andaman,intravenous,advancements,senegalese,chronologically,realigned,inquirer,eusebius,dekalb,additives,shortlist,goldwater,hindustani,auditing,caterpillars,pesticide,nakhon,ingestion,lansdowne,traditionalist,northland,thunderbirds,josip,nominating,locale,ventricular,animators,verandah,epistles,surveyors,anthems,dredd,upheaval,passaic,anatolian,svalbard,associative,floodplain,taranaki,estuaries,irreducible,beginners,hammerstein,allocate,coursework,secreted,counteract,handwritten,foundational,passover,discoverer,decoding,wares,bourgeoisie,playgrounds,nazionale,abbreviations,seanad,golan,mishra,godavari,rebranding,attendances,backstory,interrupts,lettered,hasbro,ultralight,hormozgan,armee,moderne,subdue,disuse,improvisational,enrolment,persists,moderated,carinthia,hatchback,inhibitory,capitalized,anatoly,abstracts,albemarle,bergamo,insolvency,sentai,cellars,walloon,joked,kashmiri,dirac,materialized,renomination,homologous,gusts,eighteens,centrifugal,storied,baluchestan,formula_26,poincare,vettel,infuriated,gauges,streetcars,vedanta,stately,liquidated,goguryeo,swifts,accountancy,levee,acadian,hydropower,eustace,comintern,allotment,designating,torsion,molding,irritation,aerobic,halen,concerted,plantings,garrisoned,gramophone,cytoplasm,onslaught,requisitioned,relieving,genitive,centrist,jeong,espanola,dissolving,chatterjee,sparking,connaught,varese,arjuna,carpathian,empowering,meteorologist,decathlon,opioid,hohenzollern,fenced,ibiza,avionics,footscray,scrum,discounts,filament,directories,a.f.c,stiffness,quaternary,adventurers,transmits,harmonious,taizong,radiating,germantown,ejection,projectors,gaseous,nahuatl,vidyalaya,nightlife,redefined,refuted,destitute,arista,potters,disseminated,distanced,jamboree,kaohsiung,tilted,lakeshore,grained,inflicting,kreis,novelists,descendents,mezzanine,recast,fatah,deregulation,ac/dc,australis,kohgiluyeh,boreal,goths,authoring,intoxicated,nonpartisan,theodosius,pyongyang,shree,boyhood,sanfl,plenipotentiary,photosynthesis,presidium,sinaloa,honshu,texan,avenida,transmembrane,malays,acropolis,catalunya,vases,inconsistencies,methodists,quell,suisse,banat,simcoe,cercle,zealanders,discredited,equine,sages,parthian,fascists,interpolation,classifying,spinoff,yehuda,cruised,gypsum,foaled,wallachia,saraswati,imperialist,seabed,footnotes,nakajima,locales,schoolmaster,drosophila,bridgehead,immanuel,courtier,bookseller,niccolo,stylistically,portmanteau,superleague,konkani,millimetres,arboreal,thanjavur,emulation,sounders,decompression,commoners,infusion,methodological,osage,rococo,anchoring,bayreuth,formula_27,abstracting,symbolized,bayonne,electrolyte,rowed,corvettes,traversing,editorship,sampler,presidio,curzon,adirondack,swahili,rearing,bladed,lemur,pashtun,behaviours,bottling,zaire,recognisable,systematics,leeward,formulae,subdistricts,smithfield,vijaya,buoyancy,boosting,cantonal,rishi,airflow,kamakura,adana,emblems,aquifer,clustering,husayn,woolly,wineries,montessori,turntable,exponentially,caverns,espoused,pianists,vorpommern,vicenza,latterly,o'rourke,williamstown,generale,kosice,duisburg,poirot,marshy,mismanagement,mandalay,dagenham,universes,chiral,radiated,stewards,vegan,crankshaft,kyrgyz,amphibian,cymbals,infrequently,offenbach,environmentalist,repatriated,permutations,midshipmen,loudoun,refereed,bamberg,ornamented,nitric,selim,translational,dorsum,annunciation,gippsland,reflector,informational,regia,reactionary,ahmet,weathering,erlewine,legalized,berne,occupant,divas,manifests,analyzes,disproportionate,mitochondria,totalitarian,paulista,interscope,anarcho,correlate,brookfield,elongate,brunel,ordinal,precincts,volatility,equaliser,hittite,somaliland,ticketing,monochrome,ubuntu,chhattisgarh,titleholder,ranches,referendums,blooms,accommodates,merthyr,religiously,ryukyu,tumultuous,checkpoints,anode,mi'kmaq,cannonball,punctuation,remodelled,assassinations,criminology,alternates,yonge,pixar,namibian,piraeus,trondelag,hautes,lifeboats,shoal,atelier,vehemently,sadat,postcode,jainism,lycoming,undisturbed,lutherans,genomics,popmatters,tabriz,isthmian,notched,autistic,horsham,mites,conseil,bloomsbury,seung,cybertron,idris,overhauled,disbandment,idealized,goldfields,worshippers,lobbyist,ailments,paganism,herbarium,athenians,messerschmitt,faraday,entangled,'olya,untreated,criticising,howitzers,parvati,lobed,debussy,atonement,tadeusz,permeability,mueang,sepals,degli,optionally,fuelled,follies,asterisk,pristina,lewiston,congested,overpass,affixed,pleads,telecasts,stanislaus,cryptographic,friesland,hamstring,selkirk,antisubmarine,inundated,overlay,aggregates,fleur,trolleybus,sagan,ibsen,inductees,beltway,tiled,ladders,cadbury,laplace,ascetic,micronesia,conveying,bellingham,cleft,batches,usaid,conjugation,macedon,assisi,reappointed,brine,jinnah,prairies,screenwriting,oxidized,despatches,linearly,fertilizers,brazilians,absorbs,wagga,modernised,scorsese,ashraf,charlestown,esque,habitable,nizhny,lettres,tuscaloosa,esplanade,coalitions,carbohydrates,legate,vermilion,standardised,galleria,psychoanalytic,rearrangement,substation,competency,nationalised,reshuffle,reconstructions,mehdi,bougainville,receivership,contraception,enlistment,conducive,aberystwyth,solicitors,dismisses,fibrosis,montclair,homeowner,surrealism,s.h.i.e.l.d,peregrine,compilers,1790s,parentage,palmas,rzeszow,worldview,eased,svenska,housemate,bundestag,originator,enlisting,outwards,reciprocity,formula_28,carbohydrate,democratically,firefighting,romagna,acknowledgement,khomeini,carbide,quests,vedas,characteristically,guwahati,brixton,unintended,brothels,parietal,namur,sherbrooke,moldavian,baruch,milieu,undulating,laurier,entre,dijon,ethylene,abilene,heracles,paralleling,ceres,dundalk,falun,auspicious,chisinau,polarity,foreclosure,templates,ojibwe,punic,eriksson,biden,bachchan,glaciation,spitfires,norsk,nonviolent,heidegger,algonquin,capacitance,cassettes,balconies,alleles,airdate,conveys,replays,classifies,infrequent,amine,cuttings,rarer,woking,olomouc,amritsar,rockabilly,illyrian,maoist,poignant,tempore,stalinist,segmented,bandmate,mollusc,muhammed,totalled,byrds,tendered,endogenous,kottayam,aisne,oxidase,overhears,illustrators,verve,commercialization,purplish,directv,moulded,lyttelton,baptismal,captors,saracens,georgios,shorten,polity,grids,fitzwilliam,sculls,impurities,confederations,akhtar,intangible,oscillations,parabolic,harlequin,maulana,ovate,tanzanian,singularity,confiscation,qazvin,speyer,phonemes,overgrown,vicarage,gurion,undocumented,niigata,thrones,preamble,stave,interment,liiga,ataturk,aphrodite,groupe,indentured,habsburgs,caption,utilitarian,ozark,slovenes,reproductions,plasticity,serbo,dulwich,castel,barbuda,salons,feuding,lenape,wikileaks,swamy,breuning,shedding,afield,superficially,operationally,lamented,okanagan,hamadan,accolade,furthering,adolphus,fyodor,abridged,cartoonists,pinkish,suharto,cytochrome,methylation,debit,colspan=9|,refine,taoist,signalled,herding,leaved,bayan,fatherland,rampart,sequenced,negation,storyteller,occupiers,barnabas,pelicans,nadir,conscripted,railcars,prerequisite,furthered,columba,carolinas,markup,gwalior,franche,chaco,eglinton,ramparts,rangoon,metabolites,pollination,croat,televisa,holyoke,testimonial,setlist,safavid,sendai,georgians,shakespearean,galleys,regenerative,krzysztof,overtones,estado,barbary,cherbourg,obispo,sayings,composites,sainsbury,deliberation,cosmological,mahalleh,embellished,ascap,biala,pancras,calumet,grands,canvases,antigens,marianas,defenseman,approximated,seedlings,soren,stele,nuncio,immunology,testimonies,glossary,recollections,suitability,tampere,venous,cohomology,methanol,echoing,ivanovich,warmly,sterilization,imran,multiplying,whitechapel,undersea,xuanzong,tacitus,bayesian,roundhouse,correlations,rioters,molds,fiorentina,bandmates,mezzo,thani,guerilla,200th,premiums,tamils,deepwater,chimpanzees,tribesmen,selwyn,globo,turnovers,punctuated,erode,nouvelle,banbury,exponents,abolishing,helical,maimonides,endothelial,goteborg,infield,encroachment,cottonwood,mazowiecki,parable,saarbrucken,reliever,epistemology,artistes,enrich,rationing,formula_29,palmyra,subfamilies,kauai,zoran,fieldwork,arousal,creditor,friuli,celts,comoros,equated,escalation,negev,tallied,inductive,anion,netanyahu,mesoamerican,lepidoptera,aspirated,remit,westmorland,italic,crosse,vaclav,fuego,owain,balmain,venetians,ethnicities,deflected,ticino,apulia,austere,flycatcher,reprising,repressive,hauptbahnhof,subtype,ophthalmology,summarizes,eniwetok,colonisation,subspace,nymphalidae,earmarked,tempe,burnet,crests,abbots,norwegians,enlarge,ashoka,frankfort,livorno,malware,renters,singly,iliad,moresby,rookies,gustavus,affirming,alleges,legume,chekhov,studded,abdicated,suzhou,isidore,townsite,repayment,quintus,yankovic,amorphous,constructor,narrowing,industrialists,tanganyika,capitalization,connective,mughals,rarities,aerodynamics,worthing,antalya,diagnostics,shaftesbury,thracian,obstetrics,benghazi,multiplier,orbitals,livonia,roscommon,intensify,ravel,oaths,overseer,locomotion,necessities,chickasaw,strathclyde,treviso,erfurt,aortic,contemplation,accrington,markazi,predeceased,hippocampus,whitecaps,assemblyman,incursion,ethnography,extraliga,reproducing,directorship,benzene,byway,stupa,taxable,scottsdale,onondaga,favourably,countermeasures,lithuanians,thatched,deflection,tarsus,consuls,annuity,paralleled,contextual,anglian,klang,hoisted,multilingual,enacting,samaj,taoiseach,carthaginian,apologised,hydrology,entrant,seamless,inflorescences,mugabe,westerners,seminaries,wintering,penzance,mitre,sergeants,unoccupied,delimitation,discriminate,upriver,abortive,nihon,bessarabia,calcareous,buffaloes,patil,daegu,streamline,berks,chaparral,laity,conceptions,typified,kiribati,threaded,mattel,eccentricity,signified,patagonia,slavonia,certifying,adnan,astley,sedition,minimally,enumerated,nikos,goalless,walid,narendra,causa,missoula,coolant,dalek,outcrop,hybridization,schoolchildren,peasantry,afghans,confucianism,shahr,gallic,tajik,kierkegaard,sauvignon,commissar,patriarchs,tuskegee,prussians,laois,ricans,talmudic,officiating,aesthetically,baloch,antiochus,separatists,suzerainty,arafat,shading,u.s.c,chancellors,inc..,toolkit,nepenthes,erebidae,solicited,pratap,kabbalah,alchemist,caltech,darjeeling,biopic,spillway,kaiserslautern,nijmegen,bolstered,neath,pahlavi,eugenics,bureaus,retook,northfield,instantaneous,deerfield,humankind,selectivity,putative,boarders,cornhuskers,marathas,raikkonen,aliabad,mangroves,garages,gulch,karzai,poitiers,chernobyl,thane,alexios,belgrano,scion,solubility,urbanized,executable,guizhou,nucleic,tripled,equalled,harare,houseguests,potency,ghazi,repeater,overarching,regrouped,broward,ragtime,d'art,nandi,regalia,campsites,mamluk,plating,wirral,presumption,zenit,archivist,emmerdale,decepticon,carabidae,kagoshima,franconia,guarani,formalism,diagonally,submarginal,denys,walkways,punts,metrolink,hydrographic,droplets,upperside,martyred,hummingbird,antebellum,curiously,mufti,friary,chabad,czechs,shaykh,reactivity,berklee,turbonilla,tongan,sultans,woodville,unlicensed,enmity,dominicans,operculum,quarrying,watercolour,catalyzed,gatwick,'what,mesozoic,auditors,shizuoka,footballing,haldane,telemundo,appended,deducted,disseminate,o'shea,pskov,abrasive,entente,gauteng,calicut,lemurs,elasticity,suffused,scopula,staining,upholding,excesses,shostakovich,loanwords,naidu,championnat,chromatography,boasting,goaltenders,engulfed,salah,kilogram,morristown,shingles,shi'a,labourer,renditions,frantisek,jekyll,zonal,nanda,sheriffs,eigenvalues,divisione,endorsing,ushered,auvergne,cadres,repentance,freemasons,utilising,laureates,diocletian,semiconductors,o'grady,vladivostok,sarkozy,trackage,masculinity,hydroxyl,mervyn,muskets,speculations,gridiron,opportunistic,mascots,aleutian,fillies,sewerage,excommunication,borrowers,capillary,trending,sydenham,synthpop,rajah,cagayan,deportes,kedah,faure,extremism,michoacan,levski,culminates,occitan,bioinformatics,unknowingly,inciting,emulated,footpaths,piacenza,dreadnought,viceroyalty,oceanographic,scouted,combinatorial,ornithologist,cannibalism,mujahideen,independiente,cilicia,hindwing,minimized,odeon,gyorgy,rubles,purchaser,collieries,kickers,interurban,coiled,lynchburg,respondent,plzen,detractors,etchings,centering,intensification,tomography,ranjit,warblers,retelling,reinstatement,cauchy,modulus,redirected,evaluates,beginner,kalateh,perforated,manoeuvre,scrimmage,internships,megawatts,mottled,haakon,tunbridge,kalyan,summarised,sukarno,quetta,canonized,henryk,agglomeration,coahuila,diluted,chiropractic,yogyakarta,talladega,sheik,cation,halting,reprisals,sulfuric,musharraf,sympathizers,publicised,arles,lectionary,fracturing,startups,sangha,latrobe,rideau,ligaments,blockading,cremona,lichens,fabaceae,modulated,evocative,embodies,battersea,indistinct,altai,subsystem,acidity,somatic,formula_30,tariq,rationality,sortie,ashlar,pokal,cytoplasmic,valour,bangla,displacing,hijacking,spectrometry,westmeath,weill,charing,goias,revolvers,individualized,tenured,nawaz,piquet,chanted,discard,bernd,phalanx,reworking,unilaterally,subclass,yitzhak,piloting,circumvent,disregarded,semicircular,viscous,tibetans,endeavours,retaliated,cretan,vienne,workhouse,sufficiency,aurangzeb,legalization,lipids,expanse,eintracht,sanjak,megas,125th,bahraini,yakima,eukaryotes,thwart,affirmation,peloponnese,retailing,carbonyl,chairwoman,macedonians,dentate,rockaway,correctness,wealthier,metamorphic,aragonese,fermanagh,pituitary,schrodinger,evokes,spoiler,chariots,akita,genitalia,combe,confectionery,desegregation,experiential,commodores,persepolis,viejo,restorations,virtualization,hispania,printmaking,stipend,yisrael,theravada,expended,radium,tweeted,polygonal,lippe,charente,leveraged,cutaneous,fallacy,fragrant,bypasses,elaborately,rigidity,majid,majorca,kongo,plasmodium,skits,audiovisual,eerste,staircases,prompts,coulthard,northwestward,riverdale,beatrix,copyrights,prudential,communicates,mated,obscenity,asynchronous,analyse,hansa,searchlight,farnborough,patras,asquith,qarah,contours,fumbled,pasteur,redistributed,almeria,sanctuaries,jewry,israelite,clinicians,koblenz,bookshop,affective,goulburn,panelist,sikorsky,cobham,mimics,ringed,portraiture,probabilistic,girolamo,intelligible,andalusian,jalal,athenaeum,eritrean,auxiliaries,pittsburg,devolution,sangam,isolating,anglers,cronulla,annihilated,kidderminster,synthesize,popularised,theophilus,bandstand,innumerable,chagrin,retroactively,weser,multiples,birdlife,goryeo,pawnee,grosser,grappling,tactile,ahmadinejad,turboprop,erdogan,matchday,proletarian,adhering,complements,austronesian,adverts,luminaries,archeology,impressionism,conifer,sodomy,interracial,platoons,lessen,postings,pejorative,registrations,cookery,persecutions,microbes,audits,idiosyncratic,subsp,suspensions,restricts,colouring,ratify,instrumentals,nucleotides,sulla,posits,bibliotheque,diameters,oceanography,instigation,subsumed,submachine,acceptor,legation,borrows,sedge,discriminated,loaves,insurers,highgate,detectable,abandons,kilns,sportscaster,harwich,iterations,preakness,arduous,tensile,prabhu,shortwave,philologist,shareholding,vegetative,complexities,councilors,distinctively,revitalize,automaton,amassing,montreux,khanh,surabaya,nurnberg,pernambuco,cuisines,charterhouse,firsts,tercera,inhabitant,homophobia,naturalism,einar,powerplant,coruna,entertainments,whedon,rajputs,raton,democracies,arunachal,oeuvre,wallonia,jeddah,trolleybuses,evangelism,vosges,kiowa,minimise,encirclement,undertakes,emigrant,beacons,deepened,grammars,publius,preeminent,seyyed,repechage,crafting,headingley,osteopathic,lithography,hotly,bligh,inshore,betrothed,olympians,formula_31,dissociation,trivandrum,arran,petrovic,stettin,disembarked,simplification,bronzes,philo,acrobatic,jonsson,conjectured,supercharged,kanto,detects,cheeses,correlates,harmonics,lifecycle,sudamericana,reservists,decayed,elitserien,parametric,113th,dusky,hogarth,modulo,symbiotic,monopolies,discontinuation,converges,southerners,tucuman,eclipses,enclaves,emits,famicom,caricatures,artistically,levelled,mussels,erecting,mouthparts,cunard,octaves,crucible,guardia,unusable,lagrangian,droughts,ephemeral,pashto,canis,tapering,sasebo,silurian,metallurgical,outscored,evolves,reissues,sedentary,homotopy,greyhawk,reagents,inheriting,onshore,tilting,rebuffed,reusable,naturalists,basingstoke,insofar,offensives,dravidian,curators,planks,rajan,isoforms,flagstaff,preside,globular,egalitarian,linkages,biographers,goalscorers,molybdenum,centralised,nordland,jurists,ellesmere,rosberg,hideyoshi,restructure,biases,borrower,scathing,redress,tunnelling,workflow,magnates,mahendra,dissenters,plethora,transcriptions,handicrafts,keyword,xi'an,petrograd,unser,prokofiev,90deg,madan,bataan,maronite,kearny,carmarthen,termini,consulates,disallowed,rockville,bowery,fanzine,docklands,bests,prohibitions,yeltsin,selassie,naturalization,realisation,dispensary,tribeca,abdulaziz,pocahontas,stagnation,pamplona,cuneiform,propagating,subsurface,christgau,epithelium,schwerin,lynching,routledge,hanseatic,upanishad,glebe,yugoslavian,complicity,endowments,girona,mynetworktv,entomology,plinth,ba'ath,supercup,torus,akkadian,salted,englewood,commandery,belgaum,prefixed,colorless,dartford,enthroned,caesarea,nominative,sandown,safeguards,hulled,formula_32,leamington,dieppe,spearhead,generalizations,demarcation,llanelli,masque,brickwork,recounting,sufism,strikingly,petrochemical,onslow,monologues,emigrating,anderlecht,sturt,hossein,sakhalin,subduction,novices,deptford,zanjan,airstrikes,coalfield,reintroduction,timbaland,hornby,messianic,stinging,universalist,situational,radiocarbon,strongman,rowling,saloons,traffickers,overran,fribourg,cambrai,gravesend,discretionary,finitely,archetype,assessor,pilipinas,exhumed,invocation,interacted,digitized,timisoara,smelter,teton,sexism,precepts,srinagar,pilsudski,carmelite,hanau,scoreline,hernando,trekking,blogging,fanbase,wielded,vesicles,nationalization,banja,rafts,motoring,luang,takeda,girder,stimulates,histone,sunda,nanoparticles,attains,jumpers,catalogued,alluding,pontus,ancients,examiners,shinkansen,ribbentrop,reimbursement,pharmacological,ramat,stringed,imposes,cheaply,transplanted,taiping,mizoram,looms,wallabies,sideman,kootenay,encased,sportsnet,revolutionized,tangier,benthic,runic,pakistanis,heatseekers,shyam,mishnah,presbyterians,stadt,sutras,straddles,zoroastrian,infer,fueling,gymnasts,ofcom,gunfight,journeyman,tracklist,oshawa,ps500,pa'in,mackinac,xiongnu,mississippian,breckinridge,freemason,bight,autoroute,liberalization,distantly,thrillers,solomons,presumptive,romanization,anecdotal,bohemians,unpaved,milder,concurred,spinners,alphabets,strenuous,rivieres,kerrang,mistreatment,dismounted,intensively,carlist,dancehall,shunting,pluralism,trafficked,brokered,bonaventure,bromide,neckar,designates,malian,reverses,sotheby,sorghum,serine,environmentalists,languedoc,consulship,metering,bankstown,handlers,militiamen,conforming,regularity,pondicherry,armin,capsized,consejo,capitalists,drogheda,granular,purged,acadians,endocrine,intramural,elicit,terns,orientations,miklos,omitting,apocryphal,slapstick,brecon,pliocene,affords,typography,emigre,tsarist,tomasz,beset,nishi,necessitating,encyclical,roleplaying,journeyed,inflow,sprints,progressives,novosibirsk,cameroonian,ephesus,speckled,kinshasa,freiherr,burnaby,dalmatian,torrential,rigor,renegades,bhakti,nurburgring,cosimo,convincingly,reverting,visayas,lewisham,charlottetown,charadriiformesfamily,transferable,jodhpur,converters,deepening,camshaft,underdeveloped,protease,polonia,uterine,quantify,tobruk,dealerships,narasimha,fortran,inactivity,1780s,victors,categorised,naxos,workstation,skink,sardinian,chalice,precede,dammed,sondheim,phineas,tutored,sourcing,uncompromising,placer,tyneside,courtiers,proclaims,pharmacies,hyogo,booksellers,sengoku,kursk,spectrometer,countywide,wielkopolski,bobsleigh,shetty,llywelyn,consistory,heretics,guinean,cliches,individualism,monolithic,imams,usability,bursa,deliberations,railings,torchwood,inconsistency,balearic,stabilizer,demonstrator,facet,radioactivity,outboard,educates,d'oyly,heretical,handover,jurisdictional,shockwave,hispaniola,conceptually,routers,unaffiliated,trentino,formula_33,cypriots,intervenes,neuchatel,formulating,maggiore,delisted,alcohols,thessaly,potable,estimator,suborder,fluency,mimicry,clergymen,infrastructures,rivals.com,baroda,subplot,majlis,plano,clinching,connotation,carinae,savile,intercultural,transcriptional,sandstones,ailerons,annotations,impresario,heinkel,scriptural,intermodal,astrological,ribbed,northeastward,posited,boers,utilise,kalmar,phylum,breakwater,skype,textured,guideline,azeri,rimini,massed,subsidence,anomalous,wolfsburg,polyphonic,accrediting,vodacom,kirov,captaining,kelantan,logie,fervent,eamon,taper,bundeswehr,disproportionately,divination,slobodan,pundits,hispano,kinetics,reunites,makati,ceasing,statistician,amending,chiltern,eparchy,riverine,melanoma,narragansett,pagans,raged,toppled,breaching,zadar,holby,dacian,ochre,velodrome,disparities,amphoe,sedans,webpage,williamsport,lachlan,groton,baring,swastika,heliport,unwillingness,razorbacks,exhibitors,foodstuffs,impacting,tithe,appendages,dermot,subtypes,nurseries,balinese,simulating,stary,remakes,mundi,chautauqua,geologically,stockade,hakka,dilute,kalimantan,pahang,overlapped,fredericton,baha'u'llah,jahangir,damping,benefactors,shomali,triumphal,cieszyn,paradigms,shielded,reggaeton,maharishi,zambian,shearing,golestan,mirroring,partitioning,flyover,songbook,incandescent,merrimack,huguenots,sangeet,vulnerabilities,trademarked,drydock,tantric,honoris,queenstown,labelling,iterative,enlists,statesmen,anglicans,herge,qinghai,burgundian,islami,delineated,zhuge,aggregated,banknote,qatari,suitably,tapestries,asymptotic,charleroi,majorities,pyramidellidae,leanings,climactic,tahir,ramsar,suppressor,revisionist,trawler,ernakulam,penicillium,categorization,slits,entitlement,collegium,earths,benefice,pinochet,puritans,loudspeaker,stockhausen,eurocup,roskilde,alois,jaroslav,rhondda,boutiques,vigor,neurotransmitter,ansar,malden,ferdinando,sported,relented,intercession,camberwell,wettest,thunderbolts,positional,oriel,cloverleaf,penalized,shoshone,rajkumar,completeness,sharjah,chromosomal,belgians,woolen,ultrasonic,sequentially,boleyn,mordella,microsystems,initiator,elachista,mineralogy,rhododendron,integrals,compostela,hamza,sawmills,stadio,berlioz,maidens,stonework,yachting,tappeh,myocardial,laborer,workstations,costumed,nicaea,lanark,roundtable,mashhad,nablus,algonquian,stuyvesant,sarkar,heroines,diwan,laments,intonation,intrigues,almaty,feuded,grandes,algarve,rehabilitate,macrophages,cruciate,dismayed,heuristic,eliezer,kozhikode,covalent,finalised,dimorphism,yaroslavl,overtaking,leverkusen,middlebury,feeders,brookings,speculates,insoluble,lodgings,jozsef,cysteine,shenyang,habilitation,spurious,brainchild,mtdna,comique,albedo,recife,partick,broadening,shahi,orientated,himalaya,swabia,palme,mennonites,spokeswoman,conscripts,sepulchre,chartres,eurozone,scaffold,invertebrate,parishad,bagan,heian,watercolors,basse,supercomputer,commences,tarragona,plainfield,arthurian,functor,identically,murex,chronicling,pressings,burrowing,histoire,guayaquil,goalkeeping,differentiable,warburg,machining,aeneas,kanawha,holocene,ramesses,reprisal,qingdao,avatars,turkestan,cantatas,besieging,repudiated,teamsters,equipping,hydride,ahmadiyya,euston,bottleneck,computations,terengganu,kalinga,stela,rediscovery,'this,azhar,stylised,karelia,polyethylene,kansai,motorised,lounges,normalization,calculators,1700s,goalkeepers,unfolded,commissary,cubism,vignettes,multiverse,heaters,briton,sparingly,childcare,thorium,plock,riksdag,eunuchs,catalysis,limassol,perce,uncensored,whitlam,ulmus,unites,mesopotamian,refraction,biodiesel,forza,fulda,unseated,mountbatten,shahrak,selenium,osijek,mimicking,antimicrobial,axons,simulcasting,donizetti,swabian,sportsmen,hafiz,neared,heraclius,locates,evaded,subcarpathian,bhubaneswar,negeri,jagannath,thaksin,aydin,oromo,lateran,goldsmiths,multiculturalism,cilia,mihai,evangelists,lorient,qajar,polygons,vinod,mechanised,anglophone,prefabricated,mosses,supervillain,airliners,biofuels,iodide,innovators,valais,wilberforce,logarithm,intelligentsia,dissipation,sanctioning,duchies,aymara,porches,simulators,mostar,telepathic,coaxial,caithness,burghs,fourths,stratification,joaquim,scribes,meteorites,monarchist,germination,vries,desiring,replenishment,istria,winemaking,tammany,troupes,hetman,lanceolate,pelagic,triptych,primeira,scant,outbound,hyphae,denser,bentham,basie,normale,executes,ladislaus,kontinental,herat,cruiserweight,activision,customization,manoeuvres,inglewood,northwood,waveform,investiture,inpatient,alignments,kiryat,rabat,archimedes,ustad,monsanto,archetypal,kirkby,sikhism,correspondingly,catskill,overlaid,petrels,widowers,unicameral,federalists,metalcore,gamerankings,mussel,formula_34,lymphocytes,cystic,southgate,vestiges,immortals,kalam,strove,amazons,pocono,sociologists,sopwith,adheres,laurens,caregivers,inspecting,transylvanian,rebroadcast,rhenish,miserables,pyrams,blois,newtonian,carapace,redshirt,gotland,nazir,unilever,distortions,linebackers,federalism,mombasa,lumen,bernoulli,favouring,aligarh,denounce,steamboats,dnieper,stratigraphic,synths,bernese,umass,icebreaker,guanajuato,heisenberg,boldly,diodes,ladakh,dogmatic,scriptwriter,maritimes,battlestar,symposia,adaptable,toluca,bhavan,nanking,ieyasu,picardy,soybean,adalbert,brompton,deutsches,brezhnev,glandular,laotian,hispanicized,ibadan,personification,dalit,yamuna,regio,dispensed,yamagata,zweibrucken,revising,fandom,stances,participle,flavours,khitan,vertebral,crores,mayaguez,dispensation,guntur,undefined,harpercollins,unionism,meena,leveling,philippa,refractory,telstra,judea,attenuation,pylons,elaboration,elegy,edging,gracillariidae,residencies,absentia,reflexive,deportations,dichotomy,stoves,sanremo,shimon,menachem,corneal,conifers,mordellidae,facsimile,diagnoses,cowper,citta,viticulture,divisive,riverview,foals,mystics,polyhedron,plazas,airspeed,redgrave,motherland,impede,multiplicity,barrichello,airships,pharmacists,harvester,clays,payloads,differentiating,popularize,caesars,tunneling,stagnant,circadian,indemnity,sensibilities,musicology,prefects,serfs,metra,lillehammer,carmarthenshire,kiosks,welland,barbican,alkyl,tillandsia,gatherers,asociacion,showings,bharati,brandywine,subversion,scalable,pfizer,dawla,barium,dardanelles,nsdap,konig,ayutthaya,hodgkin,sedimentation,completions,purchasers,sponsorships,maximizing,banked,taoism,minot,enrolls,fructose,aspired,capuchin,outages,artois,carrollton,totality,osceola,pawtucket,fontainebleau,converged,queretaro,competencies,botha,allotments,sheaf,shastri,obliquely,banding,catharines,outwardly,monchengladbach,driest,contemplative,cassini,ranga,pundit,kenilworth,tiananmen,disulfide,formula_35,townlands,codice_3,looping,caravans,rachmaninoff,segmentation,fluorine,anglicised,gnostic,dessau,discern,reconfigured,altrincham,rebounding,battlecruiser,ramblers,1770s,convective,triomphe,miyagi,mourners,instagram,aloft,breastfeeding,courtyards,folkestone,changsha,kumamoto,saarland,grayish,provisionally,appomattox,uncial,classicism,mahindra,elapsed,supremes,monophyletic,cautioned,formula_36,noblewoman,kernels,sucre,swaps,bengaluru,grenfell,epicenter,rockhampton,worshipful,licentiate,metaphorical,malankara,amputated,wattle,palawan,tankobon,nobunaga,polyhedra,transduction,jilin,syrians,affinities,fluently,emanating,anglicized,sportscar,botanists,altona,dravida,chorley,allocations,kunming,luanda,premiering,outlived,mesoamerica,lingual,dissipating,impairments,attenborough,balustrade,emulator,bakhsh,cladding,increments,ascents,workington,qal'eh,winless,categorical,petrel,emphasise,dormer,toros,hijackers,telescopic,solidly,jankovic,cession,gurus,madoff,newry,subsystems,northside,talib,englishmen,farnese,holographic,electives,argonne,scrivener,predated,brugge,nauvoo,catalyses,soared,siddeley,graphically,powerlifting,funicular,sungai,coercive,fusing,uncertainties,locos,acetic,diverge,wedgwood,dressings,tiebreaker,didactic,vyacheslav,acreage,interplanetary,battlecruisers,sunbury,alkaloids,hairpin,automata,wielkie,interdiction,plugins,monkees,nudibranch,esporte,approximations,disabling,powering,characterisation,ecologically,martinsville,termen,perpetuated,lufthansa,ascendancy,motherboard,bolshoi,athanasius,prunus,dilution,invests,nonzero,mendocino,charan,banque,shaheed,counterculture,unita,voivode,hospitalization,vapour,supermarine,resistor,steppes,osnabruck,intermediates,benzodiazepines,sunnyside,privatized,geopolitical,ponta,beersheba,kievan,embody,theoretic,sangh,cartographer,blige,rotors,thruway,battlefields,discernible,demobilized,broodmare,colouration,sagas,policymakers,serialization,augmentation,hoare,frankfurter,transnistria,kinases,detachable,generational,converging,antiaircraft,khaki,bimonthly,coadjutor,arkhangelsk,kannur,buffers,livonian,northwich,enveloped,cysts,yokozuna,herne,beeching,enron,virginian,woollen,excepting,competitively,outtakes,recombinant,hillcrest,clearances,pathe,cumbersome,brasov,u.s.a,likud,christiania,cruciform,hierarchies,wandsworth,lupin,resins,voiceover,sitar,electrochemical,mediacorp,typhus,grenadiers,hepatic,pompeii,weightlifter,bosniak,oxidoreductase,undersecretary,rescuers,ranji,seleucid,analysing,exegesis,tenancy,toure,kristiansand,110th,carillon,minesweepers,poitou,acceded,palladian,redevelop,naismith,rifled,proletariat,shojo,hackensack,harvests,endpoint,kuban,rosenborg,stonehenge,authorisation,jacobean,revocation,compatriots,colliding,undetermined,okayama,acknowledgment,angelou,fresnel,chahar,ethereal,mg/kg,emmet,mobilised,unfavourable,cultura,characterizing,parsonage,skeptics,expressways,rabaul,medea,guardsmen,visakhapatnam,caddo,homophobic,elmwood,encircling,coexistence,contending,seljuk,mycologist,infertility,moliere,insolvent,covenants,underpass,holme,landesliga,workplaces,delinquency,methamphetamine,contrived,tableau,tithes,overlying,usurped,contingents,spares,oligocene,molde,beatification,mordechai,balloting,pampanga,navigators,flowered,debutant,codec,orogeny,newsletters,solon,ambivalent,ubisoft,archdeaconry,harpers,kirkus,jabal,castings,kazhagam,sylhet,yuwen,barnstaple,amidships,causative,isuzu,watchtower,granules,canaveral,remuneration,insurer,payout,horizonte,integrative,attributing,kiwis,skanderbeg,asymmetry,gannett,urbanism,disassembled,unaltered,precluded,melodifestivalen,ascends,plugin,gurkha,bisons,stakeholder,industrialisation,abbotsford,sextet,bustling,uptempo,slavia,choreographers,midwives,haram,javed,gazetteer,subsection,natively,weighting,lysine,meera,redbridge,muchmusic,abruzzo,adjoins,unsustainable,foresters,kbit/s,cosmopterigidae,secularism,poetics,causality,phonograph,estudiantes,ceausescu,universitario,adjoint,applicability,gastropods,nagaland,kentish,mechelen,atalanta,woodpeckers,lombards,gatineau,romansh,avraham,acetylcholine,perturbation,galois,wenceslaus,fuzhou,meandering,dendritic,sacristy,accented,katha,therapeutics,perceives,unskilled,greenhouses,analogues,chaldean,timbre,sloped,volodymyr,sadiq,maghreb,monogram,rearguard,caucuses,mures,metabolite,uyezd,determinism,theosophical,corbet,gaels,disruptions,bicameral,ribosomal,wolseley,clarksville,watersheds,tarsi,radon,milanese,discontinuous,aristotelian,whistleblower,representational,hashim,modestly,localised,atrial,hazara,ravana,troyes,appointees,rubus,morningside,amity,aberdare,ganglia,wests,zbigniew,aerobatic,depopulated,corsican,introspective,twinning,hardtop,shallower,cataract,mesolithic,emblematic,graced,lubrication,republicanism,voronezh,bastions,meissen,irkutsk,oboes,hokkien,sprites,tenet,individualist,capitulated,oakville,dysentery,orientalist,hillsides,keywords,elicited,incised,lagging,apoel,lengthening,attractiveness,marauders,sportswriter,decentralization,boltzmann,contradicts,draftsman,precipitate,solihull,norske,consorts,hauptmann,riflemen,adventists,syndromes,demolishing,customize,continuo,peripherals,seamlessly,linguistically,bhushan,orphanages,paraul,lessened,devanagari,quarto,responders,patronymic,riemannian,altoona,canonization,honouring,geodetic,exemplifies,republica,enzymatic,porters,fairmount,pampa,sufferers,kamchatka,conjugated,coachella,uthman,repositories,copious,headteacher,awami,phoneme,homomorphism,franconian,moorland,davos,quantified,kamloops,quarks,mayoralty,weald,peacekeepers,valerian,particulate,insiders,perthshire,caches,guimaraes,piped,grenadines,kosciuszko,trombonist,artemisia,covariance,intertidal,soybeans,beatified,ellipse,fruiting,deafness,dnipropetrovsk,accrued,zealous,mandala,causation,junius,kilowatt,bakeries,montpelier,airdrie,rectified,bungalows,toleration,debian,pylon,trotskyist,posteriorly,two-and-a-half,herbivorous,islamists,poetical,donne,wodehouse,frome,allium,assimilate,phonemic,minaret,unprofitable,darpa,untenable,leaflet,bitcoin,zahir,thresholds,argentino,jacopo,bespoke,stratified,wellbeing,shiite,basaltic,timberwolves,secrete,taunts,marathons,isomers,carre,consecrators,penobscot,pitcairn,sakha,crosstown,inclusions,impassable,fenders,indre,uscgc,jordi,retinue,logarithmic,pilgrimages,railcar,cashel,blackrock,macroscopic,aligning,tabla,trestle,certify,ronson,palps,dissolves,thickened,silicate,taman,walsingham,hausa,lowestoft,rondo,oleksandr,cuyahoga,retardation,countering,cricketing,holborn,identifiers,hells,geophysics,infighting,sculpting,balaji,webbed,irradiation,runestone,trusses,oriya,sojourn,forfeiture,colonize,exclaimed,eucharistic,lackluster,glazing,northridge,gutenberg,stipulates,macroeconomic,priori,outermost,annular,udinese,insulating,headliner,godel,polytope,megalithic,salix,sharapova,derided,muskegon,braintree,plateaus,confers,autocratic,isomer,interstitial,stamping,omits,kirtland,hatchery,evidences,intifada,111th,podgorica,capua,motivating,nuneaton,jakub,korsakov,amitabh,mundial,monrovia,gluten,predictor,marshalling,d'orleans,levers,touchscreen,brantford,fricative,banishment,descendent,antagonism,ludovico,loudspeakers,formula_37,livelihoods,manassas,steamships,dewsbury,uppermost,humayun,lures,pinnacles,dependents,lecce,clumps,observatories,paleozoic,dedicating,samiti,draughtsman,gauls,incite,infringing,nepean,pythagorean,convents,triumvirate,seigneur,gaiman,vagrant,fossa,byproduct,serrated,renfrewshire,sheltering,achaemenid,dukedom,catchers,sampdoria,platelet,bielefeld,fluctuating,phenomenology,strikeout,ethnology,prospectors,woodworking,tatra,wildfires,meditations,agrippa,fortescue,qureshi,wojciech,methyltransferase,accusative,saatchi,amerindian,volcanism,zeeland,toyama,vladimirovich,allege,polygram,redox,budgeted,advisories,nematode,chipset,starscream,tonbridge,hardening,shales,accompanist,paraded,phonographic,whitefish,sportive,audiobook,kalisz,hibernation,latif,duels,ps200,coxeter,nayak,safeguarding,cantabria,minesweeping,zeiss,dunams,catholicos,sawtooth,ontological,nicobar,bridgend,unclassified,intrinsically,hanoverian,rabbitohs,kenseth,alcalde,northumbrian,raritan,septuagint,presse,sevres,origen,dandenong,peachtree,intersected,impeded,usages,hippodrome,novara,trajectories,customarily,yardage,inflected,yanow,kalan,taverns,liguria,librettist,intermarriage,1760s,courant,gambier,infanta,ptolemaic,ukulele,haganah,sceptical,manchukuo,plexus,implantation,hilal,intersex,efficiencies,arbroath,hagerstown,adelphi,diario,marais,matti,lifes,coining,modalities,divya,bletchley,conserving,ivorian,mithridates,generative,strikeforce,laymen,toponymy,pogrom,satya,meticulously,agios,dufferin,yaakov,fortnightly,cargoes,deterrence,prefrontal,przemysl,mitterrand,commemorations,chatsworth,gurdwara,abuja,chakraborty,badajoz,geometries,artiste,diatonic,ganglion,presides,marymount,nanak,cytokines,feudalism,storks,rowers,widens,politico,evangelicals,assailants,pittsfield,allowable,bijapur,telenovelas,dichomeris,glenelg,herbivores,keita,inked,radom,fundraisers,constantius,boheme,portability,komnenos,crystallography,derrida,moderates,tavistock,fateh,spacex,disjoint,bristles,commercialized,interwoven,empirically,regius,bulacan,newsday,showa,radicalism,yarrow,pleura,sayed,structuring,cotes,reminiscences,acetyl,edicts,escalators,aomori,encapsulated,legacies,bunbury,placings,fearsome,postscript,powerfully,keighley,hildesheim,amicus,crevices,deserters,benelux,aurangabad,freeware,ioannis,carpathians,chirac,seceded,prepaid,landlocked,naturalised,yanukovych,soundscan,blotch,phenotypic,determinants,twente,dictatorial,giessen,composes,recherche,pathophysiology,inventories,ayurveda,elevating,gravestone,degeneres,vilayet,popularizing,spartanburg,bloemfontein,previewed,renunciation,genotype,ogilvy,tracery,blacklisted,emissaries,diploid,disclosures,tupolev,shinjuku,antecedents,pennine,braganza,bhattacharya,countable,spectroscopic,ingolstadt,theseus,corroborated,compounding,thrombosis,extremadura,medallions,hasanabad,lambton,perpetuity,glycol,besancon,palaiologos,pandey,caicos,antecedent,stratum,laserdisc,novitiate,crowdfunding,palatal,sorceress,dassault,toughness,celle,cezanne,vientiane,tioga,hander,crossbar,gisborne,cursor,inspectorate,serif,praia,sphingidae,nameplate,psalter,ivanovic,sitka,equalised,mutineers,sergius,outgrowth,creationism,haredi,rhizomes,predominate,undertakings,vulgate,hydrothermal,abbeville,geodesic,kampung,physiotherapy,unauthorised,asteraceae,conservationist,minoan,supersport,mohammadabad,cranbrook,mentorship,legitimately,marshland,datuk,louvain,potawatomi,carnivores,levies,lyell,hymnal,regionals,tinto,shikoku,conformal,wanganui,beira,lleida,standstill,deloitte,formula_40,corbusier,chancellery,mixtapes,airtime,muhlenberg,formula_39,bracts,thrashers,prodigious,gironde,chickamauga,uyghurs,substitutions,pescara,batangas,gregarious,gijon,paleo,mathura,pumas,proportionally,hawkesbury,yucca,kristiania,funimation,fluted,eloquence,mohun,aftermarket,chroniclers,futurist,nonconformist,branko,mannerisms,lesnar,opengl,altos,retainers,ashfield,shelbourne,sulaiman,divisie,gwent,locarno,lieder,minkowski,bivalve,redeployed,cartography,seaway,bookings,decays,ostend,antiquaries,pathogenesis,formula_38,chrysalis,esperance,valli,motogp,homelands,bridged,bloor,ghazal,vulgaris,baekje,prospector,calculates,debtors,hesperiidae,titian,returner,landgrave,frontenac,kelowna,pregame,castelo,caius,canoeist,watercolours,winterthur,superintendents,dissonance,dubstep,adorn,matic,salih,hillel,swordsman,flavoured,emitter,assays,monongahela,deeded,brazzaville,sufferings,babylonia,fecal,umbria,astrologer,gentrification,frescos,phasing,zielona,ecozone,candido,manoj,quadrilateral,gyula,falsetto,prewar,puntland,infinitive,contraceptive,bakhtiari,ohrid,socialization,tailplane,evoking,havelock,macapagal,plundering,104th,keynesian,templars,phrasing,morphologically,czestochowa,humorously,catawba,burgas,chiswick,ellipsoid,kodansha,inwards,gautama,katanga,orthopaedic,heilongjiang,sieges,outsourced,subterminal,vijayawada,hares,oration,leitrim,ravines,manawatu,cryogenic,tracklisting,about.com,ambedkar,degenerated,hastened,venturing,lobbyists,shekhar,typefaces,northcote,rugen,'good,ornithology,asexual,hemispheres,unsupported,glyphs,spoleto,epigenetic,musicianship,donington,diogo,kangxi,bisected,polymorphism,megawatt,salta,embossed,cheetahs,cruzeiro,unhcr,aristide,rayleigh,maturing,indonesians,noire,llano,ffffff,camus,purges,annales,convair,apostasy,algol,phage,apaches,marketers,aldehyde,pompidou,kharkov,forgeries,praetorian,divested,retrospectively,gornji,scutellum,bitumen,pausanias,magnification,imitations,nyasaland,geographers,floodlights,athlone,hippolyte,expositions,clarinetist,razak,neutrinos,rotax,sheykh,plush,interconnect,andalus,cladogram,rudyard,resonator,granby,blackfriars,placido,windscreen,sahel,minamoto,haida,cations,emden,blackheath,thematically,blacklist,pawel,disseminating,academical,undamaged,raytheon,harsher,powhatan,ramachandran,saddles,paderborn,capping,zahra,prospecting,glycine,chromatin,profane,banska,helmand,okinawan,dislocation,oscillators,insectivorous,foyle,gilgit,autonomic,tuareg,sluice,pollinated,multiplexed,granary,narcissus,ranchi,staines,nitra,goalscoring,midwifery,pensioners,algorithmic,meetinghouse,biblioteca,besar,narva,angkor,predate,lohan,cyclical,detainee,occipital,eventing,faisalabad,dartmoor,kublai,courtly,resigns,radii,megachilidae,cartels,shortfall,xhosa,unregistered,benchmarks,dystopian,bulkhead,ponsonby,jovanovic,accumulates,papuan,bhutanese,intuitively,gotaland,headliners,recursion,dejan,novellas,diphthongs,imbued,withstood,analgesic,amplify,powertrain,programing,maidan,alstom,affirms,eradicated,summerslam,videogame,molla,severing,foundered,gallium,atmospheres,desalination,shmuel,howmeh,catolica,bossier,reconstructing,isolates,lyase,tweets,unconnected,tidewater,divisible,cohorts,orebro,presov,furnishing,folklorist,simplifying,centrale,notations,factorization,monarchies,deepen,macomb,facilitation,hennepin,declassified,redrawn,microprocessors,preliminaries,enlarging,timeframe,deutschen,shipbuilders,patiala,ferrous,aquariums,genealogies,vieux,unrecognized,bridgwater,tetrahedral,thule,resignations,gondwana,registries,agder,dataset,felled,parva,analyzer,worsen,coleraine,columella,blockaded,polytechnique,reassembled,reentry,narvik,greys,nigra,knockouts,bofors,gniezno,slotted,hamasaki,ferrers,conferring,thirdly,domestication,photojournalist,universality,preclude,ponting,halved,thereupon,photosynthetic,ostrava,mismatch,pangasinan,intermediaries,abolitionists,transited,headings,ustase,radiological,interconnection,dabrowa,invariants,honorius,preferentially,chantilly,marysville,dialectical,antioquia,abstained,gogol,dirichlet,muricidae,symmetries,reproduces,brazos,fatwa,bacillus,ketone,paribas,chowk,multiplicative,dermatitis,mamluks,devotes,adenosine,newbery,meditative,minefields,inflection,oxfam,conwy,bystrica,imprints,pandavas,infinitesimal,conurbation,amphetamine,reestablish,furth,edessa,injustices,frankston,serjeant,4x200,khazar,sihanouk,longchamp,stags,pogroms,coups,upperparts,endpoints,infringed,nuanced,summing,humorist,pacification,ciaran,jamaat,anteriorly,roddick,springboks,faceted,hypoxia,rigorously,cleves,fatimid,ayurvedic,tabled,ratna,senhora,maricopa,seibu,gauguin,holomorphic,campgrounds,amboy,coordinators,ponderosa,casemates,ouachita,nanaimo,mindoro,zealander,rimsky,cluny,tomaszow,meghalaya,caetano,tilak,roussillon,landtag,gravitation,dystrophy,cephalopods,trombones,glens,killarney,denominated,anthropogenic,pssas,roubaix,carcasses,montmorency,neotropical,communicative,rabindranath,ordinated,separable,overriding,surged,sagebrush,conciliation,codice_4,durrani,phosphatase,qadir,votive,revitalized,taiyuan,tyrannosaurus,graze,slovaks,nematodes,environmentalism,blockhouse,illiteracy,schengen,ecotourism,alternation,conic,wields,hounslow,blackfoot,kwame,ambulatory,volhynia,hordaland,croton,piedras,rohit,drava,conceptualized,birla,illustrative,gurgaon,barisal,tutsi,dezong,nasional,polje,chanson,clarinets,krasnoyarsk,aleksandrovich,cosmonaut,d'este,palliative,midseason,silencing,wardens,durer,girders,salamanders,torrington,supersonics,lauda,farid,circumnavigation,embankments,funnels,bajnoksag,lorries,cappadocia,jains,warringah,retirees,burgesses,equalization,cusco,ganesan,algal,amazonian,lineups,allocating,conquerors,usurper,mnemonic,predating,brahmaputra,ahmadabad,maidenhead,numismatic,subregion,encamped,reciprocating,freebsd,irgun,tortoises,governorates,zionists,airfoil,collated,ajmer,fiennes,etymological,polemic,chadian,clerestory,nordiques,fluctuated,calvados,oxidizing,trailhead,massena,quarrels,dordogne,tirunelveli,pyruvate,pulsed,athabasca,sylar,appointee,serer,japonica,andronikos,conferencing,nicolaus,chemin,ascertained,incited,woodbine,helices,hospitalised,emplacements,to/from,orchestre,tyrannical,pannonia,methodism,pop/rock,shibuya,berbers,despot,seaward,westpac,separator,perpignan,alamein,judeo,publicize,quantization,ethniki,gracilis,menlo,offside,oscillating,unregulated,succumbing,finnmark,metrical,suleyman,raith,sovereigns,bundesstrasse,kartli,fiduciary,darshan,foramen,curler,concubines,calvinism,larouche,bukhara,sophomores,mohanlal,lutheranism,monomer,eamonn,'black,uncontested,immersive,tutorials,beachhead,bindings,permeable,postulates,comite,transformative,indiscriminate,hofstra,associacao,amarna,dermatology,lapland,aosta,babur,unambiguous,formatting,schoolboys,gwangju,superconducting,replayed,adherent,aureus,compressors,forcible,spitsbergen,boulevards,budgeting,nossa,annandale,perumal,interregnum,sassoon,kwajalein,greenbrier,caldas,triangulation,flavius,increment,shakhtar,nullified,pinfall,nomen,microfinance,depreciation,cubist,steeper,splendour,gruppe,everyman,chasers,campaigners,bridle,modality,percussive,darkly,capes,velar,picton,triennial,factional,padang,toponym,betterment,norepinephrine,112th,estuarine,diemen,warehousing,morphism,ideologically,pairings,immunization,crassus,exporters,sefer,flocked,bulbous,deseret,booms,calcite,bohol,elven,groot,pulau,citigroup,wyeth,modernizing,layering,pastiche,complies,printmaker,condenser,theropod,cassino,oxyrhynchus,akademie,trainings,lowercase,coxae,parte,chetniks,pentagonal,keselowski,monocoque,morsi,reticulum,meiosis,clapboard,recoveries,tinge,an/fps,revista,sidon,livre,epidermis,conglomerates,kampong,congruent,harlequins,tergum,simplifies,epidemiological,underwriting,tcp/ip,exclusivity,multidimensional,mysql,columbine,ecologist,hayat,sicilies,levees,handset,aesop,usenet,pacquiao,archiving,alexandrian,compensatory,broadsheet,annotation,bahamian,d'affaires,interludes,phraya,shamans,marmara,customizable,immortalized,ambushes,chlorophyll,diesels,emulsion,rheumatoid,voluminous,screenwriters,tailoring,sedis,runcorn,democratization,bushehr,anacostia,constanta,antiquary,sixtus,radiate,advaita,antimony,acumen,barristers,reichsbahn,ronstadt,symbolist,pasig,cursive,secessionist,afrikaner,munnetra,inversely,adsorption,syllabic,moltke,idioms,midline,olimpico,diphosphate,cautions,radziwill,mobilisation,copelatus,trawlers,unicron,bhaskar,financiers,minimalism,derailment,marxists,oireachtas,abdicate,eigenvalue,zafar,vytautas,ganguly,chelyabinsk,telluride,subordination,ferried,dived,vendee,pictish,dimitrov,expiry,carnation,cayley,magnitudes,lismore,gretna,sandwiched,unmasked,sandomierz,swarthmore,tetra,nanyang,pevsner,dehradun,mormonism,rashi,complying,seaplanes,ningbo,cooperates,strathcona,mornington,mestizo,yulia,edgbaston,palisade,ethno,polytopes,espirito,tymoshenko,pronunciations,paradoxical,taichung,chipmunks,erhard,maximise,accretion,kanda,`abdu'l,narrowest,umpiring,mycenaean,divisor,geneticist,ceredigion,barque,hobbyists,equates,auxerre,spinose,cheil,sweetwater,guano,carboxylic,archiv,tannery,cormorant,agonists,fundacion,anbar,tunku,hindrance,meerut,concordat,secunderabad,kachin,achievable,murfreesboro,comprehensively,forges,broadest,synchronised,speciation,scapa,aliyev,conmebol,tirelessly,subjugated,pillaged,udaipur,defensively,lakhs,stateless,haasan,headlamps,patterning,podiums,polyphony,mcmurdo,mujer,vocally,storeyed,mucosa,multivariate,scopus,minimizes,formalised,certiorari,bourges,populate,overhanging,gaiety,unreserved,borromeo,woolworths,isotopic,bashar,purify,vertebra,medan,juxtaposition,earthwork,elongation,chaudhary,schematic,piast,steeped,nanotubes,fouls,achaea,legionnaires,abdur,qmjhl,embraer,hardback,centerville,ilocos,slovan,whitehorse,mauritian,moulding,mapuche,donned,provisioning,gazprom,jonesboro,audley,lightest,calyx,coldwater,trigonometric,petroglyphs,psychoanalyst,congregate,zambezi,fissure,supervises,bexley,etobicoke,wairarapa,tectonics,emphasises,formula_41,debugging,linfield,spatially,ionizing,ungulates,orinoco,clades,erlangen,news/talk,vols.,ceara,yakovlev,finsbury,entanglement,fieldhouse,graphene,intensifying,grigory,keyong,zacatecas,ninian,allgemeine,keswick,societa,snorri,femininity,najib,monoclonal,guyanese,postulate,huntly,abbeys,machinist,yunus,emphasising,ishaq,urmia,bremerton,pretenders,lumiere,thoroughfares,chikara,dramatized,metathorax,taiko,transcendence,wycliffe,retrieves,umpired,steuben,racehorses,taylors,kuznetsov,montezuma,precambrian,canopies,gaozong,propodeum,disestablished,retroactive,shoreham,rhizome,doubleheader,clinician,diwali,quartzite,shabaab,agassiz,despatched,stormwater,luxemburg,callao,universidade,courland,skane,glyph,dormers,witwatersrand,curacy,qualcomm,nansen,entablature,lauper,hausdorff,lusaka,ruthenian,360deg,cityscape,douai,vaishnava,spars,vaulting,rationalist,gygax,sequestration,typology,pollinates,accelerators,leben,colonials,cenotaph,imparted,carthaginians,equaled,rostrum,gobind,bodhisattva,oberst,bicycling,arabi,sangre,biophysics,hainaut,vernal,lunenburg,apportioned,finches,lajos,nenad,repackaged,zayed,nikephoros,r.e.m,swaminarayan,gestalt,unplaced,crags,grohl,sialkot,unsaturated,gwinnett,linemen,forays,palakkad,writs,instrumentalists,aircrews,badged,terrapins,180deg,oneness,commissariat,changi,pupation,circumscribed,contador,isotropic,administrated,fiefs,nimes,intrusions,minoru,geschichte,nadph,tainan,changchun,carbondale,frisia,swapo,evesham,hawai'i,encyclopedic,transporters,dysplasia,formula_42,onsite,jindal,guetta,judgements,narbonne,permissions,paleogene,rationalism,vilna,isometric,subtracted,chattahoochee,lamina,missa,greville,pervez,lattices,persistently,crystallization,timbered,hawaiians,fouling,interrelated,masood,ripening,stasi,gamal,visigothic,warlike,cybernetics,tanjung,forfar,cybernetic,karelian,brooklands,belfort,greifswald,campeche,inexplicably,refereeing,understory,uninterested,prius,collegiately,sefid,sarsfield,categorize,biannual,elsevier,eisteddfod,declension,autonoma,procuring,misrepresentation,novelization,bibliographic,shamanism,vestments,potash,eastleigh,ionized,turan,lavishly,scilly,balanchine,importers,parlance,'that,kanyakumari,synods,mieszko,crossovers,serfdom,conformational,legislated,exclave,heathland,sadar,differentiates,propositional,konstantinos,photoshop,manche,vellore,appalachia,orestes,taiga,exchanger,grozny,invalidated,baffin,spezia,staunchly,eisenach,robustness,virtuosity,ciphers,inlets,bolagh,understandings,bosniaks,parser,typhoons,sinan,luzerne,webcomic,subtraction,jhelum,businessweek,ceske,refrained,firebox,mitigated,helmholtz,dilip,eslamabad,metalwork,lucan,apportionment,provident,gdynia,schooners,casement,danse,hajjiabad,benazir,buttress,anthracite,newsreel,wollaston,dispatching,cadastral,riverboat,provincetown,nantwich,missal,irreverent,juxtaposed,darya,ennobled,electropop,stereoscopic,maneuverability,laban,luhansk,udine,collectibles,haulage,holyrood,materially,supercharger,gorizia,shkoder,townhouses,pilate,layoffs,folkloric,dialectic,exuberant,matures,malla,ceuta,citizenry,crewed,couplet,stopover,transposition,tradesmen,antioxidant,amines,utterance,grahame,landless,isere,diction,appellant,satirist,urbino,intertoto,subiaco,antonescu,nehemiah,ubiquitin,emcee,stourbridge,fencers,103rd,wranglers,monteverdi,watertight,expounded,xiamen,manmohan,pirie,threefold,antidepressant,sheboygan,grieg,cancerous,diverging,bernini,polychrome,fundamentalism,bihari,critiqued,cholas,villers,tendulkar,dafydd,vastra,fringed,evangelization,episcopalian,maliki,sana'a,ashburton,trianon,allegany,heptathlon,insufficiently,panelists,pharrell,hexham,amharic,fertilized,plumes,cistern,stratigraphy,akershus,catalans,karoo,rupee,minuteman,quantification,wigmore,leutnant,metanotum,weeknights,iridescent,extrasolar,brechin,deuterium,kuching,lyricism,astrakhan,brookhaven,euphorbia,hradec,bhagat,vardar,aylmer,positron,amygdala,speculators,unaccompanied,debrecen,slurry,windhoek,disaffected,rapporteur,mellitus,blockers,fronds,yatra,sportsperson,precession,physiologist,weeknight,pidgin,pharma,condemns,standardize,zetian,tibor,glycoprotein,emporia,cormorants,amalie,accesses,leonhard,denbighshire,roald,116th,will.i.am,symbiosis,privatised,meanders,chemnitz,jabalpur,shing,secede,ludvig,krajina,homegrown,snippets,sasanian,euripides,peder,cimarron,streaked,graubunden,kilimanjaro,mbeki,middleware,flensburg,bukovina,lindwall,marsalis,profited,abkhaz,polis,camouflaged,amyloid,morgantown,ovoid,bodleian,morte,quashed,gamelan,juventud,natchitoches,storyboard,freeview,enumeration,cielo,preludes,bulawayo,1600s,olympiads,multicast,faunal,asura,reinforces,puranas,ziegfeld,handicraft,seamount,kheil,noche,hallmarks,dermal,colorectal,encircle,hessen,umbilicus,sunnis,leste,unwin,disclosing,superfund,montmartre,refuelling,subprime,kolhapur,etiology,bismuth,laissez,vibrational,mazar,alcoa,rumsfeld,recurve,ticonderoga,lionsgate,onlookers,homesteads,filesystem,barometric,kingswood,biofuel,belleza,moshav,occidentalis,asymptomatic,northeasterly,leveson,huygens,numan,kingsway,primogeniture,toyotomi,yazoo,limpets,greenbelt,booed,concurrence,dihedral,ventrites,raipur,sibiu,plotters,kitab,109th,trackbed,skilful,berthed,effendi,fairing,sephardi,mikhailovich,lockyer,wadham,invertible,paperbacks,alphabetic,deuteronomy,constitutive,leathery,greyhounds,estoril,beechcraft,poblacion,cossidae,excreted,flamingos,singha,olmec,neurotransmitters,ascoli,nkrumah,forerunners,dualism,disenchanted,benefitted,centrum,undesignated,noida,o'donoghue,collages,egrets,egmont,wuppertal,cleave,montgomerie,pseudomonas,srinivasa,lymphatic,stadia,resold,minima,evacuees,consumerism,ronde,biochemist,automorphism,hollows,smuts,improvisations,vespasian,bream,pimlico,eglin,colne,melancholic,berhad,ousting,saale,notaulices,ouest,hunslet,tiberias,abdomina,ramsgate,stanislas,donbass,pontefract,sucrose,halts,drammen,chelm,l'arc,taming,trolleys,konin,incertae,licensees,scythian,giorgos,dative,tanglewood,farmlands,o'keeffe,caesium,romsdal,amstrad,corte,oglethorpe,huntingdonshire,magnetization,adapts,zamosc,shooto,cuttack,centrepiece,storehouse,winehouse,morbidity,woodcuts,ryazan,buddleja,buoyant,bodmin,estero,austral,verifiable,periyar,christendom,curtail,shura,kaifeng,cotswold,invariance,seafaring,gorica,androgen,usman,seabird,forecourt,pekka,juridical,audacious,yasser,cacti,qianlong,polemical,d'amore,espanyol,distrito,cartographers,pacifism,serpents,backa,nucleophilic,overturning,duplicates,marksman,oriente,vuitton,oberleutnant,gielgud,gesta,swinburne,transfiguration,1750s,retaken,celje,fredrikstad,asuka,cropping,mansard,donates,blacksmiths,vijayanagara,anuradhapura,germinate,betis,foreshore,jalandhar,bayonets,devaluation,frazione,ablaze,abidjan,approvals,homeostasis,corollary,auden,superfast,redcliffe,luxembourgish,datum,geraldton,printings,ludhiana,honoree,synchrotron,invercargill,hurriedly,108th,three-and-a-half,colonist,bexar,limousin,bessemer,ossetian,nunataks,buddhas,rebuked,thais,tilburg,verdicts,interleukin,unproven,dordrecht,solent,acclamation,muammar,dahomey,operettas,4x400,arrears,negotiators,whitehaven,apparitions,armoury,psychoactive,worshipers,sculptured,elphinstone,airshow,kjell,o'callaghan,shrank,professorships,predominance,subhash,coulomb,sekolah,retrofitted,samos,overthrowing,vibrato,resistors,palearctic,datasets,doordarshan,subcutaneous,compiles,immorality,patchwork,trinidadian,glycogen,pronged,zohar,visigoths,freres,akram,justo,agora,intakes,craiova,playwriting,bukhari,militarism,iwate,petitioners,harun,wisla,inefficiency,vendome,ledges,schopenhauer,kashi,entombed,assesses,tenn.,noumea,baguio,carex,o'donovan,filings,hillsdale,conjectures,blotches,annuals,lindisfarne,negated,vivek,angouleme,trincomalee,cofactor,verkhovna,backfield,twofold,automaker,rudra,freighters,darul,gharana,busway,formula_43,plattsburgh,portuguesa,showrunner,roadmap,valenciennes,erdos,biafra,spiritualism,transactional,modifies,carne,107th,cocos,gcses,tiverton,radiotherapy,meadowlands,gunma,srebrenica,foxtel,authenticated,enslavement,classicist,klaipeda,minstrels,searchable,infantrymen,incitement,shiga,nadp+,urals,guilders,banquets,exteriors,counterattacks,visualized,diacritics,patrimony,svensson,transepts,prizren,telegraphy,najaf,emblazoned,coupes,effluent,ragam,omani,greensburg,taino,flintshire,cd/dvd,lobbies,narrating,cacao,seafarers,bicolor,collaboratively,suraj,floodlit,sacral,puppetry,tlingit,malwa,login,motionless,thien,overseers,vihar,golem,specializations,bathhouse,priming,overdubs,winningest,archetypes,uniao,acland,creamery,slovakian,lithographs,maryborough,confidently,excavating,stillborn,ramallah,audiencia,alava,ternary,hermits,rostam,bauxite,gawain,lothair,captions,gulfstream,timelines,receded,mediating,petain,bastia,rudbar,bidders,disclaimer,shrews,tailings,trilobites,yuriy,jamil,demotion,gynecology,rajinikanth,madrigals,ghazni,flycatchers,vitebsk,bizet,computationally,kashgar,refinements,frankford,heralds,europe/africa,levante,disordered,sandringham,queues,ransacked,trebizond,verdes,comedie,primitives,figurine,organists,culminate,gosport,coagulation,ferrying,hoyas,polyurethane,prohibitive,midfielders,ligase,progesterone,defectors,sweetened,backcountry,diodorus,waterside,nieuport,khwaja,jurong,decried,gorkha,ismaili,300th,octahedral,kindergartens,paseo,codification,notifications,disregarding,risque,reconquista,shortland,atolls,texarkana,perceval,d'etudes,kanal,herbicides,tikva,nuova,gatherer,dissented,soweto,dexterity,enver,bacharach,placekicker,carnivals,automate,maynooth,symplectic,chetnik,militaire,upanishads,distributive,strafing,championing,moiety,miliband,blackadder,enforceable,maung,dimer,stadtbahn,diverges,obstructions,coleophoridae,disposals,shamrocks,aural,banca,bahru,coxed,grierson,vanadium,watermill,radiative,ecoregions,berets,hariri,bicarbonate,evacuations,mallee,nairn,rushden,loggia,slupsk,satisfactorily,milliseconds,cariboo,reine,cyclo,pigmentation,postmodernism,aqueducts,vasari,bourgogne,dilemmas,liquefied,fluminense,alloa,ibaraki,tenements,kumasi,humerus,raghu,labours,putsch,soundcloud,bodybuilder,rakyat,domitian,pesaro,translocation,sembilan,homeric,enforcers,tombstones,lectureship,rotorua,salamis,nikolaos,inferences,superfortress,lithgow,surmised,undercard,tarnow,barisan,stingrays,federacion,coldstream,haverford,ornithological,heerenveen,eleazar,jyoti,murali,bamako,riverbed,subsidised,theban,conspicuously,vistas,conservatorium,madrasa,kingfishers,arnulf,credential,syndicalist,sheathed,discontinuity,prisms,tsushima,coastlines,escapees,vitis,optimizing,megapixel,overground,embattled,halide,sprinters,buoys,mpumalanga,peculiarities,106th,roamed,menezes,macao,prelates,papyri,freemen,dissertations,irishmen,pooled,sverre,reconquest,conveyance,subjectivity,asturian,circassian,formula_45,comdr,thickets,unstressed,monro,passively,harmonium,moveable,dinar,carlsson,elysees,chairing,b'nai,confusingly,kaoru,convolution,godolphin,facilitator,saxophones,eelam,jebel,copulation,anions,livres,licensure,pontypridd,arakan,controllable,alessandria,propelling,stellenbosch,tiber,wolka,liberators,yarns,d'azur,tsinghua,semnan,amhara,ablation,melies,tonality,historique,beeston,kahne,intricately,sonoran,robespierre,gyrus,boycotts,defaulted,infill,maranhao,emigres,framingham,paraiba,wilhelmshaven,tritium,skyway,labial,supplementation,possessor,underserved,motets,maldivian,marrakech,quays,wikimedia,turbojet,demobilization,petrarch,encroaching,sloops,masted,karbala,corvallis,agribusiness,seaford,stenosis,hieronymus,irani,superdraft,baronies,cortisol,notability,veena,pontic,cyclin,archeologists,newham,culled,concurring,aeolian,manorial,shouldered,fords,philanthropists,105th,siddharth,gotthard,halim,rajshahi,jurchen,detritus,practicable,earthenware,discarding,travelogue,neuromuscular,elkhart,raeder,zygmunt,metastasis,internees,102nd,vigour,upmarket,summarizing,subjunctive,offsets,elizabethtown,udupi,pardubice,repeaters,instituting,archaea,substandard,technische,linga,anatomist,flourishes,velika,tenochtitlan,evangelistic,fitchburg,springbok,cascading,hydrostatic,avars,occasioned,filipina,perceiving,shimbun,africanus,consternation,tsing,optically,beitar,45deg,abutments,roseville,monomers,huelva,lotteries,hypothalamus,internationalist,electromechanical,hummingbirds,fibreglass,salaried,dramatists,uncovers,invokes,earners,excretion,gelding,ancien,aeronautica,haverhill,stour,ittihad,abramoff,yakov,ayodhya,accelerates,industrially,aeroplanes,deleterious,dwelt,belvoir,harpalus,atpase,maluku,alasdair,proportionality,taran,epistemological,interferometer,polypeptide,adjudged,villager,metastatic,marshalls,madhavan,archduchess,weizmann,kalgoorlie,balan,predefined,sessile,sagaing,brevity,insecticide,psychosocial,africana,steelworks,aether,aquifers,belem,mineiro,almagro,radiators,cenozoic,solute,turbocharger,invicta,guested,buccaneer,idolatry,unmatched,paducah,sinestro,dispossessed,conforms,responsiveness,cyanobacteria,flautist,procurator,complementing,semifinalist,rechargeable,permafrost,cytokine,refuges,boomed,gelderland,franchised,jinan,burnie,doubtless,randomness,colspan=12,angra,ginebra,famers,nuestro,declarative,roughness,lauenburg,motile,rekha,issuer,piney,interceptors,napoca,gipsy,formulaic,formula_44,viswanathan,ebrahim,thessalonica,galeria,muskogee,unsold,html5,taito,mobutu,icann,carnarvon,fairtrade,morphisms,upsilon,nozzles,fabius,meander,murugan,strontium,episcopacy,sandinista,parasol,attenuated,bhima,primeval,panay,ordinator,negara,osteoporosis,glossop,ebook,paradoxically,grevillea,modoc,equating,phonetically,legumes,covariant,dorje,quatre,bruxelles,pyroclastic,shipbuilder,zhaozong,obscuring,sveriges,tremolo,extensible,barrack,multnomah,hakon,chaharmahal,parsing,volumetric,astrophysical,glottal,combinatorics,freestanding,encoder,paralysed,cavalrymen,taboos,heilbronn,orientalis,lockport,marvels,ozawa,dispositions,waders,incurring,saltire,modulate,papilio,phenol,intermedia,rappahannock,plasmid,fortify,phenotypes,transiting,correspondences,leaguer,larnaca,incompatibility,mcenroe,deeming,endeavoured,aboriginals,helmed,salar,arginine,werke,ferrand,expropriated,delimited,couplets,phoenicians,petioles,ouster,anschluss,protectionist,plessis,urchins,orquesta,castleton,juniata,bittorrent,fulani,donji,mykola,rosemont,chandos,scepticism,signer,chalukya,wicketkeeper,coquitlam,programmatic,o'brian,carteret,urology,steelhead,paleocene,konkan,bettered,venkatesh,surfacing,longitudinally,centurions,popularization,yazid,douro,widths,premios,leonards,gristmill,fallujah,arezzo,leftists,ecliptic,glycerol,inaction,disenfranchised,acrimonious,depositing,parashah,cockatoo,marechal,bolzano,chios,cablevision,impartiality,pouches,thickly,equities,bentinck,emotive,boson,ashdown,conquistadors,parsi,conservationists,reductive,newlands,centerline,ornithologists,waveguide,nicene,philological,hemel,setanta,masala,aphids,convening,casco,matrilineal,chalcedon,orthographic,hythe,replete,damming,bolivarian,admixture,embarks,borderlands,conformed,nagarjuna,blenny,chaitanya,suwon,shigeru,tatarstan,lingayen,rejoins,grodno,merovingian,hardwicke,puducherry,prototyping,laxmi,upheavals,headquarter,pollinators,bromine,transom,plantagenet,arbuthnot,chidambaram,woburn,osamu,panelling,coauthored,zhongshu,hyaline,omissions,aspergillus,offensively,electrolytic,woodcut,sodom,intensities,clydebank,piotrkow,supplementing,quipped,focke,harbinger,positivism,parklands,wolfenbuttel,cauca,tryptophan,taunus,curragh,tsonga,remand,obscura,ashikaga,eltham,forelimbs,analogs,trnava,observances,kailash,antithesis,ayumi,abyssinia,dorsally,tralee,pursuers,misadventures,padova,perot,mahadev,tarim,granth,licenced,compania,patuxent,baronial,korda,cochabamba,codices,karna,memorialized,semaphore,playlists,mandibular,halal,sivaji,scherzinger,stralsund,foundries,ribosome,mindfulness,nikolayevich,paraphyletic,newsreader,catalyze,ioannina,thalamus,gbit/s,paymaster,sarab,500th,replenished,gamepro,cracow,formula_46,gascony,reburied,lessing,easement,transposed,meurthe,satires,proviso,balthasar,unbound,cuckoos,durbar,louisbourg,cowes,wholesalers,manet,narita,xiaoping,mohamad,illusory,cathal,reuptake,alkaloid,tahrir,mmorpg,underlies,anglicanism,repton,aharon,exogenous,buchenwald,indigent,odostomia,milled,santorum,toungoo,nevsky,steyr,urbanisation,darkseid,subsonic,canaanite,akiva,eglise,dentition,mediators,cirencester,peloponnesian,malmesbury,durres,oerlikon,tabulated,saens,canaria,ischemic,esterhazy,ringling,centralization,walthamstow,nalanda,lignite,takht,leninism,expiring,circe,phytoplankton,promulgation,integrable,breeches,aalto,menominee,borgo,scythians,skrull,galleon,reinvestment,raglan,reachable,liberec,airframes,electrolysis,geospatial,rubiaceae,interdependence,symmetrically,simulcasts,keenly,mauna,adipose,zaidi,fairport,vestibular,actuators,monochromatic,literatures,congestive,sacramental,atholl,skytrain,tycho,tunings,jamia,catharina,modifier,methuen,tapings,infiltrating,colima,grafting,tauranga,halides,pontificate,phonetics,koper,hafez,grooved,kintetsu,extrajudicial,linkoping,cyberpunk,repetitions,laurentian,parnu,bretton,darko,sverdlovsk,foreshadowed,akhenaten,rehnquist,gosford,coverts,pragmatism,broadleaf,ethiopians,instated,mediates,sodra,opulent,descriptor,enugu,shimla,leesburg,officership,giffard,refectory,lusitania,cybermen,fiume,corus,tydfil,lawrenceville,ocala,leviticus,burghers,ataxia,richthofen,amicably,acoustical,watling,inquired,tiempo,multiracial,parallelism,trenchard,tokyopop,germanium,usisl,philharmonia,shapur,jacobites,latinized,sophocles,remittances,o'farrell,adder,dimitrios,peshwa,dimitar,orlov,outstretched,musume,satish,dimensionless,serialised,baptisms,pagasa,antiviral,1740s,quine,arapaho,bombardments,stratosphere,ophthalmic,injunctions,carbonated,nonviolence,asante,creoles,sybra,boilermakers,abington,bipartite,permissive,cardinality,anheuser,carcinogenic,hohenlohe,surinam,szeged,infanticide,generically,floorball,'white,automakers,cerebellar,homozygous,remoteness,effortlessly,allude,'great,headmasters,minting,manchurian,kinabalu,wemyss,seditious,widgets,marbled,almshouses,bards,subgenres,tetsuya,faulting,kickboxer,gaulish,hoseyn,malton,fluvial,questionnaires,mondale,downplayed,traditionalists,vercelli,sumatran,landfills,gamesradar,exerts,franciszek,unlawfully,huesca,diderot,libertarians,professorial,laane,piecemeal,conidae,taiji,curatorial,perturbations,abstractions,szlachta,watercraft,mullah,zoroastrianism,segmental,khabarovsk,rectors,affordability,scuola,diffused,stena,cyclonic,workpiece,romford,'little,jhansi,stalag,zhongshan,skipton,maracaibo,bernadotte,thanet,groening,waterville,encloses,sahrawi,nuffield,moorings,chantry,annenberg,islay,marchers,tenses,wahid,siegen,furstenberg,basques,resuscitation,seminarians,tympanum,gentiles,vegetarianism,tufted,venkata,fantastical,pterophoridae,machined,superposition,glabrous,kaveri,chicane,executors,phyllonorycter,bidirectional,jasta,undertones,touristic,majapahit,navratilova,unpopularity,barbadian,tinian,webcast,hurdler,rigidly,jarrah,staphylococcus,igniting,irrawaddy,stabilised,airstrike,ragas,wakayama,energetically,ekstraklasa,minibus,largemouth,cultivators,leveraging,waitangi,carnaval,weaves,turntables,heydrich,sextus,excavate,govind,ignaz,pedagogue,uriah,borrowings,gemstones,infractions,mycobacterium,batavian,massing,praetor,subalpine,massoud,passers,geostationary,jalil,trainsets,barbus,impair,budejovice,denbigh,pertain,historicity,fortaleza,nederlandse,lamenting,masterchef,doubs,gemara,conductance,ploiesti,cetaceans,courthouses,bhagavad,mihailovic,occlusion,bremerhaven,bulwark,morava,kaine,drapery,maputo,conquistador,kaduna,famagusta,first-past-the-post,erudite,galton,undated,tangential,filho,dismembered,dashes,criterium,darwen,metabolized,blurring,everard,randwick,mohave,impurity,acuity,ansbach,chievo,surcharge,plantain,algoma,porosity,zirconium,selva,sevenoaks,venizelos,gwynne,golgi,imparting,separatism,courtesan,idiopathic,gravestones,hydroelectricity,babar,orford,purposeful,acutely,shard,ridgewood,viterbo,manohar,expropriation,placenames,brevis,cosine,unranked,richfield,newnham,recoverable,flightless,dispersing,clearfield,abu'l,stranraer,kempe,streamlining,goswami,epidermal,pieta,conciliatory,distilleries,electrophoresis,bonne,tiago,curiosities,candidature,picnicking,perihelion,lintel,povoa,gullies,configure,excision,facies,signers,1730s,insufficiency,semiotics,streatham,deactivation,entomological,skippers,albacete,parodying,escherichia,honorees,singaporeans,counterterrorism,tiruchirappalli,omnivorous,metropole,globalisation,athol,unbounded,codice_5,landforms,classifier,farmhouses,reaffirming,reparation,yomiuri,technologists,mitte,medica,viewable,steampunk,konya,kshatriya,repelling,edgewater,lamiinae,devas,potteries,llandaff,engendered,submits,virulence,uplifted,educationist,metropolitans,frontrunner,dunstable,forecastle,frets,methodius,exmouth,linnean,bouchet,repulsion,computable,equalling,liceo,tephritidae,agave,hydrological,azarenka,fairground,l'homme,enforces,xinhua,cinematographers,cooperstown,sa'id,paiute,christianization,tempos,chippenham,insulator,kotor,stereotyped,dello,cours,hisham,d'souza,eliminations,supercars,passau,rebrand,natures,coote,persephone,rededicated,cleaved,plenum,blistering,indiscriminately,cleese,safed,recursively,compacted,revues,hydration,shillong,echelons,garhwal,pedimented,grower,zwolle,wildflower,annexing,methionine,petah,valens,famitsu,petiole,specialities,nestorian,shahin,tokaido,shearwater,barberini,kinsmen,experimenter,alumnae,cloisters,alumina,pritzker,hardiness,soundgarden,julich,ps300,watercourse,cementing,wordplay,olivet,demesne,chasseurs,amide,zapotec,gaozu,porphyry,absorbers,indium,analogies,devotions,engravers,limestones,catapulted,surry,brickworks,gotra,rodham,landline,paleontologists,shankara,islip,raucous,trollope,arpad,embarkation,morphemes,recites,picardie,nakhchivan,tolerances,formula_47,khorramabad,nichiren,adrianople,kirkuk,assemblages,collider,bikaner,bushfires,roofline,coverings,reredos,bibliotheca,mantras,accentuated,commedia,rashtriya,fluctuation,serhiy,referential,fittipaldi,vesicle,geeta,iraklis,immediacy,chulalongkorn,hunsruck,bingen,dreadnoughts,stonemason,meenakshi,lebesgue,undergrowth,baltistan,paradoxes,parlement,articled,tiflis,dixieland,meriden,tejano,underdogs,barnstable,exemplify,venter,tropes,wielka,kankakee,iskandar,zilina,pharyngeal,spotify,materialised,picts,atlantique,theodoric,prepositions,paramilitaries,pinellas,attlee,actuated,piedmontese,grayling,thucydides,multifaceted,unedited,autonomously,universelle,utricularia,mooted,preto,incubated,underlie,brasenose,nootka,bushland,sensu,benzodiazepine,esteghlal,seagoing,amenhotep,azusa,sappers,culpeper,smokeless,thoroughbreds,dargah,gorda,alumna,mankato,zdroj,deleting,culvert,formula_49,punting,wushu,hindering,immunoglobulin,standardisation,birger,oilfield,quadrangular,ulama,recruiters,netanya,1630s,communaute,istituto,maciej,pathan,meher,vikas,characterizations,playmaker,interagency,intercepts,assembles,horthy,introspection,narada,matra,testes,radnicki,estonians,csiro,instar,mitford,adrenergic,crewmembers,haaretz,wasatch,lisburn,rangefinder,ordre,condensate,reforestation,corregidor,spvgg,modulator,mannerist,faulted,aspires,maktoum,squarepants,aethelred,piezoelectric,mulatto,dacre,progressions,jagiellonian,norge,samaria,sukhoi,effingham,coxless,hermetic,humanists,centrality,litters,stirlingshire,beaconsfield,sundanese,geometrically,caretakers,habitually,bandra,pashtuns,bradenton,arequipa,laminar,brickyard,hitchin,sustains,shipboard,ploughing,trechus,wheelers,bracketed,ilyushin,subotica,d'hondt,reappearance,bridgestone,intermarried,fulfilment,aphasia,birkbeck,transformational,strathmore,hornbill,millstone,lacan,voids,solothurn,gymnasiums,laconia,viaducts,peduncle,teachta,edgware,shinty,supernovae,wilfried,exclaim,parthia,mithun,flashpoint,moksha,cumbia,metternich,avalanches,militancy,motorist,rivadavia,chancellorsville,federals,gendered,bounding,footy,gauri,caliphs,lingam,watchmaker,unrecorded,riverina,unmodified,seafloor,droit,pfalz,chrysostom,gigabit,overlordship,besiege,espn2,oswestry,anachronistic,ballymena,reactivation,duchovny,ghani,abacetus,duller,legio,watercourses,nord-pas-de-calais,leiber,optometry,swarms,installer,sancti,adverbs,iheartmedia,meiningen,zeljko,kakheti,notional,circuses,patrilineal,acrobatics,infrastructural,sheva,oregonian,adjudication,aamir,wloclawek,overfishing,obstructive,subtracting,aurobindo,archeologist,newgate,'cause,secularization,tehsils,abscess,fingal,janacek,elkhorn,trims,kraftwerk,mandating,irregulars,faintly,congregationalist,sveti,kasai,mishaps,kennebec,provincially,durkheim,scotties,aicte,rapperswil,imphal,surrenders,morphs,nineveh,hoxha,cotabato,thuringian,metalworking,retold,shogakukan,anthers,proteasome,tippeligaen,disengagement,mockumentary,palatial,erupts,flume,corrientes,masthead,jaroslaw,rereleased,bharti,labors,distilling,tusks,varzim,refounded,enniskillen,melkite,semifinalists,vadodara,bermudian,capstone,grasse,origination,populus,alesi,arrondissements,semigroup,verein,opossum,messrs.,portadown,bulbul,tirupati,mulhouse,tetrahedron,roethlisberger,nonverbal,connexion,warangal,deprecated,gneiss,octet,vukovar,hesketh,chambre,despatch,claes,kargil,hideo,gravelly,tyndale,aquileia,tuners,defensible,tutte,theotokos,constructivist,ouvrage,dukla,polisario,monasticism,proscribed,commutation,testers,nipissing,codon,mesto,olivine,concomitant,exoskeleton,purports,coromandel,eyalet,dissension,hippocrates,purebred,yaounde,composting,oecophoridae,procopius,o'day,angiogenesis,sheerness,intelligencer,articular,felixstowe,aegon,endocrinology,trabzon,licinius,pagodas,zooplankton,hooghly,satie,drifters,sarthe,mercian,neuilly,tumours,canal+,scheldt,inclinations,counteroffensive,roadrunners,tuzla,shoreditch,surigao,predicates,carnot,algeciras,militaries,generalize,bulkheads,gawler,pollutant,celta,rundgren,microrna,gewog,olimpija,placental,lubelski,roxburgh,discerned,verano,kikuchi,musicale,l'enfant,ferocity,dimorphic,antigonus,erzurum,prebendary,recitative,discworld,cyrenaica,stigmella,totnes,sutta,pachuca,ulsan,downton,landshut,castellan,pleural,siedlce,siecle,catamaran,cottbus,utilises,trophic,freeholders,holyhead,u.s.s,chansons,responder,waziristan,suzuka,birding,shogi,asker,acetone,beautification,cytotoxic,dixit,hunterdon,cobblestone,formula_48,kossuth,devizes,sokoto,interlaced,shuttered,kilowatts,assiniboine,isaak,salto,alderney,sugarloaf,franchising,aggressiveness,toponyms,plaintext,antimatter,henin,equidistant,salivary,bilingualism,mountings,obligate,extirpated,irenaeus,misused,pastoralists,aftab,immigrating,warping,tyrolean,seaforth,teesside,soundwave,oligarchy,stelae,pairwise,iupac,tezuka,posht,orchestrations,landmass,ironstone,gallia,hjalmar,carmelites,strafford,elmhurst,palladio,fragility,teleplay,gruffudd,karoly,yerba,potok,espoo,inductance,macaque,nonprofits,pareto,rock'n'roll,spiritualist,shadowed,skateboarder,utterances,generality,congruence,prostrate,deterred,yellowknife,albarn,maldon,battlements,mohsen,insecticides,khulna,avellino,menstruation,glutathione,springdale,parlophone,confraternity,korps,countrywide,bosphorus,preexisting,damodar,astride,alexandrovich,sprinting,crystallized,botev,leaching,interstates,veers,angevin,undaunted,yevgeni,nishapur,northerners,alkmaar,bethnal,grocers,sepia,tornus,exemplar,trobe,charcot,gyeonggi,larne,tournai,lorain,voided,genji,enactments,maxilla,adiabatic,eifel,nazim,transducer,thelonious,pyrite,deportiva,dialectal,bengt,rosettes,labem,sergeyevich,synoptic,conservator,statuette,biweekly,adhesives,bifurcation,rajapaksa,mammootty,republique,yusef,waseda,marshfield,yekaterinburg,minnelli,fundy,fenian,matchups,dungannon,supremacist,panelled,drenthe,iyengar,fibula,narmada,homeport,oceanside,precept,antibacterial,altarpieces,swath,ospreys,lillooet,legnica,lossless,formula_50,galvatron,iorga,stormont,rsfsr,loggers,kutno,phenomenological,medallists,cuatro,soissons,homeopathy,bituminous,injures,syndicates,typesetting,displacements,dethroned,makassar,lucchese,abergavenny,targu,alborz,akb48,boldface,gastronomy,sacra,amenity,accumulator,myrtaceae,cornices,mourinho,denunciation,oxbow,diddley,aargau,arbitrage,bedchamber,gruffydd,zamindar,klagenfurt,caernarfon,slowdown,stansted,abrasion,tamaki,suetonius,dukakis,individualistic,ventrally,hotham,perestroika,ketones,fertilisation,sobriquet,couplings,renderings,misidentified,rundfunk,sarcastically,braniff,concours,dismissals,elegantly,modifiers,crediting,combos,crucially,seafront,lieut,ischemia,manchus,derivations,proteases,aristophanes,adenauer,porting,hezekiah,sante,trulli,hornblower,foreshadowing,ypsilanti,dharwad,khani,hohenstaufen,distillers,cosmodrome,intracranial,turki,salesian,gorzow,jihlava,yushchenko,leichhardt,venables,cassia,eurogamer,airtel,curative,bestsellers,timeform,sortied,grandview,massillon,ceding,pilbara,chillicothe,heredity,elblag,rogaland,ronne,millennial,batley,overuse,bharata,fille,campbelltown,abeyance,counterclockwise,250cc,neurodegenerative,consigned,electromagnetism,sunnah,saheb,exons,coxswain,gleaned,bassoons,worksop,prismatic,immigrate,pickets,takeo,bobsledder,stosur,fujimori,merchantmen,stiftung,forli,endorses,taskforce,thermally,atman,gurps,floodplains,enthalpy,extrinsic,setubal,kennesaw,grandis,scalability,durations,showrooms,prithvi,outro,overruns,andalucia,amanita,abitur,hipper,mozambican,sustainment,arsene,chesham,palaeolithic,reportage,criminality,knowsley,haploid,atacama,shueisha,ridgefield,astern,getafe,lineal,timorese,restyled,hollies,agincourt,unter,justly,tannins,mataram,industrialised,tarnovo,mumtaz,mustapha,stretton,synthetase,condita,allround,putra,stjepan,troughs,aechmea,specialisation,wearable,kadokawa,uralic,aeros,messiaen,existentialism,jeweller,effigies,gametes,fjordane,cochlear,interdependent,demonstrative,unstructured,emplacement,famines,spindles,amplitudes,actuator,tantalum,psilocybe,apnea,monogatari,expulsions,seleucus,tsuen,hospitaller,kronstadt,eclipsing,olympiakos,clann,canadensis,inverter,helio,egyptologist,squamous,resonate,munir,histology,torbay,khans,jcpenney,veterinarians,aintree,microscopes,colonised,reflectors,phosphorylated,pristimantis,tulare,corvinus,multiplexing,midweek,demosthenes,transjordan,ecija,tengku,vlachs,anamorphic,counterweight,radnor,trinitarian,armidale,maugham,njsiaa,futurism,stairways,avicenna,montebello,bridgetown,wenatchee,lyonnais,amass,surinamese,streptococcus,m*a*s*h,hydrogenation,frazioni,proscenium,kalat,pennsylvanian,huracan,tallying,kralove,nucleolar,phrygian,seaports,hyacinthe,ignace,donning,instalment,regnal,fonds,prawn,carell,folktales,goaltending,bracknell,vmware,patriarchy,mitsui,kragujevac,pythagoras,soult,thapa,disproved,suwalki,secures,somoza,l'ecole,divizia,chroma,herders,technologist,deduces,maasai,rampur,paraphrase,raimi,imaged,magsaysay,ivano,turmeric,formula_51,subcommittees,axillary,ionosphere,organically,indented,refurbishing,pequot,violinists,bearn,colle,contralto,silverton,mechanization,etruscans,wittelsbach,pasir,redshirted,marrakesh,scarp,plein,wafers,qareh,teotihuacan,frobenius,sinensis,rehoboth,bundaberg,newbridge,hydrodynamic,traore,abubakar,adjusts,storytellers,dynamos,verbandsliga,concertmaster,exxonmobil,appreciable,sieradz,marchioness,chaplaincy,rechristened,cunxu,overpopulation,apolitical,sequencer,beaked,nemanja,binaries,intendant,absorber,filamentous,indebtedness,nusra,nashik,reprises,psychedelia,abwehr,ligurian,isoform,resistive,pillaging,mahathir,reformatory,lusatia,allerton,ajaccio,tepals,maturin,njcaa,abyssinian,objector,fissures,sinuous,ecclesiastic,dalits,caching,deckers,phosphates,wurlitzer,navigated,trofeo,berea,purefoods,solway,unlockable,grammys,kostroma,vocalizations,basilan,rebuke,abbasi,douala,helsingborg,ambon,bakar,runestones,cenel,tomislav,pigmented,northgate,excised,seconda,kirke,determinations,dedicates,vilas,pueblos,reversion,unexploded,overprinted,ekiti,deauville,masato,anaesthesia,endoplasmic,transponders,aguascalientes,hindley,celluloid,affording,bayeux,piaget,rickshaws,eishockey,camarines,zamalek,undersides,hardwoods,hermitian,mutinied,monotone,blackmails,affixes,jpmorgan,habermas,mitrovica,paleontological,polystyrene,thana,manas,conformist,turbofan,decomposes,logano,castration,metamorphoses,patroness,herbicide,mikolaj,rapprochement,macroeconomics,barranquilla,matsudaira,lintels,femina,hijab,spotsylvania,morpheme,bitola,baluchistan,kurukshetra,otway,extrusion,waukesha,menswear,helder,trung,bingley,protester,boars,overhang,differentials,exarchate,hejaz,kumara,unjustified,timings,sharpness,nuovo,taisho,sundar,etc..,jehan,unquestionably,muscovy,daltrey,canute,paneled,amedeo,metroplex,elaborates,telus,tetrapods,dragonflies,epithets,saffir,parthenon,lucrezia,refitting,pentateuch,hanshin,montparnasse,lumberjacks,sanhedrin,erectile,odors,greenstone,resurgent,leszek,amory,substituents,prototypical,viewfinder,monck,universiteit,joffre,revives,chatillon,seedling,scherzo,manukau,ashdod,gympie,homolog,stalwarts,ruinous,weibo,tochigi,wallenberg,gayatri,munda,satyagraha,storefronts,heterogeneity,tollway,sportswriters,binocular,gendarmes,ladysmith,tikal,ortsgemeinde,ja'far,osmotic,linlithgow,bramley,telecoms,pugin,repose,rupaul,sieur,meniscus,garmisch,reintroduce,400th,shoten,poniatowski,drome,kazakhstani,changeover,astronautics,husserl,herzl,hypertext,katakana,polybius,antananarivo,seong,breguet,reliquary,utada,aggregating,liangshan,sivan,tonawanda,audiobooks,shankill,coulee,phenolic,brockton,bookmakers,handsets,boaters,wylde,commonality,mappings,silhouettes,pennines,maurya,pratchett,singularities,eschewed,pretensions,vitreous,ibero,totalitarianism,poulenc,lingered,directx,seasoning,deputation,interdict,illyria,feedstock,counterbalance,muzik,buganda,parachuted,violist,homogeneity,comix,fjords,corsairs,punted,verandahs,equilateral,laoghaire,magyars,117th,alesund,televoting,mayotte,eateries,refurbish,nswrl,yukio,caragiale,zetas,dispel,codecs,inoperable,outperformed,rejuvenation,elstree,modernise,contributory,pictou,tewkesbury,chechens,ashina,psionic,refutation,medico,overdubbed,nebulae,sandefjord,personages,eccellenza,businessperson,placename,abenaki,perryville,threshing,reshaped,arecibo,burslem,colspan=3|turnout,rebadged,lumia,erinsborough,interactivity,bitmap,indefatigable,theosophy,excitatory,gleizes,edsel,bermondsey,korce,saarinen,wazir,diyarbakir,cofounder,liberalisation,onsen,nighthawks,siting,retirements,semyon,d'histoire,114th,redditch,venetia,praha,'round,valdosta,hieroglyphic,postmedial,edirne,miscellany,savona,cockpits,minimization,coupler,jacksonian,appeasement,argentines,saurashtra,arkwright,hesiod,folios,fitzalan,publica,rivaled,civitas,beermen,constructivism,ribeira,zeitschrift,solanum,todos,deformities,chilliwack,verdean,meagre,bishoprics,gujrat,yangzhou,reentered,inboard,mythologies,virtus,unsurprisingly,rusticated,museu,symbolise,proportionate,thesaban,symbian,aeneid,mitotic,veliki,compressive,cisterns,abies,winemaker,massenet,bertolt,ahmednagar,triplemania,armorial,administracion,tenures,smokehouse,hashtag,fuerza,regattas,gennady,kanazawa,mahmudabad,crustal,asaph,valentinian,ilaiyaraaja,honeyeater,trapezoidal,cooperatively,unambiguously,mastodon,inhospitable,harnesses,riverton,renewables,djurgardens,haitians,airings,humanoids,boatswain,shijiazhuang,faints,veera,punjabis,steepest,narain,karlovy,serre,sulcus,collectives,1500m,arion,subarctic,liberally,apollonius,ostia,droplet,headstones,norra,robusta,maquis,veronese,imola,primers,luminance,escadrille,mizuki,irreconcilable,stalybridge,temur,paraffin,stuccoed,parthians,counsels,fundamentalists,vivendi,polymath,sugababes,mikko,yonne,fermions,vestfold,pastoralist,kigali,unseeded,glarus,cusps,amasya,northwesterly,minorca,astragalus,verney,trevelyan,antipathy,wollstonecraft,bivalves,boulez,royle,divisao,quranic,bareilly,coronal,deviates,lulea,erectus,petronas,chandan,proxies,aeroflot,postsynaptic,memoriam,moyne,gounod,kuznetsova,pallava,ordinating,reigate,'first,lewisburg,exploitative,danby,academica,bailiwick,brahe,injective,stipulations,aeschylus,computes,gulden,hydroxylase,liveries,somalis,underpinnings,muscovite,kongsberg,domus,overlain,shareware,variegated,jalalabad,agence,ciphertext,insectivores,dengeki,menuhin,cladistic,baerum,betrothal,tokushima,wavelet,expansionist,pottsville,siyuan,prerequisites,carpi,nemzeti,nazar,trialled,eliminator,irrorated,homeward,redwoods,undeterred,strayed,lutyens,multicellular,aurelian,notated,lordships,alsatian,idents,foggia,garros,chalukyas,lillestrom,podlaski,pessimism,hsien,demilitarized,whitewashed,willesden,kirkcaldy,sanctorum,lamia,relaying,escondido,paediatric,contemplates,demarcated,bluestone,betula,penarol,capitalise,kreuznach,kenora,115th,hold'em,reichswehr,vaucluse,m.i.a,windings,boys/girls,cajon,hisar,predictably,flemington,ysgol,mimicked,clivina,grahamstown,ionia,glyndebourne,patrese,aquaria,sleaford,dayal,sportscenter,malappuram,m.b.a.,manoa,carbines,solvable,designator,ramanujan,linearity,academicians,sayid,lancastrian,factorial,strindberg,vashem,delos,comyn,condensing,superdome,merited,kabaddi,intransitive,bideford,neuroimaging,duopoly,scorecards,ziggler,heriot,boyars,virology,marblehead,microtubules,westphalian,anticipates,hingham,searchers,harpist,rapides,morricone,convalescent,mises,nitride,metrorail,matterhorn,bicol,drivetrain,marketer,snippet,winemakers,muban,scavengers,halberstadt,herkimer,peten,laborious,stora,montgomeryshire,booklist,shamir,herault,eurostar,anhydrous,spacewalk,ecclesia,calliostoma,highschool,d'oro,suffusion,imparts,overlords,tagus,rectifier,counterinsurgency,ministered,eilean,milecastle,contre,micromollusk,okhotsk,bartoli,matroid,hasidim,thirunal,terme,tarlac,lashkar,presque,thameslink,flyby,troopship,renouncing,fatih,messrs,vexillum,bagration,magnetite,bornholm,androgynous,vehement,tourette,philosophic,gianfranco,tuileries,codice_6,radially,flexion,hants,reprocessing,setae,burne,palaeographically,infantryman,shorebirds,tamarind,moderna,threading,militaristic,crohn,norrkoping,125cc,stadtholder,troms,klezmer,alphanumeric,brome,emmanuelle,tiwari,alchemical,formula_52,onassis,bleriot,bipedal,colourless,hermeneutics,hosni,precipitating,turnstiles,hallucinogenic,panhellenic,wyandotte,elucidated,chita,ehime,generalised,hydrophilic,biota,niobium,rnzaf,gandhara,longueuil,logics,sheeting,bielsko,cuvier,kagyu,trefoil,docent,pancrase,stalinism,postures,encephalopathy,monckton,imbalances,epochs,leaguers,anzio,diminishes,pataki,nitrite,amuro,nabil,maybach,l'aquila,babbler,bacolod,thutmose,evora,gaudi,breakage,recur,preservative,60deg,mendip,functionaries,columnar,maccabiah,chert,verden,bromsgrove,clijsters,dengue,pastorate,phuoc,principia,viareggio,kharagpur,scharnhorst,anyang,bosons,l'art,criticises,ennio,semarang,brownian,mirabilis,asperger,calibers,typographical,cartooning,minos,disembark,supranational,undescribed,etymologically,alappuzha,vilhelm,lanao,pakenham,bhagavata,rakoczi,clearings,astrologers,manitowoc,bunuel,acetylene,scheduler,defamatory,trabzonspor,leaded,scioto,pentathlete,abrahamic,minigames,aldehydes,peerages,legionary,1640s,masterworks,loudness,bryansk,likeable,genocidal,vegetated,towpath,declination,pyrrhus,divinely,vocations,rosebery,associazione,loaders,biswas,oeste,tilings,xianzong,bhojpuri,annuities,relatedness,idolator,psers,constriction,chuvash,choristers,hanafi,fielders,grammarian,orpheum,asylums,millbrook,gyatso,geldof,stabilise,tableaux,diarist,kalahari,panini,cowdenbeath,melanin,4x100m,resonances,pinar,atherosclerosis,sheringham,castlereagh,aoyama,larks,pantograph,protrude,natak,gustafsson,moribund,cerevisiae,cleanly,polymeric,holkar,cosmonauts,underpinning,lithosphere,firuzabad,languished,mingled,citrate,spadina,lavas,daejeon,fibrillation,porgy,pineville,ps1000,cobbled,emamzadeh,mukhtar,dampers,indelible,salonika,nanoscale,treblinka,eilat,purporting,fluctuate,mesic,hagiography,cutscenes,fondation,barrens,comically,accrue,ibrox,makerere,defections,'there,hollandia,skene,grosseto,reddit,objectors,inoculation,rowdies,playfair,calligrapher,namor,sibenik,abbottabad,propellants,hydraulically,chloroplasts,tablelands,tecnico,schist,klasse,shirvan,bashkortostan,bullfighting,north/south,polski,hanns,woodblock,kilmore,ejecta,ignacy,nanchang,danubian,commendations,snohomish,samaritans,argumentation,vasconcelos,hedgehogs,vajrayana,barents,kulkarni,kumbakonam,identifications,hillingdon,weirs,nayanar,beauvoir,messe,divisors,atlantiques,broods,affluence,tegucigalpa,unsuited,autodesk,akash,princeps,culprits,kingstown,unassuming,goole,visayan,asceticism,blagojevich,irises,paphos,unsound,maurier,pontchartrain,desertification,sinfonietta,latins,especial,limpet,valerenga,glial,brainstem,mitral,parables,sauropod,judean,iskcon,sarcoma,venlo,justifications,zhuhai,blavatsky,alleviated,usafe,steppenwolf,inversions,janko,chagall,secretory,basildon,saguenay,pergamon,hemispherical,harmonized,reloading,franjo,domaine,extravagance,relativism,metamorphosed,labuan,baloncesto,gmail,byproducts,calvinists,counterattacked,vitus,bubonic,120th,strachey,ritually,brookwood,selectable,savinja,incontinence,meltwater,jinja,1720s,brahmi,morgenthau,sheaves,sleeved,stratovolcano,wielki,utilisation,avoca,fluxus,panzergrenadier,philately,deflation,podlaska,prerogatives,kuroda,theophile,zhongzong,gascoyne,magus,takao,arundell,fylde,merdeka,prithviraj,venkateswara,liepaja,daigo,dreamland,reflux,sunnyvale,coalfields,seacrest,soldering,flexor,structuralism,alnwick,outweighed,unaired,mangeshkar,batons,glaad,banshees,irradiated,organelles,biathlete,cabling,chairlift,lollapalooza,newsnight,capacitive,succumbs,flatly,miramichi,burwood,comedienne,charteris,biotic,workspace,aficionados,sokolka,chatelet,o'shaughnessy,prosthesis,neoliberal,refloated,oppland,hatchlings,econometrics,loess,thieu,androids,appalachians,jenin,pterostichinae,downsized,foils,chipsets,stencil,danza,narrate,maginot,yemenite,bisects,crustacean,prescriptive,melodious,alleviation,empowers,hansson,autodromo,obasanjo,osmosis,daugava,rheumatism,moraes,leucine,etymologies,chepstow,delaunay,bramall,bajaj,flavoring,approximates,marsupials,incisive,microcomputer,tactically,waals,wilno,fisichella,ursus,hindmarsh,mazarin,lomza,xenophobia,lawlessness,annecy,wingers,gornja,gnaeus,superieur,tlaxcala,clasps,symbolises,slats,rightist,effector,blighted,permanence,divan,progenitors,kunsthalle,anointing,excelling,coenzyme,indoctrination,dnipro,landholdings,adriaan,liturgies,cartan,ethmia,attributions,sanctus,trichy,chronicon,tancred,affinis,kampuchea,gantry,pontypool,membered,distrusted,fissile,dairies,hyposmocoma,craigie,adarsh,martinsburg,taxiway,30deg,geraint,vellum,bencher,khatami,formula_53,zemun,teruel,endeavored,palmares,pavements,u.s..,internationalization,satirized,carers,attainable,wraparound,muang,parkersburg,extinctions,birkenfeld,wildstorm,payers,cohabitation,unitas,culloden,capitalizing,clwyd,daoist,campinas,emmylou,orchidaceae,halakha,orientales,fealty,domnall,chiefdom,nigerians,ladislav,dniester,avowed,ergonomics,newsmagazine,kitsch,cantilevered,benchmarking,remarriage,alekhine,coldfield,taupo,almirante,substations,apprenticeships,seljuq,levelling,eponym,symbolising,salyut,opioids,underscore,ethnologue,mohegan,marikina,libro,bassano,parse,semantically,disjointed,dugdale,padraig,tulsi,modulating,xfinity,headlands,mstislav,earthworms,bourchier,lgbtq,embellishments,pennants,rowntree,betel,motet,mulla,catenary,washoe,mordaunt,dorking,colmar,girardeau,glentoran,grammatically,samad,recreations,technion,staccato,mikoyan,spoilers,lyndhurst,victimization,chertsey,belafonte,tondo,tonsberg,narrators,subcultures,malformations,edina,augmenting,attests,euphemia,cabriolet,disguising,1650s,navarrese,demoralized,cardiomyopathy,welwyn,wallachian,smoothness,planktonic,voles,issuers,sardasht,survivability,cuauhtemoc,thetis,extruded,signet,raghavan,lombok,eliyahu,crankcase,dissonant,stolberg,trencin,desktops,bursary,collectivization,charlottenburg,triathlete,curvilinear,involuntarily,mired,wausau,invades,sundaram,deletions,bootstrap,abellio,axiomatic,noguchi,setups,malawian,visalia,materialist,kartuzy,wenzong,plotline,yeshivas,parganas,tunica,citric,conspecific,idlib,superlative,reoccupied,blagoevgrad,masterton,immunological,hatta,courbet,vortices,swallowtail,delves,haridwar,diptera,boneh,bahawalpur,angering,mardin,equipments,deployable,guanine,normality,rimmed,artisanal,boxset,chandrasekhar,jools,chenar,tanakh,carcassonne,belatedly,millville,anorthosis,reintegration,velde,surfactant,kanaan,busoni,glyphipterix,personas,fullness,rheims,tisza,stabilizers,bharathi,joost,spinola,mouldings,perching,esztergom,afzal,apostate,lustre,s.league,motorboat,monotheistic,armature,barat,asistencia,bloomsburg,hippocampal,fictionalised,defaults,broch,hexadecimal,lusignan,ryanair,boccaccio,breisgau,southbank,bskyb,adjoined,neurobiology,aforesaid,sadhu,langue,headship,wozniacki,hangings,regulus,prioritized,dynamism,allier,hannity,shimin,antoninus,gymnopilus,caledon,preponderance,melayu,electrodynamics,syncopated,ibises,krosno,mechanistic,morpeth,harbored,albini,monotheism,'real,hyperactivity,haveli,writer/director,minato,nimoy,caerphilly,chitral,amirabad,fanshawe,l'oreal,lorde,mukti,authoritarianism,valuing,spyware,hanbury,restarting,stato,embed,suiza,empiricism,stabilisation,stari,castlemaine,orbis,manufactory,mauritanian,shoji,taoyuan,prokaryotes,oromia,ambiguities,embodying,slims,frente,innovate,ojibwa,powdery,gaeltacht,argentinos,quatermass,detergents,fijians,adaptor,tokai,chileans,bulgars,oxidoreductases,bezirksliga,conceicao,myosin,nellore,500cc,supercomputers,approximating,glyndwr,polypropylene,haugesund,cockerell,tudman,ashbourne,hindemith,bloodlines,rigveda,etruria,romanos,steyn,oradea,deceleration,manhunter,laryngeal,fraudulently,janez,wendover,haplotype,janaki,naoki,belizean,mellencamp,cartographic,sadhana,tricolour,pseudoscience,satara,bytow,s.p.a.,jagdgeschwader,arcot,omagh,sverdrup,masterplan,surtees,apocrypha,ahvaz,d'amato,socratic,leumit,unnumbered,nandini,witold,marsupial,coalesced,interpolated,gimnasia,karadzic,keratin,mamoru,aldeburgh,speculator,escapement,irfan,kashyap,satyajit,haddington,solver,rothko,ashkelon,kickapoo,yeomen,superbly,bloodiest,greenlandic,lithic,autofocus,yardbirds,poona,keble,javan,sufis,expandable,tumblr,ursuline,swimwear,winwood,counsellors,aberrations,marginalised,befriending,workouts,predestination,varietal,siddhartha,dunkeld,judaic,esquimalt,shabab,ajith,telefonica,stargard,hoysala,radhakrishnan,sinusoidal,strada,hiragana,cebuano,monoid,independencia,floodwaters,mildura,mudflats,ottokar,translit,radix,wigner,philosophically,tephritid,synthesizing,castletown,installs,stirner,resettle,bushfire,choirmaster,kabbalistic,shirazi,lightship,rebus,colonizers,centrifuge,leonean,kristofferson,thymus,clackamas,ratnam,rothesay,municipally,centralia,thurrock,gulfport,bilinear,desirability,merite,psoriasis,macaw,erigeron,consignment,mudstone,distorting,karlheinz,ramen,tailwheel,vitor,reinsurance,edifices,superannuation,dormancy,contagion,cobden,rendezvoused,prokaryotic,deliberative,patricians,feigned,degrades,starlings,sopot,viticultural,beaverton,overflowed,convener,garlands,michiel,ternopil,naturelle,biplanes,bagot,gamespy,ventspils,disembodied,flattening,profesional,londoners,arusha,scapular,forestall,pyridine,ulema,eurodance,aruna,callus,periodontal,coetzee,immobilized,o'meara,maharani,katipunan,reactants,zainab,microgravity,saintes,britpop,carrefour,constrain,adversarial,firebirds,brahmo,kashima,simca,surety,surpluses,superconductivity,gipuzkoa,cumans,tocantins,obtainable,humberside,roosting,'king,formula_54,minelayer,bessel,sulayman,cycled,biomarkers,annealing,shusha,barda,cassation,djing,polemics,tuple,directorates,indomitable,obsolescence,wilhelmine,pembina,bojan,tambo,dioecious,pensioner,magnificat,1660s,estrellas,southeasterly,immunodeficiency,railhead,surreptitiously,codeine,encores,religiosity,tempera,camberley,efendi,boardings,malleable,hagia,input/output,lucasfilm,ujjain,polymorphisms,creationist,berners,mickiewicz,irvington,linkedin,endures,kinect,munition,apologetics,fairlie,predicated,reprinting,ethnographer,variances,levantine,mariinsky,jadid,jarrow,asia/oceania,trinamool,waveforms,bisexuality,preselection,pupae,buckethead,hieroglyph,lyricists,marionette,dunbartonshire,restorer,monarchical,pazar,kickoffs,cabildo,savannas,gliese,dench,spoonbills,novelette,diliman,hypersensitivity,authorising,montefiore,mladen,qu'appelle,theistic,maruti,laterite,conestoga,saare,californica,proboscis,carrickfergus,imprecise,hadassah,baghdadi,jolgeh,deshmukh,amusements,heliopolis,berle,adaptability,partenkirchen,separations,baikonur,cardamom,southeastward,southfield,muzaffar,adequacy,metropolitana,rajkot,kiyoshi,metrobus,evictions,reconciles,librarianship,upsurge,knightley,badakhshan,proliferated,spirituals,burghley,electroacoustic,professing,featurette,reformists,skylab,descriptors,oddity,greyfriars,injects,salmond,lanzhou,dauntless,subgenera,underpowered,transpose,mahinda,gatos,aerobatics,seaworld,blocs,waratahs,joris,giggs,perfusion,koszalin,mieczyslaw,ayyubid,ecologists,modernists,sant'angelo,quicktime,him/her,staves,sanyo,melaka,acrocercops,qigong,iterated,generalizes,recuperation,vihara,circassians,psychical,chavo,memoires,infiltrates,notaries,pelecaniformesfamily,strident,chivalric,pierrepont,alleviating,broadsides,centipede,b.tech,reinterpreted,sudetenland,hussite,covenanters,radhika,ironclads,gainsbourg,testis,penarth,plantar,azadegan,beano,espn.com,leominster,autobiographies,nbcuniversal,eliade,khamenei,montferrat,undistinguished,ethnological,wenlock,fricatives,polymorphic,biome,joule,sheaths,astrophysicist,salve,neoclassicism,lovat,downwind,belisarius,forma,usurpation,freie,depopulation,backbench,ascenso,'high,aagpbl,gdanski,zalman,mouvement,encapsulation,bolshevism,statny,voyageurs,hywel,vizcaya,mazra'eh,narthex,azerbaijanis,cerebrospinal,mauretania,fantail,clearinghouse,bolingbroke,pequeno,ansett,remixing,microtubule,wrens,jawahar,palembang,gambian,hillsong,fingerboard,repurposed,sundry,incipient,veolia,theologically,ulaanbaatar,atsushi,foundling,resistivity,myeloma,factbook,mazowiecka,diacritic,urumqi,clontarf,provokes,intelsat,professes,materialise,portobello,benedictines,panionios,introverted,reacquired,bridport,mammary,kripke,oratorios,vlore,stoning,woredas,unreported,antti,togolese,fanzines,heuristics,conservatories,carburetors,clitheroe,cofounded,formula_57,erupting,quinnipiac,bootle,ghostface,sittings,aspinall,sealift,transferase,boldklub,siskiyou,predominated,francophonie,ferruginous,castrum,neogene,sakya,madama,precipitous,'love,posix,bithynia,uttara,avestan,thrushes,seiji,memorably,septimius,libri,cibernetico,hyperinflation,dissuaded,cuddalore,peculiarity,vaslui,grojec,albumin,thurles,casks,fasteners,fluidity,buble,casals,terek,gnosticism,cognates,ulnar,radwanska,babylonians,majuro,oxidizer,excavators,rhythmically,liffey,gorakhpur,eurydice,underscored,arborea,lumumba,tuber,catholique,grama,galilei,scrope,centreville,jacobin,bequests,ardeche,polygamous,montauban,terai,weatherboard,readability,attainder,acraea,transversely,rivets,winterbottom,reassures,bacteriology,vriesea,chera,andesite,dedications,homogenous,reconquered,bandon,forrestal,ukiyo,gurdjieff,tethys,sparc,muscogee,grebes,belchatow,mansa,blantyre,palliser,sokolow,fibroblasts,exmoor,misaki,soundscapes,housatonic,middelburg,convenor,leyla,antipope,histidine,okeechobee,alkenes,sombre,alkene,rubik,macaques,calabar,trophee,pinchot,'free,frusciante,chemins,falaise,vasteras,gripped,schwarzenberg,cumann,kanchipuram,acoustically,silverbacks,fangio,inset,plympton,kuril,vaccinations,recep,theropods,axils,stavropol,encroached,apoptotic,papandreou,wailers,moonstone,assizes,micrometers,hornchurch,truncation,annapurna,egyptologists,rheumatic,promiscuity,satiric,fleche,caloptilia,anisotropy,quaternions,gruppo,viscounts,awardees,aftershocks,sigint,concordance,oblasts,gaumont,stent,commissars,kesteven,hydroxy,vijayanagar,belorussian,fabricius,watermark,tearfully,mamet,leukaemia,sorkh,milepost,tattooing,vosta,abbasids,uncompleted,hedong,woodwinds,extinguishing,malus,multiplexes,francoist,pathet,responsa,bassists,'most,postsecondary,ossory,grampian,saakashvili,alito,strasberg,impressionistic,volador,gelatinous,vignette,underwing,campanian,abbasabad,albertville,hopefuls,nieuwe,taxiways,reconvened,recumbent,pathologists,unionized,faversham,asymptotically,romulo,culling,donja,constricted,annesley,duomo,enschede,lovech,sharpshooter,lansky,dhamma,papillae,alanine,mowat,delius,wrest,mcluhan,podkarpackie,imitators,bilaspur,stunting,pommel,casemate,handicaps,nagas,testaments,hemings,necessitate,rearward,locative,cilla,klitschko,lindau,merion,consequential,antic,soong,copula,berthing,chevrons,rostral,sympathizer,budokan,ranulf,beria,stilt,replying,conflated,alcibiades,painstaking,yamanashi,calif.,arvid,ctesiphon,xizong,rajas,caxton,downbeat,resurfacing,rudders,miscegenation,deathmatch,foregoing,arthropod,attestation,karts,reapportionment,harnessing,eastlake,schola,dosing,postcolonial,imtiaz,formula_55,insulators,gunung,accumulations,pampas,llewelyn,bahnhof,cytosol,grosjean,teaneck,briarcliff,arsenio,canara,elaborating,passchendaele,searchlights,holywell,mohandas,preventable,gehry,mestizos,ustinov,cliched,'national,heidfeld,tertullian,jihadist,tourer,miletus,semicircle,outclassed,bouillon,cardinalate,clarifies,dakshina,bilayer,pandyan,unrwa,chandragupta,formula_56,portola,sukumaran,lactation,islamia,heikki,couplers,misappropriation,catshark,montt,ploughs,carib,stator,leaderboard,kenrick,dendrites,scape,tillamook,molesworth,mussorgsky,melanesia,restated,troon,glycoside,truckee,headwater,mashup,sectoral,gangwon,docudrama,skirting,psychopathology,dramatised,ostroleka,infestations,thabo,depolarization,wideroe,eisenbahn,thomond,kumaon,upendra,foreland,acronyms,yaqui,retaking,raphaelite,specie,dupage,villars,lucasarts,chloroplast,werribee,balsa,ascribe,havant,flava,khawaja,tyumen,subtract,interrogators,reshaping,buzzcocks,eesti,campanile,potemkin,apertures,snowboarder,registrars,handbooks,boyar,contaminant,depositors,proximate,jeunesse,zagora,pronouncements,mists,nihilism,deified,margraviate,pietersen,moderators,amalfi,adjectival,copepods,magnetosphere,pallets,clemenceau,castra,perforation,granitic,troilus,grzegorz,luthier,dockyards,antofagasta,ffestiniog,subroutine,afterword,waterwheel,druce,nitin,undifferentiated,emacs,readmitted,barneveld,tapers,hittites,infomercials,infirm,braathens,heligoland,carpark,geomagnetic,musculoskeletal,nigerien,machinima,harmonize,repealing,indecency,muskoka,verite,steubenville,suffixed,cytoskeleton,surpasses,harmonia,imereti,ventricles,heterozygous,envisions,otsego,ecoles,warrnambool,burgenland,seria,rawat,capistrano,welby,kirin,enrollments,caricom,dragonlance,schaffhausen,expanses,photojournalism,brienne,etude,referent,jamtland,schemas,xianbei,cleburne,bicester,maritima,shorelines,diagonals,bjelke,nonpublic,aliasing,m.f.a,ovals,maitreya,skirmishing,grothendieck,sukhothai,angiotensin,bridlington,durgapur,contras,gakuen,skagit,rabbinate,tsunamis,haphazard,tyldesley,microcontroller,discourages,hialeah,compressing,septimus,larvik,condoleezza,psilocybin,protectionism,songbirds,clandestinely,selectmen,wargame,cinemascope,khazars,agronomy,melzer,latifah,cherokees,recesses,assemblymen,basescu,banaras,bioavailability,subchannels,adenine,o'kelly,prabhakar,leonese,dimethyl,testimonials,geoffroy,oxidant,universiti,gheorghiu,bohdan,reversals,zamorin,herbivore,jarre,sebastiao,infanterie,dolmen,teddington,radomsko,spaceships,cuzco,recapitulation,mahoning,bainimarama,myelin,aykroyd,decals,tokelau,nalgonda,rajasthani,121st,quelled,tambov,illyrians,homilies,illuminations,hypertrophy,grodzisk,inundation,incapacity,equilibria,combats,elihu,steinitz,berengar,gowda,canwest,khosrau,maculata,houten,kandinsky,onside,leatherhead,heritable,belvidere,federative,chukchi,serling,eruptive,patan,entitlements,suffragette,evolutions,migrates,demobilisation,athleticism,trope,sarpsborg,kensal,translink,squamish,concertgebouw,energon,timestamp,competences,zalgiris,serviceman,codice_7,spoofing,assange,mahadevan,skien,suceava,augustan,revisionism,unconvincing,hollande,drina,gottlob,lippi,broglie,darkening,tilapia,eagerness,nacht,kolmogorov,photometric,leeuwarden,jrotc,haemorrhage,almanack,cavalli,repudiation,galactose,zwickau,cetinje,houbraken,heavyweights,gabonese,ordinals,noticias,museveni,steric,charaxes,amjad,resection,joinville,leczyca,anastasius,purbeck,subtribe,dalles,leadoff,monoamine,jettisoned,kaori,anthologized,alfreton,indic,bayezid,tottori,colonizing,assassinating,unchanging,eusebian,d'estaing,tsingtao,toshio,transferases,peronist,metrology,equus,mirpur,libertarianism,kovil,indole,'green,abstention,quantitatively,icebreakers,tribals,mainstays,dryandra,eyewear,nilgiri,chrysanthemum,inositol,frenetic,merchantman,hesar,physiotherapist,transceiver,dancefloor,rankine,neisse,marginalization,lengthen,unaided,rework,pageantry,savio,striated,funen,witton,illuminates,frass,hydrolases,akali,bistrita,copywriter,firings,handballer,tachinidae,dmytro,coalesce,neretva,menem,moraines,coatbridge,crossrail,spoofed,drosera,ripen,protour,kikuyu,boleslav,edwardes,troubadours,haplogroups,wrasse,educationalist,sroda,khaneh,dagbladet,apennines,neuroscientist,deplored,terje,maccabees,daventry,spaceport,lessening,ducats,singer/guitarist,chambersburg,yeong,configurable,ceremonially,unrelenting,caffe,graaf,denizens,kingsport,ingush,panhard,synthesised,tumulus,homeschooled,bozorg,idiomatic,thanhouser,queensway,radek,hippolytus,inking,banovina,peacocks,piaui,handsworth,pantomimes,abalone,thera,kurzweil,bandura,augustinians,bocelli,ferrol,jiroft,quadrature,contravention,saussure,rectification,agrippina,angelis,matanzas,nidaros,palestrina,latium,coriolis,clostridium,ordain,uttering,lanchester,proteolytic,ayacucho,merseburg,holbein,sambalpur,algebraically,inchon,ostfold,savoia,calatrava,lahiri,judgeship,ammonite,masaryk,meyerbeer,hemorrhagic,superspeedway,ningxia,panicles,encircles,khmelnytsky,profusion,esher,babol,inflationary,anhydride,gaspe,mossy,periodicity,nacion,meteorologists,mahjong,interventional,sarin,moult,enderby,modell,palgrave,warners,montcalm,siddha,functionalism,rilke,politicized,broadmoor,kunste,orden,brasileira,araneta,eroticism,colquhoun,mamba,blacktown,tubercle,seagrass,manoel,camphor,neoregelia,llandudno,annexe,enplanements,kamien,plovers,statisticians,iturbide,madrasah,nontrivial,publican,landholders,manama,uninhabitable,revivalist,trunkline,friendliness,gurudwara,rocketry,unido,tripos,besant,braque,evolutionarily,abkhazian,staffel,ratzinger,brockville,bohemond,intercut,djurgarden,utilitarianism,deploys,sastri,absolutism,subhas,asghar,fictions,sepinwall,proportionately,titleholders,thereon,foursquare,machinegun,knightsbridge,siauliai,aqaba,gearboxes,castaways,weakens,phallic,strzelce,buoyed,ruthenia,pharynx,intractable,neptunes,koine,leakey,netherlandish,preempted,vinay,terracing,instigating,alluvium,prosthetics,vorarlberg,politiques,joinery,reduplication,nebuchadnezzar,lenticular,banka,seaborne,pattinson,helpline,aleph,beckenham,californians,namgyal,franziska,aphid,branagh,transcribe,appropriateness,surakarta,takings,propagates,juraj,b0d3fb,brera,arrayed,tailback,falsehood,hazleton,prosody,egyptology,pinnate,tableware,ratan,camperdown,ethnologist,tabari,classifiers,biogas,126th,kabila,arbitron,apuestas,membranous,kincardine,oceana,glories,natick,populism,synonymy,ghalib,mobiles,motherboards,stationers,germinal,patronised,formula_58,gaborone,torts,jeezy,interleague,novaya,batticaloa,offshoots,wilbraham,filename,nswrfl,'well,trilobite,pythons,optimally,scientologists,rhesus,pilsen,backdrops,batang,unionville,hermanos,shrikes,fareham,outlawing,discontinuing,boisterous,shamokin,scanty,southwestward,exchangers,unexpired,mewar,h.m.s,saldanha,pawan,condorcet,turbidity,donau,indulgences,coincident,cliques,weeklies,bardhaman,violators,kenai,caspase,xperia,kunal,fistula,epistemic,cammell,nephi,disestablishment,rotator,germaniawerft,pyaar,chequered,jigme,perlis,anisotropic,popstars,kapil,appendices,berat,defecting,shacks,wrangel,panchayath,gorna,suckling,aerosols,sponheim,talal,borehole,encodings,enlai,subduing,agong,nadar,kitsap,syrmia,majumdar,pichilemu,charleville,embryology,booting,literati,abutting,basalts,jussi,repubblica,hertogenbosch,digitization,relents,hillfort,wiesenthal,kirche,bhagwan,bactrian,oases,phyla,neutralizing,helsing,ebooks,spearheading,margarine,'golden,phosphor,picea,stimulants,outliers,timescale,gynaecology,integrator,skyrocketed,bridgnorth,senecio,ramachandra,suffragist,arrowheads,aswan,inadvertent,microelectronics,118th,sofer,kubica,melanesian,tuanku,balkh,vyborg,crystallographic,initiators,metamorphism,ginzburg,looters,unimproved,finistere,newburyport,norges,immunities,franchisees,asterism,kortrijk,camorra,komsomol,fleurs,draughts,patagonian,voracious,artin,collaborationist,revolucion,revitalizing,xaver,purifying,antipsychotic,disjunct,pompeius,dreamwave,juvenal,beinn,adiyaman,antitank,allama,boletus,melanogaster,dumitru,caproni,aligns,athabaskan,stobart,phallus,veikkausliiga,hornsey,buffering,bourbons,dobruja,marga,borax,electrics,gangnam,motorcyclist,whidbey,draconian,lodger,galilean,sanctification,imitates,boldness,underboss,wheatland,cantabrian,terceira,maumee,redefining,uppercase,ostroda,characterise,universalism,equalized,syndicalism,haringey,masovia,deleuze,funkadelic,conceals,thuan,minsky,pluralistic,ludendorff,beekeeping,bonfires,endoscopic,abuts,prebend,jonkoping,amami,tribunes,yup'ik,awadh,gasification,pforzheim,reforma,antiwar,vaishnavism,maryville,inextricably,margrethe,empresa,neutrophils,sanctified,ponca,elachistidae,curiae,quartier,mannar,hyperplasia,wimax,busing,neologism,florins,underrepresented,digitised,nieuw,cooch,howards,frege,hughie,plied,swale,kapellmeister,vajpayee,quadrupled,aeronautique,dushanbe,custos,saltillo,kisan,tigray,manaus,epigrams,shamanic,peppered,frosts,promotion/relegation,concedes,zwingli,charentes,whangarei,hyung,spring/summer,sobre,eretz,initialization,sawai,ephemera,grandfathered,arnaldo,customised,permeated,parapets,growths,visegrad,estudios,altamont,provincia,apologises,stoppard,carburettor,rifts,kinematic,zhengzhou,eschatology,prakrit,folate,yvelines,scapula,stupas,rishon,reconfiguration,flutist,1680s,apostolate,proudhon,lakshman,articulating,stortford,faithfull,bitterns,upwelling,qur'anic,lidar,interferometry,waterlogged,koirala,ditton,wavefunction,fazal,babbage,antioxidants,lemberg,deadlocked,tolled,ramapo,mathematica,leiria,topologies,khali,photonic,balti,1080p,corrects,recommenced,polyglot,friezes,tiebreak,copacabana,cholmondeley,armband,abolishment,sheamus,buttes,glycolysis,cataloged,warrenton,sassari,kishan,foodservice,cryptanalysis,holmenkollen,cosplay,machi,yousuf,mangal,allying,fertiliser,otomi,charlevoix,metallurg,parisians,bottlenose,oakleigh,debug,cidade,accede,ligation,madhava,pillboxes,gatefold,aveyron,sorin,thirsk,immemorial,menelik,mehra,domingos,underpinned,fleshed,harshness,diphthong,crestwood,miskolc,dupri,pyrausta,muskingum,tuoba,prodi,incidences,waynesboro,marquesas,heydar,artesian,calinescu,nucleation,funders,covalently,compaction,derbies,seaters,sodor,tabular,amadou,peckinpah,o'halloran,zechariah,libyans,kartik,daihatsu,chandran,erzhu,heresies,superheated,yarder,dorde,tanjore,abusers,xuanwu,juniperus,moesia,trusteeship,birdwatching,beatz,moorcock,harbhajan,sanga,choreographic,photonics,boylston,amalgamate,prawns,electrifying,sarath,inaccurately,exclaims,powerpoint,chaining,cpusa,adulterous,saccharomyces,glogow,vfl/afl,syncretic,simla,persisting,functors,allosteric,euphorbiaceae,juryo,mlada,moana,gabala,thornycroft,kumanovo,ostrovsky,sitio,tutankhamun,sauropods,kardzhali,reinterpretation,sulpice,rosyth,originators,halesowen,delineation,asesoria,abatement,gardai,elytra,taillights,overlays,monsoons,sandpipers,ingmar,henrico,inaccuracy,irwell,arenabowl,elche,pressburg,signalman,interviewees,sinkhole,pendle,ecommerce,cellos,nebria,organometallic,surrealistic,propagandist,interlaken,canandaigua,aerials,coutinho,pascagoula,tonopah,letterkenny,gropius,carbons,hammocks,childe,polities,hosiery,donitz,suppresses,diaghilev,stroudsburg,bagram,pistoia,regenerating,unitarians,takeaway,offstage,vidin,glorification,bakunin,yavapai,lutzow,sabercats,witney,abrogated,gorlitz,validating,dodecahedron,stubbornly,telenor,glaxosmithkline,solapur,undesired,jellicoe,dramatization,four-and-a-half,seawall,waterpark,artaxerxes,vocalization,typographic,byung,sachsenhausen,shepparton,kissimmee,konnan,belsen,dhawan,khurd,mutagenesis,vejle,perrot,estradiol,formula_60,saros,chiloe,misiones,lamprey,terrains,speke,miasto,eigenvectors,haydock,reservist,corticosteroids,savitri,shinawatra,developmentally,yehudi,berates,janissaries,recapturing,rancheria,subplots,gresley,nikkatsu,oryol,cosmas,boavista,formula_59,playfully,subsections,commentated,kathakali,dorid,vilaine,seepage,hylidae,keiji,kazakhs,triphosphate,1620s,supersede,monarchists,falla,miyako,notching,bhumibol,polarizing,secularized,shingled,bronislaw,lockerbie,soleyman,bundesbahn,latakia,redoubts,boult,inwardly,invents,ondrej,minangkabau,newquay,permanente,alhaji,madhav,malini,ellice,bookmaker,mankiewicz,etihad,o'dea,interrogative,mikawa,wallsend,canisius,bluesy,vitruvius,noord,ratifying,mixtec,gujranwala,subprefecture,keelung,goiania,nyssa,shi'ite,semitone,ch'uan,computerised,pertuan,catapults,nepomuk,shruti,millstones,buskerud,acolytes,tredegar,sarum,armia,dell'arte,devises,custodians,upturned,gallaudet,disembarking,thrashed,sagrada,myeon,undeclared,qumran,gaiden,tepco,janesville,showground,condense,chalon,unstaffed,pasay,undemocratic,hauts,viridis,uninjured,escutcheon,gymkhana,petaling,hammam,dislocations,tallaght,rerum,shias,indios,guaranty,simplicial,benares,benediction,tajiri,prolifically,huawei,onerous,grantee,ferencvaros,otranto,carbonates,conceit,digipak,qadri,masterclasses,swamiji,cradock,plunket,helmsman,119th,salutes,tippecanoe,murshidabad,intelligibility,mittal,diversifying,bidar,asansol,crowdsourcing,rovere,karakoram,grindcore,skylights,tulagi,furrows,ligne,stuka,sumer,subgraph,amata,regionalist,bulkeley,teletext,glorify,readied,lexicographer,sabadell,predictability,quilmes,phenylalanine,bandaranaike,pyrmont,marksmen,quisling,viscountess,sociopolitical,afoul,pediments,swazi,martyrology,nullify,panagiotis,superconductors,veldenz,jujuy,l'isle,hematopoietic,shafi,subsea,hattiesburg,jyvaskyla,kebir,myeloid,landmine,derecho,amerindians,birkenau,scriabin,milhaud,mucosal,nikaya,freikorps,theoretician,proconsul,o'hanlon,clerked,bactria,houma,macular,topologically,shrubby,aryeh,ghazali,afferent,magalhaes,moduli,ashtabula,vidarbha,securitate,ludwigsburg,adoor,varun,shuja,khatun,chengde,bushels,lascelles,professionnelle,elfman,rangpur,unpowered,citytv,chojnice,quaternion,stokowski,aschaffenburg,commutes,subramaniam,methylene,satrap,gharb,namesakes,rathore,helier,gestational,heraklion,colliers,giannis,pastureland,evocation,krefeld,mahadeva,churchmen,egret,yilmaz,galeazzo,pudukkottai,artigas,generalitat,mudslides,frescoed,enfeoffed,aphorisms,melilla,montaigne,gauliga,parkdale,mauboy,linings,prema,sapir,xylophone,kushan,rockne,sequoyah,vasyl,rectilinear,vidyasagar,microcosm,san'a,carcinogen,thicknesses,aleut,farcical,moderating,detested,hegemonic,instalments,vauban,verwaltungsgemeinschaft,picayune,razorback,magellanic,moluccas,pankhurst,exportation,waldegrave,sufferer,bayswater,1up.com,rearmament,orangutans,varazdin,b.o.b,elucidate,harlingen,erudition,brankovic,lapis,slipway,urraca,shinde,unwell,elwes,euboea,colwyn,srivijaya,grandstands,hortons,generalleutnant,fluxes,peterhead,gandhian,reals,alauddin,maximized,fairhaven,endow,ciechanow,perforations,darters,panellist,manmade,litigants,exhibitor,tirol,caracalla,conformance,hotelier,stabaek,hearths,borac,frisians,ident,veliko,emulators,schoharie,uzbeks,samarra,prestwick,wadia,universita,tanah,bucculatrix,predominates,genotypes,denounces,roadsides,ganassi,keokuk,philatelist,tomic,ingots,conduits,samplers,abdus,johar,allegories,timaru,wolfpacks,secunda,smeaton,sportivo,inverting,contraindications,whisperer,moradabad,calamities,bakufu,soundscape,smallholders,nadeem,crossroad,xenophobic,zakir,nationalliga,glazes,retroflex,schwyz,moroder,rubra,quraysh,theodoros,endemol,infidels,km/hr,repositioned,portraitist,lluis,answerable,arges,mindedness,coarser,eyewall,teleported,scolds,uppland,vibraphone,ricoh,isenburg,bricklayer,cuttlefish,abstentions,communicable,cephalopod,stockyards,balto,kinston,armbar,bandini,elphaba,maxims,bedouins,sachsen,friedkin,tractate,pamir,ivanovo,mohini,kovalainen,nambiar,melvyn,orthonormal,matsuyama,cuernavaca,veloso,overstated,streamer,dravid,informers,analyte,sympathized,streetscape,gosta,thomasville,grigore,futuna,depleting,whelks,kiedis,armadale,earner,wynyard,dothan,animating,tridentine,sabri,immovable,rivoli,ariege,parley,clinker,circulates,junagadh,fraunhofer,congregants,180th,buducnost,formula_62,olmert,dedekind,karnak,bayernliga,mazes,sandpiper,ecclestone,yuvan,smallmouth,decolonization,lemmy,adjudicated,retiro,legia,benue,posit,acidification,wahab,taconic,floatplane,perchlorate,atria,wisbech,divestment,dallara,phrygia,palustris,cybersecurity,rebates,facie,mineralogical,substituent,proteges,fowey,mayenne,smoothbore,cherwell,schwarzschild,junin,murrumbidgee,smalltalk,d'orsay,emirati,calaveras,titusville,theremin,vikramaditya,wampanoag,burra,plaines,onegin,emboldened,whampoa,langa,soderbergh,arnaz,sowerby,arendal,godunov,pathanamthitta,damselfly,bestowing,eurosport,iconoclasm,outfitters,acquiesced,badawi,hypotension,ebbsfleet,annulus,sohrab,thenceforth,chagatai,necessitates,aulus,oddities,toynbee,uniontown,innervation,populaire,indivisible,rossellini,minuet,cyrene,gyeongju,chania,cichlids,harrods,1690s,plunges,abdullahi,gurkhas,homebuilt,sortable,bangui,rediff,incrementally,demetrios,medaille,sportif,svend,guttenberg,tubules,carthusian,pleiades,torii,hoppus,phenyl,hanno,conyngham,teschen,cronenberg,wordless,melatonin,distinctiveness,autos,freising,xuanzang,dunwich,satanism,sweyn,predrag,contractually,pavlovic,malaysians,micrometres,expertly,pannonian,abstaining,capensis,southwesterly,catchphrases,commercialize,frankivsk,normanton,hibernate,verso,deportees,dubliners,codice_8,condors,zagros,glosses,leadville,conscript,morrisons,usury,ossian,oulton,vaccinium,civet,ayman,codrington,hadron,nanometers,geochemistry,extractor,grigori,tyrrhenian,neocollyris,drooping,falsification,werft,courtauld,brigantine,orhan,chapultepec,supercopa,federalized,praga,havering,encampments,infallibility,sardis,pawar,undirected,reconstructionist,ardrossan,varuna,pastimes,archdiocesan,fledging,shenhua,molise,secondarily,stagnated,replicates,ciencias,duryodhana,marauding,ruislip,ilyich,intermixed,ravenswood,shimazu,mycorrhizal,icosahedral,consents,dunblane,follicular,pekin,suffield,muromachi,kinsale,gauche,businesspeople,thereto,watauga,exaltation,chelmno,gorse,proliferate,drainages,burdwan,kangra,transducers,inductor,duvalier,maguindanao,moslem,uncaf,givenchy,plantarum,liturgics,telegraphs,lukashenko,chenango,andante,novae,ironwood,faubourg,torme,chinensis,ambala,pietermaritzburg,virginians,landform,bottlenecks,o'driscoll,darbhanga,baptistery,ameer,needlework,naperville,auditoriums,mullingar,starrer,animatronic,topsoil,madura,cannock,vernet,santurce,catocala,ozeki,pontevedra,multichannel,sundsvall,strategists,medio,135th,halil,afridi,trelawny,caloric,ghraib,allendale,hameed,ludwigshafen,spurned,pavlo,palmar,strafed,catamarca,aveiro,harmonization,surah,predictors,solvay,mande,omnipresent,parenthesis,echolocation,equaling,experimenters,acyclic,lithographic,sepoys,katarzyna,sridevi,impoundment,khosrow,caesarean,nacogdoches,rockdale,lawmaker,caucasians,bahman,miyan,rubric,exuberance,bombastic,ductile,snowdonia,inlays,pinyon,anemones,hurries,hospitallers,tayyip,pulleys,treme,photovoltaics,testbed,polonium,ryszard,osgoode,profiting,ironwork,unsurpassed,nepticulidae,makai,lumbini,preclassic,clarksburg,egremont,videography,rehabilitating,ponty,sardonic,geotechnical,khurasan,solzhenitsyn,henna,phoenicia,rhyolite,chateaux,retorted,tomar,deflections,repressions,harborough,renan,brumbies,vandross,storia,vodou,clerkenwell,decking,universo,salon.com,imprisoning,sudwest,ghaziabad,subscribing,pisgah,sukhumi,econometric,clearest,pindar,yildirim,iulia,atlases,cements,remaster,dugouts,collapsible,resurrecting,batik,unreliability,thiers,conjunctions,colophon,marcher,placeholder,flagella,wolds,kibaki,viviparous,twelver,screenshots,aroostook,khadr,iconographic,itasca,jaume,basti,propounded,varro,be'er,jeevan,exacted,shrublands,creditable,brocade,boras,bittern,oneonta,attentional,herzliya,comprehensible,lakeville,discards,caxias,frankland,camerata,satoru,matlab,commutator,interprovincial,yorkville,benefices,nizami,edwardsville,amigaos,cannabinoid,indianola,amateurliga,pernicious,ubiquity,anarchic,novelties,precondition,zardari,symington,sargodha,headphone,thermopylae,mashonaland,zindagi,thalberg,loewe,surfactants,dobro,crocodilians,samhita,diatoms,haileybury,berwickshire,supercritical,sofie,snorna,slatina,intramolecular,agung,osteoarthritis,obstetric,teochew,vakhtang,connemara,deformations,diadem,ferruccio,mainichi,qualitatively,refrigerant,rerecorded,methylated,karmapa,krasinski,restatement,rouvas,cubitt,seacoast,schwarzkopf,homonymous,shipowner,thiamine,approachable,xiahou,160th,ecumenism,polistes,internazionali,fouad,berar,biogeography,texting,inadequately,'when,4kids,hymenoptera,emplaced,cognomen,bellefonte,supplant,michaelmas,uriel,tafsir,morazan,schweinfurt,chorister,ps400,nscaa,petipa,resolutely,ouagadougou,mascarene,supercell,konstanz,bagrat,harmonix,bergson,shrimps,resonators,veneta,camas,mynydd,rumford,generalmajor,khayyam,web.com,pappus,halfdan,tanana,suomen,yutaka,bibliographical,traian,silat,noailles,contrapuntal,agaricus,'special,minibuses,1670s,obadiah,deepa,rorschach,malolos,lymington,valuations,imperials,caballeros,ambroise,judicature,elegiac,sedaka,shewa,checksum,gosforth,legionaries,corneille,microregion,friedrichshafen,antonis,surnamed,mycelium,cantus,educations,topmost,outfitting,ivica,nankai,gouda,anthemic,iosif,supercontinent,antifungal,belarusians,mudaliar,mohawks,caversham,glaciated,basemen,stevan,clonmel,loughton,deventer,positivist,manipuri,tensors,panipat,changeup,impermeable,dubbo,elfsborg,maritimo,regimens,bikram,bromeliad,substratum,norodom,gaultier,queanbeyan,pompeo,redacted,eurocopter,mothballed,centaurs,borno,copra,bemidji,'home,sopron,neuquen,passo,cineplex,alexandrov,wysokie,mammoths,yossi,sarcophagi,congreve,petkovic,extraneous,waterbirds,slurs,indias,phaeton,discontented,prefaced,abhay,prescot,interoperable,nordisk,bicyclists,validly,sejong,litovsk,zanesville,kapitanleutnant,kerch,changeable,mcclatchy,celebi,attesting,maccoll,sepahan,wayans,veined,gaudens,markt,dansk,soane,quantized,petersham,forebears,nayarit,frenzied,queuing,bygone,viggo,ludwik,tanka,hanssen,brythonic,cornhill,primorsky,stockpiles,conceptualization,lampeter,hinsdale,mesoderm,bielsk,rosenheim,ultron,joffrey,stanwyck,khagan,tiraspol,pavelic,ascendant,empoli,metatarsal,descentralizado,masada,ligier,huseyin,ramadi,waratah,tampines,ruthenium,statoil,mladost,liger,grecian,multiparty,digraph,maglev,reconsideration,radiography,cartilaginous,taizu,wintered,anabaptist,peterhouse,shoghi,assessors,numerator,paulet,painstakingly,halakhic,rocroi,motorcycling,gimel,kryptonian,emmeline,cheeked,drawdown,lelouch,dacians,brahmana,reminiscence,disinfection,optimizations,golders,extensor,tsugaru,tolling,liman,gulzar,unconvinced,crataegus,oppositional,dvina,pyrolysis,mandan,alexius,prion,stressors,loomed,moated,dhivehi,recyclable,relict,nestlings,sarandon,kosovar,solvers,czeslaw,kenta,maneuverable,middens,berkhamsted,comilla,folkways,loxton,beziers,batumi,petrochemicals,optimised,sirjan,rabindra,musicality,rationalisation,drillers,subspaces,'live,bbwaa,outfielders,tsung,danske,vandalised,norristown,striae,kanata,gastroenterology,steadfastly,equalising,bootlegging,mannerheim,notodontidae,lagoa,commentating,peninsulas,chishti,seismology,modigliani,preceptor,canonically,awardee,boyaca,hsinchu,stiffened,nacelle,bogor,dryness,unobstructed,yaqub,scindia,peeters,irritant,ammonites,ferromagnetic,speechwriter,oxygenated,walesa,millais,canarian,faience,calvinistic,discriminant,rasht,inker,annexes,howth,allocates,conditionally,roused,regionalism,regionalbahn,functionary,nitrates,bicentenary,recreates,saboteurs,koshi,plasmids,thinned,124th,plainview,kardashian,neuville,victorians,radiates,127th,vieques,schoolmates,petru,tokusatsu,keying,sunaina,flamethrower,'bout,demersal,hosokawa,corelli,omniscient,o'doherty,niksic,reflectivity,transdev,cavour,metronome,temporally,gabba,nsaids,geert,mayport,hematite,boeotia,vaudreuil,torshavn,sailplane,mineralogist,eskisehir,practises,gallifrey,takumi,unease,slipstream,hedmark,paulinus,ailsa,wielkopolska,filmworks,adamantly,vinaya,facelifted,franchisee,augustana,toppling,velvety,crispa,stonington,histological,genealogist,tactician,tebow,betjeman,nyingma,overwinter,oberoi,rampal,overwinters,petaluma,lactarius,stanmore,balikpapan,vasant,inclines,laminate,munshi,sociedade,rabbah,septal,boyband,ingrained,faltering,inhumans,nhtsa,affix,l'ordre,kazuki,rossendale,mysims,latvians,slaveholders,basilicata,neuburg,assize,manzanillo,scrobipalpa,formula_61,belgique,pterosaurs,privateering,vaasa,veria,northport,pressurised,hobbyist,austerlitz,sahih,bhadra,siliguri,bistrica,bursaries,wynton,corot,lepidus,lully,libor,libera,olusegun,choline,mannerism,lymphocyte,chagos,duxbury,parasitism,ecowas,morotai,cancion,coniston,aggrieved,sputnikmusic,parle,ammonian,civilisations,malformation,cattaraugus,skyhawks,d'arc,demerara,bronfman,midwinter,piscataway,jogaila,threonine,matins,kohlberg,hubli,pentatonic,camillus,nigam,potro,unchained,chauvel,orangeville,cistercians,redeployment,xanthi,manju,carabinieri,pakeha,nikolaevich,kantakouzenos,sesquicentennial,gunships,symbolised,teramo,ballo,crusading,l'oeil,bharatpur,lazier,gabrovo,hysteresis,rothbard,chaumont,roundel,ma'mun,sudhir,queried,newts,shimane,presynaptic,playfield,taxonomists,sensitivities,freleng,burkinabe,orfeo,autovia,proselytizing,bhangra,pasok,jujutsu,heung,pivoting,hominid,commending,formula_64,epworth,christianized,oresund,hantuchova,rajputana,hilversum,masoretic,dayak,bakri,assen,magog,macromolecules,waheed,qaida,spassky,rumped,protrudes,preminger,misogyny,glencairn,salafi,lacunae,grilles,racemes,areva,alighieri,inari,epitomized,photoshoot,one-of-a-kind,tring,muralist,tincture,backwaters,weaned,yeasts,analytically,smaland,caltrans,vysocina,jamuna,mauthausen,175th,nouvelles,censoring,reggina,christology,gilad,amplifying,mehmood,johnsons,redirects,eastgate,sacrum,meteoric,riverbanks,guidebooks,ascribes,scoparia,iconoclastic,telegraphic,chine,merah,mistico,lectern,sheung,aethelstan,capablanca,anant,uspto,albatrosses,mymensingh,antiretroviral,clonal,coorg,vaillant,liquidator,gigas,yokai,eradicating,motorcyclists,waitakere,tandon,nears,montenegrins,250th,tatsuya,yassin,atheistic,syncretism,nahum,berisha,transcended,owensboro,lakshmana,abteilung,unadorned,nyack,overflows,harrisonburg,complainant,uematsu,frictional,worsens,sangguniang,abutment,bulwer,sarma,apollinaire,shippers,lycia,alentejo,porpoises,optus,trawling,augustow,blackwall,workbench,westmount,leaped,sikandar,conveniences,stornoway,culverts,zoroastrians,hristo,ansgar,assistive,reassert,fanned,compasses,delgada,maisons,arima,plonsk,verlaine,starstruck,rakhine,befell,spirally,wyclef,expend,colloquium,formula_63,albertus,bellarmine,handedness,holon,introns,movimiento,profitably,lohengrin,discoverers,awash,erste,pharisees,dwarka,oghuz,hashing,heterodox,uloom,vladikavkaz,linesman,rehired,nucleophile,germanicus,gulshan,songz,bayerische,paralympian,crumlin,enjoined,khanum,prahran,penitent,amersfoort,saranac,semisimple,vagrants,compositing,tualatin,oxalate,lavra,ironi,ilkeston,umpqua,calum,stretford,zakat,guelders,hydrazine,birkin,spurring,modularity,aspartate,sodermanland,hopital,bellary,legazpi,clasico,cadfael,hypersonic,volleys,pharmacokinetics,carotene,orientale,pausini,bataille,lunga,retailed,m.phil,mazowieckie,vijayan,rawal,sublimation,promissory,estimators,ploughed,conflagration,penda,segregationist,otley,amputee,coauthor,sopra,pellew,wreckers,tollywood,circumscription,permittivity,strabane,landward,articulates,beaverbrook,rutherglen,coterminous,whistleblowers,colloidal,surbiton,atlante,oswiecim,bhasa,lampooned,chanter,saarc,landkreis,tribulation,tolerates,daiichi,hatun,cowries,dyschirius,abercromby,attock,aldwych,inflows,absolutist,l'histoire,committeeman,vanbrugh,headstock,westbourne,appenzell,hoxton,oculus,westfalen,roundabouts,nickelback,trovatore,quenching,summarises,conservators,transmutation,talleyrand,barzani,unwillingly,axonal,'blue,opining,enveloping,fidesz,rafah,colborne,flickr,lozenge,dulcimer,ndebele,swaraj,oxidize,gonville,resonated,gilani,superiore,endeared,janakpur,shepperton,solidifying,memoranda,sochaux,kurnool,rewari,emirs,kooning,bruford,unavailability,kayseri,judicious,negating,pterosaur,cytosolic,chernihiv,variational,sabretooth,seawolves,devalued,nanded,adverb,volunteerism,sealers,nemours,smederevo,kashubian,bartin,animax,vicomte,polotsk,polder,archiepiscopal,acceptability,quidditch,tussock,seminaire,immolation,belge,coves,wellingborough,khaganate,mckellen,nayaka,brega,kabhi,pontoons,bascule,newsreels,injectors,cobol,weblog,diplo,biggar,wheatbelt,erythrocytes,pedra,showgrounds,bogdanovich,eclecticism,toluene,elegies,formalize,andromedae,airworthiness,springville,mainframes,overexpression,magadha,bijelo,emlyn,glutamine,accenture,uhuru,metairie,arabidopsis,patanjali,peruvians,berezovsky,accion,astrolabe,jayanti,earnestly,sausalito,recurved,1500s,ramla,incineration,galleons,laplacian,shiki,smethwick,isomerase,dordevic,janow,jeffersonville,internationalism,penciled,styrene,ashur,nucleoside,peristome,horsemanship,sedges,bachata,medes,kristallnacht,schneerson,reflectance,invalided,strutt,draupadi,destino,partridges,tejas,quadrennial,aurel,halych,ethnomusicology,autonomist,radyo,rifting,shi'ar,crvena,telefilm,zawahiri,plana,sultanates,theodorus,subcontractors,pavle,seneschal,teleports,chernivtsi,buccal,brattleboro,stankovic,safar,dunhuang,electrocution,chastised,ergonomic,midsomer,130th,zomba,nongovernmental,escapist,localize,xuzhou,kyrie,carinthian,karlovac,nisan,kramnik,pilipino,digitisation,khasi,andronicus,highwayman,maior,misspelling,sebastopol,socon,rhaetian,archimandrite,partway,positivity,otaku,dingoes,tarski,geopolitics,disciplinarian,zulfikar,kenzo,globose,electrophilic,modele,storekeeper,pohang,wheldon,washers,interconnecting,digraphs,intrastate,campy,helvetic,frontispiece,ferrocarril,anambra,petraeus,midrib,endometrial,dwarfism,mauryan,endocytosis,brigs,percussionists,furtherance,synergistic,apocynaceae,krona,berthier,circumvented,casal,siltstone,precast,ethnikos,realists,geodesy,zarzuela,greenback,tripathi,persevered,interments,neutralization,olbermann,departements,supercomputing,demobilised,cassavetes,dunder,ministering,veszprem,barbarism,'world,pieve,apologist,frentzen,sulfides,firewalls,pronotum,staatsoper,hachette,makhachkala,oberland,phonon,yoshihiro,instars,purnima,winslet,mutsu,ergative,sajid,nizamuddin,paraphrased,ardeidae,kodagu,monooxygenase,skirmishers,sportiva,o'byrne,mykolaiv,ophir,prieta,gyllenhaal,kantian,leche,copan,herero,ps250,gelsenkirchen,shalit,sammarinese,chetwynd,wftda,travertine,warta,sigmaringen,concerti,namespace,ostergotland,biomarker,universals,collegio,embarcadero,wimborne,fiddlers,likening,ransomed,stifled,unabated,kalakaua,khanty,gongs,goodrem,countermeasure,publicizing,geomorphology,swedenborg,undefended,catastrophes,diverts,storyboards,amesbury,contactless,placentia,festivity,authorise,terrane,thallium,stradivarius,antonine,consortia,estimations,consecrate,supergiant,belichick,pendants,butyl,groza,univac,afire,kavala,studi,teletoon,paucity,gonbad,koninklijke,128th,stoichiometric,multimodal,facundo,anatomic,melamine,creuse,altan,brigands,mcguinty,blomfield,tsvangirai,protrusion,lurgan,warminster,tenzin,russellville,discursive,definable,scotrail,lignin,reincorporated,o'dell,outperform,redland,multicolored,evaporates,dimitrie,limbic,patapsco,interlingua,surrogacy,cutty,potrero,masud,cahiers,jintao,ardashir,centaurus,plagiarized,minehead,musings,statuettes,logarithms,seaview,prohibitively,downforce,rivington,tomorrowland,microbiologist,ferric,morag,capsid,kucinich,clairvaux,demotic,seamanship,cicada,painterly,cromarty,carbonic,tupou,oconee,tehuantepec,typecast,anstruther,internalized,underwriters,tetrahedra,flagrant,quakes,pathologies,ulrik,nahal,tarquini,dongguan,parnassus,ryoko,senussi,seleucia,airasia,einer,sashes,d'amico,matriculating,arabesque,honved,biophysical,hardinge,kherson,mommsen,diels,icbms,reshape,brasiliensis,palmach,netaji,oblate,functionalities,grigor,blacksburg,recoilless,melanchthon,reales,astrodome,handcrafted,memes,theorizes,isma'il,aarti,pirin,maatschappij,stabilizes,honiara,ashbury,copts,rootes,defensed,queiroz,mantegna,galesburg,coraciiformesfamily,cabrillo,tokio,antipsychotics,kanon,173rd,apollonia,finial,lydian,hadamard,rangi,dowlatabad,monolingual,platformer,subclasses,chiranjeevi,mirabeau,newsgroup,idmanyurdu,kambojas,walkover,zamoyski,generalist,khedive,flanges,knowle,bande,157th,alleyn,reaffirm,pininfarina,zuckerberg,hakodate,131st,aditi,bellinzona,vaulter,planking,boscombe,colombians,lysis,toppers,metered,nahyan,queensryche,minho,nagercoil,firebrand,foundress,bycatch,mendota,freeform,antena,capitalisation,martinus,overijssel,purists,interventionist,zgierz,burgundians,hippolyta,trompe,umatilla,moroccans,dictionnaire,hydrography,changers,chota,rimouski,aniline,bylaw,grandnephew,neamt,lemnos,connoisseurs,tractive,rearrangements,fetishism,finnic,apalachicola,landowning,calligraphic,circumpolar,mansfeld,legible,orientalism,tannhauser,blamey,maximization,noinclude,blackbirds,angara,ostersund,pancreatitis,glabra,acleris,juried,jungian,triumphantly,singlet,plasmas,synesthesia,yellowhead,unleashes,choiseul,quanzhong,brookville,kaskaskia,igcse,skatepark,jatin,jewellers,scaritinae,techcrunch,tellurium,lachaise,azuma,codeshare,dimensionality,unidirectional,scolaire,macdill,camshafts,unassisted,verband,kahlo,eliya,prelature,chiefdoms,saddleback,sockers,iommi,coloratura,llangollen,biosciences,harshest,maithili,k'iche,plical,multifunctional,andreu,tuskers,confounding,sambre,quarterdeck,ascetics,berdych,transversal,tuolumne,sagami,petrobras,brecker,menxia,instilling,stipulating,korra,oscillate,deadpan,v/line,pyrotechnic,stoneware,prelims,intracoastal,retraining,ilija,berwyn,encrypt,achievers,zulfiqar,glycoproteins,khatib,farmsteads,occultist,saman,fionn,derulo,khilji,obrenovic,argosy,toowong,dementieva,sociocultural,iconostasis,craigslist,festschrift,taifa,intercalated,tanjong,penticton,sharad,marxian,extrapolation,guises,wettin,prabang,exclaiming,kosta,famas,conakry,wanderings,'aliabad,macleay,exoplanet,bancorp,besiegers,surmounting,checkerboard,rajab,vliet,tarek,operable,wargaming,haldimand,fukuyama,uesugi,aggregations,erbil,brachiopods,tokyu,anglais,unfavorably,ujpest,escorial,armagnac,nagara,funafuti,ridgeline,cocking,o'gorman,compactness,retardant,krajowa,barua,coking,bestows,thampi,chicagoland,variably,o'loughlin,minnows,schwa,shaukat,polycarbonate,chlorinated,godalming,gramercy,delved,banqueting,enlil,sarada,prasanna,domhnall,decadal,regressive,lipoprotein,collectable,surendra,zaporizhia,cycliste,suchet,offsetting,formula_65,pudong,d'arte,blyton,quonset,osmania,tientsin,manorama,proteomics,bille,jalpaiguri,pertwee,barnegat,inventiveness,gollancz,euthanized,henricus,shortfalls,wuxia,chlorides,cerrado,polyvinyl,folktale,straddled,bioengineering,eschewing,greendale,recharged,olave,ceylonese,autocephalous,peacebuilding,wrights,guyed,rosamund,abitibi,bannockburn,gerontology,scutari,souness,seagram,codice_9,'open,xhtml,taguig,purposed,darbar,orthopedics,unpopulated,kisumu,tarrytown,feodor,polyhedral,monadnock,gottorp,priam,redesigning,gasworks,elfin,urquiza,homologation,filipovic,bohun,manningham,gornik,soundness,shorea,lanus,gelder,darke,sandgate,criticality,paranaense,153rd,vieja,lithograph,trapezoid,tiebreakers,convalescence,yan'an,actuaries,balad,altimeter,thermoelectric,trailblazer,previn,tenryu,ancaster,endoscopy,nicolet,discloses,fracking,plaine,salado,americanism,placards,absurdist,propylene,breccia,jirga,documenta,ismailis,161st,brentano,dallas/fort,embellishment,calipers,subscribes,mahavidyalaya,wednesbury,barnstormers,miwok,schembechler,minigame,unterberger,dopaminergic,inacio,nizamabad,overridden,monotype,cavernous,stichting,sassafras,sotho,argentinean,myrrh,rapidity,flatts,gowrie,dejected,kasaragod,cyprinidae,interlinked,arcseconds,degeneracy,infamously,incubate,substructure,trigeminal,sectarianism,marshlands,hooliganism,hurlers,isolationist,urania,burrard,switchover,lecco,wilts,interrogator,strived,ballooning,volterra,raciborz,relegating,gilding,cybele,dolomites,parachutist,lochaber,orators,raeburn,backend,benaud,rallycross,facings,banga,nuclides,defencemen,futurity,emitters,yadkin,eudonia,zambales,manasseh,sirte,meshes,peculiarly,mcminnville,roundly,boban,decrypt,icelanders,sanam,chelan,jovian,grudgingly,penalised,subscript,gambrinus,poaceae,infringements,maleficent,runciman,148th,supersymmetry,granites,liskeard,eliciting,involution,hallstatt,kitzbuhel,shankly,sandhills,inefficiencies,yishuv,psychotropic,nightjars,wavell,sangamon,vaikundar,choshu,retrospectives,pitesti,gigantea,hashemi,bosna,gakuin,siochana,arrangers,baronetcies,narayani,temecula,creston,koscierzyna,autochthonous,wyandot,anniston,igreja,mobilise,buzau,dunster,musselburgh,wenzhou,khattak,detoxification,decarboxylase,manlius,campbells,coleoptera,copyist,sympathisers,suisun,eminescu,defensor,transshipment,thurgau,somerton,fluctuates,ambika,weierstrass,lukow,giambattista,volcanics,romanticized,innovated,matabeleland,scotiabank,garwolin,purine,d'auvergne,borderland,maozhen,pricewaterhousecoopers,testator,pallium,scout.com,mv/pi,nazca,curacies,upjohn,sarasvati,monegasque,ketrzyn,malory,spikelets,biomechanics,haciendas,rapped,dwarfed,stews,nijinsky,subjection,matsu,perceptible,schwarzburg,midsection,entertains,circuitous,epiphytic,wonsan,alpini,bluefield,sloths,transportable,braunfels,dictum,szczecinek,jukka,wielun,wejherowo,hucknall,grameen,duodenum,ribose,deshpande,shahar,nexstar,injurious,dereham,lithographer,dhoni,structuralist,progreso,deschutes,christus,pulteney,quoins,yitzchak,gyeongsang,breviary,makkah,chiyoda,jutting,vineland,angiosperms,necrotic,novelisation,redistribute,tirumala,140th,featureless,mafic,rivaling,toyline,2/1st,martius,saalfeld,monthan,texian,kathak,melodramas,mithila,regierungsbezirk,509th,fermenting,schoolmate,virtuosic,briain,kokoda,heliocentric,handpicked,kilwinning,sonically,dinars,kasim,parkways,bogdanov,luxembourgian,halland,avesta,bardic,daugavpils,excavator,qwest,frustrate,physiographic,majoris,'ndrangheta,unrestrained,firmness,montalban,abundances,preservationists,adare,executioners,guardsman,bonnaroo,neglects,nazrul,pro12,hoorn,abercorn,refuting,kabud,cationic,parapsychology,troposphere,venezuelans,malignancy,khoja,unhindered,accordionist,medak,visby,ejercito,laparoscopic,dinas,umayyads,valmiki,o'dowd,saplings,stranding,incisions,illusionist,avocets,buccleuch,amazonia,fourfold,turboprops,roosts,priscus,turnstile,areal,certifies,pocklington,spoofs,viseu,commonalities,dabrowka,annam,homesteaders,daredevils,mondrian,negotiates,fiestas,perennials,maximizes,lubavitch,ravindra,scrapers,finials,kintyre,violas,snoqualmie,wilders,openbsd,mlawa,peritoneal,devarajan,congke,leszno,mercurial,fakir,joannes,bognor,overloading,unbuilt,gurung,scuttle,temperaments,bautzen,jardim,tradesman,visitations,barbet,sagamore,graaff,forecasters,wilsons,assis,l'air,shariah,sochaczew,russa,dirge,biliary,neuve,heartbreakers,strathearn,jacobian,overgrazing,edrich,anticline,parathyroid,petula,lepanto,decius,channelled,parvathi,puppeteers,communicators,francorchamps,kahane,longus,panjang,intron,traite,xxvii,matsuri,amrit,katyn,disheartened,cacak,omonia,alexandrine,partaking,wrangling,adjuvant,haskovo,tendrils,greensand,lammermoor,otherworld,volusia,stabling,one-and-a-half,bresson,zapatista,eotvos,ps150,webisodes,stepchildren,microarray,braganca,quanta,dolne,superoxide,bellona,delineate,ratha,lindenwood,bruhl,cingulate,tallies,bickerton,helgi,bevin,takoma,tsukuba,statuses,changeling,alister,bytom,dibrugarh,magnesia,duplicating,outlier,abated,goncalo,strelitz,shikai,mardan,musculature,ascomycota,springhill,tumuli,gabaa,odenwald,reformatted,autocracy,theresienstadt,suplex,chattopadhyay,mencken,congratulatory,weatherfield,systema,solemnity,projekt,quanzhou,kreuzberg,postbellum,nobuo,mediaworks,finisterre,matchplay,bangladeshis,kothen,oocyte,hovered,aromas,afshar,browed,teases,chorlton,arshad,cesaro,backbencher,iquique,vulcans,padmini,unabridged,cyclase,despotic,kirilenko,achaean,queensberry,debre,octahedron,iphigenia,curbing,karimnagar,sagarmatha,smelters,surrealists,sanada,shrestha,turridae,leasehold,jiedushi,eurythmics,appropriating,correze,thimphu,amery,musicomh,cyborgs,sandwell,pushcart,retorts,ameliorate,deteriorates,stojanovic,spline,entrenchments,bourse,chancellorship,pasolini,lendl,personage,reformulated,pubescens,loiret,metalurh,reinvention,nonhuman,eilema,tarsal,complutense,magne,broadview,metrodome,outtake,stouffville,seinen,bataillon,phosphoric,ostensible,opatow,aristides,beefheart,glorifying,banten,romsey,seamounts,fushimi,prophylaxis,sibylla,ranjith,goslar,balustrades,georgiev,caird,lafitte,peano,canso,bankura,halfpenny,segregate,caisson,bizerte,jamshedpur,euromaidan,philosophie,ridged,cheerfully,reclassification,aemilius,visionaries,samoans,wokingham,chemung,wolof,unbranched,cinerea,bhosle,ourense,immortalised,cornerstones,sourcebook,khufu,archimedean,universitatea,intermolecular,fiscally,suffices,metacomet,adjudicator,stablemate,specks,glace,inowroclaw,patristic,muharram,agitating,ashot,neurologic,didcot,gamla,ilves,putouts,siraj,laski,coaling,diarmuid,ratnagiri,rotulorum,liquefaction,morbihan,harel,aftershock,gruiformesfamily,bonnier,falconiformesfamily,adorns,wikis,maastrichtian,stauffenberg,bishopsgate,fakhr,sevenfold,ponders,quantifying,castiel,opacity,depredations,lenten,gravitated,o'mahony,modulates,inuktitut,paston,kayfabe,vagus,legalised,balked,arianism,tendering,sivas,birthdate,awlaki,khvajeh,shahab,samtgemeinde,bridgeton,amalgamations,biogenesis,recharging,tsukasa,mythbusters,chamfered,enthronement,freelancers,maharana,constantia,sutil,messines,monkton,okanogan,reinvigorated,apoplexy,tanahashi,neues,valiants,harappan,russes,carding,volkoff,funchal,statehouse,imitative,intrepidity,mellotron,samaras,turkana,besting,longitudes,exarch,diarrhoea,transcending,zvonareva,darna,ramblin,disconnection,137th,refocused,diarmait,agricole,ba'athist,turenne,contrabass,communis,daviess,fatimids,frosinone,fittingly,polyphyletic,qanat,theocratic,preclinical,abacha,toorak,marketplaces,conidia,seiya,contraindicated,retford,bundesautobahn,rebuilds,climatology,seaworthy,starfighter,qamar,categoria,malai,hellinsia,newstead,airworthy,catenin,avonmouth,arrhythmias,ayyavazhi,downgrade,ashburnham,ejector,kinematics,petworth,rspca,filmation,accipitridae,chhatrapati,g/mol,bacau,agama,ringtone,yudhoyono,orchestrator,arbitrators,138th,powerplants,cumbernauld,alderley,misamis,hawai`i,cuando,meistriliiga,jermyn,alans,pedigrees,ottavio,approbation,omnium,purulia,prioress,rheinland,lymphoid,lutsk,oscilloscope,ballina,iliac,motorbikes,modernising,uffizi,phylloxera,kalevala,bengalis,amravati,syntheses,interviewers,inflectional,outflank,maryhill,unhurt,profiler,nacelles,heseltine,personalised,guarda,herpetologist,airpark,pigot,margaretha,dinos,peleliu,breakbeat,kastamonu,shaivism,delamere,kingsville,epigram,khlong,phospholipids,journeying,lietuvos,congregated,deviance,celebes,subsoil,stroma,kvitova,lubricating,layoff,alagoas,olafur,doron,interuniversity,raycom,agonopterix,uzice,nanna,springvale,raimundo,wrested,pupal,talat,skinheads,vestige,unpainted,handan,odawara,ammar,attendee,lapped,myotis,gusty,ciconiiformesfamily,traversal,subfield,vitaphone,prensa,hasidism,inwood,carstairs,kropotkin,turgenev,dobra,remittance,purim,tannin,adige,tabulation,lethality,pacha,micronesian,dhruva,defensemen,tibeto,siculus,radioisotope,sodertalje,phitsanulok,euphonium,oxytocin,overhangs,skinks,fabrica,reinterred,emulates,bioscience,paragliding,raekwon,perigee,plausibility,frolunda,erroll,aznar,vyasa,albinus,trevally,confederacion,terse,sixtieth,1530s,kendriya,skateboarders,frontieres,muawiyah,easements,shehu,conservatively,keystones,kasem,brutalist,peekskill,cowry,orcas,syllabary,paltz,elisabetta,denticles,hampering,dolni,eidos,aarau,lermontov,yankton,shahbaz,barrages,kongsvinger,reestablishment,acetyltransferase,zulia,mrnas,slingsby,eucalypt,efficacious,weybridge,gradation,cinematheque,malthus,bampton,coexisted,cisse,hamdi,cupertino,saumarez,chionodes,libertine,formers,sakharov,pseudonymous,vol.1,mcduck,gopalakrishnan,amberley,jorhat,grandmasters,rudiments,dwindle,param,bukidnon,menander,americanus,multipliers,pulawy,homoerotic,pillbox,cd+dvd,epigraph,aleksandrow,extrapolated,horseshoes,contemporain,angiography,hasselt,shawinigan,memorization,legitimized,cyclades,outsold,rodolphe,kelis,powerball,dijkstra,analyzers,incompressible,sambar,orangeburg,osten,reauthorization,adamawa,sphagnum,hypermarket,millipedes,zoroaster,madea,ossuary,murrayfield,pronominal,gautham,resellers,ethers,quarrelled,dolna,stragglers,asami,tangut,passos,educacion,sharaf,texel,berio,bethpage,bezalel,marfa,noronha,36ers,genteel,avram,shilton,compensates,sweetener,reinstalled,disables,noether,1590s,balakrishnan,kotaro,northallerton,cataclysm,gholam,cancellara,schiphol,commends,longinus,albinism,gemayel,hamamatsu,volos,islamism,sidereal,pecuniary,diggings,townsquare,neosho,lushan,chittoor,akhil,disputation,desiccation,cambodians,thwarting,deliberated,ellipsis,bahini,susumu,separators,kohneh,plebeians,kultur,ogaden,pissarro,trypeta,latur,liaodong,vetting,datong,sohail,alchemists,lengthwise,unevenly,masterly,microcontrollers,occupier,deviating,farringdon,baccalaureat,theocracy,chebyshev,archivists,jayaram,ineffectiveness,scandinavians,jacobins,encomienda,nambu,g/cm3,catesby,paavo,heeded,rhodium,idealised,10deg,infective,mecyclothorax,halevy,sheared,minbari,audax,lusatian,rebuffs,hitfix,fastener,subjugate,tarun,binet,compuserve,synthesiser,keisuke,amalric,ligatures,tadashi,ignazio,abramovich,groundnut,otomo,maeve,mortlake,ostrogoths,antillean,todor,recto,millimetre,espousing,inaugurate,paracetamol,galvanic,harpalinae,jedrzejow,reassessment,langlands,civita,mikan,stikine,bijar,imamate,istana,kaiserliche,erastus,federale,cytosine,expansionism,hommes,norrland,smriti,snapdragon,gulab,taleb,lossy,khattab,urbanised,sesto,rekord,diffuser,desam,morganatic,silting,pacts,extender,beauharnais,purley,bouches,halfpipe,discontinuities,houthi,farmville,animism,horni,saadi,interpretative,blockades,symeon,biogeographic,transcaucasian,jetties,landrieu,astrocytes,conjunto,stumpings,weevils,geysers,redux,arching,romanus,tazeh,marcellinus,casein,opava,misrata,anare,sattar,declarer,dreux,oporto,venta,vallis,icosahedron,cortona,lachine,mohammedan,sandnes,zynga,clarin,diomedes,tsuyoshi,pribram,gulbarga,chartist,superettan,boscawen,altus,subang,gating,epistolary,vizianagaram,ogdensburg,panna,thyssen,tarkovsky,dzogchen,biograph,seremban,unscientific,nightjar,legco,deism,n.w.a,sudha,siskel,sassou,flintlock,jovial,montbeliard,pallida,formula_66,tranquillity,nisei,adornment,'people,yamhill,hockeyallsvenskan,adopters,appian,lowicz,haplotypes,succinctly,starogard,presidencies,kheyrabad,sobibor,kinesiology,cowichan,militum,cromwellian,leiningen,ps1.5,concourses,dalarna,goldfield,brzeg,faeces,aquarii,matchless,harvesters,181st,numismatics,korfball,sectioned,transpires,facultative,brandishing,kieron,forages,menai,glutinous,debarge,heathfield,1580s,malang,photoelectric,froome,semiotic,alwar,grammophon,chiaroscuro,mentalist,maramures,flacco,liquors,aleutians,marvell,sutlej,patnaik,qassam,flintoff,bayfield,haeckel,sueno,avicii,exoplanets,hoshi,annibale,vojislav,honeycombs,celebrant,rendsburg,veblen,quails,141st,carronades,savar,narrations,jeeva,ontologies,hedonistic,marinette,godot,munna,bessarabian,outrigger,thame,gravels,hoshino,falsifying,stereochemistry,nacionalista,medially,radula,ejecting,conservatorio,odile,ceiba,jaina,essonne,isometry,allophones,recidivism,iveco,ganda,grammarians,jagan,signposted,uncompressed,facilitators,constancy,ditko,propulsive,impaling,interbank,botolph,amlaib,intergroup,sorbus,cheka,debye,praca,adorning,presbyteries,dormition,strategos,qarase,pentecostals,beehives,hashemite,goldust,euronext,egress,arpanet,soames,jurchens,slovenska,copse,kazim,appraisals,marischal,mineola,sharada,caricaturist,sturluson,galba,faizabad,overwintering,grete,uyezds,didsbury,libreville,ablett,microstructure,anadolu,belenenses,elocution,cloaks,timeslots,halden,rashidun,displaces,sympatric,germanus,tuples,ceska,equalize,disassembly,krautrock,babangida,memel,deild,gopala,hematology,underclass,sangli,wawrinka,assur,toshack,refrains,nicotinic,bhagalpur,badami,racetracks,pocatello,walgreens,nazarbayev,occultation,spinnaker,geneon,josias,hydrolyzed,dzong,corregimiento,waistcoat,thermoplastic,soldered,anticancer,lactobacillus,shafi'i,carabus,adjournment,schlumberger,triceratops,despotate,mendicant,krishnamurti,bahasa,earthworm,lavoisier,noetherian,kalki,fervently,bhawan,saanich,coquille,gannet,motagua,kennels,mineralization,fitzherbert,svein,bifurcated,hairdressing,felis,abounded,dimers,fervour,hebdo,bluffton,aetna,corydon,clevedon,carneiro,subjectively,deutz,gastropoda,overshot,concatenation,varman,carolla,maharshi,mujib,inelastic,riverhead,initialized,safavids,rohini,caguas,bulges,fotbollforbund,hefei,spithead,westville,maronites,lytham,americo,gediminas,stephanus,chalcolithic,hijra,gnu/linux,predilection,rulership,sterility,haidar,scarlatti,saprissa,sviatoslav,pointedly,sunroof,guarantor,thevar,airstrips,pultusk,sture,129th,divinities,daizong,dolichoderus,cobourg,maoists,swordsmanship,uprated,bohme,tashi,largs,chandi,bluebeard,householders,richardsonian,drepanidae,antigonish,elbasan,occultism,marca,hypergeometric,oirat,stiglitz,ignites,dzungar,miquelon,pritam,d'automne,ulidiid,niamey,vallecano,fondo,billiton,incumbencies,raceme,chambery,cadell,barenaked,kagame,summerside,haussmann,hatshepsut,apothecaries,criollo,feint,nasals,timurid,feltham,plotinus,oxygenation,marginata,officinalis,salat,participations,ising,downe,izumo,unguided,pretence,coursed,haruna,viscountcy,mainstage,justicia,powiat,takara,capitoline,implacable,farben,stopford,cosmopterix,tuberous,kronecker,galatians,kweli,dogmas,exhorted,trebinje,skanda,newlyn,ablative,basidia,bhiwani,encroachments,stranglers,regrouping,tubal,shoestring,wawel,anionic,mesenchymal,creationists,pyrophosphate,moshi,despotism,powerbook,fatehpur,rupiah,segre,ternate,jessore,b.i.g,shevardnadze,abounds,gliwice,densest,memoria,suborbital,vietcong,ratepayers,karunanidhi,toolbar,descents,rhymney,exhortation,zahedan,carcinomas,hyperbaric,botvinnik,billets,neuropsychological,tigranes,hoards,chater,biennially,thistles,scotus,wataru,flotillas,hungama,monopolistic,payouts,vetch,generalissimo,caries,naumburg,piran,blizzards,escalates,reactant,shinya,theorize,rizzoli,transitway,ecclesiae,streptomyces,cantal,nisibis,superconductor,unworkable,thallus,roehampton,scheckter,viceroys,makuuchi,ilkley,superseding,takuya,klodzko,borbon,raspberries,operand,w.a.k.o,sarabande,factionalism,egalitarianism,temasek,torbat,unscripted,jorma,westerner,perfective,vrije,underlain,goldfrapp,blaenau,jomon,barthes,drivetime,bassa,bannock,umaga,fengxiang,zulus,sreenivasan,farces,codice_10,freeholder,poddebice,imperialists,deregulated,wingtip,o'hagan,pillared,overtone,hofstadter,149th,kitano,saybrook,standardizing,aldgate,staveley,o'flaherty,hundredths,steerable,soltan,empted,cruyff,intramuros,taluks,cotonou,marae,karur,figueres,barwon,lucullus,niobe,zemlya,lathes,homeported,chaux,amyotrophic,opines,exemplars,bhamo,homomorphisms,gauleiter,ladin,mafiosi,airdrieonians,b/soul,decal,transcaucasia,solti,defecation,deaconess,numidia,sampradaya,normalised,wingless,schwaben,alnus,cinerama,yakutsk,ketchikan,orvieto,unearned,monferrato,rotem,aacsb,loong,decoders,skerries,cardiothoracic,repositioning,pimpernel,yohannan,tenebrionoidea,nargis,nouvel,costliest,interdenominational,noize,redirecting,zither,morcha,radiometric,frequenting,irtysh,gbagbo,chakri,litvinenko,infotainment,ravensbruck,harith,corbels,maegashira,jousting,natan,novus,falcao,minis,railed,decile,rauma,ramaswamy,cavitation,paranaque,berchtesgaden,reanimated,schomberg,polysaccharides,exclusionary,cleon,anurag,ravaging,dhanush,mitchells,granule,contemptuous,keisei,rolleston,atlantean,yorkist,daraa,wapping,micrometer,keeneland,comparably,baranja,oranje,schlafli,yogic,dinajpur,unimpressive,masashi,recreativo,alemannic,petersfield,naoko,vasudeva,autosport,rajat,marella,busko,wethersfield,ssris,soulcalibur,kobani,wildland,rookery,hoffenheim,kauri,aliphatic,balaclava,ferrite,publicise,victorias,theism,quimper,chapbook,functionalist,roadbed,ulyanovsk,cupen,purpurea,calthorpe,teofilo,mousavi,cochlea,linotype,detmold,ellerslie,gakkai,telkom,southsea,subcontractor,inguinal,philatelists,zeebrugge,piave,trochidae,dempo,spoilt,saharanpur,mihrab,parasympathetic,barbarous,chartering,antiqua,katsina,bugis,categorizes,altstadt,kandyan,pambansa,overpasses,miters,assimilating,finlandia,uneconomic,am/fm,harpsichordist,dresdner,luminescence,authentically,overpowers,magmatic,cliftonville,oilfields,skirted,berthe,cuman,oakham,frelimo,glockenspiel,confection,saxophonists,piaseczno,multilevel,antipater,levying,maltreatment,velho,opoczno,harburg,pedophilia,unfunded,palettes,plasterwork,breve,dharmendra,auchinleck,nonesuch,blackmun,libretti,rabbani,145th,hasselbeck,kinnock,malate,vanden,cloverdale,ashgabat,nares,radians,steelworkers,sabor,possums,catterick,hemispheric,ostra,outpaced,dungeness,almshouse,penryn,texians,1000m,franchitti,incumbency,texcoco,newar,tramcars,toroidal,meitetsu,spellbound,agronomist,vinifera,riata,bunko,pinas,ba'al,github,vasilyevich,obsolescent,geodesics,ancestries,tujue,capitalised,unassigned,throng,unpaired,psychometric,skegness,exothermic,buffered,kristiansund,tongued,berenger,basho,alitalia,prolongation,archaeologically,fractionation,cyprinid,echinoderms,agriculturally,justiciar,sonam,ilium,baits,danceable,grazer,ardahan,grassed,preemption,glassworks,hasina,ugric,umbra,wahhabi,vannes,tinnitus,capitaine,tikrit,lisieux,scree,hormuz,despenser,jagiellon,maisonneuve,gandaki,santarem,basilicas,lancing,landskrona,weilburg,fireside,elysian,isleworth,krishnamurthy,filton,cynon,tecmo,subcostal,scalars,triglycerides,hyperplane,farmingdale,unione,meydan,pilings,mercosur,reactivate,akiba,fecundity,jatra,natsume,zarqawi,preta,masao,presbyter,oakenfold,rhodri,ferran,ruizong,cloyne,nelvana,epiphanius,borde,scutes,strictures,troughton,whitestone,sholom,toyah,shingon,kutuzov,abelard,passant,lipno,cafeterias,residuals,anabaptists,paratransit,criollos,pleven,radiata,destabilizing,hadiths,bazaars,mannose,taiyo,crookes,welbeck,baoding,archelaus,nguesso,alberni,wingtips,herts,viasat,lankans,evreux,wigram,fassbinder,ryuichi,storting,reducible,olesnica,znojmo,hyannis,theophanes,flatiron,mustering,rajahmundry,kadir,wayang,prome,lethargy,zubin,illegality,conall,dramedy,beerbohm,hipparchus,ziarat,ryuji,shugo,glenorchy,microarchitecture,morne,lewinsky,cauvery,battenberg,hyksos,wayanad,hamilcar,buhari,brazo,bratianu,solms,aksaray,elamite,chilcotin,bloodstock,sagara,dolny,reunified,umlaut,proteaceae,camborne,calabrian,dhanbad,vaxjo,cookware,potez,rediffusion,semitones,lamentations,allgau,guernica,suntory,pleated,stationing,urgell,gannets,bertelsmann,entryway,raphitomidae,acetaldehyde,nephrology,categorizing,beiyang,permeate,tourney,geosciences,khana,masayuki,crucis,universitaria,slaskie,khaimah,finno,advani,astonishingly,tubulin,vampiric,jeolla,sociale,cleethorpes,badri,muridae,suzong,debater,decimation,kenyans,mutualism,pontifex,middlemen,insee,halevi,lamentation,psychopathy,brassey,wenders,kavya,parabellum,prolactin,inescapable,apses,malignancies,rinzai,stigmatized,menahem,comox,ateliers,welshpool,setif,centimetre,truthfulness,downfield,drusus,woden,glycosylation,emanated,agulhas,dalkeith,jazira,nucky,unifil,jobim,operon,oryzomys,heroically,seances,supernumerary,backhouse,hashanah,tatler,imago,invert,hayato,clockmaker,kingsmill,swiecie,analogously,golconda,poste,tacitly,decentralised,ge'ez,diplomatically,fossiliferous,linseed,mahavira,pedestals,archpriest,byelection,domiciled,jeffersonian,bombus,winegrowing,waukegan,uncultivated,haverfordwest,saumur,communally,disbursed,cleeve,zeljeznicar,speciosa,vacationers,sigur,vaishali,zlatko,iftikhar,cropland,transkei,incompleteness,bohra,subantarctic,slieve,physiologic,similis,klerk,replanted,'right,chafee,reproducible,bayburt,regicide,muzaffarpur,plurals,hanyu,orthologs,diouf,assailed,kamui,tarik,dodecanese,gorne,on/off,179th,shimoga,granaries,carlists,valar,tripolitania,sherds,simmern,dissociated,isambard,polytechnical,yuvraj,brabazon,antisense,pubmed,glans,minutely,masaaki,raghavendra,savoury,podcasting,tachi,bienville,gongsun,ridgely,deform,yuichi,binders,canna,carcetti,llobregat,implored,berri,njegos,intermingled,offload,athenry,motherhouse,corpora,kakinada,dannebrog,imperio,prefaces,musicologists,aerospatiale,shirai,nagapattinam,servius,cristoforo,pomfret,reviled,entebbe,stane,east/west,thermometers,matriarchal,siglo,bodil,legionnaire,ze'ev,theorizing,sangeetha,horticulturist,uncountable,lookalike,anoxic,ionospheric,genealogists,chicopee,imprinting,popish,crematoria,diamondback,cyathea,hanzhong,cameramen,halogaland,naklo,waclaw,storehouses,flexed,comuni,frits,glauca,nilgiris,compresses,nainital,continuations,albay,hypoxic,samajwadi,dunkerque,nanticoke,sarwar,interchanged,jubal,corba,jalgaon,derleth,deathstroke,magny,vinnytsia,hyphenated,rimfire,sawan,boehner,disrepute,normalize,aromanian,dualistic,approximant,chama,karimabad,barnacles,sanok,stipends,dyfed,rijksmuseum,reverberation,suncorp,fungicides,reverie,spectrograph,stereophonic,niazi,ordos,alcan,karaite,lautrec,tableland,lamellar,rieti,langmuir,russula,webern,tweaks,hawick,southerner,morphy,naturalisation,enantiomer,michinoku,barbettes,relieves,carburettors,redruth,oblates,vocabularies,mogilev,bagmati,galium,reasserted,extolled,symon,eurosceptic,inflections,tirtha,recompense,oruro,roping,gouverneur,pared,yayoi,watermills,retooled,leukocytes,jubilant,mazhar,nicolau,manheim,touraine,bedser,hambledon,kohat,powerhouses,tlemcen,reuven,sympathetically,afrikaners,interes,handcrafts,etcher,baddeley,wodonga,amaury,155th,vulgarity,pompadour,automorphisms,1540s,oppositions,prekmurje,deryni,fortifying,arcuate,mahila,bocage,uther,nozze,slashes,atlantica,hadid,rhizomatous,azeris,'with,osmena,lewisville,innervated,bandmaster,outcropping,parallelogram,dominicana,twang,ingushetia,extensional,ladino,sastry,zinoviev,relatable,nobilis,cbeebies,hitless,eulima,sporangia,synge,longlisted,criminalized,penitential,weyden,tubule,volyn,priestesses,glenbrook,kibbutzim,windshaft,canadair,falange,zsolt,bonheur,meine,archangels,safeguarded,jamaicans,malarial,teasers,badging,merseyrail,operands,pulsars,gauchos,biotin,bambara,necaxa,egmond,tillage,coppi,anxiolytic,preah,mausoleums,plautus,feroz,debunked,187th,belediyespor,mujibur,wantage,carboxyl,chettiar,murnau,vagueness,racemic,backstretch,courtland,municipio,palpatine,dezful,hyperbola,sreekumar,chalons,altay,arapahoe,tudors,sapieha,quilon,burdensome,kanya,xxviii,recension,generis,siphuncle,repressor,bitrate,mandals,midhurst,dioxin,democratique,upholds,rodez,cinematographic,epoque,jinping,rabelais,zhytomyr,glenview,rebooted,khalidi,reticulata,122nd,monnaie,passersby,ghazals,europaea,lippmann,earthbound,tadic,andorran,artvin,angelicum,banksy,epicentre,resemblances,shuttled,rathaus,bernt,stonemasons,balochi,siang,tynemouth,cygni,biosynthetic,precipitates,sharecroppers,d'annunzio,softbank,shiji,apeldoorn,polycyclic,wenceslas,wuchang,samnites,tamarack,silmarillion,madinah,palaeontology,kirchberg,sculpin,rohtak,aquabats,oviparous,thynne,caney,blimps,minimalistic,whatcom,palatalization,bardstown,direct3d,paramagnetic,kamboja,khash,globemaster,lengua,matej,chernigov,swanage,arsenals,cascadia,cundinamarca,tusculum,leavers,organics,warplanes,'three,exertions,arminius,gandharva,inquires,comercio,kuopio,chabahar,plotlines,mersenne,anquetil,paralytic,buckminster,ambit,acrolophus,quantifiers,clacton,ciliary,ansaldo,fergana,egoism,thracians,chicoutimi,northbrook,analgesia,brotherhoods,hunza,adriaen,fluoridation,snowfalls,soundboard,fangoria,cannibalistic,orthogonius,chukotka,dindigul,manzoni,chainz,macromedia,beltline,muruga,schistura,provable,litex,initio,pneumoniae,infosys,cerium,boonton,cannonballs,d'une,solvency,mandurah,houthis,dolmens,apologists,radioisotopes,blaxploitation,poroshenko,stawell,coosa,maximilien,tempelhof,espouse,declaratory,hambro,xalapa,outmoded,mihiel,benefitting,desirous,archeparchy,repopulated,telescoping,captor,mackaye,disparaged,ramanathan,crowne,tumbled,technetium,silted,chedi,nievre,hyeon,cartoonish,interlock,infocom,rediff.com,dioramas,timekeeping,concertina,kutaisi,cesky,lubomirski,unapologetic,epigraphic,stalactites,sneha,biofilm,falconry,miraflores,catena,'outstanding,prospekt,apotheosis,o'odham,pacemakers,arabica,gandhinagar,reminisces,iroquoian,ornette,tilling,neoliberalism,chameleons,pandava,prefontaine,haiyan,gneisenau,utama,bando,reconstitution,azaria,canola,paratroops,ayckbourn,manistee,stourton,manifestos,lympne,denouement,tractatus,rakim,bellflower,nanometer,sassanids,turlough,presbyterianism,varmland,20deg,phool,nyerere,almohad,manipal,vlaanderen,quickness,removals,makow,circumflex,eatery,morane,fondazione,alkylation,unenforceable,galliano,silkworm,junior/senior,abducts,phlox,konskie,lofoten,buuren,glyphosate,faired,naturae,cobbles,taher,skrulls,dostoevsky,walkout,wagnerian,orbited,methodically,denzil,sarat,extraterritorial,kohima,d'armor,brinsley,rostropovich,fengtian,comitatus,aravind,moche,wrangell,giscard,vantaa,viljandi,hakoah,seabees,muscatine,ballade,camanachd,sothern,mullioned,durad,margraves,maven,arete,chandni,garifuna,142nd,reading/literature,thickest,intensifies,trygve,khaldun,perinatal,asana,powerline,acetylation,nureyev,omiya,montesquieu,riverwalk,marly,correlating,intermountain,bulgar,hammerheads,underscores,wiretapping,quatrain,ruisseau,newsagent,tuticorin,polygyny,hemsworth,partisanship,banna,istrian,evaporator\".split(\",\"),\n        female_names:\"mary,patricia,linda,barbara,elizabeth,jennifer,maria,susan,margaret,dorothy,lisa,nancy,karen,betty,helen,sandra,donna,carol,ruth,sharon,michelle,laura,sarah,kimberly,deborah,jessica,shirley,cynthia,angela,melissa,brenda,amy,anna,rebecca,virginia,kathleen,pamela,martha,debra,amanda,stephanie,carolyn,christine,marie,janet,catherine,frances,ann,joyce,diane,alice,julie,heather,teresa,doris,gloria,evelyn,jean,cheryl,mildred,katherine,joan,ashley,judith,rose,janice,kelly,nicole,judy,christina,kathy,theresa,beverly,denise,tammy,irene,jane,lori,rachel,marilyn,andrea,kathryn,louise,sara,anne,jacqueline,wanda,bonnie,julia,ruby,lois,tina,phyllis,norma,paula,diana,annie,lillian,emily,robin,peggy,crystal,gladys,rita,dawn,connie,florence,tracy,edna,tiffany,carmen,rosa,cindy,grace,wendy,victoria,edith,kim,sherry,sylvia,josephine,thelma,shannon,sheila,ethel,ellen,elaine,marjorie,carrie,charlotte,monica,esther,pauline,emma,juanita,anita,rhonda,hazel,amber,eva,debbie,april,leslie,clara,lucille,jamie,joanne,eleanor,valerie,danielle,megan,alicia,suzanne,michele,gail,bertha,darlene,veronica,jill,erin,geraldine,lauren,cathy,joann,lorraine,lynn,sally,regina,erica,beatrice,dolores,bernice,audrey,yvonne,annette,marion,dana,stacy,ana,renee,ida,vivian,roberta,holly,brittany,melanie,loretta,yolanda,jeanette,laurie,katie,kristen,vanessa,alma,sue,elsie,beth,jeanne,vicki,carla,tara,rosemary,eileen,terri,gertrude,lucy,tonya,ella,stacey,wilma,gina,kristin,jessie,natalie,agnes,vera,charlene,bessie,delores,melinda,pearl,arlene,maureen,colleen,allison,tamara,joy,georgia,constance,lillie,claudia,jackie,marcia,tanya,nellie,minnie,marlene,heidi,glenda,lydia,viola,courtney,marian,stella,caroline,dora,vickie,mattie,maxine,irma,mabel,marsha,myrtle,lena,christy,deanna,patsy,hilda,gwendolyn,jennie,nora,margie,nina,cassandra,leah,penny,kay,priscilla,naomi,carole,olga,billie,dianne,tracey,leona,jenny,felicia,sonia,miriam,velma,becky,bobbie,violet,kristina,toni,misty,mae,shelly,daisy,ramona,sherri,erika,katrina,claire,lindsey,lindsay,geneva,guadalupe,belinda,margarita,sheryl,cora,faye,ada,sabrina,isabel,marguerite,hattie,harriet,molly,cecilia,kristi,brandi,blanche,sandy,rosie,joanna,iris,eunice,angie,inez,lynda,madeline,amelia,alberta,genevieve,monique,jodi,janie,kayla,sonya,jan,kristine,candace,fannie,maryann,opal,alison,yvette,melody,luz,susie,olivia,flora,shelley,kristy,mamie,lula,lola,verna,beulah,antoinette,candice,juana,jeannette,pam,kelli,whitney,bridget,karla,celia,latoya,patty,shelia,gayle,della,vicky,lynne,sheri,marianne,kara,jacquelyn,erma,blanca,myra,leticia,pat,krista,roxanne,angelica,robyn,adrienne,rosalie,alexandra,brooke,bethany,sadie,bernadette,traci,jody,kendra,nichole,rachael,mable,ernestine,muriel,marcella,elena,krystal,angelina,nadine,kari,estelle,dianna,paulette,lora,mona,doreen,rosemarie,desiree,antonia,janis,betsy,christie,freda,meredith,lynette,teri,cristina,eula,leigh,meghan,sophia,eloise,rochelle,gretchen,cecelia,raquel,henrietta,alyssa,jana,gwen,jenna,tricia,laverne,olive,tasha,silvia,elvira,delia,kate,patti,lorena,kellie,sonja,lila,lana,darla,mindy,essie,mandy,lorene,elsa,josefina,jeannie,miranda,dixie,lucia,marta,faith,lela,johanna,shari,camille,tami,shawna,elisa,ebony,melba,ora,nettie,tabitha,ollie,winifred,kristie,alisha,aimee,rena,myrna,marla,tammie,latasha,bonita,patrice,ronda,sherrie,addie,francine,deloris,stacie,adriana,cheri,abigail,celeste,jewel,cara,adele,rebekah,lucinda,dorthy,effie,trina,reba,sallie,aurora,lenora,etta,lottie,kerri,trisha,nikki,estella,francisca,josie,tracie,marissa,karin,brittney,janelle,lourdes,laurel,helene,fern,elva,corinne,kelsey,ina,bettie,elisabeth,aida,caitlin,ingrid,iva,eugenia,christa,goldie,maude,jenifer,therese,dena,lorna,janette,latonya,candy,consuelo,tamika,rosetta,debora,cherie,polly,dina,jewell,fay,jillian,dorothea,nell,trudy,esperanza,patrica,kimberley,shanna,helena,cleo,stefanie,rosario,ola,janine,mollie,lupe,alisa,lou,maribel,susanne,bette,susana,elise,cecile,isabelle,lesley,jocelyn,paige,joni,rachelle,leola,daphne,alta,ester,petra,graciela,imogene,jolene,keisha,lacey,glenna,gabriela,keri,ursula,lizzie,kirsten,shana,adeline,mayra,jayne,jaclyn,gracie,sondra,carmela,marisa,rosalind,charity,tonia,beatriz,marisol,clarice,jeanine,sheena,angeline,frieda,lily,shauna,millie,claudette,cathleen,angelia,gabrielle,autumn,katharine,jodie,staci,lea,christi,justine,elma,luella,margret,dominique,socorro,martina,margo,mavis,callie,bobbi,maritza,lucile,leanne,jeannine,deana,aileen,lorie,ladonna,willa,manuela,gale,selma,dolly,sybil,abby,ivy,dee,winnie,marcy,luisa,jeri,magdalena,ofelia,meagan,audra,matilda,leila,cornelia,bianca,simone,bettye,randi,virgie,latisha,barbra,georgina,eliza,leann,bridgette,rhoda,haley,adela,nola,bernadine,flossie,ila,greta,ruthie,nelda,minerva,lilly,terrie,letha,hilary,estela,valarie,brianna,rosalyn,earline,catalina,ava,mia,clarissa,lidia,corrine,alexandria,concepcion,tia,sharron,rae,dona,ericka,jami,elnora,chandra,lenore,neva,marylou,melisa,tabatha,serena,avis,allie,sofia,jeanie,odessa,nannie,harriett,loraine,penelope,milagros,emilia,benita,allyson,ashlee,tania,esmeralda,eve,pearlie,zelma,malinda,noreen,tameka,saundra,hillary,amie,althea,rosalinda,lilia,alana,clare,alejandra,elinor,lorrie,jerri,darcy,earnestine,carmella,noemi,marcie,liza,annabelle,louisa,earlene,mallory,carlene,nita,selena,tanisha,katy,julianne,lakisha,edwina,maricela,margery,kenya,dollie,roxie,roslyn,kathrine,nanette,charmaine,lavonne,ilene,tammi,suzette,corine,kaye,chrystal,lina,deanne,lilian,juliana,aline,luann,kasey,maryanne,evangeline,colette,melva,lawanda,yesenia,nadia,madge,kathie,ophelia,valeria,nona,mitzi,mari,georgette,claudine,fran,alissa,roseann,lakeisha,susanna,reva,deidre,chasity,sheree,elvia,alyce,deirdre,gena,briana,araceli,katelyn,rosanne,wendi,tessa,berta,marva,imelda,marietta,marci,leonor,arline,sasha,madelyn,janna,juliette,deena,aurelia,josefa,augusta,liliana,lessie,amalia,savannah,anastasia,vilma,natalia,rosella,lynnette,corina,alfreda,leanna,amparo,coleen,tamra,aisha,wilda,karyn,maura,mai,evangelina,rosanna,hallie,erna,enid,mariana,lacy,juliet,jacklyn,freida,madeleine,mara,cathryn,lelia,casandra,bridgett,angelita,jannie,dionne,annmarie,katina,beryl,millicent,katheryn,diann,carissa,maryellen,liz,lauri,helga,gilda,rhea,marquita,hollie,tisha,tamera,angelique,francesca,kaitlin,lolita,florine,rowena,reyna,twila,fanny,janell,ines,concetta,bertie,alba,brigitte,alyson,vonda,pansy,elba,noelle,letitia,deann,brandie,louella,leta,felecia,sharlene,lesa,beverley,isabella,herminia,terra,celina,tori,octavia,jade,denice,germaine,michell,cortney,nelly,doretha,deidra,monika,lashonda,judi,chelsey,antionette,margot,adelaide,leeann,elisha,dessie,libby,kathi,gayla,latanya,mina,mellisa,kimberlee,jasmin,renae,zelda,elda,justina,gussie,emilie,camilla,abbie,rocio,kaitlyn,edythe,ashleigh,selina,lakesha,geri,allene,pamala,michaela,dayna,caryn,rosalia,jacquline,rebeca,marybeth,krystle,iola,dottie,belle,griselda,ernestina,elida,adrianne,demetria,delma,jaqueline,arleen,virgina,retha,fatima,tillie,eleanore,cari,treva,wilhelmina,rosalee,maurine,latrice,jena,taryn,elia,debby,maudie,jeanna,delilah,catrina,shonda,hortencia,theodora,teresita,robbin,danette,delphine,brianne,nilda,danna,cindi,bess,iona,winona,vida,rosita,marianna,racheal,guillermina,eloisa,celestine,caren,malissa,lona,chantel,shellie,marisela,leora,agatha,soledad,migdalia,ivette,christen,athena,janel,veda,pattie,tessie,tera,marilynn,lucretia,karrie,dinah,daniela,alecia,adelina,vernice,shiela,portia,merry,lashawn,dara,tawana,verda,alene,zella,sandi,rafaela,maya,kira,candida,alvina,suzan,shayla,lettie,samatha,oralia,matilde,larissa,vesta,renita,delois,shanda,phillis,lorri,erlinda,cathrine,barb,isabell,ione,gisela,roxanna,mayme,kisha,ellie,mellissa,dorris,dalia,bella,annetta,zoila,reta,reina,lauretta,kylie,christal,pilar,charla,elissa,tiffani,tana,paulina,leota,breanna,jayme,carmel,vernell,tomasa,mandi,dominga,santa,melodie,lura,alexa,tamela,mirna,kerrie,venus,felicita,cristy,carmelita,berniece,annemarie,tiara,roseanne,missy,cori,roxana,pricilla,kristal,jung,elyse,haydee,aletha,bettina,marge,gillian,filomena,zenaida,harriette,caridad,vada,aretha,pearline,marjory,marcela,flor,evette,elouise,alina,damaris,catharine,belva,nakia,marlena,luanne,lorine,karon,dorene,danita,brenna,tatiana,louann,julianna,andria,philomena,lucila,leonora,dovie,romona,mimi,jacquelin,gaye,tonja,misti,chastity,stacia,roxann,micaela,velda,marlys,johnna,aura,ivonne,hayley,nicki,majorie,herlinda,yadira,perla,gregoria,antonette,shelli,mozelle,mariah,joelle,cordelia,josette,chiquita,trista,laquita,georgiana,candi,shanon,hildegard,stephany,magda,karol,gabriella,tiana,roma,richelle,oleta,jacque,idella,alaina,suzanna,jovita,tosha,nereida,marlyn,kyla,delfina,tena,stephenie,sabina,nathalie,marcelle,gertie,darleen,thea,sharonda,shantel,belen,venessa,rosalina,genoveva,clementine,rosalba,renate,renata,georgianna,floy,dorcas,ariana,tyra,theda,mariam,juli,jesica,vikki,verla,roselyn,melvina,jannette,ginny,debrah,corrie,violeta,myrtis,latricia,collette,charleen,anissa,viviana,twyla,nedra,latonia,hellen,fabiola,annamarie,adell,sharyn,chantal,niki,maud,lizette,lindy,kesha,jeana,danelle,charline,chanel,valorie,dortha,cristal,sunny,leone,leilani,gerri,debi,andra,keshia,eulalia,easter,dulce,natividad,linnie,kami,georgie,catina,brook,alda,winnifred,sharla,ruthann,meaghan,magdalene,lissette,adelaida,venita,trena,shirlene,shameka,elizebeth,dian,shanta,latosha,carlotta,windy,rosina,mariann,leisa,jonnie,dawna,cathie,astrid,laureen,janeen,holli,fawn,vickey,teressa,shante,rubye,marcelina,chanda,terese,scarlett,marnie,lulu,lisette,jeniffer,elenor,dorinda,donita,carman,bernita,altagracia,aleta,adrianna,zoraida,lyndsey,janina,starla,phylis,phuong,kyra,charisse,blanch,sanjuanita,rona,nanci,marilee,maranda,brigette,sanjuana,marita,kassandra,joycelyn,felipa,chelsie,bonny,mireya,lorenza,kyong,ileana,candelaria,sherie,lucie,leatrice,lakeshia,gerda,edie,bambi,marylin,lavon,hortense,garnet,evie,tressa,shayna,lavina,kyung,jeanetta,sherrill,shara,phyliss,mittie,anabel,alesia,thuy,tawanda,joanie,tiffanie,lashanda,karissa,enriqueta,daria,daniella,corinna,alanna,abbey,roxane,roseanna,magnolia,lida,joellen,coral,carleen,tresa,peggie,novella,nila,maybelle,jenelle,carina,nova,melina,marquerite,margarette,josephina,evonne,cinthia,albina,toya,tawnya,sherita,myriam,lizabeth,lise,keely,jenni,giselle,cheryle,ardith,ardis,alesha,adriane,shaina,linnea,karolyn,felisha,dori,darci,artie,armida,zola,xiomara,vergie,shamika,nena,nannette,maxie,lovie,jeane,jaimie,inge,farrah,elaina,caitlyn,felicitas,cherly,caryl,yolonda,yasmin,teena,prudence,pennie,nydia,mackenzie,orpha,marvel,lizbeth,laurette,jerrie,hermelinda,carolee,tierra,mirian,meta,melony,kori,jennette,jamila,yoshiko,susannah,salina,rhiannon,joleen,cristine,ashton,aracely,tomeka,shalonda,marti,lacie,kala,jada,ilse,hailey,brittani,zona,syble,sherryl,nidia,marlo,kandice,kandi,alycia,ronna,norene,mercy,ingeborg,giovanna,gemma,christel,audry,zora,vita,trish,stephaine,shirlee,shanika,melonie,mazie,jazmin,inga,hettie,geralyn,fonda,estrella,adella,sarita,rina,milissa,maribeth,golda,evon,ethelyn,enedina,cherise,chana,velva,tawanna,sade,mirta,karie,jacinta,elna,davina,cierra,ashlie,albertha,tanesha,nelle,mindi,lorinda,larue,florene,demetra,dedra,ciara,chantelle,ashly,suzy,rosalva,noelia,lyda,leatha,krystyna,kristan,karri,darline,darcie,cinda,cherrie,awilda,almeda,rolanda,lanette,jerilyn,gisele,evalyn,cyndi,cleta,carin,zina,zena,velia,tanika,charissa,talia,margarete,lavonda,kaylee,kathlene,jonna,irena,ilona,idalia,candis,candance,brandee,anitra,alida,sigrid,nicolette,maryjo,linette,hedwig,christiana,alexia,tressie,modesta,lupita,lita,gladis,evelia,davida,cherri,cecily,ashely,annabel,agustina,wanita,shirly,rosaura,hulda,yetta,verona,thomasina,sibyl,shannan,mechelle,leandra,lani,kylee,kandy,jolynn,ferne,eboni,corene,alysia,zula,nada,moira,lyndsay,lorretta,jammie,hortensia,gaynell,adria,vina,vicenta,tangela,stephine,norine,nella,liana,leslee,kimberely,iliana,glory,felica,emogene,elfriede,eden,eartha,carma,ocie,lennie,kiara,jacalyn,carlota,arielle,otilia,kirstin,kacey,johnetta,joetta,jeraldine,jaunita,elana,dorthea,cami,amada,adelia,vernita,tamar,siobhan,renea,rashida,ouida,nilsa,meryl,kristyn,julieta,danica,breanne,aurea,anglea,sherron,odette,malia,lorelei,leesa,kenna,kathlyn,fiona,charlette,suzie,shantell,sabra,racquel,myong,mira,martine,lucienne,lavada,juliann,elvera,delphia,christiane,charolette,carri,asha,angella,paola,ninfa,leda,stefani,shanell,palma,machelle,lissa,kecia,kathryne,karlene,julissa,jettie,jenniffer,corrina,carolann,alena,rosaria,myrtice,marylee,liane,kenyatta,judie,janey,elmira,eldora,denna,cristi,cathi,zaida,vonnie,viva,vernie,rosaline,mariela,luciana,lesli,karan,felice,deneen,adina,wynona,tarsha,sheron,shanita,shani,shandra,randa,pinkie,nelida,marilou,lyla,laurene,laci,janene,dorotha,daniele,dani,carolynn,carlyn,berenice,ayesha,anneliese,alethea,thersa,tamiko,rufina,oliva,mozell,marylyn,kristian,kathyrn,kasandra,kandace,janae,domenica,debbra,dannielle,chun,arcelia,zenobia,sharen,sharee,lavinia,kacie,jackeline,huong,felisa,emelia,eleanora,cythia,cristin,claribel,anastacia,zulma,zandra,yoko,tenisha,susann,sherilyn,shay,shawanda,romana,mathilda,linsey,keiko,joana,isela,gretta,georgetta,eugenie,desirae,delora,corazon,antonina,anika,willene,tracee,tamatha,nichelle,mickie,maegan,luana,lanita,kelsie,edelmira,bree,afton,teodora,tamie,shena,linh,keli,kaci,danyelle,arlette,albertine,adelle,tiffiny,simona,nicolasa,nichol,nakisha,maira,loreen,kizzy,fallon,christene,bobbye,ying,vincenza,tanja,rubie,roni,queenie,margarett,kimberli,irmgard,idell,hilma,evelina,esta,emilee,dennise,dania,carie,risa,rikki,particia,masako,luvenia,loree,loni,lien,gigi,florencia,denita,billye,tomika,sharita,rana,nikole,neoma,margarite,madalyn,lucina,laila,kali,jenette,gabriele,evelyne,elenora,clementina,alejandrina,zulema,violette,vannessa,thresa,retta,patience,noella,nickie,jonell,chaya,camelia,bethel,anya,suzann,mila,lilla,laverna,keesha,kattie,georgene,eveline,estell,elizbeth,vivienne,vallie,trudie,stephane,magaly,madie,kenyetta,karren,janetta,hermine,drucilla,debbi,celestina,candie,britni,beckie,amina,zita,yolande,vivien,vernetta,trudi,pearle,patrina,ossie,nicolle,loyce,letty,katharina,joselyn,jonelle,jenell,iesha,heide,florinda,florentina,elodia,dorine,brunilda,brigid,ashli,ardella,twana,tarah,shavon,serina,rayna,ramonita,margurite,lucrecia,kourtney,kati,jesenia,crista,ayana,alica,alia,vinnie,suellen,romelia,rachell,olympia,michiko,kathaleen,jolie,jessi,janessa,hana,elease,carletta,britany,shona,salome,rosamond,regena,raina,ngoc,nelia,louvenia,lesia,latrina,laticia,larhonda,jina,jacki,emmy,deeann,coretta,arnetta,thalia,shanice,neta,mikki,micki,lonna,leana,lashunda,kiley,joye,jacqulyn,ignacia,hyun,hiroko,henriette,elayne,delinda,dahlia,coreen,consuela,conchita,babette,ayanna,anette,albertina,shawnee,shaneka,quiana,pamelia,merri,merlene,margit,kiesha,kiera,kaylene,jodee,jenise,erlene,emmie,dalila,daisey,casie,belia,babara,versie,vanesa,shelba,shawnda,nikia,naoma,marna,margeret,madaline,lawana,kindra,jutta,jazmine,janett,hannelore,glendora,gertrud,garnett,freeda,frederica,florance,flavia,carline,beverlee,anjanette,valda,tamala,shonna,sarina,oneida,merilyn,marleen,lurline,lenna,katherin,jeni,gracia,glady,farah,enola,dominque,devona,delana,cecila,caprice,alysha,alethia,vena,theresia,tawny,shakira,samara,sachiko,rachele,pamella,marni,mariel,maren,malisa,ligia,lera,latoria,larae,kimber,kathern,karey,jennefer,janeth,halina,fredia,delisa,debroah,ciera,angelika,andree,altha,vivan,terresa,tanna,sudie,signe,salena,ronni,rebbecca,myrtie,malika,maida,leonarda,kayleigh,ethyl,ellyn,dayle,cammie,brittni,birgit,avelina,asuncion,arianna,akiko,venice,tyesha,tonie,tiesha,takisha,steffanie,sindy,meghann,manda,macie,kellye,kellee,joslyn,inger,indira,glinda,glennis,fernanda,faustina,eneida,elicia,digna,dell,arletta,willia,tammara,tabetha,sherrell,sari,rebbeca,pauletta,natosha,nakita,mammie,kenisha,kazuko,kassie,earlean,daphine,corliss,clotilde,carolyne,bernetta,augustina,audrea,annis,annabell,tennille,tamica,selene,rosana,regenia,qiana,markita,macy,leeanne,laurine,jessenia,janita,georgine,genie,emiko,elvie,deandra,dagmar,corie,collen,cherish,romaine,porsha,pearlene,micheline,merna,margorie,margaretta,lore,jenine,hermina,fredericka,elke,drusilla,dorathy,dione,celena,brigida,allegra,tamekia,synthia,sook,slyvia,rosann,reatha,raye,marquetta,margart,ling,layla,kymberly,kiana,kayleen,katlyn,karmen,joella,emelda,eleni,detra,clemmie,cheryll,chantell,cathey,arnita,arla,angle,angelic,alyse,zofia,thomasine,tennie,sherly,sherley,sharyl,remedios,petrina,nickole,myung,myrle,mozella,louanne,lisha,latia,krysta,julienne,jeanene,jacqualine,isaura,gwenda,earleen,cleopatra,carlie,audie,antonietta,alise,verdell,tomoko,thao,talisha,shemika,savanna,santina,rosia,raeann,odilia,nana,minna,magan,lynelle,karma,joeann,ivana,inell,ilana,gudrun,dreama,crissy,chante,carmelina,arvilla,annamae,alvera,aleida,yanira,vanda,tianna,stefania,shira,nicol,nancie,monserrate,melynda,melany,lovella,laure,kacy,jacquelynn,hyon,gertha,eliana,christena,christeen,charise,caterina,carley,candyce,arlena,ammie,willette,vanita,tuyet,syreeta,penney,nyla,maryam,marya,magen,ludie,loma,livia,lanell,kimberlie,julee,donetta,diedra,denisha,deane,dawne,clarine,cherryl,bronwyn,alla,valery,tonda,sueann,soraya,shoshana,shela,sharleen,shanelle,nerissa,meridith,mellie,maye,maple,magaret,lili,leonila,leonie,leeanna,lavonia,lavera,kristel,kathey,kathe,jann,ilda,hildred,hildegarde,genia,fumiko,evelin,ermelinda,elly,dung,doloris,dionna,danae,berneice,annice,alix,verena,verdie,shawnna,shawana,shaunna,rozella,randee,ranae,milagro,lynell,luise,loida,lisbeth,karleen,junita,jona,isis,hyacinth,hedy,gwenn,ethelene,erline,donya,domonique,delicia,dannette,cicely,branda,blythe,bethann,ashlyn,annalee,alline,yuko,vella,trang,towanda,tesha,sherlyn,narcisa,miguelina,meri,maybell,marlana,marguerita,madlyn,lory,loriann,leonore,leighann,laurice,latesha,laronda,katrice,kasie,kaley,jadwiga,glennie,gearldine,francina,epifania,dyan,dorie,diedre,denese,demetrice,delena,cristie,cleora,catarina,carisa,barbera,almeta,trula,tereasa,solange,sheilah,shavonne,sanora,rochell,mathilde,margareta,maia,lynsey,lawanna,launa,kena,keena,katia,glynda,gaylene,elvina,elanor,danuta,danika,cristen,cordie,coletta,clarita,carmon,brynn,azucena,aundrea,angele,verlie,verlene,tamesha,silvana,sebrina,samira,reda,raylene,penni,norah,noma,mireille,melissia,maryalice,laraine,kimbery,karyl,karine,jolanda,johana,jesusa,jaleesa,jacquelyne,iluminada,hilaria,hanh,gennie,francie,floretta,exie,edda,drema,delpha,barbar,assunta,ardell,annalisa,alisia,yukiko,yolando,wonda,waltraud,veta,temeka,tameika,shirleen,shenita,piedad,ozella,mirtha,marilu,kimiko,juliane,jenice,janay,jacquiline,hilde,elois,echo,devorah,chau,brinda,betsey,arminda,aracelis,apryl,annett,alishia,veola,usha,toshiko,theola,tashia,talitha,shery,renetta,reiko,rasheeda,obdulia,mika,melaine,meggan,marlen,marget,marceline,mana,magdalen,librada,lezlie,latashia,lasandra,kelle,isidra,inocencia,gwyn,francoise,erminia,erinn,dimple,devora,criselda,armanda,arie,ariane,angelena,aliza,adriene,adaline,xochitl,twanna,tomiko,tamisha,taisha,susy,rutha,rhona,noriko,natashia,merrie,marinda,mariko,margert,loris,lizzette,leisha,kaila,joannie,jerrica,jene,jannet,janee,jacinda,herta,elenore,doretta,delaine,daniell,claudie,britta,apolonia,amberly,alease,yuri,waneta,tomi,sharri,sandie,roselle,reynalda,raguel,phylicia,patria,olimpia,odelia,mitzie,minda,mignon,mica,mendy,marivel,maile,lynetta,lavette,lauryn,latrisha,lakiesha,kiersten,kary,josphine,jolyn,jetta,janise,jacquie,ivelisse,glynis,gianna,gaynelle,danyell,danille,dacia,coralee,cher,ceola,arianne,aleshia,yung,williemae,trinh,thora,sherika,shemeka,shaunda,roseline,ricki,melda,mallie,lavonna,latina,laquanda,lala,lachelle,klara,kandis,johna,jeanmarie,jaye,grayce,gertude,emerita,ebonie,clorinda,ching,chery,carola,breann,blossom,bernardine,becki,arletha,argelia,alita,yulanda,yessenia,tobi,tasia,sylvie,shirl,shirely,shella,shantelle,sacha,rebecka,providencia,paulene,misha,miki,marline,marica,lorita,latoyia,lasonya,kerstin,kenda,keitha,kathrin,jaymie,gricelda,ginette,eryn,elina,elfrieda,danyel,cheree,chanelle,barrie,aurore,annamaria,alleen,ailene,aide,yasmine,vashti,treasa,tiffaney,sheryll,sharie,shanae,raisa,neda,mitsuko,mirella,milda,maryanna,maragret,mabelle,luetta,lorina,letisha,latarsha,lanelle,lajuana,krissy,karly,karena,jessika,jerica,jeanelle,jalisa,jacelyn,izola,euna,etha,domitila,dominica,daina,creola,carli,camie,brittny,ashanti,anisha,aleen,adah,yasuko,valrie,tona,tinisha,terisa,taneka,simonne,shalanda,serita,ressie,refugia,olene,margherita,mandie,maire,lyndia,luci,lorriane,loreta,leonia,lavona,lashawnda,lakia,kyoko,krystina,krysten,kenia,kelsi,jeanice,isobel,georgiann,genny,felicidad,eilene,deloise,deedee,conception,clora,cherilyn,calandra,armandina,anisa,tiera,theressa,stephania,sima,shyla,shonta,shera,shaquita,shala,rossana,nohemi,nery,moriah,melita,melida,melani,marylynn,marisha,mariette,malorie,madelene,ludivina,loria,lorette,loralee,lianne,lavenia,laurinda,lashon,kimi,keila,katelynn,jone,joane,jayna,janella,hertha,francene,elinore,despina,delsie,deedra,clemencia,carolin,bulah,brittanie,blondell,bibi,beaulah,beata,annita,agripina,virgen,valene,twanda,tommye,tarra,tari,tammera,shakia,sadye,ruthanne,rochel,rivka,pura,nenita,natisha,ming,merrilee,melodee,marvis,lucilla,leena,laveta,larita,lanie,keren,ileen,georgeann,genna,frida,eufemia,emely,edyth,deonna,deadra,darlena,chanell,cathern,cassondra,cassaundra,bernarda,berna,arlinda,anamaria,vertie,valeri,torri,stasia,sherise,sherill,sanda,ruthe,rosy,robbi,ranee,quyen,pearly,palmira,onita,nisha,niesha,nida,merlyn,mayola,marylouise,marth,margene,madelaine,londa,leontine,leoma,leia,lauralee,lanora,lakita,kiyoko,keturah,katelin,kareen,jonie,johnette,jenee,jeanett,izetta,hiedi,heike,hassie,giuseppina,georgann,fidela,fernande,elwanda,ellamae,eliz,dusti,dotty,cyndy,coralie,celesta,alverta,xenia,wava,vanetta,torrie,tashina,tandy,tambra,tama,stepanie,shila,shaunta,sharan,shaniqua,shae,setsuko,serafina,sandee,rosamaria,priscila,olinda,nadene,muoi,michelina,mercedez,maryrose,marcene,magali,mafalda,lannie,kayce,karoline,kamilah,kamala,justa,joline,jennine,jacquetta,iraida,georgeanna,franchesca,emeline,elane,ehtel,earlie,dulcie,dalene,classie,chere,charis,caroyln,carmina,carita,bethanie,ayako,arica,alysa,alessandra,akilah,adrien,zetta,youlanda,yelena,yahaira,xuan,wendolyn,tijuana,terina,teresia,suzi,sherell,shavonda,shaunte,sharda,shakita,sena,ryann,rubi,riva,reginia,rachal,parthenia,pamula,monnie,monet,michaele,melia,malka,maisha,lisandra,lekisha,lean,lakendra,krystin,kortney,kizzie,kittie,kera,kendal,kemberly,kanisha,julene,jule,johanne,jamee,halley,gidget,fredricka,fleta,fatimah,eusebia,elza,eleonore,dorthey,doria,donella,dinorah,delorse,claretha,christinia,charlyn,bong,belkis,azzie,andera,aiko,adena,yajaira,vania,ulrike,toshia,tifany,stefany,shizue,shenika,shawanna,sharolyn,sharilyn,shaquana,shantay,rozanne,roselee,remona,reanna,raelene,phung,petronila,natacha,nancey,myrl,miyoko,miesha,merideth,marvella,marquitta,marhta,marchelle,lizeth,libbie,lahoma,ladawn,kina,katheleen,katharyn,karisa,kaleigh,junie,julieann,johnsie,janean,jaimee,jackqueline,hisako,herma,helaine,gwyneth,gita,eustolia,emelina,elin,edris,donnette,donnetta,dierdre,denae,darcel,clarisa,cinderella,chia,charlesetta,charita,celsa,cassy,cassi,carlee,bruna,brittaney,brande,billi,antonetta,angla,angelyn,analisa,alane,wenona,wendie,veronique,vannesa,tobie,tempie,sumiko,sulema,somer,sheba,sharice,shanel,shalon,rosio,roselia,renay,rema,reena,ozie,oretha,oralee,ngan,nakesha,milly,marybelle,margrett,maragaret,manie,lurlene,lillia,lieselotte,lavelle,lashaunda,lakeesha,kaycee,kalyn,joya,joette,jenae,janiece,illa,grisel,glayds,genevie,gala,fredda,eleonor,debera,deandrea,corrinne,cordia,contessa,colene,cleotilde,chantay,cecille,beatris,azalee,arlean,ardath,anjelica,anja,alfredia,aleisha,zada,yuonne,xiao,willodean,vennie,vanna,tyisha,tova,torie,tonisha,tilda,tien,sirena,sherril,shanti,shan,senaida,samella,robbyn,renda,reita,phebe,paulita,nobuko,nguyet,neomi,mikaela,melania,maximina,marg,maisie,lynna,lilli,lashaun,lakenya,lael,kirstie,kathline,kasha,karlyn,karima,jovan,josefine,jennell,jacqui,jackelyn,hien,grazyna,florrie,floria,eleonora,dwana,dorla,delmy,deja,dede,dann,crysta,clelia,claris,chieko,cherlyn,cherelle,charmain,chara,cammy,arnette,ardelle,annika,amiee,amee,allena,yvone,yuki,yoshie,yevette,yael,willetta,voncile,venetta,tula,tonette,timika,temika,telma,teisha,taren,stacee,shawnta,saturnina,ricarda,pasty,onie,nubia,marielle,mariella,marianela,mardell,luanna,loise,lisabeth,lindsy,lilliana,lilliam,lelah,leigha,leanora,kristeen,khalilah,keeley,kandra,junko,joaquina,jerlene,jani,jamika,hsiu,hermila,genevive,evia,eugena,emmaline,elfreda,elene,donette,delcie,deeanna,darcey,clarinda,cira,chae,celinda,catheryn,casimira,carmelia,camellia,breana,bobette,bernardina,bebe,basilia,arlyne,amal,alayna,zonia,zenia,yuriko,yaeko,wynell,willena,vernia,tora,terrilyn,terica,tenesha,tawna,tajuana,taina,stephnie,sona,sina,shondra,shizuko,sherlene,sherice,sharika,rossie,rosena,rima,rheba,renna,natalya,nancee,melodi,meda,matha,marketta,maricruz,marcelene,malvina,luba,louetta,leida,lecia,lauran,lashawna,laine,khadijah,katerine,kasi,kallie,julietta,jesusita,jestine,jessia,jeffie,janyce,isadora,georgianne,fidelia,evita,eura,eulah,estefana,elsy,eladia,dodie,denisse,deloras,delila,daysi,crystle,concha,claretta,charlsie,charlena,carylon,bettyann,asley,ashlea,amira,agueda,agnus,yuette,vinita,victorina,tynisha,treena,toccara,tish,thomasena,tegan,soila,shenna,sharmaine,shantae,shandi,saran,sarai,sana,rosette,rolande,regine,otelia,olevia,nicholle,necole,naida,myrta,myesha,mitsue,minta,mertie,margy,mahalia,madalene,loura,lorean,lesha,leonida,lenita,lavone,lashell,lashandra,lamonica,kimbra,katherina,karry,kanesha,jong,jeneva,jaquelyn,gilma,ghislaine,gertrudis,fransisca,fermina,ettie,etsuko,ellan,elidia,edra,dorethea,doreatha,denyse,deetta,daine,cyrstal,corrin,cayla,carlita,camila,burma,bula,buena,barabara,avril,alaine,zana,wilhemina,wanetta,verline,vasiliki,tonita,tisa,teofila,tayna,taunya,tandra,takako,sunni,suanne,sixta,sharell,seema,rosenda,robena,raymonde,pamila,ozell,neida,mistie,micha,merissa,maurita,maryln,maryetta,marcell,malena,makeda,lovetta,lourie,lorrine,lorilee,laurena,lashay,larraine,laree,lacresha,kristle,keva,keira,karole,joie,jinny,jeannetta,jama,heidy,gilberte,gema,faviola,evelynn,enda,elli,ellena,divina,dagny,collene,codi,cindie,chassidy,chasidy,catrice,catherina,cassey,caroll,carlena,candra,calista,bryanna,britteny,beula,bari,audrie,audria,ardelia,annelle,angila,alona,allyn\".split(\",\"),surnames:\"smith,johnson,williams,jones,brown,davis,miller,wilson,moore,taylor,anderson,jackson,white,harris,martin,thompson,garcia,martinez,robinson,clark,rodriguez,lewis,lee,walker,hall,allen,young,hernandez,king,wright,lopez,hill,green,adams,baker,gonzalez,nelson,carter,mitchell,perez,roberts,turner,phillips,campbell,parker,evans,edwards,collins,stewart,sanchez,morris,rogers,reed,cook,morgan,bell,murphy,bailey,rivera,cooper,richardson,cox,howard,ward,torres,peterson,gray,ramirez,watson,brooks,sanders,price,bennett,wood,barnes,ross,henderson,coleman,jenkins,perry,powell,long,patterson,hughes,flores,washington,butler,simmons,foster,gonzales,bryant,alexander,griffin,diaz,hayes,myers,ford,hamilton,graham,sullivan,wallace,woods,cole,west,owens,reynolds,fisher,ellis,harrison,gibson,mcdonald,cruz,marshall,ortiz,gomez,murray,freeman,wells,webb,simpson,stevens,tucker,porter,hicks,crawford,boyd,mason,morales,kennedy,warren,dixon,ramos,reyes,burns,gordon,shaw,holmes,rice,robertson,hunt,black,daniels,palmer,mills,nichols,grant,knight,ferguson,stone,hawkins,dunn,perkins,hudson,spencer,gardner,stephens,payne,pierce,berry,matthews,arnold,wagner,willis,watkins,olson,carroll,duncan,snyder,hart,cunningham,lane,andrews,ruiz,harper,fox,riley,armstrong,carpenter,weaver,greene,elliott,chavez,sims,peters,kelley,franklin,lawson,fields,gutierrez,schmidt,carr,vasquez,castillo,wheeler,chapman,montgomery,richards,williamson,johnston,banks,meyer,bishop,mccoy,howell,alvarez,morrison,hansen,fernandez,garza,harvey,burton,nguyen,jacobs,reid,fuller,lynch,garrett,romero,welch,larson,frazier,burke,hanson,mendoza,moreno,bowman,medina,fowler,brewer,hoffman,carlson,silva,pearson,holland,fleming,jensen,vargas,byrd,davidson,hopkins,herrera,wade,soto,walters,neal,caldwell,lowe,jennings,barnett,graves,jimenez,horton,shelton,barrett,obrien,castro,sutton,mckinney,lucas,miles,rodriquez,chambers,holt,lambert,fletcher,watts,bates,hale,rhodes,pena,beck,newman,haynes,mcdaniel,mendez,bush,vaughn,parks,dawson,santiago,norris,hardy,steele,curry,powers,schultz,barker,guzman,page,munoz,ball,keller,chandler,weber,walsh,lyons,ramsey,wolfe,schneider,mullins,benson,sharp,bowen,barber,cummings,hines,baldwin,griffith,valdez,hubbard,salazar,reeves,warner,stevenson,burgess,santos,tate,cross,garner,mann,mack,moss,thornton,mcgee,farmer,delgado,aguilar,vega,glover,manning,cohen,harmon,rodgers,robbins,newton,blair,higgins,ingram,reese,cannon,strickland,townsend,potter,goodwin,walton,rowe,hampton,ortega,patton,swanson,goodman,maldonado,yates,becker,erickson,hodges,rios,conner,adkins,webster,malone,hammond,flowers,cobb,moody,quinn,pope,osborne,mccarthy,guerrero,estrada,sandoval,gibbs,gross,fitzgerald,stokes,doyle,saunders,wise,colon,gill,alvarado,greer,padilla,waters,nunez,ballard,schwartz,mcbride,houston,christensen,klein,pratt,briggs,parsons,mclaughlin,zimmerman,buchanan,moran,copeland,pittman,brady,mccormick,holloway,brock,poole,logan,bass,marsh,drake,wong,jefferson,morton,abbott,sparks,norton,huff,massey,figueroa,carson,bowers,roberson,barton,tran,lamb,harrington,boone,cortez,clarke,mathis,singleton,wilkins,cain,underwood,hogan,mckenzie,collier,luna,phelps,mcguire,bridges,wilkerson,nash,summers,atkins,wilcox,pitts,conley,marquez,burnett,cochran,chase,davenport,hood,gates,ayala,sawyer,vazquez,dickerson,hodge,acosta,flynn,espinoza,nicholson,monroe,wolf,morrow,whitaker,oconnor,skinner,ware,molina,kirby,huffman,gilmore,dominguez,oneal,lang,combs,kramer,hancock,gallagher,gaines,shaffer,wiggins,mathews,mcclain,fischer,wall,melton,hensley,bond,dyer,grimes,contreras,wyatt,baxter,snow,mosley,shepherd,larsen,hoover,beasley,petersen,whitehead,meyers,garrison,shields,horn,savage,olsen,schroeder,hartman,woodard,mueller,kemp,deleon,booth,patel,calhoun,wiley,eaton,cline,navarro,harrell,humphrey,parrish,duran,hutchinson,hess,dorsey,bullock,robles,beard,dalton,avila,rich,blackwell,johns,blankenship,trevino,salinas,campos,pruitt,callahan,montoya,hardin,guerra,mcdowell,stafford,gallegos,henson,wilkinson,booker,merritt,atkinson,orr,decker,hobbs,tanner,knox,pacheco,stephenson,glass,rojas,serrano,marks,hickman,sweeney,strong,mcclure,conway,roth,maynard,farrell,lowery,hurst,nixon,weiss,trujillo,ellison,sloan,juarez,winters,mclean,boyer,villarreal,mccall,gentry,carrillo,ayers,lara,sexton,pace,hull,leblanc,browning,velasquez,leach,chang,sellers,herring,noble,foley,bartlett,mercado,landry,durham,walls,barr,mckee,bauer,rivers,bradshaw,pugh,velez,rush,estes,dodson,morse,sheppard,weeks,camacho,bean,barron,livingston,middleton,spears,branch,blevins,chen,kerr,mcconnell,hatfield,harding,solis,frost,giles,blackburn,pennington,woodward,finley,mcintosh,koch,mccullough,blanchard,rivas,brennan,mejia,kane,benton,buckley,valentine,maddox,russo,mcknight,buck,moon,mcmillan,crosby,berg,dotson,mays,roach,chan,richmond,meadows,faulkner,oneill,knapp,kline,ochoa,jacobson,gay,hendricks,horne,shepard,hebert,cardenas,mcintyre,waller,holman,donaldson,cantu,morin,gillespie,fuentes,tillman,bentley,peck,key,salas,rollins,gamble,dickson,santana,cabrera,cervantes,howe,hinton,hurley,spence,zamora,yang,mcneil,suarez,petty,gould,mcfarland,sampson,carver,bray,macdonald,stout,hester,melendez,dillon,farley,hopper,galloway,potts,joyner,stein,aguirre,osborn,mercer,bender,franco,rowland,sykes,pickett,sears,mayo,dunlap,hayden,wilder,mckay,coffey,mccarty,ewing,cooley,vaughan,bonner,cotton,holder,stark,ferrell,cantrell,fulton,lott,calderon,pollard,hooper,burch,mullen,fry,riddle,levy,duke,odonnell,britt,daugherty,berger,dillard,alston,frye,riggs,chaney,odom,duffy,fitzpatrick,valenzuela,mayer,alford,mcpherson,acevedo,barrera,cote,reilly,compton,mooney,mcgowan,craft,clemons,wynn,nielsen,baird,stanton,snider,rosales,bright,witt,hays,holden,rutledge,kinney,clements,castaneda,slater,hahn,burks,delaney,pate,lancaster,sharpe,whitfield,talley,macias,burris,ratliff,mccray,madden,kaufman,beach,goff,cash,bolton,mcfadden,levine,byers,kirkland,kidd,workman,carney,mcleod,holcomb,finch,sosa,haney,franks,sargent,nieves,downs,rasmussen,bird,hewitt,foreman,valencia,oneil,delacruz,vinson,dejesus,hyde,forbes,gilliam,guthrie,wooten,huber,barlow,boyle,mcmahon,buckner,rocha,puckett,langley,knowles,cooke,velazquez,whitley,vang,shea,rouse,hartley,mayfield,elder,rankin,hanna,cowan,lucero,arroyo,slaughter,haas,oconnell,minor,boucher,archer,boggs,dougherty,andersen,newell,crowe,wang,friedman,bland,swain,holley,pearce,childs,yarbrough,galvan,proctor,meeks,lozano,mora,rangel,bacon,villanueva,schaefer,rosado,helms,boyce,goss,stinson,ibarra,hutchins,covington,crowley,hatcher,mackey,bunch,womack,polk,dodd,childress,childers,villa,springer,mahoney,dailey,belcher,lockhart,griggs,costa,brandt,walden,moser,tatum,mccann,akers,lutz,pryor,orozco,mcallister,lugo,davies,shoemaker,rutherford,newsome,magee,chamberlain,blanton,simms,godfrey,flanagan,crum,cordova,escobar,downing,sinclair,donahue,krueger,mcginnis,gore,farris,webber,corbett,andrade,starr,lyon,yoder,hastings,mcgrath,spivey,krause,harden,crabtree,kirkpatrick,arrington,ritter,mcghee,bolden,maloney,gagnon,dunbar,ponce,pike,mayes,beatty,mobley,kimball,butts,montes,eldridge,braun,hamm,gibbons,moyer,manley,herron,plummer,elmore,cramer,rucker,pierson,fontenot,rubio,goldstein,elkins,wills,novak,hickey,worley,gorman,katz,dickinson,broussard,woodruff,crow,britton,nance,lehman,bingham,zuniga,whaley,shafer,coffman,steward,delarosa,neely,mata,davila,mccabe,kessler,hinkle,welsh,pagan,goldberg,goins,crouch,cuevas,quinones,mcdermott,hendrickson,samuels,denton,bergeron,ivey,locke,haines,snell,hoskins,byrne,arias,corbin,beltran,chappell,downey,dooley,tuttle,couch,payton,mcelroy,crockett,groves,cartwright,dickey,mcgill,dubois,muniz,tolbert,dempsey,cisneros,sewell,latham,vigil,tapia,rainey,norwood,stroud,meade,tipton,kuhn,hilliard,bonilla,teague,gunn,greenwood,correa,reece,pineda,phipps,frey,kaiser,ames,gunter,schmitt,milligan,espinosa,bowden,vickers,lowry,pritchard,costello,piper,mcclellan,lovell,sheehan,hatch,dobson,singh,jeffries,hollingsworth,sorensen,meza,fink,donnelly,burrell,tomlinson,colbert,billings,ritchie,helton,sutherland,peoples,mcqueen,thomason,givens,crocker,vogel,robison,dunham,coker,swartz,keys,ladner,richter,hargrove,edmonds,brantley,albright,murdock,boswell,muller,quintero,padgett,kenney,daly,connolly,inman,quintana,lund,barnard,villegas,simons,huggins,tidwell,sanderson,bullard,mcclendon,duarte,draper,marrero,dwyer,abrams,stover,goode,fraser,crews,bernal,godwin,conklin,mcneal,baca,esparza,crowder,bower,brewster,mcneill,rodrigues,leal,coates,raines,mccain,mccord,miner,holbrook,swift,dukes,carlisle,aldridge,ackerman,starks,ricks,holliday,ferris,hairston,sheffield,lange,fountain,doss,betts,kaplan,carmichael,bloom,ruffin,penn,kern,bowles,sizemore,larkin,dupree,seals,metcalf,hutchison,henley,farr,mccauley,hankins,gustafson,curran,waddell,ramey,cates,pollock,cummins,messer,heller,funk,cornett,palacios,galindo,cano,hathaway,pham,enriquez,salgado,pelletier,painter,wiseman,blount,feliciano,houser,doherty,mead,mcgraw,swan,capps,blanco,blackmon,thomson,mcmanus,burkett,gleason,dickens,cormier,voss,rushing,rosenberg,hurd,dumas,benitez,arellano,marin,caudill,bragg,jaramillo,huerta,gipson,colvin,biggs,vela,platt,cassidy,tompkins,mccollum,dolan,daley,crump,sneed,kilgore,grove,grimm,davison,brunson,prater,marcum,devine,dodge,stratton,rosas,choi,tripp,ledbetter,hightower,feldman,epps,yeager,posey,scruggs,cope,stubbs,richey,overton,trotter,sprague,cordero,butcher,stiles,burgos,woodson,horner,bassett,purcell,haskins,akins,ziegler,spaulding,hadley,grubbs,sumner,murillo,zavala,shook,lockwood,driscoll,dahl,thorpe,redmond,putnam,mcwilliams,mcrae,romano,joiner,sadler,hedrick,hager,hagen,fitch,coulter,thacker,mansfield,langston,guidry,ferreira,corley,conn,rossi,lackey,baez,saenz,mcnamara,mcmullen,mckenna,mcdonough,link,engel,browne,roper,peacock,eubanks,drummond,stringer,pritchett,parham,mims,landers,grayson,schafer,egan,timmons,ohara,keen,hamlin,finn,cortes,mcnair,nadeau,moseley,michaud,rosen,oakes,kurtz,jeffers,calloway,beal,bautista,winn,suggs,stern,stapleton,lyles,laird,montano,dawkins,hagan,goldman,bryson,barajas,lovett,segura,metz,lockett,langford,hinson,eastman,hooks,smallwood,shapiro,crowell,whalen,triplett,chatman,aldrich,cahill,youngblood,ybarra,stallings,sheets,reeder,connelly,bateman,abernathy,winkler,wilkes,masters,hackett,granger,gillis,schmitz,sapp,napier,souza,lanier,gomes,weir,otero,ledford,burroughs,babcock,ventura,siegel,dugan,bledsoe,atwood,wray,varner,spangler,anaya,staley,kraft,fournier,belanger,wolff,thorne,bynum,burnette,boykin,swenson,purvis,pina,khan,duvall,darby,xiong,kauffman,healy,engle,benoit,valle,steiner,spicer,shaver,randle,lundy,chin,calvert,staton,neff,kearney,darden,oakley,medeiros,mccracken,crenshaw,perdue,dill,whittaker,tobin,washburn,hogue,goodrich,easley,bravo,dennison,shipley,kerns,jorgensen,crain,villalobos,maurer,longoria,keene,coon,witherspoon,staples,pettit,kincaid,eason,madrid,echols,lusk,stahl,currie,thayer,shultz,mcnally,seay,maher,gagne,barrow,nava,moreland,honeycutt,hearn,diggs,caron,whitten,westbrook,stovall,ragland,munson,meier,looney,kimble,jolly,hobson,goddard,culver,burr,presley,negron,connell,tovar,huddleston,ashby,salter,root,pendleton,oleary,nickerson,myrick,judd,jacobsen,bain,adair,starnes,matos,busby,herndon,hanley,bellamy,doty,bartley,yazzie,rowell,parson,gifford,cullen,christiansen,benavides,barnhart,talbot,mock,crandall,connors,bonds,whitt,gage,bergman,arredondo,addison,lujan,dowdy,jernigan,huynh,bouchard,dutton,rhoades,ouellette,kiser,herrington,hare,blackman,babb,allred,rudd,paulson,ogden,koenig,geiger,begay,parra,lassiter,hawk,esposito,waldron,ransom,prather,chacon,vick,sands,roark,parr,mayberry,greenberg,coley,bruner,whitman,skaggs,shipman,leary,hutton,romo,medrano,ladd,kruse,askew,schulz,alfaro,tabor,mohr,gallo,bermudez,pereira,bliss,reaves,flint,comer,woodall,naquin,guevara,delong,carrier,pickens,tilley,schaffer,knutson,fenton,doran,vogt,vann,prescott,mclain,landis,corcoran,zapata,hyatt,hemphill,faulk,dove,boudreaux,aragon,whitlock,trejo,tackett,shearer,saldana,hanks,mckinnon,koehler,bourgeois,keyes,goodson,foote,lunsford,goldsmith,flood,winslow,sams,reagan,mccloud,hough,esquivel,naylor,loomis,coronado,ludwig,braswell,bearden,huang,fagan,ezell,edmondson,cronin,nunn,lemon,guillory,grier,dubose,traylor,ryder,dobbins,coyle,aponte,whitmore,smalls,rowan,malloy,cardona,braxton,borden,humphries,carrasco,ruff,metzger,huntley,hinojosa,finney,madsen,ernst,dozier,burkhart,bowser,peralta,daigle,whittington,sorenson,saucedo,roche,redding,fugate,avalos,waite,lind,huston,hawthorne,hamby,boyles,boles,regan,faust,crook,beam,barger,hinds,gallardo,willoughby,willingham,eckert,busch,zepeda,worthington,tinsley,hoff,hawley,carmona,varela,rector,newcomb,kinsey,dube,whatley,ragsdale,bernstein,becerra,yost,mattson,felder,cheek,handy,grossman,gauthier,escobedo,braden,beckman,mott,hillman,flaherty,dykes,stockton,stearns,lofton,coats,cavazos,beavers,barrios,tang,mosher,cardwell,coles,burnham,weller,lemons,beebe,aguilera,parnell,harman,couture,alley,schumacher,redd,dobbs,blum,blalock,merchant,ennis,denson,cottrell,brannon,bagley,aviles,watt,sousa,rosenthal,rooney,dietz,blank,paquette,mcclelland,duff,velasco,lentz,grubb,burrows,barbour,ulrich,shockley,rader,beyer,mixon,layton,altman,weathers,stoner,squires,shipp,priest,lipscomb,cutler,caballero,zimmer,willett,thurston,storey,medley,epperson,shah,mcmillian,baggett,torrez,hirsch,dent,poirier,peachey,farrar,creech,barth,trimble,dupre,albrecht,sample,lawler,crisp,conroy,wetzel,nesbitt,murry,jameson,wilhelm,patten,minton,matson,kimbrough,guinn,croft,toth,pulliam,nugent,newby,littlejohn,dias,canales,bernier,baron,singletary,renteria,pruett,mchugh,mabry,landrum,brower,stoddard,cagle,stjohn,scales,kohler,kellogg,hopson,gant,tharp,gann,zeigler,pringle,hammons,fairchild,deaton,chavis,carnes,rowley,matlock,kearns,irizarry,carrington,starkey,lopes,jarrell,craven,baum,littlefield,linn,humphreys,etheridge,cuellar,chastain,bundy,speer,skelton,quiroz,pyle,portillo,ponder,moulton,machado,killian,hutson,hitchcock,dowling,cloud,burdick,spann,pedersen,levin,leggett,hayward,dietrich,beaulieu,barksdale,wakefield,snowden,briscoe,bowie,berman,ogle,mcgregor,laughlin,helm,burden,wheatley,schreiber,pressley,parris,alaniz,agee,swann,snodgrass,schuster,radford,monk,mattingly,harp,girard,cheney,yancey,wagoner,ridley,lombardo,hudgins,gaskins,duckworth,coburn,willey,prado,newberry,magana,hammonds,elam,whipple,slade,serna,ojeda,liles,dorman,diehl,upton,reardon,michaels,goetz,eller,bauman,baer,layne,hummel,brenner,amaya,adamson,ornelas,dowell,cloutier,castellanos,wellman,saylor,orourke,moya,montalvo,kilpatrick,durbin,shell,oldham,kang,garvin,foss,branham,bartholomew,templeton,maguire,holton,rider,monahan,mccormack,beaty,anders,streeter,nieto,nielson,moffett,lankford,keating,heck,gatlin,delatorre,callaway,adcock,worrell,unger,robinette,nowak,jeter,brunner,steen,parrott,overstreet,nobles,montanez,clevenger,brinkley,trahan,quarles,pickering,pederson,jansen,grantham,gilchrist,crespo,aiken,schell,schaeffer,lorenz,leyva,harms,dyson,wallis,pease,leavitt,cheng,cavanaugh,batts,warden,seaman,rockwell,quezada,paxton,linder,houck,fontaine,durant,caruso,adler,pimentel,mize,lytle,cleary,cason,acker,switzer,isaacs,higginbotham,waterman,vandyke,stamper,sisk,shuler,riddick,mcmahan,levesque,hatton,bronson,bollinger,arnett,okeefe,gerber,gannon,farnsworth,baughman,silverman,satterfield,mccrary,kowalski,grigsby,greco,cabral,trout,rinehart,mahon,linton,gooden,curley,baugh,wyman,weiner,schwab,schuler,morrissey,mahan,bunn,thrasher,spear,waggoner,qualls,purdy,mcwhorter,mauldin,gilman,perryman,newsom,menard,martino,graf,billingsley,artis,simpkins,salisbury,quintanilla,gilliland,fraley,foust,crouse,scarborough,grissom,fultz,marlow,markham,madrigal,lawton,barfield,whiting,varney,schwarz,gooch,arce,wheat,truong,poulin,hurtado,selby,gaither,fortner,culpepper,coughlin,brinson,boudreau,bales,stepp,holm,schilling,morrell,kahn,heaton,gamez,causey,turpin,shanks,schrader,meek,isom,hardison,carranza,yanez,scroggins,schofield,runyon,ratcliff,murrell,moeller,irby,currier,butterfield,ralston,pullen,pinson,estep,carbone,hawks,ellington,casillas,spurlock,sikes,motley,mccartney,kruger,isbell,houle,burk,tomlin,quigley,neumann,lovelace,fennell,cheatham,bustamante,skidmore,hidalgo,forman,culp,bowens,betancourt,aquino,robb,milner,martel,gresham,wiles,ricketts,dowd,collazo,bostic,blakely,sherrod,kenyon,gandy,ebert,deloach,allard,sauer,robins,olivares,gillette,chestnut,bourque,paine,hite,hauser,devore,crawley,chapa,talbert,poindexter,meador,mcduffie,mattox,kraus,harkins,choate,wren,sledge,sanborn,kinder,geary,cornwell,barclay,abney,seward,rhoads,howland,fortier,benner,vines,tubbs,troutman,rapp,mccurdy,deluca,westmoreland,havens,guajardo,clary,seal,meehan,herzog,guillen,ashcraft,waugh,renner,milam,elrod,churchill,breaux,bolin,asher,windham,tirado,pemberton,nolen,noland,knott,emmons,cornish,christenson,brownlee,barbee,waldrop,pitt,olvera,lombardi,gruber,gaffney,eggleston,banda,archuleta,slone,prewitt,pfeiffer,nettles,mena,mcadams,henning,gardiner,cromwell,chisholm,burleson,vest,oglesby,mccarter,lumpkin,wofford,vanhorn,thorn,teel,swafford,stclair,stanfield,ocampo,herrmann,hannon,arsenault,roush,mcalister,hiatt,gunderson,forsythe,duggan,delvalle,cintron,wilks,weinstein,uribe,rizzo,noyes,mclendon,gurley,bethea,winstead,maples,guyton,giordano,alderman,valdes,polanco,pappas,lively,grogan,griffiths,bobo,arevalo,whitson,sowell,rendon,fernandes,farrow,benavidez,ayres,alicea,stump,smalley,seitz,schulte,gilley,gallant,canfield,wolford,omalley,mcnutt,mcnulty,mcgovern,hardman,harbin,cowart,chavarria,brink,beckett,bagwell,armstead,anglin,abreu,reynoso,krebs,jett,hoffmann,greenfield,forte,burney,broome,sisson,trammell,partridge,mace,lomax,lemieux,gossett,frantz,fogle,cooney,broughton,pence,paulsen,muncy,mcarthur,hollins,beauchamp,withers,osorio,mulligan,hoyle,dockery,cockrell,begley,amador,roby,rains,lindquist,gentile,everhart,bohannon,wylie,sommers,purnell,fortin,dunning,breeden,vail,phelan,phan,marx,cosby,colburn,boling,biddle,ledesma,gaddis,denney,chow,bueno,berrios,wicker,tolliver,thibodeaux,nagle,lavoie,fisk,crist,barbosa,reedy,locklear,kolb,himes,behrens,beckwith,weems,wahl,shorter,shackelford,rees,muse,cerda,valadez,thibodeau,saavedra,ridgeway,reiter,mchenry,majors,lachance,keaton,ferrara,clemens,blocker,applegate,needham,mojica,kuykendall,hamel,escamilla,doughty,burchett,ainsworth,vidal,upchurch,thigpen,strauss,spruill,sowers,riggins,ricker,mccombs,harlow,buffington,sotelo,olivas,negrete,morey,macon,logsdon,lapointe,bigelow,bello,westfall,stubblefield,lindley,hein,hawes,farrington,breen,birch,wilde,steed,sepulveda,reinhardt,proffitt,minter,messina,mcnabb,maier,keeler,gamboa,donohue,basham,shinn,crooks,cota,borders,bills,bachman,tisdale,tavares,schmid,pickard,gulley,fonseca,delossantos,condon,batista,wicks,wadsworth,martell,littleton,ison,haag,folsom,brumfield,broyles,brito,mireles,mcdonnell,leclair,hamblin,gough,fanning,binder,winfield,whitworth,soriano,palumbo,newkirk,mangum,hutcherson,comstock,carlin,beall,bair,wendt,watters,walling,putman,otoole,morley,mares,lemus,keener,hundley,dial,damico,billups,strother,mcfarlane,lamm,eaves,crutcher,caraballo,canty,atwell,taft,siler,rust,rawls,rawlings,prieto,mcneely,mcafee,hulsey,hackney,galvez,escalante,delagarza,crider,bandy,wilbanks,stowe,steinberg,renfro,masterson,massie,lanham,haskell,hamrick,dehart,burdette,branson,bourne,babin,aleman,worthy,tibbs,smoot,slack,paradis,mull,luce,houghton,gantt,furman,danner,christianson,burge,ashford,arndt,almeida,stallworth,shade,searcy,sager,noonan,mclemore,mcintire,maxey,lavigne,jobe,ferrer,falk,coffin,byrnes,aranda,apodaca,stamps,rounds,peek,olmstead,lewandowski,kaminski,dunaway,bruns,brackett,amato,reich,mcclung,lacroix,koontz,herrick,hardesty,flanders,cousins,cato,cade,vickery,shank,nagel,dupuis,croteau,cotter,stuckey,stine,porterfield,pauley,moffitt,knudsen,hardwick,goforth,dupont,blunt,barrows,barnhill,shull,rash,loftis,lemay,kitchens,horvath,grenier,fuchs,fairbanks,culbertson,calkins,burnside,beattie,ashworth,albertson,wertz,vaught,vallejo,turk,tuck,tijerina,sage,peterman,marroquin,marr,lantz,hoang,demarco,cone,berube,barnette,wharton,stinnett,slocum,scanlon,sander,pinto,mancuso,lima,headley,epstein,counts,clarkson,carnahan,boren,arteaga,adame,zook,whittle,whitehurst,wenzel,saxton,reddick,puente,handley,haggerty,earley,devlin,chaffin,cady,acuna,solano,sigler,pollack,pendergrass,ostrander,janes,francois,crutchfield,chamberlin,brubaker,baptiste,willson,reis,neeley,mullin,mercier,lira,layman,keeling,higdon,espinal,chapin,warfield,toledo,pulido,peebles,nagy,montague,mello,lear,jaeger,hogg,graff,furr,soliz,poore,mendenhall,mclaurin,maestas,gable,barraza,tillery,snead,pond,neill,mcculloch,mccorkle,lightfoot,hutchings,holloman,harness,dorn,bock,zielinski,turley,treadwell,stpierre,starling,somers,oswald,merrick,easterling,bivens,truitt,poston,parry,ontiveros,olivarez,moreau,medlin,lenz,knowlton,fairley,cobbs,chisolm,bannister,woodworth,toler,ocasio,noriega,neuman,moye,milburn,mcclanahan,lilley,hanes,flannery,dellinger,danielson,conti,blodgett,beers,weatherford,strain,karr,hitt,denham,custer,coble,clough,casteel,bolduc,batchelor,ammons,whitlow,tierney,staten,sibley,seifert,schubert,salcedo,mattison,laney,haggard,grooms,dees,cromer,cooks,colson,caswell,zarate,swisher,shin,ragan,pridgen,mcvey,matheny,lafleur,franz,ferraro,dugger,whiteside,rigsby,mcmurray,lehmann,jacoby,hildebrand,hendrick,headrick,goad,fincher,drury,borges,archibald,albers,woodcock,trapp,soares,seaton,monson,luckett,lindberg,kopp,keeton,healey,garvey,gaddy,fain,burchfield,wentworth,strand,stack,spooner,saucier,ricci,plunkett,pannell,ness,leger,freitas,fong,elizondo,duval,beaudoin,urbina,rickard,partin,mcgrew,mcclintock,ledoux,forsyth,faison,devries,bertrand,wasson,tilton,scarbrough,leung,irvine,garber,denning,corral,colley,castleberry,bowlin,bogan,beale,baines,trice,rayburn,parkinson,nunes,mcmillen,leahy,kimmel,higgs,fulmer,carden,bedford,taggart,spearman,prichard,morrill,koonce,heinz,hedges,guenther,grice,findley,dover,creighton,boothe,bayer,arreola,vitale,valles,raney,osgood,hanlon,burley,bounds,worden,weatherly,vetter,tanaka,stiltner,nevarez,mosby,montero,melancon,harter,hamer,goble,gladden,gist,ginn,akin,zaragoza,tarver,sammons,royster,oreilly,muir,morehead,luster,kingsley,kelso,grisham,glynn,baumann,alves,yount,tamayo,paterson,oates,menendez,longo,hargis,gillen,desantis,conover,breedlove,sumpter,scherer,rupp,reichert,heredia,creel,cohn,clemmons,casas,bickford,belton,bach,williford,whitcomb,tennant,sutter,stull,mccallum,langlois,keel,keegan,dangelo,dancy,damron,clapp,clanton,bankston,oliveira,mintz,mcinnis,martens,mabe,laster,jolley,hildreth,hefner,glaser,duckett,demers,brockman,blais,alcorn,agnew,toliver,tice,seeley,najera,musser,mcfall,laplante,galvin,fajardo,doan,coyne,copley,clawson,cheung,barone,wynne,woodley,tremblay,stoll,sparrow,sparkman,schweitzer,sasser,samples,roney,legg,heim,farias,colwell,christman,bratcher,winchester,upshaw,southerland,sorrell,sells,mccloskey,martindale,luttrell,loveless,lovejoy,linares,latimer,embry,coombs,bratton,bostick,venable,tuggle,toro,staggs,sandlin,jefferies,heckman,griffis,crayton,clem,browder,thorton,sturgill,sprouse,royer,rousseau,ridenour,pogue,perales,peeples,metzler,mesa,mccutcheon,mcbee,hornsby,heffner,corrigan,armijo,plante,peyton,paredes,macklin,hussey,hodgson,granados,frias,becnel,batten,almanza,turney,teal,sturgeon,meeker,mcdaniels,limon,keeney,hutto,holguin,gorham,fishman,fierro,blanchette,rodrigue,reddy,osburn,oden,lerma,kirkwood,keefer,haugen,hammett,chalmers,brinkman,baumgartner,zhang,valerio,tellez,steffen,shumate,sauls,ripley,kemper,guffey,evers,craddock,carvalho,blaylock,banuelos,balderas,wheaton,turnbull,shuman,pointer,mosier,mccue,ligon,kozlowski,johansen,ingle,herr,briones,snipes,rickman,pipkin,pantoja,orosco,moniz,lawless,kunkel,hibbard,galarza,enos,bussey,schott,salcido,perreault,mcdougal,mccool,haight,garris,easton,conyers,atherton,wimberly,utley,spellman,smithson,slagle,ritchey,rand,petit,osullivan,oaks,nutt,mcvay,mccreary,mayhew,knoll,jewett,harwood,cardoza,ashe,arriaga,zeller,wirth,whitmire,stauffer,rountree,redden,mccaffrey,martz,larose,langdon,humes,gaskin,faber,devito,cass,almond,wingfield,wingate,villareal,tyner,smothers,severson,reno,pennell,maupin,leighton,janssen,hassell,hallman,halcomb,folse,fitzsimmons,fahey,cranford,bolen,battles,battaglia,wooldridge,trask,rosser,regalado,mcewen,keefe,fuqua,echevarria,caro,boynton,andrus,viera,vanmeter,taber,spradlin,seibert,provost,prentice,oliphant,laporte,hwang,hatchett,hass,greiner,freedman,covert,chilton,byars,wiese,venegas,swank,shrader,roberge,mullis,mortensen,mccune,marlowe,kirchner,keck,isaacson,hostetler,halverson,gunther,griswold,fenner,durden,blackwood,ahrens,sawyers,savoy,nabors,mcswain,mackay,lavender,lash,labbe,jessup,fullerton,cruse,crittenden,correia,centeno,caudle,canady,callender,alarcon,ahern,winfrey,tribble,salley,roden,musgrove,minnick,fortenberry,carrion,bunting,batiste,whited,underhill,stillwell,rauch,pippin,perrin,messenger,mancini,lister,kinard,hartmann,fleck,wilt,treadway,thornhill,spalding,rafferty,pitre,patino,ordonez,linkous,kelleher,homan,galbraith,feeney,curtin,coward,camarillo,buss,bunnell,bolt,beeler,autry,alcala,witte,wentz,stidham,shively,nunley,meacham,martins,lemke,lefebvre,hynes,horowitz,hoppe,holcombe,dunne,derr,cochrane,brittain,bedard,beauregard,torrence,strunk,soria,simonson,shumaker,scoggins,oconner,moriarty,kuntz,ives,hutcheson,horan,hales,garmon,fitts,bohn,atchison,wisniewski,vanwinkle,sturm,sallee,prosser,moen,lundberg,kunz,kohl,keane,jorgenson,jaynes,funderburk,freed,durr,creamer,cosgrove,batson,vanhoose,thomsen,teeter,smyth,redmon,orellana,maness,heflin,goulet,frick,forney,bunker,asbury,aguiar,talbott,southard,mowery,mears,lemmon,krieger,hickson,elston,duong,delgadillo,dayton,dasilva,conaway,catron,bruton,bradbury,bordelon,bivins,bittner,bergstrom,beals,abell,whelan,tejada,pulley,pino,norfleet,nealy,maes,loper,gatewood,frierson,freund,finnegan,cupp,covey,catalano,boehm,bader,yoon,walston,tenney,sipes,rawlins,medlock,mccaskill,mccallister,marcotte,maclean,hughey,henke,harwell,gladney,gilson,chism,caskey,brandenburg,baylor,villasenor,veal,thatcher,stegall,petrie,nowlin,navarrete,lombard,loftin,lemaster,kroll,kovach,kimbrell,kidwell,hershberger,fulcher,cantwell,bustos,boland,bobbitt,binkley,wester,weis,verdin,tong,tiller,sisco,sharkey,seymore,rosenbaum,rohr,quinonez,pinkston,malley,logue,lessard,lerner,lebron,krauss,klinger,halstead,haller,getz,burrow,alger,shores,pfeifer,perron,nelms,munn,mcmaster,mckenney,manns,knudson,hutchens,huskey,goebel,flagg,cushman,click,castellano,carder,bumgarner,wampler,spinks,robson,neel,mcreynolds,mathias,maas,loera,jenson,florez,coons,buckingham,brogan,berryman,wilmoth,wilhite,thrash,shephard,seidel,schulze,roldan,pettis,obryan,maki,mackie,hatley,frazer,fiore,chesser,bottoms,bisson,benefield,allman,wilke,trudeau,timm,shifflett,mundy,milliken,mayers,leake,kohn,huntington,horsley,hermann,guerin,fryer,frizzell,foret,flemming,fife,criswell,carbajal,bozeman,boisvert,angulo,wallen,tapp,silvers,ramsay,oshea,orta,moll,mckeever,mcgehee,linville,kiefer,ketchum,howerton,groce,gass,fusco,corbitt,betz,bartels,amaral,aiello,weddle,sperry,seiler,runyan,raley,overby,osteen,olds,mckeown,matney,lauer,lattimore,hindman,hartwell,fredrickson,fredericks,espino,clegg,carswell,cambell,burkholder,woodbury,welker,totten,thornburg,theriault,stitt,stamm,stackhouse,scholl,saxon,rife,razo,quinlan,pinkerton,olivo,nesmith,nall,mattos,lafferty,justus,giron,geer,fielder,drayton,dortch,conners,conger,boatwright,billiot,barden,armenta,tibbetts,steadman,slattery,rinaldi,raynor,pinckney,pettigrew,milne,matteson,halsey,gonsalves,fellows,durand,desimone,cowley,cowles,brill,barham,barela,barba,ashmore,withrow,valenti,tejeda,spriggs,sayre,salerno,peltier,peel,merriman,matheson,lowman,lindstrom,hyland,giroux,earls,dugas,dabney,collado,briseno,baxley,whyte,wenger,vanover,vanburen,thiel,schindler,schiller,rigby,pomeroy,passmore,marble,manzo,mahaffey,lindgren,laflamme,greathouse,fite,calabrese,bayne,yamamoto,wick,townes,thames,reinhart,peeler,naranjo,montez,mcdade,mast,markley,marchand,leeper,kellum,hudgens,hennessey,hadden,gainey,coppola,borrego,bolling,beane,ault,slaton,pape,null,mulkey,lightner,langer,hillard,ethridge,enright,derosa,baskin,weinberg,turman,somerville,pardo,noll,lashley,ingraham,hiller,hendon,glaze,cothran,cooksey,conte,carrico,abner,wooley,swope,summerlin,sturgis,sturdivant,stott,spurgeon,spillman,speight,roussel,popp,nutter,mckeon,mazza,magnuson,lanning,kozak,jankowski,heyward,forster,corwin,callaghan,bays,wortham,usher,theriot,sayers,sabo,poling,loya,lieberman,laroche,labelle,howes,harr,garay,fogarty,everson,durkin,dominquez,chaves,chambliss,witcher,vieira,vandiver,terrill,stoker,schreiner,moorman,liddell,lawhorn,krug,irons,hylton,hollenbeck,herrin,hembree,goolsby,goodin,gilmer,foltz,dinkins,daughtry,caban,brim,briley,bilodeau,wyant,vergara,tallent,swearingen,stroup,scribner,quillen,pitman,mccants,maxfield,martinson,holtz,flournoy,brookins,brody,baumgardner,straub,sills,roybal,roundtree,oswalt,mcgriff,mcdougall,mccleary,maggard,gragg,gooding,godinez,doolittle,donato,cowell,cassell,bracken,appel,zambrano,reuter,perea,nakamura,monaghan,mickens,mcclinton,mcclary,marler,kish,judkins,gilbreath,freese,flanigan,felts,erdmann,dodds,chew,brownell,boatright,barreto,slayton,sandberg,saldivar,pettway,odum,narvaez,moultrie,montemayor,merrell,lees,keyser,hoke,hardaway,hannan,gilbertson,fogg,dumont,deberry,coggins,buxton,bucher,broadnax,beeson,araujo,appleton,amundson,aguayo,ackley,yocum,worsham,shivers,sanches,sacco,robey,rhoden,pender,ochs,mccurry,madera,luong,knotts,jackman,heinrich,hargrave,gault,comeaux,chitwood,caraway,boettcher,bernhardt,barrientos,zink,wickham,whiteman,thorp,stillman,settles,schoonover,roque,riddell,pilcher,phifer,novotny,macleod,hardee,haase,grider,doucette,clausen,bevins,beamon,badillo,tolley,tindall,soule,snook,seale,pinkney,pellegrino,nowell,nemeth,mondragon,mclane,lundgren,ingalls,hudspeth,hixson,gearhart,furlong,downes,dibble,deyoung,cornejo,camara,brookshire,boyette,wolcott,surratt,sellars,segal,salyer,reeve,rausch,labonte,haro,gower,freeland,fawcett,eads,driggers,donley,collett,bromley,boatman,ballinger,baldridge,volz,trombley,stonge,shanahan,rivard,rhyne,pedroza,matias,jamieson,hedgepeth,hartnett,estevez,eskridge,denman,chiu,chinn,catlett,carmack,buie,bechtel,beardsley,bard,ballou,ulmer,skeen,robledo,rincon,reitz,piazza,munger,moten,mcmichael,loftus,ledet,kersey,groff,fowlkes,crumpton,clouse,bettis,villagomez,timmerman,strom,santoro,roddy,penrod,musselman,macpherson,leboeuf,harless,haddad,guido,golding,fulkerson,fannin,dulaney,dowdell,cottle,ceja,cate,bosley,benge,albritton,voigt,trowbridge,soileau,seely,rohde,pearsall,paulk,orth,nason,mota,mcmullin,marquardt,madigan,hoag,gillum,gabbard,fenwick,danforth,cushing,cress,creed,cazares,bettencourt,barringer,baber,stansberry,schramm,rutter,rivero,oquendo,necaise,mouton,montenegro,miley,mcgough,marra,macmillan,lamontagne,jasso,horst,hetrick,heilman,gaytan,gall,fortney,dingle,desjardins,dabbs,burbank,brigham,breland,beaman,arriola,yarborough,wallin,toscano,stowers,reiss,pichardo,orton,michels,mcnamee,mccrory,leatherman,kell,keister,horning,hargett,guay,ferro,deboer,dagostino,carper,blanks,beaudry,towle,tafoya,stricklin,strader,soper,sonnier,sigmon,schenk,saddler,pedigo,mendes,lunn,lohr,lahr,kingsbury,jarman,hume,holliman,hofmann,haworth,harrelson,hambrick,flick,edmunds,dacosta,crossman,colston,chaplin,carrell,budd,weiler,waits,valentino,trantham,tarr,solorio,roebuck,powe,plank,pettus,pagano,mink,luker,leathers,joslin,hartzell,gambrell,cepeda,carty,caputo,brewington,bedell,ballew,applewhite,warnock,walz,urena,tudor,reel,pigg,parton,mickelson,meagher,mclellan,mcculley,mandel,leech,lavallee,kraemer,kling,kipp,kehoe,hochstetler,harriman,gregoire,grabowski,gosselin,gammon,fancher,edens,desai,brannan,armendariz,woolsey,whitehouse,whetstone,ussery,towne,testa,tallman,studer,strait,steinmetz,sorrells,sauceda,rolfe,paddock,mitchem,mcginn,mccrea,lovato,hazen,gilpin,gaynor,fike,devoe,delrio,curiel,burkhardt,bode,backus,zinn,watanabe,wachter,vanpelt,turnage,shaner,schroder,sato,riordan,quimby,portis,natale,mckoy,mccown,kilmer,hotchkiss,hesse,halbert,gwinn,godsey,delisle,chrisman,canter,arbogast,angell,acree,yancy,woolley,wesson,weatherspoon,trainor,stockman,spiller,sipe,rooks,reavis,propst,porras,neilson,mullens,loucks,llewellyn,kumar,koester,klingensmith,kirsch,kester,honaker,hodson,hennessy,helmick,garrity,garibay,drain,casarez,callis,botello,aycock,avant,wingard,wayman,tully,theisen,szymanski,stansbury,segovia,rainwater,preece,pirtle,padron,mincey,mckelvey,mathes,larrabee,kornegay,klug,ingersoll,hecht,germain,eggers,dykstra,deering,decoteau,deason,dearing,cofield,carrigan,bonham,bahr,aucoin,appleby,almonte,yager,womble,wimmer,weimer,vanderpool,stancil,sprinkle,romine,remington,pfaff,peckham,olivera,meraz,maze,lathrop,koehn,hazelton,halvorson,hallock,haddock,ducharme,dehaven,caruthers,brehm,bosworth,bost,bias,beeman,basile,bane,aikens,wold,walther,tabb,suber,strawn,stocker,shirey,schlosser,riedel,rembert,reimer,pyles,peele,merriweather,letourneau,latta,kidder,hixon,hillis,hight,herbst,henriquez,haygood,hamill,gabel,fritts,eubank,dawes,correll,bushey,buchholz,brotherton,botts,barnwell,auger,atchley,westphal,veilleux,ulloa,stutzman,shriver,ryals,pilkington,moyers,marrs,mangrum,maddux,lockard,laing,kuhl,harney,hammock,hamlett,felker,doerr,depriest,carrasquillo,carothers,bogle,bischoff,bergen,albanese,wyckoff,vermillion,vansickle,thibault,tetreault,stickney,shoemake,ruggiero,rawson,racine,philpot,paschal,mcelhaney,mathison,legrand,lapierre,kwan,kremer,jiles,hilbert,geyer,faircloth,ehlers,egbert,desrosiers,dalrymple,cotten,cashman,cadena,boardman,alcaraz,wyrick,therrien,tankersley,strickler,puryear,plourde,pattison,pardue,mcginty,mcevoy,landreth,kuhns,koon,hewett,giddens,emerick,eades,deangelis,cosme,ceballos,birdsong,benham,bemis,armour,anguiano,welborn,tsosie,storms,shoup,sessoms,samaniego,rood,rojo,rhinehart,raby,northcutt,myer,munguia,morehouse,mcdevitt,mallett,lozada,lemoine,kuehn,hallett,grim,gillard,gaylor,garman,gallaher,feaster,faris,darrow,dardar,coney,carreon,braithwaite,boylan,boyett,bixler,bigham,benford,barragan,barnum,zuber,wyche,westcott,vining,stoltzfus,simonds,shupe,sabin,ruble,rittenhouse,richman,perrone,mulholland,millan,lomeli,kite,jemison,hulett,holler,hickerson,herold,hazelwood,griffen,gause,forde,eisenberg,dilworth,charron,chaisson,bristow,breunig,brace,boutwell,bentz,belk,bayless,batchelder,baran,baeza,zimmermann,weathersby,volk,toole,theis,tedesco,searle,schenck,satterwhite,ruelas,rankins,partida,nesbit,morel,menchaca,levasseur,kaylor,johnstone,hulse,hollar,hersey,harrigan,harbison,guyer,gish,giese,gerlach,geller,geisler,falcone,elwell,doucet,deese,darr,corder,chafin,byler,bussell,burdett,brasher,bowe,bellinger,bastian,barner,alleyne,wilborn,weil,wegner,tatro,spitzer,smithers,schoen,resendez,parisi,overman,obrian,mudd,mahler,maggio,lindner,lalonde,lacasse,laboy,killion,kahl,jessen,jamerson,houk,henshaw,gustin,graber,durst,duenas,davey,cundiff,conlon,colunga,coakley,chiles,capers,buell,bricker,bissonnette,bartz,bagby,zayas,volpe,treece,toombs,thom,terrazas,swinney,skiles,silveira,shouse,senn,ramage,moua,langham,kyles,holston,hoagland,herd,feller,denison,carraway,burford,bickel,ambriz,abercrombie,yamada,weidner,waddle,verduzco,thurmond,swindle,schrock,sanabria,rosenberger,probst,peabody,olinger,nazario,mccafferty,mcbroom,mcabee,mazur,matherne,mapes,leverett,killingsworth,heisler,griego,gosnell,frankel,franke,ferrante,fenn,ehrlich,christopherso,chasse,caton,brunelle,bloomfield,babbitt,azevedo,abramson,ables,abeyta,youmans,wozniak,wainwright,stowell,smitherman,samuelson,runge,rothman,rosenfeld,peake,owings,olmos,munro,moreira,leatherwood,larkins,krantz,kovacs,kizer,kindred,karnes,jaffe,hubbell,hosey,hauck,goodell,erdman,dvorak,doane,cureton,cofer,buehler,bierman,berndt,banta,abdullah,warwick,waltz,turcotte,torrey,stith,seger,sachs,quesada,pinder,peppers,pascual,paschall,parkhurst,ozuna,oster,nicholls,lheureux,lavalley,kimura,jablonski,haun,gourley,gilligan,croy,cotto,cargill,burwell,burgett,buckman,booher,adorno,wrenn,whittemore,urias,szabo,sayles,saiz,rutland,rael,pharr,pelkey,ogrady,nickell,musick,moats,mather,massa,kirschner,kieffer,kellar,hendershot,gott,godoy,gadson,furtado,fiedler,erskine,dutcher,dever,daggett,chevalier,brake,ballesteros,amerson,wingo,waldon,trott,silvey,showers,schlegel,ritz,pepin,pelayo,parsley,palermo,moorehead,mchale,lett,kocher,kilburn,iglesias,humble,hulbert,huckaby,hartford,hardiman,gurney,grigg,grasso,goings,fillmore,farber,depew,dandrea,cowen,covarrubias,burrus,bracy,ardoin,thompkins,standley,radcliffe,pohl,persaud,parenteau,pabon,newson,newhouse,napolitano,mulcahy,malave,keim,hooten,hernandes,heffernan,hearne,greenleaf,glick,fuhrman,fetter,faria,dishman,dickenson,crites,criss,clapper,chenault,castor,casto,bugg,bove,bonney,anderton,allgood,alderson,woodman,warrick,toomey,tooley,tarrant,summerville,stebbins,sokol,searles,schutz,schumann,scheer,remillard,raper,proulx,palmore,monroy,messier,melo,melanson,mashburn,manzano,lussier,jenks,huneycutt,hartwig,grimsley,fulk,fielding,fidler,engstrom,eldred,dantzler,crandell,calder,brumley,breton,brann,bramlett,boykins,bianco,bancroft,almaraz,alcantar,whitmer,whitener,welton,vineyard,rahn,paquin,mizell,mcmillin,mckean,marston,maciel,lundquist,liggins,lampkin,kranz,koski,kirkham,jiminez,hazzard,harrod,graziano,grammer,gendron,garrido,fordham,englert,dryden,demoss,deluna,crabb,comeau,brummett,blume,benally,wessel,vanbuskirk,thorson,stumpf,stockwell,reams,radtke,rackley,pelton,niemi,newland,nelsen,morrissette,miramontes,mcginley,mccluskey,marchant,luevano,lampe,lail,jeffcoat,infante,hinman,gaona,eady,desmarais,decosta,dansby,cisco,choe,breckenridge,bostwick,borg,bianchi,alberts,wilkie,whorton,vargo,tait,soucy,schuman,ousley,mumford,lippert,leath,lavergne,laliberte,kirksey,kenner,johnsen,izzo,hiles,gullett,greenwell,gaspar,galbreath,gaitan,ericson,delapaz,croom,cottingham,clift,bushnell,bice,beason,arrowood,waring,voorhees,truax,shreve,shockey,schatz,sandifer,rubino,rozier,roseberry,pieper,peden,nester,nave,murphey,malinowski,macgregor,lafrance,kunkle,kirkman,hipp,hasty,haddix,gervais,gerdes,gamache,fouts,fitzwater,dillingham,deming,deanda,cedeno,cannady,burson,bouldin,arceneaux,woodhouse,whitford,wescott,welty,weigel,torgerson,toms,surber,sunderland,sterner,setzer,riojas,pumphrey,puga,metts,mcgarry,mccandless,magill,lupo,loveland,llamas,leclerc,koons,kahler,huss,holbert,heintz,haupt,grimmett,gaskill,ellingson,dorr,dingess,deweese,desilva,crossley,cordeiro,converse,conde,caldera,cairns,burmeister,burkhalter,brawner,bott,youngs,vierra,valladares,shrum,shropshire,sevilla,rusk,rodarte,pedraza,nino,merino,mcminn,markle,mapp,lajoie,koerner,kittrell,kato,hyder,hollifield,heiser,hazlett,greenwald,fant,eldredge,dreher,delafuente,cravens,claypool,beecher,aronson,alanis,worthen,wojcik,winger,whitacre,valverde,valdivia,troupe,thrower,swindell,suttles,stroman,spires,slate,shealy,sarver,sartin,sadowski,rondeau,rolon,rascon,priddy,paulino,nolte,munroe,molloy,mciver,lykins,loggins,lenoir,klotz,kempf,hupp,hollowell,hollander,haynie,harkness,harker,gottlieb,frith,eddins,driskell,doggett,densmore,charette,cassady,byrum,burcham,buggs,benn,whitted,warrington,vandusen,vaillancourt,steger,siebert,scofield,quirk,purser,plumb,orcutt,nordstrom,mosely,michalski,mcphail,mcdavid,mccraw,marchese,mannino,lefevre,largent,lanza,kress,isham,hunsaker,hoch,hildebrandt,guarino,grijalva,graybill,fick,ewell,ewald,cusick,crumley,coston,cathcart,carruthers,bullington,bowes,blain,blackford,barboza,yingling,wert,weiland,varga,silverstein,sievers,shuster,shumway,runnels,rumsey,renfroe,provencher,polley,mohler,middlebrooks,kutz,koster,groth,glidden,fazio,deen,chipman,chenoweth,champlin,cedillo,carrero,carmody,buckles,brien,boutin,bosch,berkowitz,altamirano,wilfong,wiegand,waites,truesdale,toussaint,tobey,tedder,steelman,sirois,schnell,robichaud,richburg,plumley,pizarro,piercy,ortego,oberg,neace,mertz,mcnew,matta,lapp,lair,kibler,howlett,hollister,hofer,hatten,hagler,falgoust,engelhardt,eberle,dombrowski,dinsmore,daye,casares,braud,balch,autrey,wendel,tyndall,strobel,stoltz,spinelli,serrato,reber,rathbone,palomino,nickels,mayle,mathers,mach,loeffler,littrell,levinson,leong,lemire,lejeune,lazo,lasley,koller,kennard,hoelscher,hintz,hagerman,greaves,fore,eudy,engler,corrales,cordes,brunet,bidwell,bennet,tyrrell,tharpe,swinton,stribling,southworth,sisneros,savoie,samons,ruvalcaba,ries,ramer,omara,mosqueda,millar,mcpeak,macomber,luckey,litton,lehr,lavin,hubbs,hoard,hibbs,hagans,futrell,exum,evenson,culler,carbaugh,callen,brashear,bloomer,blakeney,bigler,addington,woodford,unruh,tolentino,sumrall,stgermain,smock,sherer,rayner,pooler,oquinn,nero,mcglothlin,linden,kowal,kerrigan,ibrahim,harvell,hanrahan,goodall,geist,fussell,fung,ferebee,eley,eggert,dorsett,dingman,destefano,colucci,clemmer,burnell,brumbaugh,boddie,berryhill,avelar,alcantara,winder,winchell,vandenberg,trotman,thurber,thibeault,stlouis,stilwell,sperling,shattuck,sarmiento,ruppert,rumph,renaud,randazzo,rademacher,quiles,pearman,palomo,mercurio,lowrey,lindeman,lawlor,larosa,lander,labrecque,hovis,holifield,henninger,hawkes,hartfield,hann,hague,genovese,garrick,fudge,frink,eddings,dinh,cribbs,calvillo,bunton,brodeur,bolding,blanding,agosto,zahn,wiener,trussell,tello,teixeira,speck,sharma,shanklin,sealy,scanlan,santamaria,roundy,robichaux,ringer,rigney,prevost,polson,nord,moxley,medford,mccaslin,mcardle,macarthur,lewin,lasher,ketcham,keiser,heine,hackworth,grose,grizzle,gillman,gartner,frazee,fleury,edson,edmonson,derry,cronk,conant,burress,burgin,broom,brockington,bolick,boger,birchfield,billington,baily,bahena,armbruster,anson,yoho,wilcher,tinney,timberlake,thielen,sutphin,stultz,sikora,serra,schulman,scheffler,santillan,rego,preciado,pinkham,mickle,lomas,lizotte,lent,kellerman,keil,johanson,hernadez,hartsfield,haber,gorski,farkas,eberhardt,duquette,delano,cropper,cozart,cockerham,chamblee,cartagena,cahoon,buzzell,brister,brewton,blackshear,benfield,aston,ashburn,arruda,wetmore,weise,vaccaro,tucci,sudduth,stromberg,stoops,showalter,shears,runion,rowden,rosenblum,riffle,renfrow,peres,obryant,leftwich,lark,landeros,kistler,killough,kerley,kastner,hoggard,hartung,guertin,govan,gatling,gailey,fullmer,fulford,flatt,esquibel,endicott,edmiston,edelstein,dufresne,dressler,dickman,chee,busse,bonnett,berard,yoshida,velarde,veach,vanhouten,vachon,tolson,tolman,tennyson,stites,soler,shutt,ruggles,rhone,pegues,neese,muro,moncrief,mefford,mcphee,mcmorris,mceachern,mcclurg,mansour,mader,leija,lecompte,lafountain,labrie,jaquez,heald,hash,hartle,gainer,frisby,farina,eidson,edgerton,dyke,durrett,duhon,cuomo,cobos,cervantez,bybee,brockway,borowski,binion,beery,arguello,amaro,acton,yuen,winton,wigfall,weekley,vidrine,vannoy,tardiff,shoop,shilling,schick,safford,prendergast,pilgrim,pellerin,osuna,nissen,nalley,moller,messner,messick,merrifield,mcguinness,matherly,marcano,mahone,lemos,lebrun,jara,hoffer,herren,hecker,haws,haug,gwin,gober,gilliard,fredette,favela,echeverria,downer,donofrio,desrochers,crozier,corson,bechtold,argueta,aparicio,zamudio,westover,westerman,utter,troyer,thies,tapley,slavin,shirk,sandler,roop,rimmer,raymer,radcliff,otten,moorer,millet,mckibben,mccutchen,mcavoy,mcadoo,mayorga,mastin,martineau,marek,madore,leflore,kroeger,kennon,jimerson,hostetter,hornback,hendley,hance,guardado,granado,gowen,goodale,flinn,fleetwood,fitz,durkee,duprey,dipietro,dilley,clyburn,brawley,beckley,arana,weatherby,vollmer,vestal,tunnell,trigg,tingle,takahashi,sweatt,storer,snapp,shiver,rooker,rathbun,poisson,perrine,perri,parmer,parke,pare,papa,palmieri,midkiff,mecham,mccomas,mcalpine,lovelady,lillard,lally,knopp,kile,kiger,haile,gupta,goldsberry,gilreath,fulks,friesen,franzen,flack,findlay,ferland,dreyer,dore,dennard,deckard,debose,crim,coulombe,chancey,cantor,branton,bissell,barns,woolard,witham,wasserman,spiegel,shoffner,scholz,ruch,rossman,petry,palacio,paez,neary,mortenson,millsap,miele,menke,mckim,mcanally,martines,lemley,larochelle,klaus,klatt,kaufmann,kapp,helmer,hedge,halloran,glisson,frechette,fontana,eagan,distefano,danley,creekmore,chartier,chaffee,carillo,burg,bolinger,berkley,benz,basso,bash,zelaya,woodring,witkowski,wilmot,wilkens,wieland,verdugo,urquhart,tsai,timms,swiger,swaim,sussman,pires,molnar,mcatee,lowder,loos,linker,landes,kingery,hufford,higa,hendren,hammack,hamann,gillam,gerhardt,edelman,delk,deans,curl,constantine,cleaver,claar,casiano,carruth,carlyle,brophy,bolanos,bibbs,bessette,beggs,baugher,bartel,averill,andresen,amin,adames,valente,turnbow,swink,sublett,stroh,stringfellow,ridgway,pugliese,poteat,ohare,neubauer,murchison,mingo,lemmons,kwon,kellam,kean,jarmon,hyden,hudak,hollinger,henkel,hemingway,hasson,hansel,halter,haire,ginsberg,gillispie,fogel,flory,etter,elledge,eckman,deas,currin,crafton,coomer,colter,claxton,bulter,braddock,bowyer,binns,bellows,baskerville,barros,ansley,woolf,wight,waldman,wadley,tull,trull,tesch,stouffer,stadler,slay,shubert,sedillo,santacruz,reinke,poynter,neri,neale,mowry,moralez,monger,mitchum,merryman,manion,macdougall,litchfield,levitt,lepage,lasalle,khoury,kavanagh,karns,ivie,huebner,hodgkins,halpin,garica,eversole,dutra,dunagan,duffey,dillman,dillion,deville,dearborn,damato,courson,coulson,burdine,bousquet,bonin,bish,atencio,westbrooks,wages,vaca,toner,tillis,swett,struble,stanfill,solorzano,slusher,sipple,silvas,shults,schexnayder,saez,rodas,rager,pulver,penton,paniagua,meneses,mcfarlin,mcauley,matz,maloy,magruder,lohman,landa,lacombe,jaimes,holzer,holst,heil,hackler,grundy,gilkey,farnham,durfee,dunton,dunston,duda,dews,craver,corriveau,conwell,colella,chambless,bremer,boutte,bourassa,blaisdell,backman,babineaux,audette,alleman,towner,taveras,tarango,sullins,suiter,stallard,solberg,schlueter,poulos,pimental,owsley,okelley,moffatt,metcalfe,meekins,medellin,mcglynn,mccowan,marriott,marable,lennox,lamoureux,koss,kerby,karp,isenberg,howze,hockenberry,highsmith,hallmark,gusman,greeley,giddings,gaudet,gallup,fleenor,eicher,edington,dimaggio,dement,demello,decastro,bushman,brundage,brooker,bourg,blackstock,bergmann,beaton,banister,argo,appling,wortman,watterson,villalpando,tillotson,tighe,sundberg,sternberg,stamey,shipe,seeger,scarberry,sattler,sain,rothstein,poteet,plowman,pettiford,penland,partain,pankey,oyler,ogletree,ogburn,moton,merkel,lucier,lakey,kratz,kinser,kershaw,josephson,imhoff,hendry,hammon,frisbie,frawley,fraga,forester,eskew,emmert,drennan,doyon,dandridge,cawley,carvajal,bracey,belisle,batey,ahner,wysocki,weiser,veliz,tincher,sansone,sankey,sandstrom,rohrer,risner,pridemore,pfeffer,persinger,peery,oubre,nowicki,musgrave,murdoch,mullinax,mccary,mathieu,livengood,kyser,klink,kimes,kellner,kavanaugh,kasten,imes,hoey,hinshaw,hake,gurule,grube,grillo,geter,gatto,garver,garretson,farwell,eiland,dunford,decarlo,corso,colman,collard,cleghorn,chasteen,cavender,carlile,calvo,byerly,brogdon,broadwater,breault,bono,bergin,behr,ballenger,amick,tamez,stiffler,steinke,simmon,shankle,schaller,salmons,sackett,saad,rideout,ratcliffe,ranson,plascencia,petterson,olszewski,olney,olguin,nilsson,nevels,morelli,montiel,monge,michaelson,mertens,mcchesney,mcalpin,mathewson,loudermilk,lineberry,liggett,kinlaw,kight,jost,hereford,hardeman,halpern,halliday,hafer,gaul,friel,freitag,forsberg,evangelista,doering,dicarlo,dendy,delp,deguzman,dameron,curtiss,cosper,cauthen,bradberry,bouton,bonnell,bixby,bieber,beveridge,bedwell,barhorst,bannon,baltazar,baier,ayotte,attaway,arenas,abrego,turgeon,tunstall,thaxton,tenorio,stotts,sthilaire,shedd,seabolt,scalf,salyers,ruhl,rowlett,robinett,pfister,perlman,pepe,parkman,nunnally,norvell,napper,modlin,mckellar,mcclean,mascarenas,leibowitz,ledezma,kuhlman,kobayashi,hunley,holmquist,hinkley,hazard,hartsell,gribble,gravely,fifield,eliason,doak,crossland,carleton,bridgeman,bojorquez,boggess,auten,woosley,whiteley,wexler,twomey,tullis,townley,standridge,santoyo,rueda,riendeau,revell,pless,ottinger,nigro,nickles,mulvey,menefee,mcshane,mcloughlin,mckinzie,markey,lockridge,lipsey,knisley,knepper,kitts,kiel,jinks,hathcock,godin,gallego,fikes,fecteau,estabrook,ellinger,dunlop,dudek,countryman,chauvin,chatham,bullins,brownfield,boughton,bloodworth,bibb,baucom,barbieri,aubin,armitage,alessi,absher,abbate,zito,woolery,wiggs,wacker,tynes,tolle,telles,tarter,swarey,strode,stockdale,stalnaker,spina,schiff,saari,risley,rameriz,rakes,pettaway,penner,paulus,palladino,omeara,montelongo,melnick,mehta,mcgary,mccourt,mccollough,marchetti,manzanares,lowther,leiva,lauderdale,lafontaine,kowalczyk,knighton,joubert,jaworski,huth,hurdle,housley,hackman,gulick,gordy,gilstrap,gehrke,gebhart,gaudette,foxworth,endres,dunkle,cimino,caddell,brauer,braley,bodine,blackmore,belden,backer,ayer,andress,wisner,vuong,valliere,twigg,tavarez,strahan,steib,staub,sowder,seiber,schutt,scharf,schade,rodriques,risinger,renshaw,rahman,presnell,piatt,nieman,nevins,mcilwain,mcgaha,mccully,mccomb,massengale,macedo,lesher,kearse,jauregui,husted,hudnall,holmberg,hertel,hardie,glidewell,frausto,fassett,dalessandro,dahlgren,corum,constantino,conlin,colquitt,colombo,claycomb,cardin,buller,boney,bocanegra,biggers,benedetto,araiza,andino,albin,zorn,werth,weisman,walley,vanegas,ulibarri,towe,tedford,teasley,suttle,steffens,stcyr,squire,singley,sifuentes,shuck,schram,sass,rieger,ridenhour,rickert,richerson,rayborn,rabe,raab,pendley,pastore,ordway,moynihan,mellott,mckissick,mcgann,mccready,mauney,marrufo,lenhart,lazar,lafave,keele,kautz,jardine,jahnke,jacobo,hord,hardcastle,hageman,giglio,gehring,fortson,duque,duplessis,dicken,derosier,deitz,dalessio,cram,castleman,candelario,callison,caceres,bozarth,biles,bejarano,bashaw,avina,armentrout,alverez,acord,waterhouse,vereen,vanlandingham,strawser,shotwell,severance,seltzer,schoonmaker,schock,schaub,schaffner,roeder,rodrigez,riffe,rasberry,rancourt,railey,quade,pursley,prouty,perdomo,oxley,osterman,nickens,murphree,mounts,merida,maus,mattern,masse,martinelli,mangan,lutes,ludwick,loney,laureano,lasater,knighten,kissinger,kimsey,kessinger,honea,hollingshead,hockett,heyer,heron,gurrola,gove,glasscock,gillett,galan,featherstone,eckhardt,duron,dunson,dasher,culbreth,cowden,cowans,claypoole,churchwell,chabot,caviness,cater,caston,callan,byington,burkey,boden,beckford,atwater,archambault,alvey,alsup,whisenant,weese,voyles,verret,tsang,tessier,sweitzer,sherwin,shaughnessy,revis,remy,prine,philpott,peavy,paynter,parmenter,ovalle,offutt,nightingale,newlin,nakano,myatt,muth,mohan,mcmillon,mccarley,mccaleb,maxson,marinelli,maley,liston,letendre,kain,huntsman,hirst,hagerty,gulledge,greenway,grajeda,gorton,goines,gittens,frederickson,fanelli,embree,eichelberger,dunkin,dixson,dillow,defelice,chumley,burleigh,borkowski,binette,biggerstaff,berglund,beller,audet,arbuckle,allain,alfano,youngman,wittman,weintraub,vanzant,vaden,twitty,stollings,standifer,sines,shope,scalise,saville,posada,pisano,otte,nolasco,mier,merkle,mendiola,melcher,mejias,mcmurry,mccalla,markowitz,manis,mallette,macfarlane,lough,looper,landin,kittle,kinsella,kinnard,hobart,helman,hellman,hartsock,halford,hage,gordan,glasser,gayton,gattis,gastelum,gaspard,frisch,fitzhugh,eckstein,eberly,dowden,despain,crumpler,crotty,cornelison,chouinard,chamness,catlin,cann,bumgardner,budde,branum,bradfield,braddy,borst,birdwell,bazan,banas,bade,arango,ahearn,addis,zumwalt,wurth,wilk,widener,wagstaff,urrutia,terwilliger,tart,steinman,staats,sloat,rives,riggle,revels,reichard,prickett,poff,pitzer,petro,pell,northrup,nicks,moline,mielke,maynor,mallon,magness,lingle,lindell,lieb,lesko,lebeau,lammers,lafond,kiernan,ketron,jurado,holmgren,hilburn,hayashi,hashimoto,harbaugh,guillot,gard,froehlich,feinberg,falco,dufour,drees,doney,diep,delao,daves,dail,crowson,coss,congdon,carner,camarena,butterworth,burlingame,bouffard,bloch,bilyeu,barta,bakke,baillargeon,avent,aquilar,zeringue,yarber,wolfson,vogler,voelker,truss,troxell,thrift,strouse,spielman,sistrunk,sevigny,schuller,schaaf,ruffner,routh,roseman,ricciardi,peraza,pegram,overturf,olander,odaniel,millner,melchor,maroney,machuca,macaluso,livesay,layfield,laskowski,kwiatkowski,kilby,hovey,heywood,hayman,havard,harville,haigh,hagood,grieco,glassman,gebhardt,fleischer,fann,elson,eccles,cunha,crumb,blakley,bardwell,abshire,woodham,wines,welter,wargo,varnado,tutt,traynor,swaney,stricker,stoffel,stambaugh,sickler,shackleford,selman,seaver,sansom,sanmiguel,royston,rourke,rockett,rioux,puleo,pitchford,nardi,mulvaney,middaugh,malek,leos,lathan,kujawa,kimbro,killebrew,houlihan,hinckley,herod,hepler,hamner,hammel,hallowell,gonsalez,gingerich,gambill,funkhouser,fricke,fewell,falkner,endsley,dulin,drennen,deaver,dambrosio,chadwell,castanon,burkes,brune,brisco,brinker,bowker,boldt,berner,beaumont,beaird,bazemore,barrick,albano,younts,wunderlich,weidman,vanness,toland,theobald,stickler,steiger,stanger,spies,spector,sollars,smedley,seibel,scoville,saito,rummel,rowles,rouleau,roos,rogan,roemer,ream,raya,purkey,priester,perreira,penick,paulin,parkins,overcash,oleson,neves,muldrow,minard,midgett,michalak,melgar,mcentire,mcauliffe,marte,lydon,lindholm,leyba,langevin,lagasse,lafayette,kesler,kelton,kaminsky,jaggers,humbert,huck,howarth,hinrichs,higley,gupton,guimond,gravois,giguere,fretwell,fontes,feeley,faucher,eichhorn,ecker,earp,dole,dinger,derryberry,demars,deel,copenhaver,collinsworth,colangelo,cloyd,claiborne,caulfield,carlsen,calzada,caffey,broadus,brenneman,bouie,bodnar,blaney,blanc,beltz,behling,barahona,yockey,winkle,windom,wimer,villatoro,trexler,teran,taliaferro,sydnor,swinson,snelling,smtih,simonton,simoneaux,simoneau,sherrer,seavey,scheel,rushton,rupe,ruano,rippy,reiner,reiff,rabinowitz,quach,penley,odle,nock,minnich,mckown,mccarver,mcandrew,longley,laux,lamothe,lafreniere,kropp,krick,kates,jepson,huie,howse,howie,henriques,haydon,haught,hatter,hartzog,harkey,grimaldo,goshorn,gormley,gluck,gilroy,gillenwater,giffin,fluker,feder,eyre,eshelman,eakins,detwiler,delrosario,davisson,catalan,canning,calton,brammer,botelho,blakney,bartell,averett,askins,aker,witmer,winkelman,widmer,whittier,weitzel,wardell,wagers,ullman,tupper,tingley,tilghman,talton,simard,seda,scheller,sala,rundell,rost,ribeiro,rabideau,primm,pinon,peart,ostrom,ober,nystrom,nussbaum,naughton,murr,moorhead,monti,monteiro,melson,meissner,mclin,mcgruder,marotta,makowski,majewski,madewell,lunt,lukens,leininger,lebel,lakin,kepler,jaques,hunnicutt,hungerford,hoopes,hertz,heins,halliburton,grosso,gravitt,glasper,gallman,gallaway,funke,fulbright,falgout,eakin,dostie,dorado,dewberry,derose,cutshall,crampton,costanzo,colletti,cloninger,claytor,chiang,campagna,burd,brokaw,broaddus,bretz,brainard,binford,bilbrey,alpert,aitken,ahlers,zajac,woolfolk,witten,windle,wayland,tramel,tittle,talavera,suter,straley,specht,sommerville,soloman,skeens,sigman,sibert,shavers,schuck,schmit,sartain,sabol,rosenblatt,rollo,rashid,rabb,polston,nyberg,northrop,navarra,muldoon,mikesell,mcdougald,mcburney,mariscal,lozier,lingerfelt,legere,latour,lagunas,lacour,kurth,killen,kiely,kayser,kahle,isley,huertas,hower,hinz,haugh,gumm,galicia,fortunato,flake,dunleavy,duggins,doby,digiovanni,devaney,deltoro,cribb,corpuz,coronel,coen,charbonneau,caine,burchette,blakey,blakemore,bergquist,beene,beaudette,bayles,ballance,bakker,bailes,asberry,arwood,zucker,willman,whitesell,wald,walcott,vancleave,trump,strasser,simas,shick,schleicher,schaal,saleh,rotz,resnick,rainer,partee,ollis,oller,oday,noles,munday,mong,millican,merwin,mazzola,mansell,magallanes,llanes,lewellen,lepore,kisner,keesee,jeanlouis,ingham,hornbeck,hawn,hartz,harber,haffner,gutshall,guth,grays,gowan,finlay,finkelstein,eyler,enloe,dungan,diez,dearman,cull,crosson,chronister,cassity,campion,callihan,butz,breazeale,blumenthal,berkey,batty,batton,arvizu,alderete,aldana,albaugh,abernethy,wolter,wille,tweed,tollefson,thomasson,teter,testerman,sproul,spates,southwick,soukup,skelly,senter,sealey,sawicki,sargeant,rossiter,rosemond,repp,pifer,ormsby,nickelson,naumann,morabito,monzon,millsaps,millen,mcelrath,marcoux,mantooth,madson,macneil,mackinnon,louque,leister,lampley,kushner,krouse,kirwan,jessee,janson,jahn,jacquez,islas,hutt,holladay,hillyer,hepburn,hensel,harrold,gingrich,geis,gales,fults,finnell,ferri,featherston,epley,ebersole,eames,dunigan,drye,dismuke,devaughn,delorenzo,damiano,confer,collum,clower,clow,claussen,clack,caylor,cawthon,casias,carreno,bluhm,bingaman,bewley,belew,beckner,auld,amey,wolfenbarger,wilkey,wicklund,waltman,villalba,valero,valdovinos,ullrich,tyus,twyman,trost,tardif,tanguay,stripling,steinbach,shumpert,sasaki,sappington,sandusky,reinhold,reinert,quijano,placencia,pinkard,phinney,perrotta,pernell,parrett,oxendine,owensby,orman,nuno,mori,mcroberts,mcneese,mckamey,mccullum,markel,mardis,maines,lueck,lubin,lefler,leffler,larios,labarbera,kershner,josey,jeanbaptiste,izaguirre,hermosillo,haviland,hartshorn,hafner,ginter,getty,franck,fiske,dufrene,doody,davie,dangerfield,dahlberg,cuthbertson,crone,coffelt,chidester,chesson,cauley,caudell,cantara,campo,caines,bullis,bucci,brochu,bogard,bickerstaff,benning,arzola,antonelli,adkinson,zellers,wulf,worsley,woolridge,whitton,westerfield,walczak,vassar,truett,trueblood,trawick,townsley,topping,tobar,telford,steverson,stagg,sitton,sill,sergent,schoenfeld,sarabia,rutkowski,rubenstein,rigdon,prentiss,pomerleau,plumlee,philbrick,patnode,oloughlin,obregon,nuss,morell,mikell,mele,mcinerney,mcguigan,mcbrayer,lollar,kuehl,kinzer,kamp,joplin,jacobi,howells,holstein,hedden,hassler,harty,halle,greig,gouge,goodrum,gerhart,geier,geddes,gast,forehand,ferree,fendley,feltner,esqueda,encarnacion,eichler,egger,edmundson,eatmon,doud,donohoe,donelson,dilorenzo,digiacomo,diggins,delozier,dejong,danford,crippen,coppage,cogswell,clardy,cioffi,cabe,brunette,bresnahan,blomquist,blackstone,biller,bevis,bevan,bethune,benbow,baty,basinger,balcom,andes,aman,aguero,adkisson,yandell,wilds,whisenhunt,weigand,weeden,voight,villar,trottier,tillett,suazo,setser,scurry,schuh,schreck,schauer,samora,roane,rinker,reimers,ratchford,popovich,parkin,natal,melville,mcbryde,magdaleno,loehr,lockman,lingo,leduc,larocca,lamere,laclair,krall,korte,koger,jalbert,hughs,higbee,henton,heaney,haith,gump,greeson,goodloe,gholston,gasper,gagliardi,fregoso,farthing,fabrizio,ensor,elswick,elgin,eklund,eaddy,drouin,dorton,dizon,derouen,deherrera,davy,dampier,cullum,culley,cowgill,cardoso,cardinale,brodsky,broadbent,brimmer,briceno,branscum,bolyard,boley,bennington,beadle,baur,ballentine,azure,aultman,arciniega,aguila,aceves,yepez,woodrum,wethington,weissman,veloz,trusty,troup,trammel,tarpley,stivers,steck,sprayberry,spraggins,spitler,spiers,sohn,seagraves,schiffman,rudnick,rizo,riccio,rennie,quackenbush,puma,plott,pearcy,parada,paiz,munford,moskowitz,mease,mcnary,mccusker,lozoya,longmire,loesch,lasky,kuhlmann,krieg,koziol,kowalewski,konrad,kindle,jowers,jolin,jaco,horgan,hine,hileman,hepner,heise,heady,hawkinson,hannigan,haberman,guilford,grimaldi,garton,gagliano,fruge,follett,fiscus,ferretti,ebner,easterday,eanes,dirks,dimarco,depalma,deforest,cruce,craighead,christner,candler,cadwell,burchell,buettner,brinton,brazier,brannen,brame,bova,bomar,blakeslee,belknap,bangs,balzer,athey,armes,alvis,alverson,alvardo,yeung,wheelock,westlund,wessels,volkman,threadgill,thelen,tague,symons,swinford,sturtevant,straka,stier,stagner,segarra,seawright,rutan,roux,ringler,riker,ramsdell,quattlebaum,purifoy,poulson,permenter,peloquin,pasley,pagel,osman,obannon,nygaard,newcomer,munos,motta,meadors,mcquiston,mcniel,mcmann,mccrae,mayne,matte,legault,lechner,kucera,krohn,kratzer,koopman,jeske,horrocks,hock,hibbler,hesson,hersh,harvin,halvorsen,griner,grindle,gladstone,garofalo,frampton,forbis,eddington,diorio,dingus,dewar,desalvo,curcio,creasy,cortese,cordoba,connally,cluff,cascio,capuano,canaday,calabro,bussard,brayton,borja,bigley,arnone,arguelles,acuff,zamarripa,wooton,widner,wideman,threatt,thiele,templin,teeters,synder,swint,swick,sturges,stogner,stedman,spratt,siegfried,shetler,scull,savino,sather,rothwell,rook,rone,rhee,quevedo,privett,pouliot,poche,pickel,petrillo,pellegrini,peaslee,partlow,otey,nunnery,morelock,morello,meunier,messinger,mckie,mccubbin,mccarron,lerch,lavine,laverty,lariviere,lamkin,kugler,krol,kissel,keeter,hubble,hickox,hetzel,hayner,hagy,hadlock,groh,gottschalk,goodsell,gassaway,garrard,galligan,firth,fenderson,feinstein,etienne,engleman,emrick,ellender,drews,doiron,degraw,deegan,dart,crissman,corr,cookson,coil,cleaves,charest,chapple,chaparro,castano,carpio,byer,bufford,bridgewater,bridgers,brandes,borrero,bonanno,aube,ancheta,abarca,abad,wooster,wimbush,willhite,willams,wigley,weisberg,wardlaw,vigue,vanhook,unknow,torre,tasker,tarbox,strachan,slover,shamblin,semple,schuyler,schrimsher,sayer,salzman,rubalcava,riles,reneau,reichel,rayfield,rabon,pyatt,prindle,poss,polito,plemmons,pesce,perrault,pereyra,ostrowski,nilsen,niemeyer,munsey,mundell,moncada,miceli,meader,mcmasters,mckeehan,matsumoto,marron,marden,lizarraga,lingenfelter,lewallen,langan,lamanna,kovac,kinsler,kephart,keown,kass,kammerer,jeffreys,hysell,hosmer,hardnett,hanner,guyette,greening,glazer,ginder,fromm,fluellen,finkle,fessler,essary,eisele,duren,dittmer,crochet,cosentino,cogan,coelho,cavin,carrizales,campuzano,brough,bopp,bookman,bobb,blouin,beesley,battista,bascom,bakken,badgett,arneson,anselmo,albino,ahumada,woodyard,wolters,wireman,willison,warman,waldrup,vowell,vantassel,twombly,toomer,tennison,teets,tedeschi,swanner,stutz,stelly,sheehy,schermerhorn,scala,sandidge,salters,salo,saechao,roseboro,rolle,ressler,renz,renn,redford,raposa,rainbolt,pelfrey,orndorff,oney,nolin,nimmons,nardone,myhre,morman,menjivar,mcglone,mccammon,maxon,marciano,manus,lowrance,lorenzen,lonergan,lollis,littles,lindahl,lamas,lach,kuster,krawczyk,knuth,knecht,kirkendall,keitt,keever,kantor,jarboe,hoye,houchens,holter,holsinger,hickok,helwig,helgeson,hassett,harner,hamman,hames,hadfield,goree,goldfarb,gaughan,gaudreau,gantz,gallion,frady,foti,flesher,ferrin,faught,engram,donegan,desouza,degroot,cutright,crowl,criner,coan,clinkscales,chewning,chavira,catchings,carlock,bulger,buenrostro,bramblett,brack,boulware,bookout,bitner,birt,baranowski,baisden,allmon,acklin,yoakum,wilbourn,whisler,weinberger,washer,vasques,vanzandt,vanatta,troxler,tomes,tindle,tims,throckmorton,thach,stpeter,stlaurent,stenson,spry,spitz,songer,snavely,shroyer,shortridge,shenk,sevier,seabrook,scrivner,saltzman,rosenberry,rockwood,robeson,roan,reiser,ramires,raber,posner,popham,piotrowski,pinard,peterkin,pelham,peiffer,peay,nadler,musso,millett,mestas,mcgowen,marques,marasco,manriquez,manos,mair,lipps,leiker,krumm,knorr,kinslow,kessel,kendricks,kelm,irick,ickes,hurlburt,horta,hoekstra,heuer,helmuth,heatherly,hampson,hagar,haga,greenlaw,grau,godbey,gingras,gillies,gibb,gayden,gauvin,garrow,fontanez,florio,finke,fasano,ezzell,ewers,eveland,eckenrode,duclos,drumm,dimmick,delancey,defazio,dashiell,cusack,crowther,crigger,cray,coolidge,coldiron,cleland,chalfant,cassel,camire,cabrales,broomfield,brittingham,brisson,brickey,braziel,brazell,bragdon,boulanger,boman,bohannan,beem,barre,azar,ashbaugh,armistead,almazan,adamski,zendejas,winburn,willaims,wilhoit,westberry,wentzel,wendling,visser,vanscoy,vankirk,vallee,tweedy,thornberry,sweeny,spradling,spano,smelser,shim,sechrist,schall,scaife,rugg,rothrock,roesler,riehl,ridings,render,ransdell,radke,pinero,petree,pendergast,peluso,pecoraro,pascoe,panek,oshiro,navarrette,murguia,moores,moberg,michaelis,mcwhirter,mcsweeney,mcquade,mccay,mauk,mariani,marceau,mandeville,maeda,lunde,ludlow,loeb,lindo,linderman,leveille,leith,larock,lambrecht,kulp,kinsley,kimberlin,kesterson,hoyos,helfrich,hanke,grisby,goyette,gouveia,glazier,gile,gerena,gelinas,gasaway,funches,fujimoto,flynt,fenske,fellers,fehr,eslinger,escalera,enciso,duley,dittman,dineen,diller,devault,collings,clymer,clowers,chavers,charland,castorena,castello,camargo,bunce,bullen,boyes,borchers,borchardt,birnbaum,birdsall,billman,benites,bankhead,ange,ammerman,adkison,winegar,wickman,warr,warnke,villeneuve,veasey,vassallo,vannatta,vadnais,twilley,towery,tomblin,tippett,theiss,talkington,talamantes,swart,swanger,streit,stines,stabler,spurling,sobel,sine,simmers,shippy,shiflett,shearin,sauter,sanderlin,rusch,runkle,ruckman,rorie,roesch,richert,rehm,randel,ragin,quesenberry,puentes,plyler,plotkin,paugh,oshaughnessy,ohalloran,norsworthy,niemann,nader,moorefield,mooneyham,modica,miyamoto,mickel,mebane,mckinnie,mazurek,mancilla,lukas,lovins,loughlin,lotz,lindsley,liddle,levan,lederman,leclaire,lasseter,lapoint,lamoreaux,lafollette,kubiak,kirtley,keffer,kaczmarek,housman,hiers,hibbert,herrod,hegarty,hathorn,greenhaw,grafton,govea,futch,furst,franko,forcier,foran,flickinger,fairfield,eure,emrich,embrey,edgington,ecklund,eckard,durante,deyo,delvecchio,dade,currey,creswell,cottrill,casavant,cartier,cargile,capel,cammack,calfee,burse,burruss,brust,brousseau,bridwell,braaten,borkholder,bloomquist,bjork,bartelt,amburgey,yeary,whitefield,vinyard,vanvalkenburg,twitchell,timmins,tapper,stringham,starcher,spotts,slaugh,simonsen,sheffer,sequeira,rosati,rhymes,quint,pollak,peirce,patillo,parkerson,paiva,nilson,nevin,narcisse,mitton,merriam,merced,meiners,mckain,mcelveen,mcbeth,marsden,marez,manke,mahurin,mabrey,luper,krull,hunsicker,hornbuckle,holtzclaw,hinnant,heston,hering,hemenway,hegwood,hearns,halterman,guiterrez,grote,granillo,grainger,glasco,gilder,garren,garlock,garey,fryar,fredricks,fraizer,foshee,ferrel,felty,everitt,evens,esser,elkin,eberhart,durso,duguay,driskill,doster,dewall,deveau,demps,demaio,delreal,deleo,darrah,cumberbatch,culberson,cranmer,cordle,colgan,chesley,cavallo,castellon,castelli,carreras,carnell,carlucci,bontrager,blumberg,blasingame,becton,artrip,andujar,alkire,alder,zukowski,zuckerman,wroblewski,wrigley,woodside,wigginton,westman,westgate,werts,washam,wardlow,walser,waiters,tadlock,stringfield,stimpson,stickley,standish,spurlin,spindler,speller,spaeth,sotomayor,sluder,shryock,shepardson,shatley,scannell,santistevan,rosner,resto,reinhard,rathburn,prisco,poulsen,pinney,phares,pennock,pastrana,oviedo,ostler,nauman,mulford,moise,moberly,mirabal,metoyer,metheny,mentzer,meldrum,mcinturff,mcelyea,mcdougle,massaro,lumpkins,loveday,lofgren,lirette,lesperance,lefkowitz,ledger,lauzon,lachapelle,klassen,keough,kempton,kaelin,jeffords,hsieh,hoyer,horwitz,hoeft,hennig,haskin,gourdine,golightly,girouard,fulgham,fritsch,freer,frasher,foulk,firestone,fiorentino,fedor,ensley,englehart,eells,dunphy,donahoe,dileo,dibenedetto,dabrowski,crick,coonrod,conder,coddington,chunn,chaput,cerna,carreiro,calahan,braggs,bourdon,bollman,bittle,bauder,barreras,aubuchon,anzalone,adamo,zerbe,willcox,westberg,weikel,waymire,vroman,vinci,vallejos,truesdell,troutt,trotta,tollison,toles,tichenor,symonds,surles,strayer,stgeorge,sroka,sorrentino,solares,snelson,silvestri,sikorski,shawver,schumaker,schorr,schooley,scates,satterlee,satchell,rymer,roselli,robitaille,riegel,regis,reames,provenzano,priestley,plaisance,pettey,palomares,nowakowski,monette,minyard,mclamb,mchone,mccarroll,masson,magoon,maddy,lundin,licata,leonhardt,landwehr,kircher,kinch,karpinski,johannsen,hussain,houghtaling,hoskinson,hollaway,holeman,hobgood,hiebert,goggin,geissler,gadbois,gabaldon,fleshman,flannigan,fairman,eilers,dycus,dunmire,duffield,dowler,deloatch,dehaan,deemer,clayborn,christofferso,chilson,chesney,chatfield,carron,canale,brigman,branstetter,bosse,borton,bonar,biron,barroso,arispe,zacharias,zabel,yaeger,woolford,whetzel,weakley,veatch,vandeusen,tufts,troxel,troche,traver,townsel,talarico,swilley,sterrett,stenger,speakman,sowards,sours,souders,souder,soles,sobers,snoddy,smither,shute,shoaf,shahan,schuetz,scaggs,santini,rosson,rolen,robidoux,rentas,recio,pixley,pawlowski,pawlak,paull,overbey,orear,oliveri,oldenburg,nutting,naugle,mossman,misner,milazzo,michelson,mcentee,mccullar,mccree,mcaleer,mazzone,mandell,manahan,malott,maisonet,mailloux,lumley,lowrie,louviere,lipinski,lindemann,leppert,leasure,labarge,kubik,knisely,knepp,kenworthy,kennelly,kelch,kanter,houchin,hosley,hosler,hollon,holleman,heitman,haggins,gwaltney,goulding,gorden,geraci,gathers,frison,feagin,falconer,espada,erving,erikson,eisenhauer,ebeling,durgin,dowdle,dinwiddie,delcastillo,dedrick,crimmins,covell,cournoyer,coria,cohan,cataldo,carpentier,canas,campa,brode,brashears,blaser,bicknell,bednar,barwick,ascencio,althoff,almodovar,alamo,zirkle,zabala,wolverton,winebrenner,wetherell,westlake,wegener,weddington,tuten,trosclair,tressler,theroux,teske,swinehart,swensen,sundquist,southall,socha,sizer,silverberg,shortt,shimizu,sherrard,shaeffer,scheid,scheetz,saravia,sanner,rubinstein,rozell,romer,rheaume,reisinger,randles,pullum,petrella,payan,nordin,norcross,nicoletti,nicholes,newbold,nakagawa,monteith,milstead,milliner,mellen,mccardle,liptak,leitch,latimore,larrison,landau,laborde,koval,izquierdo,hymel,hoskin,holte,hoefer,hayworth,hausman,harrill,harrel,hardt,gully,groover,grinnell,greenspan,graver,grandberry,gorrell,goldenberg,goguen,gilleland,fuson,feldmann,everly,dyess,dunnigan,downie,dolby,deatherage,cosey,cheever,celaya,caver,cashion,caplinger,cansler,byrge,bruder,breuer,breslin,brazelton,botkin,bonneau,bondurant,bohanan,bogue,bodner,boatner,blatt,bickley,belliveau,beiler,beier,beckstead,bachmann,atkin,altizer,alloway,allaire,albro,abron,zellmer,yetter,yelverton,wiens,whidden,viramontes,vanwormer,tarantino,tanksley,sumlin,strauch,strang,stice,spahn,sosebee,sigala,shrout,seamon,schrum,schneck,schantz,ruddy,romig,roehl,renninger,reding,polak,pohlman,pasillas,oldfield,oldaker,ohanlon,ogilvie,norberg,nolette,neufeld,nellis,mummert,mulvihill,mullaney,monteleone,mendonca,meisner,mcmullan,mccluney,mattis,massengill,manfredi,luedtke,lounsbury,liberatore,lamphere,laforge,jourdan,iorio,iniguez,ikeda,hubler,hodgdon,hocking,heacock,haslam,haralson,hanshaw,hannum,hallam,haden,garnes,garces,gammage,gambino,finkel,faucett,ehrhardt,eggen,dusek,durrant,dubay,dones,depasquale,delucia,degraff,decamp,davalos,cullins,conard,clouser,clontz,cifuentes,chappel,chaffins,celis,carwile,byram,bruggeman,bressler,brathwaite,brasfield,bradburn,boose,bodie,blosser,bertsch,bernardi,bernabe,bengtson,barrette,astorga,alday,albee,abrahamson,yarnell,wiltse,wiebe,waguespack,vasser,upham,turek,traxler,torain,tomaszewski,tinnin,tiner,tindell,styron,stahlman,staab,skiba,sheperd,seidl,secor,schutte,sanfilippo,ruder,rondon,rearick,procter,prochaska,pettengill,pauly,neilsen,nally,mullenax,morano,meads,mcnaughton,mcmurtry,mcmath,mckinsey,matthes,massenburg,marlar,margolis,malin,magallon,mackin,lovette,loughran,loring,longstreet,loiselle,lenihan,kunze,koepke,kerwin,kalinowski,kagan,innis,innes,holtzman,heinemann,harshman,haider,haack,grondin,grissett,greenawalt,goudy,goodlett,goldston,gokey,gardea,galaviz,gafford,gabrielson,furlow,fritch,fordyce,folger,elizalde,ehlert,eckhoff,eccleston,ealey,dubin,diemer,deschamps,delapena,decicco,debolt,cullinan,crittendon,crase,cossey,coppock,coots,colyer,cluck,chamberland,burkhead,bumpus,buchan,borman,birkholz,berardi,benda,behnke,barter,amezquita,wotring,wirtz,wingert,wiesner,whitesides,weyant,wainscott,venezia,varnell,tussey,thurlow,tabares,stiver,stell,starke,stanhope,stanek,sisler,sinnott,siciliano,shehan,selph,seager,scurlock,scranton,santucci,santangelo,saltsman,rogge,rettig,renwick,reidy,reider,redfield,premo,parente,paolucci,palmquist,ohler,netherton,mutchler,morita,mistretta,minnis,middendorf,menzel,mendosa,mendelson,meaux,mcspadden,mcquaid,mcnatt,manigault,maney,mager,lukes,lopresti,liriano,letson,lechuga,lazenby,lauria,larimore,krupp,krupa,kopec,kinchen,kifer,kerney,kerner,kennison,kegley,karcher,justis,johson,jellison,janke,huskins,holzman,hinojos,hefley,hatmaker,harte,halloway,hallenbeck,goodwyn,glaspie,geise,fullwood,fryman,frakes,fraire,farrer,enlow,engen,ellzey,eckles,earles,dunkley,drinkard,dreiling,draeger,dinardo,dills,desroches,desantiago,curlee,crumbley,critchlow,coury,courtright,coffield,cleek,charpentier,cardone,caples,cantin,buntin,bugbee,brinkerhoff,brackin,bourland,blassingame,beacham,banning,auguste,andreasen,amann,almon,alejo,adelman,abston,yerger,wymer,woodberry,windley,whiteaker,westfield,weibel,wanner,waldrep,villani,vanarsdale,utterback,updike,triggs,topete,tolar,tigner,thoms,tauber,tarvin,tally,swiney,sweatman,studebaker,stennett,starrett,stannard,stalvey,sonnenberg,smithey,sieber,sickles,shinault,segars,sanger,salmeron,rothe,rizzi,restrepo,ralls,ragusa,quiroga,papenfuss,oropeza,okane,mudge,mozingo,molinaro,mcvicker,mcgarvey,mcfalls,mccraney,matus,magers,llanos,livermore,linehan,leitner,laymon,lawing,lacourse,kwong,kollar,kneeland,kennett,kellett,kangas,janzen,hutter,huling,hofmeister,hewes,harjo,habib,guice,grullon,greggs,grayer,granier,grable,gowdy,giannini,getchell,gartman,garnica,ganey,gallimore,fetters,fergerson,farlow,fagundes,exley,esteves,enders,edenfield,easterwood,drakeford,dipasquale,desousa,deshields,deeter,dedmon,debord,daughtery,cutts,courtemanche,coursey,copple,coomes,collis,cogburn,clopton,choquette,chaidez,castrejon,calhoon,burbach,bulloch,buchman,bruhn,bohon,blough,baynes,barstow,zeman,zackery,yardley,yamashita,wulff,wilken,wiliams,wickersham,wible,whipkey,wedgeworth,walmsley,walkup,vreeland,verrill,umana,traub,swingle,summey,stroupe,stockstill,steffey,stefanski,statler,stapp,speights,solari,soderberg,shunk,shorey,shewmaker,sheilds,schiffer,schank,schaff,sagers,rochon,riser,rickett,reale,raglin,polen,plata,pitcock,percival,palen,orona,oberle,nocera,navas,nault,mullings,montejano,monreal,minick,middlebrook,meece,mcmillion,mccullen,mauck,marshburn,maillet,mahaney,magner,maclin,lucey,litteral,lippincott,leite,leaks,lamarre,jurgens,jerkins,jager,hurwitz,hughley,hotaling,horstman,hohman,hocker,hively,hipps,hessler,hermanson,hepworth,helland,hedlund,harkless,haigler,gutierez,grindstaff,glantz,giardina,gerken,gadsden,finnerty,farnum,encinas,drakes,dennie,cutlip,curtsinger,couto,cortinas,corby,chiasson,carle,carballo,brindle,borum,bober,blagg,berthiaume,beahm,batres,basnight,backes,axtell,atterberry,alvares,alegria,woodell,wojciechowski,winfree,winbush,wiest,wesner,wamsley,wakeman,verner,truex,trafton,toman,thorsen,theus,tellier,tallant,szeto,strope,stills,simkins,shuey,shaul,servin,serio,serafin,salguero,ryerson,rudder,ruark,rother,rohrbaugh,rohrbach,rohan,rogerson,risher,reeser,pryce,prokop,prins,priebe,prejean,pinheiro,petrone,petri,penson,pearlman,parikh,natoli,murakami,mullikin,mullane,motes,morningstar,mcveigh,mcgrady,mcgaughey,mccurley,marchan,manske,lusby,linde,likens,licon,leroux,lemaire,legette,laskey,laprade,laplant,kolar,kittredge,kinley,kerber,kanagy,jetton,janik,ippolito,inouye,hunsinger,howley,howery,horrell,holthaus,hiner,hilson,hilderbrand,hartzler,harnish,harada,hansford,halligan,hagedorn,gwynn,gudino,greenstein,greear,gracey,goudeau,goodner,ginsburg,gerth,gerner,fujii,frier,frenette,folmar,fleisher,fleischmann,fetzer,eisenman,earhart,dupuy,dunkelberger,drexler,dillinger,dilbeck,dewald,demby,deford,craine,chesnut,casady,carstens,carrick,carino,carignan,canchola,bushong,burman,buono,brownlow,broach,britten,brickhouse,boyden,boulton,borland,bohrer,blubaugh,bever,berggren,benevides,arocho,arends,amezcua,almendarez,zalewski,witzel,winkfield,wilhoite,vangundy,vanfleet,vanetten,vandergriff,urbanski,troiano,thibodaux,straus,stoneking,stjean,stillings,stange,speicher,speegle,smeltzer,slawson,simmonds,shuttleworth,serpa,senger,seidman,schweiger,schloss,schimmel,schechter,sayler,sabatini,ronan,rodiguez,riggleman,richins,reamer,prunty,porath,plunk,piland,philbrook,pettitt,perna,peralez,pascale,padula,oboyle,nivens,nickols,mundt,munden,montijo,mcmanis,mcgrane,mccrimmon,manzi,mangold,malick,mahar,maddock,losey,litten,leedy,leavell,ladue,krahn,kluge,junker,iversen,imler,hurtt,huizar,hubbert,howington,hollomon,holdren,hoisington,heiden,hauge,hartigan,gutirrez,griffie,greenhill,gratton,granata,gottfried,gertz,gautreaux,furry,furey,funderburg,flippen,fitzgibbon,drucker,donoghue,dildy,devers,detweiler,despres,denby,degeorge,cueto,cranston,courville,clukey,cirillo,chivers,caudillo,butera,bulluck,buckmaster,braunstein,bracamonte,bourdeau,bonnette\".split(\",\"),\n        us_tv_and_film:\"you,i,to,that,it,me,what,this,know,i'm,no,have,my,don't,just,not,do,be,your,we,it's,so,but,all,well,oh,about,right,you're,get,here,out,going,like,yeah,if,can,up,want,think,that's,now,go,him,how,got,did,why,see,come,good,really,look,will,okay,back,can't,mean,tell,i'll,hey,he's,could,didn't,yes,something,because,say,take,way,little,make,need,gonna,never,we're,too,she's,i've,sure,our,sorry,what's,let,thing,maybe,down,man,very,there's,should,anything,said,much,any,even,off,please,doing,thank,give,thought,help,talk,god,still,wait,find,nothing,again,things,let's,doesn't,call,told,great,better,ever,night,away,believe,feel,everything,you've,fine,last,keep,does,put,around,stop,they're,i'd,guy,isn't,always,listen,wanted,guys,huh,those,big,lot,happened,thanks,won't,trying,kind,wrong,talking,guess,care,bad,mom,remember,getting,we'll,together,dad,leave,understand,wouldn't,actually,hear,baby,nice,father,else,stay,done,wasn't,course,might,mind,every,enough,try,hell,came,someone,you'll,whole,yourself,idea,ask,must,coming,looking,woman,room,knew,tonight,real,son,hope,went,hmm,happy,pretty,saw,girl,sir,friend,already,saying,next,job,problem,minute,thinking,haven't,heard,honey,matter,myself,couldn't,exactly,having,probably,happen,we've,hurt,boy,dead,gotta,alone,excuse,start,kill,hard,you'd,today,car,ready,without,wants,hold,wanna,yet,seen,deal,once,gone,morning,supposed,friends,head,stuff,worry,live,truth,face,forget,true,cause,soon,knows,telling,wife,who's,chance,run,move,anyone,person,bye,somebody,heart,miss,making,meet,anyway,phone,reason,damn,lost,looks,bring,case,turn,wish,tomorrow,kids,trust,check,change,anymore,least,aren't,working,makes,taking,means,brother,hate,ago,says,beautiful,gave,fact,crazy,sit,afraid,important,rest,fun,kid,word,watch,glad,everyone,sister,minutes,everybody,bit,couple,whoa,either,mrs,feeling,daughter,wow,gets,asked,break,promise,door,close,hand,easy,question,tried,far,walk,needs,mine,killed,hospital,anybody,alright,wedding,shut,able,die,perfect,stand,comes,hit,waiting,dinner,funny,husband,almost,pay,answer,cool,eyes,news,child,shouldn't,yours,moment,sleep,read,where's,sounds,sonny,pick,sometimes,bed,date,plan,hours,lose,hands,serious,shit,behind,inside,ahead,week,wonderful,fight,past,cut,quite,he'll,sick,it'll,eat,nobody,goes,save,seems,finally,lives,worried,upset,carly,met,brought,seem,sort,safe,weren't,leaving,front,shot,loved,asking,running,clear,figure,hot,felt,parents,drink,absolutely,how's,daddy,sweet,alive,sense,meant,happens,bet,blood,ain't,kidding,lie,meeting,dear,seeing,sound,fault,ten,buy,hour,speak,lady,jen,thinks,christmas,outside,hang,possible,worse,mistake,ooh,handle,spend,totally,giving,here's,marriage,realize,unless,sex,send,needed,scared,picture,talked,ass,hundred,changed,completely,explain,certainly,sign,boys,relationship,loves,hair,lying,choice,anywhere,future,weird,luck,she'll,turned,touch,kiss,crane,questions,obviously,wonder,pain,calling,somewhere,throw,straight,cold,fast,words,food,none,drive,feelings,they'll,marry,drop,cannot,dream,protect,twenty,surprise,sweetheart,poor,looked,mad,except,gun,y'know,dance,takes,appreciate,especially,situation,besides,pull,hasn't,worth,sheridan,amazing,expect,swear,piece,busy,happening,movie,we'd,catch,perhaps,step,fall,watching,kept,darling,dog,honor,moving,till,admit,problems,murder,he'd,evil,definitely,feels,honest,eye,broke,missed,longer,dollars,tired,evening,starting,entire,trip,niles,suppose,calm,imagine,fair,caught,blame,sitting,favor,apartment,terrible,clean,learn,frasier,relax,accident,wake,prove,smart,message,missing,forgot,interested,table,nbsp,mouth,pregnant,ring,careful,shall,dude,ride,figured,wear,shoot,stick,follow,angry,write,stopped,ran,standing,forgive,jail,wearing,ladies,kinda,lunch,cristian,greenlee,gotten,hoping,phoebe,thousand,ridge,paper,tough,tape,count,boyfriend,proud,agree,birthday,they've,share,offer,hurry,feet,wondering,decision,ones,finish,voice,herself,would've,mess,deserve,evidence,cute,dress,interesting,hotel,enjoy,quiet,concerned,staying,beat,sweetie,mention,clothes,fell,neither,mmm,fix,respect,prison,attention,holding,calls,surprised,bar,keeping,gift,hadn't,putting,dark,owe,ice,helping,normal,aunt,lawyer,apart,plans,jax,girlfriend,floor,whether,everything's,box,judge,upstairs,sake,mommy,possibly,worst,acting,accept,blow,strange,saved,conversation,plane,mama,yesterday,lied,quick,lately,stuck,difference,store,she'd,bought,doubt,listening,walking,cops,deep,dangerous,buffy,sleeping,chloe,rafe,join,card,crime,gentlemen,willing,window,walked,guilty,likes,fighting,difficult,soul,joke,favorite,uncle,promised,bother,seriously,cell,knowing,broken,advice,somehow,paid,losing,push,helped,killing,boss,liked,innocent,rules,learned,thirty,risk,letting,speaking,ridiculous,afternoon,apologize,nervous,charge,patient,boat,how'd,hide,detective,planning,huge,breakfast,horrible,awful,pleasure,driving,hanging,picked,sell,quit,apparently,dying,notice,congratulations,visit,could've,c'mon,letter,decide,forward,fool,showed,smell,seemed,spell,memory,pictures,slow,seconds,hungry,hearing,kitchen,ma'am,should've,realized,kick,grab,discuss,fifty,reading,idiot,suddenly,agent,destroy,bucks,shoes,peace,arms,demon,livvie,consider,papers,incredible,witch,drunk,attorney,tells,knock,ways,gives,nose,skye,turns,keeps,jealous,drug,sooner,cares,plenty,extra,outta,weekend,matters,gosh,opportunity,impossible,waste,pretend,jump,eating,proof,slept,arrest,breathe,perfectly,warm,pulled,twice,easier,goin,dating,suit,romantic,drugs,comfortable,finds,checked,divorce,begin,ourselves,closer,ruin,smile,laugh,treat,fear,what'd,otherwise,excited,mail,hiding,stole,pacey,noticed,fired,excellent,bringing,bottom,note,sudden,bathroom,honestly,sing,foot,remind,charges,witness,finding,tree,dare,hardly,that'll,steal,silly,contact,teach,shop,plus,colonel,fresh,trial,invited,roll,reach,dirty,choose,emergency,dropped,butt,credit,obvious,locked,loving,nuts,agreed,prue,goodbye,condition,guard,fuckin,grow,cake,mood,crap,crying,belong,partner,trick,pressure,dressed,taste,neck,nurse,raise,lots,carry,whoever,drinking,they'd,breaking,file,lock,wine,spot,paying,assume,asleep,turning,viki,bedroom,shower,nikolas,camera,fill,reasons,forty,bigger,nope,breath,doctors,pants,freak,movies,folks,cream,wild,truly,desk,convince,client,threw,hurts,spending,answers,shirt,chair,rough,doin,sees,ought,empty,wind,aware,dealing,pack,tight,hurting,guest,arrested,salem,confused,surgery,expecting,deacon,unfortunately,goddamn,bottle,beyond,whenever,pool,opinion,starts,jerk,secrets,falling,necessary,barely,dancing,tests,copy,cousin,ahem,twelve,tess,skin,fifteen,speech,orders,complicated,nowhere,escape,biggest,restaurant,grateful,usual,burn,address,someplace,screw,everywhere,regret,goodness,mistakes,details,responsibility,suspect,corner,hero,dumb,terrific,whoo,hole,memories,o'clock,teeth,ruined,bite,stenbeck,liar,showing,cards,desperate,search,pathetic,spoke,scare,marah,afford,settle,stayed,checking,hired,heads,concern,blew,alcazar,champagne,connection,tickets,happiness,saving,kissing,hated,personally,suggest,prepared,onto,downstairs,ticket,it'd,loose,holy,duty,convinced,throwing,kissed,legs,loud,saturday,babies,where'd,warning,miracle,carrying,blind,ugly,shopping,hates,sight,bride,coat,clearly,celebrate,brilliant,wanting,forrester,lips,custody,screwed,buying,toast,thoughts,reality,lexie,attitude,advantage,grandfather,sami,grandma,someday,roof,marrying,powerful,grown,grandmother,fake,must've,ideas,exciting,familiar,bomb,bout,harmony,schedule,capable,practically,correct,clue,forgotten,appointment,deserves,threat,bloody,lonely,shame,jacket,hook,scary,investigation,invite,shooting,lesson,criminal,victim,funeral,considering,burning,strength,harder,sisters,pushed,shock,pushing,heat,chocolate,miserable,corinthos,nightmare,brings,zander,crash,chances,sending,recognize,healthy,boring,feed,engaged,headed,treated,knife,drag,badly,hire,paint,pardon,behavior,closet,warn,gorgeous,milk,survive,ends,dump,rent,remembered,thanksgiving,rain,revenge,prefer,spare,pray,disappeared,aside,statement,sometime,meat,fantastic,breathing,laughing,stood,affair,ours,depends,protecting,jury,brave,fingers,murdered,explanation,picking,blah,stronger,handsome,unbelievable,anytime,shake,oakdale,wherever,pulling,facts,waited,lousy,circumstances,disappointed,weak,trusted,license,nothin,trash,understanding,slip,sounded,awake,friendship,stomach,weapon,threatened,mystery,vegas,understood,basically,switch,frankly,cheap,lifetime,deny,clock,garbage,why'd,tear,ears,indeed,changing,singing,tiny,decent,avoid,messed,filled,touched,disappear,exact,pills,kicked,harm,fortune,pretending,insurance,fancy,drove,cared,belongs,nights,lorelai,lift,timing,guarantee,chest,woke,burned,watched,heading,selfish,drinks,doll,committed,elevator,freeze,noise,wasting,ceremony,uncomfortable,staring,files,bike,stress,permission,thrown,possibility,borrow,fabulous,doors,screaming,bone,xander,what're,meal,apology,anger,honeymoon,bail,parking,fixed,wash,stolen,sensitive,stealing,photo,chose,lets,comfort,worrying,pocket,mateo,bleeding,shoulder,ignore,talent,tied,garage,dies,demons,dumped,witches,rude,crack,bothering,radar,soft,meantime,gimme,kinds,fate,concentrate,throat,prom,messages,intend,ashamed,somethin,manage,guilt,interrupt,guts,tongue,shoe,basement,sentence,purse,glasses,cabin,universe,repeat,mirror,wound,travers,tall,engagement,therapy,emotional,jeez,decisions,soup,thrilled,stake,chef,moves,extremely,moments,expensive,counting,shots,kidnapped,cleaning,shift,plate,impressed,smells,trapped,aidan,knocked,charming,attractive,argue,puts,whip,embarrassed,package,hitting,bust,stairs,alarm,pure,nail,nerve,incredibly,walks,dirt,stamp,terribly,friendly,damned,jobs,suffering,disgusting,stopping,deliver,riding,helps,disaster,bars,crossed,trap,talks,eggs,chick,threatening,spoken,introduce,confession,embarrassing,bags,impression,gate,reputation,presents,chat,suffer,argument,talkin,crowd,homework,coincidence,cancel,pride,solve,hopefully,pounds,pine,mate,illegal,generous,outfit,maid,bath,punch,freaked,begging,recall,enjoying,prepare,wheel,defend,signs,painful,yourselves,maris,that'd,suspicious,cooking,button,warned,sixty,pity,yelling,awhile,confidence,offering,pleased,panic,hers,gettin,refuse,grandpa,testify,choices,cruel,mental,gentleman,coma,cutting,proteus,guests,expert,benefit,faces,jumped,toilet,sneak,halloween,privacy,smoking,reminds,twins,swing,solid,options,commitment,crush,ambulance,wallet,gang,eleven,option,laundry,assure,stays,skip,fail,discussion,clinic,betrayed,sticking,bored,mansion,soda,sheriff,suite,handled,busted,load,happier,studying,romance,procedure,commit,assignment,suicide,minds,swim,yell,llanview,chasing,proper,believes,humor,hopes,lawyers,giant,latest,escaped,parent,tricks,insist,dropping,cheer,medication,flesh,routine,sandwich,handed,false,beating,warrant,awfully,odds,treating,thin,suggesting,fever,sweat,silent,clever,sweater,mall,sharing,assuming,judgment,goodnight,divorced,surely,steps,confess,math,listened,comin,answered,vulnerable,bless,dreaming,chip,zero,pissed,nate,kills,tears,knees,chill,brains,unusual,packed,dreamed,cure,lookin,grave,cheating,breaks,locker,gifts,awkward,thursday,joking,reasonable,dozen,curse,quartermaine,millions,dessert,rolling,detail,alien,delicious,closing,vampires,wore,tail,secure,salad,murderer,spit,offense,dust,conscience,bread,answering,lame,invitation,grief,smiling,pregnancy,prisoner,delivery,guards,virus,shrink,freezing,wreck,massimo,wire,technically,blown,anxious,cave,holidays,cleared,wishes,caring,candles,bound,charm,pulse,jumping,jokes,boom,occasion,silence,nonsense,frightened,slipped,dimera,blowing,relationships,kidnapping,spin,tool,roxy,packing,blaming,wrap,obsessed,fruit,torture,personality,there'll,fairy,necessarily,seventy,print,motel,underwear,grams,exhausted,believing,freaking,carefully,trace,touching,messing,recovery,intention,consequences,belt,sacrifice,courage,enjoyed,attracted,remove,testimony,intense,heal,defending,unfair,relieved,loyal,slowly,buzz,alcohol,surprises,psychiatrist,plain,attic,who'd,uniform,terrified,cleaned,zach,threaten,fella,enemies,satisfied,imagination,hooked,headache,forgetting,counselor,andie,acted,badge,naturally,frozen,sakes,appropriate,trunk,dunno,costume,sixteen,impressive,kicking,junk,grabbed,understands,describe,clients,owns,affect,witnesses,starving,instincts,happily,discussing,deserved,strangers,surveillance,admire,questioning,dragged,barn,deeply,wrapped,wasted,tense,hoped,fellas,roommate,mortal,fascinating,stops,arrangements,agenda,literally,propose,honesty,underneath,sauce,promises,lecture,eighty,torn,shocked,backup,differently,ninety,deck,biological,pheebs,ease,creep,waitress,telephone,ripped,raising,scratch,rings,prints,thee,arguing,ephram,asks,oops,diner,annoying,taggert,sergeant,blast,towel,clown,habit,creature,bermuda,snap,react,paranoid,handling,eaten,therapist,comment,sink,reporter,nurses,beats,priority,interrupting,warehouse,loyalty,inspector,pleasant,excuses,threats,guessing,tend,praying,motive,unconscious,mysterious,unhappy,tone,switched,rappaport,sookie,neighbor,loaded,swore,piss,balance,toss,misery,thief,squeeze,lobby,goa'uld,geez,exercise,forth,booked,sandburg,poker,eighteen,d'you,bury,everyday,digging,creepy,wondered,liver,hmmm,magical,fits,discussed,moral,helpful,searching,flew,depressed,aisle,cris,amen,vows,neighbors,darn,cents,arrange,annulment,useless,adventure,resist,fourteen,celebrating,inch,debt,violent,sand,teal'c,celebration,reminded,phones,paperwork,emotions,stubborn,pound,tension,stroke,steady,overnight,chips,beef,suits,boxes,cassadine,collect,tragedy,spoil,realm,wipe,surgeon,stretch,stepped,nephew,neat,limo,confident,perspective,climb,punishment,finest,springfield,hint,furniture,blanket,twist,proceed,fries,worries,niece,gloves,soap,signature,disappoint,crawl,convicted,flip,counsel,doubts,crimes,accusing,shaking,remembering,hallway,halfway,bothered,madam,gather,cameras,blackmail,symptoms,rope,ordinary,imagined,cigarette,supportive,explosion,trauma,ouch,furious,cheat,avoiding,whew,thick,oooh,boarding,approve,urgent,shhh,misunderstanding,drawer,phony,interfere,catching,bargain,tragic,respond,punish,penthouse,thou,rach,ohhh,insult,bugs,beside,begged,absolute,strictly,socks,senses,sneaking,reward,polite,checks,tale,physically,instructions,fooled,blows,tabby,bitter,adorable,y'all,tested,suggestion,jewelry,alike,jacks,distracted,shelter,lessons,constable,circus,audition,tune,shoulders,mask,helpless,feeding,explains,sucked,robbery,objection,behave,valuable,shadows,courtroom,confusing,talented,smarter,mistaken,customer,bizarre,scaring,motherfucker,alert,vecchio,reverend,foolish,compliment,bastards,worker,wheelchair,protective,gentle,reverse,picnic,knee,cage,wives,wednesday,voices,toes,stink,scares,pour,cheated,slide,ruining,filling,exit,cottage,upside,proves,parked,diary,complaining,confessed,pipe,merely,massage,chop,spill,prayer,betray,waiter,scam,rats,fraud,brush,tables,sympathy,pill,filthy,seventeen,employee,bracelet,pays,fairly,deeper,arrive,tracking,spite,shed,recommend,oughta,nanny,menu,diet,corn,roses,patch,dime,devastated,subtle,bullets,beans,pile,confirm,strings,parade,borrowed,toys,straighten,steak,premonition,planted,honored,exam,convenient,traveling,laying,insisted,dish,aitoro,kindly,grandson,donor,temper,teenager,proven,mothers,denial,backwards,tent,swell,noon,happiest,drives,thinkin,spirits,potion,holes,fence,whatsoever,rehearsal,overheard,lemme,hostage,bench,tryin,taxi,shove,moron,impress,needle,intelligent,instant,disagree,stinks,rianna,recover,groom,gesture,constantly,bartender,suspects,sealed,legally,hears,dresses,sheet,psychic,teenage,knocking,judging,accidentally,waking,rumor,manners,homeless,hollow,desperately,tapes,referring,item,genoa,gear,majesty,cried,tons,spells,instinct,quote,motorcycle,convincing,fashioned,aids,accomplished,grip,bump,upsetting,needing,invisible,forgiveness,feds,compare,bothers,tooth,inviting,earn,compromise,cocktail,tramp,jabot,intimate,dignity,dealt,souls,informed,gods,dressing,cigarettes,alistair,leak,fond,corky,seduce,liquor,fingerprints,enchantment,butters,stuffed,stavros,emotionally,transplant,tips,oxygen,nicely,lunatic,drill,complain,announcement,unfortunate,slap,prayers,plug,opens,oath,o'neill,mutual,yacht,remembers,fried,extraordinary,bait,warton,sworn,stare,safely,reunion,burst,might've,dive,aboard,expose,buddies,trusting,booze,sweep,sore,scudder,properly,parole,ditch,canceled,speaks,glow,wears,thirsty,skull,ringing,dorm,dining,bend,unexpected,pancakes,harsh,flattered,ahhh,troubles,fights,favourite,eats,rage,undercover,spoiled,sloane,shine,destroying,deliberately,conspiracy,thoughtful,sandwiches,plates,nails,miracles,fridge,drank,contrary,beloved,allergic,washed,stalking,solved,sack,misses,forgiven,bent,maciver,involve,dragging,cooked,pointing,foul,dull,beneath,heels,faking,deaf,stunt,jealousy,hopeless,fears,cuts,scenario,necklace,crashed,accuse,restraining,homicide,helicopter,firing,safer,auction,videotape,tore,reservations,pops,appetite,wounds,vanquish,ironic,fathers,excitement,anyhow,tearing,sends,rape,laughed,belly,dealer,cooperate,accomplish,wakes,spotted,sorts,reservation,ashes,tastes,supposedly,loft,intentions,integrity,wished,towels,suspected,investigating,inappropriate,lipstick,lawn,compassion,cafeteria,scarf,precisely,obsession,loses,lighten,infection,granddaughter,explode,balcony,this'll,spying,publicity,depend,cracked,conscious,ally,absurd,vicious,invented,forbid,directions,defendant,bare,announce,screwing,salesman,robbed,leap,lakeview,insanity,reveal,possibilities,kidnap,gown,chairs,wishing,setup,punished,criminals,regrets,raped,quarters,lamp,dentist,anyways,anonymous,semester,risks,owes,lungs,explaining,delicate,tricked,eager,doomed,adoption,stab,sickness,scum,floating,envelope,vault,sorel,pretended,potatoes,plea,photograph,payback,misunderstood,kiddo,healing,cascade,capeside,stabbed,remarkable,brat,privilege,passionate,nerves,lawsuit,kidney,disturbed,cozy,tire,shirts,oven,ordering,delay,risky,monsters,honorable,grounded,closest,breakdown,bald,abandon,scar,collar,worthless,sucking,enormous,disturbing,disturb,distract,deals,conclusions,vodka,dishes,crawling,briefcase,wiped,whistle,sits,roast,rented,pigs,flirting,deposit,bottles,topic,riot,overreacting,logical,hostile,embarrass,casual,beacon,amusing,altar,claus,survival,skirt,shave,porch,ghosts,favors,drops,dizzy,chili,advise,strikes,rehab,photographer,peaceful,leery,heavens,fortunately,fooling,expectations,cigar,weakness,ranch,practicing,examine,cranes,bribe,sail,prescription,hush,fragile,forensics,expense,drugged,cows,bells,visitor,suitcase,sorta,scan,manticore,insecure,imagining,hardest,clerk,wrist,what'll,starters,silk,pump,pale,nicer,haul,flies,boot,thumb,there'd,how're,elders,quietly,pulls,idiots,erase,denying,ankle,amnesia,accepting,heartbeat,devane,confront,minus,legitimate,fixing,arrogant,tuna,supper,slightest,sins,sayin,recipe,pier,paternity,humiliating,genuine,snack,rational,minded,guessed,weddings,tumor,humiliated,aspirin,spray,picks,eyed,drowning,contacts,ritual,perfume,hiring,hating,docks,creatures,visions,thanking,thankful,sock,nineteen,fork,throws,teenagers,stressed,slice,rolls,plead,ladder,kicks,detectives,assured,tellin,shallow,responsibilities,repay,howdy,girlfriends,deadly,comforting,ceiling,verdict,insensitive,spilled,respected,messy,interrupted,halliwell,blond,bleed,wardrobe,takin,murders,backs,underestimate,justify,harmless,frustrated,fold,enzo,communicate,bugging,arson,whack,salary,rumors,obligation,liking,dearest,congratulate,vengeance,rack,puzzle,fires,courtesy,caller,blamed,tops,quiz,prep,curiosity,circles,barbecue,sunnydale,spinning,psychotic,cough,accusations,resent,laughs,freshman,envy,drown,bartlet,asses,sofa,poster,highness,dock,apologies,theirs,stat,stall,realizes,psych,mmmm,fools,understandable,treats,succeed,stir,relaxed,makin,gratitude,faithful,accent,witter,wandering,locate,inevitable,gretel,deed,crushed,controlling,smelled,robe,gossip,gambling,cosmetics,accidents,surprising,stiff,sincere,rushed,refrigerator,preparing,nightmares,mijo,ignoring,hunch,fireworks,drowned,brass,whispering,sophisticated,luggage,hike,explore,emotion,crashing,contacted,complications,shining,rolled,righteous,reconsider,goody,geek,frightening,ethics,creeps,courthouse,camping,affection,smythe,haircut,essay,baked,apologized,vibe,respects,receipt,mami,hats,destructive,adore,adopt,tracked,shorts,reminding,dough,creations,cabot,barrel,snuck,slight,reporters,pressing,magnificent,madame,lazy,glorious,fiancee,bits,visitation,sane,kindness,shoulda,rescued,mattress,lounge,lifted,importantly,glove,enterprises,disappointment,condo,beings,admitting,yelled,waving,spoon,screech,satisfaction,reads,nailed,worm,tick,resting,marvelous,fuss,cortlandt,chased,pockets,luckily,lilith,filing,conversations,consideration,consciousness,worlds,innocence,forehead,aggressive,trailer,slam,quitting,inform,delighted,daylight,danced,confidential,aunts,washing,tossed,spectra,marrow,lined,implying,hatred,grill,corpse,clues,sober,offended,morgue,infected,humanity,distraction,cart,wired,violation,promising,harassment,glue,d'angelo,cursed,brutal,warlocks,wagon,unpleasant,proving,priorities,mustn't,lease,flame,disappearance,depressing,thrill,sitter,ribs,flush,earrings,deadline,corporal,collapsed,update,snapped,smack,melt,figuring,delusional,coulda,burnt,tender,sperm,realise,pork,popped,interrogation,esteem,choosing,undo,pres,prayed,plague,manipulate,insulting,detention,delightful,coffeehouse,betrayal,apologizing,adjust,wrecked,wont,whipped,rides,reminder,monsieur,faint,bake,distress,correctly,complaint,blocked,tortured,risking,pointless,handing,dumping,cups,alibi,struggling,shiny,risked,mummy,mint,hose,hobby,fortunate,fleischman,fitting,curtain,counseling,rode,puppet,modeling,memo,irresponsible,humiliation,hiya,freakin,felony,choke,blackmailing,appreciated,tabloid,suspicion,recovering,pledge,panicked,nursery,louder,jeans,investigator,homecoming,frustrating,buys,busting,buff,sleeve,irony,dope,declare,autopsy,workin,torch,prick,limb,hysterical,goddamnit,fetch,dimension,crowded,clip,climbing,bonding,woah,trusts,negotiate,lethal,iced,fantasies,deeds,bore,babysitter,questioned,outrageous,kiriakis,insulted,grudge,driveway,deserted,definite,beep,wires,suggestions,searched,owed,lend,drunken,demanding,costanza,conviction,bumped,weigh,touches,tempted,shout,resolve,relate,poisoned,meals,invitations,haunted,bogus,autograph,affects,tolerate,stepping,spontaneous,sleeps,probation,manny,fist,spectacular,hostages,heroin,havin,habits,encouraging,consult,burgers,boyfriends,bailed,baggage,watches,troubled,torturing,teasing,sweetest,qualities,postpone,overwhelmed,malkovich,impulse,classy,charging,amazed,policeman,hypocrite,humiliate,hideous,d'ya,costumes,bluffing,betting,bein,bedtime,alcoholic,vegetable,tray,suspicions,spreading,splendid,shrimp,shouting,pressed,nooo,grieving,gladly,fling,eliminate,cereal,aaah,sonofabitch,paralyzed,lotta,locks,guaranteed,dummy,despise,dental,briefing,bluff,batteries,whatta,sounding,servants,presume,handwriting,fainted,dried,allright,acknowledge,whacked,toxic,reliable,quicker,overwhelming,lining,harassing,fatal,endless,dolls,convict,whatcha,unlikely,shutting,positively,overcome,goddam,essence,dose,diagnosis,cured,bully,ahold,yearbook,tempting,shelf,prosecution,pouring,possessed,greedy,wonders,thorough,spine,rath,psychiatric,meaningless,latte,jammed,ignored,fiance,evidently,contempt,compromised,cans,weekends,urge,theft,suing,shipment,scissors,responding,proposition,noises,matching,hormones,hail,grandchildren,gently,smashed,sexually,sentimental,nicest,manipulated,intern,handcuffs,framed,errands,entertaining,crib,carriage,barge,spends,slipping,seated,rubbing,rely,reject,recommendation,reckon,headaches,float,embrace,corners,whining,sweating,skipped,mountie,motives,listens,cristobel,cleaner,cheerleader,balsom,unnecessary,stunning,scent,quartermaines,pose,montega,loosen,info,hottest,haunt,gracious,forgiving,errand,cakes,blames,abortion,sketch,shifts,plotting,perimeter,pals,mere,mattered,lonigan,interference,eyewitness,enthusiasm,diapers,strongest,shaken,punched,portal,catches,backyard,terrorists,sabotage,organs,needy,cuff,civilization,woof,who'll,prank,obnoxious,mates,hereby,gabby,faked,cellar,whitelighter,void,strangle,sour,muffins,interfering,demonic,clearing,boutique,barrington,terrace,smoked,righty,quack,petey,pact,knot,ketchup,disappearing,cordy,uptight,ticking,terrifying,tease,swamp,secretly,rejection,reflection,realizing,rays,mentally,marone,doubted,deception,congressman,cheesy,toto,stalling,scoop,ribbon,immune,expects,destined,bets,bathing,appreciation,accomplice,wander,shoved,sewer,scroll,retire,lasts,fugitive,freezer,discount,cranky,crank,clearance,bodyguard,anxiety,accountant,whoops,volunteered,talents,stinking,remotely,garlic,decency,cord,beds,altogether,uniforms,tremendous,popping,outa,observe,lung,hangs,feelin,dudes,donation,disguise,curb,bites,antique,toothbrush,realistic,predict,landlord,hourglass,hesitate,consolation,babbling,tipped,stranded,smartest,repeating,puke,psst,paycheck,overreacted,macho,juvenile,grocery,freshen,disposal,cuffs,caffeine,vanished,unfinished,ripping,pinch,flattering,expenses,dinners,colleague,ciao,belthazor,attorneys,woulda,whereabouts,waitin,truce,tripped,tasted,steer,poisoning,manipulative,immature,husbands,heel,granddad,delivering,condoms,addict,trashed,raining,pasta,needles,leaning,detector,coolest,batch,appointments,almighty,vegetables,spark,perfection,pains,momma,mole,meow,hairs,getaway,cracking,compliments,behold,verge,tougher,timer,tapped,taped,specialty,snooping,shoots,rendezvous,pentagon,leverage,jeopardize,janitor,grandparents,forbidden,clueless,bidding,ungrateful,unacceptable,tutor,serum,scuse,pajamas,mouths,lure,irrational,doom,cries,beautifully,arresting,approaching,traitor,sympathetic,smug,smash,rental,prostitute,premonitions,jumps,inventory,darlin,committing,banging,asap,worms,violated,vent,traumatic,traced,sweaty,shaft,overboard,insight,healed,grasp,experiencing,crappy,crab,chunk,awww,stain,shack,reacted,pronounce,poured,moms,marriages,jabez,handful,flipped,fireplace,embarrassment,disappears,concussion,bruises,brakes,twisting,swept,summon,splitting,sloppy,settling,reschedule,notch,hooray,grabbing,exquisite,disrespect,thornhart,straw,slapped,shipped,shattered,ruthless,refill,payroll,numb,mourning,manly,hunk,entertain,drift,dreadful,doorstep,confirmation,chops,appreciates,vague,tires,stressful,stashed,stash,sensed,preoccupied,predictable,noticing,madly,gunshot,dozens,dork,confuse,cleaners,charade,chalk,cappuccino,bouquet,amulet,addiction,who've,warming,unlock,satisfy,sacrificed,relaxing,lone,blocking,blend,blankets,addicted,yuck,hunger,hamburger,greeting,greet,gravy,gram,dreamt,dice,caution,backpack,agreeing,whale,taller,supervisor,sacrifices,phew,ounce,irrelevant,gran,felon,favorites,farther,fade,erased,easiest,convenience,compassionate,cane,backstage,agony,adores,veins,tweek,thieves,surgical,strangely,stetson,recital,proposing,productive,meaningful,immunity,hassle,goddamned,frighten,dearly,cease,ambition,wage,unstable,salvage,richer,refusing,raging,pumping,pressuring,mortals,lowlife,intimidated,intentionally,inspire,forgave,devotion,despicable,deciding,dash,comfy,breach,bark,aaaah,switching,swallowed,stove,screamed,scars,russians,pounding,poof,pipes,pawn,legit,invest,farewell,curtains,civilized,caviar,boost,token,superstition,supernatural,sadness,recorder,psyched,motivated,microwave,hallelujah,fraternity,dryer,cocoa,chewing,acceptable,unbelievably,smiled,smelling,simpler,respectable,remarks,khasinau,indication,gutter,grabs,fulfill,flashlight,ellenor,blooded,blink,blessings,beware,uhhh,turf,swings,slips,shovel,shocking,puff,mirrors,locking,heartless,fras,childish,cardiac,utterly,tuscany,ticked,stunned,statesville,sadly,purely,kiddin,jerks,hitch,flirt,fare,equals,dismiss,christening,casket,c'mere,breakup,biting,antibiotics,accusation,abducted,witchcraft,thread,runnin,punching,paramedics,newest,murdering,masks,lawndale,initials,grampa,choking,charms,careless,bushes,buns,bummed,shred,saves,saddle,rethink,regards,precinct,persuade,meds,manipulating,llanfair,leash,hearted,guarantees,fucks,disgrace,deposition,bookstore,boil,vitals,veil,trespassing,sidewalk,sensible,punishing,overtime,optimistic,obsessing,notify,mornin,jeopardy,jaffa,injection,hilarious,desires,confide,cautious,yada,where're,vindictive,vial,teeny,stroll,sittin,scrub,rebuild,posters,ordeal,nuns,intimacy,inheritance,exploded,donate,distracting,despair,crackers,wildwind,virtue,thoroughly,tails,spicy,sketches,sights,sheer,shaving,seize,scarecrow,refreshing,prosecute,platter,napkin,misplaced,merchandise,loony,jinx,heroic,frankenstein,ambitious,syrup,solitary,resemblance,reacting,premature,lavery,flashes,cheque,awright,acquainted,wrapping,untie,salute,realised,priceless,partying,lightly,lifting,kasnoff,insisting,glowing,generator,explosives,cutie,confronted,buts,blouse,ballistic,antidote,analyze,allowance,adjourned,unto,understatement,tucked,touchy,subconscious,screws,sarge,roommates,rambaldi,offend,nerd,knives,irresistible,incapable,hostility,goddammit,fuse,frat,curfew,blackmailed,walkin,starve,sleigh,sarcastic,recess,rebound,pinned,parlor,outfits,livin,heartache,haired,fundraiser,doorman,discreet,dilucca,cracks,considerate,climbed,catering,apophis,zoey,urine,strung,stitches,sordid,sark,protector,phoned,pets,hostess,flaw,flavor,deveraux,consumed,confidentiality,bourbon,straightened,specials,spaghetti,prettier,powerless,playin,playground,paranoia,instantly,havoc,exaggerating,eavesdropping,doughnuts,diversion,deepest,cutest,comb,bela,behaving,anyplace,accessory,workout,translate,stuffing,speeding,slime,royalty,polls,marital,lurking,lottery,imaginary,greetings,fairwinds,elegant,elbow,credibility,credentials,claws,chopped,bridal,bedside,babysitting,witty,unforgivable,underworld,tempt,tabs,sophomore,selfless,secrecy,restless,okey,movin,metaphor,messes,meltdown,lecter,incoming,gasoline,diefenbaker,buckle,admired,adjustment,warmth,throats,seduced,queer,parenting,noses,luckiest,graveyard,gifted,footsteps,dimeras,cynical,wedded,verbal,unpredictable,tuned,stoop,slides,sinking,rigged,plumbing,lingerie,hankey,greed,everwood,elope,dresser,chauffeur,bulletin,bugged,bouncing,temptation,strangest,slammed,sarcasm,pending,packages,orderly,obsessive,murderers,meteor,inconvenience,glimpse,froze,execute,courageous,consulate,closes,bosses,bees,amends,wuss,wolfram,wacky,unemployed,testifying,syringe,stew,startled,sorrow,sleazy,shaky,screams,rsquo,remark,poke,nutty,mentioning,mend,inspiring,impulsive,housekeeper,foam,fingernails,conditioning,baking,whine,thug,starved,sniffing,sedative,programmed,picket,paged,hound,homosexual,homo,hips,forgets,flipping,flea,flatter,dwell,dumpster,choo,assignments,ants,vile,unreasonable,tossing,thanked,steals,souvenir,scratched,psychopath,outs,obstruction,obey,lump,insists,harass,gloat,filth,edgy,didn,coroner,confessing,bruise,betraying,bailing,appealing,adebisi,wrath,wandered,waist,vain,traps,stepfather,poking,obligated,heavenly,dilemma,crazed,contagious,coaster,cheering,bundle,vomit,thingy,speeches,robbing,raft,pumped,pillows,peep,packs,neglected,m'kay,loneliness,intrude,helluva,gardener,forresters,drooling,betcha,vase,supermarket,squat,spitting,rhyme,relieve,receipts,racket,pictured,pause,overdue,motivation,morgendorffer,kidnapper,insect,horns,feminine,eyeballs,dumps,disappointing,crock,convertible,claw,clamp,canned,cambias,bathtub,avanya,artery,weep,warmer,suspense,summoned,spiders,reiber,raving,pushy,postponed,ohhhh,noooo,mold,laughter,incompetent,hugging,groceries,drip,communicating,auntie,adios,wraps,wiser,willingly,weirdest,timmih,thinner,swelling,swat,steroids,sensitivity,scrape,rehearse,prophecy,ledge,justified,insults,hateful,handles,doorway,chatting,buyer,buckaroo,bedrooms,askin,ammo,tutoring,subpoena,scratching,privileges,pager,mart,intriguing,idiotic,grape,enlighten,corrupt,brunch,bridesmaid,barking,applause,acquaintance,wretched,superficial,soak,smoothly,sensing,restraint,posing,pleading,payoff,oprah,nemo,morals,loaf,jumpy,ignorant,herbal,hangin,germs,generosity,flashing,doughnut,clumsy,chocolates,captive,behaved,apologise,vanity,stumbled,preview,poisonous,perjury,parental,onboard,mugged,minding,linen,knots,interviewing,humour,grind,greasy,goons,drastic,coop,comparing,cocky,clearer,bruised,brag,bind,worthwhile,whoop,vanquishing,tabloids,sprung,spotlight,sentencing,racist,provoke,pining,overly,locket,imply,impatient,hovering,hotter,fest,endure,dots,doren,debts,crawled,chained,brit,breaths,weirdo,warmed,wand,troubling,tok'ra,strapped,soaked,skipping,scrambled,rattle,profound,musta,mocking,misunderstand,limousine,kacl,hustle,forensic,enthusiastic,duct,drawers,devastating,conquer,clarify,chores,cheerleaders,cheaper,callin,blushing,barging,abused,yoga,wrecking,wits,waffles,virginity,vibes,uninvited,unfaithful,teller,strangled,scheming,ropes,rescuing,rave,postcard,o'reily,morphine,lotion,lads,kidneys,judgement,itch,indefinitely,grenade,glamorous,genetically,freud,discretion,delusions,crate,competent,bakery,argh,ahhhh,wedge,wager,unfit,tripping,torment,superhero,stirring,spinal,sorority,seminar,scenery,rabble,pneumonia,perks,override,ooooh,mija,manslaughter,mailed,lime,lettuce,intimidate,guarded,grieve,grad,frustration,doorbell,chinatown,authentic,arraignment,annulled,allergies,wanta,verify,vegetarian,tighter,telegram,stalk,spared,shoo,satisfying,saddam,requesting,pens,overprotective,obstacles,notified,nasedo,grandchild,genuinely,flushed,fluids,floss,escaping,ditched,cramp,corny,bunk,bitten,billions,bankrupt,yikes,wrists,ultrasound,ultimatum,thirst,sniff,shakes,salsa,retrieve,reassuring,pumps,neurotic,negotiating,needn't,monitors,millionaire,lydecker,limp,incriminating,hatchet,gracias,gordie,fills,feeds,doubting,decaf,biopsy,whiz,voluntarily,ventilator,unpack,unload,toad,spooked,snitch,schillinger,reassure,persuasive,mystical,mysteries,matrimony,mails,jock,headline,explanations,dispatch,curly,cupid,condolences,comrade,cassadines,bulb,bragging,awaits,assaulted,ambush,adolescent,abort,yank,whit,vaguely,undermine,tying,swamped,stabbing,slippers,slash,sincerely,sigh,setback,secondly,rotting,precaution,pcpd,melting,liaison,hots,hooking,headlines,haha,ganz,fury,felicity,fangs,encouragement,earring,dreidel,dory,donut,dictate,decorating,cocktails,bumps,blueberry,believable,backfired,backfire,apron,adjusting,vous,vouch,vitamins,ummm,tattoos,slimy,sibling,shhhh,renting,peculiar,parasite,paddington,marries,mailbox,magically,lovebirds,knocks,informant,exits,drazen,distractions,disconnected,dinosaurs,dashwood,crooked,conveniently,wink,warped,underestimated,tacky,shoving,seizure,reset,pushes,opener,mornings,mash,invent,indulge,horribly,hallucinating,festive,eyebrows,enjoys,desperation,dealers,darkest,daph,boragora,belts,bagel,authorization,auditions,agitated,wishful,wimp,vanish,unbearable,tonic,suffice,suction,slaying,safest,rocking,relive,puttin,prettiest,noisy,newlyweds,nauseous,misguided,mildly,midst,liable,judgmental,indy,hunted,givin,fascinated,elephants,dislike,deluded,decorate,crummy,contractions,carve,bottled,bonded,bahamas,unavailable,twenties,trustworthy,surgeons,stupidity,skies,remorse,preferably,pies,nausea,napkins,mule,mourn,melted,mashed,inherit,greatness,golly,excused,dumbo,drifting,delirious,damaging,cubicle,compelled,comm,chooses,checkup,boredom,bandages,alarms,windshield,who're,whaddya,transparent,surprisingly,sunglasses,slit,roar,reade,prognosis,probe,pitiful,persistent,peas,nosy,nagging,morons,masterpiece,martinis,limbo,liars,irritating,inclined,hump,hoynes,fiasco,eatin,cubans,concentrating,colorful,clam,cider,brochure,barto,bargaining,wiggle,welcoming,weighing,vanquished,stains,sooo,snacks,smear,sire,resentment,psychologist,pint,overhear,morality,landingham,kisser,hoot,holling,handshake,grilled,formality,elevators,depths,confirms,boathouse,accidental,westbridge,wacko,ulterior,thugs,thighs,tangled,stirred,snag,sling,sleaze,rumour,ripe,remarried,puddle,pins,perceptive,miraculous,longing,lockup,librarian,impressions,immoral,hypothetically,guarding,gourmet,gabe,faxed,extortion,downright,digest,cranberry,bygones,buzzing,burying,bikes,weary,taping,takeout,sweeping,stepmother,stale,senor,seaborn,pros,pepperoni,newborn,ludicrous,injected,geeks,forged,faults,drue,dire,dief,desi,deceiving,caterer,calmed,budge,ankles,vending,typing,tribbiani,there're,squared,snowing,shades,sexist,rewrite,regretted,raises,picky,orphan,mural,misjudged,miscarriage,memorize,leaking,jitters,invade,interruption,illegally,handicapped,glitch,gittes,finer,distraught,dispose,dishonest,digs,dads,cruelty,circling,canceling,butterflies,belongings,barbrady,amusement,alias,zombies,where've,unborn,swearing,stables,squeezed,sensational,resisting,radioactive,questionable,privileged,portofino,owning,overlook,orson,oddly,interrogate,imperative,impeccable,hurtful,hors,heap,graders,glance,disgust,devious,destruct,crazier,countdown,chump,cheeseburger,burglar,berries,ballroom,assumptions,annoyed,allergy,admirer,admirable,activate,underpants,twit,tack,strokes,stool,sham,scrap,retarded,resourceful,remarkably,refresh,pressured,precautions,pointy,nightclub,mustache,maui,lace,hunh,hubby,flare,dont,dokey,dangerously,crushing,clinging,choked,chem,cheerleading,checkbook,cashmere,calmly,blush,believer,amazingly,alas,what've,toilets,tacos,stairwell,spirited,sewing,rubbed,punches,protects,nuisance,motherfuckers,mingle,kynaston,knack,kinkle,impose,gullible,godmother,funniest,friggin,folding,fashions,eater,dysfunctional,drool,dripping,ditto,cruising,criticize,conceive,clone,cedars,caliber,brighter,blinded,birthdays,banquet,anticipate,annoy,whim,whichever,volatile,veto,vested,shroud,rests,reindeer,quarantine,pleases,painless,orphans,orphanage,offence,obliged,negotiation,narcotics,mistletoe,meddling,manifest,lookit,lilah,intrigued,injustice,homicidal,gigantic,exposing,elves,disturbance,disastrous,depended,demented,correction,cooped,cheerful,buyers,brownies,beverage,basics,arvin,weighs,upsets,unethical,swollen,sweaters,stupidest,sensation,scalpel,props,prescribed,pompous,objections,mushrooms,mulwray,manipulation,lured,internship,insignificant,inmate,incentive,fulfilled,disagreement,crypt,cornered,copied,brightest,beethoven,attendant,amaze,yogurt,wyndemere,vocabulary,tulsa,tactic,stuffy,respirator,pretends,polygraph,pennies,ordinarily,olives,necks,morally,martyr,leftovers,joints,hopping,homey,hints,heartbroken,forge,florist,firsthand,fiend,dandy,crippled,corrected,conniving,conditioner,clears,chemo,bubbly,bladder,beeper,baptism,wiring,wench,weaknesses,volunteering,violating,unlocked,tummy,surrogate,subid,stray,startle,specifics,slowing,scoot,robbers,rightful,richest,qfxmjrie,puffs,pierced,pencils,paralysis,makeover,luncheon,linksynergy,jerky,jacuzzi,hitched,hangover,fracture,flock,firemen,disgusted,darned,clams,borrowing,banged,wildest,weirder,unauthorized,stunts,sleeves,sixties,shush,shalt,retro,quits,pegged,painfully,paging,omelet,memorized,lawfully,jackets,intercept,ingredient,grownup,glued,fulfilling,enchanted,delusion,daring,compelling,carton,bridesmaids,bribed,boiling,bathrooms,bandage,awaiting,assign,arrogance,antiques,ainsley,turkeys,trashing,stockings,stalked,stabilized,skates,sedated,robes,respecting,psyche,presumptuous,prejudice,paragraph,mocha,mints,mating,mantan,lorne,loads,listener,itinerary,hepatitis,heave,guesses,fading,examining,dumbest,dishwasher,deceive,cunning,cripple,convictions,confided,compulsive,compromising,burglary,bumpy,brainwashed,benes,arnie,affirmative,adrenaline,adamant,watchin,waitresses,transgenic,toughest,tainted,surround,stormed,spree,spilling,spectacle,soaking,shreds,sewers,severed,scarce,scamming,scalp,rewind,rehearsing,pretentious,potions,overrated,obstacle,nerds,meems,mcmurphy,maternity,maneuver,loathe,fertility,eloping,ecstatic,ecstasy,divorcing,dignan,costing,clubhouse,clocks,candid,bursting,breather,braces,bending,arsonist,adored,absorb,valiant,uphold,unarmed,topolsky,thrilling,thigh,terminate,sustain,spaceship,snore,sneeze,smuggling,salty,quaint,patronize,patio,morbid,mamma,kettle,joyous,invincible,interpret,insecurities,impulses,illusions,holed,exploit,drivin,defenseless,dedicate,cradle,coupon,countless,conjure,cardboard,booking,backseat,accomplishment,wordsworth,wisely,valet,vaccine,urges,unnatural,unlucky,truths,traumatized,tasting,swears,strawberries,steaks,stats,skank,seducing,secretive,scumbag,screwdriver,schedules,rooting,rightfully,rattled,qualifies,puppets,prospects,pronto,posse,polling,pedestal,palms,muddy,morty,microscope,merci,lecturing,inject,incriminate,hygiene,grapefruit,gazebo,funnier,cuter,bossy,booby,aides,zende,winthrop,warrants,valentines,undressed,underage,truthfully,tampered,suffers,speechless,sparkling,sidelines,shrek,railing,puberty,pesky,outrage,outdoors,motions,moods,lunches,litter,kidnappers,itching,intuition,imitation,humility,hassling,gallons,drugstore,dosage,disrupt,dipping,deranged,debating,cuckoo,cremated,craziness,cooperating,circumstantial,chimney,blinking,biscuits,admiring,weeping,triad,trashy,soothing,slumber,slayers,skirts,siren,shindig,sentiment,rosco,riddance,quaid,purity,proceeding,pretzels,panicking,mckechnie,lovin,leaked,intruding,impersonating,ignorance,hamburgers,footprints,fluke,fleas,festivities,fences,feisty,evacuate,emergencies,deceived,creeping,craziest,corpses,conned,coincidences,bounced,bodyguards,blasted,bitterness,baloney,ashtray,apocalypse,zillion,watergate,wallpaper,telesave,sympathize,sweeter,startin,spades,sodas,snowed,sleepover,signor,seein,retainer,restroom,rested,repercussions,reliving,reconcile,prevail,preaching,overreact,o'neil,noose,moustache,manicure,maids,landlady,hypothetical,hopped,homesick,hives,hesitation,herbs,hectic,heartbreak,haunting,gangs,frown,fingerprint,exhausting,everytime,disregard,cling,chevron,chaperone,blinding,bitty,beads,battling,badgering,anticipation,upstanding,unprofessional,unhealthy,turmoil,truthful,toothpaste,tippin,thoughtless,tagataya,shooters,senseless,rewarding,propane,preposterous,pigeons,pastry,overhearing,obscene,negotiable,loner,jogging,itchy,insinuating,insides,hospitality,hormone,hearst,forthcoming,fists,fifties,etiquette,endings,destroys,despises,deprived,cuddy,crust,cloak,circumstance,chewed,casserole,bidder,bearer,artoo,applaud,appalling,vowed,virgins,vigilante,undone,throttle,testosterone,tailor,symptom,swoop,suitcases,stomp,sticker,stakeout,spoiling,snatched,smoochy,smitten,shameless,restraints,researching,renew,refund,reclaim,raoul,puzzles,purposely,punks,prosecuted,plaid,picturing,pickin,parasites,mysteriously,multiply,mascara,jukebox,interruptions,gunfire,furnace,elbows,duplicate,drapes,deliberate,decoy,cryptic,coupla,condemn,complicate,colossal,clerks,clarity,brushed,banished,argon,alarmed,worships,versa,uncanny,technicality,sundae,stumble,stripping,shuts,schmuck,satin,saliva,robber,relentless,reconnect,recipes,rearrange,rainy,psychiatrists,policemen,plunge,plugged,patched,overload,o'malley,mindless,menus,lullaby,lotte,leavin,killin,karinsky,invalid,hides,grownups,griff,flaws,flashy,flaming,fettes,evicted,dread,degrassi,dealings,dangers,cushion,bowel,barged,abide,abandoning,wonderfully,wait'll,violate,suicidal,stayin,sorted,slamming,sketchy,shoplifting,raiser,quizmaster,prefers,needless,motherhood,momentarily,migraine,lifts,leukemia,leftover,keepin,hinks,hellhole,gowns,goodies,gallon,futures,entertained,eighties,conspiring,cheery,benign,apiece,adjustments,abusive,abduction,wiping,whipping,welles,unspeakable,unidentified,trivial,transcripts,textbook,supervise,superstitious,stricken,stimulating,spielberg,slices,shelves,scratches,sabotaged,retrieval,repressed,rejecting,quickie,ponies,peeking,outraged,o'connell,moping,moaning,mausoleum,licked,kovich,klutz,interrogating,interfered,insulin,infested,incompetence,hyper,horrified,handedly,gekko,fraid,fractured,examiner,eloped,disoriented,dashing,crashdown,courier,cockroach,chipped,brushing,bombed,bolts,baths,baptized,astronaut,assurance,anemia,abuela,abiding,withholding,weave,wearin,weaker,suffocating,straws,straightforward,stench,steamed,starboard,sideways,shrinks,shortcut,scram,roasted,roaming,riviera,respectfully,repulsive,psychiatry,provoked,penitentiary,painkillers,ninotchka,mitzvah,milligrams,midge,marshmallows,looky,lapse,kubelik,intellect,improvise,implant,goa'ulds,giddy,geniuses,fruitcake,footing,fightin,drinkin,doork,detour,cuddle,crashes,combo,colonnade,cheats,cetera,bailiff,auditioning,assed,amused,alienate,aiding,aching,unwanted,topless,tongues,tiniest,superiors,soften,sheldrake,rawley,raisins,presses,plaster,nessa,narrowed,minions,merciful,lawsuits,intimidating,infirmary,inconvenient,imposter,hugged,honoring,holdin,hades,godforsaken,fumes,forgery,foolproof,folder,flattery,fingertips,exterminator,explodes,eccentric,dodging,disguised,crave,constructive,concealed,compartment,chute,chinpokomon,bodily,astronauts,alimony,accustomed,abdominal,wrinkle,wallow,valium,untrue,uncover,trembling,treasures,torched,toenails,timed,termites,telly,taunting,taransky,talker,succubus,smarts,sliding,sighting,semen,seizures,scarred,savvy,sauna,saddest,sacrificing,rubbish,riled,ratted,rationally,provenance,phonse,perky,pedal,overdose,nasal,nanites,mushy,movers,missus,midterm,merits,melodramatic,manure,knitting,invading,interpol,incapacitated,hotline,hauling,gunpoint,grail,ganza,framing,flannel,faded,eavesdrop,desserts,calories,breathtaking,bleak,blacked,batter,aggravated,yanked,wigand,whoah,unwind,undoubtedly,unattractive,twitch,trimester,torrance,timetable,taxpayers,strained,stared,slapping,sincerity,siding,shenanigans,shacking,sappy,samaritan,poorer,politely,paste,oysters,overruled,nightcap,mosquito,millimeter,merrier,manhood,lucked,kilos,ignition,hauled,harmed,goodwill,freshmen,fenmore,fasten,farce,exploding,erratic,drunks,ditching,d'artagnan,cramped,contacting,closets,clientele,chimp,bargained,arranging,anesthesia,amuse,altering,afternoons,accountable,abetting,wolek,waved,uneasy,toddy,tattooed,spauldings,sliced,sirens,schibetta,scatter,rinse,remedy,redemption,pleasures,optimism,oblige,mmmmm,masked,malicious,mailing,kosher,kiddies,judas,isolate,insecurity,incidentally,heals,headlights,growl,grilling,glazed,flunk,floats,fiery,fairness,exercising,excellency,disclosure,cupboard,counterfeit,condescending,conclusive,clicked,cleans,cholesterol,cashed,broccoli,brats,blueprints,blindfold,billing,attach,appalled,alrighty,wynant,unsolved,unreliable,toots,tighten,sweatshirt,steinbrenner,steamy,spouse,sonogram,slots,sleepless,shines,retaliate,rephrase,redeem,rambling,quilt,quarrel,prying,proverbial,priced,prescribe,prepped,pranks,possessive,plaintiff,pediatrics,overlooked,outcast,nightgown,mumbo,mediocre,mademoiselle,lunchtime,lifesaver,leaned,lambs,interns,hounding,hellmouth,hahaha,goner,ghoul,gardening,frenzy,foyer,extras,exaggerate,everlasting,enlightened,dialed,devote,deceitful,d'oeuvres,cosmetic,contaminated,conspired,conning,cavern,carving,butting,boiled,blurry,babysit,ascension,aaaaah,wildly,whoopee,whiny,weiskopf,walkie,vultures,vacations,upfront,unresolved,tampering,stockholders,snaps,sleepwalking,shrunk,sermon,seduction,scams,revolve,phenomenal,patrolling,paranormal,ounces,omigod,nightfall,lashing,innocents,infierno,incision,humming,haunts,gloss,gloating,frannie,fetal,feeny,entrapment,discomfort,detonator,dependable,concede,complication,commotion,commence,chulak,caucasian,casually,brainer,bolie,ballpark,anwar,analyzing,accommodations,youse,wring,wallowing,transgenics,thrive,tedious,stylish,strippers,sterile,squeezing,squeaky,sprained,solemn,snoring,shattering,shabby,seams,scrawny,revoked,residue,reeks,recite,ranting,quoting,predicament,plugs,pinpoint,petrified,pathological,passports,oughtta,nighter,navigate,kippie,intrigue,intentional,insufferable,hunky,how've,horrifying,hearty,hamptons,grazie,funerals,forks,fetched,excruciating,enjoyable,endanger,dumber,drying,diabolical,crossword,corry,comprehend,clipped,classmates,candlelight,brutally,brutality,boarded,bathrobe,authorize,assemble,aerobics,wholesome,whiff,vermin,trophies,trait,tragically,toying,testy,tasteful,stocked,spinach,sipping,sidetracked,scrubbing,scraping,sanctity,robberies,ridin,retribution,refrain,realities,radiant,protesting,projector,plutonium,payin,parting,o'reilly,nooooo,motherfucking,measly,manic,lalita,juggling,jerking,intro,inevitably,hypnosis,huddle,horrendous,hobbies,heartfelt,harlin,hairdresser,gonorrhea,fussing,furtwangler,fleeting,flawless,flashed,fetus,eulogy,distinctly,disrespectful,denies,crossbow,cregg,crabs,cowardly,contraction,contingency,confirming,condone,coffins,cleansing,cheesecake,certainty,cages,c'est,briefed,bravest,bosom,boils,binoculars,bachelorette,appetizer,ambushed,alerted,woozy,withhold,vulgar,utmost,unleashed,unholy,unhappiness,unconditional,typewriter,typed,twists,supermodel,subpoenaed,stringing,skeptical,schoolgirl,romantically,rocked,revoir,reopen,puncture,preach,polished,planetarium,penicillin,peacefully,nurturing,more'n,mmhmm,midgets,marklar,lodged,lifeline,jellyfish,infiltrate,hutch,horseback,heist,gents,frickin,freezes,forfeit,flakes,flair,fathered,eternally,epiphany,disgruntled,discouraged,delinquent,decipher,danvers,cubes,credible,coping,chills,cherished,catastrophe,bombshell,birthright,billionaire,ample,affections,admiration,abbotts,whatnot,watering,vinegar,unthinkable,unseen,unprepared,unorthodox,underhanded,uncool,timeless,thump,thermometer,theoretically,tapping,tagged,swung,stares,spiked,solves,smuggle,scarier,saucer,quitter,prudent,powdered,poked,pointers,peril,penetrate,penance,opium,nudge,nostrils,neurological,mockery,mobster,medically,loudly,insights,implicate,hypocritical,humanly,holiness,healthier,hammered,haldeman,gunman,gloom,freshly,francs,flunked,flawed,emptiness,drugging,dozer,derevko,deprive,deodorant,cryin,crocodile,coloring,colder,cognac,clocked,clippings,charades,chanting,certifiable,caterers,brute,brochures,botched,blinders,bitchin,banter,woken,ulcer,tread,thankfully,swine,swimsuit,swans,stressing,steaming,stamped,stabilize,squirm,snooze,shuffle,shredded,seafood,scratchy,savor,sadistic,rhetorical,revlon,realist,prosecuting,prophecies,polyester,petals,persuasion,paddles,o'leary,nuthin,neighbour,negroes,muster,meningitis,matron,lockers,letterman,legged,indictment,hypnotized,housekeeping,hopelessly,hallucinations,grader,goldilocks,girly,flask,envelopes,downside,doves,dissolve,discourage,disapprove,diabetic,deliveries,decorator,crossfire,criminally,containment,comrades,complimentary,chatter,catchy,cashier,cartel,caribou,cardiologist,brawl,booted,barbershop,aryan,angst,administer,zellie,wreak,whistles,vandalism,vamps,uterus,upstate,unstoppable,understudy,tristin,transcript,tranquilizer,toxins,tonsils,stempel,spotting,spectator,spatula,softer,snotty,slinging,showered,sexiest,sensual,sadder,rimbaud,restrain,resilient,remission,reinstate,rehash,recollection,rabies,popsicle,plausible,pediatric,patronizing,ostrich,ortolani,oooooh,omelette,mistrial,marseilles,loophole,laughin,kevvy,irritated,infidelity,hypothermia,horrific,groupie,grinding,graceful,goodspeed,gestures,frantic,extradition,echelon,disks,dawnie,dared,damsel,curled,collateral,collage,chant,calculating,bumping,bribes,boardwalk,blinds,blindly,bleeds,bickering,beasts,backside,avenge,apprehended,anguish,abusing,youthful,yells,yanking,whomever,when'd,vomiting,vengeful,unpacking,unfamiliar,undying,tumble,trolls,treacherous,tipping,tantrum,tanked,summons,straps,stomped,stinkin,stings,staked,squirrels,sprinkles,speculate,sorting,skinned,sicko,sicker,shootin,shatter,seeya,schnapps,s'posed,ronee,respectful,regroup,regretting,reeling,reckoned,ramifications,puddy,projections,preschool,plissken,platonic,permalash,outdone,outburst,mutants,mugging,misfortune,miserably,miraculously,medications,margaritas,manpower,lovemaking,logically,leeches,latrine,kneel,inflict,impostor,hypocrisy,hippies,heterosexual,heightened,hecuba,healer,gunned,grooming,groin,gooey,gloomy,frying,friendships,fredo,firepower,fathom,exhaustion,evils,endeavor,eggnog,dreaded,d'arcy,crotch,coughing,coronary,cookin,consummate,congrats,companionship,caved,caspar,bulletproof,brilliance,breakin,brash,blasting,aloud,airtight,advising,advertise,adultery,aches,wronged,upbeat,trillion,thingies,tending,tarts,surreal,specs,specialize,spade,shrew,shaping,selves,schoolwork,roomie,recuperating,rabid,quart,provocative,proudly,pretenses,prenatal,pharmaceuticals,pacing,overworked,originals,nicotine,murderous,mileage,mayonnaise,massages,losin,interrogated,injunction,impartial,homing,heartbreaker,hacks,glands,giver,fraizh,flips,flaunt,englishman,electrocuted,dusting,ducking,drifted,donating,cylon,crutches,crates,cowards,comfortably,chummy,chitchat,childbirth,businesswoman,brood,blatant,bethy,barring,bagged,awakened,asbestos,airplanes,worshipped,winnings,why're,visualize,unprotected,unleash,trays,thicker,therapists,takeoff,streisand,storeroom,stethoscope,stacked,spiteful,sneaks,snapping,slaughtered,slashed,simplest,silverware,shits,secluded,scruples,scrubs,scraps,ruptured,roaring,receptionist,recap,raditch,radiator,pushover,plastered,pharmacist,perverse,perpetrator,ornament,ointment,nineties,napping,nannies,mousse,moors,momentary,misunderstandings,manipulator,malfunction,laced,kivar,kickin,infuriating,impressionable,holdup,hires,hesitated,headphones,hammering,groundwork,grotesque,graces,gauze,gangsters,frivolous,freeing,fours,forwarding,ferrars,faulty,fantasizing,extracurricular,empathy,divorces,detonate,depraved,demeaning,deadlines,dalai,cursing,cufflink,crows,coupons,comforted,claustrophobic,casinos,camped,busboy,bluth,bennetts,baskets,attacker,aplastic,angrier,affectionate,zapped,wormhole,weaken,unrealistic,unravel,unimportant,unforgettable,twain,suspend,superbowl,stutter,stewardess,stepson,standin,spandex,souvenirs,sociopath,skeletons,shivering,sexier,selfishness,scrapbook,ritalin,ribbons,reunite,remarry,relaxation,rattling,rapist,psychosis,prepping,poses,pleasing,pisses,piling,persecuted,padded,operatives,negotiator,natty,menopause,mennihan,martimmys,loyalties,laynie,lando,justifies,intimately,inexperienced,impotent,immortality,horrors,hooky,hinges,heartbreaking,handcuffed,gypsies,guacamole,grovel,graziella,goggles,gestapo,fussy,ferragamo,feeble,eyesight,explosions,experimenting,enchanting,doubtful,dizziness,dismantle,detectors,deserving,defective,dangling,dancin,crumble,creamed,cramping,conceal,clockwork,chrissakes,chrissake,chopping,cabinets,brooding,bonfire,blurt,bloated,blackmailer,beforehand,bathed,bathe,barcode,banish,badges,babble,await,attentive,aroused,antibodies,animosity,ya'll,wrinkled,wonderland,willed,whisk,waltzing,waitressing,vigilant,upbringing,unselfish,uncles,trendy,trajectory,striped,stamina,stalled,staking,stacks,spoils,snuff,snooty,snide,shrinking,senora,secretaries,scoundrel,saline,salads,rundown,riddles,relapse,recommending,raspberry,plight,pecan,pantry,overslept,ornaments,niner,negligent,negligence,nailing,mucho,mouthed,monstrous,malpractice,lowly,loitering,logged,lingering,lettin,lattes,kamal,juror,jillefsky,jacked,irritate,intrusion,insatiable,infect,impromptu,icing,hmmmm,hefty,gasket,frightens,flapping,firstborn,faucet,estranged,envious,dopey,doesn,disposition,disposable,disappointments,dipped,dignified,deceit,dealership,deadbeat,curses,coven,counselors,concierge,clutches,casbah,callous,cahoots,brotherly,britches,brides,bethie,beige,autographed,attendants,attaboy,astonishing,appreciative,antibiotic,aneurysm,afterlife,affidavit,zoning,whats,whaddaya,vasectomy,unsuspecting,toula,topanga,tonio,toasted,tiring,terrorized,tenderness,tailing,sweats,suffocated,sucky,subconsciously,starvin,sprouts,spineless,sorrows,snowstorm,smirk,slicery,sledding,slander,simmer,signora,sigmund,seventies,sedate,scented,sandals,rollers,retraction,resigning,recuperate,receptive,racketeering,queasy,provoking,priors,prerogative,premed,pinched,pendant,outsiders,orbing,opportunist,olanov,neurologist,nanobot,mommies,molested,misread,mannered,laundromat,intercom,inspect,insanely,infatuation,indulgent,indiscretion,inconsiderate,hurrah,howling,herpes,hasta,harassed,hanukkah,groveling,groosalug,gander,galactica,futile,fridays,flier,fixes,exploiting,exorcism,evasive,endorse,emptied,dreary,dreamy,downloaded,dodged,doctored,disobeyed,disneyland,disable,dehydrated,contemplating,coconuts,cockroaches,clogged,chilling,chaperon,cameraman,bulbs,bucklands,bribing,brava,bracelets,bowels,bluepoint,appetizers,appendix,antics,anointed,analogy,almonds,yammering,winch,weirdness,wangler,vibrations,vendor,unmarked,unannounced,twerp,trespass,travesty,transfusion,trainee,towelie,tiresome,straightening,staggering,sonar,socializing,sinus,sinners,shambles,serene,scraped,scones,scepter,sarris,saberhagen,ridiculously,ridicule,rents,reconciled,radios,publicist,pubes,prune,prude,precrime,postponing,pluck,perish,peppermint,peeled,overdo,nutshell,nostalgic,mulan,mouthing,mistook,meddle,maybourne,martimmy,lobotomy,livelihood,lippman,likeness,kindest,kaffee,jocks,jerked,jeopardizing,jazzed,insured,inquisition,inhale,ingenious,holier,helmets,heirloom,heinous,haste,harmsway,hardship,hanky,gutters,gruesome,groping,goofing,godson,glare,finesse,figuratively,ferrie,endangerment,dreading,dozed,dorky,dmitri,divert,discredit,dialing,cufflinks,crutch,craps,corrupted,cocoon,cleavage,cannery,bystander,brushes,bruising,bribery,brainstorm,bolted,binge,ballistics,astute,arroway,adventurous,adoptive,addicts,addictive,yadda,whitelighters,wematanye,weeds,wedlock,wallets,vulnerability,vroom,vents,upped,unsettling,unharmed,trippin,trifle,tracing,tormenting,thats,syphilis,subtext,stickin,spices,sores,smacked,slumming,sinks,signore,shitting,shameful,shacked,septic,seedy,righteousness,relish,rectify,ravishing,quickest,phoebs,perverted,peeing,pedicure,pastrami,passionately,ozone,outnumbered,oregano,offender,nukes,nosed,nighty,nifty,mounties,motivate,moons,misinterpreted,mercenary,mentality,marsellus,lupus,lumbar,lovesick,lobsters,leaky,laundering,latch,jafar,instinctively,inspires,indoors,incarcerated,hundredth,handkerchief,gynecologist,guittierez,groundhog,grinning,goodbyes,geese,fullest,eyelashes,eyelash,enquirer,endlessly,elusive,disarm,detest,deluding,dangle,cotillion,corsage,conjugal,confessional,cones,commandment,coded,coals,chuckle,christmastime,cheeseburgers,chardonnay,celery,campfire,calming,burritos,brundle,broflovski,brighten,borderline,blinked,bling,beauties,bauers,battered,articulate,alienated,ahhhhh,agamemnon,accountants,y'see,wrongful,wrapper,workaholic,winnebago,whispered,warts,vacate,unworthy,unanswered,tonane,tolerated,throwin,throbbing,thrills,thorns,thereof,there've,tarot,sunscreen,stretcher,stereotype,soggy,sobbing,sizable,sightings,shucks,shrapnel,sever,senile,seaboard,scorned,saver,rebellious,rained,putty,prenup,pores,pinching,pertinent,peeping,paints,ovulating,opposites,occult,nutcracker,nutcase,newsstand,newfound,mocked,midterms,marshmallow,marbury,maclaren,leans,krudski,knowingly,keycard,junkies,juilliard,jolinar,irritable,invaluable,inuit,intoxicating,instruct,insolent,inexcusable,incubator,illustrious,hunsecker,houseguest,homosexuals,homeroom,hernia,harming,handgun,hallways,hallucination,gunshots,groupies,groggy,goiter,gingerbread,giggling,frigging,fledged,fedex,fairies,exchanging,exaggeration,esteemed,enlist,drags,dispense,disloyal,disconnect,desks,dentists,delacroix,degenerate,daydreaming,cushions,cuddly,corroborate,complexion,compensated,cobbler,closeness,chilled,checkmate,channing,carousel,calms,bylaws,benefactor,ballgame,baiting,backstabbing,artifact,airspace,adversary,actin,accuses,accelerant,abundantly,abstinence,zissou,zandt,yapping,witchy,willows,whadaya,vilandra,veiled,undress,undivided,underestimating,ultimatums,twirl,truckload,tremble,toasting,tingling,tents,tempered,sulking,stunk,sponges,spills,softly,snipers,scourge,rooftop,riana,revolting,revisit,refreshments,redecorating,recapture,raysy,pretense,prejudiced,precogs,pouting,poofs,pimple,piles,pediatrician,padre,packets,paces,orvelle,oblivious,objectivity,nighttime,nervosa,mexicans,meurice,melts,matchmaker,maeby,lugosi,lipnik,leprechaun,kissy,kafka,introductions,intestines,inspirational,insightful,inseparable,injections,inadvertently,hussy,huckabees,hittin,hemorrhaging,headin,haystack,hallowed,grudges,granilith,grandkids,grading,gracefully,godsend,gobbles,fragrance,fliers,finchley,farts,eyewitnesses,expendable,existential,dorms,delaying,degrading,deduction,darlings,danes,cylons,counsellor,contraire,consciously,conjuring,congratulating,cokes,buffay,brooch,bitching,bistro,bijou,bewitched,benevolent,bends,bearings,barren,aptitude,amish,amazes,abomination,worldly,whispers,whadda,wayward,wailing,vanishing,upscale,untouchable,unspoken,uncontrollable,unavoidable,unattended,trite,transvestite,toupee,timid,timers,terrorizing,swana,stumped,strolling,storybook,storming,stomachs,stoked,stationery,springtime,spontaneity,spits,spins,soaps,sentiments,scramble,scone,rooftops,retract,reflexes,rawdon,ragged,quirky,quantico,psychologically,prodigal,pounce,potty,pleasantries,pints,petting,perceive,onstage,notwithstanding,nibble,newmans,neutralize,mutilated,millionaires,mayflower,masquerade,mangy,macreedy,lunatics,lovable,locating,limping,lasagna,kwang,keepers,juvie,jaded,ironing,intuitive,intensely,insure,incantation,hysteria,hypnotize,humping,happenin,griet,grasping,glorified,ganging,g'night,focker,flunking,flimsy,flaunting,fixated,fitzwallace,fainting,eyebrow,exonerated,ether,electrician,egotistical,earthly,dusted,dignify,detonation,debrief,dazzling,dan'l,damnedest,daisies,crushes,crucify,contraband,confronting,collapsing,cocked,clicks,cliche,circled,chandelier,carburetor,callers,broads,breathes,bloodshed,blindsided,blabbing,bialystock,bashing,ballerina,aviva,arteries,anomaly,airstrip,agonizing,adjourn,aaaaa,yearning,wrecker,witnessing,whence,warhead,unsure,unheard,unfreeze,unfold,unbalanced,ugliest,troublemaker,toddler,tiptoe,threesome,thirties,thermostat,swipe,surgically,subtlety,stung,stumbling,stubs,stride,strangling,sprayed,socket,smuggled,showering,shhhhh,sabotaging,rumson,rounding,risotto,repairman,rehearsed,ratty,ragging,radiology,racquetball,racking,quieter,quicksand,prowl,prompt,premeditated,prematurely,prancing,porcupine,plated,pinocchio,peeked,peddle,panting,overweight,overrun,outing,outgrown,obsess,nursed,nodding,negativity,negatives,musketeers,mugger,motorcade,merrily,matured,masquerading,marvellous,maniacs,lovey,louse,linger,lilies,lawful,kudos,knuckle,juices,judgments,itches,intolerable,intermission,inept,incarceration,implication,imaginative,huckleberry,holster,heartburn,gunna,groomed,graciously,fulfillment,fugitives,forsaking,forgives,foreseeable,flavors,flares,fixation,fickle,fantasize,famished,fades,expiration,exclamation,erasing,eiffel,eerie,earful,duped,dulles,dissing,dissect,dispenser,dilated,detergent,desdemona,debriefing,damper,curing,crispina,crackpot,courting,cordial,conflicted,comprehension,commie,cleanup,chiropractor,charmer,chariot,cauldron,catatonic,bullied,buckets,brilliantly,breathed,booths,boardroom,blowout,blindness,blazing,biologically,bibles,biased,beseech,barbaric,balraj,audacity,anticipating,alcoholics,airhead,agendas,admittedly,absolution,youre,yippee,wittlesey,withheld,willful,whammy,weakest,washes,virtuous,videotapes,vials,unplugged,unpacked,unfairly,turbulence,tumbling,tricking,tremendously,traitors,torches,tinga,thyroid,teased,tawdry,taker,sympathies,swiped,sundaes,suave,strut,stepdad,spewing,spasm,socialize,slither,simulator,shutters,shrewd,shocks,semantics,schizophrenic,scans,savages,rya'c,runny,ruckus,royally,roadblocks,rewriting,revoke,repent,redecorate,recovers,recourse,ratched,ramali,racquet,quince,quiche,puppeteer,puking,puffed,problemo,praises,pouch,postcards,pooped,poised,piled,phoney,phobia,patching,parenthood,pardner,oozing,ohhhhh,numbing,nostril,nosey,neatly,nappa,nameless,mortuary,moronic,modesty,midwife,mcclane,matuka,maitre,lumps,lucid,loosened,loins,lawnmower,lamotta,kroehner,jinxy,jessep,jamming,jailhouse,jacking,intruders,inhuman,infatuated,indigestion,implore,implanted,hormonal,hoboken,hillbilly,heartwarming,headway,hatched,hartmans,harping,grapevine,gnome,forties,flyin,flirted,fingernail,exhilarating,enjoyment,embark,dumper,dubious,drell,docking,disillusioned,dishonor,disbarred,dicey,custodial,counterproductive,corned,cords,contemplate,concur,conceivable,cobblepot,chickened,checkout,carpe,cap'n,campers,buyin,bullies,braid,boxed,bouncy,blueberries,blubbering,bloodstream,bigamy,beeped,bearable,autographs,alarming,wretch,wimps,widower,whirlwind,whirl,warms,vandelay,unveiling,undoing,unbecoming,turnaround,touche,togetherness,tickles,ticker,teensy,taunt,sweethearts,stitched,standpoint,staffers,spotless,soothe,smothered,sickening,shouted,shepherds,shawl,seriousness,schooled,schoolboy,s'mores,roped,reminders,raggedy,preemptive,plucked,pheromones,particulars,pardoned,overpriced,overbearing,outrun,ohmigod,nosing,nicked,neanderthal,mosquitoes,mortified,milky,messin,mecha,markinson,marivellas,mannequin,manderley,madder,macready,lookie,locusts,lifetimes,lanna,lakhi,kholi,impersonate,hyperdrive,horrid,hopin,hogging,hearsay,harpy,harboring,hairdo,hafta,grasshopper,gobble,gatehouse,foosball,floozy,fished,firewood,finalize,felons,euphemism,entourage,elitist,elegance,drokken,drier,dredge,dossier,diseased,diarrhea,diagnose,despised,defuse,d'amour,contesting,conserve,conscientious,conjured,collars,clogs,chenille,chatty,chamomile,casing,calculator,brittle,breached,blurted,birthing,bikinis,astounding,assaulting,aroma,appliance,antsy,amnio,alienating,aliases,adolescence,xerox,wrongs,workload,willona,whistling,werewolves,wallaby,unwelcome,unseemly,unplug,undermining,ugliness,tyranny,tuesdays,trumpets,transference,ticks,tangible,tagging,swallowing,superheroes,studs,strep,stowed,stomping,steffy,sprain,spouting,sponsoring,sneezing,smeared,slink,shakin,sewed,seatbelt,scariest,scammed,sanctimonious,roasting,rightly,retinal,rethinking,resented,reruns,remover,racks,purest,progressing,presidente,preeclampsia,postponement,portals,poppa,pliers,pinning,pelvic,pampered,padding,overjoyed,ooooo,one'll,octavius,nonono,nicknames,neurosurgeon,narrows,misled,mislead,mishap,milltown,milking,meticulous,mediocrity,meatballs,machete,lurch,layin,knockin,khruschev,jurors,jumpin,jugular,jeweler,intellectually,inquiries,indulging,indestructible,indebted,imitate,ignores,hyperventilating,hyenas,hurrying,hermano,hellish,heheh,harshly,handout,grunemann,glances,giveaway,getup,gerome,furthest,frosting,frail,forwarded,forceful,flavored,flammable,flaky,fingered,fatherly,ethic,embezzlement,duffel,dotted,distressed,disobey,disappearances,dinky,diminish,diaphragm,deuces,creme,courteous,comforts,coerced,clots,clarification,chunks,chickie,chases,chaperoning,cartons,caper,calves,caged,bustin,bulging,bringin,boomhauer,blowin,blindfolded,biscotti,ballplayer,bagging,auster,assurances,aschen,arraigned,anonymity,alters,albatross,agreeable,adoring,abduct,wolfi,weirded,watchers,washroom,warheads,vincennes,urgency,understandably,uncomplicated,uhhhh,twitching,treadmill,thermos,tenorman,tangle,talkative,swarm,surrendering,summoning,strive,stilts,stickers,squashed,spraying,sparring,soaring,snort,sneezed,slaps,skanky,singin,sidle,shreck,shortness,shorthand,sharper,shamed,sadist,rydell,rusik,roulette,resumes,respiration,recount,reacts,purgatory,princesses,presentable,ponytail,plotted,pinot,pigtails,phillippe,peddling,paroled,orbed,offends,o'hara,moonlit,minefield,metaphors,malignant,mainframe,magicks,maggots,maclaine,loathing,leper,leaps,leaping,lashed,larch,larceny,lapses,ladyship,juncture,jiffy,jakov,invoke,infantile,inadmissible,horoscope,hinting,hideaway,hesitating,heddy,heckles,hairline,gripe,gratifying,governess,goebbels,freddo,foresee,fascination,exemplary,executioner,etcetera,escorts,endearing,eaters,earplugs,draped,disrupting,disagrees,dimes,devastate,detain,depositions,delicacy,darklighter,cynicism,cyanide,cutters,cronus,continuance,conquering,confiding,compartments,combing,cofell,clingy,cleanse,christmases,cheered,cheekbones,buttle,burdened,bruenell,broomstick,brained,bozos,bontecou,bluntman,blazes,blameless,bizarro,bellboy,beaucoup,barkeep,awaken,astray,assailant,appease,aphrodisiac,alleys,yesss,wrecks,woodpecker,wondrous,wimpy,willpower,wheeling,weepy,waxing,waive,videotaped,veritable,untouched,unlisted,unfounded,unforeseen,twinge,triggers,traipsing,toxin,tombstone,thumping,therein,testicles,telephones,tarmac,talby,tackled,swirling,suicides,suckered,subtitles,sturdy,strangler,stockbroker,stitching,steered,standup,squeal,sprinkler,spontaneously,splendor,spiking,spender,snipe,snagged,skimming,siddown,showroom,shovels,shotguns,shoelaces,shitload,shellfish,sharpest,shadowy,seizing,scrounge,scapegoat,sayonara,saddled,rummaging,roomful,renounce,reconsidered,recharge,realistically,radioed,quirks,quadrant,punctual,practising,pours,poolhouse,poltergeist,pocketbook,plainly,picnics,pesto,pawing,passageway,partied,oneself,numero,nostalgia,nitwit,neuro,mixer,meanest,mcbeal,matinee,margate,marce,manipulations,manhunt,manger,magicians,loafers,litvack,lightheaded,lifeguard,lawns,laughingstock,ingested,indignation,inconceivable,imposition,impersonal,imbecile,huddled,housewarming,horizons,homicides,hiccups,hearse,hardened,gushing,gushie,greased,goddamit,freelancer,forging,fondue,flustered,flung,flinch,flicker,fixin,festivus,fertilizer,farted,faggots,exonerate,evict,enormously,encrypted,emdash,embracing,duress,dupres,dowser,doormat,disfigured,disciplined,dibbs,depository,deathbed,dazzled,cuttin,cures,crowding,crepe,crammed,copycat,contradict,confidant,condemning,conceited,commute,comatose,clapping,circumference,chuppah,chore,choksondik,chestnuts,briault,bottomless,bonnet,blokes,berluti,beret,beggars,bankroll,bania,athos,arsenic,apperantly,ahhhhhh,afloat,accents,zipped,zeros,zeroes,zamir,yuppie,youngsters,yorkers,wisest,wipes,wield,whyn't,weirdos,wednesdays,vicksburg,upchuck,untraceable,unsupervised,unpleasantness,unhook,unconscionable,uncalled,trappings,tragedies,townie,thurgood,things'll,thine,tetanus,terrorize,temptations,tanning,tampons,swarming,straitjacket,steroid,startling,starry,squander,speculating,sollozzo,sneaked,slugs,skedaddle,sinker,silky,shortcomings,sellin,seasoned,scrubbed,screwup,scrapes,scarves,sandbox,salesmen,rooming,romances,revere,reproach,reprieve,rearranging,ravine,rationalize,raffle,punchy,psychobabble,provocation,profoundly,prescriptions,preferable,polishing,poached,pledges,pirelli,perverts,oversized,overdressed,outdid,nuptials,nefarious,mouthpiece,motels,mopping,mongrel,missin,metaphorically,mertin,memos,melodrama,melancholy,measles,meaner,mantel,maneuvering,mailroom,luring,listenin,lifeless,licks,levon,legwork,kneecaps,kippur,kiddie,kaput,justifiable,insistent,insidious,innuendo,innit,indecent,imaginable,horseshit,hemorrhoid,hella,healthiest,haywire,hamsters,hairbrush,grouchy,grisly,gratuitous,glutton,glimmer,gibberish,ghastly,gentler,generously,geeky,fuhrer,fronting,foolin,faxes,faceless,extinguisher,expel,etched,endangering,ducked,dodgeball,dives,dislocated,discrepancy,devour,derail,dementia,daycare,cynic,crumbling,cowardice,covet,cornwallis,corkscrew,cookbook,commandments,coincidental,cobwebs,clouded,clogging,clicking,clasp,chopsticks,chefs,chaps,cashing,carat,calmer,brazen,brainwashing,bradys,bowing,boned,bloodsucking,bleachers,bleached,bedpan,bearded,barrenger,bachelors,awwww,assures,assigning,asparagus,apprehend,anecdote,amoral,aggravation,afoot,acquaintances,accommodating,yakking,worshipping,wladek,willya,willies,wigged,whoosh,whisked,watered,warpath,volts,violates,valuables,uphill,unwise,untimely,unsavory,unresponsive,unpunished,unexplained,tubby,trolling,toxicology,tormented,toothache,tingly,timmiihh,thursdays,thoreau,terrifies,temperamental,telegrams,talkie,takers,symbiote,swirl,suffocate,stupider,strapping,steckler,springing,someway,sleepyhead,sledgehammer,slant,slams,showgirl,shoveling,shmoopy,sharkbait,shan't,scrambling,schematics,sandeman,sabbatical,rummy,reykjavik,revert,responsive,rescheduled,requisition,relinquish,rejoice,reckoning,recant,rebadow,reassurance,rattlesnake,ramble,primed,pricey,prance,pothole,pocus,persist,perpetrated,pekar,peeling,pastime,parmesan,pacemaker,overdrive,ominous,observant,nothings,noooooo,nonexistent,nodded,nieces,neglecting,nauseating,mutated,musket,mumbling,mowing,mouthful,mooseport,monologue,mistrust,meetin,masseuse,mantini,mailer,madre,lowlifes,locksmith,livid,liven,limos,liberating,lhasa,leniency,leering,laughable,lashes,lasagne,laceration,korben,katan,kalen,jittery,jammies,irreplaceable,intubate,intolerant,inhaler,inhaled,indifferent,indifference,impound,impolite,humbly,heroics,heigh,guillotine,guesthouse,grounding,grips,gossiping,goatee,gnomes,gellar,frutt,frobisher,freudian,foolishness,flagged,femme,fatso,fatherhood,fantasized,fairest,faintest,eyelids,extravagant,extraterrestrial,extraordinarily,escalator,elevate,drivel,dissed,dismal,disarray,dinnertime,devastation,dermatologist,delicately,defrost,debutante,debacle,damone,dainty,cuvee,culpa,crucified,creeped,crayons,courtship,convene,congresswoman,concocted,compromises,comprende,comma,coleslaw,clothed,clinically,chickenshit,checkin,cesspool,caskets,calzone,brothel,boomerang,bodega,blasphemy,bitsy,bicentennial,berlini,beatin,beards,barbas,barbarians,backpacking,arrhythmia,arousing,arbitrator,antagonize,angling,anesthetic,altercation,aggressor,adversity,acathla,aaahhh,wreaking,workup,wonderin,wither,wielding,what'm,what'cha,waxed,vibrating,veterinarian,venting,vasey,valor,validate,upholstery,untied,unscathed,uninterrupted,unforgiving,undies,uncut,twinkies,tucking,treatable,treasured,tranquility,townspeople,torso,tomei,tipsy,tinsel,tidings,thirtieth,tantrums,tamper,talky,swayed,swapping,suitor,stylist,stirs,standoff,sprinklers,sparkly,snobby,snatcher,smoother,sleepin,shrug,shoebox,sheesh,shackles,setbacks,sedatives,screeching,scorched,scanned,satyr,roadblock,riverbank,ridiculed,resentful,repellent,recreate,reconvene,rebuttal,realmedia,quizzes,questionnaire,punctured,pucker,prolong,professionalism,pleasantly,pigsty,penniless,paychecks,patiently,parading,overactive,ovaries,orderlies,oracles,oiled,offending,nudie,neonatal,neighborly,moops,moonlighting,mobilize,mmmmmm,milkshake,menial,meats,mayan,maxed,mangled,magua,lunacy,luckier,liters,lansbury,kooky,knowin,jeopardized,inkling,inhalation,inflated,infecting,incense,inbound,impractical,impenetrable,idealistic,i'mma,hypocrites,hurtin,humbled,hologram,hokey,hocus,hitchhiking,hemorrhoids,headhunter,hassled,harts,hardworking,haircuts,hacksaw,genitals,gazillion,gammy,gamesphere,fugue,footwear,folly,flashlights,fives,filet,extenuating,estrogen,entails,embezzled,eloquent,egomaniac,ducts,drowsy,drones,doree,donovon,disguises,diggin,deserting,depriving,defying,deductible,decorum,decked,daylights,daybreak,dashboard,damnation,cuddling,crunching,crickets,crazies,councilman,coughed,conundrum,complimented,cohaagen,clutching,clued,clader,cheques,checkpoint,chats,channeling,ceases,carasco,capisce,cantaloupe,cancelling,campsite,burglars,breakfasts,bra'tac,blueprint,bleedin,blabbed,beneficiary,basing,avert,atone,arlyn,approves,apothecary,antiseptic,aleikuum,advisement,zadir,wobbly,withnail,whattaya,whacking,wedged,wanders,vaginal,unimaginable,undeniable,unconditionally,uncharted,unbridled,tweezers,tvmegasite,trumped,triumphant,trimming,treading,tranquilizers,toontown,thunk,suture,suppressing,strays,stonewall,stogie,stepdaughter,stace,squint,spouses,splashed,speakin,sounder,sorrier,sorrel,sombrero,solemnly,softened,snobs,snippy,snare,smoothing,slump,slimeball,slaving,silently,shiller,shakedown,sensations,scrying,scrumptious,screamin,saucy,santoses,roundup,roughed,rosary,robechaux,retrospect,rescind,reprehensible,repel,remodeling,reconsidering,reciprocate,railroaded,psychics,promos,prob'ly,pristine,printout,priestess,prenuptial,precedes,pouty,phoning,peppy,pariah,parched,panes,overloaded,overdoing,nymphs,nother,notebooks,nearing,nearer,monstrosity,milady,mieke,mephesto,medicated,marshals,manilow,mammogram,m'lady,lotsa,loopy,lesion,lenient,learner,laszlo,kross,kinks,jinxed,involuntary,insubordination,ingrate,inflatable,incarnate,inane,hypoglycemia,huntin,humongous,hoodlum,honking,hemorrhage,helpin,hathor,hatching,grotto,grandmama,gorillas,godless,girlish,ghouls,gershwin,frosted,flutter,flagpole,fetching,fatter,faithfully,exert,evasion,escalate,enticing,enchantress,elopement,drills,downtime,downloading,dorks,doorways,divulge,dissociative,disgraceful,disconcerting,deteriorate,destinies,depressive,dented,denim,decruz,decidedly,deactivate,daydreams,curls,culprit,cruelest,crippling,cranberries,corvis,copped,commend,coastguard,cloning,cirque,churning,chock,chivalry,catalogues,cartwheels,carols,canister,buttered,bundt,buljanoff,bubbling,brokers,broaden,brimstone,brainless,bores,badmouthing,autopilot,ascertain,aorta,ampata,allenby,accosted,absolve,aborted,aaagh,aaaaaah,yonder,yellin,wyndham,wrongdoing,woodsboro,wigging,wasteland,warranty,waltzed,walnuts,vividly,veggie,unnecessarily,unloaded,unicorns,understated,unclean,umbrellas,twirling,turpentine,tupperware,triage,treehouse,tidbit,tickled,threes,thousandth,thingie,terminally,teething,tassel,talkies,swoon,switchboard,swerved,suspiciously,subsequentlyne,subscribe,strudel,stroking,strictest,stensland,starin,stannart,squirming,squealing,sorely,softie,snookums,sniveling,smidge,sloth,skulking,simian,sightseeing,siamese,shudder,shoppers,sharpen,shannen,semtex,secondhand,seance,scowl,scorn,safekeeping,russe,rummage,roshman,roomies,roaches,rinds,retrace,retires,resuscitate,rerun,reputations,rekall,refreshment,reenactment,recluse,ravioli,raves,raking,purses,punishable,punchline,puked,prosky,previews,poughkeepsie,poppins,polluted,placenta,pissy,petulant,perseverance,pears,pawns,pastries,partake,panky,palate,overzealous,orchids,obstructing,objectively,obituaries,obedient,nothingness,musty,motherly,mooning,momentous,mistaking,minutemen,milos,microchip,meself,merciless,menelaus,mazel,masturbate,mahogany,lysistrata,lillienfield,likable,liberate,leveled,letdown,larynx,lardass,lainey,lagged,klorel,kidnappings,keyed,karmic,jeebies,irate,invulnerable,intrusive,insemination,inquire,injecting,informative,informants,impure,impasse,imbalance,illiterate,hurled,hunts,hematoma,headstrong,handmade,handiwork,growling,gorky,getcha,gesundheit,gazing,galley,foolishly,fondness,floris,ferocious,feathered,fateful,fancies,fakes,faker,expire,ever'body,essentials,eskimos,enlightening,enchilada,emissary,embolism,elsinore,ecklie,drenched,drazi,doped,dogging,doable,dislikes,dishonesty,disengage,discouraging,derailed,deformed,deflect,defer,deactivated,crips,constellations,congressmen,complimenting,clubbing,clawing,chromium,chimes,chews,cheatin,chaste,cellblock,caving,catered,catacombs,calamari,bucking,brulee,brits,brisk,breezes,bounces,boudoir,binks,better'n,bellied,behrani,behaves,bedding,balmy,badmouth,backers,avenging,aromatherapy,armpit,armoire,anythin,anonymously,anniversaries,aftershave,affliction,adrift,admissible,adieu,acquittal,yucky,yearn,whitter,whirlpool,wendigo,watchdog,wannabes,wakey,vomited,voicemail,valedictorian,uttered,unwed,unrequited,unnoticed,unnerving,unkind,unjust,uniformed,unconfirmed,unadulterated,unaccounted,uglier,turnoff,trampled,tramell,toads,timbuktu,throwback,thimble,tasteless,tarantula,tamale,takeovers,swish,supposing,streaking,stargher,stanzi,stabs,squeamish,splattered,spiritually,spilt,speciality,smacking,skywire,skips,skaara,simpatico,shredding,showin,shortcuts,shite,shielding,shamelessly,serafine,sentimentality,seasick,schemer,scandalous,sainted,riedenschneider,rhyming,revel,retractor,retards,resurrect,remiss,reminiscing,remanded,reiben,regains,refuel,refresher,redoing,redheaded,reassured,rearranged,rapport,qumar,prowling,prejudices,precarious,powwow,pondering,plunger,plunged,pleasantville,playpen,phlegm,perfected,pancreas,paley,ovary,outbursts,oppressed,ooohhh,omoroca,offed,o'toole,nurture,nursemaid,nosebleed,necktie,muttering,munchies,mucking,mogul,mitosis,misdemeanor,miscarried,millionth,migraines,midler,manicurist,mandelbaum,manageable,malfunctioned,magnanimous,loudmouth,longed,lifestyles,liddy,lickety,leprechauns,komako,klute,kennel,justifying,irreversible,inventing,intergalactic,insinuate,inquiring,ingenuity,inconclusive,incessant,improv,impersonation,hyena,humperdinck,hubba,housework,hoffa,hither,hissy,hippy,hijacked,heparin,hellooo,hearth,hassles,hairstyle,hahahaha,hadda,guys'll,gutted,gulls,gritty,grievous,graft,gossamer,gooder,gambled,gadgets,fundamentals,frustrations,frolicking,frock,frilly,foreseen,footloose,fondly,flirtation,flinched,flatten,farthest,exposer,evading,escrow,empathize,embryos,embodiment,ellsberg,ebola,dulcinea,dreamin,drawbacks,doting,doose,doofy,disturbs,disorderly,disgusts,detox,denominator,demeanor,deliriously,decode,debauchery,croissant,cravings,cranked,coworkers,councilor,confuses,confiscate,confines,conduit,compress,combed,clouding,clamps,cinch,chinnery,celebratory,catalogs,carpenters,carnal,canin,bundys,bulldozer,buggers,bueller,brainy,booming,bookstores,bloodbath,bittersweet,bellhop,beeping,beanstalk,beady,baudelaire,bartenders,bargains,averted,armadillo,appreciating,appraised,antlers,aloof,allowances,alleyway,affleck,abject,zilch,youore,xanax,wrenching,wouldn,witted,wicca,whorehouse,whooo,whips,vouchers,victimized,vicodin,untested,unsolicited,unfocused,unfettered,unfeeling,unexplainable,understaffed,underbelly,tutorial,tryst,trampoline,towering,tirade,thieving,thang,swimmin,swayzak,suspecting,superstitions,stubbornness,streamers,strattman,stonewalling,stiffs,stacking,spout,splice,sonrisa,smarmy,slows,slicing,sisterly,shrill,shined,seeming,sedley,seatbelts,scour,scold,schoolyard,scarring,salieri,rustling,roxbury,rewire,revved,retriever,reputable,remodel,reins,reincarnation,rance,rafters,rackets,quail,pumbaa,proclaim,probing,privates,pried,prewedding,premeditation,posturing,posterity,pleasurable,pizzeria,pimps,penmanship,penchant,pelvis,overturn,overstepped,overcoat,ovens,outsmart,outed,ooohh,oncologist,omission,offhand,odour,nyazian,notarized,nobody'll,nightie,navel,nabbed,mystique,mover,mortician,morose,moratorium,mockingbird,mobsters,mingling,methinks,messengered,merde,masochist,martouf,martians,marinara,manray,majorly,magnifying,mackerel,lurid,lugging,lonnegan,loathsome,llantano,liberace,leprosy,latinos,lanterns,lamest,laferette,kraut,intestine,innocencia,inhibitions,ineffectual,indisposed,incurable,inconvenienced,inanimate,improbable,implode,hydrant,hustling,hustled,huevos,how'm,hooey,hoods,honcho,hinge,hijack,heimlich,hamunaptra,haladki,haiku,haggle,gutsy,grunting,grueling,gribbs,greevy,grandstanding,godparents,glows,glistening,gimmick,gaping,fraiser,formalities,foreigner,folders,foggy,fitty,fiends,fe'nos,favours,eyeing,extort,expedite,escalating,epinephrine,entitles,entice,eminence,eights,earthlings,eagerly,dunville,dugout,doublemeat,doling,dispensing,dispatcher,discoloration,diners,diddly,dictates,diazepam,derogatory,delights,defies,decoder,dealio,danson,cutthroat,crumbles,croissants,crematorium,craftsmanship,could'a,cordless,cools,conked,confine,concealing,complicates,communique,cockamamie,coasters,clobbered,clipping,clipboard,clemenza,cleanser,circumcision,chanukah,certainaly,cellmate,cancels,cadmium,buzzed,bumstead,bucko,browsing,broth,braver,boggling,bobbing,blurred,birkhead,benet,belvedere,bellies,begrudge,beckworth,banky,baldness,baggy,babysitters,aversion,astonished,assorted,appetites,angina,amiss,ambulances,alibis,airway,admires,adhesive,yoyou,xxxxxx,wreaked,wracking,woooo,wooing,wised,wilshire,wedgie,waging,violets,vincey,uplifting,untrustworthy,unmitigated,uneventful,undressing,underprivileged,unburden,umbilical,tweaking,turquoise,treachery,tosses,torching,toothpick,toasts,thickens,tereza,tenacious,teldar,taint,swill,sweatin,subtly,subdural,streep,stopwatch,stockholder,stillwater,stalkers,squished,squeegee,splinters,spliced,splat,spied,spackle,sophistication,snapshots,smite,sluggish,slithered,skeeters,sidewalks,sickly,shrugs,shrubbery,shrieking,shitless,settin,sentinels,selfishly,scarcely,sangria,sanctum,sahjhan,rustle,roving,rousing,rosomorf,riddled,responsibly,renoir,remoray,remedial,refundable,redirect,recheck,ravenwood,rationalizing,ramus,ramelle,quivering,pyjamas,psychos,provocations,prouder,protestors,prodded,proctologist,primordial,pricks,prickly,precedents,pentangeli,pathetically,parka,parakeet,panicky,overthruster,outsmarted,orthopedic,oncoming,offing,nutritious,nuthouse,nourishment,nibbling,newlywed,narcissist,mutilation,mundane,mummies,mumble,mowed,morvern,mortem,mopes,molasses,misplace,miscommunication,miney,midlife,menacing,memorizing,massaging,masking,magnets,luxuries,lounging,lothario,liposuction,lidocaine,libbets,levitate,leeway,launcelot,larek,lackeys,kumbaya,kryptonite,knapsack,keyhole,katarangura,juiced,jakey,ironclad,invoice,intertwined,interlude,interferes,injure,infernal,indeedy,incur,incorrigible,incantations,impediment,igloo,hysterectomy,hounded,hollering,hindsight,heebie,havesham,hasenfuss,hankering,hangers,hakuna,gutless,gusto,grubbing,grrrr,grazed,gratification,grandeur,gorak,godammit,gnawing,glanced,frostbite,frees,frazzled,fraulein,fraternizing,fortuneteller,formaldehyde,followup,foggiest,flunky,flickering,firecrackers,figger,fetuses,fates,eyeliner,extremities,extradited,expires,exceedingly,evaporate,erupt,epileptic,entrails,emporium,egregious,eggshells,easing,duwayne,droll,dreyfuss,dovey,doubly,doozy,donkeys,donde,distrust,distressing,disintegrate,discreetly,decapitated,dealin,deader,dashed,darkroom,dares,daddies,dabble,cushy,cupcakes,cuffed,croupier,croak,crapped,coursing,coolers,contaminate,consummated,construed,condos,concoction,compulsion,commish,coercion,clemency,clairvoyant,circulate,chesterton,checkered,charlatan,chaperones,categorically,cataracts,carano,capsules,capitalize,burdon,bullshitting,brewed,breathless,breasted,brainstorming,bossing,borealis,bonsoir,bobka,boast,blimp,bleep,bleeder,blackouts,bisque,billboards,beatings,bayberry,bashed,bamboozled,balding,baklava,baffled,backfires,babak,awkwardness,attest,attachments,apologizes,anyhoo,antiquated,alcante,advisable,aahhh,aaahh,zatarc,yearbooks,wuddya,wringing,womanhood,witless,winging,whatsa,wetting,waterproof,wastin,vogelman,vocation,vindicated,vigilance,vicariously,venza,vacuuming,utensils,uplink,unveil,unloved,unloading,uninhibited,unattached,tweaked,turnips,trinkets,toughen,toting,topside,terrors,terrify,technologically,tarnish,tagliati,szpilman,surly,supple,summation,suckin,stepmom,squeaking,splashmore,souffle,solitaire,solicitation,solarium,smokers,slugged,slobbering,skylight,skimpy,sinuses,silenced,sideburns,shrinkage,shoddy,shhhhhh,shelled,shareef,shangri,seuss,serenade,scuffle,scoff,scanners,sauerkraut,sardines,sarcophagus,salvy,rusted,russells,rowboat,rolfsky,ringside,respectability,reparations,renegotiate,reminisce,reimburse,regimen,raincoat,quibble,puzzled,purposefully,pubic,proofing,prescribing,prelim,poisons,poaching,personalized,personable,peroxide,pentonville,payphone,payoffs,paleontology,overflowing,oompa,oddest,objecting,o'hare,o'daniel,notches,nobody'd,nightstand,neutralized,nervousness,nerdy,needlessly,naquadah,nappy,nantucket,nambla,mountaineer,motherfuckin,morrie,monopolizing,mohel,mistreated,misreading,misbehave,miramax,minivan,milligram,milkshakes,metamorphosis,medics,mattresses,mathesar,matchbook,matata,marys,malucci,magilla,lymphoma,lowers,lordy,linens,lindenmeyer,limelight,leapt,laxative,lather,lapel,lamppost,laguardia,kindling,kegger,kawalsky,juries,jokin,jesminder,interning,innermost,injun,infallible,industrious,indulgence,incinerator,impossibility,impart,illuminate,iguanas,hypnotic,hyped,hospitable,hoses,homemaker,hirschmuller,helpers,headset,guardianship,guapo,grubby,granola,granddaddy,goren,goblet,gluttony,globes,giorno,getter,geritol,gassed,gaggle,foxhole,fouled,foretold,floorboards,flippers,flaked,fireflies,feedings,fashionably,farragut,fallback,facials,exterminate,excites,everything'll,evenin,ethically,ensue,enema,empath,eluded,eloquently,eject,edema,dumpling,droppings,dolled,distasteful,disputing,displeasure,disdain,deterrent,dehydration,defied,decomposing,dawned,dailies,custodian,crusts,crucifix,crowning,crier,crept,craze,crawls,couldn,correcting,corkmaster,copperfield,cooties,contraption,consumes,conspire,consenting,consented,conquers,congeniality,complains,communicator,commendable,collide,coladas,colada,clout,clooney,classifieds,clammy,civility,cirrhosis,chink,catskills,carvers,carpool,carelessness,cardio,carbs,capades,butabi,busmalis,burping,burdens,bunks,buncha,bulldozers,browse,brockovich,breakthroughs,bravado,boogety,blossoms,blooming,bloodsucker,blight,betterton,betrayer,belittle,beeps,bawling,barts,bartending,bankbooks,babish,atropine,assertive,armbrust,anyanka,annoyance,anemic,anago,airwaves,aimlessly,aaargh,aaand,yoghurt,writhing,workable,winking,winded,widen,whooping,whiter,whatya,wazoo,voila,virile,vests,vestibule,versed,vanishes,urkel,uproot,unwarranted,unscheduled,unparalleled,undergrad,tweedle,turtleneck,turban,trickery,transponder,toyed,townhouse,thyself,thunderstorm,thinning,thawed,tether,technicalities,tau'ri,tarnished,taffeta,tacked,systolic,swerve,sweepstakes,swabs,suspenders,superwoman,sunsets,succulent,subpoenas,stumper,stosh,stomachache,stewed,steppin,stepatech,stateside,spicoli,sparing,soulless,sonnets,sockets,snatching,smothering,slush,sloman,slashing,sitters,simpleton,sighs,sidra,sickens,shunned,shrunken,showbiz,shopped,shimmering,shagging,semblance,segue,sedation,scuzzlebutt,scumbags,screwin,scoundrels,scarsdale,scabs,saucers,saintly,saddened,runaways,runaround,rheya,resenting,rehashing,rehabilitated,regrettable,refreshed,redial,reconnecting,ravenous,raping,rafting,quandary,pylea,putrid,puffing,psychopathic,prunes,probate,prayin,pomegranate,plummeting,planing,plagues,pinata,pithy,perversion,personals,perched,peeps,peckish,pavarotti,pajama,packin,pacifier,overstepping,okama,obstetrician,nutso,nuance,normalcy,nonnegotiable,nomak,ninny,nines,nicey,newsflash,neutered,nether,negligee,necrosis,navigating,narcissistic,mylie,muses,momento,moisturizer,moderation,misinformed,misconception,minnifield,mikkos,methodical,mebbe,meager,maybes,matchmaking,masry,markovic,malakai,luzhin,lusting,lumberjack,loopholes,loaning,lightening,leotard,launder,lamaze,kubla,kneeling,kibosh,jumpsuit,joliet,jogger,janover,jakovasaurs,irreparable,innocently,inigo,infomercial,inexplicable,indispensable,impregnated,impossibly,imitating,hunches,hummus,houmfort,hothead,hostiles,hooves,hooligans,homos,homie,hisself,heyyy,hesitant,hangout,handsomest,handouts,hairless,gwennie,guzzling,guinevere,grungy,goading,glaring,gavel,gardino,gangrene,fruitful,friendlier,freckle,freakish,forthright,forearm,footnote,flops,fixer,firecracker,finito,figgered,fezzik,fastened,farfetched,fanciful,familiarize,faire,fahrenheit,extravaganza,exploratory,explanatory,everglades,eunuch,estas,escapade,erasers,emptying,embarassing,dweeb,dutiful,dumplings,dries,drafty,dollhouse,dismissing,disgraced,discrepancies,disbelief,disagreeing,digestion,didnt,deviled,deviated,demerol,delectable,decaying,decadent,dears,dateless,d'algout,cultivating,cryto,crumpled,crumbled,cronies,crease,craves,cozying,corduroy,congratulated,confidante,compressions,complicating,compadre,coerce,classier,chums,chumash,chivalrous,chinpoko,charred,chafing,celibacy,carted,carryin,carpeting,carotid,cannibals,candor,butterscotch,busts,busier,bullcrap,buggin,brookside,brodski,brassiere,brainwash,brainiac,botrelle,bonbon,boatload,blimey,blaring,blackness,bipartisan,bimbos,bigamist,biebe,biding,betrayals,bestow,bellerophon,bedpans,bassinet,basking,barzini,barnyard,barfed,backups,audited,asinine,asalaam,arouse,applejack,annoys,anchovies,ampule,alameida,aggravate,adage,accomplices,yokel,y'ever,wringer,witwer,withdrawals,windward,willfully,whorfin,whimsical,whimpering,weddin,weathered,warmest,wanton,volant,visceral,vindication,veggies,urinate,uproar,unwritten,unwrap,unsung,unsubstantiated,unspeakably,unscrupulous,unraveling,unquote,unqualified,unfulfilled,undetectable,underlined,unattainable,unappreciated,ummmm,ulcers,tylenol,tweak,turnin,tuatha,tropez,trellis,toppings,tootin,toodle,tinkering,thrives,thespis,theatrics,thatherton,tempers,tavington,tartar,tampon,swelled,sutures,sustenance,sunflowers,sublet,stubbins,strutting,strewn,stowaway,stoic,sternin,stabilizing,spiraling,spinster,speedometer,speakeasy,soooo,soiled,sneakin,smithereens,smelt,smacks,slaughterhouse,slacks,skids,sketching,skateboards,sizzling,sixes,sirree,simplistic,shouts,shorted,shoelace,sheeit,shards,shackled,sequestered,selmak,seduces,seclusion,seamstress,seabeas,scoops,scooped,scavenger,satch,s'more,rudeness,romancing,rioja,rifkin,rieper,revise,reunions,repugnant,replicating,repaid,renewing,relaxes,rekindle,regrettably,regenerate,reels,reciting,reappear,readin,ratting,rapes,rancher,rammed,rainstorm,railroading,queers,punxsutawney,punishes,pssst,prudy,proudest,protectors,procrastinating,proactive,priss,postmortem,pompoms,poise,pickings,perfectionist,peretti,people'll,pecking,patrolman,paralegal,paragraphs,paparazzi,pankot,pampering,overstep,overpower,outweigh,omnipotent,odious,nuwanda,nurtured,newsroom,neeson,needlepoint,necklaces,neato,muggers,muffler,mousy,mourned,mosey,mopey,mongolians,moldy,misinterpret,minibar,microfilm,mendola,mended,melissande,masturbating,masbath,manipulates,maimed,mailboxes,magnetism,m'lord,m'honey,lymph,lunge,lovelier,lefferts,leezak,ledgers,larraby,laloosh,kundun,kozinski,knockoff,kissin,kiosk,kennedys,kellman,karlo,kaleidoscope,jeffy,jaywalking,instructing,infraction,informer,infarction,impulsively,impressing,impersonated,impeach,idiocy,hyperbole,hurray,humped,huhuh,hsing,hordes,hoodlums,honky,hitchhiker,hideously,heaving,heathcliff,headgear,headboard,hazing,harem,handprint,hairspray,gutiurrez,goosebumps,gondola,glitches,gasping,frolic,freeways,frayed,fortitude,forgetful,forefathers,fonder,foiled,foaming,flossing,flailing,fitzgeralds,firehouse,finders,fiftieth,fellah,fawning,farquaad,faraway,fancied,extremists,exorcist,exhale,ethros,entrust,ennui,energized,encephalitis,embezzling,elster,elixir,electrolytes,duplex,dryers,drexl,dredging,drawback,don'ts,dobisch,divorcee,disrespected,disprove,disobeying,disinfectant,dingy,digress,dieting,dictating,devoured,devise,detonators,desist,deserter,derriere,deron,deceptive,debilitating,deathwok,daffodils,curtsy,cursory,cuppa,cumin,cronkite,cremation,credence,cranking,coverup,courted,countin,counselling,cornball,contentment,consensual,compost,cluett,cleverly,cleansed,cleanliness,chopec,chomp,chins,chime,cheswick,chessler,cheapest,chatted,cauliflower,catharsis,catchin,caress,camcorder,calorie,cackling,bystanders,buttoned,buttering,butted,buries,burgel,buffoon,brogna,bragged,boutros,bogeyman,blurting,blurb,blowup,bloodhound,blissful,birthmark,bigot,bestest,belted,belligerent,beggin,befall,beeswax,beatnik,beaming,barricade,baggoli,badness,awoke,artsy,artful,aroun,armpits,arming,annihilate,anise,angiogram,anaesthetic,amorous,ambiance,alligators,adoration,admittance,adama,abydos,zonked,zhivago,yorkin,wrongfully,writin,wrappers,worrywart,woops,wonderfalls,womanly,wickedness,whoopie,wholeheartedly,whimper,which'll,wheelchairs,what'ya,warranted,wallop,wading,wacked,virginal,vermouth,vermeil,verger,ventriss,veneer,vampira,utero,ushers,urgently,untoward,unshakable,unsettled,unruly,unlocks,ungodly,undue,uncooperative,uncontrollably,unbeatable,twitchy,tumbler,truest,triumphs,triplicate,tribbey,tortures,tongaree,tightening,thorazine,theres,testifies,teenaged,tearful,taxing,taldor,syllabus,swoops,swingin,suspending,sunburn,stuttering,stupor,strides,strategize,strangulation,stooped,stipulation,stingy,stapled,squeaks,squawking,spoilsport,splicing,spiel,spencers,spasms,spaniard,softener,sodding,soapbox,smoldering,smithbauer,skittish,sifting,sickest,sicilians,shuffling,shrivel,segretti,seeping,securely,scurrying,scrunch,scrote,screwups,schenkman,sawing,savin,satine,sapiens,salvaging,salmonella,sacrilege,rumpus,ruffle,roughing,rotted,rondall,ridding,rickshaw,rialto,rhinestone,restrooms,reroute,requisite,repress,rednecks,redeeming,rayed,ravell,raked,raincheck,raffi,racked,pushin,profess,prodding,procure,presuming,preppy,prednisone,potted,posttraumatic,poorhouse,podiatrist,plowed,pledging,playroom,plait,placate,pinback,picketing,photographing,pharoah,petrak,petal,persecuting,perchance,pellets,peeved,peerless,payable,pauses,pathologist,pagliacci,overwrought,overreaction,overqualified,overheated,outcasts,otherworldly,opinionated,oodles,oftentimes,occured,obstinate,nutritionist,numbness,nubile,nooooooo,nobodies,nepotism,neanderthals,mushu,mucus,mothering,mothballs,monogrammed,molesting,misspoke,misspelled,misconstrued,miscalculated,minimums,mince,mildew,mighta,middleman,mementos,mellowed,mayol,mauled,massaged,marmalade,mardi,makings,lundegaard,lovingly,loudest,lotto,loosing,loompa,looming,longs,loathes,littlest,littering,lifelike,legalities,laundered,lapdog,lacerations,kopalski,knobs,knitted,kittridge,kidnaps,kerosene,karras,jungles,jockeys,iranoff,invoices,invigorating,insolence,insincere,insectopia,inhumane,inhaling,ingrates,infestation,individuality,indeterminate,incomprehensible,inadequacy,impropriety,importer,imaginations,illuminating,ignite,hysterics,hypodermic,hyperventilate,hyperactive,humoring,honeymooning,honed,hoist,hoarding,hitching,hiker,hightail,hemoglobin,hell'd,heinie,growin,grasped,grandparent,granddaughters,gouged,goblins,gleam,glades,gigantor,get'em,geriatric,gatekeeper,gargoyles,gardenias,garcon,garbo,gallows,gabbing,futon,fulla,frightful,freshener,fortuitous,forceps,fogged,fodder,foamy,flogging,flaun,flared,fireplaces,feverish,favell,fattest,fattening,fallow,extraordinaire,evacuating,errant,envied,enchant,enamored,egocentric,dussander,dunwitty,dullest,dropout,dredged,dorsia,doornail,donot,dongs,dogged,dodgy,ditty,dishonorable,discriminating,discontinue,dings,dilly,dictation,dialysis,delly,delightfully,daryll,dandruff,cruddy,croquet,cringe,crimp,credo,crackling,courtside,counteroffer,counterfeiting,corrupting,copping,conveyor,contusions,contusion,conspirator,consoling,connoisseur,confetti,composure,compel,colic,coddle,cocksuckers,coattails,cloned,claustrophobia,clamoring,churn,chugga,chirping,chasin,chapped,chalkboard,centimeter,caymans,catheter,casings,caprica,capelli,cannolis,cannoli,camogli,camembert,butchers,butchered,busboys,bureaucrats,buckled,bubbe,brownstone,bravely,brackley,bouquets,botox,boozing,boosters,bodhi,blunders,blunder,blockage,biocyte,betrays,bested,beryllium,beheading,beggar,begbie,beamed,bastille,barstool,barricades,barbecues,barbecued,bandwagon,backfiring,bacarra,avenged,autopsies,aunties,associating,artichoke,arrowhead,appendage,apostrophe,antacid,ansel,annul,amuses,amped,amicable,amberg,alluring,adversaries,admirers,adlai,acupuncture,abnormality,aaaahhhh,zooming,zippity,zipping,zeroed,yuletide,yoyodyne,yengeese,yeahhh,wrinkly,wracked,withered,winks,windmills,whopping,wendle,weigart,waterworks,waterbed,watchful,wantin,wagging,waaah,vying,ventricle,varnish,vacuumed,unreachable,unprovoked,unmistakable,unfriendly,unfolding,underpaid,uncuff,unappealing,unabomber,typhoid,tuxedos,tushie,turds,tumnus,troubadour,trinium,treaters,treads,transpired,transgression,tought,thready,thins,thinners,techs,teary,tattaglia,tassels,tarzana,tanking,tablecloths,synchronize,symptomatic,sycophant,swimmingly,sweatshop,surfboard,superpowers,sunroom,sunblock,sugarplum,stupidly,strumpet,strapless,stooping,stools,stealthy,stalks,stairmaster,staffer,sshhh,squatting,squatters,spectacularly,sorbet,socked,sociable,snubbed,snorting,sniffles,snazzy,snakebite,smuggler,smorgasbord,smooching,slurping,slouch,slingshot,slaved,skimmed,sisterhood,silliest,sidarthur,sheraton,shebang,sharpening,shanghaied,shakers,sendoff,scurvy,scoliosis,scaredy,scagnetti,sawchuk,saugus,sasquatch,sandbag,saltines,s'pose,roston,rostle,riveting,ristle,rifling,revulsion,reverently,retrograde,restful,resents,reptilian,reorganize,renovating,reiterate,reinvent,reinmar,reibers,reechard,recuse,reconciling,recognizance,reclaiming,recitation,recieved,rebate,reacquainted,rascals,railly,quintuplets,quahog,pygmies,puzzling,punctuality,prosthetic,proms,probie,preys,preserver,preppie,poachers,plummet,plumbers,plannin,pitying,pitfalls,piqued,pinecrest,pinches,pillage,pigheaded,physique,pessimistic,persecute,perjure,percentile,pentothal,pensky,penises,peini,pazzi,pastels,parlour,paperweight,pamper,pained,overwhelm,overalls,outrank,outpouring,outhouse,outage,ouija,obstructed,obsessions,obeying,obese,o'riley,o'higgins,nosebleeds,norad,noooooooo,nononono,nonchalant,nippy,neurosis,nekhorvich,necronomicon,naquada,n'est,mystik,mystified,mumps,muddle,mothership,moped,monumentally,monogamous,mondesi,misogynistic,misinterpreting,mindlock,mending,megaphone,meeny,medicating,meanie,masseur,markstrom,marklars,margueritas,manifesting,maharajah,lukewarm,loveliest,loran,lizardo,liquored,lipped,lingers,limey,lemkin,leisurely,lathe,latched,lapping,ladle,krevlorneswath,kosygin,khakis,kenaru,keats,kaitlan,julliard,jollies,jaundice,jargon,jackals,invisibility,insipid,inflamed,inferiority,inexperience,incinerated,incinerate,incendiary,incan,inbred,implicating,impersonator,hunks,horsing,hooded,hippopotamus,hiked,hetson,hetero,hessian,henslowe,hendler,hellstrom,headstone,hayloft,harbucks,handguns,hallucinate,haldol,haggling,gynaecologist,gulag,guilder,guaranteeing,groundskeeper,grindstone,grimoir,grievance,griddle,gribbit,greystone,graceland,gooders,goeth,gentlemanly,gelatin,gawking,ganged,fukes,fromby,frenchmen,foursome,forsley,forbids,footwork,foothold,floater,flinging,flicking,fittest,fistfight,fireballs,fillings,fiddling,fennyman,felonious,felonies,feces,favoritism,fatten,fanatics,faceman,excusing,excepted,entwined,entree,ensconced,eladio,ehrlichman,easterland,dueling,dribbling,drape,downtrodden,doused,dosed,dorleen,dokie,distort,displeased,disown,dismount,disinherited,disarmed,disapproves,diperna,dined,diligent,dicaprio,depress,decoded,debatable,dealey,darsh,damsels,damning,dad'll,d'oeuvre,curlers,curie,cubed,crikey,crepes,countrymen,cornfield,coppers,copilot,copier,cooing,conspiracies,consigliere,condoning,commoner,commies,combust,comas,colds,clawed,clamped,choosy,chomping,chimps,chigorin,chianti,cheep,checkups,cheaters,celibate,cautiously,cautionary,castell,carpentry,caroling,carjacking,caritas,caregiver,cardiology,candlesticks,canasta,cain't,burro,burnin,bunking,bumming,bullwinkle,brummel,brooms,brews,breathin,braslow,bracing,botulism,boorish,bloodless,blayne,blatantly,blankie,bedbugs,becuase,barmaid,bared,baracus,banal,bakes,backpacks,attentions,atrocious,ativan,athame,asunder,astound,assuring,aspirins,asphyxiation,ashtrays,aryans,arnon,apprehension,applauding,anvil,antiquing,antidepressants,annoyingly,amputate,altruistic,alotta,alerting,afterthought,affront,affirm,actuality,abysmal,absentee,yeller,yakushova,wuzzy,wriggle,worrier,woogyman,womanizer,windpipe,windbag,willin,whisking,whimsy,wendall,weeny,weensy,weasels,watery,watcha,wasteful,waski,washcloth,waaay,vouched,viznick,ventriloquist,vendettas,veils,vayhue,vamanos,vadimus,upstage,uppity,unsaid,unlocking,unintentionally,undetected,undecided,uncaring,unbearably,tween,tryout,trotting,trini,trimmings,trickier,treatin,treadstone,trashcan,transcendent,tramps,townsfolk,torturous,torrid,toothpicks,tolerable,tireless,tiptoeing,timmay,tillinghouse,tidying,tibia,thumbing,thrusters,thrashing,these'll,thatos,testicular,teriyaki,tenors,tenacity,tellers,telemetry,tarragon,switchblade,swicker,swells,sweatshirts,swatches,surging,supremely,sump'n,succumb,subsidize,stumbles,stuffs,stoppin,stipulate,stenographer,steamroll,stasis,stagger,squandered,splint,splendidly,splashy,splashing,specter,sorcerers,somewheres,somber,snuggled,snowmobile,sniffed,snags,smugglers,smudged,smirking,smearing,slings,sleet,sleepovers,sleek,slackers,siree,siphoning,singed,sincerest,sickened,shuffled,shriveled,shorthanded,shittin,shish,shipwrecked,shins,sheetrock,shawshank,shamu,sha're,servitude,sequins,seascape,scrapings,scoured,scorching,sandpaper,saluting,salud,ruffled,roughnecks,rougher,rosslyn,rosses,roost,roomy,romping,revolutionize,reprimanded,refute,refrigerated,reeled,redundancies,rectal,recklessly,receding,reassignment,reapers,readout,ration,raring,ramblings,raccoons,quarantined,purging,punters,psychically,premarital,pregnancies,predisposed,precautionary,pollute,podunk,plums,plaything,pixilated,pitting,piranhas,pieced,piddles,pickled,photogenic,phosphorous,pffft,pestilence,pessimist,perspiration,perps,penticoff,passageways,pardons,panics,pancamo,paleontologist,overwhelms,overstating,overpaid,overdid,outlive,orthodontist,orgies,oreos,ordover,ordinates,ooooooh,oooohhh,omelettes,officiate,obtuse,obits,nymph,novocaine,noooooooooo,nipping,nilly,nightstick,negate,neatness,natured,narcotic,narcissism,namun,nakatomi,murky,muchacho,mouthwash,motzah,morsel,morph,morlocks,mooch,moloch,molest,mohra,modus,modicum,mockolate,misdemeanors,miscalculation,middies,meringue,mercilessly,meditating,mayakovsky,maximillian,marlee,markovski,maniacal,maneuvered,magnificence,maddening,lutze,lunged,lovelies,lorry,loosening,lookee,littered,lilac,lightened,laces,kurzon,kurtzweil,kind've,kimono,kenji,kembu,keanu,kazuo,jonesing,jilted,jiggling,jewelers,jewbilee,jacqnoud,jacksons,ivories,insurmountable,innocuous,innkeeper,infantery,indulged,indescribable,incoherent,impervious,impertinent,imperfections,hunnert,huffy,horsies,horseradish,hollowed,hogwash,hockley,hissing,hiromitsu,hidin,hereafter,helpmann,hehehe,haughty,happenings,hankie,handsomely,halliwells,haklar,haise,gunsights,grossly,grope,grocer,grits,gripping,grabby,glorificus,gizzard,gilardi,gibarian,geminon,gasses,garnish,galloping,gairwyn,futterman,futility,fumigated,fruitless,friendless,freon,foregone,forego,floored,flighty,flapjacks,fizzled,ficus,festering,farbman,fabricate,eyghon,extricate,exalted,eventful,esophagus,enterprising,entail,endor,emphatically,embarrasses,electroshock,easel,duffle,drumsticks,dissection,dissected,disposing,disparaging,disorientation,disintegrated,disarming,devoting,dessaline,deprecating,deplorable,delve,degenerative,deduct,decomposed,deathly,dearie,daunting,dankova,cyclotron,cyberspace,cutbacks,culpable,cuddled,crumpets,cruelly,crouching,cranium,cramming,cowering,couric,cordesh,conversational,conclusively,clung,clotting,cleanest,chipping,chimpanzee,chests,cheapen,chainsaws,censure,catapult,caravaggio,carats,captivating,calrissian,butlers,busybody,bussing,bunion,bulimic,budging,brung,browbeat,brokenhearted,brecher,breakdowns,bracebridge,boning,blowhard,blisters,blackboard,bigotry,bialy,bhamra,bended,begat,battering,baste,basquiat,barricaded,barometer,balled,baited,badenweiler,backhand,ascenscion,argumentative,appendicitis,apparition,anxiously,antagonistic,angora,anacott,amniotic,ambience,alonna,aleck,akashic,ageless,abouts,aawwww,aaaaarrrrrrggghhh,aaaaaa,zendi,yuppies,yodel,y'hear,wrangle,wombosi,wittle,withstanding,wisecracks,wiggling,wierd,whittlesley,whipper,whattya,whatsamatter,whatchamacallit,whassup,whad'ya,weakling,warfarin,waponis,wampum,wadn't,vorash,vizzini,virtucon,viridiana,veracity,ventilated,varicose,varcon,vandalized,vamos,vamoose,vaccinated,vacationing,usted,urinal,uppers,unwittingly,unsealed,unplanned,unhinged,unhand,unfathomable,unequivocally,unbreakable,unadvisedly,udall,tynacorp,tuxes,tussle,turati,tunic,tsavo,trussed,troublemakers,trollop,tremors,transsexual,transfusions,toothbrushes,toned,toddlers,tinted,tightened,thundering,thorpey,this'd,thespian,thaddius,tenuous,tenths,tenement,telethon,teleprompter,teaspoon,taunted,tattle,tardiness,taraka,tappy,tapioca,tapeworm,talcum,tacks,swivel,swaying,superpower,summarize,sumbitch,sultry,suburbia,styrofoam,stylings,strolls,strobe,stockpile,stewardesses,sterilized,sterilize,stealin,stakeouts,squawk,squalor,squabble,sprinkled,sportsmanship,spokes,spiritus,sparklers,spareribs,sowing,sororities,sonovabitch,solicit,softy,softness,softening,snuggling,snatchers,snarling,snarky,snacking,smears,slumped,slowest,slithering,sleazebag,slayed,slaughtering,skidded,skated,sivapathasundaram,sissies,silliness,silences,sidecar,sicced,shylock,shtick,shrugged,shriek,shoves,should'a,shortcake,shockingly,shirking,shaves,shatner,sharpener,shapely,shafted,sexless,septum,selflessness,seabea,scuff,screwball,scoping,scooch,scolding,schnitzel,schemed,scalper,santy,sankara,sanest,salesperson,sakulos,safehouse,sabers,runes,rumblings,rumbling,ruijven,ringers,righto,rhinestones,retrieving,reneging,remodelling,relentlessly,regurgitate,refills,reeking,reclusive,recklessness,recanted,ranchers,rafer,quaking,quacks,prophesied,propensity,profusely,problema,prided,prays,postmark,popsicles,poodles,pollyanna,polaroids,pokes,poconos,pocketful,plunging,plugging,pleeease,platters,pitied,pinetti,piercings,phooey,phonies,pestering,periscope,pentagram,pelts,patronized,paramour,paralyze,parachutes,pales,paella,paducci,owatta,overdone,overcrowded,overcompensating,ostracized,ordinate,optometrist,operandi,omens,okayed,oedipal,nuttier,nuptial,nunheim,noxious,nourish,notepad,nitroglycerin,nibblet,neuroses,nanosecond,nabbit,mythic,munchkins,multimillion,mulroney,mucous,muchas,mountaintop,morlin,mongorians,moneybags,mom'll,molto,mixup,misgivings,mindset,michalchuk,mesmerized,merman,mensa,meaty,mbwun,materialize,materialistic,masterminded,marginally,mapuhe,malfunctioning,magnify,macnamara,macinerney,machinations,macadamia,lysol,lurks,lovelorn,lopsided,locator,litback,litany,linea,limousines,limes,lighters,liebkind,levity,levelheaded,letterhead,lesabre,leron,lepers,lefts,leftenant,laziness,layaway,laughlan,lascivious,laryngitis,lapsed,landok,laminated,kurten,kobol,knucklehead,knowed,knotted,kirkeby,kinsa,karnovsky,jolla,jimson,jettison,jeric,jawed,jankis,janitors,jango,jalopy,jailbreak,jackers,jackasses,invalidate,intercepting,intercede,insinuations,infertile,impetuous,impaled,immerse,immaterial,imbeciles,imagines,idyllic,idolized,icebox,i'd've,hypochondriac,hyphen,hurtling,hurried,hunchback,hullo,horsting,hoooo,homeboys,hollandaise,hoity,hijinks,hesitates,herrero,herndorff,helplessly,heeyy,heathen,hearin,headband,harrassment,harpies,halstrom,hahahahaha,hacer,grumbling,grimlocks,grift,greets,grandmothers,grander,grafts,gordievsky,gondorff,godorsky,glscripts,gaudy,gardeners,gainful,fuses,fukienese,frizzy,freshness,freshening,fraught,frantically,foxbooks,fortieth,forked,foibles,flunkies,fleece,flatbed,fisted,firefight,fingerpaint,filibuster,fhloston,fenceline,femur,fatigues,fanucci,fantastically,familiars,falafel,fabulously,eyesore,expedient,ewwww,eviscerated,erogenous,epidural,enchante,embarassed,embarass,embalming,elude,elspeth,electrocute,eigth,eggshell,echinacea,eases,earpiece,earlobe,dumpsters,dumbshit,dumbasses,duloc,duisberg,drummed,drinkers,dressy,dorma,doily,divvy,diverting,dissuade,disrespecting,displace,disorganized,disgustingly,discord,disapproving,diligence,didja,diced,devouring,detach,destructing,desolate,demerits,delude,delirium,degrade,deevak,deemesa,deductions,deduce,debriefed,deadbeats,dateline,darndest,damnable,dalliance,daiquiri,d'agosta,cussing,cryss,cripes,cretins,crackerjack,cower,coveting,couriers,countermission,cotswolds,convertibles,conversationalist,consorting,consoled,consarn,confides,confidentially,commited,commiserate,comme,comforter,comeuppance,combative,comanches,colosseum,colling,coexist,coaxing,cliffside,chutes,chucked,chokes,childlike,childhoods,chickening,chenowith,charmingly,changin,catsup,captioning,capsize,cappucino,capiche,candlewell,cakewalk,cagey,caddie,buxley,bumbling,bulky,buggered,brussel,brunettes,brumby,brotha,bronck,brisket,bridegroom,braided,bovary,bookkeeper,bluster,bloodline,blissfully,blase,billionaires,bicker,berrisford,bereft,berating,berate,bendy,belive,belated,beikoku,beens,bedspread,bawdy,barreling,baptize,banya,balthazar,balmoral,bakshi,bails,badgered,backstreet,awkwardly,auras,attuned,atheists,astaire,assuredly,arrivederci,appetit,appendectomy,apologetic,antihistamine,anesthesiologist,amulets,albie,alarmist,aiight,adstream,admirably,acquaint,abound,abominable,aaaaaaah,zekes,zatunica,wussy,worded,wooed,woodrell,wiretap,windowsill,windjammer,windfall,whisker,whims,whatiya,whadya,weirdly,weenies,waunt,washout,wanto,waning,victimless,verdad,veranda,vandaley,vancomycin,valise,vaguest,upshot,unzip,unwashed,untrained,unstuck,unprincipled,unmentionables,unjustly,unfolds,unemployable,uneducated,unduly,undercut,uncovering,unconsciousness,unconsciously,tyndareus,turncoat,turlock,tulle,tryouts,trouper,triplette,trepkos,tremor,treeger,trapeze,traipse,tradeoff,trach,torin,tommorow,tollan,toity,timpani,thumbprint,thankless,tell'em,telepathy,telemarketing,telekinesis,teevee,teeming,tarred,tambourine,talentless,swooped,switcheroo,swirly,sweatpants,sunstroke,suitors,sugarcoat,subways,subterfuge,subservient,subletting,stunningly,strongbox,striptease,stravanavitch,stradling,stoolie,stodgy,stocky,stifle,stealer,squeezes,squatter,squarely,sprouted,spool,spindly,speedos,soups,soundly,soulmates,somebody'll,soliciting,solenoid,sobering,snowflakes,snowballs,snores,slung,slimming,skulk,skivvies,skewered,skewer,sizing,sistine,sidebar,sickos,shushing,shunt,shugga,shone,shol'va,sharpened,shapeshifter,shadowing,shadoe,selectman,sefelt,seared,scrounging,scribbling,scooping,scintillating,schmoozing,scallops,sapphires,sanitarium,sanded,safes,rudely,roust,rosebush,rosasharn,rondell,roadhouse,riveted,rewrote,revamp,retaliatory,reprimand,replicators,replaceable,remedied,relinquishing,rejoicing,reincarnated,reimbursed,reevaluate,redid,redefine,recreating,reconnected,rebelling,reassign,rearview,rayne,ravings,ratso,rambunctious,radiologist,quiver,quiero,queef,qualms,pyrotechnics,pulsating,psychosomatic,proverb,promiscuous,profanity,prioritize,preying,predisposition,precocious,precludes,prattling,prankster,povich,potting,postpartum,porridge,polluting,plowing,pistachio,pissin,pickpocket,physicals,peruse,pertains,personified,personalize,perjured,perfecting,pepys,pepperdine,pembry,peering,peels,pedophile,patties,passkey,paratrooper,paraphernalia,paralyzing,pandering,paltry,palpable,pagers,pachyderm,overstay,overestimated,overbite,outwit,outgrow,outbid,ooops,oomph,oohhh,oldie,obliterate,objectionable,nygma,notting,noches,nitty,nighters,newsstands,newborns,neurosurgery,nauseated,nastiest,narcolepsy,mutilate,muscled,murmur,mulva,mulling,mukada,muffled,morgues,moonbeams,monogamy,molester,molestation,molars,moans,misprint,mismatched,mirth,mindful,mimosas,millander,mescaline,menstrual,menage,mellowing,medevac,meddlesome,matey,manicures,malevolent,madmen,macaroons,lydell,lycra,lunchroom,lunching,lozenges,looped,litigious,liquidate,linoleum,lingk,limitless,limber,lilacs,ligature,liftoff,lemmiwinks,leggo,learnin,lazarre,lawyered,lactose,knelt,kenosha,kemosabe,jussy,junky,jordy,jimmies,jeriko,jakovasaur,issacs,isabela,irresponsibility,ironed,intoxication,insinuated,inherits,ingest,ingenue,inflexible,inflame,inevitability,inedible,inducement,indignant,indictments,indefensible,incomparable,incommunicado,improvising,impounded,illogical,ignoramus,hydrochloric,hydrate,hungover,humorless,humiliations,hugest,hoverdrone,hovel,hmmph,hitchhike,hibernating,henchman,helloooo,heirlooms,heartsick,headdress,hatches,harebrained,hapless,hanen,handsomer,hallows,habitual,guten,gummy,guiltier,guidebook,gstaad,gruff,griss,grieved,grata,gorignak,goosed,goofed,glowed,glitz,glimpses,glancing,gilmores,gianelli,geraniums,garroway,gangbusters,gamblers,galls,fuddy,frumpy,frowning,frothy,fro'tak,frere,fragrances,forgettin,follicles,flowery,flophouse,floatin,flirts,flings,flatfoot,fingerprinting,fingerprinted,fingering,finald,fillet,fianc,femoral,federales,fawkes,fascinates,farfel,fambly,falsified,fabricating,exterminators,expectant,excusez,excrement,excercises,evian,etins,esophageal,equivalency,equate,equalizer,entrees,enquire,endearment,empathetic,emailed,eggroll,earmuffs,dyslexic,duper,duesouth,drunker,druggie,dreadfully,dramatics,dragline,downplay,downers,dominatrix,doers,docket,docile,diversify,distracts,disloyalty,disinterested,discharging,disagreeable,dirtier,dinghy,dimwitted,dimoxinil,dimmy,diatribe,devising,deviate,detriment,desertion,depressants,depravity,deniability,delinquents,defiled,deepcore,deductive,decimate,deadbolt,dauthuille,dastardly,daiquiris,daggers,dachau,curiouser,curdled,cucamonga,cruller,cruces,crosswalk,crinkle,crescendo,cremate,counseled,couches,cornea,corday,copernicus,contrition,contemptible,constipated,conjoined,confounded,condescend,concoct,conch,compensating,committment,commandeered,comely,coddled,cockfight,cluttered,clunky,clownfish,cloaked,clenched,cleanin,civilised,circumcised,cimmeria,cilantro,chutzpah,chucking,chiseled,chicka,chattering,cervix,carrey,carpal,carnations,cappuccinos,candied,calluses,calisthenics,bushy,burners,budington,buchanans,brimming,braids,boycotting,bouncers,botticelli,botherin,bookkeeping,bogyman,bogged,bloodthirsty,blintzes,blanky,binturong,billable,bigboote,bewildered,betas,bequeath,behoove,befriend,bedpost,bedded,baudelaires,barreled,barboni,barbeque,bangin,baltus,bailout,backstabber,baccarat,awning,augie,arguillo,archway,apricots,apologising,annyong,anchorman,amenable,amazement,allspice,alannis,airfare,airbags,ahhhhhhhhh,ahhhhhhhh,ahhhhhhh,agitator,adrenal,acidosis,achoo,accessorizing,accentuate,abrasions,abductor,aaaahhh,aaaaaaaa,aaaaaaa,zeroing,zelner,zeldy,yevgeny,yeska,yellows,yeesh,yeahh,yamuri,wouldn't've,workmanship,woodsman,winnin,winked,wildness,whoring,whitewash,whiney,when're,wheezer,wheelman,wheelbarrow,westerburg,weeding,watermelons,washboard,waltzes,wafting,voulez,voluptuous,vitone,vigilantes,videotaping,viciously,vices,veruca,vermeer,verifying,vasculitis,valets,upholstered,unwavering,untold,unsympathetic,unromantic,unrecognizable,unpredictability,unmask,unleashing,unintentional,unglued,unequivocal,underrated,underfoot,unchecked,unbutton,unbind,unbiased,unagi,uhhhhh,tugging,triads,trespasses,treehorn,traviata,trappers,transplants,trannie,tramping,tracheotomy,tourniquet,tooty,toothless,tomarrow,toasters,thruster,thoughtfulness,thornwood,tengo,tenfold,telltale,telephoto,telephoned,telemarketer,tearin,tastic,tastefully,tasking,taser,tamed,tallow,taketh,taillight,tadpoles,tachibana,syringes,sweated,swarthy,swagger,surges,supermodels,superhighway,sunup,sun'll,sulfa,sugarless,sufficed,subside,strolled,stringy,strengthens,straightest,straightens,storefront,stopper,stockpiling,stimulant,stiffed,steyne,sternum,stepladder,stepbrother,steers,steelheads,steakhouse,stathis,stankylecartmankennymr,standoffish,stalwart,squirted,spritz,sprig,sprawl,spousal,sphincter,spenders,spearmint,spatter,spangled,southey,soured,sonuvabitch,somethng,snuffed,sniffs,smokescreen,smilin,slobs,sleepwalker,sleds,slays,slayage,skydiving,sketched,skanks,sixed,siphoned,siphon,simpering,sigfried,sidearm,siddons,sickie,shuteye,shuffleboard,shrubberies,shrouded,showmanship,shouldn't've,shoplift,shiatsu,sentries,sentance,sensuality,seething,secretions,searing,scuttlebutt,sculpt,scowling,scouring,scorecard,schoolers,schmucks,scepters,scaly,scalps,scaffolding,sauces,sartorius,santen,salivating,sainthood,saget,saddens,rygalski,rusting,ruination,rueland,rudabaga,rottweiler,roofies,romantics,rollerblading,roldy,roadshow,rickets,rible,rheza,revisiting,retentive,resurface,restores,respite,resounding,resorting,resists,repulse,repressing,repaying,reneged,refunds,rediscover,redecorated,reconstructive,recommitted,recollect,receptacle,reassess,reanimation,realtors,razinin,rationalization,ratatouille,rashum,rasczak,rancheros,rampler,quizzing,quips,quartered,purring,pummeling,puede,proximo,prospectus,pronouncing,prolonging,procreation,proclamations,principled,prides,preoccupation,prego,precog,prattle,pounced,potshots,potpourri,porque,pomegranates,polenta,plying,pluie,plesac,playmates,plantains,pillowcase,piddle,pickers,photocopied,philistine,perpetuate,perpetually,perilous,pawned,pausing,pauper,parter,parlez,parlay,pally,ovulation,overtake,overstate,overpowering,overpowered,overconfident,overbooked,ovaltine,outweighs,outings,ottos,orrin,orifice,orangutan,oopsy,ooooooooh,oooooo,ooohhhh,ocular,obstruct,obscenely,o'dwyer,nutjob,nunur,notifying,nostrand,nonny,nonfat,noblest,nimble,nikes,nicht,newsworthy,nestled,nearsighted,ne'er,nastier,narco,nakedness,muted,mummified,mudda,mozzarella,moxica,motivator,motility,mothafucka,mortmain,mortgaged,mores,mongers,mobbed,mitigating,mistah,misrepresented,mishke,misfortunes,misdirection,mischievous,mineshaft,millaney,microwaves,metzenbaum,mccovey,masterful,masochistic,marliston,marijawana,manya,mantumbi,malarkey,magnifique,madrona,madox,machida,m'hidi,lullabies,loveliness,lotions,looka,lompoc,litterbug,litigator,lithe,liquorice,linds,limericks,lightbulb,lewises,letch,lemec,layover,lavatory,laurels,lateness,laparotomy,laboring,kuato,kroff,krispy,krauts,knuckleheads,kitschy,kippers,kimbrow,keypad,keepsake,kebab,karloff,junket,judgemental,jointed,jezzie,jetting,jeeze,jeeter,jeesus,jeebs,janeane,jails,jackhammer,ixnay,irritates,irritability,irrevocable,irrefutable,irked,invoking,intricacies,interferon,intents,insubordinate,instructive,instinctive,inquisitive,inlay,injuns,inebriated,indignity,indecisive,incisors,incacha,inalienable,impresses,impregnate,impregnable,implosion,idolizes,hypothyroidism,hypoglycemic,huseni,humvee,huddling,honing,hobnobbing,hobnob,histrionics,histamine,hirohito,hippocratic,hindquarters,hikita,hikes,hightailed,hieroglyphics,heretofore,herbalist,hehey,hedriks,heartstrings,headmistress,headlight,hardheaded,happend,handlebars,hagitha,habla,gyroscope,guys'd,guy'd,guttersnipe,grump,growed,grovelling,groan,greenbacks,gravedigger,grating,grasshoppers,grandiose,grandest,grafted,gooood,goood,gooks,godsakes,goaded,glamorama,giveth,gingham,ghostbusters,germane,georgy,gazzo,gazelles,gargle,garbled,galgenstein,gaffe,g'day,fyarl,furnish,furies,fulfills,frowns,frowned,frighteningly,freebies,freakishly,forewarned,foreclose,forearms,fordson,fonics,flushes,flitting,flemmer,flabby,fishbowl,fidgeting,fevers,feigning,faxing,fatigued,fathoms,fatherless,fancier,fanatical,factored,eyelid,eyeglasses,expresso,expletive,expectin,excruciatingly,evidentiary,ever'thing,eurotrash,eubie,estrangement,erlich,epitome,entrap,enclose,emphysema,embers,emasculating,eighths,eardrum,dyslexia,duplicitous,dumpty,dumbledore,dufus,duddy,duchamp,drunkenness,drumlin,drowns,droid,drinky,drifts,drawbridge,dramamine,douggie,douchebag,dostoyevsky,doodling,don'tcha,domineering,doings,dogcatcher,doctoring,ditzy,dissimilar,dissecting,disparage,disliking,disintegrating,dishwalla,dishonored,dishing,disengaged,disavowed,dippy,diorama,dimmed,dilate,digitalis,diggory,dicing,diagnosing,devola,desolation,dennings,denials,deliverance,deliciously,delicacies,degenerates,degas,deflector,defile,deference,decrepit,deciphered,dawdle,dauphine,daresay,dangles,dampen,damndest,cucumbers,cucaracha,cryogenically,croaks,croaked,criticise,crisper,creepiest,creams,crackle,crackin,covertly,counterintelligence,corrosive,cordially,cops'll,convulsions,convoluted,conversing,conga,confrontational,confab,condolence,condiments,complicit,compiegne,commodus,comings,cometh,collusion,collared,cockeyed,clobber,clemonds,clarithromycin,cienega,christmasy,christmassy,chloroform,chippie,chested,cheeco,checklist,chauvinist,chandlers,chambermaid,chakras,cellophane,caveat,cataloguing,cartmanland,carples,carny,carded,caramels,cappy,caped,canvassing,callback,calibrated,calamine,buttermilk,butterfingers,bunsen,bulimia,bukatari,buildin,budged,brobich,bringer,brendell,brawling,bratty,braised,boyish,boundless,botch,boosh,bookies,bonbons,bodes,bobunk,bluntly,blossoming,bloomers,bloodstains,bloodhounds,blech,biter,biometric,bioethics,bijan,bigoted,bicep,bereaved,bellowing,belching,beholden,beached,batmobile,barcodes,barch,barbecuing,bandanna,backwater,backtrack,backdraft,augustino,atrophy,atrocity,atley,atchoo,asthmatic,assoc,armchair,arachnids,aptly,appetizing,antisocial,antagonizing,anorexia,anini,andersons,anagram,amputation,alleluia,airlock,aimless,agonized,agitate,aggravating,aerosol,acing,accomplishing,accidently,abuser,abstain,abnormally,aberration,aaaaahh,zlotys,zesty,zerzura,zapruder,zantopia,yelburton,yeess,y'knowwhati'msayin,wwhat,wussies,wrenched,would'a,worryin,wormser,wooooo,wookiee,wolchek,wishin,wiseguys,windbreaker,wiggy,wieners,wiedersehen,whoopin,whittled,wherefore,wharvey,welts,wellstone,wedges,wavered,watchit,wastebasket,wango,waken,waitressed,wacquiem,vrykolaka,voula,vitally,visualizing,viciousness,vespers,vertes,verily,vegetarians,vater,vaporize,vannacutt,vallens,ussher,urinating,upping,unwitting,untangle,untamed,unsanitary,unraveled,unopened,unisex,uninvolved,uninteresting,unintelligible,unimaginative,undeserving,undermines,undergarments,unconcerned,tyrants,typist,tykes,tybalt,twosome,twits,tutti,turndown,tularemia,tuberculoma,tsimshian,truffaut,truer,truant,trove,triumphed,tripe,trigonometry,trifled,trifecta,tribulations,tremont,tremoille,transcends,trafficker,touchin,tomfoolery,tinkered,tinfoil,tightrope,thousan,thoracotomy,thesaurus,thawing,thatta,tessio,temps,taxidermist,tator,tachycardia,t'akaya,swelco,sweetbreads,swatting,supercollider,sunbathing,summarily,suffocation,sueleen,succinct,subsided,submissive,subjecting,subbing,subatomic,stupendous,stunted,stubble,stubbed,streetwalker,strategizing,straining,straightaway,stoli,stiffer,stickup,stens,steamroller,steadwell,steadfast,stateroom,stans,sshhhh,squishing,squinting,squealed,sprouting,sprimp,spreadsheets,sprawled,spotlights,spooning,spirals,speedboat,spectacles,speakerphone,southglen,souse,soundproof,soothsayer,sommes,somethings,solidify,soars,snorted,snorkeling,snitches,sniping,snifter,sniffin,snickering,sneer,snarl,smila,slinking,slanted,slanderous,slammin,skimp,skilosh,siteid,sirloin,singe,sighing,sidekicks,sicken,showstopper,shoplifter,shimokawa,sherborne,shavadai,sharpshooters,sharking,shagged,shaddup,senorita,sesterces,sensuous,seahaven,scullery,scorcher,schotzie,schnoz,schmooze,schlep,schizo,scents,scalping,scalped,scallop,scalding,sayeth,saybrooke,sawed,savoring,sardine,sandstorm,sandalwood,salutations,sagman,s'okay,rsvp'd,rousted,rootin,romper,romanovs,rollercoaster,rolfie,robinsons,ritzy,ritualistic,ringwald,rhymed,rheingold,rewrites,revoking,reverts,retrofit,retort,retinas,respirations,reprobate,replaying,repaint,renquist,renege,relapsing,rekindled,rejuvenating,rejuvenated,reinstating,recriminations,rechecked,reassemble,rears,reamed,reacquaint,rayanne,ravish,rathole,raspail,rarest,rapists,rants,racketeer,quittin,quitters,quintessential,queremos,quellek,quelle,quasimodo,pyromaniac,puttanesca,puritanical,purer,puree,pungent,pummel,puedo,psychotherapist,prosecutorial,prosciutto,propositioning,procrastination,probationary,primping,preventative,prevails,preservatives,preachy,praetorians,practicality,powders,potus,postop,positives,poser,portolano,portokalos,poolside,poltergeists,pocketed,poach,plummeted,plucking,plimpton,playthings,plastique,plainclothes,pinpointed,pinkus,pinks,pigskin,piffle,pictionary,piccata,photocopy,phobias,perignon,perfumes,pecks,pecked,patently,passable,parasailing,paramus,papier,paintbrush,pacer,paaiint,overtures,overthink,overstayed,overrule,overestimate,overcooked,outlandish,outgrew,outdoorsy,outdo,orchestrate,oppress,opposable,oooohh,oomupwah,okeydokey,okaaay,ohashi,of'em,obscenities,oakie,o'gar,nurection,nostradamus,norther,norcom,nooch,nonsensical,nipped,nimbala,nervously,neckline,nebbleman,narwhal,nametag,n'n't,mycenae,muzak,muumuu,mumbled,mulvehill,muggings,muffet,mouthy,motivates,motaba,moocher,mongi,moley,moisturize,mohair,mocky,mmkay,mistuh,missis,misdeeds,mincemeat,miggs,miffed,methadone,messieur,menopausal,menagerie,mcgillicuddy,mayflowers,matrimonial,matick,masai,marzipan,maplewood,manzelle,mannequins,manhole,manhandle,malfunctions,madwoman,machiavelli,lynley,lynched,lurconis,lujack,lubricant,looove,loons,loofah,lonelyhearts,lollipops,lineswoman,lifers,lexter,lepner,lemony,leggy,leafy,leadeth,lazerus,lazare,lawford,languishing,lagoda,ladman,kundera,krinkle,krendler,kreigel,kowolski,knockdown,knifed,kneed,kneecap,kids'll,kennie,kenmore,keeled,kazootie,katzenmoyer,kasdan,karak,kapowski,kakistos,julyan,jockstrap,jobless,jiggly,jaunt,jarring,jabbering,irrigate,irrevocably,irrationally,ironies,invitro,intimated,intently,intentioned,intelligently,instill,instigator,instep,inopportune,innuendoes,inflate,infects,infamy,indiscretions,indiscreet,indio,indignities,indict,indecision,inconspicuous,inappropriately,impunity,impudent,impotence,implicates,implausible,imperfection,impatience,immutable,immobilize,idealist,iambic,hysterically,hyperspace,hygienist,hydraulics,hydrated,huzzah,husks,hunched,huffed,hubris,hubbub,hovercraft,houngan,hosed,horoscopes,hopelessness,hoodwinked,honorably,honeysuckle,homegirl,holiest,hippity,hildie,hieroglyphs,hexton,herein,heckle,heaping,healthilizer,headfirst,hatsue,harlot,hardwired,halothane,hairstyles,haagen,haaaaa,gutting,gummi,groundless,groaning,gristle,grills,graynamore,grabbin,goodes,goggle,glittering,glint,gleaming,glassy,girth,gimbal,giblets,gellers,geezers,geeze,garshaw,gargantuan,garfunkel,gangway,gandarium,gamut,galoshes,gallivanting,gainfully,gachnar,fusionlips,fusilli,furiously,frugal,fricking,frederika,freckling,frauds,fountainhead,forthwith,forgo,forgettable,foresight,foresaw,fondling,fondled,fondle,folksy,fluttering,fluffing,floundering,flirtatious,flexing,flatterer,flaring,fixating,finchy,figurehead,fiendish,fertilize,ferment,fending,fellahs,feelers,fascinate,fantabulous,falsify,fallopian,faithless,fairer,fainter,failings,facetious,eyepatch,exxon,extraterrestrials,extradite,extracurriculars,extinguish,expunged,expelling,exorbitant,exhilarated,exertion,exerting,excercise,everbody,evaporated,escargot,escapee,erases,epizootics,epithelials,ephrum,entanglements,enslave,engrossed,emphatic,emeralds,ember,emancipated,elevates,ejaculate,effeminate,eccentricities,easygoing,earshot,dunks,dullness,dulli,dulled,drumstick,dropper,driftwood,dregs,dreck,dreamboat,draggin,downsizing,donowitz,dominoes,diversions,distended,dissipate,disraeli,disqualify,disowned,dishwashing,disciplining,discerning,disappoints,dinged,digested,dicking,detonating,despising,depressor,depose,deport,dents,defused,deflecting,decryption,decoys,decoupage,decompress,decibel,decadence,deafening,dawning,dater,darkened,dappy,dallying,dagon,czechoslovakians,cuticles,cuteness,cupboards,culottes,cruisin,crosshairs,cronyn,criminalistics,creatively,creaming,crapping,cranny,cowed,contradicting,constipation,confining,confidences,conceiving,conceivably,concealment,compulsively,complainin,complacent,compels,communing,commode,comming,commensurate,columnists,colonoscopy,colchicine,coddling,clump,clubbed,clowning,cliffhanger,clang,cissy,choosers,choker,chiffon,channeled,chalet,cellmates,cathartic,caseload,carjack,canvass,canisters,candlestick,candlelit,camry,calzones,calitri,caldy,byline,butterball,bustier,burlap,bureaucrat,buffoons,buenas,brookline,bronzed,broiled,broda,briss,brioche,briar,breathable,brays,brassieres,boysenberry,bowline,boooo,boonies,booklets,bookish,boogeyman,boogey,bogas,boardinghouse,bluuch,blundering,bluer,blowed,blotchy,blossomed,bloodwork,bloodied,blithering,blinks,blathering,blasphemous,blacking,birdson,bings,bfmid,bfast,bettin,berkshires,benjamins,benevolence,benched,benatar,bellybutton,belabor,behooves,beddy,beaujolais,beattle,baxworth,baseless,barfing,bannish,bankrolled,banek,ballsy,ballpoint,baffling,badder,badda,bactine,backgammon,baako,aztreonam,authoritah,auctioning,arachtoids,apropos,aprons,apprised,apprehensive,anythng,antivenin,antichrist,anorexic,anoint,anguished,angioplasty,angio,amply,ampicillin,amphetamines,alternator,alcove,alabaster,airlifted,agrabah,affidavits,admonished,admonish,addled,addendum,accuser,accompli,absurdity,absolved,abrusso,abreast,aboot,abductions,abducting,aback,ababwa,aaahhhh,zorin,zinthar,zinfandel,zillions,zephyrs,zatarcs,zacks,youuu,yokels,yardstick,yammer,y'understand,wynette,wrung,wreaths,wowed,wouldn'ta,worming,wormed,workday,woodsy,woodshed,woodchuck,wojadubakowski,withering,witching,wiseass,wiretaps,wining,willoby,wiccaning,whupped,whoopi,whoomp,wholesaler,whiteness,whiner,whatchya,wharves,wenus,weirdoes,weaning,watusi,waponi,waistband,wackos,vouching,votre,vivica,viveca,vivant,vivacious,visor,visitin,visage,vicrum,vetted,ventriloquism,venison,varnsen,vaporized,vapid,vanstock,uuuuh,ushering,urologist,urination,upstart,uprooted,unsubtitled,unspoiled,unseat,unseasonably,unseal,unsatisfying,unnerve,unlikable,unleaded,uninsured,uninspired,unicycle,unhooked,unfunny,unfreezing,unflattering,unfairness,unexpressed,unending,unencumbered,unearth,undiscovered,undisciplined,understan,undershirt,underlings,underline,undercurrent,uncivilized,uncharacteristic,umpteenth,uglies,tuney,trumps,truckasaurus,trubshaw,trouser,tringle,trifling,trickster,trespassers,trespasser,traumas,trattoria,trashes,transgressions,trampling,tp'ed,toxoplasmosis,tounge,tortillas,topsy,topple,topnotch,tonsil,tions,timmuh,timithious,tilney,tighty,tightness,tightens,tidbits,ticketed,thyme,threepio,thoughtfully,thorkel,thommo,thing'll,thefts,that've,thanksgivings,tetherball,testikov,terraforming,tepid,tendonitis,tenboom,telex,teenybopper,tattered,tattaglias,tanneke,tailspin,tablecloth,swooping,swizzle,swiping,swindled,swilling,swerving,sweatshops,swaddling,swackhammer,svetkoff,supossed,superdad,sumptuous,sugary,sugai,subvert,substantiate,submersible,sublimating,subjugation,stymied,strychnine,streetlights,strassmans,stranglehold,strangeness,straddling,straddle,stowaways,stotch,stockbrokers,stifling,stepford,steerage,steena,statuary,starlets,staggeringly,ssshhh,squaw,spurt,spungeon,spritzer,sprightly,sprays,sportswear,spoonful,splittin,splitsville,speedily,specialise,spastic,sparrin,souvlaki,southie,sourpuss,soupy,soundstage,soothes,somebody'd,softest,sociopathic,socialized,snyders,snowmobiles,snowballed,snatches,smugness,smoothest,smashes,sloshed,sleight,skyrocket,skied,skewed,sixpence,sipowicz,singling,simulates,shyness,shuvanis,showoff,shortsighted,shopkeeper,shoehorn,shithouse,shirtless,shipshape,shifu,shelve,shelbyville,sheepskin,sharpens,shaquille,shanshu,servings,sequined,seizes,seashells,scrambler,scopes,schnauzer,schmo,schizoid,scampered,savagely,saudis,santas,sandovals,sanding,saleswoman,sagging,s'cuse,rutting,ruthlessly,runneth,ruffians,rubes,rosalita,rollerblades,rohypnol,roasts,roadies,ritten,rippling,ripples,rigoletto,richardo,rethought,reshoot,reserving,reseda,rescuer,reread,requisitions,repute,reprogram,replenish,repetitious,reorganizing,reinventing,reinvented,reheat,refrigerators,reenter,recruiter,recliner,rawdy,rashes,rajeski,raison,raisers,rages,quinine,questscape,queller,pygmalion,pushers,pusan,purview,pumpin,pubescent,prudes,provolone,propriety,propped,procrastinate,processional,preyed,pretrial,portent,pooling,poofy,polloi,policia,poacher,pluses,pleasuring,platitudes,plateaued,plaguing,pittance,pinheads,pincushion,pimply,pimped,piggyback,piecing,phillipe,philipse,philby,pharaohs,petyr,petitioner,peshtigo,pesaram,persnickety,perpetrate,percolating,pepto,penne,penell,pemmican,peeks,pedaling,peacemaker,pawnshop,patting,pathologically,patchouli,pasts,pasties,passin,parlors,paltrow,palamon,padlock,paddling,oversleep,overheating,overdosed,overcharge,overblown,outrageously,ornery,opportune,oooooooooh,oohhhh,ohhhhhh,ogres,odorless,obliterated,nyong,nymphomaniac,ntozake,novocain,nough,nonnie,nonissue,nodules,nightmarish,nightline,niceties,newsman,needra,nedry,necking,navour,nauseam,nauls,narim,namath,nagged,naboo,n'sync,myslexia,mutator,mustafi,musketeer,murtaugh,murderess,munching,mumsy,muley,mouseville,mortifying,morgendorffers,moola,montel,mongoloid,molestered,moldings,mocarbies,mo'ss,mixers,misrell,misnomer,misheard,mishandled,miscreant,misconceptions,miniscule,millgate,mettle,metricconverter,meteors,menorah,mengele,melding,meanness,mcgruff,mcarnold,matzoh,matted,mastectomy,massager,marveling,marooned,marmaduke,marick,manhandled,manatees,man'll,maltin,maliciously,malfeasance,malahide,maketh,makeovers,maiming,machismo,lumpectomy,lumbering,lucci,lording,lorca,lookouts,loogie,loners,loathed,lissen,lighthearted,lifer,lickin,lewen,levitation,lestercorp,lessee,lentils,legislate,legalizing,lederhosen,lawmen,lasskopf,lardner,lambeau,lamagra,ladonn,lactic,lacquer,labatier,krabappel,kooks,knickknacks,klutzy,kleynach,klendathu,kinross,kinkaid,kind'a,ketch,kesher,karikos,karenina,kanamits,junshi,jumbled,joust,jotted,jobson,jingling,jigalong,jerries,jellies,jeeps,javna,irresistable,internist,intercranial,inseminated,inquisitor,infuriate,inflating,infidelities,incessantly,incensed,incase,incapacitate,inasmuch,inaccuracies,imploding,impeding,impediments,immaturity,illegible,iditarod,icicles,ibuprofen,i'i'm,hymie,hydrolase,hunker,humps,humons,humidor,humdinger,humbling,huggin,huffing,housecleaning,hothouse,hotcakes,hosty,hootenanny,hootchie,hoosegow,honks,honeymooners,homily,homeopathic,hitchhikers,hissed,hillnigger,hexavalent,hewwo,hershe,hermey,hergott,henny,hennigans,henhouse,hemolytic,helipad,heifer,hebrews,hebbing,heaved,headlock,harrowing,harnessed,hangovers,handi,handbasket,halfrek,hacene,gyges,guys're,gundersons,gumption,gruntmaster,grubs,grossie,groped,grins,greaseball,gravesite,gratuity,granma,grandfathers,grandbaby,gradski,gracing,gossips,gooble,goners,golitsyn,gofer,godsake,goddaughter,gnats,gluing,glares,givers,ginza,gimmie,gimmee,gennero,gemme,gazpacho,gazed,gassy,gargling,gandhiji,galvanized,gallbladder,gaaah,furtive,fumigation,fucka,fronkonsteen,frills,freezin,freewald,freeloader,frailty,forger,foolhardy,fondest,fomin,followin,follicle,flotation,flopping,floodgates,flogged,flicked,flenders,fleabag,fixings,fixable,fistful,firewater,firelight,fingerbang,finalizing,fillin,filipov,fiderer,felling,feldberg,feign,faunia,fatale,farkus,fallible,faithfulness,factoring,eyeful,extramarital,exterminated,exhume,exasperated,eviscerate,estoy,esmerelda,escapades,epoxy,enticed,enthused,entendre,engrossing,endorphins,emptive,emmys,eminently,embezzler,embarressed,embarrassingly,embalmed,eludes,eling,elated,eirie,egotitis,effecting,eerily,eecom,eczema,earthy,earlobes,eally,dyeing,dwells,duvet,duncans,dulcet,droves,droppin,drools,drey'auc,downriver,domesticity,dollop,doesnt,dobler,divulged,diversionary,distancing,dispensers,disorienting,disneyworld,dismissive,disingenuous,disheveled,disfiguring,dinning,dimming,diligently,dilettante,dilation,dickensian,diaphragms,devastatingly,destabilize,desecrate,deposing,deniece,demony,delving,delicates,deigned,defraud,deflower,defibrillator,defiantly,defenceless,defacing,deconstruction,decompose,deciphering,decibels,deceptively,deceptions,decapitation,debutantes,debonair,deadlier,dawdling,davic,darwinism,darnit,darks,danke,danieljackson,dangled,cytoxan,cutout,cutlery,curveball,curfews,cummerbund,crunches,crouched,crisps,cripples,crilly,cribs,crewman,creepin,creeds,credenza,creak,crawly,crawlin,crawlers,crated,crackheads,coworker,couldn't've,corwins,coriander,copiously,convenes,contraceptives,contingencies,contaminating,conniption,condiment,concocting,comprehending,complacency,commendatore,comebacks,com'on,collarbone,colitis,coldly,coiffure,coffers,coeds,codependent,cocksucking,cockney,cockles,clutched,closeted,cloistered,cleve,cleats,clarifying,clapped,cinnabar,chunnel,chumps,cholinesterase,choirboy,chocolatey,chlamydia,chigliak,cheesie,chauvinistic,chasm,chartreuse,charo,charnier,chapil,chalked,chadway,certifiably,cellulite,celled,cavalcade,cataloging,castrated,cassio,cashews,cartouche,carnivore,carcinogens,capulet,captivated,capt'n,cancellations,campin,callate,callar,caffeinated,cadavers,cacophony,cackle,buzzes,buttoning,busload,burglaries,burbs,buona,bunions,bullheaded,buffs,bucyk,buckling,bruschetta,browbeating,broomsticks,broody,bromly,brolin,briefings,brewskies,breathalyzer,breakups,bratwurst,brania,braiding,brags,braggin,bradywood,bottomed,bossa,bordello,bookshelf,boogida,bondsman,bolder,boggles,bludgeoned,blowtorch,blotter,blips,blemish,bleaching,blainetologists,blading,blabbermouth,birdseed,bimmel,biloxi,biggly,bianchinni,betadine,berenson,belus,belloq,begets,befitting,beepers,beelzebub,beefed,bedridden,bedevere,beckons,beaded,baubles,bauble,battleground,bathrobes,basketballs,basements,barroom,barnacle,barkin,barked,baretta,bangles,bangler,banality,bambang,baltar,ballplayers,bagman,baffles,backroom,babysat,baboons,averse,audiotape,auctioneer,atten,atcha,astonishment,arugula,arroz,antihistamines,annoyances,anesthesiology,anatomically,anachronism,amiable,amaretto,allahu,alight,aimin,ailment,afterglow,affronte,advil,adrenals,actualization,acrost,ached,accursed,accoutrements,absconded,aboveboard,abetted,aargh,aaaahh,zuwicky,zolda,ziploc,zakamatak,youve,yippie,yesterdays,yella,yearns,yearnings,yearned,yawning,yalta,yahtzee,y'mean,y'are,wuthering,wreaks,worrisome,workiiing,wooooooo,wonky,womanizing,wolodarsky,wiwith,withdraws,wishy,wisht,wipers,wiper,winos,windthorne,windsurfing,windermere,wiggled,wiggen,whwhat,whodunit,whoaaa,whittling,whitesnake,whereof,wheezing,wheeze,whatd'ya,whataya,whammo,whackin,wellll,weightless,weevil,wedgies,webbing,weasly,wayside,waxes,waturi,washy,washrooms,wandell,waitaminute,waddya,waaaah,vornac,vishnoor,virulent,vindictiveness,vinceres,villier,vigeous,vestigial,ventilate,vented,venereal,veering,veered,veddy,vaslova,valosky,vailsburg,vaginas,vagas,urethra,upstaged,uploading,unwrapping,unwieldy,untapped,unsatisfied,unquenchable,unnerved,unmentionable,unlovable,unknowns,uninformed,unimpressed,unhappily,unguarded,unexplored,undergarment,undeniably,unclench,unclaimed,uncharacteristically,unbuttoned,unblemished,ululd,uhhhm,tweeze,tutsami,tushy,tuscarora,turkle,turghan,turbinium,tubers,trucoat,troxa,tropicana,triquetra,trimmers,triceps,trespassed,traya,traumatizing,transvestites,trainors,tradin,trackers,townies,tourelles,toucha,tossin,tortious,topshop,topes,tonics,tongs,tomsk,tomorrows,toiling,toddle,tizzy,tippers,timmi,thwap,thusly,ththe,thrusts,throwers,throwed,throughway,thickening,thermonuclear,thelwall,thataway,terrifically,tendons,teleportation,telepathically,telekinetic,teetering,teaspoons,tarantulas,tapas,tanned,tangling,tamales,tailors,tahitian,tactful,tachy,tablespoon,syrah,synchronicity,synch,synapses,swooning,switchman,swimsuits,sweltering,sweetly,suvolte,suslov,surfed,supposition,suppertime,supervillains,superfluous,superego,sunspots,sunning,sunless,sundress,suckah,succotash,sublevel,subbasement,studious,striping,strenuously,straights,stonewalled,stillness,stilettos,stevesy,steno,steenwyck,stargates,stammering,staedert,squiggly,squiggle,squashing,squaring,spreadsheet,spramp,spotters,sporto,spooking,splendido,spittin,spirulina,spiky,spate,spartacus,spacerun,soonest,something'll,someth,somepin,someone'll,sofas,soberly,sobered,snowmen,snowbank,snowballing,snivelling,sniffling,snakeskin,snagging,smush,smooter,smidgen,smackers,slumlord,slossum,slimmer,slighted,sleepwalk,sleazeball,skokie,skeptic,sitarides,sistah,sipped,sindell,simpletons,simony,silkwood,silks,silken,sightless,sideboard,shuttles,shrugging,shrouds,showy,shoveled,shouldn'ta,shoplifters,shitstorm,sheeny,shapetype,shaming,shallows,shackle,shabbily,shabbas,seppuku,senility,semite,semiautomatic,selznick,secretarial,sebacio,scuzzy,scummy,scrutinized,scrunchie,scribbled,scotches,scolded,scissor,schlub,scavenging,scarin,scarfing,scallions,scald,savour,savored,saute,sarcoidosis,sandbar,saluted,salish,saith,sailboats,sagittarius,sacre,saccharine,sacamano,rushdie,rumpled,rumba,rulebook,rubbers,roughage,rotisserie,rootie,roofy,roofie,romanticize,rittle,ristorante,rippin,rinsing,ringin,rincess,rickety,reveling,retest,retaliating,restorative,reston,restaurateur,reshoots,resetting,resentments,reprogramming,repossess,repartee,renzo,remore,remitting,remeber,relaxants,rejuvenate,rejections,regenerated,refocus,referrals,reeno,recycles,recrimination,reclining,recanting,reattach,reassigning,razgul,raved,rattlesnakes,rattles,rashly,raquetball,ransack,raisinettes,raheem,radisson,radishes,raban,quoth,qumari,quints,quilts,quilting,quien,quarreled,purty,purblind,punchbowl,publically,psychotics,psychopaths,psychoanalyze,pruning,provasik,protectin,propping,proportioned,prophylactic,proofed,prompter,procreate,proclivities,prioritizing,prinze,pricked,press'll,presets,prescribes,preocupe,prejudicial,prefex,preconceived,precipice,pralines,pragmatist,powerbar,pottie,pottersville,potsie,potholes,posses,posies,portkey,porterhouse,pornographers,poring,poppycock,poppers,pomponi,pokin,poitier,podiatry,pleeze,pleadings,playbook,platelets,plane'arium,placebos,place'll,pistachios,pirated,pinochle,pineapples,pinafore,pimples,piggly,piddling,picon,pickpockets,picchu,physiologically,physic,phobic,philandering,phenomenally,pheasants,pewter,petticoat,petronis,petitioning,perturbed,perpetuating,permutat,perishable,perimeters,perfumed,percocet,per'sus,pepperjack,penalize,pelting,pellet,peignoir,pedicures,peckers,pecans,pawning,paulsson,pattycake,patrolmen,patois,pathos,pasted,parishioner,parcheesi,parachuting,papayas,pantaloons,palpitations,palantine,paintballing,overtired,overstress,oversensitive,overnights,overexcited,overanxious,overachiever,outwitted,outvoted,outnumber,outlast,outlander,out've,orphey,orchestrating,openers,ooooooo,okies,ohhhhhhhhh,ohhhhhhhh,ogling,offbeat,obsessively,obeyed,o'hana,o'bannon,o'bannion,numpce,nummy,nuked,nuances,nourishing,nosedive,norbu,nomlies,nomine,nixed,nihilist,nightshift,newmeat,neglectful,neediness,needin,naphthalene,nanocytes,nanite,naivete,n'yeah,mystifying,myhnegon,mutating,musing,mulled,muggy,muerto,muckraker,muchachos,mountainside,motherless,mosquitos,morphed,mopped,moodoo,moncho,mollem,moisturiser,mohicans,mocks,mistresses,misspent,misinterpretation,miscarry,minuses,mindee,mimes,millisecond,milked,mightn't,mightier,mierzwiak,microchips,meyerling,mesmerizing,mershaw,meecrob,medicate,meddled,mckinnons,mcgewan,mcdunnough,mcats,mbien,matzah,matriarch,masturbated,masselin,martialed,marlboros,marksmanship,marinate,marchin,manicured,malnourished,malign,majorek,magnon,magnificently,macking,machiavellian,macdougal,macchiato,macaws,macanaw,m'self,lydells,lusts,lucite,lubricants,lopper,lopped,loneliest,lonelier,lomez,lojack,loath,liquefy,lippy,limps,likin,lightness,liesl,liebchen,licious,libris,libation,lhamo,leotards,leanin,laxatives,lavished,latka,lanyard,lanky,landmines,lameness,laddies,lacerated,labored,l'amour,kreskin,kovitch,kournikova,kootchy,konoss,knknow,knickety,knackety,kmart,klicks,kiwanis,kissable,kindergartners,kilter,kidnet,kid'll,kicky,kickbacks,kickback,kholokov,kewpie,kendo,katra,kareoke,kafelnikov,kabob,junjun,jumba,julep,jordie,jondy,jolson,jenoff,jawbone,janitorial,janiro,ipecac,invigorated,intruded,intros,intravenously,interruptus,interrogations,interject,interfacing,interestin,insuring,instilled,insensitivity,inscrutable,inroads,innards,inlaid,injector,ingratitude,infuriates,infra,infliction,indelicate,incubators,incrimination,inconveniencing,inconsolable,incestuous,incas,incarcerate,inbreeding,impudence,impressionists,impeached,impassioned,imipenem,idling,idiosyncrasies,icebergs,hypotensive,hydrochloride,hushed,humus,humph,hummm,hulking,hubcaps,hubald,howya,howbout,how'll,housebroken,hotwire,hotspots,hotheaded,horrace,hopsfield,honto,honkin,honeymoons,homewrecker,hombres,hollers,hollerin,hoedown,hoboes,hobbling,hobble,hoarse,hinky,highlighters,hexes,heru'ur,hernias,heppleman,hell're,heighten,heheheheheh,heheheh,hedging,heckling,heckled,heavyset,heatshield,heathens,heartthrob,headpiece,hayseed,haveo,hauls,hasten,harridan,harpoons,hardens,harcesis,harbouring,hangouts,halkein,haleh,halberstam,hairnet,hairdressers,hacky,haaaa,h'yah,gusta,gushy,gurgling,guilted,gruel,grudging,grrrrrr,grosses,groomsmen,griping,gravest,gratified,grated,goulash,goopy,goona,goodly,godliness,godawful,godamn,glycerin,glutes,glowy,globetrotters,glimpsed,glenville,glaucoma,girlscout,giraffes,gilbey,gigglepuss,ghora,gestating,gelato,geishas,gearshift,gayness,gasped,gaslighting,garretts,garba,gablyczyck,g'head,fumigating,fumbling,fudged,fuckwad,fuck're,fuchsia,fretting,freshest,frenchies,freezers,fredrica,fraziers,fraidy,foxholes,fourty,fossilized,forsake,forfeits,foreclosed,foreal,footsies,florists,flopped,floorshow,floorboard,flinching,flecks,flaubert,flatware,flatulence,flatlined,flashdance,flail,flagging,fiver,fitzy,fishsticks,finetti,finelli,finagle,filko,fieldstone,fibber,ferrini,feedin,feasting,favore,fathering,farrouhk,farmin,fairytale,fairservice,factoid,facedown,fabled,eyeballin,extortionist,exquisitely,expedited,exorcise,existentialist,execs,exculpatory,exacerbate,everthing,eventuality,evander,euphoric,euphemisms,estamos,erred,entitle,enquiries,enormity,enfants,endive,encyclopedias,emulating,embittered,effortless,ectopic,ecirc,easely,earphones,earmarks,dweller,durslar,durned,dunois,dunking,dunked,dumdum,dullard,dudleys,druthers,druggist,drossos,drooled,driveways,drippy,dreamless,drawstring,drang,drainpipe,dozing,dotes,dorkface,doorknobs,doohickey,donnatella,doncha,domicile,dokos,dobermans,dizzying,divola,ditsy,distaste,disservice,dislodged,dislodge,disinherit,disinformation,discounting,dinka,dimly,digesting,diello,diddling,dictatorships,dictators,diagnostician,devours,devilishly,detract,detoxing,detours,detente,destructs,desecrated,derris,deplore,deplete,demure,demolitions,demean,delish,delbruck,delaford,degaulle,deftly,deformity,deflate,definatly,defector,decrypted,decontamination,decapitate,decanter,dardis,dampener,damme,daddy'll,dabbling,dabbled,d'etre,d'argent,d'alene,d'agnasti,czechoslovakian,cymbal,cyberdyne,cutoffs,cuticle,curvaceous,curiousity,crowing,crowed,croutons,cropped,criminy,crescentis,crashers,cranwell,coverin,courtrooms,countenance,cosmically,cosign,corroboration,coroners,cornflakes,copperpot,copperhead,copacetic,coordsize,convulsing,consults,conjures,congenial,concealer,compactor,commercialism,cokey,cognizant,clunkers,clumsily,clucking,cloves,cloven,cloths,clothe,clods,clocking,clings,clavicle,classless,clashing,clanking,clanging,clamping,civvies,citywide,circulatory,circuited,chronisters,chromic,choos,chloroformed,chillun,cheesed,chatterbox,chaperoned,channukah,cerebellum,centerpieces,centerfold,ceecee,ccedil,cavorting,cavemen,cauterized,cauldwell,catting,caterine,cassiopeia,carves,cartwheel,carpeted,carob,caressing,carelessly,careening,capricious,capitalistic,capillaries,candidly,camaraderie,callously,calfskin,caddies,buttholes,busywork,busses,burps,burgomeister,bunkhouse,bungchow,bugler,buffets,buffed,brutish,brusque,bronchitis,bromden,brolly,broached,brewskis,brewin,brean,breadwinner,brana,bountiful,bouncin,bosoms,borgnine,bopping,bootlegs,booing,bombosity,bolting,boilerplate,bluey,blowback,blouses,bloodsuckers,bloodstained,bloat,bleeth,blackface,blackest,blackened,blacken,blackballed,blabs,blabbering,birdbrain,bipartisanship,biodegradable,biltmore,bilked,big'uns,bidet,besotted,bernheim,benegas,bendiga,belushi,bellboys,belittling,behinds,begone,bedsheets,beckoning,beaute,beaudine,beastly,beachfront,bathes,batak,baser,baseballs,barbella,bankrolling,bandaged,baerly,backlog,backin,babying,azkaban,awwwww,aviary,authorizes,austero,aunty,attics,atreus,astounded,astonish,artemus,arses,arintero,appraiser,apathetic,anybody'd,anxieties,anticlimactic,antar,anglos,angleman,anesthetist,androscoggin,andolini,andale,amway,amuck,amniocentesis,amnesiac,americano,amara,alvah,altruism,alternapalooza,alphabetize,alpaca,allus,allergist,alexandros,alaikum,akimbo,agoraphobia,agides,aggrhh,aftertaste,adoptions,adjuster,addictions,adamantium,activator,accomplishes,aberrant,aaaaargh,aaaaaaaaaaaaa,a'ight,zzzzzzz,zucchini,zookeeper,zirconia,zippers,zequiel,zellary,zeitgeist,zanuck,zagat,you'n,ylang,yes'm,yenta,yecchh,yecch,yawns,yankin,yahdah,yaaah,y'got,xeroxed,wwooww,wristwatch,wrangled,wouldst,worthiness,worshiping,wormy,wormtail,wormholes,woosh,wollsten,wolfing,woefully,wobbling,wintry,wingding,windstorm,windowtext,wiluna,wilting,wilted,willick,willenholly,wildflowers,wildebeest,whyyy,whoppers,whoaa,whizzing,whizz,whitest,whistled,whist,whinny,wheelies,whazzup,whatwhatwhaaat,whato,whatdya,what'dya,whacks,wewell,wetsuit,welluh,weeps,waylander,wavin,wassail,wasnt,warneford,warbucks,waltons,wallbanger,waiving,waitwait,vowing,voucher,vornoff,vorhees,voldemort,vivre,vittles,vindaloo,videogames,vichyssoise,vicarious,vesuvius,verguenza,ven't,velveteen,velour,velociraptor,vastness,vasectomies,vapors,vanderhof,valmont,validates,valiantly,vacuums,usurp,usernum,us'll,urinals,unyielding,unvarnished,unturned,untouchables,untangled,unsecured,unscramble,unreturned,unremarkable,unpretentious,unnerstand,unmade,unimpeachable,unfashionable,underwrite,underlining,underling,underestimates,underappreciated,uncouth,uncork,uncommonly,unclog,uncircumcised,unchallenged,uncas,unbuttoning,unapproved,unamerican,unafraid,umpteen,umhmm,uhwhy,ughuh,typewriters,twitches,twitched,twirly,twinkling,twinges,twiddling,turners,turnabout,tumblin,tryed,trowel,trousseau,trivialize,trifles,tribianni,trenchcoat,trembled,traumatize,transitory,transients,transfuse,transcribing,tranq,trampy,traipsed,trainin,trachea,traceable,touristy,toughie,toscanini,tortola,tortilla,torreon,toreador,tommorrow,tollbooth,tollans,toidy,togas,tofurkey,toddling,toddies,toasties,toadstool,to've,tingles,timin,timey,timetables,tightest,thuggee,thrusting,thrombus,throes,thrifty,thornharts,thinnest,thicket,thetas,thesulac,tethered,testaburger,tersenadine,terrif,terdlington,tepui,temping,tector,taxidermy,tastebuds,tartlets,tartabull,tar'd,tantamount,tangy,tangles,tamer,tabula,tabletops,tabithia,szechwan,synthedyne,svenjolly,svengali,survivalists,surmise,surfboards,surefire,suprise,supremacists,suppositories,superstore,supercilious,suntac,sunburned,summercliff,sullied,sugared,suckle,subtleties,substantiated,subsides,subliminal,subhuman,strowman,stroked,stroganoff,streetlight,straying,strainer,straighter,straightener,stoplight,stirrups,stewing,stereotyping,stepmommy,stephano,stashing,starshine,stairwells,squatsie,squandering,squalid,squabbling,squab,sprinkling,spreader,spongy,spokesmen,splintered,spittle,spitter,spiced,spews,spendin,spect,spearchucker,spatulas,southtown,soused,soshi,sorter,sorrowful,sooth,some'in,soliloquy,soiree,sodomized,sobriki,soaping,snows,snowcone,snitching,snitched,sneering,snausages,snaking,smoothed,smoochies,smarten,smallish,slushy,slurring,sluman,slithers,slippin,sleuthing,sleeveless,skinless,skillfully,sketchbook,skagnetti,sista,sinning,singularly,sinewy,silverlake,siguto,signorina,sieve,sidearms,shying,shunning,shtud,shrieks,shorting,shortbread,shopkeepers,shmancy,shizzit,shitheads,shitfaced,shipmates,shiftless,shelving,shedlow,shavings,shatters,sharifa,shampoos,shallots,shafter,sha'nauc,sextant,serviceable,sepsis,senores,sendin,semis,semanski,selflessly,seinfelds,seers,seeps,seductress,secaucus,sealant,scuttling,scusa,scrunched,scissorhands,schreber,schmancy,scamps,scalloped,savoir,savagery,sarong,sarnia,santangel,samool,sallow,salino,safecracker,sadism,sacrilegious,sabrini,sabath,s'aright,ruttheimer,rudest,rubbery,rousting,rotarian,roslin,roomed,romari,romanica,rolltop,rolfski,rockettes,roared,ringleader,riffing,ribcage,rewired,retrial,reting,resuscitated,restock,resale,reprogrammed,replicant,repentant,repellant,repays,repainting,renegotiating,rendez,remem,relived,relinquishes,relearn,relaxant,rekindling,rehydrate,refueled,refreshingly,refilling,reexamine,reeseman,redness,redeemable,redcoats,rectangles,recoup,reciprocated,reassessing,realy,realer,reachin,re'kali,rawlston,ravages,rappaports,ramoray,ramming,raindrops,rahesh,radials,racists,rabartu,quiches,quench,quarreling,quaintly,quadrants,putumayo,put'em,purifier,pureed,punitis,pullout,pukin,pudgy,puddings,puckering,pterodactyl,psychodrama,psats,protestations,protectee,prosaic,propositioned,proclivity,probed,printouts,prevision,pressers,preset,preposition,preempt,preemie,preconceptions,prancan,powerpuff,potties,potpie,poseur,porthole,poops,pooping,pomade,polyps,polymerized,politeness,polisher,polack,pocketknife,poatia,plebeian,playgroup,platonically,platitude,plastering,plasmapheresis,plaids,placemats,pizzazz,pintauro,pinstripes,pinpoints,pinkner,pincer,pimento,pileup,pilates,pigmen,pieeee,phrased,photocopies,phoebes,philistines,philanderer,pheromone,phasers,pfeffernuesse,pervs,perspire,personify,perservere,perplexed,perpetrating,perkiness,perjurer,periodontist,perfunctory,perdido,percodan,pentameter,pentacle,pensive,pensione,pennybaker,pennbrooke,penhall,pengin,penetti,penetrates,pegnoir,peeve,peephole,pectorals,peckin,peaky,peaksville,paxcow,paused,patted,parkishoff,parkers,pardoning,paraplegic,paraphrasing,paperers,papered,pangs,paneling,palooza,palmed,palmdale,palatable,pacify,pacified,owwwww,oversexed,overrides,overpaying,overdrawn,overcompensate,overcomes,overcharged,outmaneuver,outfoxed,oughtn't,ostentatious,oshun,orthopedist,or'derves,ophthalmologist,operagirl,oozes,oooooooh,onesie,omnis,omelets,oktoberfest,okeydoke,ofthe,ofher,obstetrical,obeys,obeah,o'henry,nyquil,nyanyanyanyah,nuttin,nutsy,nutball,nurhachi,numbskull,nullifies,nullification,nucking,nubbin,nourished,nonspecific,noing,noinch,nohoho,nobler,nitwits,newsprint,newspaperman,newscaster,neuropathy,netherworld,neediest,navasky,narcissists,napped,nafta,mache,mykonos,mutilating,mutherfucker,mutha,mutates,mutate,musn't,murchy,multitasking,mujeeb,mudslinging,muckraking,mousetrap,mourns,mournful,motherf,mostro,morphing,morphate,moralistic,moochy,mooching,monotonous,monopolize,monocle,molehill,moland,mofet,mockup,mobilizing,mmmmmmm,mitzvahs,mistreating,misstep,misjudge,misinformation,misdirected,miscarriages,miniskirt,mindwarped,minced,milquetoast,miguelito,mightily,midstream,midriff,mideast,microbe,methuselah,mesdames,mescal,men'll,memma,megaton,megara,megalomaniac,meeee,medulla,medivac,meaninglessness,mcnuggets,mccarthyism,maypole,may've,mauve,mateys,marshack,markles,marketable,mansiere,manservant,manse,manhandling,mallomars,malcontent,malaise,majesties,mainsail,mailmen,mahandra,magnolias,magnified,magev,maelstrom,machu,macado,m'boy,m'appelle,lustrous,lureen,lunges,lumped,lumberyard,lulled,luego,lucks,lubricated,loveseat,loused,lounger,loski,lorre,loora,looong,loonies,loincloth,lofts,lodgers,lobbing,loaner,livered,liqueur,ligourin,lifesaving,lifeguards,lifeblood,liaisons,let'em,lesbianism,lence,lemonlyman,legitimize,leadin,lazars,lazarro,lawyering,laugher,laudanum,latrines,lations,laters,lapels,lakefront,lahit,lafortunata,lachrymose,l'italien,kwaini,kruczynski,kramerica,kowtow,kovinsky,korsekov,kopek,knowakowski,knievel,knacks,kiowas,killington,kickball,keyworth,keymaster,kevie,keveral,kenyons,keggers,keepsakes,kechner,keaty,kavorka,karajan,kamerev,kaggs,jujyfruit,jostled,jonestown,jokey,joists,jocko,jimmied,jiggled,jests,jenzen,jenko,jellyman,jedediah,jealitosis,jaunty,jarmel,jankle,jagoff,jagielski,jackrabbits,jabbing,jabberjaw,izzat,irresponsibly,irrepressible,irregularity,irredeemable,inuvik,intuitions,intubated,intimates,interminable,interloper,intercostal,instyle,instigate,instantaneously,ining,ingrown,ingesting,infusing,infringe,infinitum,infact,inequities,indubitably,indisputable,indescribably,indentation,indefinable,incontrovertible,inconsequential,incompletes,incoherently,inclement,incidentals,inarticulate,inadequacies,imprudent,improprieties,imprison,imprinted,impressively,impostors,importante,imperious,impale,immodest,immobile,imbedded,imbecilic,illegals,idn't,hysteric,hypotenuse,hygienic,hyeah,hushpuppies,hunhh,humpback,humored,hummed,humiliates,humidifier,huggy,huggers,huckster,hotbed,hosing,hosers,horsehair,homebody,homebake,holing,holies,hoisting,hogwallop,hocks,hobbits,hoaxes,hmmmmm,hisses,hippest,hillbillies,hilarity,heurh,herniated,hermaphrodite,hennifer,hemlines,hemline,hemery,helplessness,helmsley,hellhound,heheheheh,heeey,hedda,heartbeats,heaped,healers,headstart,headsets,headlong,hawkland,havta,haulin,harvey'll,hanta,hansom,hangnail,handstand,handrail,handoff,hallucinogen,hallor,halitosis,haberdashery,gypped,guy'll,gumbel,guerillas,guava,guardrail,grunther,grunick,groppi,groomer,grodin,gripes,grinds,grifters,gretch,greevey,greasing,graveyards,grandkid,grainy,gouging,gooney,googly,goldmuff,goldenrod,goingo,godly,gobbledygook,gobbledegook,glues,gloriously,glengarry,glassware,glamor,gimmicks,giggly,giambetti,ghoulish,ghettos,ghali,gether,geriatrics,gerbils,geosynchronous,georgio,gente,gendarme,gelbman,gazillionth,gayest,gauging,gastro,gaslight,gasbag,garters,garish,garas,gantu,gangy,gangly,gangland,galling,gadda,furrowed,funnies,funkytown,fugimotto,fudging,fuckeen,frustrates,froufrou,froot,fromberge,frizzies,fritters,frightfully,friendliest,freeloading,freelancing,freakazoid,fraternization,framers,fornication,fornicating,forethought,footstool,foisting,focussing,focking,flurries,fluffed,flintstones,fledermaus,flayed,flawlessly,flatters,flashbang,flapped,fishies,firmer,fireproof,firebug,fingerpainting,finessed,findin,financials,finality,fillets,fiercest,fiefdom,fibbing,fervor,fentanyl,fenelon,fedorchuk,feckless,feathering,faucets,farewells,fantasyland,fanaticism,faltered,faggy,faberge,extorting,extorted,exterminating,exhumation,exhilaration,exhausts,exfoliate,excels,exasperating,exacting,everybody'd,evasions,espressos,esmail,errrr,erratically,eroding,ernswiler,epcot,enthralled,ensenada,enriching,enrage,enhancer,endear,encrusted,encino,empathic,embezzle,emanates,electricians,eking,egomaniacal,egging,effacing,ectoplasm,eavesdropped,dummkopf,dugray,duchaisne,drunkard,drudge,droop,droids,drips,dripped,dribbles,drazens,downy,downsize,downpour,dosages,doppelganger,dopes,doohicky,dontcha,doneghy,divining,divest,diuretics,diuretic,distrustful,disrupts,dismemberment,dismember,disinfect,disillusionment,disheartening,discourteous,discotheque,discolored,dirtiest,diphtheria,dinks,dimpled,didya,dickwad,diatribes,diathesis,diabetics,deviants,detonates,detests,detestable,detaining,despondent,desecration,derision,derailing,deputized,depressors,dependant,dentures,denominators,demur,demonology,delts,dellarte,delacour,deflated,defib,defaced,decorators,deaqon,davola,datin,darwinian,darklighters,dandelions,dampened,damaskinos,dalrimple,d'peshu,d'hoffryn,d'astier,cynics,cutesy,cutaway,curmudgeon,curdle,culpability,cuisinart,cuffing,crypts,cryptid,crunched,crumblers,crudely,crosscheck,croon,crissake,crevasse,creswood,creepo,creases,creased,creaky,cranks,crabgrass,coveralls,couple'a,coughs,coslaw,corporeal,cornucopia,cornering,corks,cordoned,coolly,coolin,cookbooks,contrite,contented,constrictor,confound,confit,confiscating,condoned,conditioners,concussions,comprendo,comers,combustible,combusted,collingswood,coldness,coitus,codicil,coasting,clydesdale,cluttering,clunker,clunk,clumsiness,clotted,clothesline,clinches,clincher,cleverness,clench,clein,cleanses,claymores,clammed,chugging,chronically,christsakes,choque,chompers,chiseling,chirpy,chirp,chinks,chingachgook,chickenpox,chickadee,chewin,chessboard,chargin,chanteuse,chandeliers,chamdo,chagrined,chaff,certs,certainties,cerreno,cerebrum,censured,cemetary,caterwauling,cataclysmic,casitas,cased,carvel,carting,carrear,carolling,carolers,carnie,cardiogram,carbuncle,capulets,canines,candaules,canape,caldecott,calamitous,cadillacs,cachet,cabeza,cabdriver,buzzards,butai,businesswomen,bungled,bumpkins,bummers,bulldoze,buffybot,bubut,bubbies,brrrrr,brownout,brouhaha,bronzing,bronchial,broiler,briskly,briefcases,bricked,breezing,breeher,breakable,breadstick,bravenet,braved,brandies,brainwaves,brainiest,braggart,bradlee,boys're,boys'll,boys'd,boutonniere,bossed,bosomy,borans,boosts,bookshelves,bookends,boneless,bombarding,bollo,boinked,boink,bluest,bluebells,bloodshot,blockhead,blockbusters,blithely,blather,blankly,bladders,blackbeard,bitte,bippy,biogenetics,bilge,bigglesworth,bicuspids,beususe,betaseron,besmirch,bernece,bereavement,bentonville,benchley,benching,bembe,bellyaching,bellhops,belie,beleaguered,behrle,beginnin,begining,beenie,beefs,beechwood,becau,beaverhausen,beakers,bazillion,baudouin,barrytown,barringtons,barneys,barbs,barbers,barbatus,bankrupted,bailiffs,backslide,baby'd,baaad,b'fore,awwwk,aways,awakes,automatics,authenticate,aught,aubyn,attired,attagirl,atrophied,asystole,astroturf,assertiveness,artichokes,arquillians,aright,archenemy,appraise,appeased,antin,anspaugh,anesthetics,anaphylactic,amscray,ambivalence,amalio,alriiight,alphabetized,alpena,alouette,allora,alliteration,allenwood,allegiances,algerians,alcerro,alastor,ahaha,agitators,aforethought,advertises,admonition,adirondacks,adenoids,acupuncturist,acula,actuarial,activators,actionable,achingly,accusers,acclimated,acclimate,absurdly,absorbent,absolvo,absolutes,absences,abdomenizer,aaaaaaaaah,aaaaaaaaaa,a'right\".split(\",\"),\n        male_names:\"james,john,robert,michael,william,david,richard,charles,joseph,thomas,christopher,daniel,paul,mark,donald,george,kenneth,steven,edward,brian,ronald,anthony,kevin,jason,matthew,gary,timothy,jose,larry,jeffrey,frank,scott,eric,stephen,andrew,raymond,gregory,joshua,jerry,dennis,walter,patrick,peter,harold,douglas,henry,carl,arthur,ryan,roger,joe,juan,jack,albert,jonathan,justin,terry,gerald,keith,samuel,willie,ralph,lawrence,nicholas,roy,benjamin,bruce,brandon,adam,harry,fred,wayne,billy,steve,louis,jeremy,aaron,randy,eugene,carlos,russell,bobby,victor,ernest,phillip,todd,jesse,craig,alan,shawn,clarence,sean,philip,chris,johnny,earl,jimmy,antonio,danny,bryan,tony,luis,mike,stanley,leonard,nathan,dale,manuel,rodney,curtis,norman,marvin,vincent,glenn,jeffery,travis,jeff,chad,jacob,melvin,alfred,kyle,francis,bradley,jesus,herbert,frederick,ray,joel,edwin,don,eddie,ricky,troy,randall,barry,bernard,mario,leroy,francisco,marcus,micheal,theodore,clifford,miguel,oscar,jay,jim,tom,calvin,alex,jon,ronnie,bill,lloyd,tommy,leon,derek,darrell,jerome,floyd,leo,alvin,tim,wesley,dean,greg,jorge,dustin,pedro,derrick,dan,zachary,corey,herman,maurice,vernon,roberto,clyde,glen,hector,shane,ricardo,sam,rick,lester,brent,ramon,tyler,gilbert,gene,marc,reginald,ruben,brett,nathaniel,rafael,edgar,milton,raul,ben,cecil,duane,andre,elmer,brad,gabriel,ron,roland,jared,adrian,karl,cory,claude,erik,darryl,neil,christian,javier,fernando,clinton,ted,mathew,tyrone,darren,lonnie,lance,cody,julio,kurt,allan,clayton,hugh,max,dwayne,dwight,armando,felix,jimmie,everett,ian,ken,bob,jaime,casey,alfredo,alberto,dave,ivan,johnnie,sidney,byron,julian,isaac,clifton,willard,daryl,virgil,andy,salvador,kirk,sergio,seth,kent,terrance,rene,eduardo,terrence,enrique,freddie,stuart,fredrick,arturo,alejandro,joey,nick,luther,wendell,jeremiah,evan,julius,donnie,otis,trevor,luke,homer,gerard,doug,kenny,hubert,angelo,shaun,lyle,matt,alfonso,orlando,rex,carlton,ernesto,pablo,lorenzo,omar,wilbur,blake,horace,roderick,kerry,abraham,rickey,ira,andres,cesar,johnathan,malcolm,rudolph,damon,kelvin,rudy,preston,alton,archie,marco,pete,randolph,garry,geoffrey,jonathon,felipe,bennie,gerardo,dominic,loren,delbert,colin,guillermo,earnest,benny,noel,rodolfo,myron,edmund,salvatore,cedric,lowell,gregg,sherman,devin,sylvester,roosevelt,israel,jermaine,forrest,wilbert,leland,simon,irving,owen,rufus,woodrow,sammy,kristopher,levi,marcos,gustavo,jake,lionel,marty,gilberto,clint,nicolas,laurence,ismael,orville,drew,ervin,dewey,wilfred,josh,hugo,ignacio,caleb,tomas,sheldon,erick,frankie,darrel,rogelio,terence,alonzo,elias,bert,elbert,ramiro,conrad,noah,grady,phil,cornelius,lamar,rolando,clay,percy,bradford,merle,darin,amos,terrell,moses,irvin,saul,roman,darnell,randal,tommie,timmy,darrin,brendan,toby,van,abel,dominick,emilio,elijah,cary,domingo,aubrey,emmett,marlon,emanuel,jerald,edmond,emil,dewayne,otto,teddy,reynaldo,bret,jess,trent,humberto,emmanuel,stephan,louie,vicente,lamont,garland,micah,efrain,heath,rodger,demetrius,ethan,eldon,rocky,pierre,eli,bryce,antoine,robbie,kendall,royce,sterling,grover,elton,cleveland,dylan,chuck,damian,reuben,stan,leonardo,russel,erwin,benito,hans,monte,blaine,ernie,curt,quentin,agustin,jamal,devon,adolfo,tyson,wilfredo,bart,jarrod,vance,denis,damien,joaquin,harlan,desmond,elliot,darwin,gregorio,kermit,roscoe,esteban,anton,solomon,norbert,elvin,nolan,carey,rod,quinton,hal,brain,rob,elwood,kendrick,darius,moises,marlin,fidel,thaddeus,cliff,marcel,ali,raphael,bryon,armand,alvaro,jeffry,dane,joesph,thurman,ned,sammie,rusty,michel,monty,rory,fabian,reggie,kris,isaiah,gus,avery,loyd,diego,adolph,millard,rocco,gonzalo,derick,rodrigo,gerry,rigoberto,alphonso,rickie,noe,vern,elvis,bernardo,mauricio,hiram,donovan,basil,nickolas,scot,vince,quincy,eddy,sebastian,federico,ulysses,heriberto,donnell,denny,gavin,emery,romeo,jayson,dion,dante,clement,coy,odell,jarvis,bruno,issac,dudley,sanford,colby,carmelo,nestor,hollis,stefan,donny,linwood,beau,weldon,galen,isidro,truman,delmar,johnathon,silas,frederic,irwin,merrill,charley,marcelino,carlo,trenton,kurtis,aurelio,winfred,vito,collin,denver,leonel,emory,pasquale,mohammad,mariano,danial,landon,dirk,branden,adan,numbers,clair,buford,bernie,wilmer,emerson,zachery,jacques,errol,josue,edwardo,wilford,theron,raymundo,daren,tristan,robby,lincoln,jame,genaro,octavio,cornell,hung,arron,antony,herschel,alva,giovanni,garth,cyrus,cyril,ronny,stevie,lon,kennith,carmine,augustine,erich,chadwick,wilburn,russ,myles,jonas,mitchel,mervin,zane,jamel,lazaro,alphonse,randell,johnie,jarrett,ariel,abdul,dusty,luciano,seymour,scottie,eugenio,mohammed,arnulfo,lucien,ferdinand,thad,ezra,aldo,rubin,mitch,earle,abe,marquis,lanny,kareem,jamar,boris,isiah,emile,elmo,aron,leopoldo,everette,josef,eloy,dorian,rodrick,reinaldo,lucio,jerrod,weston,hershel,lemuel,lavern,burt,jules,gil,eliseo,ahmad,nigel,efren,antwan,alden,margarito,refugio,dino,osvaldo,les,deandre,normand,kieth,ivory,trey,norberto,napoleon,jerold,fritz,rosendo,milford,sang,deon,christoper,alfonzo,lyman,josiah,brant,wilton,rico,jamaal,dewitt,brenton,yong,olin,faustino,claudio,judson,gino,edgardo,alec,jarred,donn,trinidad,tad,porfirio,odis,lenard,chauncey,tod,mel,marcelo,kory,augustus,keven,hilario,bud,sal,orval,mauro,dannie,zachariah,olen,anibal,milo,jed,thanh,amado,lenny,tory,richie,horacio,brice,mohamed,delmer,dario,mac,jonah,jerrold,robt,hank,sung,rupert,rolland,kenton,damion,chi,antone,waldo,fredric,bradly,kip,burl,tyree,jefferey,ahmed,willy,stanford,oren,moshe,mikel,enoch,brendon,quintin,jamison,florencio,darrick,tobias,minh,hassan,giuseppe,demarcus,cletus,tyrell,lyndon,keenan,werner,theo,geraldo,columbus,chet,bertram,markus,huey,hilton,dwain,donte,tyron,omer,isaias,hipolito,fermin,chung,adalberto,jamey,teodoro,mckinley,maximo,raleigh,lawerence,abram,rashad,emmitt,daron,chong,samual,otha,miquel,eusebio,dong,domenic,darron,wilber,renato,hoyt,haywood,ezekiel,chas,florentino,elroy,clemente,arden,neville,edison,deshawn,carrol,shayne,nathanial,jordon,danilo,claud,sherwood,raymon,rayford,cristobal,ambrose,titus,hyman,felton,ezequiel,erasmo,lonny,milan,lino,jarod,herb,andreas,rhett,jude,douglass,cordell,oswaldo,ellsworth,virgilio,toney,nathanael,benedict,mose,hong,isreal,garret,fausto,arlen,zack,modesto,francesco,manual,gaylord,gaston,filiberto,deangelo,michale,granville,malik,zackary,tuan,nicky,cristopher,antione,malcom,korey,jospeh,colton,waylon,hosea,shad,santo,rudolf,rolf,renaldo,marcellus,lucius,kristofer,harland,arnoldo,rueben,leandro,kraig,jerrell,jeromy,hobert,cedrick,arlie,winford,wally,luigi,keneth,jacinto,graig,franklyn,edmundo,leif,jeramy,willian,vincenzo,shon,michal,lynwood,jere,elden,darell,broderick,alonso\".split(\",\")},module.exports=frequency_lists;\n\n},{}],4:[function(require,module,exports){\n    var feedback,matching,scoring,time,time_estimates,zxcvbn;matching=require(\"./matching\"),scoring=require(\"./scoring\"),time_estimates=require(\"./time_estimates\"),feedback=require(\"./feedback\"),time=function(){return(new Date).getTime()},zxcvbn=function(e,t){var i,n,c,s,a,r,m,o,u,g,_;for(null==t&&(t=[]),g=time(),u=[],c=0,s=t.length;s>c;c++)i=t[c],\"string\"!=(m=typeof i)&&\"number\"!==m&&\"boolean\"!==m||u.push(i.toString().toLowerCase());matching.set_user_input_dictionary(u),a=matching.omnimatch(e),o=scoring.most_guessable_match_sequence(e,a),o.calc_time=time()-g,n=time_estimates.estimate_attack_times(o.guesses);for(r in n)_=n[r],o[r]=_;return o.feedback=feedback.get_feedback(o.score,o.sequence),o},module.exports=zxcvbn;\n\n},{\"./feedback\":2,\"./matching\":5,\"./scoring\":6,\"./time_estimates\":7}],5:[function(require,module,exports){\n    var DATE_MAX_YEAR,DATE_MIN_YEAR,DATE_SPLITS,GRAPHS,L33T_TABLE,RANKED_DICTIONARIES,REGEXEN,adjacency_graphs,build_ranked_dict,frequency_lists,lst,matching,name,scoring;frequency_lists=require(\"./frequency_lists\"),adjacency_graphs=require(\"./adjacency_graphs\"),scoring=require(\"./scoring\"),build_ranked_dict=function(e){var t,n,r,i,a;for(i={},t=1,r=0,n=e.length;n>r;r++)a=e[r],i[a]=t,t+=1;return i},RANKED_DICTIONARIES={};for(name in frequency_lists)lst=frequency_lists[name],RANKED_DICTIONARIES[name]=build_ranked_dict(lst);GRAPHS={qwerty:adjacency_graphs.qwerty,dvorak:adjacency_graphs.dvorak,keypad:adjacency_graphs.keypad,mac_keypad:adjacency_graphs.mac_keypad},L33T_TABLE={a:[\"4\",\"@\"],b:[\"8\"],c:[\"(\",\"{\",\"[\",\"<\"],e:[\"3\"],g:[\"6\",\"9\"],i:[\"1\",\"!\",\"|\"],l:[\"1\",\"|\",\"7\"],o:[\"0\"],s:[\"$\",\"5\"],t:[\"+\",\"7\"],x:[\"%\"],z:[\"2\"]},REGEXEN={recent_year:/19\\d\\d|200\\d|201\\d/g},DATE_MAX_YEAR=2050,DATE_MIN_YEAR=1e3,DATE_SPLITS={4:[[1,2],[2,3]],5:[[1,3],[2,3]],6:[[1,2],[2,4],[4,5]],7:[[1,3],[2,3],[4,5],[4,6]],8:[[2,4],[4,6]]},matching={empty:function(e){var t;return 0===function(){var n;n=[];for(t in e)n.push(t);return n}().length},extend:function(e,t){return e.push.apply(e,t)},translate:function(e,t){var n;return function(){var r,i,a,s;for(a=e.split(\"\"),s=[],i=0,r=a.length;r>i;i++)n=a[i],s.push(t[n]||n);return s}().join(\"\")},mod:function(e,t){return(e%t+t)%t},sorted:function(e){return e.sort(function(e,t){return e.i-t.i||e.j-t.j})},omnimatch:function(e){var t,n,r,i,a;for(i=[],r=[this.dictionary_match,this.reverse_dictionary_match,this.l33t_match,this.spatial_match,this.repeat_match,this.sequence_match,this.regex_match,this.date_match],a=0,t=r.length;t>a;a++)n=r[a],this.extend(i,n.call(this,e));return this.sorted(i)},dictionary_match:function(e,t){var n,r,i,a,s,o,h,u,c,l,_,f,d,p;null==t&&(t=RANKED_DICTIONARIES),s=[],a=e.length,u=e.toLowerCase();for(n in t)for(l=t[n],r=o=0,_=a;_>=0?_>o:o>_;r=_>=0?++o:--o)for(i=h=f=r,d=a;d>=f?d>h:h>d;i=d>=f?++h:--h)u.slice(r,+i+1||9e9)in l&&(p=u.slice(r,+i+1||9e9),c=l[p],s.push({pattern:\"dictionary\",i:r,j:i,token:e.slice(r,+i+1||9e9),matched_word:p,rank:c,dictionary_name:n,reversed:!1,l33t:!1}));return this.sorted(s)},reverse_dictionary_match:function(e,t){var n,r,i,a,s,o;for(null==t&&(t=RANKED_DICTIONARIES),o=e.split(\"\").reverse().join(\"\"),i=this.dictionary_match(o,t),a=0,n=i.length;n>a;a++)r=i[a],r.token=r.token.split(\"\").reverse().join(\"\"),r.reversed=!0,s=[e.length-1-r.j,e.length-1-r.i],r.i=s[0],r.j=s[1];return this.sorted(i)},set_user_input_dictionary:function(e){return RANKED_DICTIONARIES.user_inputs=build_ranked_dict(e.slice())},relevant_l33t_subtable:function(e,t){var n,r,i,a,s,o,h,u,c,l;for(s={},o=e.split(\"\"),a=0,r=o.length;r>a;a++)n=o[a],s[n]=!0;l={};for(i in t)c=t[i],h=function(){var e,t,n;for(n=[],t=0,e=c.length;e>t;t++)u=c[t],u in s&&n.push(u);return n}(),h.length>0&&(l[i]=h);return l},enumerate_l33t_subs:function(e){var t,n,r,i,a,s,o,h,u,c,l,_,f,d,p;a=function(){var t;t=[];for(i in e)t.push(i);return t}(),p=[[]],n=function(e){var t,n,r,a,s,o,h,u;for(n=[],s={},o=0,a=e.length;a>o;o++)h=e[o],t=function(){var e,t,n;for(n=[],u=t=0,e=h.length;e>t;u=++t)i=h[u],n.push([i,u]);return n}(),t.sort(),r=function(){var e,n,r;for(r=[],u=n=0,e=t.length;e>n;u=++n)i=t[u],r.push(i+\",\"+u);return r}().join(\"-\"),r in s||(s[r]=!0,n.push(h));return n},r=function(t){var i,a,s,o,h,u,c,l,_,f,d,g,m,A,E,y;if(t.length){for(a=t[0],m=t.slice(1),c=[],d=e[a],l=0,h=d.length;h>l;l++)for(o=d[l],_=0,u=p.length;u>_;_++){for(A=p[_],i=-1,s=f=0,g=A.length;g>=0?g>f:f>g;s=g>=0?++f:--f)if(A[s][0]===o){i=s;break}-1===i?(y=A.concat([[o,a]]),c.push(y)):(E=A.slice(0),E.splice(i,1),E.push([o,a]),c.push(A),c.push(E))}return p=n(c),r(m)}},r(a),d=[];for(u=0,o=p.length;o>u;u++){for(_=p[u],f={},c=0,h=_.length;h>c;c++)l=_[c],s=l[0],t=l[1],f[s]=t;d.push(f)}return d},l33t_match:function(e,t,n){var r,i,a,s,o,h,u,c,l,_,f,d,p,g,m,A;for(null==t&&(t=RANKED_DICTIONARIES),null==n&&(n=L33T_TABLE),u=[],_=this.enumerate_l33t_subs(this.relevant_l33t_subtable(e,n)),c=0,a=_.length;a>c&&(d=_[c],!this.empty(d));c++)for(g=this.translate(e,d),f=this.dictionary_match(g,t),l=0,s=f.length;s>l;l++)if(o=f[l],m=e.slice(o.i,+o.j+1||9e9),m.toLowerCase()!==o.matched_word){h={};for(p in d)r=d[p],-1!==m.indexOf(p)&&(h[p]=r);o.l33t=!0,o.token=m,o.sub=h,o.sub_display=function(){var e;e=[];for(i in h)A=h[i],e.push(i+\" -> \"+A);return e}().join(\", \"),u.push(o)}return this.sorted(u.filter(function(e){return e.token.length>1}))},spatial_match:function(e,t){var n,r,i;null==t&&(t=GRAPHS),i=[];for(r in t)n=t[r],this.extend(i,this.spatial_match_helper(e,n,r));return this.sorted(i)},SHIFTED_RX:/[~!@#$%^&*()_+QWERTYUIOP{}|ASDFGHJKL:\"ZXCVBNM<>?]/,spatial_match_helper:function(e,t,n){var r,i,a,s,o,h,u,c,l,_,f,d,p,g,m;for(f=[],u=0;u<e.length-1;)for(c=u+1,l=null,m=0,g=\"qwerty\"!==n&&\"dvorak\"!==n||!this.SHIFTED_RX.exec(e.charAt(u))?0:1;;){if(p=e.charAt(c-1),o=!1,h=-1,s=-1,i=t[p]||[],c<e.length)for(a=e.charAt(c),d=0,_=i.length;_>d;d++)if(r=i[d],s+=1,r&&-1!==r.indexOf(a)){o=!0,h=s,1===r.indexOf(a)&&(g+=1),l!==h&&(m+=1,l=h);break}if(!o){c-u>2&&f.push({pattern:\"spatial\",i:u,j:c-1,token:e.slice(u,c),graph:n,turns:m,shifted_count:g}),u=c;break}c+=1}return f},repeat_match:function(e){var t,n,r,i,a,s,o,h,u,c,l,_,f,d,p;for(d=[],a=/(.+)\\1+/g,c=/(.+?)\\1+/g,l=/^(.+?)\\1+$/,u=0;u<e.length&&(a.lastIndex=c.lastIndex=u,s=a.exec(e),_=c.exec(e),null!=s);)s[0].length>_[0].length?(f=s,i=l.exec(f[0])[1]):(f=_,i=f[1]),p=[f.index,f.index+f[0].length-1],o=p[0],h=p[1],t=scoring.most_guessable_match_sequence(i,this.omnimatch(i)),r=t.match_sequence,n=t.guesses,d.push({pattern:\"repeat\",i:o,j:h,token:f[0],base_token:i,base_guesses:n,base_matches:r,repeat_count:f[0].length/i.length}),u=h+1;return d},MAX_DELTA:5,sequence_match:function(e){var t,n,r,i,a,s,o,h,u;if(1===e.length)return[];for(u=function(t){return function(n,r,i){var a,s,o,u;return(r-n>1||1===Math.abs(i))&&0<(a=Math.abs(i))&&a<=t.MAX_DELTA?(u=e.slice(n,+r+1||9e9),/^[a-z]+$/.test(u)?(s=\"lower\",o=26):/^[A-Z]+$/.test(u)?(s=\"upper\",o=26):/^\\d+$/.test(u)?(s=\"digits\",o=10):(s=\"unicode\",o=26),h.push({pattern:\"sequence\",i:n,j:r,token:e.slice(n,+r+1||9e9),sequence_name:s,sequence_space:o,ascending:i>0})):void 0}}(this),h=[],n=0,a=null,i=s=1,o=e.length;o>=1?o>s:s>o;i=o>=1?++s:--s)t=e.charCodeAt(i)-e.charCodeAt(i-1),null==a&&(a=t),t!==a&&(r=i-1,u(n,r,a),n=r,a=t);return u(n,e.length-1,a),h},regex_match:function(e,t){var n,r,i,a;null==t&&(t=REGEXEN),n=[];for(name in t)for(r=t[name],r.lastIndex=0;i=r.exec(e);)a=i[0],n.push({pattern:\"regex\",token:a,i:i.index,j:i.index+i[0].length-1,regex_name:name,regex_match:i});return this.sorted(n)},date_match:function(e){var t,n,r,i,a,s,o,h,u,c,l,_,f,d,p,g,m,A,E,y,v,I,R,T,D,k,x,j,b,N,S,q,L,M;for(_=[],f=/^\\d{4,8}$/,d=/^(\\d{1,4})([\\s\\/\\\\_.-])(\\d{1,2})\\2(\\d{1,4})$/,s=m=0,v=e.length-4;v>=0?v>=m:m>=v;s=v>=0?++m:--m)for(o=A=I=s+3,R=s+7;(R>=I?R>=A:A>=R)&&!(o>=e.length);o=R>=I?++A:--A)if(M=e.slice(s,+o+1||9e9),f.exec(M)){for(r=[],T=DATE_SPLITS[M.length],E=0,c=T.length;c>E;E++)D=T[E],h=D[0],u=D[1],a=this.map_ints_to_dmy([parseInt(M.slice(0,h)),parseInt(M.slice(h,u)),parseInt(M.slice(u))]),null!=a&&r.push(a);if(r.length>0){for(t=r[0],p=function(e){return Math.abs(e.year-scoring.REFERENCE_YEAR)},g=p(r[0]),k=r.slice(1),y=0,l=k.length;l>y;y++)n=k[y],i=p(n),g>i&&(x=[n,i],t=x[0],g=x[1]);_.push({pattern:\"date\",token:M,i:s,j:o,separator:\"\",year:t.year,month:t.month,day:t.day})}}for(s=q=0,j=e.length-6;j>=0?j>=q:q>=j;s=j>=0?++q:--q)for(o=L=b=s+5,N=s+9;(N>=b?N>=L:L>=N)&&!(o>=e.length);o=N>=b?++L:--L)M=e.slice(s,+o+1||9e9),S=d.exec(M),null!=S&&(a=this.map_ints_to_dmy([parseInt(S[1]),parseInt(S[3]),parseInt(S[4])]),null!=a&&_.push({pattern:\"date\",token:M,i:s,j:o,separator:S[2],year:a.year,month:a.month,day:a.day}));return this.sorted(_.filter(function(e){var t,n,r,i;for(t=!1,i=0,n=_.length;n>i;i++)if(r=_[i],e!==r&&r.i<=e.i&&r.j>=e.j){t=!0;break}return!t}))},map_ints_to_dmy:function(e){var t,n,r,i,a,s,o,h,u,c,l,_,f,d,p,g;if(!(e[1]>31||e[1]<=0)){for(o=0,h=0,p=0,s=0,r=e.length;r>s;s++){if(n=e[s],n>99&&DATE_MIN_YEAR>n||n>DATE_MAX_YEAR)return;n>31&&(h+=1),n>12&&(o+=1),0>=n&&(p+=1)}if(!(h>=2||3===o||p>=2)){for(c=[[e[2],e.slice(0,2)],[e[0],e.slice(1,3)]],u=0,i=c.length;i>u;u++)if(_=c[u],g=_[0],d=_[1],g>=DATE_MIN_YEAR&&DATE_MAX_YEAR>=g)return t=this.map_ints_to_dm(d),null!=t?{year:g,month:t.month,day:t.day}:void 0;for(l=0,a=c.length;a>l;l++)if(f=c[l],g=f[0],d=f[1],t=this.map_ints_to_dm(d),null!=t)return g=this.two_to_four_digit_year(g),{year:g,month:t.month,day:t.day}}}},map_ints_to_dm:function(e){var t,n,r,i,a,s;for(a=[e,e.slice().reverse()],i=0,n=a.length;n>i;i++)if(s=a[i],t=s[0],r=s[1],t>=1&&31>=t&&r>=1&&12>=r)return{day:t,month:r}},two_to_four_digit_year:function(e){return e>99?e:e>50?e+1900:e+2e3}},module.exports=matching;\n\n},{\"./adjacency_graphs\":1,\"./frequency_lists\":3,\"./scoring\":6}],6:[function(require,module,exports){\n    var BRUTEFORCE_CARDINALITY,MIN_GUESSES_BEFORE_GROWING_SEQUENCE,MIN_SUBMATCH_GUESSES_MULTI_CHAR,MIN_SUBMATCH_GUESSES_SINGLE_CHAR,adjacency_graphs,calc_average_degree,k,scoring,v;adjacency_graphs=require(\"./adjacency_graphs\"),calc_average_degree=function(e){var t,r,n,s,a,u;t=0;for(n in e)a=e[n],t+=function(){var e,t,r;for(r=[],t=0,e=a.length;e>t;t++)s=a[t],s&&r.push(s);return r}().length;return t/=function(){var t;t=[];for(r in e)u=e[r],t.push(r);return t}().length},BRUTEFORCE_CARDINALITY=10,MIN_GUESSES_BEFORE_GROWING_SEQUENCE=1e4,MIN_SUBMATCH_GUESSES_SINGLE_CHAR=10,MIN_SUBMATCH_GUESSES_MULTI_CHAR=50,scoring={nCk:function(e,t){var r,n,s,a;if(t>e)return 0;if(0===t)return 1;for(s=1,r=n=1,a=t;a>=1?a>=n:n>=a;r=a>=1?++n:--n)s*=e,s/=r,e-=1;return s},log10:function(e){return Math.log(e)/Math.log(10)},log2:function(e){return Math.log(e)/Math.log(2)},factorial:function(e){var t,r,n,s;if(2>e)return 1;for(t=1,r=n=2,s=e;s>=2?s>=n:n>=s;r=s>=2?++n:--n)t*=r;return t},most_guessable_match_sequence:function(e,t,r){var n,s,a,u,i,_,o,h,E,c,g,f,l,p,A,S,R,v,I,M;for(null==r&&(r=!1),g=e.length,c=function(){var e,t,r;for(r=[],n=e=0,t=g;t>=0?t>e:e>t;n=t>=0?++e:--e)r.push([]);return r}(),f=0,_=t.length;_>f;f++)h=t[f],c[h.j].push(h);for(l={m:function(){var e,t,r;for(r=[],n=e=0,t=g;t>=0?t>e:e>t;n=t>=0?++e:--e)r.push({});return r}(),pi:function(){var e,t,r;for(r=[],n=e=0,t=g;t>=0?t>e:e>t;n=t>=0?++e:--e)r.push({});return r}(),g:function(){var e,t,r;for(r=[],n=e=0,t=g;t>=0?t>e:e>t;n=t>=0?++e:--e)r.push(1/0);return r}(),l:function(){var e,t,r;for(r=[],n=e=0,t=g;t>=0?t>e:e>t;n=t>=0?++e:--e)r.push(0);return r}()},M=function(t){return function(n,s){var a,u,i;return u=n.j,i=t.estimate_guesses(n,e),s>1&&(i*=l.pi[n.i-1][s-1]),a=t.factorial(s)*i,r||(a+=Math.pow(MIN_GUESSES_BEFORE_GROWING_SEQUENCE,s-1)),a<l.g[u]?(l.g[u]=a,l.l[u]=s,l.m[u][s]=n,l.pi[u][s]=i):void 0}}(this),s=function(e){return function(e){var t,r,n,s;if(h=E(0,e),M(h,1),0!==e){n=l.m[e-1],s=[];for(t in n)r=n[t],t=parseInt(t),\"bruteforce\"===r.pattern?(h=E(r.i,e),s.push(M(h,t))):(h=E(e,e),s.push(M(h,t+1)));return s}}}(this),E=function(t){return function(t,r){return{pattern:\"bruteforce\",token:e.slice(t,+r+1||9e9),i:t,j:r}}}(this),I=function(e){return function(e){var t,r,n;for(n=[],t=e-1,r=l.l[t];t>=0;)h=l.m[t][r],n.unshift(h),t=h.i-1,r--;return n}}(this),u=A=0,S=g;S>=0?S>A:A>S;u=S>=0?++A:--A){for(R=c[u],v=0,o=R.length;o>v;v++)if(h=R[v],h.i>0)for(i in l.m[h.i-1])i=parseInt(i),M(h,i+1);else M(h,1);s(u)}return p=I(g),a=0===e.length?1:l.g[g-1],{password:e,guesses:a,guesses_log10:this.log10(a),sequence:p}},estimate_guesses:function(e,t){var r,n,s;return null!=e.guesses?e.guesses:(s=1,e.token.length<t.length&&(s=1===e.token.length?MIN_SUBMATCH_GUESSES_SINGLE_CHAR:MIN_SUBMATCH_GUESSES_MULTI_CHAR),r={bruteforce:this.bruteforce_guesses,dictionary:this.dictionary_guesses,spatial:this.spatial_guesses,repeat:this.repeat_guesses,sequence:this.sequence_guesses,regex:this.regex_guesses,date:this.date_guesses},n=r[e.pattern].call(this,e),e.guesses=Math.max(n,s),e.guesses_log10=this.log10(e.guesses),e.guesses)},bruteforce_guesses:function(e){var t,r;return t=Math.pow(BRUTEFORCE_CARDINALITY,e.token.length),r=1===e.token.length?MIN_SUBMATCH_GUESSES_SINGLE_CHAR+1:MIN_SUBMATCH_GUESSES_MULTI_CHAR+1,Math.max(t,r)},repeat_guesses:function(e){return e.base_guesses*e.repeat_count},sequence_guesses:function(e){var t,r;return r=e.token.charAt(0),t=\"a\"===r||\"A\"===r||\"z\"===r||\"Z\"===r||\"0\"===r||\"1\"===r||\"9\"===r?4:r.match(/\\d/)?10:26,e.ascending||(t*=2),t*e.token.length},MIN_YEAR_SPACE:20,REFERENCE_YEAR:2016,regex_guesses:function(e){var t,r;if(t={alpha_lower:26,alpha_upper:26,alpha:52,alphanumeric:62,digits:10,symbols:33},e.regex_name in t)return Math.pow(t[e.regex_name],e.token.length);switch(e.regex_name){case\"recent_year\":return r=Math.abs(parseInt(e.regex_match[0])-this.REFERENCE_YEAR),r=Math.max(r,this.MIN_YEAR_SPACE)}},date_guesses:function(e){var t,r;return r=Math.max(Math.abs(e.year-this.REFERENCE_YEAR),this.MIN_YEAR_SPACE),t=365*r,e.has_full_year&&(t*=2),e.separator&&(t*=4),t},KEYBOARD_AVERAGE_DEGREE:calc_average_degree(adjacency_graphs.qwerty),KEYPAD_AVERAGE_DEGREE:calc_average_degree(adjacency_graphs.keypad),KEYBOARD_STARTING_POSITIONS:function(){var e,t;e=adjacency_graphs.qwerty,t=[];for(k in e)v=e[k],t.push(k);return t}().length,KEYPAD_STARTING_POSITIONS:function(){var e,t;e=adjacency_graphs.keypad,t=[];for(k in e)v=e[k],t.push(k);return t}().length,spatial_guesses:function(e){var t,r,n,s,a,u,i,_,o,h,E,c,g,f,l,p,A,S;for(\"qwerty\"===(E=e.graph)||\"dvorak\"===E?(l=this.KEYBOARD_STARTING_POSITIONS,s=this.KEYBOARD_AVERAGE_DEGREE):(l=this.KEYPAD_STARTING_POSITIONS,s=this.KEYPAD_AVERAGE_DEGREE),a=0,t=e.token.length,A=e.turns,u=_=2,c=t;c>=2?c>=_:_>=c;u=c>=2?++_:--_)for(o=Math.min(A,u-1),i=h=1,g=o;g>=1?g>=h:h>=g;i=g>=1?++h:--h)a+=this.nCk(u-1,i-1)*l*Math.pow(s,i);if(e.shifted_count)if(r=e.shifted_count,n=e.token.length-e.shifted_count,0===r||0===n)a*=2;else{for(p=0,u=S=1,f=Math.min(r,n);f>=1?f>=S:S>=f;u=f>=1?++S:--S)p+=this.nCk(r+n,u);a*=p}return a},dictionary_guesses:function(e){var t;return e.base_guesses=e.rank,e.uppercase_variations=this.uppercase_variations(e),e.l33t_variations=this.l33t_variations(e),t=e.reversed&&2||1,e.base_guesses*e.uppercase_variations*e.l33t_variations*t},START_UPPER:/^[A-Z][^A-Z]+$/,END_UPPER:/^[^A-Z]+[A-Z]$/,ALL_UPPER:/^[^a-z]+$/,ALL_LOWER:/^[^A-Z]+$/,uppercase_variations:function(e){var t,r,n,s,a,u,i,_,o,h,E,c;if(c=e.token,c.match(this.ALL_LOWER)||c.toLowerCase()===c)return 1;for(_=[this.START_UPPER,this.END_UPPER,this.ALL_UPPER],u=0,a=_.length;a>u;u++)if(h=_[u],c.match(h))return 2;for(r=function(){var e,t,r,s;for(r=c.split(\"\"),s=[],t=0,e=r.length;e>t;t++)n=r[t],n.match(/[A-Z]/)&&s.push(n);return s}().length,t=function(){var e,t,r,s;for(r=c.split(\"\"),s=[],t=0,e=r.length;e>t;t++)n=r[t],n.match(/[a-z]/)&&s.push(n);return s}().length,E=0,s=i=1,o=Math.min(r,t);o>=1?o>=i:i>=o;s=o>=1?++i:--i)E+=this.nCk(r+t,s);return E},l33t_variations:function(e){var t,r,n,s,a,u,i,_,o,h,E,c,g;if(!e.l33t)return 1;g=1,o=e.sub;for(E in o)if(c=o[E],s=e.token.toLowerCase().split(\"\"),t=function(){var e,t,r;for(r=[],t=0,e=s.length;e>t;t++)n=s[t],n===E&&r.push(n);return r}().length,r=function(){var e,t,r;for(r=[],t=0,e=s.length;e>t;t++)n=s[t],n===c&&r.push(n);return r}().length,0===t||0===r)g*=2;else{for(i=Math.min(r,t),_=0,a=u=1,h=i;h>=1?h>=u:u>=h;a=h>=1?++u:--u)_+=this.nCk(r+t,a);g*=_}return g}},module.exports=scoring;\n\n},{\"./adjacency_graphs\":1}],7:[function(require,module,exports){\n    var time_estimates;time_estimates={estimate_attack_times:function(e){var t,n,s,o;n={online_throttling_100_per_hour:e/(100/3600),online_no_throttling_10_per_second:e/10,offline_slow_hashing_1e4_per_second:e/1e4,offline_fast_hashing_1e10_per_second:e/1e10},t={};for(s in n)o=n[s],t[s]=this.display_time(o);return{crack_times_seconds:n,crack_times_display:t,score:this.guesses_to_score(e)}},guesses_to_score:function(e){var t;return t=5,1e3+t>e?0:1e6+t>e?1:1e8+t>e?2:1e10+t>e?3:4},display_time:function(e){var t,n,s,o,_,r,i,a,u,c;return i=60,r=60*i,s=24*r,a=31*s,c=12*a,n=100*c,u=1>e?[null,\"less than a second\"]:i>e?(t=Math.round(e),[t,t+\" second\"]):r>e?(t=Math.round(e/i),[t,t+\" minute\"]):s>e?(t=Math.round(e/r),[t,t+\" hour\"]):a>e?(t=Math.round(e/s),[t,t+\" day\"]):c>e?(t=Math.round(e/a),[t,t+\" month\"]):n>e?(t=Math.round(e/c),[t,t+\" year\"]):[null,\"centuries\"],o=u[0],_=u[1],null!=o&&1!==o&&(_+=\"s\"),_}},module.exports=time_estimates;\n\n},{}]},{},[4])(4)\n});\n//# sourceMappingURL=zxcvbn.js.map"
  },
  {
    "path": "public/admin/js/pdf/jquery.media.js",
    "content": "/*\n * jQuery Media Plugin for converting elements into rich media content.\n *\n * Examples and documentation at: http://malsup.com/jquery/media/\n * Copyright (c) 2007-2010 M. Alsup\n * Dual licensed under the MIT and GPL licenses:\n * http://www.opensource.org/licenses/mit-license.php\n * http://www.gnu.org/licenses/gpl.html\n *\n * @author: M. Alsup\n * @version: 0.99 (05-JUN-2013)\n * @requires jQuery v1.1.2 or later\n * $Id: jquery.media.js 2460 2007-07-23 02:53:15Z malsup $\n *\n * Supported Media Players:\n *\t- Flash\n *\t- Quicktime\n *\t- Real Player\n *\t- Silverlight\n *\t- Windows Media Player\n *\t- iframe\n *\n * Supported Media Formats:\n *\t Any types supported by the above players, such as:\n *\t Video: asf, avi, flv, mov, mpg, mpeg, mp4, qt, smil, swf, wmv, 3g2, 3gp\n *\t Audio: aif, aac, au, gsm, mid, midi, mov, mp3, m4a, snd, rm, wav, wma\n *\t Other: bmp, html, pdf, psd, qif, qtif, qti, tif, tiff, xaml\n *\n * Thanks to Mark Hicken and Brent Pedersen for helping me debug this on the Mac!\n * Thanks to Dan Rossi for numerous bug reports and code bits!\n * Thanks to Skye Giordano for several great suggestions!\n * Thanks to Richard Connamacher for excellent improvements to the non-IE behavior!\n */\n/*global SWFObject alert Sys */\n/*jshint forin:false */\n;(function($) {\n\"use strict\";\t\n\nvar mode = document.documentMode || 0;\nvar msie = /MSIE/.test(navigator.userAgent);\nvar lameIE = msie && (/MSIE (6|7|8)\\.0/.test(navigator.userAgent) || mode < 9);\n\n/**\n * Chainable method for converting elements into rich media.\n *\n * @param options\n * @param callback fn invoked for each matched element before conversion\n * @param callback fn invoked for each matched element after conversion\n */\n$.fn.media = function(options, f1, f2) {\n\tif (options == 'undo') {\n\t\treturn this.each(function() {\n\t\t\tvar $this = $(this);\n\t\t\tvar html = $this.data('media.origHTML');\n\t\t\tif (html)\n\t\t\t\t$this.replaceWith(html);\n\t\t});\n\t}\n\t\n\treturn this.each(function() {\n\t\tif (typeof options == 'function') {\n\t\t\tf2 = f1;\n\t\t\tf1 = options;\n\t\t\toptions = {};\n\t\t}\n\t\tvar o = getSettings(this, options);\n\t\t// pre-conversion callback, passes original element and fully populated options\n\t\tif (typeof f1 == 'function') f1(this, o);\n\n\t\tvar r = getTypesRegExp();\n\t\tvar m = r.exec(o.src.toLowerCase()) || [''];\n\t\tvar fn;\n\n\t\tif (o.type)\n\t\t\tm[0] = o.type;\n\t\telse\n\t\t\tm.shift();\n\n\t\tfor (var i=0; i < m.length; i++) {\n\t\t\tfn = m[i].toLowerCase();\n\t\t\tif (isDigit(fn[0])) fn = 'fn' + fn; // fns can't begin with numbers\n\t\t\tif (!$.fn.media[fn])\n\t\t\t\tcontinue;  // unrecognized media type\n\t\t\t// normalize autoplay settings\n\t\t\tvar player = $.fn.media[fn+'_player'];\n\t\t\tif (!o.params) o.params = {};\n\t\t\tif (player) {\n\t\t\t\tvar num = player.autoplayAttr == 'autostart';\n\t\t\t\to.params[player.autoplayAttr || 'autoplay'] = num ? (o.autoplay ? 1 : 0) : o.autoplay ? true : false;\n\t\t\t}\n\t\t\tvar $div = $.fn.media[fn](this, o);\n\n\t\t\t$div.css('backgroundColor', o.bgColor).width(o.width);\n\t\t\t\n\t\t\tif (o.canUndo) {\n\t\t\t\tvar $temp = $('<div></div>').append(this);\n\t\t\t\t$div.data('media.origHTML', $temp.html()); // store original markup\n\t\t\t}\n\t\t\t\n\t\t\t// post-conversion callback, passes original element, new div element and fully populated options\n\t\t\tif (typeof f2 == 'function') f2(this, $div[0], o, player.name);\n\t\t\tbreak;\n\t\t}\n\t});\n};\n\n/**\n * Non-chainable method for adding or changing file format / player mapping\n * @name mapFormat\n * @param String format File format extension (ie: mov, wav, mp3)\n * @param String player Player name to use for the format (one of: flash, quicktime, realplayer, winmedia, silverlight or iframe\n */\n$.fn.media.mapFormat = function(format, player) {\n\tif (!format || !player || !$.fn.media.defaults.players[player]) return; // invalid\n\tformat = format.toLowerCase();\n\tif (isDigit(format[0])) format = 'fn' + format;\n\t$.fn.media[format] = $.fn.media[player];\n\t$.fn.media[format+'_player'] = $.fn.media.defaults.players[player];\n};\n\n// global defautls; override as needed\n$.fn.media.defaults = {\n\tstandards:  true,       // use object tags only (no embeds for non-IE browsers)\n\tcanUndo:    true,       // tells plugin to store the original markup so it can be reverted via: $(sel).mediaUndo()\n\twidth:\t\t400,\n\theight:\t\t400,\n\tautoplay:\t0,\t\t\t// normalized cross-player setting\n\tbgColor:\t'#ffffff',\t// background color\n\tparams:\t\t{ wmode: 'transparent'},\t// added to object element as param elements; added to embed element as attrs\n\tattrs:\t\t{},\t\t\t// added to object and embed elements as attrs\n\tflvKeyName: 'file',\t\t// key used for object src param (thanks to Andrea Ercolino)\n\tflashvars:\t{},\t\t\t// added to flash content as flashvars param/attr\n\tflashVersion:\t'7',\t// required flash version\n\texpressInstaller: null,\t// src for express installer\n\n\t// default flash video and mp3 player (@see: http://jeroenwijering.com/?item=Flash_Media_Player)\n\tflvPlayer:\t 'mediaplayer.swf',\n\tmp3Player:\t 'mediaplayer.swf',\n\n\t// @see http://msdn2.microsoft.com/en-us/library/bb412401.aspx\n\tsilverlight: {\n\t\tinplaceInstallPrompt: 'true', // display in-place install prompt?\n\t\tisWindowless:\t\t  'true', // windowless mode (false for wrapping markup)\n\t\tframerate:\t\t\t  '24',\t  // maximum framerate\n\t\tversion:\t\t\t  '0.9',  // Silverlight version\n\t\tonError:\t\t\t  null,\t  // onError callback\n\t\tonLoad:\t\t\t      null,   // onLoad callback\n\t\tinitParams:\t\t\t  null,\t  // object init params\n\t\tuserContext:\t\t  null\t  // callback arg passed to the load callback\n\t}\n};\n\n// Media Players; think twice before overriding\n$.fn.media.defaults.players = {\n\tflash: {\n\t\tname:\t\t 'flash',\n\t\ttitle:\t\t 'Flash',\n\t\ttypes:\t\t 'flv,mp3,swf',\n\t\tmimetype:\t 'application/x-shockwave-flash',\n\t\tpluginspage: 'http://www.adobe.com/go/getflashplayer',\n\t\tieAttrs: {\n\t\t\tclassid:  'clsid:d27cdb6e-ae6d-11cf-96b8-444553540000',\n\t\t\ttype:\t  'application/x-oleobject',\n\t\t\tcodebase: 'http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=' + $.fn.media.defaults.flashVersion\n\t\t}\n\t},\n\tquicktime: {\n\t\tname:\t\t 'quicktime',\n\t\ttitle:\t\t 'QuickTime',\n\t\tmimetype:\t 'video/quicktime',\n\t\tpluginspage: 'http://www.apple.com/quicktime/download/',\n\t\ttypes:\t\t 'aif,aiff,aac,au,bmp,gsm,mov,mid,midi,mpg,mpeg,mp4,m4a,psd,qt,qtif,qif,qti,snd,tif,tiff,wav,3g2,3gp',\n\t\tieAttrs: {\n\t\t\tclassid:  'clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B',\n\t\t\tcodebase: 'http://www.apple.com/qtactivex/qtplugin.cab'\n\t\t}\n\t},\n\trealplayer: {\n\t\tname:\t\t  'real',\n\t\ttitle:\t\t  'RealPlayer',\n\t\ttypes:\t\t  'ra,ram,rm,rpm,rv,smi,smil',\n\t\tmimetype:\t  'audio/x-pn-realaudio-plugin',\n\t\tpluginspage:  'http://www.real.com/player/',\n\t\tautoplayAttr: 'autostart',\n\t\tieAttrs: {\n\t\t\tclassid: 'clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA'\n\t\t}\n\t},\n\twinmedia: {\n\t\tname:\t\t  'winmedia',\n\t\ttitle:\t\t  'Windows Media',\n\t\ttypes:\t\t  'asx,asf,avi,wma,wmv',\n\t\tmimetype:\t  isFirefoxWMPPluginInstalled() ? 'application/x-ms-wmp' : 'application/x-mplayer2',\n\t\tpluginspage:  'http://www.microsoft.com/Windows/MediaPlayer/',\n\t\tautoplayAttr: 'autostart',\n\t\toUrl:\t\t  'url',\n\t\tieAttrs: {\n\t\t\tclassid:  'clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6',\n\t\t\ttype:\t  'application/x-oleobject'\n\t\t}\n\t},\n\t// special cases\n\timg: {\n\t\tname:  'img',\n\t\ttitle: 'Image',\n\t\ttypes: 'gif,png,jpg'\n\t},\n\tiframe: {\n\t\tname:  'iframe',\n\t\ttypes: 'html,pdf'\n\t},\n\tsilverlight: {\n\t\tname:  'silverlight',\n\t\ttypes: 'xaml'\n\t}\n};\n\n//\n//\teverything below here is private\n//\n\n\n// detection script for FF WMP plugin (http://www.therossman.org/experiments/wmp_play.html)\n// (hat tip to Mark Ross for this script)\nfunction isFirefoxWMPPluginInstalled() {\n\tvar plugs = navigator.plugins || [];\n\tfor (var i = 0; i < plugs.length; i++) {\n\t\tvar plugin = plugs[i];\n\t\tif (plugin['filename'] == 'np-mswmp.dll')\n\t\t\treturn true;\n\t}\n\treturn false;\n}\n\nvar counter = 1;\n\nfor (var player in $.fn.media.defaults.players) {\n\tvar types = $.fn.media.defaults.players[player].types;\n\t$.each(types.split(','), function(i,o) {\n\t\tif (isDigit(o[0])) o = 'fn' + o;\n\t\t$.fn.media[o] = $.fn.media[player] = getGenerator(player);\n\t\t$.fn.media[o+'_player'] = $.fn.media.defaults.players[player];\n\t});\n}\n\nfunction getTypesRegExp() {\n\tvar types = '';\n\tfor (var player in $.fn.media.defaults.players) {\n\t\tif (types.length) types += ',';\n\t\ttypes += $.fn.media.defaults.players[player].types;\n\t}\n\treturn new RegExp('\\\\.(' + types.replace(/,/ig,'|') + ')\\\\b');\n}\n\nfunction getGenerator(player) {\n\treturn function(el, options) {\n\t\treturn generate(el, options, player);\n\t};\n}\n\nfunction isDigit(c) {\n\treturn '0123456789'.indexOf(c) > -1;\n}\n\n// flatten all possible options: global defaults, meta, option obj\nfunction getSettings(el, options) {\n\toptions = options || {};\n\tvar a, n;\n\tvar $el = $(el);\n\tvar cls = el.className || '';\n\t// support metadata plugin (v1.0 and v2.0)\n\tvar meta = $.metadata ? $el.metadata() : $.meta ? $el.data() : {};\n\tmeta = meta || {};\n\tvar w = meta.width  || parseInt(((cls.match(/\\bw:(\\d+)/)||[])[1]||0),10) || parseInt(((cls.match(/\\bwidth:(\\d+)/)||[])[1]||0),10);\n\tvar h = meta.height || parseInt(((cls.match(/\\bh:(\\d+)/)||[])[1]||0),10) || parseInt(((cls.match(/\\bheight:(\\d+)/)||[])[1]||0),10);\n\n\tif (w) meta.width = w;\n\tif (h) meta.height = h;\n\tif (cls) meta.cls = cls;\n\t\n\t// crank html5 style data attributes\n\tvar dataName = 'data-';\n    for (var i=0; i < el.attributes.length; i++) {\n        a = el.attributes[i], n = $.trim(a.name);\n        var index = n.indexOf(dataName);\n        if (index === 0) {\n\t\t\tn = n.substring(dataName.length);\n\t\t\tmeta[n] = a.value;\n        }\n    }\n\n\ta = $.fn.media.defaults;\n\tvar b = options;\n\tvar c = meta;\n\n\tvar p = { params: { bgColor: options.bgColor || $.fn.media.defaults.bgColor } };\n\tvar opts = $.extend({}, a, b, c);\n\t$.each(['attrs','params','flashvars','silverlight'], function(i,o) {\n\t\topts[o] = $.extend({}, p[o] || {}, a[o] || {}, b[o] || {}, c[o] || {});\n\t});\n\n\tif (typeof opts.caption == 'undefined') opts.caption = $el.text();\n\n\t// make sure we have a source!\n\topts.src = opts.src || $el.attr('href') || $el.attr('src') || 'unknown';\n\treturn opts;\n}\n\n//\n//\tFlash Player\n//\n\n// generate flash using SWFObject library if possible\n$.fn.media.swf = function(el, opts) {\n\tvar f, p;\n\tif (!window.SWFObject && !window.swfobject) {\n\t\t// roll our own\n\t\tif (opts.flashvars) {\n\t\t\tvar a = [];\n\t\t\tfor (f in opts.flashvars)\n\t\t\t\ta.push(f + '=' + opts.flashvars[f]);\n\t\t\tif (!opts.params) opts.params = {};\n\t\t\topts.params.flashvars = a.join('&');\n\t\t}\n\t\treturn generate(el, opts, 'flash');\n\t}\n\n\tvar id = el.id ? (' id=\"'+el.id+'\"') : '';\n\tvar cls = opts.cls ? (' class=\"' + opts.cls + '\"') : '';\n\tvar $div = $('<div' + id + cls + '>');\n\n\t// swfobject v2+\n\tif (window.swfobject) {\n\t\t$(el).after($div).appendTo($div);\n\t\tif (!el.id) el.id = 'movie_player_' + counter++;\n\n\t\t// replace el with swfobject content\n\t\twindow.swfobject.embedSWF(opts.src, el.id, opts.width, opts.height, opts.flashVersion,\n\t\t\topts.expressInstaller, opts.flashvars, opts.params, opts.attrs);\n\t}\n\t// swfobject < v2\n\telse {\n\t\t$(el).after($div).remove();\n\t\tvar so = new SWFObject(opts.src, 'movie_player_' + counter++, opts.width, opts.height, opts.flashVersion, opts.bgColor);\n\t\tif (opts.expressInstaller) so.useExpressInstall(opts.expressInstaller);\n\n\t\tfor (p in opts.params)\n\t\t\tif (p != 'bgColor') so.addParam(p, opts.params[p]);\n\t\tfor (f in opts.flashvars)\n\t\t\tso.addVariable(f, opts.flashvars[f]);\n\t\tso.write($div[0]);\n\t}\n\n\tif (opts.caption) $('<div>').appendTo($div).html(opts.caption);\n\treturn $div;\n};\n\n// map flv and mp3 files to the swf player by default\n$.fn.media.flv = $.fn.media.mp3 = function(el, opts) {\n\tvar src = opts.src;\n\tvar player = /\\.mp3\\b/i.test(src) ? opts.mp3Player : opts.flvPlayer;\n\tvar key = opts.flvKeyName;\n\tsrc = encodeURIComponent(src);\n\topts.src = player;\n\topts.src = opts.src + '?'+key+'=' + (src);\n\tvar srcObj = {};\n\tsrcObj[key] = src;\n\topts.flashvars = $.extend({}, srcObj, opts.flashvars );\n\treturn $.fn.media.swf(el, opts);\n};\n\n//\n//\tSilverlight\n//\n$.fn.media.xaml = function(el, opts) {\n\tif (!window.Sys || !window.Sys.Silverlight) {\n\t\tif ($.fn.media.xaml.warning) return;\n\t\t$.fn.media.xaml.warning = 1;\n\t\talert('You must include the Silverlight.js script.');\n\t\treturn;\n\t}\n\n\tvar props = {\n\t\twidth: opts.width,\n\t\theight: opts.height,\n\t\tbackground: opts.bgColor,\n\t\tinplaceInstallPrompt: opts.silverlight.inplaceInstallPrompt,\n\t\tisWindowless: opts.silverlight.isWindowless,\n\t\tframerate: opts.silverlight.framerate,\n\t\tversion: opts.silverlight.version\n\t};\n\tvar events = {\n\t\tonError: opts.silverlight.onError,\n\t\tonLoad: opts.silverlight.onLoad\n\t};\n\n\tvar id1 = el.id ? (' id=\"'+el.id+'\"') : '';\n\tvar id2 = opts.id || 'AG' + counter++;\n\t// convert element to div\n\tvar cls = opts.cls ? (' class=\"' + opts.cls + '\"') : '';\n\tvar $div = $('<div' + id1 + cls + '>');\n\t$(el).after($div).remove();\n\n\tSys.Silverlight.createObjectEx({\n\t\tsource: opts.src,\n\t\tinitParams: opts.silverlight.initParams,\n\t\tuserContext: opts.silverlight.userContext,\n\t\tid: id2,\n\t\tparentElement: $div[0],\n\t\tproperties: props,\n\t\tevents: events\n\t});\n\n\tif (opts.caption) $('<div>').appendTo($div).html(opts.caption);\n\treturn $div;\n};\n\n//\n// generate object/embed markup\n//\nfunction generate(el, opts, player) {\n\tvar $el = $(el);\n\tvar o = $.fn.media.defaults.players[player];\n\tvar a, key, v;\n\n\tif (player == 'iframe') {\n\t\to = $('<iframe' + ' width=\"' + opts.width + '\" height=\"' + opts.height + '\" >');\n\t\to.attr('src', opts.src);\n\t\to.css('backgroundColor', o.bgColor);\n\t}\n\telse if (player == 'img') {\n\t\to = $('<img>');\n\t\to.attr('src', opts.src);\n\t\tif (opts.width)\n\t\t\to.attr('width', opts.width);\n\t\tif (opts.height)\n\t\t\to.attr('height', opts.height);\n\t\to.css('backgroundColor', o.bgColor);\n\t}\n\telse if (lameIE) {\n\t\ta = ['<object width=\"' + opts.width + '\" height=\"' + opts.height + '\" '];\n\t\tfor (key in opts.attrs)\n\t\t\ta.push(key + '=\"'+opts.attrs[key]+'\" ');\n\t\tfor (key in o.ieAttrs || {}) {\n\t\t\tv = o.ieAttrs[key];\n\t\t\tif (key == 'codebase' && window.location.protocol == 'https:')\n\t\t\t\tv = v.replace('http','https');\n\t\t\ta.push(key + '=\"'+v+'\" ');\n\t\t}\n\t\ta.push('></ob'+'ject'+'>');\n\t\tvar p = ['<param name=\"' + (o.oUrl || 'src') +'\" value=\"' + opts.src + '\">'];\n\t\tfor (key in opts.params)\n\t\t\tp.push('<param name=\"'+ key +'\" value=\"' + opts.params[key] + '\">');\n\t\to = document.createElement(a.join(''));\n\t\tfor (var i=0; i < p.length; i++)\n\t\t\to.appendChild(document.createElement(p[i]));\n\t}\n\telse if (opts.standards) {\n\t\t// Rewritten to be standards compliant by Richard Connamacher\n\t\ta = ['<object type=\"' + o.mimetype +'\" width=\"' + opts.width + '\" height=\"' + opts.height +'\"'];\n\t\tif (opts.src) a.push(' data=\"' + opts.src + '\" ');\n\t\tif (msie) {\n\t\t\tfor (key in o.ieAttrs || {}) {\n\t\t\t\tv = o.ieAttrs[key];\n\t\t\t\tif (key == 'codebase' && window.location.protocol == 'https:')\n\t\t\t\t\tv = v.replace('http','https');\n\t\t\t\ta.push(key + '=\"'+v+'\" ');\n\t\t\t}\n\t\t}\n\t\ta.push('>');\n\t\ta.push('<param name=\"' + (o.oUrl || 'src') +'\" value=\"' + opts.src + '\">');\n\t\tfor (key in opts.params) {\n\t\t\tif (key == 'wmode' && player != 'flash') // FF3/Quicktime borks on wmode\n\t\t\t\tcontinue;\n\t\t\ta.push('<param name=\"'+ key +'\" value=\"' + opts.params[key] + '\">');\n\t\t}\n\t\t// Alternate HTML\n\t\ta.push('<div><p><strong>'+o.title+' Required</strong></p><p>'+o.title+' is required to view this media. <a href=\"'+o.pluginspage+'\">Download Here</a>.</p></div>');\n\t\ta.push('</ob'+'ject'+'>');\n\t}\n\t else {\n\t        a = ['<embed width=\"' + opts.width + '\" height=\"' + opts.height + '\" style=\"display:block\"'];\n\t        if (opts.src) a.push(' src=\"' + opts.src + '\" ');\n\t        for (key in opts.attrs)\n\t            a.push(key + '=\"'+opts.attrs[key]+'\" ');\n\t        for (key in o.eAttrs || {})\n\t            a.push(key + '=\"'+o.eAttrs[key]+'\" ');\n\t        for (key in opts.params) {\n\t            if (key == 'wmode' && player != 'flash') // FF3/Quicktime borks on wmode\n\t\t\t\t\tcontinue;\n\t            a.push(key + '=\"'+opts.params[key]+'\" ');\n\t        }\n\t        a.push('></em'+'bed'+'>');\n\t    }\t\n\t// convert element to div\n\tvar id = el.id ? (' id=\"'+el.id+'\"') : '';\n\tvar cls = opts.cls ? (' class=\"' + opts.cls + '\"') : '';\n\tvar $div = $('<div' + id + cls + '>');\n\t$el.after($div).remove();\n\tif (lameIE || player == 'iframe' || player == 'img')\n\t\t$div.append(o);\n\telse\n\t\t$div.html(a.join(''));\n\t\n\tif (opts.caption) \n\t\t$('<div>').appendTo($div).html(opts.caption);\n\treturn $div;\n}\n\n\n})(jQuery);\n"
  },
  {
    "path": "public/admin/js/pdf/pdf-active.js",
    "content": "(function ($) {\n \"use strict\";\n\n\t\t$('a.media').media({width:710, height:950});\n\t\t \n \n})(jQuery); "
  },
  {
    "path": "public/admin/js/peity/peity-active.js",
    "content": "(function ($) {\n \"use strict\";\n \n\t\n\t\n\t\n\t $(\"span.pie\").peity(\"pie\", {\n        fill: ['#03a9f4', '#d7d7d7', '#ffffff']\n    })\n\n    $(\".line\").peity(\"line\",{\n        fill: '#03a9f4',\n        stroke:'#169c81',\n    })\n\n    $(\".bar\").peity(\"bar\", {\n        fill: [\"#03a9f4\", \"#d7d7d7\"]\n    })\n\n    $(\".bar_dashboard\").peity(\"bar\", {\n        fill: [\"#03a9f4\", \"#d7d7d7\"],\n        width:100\n    })\n\n    var updatingChart = $(\".updating-chart\").peity(\"line\", { fill: '#03a9f4',stroke:'#169c81', width: 64 })\n\n    setInterval(function() {\n        var random = Math.round(Math.random() * 10)\n        var values = updatingChart.text().split(\",\")\n        values.shift()\n        values.push(random)\n\n        updatingChart\n            .text(values.join(\",\"))\n            .change()\n    }, 1000);\n\t\n\t\n\t\n})(jQuery); "
  },
  {
    "path": "public/admin/js/rangle-slider/rangle-active.js",
    "content": "(function ($) {\n \"use strict\";\n\t\t\t\t\n\t\t\t\tvar initialSpark = 60;\n\t\t\tvar sparkTooltip = function(event, ui) {\n\t\t\t\tvar curSpark = ui.value  || initialSpark\n\t\t\t\tvar sparktip = '<span class=\"slider-tip\">' + curSpark + '</span>';\n\t\t\t\t$(this).find('.ui-slider-handle').html(sparktip);\n\t\t\t}\t\t\t\n\t\t\t\n\t\t\t$(\"#slider9\").slider({\n\t\t\t\torientation: \"vertical\",\n\t\t\t\trange: \"min\",\n\t\t\t\tmin: 1,\n\t\t\t\tmax: 100,\n\t\t\t\tstep: 1,\n\t\t\t\tvalue: initialSpark,\n\t\t\t\tcreate: sparkTooltip,\n\t\t\t\tslide: sparkTooltip\t\t\t\t\n\t\t\t});\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t$(\"#slider6\").slider({\n\t\t\t\t\torientation: \"vertical\",\n\t\t\t\t\trange: \"min\",\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: 100,\n\t\t\t\t\tvalue: 60,\n\t\t\t\t\tslide: function(event, ui) {\n\t\t\t\t\t\t$(\"#volume\").val(ui.value);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\t$(\"#volume\").val( \n\t\t\t\t\t$(\"#slider6\").slider(\"value\") \n\t\t\t\t);\n\t\t\t\t\n\t\t\t\t $(\"#slider7\").slider({\n\t\t\t\t\torientation: \"vertical\",\n\t\t\t\t\trange: true,\n\t\t\t\t\tvalues: [27, 67],\n\t\t\t\t\tslide: function(event, ui) {\n\t\t\t\t\t\t$(\"#sales\").val(\"$\" + ui.values[0] + \" - $\" + ui.values[1]);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t$(\"#sales\").val( \"$\" + $(\"#slider7\").slider(\"values\", 0) + \" - $\" + $(\"#slider7\").slider(\"values\", 1));\n \n\t\t\t\t$(\"#eq > .sliderv-wrapper\").each(function() {\n\t\t\t\t\tvar value = parseInt($(this).text(), 10);\n\t\t\t\t\t\t$(this).empty().slider({\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\trange: \"min\",\n\t\t\t\t\t\tanimate: true,\n\t\t\t\t\t\torientation: \"vertical\"\n\t\t\t\t\t});\n\t\t\t\t});\t\n\t\t\t\t\n\t\t\t\t$(\"#eq2 > .sliderv-wrapper\").each(function() {\n\t\t\t\t\tvar value = parseInt($(this).text(), 10);\n\t\t\t\t\t\t$(this).empty().slider({\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\trange: \"min\",\n\t\t\t\t\t\tanimate: true,\n\t\t\t\t\t\torientation: \"vertical\"\n\t\t\t\t\t});\n\t\t\t\t});\t\t\n\t\t\t\t\n\t\t\t\tvar initialYear = 1980;\n\t\t\t\tvar yearTooltip = function(event, ui) {\n\t\t\t\t\tvar curYear = ui.value || initialYear\n\t\t\t\t\tvar yeartip = '<span class=\"slider-tip\">' + curYear + '</span>';\n\t\t\t\t\t$(this).find('.ui-slider-handle').html(yeartip);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t$(\"#slider10\").slider({\n\t\t\t\t\tvalue: initialYear,\n\t\t\t\t\trange: \"min\",\n\t\t\t\t\tmin: 1950,\n\t\t\t\t\tmax: 2020,\n\t\t\t\t\tstep: 1,\n\t\t\t\t\tcreate: yearTooltip,\n\t\t\t\t\tslide: yearTooltip\n\t\t\t\t});\t\n\t\t\t\t\n\t\t\t\t\n \n\t\t\t\t$('#slider8').slider({\n\t\t\t\t\trange: true,\n\t\t\t\t\tvalues: [500, 1500],\n\t\t\t\t\tmin: 10,\n\t\t\t\t\tmax: 2000,\n\t\t\t\t\tstep: 10,\n\t\t\t\t\tslide: function(event, ui) { \n\t\t\t\t\t\t$(\"#budget\").val(\"$\" + ui.values[0] + \" - $\" + ui.values[1]);\n\t\t\t\t\t}\t\t\t\n\t\t\t\t});\n\t\t\t\t$(\"#budget\").val(\"$\" + $(\"#slider8\").slider(\"values\", 0) + \" - $\" + $(\"#slider8\").slider(\"values\", 1));\n\t\t\t\t\n\t\t\t\t\n\t\t\n\t\t\t\t$(\"#slider\").slider({\n\t\t\t\t\trange: \"min\",\n\t\t\t\t\tmin: 10,\n\t\t\t\t\tmax: 100,\n\t\t\t\t\tvalue: 80\t\t\t\n\t\t\t\t});\n\t\t\t\t$(\"#slider1\").slider({\n\t\t\t\t\trange: true,\n\t\t\t\t\tvalues: [17, 83]\n\t\t\t\t});\t\n\t\t\t\t\n\t\t\t\t$( \"#slider2\" ).slider({\n\t\t\t\t\trange: \"min\",\n\t\t\t\t\tvalue: 140,\n\t\t\t\t\tmin: 1,\n\t\t\t\t\tmax: 800,\n\t\t\t\t\tslide: function(event, ui) {\n\t\t\t\t\t\t$(\"#amount\").val(\"$\" + ui.value);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\t$(\"#amount\").val( \n\t\t\t\t\t\"$\" + $(\"#slider2\").slider(\"value\") \n\t\t\t\t);\n\t\t\t\t\n\t\t\t\t$(\"#slider3\").slider({\n\t\t\t\t\trange: \"max\",\n\t\t\t\t\tmin: 1,\n\t\t\t\t\tmax: 10,\n\t\t\t\t\tvalue: 2,\n\t\t\t\t\tslide: function(event, ui) {\n\t\t\t\t\t\t$(\"#bedrooms\").val(ui.value);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\t$(\"#bedrooms\").val( \n\t\t\t\t\t$(\"#slider3\").slider(\"value\") \n\t\t\t\t);\n\t\t\t\t\n\t\t\t\t\n\t\n\t\t\n            \n\t\t\t\n\n\t\t\n\n\t\n \n})(jQuery); "
  },
  {
    "path": "public/admin/js/rounded-counter/jquery.appear.js",
    "content": "/*\n * jQuery.appear\n * https://github.com/bas2k/jquery.appear/\n * http://code.google.com/p/jquery-appear/\n *\n * Copyright (c) 2009 Michael Hixson\n * Copyright (c) 2012 Alexander Brovikov\n * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\n */\n(function($) {\n\t$.fn.appear = function(fn, options) {\n\n\t\tvar settings = $.extend({\n\n\t\t\t//arbitrary data to pass to fn\n\t\t\tdata: undefined,\n\n\t\t\t//call fn only on the first appear?\n\t\t\tone: true,\n\n\t\t\t// X & Y accuracy\n\t\t\taccX: 0,\n\t\t\taccY: 0\n\n\t\t}, options);\n\n\t\treturn this.each(function() {\n\n\t\t\tvar t = $(this);\n\n\t\t\t//whether the element is currently visible\n\t\t\tt.appeared = false;\n\n\t\t\tif (!fn) {\n\n\t\t\t\t//trigger the custom event\n\t\t\t\tt.trigger('appear', settings.data);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar w = $(window);\n\n\t\t\t//fires the appear event when appropriate\n\t\t\tvar check = function() {\n\n\t\t\t\t//is the element hidden?\n\t\t\t\tif (!t.is(':visible')) {\n\n\t\t\t\t\t//it became hidden\n\t\t\t\t\tt.appeared = false;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t//is the element inside the visible window?\n\t\t\t\tvar a = w.scrollLeft();\n\t\t\t\tvar b = w.scrollTop();\n\t\t\t\tvar o = t.offset();\n\t\t\t\tvar x = o.left;\n\t\t\t\tvar y = o.top;\n\n\t\t\t\tvar ax = settings.accX;\n\t\t\t\tvar ay = settings.accY;\n\t\t\t\tvar th = t.height();\n\t\t\t\tvar wh = w.height();\n\t\t\t\tvar tw = t.width();\n\t\t\t\tvar ww = w.width();\n\n\t\t\t\tif (y + th + ay >= b &&\n\t\t\t\t\ty <= b + wh + ay &&\n\t\t\t\t\tx + tw + ax >= a &&\n\t\t\t\t\tx <= a + ww + ax) {\n\n\t\t\t\t\t//trigger the custom event\n\t\t\t\t\tif (!t.appeared) t.trigger('appear', settings.data);\n\n\t\t\t\t} else {\n\n\t\t\t\t\t//it scrolled out of view\n\t\t\t\t\tt.appeared = false;\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t//create a modified fn with some additional logic\n\t\t\tvar modifiedFn = function() {\n\n\t\t\t\t//mark the element as visible\n\t\t\t\tt.appeared = true;\n\n\t\t\t\t//is this supposed to happen only once?\n\t\t\t\tif (settings.one) {\n\n\t\t\t\t\t//remove the check\n\t\t\t\t\tw.unbind('scroll', check);\n\t\t\t\t\tvar i = $.inArray(check, $.fn.appear.checks);\n\t\t\t\t\tif (i >= 0) $.fn.appear.checks.splice(i, 1);\n\t\t\t\t}\n\n\t\t\t\t//trigger the original fn\n\t\t\t\tfn.apply(this, arguments);\n\t\t\t};\n\n\t\t\t//bind the modified fn to the element\n\t\t\tif (settings.one) t.one('appear', settings.data, modifiedFn);\n\t\t\telse t.bind('appear', settings.data, modifiedFn);\n\n\t\t\t//check whenever the window scrolls\n\t\t\tw.scroll(check);\n\n\t\t\t//check whenever the dom changes\n\t\t\t$.fn.appear.checks.push(check);\n\n\t\t\t//check now\n\t\t\t(check)();\n\t\t});\n\t};\n\n\t//keep a queue of appearance checks\n\t$.extend($.fn.appear, {\n\n\t\tchecks: [],\n\t\ttimeout: null,\n\n\t\t//process the queue\n\t\tcheckAll: function() {\n\t\t\tvar length = $.fn.appear.checks.length;\n\t\t\tif (length > 0) while (length--) ($.fn.appear.checks[length])();\n\t\t},\n\n\t\t//check the queue asynchronously\n\t\trun: function() {\n\t\t\tif ($.fn.appear.timeout) clearTimeout($.fn.appear.timeout);\n\t\t\t$.fn.appear.timeout = setTimeout($.fn.appear.checkAll, 20);\n\t\t}\n\t});\n\n\t//run checks when these methods are called\n\t$.each(['append', 'prepend', 'after', 'before', 'attr',\n\t\t'removeAttr', 'addClass', 'removeClass', 'toggleClass',\n\t\t'remove', 'css', 'show', 'hide'], function(i, n) {\n\t\tvar old = $.fn[n];\n\t\tif (old) {\n\t\t\t$.fn[n] = function() {\n\t\t\t\tvar r = old.apply(this, arguments);\n\t\t\t\t$.fn.appear.run();\n\t\t\t\treturn r;\n\t\t\t}\n\t\t}\n\t});\n\n})(jQuery);"
  },
  {
    "path": "public/admin/js/rounded-counter/jquery.knob.js",
    "content": "/*!jQuery Knob*/\n/**\n * Downward compatible, touchable dial\n *\n * Version: 1.2.10\n * Requires: jQuery v1.7+\n *\n * Copyright (c) 2012 Anthony Terrien\n * Under MIT License (http://www.opensource.org/licenses/mit-license.php)\n *\n * Thanks to vor, eskimoblood, spiffistan, FabrizioC\n */\n(function (factory) {\n    if (typeof define === 'function' && define.amd) {\n        // AMD. Register as an anonymous module.\n        define(['jquery'], factory);\n    } else {\n        // Browser globals\n        factory(jQuery);\n    }\n}(function ($) {\n\n    /**\n     * Kontrol library\n     */\n    \"use strict\";\n\n    /**\n     * Definition of globals and core\n     */\n    var k = {}, // kontrol\n        max = Math.max,\n        min = Math.min;\n\n    k.c = {};\n    k.c.d = $(document);\n    k.c.t = function (e) {\n        return e.originalEvent.touches.length - 1;\n    };\n\n    /**\n     * Kontrol Object\n     *\n     * Definition of an abstract UI control\n     *\n     * Each concrete component must call this one.\n     * <code>\n     * k.o.call(this);\n     * </code>\n     */\n    k.o = function () {\n        var s = this;\n\n        this.o = null; // array of options\n        this.$ = null; // jQuery wrapped element\n        this.i = null; // mixed HTMLInputElement or array of HTMLInputElement\n        this.g = null; // deprecated 2D graphics context for 'pre-rendering'\n        this.v = null; // value ; mixed array or integer\n        this.cv = null; // change value ; not commited value\n        this.x = 0; // canvas x position\n        this.y = 0; // canvas y position\n        this.w = 0; // canvas width\n        this.h = 0; // canvas height\n        this.$c = null; // jQuery canvas element\n        this.c = null; // rendered canvas context\n        this.t = 0; // touches index\n        this.isInit = false;\n        this.fgColor = null; // main color\n        this.pColor = null; // previous color\n        this.dH = null; // draw hook\n        this.cH = null; // change hook\n        this.eH = null; // cancel hook\n        this.rH = null; // release hook\n        this.scale = 1; // scale factor\n        this.relative = false;\n        this.relativeWidth = false;\n        this.relativeHeight = false;\n        this.$div = null; // component div\n\n        this.run = function () {\n            var cf = function (e, conf) {\n                var k;\n                for (k in conf) {\n                    s.o[k] = conf[k];\n                }\n                s._carve().init();\n                s._configure()\n                 ._draw();\n            };\n\n            if (this.$.data('kontroled')) return;\n            this.$.data('kontroled', true);\n\n            this.extend();\n            this.o = $.extend({\n                    // Config\n                    min: this.$.data('min') !== undefined ? this.$.data('min') : 0,\n                    max: this.$.data('max') !== undefined ? this.$.data('max') : 100,\n                    stopper: true,\n                    readOnly: this.$.data('readonly') || (this.$.attr('readonly') === 'readonly'),\n\n                    // UI\n                    cursor: this.$.data('cursor') === true && 30\n                            || this.$.data('cursor') || 0,\n                    thickness: this.$.data('thickness')\n                               && Math.max(Math.min(this.$.data('thickness'), 1), 0.01)\n                               || 0.35,\n                    lineCap: this.$.data('linecap') || 'butt',\n                    width: this.$.data('width') || 200,\n                    height: this.$.data('height') || 200,\n                    displayInput: this.$.data('displayinput') == null || this.$.data('displayinput'),\n                    displayPrevious: this.$.data('displayprevious'),\n                    fgColor: this.$.data('fgcolor') || '#87CEEB',\n                    inputColor: this.$.data('inputcolor'),\n                    font: this.$.data('font') || 'Arial',\n                    fontWeight: this.$.data('font-weight') || 'bold',\n                    inline: false,\n                    step: this.$.data('step') || 1,\n                    rotation: this.$.data('rotation'),\n\n                    // Hooks\n                    draw: null, // function () {}\n                    change: null, // function (value) {}\n                    cancel: null, // function () {}\n                    release: null, // function (value) {}\n\n                    // Output formatting, allows to add unit: %, ms ...\n                    format: function(v) {\n                        return v;\n                    },\n                    parse: function (v) {\n                        return parseFloat(v);\n                    }\n                }, this.o\n            );\n\n            // finalize options\n            this.o.flip = this.o.rotation === 'anticlockwise' || this.o.rotation === 'acw';\n            if (!this.o.inputColor) {\n                this.o.inputColor = this.o.fgColor;\n            }\n\n            // routing value\n            if (this.$.is('fieldset')) {\n\n                // fieldset = array of integer\n                this.v = {};\n                this.i = this.$.find('input');\n                this.i.each(function(k) {\n                    var $this = $(this);\n                    s.i[k] = $this;\n                    s.v[k] = s.o.parse($this.val());\n\n                    $this.bind(\n                        'change blur',\n                        function () {\n                            var val = {};\n                            val[k] = $this.val();\n                            s.val(val);\n                        }\n                    );\n                });\n                this.$.find('legend').remove();\n            } else {\n\n                // input = integer\n                this.i = this.$;\n                this.v = this.o.parse(this.$.val());\n                this.v === '' && (this.v = this.o.min);\n                this.$.bind(\n                    'change blur',\n                    function () {\n                        s.val(s._validate(s.o.parse(s.$.val())));\n                    }\n                );\n\n            }\n\n            !this.o.displayInput && this.$.hide();\n\n            // adds needed DOM elements (canvas, div)\n            this.$c = $(document.createElement('canvas')).attr({\n                width: this.o.width,\n                height: this.o.height\n            });\n\n            // wraps all elements in a div\n            // add to DOM before Canvas init is triggered\n            this.$div = $('<div style=\"'\n                + (this.o.inline ? 'display:inline;' : '')\n                + 'width:' + this.o.width + 'px;height:' + this.o.height + 'px;'\n                + '\"></div>');\n\n            this.$.wrap(this.$div).before(this.$c);\n            this.$div = this.$.parent();\n\n            if (typeof G_vmlCanvasManager !== 'undefined') {\n                G_vmlCanvasManager.initElement(this.$c[0]);\n            }\n\n            this.c = this.$c[0].getContext ? this.$c[0].getContext('2d') : null;\n\n            if (!this.c) {\n                throw {\n                    name:        \"CanvasNotSupportedException\",\n                    message:     \"Canvas not supported. Please use excanvas on IE8.0.\",\n                    toString:    function(){return this.name + \": \" + this.message}\n                }\n            }\n\n            // hdpi support\n            this.scale = (window.devicePixelRatio || 1) / (\n                            this.c.webkitBackingStorePixelRatio ||\n                            this.c.mozBackingStorePixelRatio ||\n                            this.c.msBackingStorePixelRatio ||\n                            this.c.oBackingStorePixelRatio ||\n                            this.c.backingStorePixelRatio || 1\n                         );\n\n            // detects relative width / height\n            this.relativeWidth =  this.o.width % 1 !== 0\n                                  && this.o.width.indexOf('%');\n            this.relativeHeight = this.o.height % 1 !== 0\n                                  && this.o.height.indexOf('%');\n            this.relative = this.relativeWidth || this.relativeHeight;\n\n            // computes size and carves the component\n            this._carve();\n\n            // prepares props for transaction\n            if (this.v instanceof Object) {\n                this.cv = {};\n                this.copy(this.v, this.cv);\n            } else {\n                this.cv = this.v;\n            }\n\n            // binds configure event\n            this.$\n                .bind(\"configure\", cf)\n                .parent()\n                .bind(\"configure\", cf);\n\n            // finalize init\n            this._listen()\n                ._configure()\n                ._xy()\n                .init();\n\n            this.isInit = true;\n\n            this.$.val(this.o.format(this.v));\n            this._draw();\n\n            return this;\n        };\n\n        this._carve = function() {\n            if (this.relative) {\n                var w = this.relativeWidth ?\n                        this.$div.parent().width() *\n                        parseInt(this.o.width) / 100\n                        : this.$div.parent().width(),\n                    h = this.relativeHeight ?\n                        this.$div.parent().height() *\n                        parseInt(this.o.height) / 100\n                        : this.$div.parent().height();\n\n                // apply relative\n                this.w = this.h = Math.min(w, h);\n            } else {\n                this.w = this.o.width;\n                this.h = this.o.height;\n            }\n\n            // finalize div\n            this.$div.css({\n                'width': this.w + 'px',\n                'height': this.h + 'px'\n            });\n\n            // finalize canvas with computed width\n            this.$c.attr({\n                width: this.w,\n                height: this.h\n            });\n\n            // scaling\n            if (this.scale !== 1) {\n                this.$c[0].width = this.$c[0].width * this.scale;\n                this.$c[0].height = this.$c[0].height * this.scale;\n                this.$c.width(this.w);\n                this.$c.height(this.h);\n            }\n\n            return this;\n        }\n\n        this._draw = function () {\n\n            // canvas pre-rendering\n            var d = true;\n\n            s.g = s.c;\n\n            s.clear();\n\n            s.dH && (d = s.dH());\n\n            d !== false && s.draw();\n        };\n\n        this._touch = function (e) {\n            var touchMove = function (e) {\n                var v = s.xy2val(\n                            e.originalEvent.touches[s.t].pageX,\n                            e.originalEvent.touches[s.t].pageY\n                        );\n\n                if (v == s.cv) return;\n\n                if (s.cH && s.cH(v) === false) return;\n\n                s.change(s._validate(v));\n                s._draw();\n            };\n\n            // get touches index\n            this.t = k.c.t(e);\n\n            // First touch\n            touchMove(e);\n\n            // Touch events listeners\n            k.c.d\n                .bind(\"touchmove.k\", touchMove)\n                .bind(\n                    \"touchend.k\",\n                    function () {\n                        k.c.d.unbind('touchmove.k touchend.k');\n                        s.val(s.cv);\n                    }\n                );\n\n            return this;\n        };\n\n        this._mouse = function (e) {\n            var mouseMove = function (e) {\n                var v = s.xy2val(e.pageX, e.pageY);\n\n                if (v == s.cv) return;\n\n                if (s.cH && (s.cH(v) === false)) return;\n\n                s.change(s._validate(v));\n                s._draw();\n            };\n\n            // First click\n            mouseMove(e);\n\n            // Mouse events listeners\n            k.c.d\n                .bind(\"mousemove.k\", mouseMove)\n                .bind(\n                    // Escape key cancel current change\n                    \"keyup.k\",\n                    function (e) {\n                        if (e.keyCode === 27) {\n                            k.c.d.unbind(\"mouseup.k mousemove.k keyup.k\");\n\n                            if (s.eH && s.eH() === false)\n                                return;\n\n                            s.cancel();\n                        }\n                    }\n                )\n                .bind(\n                    \"mouseup.k\",\n                    function (e) {\n                        k.c.d.unbind('mousemove.k mouseup.k keyup.k');\n                        s.val(s.cv);\n                    }\n                );\n\n            return this;\n        };\n\n        this._xy = function () {\n            var o = this.$c.offset();\n            this.x = o.left;\n            this.y = o.top;\n\n            return this;\n        };\n\n        this._listen = function () {\n            if (!this.o.readOnly) {\n                this.$c\n                    .bind(\n                        \"mousedown\",\n                        function (e) {\n                            e.preventDefault();\n                            s._xy()._mouse(e);\n                        }\n                    )\n                    .bind(\n                        \"touchstart\",\n                        function (e) {\n                            e.preventDefault();\n                            s._xy()._touch(e);\n                        }\n                    );\n\n                this.listen();\n            } else {\n                this.$.attr('readonly', 'readonly');\n            }\n\n            if (this.relative) {\n                $(window).resize(function() {\n                    s._carve().init();\n                    s._draw();\n                });\n            }\n\n            return this;\n        };\n\n        this._configure = function () {\n\n            // Hooks\n            if (this.o.draw) this.dH = this.o.draw;\n            if (this.o.change) this.cH = this.o.change;\n            if (this.o.cancel) this.eH = this.o.cancel;\n            if (this.o.release) this.rH = this.o.release;\n\n            if (this.o.displayPrevious) {\n                this.pColor = this.h2rgba(this.o.fgColor, \"0.4\");\n                this.fgColor = this.h2rgba(this.o.fgColor, \"0.6\");\n            } else {\n                this.fgColor = this.o.fgColor;\n            }\n\n            return this;\n        };\n\n        this._clear = function () {\n            this.$c[0].width = this.$c[0].width;\n        };\n\n        this._validate = function (v) {\n            return (~~ (((v < 0) ? -0.5 : 0.5) + (v/this.o.step))) * this.o.step;\n        };\n\n        // Abstract methods\n        this.listen = function () {}; // on start, one time\n        this.extend = function () {}; // each time configure triggered\n        this.init = function () {}; // each time configure triggered\n        this.change = function (v) {}; // on change\n        this.val = function (v) {}; // on release\n        this.xy2val = function (x, y) {}; //\n        this.draw = function () {}; // on change / on release\n        this.clear = function () { this._clear(); };\n\n        // Utils\n        this.h2rgba = function (h, a) {\n            var rgb;\n            h = h.substring(1,7)\n            rgb = [\n                parseInt(h.substring(0,2), 16),\n                parseInt(h.substring(2,4), 16),\n                parseInt(h.substring(4,6), 16)\n            ];\n\n            return \"rgba(\" + rgb[0] + \",\" + rgb[1] + \",\" + rgb[2] + \",\" + a + \")\";\n        };\n\n        this.copy = function (f, t) {\n            for (var i in f) {\n                t[i] = f[i];\n            }\n        };\n    };\n\n\n    /**\n     * k.Dial\n     */\n    k.Dial = function () {\n        k.o.call(this);\n\n        this.startAngle = null;\n        this.xy = null;\n        this.radius = null;\n        this.lineWidth = null;\n        this.cursorExt = null;\n        this.w2 = null;\n        this.PI2 = 2*Math.PI;\n\n        this.extend = function () {\n            this.o = $.extend({\n                bgColor: this.$.data('bgcolor') || '#EEEEEE',\n                angleOffset: this.$.data('angleoffset') || 0,\n                angleArc: this.$.data('anglearc') || 360,\n                inline: true\n            }, this.o);\n        };\n\n        this.val = function (v, triggerRelease) {\n            if (null != v) {\n\n                // reverse format\n                v = this.o.parse(v);\n\n                if (triggerRelease !== false\n                    && v != this.v\n                    && this.rH\n                    && this.rH(v) === false) { return; }\n\n                this.cv = this.o.stopper ? max(min(v, this.o.max), this.o.min) : v;\n                this.v = this.cv;\n                this.$.val(this.o.format(this.v));\n                this._draw();\n            } else {\n                return this.v;\n            }\n        };\n\n        this.xy2val = function (x, y) {\n            var a, ret;\n\n            a = Math.atan2(\n                        x - (this.x + this.w2),\n                        - (y - this.y - this.w2)\n                    ) - this.angleOffset;\n\n            if (this.o.flip) {\n                a = this.angleArc - a - this.PI2;\n            }\n\n            if (this.angleArc != this.PI2 && (a < 0) && (a > -0.5)) {\n\n                // if isset angleArc option, set to min if .5 under min\n                a = 0;\n            } else if (a < 0) {\n                a += this.PI2;\n            }\n\n            ret = ~~ (0.5 + (a * (this.o.max - this.o.min) / this.angleArc)) + this.o.min;\n\n            this.o.stopper && (ret = max(min(ret, this.o.max), this.o.min));\n\n            return ret;\n        };\n\n        this.listen = function () {\n\n            // bind MouseWheel\n            var s = this, mwTimerStop,\n                mwTimerRelease,\n                mw = function (e) {\n                    e.preventDefault();\n\n                    var ori = e.originalEvent,\n                        deltaX = ori.detail || ori.wheelDeltaX,\n                        deltaY = ori.detail || ori.wheelDeltaY,\n                        v = s._validate(s.o.parse(s.$.val()))\n                            + (\n                                deltaX > 0 || deltaY > 0\n                                ? s.o.step\n                                : deltaX < 0 || deltaY < 0 ? -s.o.step : 0\n                              );\n\n                    v = max(min(v, s.o.max), s.o.min);\n\n                    s.val(v, false);\n\n                    if (s.rH) {\n                        // Handle mousewheel stop\n                        clearTimeout(mwTimerStop);\n                        mwTimerStop = setTimeout(function () {\n                            s.rH(v);\n                            mwTimerStop = null;\n                        }, 100);\n\n                        // Handle mousewheel releases\n                        if (!mwTimerRelease) {\n                            mwTimerRelease = setTimeout(function () {\n                                if (mwTimerStop)\n                                    s.rH(v);\n                                mwTimerRelease = null;\n                            }, 200);\n                        }\n                    }\n                },\n                kval,\n                to,\n                m = 1,\n                kv = {\n                    37: -s.o.step,\n                    38: s.o.step,\n                    39: s.o.step,\n                    40: -s.o.step\n                };\n\n            this.$\n                .bind(\n                    \"keydown\",\n                    function (e) {\n                        var kc = e.keyCode;\n\n                        // numpad support\n                        if (kc >= 96 && kc <= 105) {\n                            kc = e.keyCode = kc - 48;\n                        }\n\n                        kval = parseInt(String.fromCharCode(kc));\n\n                        if (isNaN(kval)) {\n                            (kc !== 13)                     // enter\n                            && kc !== 8                     // bs\n                            && kc !== 9                     // tab\n                            && kc !== 189                   // -\n                            && (kc !== 190\n                                || s.$.val().match(/\\./))   // . allowed once\n                            && e.preventDefault();\n\n                            // arrows\n                            if ($.inArray(kc,[37,38,39,40]) > -1) {\n                                e.preventDefault();\n\n                                var v = s.o.parse(s.$.val()) + kv[kc] * m;\n                                s.o.stopper && (v = max(min(v, s.o.max), s.o.min));\n\n                                s.change(v);\n                                s._draw();\n\n                                // long time keydown speed-up\n                                to = window.setTimeout(function () {\n                                    m *= 2;\n                                }, 30);\n                            }\n                        }\n                    }\n                )\n                .bind(\n                    \"keyup\",\n                    function (e) {\n                        if (isNaN(kval)) {\n                            if (to) {\n                                window.clearTimeout(to);\n                                to = null;\n                                m = 1;\n                                s.val(s.$.val());\n                            }\n                        } else {\n                            // kval postcond\n                            (s.$.val() > s.o.max && s.$.val(s.o.max))\n                            || (s.$.val() < s.o.min && s.$.val(s.o.min));\n                        }\n                    }\n                );\n\n            this.$c.bind(\"mousewheel DOMMouseScroll\", mw);\n            this.$.bind(\"mousewheel DOMMouseScroll\", mw)\n        };\n\n        this.init = function () {\n            if (this.v < this.o.min\n                || this.v > this.o.max) { this.v = this.o.min; }\n\n            this.$.val(this.v);\n            this.w2 = this.w / 2;\n            this.cursorExt = this.o.cursor / 100;\n            this.xy = this.w2 * this.scale;\n            this.lineWidth = this.xy * this.o.thickness;\n            this.lineCap = this.o.lineCap;\n            this.radius = this.xy - this.lineWidth / 2;\n\n            this.o.angleOffset\n            && (this.o.angleOffset = isNaN(this.o.angleOffset) ? 0 : this.o.angleOffset);\n\n            this.o.angleArc\n            && (this.o.angleArc = isNaN(this.o.angleArc) ? this.PI2 : this.o.angleArc);\n\n            // deg to rad\n            this.angleOffset = this.o.angleOffset * Math.PI / 180;\n            this.angleArc = this.o.angleArc * Math.PI / 180;\n\n            // compute start and end angles\n            this.startAngle = 1.5 * Math.PI + this.angleOffset;\n            this.endAngle = 1.5 * Math.PI + this.angleOffset + this.angleArc;\n\n            var s = max(\n                String(Math.abs(this.o.max)).length,\n                String(Math.abs(this.o.min)).length,\n                2\n            ) + 2;\n\n            this.o.displayInput\n                && this.i.css({\n                        'width' : ((this.w / 2 + 4) >> 0) + 'px',\n                        'height' : ((this.w / 3) >> 0) + 'px',\n                        'position' : 'absolute',\n                        'vertical-align' : 'middle',\n                        'margin-top' : ((this.w / 3) >> 0) + 'px',\n                        'margin-left' : '-' + ((this.w * 3 / 4 + 2) >> 0) + 'px',\n                        'border' : 0,\n                        'background' : 'none',\n                        'font' : this.o.fontWeight + ' ' + ((this.w / s) >> 0) + 'px ' + this.o.font,\n                        'text-align' : 'center',\n                        'color' : this.o.inputColor || this.o.fgColor,\n                        'padding' : '0px',\n                        '-webkit-appearance': 'none'\n                        }) || this.i.css({\n                            'width': '0px',\n                            'visibility': 'hidden'\n                        });\n        };\n\n        this.change = function (v) {\n            this.cv = v;\n            this.$.val(this.o.format(v));\n        };\n\n        this.angle = function (v) {\n            return (v - this.o.min) * this.angleArc / (this.o.max - this.o.min);\n        };\n\n        this.arc = function (v) {\n          var sa, ea;\n          v = this.angle(v);\n          if (this.o.flip) {\n              sa = this.endAngle + 0.00001;\n              ea = sa - v - 0.00001;\n          } else {\n              sa = this.startAngle - 0.00001;\n              ea = sa + v + 0.00001;\n          }\n          this.o.cursor\n              && (sa = ea - this.cursorExt)\n              && (ea = ea + this.cursorExt);\n\n          return {\n              s: sa,\n              e: ea,\n              d: this.o.flip && !this.o.cursor\n          };\n        };\n\n        this.draw = function () {\n            var c = this.g,                 // context\n                a = this.arc(this.cv),      // Arc\n                pa,                         // Previous arc\n                r = 1;\n\n            c.lineWidth = this.lineWidth;\n            c.lineCap = this.lineCap;\n\n            if (this.o.bgColor !== \"none\") {\n                c.beginPath();\n                    c.strokeStyle = this.o.bgColor;\n                    c.arc(this.xy, this.xy, this.radius, this.endAngle - 0.00001, this.startAngle + 0.00001, true);\n                c.stroke();\n            }\n\n            if (this.o.displayPrevious) {\n                pa = this.arc(this.v);\n                c.beginPath();\n                c.strokeStyle = this.pColor;\n                c.arc(this.xy, this.xy, this.radius, pa.s, pa.e, pa.d);\n                c.stroke();\n                r = this.cv == this.v;\n            }\n\n            c.beginPath();\n            c.strokeStyle = r ? this.o.fgColor : this.fgColor ;\n            c.arc(this.xy, this.xy, this.radius, a.s, a.e, a.d);\n            c.stroke();\n        };\n\n        this.cancel = function () {\n            this.val(this.v);\n        };\n    };\n\n    $.fn.dial = $.fn.knob = function (o) {\n        return this.each(\n            function () {\n                var d = new k.Dial();\n                d.o = o;\n                d.$ = $(this);\n                d.run();\n            }\n        ).parent();\n    };\n\n}));"
  },
  {
    "path": "public/admin/js/rounded-counter/knob-active.js",
    "content": "(function ($) {\n \"use strict\";\n\t\t/*---------------------\n       Circular Bars - Knob\n    --------------------- */\t\n\t  if(typeof($.fn.knob) != 'undefined') {\n\t\t$('.knob').each(function () {\n\t\t  var $this = $(this),\n\t\t\t  knobVal = $this.attr('data-rel');\n\t\n\t\t  $this.knob({\n\t\t\t'draw' : function () { \n\t\t\t  $(this.i).val(this.cv + '%')\n\t\t\t}\n\t\t  });\n\t\t  \n\t\t  $this.appear(function() {\n\t\t\t$({\n\t\t\t  value: 0\n\t\t\t}).animate({\n\t\t\t  value: knobVal\n\t\t\t}, {\n\t\t\t  duration : 2000,\n\t\t\t  easing   : 'swing',\n\t\t\t  step     : function () {\n\t\t\t\t$this.val(Math.ceil(this.value)).trigger('change');\n\t\t\t  }\n\t\t\t});\n\t\t  }, {accX: 0, accY: -150});\n\t\t});\n    }\t\n\n\t\t \n \n})(jQuery); "
  },
  {
    "path": "public/admin/js/select2/select2-active.js",
    "content": "(function ($) {\n \"use strict\";\n \n\t$(\".select2_demo_2\").select2();\n\t$(\".select2_demo_3\").select2({\n\t\tplaceholder: \"Select a state\",\n\t\tallowClear: true\n\t});\n\n\t\n \n})(jQuery); "
  },
  {
    "path": "public/admin/js/select2.js",
    "content": "/*\nCopyright 2012 Igor Vaynberg\n\nVersion: 3.4.4 Timestamp: Thu Oct 24 13:23:11 PDT 2013\n\nThis software is licensed under the Apache License, Version 2.0 (the \"Apache License\") or the GNU\nGeneral Public License version 2 (the \"GPL License\"). You may choose either license to govern your\nuse of this software only upon the condition that you accept all of the terms of either the Apache\nLicense or the GPL License.\n\nYou may obtain a copy of the Apache License and the GPL License at:\n\n    http://www.apache.org/licenses/LICENSE-2.0\n    http://www.gnu.org/licenses/gpl-2.0.html\n\nUnless required by applicable law or agreed to in writing, software distributed under the\nApache License or the GPL Licesnse is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\nCONDITIONS OF ANY KIND, either express or implied. See the Apache License and the GPL License for\nthe specific language governing permissions and limitations under the Apache License and the GPL License.\n*/\n(function ($) {\n    if(typeof $.fn.each2 == \"undefined\") {\n        $.extend($.fn, {\n            /*\n            * 4-10 times faster .each replacement\n            * use it carefully, as it overrides jQuery context of element on each iteration\n            */\n            each2 : function (c) {\n                var j = $([0]), i = -1, l = this.length;\n                while (\n                    ++i < l\n                    && (j.context = j[0] = this[i])\n                    && c.call(j[0], i, j) !== false //\"this\"=DOM, i=index, j=jQuery object\n                );\n                return this;\n            }\n        });\n    }\n})(jQuery);\n\n(function ($, undefined) {\n    \"use strict\";\n    /*global document, window, jQuery, console */\n\n    if (window.Select2 !== undefined) {\n        return;\n    }\n\n    var KEY, AbstractSelect2, SingleSelect2, MultiSelect2, nextUid, sizer,\n        lastMousePosition={x:0,y:0}, $document, scrollBarDimensions,\n\n    KEY = {\n        TAB: 9,\n        ENTER: 13,\n        ESC: 27,\n        SPACE: 32,\n        LEFT: 37,\n        UP: 38,\n        RIGHT: 39,\n        DOWN: 40,\n        SHIFT: 16,\n        CTRL: 17,\n        ALT: 18,\n        PAGE_UP: 33,\n        PAGE_DOWN: 34,\n        HOME: 36,\n        END: 35,\n        BACKSPACE: 8,\n        DELETE: 46,\n        isArrow: function (k) {\n            k = k.which ? k.which : k;\n            switch (k) {\n            case KEY.LEFT:\n            case KEY.RIGHT:\n            case KEY.UP:\n            case KEY.DOWN:\n                return true;\n            }\n            return false;\n        },\n        isControl: function (e) {\n            var k = e.which;\n            switch (k) {\n            case KEY.SHIFT:\n            case KEY.CTRL:\n            case KEY.ALT:\n                return true;\n            }\n\n            if (e.metaKey) return true;\n\n            return false;\n        },\n        isFunctionKey: function (k) {\n            k = k.which ? k.which : k;\n            return k >= 112 && k <= 123;\n        }\n    },\n    MEASURE_SCROLLBAR_TEMPLATE = \"<div class='select2-measure-scrollbar'></div>\",\n\n    DIACRITICS = {\"\\u24B6\":\"A\",\"\\uFF21\":\"A\",\"\\u00C0\":\"A\",\"\\u00C1\":\"A\",\"\\u00C2\":\"A\",\"\\u1EA6\":\"A\",\"\\u1EA4\":\"A\",\"\\u1EAA\":\"A\",\"\\u1EA8\":\"A\",\"\\u00C3\":\"A\",\"\\u0100\":\"A\",\"\\u0102\":\"A\",\"\\u1EB0\":\"A\",\"\\u1EAE\":\"A\",\"\\u1EB4\":\"A\",\"\\u1EB2\":\"A\",\"\\u0226\":\"A\",\"\\u01E0\":\"A\",\"\\u00C4\":\"A\",\"\\u01DE\":\"A\",\"\\u1EA2\":\"A\",\"\\u00C5\":\"A\",\"\\u01FA\":\"A\",\"\\u01CD\":\"A\",\"\\u0200\":\"A\",\"\\u0202\":\"A\",\"\\u1EA0\":\"A\",\"\\u1EAC\":\"A\",\"\\u1EB6\":\"A\",\"\\u1E00\":\"A\",\"\\u0104\":\"A\",\"\\u023A\":\"A\",\"\\u2C6F\":\"A\",\"\\uA732\":\"AA\",\"\\u00C6\":\"AE\",\"\\u01FC\":\"AE\",\"\\u01E2\":\"AE\",\"\\uA734\":\"AO\",\"\\uA736\":\"AU\",\"\\uA738\":\"AV\",\"\\uA73A\":\"AV\",\"\\uA73C\":\"AY\",\"\\u24B7\":\"B\",\"\\uFF22\":\"B\",\"\\u1E02\":\"B\",\"\\u1E04\":\"B\",\"\\u1E06\":\"B\",\"\\u0243\":\"B\",\"\\u0182\":\"B\",\"\\u0181\":\"B\",\"\\u24B8\":\"C\",\"\\uFF23\":\"C\",\"\\u0106\":\"C\",\"\\u0108\":\"C\",\"\\u010A\":\"C\",\"\\u010C\":\"C\",\"\\u00C7\":\"C\",\"\\u1E08\":\"C\",\"\\u0187\":\"C\",\"\\u023B\":\"C\",\"\\uA73E\":\"C\",\"\\u24B9\":\"D\",\"\\uFF24\":\"D\",\"\\u1E0A\":\"D\",\"\\u010E\":\"D\",\"\\u1E0C\":\"D\",\"\\u1E10\":\"D\",\"\\u1E12\":\"D\",\"\\u1E0E\":\"D\",\"\\u0110\":\"D\",\"\\u018B\":\"D\",\"\\u018A\":\"D\",\"\\u0189\":\"D\",\"\\uA779\":\"D\",\"\\u01F1\":\"DZ\",\"\\u01C4\":\"DZ\",\"\\u01F2\":\"Dz\",\"\\u01C5\":\"Dz\",\"\\u24BA\":\"E\",\"\\uFF25\":\"E\",\"\\u00C8\":\"E\",\"\\u00C9\":\"E\",\"\\u00CA\":\"E\",\"\\u1EC0\":\"E\",\"\\u1EBE\":\"E\",\"\\u1EC4\":\"E\",\"\\u1EC2\":\"E\",\"\\u1EBC\":\"E\",\"\\u0112\":\"E\",\"\\u1E14\":\"E\",\"\\u1E16\":\"E\",\"\\u0114\":\"E\",\"\\u0116\":\"E\",\"\\u00CB\":\"E\",\"\\u1EBA\":\"E\",\"\\u011A\":\"E\",\"\\u0204\":\"E\",\"\\u0206\":\"E\",\"\\u1EB8\":\"E\",\"\\u1EC6\":\"E\",\"\\u0228\":\"E\",\"\\u1E1C\":\"E\",\"\\u0118\":\"E\",\"\\u1E18\":\"E\",\"\\u1E1A\":\"E\",\"\\u0190\":\"E\",\"\\u018E\":\"E\",\"\\u24BB\":\"F\",\"\\uFF26\":\"F\",\"\\u1E1E\":\"F\",\"\\u0191\":\"F\",\"\\uA77B\":\"F\",\"\\u24BC\":\"G\",\"\\uFF27\":\"G\",\"\\u01F4\":\"G\",\"\\u011C\":\"G\",\"\\u1E20\":\"G\",\"\\u011E\":\"G\",\"\\u0120\":\"G\",\"\\u01E6\":\"G\",\"\\u0122\":\"G\",\"\\u01E4\":\"G\",\"\\u0193\":\"G\",\"\\uA7A0\":\"G\",\"\\uA77D\":\"G\",\"\\uA77E\":\"G\",\"\\u24BD\":\"H\",\"\\uFF28\":\"H\",\"\\u0124\":\"H\",\"\\u1E22\":\"H\",\"\\u1E26\":\"H\",\"\\u021E\":\"H\",\"\\u1E24\":\"H\",\"\\u1E28\":\"H\",\"\\u1E2A\":\"H\",\"\\u0126\":\"H\",\"\\u2C67\":\"H\",\"\\u2C75\":\"H\",\"\\uA78D\":\"H\",\"\\u24BE\":\"I\",\"\\uFF29\":\"I\",\"\\u00CC\":\"I\",\"\\u00CD\":\"I\",\"\\u00CE\":\"I\",\"\\u0128\":\"I\",\"\\u012A\":\"I\",\"\\u012C\":\"I\",\"\\u0130\":\"I\",\"\\u00CF\":\"I\",\"\\u1E2E\":\"I\",\"\\u1EC8\":\"I\",\"\\u01CF\":\"I\",\"\\u0208\":\"I\",\"\\u020A\":\"I\",\"\\u1ECA\":\"I\",\"\\u012E\":\"I\",\"\\u1E2C\":\"I\",\"\\u0197\":\"I\",\"\\u24BF\":\"J\",\"\\uFF2A\":\"J\",\"\\u0134\":\"J\",\"\\u0248\":\"J\",\"\\u24C0\":\"K\",\"\\uFF2B\":\"K\",\"\\u1E30\":\"K\",\"\\u01E8\":\"K\",\"\\u1E32\":\"K\",\"\\u0136\":\"K\",\"\\u1E34\":\"K\",\"\\u0198\":\"K\",\"\\u2C69\":\"K\",\"\\uA740\":\"K\",\"\\uA742\":\"K\",\"\\uA744\":\"K\",\"\\uA7A2\":\"K\",\"\\u24C1\":\"L\",\"\\uFF2C\":\"L\",\"\\u013F\":\"L\",\"\\u0139\":\"L\",\"\\u013D\":\"L\",\"\\u1E36\":\"L\",\"\\u1E38\":\"L\",\"\\u013B\":\"L\",\"\\u1E3C\":\"L\",\"\\u1E3A\":\"L\",\"\\u0141\":\"L\",\"\\u023D\":\"L\",\"\\u2C62\":\"L\",\"\\u2C60\":\"L\",\"\\uA748\":\"L\",\"\\uA746\":\"L\",\"\\uA780\":\"L\",\"\\u01C7\":\"LJ\",\"\\u01C8\":\"Lj\",\"\\u24C2\":\"M\",\"\\uFF2D\":\"M\",\"\\u1E3E\":\"M\",\"\\u1E40\":\"M\",\"\\u1E42\":\"M\",\"\\u2C6E\":\"M\",\"\\u019C\":\"M\",\"\\u24C3\":\"N\",\"\\uFF2E\":\"N\",\"\\u01F8\":\"N\",\"\\u0143\":\"N\",\"\\u00D1\":\"N\",\"\\u1E44\":\"N\",\"\\u0147\":\"N\",\"\\u1E46\":\"N\",\"\\u0145\":\"N\",\"\\u1E4A\":\"N\",\"\\u1E48\":\"N\",\"\\u0220\":\"N\",\"\\u019D\":\"N\",\"\\uA790\":\"N\",\"\\uA7A4\":\"N\",\"\\u01CA\":\"NJ\",\"\\u01CB\":\"Nj\",\"\\u24C4\":\"O\",\"\\uFF2F\":\"O\",\"\\u00D2\":\"O\",\"\\u00D3\":\"O\",\"\\u00D4\":\"O\",\"\\u1ED2\":\"O\",\"\\u1ED0\":\"O\",\"\\u1ED6\":\"O\",\"\\u1ED4\":\"O\",\"\\u00D5\":\"O\",\"\\u1E4C\":\"O\",\"\\u022C\":\"O\",\"\\u1E4E\":\"O\",\"\\u014C\":\"O\",\"\\u1E50\":\"O\",\"\\u1E52\":\"O\",\"\\u014E\":\"O\",\"\\u022E\":\"O\",\"\\u0230\":\"O\",\"\\u00D6\":\"O\",\"\\u022A\":\"O\",\"\\u1ECE\":\"O\",\"\\u0150\":\"O\",\"\\u01D1\":\"O\",\"\\u020C\":\"O\",\"\\u020E\":\"O\",\"\\u01A0\":\"O\",\"\\u1EDC\":\"O\",\"\\u1EDA\":\"O\",\"\\u1EE0\":\"O\",\"\\u1EDE\":\"O\",\"\\u1EE2\":\"O\",\"\\u1ECC\":\"O\",\"\\u1ED8\":\"O\",\"\\u01EA\":\"O\",\"\\u01EC\":\"O\",\"\\u00D8\":\"O\",\"\\u01FE\":\"O\",\"\\u0186\":\"O\",\"\\u019F\":\"O\",\"\\uA74A\":\"O\",\"\\uA74C\":\"O\",\"\\u01A2\":\"OI\",\"\\uA74E\":\"OO\",\"\\u0222\":\"OU\",\"\\u24C5\":\"P\",\"\\uFF30\":\"P\",\"\\u1E54\":\"P\",\"\\u1E56\":\"P\",\"\\u01A4\":\"P\",\"\\u2C63\":\"P\",\"\\uA750\":\"P\",\"\\uA752\":\"P\",\"\\uA754\":\"P\",\"\\u24C6\":\"Q\",\"\\uFF31\":\"Q\",\"\\uA756\":\"Q\",\"\\uA758\":\"Q\",\"\\u024A\":\"Q\",\"\\u24C7\":\"R\",\"\\uFF32\":\"R\",\"\\u0154\":\"R\",\"\\u1E58\":\"R\",\"\\u0158\":\"R\",\"\\u0210\":\"R\",\"\\u0212\":\"R\",\"\\u1E5A\":\"R\",\"\\u1E5C\":\"R\",\"\\u0156\":\"R\",\"\\u1E5E\":\"R\",\"\\u024C\":\"R\",\"\\u2C64\":\"R\",\"\\uA75A\":\"R\",\"\\uA7A6\":\"R\",\"\\uA782\":\"R\",\"\\u24C8\":\"S\",\"\\uFF33\":\"S\",\"\\u1E9E\":\"S\",\"\\u015A\":\"S\",\"\\u1E64\":\"S\",\"\\u015C\":\"S\",\"\\u1E60\":\"S\",\"\\u0160\":\"S\",\"\\u1E66\":\"S\",\"\\u1E62\":\"S\",\"\\u1E68\":\"S\",\"\\u0218\":\"S\",\"\\u015E\":\"S\",\"\\u2C7E\":\"S\",\"\\uA7A8\":\"S\",\"\\uA784\":\"S\",\"\\u24C9\":\"T\",\"\\uFF34\":\"T\",\"\\u1E6A\":\"T\",\"\\u0164\":\"T\",\"\\u1E6C\":\"T\",\"\\u021A\":\"T\",\"\\u0162\":\"T\",\"\\u1E70\":\"T\",\"\\u1E6E\":\"T\",\"\\u0166\":\"T\",\"\\u01AC\":\"T\",\"\\u01AE\":\"T\",\"\\u023E\":\"T\",\"\\uA786\":\"T\",\"\\uA728\":\"TZ\",\"\\u24CA\":\"U\",\"\\uFF35\":\"U\",\"\\u00D9\":\"U\",\"\\u00DA\":\"U\",\"\\u00DB\":\"U\",\"\\u0168\":\"U\",\"\\u1E78\":\"U\",\"\\u016A\":\"U\",\"\\u1E7A\":\"U\",\"\\u016C\":\"U\",\"\\u00DC\":\"U\",\"\\u01DB\":\"U\",\"\\u01D7\":\"U\",\"\\u01D5\":\"U\",\"\\u01D9\":\"U\",\"\\u1EE6\":\"U\",\"\\u016E\":\"U\",\"\\u0170\":\"U\",\"\\u01D3\":\"U\",\"\\u0214\":\"U\",\"\\u0216\":\"U\",\"\\u01AF\":\"U\",\"\\u1EEA\":\"U\",\"\\u1EE8\":\"U\",\"\\u1EEE\":\"U\",\"\\u1EEC\":\"U\",\"\\u1EF0\":\"U\",\"\\u1EE4\":\"U\",\"\\u1E72\":\"U\",\"\\u0172\":\"U\",\"\\u1E76\":\"U\",\"\\u1E74\":\"U\",\"\\u0244\":\"U\",\"\\u24CB\":\"V\",\"\\uFF36\":\"V\",\"\\u1E7C\":\"V\",\"\\u1E7E\":\"V\",\"\\u01B2\":\"V\",\"\\uA75E\":\"V\",\"\\u0245\":\"V\",\"\\uA760\":\"VY\",\"\\u24CC\":\"W\",\"\\uFF37\":\"W\",\"\\u1E80\":\"W\",\"\\u1E82\":\"W\",\"\\u0174\":\"W\",\"\\u1E86\":\"W\",\"\\u1E84\":\"W\",\"\\u1E88\":\"W\",\"\\u2C72\":\"W\",\"\\u24CD\":\"X\",\"\\uFF38\":\"X\",\"\\u1E8A\":\"X\",\"\\u1E8C\":\"X\",\"\\u24CE\":\"Y\",\"\\uFF39\":\"Y\",\"\\u1EF2\":\"Y\",\"\\u00DD\":\"Y\",\"\\u0176\":\"Y\",\"\\u1EF8\":\"Y\",\"\\u0232\":\"Y\",\"\\u1E8E\":\"Y\",\"\\u0178\":\"Y\",\"\\u1EF6\":\"Y\",\"\\u1EF4\":\"Y\",\"\\u01B3\":\"Y\",\"\\u024E\":\"Y\",\"\\u1EFE\":\"Y\",\"\\u24CF\":\"Z\",\"\\uFF3A\":\"Z\",\"\\u0179\":\"Z\",\"\\u1E90\":\"Z\",\"\\u017B\":\"Z\",\"\\u017D\":\"Z\",\"\\u1E92\":\"Z\",\"\\u1E94\":\"Z\",\"\\u01B5\":\"Z\",\"\\u0224\":\"Z\",\"\\u2C7F\":\"Z\",\"\\u2C6B\":\"Z\",\"\\uA762\":\"Z\",\"\\u24D0\":\"a\",\"\\uFF41\":\"a\",\"\\u1E9A\":\"a\",\"\\u00E0\":\"a\",\"\\u00E1\":\"a\",\"\\u00E2\":\"a\",\"\\u1EA7\":\"a\",\"\\u1EA5\":\"a\",\"\\u1EAB\":\"a\",\"\\u1EA9\":\"a\",\"\\u00E3\":\"a\",\"\\u0101\":\"a\",\"\\u0103\":\"a\",\"\\u1EB1\":\"a\",\"\\u1EAF\":\"a\",\"\\u1EB5\":\"a\",\"\\u1EB3\":\"a\",\"\\u0227\":\"a\",\"\\u01E1\":\"a\",\"\\u00E4\":\"a\",\"\\u01DF\":\"a\",\"\\u1EA3\":\"a\",\"\\u00E5\":\"a\",\"\\u01FB\":\"a\",\"\\u01CE\":\"a\",\"\\u0201\":\"a\",\"\\u0203\":\"a\",\"\\u1EA1\":\"a\",\"\\u1EAD\":\"a\",\"\\u1EB7\":\"a\",\"\\u1E01\":\"a\",\"\\u0105\":\"a\",\"\\u2C65\":\"a\",\"\\u0250\":\"a\",\"\\uA733\":\"aa\",\"\\u00E6\":\"ae\",\"\\u01FD\":\"ae\",\"\\u01E3\":\"ae\",\"\\uA735\":\"ao\",\"\\uA737\":\"au\",\"\\uA739\":\"av\",\"\\uA73B\":\"av\",\"\\uA73D\":\"ay\",\"\\u24D1\":\"b\",\"\\uFF42\":\"b\",\"\\u1E03\":\"b\",\"\\u1E05\":\"b\",\"\\u1E07\":\"b\",\"\\u0180\":\"b\",\"\\u0183\":\"b\",\"\\u0253\":\"b\",\"\\u24D2\":\"c\",\"\\uFF43\":\"c\",\"\\u0107\":\"c\",\"\\u0109\":\"c\",\"\\u010B\":\"c\",\"\\u010D\":\"c\",\"\\u00E7\":\"c\",\"\\u1E09\":\"c\",\"\\u0188\":\"c\",\"\\u023C\":\"c\",\"\\uA73F\":\"c\",\"\\u2184\":\"c\",\"\\u24D3\":\"d\",\"\\uFF44\":\"d\",\"\\u1E0B\":\"d\",\"\\u010F\":\"d\",\"\\u1E0D\":\"d\",\"\\u1E11\":\"d\",\"\\u1E13\":\"d\",\"\\u1E0F\":\"d\",\"\\u0111\":\"d\",\"\\u018C\":\"d\",\"\\u0256\":\"d\",\"\\u0257\":\"d\",\"\\uA77A\":\"d\",\"\\u01F3\":\"dz\",\"\\u01C6\":\"dz\",\"\\u24D4\":\"e\",\"\\uFF45\":\"e\",\"\\u00E8\":\"e\",\"\\u00E9\":\"e\",\"\\u00EA\":\"e\",\"\\u1EC1\":\"e\",\"\\u1EBF\":\"e\",\"\\u1EC5\":\"e\",\"\\u1EC3\":\"e\",\"\\u1EBD\":\"e\",\"\\u0113\":\"e\",\"\\u1E15\":\"e\",\"\\u1E17\":\"e\",\"\\u0115\":\"e\",\"\\u0117\":\"e\",\"\\u00EB\":\"e\",\"\\u1EBB\":\"e\",\"\\u011B\":\"e\",\"\\u0205\":\"e\",\"\\u0207\":\"e\",\"\\u1EB9\":\"e\",\"\\u1EC7\":\"e\",\"\\u0229\":\"e\",\"\\u1E1D\":\"e\",\"\\u0119\":\"e\",\"\\u1E19\":\"e\",\"\\u1E1B\":\"e\",\"\\u0247\":\"e\",\"\\u025B\":\"e\",\"\\u01DD\":\"e\",\"\\u24D5\":\"f\",\"\\uFF46\":\"f\",\"\\u1E1F\":\"f\",\"\\u0192\":\"f\",\"\\uA77C\":\"f\",\"\\u24D6\":\"g\",\"\\uFF47\":\"g\",\"\\u01F5\":\"g\",\"\\u011D\":\"g\",\"\\u1E21\":\"g\",\"\\u011F\":\"g\",\"\\u0121\":\"g\",\"\\u01E7\":\"g\",\"\\u0123\":\"g\",\"\\u01E5\":\"g\",\"\\u0260\":\"g\",\"\\uA7A1\":\"g\",\"\\u1D79\":\"g\",\"\\uA77F\":\"g\",\"\\u24D7\":\"h\",\"\\uFF48\":\"h\",\"\\u0125\":\"h\",\"\\u1E23\":\"h\",\"\\u1E27\":\"h\",\"\\u021F\":\"h\",\"\\u1E25\":\"h\",\"\\u1E29\":\"h\",\"\\u1E2B\":\"h\",\"\\u1E96\":\"h\",\"\\u0127\":\"h\",\"\\u2C68\":\"h\",\"\\u2C76\":\"h\",\"\\u0265\":\"h\",\"\\u0195\":\"hv\",\"\\u24D8\":\"i\",\"\\uFF49\":\"i\",\"\\u00EC\":\"i\",\"\\u00ED\":\"i\",\"\\u00EE\":\"i\",\"\\u0129\":\"i\",\"\\u012B\":\"i\",\"\\u012D\":\"i\",\"\\u00EF\":\"i\",\"\\u1E2F\":\"i\",\"\\u1EC9\":\"i\",\"\\u01D0\":\"i\",\"\\u0209\":\"i\",\"\\u020B\":\"i\",\"\\u1ECB\":\"i\",\"\\u012F\":\"i\",\"\\u1E2D\":\"i\",\"\\u0268\":\"i\",\"\\u0131\":\"i\",\"\\u24D9\":\"j\",\"\\uFF4A\":\"j\",\"\\u0135\":\"j\",\"\\u01F0\":\"j\",\"\\u0249\":\"j\",\"\\u24DA\":\"k\",\"\\uFF4B\":\"k\",\"\\u1E31\":\"k\",\"\\u01E9\":\"k\",\"\\u1E33\":\"k\",\"\\u0137\":\"k\",\"\\u1E35\":\"k\",\"\\u0199\":\"k\",\"\\u2C6A\":\"k\",\"\\uA741\":\"k\",\"\\uA743\":\"k\",\"\\uA745\":\"k\",\"\\uA7A3\":\"k\",\"\\u24DB\":\"l\",\"\\uFF4C\":\"l\",\"\\u0140\":\"l\",\"\\u013A\":\"l\",\"\\u013E\":\"l\",\"\\u1E37\":\"l\",\"\\u1E39\":\"l\",\"\\u013C\":\"l\",\"\\u1E3D\":\"l\",\"\\u1E3B\":\"l\",\"\\u017F\":\"l\",\"\\u0142\":\"l\",\"\\u019A\":\"l\",\"\\u026B\":\"l\",\"\\u2C61\":\"l\",\"\\uA749\":\"l\",\"\\uA781\":\"l\",\"\\uA747\":\"l\",\"\\u01C9\":\"lj\",\"\\u24DC\":\"m\",\"\\uFF4D\":\"m\",\"\\u1E3F\":\"m\",\"\\u1E41\":\"m\",\"\\u1E43\":\"m\",\"\\u0271\":\"m\",\"\\u026F\":\"m\",\"\\u24DD\":\"n\",\"\\uFF4E\":\"n\",\"\\u01F9\":\"n\",\"\\u0144\":\"n\",\"\\u00F1\":\"n\",\"\\u1E45\":\"n\",\"\\u0148\":\"n\",\"\\u1E47\":\"n\",\"\\u0146\":\"n\",\"\\u1E4B\":\"n\",\"\\u1E49\":\"n\",\"\\u019E\":\"n\",\"\\u0272\":\"n\",\"\\u0149\":\"n\",\"\\uA791\":\"n\",\"\\uA7A5\":\"n\",\"\\u01CC\":\"nj\",\"\\u24DE\":\"o\",\"\\uFF4F\":\"o\",\"\\u00F2\":\"o\",\"\\u00F3\":\"o\",\"\\u00F4\":\"o\",\"\\u1ED3\":\"o\",\"\\u1ED1\":\"o\",\"\\u1ED7\":\"o\",\"\\u1ED5\":\"o\",\"\\u00F5\":\"o\",\"\\u1E4D\":\"o\",\"\\u022D\":\"o\",\"\\u1E4F\":\"o\",\"\\u014D\":\"o\",\"\\u1E51\":\"o\",\"\\u1E53\":\"o\",\"\\u014F\":\"o\",\"\\u022F\":\"o\",\"\\u0231\":\"o\",\"\\u00F6\":\"o\",\"\\u022B\":\"o\",\"\\u1ECF\":\"o\",\"\\u0151\":\"o\",\"\\u01D2\":\"o\",\"\\u020D\":\"o\",\"\\u020F\":\"o\",\"\\u01A1\":\"o\",\"\\u1EDD\":\"o\",\"\\u1EDB\":\"o\",\"\\u1EE1\":\"o\",\"\\u1EDF\":\"o\",\"\\u1EE3\":\"o\",\"\\u1ECD\":\"o\",\"\\u1ED9\":\"o\",\"\\u01EB\":\"o\",\"\\u01ED\":\"o\",\"\\u00F8\":\"o\",\"\\u01FF\":\"o\",\"\\u0254\":\"o\",\"\\uA74B\":\"o\",\"\\uA74D\":\"o\",\"\\u0275\":\"o\",\"\\u01A3\":\"oi\",\"\\u0223\":\"ou\",\"\\uA74F\":\"oo\",\"\\u24DF\":\"p\",\"\\uFF50\":\"p\",\"\\u1E55\":\"p\",\"\\u1E57\":\"p\",\"\\u01A5\":\"p\",\"\\u1D7D\":\"p\",\"\\uA751\":\"p\",\"\\uA753\":\"p\",\"\\uA755\":\"p\",\"\\u24E0\":\"q\",\"\\uFF51\":\"q\",\"\\u024B\":\"q\",\"\\uA757\":\"q\",\"\\uA759\":\"q\",\"\\u24E1\":\"r\",\"\\uFF52\":\"r\",\"\\u0155\":\"r\",\"\\u1E59\":\"r\",\"\\u0159\":\"r\",\"\\u0211\":\"r\",\"\\u0213\":\"r\",\"\\u1E5B\":\"r\",\"\\u1E5D\":\"r\",\"\\u0157\":\"r\",\"\\u1E5F\":\"r\",\"\\u024D\":\"r\",\"\\u027D\":\"r\",\"\\uA75B\":\"r\",\"\\uA7A7\":\"r\",\"\\uA783\":\"r\",\"\\u24E2\":\"s\",\"\\uFF53\":\"s\",\"\\u00DF\":\"s\",\"\\u015B\":\"s\",\"\\u1E65\":\"s\",\"\\u015D\":\"s\",\"\\u1E61\":\"s\",\"\\u0161\":\"s\",\"\\u1E67\":\"s\",\"\\u1E63\":\"s\",\"\\u1E69\":\"s\",\"\\u0219\":\"s\",\"\\u015F\":\"s\",\"\\u023F\":\"s\",\"\\uA7A9\":\"s\",\"\\uA785\":\"s\",\"\\u1E9B\":\"s\",\"\\u24E3\":\"t\",\"\\uFF54\":\"t\",\"\\u1E6B\":\"t\",\"\\u1E97\":\"t\",\"\\u0165\":\"t\",\"\\u1E6D\":\"t\",\"\\u021B\":\"t\",\"\\u0163\":\"t\",\"\\u1E71\":\"t\",\"\\u1E6F\":\"t\",\"\\u0167\":\"t\",\"\\u01AD\":\"t\",\"\\u0288\":\"t\",\"\\u2C66\":\"t\",\"\\uA787\":\"t\",\"\\uA729\":\"tz\",\"\\u24E4\":\"u\",\"\\uFF55\":\"u\",\"\\u00F9\":\"u\",\"\\u00FA\":\"u\",\"\\u00FB\":\"u\",\"\\u0169\":\"u\",\"\\u1E79\":\"u\",\"\\u016B\":\"u\",\"\\u1E7B\":\"u\",\"\\u016D\":\"u\",\"\\u00FC\":\"u\",\"\\u01DC\":\"u\",\"\\u01D8\":\"u\",\"\\u01D6\":\"u\",\"\\u01DA\":\"u\",\"\\u1EE7\":\"u\",\"\\u016F\":\"u\",\"\\u0171\":\"u\",\"\\u01D4\":\"u\",\"\\u0215\":\"u\",\"\\u0217\":\"u\",\"\\u01B0\":\"u\",\"\\u1EEB\":\"u\",\"\\u1EE9\":\"u\",\"\\u1EEF\":\"u\",\"\\u1EED\":\"u\",\"\\u1EF1\":\"u\",\"\\u1EE5\":\"u\",\"\\u1E73\":\"u\",\"\\u0173\":\"u\",\"\\u1E77\":\"u\",\"\\u1E75\":\"u\",\"\\u0289\":\"u\",\"\\u24E5\":\"v\",\"\\uFF56\":\"v\",\"\\u1E7D\":\"v\",\"\\u1E7F\":\"v\",\"\\u028B\":\"v\",\"\\uA75F\":\"v\",\"\\u028C\":\"v\",\"\\uA761\":\"vy\",\"\\u24E6\":\"w\",\"\\uFF57\":\"w\",\"\\u1E81\":\"w\",\"\\u1E83\":\"w\",\"\\u0175\":\"w\",\"\\u1E87\":\"w\",\"\\u1E85\":\"w\",\"\\u1E98\":\"w\",\"\\u1E89\":\"w\",\"\\u2C73\":\"w\",\"\\u24E7\":\"x\",\"\\uFF58\":\"x\",\"\\u1E8B\":\"x\",\"\\u1E8D\":\"x\",\"\\u24E8\":\"y\",\"\\uFF59\":\"y\",\"\\u1EF3\":\"y\",\"\\u00FD\":\"y\",\"\\u0177\":\"y\",\"\\u1EF9\":\"y\",\"\\u0233\":\"y\",\"\\u1E8F\":\"y\",\"\\u00FF\":\"y\",\"\\u1EF7\":\"y\",\"\\u1E99\":\"y\",\"\\u1EF5\":\"y\",\"\\u01B4\":\"y\",\"\\u024F\":\"y\",\"\\u1EFF\":\"y\",\"\\u24E9\":\"z\",\"\\uFF5A\":\"z\",\"\\u017A\":\"z\",\"\\u1E91\":\"z\",\"\\u017C\":\"z\",\"\\u017E\":\"z\",\"\\u1E93\":\"z\",\"\\u1E95\":\"z\",\"\\u01B6\":\"z\",\"\\u0225\":\"z\",\"\\u0240\":\"z\",\"\\u2C6C\":\"z\",\"\\uA763\":\"z\"};\n\n    $document = $(document);\n\n    nextUid=(function() { var counter=1; return function() { return counter++; }; }());\n\n\n    function stripDiacritics(str) {\n        var ret, i, l, c;\n\n        if (!str || str.length < 1) return str;\n\n        ret = \"\";\n        for (i = 0, l = str.length; i < l; i++) {\n            c = str.charAt(i);\n            ret += DIACRITICS[c] || c;\n        }\n        return ret;\n    }\n\n    function indexOf(value, array) {\n        var i = 0, l = array.length;\n        for (; i < l; i = i + 1) {\n            if (equal(value, array[i])) return i;\n        }\n        return -1;\n    }\n\n    function measureScrollbar () {\n        var $template = $( MEASURE_SCROLLBAR_TEMPLATE );\n        $template.appendTo('body');\n\n        var dim = {\n            width: $template.width() - $template[0].clientWidth,\n            height: $template.height() - $template[0].clientHeight\n        };\n        $template.remove();\n\n        return dim;\n    }\n\n    /**\n     * Compares equality of a and b\n     * @param a\n     * @param b\n     */\n    function equal(a, b) {\n        if (a === b) return true;\n        if (a === undefined || b === undefined) return false;\n        if (a === null || b === null) return false;\n        // Check whether 'a' or 'b' is a string (primitive or object).\n        // The concatenation of an empty string (+'') converts its argument to a string's primitive.\n        if (a.constructor === String) return a+'' === b+''; // a+'' - in case 'a' is a String object\n        if (b.constructor === String) return b+'' === a+''; // b+'' - in case 'b' is a String object\n        return false;\n    }\n\n    /**\n     * Splits the string into an array of values, trimming each value. An empty array is returned for nulls or empty\n     * strings\n     * @param string\n     * @param separator\n     */\n    function splitVal(string, separator) {\n        var val, i, l;\n        if (string === null || string.length < 1) return [];\n        val = string.split(separator);\n        for (i = 0, l = val.length; i < l; i = i + 1) val[i] = $.trim(val[i]);\n        return val;\n    }\n\n    function getSideBorderPadding(element) {\n        return element.outerWidth(false) - element.width();\n    }\n\n    function installKeyUpChangeEvent(element) {\n        var key=\"keyup-change-value\";\n        element.on(\"keydown\", function () {\n            if ($.data(element, key) === undefined) {\n                $.data(element, key, element.val());\n            }\n        });\n        element.on(\"keyup\", function () {\n            var val= $.data(element, key);\n            if (val !== undefined && element.val() !== val) {\n                $.removeData(element, key);\n                element.trigger(\"keyup-change\");\n            }\n        });\n    }\n\n    $document.on(\"mousemove\", function (e) {\n        lastMousePosition.x = e.pageX;\n        lastMousePosition.y = e.pageY;\n    });\n\n    /**\n     * filters mouse events so an event is fired only if the mouse moved.\n     *\n     * filters out mouse events that occur when mouse is stationary but\n     * the elements under the pointer are scrolled.\n     */\n    function installFilteredMouseMove(element) {\n        element.on(\"mousemove\", function (e) {\n            var lastpos = lastMousePosition;\n            if (lastpos === undefined || lastpos.x !== e.pageX || lastpos.y !== e.pageY) {\n                $(e.target).trigger(\"mousemove-filtered\", e);\n            }\n        });\n    }\n\n    /**\n     * Debounces a function. Returns a function that calls the original fn function only if no invocations have been made\n     * within the last quietMillis milliseconds.\n     *\n     * @param quietMillis number of milliseconds to wait before invoking fn\n     * @param fn function to be debounced\n     * @param ctx object to be used as this reference within fn\n     * @return debounced version of fn\n     */\n    function debounce(quietMillis, fn, ctx) {\n        ctx = ctx || undefined;\n        var timeout;\n        return function () {\n            var args = arguments;\n            window.clearTimeout(timeout);\n            timeout = window.setTimeout(function() {\n                fn.apply(ctx, args);\n            }, quietMillis);\n        };\n    }\n\n    /**\n     * A simple implementation of a thunk\n     * @param formula function used to lazily initialize the thunk\n     * @return {Function}\n     */\n    function thunk(formula) {\n        var evaluated = false,\n            value;\n        return function() {\n            if (evaluated === false) { value = formula(); evaluated = true; }\n            return value;\n        };\n    };\n\n    function installDebouncedScroll(threshold, element) {\n        var notify = debounce(threshold, function (e) { element.trigger(\"scroll-debounced\", e);});\n        element.on(\"scroll\", function (e) {\n            if (indexOf(e.target, element.get()) >= 0) notify(e);\n        });\n    }\n\n    function focus($el) {\n        if ($el[0] === document.activeElement) return;\n\n        /* set the focus in a 0 timeout - that way the focus is set after the processing\n            of the current event has finished - which seems like the only reliable way\n            to set focus */\n        window.setTimeout(function() {\n            var el=$el[0], pos=$el.val().length, range;\n\n            $el.focus();\n\n            /* make sure el received focus so we do not error out when trying to manipulate the caret.\n                sometimes modals or others listeners may steal it after its set */\n            if ($el.is(\":visible\") && el === document.activeElement) {\n\n                /* after the focus is set move the caret to the end, necessary when we val()\n                    just before setting focus */\n                if(el.setSelectionRange)\n                {\n                    el.setSelectionRange(pos, pos);\n                }\n                else if (el.createTextRange) {\n                    range = el.createTextRange();\n                    range.collapse(false);\n                    range.select();\n                }\n            }\n        }, 0);\n    }\n\n    function getCursorInfo(el) {\n        el = $(el)[0];\n        var offset = 0;\n        var length = 0;\n        if ('selectionStart' in el) {\n            offset = el.selectionStart;\n            length = el.selectionEnd - offset;\n        } else if ('selection' in document) {\n            el.focus();\n            var sel = document.selection.createRange();\n            length = document.selection.createRange().text.length;\n            sel.moveStart('character', -el.value.length);\n            offset = sel.text.length - length;\n        }\n        return { offset: offset, length: length };\n    }\n\n    function killEvent(event) {\n        event.preventDefault();\n        event.stopPropagation();\n    }\n    function killEventImmediately(event) {\n        event.preventDefault();\n        event.stopImmediatePropagation();\n    }\n\n    function measureTextWidth(e) {\n        if (!sizer){\n            var style = e[0].currentStyle || window.getComputedStyle(e[0], null);\n            sizer = $(document.createElement(\"div\")).css({\n                position: \"absolute\",\n                left: \"-10000px\",\n                top: \"-10000px\",\n                display: \"none\",\n                fontSize: style.fontSize,\n                fontFamily: style.fontFamily,\n                fontStyle: style.fontStyle,\n                fontWeight: style.fontWeight,\n                letterSpacing: style.letterSpacing,\n                textTransform: style.textTransform,\n                whiteSpace: \"nowrap\"\n            });\n            sizer.attr(\"class\",\"select2-sizer\");\n            $(\"body\").append(sizer);\n        }\n        sizer.text(e.val());\n        return sizer.width();\n    }\n\n    function syncCssClasses(dest, src, adapter) {\n        var classes, replacements = [], adapted;\n\n        classes = dest.attr(\"class\");\n        if (classes) {\n            classes = '' + classes; // for IE which returns object\n            $(classes.split(\" \")).each2(function() {\n                if (this.indexOf(\"select2-\") === 0) {\n                    replacements.push(this);\n                }\n            });\n        }\n        classes = src.attr(\"class\");\n        if (classes) {\n            classes = '' + classes; // for IE which returns object\n            $(classes.split(\" \")).each2(function() {\n                if (this.indexOf(\"select2-\") !== 0) {\n                    adapted = adapter(this);\n                    if (adapted) {\n                        replacements.push(adapted);\n                    }\n                }\n            });\n        }\n        dest.attr(\"class\", replacements.join(\" \"));\n    }\n\n\n    function markMatch(text, term, markup, escapeMarkup) {\n        var match=stripDiacritics(text.toUpperCase()).indexOf(stripDiacritics(term.toUpperCase())),\n            tl=term.length;\n\n        if (match<0) {\n            markup.push(escapeMarkup(text));\n            return;\n        }\n\n        markup.push(escapeMarkup(text.substring(0, match)));\n        markup.push(\"<span class='select2-match'>\");\n        markup.push(escapeMarkup(text.substring(match, match + tl)));\n        markup.push(\"</span>\");\n        markup.push(escapeMarkup(text.substring(match + tl, text.length)));\n    }\n\n    function defaultEscapeMarkup(markup) {\n        var replace_map = {\n            '\\\\': '&#92;',\n            '&': '&amp;',\n            '<': '&lt;',\n            '>': '&gt;',\n            '\"': '&quot;',\n            \"'\": '&#39;',\n            \"/\": '&#47;'\n        };\n\n        return String(markup).replace(/[&<>\"'\\/\\\\]/g, function (match) {\n            return replace_map[match];\n        });\n    }\n\n    /**\n     * Produces an ajax-based query function\n     *\n     * @param options object containing configuration paramters\n     * @param options.params parameter map for the transport ajax call, can contain such options as cache, jsonpCallback, etc. see $.ajax\n     * @param options.transport function that will be used to execute the ajax request. must be compatible with parameters supported by $.ajax\n     * @param options.url url for the data\n     * @param options.data a function(searchTerm, pageNumber, context) that should return an object containing query string parameters for the above url.\n     * @param options.dataType request data type: ajax, jsonp, other datatatypes supported by jQuery's $.ajax function or the transport function if specified\n     * @param options.quietMillis (optional) milliseconds to wait before making the ajaxRequest, helps debounce the ajax function if invoked too often\n     * @param options.results a function(remoteData, pageNumber) that converts data returned form the remote request to the format expected by Select2.\n     *      The expected format is an object containing the following keys:\n     *      results array of objects that will be used as choices\n     *      more (optional) boolean indicating whether there are more results available\n     *      Example: {results:[{id:1, text:'Red'},{id:2, text:'Blue'}], more:true}\n     */\n    function ajax(options) {\n        var timeout, // current scheduled but not yet executed request\n            handler = null,\n            quietMillis = options.quietMillis || 100,\n            ajaxUrl = options.url,\n            self = this;\n\n        return function (query) {\n            window.clearTimeout(timeout);\n            timeout = window.setTimeout(function () {\n                var data = options.data, // ajax data function\n                    url = ajaxUrl, // ajax url string or function\n                    transport = options.transport || $.fn.select2.ajaxDefaults.transport,\n                    // deprecated - to be removed in 4.0  - use params instead\n                    deprecated = {\n                        type: options.type || 'GET', // set type of request (GET or POST)\n                        cache: options.cache || false,\n                        jsonpCallback: options.jsonpCallback||undefined,\n                        dataType: options.dataType||\"json\"\n                    },\n                    params = $.extend({}, $.fn.select2.ajaxDefaults.params, deprecated);\n\n                data = data ? data.call(self, query.term, query.page, query.context) : null;\n                url = (typeof url === 'function') ? url.call(self, query.term, query.page, query.context) : url;\n\n                if (handler) { handler.abort(); }\n\n                if (options.params) {\n                    if ($.isFunction(options.params)) {\n                        $.extend(params, options.params.call(self));\n                    } else {\n                        $.extend(params, options.params);\n                    }\n                }\n\n                $.extend(params, {\n                    url: url,\n                    dataType: options.dataType,\n                    data: data,\n                    success: function (data) {\n                        // TODO - replace query.page with query so users have access to term, page, etc.\n                        var results = options.results(data, query.page);\n                        query.callback(results);\n                    }\n                });\n                handler = transport.call(self, params);\n            }, quietMillis);\n        };\n    }\n\n    /**\n     * Produces a query function that works with a local array\n     *\n     * @param options object containing configuration parameters. The options parameter can either be an array or an\n     * object.\n     *\n     * If the array form is used it is assumed that it contains objects with 'id' and 'text' keys.\n     *\n     * If the object form is used ti is assumed that it contains 'data' and 'text' keys. The 'data' key should contain\n     * an array of objects that will be used as choices. These objects must contain at least an 'id' key. The 'text'\n     * key can either be a String in which case it is expected that each element in the 'data' array has a key with the\n     * value of 'text' which will be used to match choices. Alternatively, text can be a function(item) that can extract\n     * the text.\n     */\n    function local(options) {\n        var data = options, // data elements\n            dataText,\n            tmp,\n            text = function (item) { return \"\"+item.text; }; // function used to retrieve the text portion of a data item that is matched against the search\n\n         if ($.isArray(data)) {\n            tmp = data;\n            data = { results: tmp };\n        }\n\n         if ($.isFunction(data) === false) {\n            tmp = data;\n            data = function() { return tmp; };\n        }\n\n        var dataItem = data();\n        if (dataItem.text) {\n            text = dataItem.text;\n            // if text is not a function we assume it to be a key name\n            if (!$.isFunction(text)) {\n                dataText = dataItem.text; // we need to store this in a separate variable because in the next step data gets reset and data.text is no longer available\n                text = function (item) { return item[dataText]; };\n            }\n        }\n\n        return function (query) {\n            var t = query.term, filtered = { results: [] }, process;\n            if (t === \"\") {\n                query.callback(data());\n                return;\n            }\n\n            process = function(datum, collection) {\n                var group, attr;\n                datum = datum[0];\n                if (datum.children) {\n                    group = {};\n                    for (attr in datum) {\n                        if (datum.hasOwnProperty(attr)) group[attr]=datum[attr];\n                    }\n                    group.children=[];\n                    $(datum.children).each2(function(i, childDatum) { process(childDatum, group.children); });\n                    if (group.children.length || query.matcher(t, text(group), datum)) {\n                        collection.push(group);\n                    }\n                } else {\n                    if (query.matcher(t, text(datum), datum)) {\n                        collection.push(datum);\n                    }\n                }\n            };\n\n            $(data().results).each2(function(i, datum) { process(datum, filtered.results); });\n            query.callback(filtered);\n        };\n    }\n\n    // TODO javadoc\n    function tags(data) {\n        var isFunc = $.isFunction(data);\n        return function (query) {\n            var t = query.term, filtered = {results: []};\n            $(isFunc ? data() : data).each(function () {\n                var isObject = this.text !== undefined,\n                    text = isObject ? this.text : this;\n                if (t === \"\" || query.matcher(t, text)) {\n                    filtered.results.push(isObject ? this : {id: this, text: this});\n                }\n            });\n            query.callback(filtered);\n        };\n    }\n\n    /**\n     * Checks if the formatter function should be used.\n     *\n     * Throws an error if it is not a function. Returns true if it should be used,\n     * false if no formatting should be performed.\n     *\n     * @param formatter\n     */\n    function checkFormatter(formatter, formatterName) {\n        if ($.isFunction(formatter)) return true;\n        if (!formatter) return false;\n        throw new Error(formatterName +\" must be a function or a falsy value\");\n    }\n\n    function evaluate(val) {\n        return $.isFunction(val) ? val() : val;\n    }\n\n    function countResults(results) {\n        var count = 0;\n        $.each(results, function(i, item) {\n            if (item.children) {\n                count += countResults(item.children);\n            } else {\n                count++;\n            }\n        });\n        return count;\n    }\n\n    /**\n     * Default tokenizer. This function uses breaks the input on substring match of any string from the\n     * opts.tokenSeparators array and uses opts.createSearchChoice to create the choice object. Both of those\n     * two options have to be defined in order for the tokenizer to work.\n     *\n     * @param input text user has typed so far or pasted into the search field\n     * @param selection currently selected choices\n     * @param selectCallback function(choice) callback tho add the choice to selection\n     * @param opts select2's opts\n     * @return undefined/null to leave the current input unchanged, or a string to change the input to the returned value\n     */\n    function defaultTokenizer(input, selection, selectCallback, opts) {\n        var original = input, // store the original so we can compare and know if we need to tell the search to update its text\n            dupe = false, // check for whether a token we extracted represents a duplicate selected choice\n            token, // token\n            index, // position at which the separator was found\n            i, l, // looping variables\n            separator; // the matched separator\n\n        if (!opts.createSearchChoice || !opts.tokenSeparators || opts.tokenSeparators.length < 1) return undefined;\n\n        while (true) {\n            index = -1;\n\n            for (i = 0, l = opts.tokenSeparators.length; i < l; i++) {\n                separator = opts.tokenSeparators[i];\n                index = input.indexOf(separator);\n                if (index >= 0) break;\n            }\n\n            if (index < 0) break; // did not find any token separator in the input string, bail\n\n            token = input.substring(0, index);\n            input = input.substring(index + separator.length);\n\n            if (token.length > 0) {\n                token = opts.createSearchChoice.call(this, token, selection);\n                if (token !== undefined && token !== null && opts.id(token) !== undefined && opts.id(token) !== null) {\n                    dupe = false;\n                    for (i = 0, l = selection.length; i < l; i++) {\n                        if (equal(opts.id(token), opts.id(selection[i]))) {\n                            dupe = true; break;\n                        }\n                    }\n\n                    if (!dupe) selectCallback(token);\n                }\n            }\n        }\n\n        if (original!==input) return input;\n    }\n\n    /**\n     * Creates a new class\n     *\n     * @param superClass\n     * @param methods\n     */\n    function clazz(SuperClass, methods) {\n        var constructor = function () {};\n        constructor.prototype = new SuperClass;\n        constructor.prototype.constructor = constructor;\n        constructor.prototype.parent = SuperClass.prototype;\n        constructor.prototype = $.extend(constructor.prototype, methods);\n        return constructor;\n    }\n\n    AbstractSelect2 = clazz(Object, {\n\n        // abstract\n        bind: function (func) {\n            var self = this;\n            return function () {\n                func.apply(self, arguments);\n            };\n        },\n\n        // abstract\n        init: function (opts) {\n            var results, search, resultsSelector = \".select2-results\";\n\n            // prepare options\n            this.opts = opts = this.prepareOpts(opts);\n\n            this.id=opts.id;\n\n            // destroy if called on an existing component\n            if (opts.element.data(\"select2\") !== undefined &&\n                opts.element.data(\"select2\") !== null) {\n                opts.element.data(\"select2\").destroy();\n            }\n\n            this.container = this.createContainer();\n\n            this.containerId=\"s2id_\"+(opts.element.attr(\"id\") || \"autogen\"+nextUid());\n            this.containerSelector=\"#\"+this.containerId.replace(/([;&,\\.\\+\\*\\~':\"\\!\\^#$%@\\[\\]\\(\\)=>\\|])/g, '\\\\$1');\n            this.container.attr(\"id\", this.containerId);\n\n            // cache the body so future lookups are cheap\n            this.body = thunk(function() { return opts.element.closest(\"body\"); });\n\n            syncCssClasses(this.container, this.opts.element, this.opts.adaptContainerCssClass);\n\n            this.container.attr(\"style\", opts.element.attr(\"style\"));\n            this.container.css(evaluate(opts.containerCss));\n            this.container.addClass(evaluate(opts.containerCssClass));\n\n            this.elementTabIndex = this.opts.element.attr(\"tabindex\");\n\n            // swap container for the element\n            this.opts.element\n                .data(\"select2\", this)\n                .attr(\"tabindex\", \"-1\")\n                .before(this.container)\n                .on(\"click.select2\", killEvent); // do not leak click events\n\n            this.container.data(\"select2\", this);\n\n            this.dropdown = this.container.find(\".select2-drop\");\n\n            syncCssClasses(this.dropdown, this.opts.element, this.opts.adaptDropdownCssClass);\n\n            this.dropdown.addClass(evaluate(opts.dropdownCssClass));\n            this.dropdown.data(\"select2\", this);\n            this.dropdown.on(\"click\", killEvent);\n\n            this.results = results = this.container.find(resultsSelector);\n            this.search = search = this.container.find(\"input.select2-input\");\n\n            this.queryCount = 0;\n            this.resultsPage = 0;\n            this.context = null;\n\n            // initialize the container\n            this.initContainer();\n\n            this.container.on(\"click\", killEvent);\n\n            installFilteredMouseMove(this.results);\n            this.dropdown.on(\"mousemove-filtered touchstart touchmove touchend\", resultsSelector, this.bind(this.highlightUnderEvent));\n\n            installDebouncedScroll(80, this.results);\n            this.dropdown.on(\"scroll-debounced\", resultsSelector, this.bind(this.loadMoreIfNeeded));\n\n            // do not propagate change event from the search field out of the component\n            $(this.container).on(\"change\", \".select2-input\", function(e) {e.stopPropagation();});\n            $(this.dropdown).on(\"change\", \".select2-input\", function(e) {e.stopPropagation();});\n\n            // if jquery.mousewheel plugin is installed we can prevent out-of-bounds scrolling of results via mousewheel\n            if ($.fn.mousewheel) {\n                results.mousewheel(function (e, delta, deltaX, deltaY) {\n                    var top = results.scrollTop();\n                    if (deltaY > 0 && top - deltaY <= 0) {\n                        results.scrollTop(0);\n                        killEvent(e);\n                    } else if (deltaY < 0 && results.get(0).scrollHeight - results.scrollTop() + deltaY <= results.height()) {\n                        results.scrollTop(results.get(0).scrollHeight - results.height());\n                        killEvent(e);\n                    }\n                });\n            }\n\n            installKeyUpChangeEvent(search);\n            search.on(\"keyup-change input paste\", this.bind(this.updateResults));\n            search.on(\"focus\", function () { search.addClass(\"select2-focused\"); });\n            search.on(\"blur\", function () { search.removeClass(\"select2-focused\");});\n\n            this.dropdown.on(\"mouseup\", resultsSelector, this.bind(function (e) {\n                if ($(e.target).closest(\".select2-result-selectable\").length > 0) {\n                    this.highlightUnderEvent(e);\n                    this.selectHighlighted(e);\n                }\n            }));\n\n            // trap all mouse events from leaving the dropdown. sometimes there may be a modal that is listening\n            // for mouse events outside of itself so it can close itself. since the dropdown is now outside the select2's\n            // dom it will trigger the popup close, which is not what we want\n            this.dropdown.on(\"click mouseup mousedown\", function (e) { e.stopPropagation(); });\n\n            if ($.isFunction(this.opts.initSelection)) {\n                // initialize selection based on the current value of the source element\n                this.initSelection();\n\n                // if the user has provided a function that can set selection based on the value of the source element\n                // we monitor the change event on the element and trigger it, allowing for two way synchronization\n                this.monitorSource();\n            }\n\n            if (opts.maximumInputLength !== null) {\n                this.search.attr(\"maxlength\", opts.maximumInputLength);\n            }\n\n            var disabled = opts.element.prop(\"disabled\");\n            if (disabled === undefined) disabled = false;\n            this.enable(!disabled);\n\n            var readonly = opts.element.prop(\"readonly\");\n            if (readonly === undefined) readonly = false;\n            this.readonly(readonly);\n\n            // Calculate size of scrollbar\n            scrollBarDimensions = scrollBarDimensions || measureScrollbar();\n\n            this.autofocus = opts.element.prop(\"autofocus\");\n            opts.element.prop(\"autofocus\", false);\n            if (this.autofocus) this.focus();\n\n            this.nextSearchTerm = undefined;\n        },\n\n        // abstract\n        destroy: function () {\n            var element=this.opts.element, select2 = element.data(\"select2\");\n\n            this.close();\n\n            if (this.propertyObserver) { delete this.propertyObserver; this.propertyObserver = null; }\n\n            if (select2 !== undefined) {\n                select2.container.remove();\n                select2.dropdown.remove();\n                element\n                    .removeClass(\"select2-offscreen\")\n                    .removeData(\"select2\")\n                    .off(\".select2\")\n                    .prop(\"autofocus\", this.autofocus || false);\n                if (this.elementTabIndex) {\n                    element.attr({tabindex: this.elementTabIndex});\n                } else {\n                    element.removeAttr(\"tabindex\");\n                }\n                element.show();\n            }\n        },\n\n        // abstract\n        optionToData: function(element) {\n            if (element.is(\"option\")) {\n                return {\n                    id:element.prop(\"value\"),\n                    text:element.text(),\n                    element: element.get(),\n                    css: element.attr(\"class\"),\n                    disabled: element.prop(\"disabled\"),\n                    locked: equal(element.attr(\"locked\"), \"locked\") || equal(element.data(\"locked\"), true)\n                };\n            } else if (element.is(\"optgroup\")) {\n                return {\n                    text:element.attr(\"label\"),\n                    children:[],\n                    element: element.get(),\n                    css: element.attr(\"class\")\n                };\n            }\n        },\n\n        // abstract\n        prepareOpts: function (opts) {\n            var element, select, idKey, ajaxUrl, self = this;\n\n            element = opts.element;\n\n            if (element.get(0).tagName.toLowerCase() === \"select\") {\n                this.select = select = opts.element;\n            }\n\n            if (select) {\n                // these options are not allowed when attached to a select because they are picked up off the element itself\n                $.each([\"id\", \"multiple\", \"ajax\", \"query\", \"createSearchChoice\", \"initSelection\", \"data\", \"tags\"], function () {\n                    if (this in opts) {\n                        throw new Error(\"Option '\" + this + \"' is not allowed for Select2 when attached to a <select> element.\");\n                    }\n                });\n            }\n\n            opts = $.extend({}, {\n                populateResults: function(container, results, query) {\n                    var populate, id=this.opts.id;\n\n                    populate=function(results, container, depth) {\n\n                        var i, l, result, selectable, disabled, compound, node, label, innerContainer, formatted;\n\n                        results = opts.sortResults(results, container, query);\n\n                        for (i = 0, l = results.length; i < l; i = i + 1) {\n\n                            result=results[i];\n\n                            disabled = (result.disabled === true);\n                            selectable = (!disabled) && (id(result) !== undefined);\n\n                            compound=result.children && result.children.length > 0;\n\n                            node=$(\"<li></li>\");\n                            node.addClass(\"select2-results-dept-\"+depth);\n                            node.addClass(\"select2-result\");\n                            node.addClass(selectable ? \"select2-result-selectable\" : \"select2-result-unselectable\");\n                            if (disabled) { node.addClass(\"select2-disabled\"); }\n                            if (compound) { node.addClass(\"select2-result-with-children\"); }\n                            node.addClass(self.opts.formatResultCssClass(result));\n\n                            label=$(document.createElement(\"div\"));\n                            label.addClass(\"select2-result-label\");\n\n                            formatted=opts.formatResult(result, label, query, self.opts.escapeMarkup);\n                            if (formatted!==undefined) {\n                                label.html(formatted);\n                            }\n\n                            node.append(label);\n\n                            if (compound) {\n\n                                innerContainer=$(\"<ul></ul>\");\n                                innerContainer.addClass(\"select2-result-sub\");\n                                populate(result.children, innerContainer, depth+1);\n                                node.append(innerContainer);\n                            }\n\n                            node.data(\"select2-data\", result);\n                            container.append(node);\n                        }\n                    };\n\n                    populate(results, container, 0);\n                }\n            }, $.fn.select2.defaults, opts);\n\n            if (typeof(opts.id) !== \"function\") {\n                idKey = opts.id;\n                opts.id = function (e) { return e[idKey]; };\n            }\n\n            if ($.isArray(opts.element.data(\"select2Tags\"))) {\n                if (\"tags\" in opts) {\n                    throw \"tags specified as both an attribute 'data-select2-tags' and in options of Select2 \" + opts.element.attr(\"id\");\n                }\n                opts.tags=opts.element.data(\"select2Tags\");\n            }\n\n            if (select) {\n                opts.query = this.bind(function (query) {\n                    var data = { results: [], more: false },\n                        term = query.term,\n                        children, placeholderOption, process;\n\n                    process=function(element, collection) {\n                        var group;\n                        if (element.is(\"option\")) {\n                            if (query.matcher(term, element.text(), element)) {\n                                collection.push(self.optionToData(element));\n                            }\n                        } else if (element.is(\"optgroup\")) {\n                            group=self.optionToData(element);\n                            element.children().each2(function(i, elm) { process(elm, group.children); });\n                            if (group.children.length>0) {\n                                collection.push(group);\n                            }\n                        }\n                    };\n\n                    children=element.children();\n\n                    // ignore the placeholder option if there is one\n                    if (this.getPlaceholder() !== undefined && children.length > 0) {\n                        placeholderOption = this.getPlaceholderOption();\n                        if (placeholderOption) {\n                            children=children.not(placeholderOption);\n                        }\n                    }\n\n                    children.each2(function(i, elm) { process(elm, data.results); });\n\n                    query.callback(data);\n                });\n                // this is needed because inside val() we construct choices from options and there id is hardcoded\n                opts.id=function(e) { return e.id; };\n                opts.formatResultCssClass = function(data) { return data.css; };\n            } else {\n                if (!(\"query\" in opts)) {\n\n                    if (\"ajax\" in opts) {\n                        ajaxUrl = opts.element.data(\"ajax-url\");\n                        if (ajaxUrl && ajaxUrl.length > 0) {\n                            opts.ajax.url = ajaxUrl;\n                        }\n                        opts.query = ajax.call(opts.element, opts.ajax);\n                    } else if (\"data\" in opts) {\n                        opts.query = local(opts.data);\n                    } else if (\"tags\" in opts) {\n                        opts.query = tags(opts.tags);\n                        if (opts.createSearchChoice === undefined) {\n                            opts.createSearchChoice = function (term) { return {id: $.trim(term), text: $.trim(term)}; };\n                        }\n                        if (opts.initSelection === undefined) {\n                            opts.initSelection = function (element, callback) {\n                                var data = [];\n                                $(splitVal(element.val(), opts.separator)).each(function () {\n                                    var obj = { id: this, text: this },\n                                        tags = opts.tags;\n                                    if ($.isFunction(tags)) tags=tags();\n                                    $(tags).each(function() { if (equal(this.id, obj.id)) { obj = this; return false; } });\n                                    data.push(obj);\n                                });\n\n                                callback(data);\n                            };\n                        }\n                    }\n                }\n            }\n            if (typeof(opts.query) !== \"function\") {\n                throw \"query function not defined for Select2 \" + opts.element.attr(\"id\");\n            }\n\n            return opts;\n        },\n\n        /**\n         * Monitor the original element for changes and update select2 accordingly\n         */\n        // abstract\n        monitorSource: function () {\n            var el = this.opts.element, sync, observer;\n\n            el.on(\"change.select2\", this.bind(function (e) {\n                if (this.opts.element.data(\"select2-change-triggered\") !== true) {\n                    this.initSelection();\n                }\n            }));\n\n            sync = this.bind(function () {\n\n                // sync enabled state\n                var disabled = el.prop(\"disabled\");\n                if (disabled === undefined) disabled = false;\n                this.enable(!disabled);\n\n                var readonly = el.prop(\"readonly\");\n                if (readonly === undefined) readonly = false;\n                this.readonly(readonly);\n\n                syncCssClasses(this.container, this.opts.element, this.opts.adaptContainerCssClass);\n                this.container.addClass(evaluate(this.opts.containerCssClass));\n\n                syncCssClasses(this.dropdown, this.opts.element, this.opts.adaptDropdownCssClass);\n                this.dropdown.addClass(evaluate(this.opts.dropdownCssClass));\n\n            });\n\n            // IE8-10\n            el.on(\"propertychange.select2\", sync);\n\n            // hold onto a reference of the callback to work around a chromium bug\n            if (this.mutationCallback === undefined) {\n                this.mutationCallback = function (mutations) {\n                    mutations.forEach(sync);\n                }\n            }\n\n            // safari, chrome, firefox, IE11\n            observer = window.MutationObserver || window.WebKitMutationObserver|| window.MozMutationObserver;\n            if (observer !== undefined) {\n                if (this.propertyObserver) { delete this.propertyObserver; this.propertyObserver = null; }\n                this.propertyObserver = new observer(this.mutationCallback);\n                this.propertyObserver.observe(el.get(0), { attributes:true, subtree:false });\n            }\n        },\n\n        // abstract\n        triggerSelect: function(data) {\n            var evt = $.Event(\"select2-selecting\", { val: this.id(data), object: data });\n            this.opts.element.trigger(evt);\n            return !evt.isDefaultPrevented();\n        },\n\n        /**\n         * Triggers the change event on the source element\n         */\n        // abstract\n        triggerChange: function (details) {\n\n            details = details || {};\n            details= $.extend({}, details, { type: \"change\", val: this.val() });\n            // prevents recursive triggering\n            this.opts.element.data(\"select2-change-triggered\", true);\n            this.opts.element.trigger(details);\n            this.opts.element.data(\"select2-change-triggered\", false);\n\n            // some validation frameworks ignore the change event and listen instead to keyup, click for selects\n            // so here we trigger the click event manually\n            this.opts.element.click();\n\n            // ValidationEngine ignorea the change event and listens instead to blur\n            // so here we trigger the blur event manually if so desired\n            if (this.opts.blurOnChange)\n                this.opts.element.blur();\n        },\n\n        //abstract\n        isInterfaceEnabled: function()\n        {\n            return this.enabledInterface === true;\n        },\n\n        // abstract\n        enableInterface: function() {\n            var enabled = this._enabled && !this._readonly,\n                disabled = !enabled;\n\n            if (enabled === this.enabledInterface) return false;\n\n            this.container.toggleClass(\"select2-container-disabled\", disabled);\n            this.close();\n            this.enabledInterface = enabled;\n\n            return true;\n        },\n\n        // abstract\n        enable: function(enabled) {\n            if (enabled === undefined) enabled = true;\n            if (this._enabled === enabled) return;\n            this._enabled = enabled;\n\n            this.opts.element.prop(\"disabled\", !enabled);\n            this.enableInterface();\n        },\n\n        // abstract\n        disable: function() {\n            this.enable(false);\n        },\n\n        // abstract\n        readonly: function(enabled) {\n            if (enabled === undefined) enabled = false;\n            if (this._readonly === enabled) return false;\n            this._readonly = enabled;\n\n            this.opts.element.prop(\"readonly\", enabled);\n            this.enableInterface();\n            return true;\n        },\n\n        // abstract\n        opened: function () {\n            return this.container.hasClass(\"select2-dropdown-open\");\n        },\n\n        // abstract\n        positionDropdown: function() {\n            var $dropdown = this.dropdown,\n                offset = this.container.offset(),\n                height = this.container.outerHeight(false),\n                width = this.container.outerWidth(false),\n                dropHeight = $dropdown.outerHeight(false),\n                $window = $(window),\n                windowWidth = $window.width(),\n                windowHeight = $window.height(),\n                viewPortRight = $window.scrollLeft() + windowWidth,\n                viewportBottom = $window.scrollTop() + windowHeight,\n                dropTop = offset.top + height,\n                dropLeft = offset.left,\n                enoughRoomBelow = dropTop + dropHeight <= viewportBottom,\n                enoughRoomAbove = (offset.top - dropHeight) >= this.body().scrollTop(),\n                dropWidth = $dropdown.outerWidth(false),\n                enoughRoomOnRight = dropLeft + dropWidth <= viewPortRight,\n                aboveNow = $dropdown.hasClass(\"select2-drop-above\"),\n                bodyOffset,\n                above,\n                changeDirection,\n                css,\n                resultsListNode;\n\n            // always prefer the current above/below alignment, unless there is not enough room\n            if (aboveNow) {\n                above = true;\n                if (!enoughRoomAbove && enoughRoomBelow) {\n                    changeDirection = true;\n                    above = false;\n                }\n            } else {\n                above = false;\n                if (!enoughRoomBelow && enoughRoomAbove) {\n                    changeDirection = true;\n                    above = true;\n                }\n            }\n\n            //if we are changing direction we need to get positions when dropdown is hidden;\n            if (changeDirection) {\n                $dropdown.hide();\n                offset = this.container.offset();\n                height = this.container.outerHeight(false);\n                width = this.container.outerWidth(false);\n                dropHeight = $dropdown.outerHeight(false);\n                viewPortRight = $window.scrollLeft() + windowWidth;\n                viewportBottom = $window.scrollTop() + windowHeight;\n                dropTop = offset.top + height;\n                dropLeft = offset.left;\n                dropWidth = $dropdown.outerWidth(false);\n                enoughRoomOnRight = dropLeft + dropWidth <= viewPortRight;\n                $dropdown.show();\n            }\n\n            if (this.opts.dropdownAutoWidth) {\n                resultsListNode = $('.select2-results', $dropdown)[0];\n                $dropdown.addClass('select2-drop-auto-width');\n                $dropdown.css('width', '');\n                // Add scrollbar width to dropdown if vertical scrollbar is present\n                dropWidth = $dropdown.outerWidth(false) + (resultsListNode.scrollHeight === resultsListNode.clientHeight ? 0 : scrollBarDimensions.width);\n                dropWidth > width ? width = dropWidth : dropWidth = width;\n                enoughRoomOnRight = dropLeft + dropWidth <= viewPortRight;\n            }\n            else {\n                this.container.removeClass('select2-drop-auto-width');\n            }\n\n            //console.log(\"below/ droptop:\", dropTop, \"dropHeight\", dropHeight, \"sum\", (dropTop+dropHeight)+\" viewport bottom\", viewportBottom, \"enough?\", enoughRoomBelow);\n            //console.log(\"above/ offset.top\", offset.top, \"dropHeight\", dropHeight, \"top\", (offset.top-dropHeight), \"scrollTop\", this.body().scrollTop(), \"enough?\", enoughRoomAbove);\n\n            // fix positioning when body has an offset and is not position: static\n            if (this.body().css('position') !== 'static') {\n                bodyOffset = this.body().offset();\n                dropTop -= bodyOffset.top;\n                dropLeft -= bodyOffset.left;\n            }\n\n            if (!enoughRoomOnRight) {\n               dropLeft = offset.left + width - dropWidth;\n            }\n\n            css =  {\n                left: dropLeft,\n                width: width\n            };\n\n            if (above) {\n                css.bottom = windowHeight - offset.top;\n                css.top = 'auto';\n                this.container.addClass(\"select2-drop-above\");\n                $dropdown.addClass(\"select2-drop-above\");\n            }\n            else {\n                css.top = dropTop;\n                css.bottom = 'auto';\n                this.container.removeClass(\"select2-drop-above\");\n                $dropdown.removeClass(\"select2-drop-above\");\n            }\n            css = $.extend(css, evaluate(this.opts.dropdownCss));\n\n            $dropdown.css(css);\n        },\n\n        // abstract\n        shouldOpen: function() {\n            var event;\n\n            if (this.opened()) return false;\n\n            if (this._enabled === false || this._readonly === true) return false;\n\n            event = $.Event(\"select2-opening\");\n            this.opts.element.trigger(event);\n            return !event.isDefaultPrevented();\n        },\n\n        // abstract\n        clearDropdownAlignmentPreference: function() {\n            // clear the classes used to figure out the preference of where the dropdown should be opened\n            this.container.removeClass(\"select2-drop-above\");\n            this.dropdown.removeClass(\"select2-drop-above\");\n        },\n\n        /**\n         * Opens the dropdown\n         *\n         * @return {Boolean} whether or not dropdown was opened. This method will return false if, for example,\n         * the dropdown is already open, or if the 'open' event listener on the element called preventDefault().\n         */\n        // abstract\n        open: function () {\n\n            if (!this.shouldOpen()) return false;\n\n            this.opening();\n\n            return true;\n        },\n\n        /**\n         * Performs the opening of the dropdown\n         */\n        // abstract\n        opening: function() {\n            var cid = this.containerId,\n                scroll = \"scroll.\" + cid,\n                resize = \"resize.\"+cid,\n                orient = \"orientationchange.\"+cid,\n                mask;\n\n            this.container.addClass(\"select2-dropdown-open\").addClass(\"select2-container-active\");\n\n            this.clearDropdownAlignmentPreference();\n\n            if(this.dropdown[0] !== this.body().children().last()[0]) {\n                this.dropdown.detach().appendTo(this.body());\n            }\n\n            // create the dropdown mask if doesnt already exist\n            mask = $(\"#select2-drop-mask\");\n            if (mask.length == 0) {\n                mask = $(document.createElement(\"div\"));\n                mask.attr(\"id\",\"select2-drop-mask\").attr(\"class\",\"select2-drop-mask\");\n                mask.hide();\n                mask.appendTo(this.body());\n                mask.on(\"mousedown touchstart click\", function (e) {\n                    var dropdown = $(\"#select2-drop\"), self;\n                    if (dropdown.length > 0) {\n                        self=dropdown.data(\"select2\");\n                        if (self.opts.selectOnBlur) {\n                            self.selectHighlighted({noFocus: true});\n                        }\n                        self.close({focus:true});\n                        e.preventDefault();\n                        e.stopPropagation();\n                    }\n                });\n            }\n\n            // ensure the mask is always right before the dropdown\n            if (this.dropdown.prev()[0] !== mask[0]) {\n                this.dropdown.before(mask);\n            }\n\n            // move the global id to the correct dropdown\n            $(\"#select2-drop\").removeAttr(\"id\");\n            this.dropdown.attr(\"id\", \"select2-drop\");\n\n            // show the elements\n            mask.show();\n\n            this.positionDropdown();\n            this.dropdown.show();\n            this.positionDropdown();\n\n            this.dropdown.addClass(\"select2-drop-active\");\n\n            // attach listeners to events that can change the position of the container and thus require\n            // the position of the dropdown to be updated as well so it does not come unglued from the container\n            var that = this;\n            this.container.parents().add(window).each(function () {\n                $(this).on(resize+\" \"+scroll+\" \"+orient, function (e) {\n                    that.positionDropdown();\n                });\n            });\n\n\n        },\n\n        // abstract\n        close: function () {\n            if (!this.opened()) return;\n\n            var cid = this.containerId,\n                scroll = \"scroll.\" + cid,\n                resize = \"resize.\"+cid,\n                orient = \"orientationchange.\"+cid;\n\n            // unbind event listeners\n            this.container.parents().add(window).each(function () { $(this).off(scroll).off(resize).off(orient); });\n\n            this.clearDropdownAlignmentPreference();\n\n            $(\"#select2-drop-mask\").hide();\n            this.dropdown.removeAttr(\"id\"); // only the active dropdown has the select2-drop id\n            this.dropdown.hide();\n            this.container.removeClass(\"select2-dropdown-open\").removeClass(\"select2-container-active\");\n            this.results.empty();\n\n\n            this.clearSearch();\n            this.search.removeClass(\"select2-active\");\n            this.opts.element.trigger($.Event(\"select2-close\"));\n        },\n\n        /**\n         * Opens control, sets input value, and updates results.\n         */\n        // abstract\n        externalSearch: function (term) {\n            this.open();\n            this.search.val(term);\n            this.updateResults(false);\n        },\n\n        // abstract\n        clearSearch: function () {\n\n        },\n\n        //abstract\n        getMaximumSelectionSize: function() {\n            return evaluate(this.opts.maximumSelectionSize);\n        },\n\n        // abstract\n        ensureHighlightVisible: function () {\n            var results = this.results, children, index, child, hb, rb, y, more;\n\n            index = this.highlight();\n\n            if (index < 0) return;\n\n            if (index == 0) {\n\n                // if the first element is highlighted scroll all the way to the top,\n                // that way any unselectable headers above it will also be scrolled\n                // into view\n\n                results.scrollTop(0);\n                return;\n            }\n\n            children = this.findHighlightableChoices().find('.select2-result-label');\n\n            child = $(children[index]);\n\n            hb = child.offset().top + child.outerHeight(true);\n\n            // if this is the last child lets also make sure select2-more-results is visible\n            if (index === children.length - 1) {\n                more = results.find(\"li.select2-more-results\");\n                if (more.length > 0) {\n                    hb = more.offset().top + more.outerHeight(true);\n                }\n            }\n\n            rb = results.offset().top + results.outerHeight(true);\n            if (hb > rb) {\n                results.scrollTop(results.scrollTop() + (hb - rb));\n            }\n            y = child.offset().top - results.offset().top;\n\n            // make sure the top of the element is visible\n            if (y < 0 && child.css('display') != 'none' ) {\n                results.scrollTop(results.scrollTop() + y); // y is negative\n            }\n        },\n\n        // abstract\n        findHighlightableChoices: function() {\n            return this.results.find(\".select2-result-selectable:not(.select2-disabled, .select2-selected)\");\n        },\n\n        // abstract\n        moveHighlight: function (delta) {\n            var choices = this.findHighlightableChoices(),\n                index = this.highlight();\n\n            while (index > -1 && index < choices.length) {\n                index += delta;\n                var choice = $(choices[index]);\n                if (choice.hasClass(\"select2-result-selectable\") && !choice.hasClass(\"select2-disabled\") && !choice.hasClass(\"select2-selected\")) {\n                    this.highlight(index);\n                    break;\n                }\n            }\n        },\n\n        // abstract\n        highlight: function (index) {\n            var choices = this.findHighlightableChoices(),\n                choice,\n                data;\n\n            if (arguments.length === 0) {\n                return indexOf(choices.filter(\".select2-highlighted\")[0], choices.get());\n            }\n\n            if (index >= choices.length) index = choices.length - 1;\n            if (index < 0) index = 0;\n\n            this.removeHighlight();\n\n            choice = $(choices[index]);\n            choice.addClass(\"select2-highlighted\");\n\n            this.ensureHighlightVisible();\n\n            data = choice.data(\"select2-data\");\n            if (data) {\n                this.opts.element.trigger({ type: \"select2-highlight\", val: this.id(data), choice: data });\n            }\n        },\n\n        removeHighlight: function() {\n            this.results.find(\".select2-highlighted\").removeClass(\"select2-highlighted\");\n        },\n\n        // abstract\n        countSelectableResults: function() {\n            return this.findHighlightableChoices().length;\n        },\n\n        // abstract\n        highlightUnderEvent: function (event) {\n            var el = $(event.target).closest(\".select2-result-selectable\");\n            if (el.length > 0 && !el.is(\".select2-highlighted\")) {\n                var choices = this.findHighlightableChoices();\n                this.highlight(choices.index(el));\n            } else if (el.length == 0) {\n                // if we are over an unselectable item remove all highlights\n                this.removeHighlight();\n            }\n        },\n\n        // abstract\n        loadMoreIfNeeded: function () {\n            var results = this.results,\n                more = results.find(\"li.select2-more-results\"),\n                below, // pixels the element is below the scroll fold, below==0 is when the element is starting to be visible\n                page = this.resultsPage + 1,\n                self=this,\n                term=this.search.val(),\n                context=this.context;\n\n            if (more.length === 0) return;\n            below = more.offset().top - results.offset().top - results.height();\n\n            if (below <= this.opts.loadMorePadding) {\n                more.addClass(\"select2-active\");\n                this.opts.query({\n                        element: this.opts.element,\n                        term: term,\n                        page: page,\n                        context: context,\n                        matcher: this.opts.matcher,\n                        callback: this.bind(function (data) {\n\n                    // ignore a response if the select2 has been closed before it was received\n                    if (!self.opened()) return;\n\n\n                    self.opts.populateResults.call(this, results, data.results, {term: term, page: page, context:context});\n                    self.postprocessResults(data, false, false);\n\n                    if (data.more===true) {\n                        more.detach().appendTo(results).text(self.opts.formatLoadMore(page+1));\n                        window.setTimeout(function() { self.loadMoreIfNeeded(); }, 10);\n                    } else {\n                        more.remove();\n                    }\n                    self.positionDropdown();\n                    self.resultsPage = page;\n                    self.context = data.context;\n                    this.opts.element.trigger({ type: \"select2-loaded\", items: data });\n                })});\n            }\n        },\n\n        /**\n         * Default tokenizer function which does nothing\n         */\n        tokenize: function() {\n\n        },\n\n        /**\n         * @param initial whether or not this is the call to this method right after the dropdown has been opened\n         */\n        // abstract\n        updateResults: function (initial) {\n            var search = this.search,\n                results = this.results,\n                opts = this.opts,\n                data,\n                self = this,\n                input,\n                term = search.val(),\n                lastTerm = $.data(this.container, \"select2-last-term\"),\n                // sequence number used to drop out-of-order responses\n                queryNumber;\n\n            // prevent duplicate queries against the same term\n            if (initial !== true && lastTerm && equal(term, lastTerm)) return;\n\n            $.data(this.container, \"select2-last-term\", term);\n\n            // if the search is currently hidden we do not alter the results\n            if (initial !== true && (this.showSearchInput === false || !this.opened())) {\n                return;\n            }\n\n            function postRender() {\n                search.removeClass(\"select2-active\");\n                self.positionDropdown();\n            }\n\n            function render(html) {\n                results.html(html);\n                postRender();\n            }\n\n            queryNumber = ++this.queryCount;\n\n            var maxSelSize = this.getMaximumSelectionSize();\n            if (maxSelSize >=1) {\n                data = this.data();\n                if ($.isArray(data) && data.length >= maxSelSize && checkFormatter(opts.formatSelectionTooBig, \"formatSelectionTooBig\")) {\n                    render(\"<li class='select2-selection-limit'>\" + opts.formatSelectionTooBig(maxSelSize) + \"</li>\");\n                    return;\n                }\n            }\n\n            if (search.val().length < opts.minimumInputLength) {\n                if (checkFormatter(opts.formatInputTooShort, \"formatInputTooShort\")) {\n                    render(\"<li class='select2-no-results'>\" + opts.formatInputTooShort(search.val(), opts.minimumInputLength) + \"</li>\");\n                } else {\n                    render(\"\");\n                }\n                if (initial && this.showSearch) this.showSearch(true);\n                return;\n            }\n\n            if (opts.maximumInputLength && search.val().length > opts.maximumInputLength) {\n                if (checkFormatter(opts.formatInputTooLong, \"formatInputTooLong\")) {\n                    render(\"<li class='select2-no-results'>\" + opts.formatInputTooLong(search.val(), opts.maximumInputLength) + \"</li>\");\n                } else {\n                    render(\"\");\n                }\n                return;\n            }\n\n            if (opts.formatSearching && this.findHighlightableChoices().length === 0) {\n                render(\"<li class='select2-searching'>\" + opts.formatSearching() + \"</li>\");\n            }\n\n            search.addClass(\"select2-active\");\n\n            this.removeHighlight();\n\n            // give the tokenizer a chance to pre-process the input\n            input = this.tokenize();\n            if (input != undefined && input != null) {\n                search.val(input);\n            }\n\n            this.resultsPage = 1;\n\n            opts.query({\n                element: opts.element,\n                    term: search.val(),\n                    page: this.resultsPage,\n                    context: null,\n                    matcher: opts.matcher,\n                    callback: this.bind(function (data) {\n                var def; // default choice\n\n                // ignore old responses\n                if (queryNumber != this.queryCount) {\n                  return;\n                }\n\n                // ignore a response if the select2 has been closed before it was received\n                if (!this.opened()) {\n                    this.search.removeClass(\"select2-active\");\n                    return;\n                }\n\n                // save context, if any\n                this.context = (data.context===undefined) ? null : data.context;\n                // create a default choice and prepend it to the list\n                if (this.opts.createSearchChoice && search.val() !== \"\") {\n                    def = this.opts.createSearchChoice.call(self, search.val(), data.results);\n                    if (def !== undefined && def !== null && self.id(def) !== undefined && self.id(def) !== null) {\n                        if ($(data.results).filter(\n                            function () {\n                                return equal(self.id(this), self.id(def));\n                            }).length === 0) {\n                            data.results.unshift(def);\n                        }\n                    }\n                }\n\n                if (data.results.length === 0 && checkFormatter(opts.formatNoMatches, \"formatNoMatches\")) {\n                    render(\"<li class='select2-no-results'>\" + opts.formatNoMatches(search.val()) + \"</li>\");\n                    return;\n                }\n\n                results.empty();\n                self.opts.populateResults.call(this, results, data.results, {term: search.val(), page: this.resultsPage, context:null});\n\n                if (data.more === true && checkFormatter(opts.formatLoadMore, \"formatLoadMore\")) {\n                    results.append(\"<li class='select2-more-results'>\" + self.opts.escapeMarkup(opts.formatLoadMore(this.resultsPage)) + \"</li>\");\n                    window.setTimeout(function() { self.loadMoreIfNeeded(); }, 10);\n                }\n\n                this.postprocessResults(data, initial);\n\n                postRender();\n\n                this.opts.element.trigger({ type: \"select2-loaded\", items: data });\n            })});\n        },\n\n        // abstract\n        cancel: function () {\n            this.close();\n        },\n\n        // abstract\n        blur: function () {\n            // if selectOnBlur == true, select the currently highlighted option\n            if (this.opts.selectOnBlur)\n                this.selectHighlighted({noFocus: true});\n\n            this.close();\n            this.container.removeClass(\"select2-container-active\");\n            // synonymous to .is(':focus'), which is available in jquery >= 1.6\n            if (this.search[0] === document.activeElement) { this.search.blur(); }\n            this.clearSearch();\n            this.selection.find(\".select2-search-choice-focus\").removeClass(\"select2-search-choice-focus\");\n        },\n\n        // abstract\n        focusSearch: function () {\n            focus(this.search);\n        },\n\n        // abstract\n        selectHighlighted: function (options) {\n            var index=this.highlight(),\n                highlighted=this.results.find(\".select2-highlighted\"),\n                data = highlighted.closest('.select2-result').data(\"select2-data\");\n\n            if (data) {\n                this.highlight(index);\n                this.onSelect(data, options);\n            } else if (options && options.noFocus) {\n                this.close();\n            }\n        },\n\n        // abstract\n        getPlaceholder: function () {\n            var placeholderOption;\n            return this.opts.element.attr(\"placeholder\") ||\n                this.opts.element.attr(\"data-placeholder\") || // jquery 1.4 compat\n                this.opts.element.data(\"placeholder\") ||\n                this.opts.placeholder ||\n                ((placeholderOption = this.getPlaceholderOption()) !== undefined ? placeholderOption.text() : undefined);\n        },\n\n        // abstract\n        getPlaceholderOption: function() {\n            if (this.select) {\n                var firstOption = this.select.children('option').first();\n                if (this.opts.placeholderOption !== undefined ) {\n                    //Determine the placeholder option based on the specified placeholderOption setting\n                    return (this.opts.placeholderOption === \"first\" && firstOption) ||\n                           (typeof this.opts.placeholderOption === \"function\" && this.opts.placeholderOption(this.select));\n                } else if (firstOption.text() === \"\" && firstOption.val() === \"\") {\n                    //No explicit placeholder option specified, use the first if it's blank\n                    return firstOption;\n                }\n            }\n        },\n\n        /**\n         * Get the desired width for the container element.  This is\n         * derived first from option `width` passed to select2, then\n         * the inline 'style' on the original element, and finally\n         * falls back to the jQuery calculated element width.\n         */\n        // abstract\n        initContainerWidth: function () {\n            function resolveContainerWidth() {\n                var style, attrs, matches, i, l, attr;\n\n                if (this.opts.width === \"off\") {\n                    return null;\n                } else if (this.opts.width === \"element\"){\n                    return this.opts.element.outerWidth(false) === 0 ? 'auto' : this.opts.element.outerWidth(false) + 'px';\n                } else if (this.opts.width === \"copy\" || this.opts.width === \"resolve\") {\n                    // check if there is inline style on the element that contains width\n                    style = this.opts.element.attr('style');\n                    if (style !== undefined) {\n                        attrs = style.split(';');\n                        for (i = 0, l = attrs.length; i < l; i = i + 1) {\n                            attr = attrs[i].replace(/\\s/g, '');\n                            matches = attr.match(/^width:(([-+]?([0-9]*\\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i);\n                            if (matches !== null && matches.length >= 1)\n                                return matches[1];\n                        }\n                    }\n\n                    if (this.opts.width === \"resolve\") {\n                        // next check if css('width') can resolve a width that is percent based, this is sometimes possible\n                        // when attached to input type=hidden or elements hidden via css\n                        style = this.opts.element.css('width');\n                        if (style.indexOf(\"%\") > 0) return style;\n\n                        // finally, fallback on the calculated width of the element\n                        return (this.opts.element.outerWidth(false) === 0 ? 'auto' : this.opts.element.outerWidth(false) + 'px');\n                    }\n\n                    return null;\n                } else if ($.isFunction(this.opts.width)) {\n                    return this.opts.width();\n                } else {\n                    return this.opts.width;\n               }\n            };\n\n            var width = resolveContainerWidth.call(this);\n            if (width !== null) {\n                this.container.css(\"width\", width);\n            }\n        }\n    });\n\n    SingleSelect2 = clazz(AbstractSelect2, {\n\n        // single\n\n        createContainer: function () {\n            var container = $(document.createElement(\"div\")).attr({\n                \"class\": \"select2-container\"\n            }).html([\n                \"<a href='javascript:void(0)' onclick='return false;' class='select2-choice' tabindex='-1'>\",\n                \"   <span class='select2-chosen'>&nbsp;</span><abbr class='select2-search-choice-close'></abbr>\",\n                \"   <span class='select2-arrow'><b></b></span>\",\n                \"</a>\",\n                \"<input class='select2-focusser select2-offscreen' type='text'/>\",\n                \"<div class='select2-drop select2-display-none'>\",\n                \"   <div class='select2-search'>\",\n                \"       <input type='text' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' class='select2-input'/>\",\n                \"   </div>\",\n                \"   <ul class='select2-results'>\",\n                \"   </ul>\",\n                \"</div>\"].join(\"\"));\n            return container;\n        },\n\n        // single\n        enableInterface: function() {\n            if (this.parent.enableInterface.apply(this, arguments)) {\n                this.focusser.prop(\"disabled\", !this.isInterfaceEnabled());\n            }\n        },\n\n        // single\n        opening: function () {\n            var el, range, len;\n\n            if (this.opts.minimumResultsForSearch >= 0) {\n                this.showSearch(true);\n            }\n\n            this.parent.opening.apply(this, arguments);\n\n            if (this.showSearchInput !== false) {\n                // IE appends focusser.val() at the end of field :/ so we manually insert it at the beginning using a range\n                // all other browsers handle this just fine\n\n                this.search.val(this.focusser.val());\n            }\n            this.search.focus();\n            // move the cursor to the end after focussing, otherwise it will be at the beginning and\n            // new text will appear *before* focusser.val()\n            el = this.search.get(0);\n            if (el.createTextRange) {\n                range = el.createTextRange();\n                range.collapse(false);\n                range.select();\n            } else if (el.setSelectionRange) {\n                len = this.search.val().length;\n                el.setSelectionRange(len, len);\n            }\n\n            // initializes search's value with nextSearchTerm (if defined by user)\n            // ignore nextSearchTerm if the dropdown is opened by the user pressing a letter\n            if(this.search.val() === \"\") {\n                if(this.nextSearchTerm != undefined){\n                    this.search.val(this.nextSearchTerm);\n                    this.search.select();\n                }\n            }\n\n            this.focusser.prop(\"disabled\", true).val(\"\");\n            this.updateResults(true);\n            this.opts.element.trigger($.Event(\"select2-open\"));\n        },\n\n        // single\n        close: function (params) {\n            if (!this.opened()) return;\n            this.parent.close.apply(this, arguments);\n\n            params = params || {focus: true};\n            this.focusser.removeAttr(\"disabled\");\n\n            if (params.focus) {\n                this.focusser.focus();\n            }\n        },\n\n        // single\n        focus: function () {\n            if (this.opened()) {\n                this.close();\n            } else {\n                this.focusser.removeAttr(\"disabled\");\n                this.focusser.focus();\n            }\n        },\n\n        // single\n        isFocused: function () {\n            return this.container.hasClass(\"select2-container-active\");\n        },\n\n        // single\n        cancel: function () {\n            this.parent.cancel.apply(this, arguments);\n            this.focusser.removeAttr(\"disabled\");\n            this.focusser.focus();\n        },\n\n        // single\n        destroy: function() {\n            $(\"label[for='\" + this.focusser.attr('id') + \"']\")\n                .attr('for', this.opts.element.attr(\"id\"));\n            this.parent.destroy.apply(this, arguments);\n        },\n\n        // single\n        initContainer: function () {\n\n            var selection,\n                container = this.container,\n                dropdown = this.dropdown;\n\n            if (this.opts.minimumResultsForSearch < 0) {\n                this.showSearch(false);\n            } else {\n                this.showSearch(true);\n            }\n\n            this.selection = selection = container.find(\".select2-choice\");\n\n            this.focusser = container.find(\".select2-focusser\");\n\n            // rewrite labels from original element to focusser\n            this.focusser.attr(\"id\", \"s2id_autogen\"+nextUid());\n\n            $(\"label[for='\" + this.opts.element.attr(\"id\") + \"']\")\n                .attr('for', this.focusser.attr('id'));\n\n            this.focusser.attr(\"tabindex\", this.elementTabIndex);\n\n            this.search.on(\"keydown\", this.bind(function (e) {\n                if (!this.isInterfaceEnabled()) return;\n\n                if (e.which === KEY.PAGE_UP || e.which === KEY.PAGE_DOWN) {\n                    // prevent the page from scrolling\n                    killEvent(e);\n                    return;\n                }\n\n                switch (e.which) {\n                    case KEY.UP:\n                    case KEY.DOWN:\n                        this.moveHighlight((e.which === KEY.UP) ? -1 : 1);\n                        killEvent(e);\n                        return;\n                    case KEY.ENTER:\n                        this.selectHighlighted();\n                        killEvent(e);\n                        return;\n                    case KEY.TAB:\n                        this.selectHighlighted({noFocus: true});\n                        return;\n                    case KEY.ESC:\n                        this.cancel(e);\n                        killEvent(e);\n                        return;\n                }\n            }));\n\n            this.search.on(\"blur\", this.bind(function(e) {\n                // a workaround for chrome to keep the search field focussed when the scroll bar is used to scroll the dropdown.\n                // without this the search field loses focus which is annoying\n                if (document.activeElement === this.body().get(0)) {\n                    window.setTimeout(this.bind(function() {\n                        this.search.focus();\n                    }), 0);\n                }\n            }));\n\n            this.focusser.on(\"keydown\", this.bind(function (e) {\n                if (!this.isInterfaceEnabled()) return;\n\n                if (e.which === KEY.TAB || KEY.isControl(e) || KEY.isFunctionKey(e) || e.which === KEY.ESC) {\n                    return;\n                }\n\n                if (this.opts.openOnEnter === false && e.which === KEY.ENTER) {\n                    killEvent(e);\n                    return;\n                }\n\n                if (e.which == KEY.DOWN || e.which == KEY.UP\n                    || (e.which == KEY.ENTER && this.opts.openOnEnter)) {\n\n                    if (e.altKey || e.ctrlKey || e.shiftKey || e.metaKey) return;\n\n                    this.open();\n                    killEvent(e);\n                    return;\n                }\n\n                if (e.which == KEY.DELETE || e.which == KEY.BACKSPACE) {\n                    if (this.opts.allowClear) {\n                        this.clear();\n                    }\n                    killEvent(e);\n                    return;\n                }\n            }));\n\n\n            installKeyUpChangeEvent(this.focusser);\n            this.focusser.on(\"keyup-change input\", this.bind(function(e) {\n                if (this.opts.minimumResultsForSearch >= 0) {\n                    e.stopPropagation();\n                    if (this.opened()) return;\n                    this.open();\n                }\n            }));\n\n            selection.on(\"mousedown\", \"abbr\", this.bind(function (e) {\n                if (!this.isInterfaceEnabled()) return;\n                this.clear();\n                killEventImmediately(e);\n                this.close();\n                this.selection.focus();\n            }));\n\n            selection.on(\"mousedown\", this.bind(function (e) {\n\n                if (!this.container.hasClass(\"select2-container-active\")) {\n                    this.opts.element.trigger($.Event(\"select2-focus\"));\n                }\n\n                if (this.opened()) {\n                    this.close();\n                } else if (this.isInterfaceEnabled()) {\n                    this.open();\n                }\n\n                killEvent(e);\n            }));\n\n            dropdown.on(\"mousedown\", this.bind(function() { this.search.focus(); }));\n\n            selection.on(\"focus\", this.bind(function(e) {\n                killEvent(e);\n            }));\n\n            this.focusser.on(\"focus\", this.bind(function(){\n                if (!this.container.hasClass(\"select2-container-active\")) {\n                    this.opts.element.trigger($.Event(\"select2-focus\"));\n                }\n                this.container.addClass(\"select2-container-active\");\n            })).on(\"blur\", this.bind(function() {\n                if (!this.opened()) {\n                    this.container.removeClass(\"select2-container-active\");\n                    this.opts.element.trigger($.Event(\"select2-blur\"));\n                }\n            }));\n            this.search.on(\"focus\", this.bind(function(){\n                if (!this.container.hasClass(\"select2-container-active\")) {\n                    this.opts.element.trigger($.Event(\"select2-focus\"));\n                }\n                this.container.addClass(\"select2-container-active\");\n            }));\n\n            this.initContainerWidth();\n            this.opts.element.addClass(\"select2-offscreen\");\n            this.setPlaceholder();\n\n        },\n\n        // single\n        clear: function(triggerChange) {\n            var data=this.selection.data(\"select2-data\");\n            if (data) { // guard against queued quick consecutive clicks\n                var evt = $.Event(\"select2-clearing\");\n                this.opts.element.trigger(evt);\n                if (evt.isDefaultPrevented()) {\n                    return;\n                }\n                var placeholderOption = this.getPlaceholderOption();\n                this.opts.element.val(placeholderOption ? placeholderOption.val() : \"\");\n                this.selection.find(\".select2-chosen\").empty();\n                this.selection.removeData(\"select2-data\");\n                this.setPlaceholder();\n\n                if (triggerChange !== false){\n                    this.opts.element.trigger({ type: \"select2-removed\", val: this.id(data), choice: data });\n                    this.triggerChange({removed:data});\n                }\n            }\n        },\n\n        /**\n         * Sets selection based on source element's value\n         */\n        // single\n        initSelection: function () {\n            var selected;\n            if (this.isPlaceholderOptionSelected()) {\n                this.updateSelection(null);\n                this.close();\n                this.setPlaceholder();\n            } else {\n                var self = this;\n                this.opts.initSelection.call(null, this.opts.element, function(selected){\n                    if (selected !== undefined && selected !== null) {\n                        self.updateSelection(selected);\n                        self.close();\n                        self.setPlaceholder();\n                    }\n                });\n            }\n        },\n\n        isPlaceholderOptionSelected: function() {\n            var placeholderOption;\n            if (!this.getPlaceholder()) return false; // no placeholder specified so no option should be considered\n            return ((placeholderOption = this.getPlaceholderOption()) !== undefined && placeholderOption.prop(\"selected\"))\n                || (this.opts.element.val() === \"\")\n                || (this.opts.element.val() === undefined)\n                || (this.opts.element.val() === null);\n        },\n\n        // single\n        prepareOpts: function () {\n            var opts = this.parent.prepareOpts.apply(this, arguments),\n                self=this;\n\n            if (opts.element.get(0).tagName.toLowerCase() === \"select\") {\n                // install the selection initializer\n                opts.initSelection = function (element, callback) {\n                    var selected = element.find(\"option\").filter(function() { return this.selected });\n                    // a single select box always has a value, no need to null check 'selected'\n                    callback(self.optionToData(selected));\n                };\n            } else if (\"data\" in opts) {\n                // install default initSelection when applied to hidden input and data is local\n                opts.initSelection = opts.initSelection || function (element, callback) {\n                    var id = element.val();\n                    //search in data by id, storing the actual matching item\n                    var match = null;\n                    opts.query({\n                        matcher: function(term, text, el){\n                            var is_match = equal(id, opts.id(el));\n                            if (is_match) {\n                                match = el;\n                            }\n                            return is_match;\n                        },\n                        callback: !$.isFunction(callback) ? $.noop : function() {\n                            callback(match);\n                        }\n                    });\n                };\n            }\n\n            return opts;\n        },\n\n        // single\n        getPlaceholder: function() {\n            // if a placeholder is specified on a single select without a valid placeholder option ignore it\n            if (this.select) {\n                if (this.getPlaceholderOption() === undefined) {\n                    return undefined;\n                }\n            }\n\n            return this.parent.getPlaceholder.apply(this, arguments);\n        },\n\n        // single\n        setPlaceholder: function () {\n            var placeholder = this.getPlaceholder();\n\n            if (this.isPlaceholderOptionSelected() && placeholder !== undefined) {\n\n                // check for a placeholder option if attached to a select\n                if (this.select && this.getPlaceholderOption() === undefined) return;\n\n                this.selection.find(\".select2-chosen\").html(this.opts.escapeMarkup(placeholder));\n\n                this.selection.addClass(\"select2-default\");\n\n                this.container.removeClass(\"select2-allowclear\");\n            }\n        },\n\n        // single\n        postprocessResults: function (data, initial, noHighlightUpdate) {\n            var selected = 0, self = this, showSearchInput = true;\n\n            // find the selected element in the result list\n\n            this.findHighlightableChoices().each2(function (i, elm) {\n                if (equal(self.id(elm.data(\"select2-data\")), self.opts.element.val())) {\n                    selected = i;\n                    return false;\n                }\n            });\n\n            // and highlight it\n            if (noHighlightUpdate !== false) {\n                if (initial === true && selected >= 0) {\n                    this.highlight(selected);\n                } else {\n                    this.highlight(0);\n                }\n            }\n\n            // hide the search box if this is the first we got the results and there are enough of them for search\n\n            if (initial === true) {\n                var min = this.opts.minimumResultsForSearch;\n                if (min >= 0) {\n                    this.showSearch(countResults(data.results) >= min);\n                }\n            }\n        },\n\n        // single\n        showSearch: function(showSearchInput) {\n            if (this.showSearchInput === showSearchInput) return;\n\n            this.showSearchInput = showSearchInput;\n\n            this.dropdown.find(\".select2-search\").toggleClass(\"select2-search-hidden\", !showSearchInput);\n            this.dropdown.find(\".select2-search\").toggleClass(\"select2-offscreen\", !showSearchInput);\n            //add \"select2-with-searchbox\" to the container if search box is shown\n            $(this.dropdown, this.container).toggleClass(\"select2-with-searchbox\", showSearchInput);\n        },\n\n        // single\n        onSelect: function (data, options) {\n\n            if (!this.triggerSelect(data)) { return; }\n\n            var old = this.opts.element.val(),\n                oldData = this.data();\n\n            this.opts.element.val(this.id(data));\n            this.updateSelection(data);\n\n            this.opts.element.trigger({ type: \"select2-selected\", val: this.id(data), choice: data });\n\n            this.nextSearchTerm = this.opts.nextSearchTerm(data, this.search.val());\n            this.close();\n\n            if (!options || !options.noFocus)\n                this.focusser.focus();\n\n            if (!equal(old, this.id(data))) { this.triggerChange({added:data,removed:oldData}); }\n        },\n\n        // single\n        updateSelection: function (data) {\n\n            var container=this.selection.find(\".select2-chosen\"), formatted, cssClass;\n\n            this.selection.data(\"select2-data\", data);\n\n            container.empty();\n            if (data !== null) {\n                formatted=this.opts.formatSelection(data, container, this.opts.escapeMarkup);\n            }\n            if (formatted !== undefined) {\n                container.append(formatted);\n            }\n            cssClass=this.opts.formatSelectionCssClass(data, container);\n            if (cssClass !== undefined) {\n                container.addClass(cssClass);\n            }\n\n            this.selection.removeClass(\"select2-default\");\n\n            if (this.opts.allowClear && this.getPlaceholder() !== undefined) {\n                this.container.addClass(\"select2-allowclear\");\n            }\n        },\n\n        // single\n        val: function () {\n            var val,\n                triggerChange = false,\n                data = null,\n                self = this,\n                oldData = this.data();\n\n            if (arguments.length === 0) {\n                return this.opts.element.val();\n            }\n\n            val = arguments[0];\n\n            if (arguments.length > 1) {\n                triggerChange = arguments[1];\n            }\n\n            if (this.select) {\n                this.select\n                    .val(val)\n                    .find(\"option\").filter(function() { return this.selected }).each2(function (i, elm) {\n                        data = self.optionToData(elm);\n                        return false;\n                    });\n                this.updateSelection(data);\n                this.setPlaceholder();\n                if (triggerChange) {\n                    this.triggerChange({added: data, removed:oldData});\n                }\n            } else {\n                // val is an id. !val is true for [undefined,null,'',0] - 0 is legal\n                if (!val && val !== 0) {\n                    this.clear(triggerChange);\n                    return;\n                }\n                if (this.opts.initSelection === undefined) {\n                    throw new Error(\"cannot call val() if initSelection() is not defined\");\n                }\n                this.opts.element.val(val);\n                this.opts.initSelection(this.opts.element, function(data){\n                    self.opts.element.val(!data ? \"\" : self.id(data));\n                    self.updateSelection(data);\n                    self.setPlaceholder();\n                    if (triggerChange) {\n                        self.triggerChange({added: data, removed:oldData});\n                    }\n                });\n            }\n        },\n\n        // single\n        clearSearch: function () {\n            this.search.val(\"\");\n            this.focusser.val(\"\");\n        },\n\n        // single\n        data: function(value) {\n            var data,\n                triggerChange = false;\n\n            if (arguments.length === 0) {\n                data = this.selection.data(\"select2-data\");\n                if (data == undefined) data = null;\n                return data;\n            } else {\n                if (arguments.length > 1) {\n                    triggerChange = arguments[1];\n                }\n                if (!value) {\n                    this.clear(triggerChange);\n                } else {\n                    data = this.data();\n                    this.opts.element.val(!value ? \"\" : this.id(value));\n                    this.updateSelection(value);\n                    if (triggerChange) {\n                        this.triggerChange({added: value, removed:data});\n                    }\n                }\n            }\n        }\n    });\n\n    MultiSelect2 = clazz(AbstractSelect2, {\n\n        // multi\n        createContainer: function () {\n            var container = $(document.createElement(\"div\")).attr({\n                \"class\": \"select2-container select2-container-multi\"\n            }).html([\n                \"<ul class='select2-choices'>\",\n                \"  <li class='select2-search-field'>\",\n                \"    <input type='text' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' class='select2-input'>\",\n                \"  </li>\",\n                \"</ul>\",\n                \"<div class='select2-drop select2-drop-multi select2-display-none'>\",\n                \"   <ul class='select2-results'>\",\n                \"   </ul>\",\n                \"</div>\"].join(\"\"));\n            return container;\n        },\n\n        // multi\n        prepareOpts: function () {\n            var opts = this.parent.prepareOpts.apply(this, arguments),\n                self=this;\n\n            // TODO validate placeholder is a string if specified\n\n            if (opts.element.get(0).tagName.toLowerCase() === \"select\") {\n                // install sthe selection initializer\n                opts.initSelection = function (element, callback) {\n\n                    var data = [];\n\n                    element.find(\"option\").filter(function() { return this.selected }).each2(function (i, elm) {\n                        data.push(self.optionToData(elm));\n                    });\n                    callback(data);\n                };\n            } else if (\"data\" in opts) {\n                // install default initSelection when applied to hidden input and data is local\n                opts.initSelection = opts.initSelection || function (element, callback) {\n                    var ids = splitVal(element.val(), opts.separator);\n                    //search in data by array of ids, storing matching items in a list\n                    var matches = [];\n                    opts.query({\n                        matcher: function(term, text, el){\n                            var is_match = $.grep(ids, function(id) {\n                                return equal(id, opts.id(el));\n                            }).length;\n                            if (is_match) {\n                                matches.push(el);\n                            }\n                            return is_match;\n                        },\n                        callback: !$.isFunction(callback) ? $.noop : function() {\n                            // reorder matches based on the order they appear in the ids array because right now\n                            // they are in the order in which they appear in data array\n                            var ordered = [];\n                            for (var i = 0; i < ids.length; i++) {\n                                var id = ids[i];\n                                for (var j = 0; j < matches.length; j++) {\n                                    var match = matches[j];\n                                    if (equal(id, opts.id(match))) {\n                                        ordered.push(match);\n                                        matches.splice(j, 1);\n                                        break;\n                                    }\n                                }\n                            }\n                            callback(ordered);\n                        }\n                    });\n                };\n            }\n\n            return opts;\n        },\n\n        selectChoice: function (choice) {\n\n            var selected = this.container.find(\".select2-search-choice-focus\");\n            if (selected.length && choice && choice[0] == selected[0]) {\n\n            } else {\n                if (selected.length) {\n                    this.opts.element.trigger(\"choice-deselected\", selected);\n                }\n                selected.removeClass(\"select2-search-choice-focus\");\n                if (choice && choice.length) {\n                    this.close();\n                    choice.addClass(\"select2-search-choice-focus\");\n                    this.opts.element.trigger(\"choice-selected\", choice);\n                }\n            }\n        },\n\n        // multi\n        destroy: function() {\n            $(\"label[for='\" + this.search.attr('id') + \"']\")\n                .attr('for', this.opts.element.attr(\"id\"));\n            this.parent.destroy.apply(this, arguments);\n        },\n\n        // multi\n        initContainer: function () {\n\n            var selector = \".select2-choices\", selection;\n\n            this.searchContainer = this.container.find(\".select2-search-field\");\n            this.selection = selection = this.container.find(selector);\n\n            var _this = this;\n            this.selection.on(\"click\", \".select2-search-choice:not(.select2-locked)\", function (e) {\n                //killEvent(e);\n                _this.search[0].focus();\n                _this.selectChoice($(this));\n            });\n\n            // rewrite labels from original element to focusser\n            this.search.attr(\"id\", \"s2id_autogen\"+nextUid());\n            $(\"label[for='\" + this.opts.element.attr(\"id\") + \"']\")\n                .attr('for', this.search.attr('id'));\n\n            this.search.on(\"input paste\", this.bind(function() {\n                if (!this.isInterfaceEnabled()) return;\n                if (!this.opened()) {\n                    this.open();\n                }\n            }));\n\n            this.search.attr(\"tabindex\", this.elementTabIndex);\n\n            this.keydowns = 0;\n            this.search.on(\"keydown\", this.bind(function (e) {\n                if (!this.isInterfaceEnabled()) return;\n\n                ++this.keydowns;\n                var selected = selection.find(\".select2-search-choice-focus\");\n                var prev = selected.prev(\".select2-search-choice:not(.select2-locked)\");\n                var next = selected.next(\".select2-search-choice:not(.select2-locked)\");\n                var pos = getCursorInfo(this.search);\n\n                if (selected.length &&\n                    (e.which == KEY.LEFT || e.which == KEY.RIGHT || e.which == KEY.BACKSPACE || e.which == KEY.DELETE || e.which == KEY.ENTER)) {\n                    var selectedChoice = selected;\n                    if (e.which == KEY.LEFT && prev.length) {\n                        selectedChoice = prev;\n                    }\n                    else if (e.which == KEY.RIGHT) {\n                        selectedChoice = next.length ? next : null;\n                    }\n                    else if (e.which === KEY.BACKSPACE) {\n                        this.unselect(selected.first());\n                        this.search.width(10);\n                        selectedChoice = prev.length ? prev : next;\n                    } else if (e.which == KEY.DELETE) {\n                        this.unselect(selected.first());\n                        this.search.width(10);\n                        selectedChoice = next.length ? next : null;\n                    } else if (e.which == KEY.ENTER) {\n                        selectedChoice = null;\n                    }\n\n                    this.selectChoice(selectedChoice);\n                    killEvent(e);\n                    if (!selectedChoice || !selectedChoice.length) {\n                        this.open();\n                    }\n                    return;\n                } else if (((e.which === KEY.BACKSPACE && this.keydowns == 1)\n                    || e.which == KEY.LEFT) && (pos.offset == 0 && !pos.length)) {\n\n                    this.selectChoice(selection.find(\".select2-search-choice:not(.select2-locked)\").last());\n                    killEvent(e);\n                    return;\n                } else {\n                    this.selectChoice(null);\n                }\n\n                if (this.opened()) {\n                    switch (e.which) {\n                    case KEY.UP:\n                    case KEY.DOWN:\n                        this.moveHighlight((e.which === KEY.UP) ? -1 : 1);\n                        killEvent(e);\n                        return;\n                    case KEY.ENTER:\n                        this.selectHighlighted();\n                        killEvent(e);\n                        return;\n                    case KEY.TAB:\n                        this.selectHighlighted({noFocus:true});\n                        this.close();\n                        return;\n                    case KEY.ESC:\n                        this.cancel(e);\n                        killEvent(e);\n                        return;\n                    }\n                }\n\n                if (e.which === KEY.TAB || KEY.isControl(e) || KEY.isFunctionKey(e)\n                 || e.which === KEY.BACKSPACE || e.which === KEY.ESC) {\n                    return;\n                }\n\n                if (e.which === KEY.ENTER) {\n                    if (this.opts.openOnEnter === false) {\n                        return;\n                    } else if (e.altKey || e.ctrlKey || e.shiftKey || e.metaKey) {\n                        return;\n                    }\n                }\n\n                this.open();\n\n                if (e.which === KEY.PAGE_UP || e.which === KEY.PAGE_DOWN) {\n                    // prevent the page from scrolling\n                    killEvent(e);\n                }\n\n                if (e.which === KEY.ENTER) {\n                    // prevent form from being submitted\n                    killEvent(e);\n                }\n\n            }));\n\n            this.search.on(\"keyup\", this.bind(function (e) {\n                this.keydowns = 0;\n                this.resizeSearch();\n            })\n            );\n\n            this.search.on(\"blur\", this.bind(function(e) {\n                this.container.removeClass(\"select2-container-active\");\n                this.search.removeClass(\"select2-focused\");\n                this.selectChoice(null);\n                if (!this.opened()) this.clearSearch();\n                e.stopImmediatePropagation();\n                this.opts.element.trigger($.Event(\"select2-blur\"));\n            }));\n\n            this.container.on(\"click\", selector, this.bind(function (e) {\n                if (!this.isInterfaceEnabled()) return;\n                if ($(e.target).closest(\".select2-search-choice\").length > 0) {\n                    // clicked inside a select2 search choice, do not open\n                    return;\n                }\n                this.selectChoice(null);\n                this.clearPlaceholder();\n                if (!this.container.hasClass(\"select2-container-active\")) {\n                    this.opts.element.trigger($.Event(\"select2-focus\"));\n                }\n                this.open();\n                this.focusSearch();\n                e.preventDefault();\n            }));\n\n            this.container.on(\"focus\", selector, this.bind(function () {\n                if (!this.isInterfaceEnabled()) return;\n                if (!this.container.hasClass(\"select2-container-active\")) {\n                    this.opts.element.trigger($.Event(\"select2-focus\"));\n                }\n                this.container.addClass(\"select2-container-active\");\n                this.dropdown.addClass(\"select2-drop-active\");\n                this.clearPlaceholder();\n            }));\n\n            this.initContainerWidth();\n            this.opts.element.addClass(\"select2-offscreen\");\n\n            // set the placeholder if necessary\n            this.clearSearch();\n        },\n\n        // multi\n        enableInterface: function() {\n            if (this.parent.enableInterface.apply(this, arguments)) {\n                this.search.prop(\"disabled\", !this.isInterfaceEnabled());\n            }\n        },\n\n        // multi\n        initSelection: function () {\n            var data;\n            if (this.opts.element.val() === \"\" && this.opts.element.text() === \"\") {\n                this.updateSelection([]);\n                this.close();\n                // set the placeholder if necessary\n                this.clearSearch();\n            }\n            if (this.select || this.opts.element.val() !== \"\") {\n                var self = this;\n                this.opts.initSelection.call(null, this.opts.element, function(data){\n                    if (data !== undefined && data !== null) {\n                        self.updateSelection(data);\n                        self.close();\n                        // set the placeholder if necessary\n                        self.clearSearch();\n                    }\n                });\n            }\n        },\n\n        // multi\n        clearSearch: function () {\n            var placeholder = this.getPlaceholder(),\n                maxWidth = this.getMaxSearchWidth();\n\n            if (placeholder !== undefined  && this.getVal().length === 0 && this.search.hasClass(\"select2-focused\") === false) {\n                this.search.val(placeholder).addClass(\"select2-default\");\n                // stretch the search box to full width of the container so as much of the placeholder is visible as possible\n                // we could call this.resizeSearch(), but we do not because that requires a sizer and we do not want to create one so early because of a firefox bug, see #944\n                this.search.width(maxWidth > 0 ? maxWidth : this.container.css(\"width\"));\n            } else {\n                this.search.val(\"\").width(10);\n            }\n        },\n\n        // multi\n        clearPlaceholder: function () {\n            if (this.search.hasClass(\"select2-default\")) {\n                this.search.val(\"\").removeClass(\"select2-default\");\n            }\n        },\n\n        // multi\n        opening: function () {\n            this.clearPlaceholder(); // should be done before super so placeholder is not used to search\n            this.resizeSearch();\n\n            this.parent.opening.apply(this, arguments);\n\n            this.focusSearch();\n\n            this.updateResults(true);\n            this.search.focus();\n            this.opts.element.trigger($.Event(\"select2-open\"));\n        },\n\n        // multi\n        close: function () {\n            if (!this.opened()) return;\n            this.parent.close.apply(this, arguments);\n        },\n\n        // multi\n        focus: function () {\n            this.close();\n            this.search.focus();\n        },\n\n        // multi\n        isFocused: function () {\n            return this.search.hasClass(\"select2-focused\");\n        },\n\n        // multi\n        updateSelection: function (data) {\n            var ids = [], filtered = [], self = this;\n\n            // filter out duplicates\n            $(data).each(function () {\n                if (indexOf(self.id(this), ids) < 0) {\n                    ids.push(self.id(this));\n                    filtered.push(this);\n                }\n            });\n            data = filtered;\n\n            this.selection.find(\".select2-search-choice\").remove();\n            $(data).each(function () {\n                self.addSelectedChoice(this);\n            });\n            self.postprocessResults();\n        },\n\n        // multi\n        tokenize: function() {\n            var input = this.search.val();\n            input = this.opts.tokenizer.call(this, input, this.data(), this.bind(this.onSelect), this.opts);\n            if (input != null && input != undefined) {\n                this.search.val(input);\n                if (input.length > 0) {\n                    this.open();\n                }\n            }\n\n        },\n\n        // multi\n        onSelect: function (data, options) {\n\n            if (!this.triggerSelect(data)) { return; }\n\n            this.addSelectedChoice(data);\n\n            this.opts.element.trigger({ type: \"selected\", val: this.id(data), choice: data });\n\n            if (this.select || !this.opts.closeOnSelect) this.postprocessResults(data, false, this.opts.closeOnSelect===true);\n\n            if (this.opts.closeOnSelect) {\n                this.close();\n                this.search.width(10);\n            } else {\n                if (this.countSelectableResults()>0) {\n                    this.search.width(10);\n                    this.resizeSearch();\n                    if (this.getMaximumSelectionSize() > 0 && this.val().length >= this.getMaximumSelectionSize()) {\n                        // if we reached max selection size repaint the results so choices\n                        // are replaced with the max selection reached message\n                        this.updateResults(true);\n                    }\n                    this.positionDropdown();\n                } else {\n                    // if nothing left to select close\n                    this.close();\n                    this.search.width(10);\n                }\n            }\n\n            // since its not possible to select an element that has already been\n            // added we do not need to check if this is a new element before firing change\n            this.triggerChange({ added: data });\n\n            if (!options || !options.noFocus)\n                this.focusSearch();\n        },\n\n        // multi\n        cancel: function () {\n            this.close();\n            this.focusSearch();\n        },\n\n        addSelectedChoice: function (data) {\n            var enableChoice = !data.locked,\n                enabledItem = $(\n                    \"<li class='select2-search-choice'>\" +\n                    \"    <div></div>\" +\n                    \"    <a href='#' onclick='return false;' class='select2-search-choice-close' tabindex='-1'></a>\" +\n                    \"</li>\"),\n                disabledItem = $(\n                    \"<li class='select2-search-choice select2-locked'>\" +\n                    \"<div></div>\" +\n                    \"</li>\");\n            var choice = enableChoice ? enabledItem : disabledItem,\n                id = this.id(data),\n                val = this.getVal(),\n                formatted,\n                cssClass;\n\n            formatted=this.opts.formatSelection(data, choice.find(\"div\"), this.opts.escapeMarkup);\n            if (formatted != undefined) {\n                choice.find(\"div\").replaceWith(\"<div>\"+formatted+\"</div>\");\n            }\n            cssClass=this.opts.formatSelectionCssClass(data, choice.find(\"div\"));\n            if (cssClass != undefined) {\n                choice.addClass(cssClass);\n            }\n\n            if(enableChoice){\n              choice.find(\".select2-search-choice-close\")\n                  .on(\"mousedown\", killEvent)\n                  .on(\"click dblclick\", this.bind(function (e) {\n                  if (!this.isInterfaceEnabled()) return;\n\n                  $(e.target).closest(\".select2-search-choice\").fadeOut('fast', this.bind(function(){\n                      this.unselect($(e.target));\n                      this.selection.find(\".select2-search-choice-focus\").removeClass(\"select2-search-choice-focus\");\n                      this.close();\n                      this.focusSearch();\n                  })).dequeue();\n                  killEvent(e);\n              })).on(\"focus\", this.bind(function () {\n                  if (!this.isInterfaceEnabled()) return;\n                  this.container.addClass(\"select2-container-active\");\n                  this.dropdown.addClass(\"select2-drop-active\");\n              }));\n            }\n\n            choice.data(\"select2-data\", data);\n            choice.insertBefore(this.searchContainer);\n\n            val.push(id);\n            this.setVal(val);\n        },\n\n        // multi\n        unselect: function (selected) {\n            var val = this.getVal(),\n                data,\n                index;\n\n            selected = selected.closest(\".select2-search-choice\");\n\n            if (selected.length === 0) {\n                throw \"Invalid argument: \" + selected + \". Must be .select2-search-choice\";\n            }\n\n            data = selected.data(\"select2-data\");\n\n            if (!data) {\n                // prevent a race condition when the 'x' is clicked really fast repeatedly the event can be queued\n                // and invoked on an element already removed\n                return;\n            }\n\n            while((index = indexOf(this.id(data), val)) >= 0) {\n                val.splice(index, 1);\n                this.setVal(val);\n                if (this.select) this.postprocessResults();\n            }\n\n            var evt = $.Event(\"select2-removing\");\n            evt.val = this.id(data);\n            evt.choice = data;\n            this.opts.element.trigger(evt);\n\n            if (evt.isDefaultPrevented()) {\n                return;\n            }\n\n            this.opts.element.trigger({ type: \"select2-removed\", val: this.id(data), choice: data });\n            this.triggerChange({ removed: data });\n        },\n\n        // multi\n        postprocessResults: function (data, initial, noHighlightUpdate) {\n            var val = this.getVal(),\n                choices = this.results.find(\".select2-result\"),\n                compound = this.results.find(\".select2-result-with-children\"),\n                self = this;\n\n            choices.each2(function (i, choice) {\n                var id = self.id(choice.data(\"select2-data\"));\n                if (indexOf(id, val) >= 0) {\n                    choice.addClass(\"select2-selected\");\n                    // mark all children of the selected parent as selected\n                    choice.find(\".select2-result-selectable\").addClass(\"select2-selected\");\n                }\n            });\n\n            compound.each2(function(i, choice) {\n                // hide an optgroup if it doesnt have any selectable children\n                if (!choice.is('.select2-result-selectable')\n                    && choice.find(\".select2-result-selectable:not(.select2-selected)\").length === 0) {\n                    choice.addClass(\"select2-selected\");\n                }\n            });\n\n            if (this.highlight() == -1 && noHighlightUpdate !== false){\n                self.highlight(0);\n            }\n\n            //If all results are chosen render formatNoMAtches\n            if(!this.opts.createSearchChoice && !choices.filter('.select2-result:not(.select2-selected)').length > 0){\n                if(!data || data && !data.more && this.results.find(\".select2-no-results\").length === 0) {\n                    if (checkFormatter(self.opts.formatNoMatches, \"formatNoMatches\")) {\n                        this.results.append(\"<li class='select2-no-results'>\" + self.opts.formatNoMatches(self.search.val()) + \"</li>\");\n                    }\n                }\n            }\n\n        },\n\n        // multi\n        getMaxSearchWidth: function() {\n            return this.selection.width() - getSideBorderPadding(this.search);\n        },\n\n        // multi\n        resizeSearch: function () {\n            var minimumWidth, left, maxWidth, containerLeft, searchWidth,\n                sideBorderPadding = getSideBorderPadding(this.search);\n\n            minimumWidth = measureTextWidth(this.search) + 10;\n\n            left = this.search.offset().left;\n\n            maxWidth = this.selection.width();\n            containerLeft = this.selection.offset().left;\n\n            searchWidth = maxWidth - (left - containerLeft) - sideBorderPadding;\n\n            if (searchWidth < minimumWidth) {\n                searchWidth = maxWidth - sideBorderPadding;\n            }\n\n            if (searchWidth < 40) {\n                searchWidth = maxWidth - sideBorderPadding;\n            }\n\n            if (searchWidth <= 0) {\n              searchWidth = minimumWidth;\n            }\n\n            this.search.width(Math.floor(searchWidth));\n        },\n\n        // multi\n        getVal: function () {\n            var val;\n            if (this.select) {\n                val = this.select.val();\n                return val === null ? [] : val;\n            } else {\n                val = this.opts.element.val();\n                return splitVal(val, this.opts.separator);\n            }\n        },\n\n        // multi\n        setVal: function (val) {\n            var unique;\n            if (this.select) {\n                this.select.val(val);\n            } else {\n                unique = [];\n                // filter out duplicates\n                $(val).each(function () {\n                    if (indexOf(this, unique) < 0) unique.push(this);\n                });\n                this.opts.element.val(unique.length === 0 ? \"\" : unique.join(this.opts.separator));\n            }\n        },\n\n        // multi\n        buildChangeDetails: function (old, current) {\n            var current = current.slice(0),\n                old = old.slice(0);\n\n            // remove intersection from each array\n            for (var i = 0; i < current.length; i++) {\n                for (var j = 0; j < old.length; j++) {\n                    if (equal(this.opts.id(current[i]), this.opts.id(old[j]))) {\n                        current.splice(i, 1);\n                        i--;\n                        old.splice(j, 1);\n                        j--;\n                    }\n                }\n            }\n\n            return {added: current, removed: old};\n        },\n\n\n        // multi\n        val: function (val, triggerChange) {\n            var oldData, self=this;\n\n            if (arguments.length === 0) {\n                return this.getVal();\n            }\n\n            oldData=this.data();\n            if (!oldData.length) oldData=[];\n\n            // val is an id. !val is true for [undefined,null,'',0] - 0 is legal\n            if (!val && val !== 0) {\n                this.opts.element.val(\"\");\n                this.updateSelection([]);\n                this.clearSearch();\n                if (triggerChange) {\n                    this.triggerChange({added: this.data(), removed: oldData});\n                }\n                return;\n            }\n\n            // val is a list of ids\n            this.setVal(val);\n\n            if (this.select) {\n                this.opts.initSelection(this.select, this.bind(this.updateSelection));\n                if (triggerChange) {\n                    this.triggerChange(this.buildChangeDetails(oldData, this.data()));\n                }\n            } else {\n                if (this.opts.initSelection === undefined) {\n                    throw new Error(\"val() cannot be called if initSelection() is not defined\");\n                }\n\n                this.opts.initSelection(this.opts.element, function(data){\n                    var ids=$.map(data, self.id);\n                    self.setVal(ids);\n                    self.updateSelection(data);\n                    self.clearSearch();\n                    if (triggerChange) {\n                        self.triggerChange(self.buildChangeDetails(oldData, self.data()));\n                    }\n                });\n            }\n            this.clearSearch();\n        },\n\n        // multi\n        onSortStart: function() {\n            if (this.select) {\n                throw new Error(\"Sorting of elements is not supported when attached to <select>. Attach to <input type='hidden'/> instead.\");\n            }\n\n            // collapse search field into 0 width so its container can be collapsed as well\n            this.search.width(0);\n            // hide the container\n            this.searchContainer.hide();\n        },\n\n        // multi\n        onSortEnd:function() {\n\n            var val=[], self=this;\n\n            // show search and move it to the end of the list\n            this.searchContainer.show();\n            // make sure the search container is the last item in the list\n            this.searchContainer.appendTo(this.searchContainer.parent());\n            // since we collapsed the width in dragStarted, we resize it here\n            this.resizeSearch();\n\n            // update selection\n            this.selection.find(\".select2-search-choice\").each(function() {\n                val.push(self.opts.id($(this).data(\"select2-data\")));\n            });\n            this.setVal(val);\n            this.triggerChange();\n        },\n\n        // multi\n        data: function(values, triggerChange) {\n            var self=this, ids, old;\n            if (arguments.length === 0) {\n                 return this.selection\n                     .find(\".select2-search-choice\")\n                     .map(function() { return $(this).data(\"select2-data\"); })\n                     .get();\n            } else {\n                old = this.data();\n                if (!values) { values = []; }\n                ids = $.map(values, function(e) { return self.opts.id(e); });\n                this.setVal(ids);\n                this.updateSelection(values);\n                this.clearSearch();\n                if (triggerChange) {\n                    this.triggerChange(this.buildChangeDetails(old, this.data()));\n                }\n            }\n        }\n    });\n\n    $.fn.select2 = function () {\n\n        var args = Array.prototype.slice.call(arguments, 0),\n            opts,\n            select2,\n            method, value, multiple,\n            allowedMethods = [\"val\", \"destroy\", \"opened\", \"open\", \"close\", \"focus\", \"isFocused\", \"container\", \"dropdown\", \"onSortStart\", \"onSortEnd\", \"enable\", \"disable\", \"readonly\", \"positionDropdown\", \"data\", \"search\"],\n            valueMethods = [\"opened\", \"isFocused\", \"container\", \"dropdown\"],\n            propertyMethods = [\"val\", \"data\"],\n            methodsMap = { search: \"externalSearch\" };\n\n        this.each(function () {\n            if (args.length === 0 || typeof(args[0]) === \"object\") {\n                opts = args.length === 0 ? {} : $.extend({}, args[0]);\n                opts.element = $(this);\n\n                if (opts.element.get(0).tagName.toLowerCase() === \"select\") {\n                    multiple = opts.element.prop(\"multiple\");\n                } else {\n                    multiple = opts.multiple || false;\n                    if (\"tags\" in opts) {opts.multiple = multiple = true;}\n                }\n\n                select2 = multiple ? new MultiSelect2() : new SingleSelect2();\n                select2.init(opts);\n            } else if (typeof(args[0]) === \"string\") {\n\n                if (indexOf(args[0], allowedMethods) < 0) {\n                    throw \"Unknown method: \" + args[0];\n                }\n\n                value = undefined;\n                select2 = $(this).data(\"select2\");\n                if (select2 === undefined) return;\n\n                method=args[0];\n\n                if (method === \"container\") {\n                    value = select2.container;\n                } else if (method === \"dropdown\") {\n                    value = select2.dropdown;\n                } else {\n                    if (methodsMap[method]) method = methodsMap[method];\n\n                    value = select2[method].apply(select2, args.slice(1));\n                }\n                if (indexOf(args[0], valueMethods) >= 0\n                    || (indexOf(args[0], propertyMethods) && args.length == 1)) {\n                    return false; // abort the iteration, ready to return first matched value\n                }\n            } else {\n                throw \"Invalid arguments to select2 plugin: \" + args;\n            }\n        });\n        return (value === undefined) ? this : value;\n    };\n\n    // plugin defaults, accessible to users\n    $.fn.select2.defaults = {\n        width: \"copy\",\n        loadMorePadding: 0,\n        closeOnSelect: true,\n        openOnEnter: true,\n        containerCss: {},\n        dropdownCss: {},\n        containerCssClass: \"\",\n        dropdownCssClass: \"\",\n        formatResult: function(result, container, query, escapeMarkup) {\n            var markup=[];\n            markMatch(result.text, query.term, markup, escapeMarkup);\n            return markup.join(\"\");\n        },\n        formatSelection: function (data, container, escapeMarkup) {\n            return data ? escapeMarkup(data.text) : undefined;\n        },\n        sortResults: function (results, container, query) {\n            return results;\n        },\n        formatResultCssClass: function(data) {return undefined;},\n        formatSelectionCssClass: function(data, container) {return undefined;},\n        formatNoMatches: function () { return \"No matches found\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Please enter \" + n + \" more character\" + (n == 1? \"\" : \"s\"); },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Please delete \" + n + \" character\" + (n == 1? \"\" : \"s\"); },\n        formatSelectionTooBig: function (limit) { return \"You can only select \" + limit + \" item\" + (limit == 1 ? \"\" : \"s\"); },\n        formatLoadMore: function (pageNumber) { return \"Loading more results...\"; },\n        formatSearching: function () { return \"Searching...\"; },\n        minimumResultsForSearch: 0,\n        minimumInputLength: 0,\n        maximumInputLength: null,\n        maximumSelectionSize: 0,\n        id: function (e) { return e.id; },\n        matcher: function(term, text) {\n            return stripDiacritics(''+text).toUpperCase().indexOf(stripDiacritics(''+term).toUpperCase()) >= 0;\n        },\n        separator: \",\",\n        tokenSeparators: [],\n        tokenizer: defaultTokenizer,\n        escapeMarkup: defaultEscapeMarkup,\n        blurOnChange: false,\n        selectOnBlur: false,\n        adaptContainerCssClass: function(c) { return c; },\n        adaptDropdownCssClass: function(c) { return null; },\n        nextSearchTerm: function(selectedObject, currentSearchTerm) { return undefined; }\n    };\n\n    $.fn.select2.ajaxDefaults = {\n        transport: $.ajax,\n        params: {\n            type: \"GET\",\n            cache: false,\n            dataType: \"json\"\n        }\n    };\n\n    // exports\n    window.Select2 = {\n        query: {\n            ajax: ajax,\n            local: local,\n            tags: tags\n        }, util: {\n            debounce: debounce,\n            markMatch: markMatch,\n            escapeMarkup: defaultEscapeMarkup,\n            stripDiacritics: stripDiacritics\n        }, \"class\": {\n            \"abstract\": AbstractSelect2,\n            \"single\": SingleSelect2,\n            \"multi\": MultiSelect2\n        }\n    };\n\n}(jQuery));"
  },
  {
    "path": "public/admin/js/skycons/skycons.active.js",
    "content": "(function ($) {\n \"use strict\";\n\t\t\n\t\t/* BEGIN SVG WEATHER ICON */\n            if (typeof Skycons !== 'undefined'){\n                var icons = new Skycons(\n                        {\"color\": \"#fff\"},\n                        {\"resizeClear\": true}\n                        ),\n                        list  = [\n                            \"clear-day\", \"clear-night\", \"partly-cloudy-day\",\n                            \"partly-cloudy-night\", \"cloudy\", \"rain\", \"sleet\", \"snow\", \"snow2\", \"wind\",\n                            \"fog\"\n                        ],\n                        i;\n\n                for(i = list.length; i--; )\n                    icons.set(list[i], list[i]);\n                icons.play();\n            };\n\t\t \n \n})(jQuery); "
  },
  {
    "path": "public/admin/js/sparkline/sparkline-active.js",
    "content": "(function ($) {\n \"use strict\";\n \n\t$(\"#sparkline1\").sparkline([34, 43, 43, 35, 44, 32, 44, 52, 25], {\n        type: 'line',\n        lineColor: '#17997f',\n\t\tlineWidth: 1,\n\t\tbarSpacing: '100px',\n        fillColor: '#03a9f4',\n    });\n    $(\"#sparkline2\").sparkline([-4, -2, 2, 0, 4, 5, 6, 7], {\n        type: 'bar',\n        barColor: '#03a9f4',\n        negBarColor: '#303030'});\n\n    $(\"#sparkline3\").sparkline([1, 1, 2], {\n        type: 'pie',\n        sliceColors: ['#03a9f4', '#303030', '#ff9999']});\n\n    $(\"#sparklinedask1\").sparkline([1, 3, 2], {\n        type: 'pie',\n\t\twidth: '80',\n            height: '80',\n        sliceColors: ['#03a9f4', '#303030', '#ff9999']});\n\n    $(\"#sparklinedask2\").sparkline([1, 1, 2], {\n        type: 'pie',\n\t\twidth: '80',\n            height: '80',\n        sliceColors: ['#03a9f4', '#303030', '#ff9999']});\n\n    $(\"#sparkline4\").sparkline([34, 43, 43, 35, 44, 32, 15, 22, 46, 33, 86, 54, 73, 53, 12, 53, 23, 65, 23, 63, 53, 42, 34, 56, 76, 15, 54, 23, 44], {\n        type: 'line',\n        lineColor: '#03a9f4',\n        fillColor: '#ffffff',\n    });\n\n    $(\"#sparkline5\").sparkline([1, 1, 0, 1, 1, 1, 1, 1, -1, -2, -3, -4], {\n        type: 'tristate',\n        posBarColor: '#03a9f4',\n        negBarColor: '#303030'});\n\n\n    $(\"#sparkline6\").sparkline([4, 6, 7, 7, 4, 3, 2, 1, 4, 4, 5, 6, 3, 4, 5, 8, 7, 6, 9, 3, 2, 4, 1, 5, 6, 4, 3, 7, ], {\n        type: 'discrete',\n        lineColor: '#03a9f4'});\n\n    $(\"#sparkline7\").sparkline([52, 12, 44], {\n        type: 'pie',\n        height: '150px',\n        sliceColors: ['#03a9f4', '#303030', '#e4f0fb']});\n\n    $(\"#sparkline8\").sparkline([5, 6, 7, 2, 0, 4, 2, 4, 5, 7, 2, 4, 12, 14, 4, 2, 14, 12, 7], {\n        type: 'bar',\n        barWidth: 8,\n        height: '150px',\n        barColor: '#03a9f4',\n        negBarColor: '#303030'});\n\n    $(\"#sparkline9\").sparkline([34, 43, 43, 35, 44, 32, 15, 22, 46, 33, 86, 54, 73, 53, 12, 53, 23, 65, 23, 63, 53, 42, 34, 56, 76, 15, 54, 23, 44], {\n        type: 'line',\n        lineWidth: 1,\n        width: '150px',\n        height: '150px',\n        lineColor: '#999',\n        fillColor: '#03a9f4',\n    });\n\t\n\t $('.sparklineadminpro').sparkline([ [1], [2], [3], [4, 2], [3], [5, 3] ], { type: 'bar', barColor: '#03a9f4',\n        negBarColor: '#303030',});\n\t\n\t\n\t\n\n\tvar sparklineCharts = function(){\n\t\t\tvar gradientColors = ['green', 'orange', 'red'];\n\t\t $(\"#sparkline22\").sparkline([34, 43, 43, 35, 44, 32, 44, 52], {\n\t\t\t type: 'line',\n\t\t\t width: '100%',\n\t\t\t height: '60',\n\t\t\t lineColor: '#1ab394',\n             fillColor: '#f4f4f4'\n\t\t });\n\n\t\t $(\"#sparkline23\").sparkline([24, 43, 43, 55, 44, 62, 44, 72], {\n\t\t\t type: 'line',\n\t\t\t width: '100%',\n\t\t\t height: '60',\n\t\t\t lineColor: '#1ab394',\n\t\t\t fillColor: \"#ebebeb\"\n\t\t });\n\n\t\t $(\"#sparkline24\").sparkline([74, 43, 23, 55, 54, 32, 24, 12], {\n\t\t\t type: 'line',\n\t\t\t width: '100%',\n\t\t\t height: '60',\n\t\t\t lineColor: '#ed5565',\n\t\t\t fillColor: \"#ebebeb\"\n\t\t });\n\n\t\t $(\"#sparkline25\").sparkline([24, 43, 33, 55, 64, 72, 44, 22], {\n\t\t\t type: 'line',\n\t\t\t width: '100%',\n\t\t\t height: '60',\n\t\t\t lineColor: '#ed5565',\n\t\t\t fillColor: \"#ebebeb\"\n\t\t });\n\n\t\t $(\"#sparkline51\").sparkline([1, 4], {\n\t\t\t type: 'pie',\n\t\t\t height: '140',\n\t\t\t sliceColors: ['#1ab394', '#ebebeb']\n\t\t });\n\n\t\t $(\"#sparkline52\").sparkline([5, 3], {\n\t\t\t type: 'pie',\n\t\t\t height: '140',\n\t\t\t sliceColors: ['#1ab394', '#ebebeb']\n\t\t });\n\n\t\t $(\"#sparkline53\").sparkline([2, 2], {\n\t\t\t type: 'pie',\n\t\t\t height: '140',\n\t\t\t sliceColors: ['#ed5565', '#ebebeb']\n\t\t });\n\n\t\t $(\"#sparkline54\").sparkline([2, 3], {\n\t\t\t type: 'pie',\n\t\t\t height: '140',\n\t\t\t sliceColors: ['#ed5565', '#ebebeb']\n\t\t });\n\t};\n\n\tvar sparkResize;\n\n\t$(window).resize(function(e) {\n\t\tclearTimeout(sparkResize);\n\t\tsparkResize = setTimeout(sparklineCharts, 500);\n\t});\n\n\tsparklineCharts();\n\n\n\n\t\n\t\n})(jQuery); "
  },
  {
    "path": "public/admin/js/summernote-active.js",
    "content": "(function ($) {\n \"use strict\";\n\t$('#summernote1').summernote({\n\t\theight: 200,\n\t});\n\t$('#summernote2').summernote({\n\t\theight: 200,\n\t});\n\t$('#summernote3').summernote({\n\t\theight: 200,\n\t});\n\t$('#summernote4').summernote({\n\t\theight: 200,\n\t});\n\t$('#summernote5').summernote({\n\t\theight: 400,\n\t});\n \n})(jQuery); "
  },
  {
    "path": "public/admin/js/switcher/styleswitch.js",
    "content": "/**\n* Styleswitch stylesheet switcher built on jQuery\n* Under an Attribution, Share Alike License\n* By Kelvin Luck ( http://www.kelvinluck.com/ )\n**/\n\n(function($){\n\t\"use strict\";\n\t$(document).on('ready', function() {\n\t\t$('.styleswitch').click(function()\n\t\t{\n\t\t\tswitchStylestyle(this.getAttribute(\"data-rel\"));\n\t\t\treturn false;\n\t\t});\n\t\tvar c = readCookie('style');\n\t\tif (c) switchStylestyle(c);\n\t});\n\n\tfunction switchStylestyle(styleName)\n\t{\n\t\t$('link[rel*=style][title]').each(function(i)  \n\t\t{\n\t\t\tthis.disabled = true;\n\t\t\tif (this.getAttribute('title') == styleName) this.disabled = false;\n\t\t});\n\t\tcreateCookie('style', styleName, 365);\n\t}\n\t\n\t// cookie functions http://www.quirksmode.org/js/cookies.html\n\t\tfunction createCookie(name,value,days)\n\t\t{\n\t\t\tif (days)\n\t\t\t{\n\t\t\t\tvar date = new Date();\n\t\t\t\tdate.setTime(date.getTime()+(days*24*60*60*1000));\n\t\t\t\tvar expires = \"; expires=\"+date.toGMTString();\n\t\t\t}\n\t\t\telse var expires = \"\";\n\t\t\tdocument.cookie = name+\"=\"+value+expires+\"; path=/\";\n\t\t}\n\t\tfunction readCookie(name)\n\t\t{\n\t\t\tvar nameEQ = name + \"=\";\n\t\t\tvar ca = document.cookie.split(';');\n\t\t\tfor(var i=0;i < ca.length;i++)\n\t\t\t{\n\t\t\t\tvar c = ca[i];\n\t\t\t\twhile (c.charAt(0)==' ') c = c.substring(1,c.length);\n\t\t\t\tif (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\t\tfunction eraseCookie(name)\n\t\t{\n\t\t\tcreateCookie(name,\"\",-1);\n\t\t}\n\t\t// /cookie functions\n\t\t\n\t\n})(jQuery);\n\n\n"
  },
  {
    "path": "public/admin/js/switcher/switch-active.js",
    "content": "(function ($) {\n \"use strict\";\n \n\t/*------------------------------------\n\t\tColorSwitcher\n\t\t--------------------------------------*/\n\t\t$('.ec-handle').on('click', function(){\n\t\t\t$('.ec-colorswitcher').trigger('click')\n\t\t\t$(this).toggleClass('btnclose');\n\t\t\t$('.ec-colorswitcher') .toggleClass('sidebarmain');\n\t\t\treturn false;\n\t\t});\n\t\t$('.ec-boxed,.pattren-wrap a,.background-wrap a').on('click', function(){\n\t\t\t$('.as-mainwrapper').addClass('wrapper-boxed');\n\t\t\t$('body').addClass('wrapper-boxed-body');\n\t\t\t$('.as-mainwrapper').removeClass('wrapper-wide');\n\t\t});\n\t\t$('.ec-wide').on('click', function(){\n\t\t\t$('.as-mainwrapper').addClass('wrapper-wide');\n\t\t\t$('.as-mainwrapper').removeClass('wrapper-boxed');\n\t\t\t$('body').removeClass('wrapper-boxed-body');\n\t\t});\n\t\t\n \n})(jQuery); "
  },
  {
    "path": "public/admin/js/todo/jquery.todo.js",
    "content": "/**\n* Theme: Minton Admin Template\n* Author: Coderthemes\n* Todo - Application\n*/\n\n!function($) {\n    \"use strict\";\n\n    var TodoApp = function() {\n        this.$body = $(\"body\"),\n        this.$todoContainer = $('#todo-container'),\n        this.$todoMessage = $(\"#todo-message\"),\n        this.$todoRemaining = $(\"#todo-remaining\"),\n        this.$todoTotal = $(\"#todo-total\"),\n        this.$archiveBtn = $(\"#btn-archive\"),\n        this.$todoList = $(\"#todo-list\"),\n        this.$todoDonechk = \".todo-done\",\n        this.$todoForm = $(\"#todo-form\"),\n        this.$todoInput = $(\"#todo-input-text\"),\n        this.$todoBtn = $(\"#todo-btn-submit\"),\n\n        this.$todoData = [\n        {\n            'id': '1',\n            'text': 'Design One page theme',\n            'done': false\n        },\n        {\n            'id': '2',\n            'text': 'Build a js based app',\n            'done': true\n        },\n        {\n            'id': '3',\n            'text': 'Creating component page',\n            'done': true\n        },\n        {\n            'id': '4',\n            'text': 'Testing??',\n            'done': true\n        },\n        {\n            'id': '5',\n            'text': 'Hehe!! This is looks cool!',\n            'done': false\n        },\n        {\n            'id': '6',\n            'text': 'Build an angular app',\n            'done': true\n        }];\n\n        this.$todoCompletedData = [];\n        this.$todoUnCompletedData = [];\n    };\n\n    //mark/unmark - you can use ajax to save data on server side\n    TodoApp.prototype.markTodo = function(todoId, complete) {\n       for(var count=0; count<this.$todoData.length;count++) {\n            if(this.$todoData[count].id == todoId) {\n                this.$todoData[count].done = complete;\n            }\n       }\n    },\n    //adds new todo\n    TodoApp.prototype.addTodo = function(todoText) {\n        this.$todoData.push({'id': this.$todoData.length, 'text': todoText, 'done': false});\n        //regenerate list\n        this.generate();\n    },\n    //Archives the completed todos\n    TodoApp.prototype.archives = function() {\n    \tthis.$todoUnCompletedData = [];\n        for(var count=0; count<this.$todoData.length;count++) {\n            //geretaing html\n            var todoItem = this.$todoData[count];\n            if(todoItem.done == true) {\n                this.$todoCompletedData.push(todoItem);\n            } else {\n                this.$todoUnCompletedData.push(todoItem);\n            }\n        }\n        this.$todoData = [];\n        this.$todoData = [].concat(this.$todoUnCompletedData);\n        //regenerate todo list\n        this.generate();\n    },\n    //Generates todos\n    TodoApp.prototype.generate = function() {\n        //clear list\n        this.$todoList.html(\"\");\n        var remaining = 0;\n        for(var count=0; count<this.$todoData.length;count++) {\n            //geretaing html\n            var todoItem = this.$todoData[count];\n            if(todoItem.done == true)\n                this.$todoList.prepend('<li class=\"list-group-item\"><div class=\"checkbox checkbox-primary\"><input class=\"todo-done\" id=\"' + todoItem.id + '\" type=\"checkbox\" checked><label for=\"' + todoItem.id + '\">' + todoItem.text + '</label></div></li>');\n            else {\n                remaining = remaining + 1;\n                this.$todoList.prepend('<li class=\"list-group-item\"><div class=\"checkbox checkbox-primary\"><input class=\"todo-done\" id=\"' + todoItem.id + '\" type=\"checkbox\"><label for=\"' + todoItem.id + '\">' + todoItem.text + '</label></div></li>');\n            }\n        }\n\n        //set total in ui\n        this.$todoTotal.text(this.$todoData.length);\n        //set remaining\n        this.$todoRemaining.text(remaining);\n    },\n    //init todo app\n    TodoApp.prototype.init = function () {\n        var $this = this;\n        //generating todo list\n        this.generate();\n\n        //binding archive\n        this.$archiveBtn.on(\"click\", function(e) {\n        \te.preventDefault();\n            $this.archives();\n            return false;\n        });\n\n        //binding todo done chk\n        $(document).on(\"change\", this.$todoDonechk, function() {\n            if(this.checked) \n                $this.markTodo($(this).attr('id'), true);\n            else\n                $this.markTodo($(this).attr('id'), false);\n            //regenerate list\n            $this.generate();\n        });\n\n        //binding the new todo button\n        this.$todoBtn.on(\"click\", function() {\n            if ($this.$todoInput.val() == \"\" || typeof($this.$todoInput.val()) == 'undefined' || $this.$todoInput.val() == null) {\n                sweetAlert(\"Oops...\", \"You forgot to enter todo text\", \"error\");\n                $this.$todoInput.focus();\n            } else {\n                $this.addTodo($this.$todoInput.val());\n            }\n        });\n    },\n    //init TodoApp\n    $.TodoApp = new TodoApp, $.TodoApp.Constructor = TodoApp\n    \n}(window.jQuery),\n\n//initializing todo app\nfunction($) {\n    \"use strict\";\n    $.TodoApp.init()\n}(window.jQuery);"
  },
  {
    "path": "public/admin/js/touchspin/touchspin-active.js",
    "content": "(function ($) {\n \"use strict\";\n \n\t $(\".touchspin1\").TouchSpin({\n\t\tbuttondown_class: 'btn btn-white',\n\t\tbuttonup_class: 'btn btn-white'\n\t});\n\n\t$(\".touchspin2\").TouchSpin({\n\t\tmin: 0,\n\t\tmax: 100,\n\t\tstep: 0.1,\n\t\tdecimals: 2,\n\t\tboostat: 5,\n\t\tmaxboostedstep: 10,\n\t\tpostfix: '%',\n\t\tbuttondown_class: 'btn btn-white',\n\t\tbuttonup_class: 'btn btn-white'\n\t});\n\n\t$(\".touchspin3\").TouchSpin({\n\t\tverticalbuttons: true,\n\t\tbuttondown_class: 'btn btn-white',\n\t\tbuttonup_class: 'btn btn-white'\n\t});\n\n\n\t\n\t\n \n})(jQuery); "
  },
  {
    "path": "public/admin/js/tree-line/jstree.active.js",
    "content": "\n(function ($) {\n \"use strict\";\n\t\t\t\n\t\n$('#jstree1').jstree({\n            'core' : {\n                'check_callback' : true\n            },\n            'plugins' : [ 'types', 'dnd' ],\n            'types' : {\n                'default' : {\n                    'icon' : 'fa fa-folder'\n                },\n                'html' : {\n                    'icon' : 'fa fa-file-code-o'\n                },\n                'svg' : {\n                    'icon' : 'fa fa-file-picture-o'\n                },\n                'css' : {\n                    'icon' : 'fa fa-file-code-o'\n                },\n                'img' : {\n                    'icon' : 'fa fa-file-image-o'\n                },\n                'js' : {\n                    'icon' : 'fa fa-file-text-o'\n                }\n\n            }\n        });\n\n        $('#using_json').jstree({\n            'core' : {\n            'data' : [\n                'Empty Folder',\n                {\n                    'text': 'Resources',\n                    'state': {\n                        'opened': true\n                    },\n                    'children': [\n                        {\n                            'text': 'css',\n                            'children': [\n                                {\n                                    'text': 'animate.css', 'icon': 'none'\n                                },\n                                {\n                                    'text': 'bootstrap.css', 'icon': 'none'\n                                },\n                                {\n                                    'text': 'main.css', 'icon': 'none'\n                                },\n                                {\n                                    'text': 'style.css', 'icon': 'none'\n                                }\n                            ],\n                            'state': {\n                                'opened': true\n                            }\n                        },\n                        {\n                            'text': 'js',\n                            'children': [\n                                {\n                                    'text': 'bootstrap.js', 'icon': 'none'\n                                },\n                                {\n                                    'text': 'inspinia.min.js', 'icon': 'none'\n                                },\n                                {\n                                    'text': 'jquery.min.js', 'icon': 'none'\n                                },\n                                {\n                                    'text': 'jsTree.min.js', 'icon': 'none'\n                                },\n                                {\n                                    'text': 'custom.min.js', 'icon': 'none'\n                                }\n                            ],\n                            'state': {\n                                'opened': true\n                            }\n                        },\n                        {\n                            'text': 'html',\n                            'children': [\n                                {\n                                    'text': 'layout.html', 'icon': 'none'\n                                },\n                                {\n                                    'text': 'navigation.html', 'icon': 'none'\n                                },\n                                {\n                                    'text': 'navbar.html', 'icon': 'none'\n                                },\n                                {\n                                    'text': 'footer.html', 'icon': 'none'\n                                },\n                                {\n                                    'text': 'sidebar.html', 'icon': 'none'\n                                }\n                            ],\n                            'state': {\n                                'opened': true\n                            }\n                        }\n                    ]\n                },\n                'Fonts',\n                'Images',\n                'Scripts',\n                'Templates',\n            ]\n        } });\n\t\n\t\n})(jQuery); \n\n"
  },
  {
    "path": "public/admin/js/typeahead.js",
    "content": "$(function () {\n   \n    module(\"typeahead\", {\n        setup: function(){\n            sfx = $('#qunit-fixture'),\n            fx = $('#async-fixture');               \n            $.support.transition = false;\n        }\n    });  \n\n    asyncTest(\"should load correct value and save new entered text (source as objects)\", function () {\n        var v = 2, \n          e = $('<a href=\"#\" data-pk=\"1\" data-name=\"text1\" data-type=\"typeahead\" data-value=\"'+v+'\" data-url=\"post.php\"></a>').appendTo(fx).editable({\n            source: groups,\n            typeahead: {\n               items: 5\n            }     \n          }),\n          newText = 'adm';\n          \n        \n        equal(e.text(), groups[v], 'autotext ok');    \n        equal(e.data().editable.value, v, 'initial value ok');    \n\n        e.click();\n        var p = tip(e), \n           $input = p.find('input[type=text]');\n           \n        ok(p.is(':visible'), 'popup visible');\n        ok($input.length, 'input exists');\n        equal($input.val(), groups[v], 'input contain correct text');\n        equal($input.data('value'), v, 'input contain correct data-value');\n        ok($input.typeahead, 'typeahead applied to input');\n        \n        $input.val(newText).keyup();\n        \n        ok(p.find('.typeahead.dropdown-menu').is(':visible'), 'dropdown visible');\n        \n        //select `Admin`\n        v = 5;\n        \n        ok(p.find('.typeahead.dropdown-menu').find('li').length, 'active item exists');\n        p.find('.typeahead.dropdown-menu').find('li').mouseover().click();\n        \n        equal($input.val(), groups[v], 'input contain correct text');        \n        p.find('form').submit(); \n                                 \n        setTimeout(function() {\n           ok(!p.is(':visible'), 'popup closed');\n           equal(e.data('editable').value, v, 'new text saved to value');\n           equal(e.text(), groups[v], 'new text shown'); \n\n           e.click();\n           p = tip(e), \n           $input = p.find('input[type=text]');\n                      \n           $input.val('not_matched_text').keyup();\n           ok(!p.find('.typeahead.dropdown-menu').is(':visible'), 'dropdown not visible');\n\n           p.find('form').submit(); \n           setTimeout(function() {\n               equal(e.data('editable').value, null, 'null saved to value');\n               equal(e.text(), e.data().editable.options.emptytext, 'emptytext shown'); \n           \n               e.remove();    \n               start();  \n           }, timeout);                     \n        }, timeout);                     \n    });      \n    \n    \n    asyncTest(\"should load correct value and save new entered text (source as strings)\", function () {\n        var v = 'a', \n          e = $('<a href=\"#\" data-pk=\"1\" data-name=\"text1\" data-type=\"typeahead\" data-value=\"'+v+'\" data-url=\"post.php\"></a>').appendTo(fx).editable({\n            source: ['a', 'ab', 'c']\n          });\n          \n        \n        equal(e.text(), v, 'autotext ok');    \n        equal(e.data().editable.value, v, 'initial value ok');    \n\n        e.click();\n        var p = tip(e), \n           $input = p.find('input[type=text]');\n           \n        ok(p.is(':visible'), 'popup visible');\n        ok($input.length, 'input exists');\n        equal($input.val(), v, 'input contain correct text');\n        equal($input.data('value'), undefined, 'input not contain data-value');\n        ok($input.typeahead, 'typeahead applied to input');\n        \n        $input.val('b').keyup();\n        ok(p.find('.typeahead.dropdown-menu').is(':visible'), 'dropdown visible');\n        \n        //select `ab`\n        v = 'ab';\n        p.find('.typeahead.dropdown-menu').find('li').mouseover().click();\n        \n        equal($input.val(), v, 'input contain correct text');        \n        p.find('form').submit(); \n                                 \n        setTimeout(function() {\n           ok(!p.is(':visible'), 'popup closed');\n           equal(e.data('editable').value, v, 'new text saved to value');\n           equal(e.text(), v, 'new text shown'); \n\n           e.click();\n           p = tip(e), \n           $input = p.find('input[type=text]');\n                      \n           v = 'not_matched_text';           \n           $input.val(v).keyup();\n           ok(!p.find('.typeahead.dropdown-menu').is(':visible'), 'dropdown not visible');\n\n           p.find('form').submit(); \n           setTimeout(function() {\n               equal(e.data('editable').value, v, 'new text saved to value');\n               equal(e.text(), v, 'new text shown'); \n               e.remove();    \n               start();  \n           }, timeout);                     \n        }, timeout);                     \n    });          \n    \n});        "
  },
  {
    "path": "public/admin/js/typeaheadjs.js",
    "content": "$(function () {\n   \n    module(\"typeaheadjs\", {\n        setup: function(){\n            sfx = $('#qunit-fixture'),\n            fx = $('#async-fixture');               \n            $.support.transition = false;\n        }\n    });  \n\n    asyncTest(\"should load correct value and save new entered text \", function () {\n        var v = 'ru', \n          e = $('<a href=\"#\" data-pk=\"1\" data-name=\"text1\" data-type=\"typeaheadjs\" data-url=\"post.php\"></a>').appendTo(fx).editable({\n            value: v,\n            typeahead: {\n                name: 'country',\n                local: [\n                    {value: 'ru', tokens: ['Russia']}, \n                    {value: 'gb', tokens: ['Great Britain']}, \n                    {value: 'us', tokens: ['United States']}\n                ],\n                template: function(item) {\n                    return item.tokens[0] + ' (' + item.value + ')'; \n                } \n            }   \n          }),\n          nv = 'gb',\n          newText = 'G';\n          \n        equal(e.data().editable.value, v, 'initial value ok');    \n\n        e.click();\n        var p = tip(e); \n        var $input = p.find('input.tt-query');\n           \n        ok(p.is(':visible'), 'popup visible');\n        ok($input.length, 'input exists');\n        equal($input.val(), v, 'input contains correct text');\n        ok($input.typeahead, 'typeahead applied to input');\n        \n        // can`t find way to trigger dropdown menu of typeahead\n        var ev = jQuery.Event( \"keydown.tt\", { keyCode: 64 } );\n        $input.val(nv).trigger('queryChanged');\n                   \n        /*\n        ok(p.find('.tt-dropdown-menu').is(':visible'), 'dropdown visible');\n        equal(p.find('tt-suggestion').length, 1, 'suggestion exists');\n        p.find('tt-suggestion:eq(0)').mouseover().click();\n        equal($input.val(), nv, 'input contain correct text');\n        */\n                \n        p.find('form').submit(); \n   \n                                 \n        setTimeout(function() {\n           ok(!p.is(':visible'), 'popup closed');\n           equal(e.data('editable').value, nv, 'new text saved to value');\n           equal(e.text(), nv, 'new text shown'); \n\n           e.remove();    \n           start();                     \n        }, timeout);                     \n    });      \n    \n    test(\"autosubmit \", function () {\n        var v = 'ru', \n          e = $('<a href=\"#\" data-name=\"text1\" data-type=\"typeaheadjs\"></a>').appendTo(sfx).editable({\n            value: v,\n            showbuttons: false,\n            typeahead: {\n                name: 'country',\n                local: [\n                    {value: 'ru', tokens: ['Russia']}, \n                    {value: 'gb', tokens: ['Great Britain']}, \n                    {value: 'us', tokens: ['United States']}\n                ],\n                template: function(item) {\n                    return item.tokens[0] + ' (' + item.value + ')'; \n                } \n            }   \n          }),\n          newText = 'abc';\n          \n         e.click();\n         var p = tip(e); \n         var $input = p.find('input.tt-query'); \n         \n         // simutale <enter>\n         var ev = jQuery.Event(\"keydown\");\n         ev.which = 13;\n         $input.val(newText).trigger(ev);\n         \n         ok(!p.is(':visible'), 'popup closed');\n         equal(e.data('editable').value, newText, 'new text saved to value');\n         equal(e.text(), newText, 'new text shown');           \n    });\n\n    \n});"
  },
  {
    "path": "public/admin/js/xediable-active.js",
    "content": "(function ($) {\n \"use strict\";\n \n //defaults\n   $.fn.editable.defaults.url = '/post'; \n\t\n    //enable / disable\n   $('#enable').click(function() {\n       $('#user .editable').editable('toggleDisabled');\n   });    \n   \n   $('#meeting_start').editable({\n        format: 'yyyy-mm-dd hh:ii',    \n        viewformat: 'dd/mm/yyyy hh:ii',\n        validate: function(v) {\n           if(v && v.getDate() == 10) return 'Day cant be 10!';\n        },\n        datetimepicker: {\n           todayBtn: 'linked',\n           weekStart: 1\n        }        \n    });            \n    \n\t \n    \n    //editables \n    $('#username').editable({\n           url: '/post',\n           type: 'text',\n           pk: 1,\n           name: 'username',\n           title: 'Enter username'\n    });\n    \n    $('#firstname').editable({\n        validate: function(value) {\n           if($.trim(value) == '') return 'This field is required';\n        }\n    });\n    \n    $('#sex').editable({\n        prepend: \"not selected\",\n        source: [\n            {value: 1, text: 'Male'},\n            {value: 2, text: 'Female'}\n        ],\n        display: function(value, sourceData) {\n             var colors = {\"\": \"gray\", 1: \"green\", 2: \"blue\"},\n                 elem = $.grep(sourceData, function(o){return o.value == value;});\n                 \n             if(elem.length) {    \n                 $(this).text(elem[0].text).css(\"color\", colors[value]); \n             } else {\n                 $(this).empty(); \n             }\n        }   \n    });    \n    \n    $('#status').editable();   \n    \n    $('#group').editable({\n       showbuttons: false \n    });    \n    \n    $('#group1').editable({\n       showbuttons: false \n    });   \n    $('#group2').editable({\n       showbuttons: false \n    });   \n    $('#group3').editable({\n       showbuttons: false \n    });   \n    $('#group4').editable({\n       showbuttons: false \n    });   \n    $('#group5').editable({\n       showbuttons: false \n    });   \n\t\n    $('#vacation').editable({\n        datepicker: {\n            todayBtn: 'linked'\n        } \n    });  \n        \n     $('#dob').editable();  \n    $('#event').editable({\n        placement: 'right',\n        combodate: {\n            firstItem: 'name'\n        }\n    });    \n    \n    \n    $('#comments').editable({\n        showbuttons: 'bottom'\n    }); \n    \n    $('#note').editable(); \n    $('#pencil').on('click', function(e) {\n        e.stopPropagation();\n        e.preventDefault();\n        $('#note').editable('toggle');\n   });   \n   \n   \n   \n   $('#fruits').editable({\n       pk: 1,\n       limit: 3,\n       source: [\n        {value: 1, text: 'banana'},\n        {value: 2, text: 'peach'},\n        {value: 3, text: 'apple'},\n        {value: 4, text: 'watermelon'},\n        {value: 5, text: 'orange'}\n       ]\n    }); \n      \n    $('#tags').editable({\n        inputclass: 'input-large',\n        select2: {\n            tags: ['html', 'javascript', 'css', 'ajax'],\n            tokenSeparators: [\",\", \" \"]\n        }\n    });   \n\n    var countries = [];\n    $.each({\"BD\": \"Bangladesh\", \"BE\": \"Belgium\", \"BF\": \"Burkina Faso\", \"BG\": \"Bulgaria\", \"BA\": \"Bosnia and Herzegovina\", \"BB\": \"Barbados\", \"WF\": \"Wallis and Futuna\", \"BL\": \"Saint Bartelemey\", \"BM\": \"Bermuda\", \"BN\": \"Brunei Darussalam\", \"BO\": \"Bolivia\", \"BH\": \"Bahrain\", \"BI\": \"Burundi\", \"BJ\": \"Benin\", \"BT\": \"Bhutan\", \"JM\": \"Jamaica\", \"BV\": \"Bouvet Island\", \"BW\": \"Botswana\", \"WS\": \"Samoa\", \"BR\": \"Brazil\", \"BS\": \"Bahamas\", \"JE\": \"Jersey\", \"BY\": \"Belarus\", \"O1\": \"Other Country\", \"LV\": \"Latvia\", \"RW\": \"Rwanda\", \"RS\": \"Serbia\", \"TL\": \"Timor-Leste\", \"RE\": \"Reunion\", \"LU\": \"Luxembourg\", \"TJ\": \"Tajikistan\", \"RO\": \"Romania\", \"PG\": \"Papua New Guinea\", \"GW\": \"Guinea-Bissau\", \"GU\": \"Guam\", \"GT\": \"Guatemala\", \"GS\": \"South Georgia and the South Sandwich Islands\", \"GR\": \"Greece\", \"GQ\": \"Equatorial Guinea\", \"GP\": \"Guadeloupe\", \"JP\": \"Japan\", \"GY\": \"Guyana\", \"GG\": \"Guernsey\", \"GF\": \"French Guiana\", \"GE\": \"Georgia\", \"GD\": \"Grenada\", \"GB\": \"United Kingdom\", \"GA\": \"Gabon\", \"SV\": \"El Salvador\", \"GN\": \"Guinea\", \"GM\": \"Gambia\", \"GL\": \"Greenland\", \"GI\": \"Gibraltar\", \"GH\": \"Ghana\", \"OM\": \"Oman\", \"TN\": \"Tunisia\", \"JO\": \"Jordan\", \"HR\": \"Croatia\", \"HT\": \"Haiti\", \"HU\": \"Hungary\", \"HK\": \"Hong Kong\", \"HN\": \"Honduras\", \"HM\": \"Heard Island and McDonald Islands\", \"VE\": \"Venezuela\", \"PR\": \"Puerto Rico\", \"PS\": \"Palestinian Territory\", \"PW\": \"Palau\", \"PT\": \"Portugal\", \"SJ\": \"Svalbard and Jan Mayen\", \"PY\": \"Paraguay\", \"IQ\": \"Iraq\", \"PA\": \"Panama\", \"PF\": \"French Polynesia\", \"BZ\": \"Belize\", \"PE\": \"Peru\", \"PK\": \"Pakistan\", \"PH\": \"Philippines\", \"PN\": \"Pitcairn\", \"TM\": \"Turkmenistan\", \"PL\": \"Poland\", \"PM\": \"Saint Pierre and Miquelon\", \"ZM\": \"Zambia\", \"EH\": \"Western Sahara\", \"RU\": \"Russian Federation\", \"EE\": \"Estonia\", \"EG\": \"Egypt\", \"TK\": \"Tokelau\", \"ZA\": \"South Africa\", \"EC\": \"Ecuador\", \"IT\": \"Italy\", \"VN\": \"Vietnam\", \"SB\": \"Solomon Islands\", \"EU\": \"Europe\", \"ET\": \"Ethiopia\", \"SO\": \"Somalia\", \"ZW\": \"Zimbabwe\", \"SA\": \"Saudi Arabia\", \"ES\": \"Spain\", \"ER\": \"Eritrea\", \"ME\": \"Montenegro\", \"MD\": \"Moldova, Republic of\", \"MG\": \"Madagascar\", \"MF\": \"Saint Martin\", \"MA\": \"Morocco\", \"MC\": \"Monaco\", \"UZ\": \"Uzbekistan\", \"MM\": \"Myanmar\", \"ML\": \"Mali\", \"MO\": \"Macao\", \"MN\": \"Mongolia\", \"MH\": \"Marshall Islands\", \"MK\": \"Macedonia\", \"MU\": \"Mauritius\", \"MT\": \"Malta\", \"MW\": \"Malawi\", \"MV\": \"Maldives\", \"MQ\": \"Martinique\", \"MP\": \"Northern Mariana Islands\", \"MS\": \"Montserrat\", \"MR\": \"Mauritania\", \"IM\": \"Isle of Man\", \"UG\": \"Uganda\", \"TZ\": \"Tanzania, United Republic of\", \"MY\": \"Malaysia\", \"MX\": \"Mexico\", \"IL\": \"Israel\", \"FR\": \"France\", \"IO\": \"British Indian Ocean Territory\", \"FX\": \"France, Metropolitan\", \"SH\": \"Saint Helena\", \"FI\": \"Finland\", \"FJ\": \"Fiji\", \"FK\": \"Falkland Islands (Malvinas)\", \"FM\": \"Micronesia, Federated States of\", \"FO\": \"Faroe Islands\", \"NI\": \"Nicaragua\", \"NL\": \"Netherlands\", \"NO\": \"Norway\", \"NA\": \"Namibia\", \"VU\": \"Vanuatu\", \"NC\": \"New Caledonia\", \"NE\": \"Niger\", \"NF\": \"Norfolk Island\", \"NG\": \"Nigeria\", \"NZ\": \"New Zealand\", \"NP\": \"Nepal\", \"NR\": \"Nauru\", \"NU\": \"Niue\", \"CK\": \"Cook Islands\", \"CI\": \"Cote d'Ivoire\", \"CH\": \"Switzerland\", \"CO\": \"Colombia\", \"CN\": \"China\", \"CM\": \"Cameroon\", \"CL\": \"Chile\", \"CC\": \"Cocos (Keeling) Islands\", \"CA\": \"Canada\", \"CG\": \"Congo\", \"CF\": \"Central African Republic\", \"CD\": \"Congo, The Democratic Republic of the\", \"CZ\": \"Czech Republic\", \"CY\": \"Cyprus\", \"CX\": \"Christmas Island\", \"CR\": \"Costa Rica\", \"CV\": \"Cape Verde\", \"CU\": \"Cuba\", \"SZ\": \"Swaziland\", \"SY\": \"Syrian Arab Republic\", \"KG\": \"Kyrgyzstan\", \"KE\": \"Kenya\", \"SR\": \"Suriname\", \"KI\": \"Kiribati\", \"KH\": \"Cambodia\", \"KN\": \"Saint Kitts and Nevis\", \"KM\": \"Comoros\", \"ST\": \"Sao Tome and Principe\", \"SK\": \"Slovakia\", \"KR\": \"Korea, Republic of\", \"SI\": \"Slovenia\", \"KP\": \"Korea, Democratic People's Republic of\", \"KW\": \"Kuwait\", \"SN\": \"Senegal\", \"SM\": \"San Marino\", \"SL\": \"Sierra Leone\", \"SC\": \"Seychelles\", \"KZ\": \"Kazakhstan\", \"KY\": \"Cayman Islands\", \"SG\": \"Singapore\", \"SE\": \"Sweden\", \"SD\": \"Sudan\", \"DO\": \"Dominican Republic\", \"DM\": \"Dominica\", \"DJ\": \"Djibouti\", \"DK\": \"Denmark\", \"VG\": \"Virgin Islands, British\", \"DE\": \"Germany\", \"YE\": \"Yemen\", \"DZ\": \"Algeria\", \"US\": \"United States\", \"UY\": \"Uruguay\", \"YT\": \"Mayotte\", \"UM\": \"United States Minor Outlying Islands\", \"LB\": \"Lebanon\", \"LC\": \"Saint Lucia\", \"LA\": \"Lao People's Democratic Republic\", \"TV\": \"Tuvalu\", \"TW\": \"Taiwan\", \"TT\": \"Trinidad and Tobago\", \"TR\": \"Turkey\", \"LK\": \"Sri Lanka\", \"LI\": \"Liechtenstein\", \"A1\": \"Anonymous Proxy\", \"TO\": \"Tonga\", \"LT\": \"Lithuania\", \"A2\": \"Satellite Provider\", \"LR\": \"Liberia\", \"LS\": \"Lesotho\", \"TH\": \"Thailand\", \"TF\": \"French Southern Territories\", \"TG\": \"Togo\", \"TD\": \"Chad\", \"TC\": \"Turks and Caicos Islands\", \"LY\": \"Libyan Arab Jamahiriya\", \"VA\": \"Holy See (Vatican City State)\", \"VC\": \"Saint Vincent and the Grenadines\", \"AE\": \"United Arab Emirates\", \"AD\": \"Andorra\", \"AG\": \"Antigua and Barbuda\", \"AF\": \"Afghanistan\", \"AI\": \"Anguilla\", \"VI\": \"Virgin Islands, U.S.\", \"IS\": \"Iceland\", \"IR\": \"Iran, Islamic Republic of\", \"AM\": \"Armenia\", \"AL\": \"Albania\", \"AO\": \"Angola\", \"AN\": \"Netherlands Antilles\", \"AQ\": \"Antarctica\", \"AP\": \"Asia/Pacific Region\", \"AS\": \"American Samoa\", \"AR\": \"Argentina\", \"AU\": \"Australia\", \"AT\": \"Austria\", \"AW\": \"Aruba\", \"IN\": \"India\", \"AX\": \"Aland Islands\", \"AZ\": \"Azerbaijan\", \"IE\": \"Ireland\", \"ID\": \"Indonesia\", \"UA\": \"Ukraine\", \"QA\": \"Qatar\", \"MZ\": \"Mozambique\"}, function(k, v) {\n        countries.push({id: k, text: v});\n    }); \n    $('#country').editable({\n        source: countries,\n        select2: {\n            width: 200,\n            placeholder: 'Select country',\n            allowClear: true\n        } \n    });      \n\n \n   \n   \n})(jQuery); "
  },
  {
    "path": "public/admin/style.css",
    "content": "/*-----------------------------------------------------------------------------------\n\n    Template Name: Adminpro Admin Template\n    Template URI: http://SRTtheme.com/\n    Description: Adminpro is a responsive admin template based on the famous Bootstrap framework, made it with love in every backend, with tons of beautiful features ready to use.\n    Author: SRTtheme\n    Author URI: http://SRTtheme.com/\n    Version: 1.0\n\n-----------------------------------------------------------------------------------\n    \n    CSS INDEX\n    ===================\n\t\n    1. Theme Default CSS (body, link color, section etc)\n\t2. Header Customize CSS\n\t3. Header top Menu CSS\n\t4. Main Menu CSS\n\t5. Tinymce CSS\n\t6. Breadcome CSS\n\n-----------------------------------------------------------------------------------*/\n\n/*----------------------------------------*/\n/*  1.  Theme default CSS\n/*----------------------------------------*/\nhtml, body {font-family: 'Open Sans', sans-serif;font-weight:400;background: #03a9f0}\nhtml, body.materialdesign {background: #ebebeb}\n.floatleft {float:left}\n.floatright {float:right}\n.alignleft {float:left;margin-right:15px;margin-bottom: 15px}\n.alignright {float:right;margin-left:15px;margin-bottom: 15px}\n.aligncenter {display:block;margin:0 auto 15px}\na:focus {outline:0px solid}\nimg {max-width:100%;height:auto}\n.fix {overflow:hidden}\np {margin:0 0 15px;}\nh1, h2, h3, h4, h5, h6 {\n  margin: 0 0 10px;\n  font-weight:400;\n}\na {transition: all 0.3s ease 0s;text-decoration:none;}\na:hover {\n  color: #ec4445;\n  text-decoration: none;\n}\na:active, a:hover, a:focus {\n  outline: 0 none;\n  text-decoration:none;\n}\nul{\nlist-style: outside none none;\nmargin: 0;\npadding: 0\n}\n.clear{clear:both}\n@font-face {\n  font-family: 'adminpro-icon';\n  src:\n    url('fonts/adminpro-icon.ttf?4gzvyg') format('truetype'),\n    url('fonts/adminpro-icon.woff?4gzvyg') format('woff'),\n    url('fonts/adminpro-icon.svg?4gzvyg#adminpro-icon') format('svg');\n  font-weight: normal;\n  font-style: normal;\n}\n@font-face{font-family:\"summernote\";font-style:normal;font-weight:normal;src:url(\"fonts/summernote.eot?0d0d5fac99cc8774d89eb08b1a8323c4\");src:url(\"fonts/summernote.eot?#iefix\") format(\"embedded-opentype\"),url(\"fonts/summernote.woff?0d0d5fac99cc8774d89eb08b1a8323c4\") format(\"woff\"),url(\"fonts/summernote.ttf?0d0d5fac99cc8774d89eb08b1a8323c4\") format(\"truetype\")}\n.mg-tb-40{\n\tmargin:40px 0px;\n}\n.mg-t-40{\n\tmargin-top:40px;\n}\n.mg-b-40{\n\tmargin-bottom:40px;\n}\n.mg-tb-30{\n\tmargin:30px 0px;\n}\n.mg-t-30{\n\tmargin-top:30px;\n}\n.mg-b-30{\n\tmargin-bottom:30px;\n}\n.mg-t-50{\n\tmargin-top:50px;\n}\n.mg-b-10{\n\tmargin-bottom:15px;\n}\n.mg-b-20{\n\tmargin-bottom:20px;\n}\n.mg-b-22{\n\tmargin-bottom:22px;\n}\n.mg-b-23{\n\tmargin-bottom:23px;\n}\n.modal-area-button .mg-b-10{\n\tmargin-bottom:10px;\n}\n.nt-mg-b-30{\n\tmargin-bottom:30px;\n}\n.alert-title h2 {\n    font-size: 20px;\n}\n.alert-title p {\n    font-size: 14px;\n\tline-height:24px;\n}\n.admin-pro-accordion-wrap.admin-accordion-mg-bt-0, .menu-list-wrap.admin-menu-mg-bt-0, .admintab-wrap.admin-menu-mg-bt-0{\n\tmargin-bottom:0px;\n}\n.notification-list, .button-ad-wrap, .tinymce-single, .x-editable-list {\n    background: #fff;\n    padding: 20px;\n    border-top: 2px solid #303030;\n    border-radius: 4px;\n}\n.shadow-reset{\n\tbox-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.14);\n}\n/*----------------------------------------*/\n/*  2.  Header top Customize CSS\n/*----------------------------------------*/\n.header-top-menu .navbar-nav>li>a{\n\tpadding: 20px 20px;\n\tcolor: #fff;\n\tfont-size:14px;\n}\n.header-top-menu .navbar-nav>li a .angle-down-topmenu{\n\tmargin-left:4px;\n}\n.header-top-menu .navbar-nav>li>a:hover{\n\tcolor: #03a9f4;\n}\n.header-top-menu .navbar-nav>li .dropdown-menu a{\n\tpadding: 10px 20px;\n\tdisplay:block;\n\tcolor: #fff;\n}\n.header-top-menu .navbar-nav>li .dropdown-menu a:hover{\n\tbackground:#2b2a2a;\n}\n.header-top-menu .navbar-nav>li .dropdown-menu{\n\tborder: 0px solid #ccc; \n    border: 0px solid rgba(0,0,0,.15);\n\tbackground-color: #303030;\t\n}\n.header-right-info .navbar-nav>li .dropdown-menu{\n\tborder: 0px solid #ccc; \n    border: 0px solid rgba(0,0,0,.15);\n}\n.header-top-menu .nav>li>a:focus, .header-top-menu .nav>li>a:hover, .header-top-menu .nav>li>a:active {\n    text-decoration: none;\n    background-color: transparent;\n}\n.header-top-menu .nav .open>a, .header-top-menu .nav .open>a:focus, .header-top-menu .nav .open>a:hover{\n\tbackground-color: transparent;\n}\n.header-right-info .nav>li>a:focus, .header-right-info .nav>li>a:hover, .header-right-info .nav>li>a:active {\n    text-decoration: none;\n    background-color: transparent;\n}\n.header-right-info .nav.custon-set-tab>li>a:focus, .header-right-info .nav.custon-set-tab>li>a:hover, .header-right-info .nav.custon-set-tab>li>a:active {\n\tcolor:#03a9f4;\n}\n.header-right-info .nav.custon-set-tab>li>a {\n\tcolor:#fff;\n}\n.header-right-info .nav .open>a, .header-top-menu .nav .open>a:focus, .header-top-menu .nav .open>a:hover{\n\tbackground-color: transparent;\n}\n.header-right-info .navbar-nav{\n\tfloat:right;\n\tpadding:17px 0px;\n}\n/*----------------------------------------*/\n/*  3.  Header top Menu CSS\n/*----------------------------------------*/\n.admin-logo{\n\tpadding:10px 0px;\n}\n.header-top-area{\n\tbackground:#303030;\n}\n.header-top-menu ul.header-top-nav li{\n\tdisplay:inline-block;\n\tposition:relative;\n}\n.header-top-menu ul.header-top-nav li ul.dropdown-header-top{\n\tposition:absolute;\n\ttop:130%;\n\tleft:-10px;\n\twidth:200px;\n\tbackground:#303030;\n\topacity:0;\n\ttransition: all 0.5s ease 0s;\n\tz-index:999;\n\tpadding:10px 0px;\n}\n.header-top-menu ul.header-top-nav li ul.dropdown-header-top.in{\n\topacity:1;\n\ttop:100%;\n\ttransition: all 0.5s ease 0s;\n}\n.admin-project-icon{\n\tmargin-left:5px;\n\tfont-size:10px;\n\tcolor:#fff;\n}\n.header-top-menu ul.header-top-nav li .dropdown-header-top li{\n\tdisplay:block;\n}\n.header-top-menu ul.header-top-nav li .dropdown-header-top li a{\n\tdisplay:block;\n\tcolor:#fff;\n\tpadding:15px 20px;\n}\n.header-top-menu ul.header-top-nav li .dropdown-header-top li a:hover{\n\tbackground:#03a9f4;\n}\n.header-top-menu ul.header-top-nav li a{\n\tfont-size:14px;\n\tcolor:#fff;\n\ttext-decoration:none;\n\ttext-transform:capitalize;\n\tdisplay:block;\n\tpadding:18px 10px;\n}\n.header-right-info {\n\t\n}\n.header-right-info ul.header-right-menu li{\n\tdisplay:inline-block;\n}\n.header-right-info ul.header-right-menu li .author-message-top, .header-right-info ul.header-right-menu li .notification-author, .header-right-info ul.header-right-menu li .author-log{\n   position:absolute;\n   top:160%;\n   left:-70px;\n   width:330px;\n   background:#343434;\n   text-align:left;\n   opacity:0;\n   transition: all 0.5s ease 0s;\n   visibility:hidden;\n   z-index:999;\n}\n.header-right-info ul.header-right-menu li .dropdown-header-top.author-log{\n   width:200px;\n   padding:10px 0px;\n}\n.header-right-info ul.header-right-menu li .dropdown-header-top.author-log li{\n   display:block;\n}\n.header-right-info ul.header-right-menu li .dropdown-header-top.author-log li a{\n   padding:10px 20px;\n   display:block;\n   color:#fff;\n   font-size:14px;\n}\n.header-right-info ul.header-right-menu li .dropdown-header-top.author-log li .author-log-ic{\n   margin-right:10px;\n}\n.header-right-info ul.header-right-menu li .dropdown-header-top.author-log li a:hover, .header-right-info ul.header-right-menu li .dropdown-header-top.author-log li a:focus{\n   background:#2b2a2a;\n}\n.header-right-info ul.header-right-menu li .author-message-top{\n   left:-133px;\n}\n.header-right-info ul.header-right-menu li .notification-author{\n   left:-134px;\n}\n.header-right-info ul.header-right-menu li .author-log{\n   left:12px;\n}\n.header-right-info ul.header-right-menu li.open .author-message-top, .header-right-info ul.header-right-menu li.open .notification-author, .header-right-info ul.header-right-menu li.open .author-log{\n   opacity:1;\n   top:165%;\n   transition: all 0.5s ease 0s;\n   visibility:visible;\n}\n.header-right-info ul.header-right-menu li ul.message-menu li a, .header-right-info ul.header-right-menu li ul.notification-menu li a {\n\tmargin: 20px 20px;\n\tdisplay:block;\n\ttext-decoration:none;\n\tcolor:#fff;\n}\n.header-right-info ul.header-right-menu li .message-view a, .header-right-info ul.header-right-menu li .notification-view a{\n\tdisplay:block;\n\tcolor: #fff;\n\tfont-size: 14px;\n\tborder-top:1px solid #383838;\n\tpadding: 15px 0px;\n\ttext-align:center;\n\ttext-decoration:none;\n}\n.header-right-info ul.header-right-menu > li > a{\n\tdisplay:inline-block;\n\tcolor:#fff;\n\tpadding: 0px 0px 0px 20px;\n\tfont-size:22px;\n\ttext-decoration:none;\n\tposition:relative;\n}\n.indicator-nt{\n\tposition:absolute;\n\theight:5px;\n\twidth:5px;\n\tbackground:#03a9f4;\n\tborder-radius:50%;\n\ttop: -5px;\n    right: 0px;\n}\n.indicator-ms{\n\tposition:absolute;\n\theight:5px;\n\twidth:5px;\n\tbackground:#03a9f4;\n\tborder-radius:50%;\n\ttop: -5px;\n    right: -7px;\n}\n.header-right-info .admin-name{\n\tdisplay: inline-block;\n    color: #fff;\n    font-size: 16px;\n    position: relative;\n    top: -4px;\n\tmargin-left:5px;\n}\n.header-right-info .author-project-icon{\n    color: #fff;\n    font-size: 10px;\n    position: relative;\n    top: -4px;\n\tmargin-left:5px;\n}\n.header-right-info .message-author{\n   position:relative;\n}\n\n.header-right-info .author-message-top:before, .header-right-info .notification-author:before{\n\tposition: absolute;\n    content: \"\";\n    display: inline-block;\n    border-bottom: 10px solid #343434;\n    border-left: 10px solid transparent;\n    border-right: 10px solid transparent;\n    border-top: 0;\n    right: 50%;\n    top: -9px;\n    margin-right: -10px;\n    z-index: 99;\n}\n.header-right-info .author-message-top li a{\n   color:#fff;\n}\n.message-single-top h1, .notification-single-top h1{\n\tfont-size: 18px;\n    color: #fff;\n    font-weight: 300;\n    text-align: center;\n    padding: 15px 0px;\n    margin: 0px;\n\tborder-bottom:1px solid #383838;\n}\nul.message-menu, ul.notification-menu {\n    height: 230px;\n}\nul.message-menu li .message-img{\n\tfloat:left;\n\twidth:70px;\n\tmargin-right:10px;\n}\n\nul.notification-menu li .notification-icon{\n\tfloat: left;\n    width: 50px;\n    height: 50px;\n    background: #303030;\n    line-height: 50px;\n    text-align: center;\n    font-size: 16px;\n    border-radius: 50%;\n    margin: 5px 10px 5px 0px;\n}\n\nul.message-menu li .message-content, ul.notification-menu li .notification-content{\n\tposition:relative;\n}\nul.message-menu li .message-content .message-date, ul.notification-menu li .notification-content .notification-date{\n\tposition:absolute;\n\ttop:0px;\n\tright:0px;\n\tfont-size:13px;\n\tfont-style: italic;\n}\nul.message-menu li .message-content h2, ul.notification-menu li .notification-content h2{\n\tfont-size:16px;\n\tfont-weight:700;\n}\nul.message-menu li .message-content p, ul.notification-menu li .notification-content p{\n\tfont-size:14px;\n}\n.header-right-info ul.header-right-menu li.open > a{\n\tcolor:#03a9f4;\n}\n.header-top-menu .navbar-nav>li.open > a{\n\tcolor:#03a9f4;\n}\n.header-right-info ul.header-right-menu li .admintab-wrap.menu-setting-wrap.menu-setting-wrap-bg.dropdown-menu {\n    background:#343434;\n}\n.header-right-info ul.header-right-menu li .admintab-wrap.menu-setting-wrap.dropdown-menu {\n    position: absolute;\n    top: 175%;\n    left: -358px;\n    width: 400px;\n\tbox-shadow: 0px 2px 3px rgba(0,0,0,.175);\n\tpadding: 20px;\n}\n.note-heading-indicate {\n    margin-top: 20px;\n}\n.note-heading-indicate h2{\n\tfont-size:20px;\n\tcolor:#fff;\n}\n.note-heading-indicate p{\n\tfont-size:14px;\n\tcolor:#fff;\n}\n.menu-setting-wrap.menu-setting-wrap-bg .nav-tabs>li.active>a, .menu-setting-wrap.menu-setting-wrap-bg .nav-tabs>li.active>a:focus, .menu-setting-wrap.menu-setting-wrap-bg .nav-tabs>li.active>a:hover\n.notes-img{\n\tbackground:#303030;\n}\n.notes-img{\n\tfloat:left;\n}\n.notes-img img{\n\tborder-radius:50%;\n\twidth:60px;\n}\n.notes-list-flow .notes-content {\n    margin-left: 80px;\n}\n.notes-list-flow .notes-content p{\n    margin:0px;\n\tfont-size:14px;\n\tcolor:#fff;\n\tline-height:22px;\n}\n.notes-list-flow .notes-content span{\n\tfont-size:13px;\n\tcolor:#fff;\n}\n.notes-list-area ul.notes-menu-list li {\n    margin: 10px 0px;\n}\n.notes-menu-scrollbar, .project-st-menu-scrollbar{\n\theight:315px;\n}\n.project-st-list-area ul.projects-st-menu-list li a{\n\tcolor:#303030;\n}\n.project-st-list-area ul.projects-st-menu-list li {\n    padding: 10px 0px;\n}\n.projects-st-heading{\n\tposition:relative;\n}\n.projects-st-heading .project-st-time{\n\tposition:absolute;\n\ttop:0px;\n\tright:0px;\n\tfont-size:13px;\n\tcolor:#fff;\n}\n.projects-st-heading h2{\n\tfont-size:18px;\n\tcolor:#fff;\n}\n.projects-st-heading p{\n\tfont-size:14px;\n\tcolor:#fff;\n\tline-height:22px;\n\tmargin:0px 0px 10px;\n}\n.projects-st-content p{\n\tfont-size:14px;\n\tcolor:#fff;\n\tmargin:0px 0px 5px;\n}\n.projects-st-content .progress{\n\theight: 5px;\n\tmargin-bottom: 5px;\n}\n.projects-st-content.project-rating-cl .progress-bar{\n\tbackground-color: #f8ac59;\n}\n.projects-st-content.project-rating-cl2 .progress-bar{\n\tbackground-color: #03a9f4;\n}\n.project-list-flow, .notes-list-flow {\n    margin-right: 15px;\n}\nul.setting-panel-list li{\n\tdisplay: block !important;\n}\n.checkbox-title-pro h2 {\n    display: block;\n    font-size: 14px;\n    margin: 0px;\n    padding: 8px 0px;\n\tcolor: #fff;\n}\n.checkbox-title-pro{\n\tposition:relative;\n}\n.ts-custom-check{\n\tposition:absolute;\n\tright:0px;\n\ttop:5px;\n}\n.onoffswitch {\n    position: relative;\n    width: 54px;\n    -webkit-user-select: none;\n    -moz-user-select: none;\n    -ms-user-select: none;\n}\n.onoffswitch-label {\n    display: block;\n    overflow: hidden;\n    cursor: pointer;\n    border: 2px solid #03a9f4;\n    border-radius: 3px;\n}\n.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-inner {\n    margin-left: 0;\n}\n.onoffswitch-inner {\n    display: block;\n    width: 200%;\n    margin-left: -100%;\n    -moz-transition: margin 0.3s ease-in 0s;\n    -webkit-transition: margin 0.3s ease-in 0s;\n    -o-transition: margin 0.3s ease-in 0s;\n    transition: margin 0.3s ease-in 0s;\n}\n.onoffswitch-inner:before {\n    content: \"ON\";\n    padding-left: 7px;\n    background-color: #03a9f4;\n    color: #FFFFFF;\n}\n.onoffswitch-inner:after {\n    content: \"OFF\";\n    padding-right: 7px;\n    background-color: #FFFFFF;\n    color: #919191;\n    text-align: right;\n}\n\n.onoffswitch-inner:before, .onoffswitch-inner:after {\n    display: block;\n    float: left;\n    width: 50%;\n    height: 16px;\n    line-height: 16px;\n    font-size: 10px;\n    font-family: Trebuchet, Arial, sans-serif;\n    font-weight: bold;\n    -moz-box-sizing: border-box;\n    -webkit-box-sizing: border-box;\n    box-sizing: border-box;\n}\n.onoffswitch-switch {\n    display: block;\n    width: 18px;\n    margin: 0;\n    background: #FFFFFF;\n    border: 2px solid #03a9f4;\n    border-radius: 3px;\n    position: absolute;\n    top: 0;\n    bottom: 0;\n    right: 36px;\n    -moz-transition: all 0.3s ease-in 0s;\n    -webkit-transition: all 0.3s ease-in 0s;\n    -o-transition: all 0.3s ease-in 0s;\n    transition: all 0.3s ease-in 0s;\n}\n.onoffswitch-checkbox {\n    display: none;\n}\n.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-switch {\n    right: 0;\n}\n/*----------------------------------------*/\n/*  4.  main Menu CSS\n/*----------------------------------------*/\n.nav-tabs.custom-menu-wrap li a{\n\tcolor:#fff;\n}\n.nav-tabs.custom-menu-wrap li.active a{\n\tcolor:#303030;\n}\n.nav-tabs.custom-menu-wrap li.open a{\n\tcolor:#303030;\n}\n.nav-tabs.custom-menu-wrap li a, .nav-tabs.custom-menu-wrap li.open a{\n\tborder:1px solid transparent;\n\tpadding:15px 25px;\n\tfont-size:15px;\n}\n.nav-tabs.custom-menu-wrap li a:hover{\n\tbackground:#303030;\n\tcolor:#fff;\n}\n.custom-menu-content ul.main-menu-dropdown{\n\tposition:relative;\n\tz-index:99;\n}\n.custom-menu-content ul.main-menu-dropdown li{\n\tdisplay:inline-block;\n}\n.custom-menu-content ul.main-menu-dropdown li a{\n\tpadding:20px 20px;\n\tdisplay:block;\n\tcolor:#303030;\n\tfont-size:14px;\n}\n.custom-menu-content ul.main-menu-dropdown li a:hover{\n\tcolor:#353535;\n}\n.tab-custon-menu-bg{\n\tposition:relative;\n}\n.tab-custon-menu-bg:before{\n\tposition:absolute;\n\ttop:0px;\n\tleft:0px;\n\twidth:100%;\n\tbackground:#fff;\n\tcontent:\"\";\n\tz-index:9;\n\theight:100%;\n}\n.tab-custon-menu-bg-style:before{\n\tposition:absolute;\n\ttop:0px;\n\tleft:0px;\n\twidth:100%;\n\tbackground:#03a9f4;\n\tcontent:\"\";\n\tz-index:9;\n\theight:100%;\n}\n.menu-list-wrap .nav-tabs>li.open>a, .menu-list-wrap .nav-tabs>li.open>a:focus, .menu-list-wrap .nav-tabs>li.open>a:hover{\n\tbackground:#03a9f4;\n}\n.menu-list-wrap {\n    background: #fff;\n    padding: 20px;\n}\n.nav-tabs.custom-menu-wrap-st li a{\n\tcolor:#303030;\n}\n.tab-custon-menu-bg-style ul.main-menu-dropdown li a:hover{\n\tcolor:#fff;\n}\n/*----------------------------------------*/\n/*  5.  tinymce CSS\n/*----------------------------------------*/\n.tinymce-single .panel{\n\tmargin-bottom:0px;\n}\n.tinymce-single .note-editor.note-frame{\n\tborder: 1px solid #ddd;\n}\n/*----------------------------------------*/\n/*  6.  Header top Menu CSS\n/*----------------------------------------*/\n.admin-logo{\n\tpadding:10px 0px;\n}\n.header-top-area{\n\tbackground:#303030;\n\t\n}\n.header-top-menu ul.header-top-nav{\n\ttext-align:right;\n}\n.header-top-menu ul.header-top-nav li{\n\tdisplay:inline-block;\n\tposition:relative;\n}\n.header-top-menu ul.header-top-nav li a{\n\tfont-size:14px;\n\tcolor:#fff;\n\ttext-decoration:none;\n\ttext-transform:capitalize;\n\tdisplay:block;\n\tpadding:18px 10px;\n}\n.header-top-menu ul.header-top-nav li a:hover{\n\tcolor:#03a9f4;\n}\n.buy-button{\n\tpadding:8px 0px;\n}\n.buy-button a{\n\tcolor: #fff;\n    background: #03a9f4;\n    padding: 10px 20px;\n    display: inline-block;\n}\n.buy-button a:hover{\n\tcolor: #303030;\n    background: #eee;\n}\n.header-top-menu ul.header-top-nav li ul.dropdown-header-top{\n\tposition:absolute;\n\ttop:130%;\n\tleft:-10px;\n\twidth:200px;\n\tbackground:#303030;\n\topacity:0;\n\ttransition: all 0.5s ease 0s;\n\tz-index:999;\n\tpadding:10px 0px;\n\ttext-align:left;\n}\n.header-top-menu ul.header-top-nav li ul.dropdown-header-top.in{\n\topacity:1;\n\ttop:100%;\n\ttransition: all 0.5s ease 0s;\n}\n.admin-project-icon{\n\tmargin-left:5px;\n\tfont-size:10px;\n\tcolor:#fff;\n}\n.header-top-menu ul.header-top-nav li .dropdown-header-top li{\n\tdisplay:block;\n}\n.header-top-menu ul.header-top-nav li .dropdown-header-top li a{\n\tdisplay:block;\n\tcolor:#fff;\n\tpadding:15px 20px;\n}\n.header-top-menu ul.header-top-nav li .dropdown-header-top li a:hover{\n\tbackground:#03a9f4;\n}\n/*----------------------------------------*/\n/*  7.  Footer copy right CSS\n/*----------------------------------------*/\n.footer-copyright-area{\n\tbackground:#303030;\n\tpadding:20px 0px;\n\ttext-align:center;\n}\n.footer-copy-right p{\n\tmargin:0px;\n\tfont-size:15px;\n\tcolor:#fff;\n}\n.footer-copy-right a{\n\tcolor:#fff;\n}\n.footer-copy-right a:hover{\n\tcolor:#03a9f4;\n}\n.mobile-menu-area .mean-container .mean-nav ul li a{\n\tfont-size:14px;\n}\n.header-top-area {\n\tbox-shadow: 0 3px 10px rgba(0,0,0,.1);\n}\n/*----------------------------------------*/\n/*  8.  Breadcome CSS\n/*----------------------------------------*/\n.breadcome-heading h2{\n\tcolor:#303030;\n\tfont-size:20px;\n}\n.breadcome-list{\n\tpadding:20px;\n\tbackground:#fff;\n}\nul.breadcome-menu li{\n\tfont-size:14px;\n\tdisplay:inline-block;\n}\nul.breadcome-menu li a{\n\tcolor:#303030;\n}\nul.breadcome-menu li a:hover{\n\tcolor:#03a9f4;\n}\n.bread-slash{\n\tpadding:0px 5px;\n}\n.bread-blod{\n\tfont-weight:700;\n}\n/*----------------------------------------*/\n/*  9.  sparkline CSS\n/*----------------------------------------*/\n.sparkline-hd, .smart-sparkline-hd, .sparkline7-hd, .sparkline8-hd, .sparkline9-hd, .sparkline10-hd, .sparkline11-hd, .sparkline12-hd, .sparkline13-hd, .sparkline14-hd, .sparkline15-hd, .sparkline16-hd{\n\tbackground:#f9f9f9;\n\tborder-bottom:1px solid #fff;\n}\n.sparkline-hd, .smart-sparkline-hd, .sparkline7-hd, .sparkline8-hd, .sparkline9-hd, .sparkline10-hd, .sparkline11-hd, .sparkline12-hd, .sparkline13-hd, .sparkline14-hd, .sparkline15-hd, .sparkline16-hd{\n\tpadding: 15px 20px;\n}\n.main-spark-hd, .smart-main-spark-hd, .main-spark7-hd, .main-sparkline8-hd, .main-sparkline9-hd, .main-sparkline10-hd, .main-sparkline11-hd, .main-sparkline12-hd, .main-sparkline13-hd, .main-sparkline14-hd, .main-sparkline15-hd, .main-sparkline16-hd{\n\tposition:relative;\n}\n.main-spark-hd h1, .smart-main-spark-hd h1, .main-spark7-hd h1, .main-sparkline8-hd h1, .main-sparkline9-hd h1, .main-sparkline10-hd h1, .main-sparkline11-hd h1, .main-sparkline12-hd h1, .main-sparkline13-hd h1, .main-sparkline14-hd h1, .main-sparkline15-hd h1, .main-sparkline16-hd h1{\n\tfont-size:20px;\n\tcolor:#303030;\n\tposition:relative;\n\tmargin:0px;\n}\n.outline-icon, .smart-outline-icon, .sparkline7-outline-icon, .sparkline8-outline-icon, .sparkline9-outline-icon, .sparkline10-outline-icon, .sparkline11-outline-icon, .sparkline12-outline-icon, .sparkline13-outline-icon, .sparkline14-outline-icon, .sparkline15-outline-icon, .sparkline16-outline-icon{\n    position: absolute;\n\tright:0px;\n\ttop:0px;\n}\n.outline-icon span, .smart-outline-icon span, .sparkline7-outline-icon span, .sparkline8-outline-icon span, .sparkline9-outline-icon span, .sparkline10-outline-icon span, .sparkline11-outline-icon span, .sparkline12-outline-icon span, .sparkline13-outline-icon span, .sparkline14-outline-icon span, .sparkline15-outline-icon span, .sparkline16-outline-icon span{\n    padding-left:10px;\n\tcolor:#303030;\n\tcursor:pointer;\n}\n.sparkline-content p{\n\tfont-size:14px;\n\tline-height:24px;\n}\n.sparkline-content, .sparkline7-graph, .sparkline8-graph, .sparkline9-graph, .sparkline10-graph, .sparkline11-graph, .sparkline12-graph, .sparkline13-graph, .sparkline14-graph, .sparkline15-graph, .sparkline16-graph{\n\tpadding:20px;\n\tbackground:#fff;\n}\n.sparkline7-graph, .sparkline8-graph, .sparkline9-graph, .sparkline11-graph, .sparkline12-graph, .sparkline13-graph, .sparkline14-graph, .sparkline15-graph, .sparkline16-graph{\n\ttext-align:center;\n}\n.smart-sparkline-list {\n    padding: 14px 20px;\n    background: #fff;\n}\n.sparkline-content a{\n\tcolor:#fff;\n\tbackground:linear-gradient(to bottom, #ff9966 0%, #d75151 100%);\n\tpadding:10px 20px;\n\tdisplay:inline-block;\n}\n.sparkline-content a:hover{\n\tcolor:#fff;\n\tbackground:linear-gradient(to bottom, #ff9966 0%, #d75151 100%);\n}\n.table.table-adminpro{\n\tmargin-bottom:0px;\n}\n.jqstooltip {\n  width: auto !important;\n  height: auto !important;\n  background-color: linear-gradient(to bottom, #ff66ff 0%, #ff6666 100%) !important;\n}\n.code-adminpro{\n\ttext-align:left;\n}\n.code-adminpro-center{\n\ttext-align:center;\n}\n.smart-sparkline-list.smart-pie-list {\n    padding: 17px 20px;\n}\n.table-adminpro code{\n\tcolor:#303030;\n}\n/*----------------------------------------*/\n/*  10.  welcome Project, sale area CSS\n/*----------------------------------------*/\n.welcome-wrapper{\n\tpadding:20px;\n\t background: #fff;\n}\n.dashboard-line-chart{\n\tpadding:20px;\n\t background: #fff;\n}\n.dashone-adminprowrap{\n\tpadding:20px;\n\t background: #fff;\n}\n.welcome-adminpro-title h1, .dash-adminpro-project-title h2{\n\tfont-size:20px;\n\tcolor:#303030;\n}\n.welcome-adminpro-title p, .dash-adminpro-project-title p{\n\tfont-size:14px;\n\tcolor:#303030;\n}\nul.message-list-menu li {\n    padding: 5px 0px;\n    font-size: 14px;\n}\nul.message-list-menu li {\n    padding: 5px 0px;\n    font-size: 14px;\n\tborder-bottom:1px solid #ccc;\n}\nul.message-list-menu li:last-child {\n    padding-bottom: 0px;\n\tborder-bottom:0px solid #ddd;\n}\nul.message-list-menu li .message-time{\n\ttext-align:right;\n}\nul.message-list-menu li .message-info{\n\twidth:216px;\n\tdisplay:inline-block;\n}\nul.message-list-menu li .message-serial {\n    width: 25px;\n    display: inline-block;\n    text-align: center;\n    margin-right: 10px;\n    background: #303030;\n    color: #fff;\n    border-radius: 4px;\n    padding: 2px 0px;\n}\nul.message-list-menu li .message-serial.message-cl-one {\n    background: linear-gradient(to bottom, #ff9966 0%, #d75151 100%);\n}\nul.message-list-menu li .message-serial.message-cl-two {\n    background: linear-gradient(to bottom, #ad6c7c 0%, rgb(216, 0, 255) 100%);\n}\nul.message-list-menu li .message-serial.message-cl-three {\n    background: linear-gradient(to bottom, #b52ea4 0%, #f13800 100%);\n}\nul.message-list-menu li .message-serial.message-cl-four {\n    background: linear-gradient(to bottom, #1ab394 0%, #2dda7a 100%);\n\tcolor:#fff;\n}\nul.message-list-menu li .message-serial.message-cl-five {\n    background: linear-gradient(to bottom, #ff9966 0%, #d75151 100%);\n}\nul.message-list-menu li .message-serial.message-cl-six {\n    background: linear-gradient(to bottom, #b96f77 0%, #ca0e0e 100%);\n}\n.linechart-dash-rate {\n    text-align: center;\n    margin-top: 20px;\n}\n.linechart-dash-rate h2{\n\tfont-size:20px;\n\tmargin-bottom: 5px;\n}\n.linechart-dash-rate p{\n\tfont-size:14px;\n\tmargin: 0px;\n}\n#flot-dashboard-chart{\n\twidth: 100%;\n\theight: 204px;\n}\n.dashone-doughnut #doughnutChart2, .dashone-doughnut #doughnutChart{\n\tmargin:0px 7px;\n}\n.dashone-doughnut h3, .dashone-doughnut h3{\n\tfont-size: 14px;\n    text-align: center;\n    margin-top: 10px;\n}\n.project-dashone-phara p{\n\tfont-size: 14px;\n    margin: 0px;\n    line-height: 24px;\n    padding-top: 17px;\n}\n/*----------------------------------------*/\n/*  11.  Dashboard v.1.0 comment\n/*----------------------------------------*/\n.dashone-bar-small{\n\tfloat:right;\n}\n.dashone-bar {\n    margin-top: 7px;\n}\n.dashone-bar-heading{\n\ttext-align:left;\n}\n.dashone-bar-heading h2{\n\tfont-size:14px;\n\tfont-weight:600;\n\tcolor:#303030;\n}\n.dashone-bar-heading a{\n\tfont-size:14px;\n\tmargin:0px;\n\tcolor:#03a9f4;\n}\n.dashone-bar-heading a:hover{\n\tcolor:#303030;\n}\n.dashone-comment{\n\ttext-align:left;\n}\n.dashone-comment .comment-content{\n\tfont-size:14px;\n\tcolor:#303030;\n\tline-height:24px;\n\tmargin-bottom: 10px;\n}\n.dashone-comment a{\n\tcolor:#03a9f4;\n}\n.dashone-comment .comment-clock{\n\tcolor:#303030;\n\tfont-size:13px;\n\tmargin:0px;\n}\n.comment-phara{\n\tmargin: 0px 10px 20px 0px;\n\tborder-bottom:1px solid #ccc;\n}\n.mCSB_outside+.mCSB_scrollTools {\n    right: 0px;\n    margin: 20px 0px;\n}\n.widgets-chat-scrollbar .mCSB_outside+.mCSB_scrollTools, .widgets-todo-scrollbar .mCSB_outside+.mCSB_scrollTools, .notes-menu-scrollbar .mCSB_outside+.mCSB_scrollTools, .project-st-menu-scrollbar .mCSB_outside+.mCSB_scrollTools, .user-profile-scrollbar .mCSB_outside+.mCSB_scrollTools {\n    right: -20px;\n    margin: 20px 0px;\n}\n.sparkline-dashone {\n    text-align: center;\n    margin-bottom: 15px;\n}\n.admin-comment-month{\n\tposition:relative;\n\tmargin-bottom:20px;\n}\n.comment-setting{\n\tposition: absolute;\n    right: 0px;\n    top: -10px;\n    background: none;\n    border: none;\n    color: #03a9f4;\n    font-size: 20px;\n    margin: 0px;\n    padding: 0px;\n}\n.comment-setting:focus{\n\toutline:none;\n}\n.comment-action-st, .comment-action-st.in{\n\tbackground: #fff;\n    width: 59%;\n    position: absolute;\n    right: 0px;\n\tborder:1px solid #ccc;\n\tbox-shadow: 0 0 20px rgba(0,0,0,.3);\n\tz-index:9;\n\ttransition:all .4s ease 0s;\n}\n.comment-action-st{\n    top: 40px;\n\ttransition:all .4s ease 0s;\n}\n.comment-action-st.in{\n    top: 18px;\n\ttransition:all .4s ease 0s;\n}\n.adminpro-action-list{\n\tpadding:10px 0px;\n}\nul.comment-action-st li{\n\tdisplay:block;\n}\nul.comment-action-st li a:hover{\n\tbackground:#03a9f4;\n\tcolor:#fff;\n}\nul.comment-action-st li a{\n\tpadding: 5px 10px;\n    display: block;\n    font-size: 14px;\n\tcolor:#303030;\n}\n.comment-scrollbar, .timeline-scrollbar, .messages-scrollbar, .project-list-scrollbar{\n\theight:468px;\n}\n.comment-phara.comment-bd-phara{\n\tborder:0px solid #ccc;\n}\n.mCSB_inside>.mCSB_container {\n    margin-right: 8px;\n}\n/*----------------------------------------*/\n/*  12.  Dashboard v.1.0 income\n/*----------------------------------------*/\n.income-monthly{\n\tbackground:linear-gradient(to bottom, #b52ea4 0%, #f13800 100%);\n}\n.orders-monthly{\n\tbackground:linear-gradient(to bottom, #ad6c7c 0%, rgb(216, 0, 255) 100%);\n}\n.visitor-monthly{\n\tbackground:linear-gradient(to bottom, #039477 0%, #2dda7a 100%);\n}\n.user-monthly{\n\tbackground:linear-gradient(to bottom, #b96f77 0%, #ca0e0e 100%);\n}\n.income-title{\n\tpadding:15px 20px;\n\tborder-bottom:1px solid rgba(233, 157, 128, 0.18);\n}\n.income-dashone-pro {\n    padding: 20px;\n}\n.main-income-head{\n\tposition:relative;\n}\n.income-title h2{\n\tfont-size:20px;\n\tcolor:#fff;\n\tmargin:0px;\n}\n.income-title p{\n\tposition:absolute;\n\tright:0;\n\ttop:0px;\n\tfont-size: 13px;\n    color: #fff;\n    padding: 2px 10px;\n    background: #1c84c6;\n    border-radius: 2px;\n\tmargin:0;\n}\n.main-income-phara.visitor-cl p{\n    background: #1ab394;\n}\n.income-rate-total h3{\n\tcolor:#fff;\n\tfont-size:23px;\n}\n.income-range p{\n\tfont-size:14px;\n\tcolor:#fff;\n\tmargin:0;\n\tfloat:left;\n}\n.income-range .income-percentange{\n\tfont-size:14px;\n\tcolor:#fff;\n\tfloat:right;\n}\n.income-range.visitor-cl .income-percentange{\n\tcolor:#fff;\n}\n.income-rate-total{\n\tposition:relative;\n}\n.price-graph{\n\tposition:absolute;\n\ttop:0;\n\tright:0;\n}\n.main-income-phara.order-cl p{\n\tbackground:#23c6c8;\n}\n.main-income-phara.low-value-cl p{\n\tbackground:#ed5565;\n}\n.income-range.order-cl .income-percentange{\n\tcolor:#fff;\n}\n.income-range.low-value-cl .income-percentange{\n\tcolor:#fff;\n}\n/*----------------------------------------*/\n/*  13.  Dashboard v.1.0 timeline\n/*----------------------------------------*/\n.mapael .map {\n\tposition: relative;\n}\n.plotLegend {\n    display: none;\n}\n.mapael .mapTooltip {\n\tposition: absolute;\n\tbackground-color: #23c6c8;\n\tmoz-opacity: 0.70;\n\topacity: 0.70;\n\tfilter: alpha(opacity=70);\n\tborder-radius: 10px;\n\tpadding: 10px;\n\tz-index: 1000;\n\tmax-width: 200px;\n\tdisplay: none;\n\tcolor: #fff;\n}\n.timeline-heading-admin h1{\n\tfont-size:20px;\n\tcolor: #303030;\n}\n.icon-date-timeline{\n\ttext-align:right;\n\tpadding: 5px 0px;\n}\n.timeline-adminpro-cn{\n\tborder-left:1px solid #ccc;\n\tborder-bottom:1px solid #ccc;\n\tborder-right:1px solid #ccc;\n\tposition:relative;\n}\n.timeline-date-time-bd{\n\tborder-left:1px solid #ccc;\n\tborder-bottom:1px solid #ccc;\n\tborder-top:1px solid #ccc;\n\tposition:relative;\n}\n.timeline-adminpro-bd-ct{\n\tborder-top:1px solid #ccc;\n}\n.timeline-date-time-bd:before, .timeline-adminpro-cn:before{\n\tposition: absolute;\n    height: 100%;\n    top: 0px;\n    width: 1px;\n    background: #ccc;\n    content: \"\";\n}\n.timeline-date-time-bd:before{\n    left: 14px;\n}\n.timeline-adminpro-cn:before{\n    right: 14px;\n}\n.icon-date-timeline i{\n\tfont-size:14px;\n\tcolor: #303030;\n\tpadding-top:5px;\n}\n.icon-date-timeline p{\n\tfont-size:14px;\n\tcolor: #303030;\n\tmargin:0px 0px 0px;\n}\n.timeline-content{\n\tpadding:15px 0px;\n}\n.timeline-content h3{\n\tfont-size:14px;\n\tfont-weight:600;\n\tcolor: #303030;\n}\n.timeline-content p{\n\tfont-size:14px;\n\tmargin:0px;\n\tcolor: #303030;\n\tline-height:24px;\n\tpadding-right:10px;\n}\n.timelinewrap-admin:hover .timeline-adminpro-cn, .timelinewrap-admin:hover .timeline-date-time-bd{\n\tbackground: #f5f5f5;\n}\n.icon-date-timeline .timeline-hr-cl{\n   color: #03a9f4;\n}\n.admin-timeline-graph{\n\tmargin-top:10px;\n}\n/*----------------------------------------*/\n/*  14.  Dashboard v.1.0 datatable\n/*----------------------------------------*/\n.custom-datatable-overright table tbody tr td {\n    padding-left: 10px !important;\n    padding-right: 5px !important;\n    font-size: 14px;\n\ttext-align:left;\n}\n.custom-datatable-overright table tbody tr td.datatable-ct{\n    text-align:center;\n\tcolor: #03a9f4;\n}\n.custom-datatable-overright table tbody tr td a{\n    color:#303030;\n\tfont-size:14px;\n}\n.custom-datatable-overright .fixed-table-pagination .pagination-detail{\n\tpadding-left:10px;\n}\n.custom-datatable-overright .pagination>.active>a, .pagination>.active>a:focus, .pagination>.active>a:hover, .pagination>.active>span, .pagination>.active>span:focus, .pagination>.active>span:hover{\n\tbackground: linear-gradient(to bottom, #ff9966 0%, #d75151 100%);\n    border-color: #ff9966;\n}\n.custom-datatable-overright .fixed-table-toolbar .bs-bars, .fixed-table-toolbar .search, .fixed-table-toolbar .columns{\n\tmargin-top: 0px;\n}\n.custom-datatable-overright .form-control, .custom-datatable-overright .btn{\n\tborder-radius: 0px;\n}\n.custom-datatable-overright .fixed-table-toolbar .btn-group > .btn-group:last-child > .btn{\n\tborder-top-right-radius: 0px;\n    border-bottom-right-radius: 0px;\n}\n.custom-datatable-overright .fixed-table-pagination div.pagination, .fixed-table-pagination .pagination-detail{\n\tmargin-right: 10px;\n}\n.custom-datatable-overright .pagination>li:first-child>a, .pagination>li:first-child>span{\n\tborder-top-left-radius: 0px;\n    border-bottom-left-radius: 0px;\n}\n.custom-datatable-overright .pagination>li:last-child>a, .pagination>li:last-child>span{\n\tborder-top-right-radius: 0px;\n    border-bottom-right-radius: 0px;\n}\n.custom-datatable-overright .fixed-table-container{\n\tborder-radius: 0px;\n}\n.custom-datatable-overright .btn-primary {\n    background-color: #03a9f4;\n    border-color: #03a9f4;\n}\n.custom-datatable-overright .card-view {\n   padding: 5px 10px;\n}\n.custom-datatable-overright .card-view .value i{\n  color: #03a9f4;\n}\n.custom-datatable-overright .card-view:hover {\n    background:#fff;\n}\n/*----------------------------------------*/\n/*  15.  Dashboard v.2.0\n/*----------------------------------------*/\n.dashtwo-order-list{\n\tbackground:#fff;\n\tpadding:20px;\n}\n.flot-chart-dashtwo .legendLabel {\n    padding-left: 5px !important;\n}\n.flot-chart-dashtwo table {\n    margin-top: -14px;\n}\n.flot-chart-dashtwo tbody tr {\n    padding:5px 0px;\n}\n.flot-chart-dashtwo tbody tr {\n    padding: 2px 0px;\n    display: block;\n}\n/*----------------------------------------*/\n/*  16.  Dashboard progress bar\n/*----------------------------------------*/\n.skill-content-3 {\n    overflow: hidden\n}\n.skill .progress .lead-content {\n    left: 0;\n    position: absolute;\n    top: -50px;\n    z-index: 99;\n    width: 100%;\n}\n.skill .progress .lead-content h3{\n    font-size: 20px;\n    margin: 0px 0px;\n}\n.skill .progress .lead-content p{\n    font-size: 14px;\n    margin: 5px 0px;\n}\n.skill .progress {\n    background-color: #f0f0f0;\n    border-radius: 0;\n    box-shadow: none;\n    height: 5px;\n    overflow: visible;\n    position: relative;\n\tmargin: 60px 0px;\n}\n.skill .progress.progress-bt {\n    margin-bottom:0px;\n}\n.skill .progress-bar > span {\n    background: #333 none repeat scroll 0 0;\n    float: right;\n    font-size: 11px;\n    margin-right: 10px;\n    margin-top: -26px;\n    position: relative;\n    padding: 0 5px;\n}\n.skill .progress-bar > span:before,\n.skill .progress-bar > span:after {\n    border: medium solid transparent;\n    content: \" \";\n    height: 0;\n    pointer-events: none;\n    position: absolute;\n    top: 100%;\n    width: 0;\n}\n.skill .progress-bar > span:before {\n    border-top-color: #333;\n    border-width: 5px;\n    left: 50%;\n    margin-left: -5px;\n}\n.holax-shop h3,\n.we-are-good-at h3 {\n    font-size: 18px;\n    margin-bottom: 25px;\n}\n.skill .progress:nth-child(1) .progress-bar {\n    background: linear-gradient(to right, #3333ff 0%, #f67aa2 100%);\n}\n.skill .progress:nth-child(2) .progress-bar {\n    background: linear-gradient(to right, #ff33d3 0%, #b5f67a 100%);\n}\n.skill .progress:nth-child(3) .progress-bar {\n    background: linear-gradient(to right, #fff933 0%, #ef8f00 100%);\n}\n/*----------------------------------------*/\n/*  17.  Dashboard Daily Feed css\n/*----------------------------------------*/\n.daily-feed-list{\n\tmargin: 0px 0px 20px 0px;\n\tborder-bottom: 1px solid #ccc;\n}\n.daily-feed-list.daily-feed-bbm{\n\tborder-bottom: 0px solid #ccc;\n}\n.daily-feed-img{\n\tfloat: left;\n    margin-right: 10px;\n    width: 20%;\n}\n.daily-feed-img img{\n\tborder-radius:50%;\n}\n.daily-feed-img a{\n\tdisplay:block;\n}\n.daily-feed-content .feed-author {\n\tfont-weight:600;\n}\n.daily-feed-content h4{\n\tfont-size: 14px;\n    color: #303030;\n    padding: 0px 57px;\n    line-height: 20px;\n    margin: 0px 0px 5px;\n}\n.daily-feed-content{\n\tposition:relative;\n\tpadding-bottom:20px;\n}\n.daily-feed-content.daily-feed-cbbm{\n\tpadding-bottom:0px;\n}\n.daily-feed-content p{\n\tfont-size:13px;\n\tcolor:#303030;\n\tmargin:0px;\n\t\n}\n.daily-feed-content .feed-ago{\n\tposition:absolute;\n\tright:0px;\n\ttop:0px;\n\t\n}\n.daily-feed-content .message-feed-single{\n\tmargin: 15px 0px 0px 74px;\n    padding: 14px;\n    font-size: 14px;\n    color: #303030;\n    background: #f5f5f5;\n    border: 1px solid #c9c9c9;\n    line-height: 22px;\n}\n.daily-feed-content .btn-white-like{\n\tpadding: 2px 10px;\n    background: #f5f5f5;\n    border: 1px solid #ccc;\n    margin-top: 10px;\n    border-radius: 0px;\n\tmargin-left:5px;\n}\n.daily-feed-content .feed-like-bt {\n    text-align: right;\n}\n/*----------------------------------------*/\n/*  18.  Dashboard project list css\n/*----------------------------------------*/\n.custom-datatable-overright.dashtwo-project-list-data .pull-right.search {\n    float: left!important;\n\tmargin-top:10px;\n}\n.custom-datatable-overright.dashtwo-project-list-data .fixed-table-toolbar .columns {\n\tmargin-top:10px;\n}\n.custom-datatable-overright.dashtwo-project-list-data .fixed-table-toolbar .btn-group > .btn-group:first-child > .btn {\n    border-top-left-radius: 0px;\n    border-bottom-left-radius: 0px;\n}\n.custom-datatable-overright.dashtwo-project-list-data .fixed-table-pagination .pagination-detail{\n\ttext-align:center;\n\twidth:100%;\n}\n.custom-datatable-overright.dashtwo-project-list-data .fixed-table-pagination div.pagination{\n\ttext-align:center;\n\twidth:100%\n}\n.custom-datatable-overright.dashtwo-project-list-data table tbody tr td.complete-project-dashtwo{\n\tbackground:linear-gradient(to bottom, #ff9966 0%, #d75151 100%);\n}\n.custom-datatable-overright.dashtwo-project-list-data table tbody tr td.canceled-project-dashtwo{\n\tbackground:#ed5565;\n}\n.custom-datatable-overright.dashtwo-project-list-data table tbody tr td.canceled-project-dashtwo a{\n\tcolor:#fff;\n}\n.custom-datatable-overright.dashtwo-project-list-data table tbody tr td.complete-project-dashtwo a{\n\tcolor:#fff;\n}\n.messages-scrollbar, .dashone-comment.dashtwo-comment{\n\theight: 503px;\n}\n.dashtwo-messages .dashtwo-messsage-title{\n\tfont-size: 15px;\n    font-weight: 600;\n    color: #303030;\n    margin: 0px 0px 10px;\n    display: block;\n}\n.dashtwo-messages .comment-phara {\n    margin: 0px 0px 20px 0px;\n}\n\n.jvectormap-container{\n\twidth: 100%;\n    height: 320px;\n    margin: 55px 0px;\n}\n.jvectormap-zoomin {\n    top: 24px;\n}\n.jvectormap-zoomout {\n    top: 0px;\n}\n.jvectormap-zoomin, .jvectormap-zoomout {\n    width: 10px;\n    height: 10px;\n}\n.jvectormap-zoomin, .jvectormap-zoomout, .jvectormap-goback {\n    position: absolute;\n    left: 10px;\n    border-radius: 3px;\n    background: linear-gradient(to bottom, #ff9966 0%, #d75151 100%);\n    padding: 3px;\n    color: white;\n    cursor: pointer;\n    line-height: 10px;\n    text-align: center;\n    box-sizing: content-box;\n}\n/*----------------------------------------*/\n/*  19.  Dashboard chat css\n/*----------------------------------------*/\n.chat-list-wrap .chat-button .chat-icon-link{\n\tposition: fixed;\n    bottom: 40px;\n    right: 25px;\n    height: 40px;\n    width: 40px;\n    background: rgba(255,127,77,1);\n\tbackground: -moz-linear-gradient(left, rgba(255,127,77,1) 0%, rgba(255,80,10,1) 100%);\n\tbackground: -webkit-gradient(left top, right top, color-stop(0%, rgba(255,127,77,1)), color-stop(100%, rgba(255,80,10,1)));\n\tbackground: -webkit-linear-gradient(left, rgba(255,127,77,1) 0%, rgba(255,80,10,1) 100%);\n\tbackground: -o-linear-gradient(left, rgba(255,127,77,1) 0%, rgba(255,80,10,1) 100%);\n\tbackground: -ms-linear-gradient(left, rgba(255,127,77,1) 0%, rgba(255,80,10,1) 100%);\n\tbackground: linear-gradient(to right, rgba(255,127,77,1) 0%, rgba(255,80,10,1) 100%);\n\tfilter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ff7f4d', endColorstr='#ff500a', GradientType=1 );\n    z-index: 999;\n    line-height: 40px;\n    text-align: center;\n    border-radius: 50%;\n\tcursor:pointer;\n\tcolor:#fff;\n\tfont-size:16px;\n}\n.chat-box-wrap.collapse{\n\tposition: fixed;\n\theight: 350px;\n    width: 260px;\n\tbackground:#fff;\n\tbottom: 70px;\n    right: 50px;\n\topacity:0px;\n\ttransition:all .4s ease 0s;\n}\n.chat-box-wrap.collapse.in{\n\tposition: fixed;\n\theight: 335px;\n    width: 260px;\n\tbackground:#fff;\n\tbottom: 90px;\n    right: 50px;\n\topacity:1px;\n\ttransition:all .4s ease 0s;\n\tz-index:999;\n\tborder:1px solid #303030;\n}\n.chat-heading h2{\n\tfont-size: 15px;\n    font-weight: 400;\n    margin: 0px;\n    padding: 10px 15px;\n    background: #303030;\n    color: #fff;\n}\n.author-chat{\n\ttext-align:left;\n\tpadding: 15px;\n}\n.client-chat{\n\ttext-align:right;\n\tpadding: 15px;\n}\n.author-chat h3{\n\tfont-size:14px;\n\tfont-weight:600;\n}\n.author-chat p{\n\tfont-size: 14px;\n    padding: 10px;\n    background: #03a9f4;\n    margin: 0px 40px 0px 0px;\n    color: #fff;\n\tborder-radius:5px;\n}\n.client-chat h3{\n\tfont-size:14px;\n\tfont-weight:600;\n}\n.client-chat p{\n\tfont-size:14px;\n\tpadding: 10px;\n    background: #f5f5f5;\n\tmargin: 0px 0px 0px 40px;\n\tborder-radius:5px;\n\tcolor:#303030;\n}\n.author-chat .chat-date{\n\tfont-size: 13px;\n    font-weight: 400;\n    margin-left: 66px;\n}\n.client-chat .chat-date{\n\tfont-size: 13px;\n    font-weight: 400;\n    margin-left: 66px;\n}\n.chat-send{\n\tpadding:0px 20px;\n}\n.chat-send input[type=\"text\"]{\n\tpadding: 5px 10px;\n    width: 68%;\n\tborder:1px solid #ccc;\n\tfont-size:14px;\n}\n.chat-send button[type=\"submit\"]{\n\tpadding: 5px 10px;\n\tborder:1px solid #ff9966;\n\tbackground:linear-gradient(to bottom, #ff9966 0%, #d75151 100%) !important;\n\tdisplay: inline-block;\n    width: 60px;\n\tcolor:#fff;\n\tfont-size:14px;\n}\n.chat-send input[type=\"text\"]:focus, .chat-send input[type=\"text\"]:active{\n\tborder:1px solid #03a9f4;\n\tbox-shadow:none;\n}\n.chat-send button[type=\"submit\"]:focus, .chat-send button[type=\"submit\"]:active{\n\tborder:1px solid #03a9f4;\n\tbox-shadow:none;\n\tfont-size:14px;\n}\n/*----------------------------------------*/\n/*  20.  Inbox css\n/*----------------------------------------*/\n.inbox-email-menu-list .compose-email a {\n    padding: 10px 15px;\n    display: block;\n    margin-bottom: 15px;\n    background: linear-gradient(to bottom, #ff9966 0%, #d75151 100%);\n    color: #fff;\n    text-align: center;\n\tfont-size:14px;\n}\n.inbox-email-menu-list .compose-email a:hover{\n    background: linear-gradient(to bottom, #ff9966 0%, #d75151 100%);\n    color: #fff;\n}\n.custom-inbox-message, .inbox-email-menu-list{\n\tpadding:20px;\n\tbackground:#fff;\n}\n.inbox-email-menu-list .nav-tabs li{\n\tfloat:none;\n\tmargin-bottom: 5px;\n}\n.inbox-email-menu-list .nav-tabs li .Inbox-category-ad{\n\tfont-size: 16px;\n    padding: 0px 15px\n}\n.inbox-email-menu-list .nav-tabs li a{\n\tborder-radius: 0px 0px 0 0;\n}\n.inbox-email-menu-list .nav-tabs li .count-inbox{\n\tmargin-left: 105px;\n    background: linear-gradient(to bottom, #ff9966 0%, #d75151 100%);\n    color: #fff;\n    height: 20px;\n    width: 20px;\n    display: inline-block;\n    text-align: center;\n    border-radius: 50%;\n}\n.inbox-email-menu-list .nav-tabs li .count-inbox.view-mail{\n\tmargin-left: 80px;\n}\n.inbox-email-menu-list .nav-tabs li .count-inbox-red{\n\tmargin-left: 100px;\n    background: linear-gradient(to bottom, #ad6c7c 0%, rgb(216, 0, 255) 100%);\n    color: #fff;\n    height: 20px;\n    width: 20px;\n    display: inline-block;\n    text-align: center;\n    border-radius: 50%;\n}\n.inbox-email-menu-list .nav-tabs li .inbox-icon{\n\tmargin-right: 5px;\n}\n.inbox-email-menu-list .nav-tabs{\n\tborder-bottom: 0px solid #ddd;\n}\n.inbox-email-menu-list .nav-tabs>li.active>a, .inbox-email-menu-list .nav-tabs>li.active>a:focus, .inbox-email-menu-list .nav-tabs>li.active>a:hover{\n\tcolor: #303030;\n    background-color: #eee;\n    border: 0px solid #ddd;\n}\n.inbox-email-menu-list .nav-tabs li a:hover{\n\tborder-bottom: 0px solid #ddd;\n}\n.custom-inbox-message .table-hover>tbody>tr.new-email {\n    background-color: #f5f5f5;\n}\n/*----------------------------------------*/\n/*  21.  View Mail css\n/*----------------------------------------*/\n.mail-title{\n\tposition:relative;\n\theight: 30px;\n}\n.mail-title h2{\n\tfont-size:24px;\n\tcolor:#303030;\n}\n.view-mail-action{\n\tposition:absolute;\n\tright:0px;\n\ttop:0px;\n}\n.view-mail-action a{\n\tfont-size:14px;\n\tbackground:linear-gradient(to bottom, #ad6c7c 0%, rgb(216, 0, 255) 100%);\n\tcolor:#fff;\n\tpadding:4px 10px;\n\tdisplay:inline-block;\n\tmargin-left:5px;\n\tborder-radius:2px;\n}\n.view-mail-action a:hover{\n\tbackground:linear-gradient(to bottom, #ad6c7c 0%, rgb(216, 0, 255) 100%);\n}\n.main-title-hd h3{\n\tfont-size: 18px;\n    color: #303030;\n    margin: 20px 0px 10px 0px;\n}\n.main-title-hd .main-title-view{\n\tfont-weight:600;\n}\n.view-author-mail span{\n\tfont-size:13px;\n\tcolor:#303030;\n}\n.view-author-mail .view-mail-email{\n\tfont-weight:600;\n}\n.view-author-mail .view-mail-date{\n\tfloat:right;\n}\n.view-mail-content {\n    margin-top: 30px;\n}\n.view-mail-content h3{\n    font-size:16px;\n\tcolor:#303030;\n}\n.view-mail-content p{\n    font-size:14px;\n\tcolor:#303030;\n\tline-height:24px;\n}\n.view-mail-content .view-bdl{\n    font-weight:600;\n}\n.view-mail-content .view-mail-click{\n    color:#03a9f4;\n}\n.view-mail-content .view-mail-click:hover{\n    color:#303030;\n}\n.all-attachment-area {\n    margin-top: 20px;\n}\n.all-attachment-area ul.attachment-menu-view li {\n\tdisplay:inline-block;\n\tmargin-right:15px;\n}\n.all-attachment-area ul.attachment-menu-view li a{\n\tfont-size:13px;\n\tcolor:#303030;\n}\n.all-attachment-area ul.attachment-menu-view li a:hover{\n\tfont-size:13px;\n\tcolor:#03a9f4;\n}\n.view-mail-file-list{\n\tborder:1px solid #ccc;\n\tmargin-top: 10px;\n}\n.view-file-in{\n\ttext-align: center;\n    padding: 20px 0px;\n}\n.view-file-in i{\n\tfont-size:70px;\n}\n.file-type-view h5{\n\tmargin:0px 0px 5px;\n\tfont-size:14px;\n\tcolor:#303030;\n}\n.file-type-view p{\n\tfont-size:14px;\n\tcolor:#303030;\n}\n.file-type-view {\n    padding-top: 15px;\n    text-align: center;\n\tborder-top:1px solid #ccc;\n}\n.view-mail-reply-list{\n\tmargin-top: 20px;\n}\n.view-mail-reply-list ul.view-mail-forword{\n\ttext-align: right;\n}\n.view-mail-reply-list ul.view-mail-forword li{\n\tdisplay: inline-block;\n    padding-left: 10px;\n}\n.view-mail-reply-list ul.view-mail-forword li a{\n\tfont-size: 14px;\n    padding: 4px 10px;\n    display: inline-block;\n    background: linear-gradient(to bottom, #ad6c7c 0%, rgb(216, 0, 255) 100%);\n    color: #fff;\n}\n/*----------------------------------------*/\n/*  22.  Compose Mail css\n/*----------------------------------------*/\n.view-mail-reply-list ul.view-mail-forword li .compose-discard-bt, .view-mail-action a.compose-discard-bt{\n\tbackground: linear-gradient(to bottom, #b96f77 0%, #ca0e0e 100%);\n}\n.view-mail-action a.compose-draft-bt, .view-mail-reply-list ul.view-mail-forword li .compose-draft-bt{\n\tbackground: linear-gradient(to bottom, #1ab394 0%, #2dda7a 100%);\n}\n.compose-multiple-email .multipleInput-container{\n\theight: 55px;\n    padding: 5px;\n}\n.compose-multiple-email .multipleInput-container.active, .compose-multiple-email .multipleInput-container:focus{\n\tborder: 1px solid #03a9f4;\n}\n.compose-email-to {\n    text-align: center;\n    padding: 17px 0px;\n\tfont-weight:600;\n}\n.compose-email-to.compose-subject-title {\n    padding: 7px 0px;\n}\n.compose-email-to, .compose-multiple-email{\n\tmargin-top:20px;\n}\n.compose-multiple-email.compose-subject-email input[type=\"text\"]{\n\twidth: 100%;\n    border: 1px solid #ccc;\n    height: 35px;\n    padding: 0px 5px;\n}\n.compose-multiple-email.compose-subject-email input[type=\"text\"]:active{\n    border: 1px solid #03a9f4;\n\tbox-shadow:none;\n}\n.compose-multiple-email.compose-subject-email input[type=\"text\"]:focus{\n    border: 1px solid #03a9f4;\n\tbox-shadow:none;\n}\n.multipleInput-container:focus, .multipleInput-container:active, .multipleInput-container:visited {\n\tborder: 1px #03a9f4 solid;\n}\n.text-editor-compose{\n\tmargin-top:30px;\n}\n/*multi email input*/\n.multipleInput-container {\n     border:1px #ccc solid;\n     padding:1px;\n     padding-bottom:0;\n     cursor:text;\n     font-size:13px;\n     width:100%;\n     height: 75px;\n     overflow: auto;\n     background-color: white;\n   border-radius:0px;\n}\n \n.multipleInput-container input {\n     font-size:13px;\n     width:150px;\n     height:24px;\n     border:0;\n     margin-bottom:1px;\n     outline: none\n}\n \n.multipleInput-container ul {\n     list-style-type:none;\n     padding-left: 0px !important;\n}\n \nli.multipleInput-email {\n     float:left;\n     margin-right:2px;\n     margin-bottom:1px;\n     border:1px #BBD8FB solid;\n     padding:2px;\n     background:#F3F7FD;\n}\n \n.multipleInput-close {\n     width:16px;\n     height:16px;\n     background:url(close.png);\n     display:block;\n     float:right;\n     margin:0 3px;\n}\n.email_search{\n  width: 100% !important;\n}\n/*----------------------------------------*/\n/*  23.  Analytics css\n/*----------------------------------------*/\n.analytics-adminpro-wrap{\n\toverflow:hidden;\n}\n.analytics-adminpro{\n\tbackground:#fff;\n\tpadding:20px;\n\toverflow:hidden;\n}\n.analytics-adminpro .skill{\n\toverflow:hidden;\n}\n.analytics-adminpro .progress{\n\tmargin-bottom: 0px;\n}\n.analytics-adminpro2 .skill .progress-bar{\n\tbackground: linear-gradient(to right, #cc3300 0%, #66ccff 100%) !important;\n}\n.analytics-adminpro3 .skill .progress-bar{\n\tbackground: linear-gradient(to right, #ff00ff 0%, #660033 100%) !important;\n}\n.analytics-adminpro4 .skill .progress-bar{\n\tbackground: linear-gradient(to right, #99ff99 0%, #ff9966 100%) !important;\n}\n\n.analytics-sparkle-line, .analytics-rounded, .analysis-progrebar{\n\tbackground:#fff;\n\tpadding:20px;\n}\n.analytics-sparkle-line .analytics-content h5, .analytics-rounded .analytics-rounded-content h5, .analysis-progrebar .analysis-progrebar-content h5{\n\tfont-size:14px;\n\tcolor:#303030;\n}\n.analytics-sparkle-line .analytics-content h2, .analytics-rounded .analytics-rounded-content h2, .analysis-progrebar .analysis-progrebar-content h2, .analytics-adminpro .skill .progress .lead-content h3{\n\tfont-size:25px;\n\tcolor:#303030;\n}\n.analytics-adminpro .skill .progress .lead-content{\n\ttop:-55px;\n}\n.analysis-progrebar-content .small p{\n\tfont-size:14px;\n\tcolor:#303030;\n\tmargin:0px;\n}\n.analysis-progrebar-content .progress{\n\theight: 5px;\n\tmargin-bottom:10px;\n}\n/*----------------------------------------*/\n/*  24.  Widgets css\n/*----------------------------------------*/\n.author-permissio-wrap{\n\tbackground:#fff;\n\tpadding:20px;\n}\n.author-per-img img{\n\tborder-radius:50%;\n\tfloat:left;\n\theight:70px;\n}\n.author-per-content {\n    margin-left: 85px;\n}\n.author-per-content h2{\n\tfont-size:15px;\n\tcolor:#303030;\n\tfont-weight:600;\n\tmargin: 0px 0px 8px;\n}\n.author-per-content p{\n\tfont-size:14px;\n\tcolor:#303030;\n\twhite-space: nowrap;\n    display: block;\n    overflow: hidden;\n    text-overflow: ellipsis;\n\tmargin: 0px 0px 5px;\n}\n.conversation-list {\n    list-style: none;\n    max-height: 330px;\n}\n.conversation-list li {\n    margin-bottom: 24px;\n}\n.conversation-list .chat-avatar {\n    display: inline-block;\n    float: left;\n    text-align: center;\n    width: 40px;\n}\n.conversation-list .chat-avatar img {\n    border-radius: 100%;\n    width: 100%;\n}\n.conversation-list .chat-avatar i {\n    font-size: 12px;\n    font-style: normal;\n}\n.conversation-list .conversation-text {\n    display: inline-block;\n    float: left;\n    font-size: 12px;\n    margin-left: 12px;\n    width: 70%;\n\ttext-align:left;\n}\n.clearfix::after {\n    display: block;\n    clear: both;\n    content: \"\";\n}\n.conversation-list .ctext-wrap {\n    -moz-border-radius: 3px;\n    -webkit-border-radius: 3px;\n    background: #f5f5f5;\n    border-radius: 3px;\n    display: inline-block;\n    padding: 10px;\n    position: relative;\n}\n.conversation-list .ctext-wrap i {\n    color: #343c49;\n    display: block;\n    font-size: 14px;\n    font-style: normal;\n    font-weight: 600;\n    position: relative;\n}\n.conversation-list .ctext-wrap p {\n    margin: 0;\n    padding-top: 3px;\n    font-size: 14px;\n    line-height: 24px;\n}\n.conversation-list .ctext-wrap:after {\n    right: 100%;\n    top: 20%;\n    border: 5px solid rgba(213, 242, 239, 0);\n    content: \" \";\n    height: 0;\n    width: 0;\n    position: absolute;\n    pointer-events: none;\n    border-right-color: #f5f5f5;\n    margin-top: -5px;\n}\n.conversation-list .odd .ctext-wrap {\n    background: linear-gradient(to bottom, #ff9966 0%, #d75151 100%) !important;\n}\n.conversation-list .odd .chat-avatar {\n    float: right !important;\n}\n.conversation-list .odd .ctext-wrap:after {\n    border-left-color: #ff9966 !important;\n    left: 100% !important;\n    top: 20% !important;\n}\n.conversation-list .odd .conversation-text {\n    float: right !important;\n    margin-right: 12px;\n    text-align: right;\n    width: 70% !important;\n}\n.conversation-list .ctext-wrap.chat-widgets-cn i{\n\tcolor: #fff;\n}\n.conversation-list .ctext-wrap.chat-widgets-cn p{\n\tcolor: #fff;\n}\n.chat-widget-input {\n    padding-top: 20px;\n}\n.chat-send .btn-primary{\n\tbackground-color: #03a9f4;\n    border-color: #03a9f4;\n}\n/*Todo Css*/\n.header-title {\n    text-transform: uppercase;\n    font-size: 15px;\n    font-weight: 700;\n    line-height: 16px;\n    margin-bottom: 8px;\n    margin-top: 0;\n}\n.card-box {\n    -webkit-border-radius: 5px;\n    border-radius: 5px;\n    -moz-border-radius: 5px;\n    background-clip: padding-box;\n    background-color: #ffffff;\n}\n#todo-message {\n    font-size: 16px;\n}\n.checkbox input[type=\"checkbox\"] {\n    cursor: pointer;\n    opacity: 0;\n    z-index: 1;\n    outline: none !important;\n}\n.checkbox label {\n    display: inline-block;\n    padding-left: 25px;\n    position: relative;\n    font-size: 14px;\n}\n.checkbox-primary input[type=\"checkbox\"]:checked + label::before {\n    background: linear-gradient(to bottom, #ff9966 0%, #d75151 100%);\n    border-color: #ff9966;\n}\n.checkbox label::before {\n    -o-transition: 0.3s ease-in-out;\n    -webkit-transition: 0.3s ease-in-out;\n    background-color: #ffffff;\n    border-radius: 3px;\n    border: 1px solid #80898e;\n    content: \"\";\n    display: inline-block;\n    height: 17px;\n    left: 0;\n    margin-left: 0px;\n    position: absolute;\n    transition: 0.3s ease-in-out;\n    width: 17px;\n    outline: none !important;\n}\n.checkbox label::after {\n    color: #333333;\n    display: inline-block;\n    font-size: 11px;\n    height: 16px;\n    left: 0;\n    margin-left: 0px;\n    padding-left: 3px;\n    padding-top: 1px;\n    position: absolute;\n    top: 0;\n    width: 16px;\n}\n.checkbox input[type=\"checkbox\"]:checked + label::after {\n    content: \"\\f00c\";\n    font-family: 'FontAwesome';\n}\n.checkbox-primary input[type=\"checkbox\"]:checked + label::after {\n    color: #ffffff;\n}\n.todo-list li {\n    border: 0px;\n    margin: 0px;\n    padding: 5px !important;\n    background: transparent !important;\n    display: block;\n\ttext-align:left;\n}\n.todo-achive-ad {\n    margin-right: 10px;\n}\n.todo-send .todo-achive-ad {\n       width: 90%;\n}\n.btn-primary.todo-achive-ad {\n    color: #fff;\n    background: linear-gradient(to bottom, #ff9966 0%, #d75151 100%);\n    border-color: #ff9966;\n}\n.btn-sm.todo-achive-ad{\n\tfont-size:14px;\n}\n/*anual flot Css*/\n.widget-flot-bg {\n    background-color: #fff;\n    color: #ffffff;\n}\n.admin-widget-flot-ch {\n    padding: 20px;\n}\n.admin-widget-flot-ch h1{\n    margin: 0px 0px 5px;\n    font-size: 25px;\n    color: #303030;\n}\n.admin-widget-flot-ch h3{\n\tfont-size:20px;\n\tcolor:#303030;\n\tmargin: 0px 0px 5px;\n}\n.admin-widget-flot-ch p{\n\tfont-size:14px;\n\tcolor:#303030\n}\n.widget-flot-bg .flot-chart {\n    height: 92px;\n}\n.flot-chart-content {\n    width: 100%;\n    height: 100%;\n}\n/*Author widgets Css*/\n.widget-head-info-box{\n\tpadding:20px;\n\tbackground-color: #fff;\n\ttext-align: center;\n}\n.widget-text-box{\n\tpadding:20px;\n\tbackground-color: #fff;\n}\n.persoanl-widget-hd h2{\n\tfont-size:20px;\n\tcolor: #fff;\n\tfont-weight:600;\n}\n.persoanl-widget-hd p{\n\tfont-size:14px;\n\tcolor: #fff;\n}\n.widget-text-box h4{\n\tfont-size:16px;\n\tcolor: #303030;\n\tfont-weight:600;\n}\n.widget-text-box p{\n\tfont-size:14px;\n\tcolor: #303030;\n\tline-height:24px;\n}\n.social-widget-result{\n\tmargin-top:15px;\n}\n.widget-head-info-box {\n\twidth: 100%;\n\theight: 240px;\n\tcolor: #fff;\n\tbackground: linear-gradient(-45deg, #EE7752, #E73C7E, #23A6D5, #23D5AB);\n\tbackground-size: 400% 400%;\n\t-webkit-animation: Gradient 15s ease infinite;\n\t-moz-animation: Gradient 15s ease infinite;\n\tanimation: Gradient 15s ease infinite;\n}\n\n@-webkit-keyframes Gradient {\n\t0% {\n\t\tbackground-position: 0% 50%\n\t}\n\t50% {\n\t\tbackground-position: 100% 50%\n\t}\n\t100% {\n\t\tbackground-position: 0% 50%\n\t}\n}\n\n@-moz-keyframes Gradient {\n\t0% {\n\t\tbackground-position: 0% 50%\n\t}\n\t50% {\n\t\tbackground-position: 100% 50%\n\t}\n\t100% {\n\t\tbackground-position: 0% 50%\n\t}\n}\n\n@keyframes Gradient {\n\t0% {\n\t\tbackground-position: 0% 50%\n\t}\n\t50% {\n\t\tbackground-position: 100% 50%\n\t}\n\t100% {\n\t\tbackground-position: 0% 50%\n\t}\n}\n.like-love-list .btn-primary{\n\tbackground: linear-gradient(to bottom, #ff9966 0%, #d75151 100%);\n    border-color: #ff9966;\n}\n.like-love-list .btn-white{\n\tcolor: #03a9f4;\n}\n/*Weather Css*/\n.weather-widget-wrap{\n\tpadding:20px;\n}\n.weather-widget-wrap {\n\twidth: 100%;\n\theight: 416px;\n\tcolor: #fff;\n\tbackground: linear-gradient(-45deg, #EE7752, #E73C7E, #23A6D5, #23D5AB);\n\tbackground-size: 400% 400%;\n\t-webkit-animation: Gradient 15s ease infinite;\n\t-moz-animation: Gradient 15s ease infinite;\n\tanimation: Gradient 15s ease infinite;\n}\n\n@-webkit-keyframes Gradient {\n\t0% {\n\t\tbackground-position: 0% 50%\n\t}\n\t50% {\n\t\tbackground-position: 100% 50%\n\t}\n\t100% {\n\t\tbackground-position: 0% 50%\n\t}\n}\n\n@-moz-keyframes Gradient {\n\t0% {\n\t\tbackground-position: 0% 50%\n\t}\n\t50% {\n\t\tbackground-position: 100% 50%\n\t}\n\t100% {\n\t\tbackground-position: 0% 50%\n\t}\n}\n\n@keyframes Gradient {\n\t0% {\n\t\tbackground-position: 0% 50%\n\t}\n\t50% {\n\t\tbackground-position: 100% 50%\n\t}\n\t100% {\n\t\tbackground-position: 0% 50%\n\t}\n}\n.weather-carve-content h2{\n\tfont-weight:600;\n\tfont-size:25px;\n}\n.weather-carve-content p{\n\tfont-size:14px;\n\tcolor: #fff;\n}\n.weather-carve-content .cloud-partly{\n\tfont-size:14px;\n\tcolor: #fff;\n\tmargin: 0px 0px 5px;\n}\n.weather-days-pro{\n\ttext-align: center;\n    padding: 15px 0px;\n}\n.weather-days-pro h3{\n\tfont-size:20px;\n\tcolor: #fff;\n}\n.weather-days-pro h4{\n\tfont-size:16px;\n\tcolor: #fff;\n}\n\n.single-skill, .contact-client-single, .user-profile-wrap, .user-profile-about, .user-profile-post, .user-profile-mutual-friends, .project-details-wrap, .project-details-descri, .project-details-files{\n\tpadding:20px;\n\tbackground-color: #fff;\n}\n.progress-circular{\n\theight:90px;\n}\n.progress-circular4, .progress-circular3, .progress-circular2, .progress-circular1{\n\tpadding:17px 0px;\n}\n.progress-circular4 h2{\n\tfont-size:25px;\n\tcolor: #f1b53d;\n}\n.progress-circular4 p, .progress-circular3 p, .progress-circular2 p, .progress-circular1 p{\n\tfont-size:13px;\n\tcolor: #303030;\n\tmargin:0px;\n}\n.progress-circular3 h2{\n\tfont-size:25px;\n\tcolor: #039cfd;\n}\n.progress-circular2 h2{\n\tfont-size:25px;\n\tcolor: #52bb56;\n}\n.progress-circular1 h2{\n\tfont-size:25px;\n\tcolor: #7266ba;\n}\n.author-widgets-single{\n\tpadding:20px;\n\tbackground-color: #fff;\n}\n.persoanl1-widget-hd h2{\n\tcolor:#303030;\n}\n.persoanl1-widget-hd p{\n\tcolor:#303030;\n}\n.perso-img, .persoanl1-widget-hd, .social-widget1-result{\n\ttext-align:center;\n}\n.persoanl1-widget-hd p{\n\tmargin-bottom:10px;\n}\n.persoanl1-widget-hd h2{\n\tmargin-top: 22px;\n}\n/*----------------------------------------*/\n/*  25.  Contact Client css\n/*----------------------------------------*/\n.contact-client-img{\n\ttext-align:center;\n}\n.contact-client-img img{\n\tborder-radius:50%;\n}\n.contact-client-img h1{\n\tfont-size:14px;\n\tmargin-top:10px;\n\tfont-weight:600;\n}\n.contact-client-content a{\n\tfont-size:20px;\n\tcolor:#03a9f4;\n\tfont-weight:600;\n}\n.contact-client-content a:hover{\n\tfont-size:20px;\n\tcolor:#303030;\n}\n.contact-client-content p{\n\tfont-size:14px;\n\tcolor:#303030;\n}\n.contact-client-address h3{\n\tfont-size:16px;\n\tcolor:#303030;\n\tfont-weight:600;\n}\n.contact-client-address .address-client-ct{\n\tfont-size:14px;\n\tcolor:#303030;\n\tline-height:24px;\n\tmargin:0px 0px 10px;\n}\n.contact-client-address p{\n\tfont-size:14px;\n\tcolor:#303030;\n\tmargin:0px 0px 0px 0px;\n}\n.contact-client-v2{\n\ttext-align:center;\n}\n.contact-img-v2 .contact-client-name{\n\tfont-size:20px;\n\tcolor:#03a9f4;\n\tfont-weight:600;\n}\n.contact-img-v2 .contact-client-name:hover{\n\tcolor:#303030;\n}\n.contact-client-img.contact-img-v2 {\n    margin-bottom: 20px;\n}\n.contact-client-address .client-addres-v2{\n\tpadding:0px 30px;\n}\n.contact-client-footer{\n\tmargin-top:15px;\n}\n.contact-client-footer .btn-group a {\n    margin: 0px 10px;\n    color: #fff;\n    font-size: 13px;\n    font-weight: 400;\n    border: 1px solid #ff9966;\n\tbackground:linear-gradient(to bottom, #ff9966 0%, #d75151 100%);\n}\n/*----------------------------------------*/\n/*  26.  profile css\n/*----------------------------------------*/\n.user-profile-sparkline{\n\tbackground:none;\n\tpadding:0px;\n}\n.user-profile-social-list {\n    margin: 5px 0px;\n}\n.user-profile-img img{\n\tborder-radius:50%;\n\tborder:4px solid #ddd;\n}\n.user-profile-content h2, .user-profile-about h2{\n\tfont-size:20px;\n\tcolor: #303030;\n}\n.user-profile-content .profile-founder{\n\tfont-size:14px;\n\tcolor: #303030;\n\tmargin:0px 0px 10px;\n}\n.user-profile-content .profile-des{\n\tfont-size:14px;\n\tcolor: #303030;\n\tmargin:0px;\n\tline-height:24px;\n}\n.user-profile-about p{\n\tfont-size:14px;\n\tcolor: #303030;\n\tline-height:24px;\n}\n.user-profile-about span{\n\tfont-size:14px;\n\tcolor: #303030;\n}\n.user-profile-about .user-profile-online{\n\tfont-size:12px;\n\tcolor: #1ab394;\n}\n.user-profile-contact ul.profile-contact-menu li{\n\tdisplay:block;\n}\n.user-profile-contact ul.profile-contact-menu li img{\n\tborder-radius: 50%;\n    height: 50px;\n    margin-right: 15px;\n    width: 50px;\n}\n.user-profile-contact ul.profile-contact-menu li {\n    display: block;\n    padding-bottom: 15px;\n}\n.user-profile-contact ul.profile-contact-menu li a{\n    display: block;\n\tfont-size:14px;\n\tcolor:#303030;\n}\n.user-profile-contact ul.profile-contact-menu li span.contact-profile-online-f{\n   text-align: right;\n    float: right;\n    padding: 18px 0px;\n    font-size: 10px;\n    color: #ff9966;\n    margin-right: 15px;\n}\n.user-profile-contact ul.profile-contact-menu li:last-child {\n    padding-bottom: 0px;\n}\nul.profile-contact-menu {\n    text-align: left;\n}\n.user-profile-post{\n\t\n}\n.user-profile-post-action .comment-action-st, .user-profile-post-action .comment-action-st.in {\n    width: 140%;\n}\n.user-profile-post-name a{\n\tfont-size:20px;\n\tcolor: #03a9f4;\n}\n.user-profile-post-name p{\n\tfont-size:14px;\n\tcolor: #303030;\n}\n.user-profile-post-name a:hover{\n\tfont-size:20px;\n\tcolor: #303030;\n}\n.profile-user-post-content p{\n\tfont-size:14px;\n\tcolor: #303030;\n\tline-height:24px;\n\tmargin:15px 0px;\n}\n.user-post-reply .btn{\n\tmargin-right:5px;\n\tborder-radius:0px;\n}\n.user-profile-img-post img{\n\tborder-radius:50%;\n}\n.user-profile-comment-list{\n\tpadding:20px;\n\tbackground:#f1f1f1;\n}\n.user-profile-post{\n\tborder:1px solid #ccc;\n}\n.user-profile-comment-img img{\n\tborder-radius:50%;\n}\n.user-profile-comment-content p{\n\tfont-size:13px;\n\tcolor: #303030;\n\tline-height:22px;\n\tmargin:0px 0px 5px;\n}\n.profile-comment-mg, .replay-user-comment-pro{\n\tmargin-top:20px;\n}\n.comment-replay-profile .btn-white{\n\tbackground: linear-gradient(to bottom, #ff9966 0%, #d75151 100%);\n\tcolor:#fff;\n\tmargin-right:5px;\n\toutline:none;\n}\n.comment-replay-profile .btn-white:focus{\n\toutline:none;\n}\n.user-profile-comment-input textarea {\n    width: 100%;\n    height: 60px;\n\tpadding:5px;\n\tfont-size:13px;\n}\n.user-profile-comment-input textarea:focus {\n    border:1px solid #03a9f4;\n}\n.post-user-profile-second{\n\tmargin-top:30px;\n}\n.profile-user-post-content .profile-user-post-img{\n\tmargin-bottom:15px;\n}\n.user-profile-mutual-friends h2{\n\tfont-size:20px;\n\tcolor: #303030;\n}\n.user-profile-mutual-friends p{\n\tfont-size:14px;\n\tcolor: #303030;\n\tline-height:24px;\n}\n.user-profile-mutual-friends .mutual-friend-list img{\n\tborder-radius: 50%;\n    width: 50px;\n    height: 50px;\n    margin-right: 2px;\n    margin-bottom: 5px;\n}\n/*----------------------------------------*/\n/*  27.  Project List css\n/*----------------------------------------*/\n.project-list-ad .btn{\n\tbackground:linear-gradient(to bottom, #1ab394 0%, #2dda7a 100%);\n\tcolor:#fff;\n}\n.project-list-ad .btn:focus{\n\toutline:none;\n}\n.project-list-ad-bl .btn{\n\tbackground:linear-gradient(to bottom, #ad6c7c 0%, rgb(216, 0, 255) 100%);\n\tcolor:#fff;\n}\n.btn-group-xs>.btn, .btn-xs{\n\tbackground:linear-gradient(to bottom, #ff9966 0%, #d75151 100%);\n\tcolor:#fff;\n}\n.btn-group-xs>.btn:focus, .btn-xs:focus{\n\toutline:none;\n}\n.btn.focus, .btn:focus, .btn:hover, .btn:active{\n\tcolor:#fff;\n\tbackground:linear-gradient(to bottom, #ff9966 0%, #d75151 100%);\n\toutline:none;\n}\n.project-list-ad-bl .btn:focus{\n\toutline:none;\n}\n.project-list-ad-rd .btn{\n\tbackground:linear-gradient(to bottom, #b96f77 0%, #ca0e0e 100%);\n\tcolor:#fff;\n}\n.project-list-ad-rd .btn:focus{\n\toutline:none;\n}\n.project-list-action .btn-action{\n\tmargin-right:10px;\n}\n.support-list-img img, .project-details-img img{\n\tborder-radius:50%;\n\theight:30px;\n\twidth:30px;\n}\n.support-list-img{\n\ttext-align:right;\n}\n\n/*----------------------------------------*/\n/*  28.  Project Details css\n/*----------------------------------------*/\n.admin-comment-month.project-details-action {\n    margin-top: 5px;\n}\n.project-details-title h2{\n\tfont-size:20px;\n\tcolor: #303030;\n}\n.project-details-action .comment-action-st, .project-details-action .comment-action-st.in{\n\twidth: 140%;\n}\n.project-details-st{\n\ttext-align:right;\n}\n.project-details-mg {\n    margin: 10px 0px;\n}\n.project-details-progress .skill .progress{\n\tmargin-top:30px;\n\tmargin-bottom:0px;\n}\n.project-pregress-details {\n    padding-left: 34px;\n\tpadding-top:20px;\n}\n.project-details-tab{\n\tmargin-top:30px;\n}\n.projuct-details-img-tab img {\n    height: 80px;\n    width: 80px;\n}\n.user-profile-comment-img.projuct-details-img-tab {\n    text-align: center;\n}\n.project-details-completeness .table-striped tbody tr td{\n\tfont-size: 13px;\n    color: #303030;\n    line-height: 22px;\n}\n.project-details-completeness .table-striped tbody tr td .label-primary{\n\tbackground-color: #03a9f4;\n    font-size: 13px;\n    font-weight: 400;\n}\n.project-details-tab .nav-tabs li a{\n\tcolor: #303030;\n}\n.project-details-tab .nav-tabs li a:hover, .project-details-tab .nav-tabs li a:focus, .project-details-tab .nav-tabs li a:active{\n\tcolor: #03a9f4;\n}\n.project-details-tab .comment-replay-profile .btn-white{\n\tbackground-color: #03a9f4;\n}\n.project-details-descri h2{\n\tfont-size:20px;\n\tcolor: #303030;\n}\n.project-details-descri p{\n\tfont-size:14px;\n\tcolor: #303030;\n\tline-height:24px;\n\tmargin:0px;\n}\n.project-details-files .view-mail-file-list{\n\tmargin-top:0px;\n}\n.project-details-price p{\n\tfont-size:14px;\n}\n.project-details-price-hd .single-skill, .project-details-price-hd .project-details-files{\n\tpadding:0px;\n}\n.project-details-price-hd .progress-circular1{\n\tpadding-top:17px;\n\tpadding-bottom:0px;\n}\n.progress-circular1.project-details-price h2{\n\tcolor:#303030;\n}\n/*----------------------------------------*/\n/*  29.  pdf css\n/*----------------------------------------*/\n.pdf-single-pro, .code-editor-single{\n\tpadding:20px;\n\tbackground-color: #fff;\n}\n/*----------------------------------------*/\n/*  30.  Code Editor css\n/*----------------------------------------*/\n.code-editor-single h2{\n\tfont-size: 20px;\n    color: #303030;\n    margin: 0px 0px 15px;\n}\n/*----------------------------------------*/\n/*  31.  Google Map css\n/*----------------------------------------*/\n#map{\n    height: 100%;\n}\n#map1 {\n    height: 100%;\n}\n#map2 {\n    height: 100%;\n}\n#googleMap {\n    height: 100%;\n}\n#maplan {\n    height: 100%;\n}\n#map6 {\n    height: 100%;\n}\n#map7 {\n    height: 100%;\n}\n#map8 {\n    height: 100%;\n}\n.google-map-single{\n\twidth:100%;\n\theight:300px;\n}\n/*----------------------------------------*/\n/*  32.  Data Maps css\n/*----------------------------------------*/\n\n.data-map-area .sparkline7-graph, .data-map-area .sparkline8-graph, .data-map-area .sparkline9-graph, .data-map-area .sparkline11-graph, .data-map-area .sparkline12-graph, .data-map-area .sparkline13-graph, .data-map-area .sparkline14-graph{\n\ttext-align:left;\n}\n.basic-choropleth{\n\theight:400px;\n\twidth:100%;\n}\n/*----------------------------------------*/\n/*  33.  Preloader css\n/*----------------------------------------*/\n.preloader-single{\n\tbackground: #fff;\n    width: 100%;\n    height: 350px;\n    padding: 20px;\n}\n/*----------------------------------------*/\n/*  34.  Password Meter css\n/*----------------------------------------*/\n.password-meter{\n\tbackground: #fff;\n\tpadding:20px;\n}\n.text-strong-password {\n    text-align: left;\n}\n.password-meter-area .sparkline7-graph, .password-meter-area .sparkline8-graph, .password-meter-area .sparkline9-graph, .sparkline11-graph, .password-meter-area .sparkline12-graph, .password-meter-area .sparkline13-graph, .password-meter-area .sparkline14-graph{\n\ttext-align:left;\n}\n.password-meter-area .has-error .form-control{\n\tborder-color: #ed5565;\n}\n.password-meter-area .form-control{\n\tborder-radius: 0px;\n}\n/*----------------------------------------*/\n/*  35.  Tree Viewer css\n/*----------------------------------------*/\n\n.tree-viewer-area .sparkline7-graph, .tree-viewer-area .sparkline8-graph, .tree-viewer-area .sparkline9-graph, .tree-viewer-area .sparkline11-graph, .tree-viewer-area .sparkline12-graph, .tree-viewer-area .sparkline13-graph, .tree-viewer-area .sparkline14-graph{\n\ttext-align:left;\n}\n/*----------------------------------------*/\n/*  36.  Static Table css\n/*----------------------------------------*/\n.sparkline7-graph .static-table-list, .sparkline8-graph .static-table-list, .sparkline9-graph .static-table-list, .sparkline11-graph .static-table-list, .sparkline12-graph .static-table-list, .sparkline13-graph .static-table-list, .sparkline14-graph .static-table-list{\n\ttext-align:left;\n}\n.static-table-list .table{\n\tmargin-bottom:0px;\n}\n.static-table-list .table>thead>tr>th{\n\tborder-bottom:1px solid #ddd;\n}\n.sparkle-table>tbody>tr:nth-of-type(odd) {\n    background-color: #f9f9f9;\n}\n.border-table{\n\tborder: 1px solid #EBEBEB;\n}\n.border-table > thead > tr > th{\n\tbackground-color: #F5F5F6;\n}\n.hover-table>tbody>tr:hover {\n    background-color: #f5f5f5;\n}\n/*----------------------------------------*/\n/*  37.  Basic Form css\n/*----------------------------------------*/\n.sparkline8-graph .basic-login-inner, .sparkline8-graph .login-social-inner, .sparkline9-graph .basic-login-form-ad, .sparkline11-graph .basic-login-form-ad{\n\ttext-align:left;\n}\n.form-group-inner {\n    margin-bottom: 15px;\n}\n.form-group-inner label{\n\tfont-size:14px;\n\tcolor:#303030;\n}\n.form-group-inner input[type=\"email\"], .form-group-inner input[type=\"password\"], .form-group-inner input[type=\"text\"], .form-select-list .custom-select-value{\n\tfont-size:14px;\n\tcolor:#303030;\n\tborder:1px solid #ddd;\n\toutline:none;\n\tborder-radius:0px;\n\tbox-shadow: none;\n}\n.form-group-inner input[type=\"email\"]:focus, .form-group-inner input[type=\"password\"]:focus, .form-group-inner input[type=\"text\"]:focus, .form-select-list .custom-select-value:focus{\n\tborder:1px solid #ff9966;\n\toutline:none;\n\tborder-radius:0px;\n\tbox-shadow: none;\n}\n.icheckbox_square-green, .iradio_square-green {\n    display: inline-block;\n    vertical-align: middle;\n    margin: 0;\n    padding: 0;\n    width: 22px;\n    height: 22px;\n    background: url(img/green1.png) no-repeat;\n    border: none;\n    cursor: pointer;\n}\n.icheckbox_square-green {\n    background-position: 0 0;\n}\n.icheckbox_square-green.hover {\n    background-position: -22px 0;\n}\n.icheckbox_square-green.checked {\n    background-position: -44px 0;\n\ttransition: all 0.3s ease 0s;\n}\n.login-btn-inner .check-label{\n\tmargin-left:5px;\n}\n.login-btn-inner .label-check-inner{\n\tmargin:0px;\n\tpadding-top:5px;\n}\n.login-btn-inner .login-submit-cs{\n\tbackground: linear-gradient(to bottom, #ff9966 0%, #d75151 100%);\n    border-color: #ff9966;\n\tfont-size:14px;\n\tfont-weight:400;\n\tborder-radius:0px;\n}\n.login-btn-inner .btn-primary.active.focus, .login-btn-inner .btn-primary.active:focus, .login-btn-inner .btn-primary.active:hover, .login-btn-inner .btn-primary:active.focus, .login-btn-inner .btn-primary:active:focus, .login-btn-inner .btn-primary:active:hover, .login-btn-inner .btn-primary:hover, .login-btn-inner .btn-primary:active, .login-btn-inner .btn-primary:focus{\n\tbackground: linear-gradient(to bottom, #ff9966 0%, #d75151 100%);\n    border-color: #ff9966;\n\tborder-radius:0px;\n\toutline: 0px auto -webkit-focus-ring-color;\n    outline-offset: 0px;\n}\n.create-account-sign a{\n\tcolor: #03a9f4;\n    font-size: 100px;\n    padding: 5px 70px;\n    display: block;\n}\n.create-account-sign a:hover{\n\tcolor: #303030;\n}\n.login-social-inner{\n\tmargin-bottom:20px;\n}\n.login-social-inner a.button {\n    line-height: 42px;\n    text-decoration: none;\n\tmargin-right:5px;\n}\n.login-social-inner .btn-social {\n    position: relative;\n}\n.login-social-inner .span-left {\n    padding-left: 55px;\n    padding-right: 15px;\n}\n.login-social-inner .facebook {\n    background-color: #3b5998;\n}\n.login-social-inner .twitter, .login-social-inner .twitter:hover, .login-social-inner .twitter:focus, .login-social-inner .facebook, .login-social-inner .facebook:hover, .login-social-inner .facebook:focus, .login-social-inner .googleplus, .login-social-inner .googleplus:hover, .login-social-inner .googleplus:focus, .login-social-inner .linkedin, .login-social-inner .linkedin:hover, .login-social-inner .linkedin:focus {\n    color: #fff;\n    text-shadow: 0 1px rgba(0, 0, 0, 0.08);\n}\n.login-social-inner .button {\n    border: 0;\n    height: 42px;\n    color: #fff;\n    line-height: 1;\n    font-size: 15px;\n    cursor: pointer;\n    text-align: center;\n    vertical-align: top;\n    display: inline-block;\n    -webkit-user-drag: none;\n    text-shadow: 0 1px rgba(255, 255, 255, 0.2);\n}\n.login-social-inner .button{\n    -webkit-transition: all 0.5s ease-in-out;\n    -moz-transition: all 0.5s ease-in-out;\n    -ms-transition: all 0.5s ease-in-out;\n    -o-transition: all 0.5s ease-in-out;\n    transition: all 0.5s ease-in-out;\n    -webkit-border-radius: 0;\n    -moz-border-radius: 0;\n    -ms-border-radius: 0;\n    -o-border-radius: 0;\n    border-radius: 0;\n    outline: none;\n}\n.login-social-inner .facebook:hover, .login-social-inner .facebook:focus {\n    background-color: #25385F;\n}\n.login-social-inner .facebook span {\n    background-color: #31497D;\n}\n.login-social-inner .btn-social span {\n    -webkit-border-radius: 3px 0 0 3px;\n    -moz-border-radius: 3px 0 0 3px;\n    -o-border-radius: 3px 0 0 3px;\n    border-radius: 3px 0 0 3px;\n    display: inline-block;\n    text-align: center;\n    position: absolute;\n    width: 42px;\n    left: 0;\n}\n.login-social-inner .btn-social i {\n    font-size: 22px;\n    position: relative;\n    top: 2px;\n}\n.login-social-inner .twitter span {\n    background-color: #009AD5;\n}\n.login-social-inner .twitter {\n    background-color: #00acee;\n}\n.login-social-inner .twitter:hover, .login-social-inner .twitter:focus {\n    background-color: #00749F;\n}\n.login-social-inner .googleplus span {\n    background-color: #C03121;\n}\n.login-social-inner .googleplus:hover, .login-social-inner .googleplus:focus {\n    background-color: #8D2418;\n}\n.login-social-inner .googleplus {\n    background-color: #dd4b39;\n}\n.login-social-inner .linkedin span {\n    background-color: #084261;\n}\n.login-social-inner .linkedin:hover, .login-social-inner .linkedin:focus {\n    background-color: #084261;\n}\n.login-social-inner .linkedin {\n    background-color: #0077B5;\n}\n.login-horizental {\n    margin-top: 20px;\n}\n.form-group-inner label.login2 {\n    margin: 0px;\n    padding: 7px 0px;\n}\n.inline-basic-form .form-group-inner{\n\tmargin-bottom:0px;\n}\n.modal-login-form-inner{\n\ttext-align:left;\n}\n.modal-adminpro-general .modal-body .modal-basic-inner p{\n\tmargin-bottom:15px;\n}\n.modal-bootstrap.modal-login-form {\n    padding: 7px 20px;\n\tbackground: linear-gradient(to bottom, #ff9966 0%, #d75151 100%);\n\tdisplay:inline-block;\n\ttext-align:center;\n}\n.modal-bootstrap.modal-login-form a{\n\tcolor: #fff;\n}\n.bt-df-checkbox {\n    padding: 8px 0px;\n    margin: 0;\n}\n.bt-df-checkbox .radio-checked {\n    margin-right: 8px;\n}\n.icheckbox_square-green.checked {\n    background-position: -44px 0;\n}\n.icheckbox_square-green.checked.disabled {\n    background-position: -88px 0;\n}\n.iradio_square-green {\n    background-position: -109px 0;\n}\n.iradio_square-green.hover {\n    background-position: -131px 0;\n}\n.iradio_square-green.checked {\n    background-position: -153px 0;\n\ttransition: all 0.3s ease 0s;\n}\n.iradio_square-green.checked.disabled {\n    background-position: -197px 0;\n}\n.inline-checkbox-cs {\n    padding: 7px 0px;\n}\n.inline-checkbox-cs .checkbox-inline{\n\tpadding-left:0px;\n}\n.form-group-inner.input-with-success label{\n\tcolor: #1ab394;\n}\n.form-group-inner.input-with-success input[type=\"text\"]{\n\tborder: 1px solid #1ab394;\n}\n.form-group-inner.input-with-warning label{\n\tcolor: #f8ac59;\n}\n.form-group-inner.input-with-warning input[type=\"text\"]{\n\tborder: 1px solid #f8ac59;\n}\n.form-group-inner.input-with-error label{\n\tcolor: #ed5565;\n}\n.form-group-inner.input-with-error input[type=\"text\"]{\n\tborder: 1px solid #ed5565;\n}\n.inline-remember-me label {\n    margin: 0px;\n    padding: 5px 0px;\n}\n.input-group {\n    position: relative;\n    display: table;\n    border-collapse: separate;\n}\n.input-group-addon:first-child {\n    border-right: 0;\n}\n.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-group:not(:last-child)>.btn, .input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle) {\n    border-top-right-radius: 0;\n    border-bottom-right-radius: 0;\n}\n.input-group-addon {\n    background-color: #fff;\n    border: 1px solid #E5E6E7;\n    border-radius: 1px;\n    color: inherit;\n    font-size: 14px;\n    font-weight: 400;\n    line-height: 1;\n    padding: 6px 12px;\n    text-align: center;\n}\n.input-group-addon{\n    width: 1%;\n    white-space: nowrap;\n    vertical-align: middle;\n}\n.input-group .form-control {\n    position: relative;\n    z-index: 2;\n    float: left;\n    width: 100%;\n    margin-bottom: 0;\n}\n.form-control {\n    background-color: #FFFFFF;\n    background-image: none;\n    border: 1px solid #e5e6e7;\n    border-radius: 1px;\n    color: inherit;\n    display: block;\n    padding: 6px 12px;\n    transition: border-color 0.15s ease-in-out 0s, box-shadow 0.15s ease-in-out 0s;\n    width: 100%;\n}\n.custom-go-button .btn-primary, .custom-dropdowns-button .dropdown-toggle, .dropdown-segmented .dropdown-toggle, .dropdown-segmented .btn-white {\n    background: linear-gradient(to bottom, #ff9966 0%, #d75151 100%);\n    border-color: #ff9966;\n    color: #FFFFFF;\n\tborder-top-left-radius: 0;\n    border-bottom-left-radius: 0;\n}\n.custom-go-button .btn-primary, .custom-go-button .btn-primary:active, .custom-go-button .btn-primary:focus, .custom-dropdowns-button .dropdown-toggle, .custom-dropdowns-button .dropdown-toggle:active, .custom-dropdowns-button .dropdown-toggle:focus, .dropdown-segmented .dropdown-toggle, .dropdown-segmented .dropdown-toggle:active, .dropdown-segmented .dropdown-toggle:focus{\n\tborder-top-right-radius: 0;\n    border-bottom-right-radius: 0;\n\tbackground: linear-gradient(to bottom, #ff9966 0%, #d75151 100%);\n    border-color: #ff9966;\n}\n.dropdown-segmented .dropdown-toggle, .dropdown-segmented .dropdown-toggle:active, .dropdown-segmented .dropdown-toggle:focus{\n\tborder-left:1px solid #d75151;\n}\n.cancel-wp .btn-white, .cancel-wp .btn-white:active, .cancel-wp .btn-white:focus{\n\tborder-radius:0px;\n\toutline:none;\n}\n.file-upload-inner.ts-forms input[type=\"text\"]:hover, .file-upload-inner.ts-forms input[type=\"text\"]:focus, .file-upload-inner.ts-forms input[type=\"text\"]:active, .file-upload-inner.ts-forms .file-button:hover + input{\n\tborder: 1px solid #ff9966;\n\theight: 35px;\n}\n.file-upload-inner.ts-forms input[type=\"text\"]{\n\theight: 35px;\n}\n.file-upload-inner.ts-forms .file-button, .file-upload-inner.ts-forms .file-button:active, .file-upload-inner.ts-forms .file-button:focus{\n\tbackground: linear-gradient(to bottom, #ff9966 0%, #d75151 100%);\n\tborder-radius:0px;\n\twidth:70px;\n\theight: 35px;\n\tline-height: 35px;\n\ttop:0px;\n}\n.file-upload-inner.ts-forms .prepend-small-btn .file-button, .file-upload-inner.ts-forms .prepend-big-btn .file-button {\n    left: 0px;\n}\n.file-upload-inner.ts-forms .prepend-big-btn input[type=\"text\"] {\n    padding-left: 81px;\n}\n.file-upload-inner.ts-forms .icon-left, .file-upload-inner.ts-forms .icon-right{\n\ttop:0px;\n}\n.file-upload-inner.file-upload-inner-right.ts-forms .file-button, .file-upload-inner.file-upload-inner-right.ts-forms .file-button:active, .file-upload-inner.file-upload-inner-right.ts-forms .file-button:focus{\n\tright: 0px !important;\n}\n.file-upload-inner.file-upload-inner-right.ts-forms .append-small-btn .file-button input, .file-upload-inner.file-upload-inner-right.ts-forms .append-big-btn .file-button input{\n\tright: 0px !important;\n}\n.select2-container--default .select2-results__option--highlighted[aria-selected] {\n    background-color: #03a9f4;\n}\n.chosen-select-single label{\n\tfont-weight:400;\n\tfont-size:14px;\n}\n.spacer-b16a {\n    text-align: left;\n    margin-bottom: 5px;\n}\n.sliderv-wrapper.green-slider.green-left-pro {\n    margin-left: 8px;\n}\n.sliderv-wrapper.black-slider.slider-bl-pro {\n    margin-top: 22px;\n}\n.input-mask-title{\n\ttext-align:right;\n\tpadding: 5px 0px;\n}\n.input-mark-inner, .data-custon-pick, .touchspin-inner{\n\ttext-align:left;\n}\n.input-mask-title label, .input-mark-inner .help-block, .data-custon-pick label, .touchspin-inner label{\n\tfont-size:14px;\n\tfont-weight:400;\n}\n.input-mark-inner .form-control, .data-custon-pick .form-control{\n\tborder-radius:0px;\n}\n.input-mark-inner .form-control:focus, .input-mark-inner .form-control:active, .data-custon-pick .form-control:focus, .data-custon-pick .form-control:active{\n\toutline:none;\n\tbox-shadow:none;\n\tborder: 1px solid #03a9f4;\n}\n.form-group.data-custon-pick.data-custom-mg{\n\tmargin-bottom:0px;\n}\n.datepicker table tr td.active.active, .datepicker table tr td span.active.active{\n\tbackground-color: #03a9f4;\n    border-color: #03a9f4;\n}\n.ts-forms .tsbox {\n    position: relative;\n}\n.ts-forms .label {\n    font-size: 14px;\n    margin-bottom: 15px;\n    height: 14px;\n    color: #303030;\n    padding: 0px 0px 0px 0px;\n    margin: 0px 0px 5px 0px;\n}\n.ts-forms label {\n    display: block;\n    color: inherit;\n    font-weight: normal;\n    text-align: left;\n    margin-bottom: 0;\n}\n.ts-forms {\n    -webkit-border-radius: 3px;\n    -moz-border-radius: 3px;\n    -o-border-radius: 3px;\n    border-radius: 3px;\n    box-sizing: border-box;\n    color: rgba(0,0,0,.54);\n    line-height: 1;\n    position: relative;\n}\n.ts-forms input[type=\"text\"], .ts-forms input[type=\"password\"], .ts-forms input[type=\"email\"], .ts-forms input[type=\"search\"], .ts-forms input[type=\"url\"], .ts-forms textarea, .ts-forms select {\n\tbackground: #fff;\n    border: 1px solid rgba(0,0,0,.12);\n    border-radius: 0px;\n    color: rgba(0,0,0,.87);\n    display: block;\n    font-family: inherit;\n    font-size: 14px;\n    height: 34px;\n    padding: 10px 15px;\n    width: 100%;\n    outline: none;\n    -webkit-appearance: none;\n    -moz-appearance: none;\n    appearance: none;\n    -webkit-box-sizing: border-box;\n    -moz-box-sizing: border-box;\n    box-sizing: border-box;\n    -webkit-transition: all.4s;\n    -moz-transition: all.4s;\n    -ms-transition: all.4s;\n    -o-transition: all.4s;\n    transition: all.4s;\n}\n.sp-replacer {\n    background-color: #e0e0e0;\n    -webkit-border-radius: 0 3px 3px 0;\n    -moz-border-radius: 0 3px 3px 0;\n    -o-border-radius: 0 3px 3px 0;\n    border-radius: 0 3px 3px 0;\n    border: none;\n    bottom: 0;\n    cursor: pointer;\n    display: block;\n    outline: none;\n    padding-left: 16px;\n    padding-top: 0px;\n    position: absolute;\n    right: 0;\n    top: 0;\n    width: 52px;\n    color: rgba(0,0,0,.56);\n    -webkit-transition: color.4s;\n    -moz-transition: color.4s;\n    -ms-transition: color.4s;\n    -o-transition: color.4s;\n    transition: color.4s;\n}\n.sp-preview-inner, .sp-alpha-inner, .sp-thumb-inner {\n    display: block;\n    position: absolute;\n    top: 0;\n    left: 0;\n    bottom: 0;\n    right: 0;\n}\n.sp-replacer {\n\ttop: 20px !important;\n    padding-left: 10px !important;\n}\n.sp-preview {\n    position: relative;\n    width: 25px;\n    height: 20px;\n    border: solid 1px #222;\n    margin-right: 5px;\n    float: left;\n    z-index: 0;\n    top: 5px;\n}\n.sp-dd {\n    padding: 2px 0;\n    height: 16px;\n    line-height: 16px;\n    float: left;\n    font-size: 10px;\n    margin-top: 5px;\n}\n.dual-list-box-inner option{\n\tpadding:0px 15px;\n}\n.img-preview-custom{\n\theight: 130px;\n    width: 200px;\n\toverflow: hidden;\n}\n.dual-list-box-inner .comon-method{\n\tmargin-top:15px;\n}\n.images-cropper-pro .btn-primary{\n\tbackground: linear-gradient(to bottom, #ff9966 0%, #d75151 100%);\n    border-color: #ff9966;\n}\n.images-cropper-pro .btn-primary:active:focus, .images-cropper-pro .btn-primary:active:hover{\n\tbackground-color: linear-gradient(to bottom, #ff9966 0%, #d75151 100%);\n    border-color: #ff9966;\n}\n.images-action-pro .btn-warning{\n\tbackground: linear-gradient(to bottom, #ff9966 0%, #d75151 100%);\n    border-color: #ff9966;\n}\n.images-action-pro .btn-warning:active, .images-action-pro .btn-warning:focus, .images-action-pro .btn-warning:hover{\n\tbackground: linear-gradient(to bottom, #ff9966 0%, #d75151 100%);\n    border-color: #ff9966;\n\toutline:none;\n}\n.inbox-email-menu-list .nav-tabs>li>a{\n\tborder: 0px solid transparent;\n}\n.x-editable-list .table{\n\tmargin-bottom:0px;\n}\n.menu-list-mg-b.menu-list-wrap{\n\tmargin-bottom:40px\n}\n.inbox-bt-mg{\n    margin-bottom:15px;\n}\n/* ---------------------------------------------------\n    SIDEBAR STYLE\n----------------------------------------------------- */\n.container.header-top-fx {\n    position: fixed;\n    z-index: 999999999;\n\tbackground: #303030;\n}\n.header-top-area {\n    height: 60px;\n}\n.fixed-header-top{\n\tposition: fixed;\n    background: #303030;\n    z-index: 999;\n    left: 200px;\n    right: 0;\n    top: 0;\n    margin: 0 auto;\n\ttransition: all 0.3s;\n}\n.mini-navbar .fixed-header-top{\n    left: 80px;\n\ttransition: all 0.3s;\n}\n.mini-navbar .content-inner-all {\n    margin-left: 80px;\n\ttransition: all 0.3s;\n}\n.content-inner-all {\n    margin-left: 200px;\n\ttransition: all 0.3s;\n}\n.header-drl-controller-btn.btn-info{\n\tbackground-color: #2b2a2a;\n\tborder-color: #2b2a2a;\n\toutline:none;\n}\n.header-drl-controller-btn.btn-info:active:focus, .btn-info:active:hover{\n\tbackground-color: #303030;\n\tborder-color: #2b2a2a;\n\toutline:none;\n}\n.content-inner-all ul.message-list-menu li .message-info{\n\twidth:209px;\n}\n.left-sidebar-pro {\n    z-index: 9999;\n    width: 200px;\n\tbackground: #303030;\n\theight:100%;\n}\n#sidebar {\n    min-width: 200px;\n    background: #303030;\n    color: #fff;\n\tposition:fixed;\n    transition: all 0.3s;\n\tz-index:999;\n\theight:100%;\n}\n#sidebar.active {\n    min-width: 80px;\n    max-width: 80px;\n    text-align: center;\n}\n#sidebar.active .sidebar-header h3, #sidebar.active .CTAs {\n    display:none;\n}\n\n#sidebar.active .sidebar-header strong {\n    display: block;\n}\n\n#sidebar.active ul li .sidebar-right-icon {\n    display:none;\n}\n.bar-button-pro {\n    margin: 13px 0px;\n}\n\n#sidebar .sidebar-header {\n    padding: 20px;\n    background: #393939;\n}\n\n#sidebar .sidebar-header strong {\n    display: none;\n    font-size: 1.8em;\n}\n\n.sidebar-header {\n    text-align: center;\n}\n.sidebar-header h3 {\n    font-size: 20px;\n    color: #fff;\n    margin-top: 10px;\n    margin-bottom: 5px;\n}\n.sidebar-header img {\n   border-radius:50%;\n   width:50%;\n}\n#sidebar.active .sidebar-header img{\n\tdisplay:none;\n}\n#sidebar.active .sidebar-header h3{\n\tdisplay:none;\n}\n#sidebar.active .sidebar-header p{\n\tdisplay:none;\n}\n#sidebar ul li a .sidebar-right-icon{\n\tfloat: right;\n}\n.left-custom-menu-adp-wrap ul.left-sidebar-menu-pro{\n\twidth:100%;\n}\n.left-custom-menu-adp-wrap ul.left-sidebar-menu-pro li{\n\tdisplay:block;\n\tfloat:none;\n\tposition:relative;\n}\n.left-custom-menu-adp-wrap ul.left-sidebar-menu-pro li .left-menu-dropdown{\n\tposition:absolute;\n\tleft:0px;\n\ttop:0px;\n\topacity:0;\n\twidth:180px;\n\tborder-radius:0;\n\tborder:0px solid #fff;\n\tbox-shadow:none;\n\tbackground:#2b2a2a;\n}\n.left-custom-menu-adp-wrap ul.left-sidebar-menu-pro li .left-menu-dropdown a:hover{\n\tpadding:10px 30px;\n\ttransition:all .4s ease 0s;\n}\n.left-custom-menu-adp-wrap ul.left-sidebar-menu-pro li.open .left-menu-dropdown{\n\topacity:1;\n\tleft:200px;\n\tz-index:9999;\n}\n.left-custom-menu-adp-wrap ul.left-sidebar-menu-pro li.open .left-menu-dropdown.chart-left-menu-std{\n\ttop:-100px;\n}\n.left-custom-menu-adp-wrap ul.left-sidebar-menu-pro li.open .left-menu-dropdown.form-left-menu-std{\n\ttop:-100px;\n}\n.left-custom-menu-adp-wrap ul.left-sidebar-menu-pro li.open .left-menu-dropdown.apps-left-menu-std{\n\ttop:-180px;\n}\n.left-custom-menu-adp-wrap ul.left-sidebar-menu-pro li.open .left-menu-dropdown.pages-left-menu-std{\n\ttop:-270px;\n}\n.left-custom-menu-adp-wrap ul.left-sidebar-menu-pro li a{\n\tdisplay:block;\n\tpadding:10px 20px;\n\tcolor:#fff;\n\ttransition:all .4s ease 0s;\n}\n.left-custom-menu-adp-wrap ul.left-sidebar-menu-pro li a:hover, .left-custom-menu-adp-wrap ul.left-sidebar-menu-pro li a:focus, .left-custom-menu-adp-wrap ul.left-sidebar-menu-pro li a:active, .left-custom-menu-adp-wrap ul.left-sidebar-menu-pro li a:visited{\n\tbackground:#2b2a2a;\n\tcolor:#fff;\n}\n.left-custom-menu-adp-wrap ul.left-sidebar-menu-pro li .indicator-right-menu{\n\tfloat: right;\n}\n#sidebar.active .left-custom-menu-adp-wrap ul.left-sidebar-menu-pro li.open .left-menu-dropdown {\n    left: 80px;\n}\n#sidebar.active .left-custom-menu-adp-wrap ul.left-sidebar-menu-pro li .mini-dn {\n    display:none;\n}\n#sidebar.active .left-custom-menu-adp-wrap ul.left-sidebar-menu-pro li .big-icon {\n    font-size:20px;\n}\n#sidebar.active .left-custom-menu-adp-wrap ul.left-sidebar-menu-pro li > a {\n    padding: 20px 20px;\n}\n\n/* ---------------------------------------------------\n    Material Design\n----------------------------------------------------- */\n.darklayout .welcome-wrapper, .darklayout .dashboard-line-chart, .darklayout .dashone-adminprowrap, .darklayout  .sparkline-content, .darklayout  .sparkline7-graph, .darklayout  .sparkline8-graph, .darklayout  .sparkline9-graph, .darklayout  .sparkline10-graph, .darklayout  .sparkline11-graph, .darklayout  .sparkline12-graph, .darklayout  .sparkline13-graph, .darklayout  .sparkline14-graph, .darklayout  .sparkline15-graph, .darklayout  .sparkline16-graph, .darklayout .income-title, .darklayout .income-dashone-pro, .darklayout .dashtwo-order-list, .darklayout .tab-content-details, .darklayout .admin-pro-accordion-wrap, .darklayout .smart-sparkline-list, .darklayout .login-bg{\n\tbackground: #393939;\n}\n.darklayout .flot-tick-label.tickLabel, .darklayout .legend > div{\n\tcolor: #393939;\n}\n.darklayout .legend > div{\n\tbackground: #393939 !important;\n}\n.darklayout .welcome-adminpro-title h1, .darklayout .welcome-adminpro-title p, .darklayout .content-inner-all ul.message-list-menu li .message-info, .darklayout .breadcome-heading h2, .darklayout ul.breadcome-menu li a, .darklayout ul.breadcome-menu li, .darklayout ul.message-list-menu li .message-time, .darklayout .linechart-dash-rate h2, .darklayout .linechart-dash-rate p, .darklayout .dash-adminpro-project-title h2, .darklayout .dash-adminpro-project-title p, .darklayout .project-dashone-phara p, .darklayout .dashone-doughnut h3, .darklayout .dashone-doughnut h3, .darklayout .main-spark-hd h1, .darklayout .smart-main-spark-hd h1, .darklayout .main-spark7-hd h1, .darklayout .main-sparkline8-hd h1, .darklayout .main-sparkline9-hd h1, .darklayout .main-sparkline10-hd h1, .darklayout .main-sparkline11-hd h1, .darklayout .main-sparkline12-hd h1, .darklayout .main-sparkline13-hd h1, .darklayout .main-sparkline14-hd h1, .darklayout .main-sparkline15-hd h1, .darklayout .main-sparkline16-hd h1, .darklayout .outline-icon span, .darklayout .smart-outline-icon span, .darklayout .sparkline7-outline-icon span, .darklayout .sparkline8-outline-icon span, .darklayout .sparkline9-outline-icon span, .darklayout .sparkline10-outline-icon span, .darklayout .sparkline11-outline-icon span, .darklayout .sparkline12-outline-icon span, .darklayout .sparkline13-outline-icon span, .darklayout .sparkline14-outline-icon span, .darklayout .sparkline15-outline-icon span, .darklayout .sparkline16-outline-icon span, .darklayout .dashone-bar-heading h2, .darklayout  .timeline-heading-admin h1, .darklayout .sparkline-content p, .darklayout .timeline-content h3, .darklayout .icon-date-timeline i, .darklayout .dashone-comment .comment-content, .darklayout .dashone-comment .comment-clock, .darklayout .income-title h2, .darklayout .income-rate-total h3, .darklayout .income-range p, .darklayout .fixed-table-pagination .pagination-info, .darklayout .fixed-table-pagination .page-list, .darklayout .custom-datatable-overright table tbody tr td a, .darklayout .fixed-table-container thead th .th-inner, .darklayout .fixed-table-container tbody td .th-inner, .darklayout .flot-chart-dashtwo .legendLabel, .darklayout .tab-content-details h2, .darklayout .tab-content-details p, .darklayout .alert-title h2, .darklayout .alert-title p, .darklayout .login-title h1, .darklayout .login-input-head p{\n\tcolor: #fff;\n}\n.darklayout .dashone-bar-heading a:hover, .darklayout .dashone-bar-small p{\n\tcolor: #fff;\n}\nul.breadcome-menu {\n    text-align: right;\n}\n.darklayout .breadcome-heading h2{\n\tmargin:0px;\n}\n.darklayout ul.message-list-menu li, .darklayout .comment-phara{\n\tborder-bottom: 1px solid #303030;\n}\n.darklayout .timeline-adminpro-cn, .darklayout .timeline-date-time-bd, .darklayout .timeline-date-time-bd:before, .darklayout .timeline-adminpro-cn:before{\n\tborder-left: 1px solid #303030;\n    border-bottom: 1px solid #303030;\n    border-top: 1px solid #303030;\n}\n.darklayout .timelinewrap-admin:hover .timeline-adminpro-cn, .darklayout .timelinewrap-admin:hover .timeline-date-time-bd{\n\tbackground: #303030;\n}\n.materialdesign .breadcome-list{\n\tmargin-top:15px;\n\tbackground: #fff;\n}\n.materialdesign .admin-dashone-data-table-area, .materialdesign .transition-world-area{\n\tmargin-bottom:15px;\n}\n.darklayout .sparkline-hd, .darklayout .smart-sparkline-hd, .darklayout .sparkline7-hd, .darklayout .sparkline8-hd, .darklayout .sparkline9-hd, .darklayout .sparkline10-hd, .darklayout .sparkline11-hd, .darklayout .sparkline12-hd, .darklayout .sparkline13-hd, .darklayout .sparkline14-hd, .darklayout .sparkline15-hd, .darklayout .sparkline16-hd {\n    background: #393939;\n    border-bottom: 1px solid #303030;\n}\n.darklayout .fixed-table-container{\n\tborder: 1px solid #303030;\n}\n.darklayout .bootstrap-table .table > thead > tr > th{\n\tborder-bottom: 1px solid #303030;\n}\n.darklayout .table-hover>tbody>tr:hover {\n    background-color: #303030;\n}\n.darklayout .table>tbody>tr>td, .darklayout .table>tbody>tr>th, .darklayout .table>tfoot>tr>td, .darklayout .table>tfoot>tr>th, .darklayout .table>thead>tr>td, .darklayout .table>thead>tr>th{\n\tborder-top: 1px solid #303030;\n\tcolor: #fff;\n}\n.darklayout .fixed-table-container tbody td{\n\tborder-left: 1px solid #303030;\n}\n.darklayout .fixed-table-container thead th{\n\tborder-left: 1px solid #303030;\n}\n.darklayout .editable-click, .darklayout a.editable-click, .darklayout a.editable-click:hover, .darklayout .bootstrap-table .table{\n\tborder-bottom: dashed 1px #303030;\n}\n.darklayout .form-control{\n\tbackground-color: #303030;\n    border: 1px solid #303030;\n\tcolor: #fff;\n}\n.darklayout .btn-default{\n\tcolor: #fff;\n    background-color: #303030;\n    border-color: #393939;\n}\n.darklayout .btn-default:focus{\n\toutline:none;\n}\n.darklayout .form-control:focus{\n\tbox-shadow:none;\n}\n.darklayout .btn-default:active:focus, .darklayout .btn-default.active, .darklayout .btn-default:active, .darklayout .open>.dropdown-toggle.btn-default{\n\tbackground-color: #303030;\n    border-color: #303030;\n\tcolor: #fff;\n}\n.darklayout .dropdown-menu, .darklayout .fixed-table-container tbody .selected td, .darklayout .ui-datepicker{\n\tbackground-color: #303030;\n}\n.darklayout .jstree-anchor:hover{\n\tbackground-color: #303030;\n}\n.darklayout .dropdown-menu, .darklayout .pagination>li>a, .darklayout .pagination>li>span{\n\tborder: 1px solid #303030;\n}\n.darklayout .dropdown-menu>li>a:hover, .darklayout .custom-datatable-overright .card-view:hover, .darklayout ul.comment-action-st li a:hover{\n\tbackground-color: #393939;\n}\n.darklayout .fixed-table-toolbar .columns label, .darklayout .dropdown-menu>li>a:focus, .darklayout .dropdown-menu>li>a:hover, .darklayout .dropdown-menu>li>a, .darklayout .custom-datatable-overright .card-view, .darklayout .ui-datepicker-title, .darklayout .ui-icon.ui-icon-circle-triangle-w, .darklayout .ui-icon.ui-icon-circle-triangle-e, .darklayout .ui-datepicker-calendar a, .darklayout .ui-datepicker-calendar span{\n\tcolor: #fff;\n}\n.darklayout .pagination>li>a, .pagination>li>span{\n\tcolor: #fff;\n\tbackground-color: #303030;\n}\n.darklayout .ui-datepicker-calendar th{\n\ttext-align:center;\n}\n.darklayout .skill .progress .lead-content h3, .darklayout .skill .progress .lead-content p, .darklayout .daily-feed-content h4, .darklayout .daily-feed-content p, .darklayout .dashtwo-messages .dashtwo-messsage-title, .darklayout ul.comment-action-st li a{\n\tcolor: #fff;\n}\n.darklayout .daily-feed-list {\n    border-bottom: 1px solid #303030;\n}\n.darklayout .daily-feed-content .message-feed-single{\n\tbackground-color: #303030;\n\tborder: 1px solid #393939;\n}\n.darklayout .daily-feed-content .btn-white-like{\n\tbackground-color: #303030;\n\tborder: 1px solid #393939;\n}\n.darklayout .income-title{\n\tborder: 1px solid #303030;\n}\n.darklayout .daily-feed-list.daily-feed-bbm{\n\tborder: 0px solid #393939;\n}\n.darklayout .daily-feed-content .btn-white-like:hover{\n\tcolor: #fff;\n}\n.darklayout .custom-datatable-overright table tbody tr td{\n\tpadding-right: 0px !important;\n}\n.darklayout .comment-action-st, .darklayout .comment-action-st.in{\n\tcolor: #fff;\n\tbackground-color: #303030;\n\tborder: 1px solid #393939;\n}\n.darklayout .mg-b-15, .darklayout .darklayout-alert{\n\tmargin-bottom:15px;\n}\n.darklayout .adminpro-custon-design .admin-panel-content{\n\tbackground-color: #353535;\n}\n.darklayout .knob-single input{\n\tposition: absolute;\n    top: 0px;\n    right: 34px;\n}\n.darklayout .chosen-container-single .chosen-single, .darklayout .multipleInput-container, .darklayout .multipleInput-container input{\n\tcolor: #fff;\n\tbackground-color: #303030;\n\tborder: 1px solid #303030;\n}\n.darklayout .chosen-container .chosen-drop{\n\tbackground-color: #303030;\n}\n.darklayout .chosen-container-single .chosen-search input[type=\"text\"]{\n\tbackground-color: #393939;\n\tcolor: #fff;\n}\n.darklayout .chosen-container .chosen-results, .darklayout .chosen-select-single label, .darklayout .select2-container--default .select2-selection--single .select2-selection__rendered, .darklayout .select2-results__option, .darklayout .select2-container--default .select2-selection--multiple .select2-selection__choice, .darklayout .input-mask-title{\n\tcolor: #fff;\n}\n.darklayout .chosen-container .chosen-results .no-results, .darklayout  .ts-forms input[type=\"text\"], .darklayout  .ts-forms input[type=\"password\"], .darklayout  .ts-forms input[type=\"email\"], .darklayout  .ts-forms input[type=\"search\"], .darklayout  .ts-forms input[type=\"url\"], .darklayout  .ts-forms textarea, .ts-forms select, .darklayout .sp-replacer, .darklayout .alert-wrap1, .darklayout .alert-wrap2, .darklayout .alert-icon, .darklayout .skill .progress, .darklayout .progress, .darklayout .nav>li>a:focus, .darklayout .nav>li>a:hover, .darklayout .inbox-email-menu-list .nav-tabs>li.active>a, .darklayout .inbox-email-menu-list .nav-tabs>li.active>a:focus, .darklayout .inbox-email-menu-list .nav-tabs>li.active>a:hover, .darklayout .panel-default>.panel-heading, .darklayout .custom-inbox-message .table-hover>tbody>tr.new-email, .darklayout .nav-tabs>li.active>a, .darklayout .nav-tabs>li.active>a:focus, .darklayout .nav-tabs>li.active>a:hover, .darklayout .project-list-action .btn-white, .darklayout .conversation-list .ctext-wrap{\n\tbackground-color: #303030;\n}\n.darklayout .nav-tabs>li.active>a, .darklayout .nav-tabs>li.active>a:focus, .darklayout .nav-tabs>li.active>a:hover{\n\tbackground-color: #303030;\n\tborder: 1px solid #303030;\n\tcolor:#fff;\n}\n.darklayout .nav-tabs>li>a{\n\tcolor:#fff;\n}\n.darklayout .nav-tabs>li>a:hover {\n    border-color: #303030 #303030 #303030;\n}\n.darklayout .nav-tabs {\n    border-bottom: 1px solid #303030;\n}\n.darklayout  .ts-forms input[type=\"text\"], .darklayout  .ts-forms input[type=\"password\"], .darklayout  .ts-forms input[type=\"email\"], .darklayout  .ts-forms input[type=\"search\"], .darklayout  .ts-forms input[type=\"url\"], .darklayout  .ts-forms textarea, .ts-forms select, .darklayout .ts-forms .label, .darklayout .inbox-email-menu-list .nav-tabs li a, .darklayout .inbox-email-menu-list .nav-tabs li a:hover, .darklayout .inbox-email-menu-list .nav-tabs li a:focus, .darklayout .inbox-email-menu-list .nav-tabs li a:active, .darklayout .mail-title h2, .darklayout .compose-email-to, .darklayout .compose-multiple-email, .darklayout .download-custom h2, .darklayout .adminpro-cloud-computing-down:before, .darklayout .adminpro-form .checkbox, .darklayout .login-textarea-area .contact-message, .darklayout .main-title-hd h3, .darklayout .view-author-mail span, .darklayout .view-mail-content h3, .darklayout .view-mail-content p, .darklayout .all-attachment-area ul.attachment-menu-view li a, .darklayout .file-type-view p, .darklayout .view-file-in i, .darklayout .user-profile-comment-content p, .darklayout .profile-time-ds-none, .darklayout .btn-group-vertical>.btn.active, .darklayout .btn-group-vertical>.btn:active, .darklayout .btn-group-vertical>.btn:focus, .darklayout .btn-group-vertical>.btn:hover, .darklayout .btn-group>.btn.active, .darklayout .btn-group>.btn:active, .darklayout .btn-group>.btn:focus, .darklayout .btn-group>.btn:hover, .darklayout .review-title span, .darklayout .custom-menu-content ul.main-menu-dropdown li a, .darklayout .conversation-list .ctext-wrap i, .darklayout .conversation-list .ctext-wrap p, .darklayout #todo-message, .darklayout .checkbox label{\n\tcolor: #fff;\n}\n.darklayout .chosen-container-multi .chosen-choices, .darklayout .select2-container--default .select2-selection--single, .darklayout .select2-dropdown, .darklayout .select2-container--default .select2-selection--multiple, .darklayout .login-input-area input[type=\"email\"], .darklayout .login-input-area input[type=\"password\"], .darklayout .login-input-area input, .darklayout .interested-input-area select, .darklayout .budget-input-area select[type=\"text\"], .darklayout .interested-input-area select, .darklayout .budget-input-area select, .darklayout .login-textarea-area .contact-message, .darklayout .compose-multiple-email.compose-subject-email input[type=\"text\"], .darklayout .images-action-pro .btn-warning, .darklayout .images-action-pro .btn-white, .darklayout .user-post-reply .btn{\n\tbackground-color: #303030;\n\tborder: 1px solid #303030;\n}\n.darklayout .conversation-list .ctext-wrap:after{\n\tborder-right-color: #303030;\n}\n.darklayout .dropzone, .darklayout .user-profile-comment-list, .darklayout .border-table > thead > tr > th, .darklayout .tab-custon-menu-bg-style:before{\n\tbackground-color: #303030;\n}\n.darklayout .user-profile-post, .darklayout .table-bordered, .darklayout .table-bordered>tbody>tr>td, .darklayout .table-bordered>tbody>tr>th, .darklayout .table-bordered>tfoot>tr>td, .darklayout .table-bordered>tfoot>tr>th, .darklayout .table-bordered>thead>tr>td, .darklayout .table-bordered>thead>tr>th, .darklayout .border-table{\n\tborder: 1px solid #303030;\n}\n.darklayout .static-table-list .table>thead>tr>th{\n\tborder-bottom: 1px solid #303030;\n}\n.darklayout .note-editor.note-frame .note-editing-area .note-editable, .darklayout .images-cropper-pro .btn-primary{\n\tbackground-color: #303030;\n\tborder: 1px solid #303030;\n}\n.darklayout .panel-heading, .darklayout .note-editor.note-frame{\n\tborder: 1px solid #393939;\n}\n.darklayout .login-textarea-area .login-user{\n\tborder-left: 1px solid #393939;\n    border-bottom: 1px solid #393939;\n}\n.darklayout .login-input-area .login-user{\n\tborder: 1px solid #393939;\n}\n.darklayout .login-input-area #txtCompare{\n\tbackground-color: #232121;\n\tborder: 1px solid #303030;\n\tcolor: #fff;\n}\n.darklayout .chosen-container-multi .chosen-choices .search-choice{\n\tbackground-color: #393939;\n    border: 1px solid #393939;\n\tcolor: #fff;\n\tbackground-image:none;\n}\n.darklayout .help-block{\n\tcolor: #d6cece;\n}\n.darklayout .select2-container--default .select2-search--dropdown .select2-search__field, .darklayout .select2-container--default .select2-selection--multiple .select2-selection__choice{\n\tbackground-color: #393939;\n    border: 1px solid #393939;\n}\n.darklayout .themesaller-forms label, .darklayout .themesaller-forms input, .darklayout .themesaller-forms button, .darklayout .themesaller-forms select, .darklayout .themesaller-forms textarea, .darklayout .input-mask-title label, .darklayout .input-mark-inner .help-block, .darklayout .data-custon-pick label, .darklayout .touchspin-inner label, .darklayout .datepicker.dropdown-menu th, .darklayout .datepicker.dropdown-menu td, .darklayout .analytics-sparkle-line .analytics-content h5, .darklayout .analytics-rounded .analytics-rounded-content h5, .darklayout .analysis-progrebar .analysis-progrebar-content h5, .darklayout .analytics-sparkle-line .analytics-content h2, .darklayout .analytics-rounded .analytics-rounded-content h2, .darklayout .analysis-progrebar .analysis-progrebar-content h2, .darklayout .analytics-adminpro .skill .progress .lead-content h3, .darklayout  .analysis-progrebar-content .small p, .darklayout .basic-login-inner h3, .darklayout .basic-login-inner p, .darklayout .form-group-inner label, .darklayout .inline-remember-me label, .darklayout .i-checks label, .darklayout .form-group-inner input[type=\"email\"], .darklayout .form-group-inner input[type=\"password\"], .darklayout .form-group-inner input[type=\"text\"], .darklayout .form-select-list .custom-select-value, .darklayout .cart-group .radio, .darklayout .login-input-area input[type=\"email\"], .darklayout .login-input-area input[type=\"password\"], .darklayout .login-input-area input[type=\"text\"], .darklayout .interested-input-area select, .darklayout .budget-input-area select[type=\"text\"], .darklayout .interested-input-area select, .darklayout .budget-input-area select, .darklayout .code-editor-single h2, .darklayout .note, .darklayout .inbox-email-menu-list .nav-tabs li, .darklayout .note-editable.panel-body h2, .darklayout .note-editable.panel-body p, .darklayout .contact-client-content p, .darklayout .contact-client-content a, .darklayout .contact-client-address h3, .darklayout .contact-client-address .address-client-ct, .darklayout .contact-client-address p, .darklayout .editable-click, .darklayout a.editable-click, .darklayout a.editable-click:hover, .darklayout .popover-title, .darklayout .contact-img-v2 .contact-client-name, .darklayout .preview-img-pro-ad h4, .darklayout .preview-img-pro-ad p, .darklayout .images-action-pro .btn-warning, .darklayout .images-action-pro .btn-white, .darklayout .modal-bootstrap h2, .darklayout .modal-bootstrap p, .darklayout .adminpro-down-arrow-in-a-circle:before, .darklayout .form-group label, .darklayout .password-verdict, .darklayout .user-profile-content h2, .darklayout .user-profile-about h2, .darklayout .user-profile-content .profile-founder, .darklayout .user-profile-content .profile-des, .darklayout .user-profile-post-name a, .darklayout .user-profile-post-name p, .darklayout .profile-user-post-content p, .darklayout .user-profile-about p, .darklayout .user-profile-about span, .darklayout .user-post-reply .btn, .darklayout .user-profile-comment-input textarea, .darklayout .user-profile-contact ul.profile-contact-menu li a, .darklayout .admin-widget-flot-ch h1, .darklayout .admin-widget-flot-ch h3, .darklayout .admin-widget-flot-ch p, .darklayout .progress-circular4 p, .darklayout .progress-circular3 p, .darklayout .progress-circular2 p, .darklayout .progress-circular1 p, .darklayout .progress-circular1 h2, .darklayout .project-details-title h2, .darklayout .project-details-st, .darklayout .project-details-dt span, .darklayout .project-pregress-details span, .darklayout .project-details-descri h2, .darklayout .project-details-descri p, .darklayout .custon-tab-style1 p, .darklayout .jstree-anchor, .darklayout .author-per-content h2, .darklayout .author-per-content p{\n\tcolor: #fff;\n}\n.darklayout .popover-title{\n\tborder-bottom: 1px solid #303030;\n}\n.darklayout .note-editable.panel-body p, .darklayout .note-editable.panel-body span{\n\tcolor: #fff !important;\n}\n.darklayout .inbox-email-menu-list .nav-tabs li .count-inbox{\n\tmargin-left:100px;\n}\n.darklayout .datepicker thead tr:first-child th:hover, .darklayout .datepicker tfoot tr th:hover, .darklayout .datepicker table tr td.day:hover, .darklayout .datepicker table tr td.day.focused, .darklayout .datepicker table tr td span:hover, .darklayout .datepicker table tr td.range, .darklayout .analytics-adminpro, .darklayout .analytics-sparkle-line, .darklayout .analytics-rounded, .darklayout .analysis-progrebar, .darklayout .charts-single-pro, .darklayout .notification-list, .darklayout .button-ad-wrap, .darklayout .tinymce-single, .darklayout .x-editable-list, .darklayout .pdf-single-pro, .darklayout .code-editor-single, .darklayout .custom-inbox-message, .darklayout .inbox-email-menu-list, .darklayout li.multipleInput-email, .darklayout .single-skill, .darklayout .contact-client-single, .darklayout .user-profile-wrap, .darklayout .user-profile-about, .darklayout .user-profile-post, .darklayout .user-profile-mutual-friends, .darklayout .project-details-wrap, .darklayout .project-details-descri, .darklayout .project-details-files, .darklayout .popover, .darklayout .popover-title, .darklayout .modal-bootstrap, .darklayout .dropzone-custom-sys, .darklayout .dropzone-pro, .darklayout .preloader-single, .darklayout .user-profile-comment-input textarea, .darklayout .comment-replay-profile .btn-white, .darklayout .widget-flot-bg, .darklayout .menu-list-wrap, .darklayout .custon-tab-style1, .darklayout .author-permissio-wrap, .darklayout .card-box{\n\tbackground-color: #393939;\n} \n.darklayout li.multipleInput-email{\n\tborder: 1px #393939 solid;\n}\n.darklayout .contact-client-footer .btn-group a{\n\tborder: 1px #303030 solid;\n\tbackground: linear-gradient(to bottom, #ff9966 0%, #d75151 100%);\n\tcolor: #fff;\n}\n.darklayout .admin-check-sucess, .darklayout .admin-check-pro, .darklayout .alert-success-style1:before, .darklayout .alert-success-style2:before, .darklayout .alert-success-style3:before, .darklayout .alert-success-style4:before{\n\tbackground: #444242;\n}\n.darklayout .admin-check-pro, .darklayout .admin-check-sucess:after, .darklayout .admin-check-pro:after{\n\tborder-left-color: #444242;\n}\n.darklayout .table-striped>tbody>tr:nth-of-type(odd), .darklayout .table-striped>tbody>tr:nth-of-type(odd){\n\tbackground-color: #303030;\n}\n.darklayout .sparkle-table>tbody>tr:nth-of-type(odd){\n\tbackground-color: #303030;\n}\n.darklayout .note-editor.note-frame .note-statusbar .note-resizebar{\n\tbackground-color: #303030;\n}\n.darklayout .progress-circular4 p{\n\tfont-size:12px;\n}\n.materialdesign .widget-text-box p{\n\tfont-size:13px;\n}\n.des-none{\n\tdisplay:none;\n}\n.small-dn{\n\tdisplay:block;\n}\n.logo-wrap-pro{\n\tdisplay:none;\n}\n.materialdesign .breadcome-heading h2{\n\tmargin:0px;\n}\n.materialdesign #sidebar .sidebar-header{\n\tbackground: linear-gradient(to bottom, #ff9966 0%, #ffffff 100%);\n}\n.materialdesign .footer-copyright-area{\n\tbackground: #fff;\n\tbox-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.14);\n}\n.materialdesign #sidebar{\n\tbackground: #fff;\n\tbox-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -2px rgba(0, 0, 0, 0.2);\n}\n.materialdesign .sidebar-header h3, .materialdesign #sidebar .sidebar-header strong, .materialdesign .sidebar-header p, .materialdesign .footer-copy-right p, .materialdesign .footer-copy-right a{\n\tcolor: #303030;\n}\n.materialdesign .left-custom-menu-adp-wrap ul.left-sidebar-menu-pro li a:hover, .materialdesign .left-custom-menu-adp-wrap ul.left-sidebar-menu-pro li a:focus, .materialdesign .left-custom-menu-adp-wrap ul.left-sidebar-menu-pro li a:active, .materialdesign .left-custom-menu-adp-wrap ul.left-sidebar-menu-pro li a:visited{\n\tcolor: #303030;\n}\n.materialdesign .left-custom-menu-adp-wrap ul.left-sidebar-menu-pro li a, .materialdesign .adminpro-custon-design .panel-heading, .materialdesign .adminpro-custon-design .admin-panel-content p{\n\tcolor: #303030;\n}\n.materialdesign .header-top-area, .materialdesign .fixed-header-top{\n\tbackground: linear-gradient(to right, #ff9966 0%, #ff66cc 100%);\n}\n.materialdesign .header-top-menu .navbar-nav>li .dropdown-menu, .materialdesign .header-right-info ul.header-right-menu li .author-message-top, .materialdesign .header-right-info ul.header-right-menu li .notification-author, .materialdesign .header-right-info ul.header-right-menu li .author-log, .materialdesign .header-right-info ul.header-right-menu li .admintab-wrap.menu-setting-wrap.menu-setting-wrap-bg.dropdown-menu{\n\tbackground: linear-gradient(to bottom, #ff9966 0%, #ff66cc 100%);\n}\n.materialdesign .header-right-info .author-message-top:before, .materialdesign .header-right-info .notification-author:before{\n\tborder-bottom: 10px solid #ff9966;\n}\n.materialdesign .header-top-menu .navbar-nav>li .dropdown-menu a:hover, .materialdesign .header-right-info ul.header-right-menu li .dropdown-header-top.author-log li a:hover, .materialdesign  .header-right-info ul.header-right-menu li .dropdown-header-top.author-log li a:focus, .materialdesign  .header-drl-controller-btn.btn-info:active:focus, .btn-info:active:hover{\n    background: #172054;\n}\n.materialdesign .header-drl-controller-btn.btn-info {\n    background-color: #ff9966;\n    border-color: #ff9966;\n}\n.materialdesign .left-custom-menu-adp-wrap ul.left-sidebar-menu-pro li a:hover, .materialdesign .left-custom-menu-adp-wrap ul.left-sidebar-menu-pro li a:focus, .materialdesign .left-custom-menu-adp-wrap ul.left-sidebar-menu-pro li a:active, .materialdesign .left-custom-menu-adp-wrap ul.left-sidebar-menu-pro li a:visited{\n\tbackground: #ebebeb;\n}\n.materialdesign .left-custom-menu-adp-wrap ul.left-sidebar-menu-pro li .left-menu-dropdown{\n\tbackground: #ececec;\n}\n.materialdesign .flot-tick-label.tickLabel, .materialdesign .legend > div{\n\tcolor: #fff;\n}\n.materialdesign .message-single-top h1, .materialdesign .notification-single-top h1{\n\tborder-bottom: 1px solid #eb166f;\n}\n.materialdesign .header-right-info ul.header-right-menu li .message-view a, .materialdesign .header-right-info ul.header-right-menu li .notification-view a{\n\tborder-top: 1px solid #eb166f;\n}\n.materialdesign .menu-setting-wrap.menu-setting-wrap-bg .nav-tabs>li.active>a, .materialdesign .menu-setting-wrap.menu-setting-wrap-bg .nav-tabs>li.active>a:focus, .materialdesign .menu-setting-wrap.menu-setting-wrap-bg .nav-tabs>li.active>a:hover .notes-img{\n\tbackground: #ff9966;\n}\n.materialdesign .breadcome-heading .form-control, .breadcome-heading .form-control:focus {\n    border: 1px solid #ececec;\n    font-size: 13px;\n    height: 34px;\n    color: #fff;\n    padding-left: 20px;\n    padding-right: 40px;\n    background: linear-gradient(to bottom, #ff9966 0%, #d75151 100%);\n    box-shadow: none;\n    border-radius: 30px;\n    width: 200px;\n}\n.materialdesign .breadcome-heading a {\n    position: absolute;\n    top: 0px;\n    left: 178px;\n    display: block;\n    height: 34px;\n    line-height: 34px;\n    width: 34px;\n    text-align: center;\n    color: #fff;\n}\n.materialdesign ul.breadcome-menu {\n    padding-top: 8px;\n}\n.materialdesign .custom-datatable-overright table tbody tr td{\n\tpadding-right: 0px !important;\n}\n.materialdesign .mg-b-15, .materialdesign .materialdesign-alert{\n\tmargin-bottom:15px;\n}\n.materialdesign .adminpro-custon-design .panel-heading{\n\tbackground: #dcdcdc;\n}\n.materialdesign .adminpro-custon-design .admin-panel-content{\n\tbackground: #ebebeb;\n}\n.materialdesign .knob-single input{\n\tposition: absolute;\n    top: 0px;\n    right: 34px;\n}\n.materialdesign .inbox-email-menu-list .nav-tabs li .count-inbox{\n\tmargin-left: 100px;\n}\n.materialdesign .nav-tabs.custom-menu-wrap li a{\n\tcolor: #303030;\n}\n.materialdesign .nav-tabs.custom-menu-wrap li a:hover{\n\tcolor: #fff;\n}\n.materialdesign .progress-circular4 p{\n\tfont-size:12px;\n}\ndiv#sparklinedask2, div#sparklinedask1 {\n    text-align: center;\n}\n.materialdesign .breadcome-heading .form-control::-webkit-input-placeholder { /* Chrome/Opera/Safari */\n  color: #fff;\n}\n.materialdesign .breadcome-heading .form-control::-moz-placeholder { /* Firefox 19+ */\n  color: #fff;\n}\n.materialdesign .breadcome-heading .form-control:-ms-input-placeholder { /* IE 10+ */\n  color: #fff;\n}\n.materialdesign .breadcome-heading .form-control:-moz-placeholder { /* Firefox 18- */\n  color: #fff;\n}"
  },
  {
    "path": "public/dist/css/adminlte.css",
    "content": "@charset \"UTF-8\";\n/*!\n *   AdminLTE v3.0.0\n *   Author: Colorlib\n *   Website: AdminLTE.io <http://adminlte.io>\n *   License: Open source - MIT <http://opensource.org/licenses/MIT>\n */\n/*!\n * Bootstrap v4.3.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 The Bootstrap Authors\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n:root {\n  --blue: #007bff;\n  --indigo: #6610f2;\n  --purple: #6f42c1;\n  --pink: #e83e8c;\n  --red: #dc3545;\n  --orange: #fd7e14;\n  --yellow: #ffc107;\n  --green: #28a745;\n  --teal: #20c997;\n  --cyan: #17a2b8;\n  --white: #ffffff;\n  --gray: #6c757d;\n  --gray-dark: #343a40;\n  --primary: #007bff;\n  --secondary: #6c757d;\n  --success: #28a745;\n  --info: #17a2b8;\n  --warning: #ffc107;\n  --danger: #dc3545;\n  --light: #f8f9fa;\n  --dark: #343a40;\n  --breakpoint-xs: 0;\n  --breakpoint-sm: 576px;\n  --breakpoint-md: 768px;\n  --breakpoint-lg: 992px;\n  --breakpoint-xl: 1200px;\n  --font-family-sans-serif: \"Source Sans Pro\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n  --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n}\n\n*,\n*::before,\n*::after {\n  box-sizing: border-box;\n}\n\nhtml {\n  font-family: sans-serif;\n  line-height: 1.15;\n  -webkit-text-size-adjust: 100%;\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\narticle, aside, figcaption, figure, footer, header, hgroup, main, nav, section {\n  display: block;\n}\n\nbody {\n  margin: 0;\n  font-family: \"Source Sans Pro\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n  font-size: 1rem;\n  font-weight: 400;\n  line-height: 1.5;\n  color: #212529;\n  text-align: left;\n  background-color: #ffffff;\n}\n\n[tabindex=\"-1\"]:focus {\n  outline: 0 !important;\n}\n\nhr {\n  box-sizing: content-box;\n  height: 0;\n  overflow: visible;\n}\n\nh1, h2, h3, h4, h5, h6 {\n  margin-top: 0;\n  margin-bottom: 0.5rem;\n}\n\np {\n  margin-top: 0;\n  margin-bottom: 1rem;\n}\n\nabbr[title],\nabbr[data-original-title] {\n  text-decoration: underline;\n  -webkit-text-decoration: underline dotted;\n  text-decoration: underline dotted;\n  cursor: help;\n  border-bottom: 0;\n  -webkit-text-decoration-skip-ink: none;\n  text-decoration-skip-ink: none;\n}\n\naddress {\n  margin-bottom: 1rem;\n  font-style: normal;\n  line-height: inherit;\n}\n\nol,\nul,\ndl {\n  margin-top: 0;\n  margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n  margin-bottom: 0;\n}\n\ndt {\n  font-weight: 700;\n}\n\ndd {\n  margin-bottom: .5rem;\n  margin-left: 0;\n}\n\nblockquote {\n  margin: 0 0 1rem;\n}\n\nb,\nstrong {\n  font-weight: bolder;\n}\n\nsmall {\n  font-size: 80%;\n}\n\nsub,\nsup {\n  position: relative;\n  font-size: 75%;\n  line-height: 0;\n  vertical-align: baseline;\n}\n\nsub {\n  bottom: -.25em;\n}\n\nsup {\n  top: -.5em;\n}\n\na {\n  color: #007bff;\n  text-decoration: none;\n  background-color: transparent;\n}\n\na:hover {\n  color: #0056b3;\n  text-decoration: none;\n}\n\na:not([href]):not([tabindex]) {\n  color: inherit;\n  text-decoration: none;\n}\n\na:not([href]):not([tabindex]):hover, a:not([href]):not([tabindex]):focus {\n  color: inherit;\n  text-decoration: none;\n}\n\na:not([href]):not([tabindex]):focus {\n  outline: 0;\n}\n\npre,\ncode,\nkbd,\nsamp {\n  font-family: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n  font-size: 1em;\n}\n\npre {\n  margin-top: 0;\n  margin-bottom: 1rem;\n  overflow: auto;\n}\n\nfigure {\n  margin: 0 0 1rem;\n}\n\nimg {\n  vertical-align: middle;\n  border-style: none;\n}\n\nsvg {\n  overflow: hidden;\n  vertical-align: middle;\n}\n\ntable {\n  border-collapse: collapse;\n}\n\ncaption {\n  padding-top: 0.75rem;\n  padding-bottom: 0.75rem;\n  color: #6c757d;\n  text-align: left;\n  caption-side: bottom;\n}\n\nth {\n  text-align: inherit;\n}\n\nlabel {\n  display: inline-block;\n  margin-bottom: 0.5rem;\n}\n\nbutton {\n  border-radius: 0;\n}\n\nbutton:focus {\n  outline: 1px dotted;\n  outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n  margin: 0;\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit;\n}\n\nbutton,\ninput {\n  overflow: visible;\n}\n\nbutton,\nselect {\n  text-transform: none;\n}\n\nselect {\n  word-wrap: normal;\n}\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n  -webkit-appearance: button;\n}\n\nbutton:not(:disabled),\n[type=\"button\"]:not(:disabled),\n[type=\"reset\"]:not(:disabled),\n[type=\"submit\"]:not(:disabled) {\n  cursor: pointer;\n}\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n  padding: 0;\n  border-style: none;\n}\n\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n  box-sizing: border-box;\n  padding: 0;\n}\n\ninput[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"] {\n  -webkit-appearance: listbox;\n}\n\ntextarea {\n  overflow: auto;\n  resize: vertical;\n}\n\nfieldset {\n  min-width: 0;\n  padding: 0;\n  margin: 0;\n  border: 0;\n}\n\nlegend {\n  display: block;\n  width: 100%;\n  max-width: 100%;\n  padding: 0;\n  margin-bottom: .5rem;\n  font-size: 1.5rem;\n  line-height: inherit;\n  color: inherit;\n  white-space: normal;\n}\n\nprogress {\n  vertical-align: baseline;\n}\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n  height: auto;\n}\n\n[type=\"search\"] {\n  outline-offset: -2px;\n  -webkit-appearance: none;\n}\n\n[type=\"search\"]::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\n\n::-webkit-file-upload-button {\n  font: inherit;\n  -webkit-appearance: button;\n}\n\noutput {\n  display: inline-block;\n}\n\nsummary {\n  display: list-item;\n  cursor: pointer;\n}\n\ntemplate {\n  display: none;\n}\n\n[hidden] {\n  display: none !important;\n}\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n  margin-bottom: 0.5rem;\n  font-family: inherit;\n  font-weight: 500;\n  line-height: 1.2;\n  color: inherit;\n}\n\nh1, .h1 {\n  font-size: 2.5rem;\n}\n\nh2, .h2 {\n  font-size: 2rem;\n}\n\nh3, .h3 {\n  font-size: 1.75rem;\n}\n\nh4, .h4 {\n  font-size: 1.5rem;\n}\n\nh5, .h5 {\n  font-size: 1.25rem;\n}\n\nh6, .h6 {\n  font-size: 1rem;\n}\n\n.lead {\n  font-size: 1.25rem;\n  font-weight: 300;\n}\n\n.display-1 {\n  font-size: 6rem;\n  font-weight: 300;\n  line-height: 1.2;\n}\n\n.display-2 {\n  font-size: 5.5rem;\n  font-weight: 300;\n  line-height: 1.2;\n}\n\n.display-3 {\n  font-size: 4.5rem;\n  font-weight: 300;\n  line-height: 1.2;\n}\n\n.display-4 {\n  font-size: 3.5rem;\n  font-weight: 300;\n  line-height: 1.2;\n}\n\nhr {\n  margin-top: 1rem;\n  margin-bottom: 1rem;\n  border: 0;\n  border-top: 1px solid rgba(0, 0, 0, 0.1);\n}\n\nsmall,\n.small {\n  font-size: 80%;\n  font-weight: 400;\n}\n\nmark,\n.mark {\n  padding: 0.2em;\n  background-color: #fcf8e3;\n}\n\n.list-unstyled {\n  padding-left: 0;\n  list-style: none;\n}\n\n.list-inline {\n  padding-left: 0;\n  list-style: none;\n}\n\n.list-inline-item {\n  display: inline-block;\n}\n\n.list-inline-item:not(:last-child) {\n  margin-right: 0.5rem;\n}\n\n.initialism {\n  font-size: 90%;\n  text-transform: uppercase;\n}\n\n.blockquote {\n  margin-bottom: 1rem;\n  font-size: 1.25rem;\n}\n\n.blockquote-footer {\n  display: block;\n  font-size: 80%;\n  color: #6c757d;\n}\n\n.blockquote-footer::before {\n  content: \"\\2014\\00A0\";\n}\n\n.img-fluid {\n  max-width: 100%;\n  height: auto;\n}\n\n.img-thumbnail {\n  padding: 0.25rem;\n  background-color: #ffffff;\n  border: 1px solid #dee2e6;\n  border-radius: 0.25rem;\n  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n  max-width: 100%;\n  height: auto;\n}\n\n.figure {\n  display: inline-block;\n}\n\n.figure-img {\n  margin-bottom: 0.5rem;\n  line-height: 1;\n}\n\n.figure-caption {\n  font-size: 90%;\n  color: #6c757d;\n}\n\ncode {\n  font-size: 87.5%;\n  color: #e83e8c;\n  word-break: break-word;\n}\n\na > code {\n  color: inherit;\n}\n\nkbd {\n  padding: 0.2rem 0.4rem;\n  font-size: 87.5%;\n  color: #ffffff;\n  background-color: #212529;\n  border-radius: 0.2rem;\n  box-shadow: inset 0 -0.1rem 0 rgba(0, 0, 0, 0.25);\n}\n\nkbd kbd {\n  padding: 0;\n  font-size: 100%;\n  font-weight: 700;\n  box-shadow: none;\n}\n\npre {\n  display: block;\n  font-size: 87.5%;\n  color: #212529;\n}\n\npre code {\n  font-size: inherit;\n  color: inherit;\n  word-break: normal;\n}\n\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll;\n}\n\n.container {\n  width: 100%;\n  padding-right: 7.5px;\n  padding-left: 7.5px;\n  margin-right: auto;\n  margin-left: auto;\n}\n\n@media (min-width: 576px) {\n  .container {\n    max-width: 540px;\n  }\n}\n\n@media (min-width: 768px) {\n  .container {\n    max-width: 720px;\n  }\n}\n\n@media (min-width: 992px) {\n  .container {\n    max-width: 960px;\n  }\n}\n\n@media (min-width: 1200px) {\n  .container {\n    max-width: 1140px;\n  }\n}\n\n.container-fluid {\n  width: 100%;\n  padding-right: 7.5px;\n  padding-left: 7.5px;\n  margin-right: auto;\n  margin-left: auto;\n}\n\n.row {\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-wrap: wrap;\n  flex-wrap: wrap;\n  margin-right: -7.5px;\n  margin-left: -7.5px;\n}\n\n.no-gutters {\n  margin-right: 0;\n  margin-left: 0;\n}\n\n.no-gutters > .col,\n.no-gutters > [class*=\"col-\"] {\n  padding-right: 0;\n  padding-left: 0;\n}\n\n.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,\n.col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm,\n.col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md,\n.col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg,\n.col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl,\n.col-xl-auto {\n  position: relative;\n  width: 100%;\n  padding-right: 7.5px;\n  padding-left: 7.5px;\n}\n\n.col {\n  -ms-flex-preferred-size: 0;\n  flex-basis: 0;\n  -ms-flex-positive: 1;\n  flex-grow: 1;\n  max-width: 100%;\n}\n\n.col-auto {\n  -ms-flex: 0 0 auto;\n  flex: 0 0 auto;\n  width: auto;\n  max-width: 100%;\n}\n\n.col-1 {\n  -ms-flex: 0 0 8.333333%;\n  flex: 0 0 8.333333%;\n  max-width: 8.333333%;\n}\n\n.col-2 {\n  -ms-flex: 0 0 16.666667%;\n  flex: 0 0 16.666667%;\n  max-width: 16.666667%;\n}\n\n.col-3 {\n  -ms-flex: 0 0 25%;\n  flex: 0 0 25%;\n  max-width: 25%;\n}\n\n.col-4 {\n  -ms-flex: 0 0 33.333333%;\n  flex: 0 0 33.333333%;\n  max-width: 33.333333%;\n}\n\n.col-5 {\n  -ms-flex: 0 0 41.666667%;\n  flex: 0 0 41.666667%;\n  max-width: 41.666667%;\n}\n\n.col-6 {\n  -ms-flex: 0 0 50%;\n  flex: 0 0 50%;\n  max-width: 50%;\n}\n\n.col-7 {\n  -ms-flex: 0 0 58.333333%;\n  flex: 0 0 58.333333%;\n  max-width: 58.333333%;\n}\n\n.col-8 {\n  -ms-flex: 0 0 66.666667%;\n  flex: 0 0 66.666667%;\n  max-width: 66.666667%;\n}\n\n.col-9 {\n  -ms-flex: 0 0 75%;\n  flex: 0 0 75%;\n  max-width: 75%;\n}\n\n.col-10 {\n  -ms-flex: 0 0 83.333333%;\n  flex: 0 0 83.333333%;\n  max-width: 83.333333%;\n}\n\n.col-11 {\n  -ms-flex: 0 0 91.666667%;\n  flex: 0 0 91.666667%;\n  max-width: 91.666667%;\n}\n\n.col-12 {\n  -ms-flex: 0 0 100%;\n  flex: 0 0 100%;\n  max-width: 100%;\n}\n\n.order-first {\n  -ms-flex-order: -1;\n  order: -1;\n}\n\n.order-last {\n  -ms-flex-order: 13;\n  order: 13;\n}\n\n.order-0 {\n  -ms-flex-order: 0;\n  order: 0;\n}\n\n.order-1 {\n  -ms-flex-order: 1;\n  order: 1;\n}\n\n.order-2 {\n  -ms-flex-order: 2;\n  order: 2;\n}\n\n.order-3 {\n  -ms-flex-order: 3;\n  order: 3;\n}\n\n.order-4 {\n  -ms-flex-order: 4;\n  order: 4;\n}\n\n.order-5 {\n  -ms-flex-order: 5;\n  order: 5;\n}\n\n.order-6 {\n  -ms-flex-order: 6;\n  order: 6;\n}\n\n.order-7 {\n  -ms-flex-order: 7;\n  order: 7;\n}\n\n.order-8 {\n  -ms-flex-order: 8;\n  order: 8;\n}\n\n.order-9 {\n  -ms-flex-order: 9;\n  order: 9;\n}\n\n.order-10 {\n  -ms-flex-order: 10;\n  order: 10;\n}\n\n.order-11 {\n  -ms-flex-order: 11;\n  order: 11;\n}\n\n.order-12 {\n  -ms-flex-order: 12;\n  order: 12;\n}\n\n.offset-1 {\n  margin-left: 8.333333%;\n}\n\n.offset-2 {\n  margin-left: 16.666667%;\n}\n\n.offset-3 {\n  margin-left: 25%;\n}\n\n.offset-4 {\n  margin-left: 33.333333%;\n}\n\n.offset-5 {\n  margin-left: 41.666667%;\n}\n\n.offset-6 {\n  margin-left: 50%;\n}\n\n.offset-7 {\n  margin-left: 58.333333%;\n}\n\n.offset-8 {\n  margin-left: 66.666667%;\n}\n\n.offset-9 {\n  margin-left: 75%;\n}\n\n.offset-10 {\n  margin-left: 83.333333%;\n}\n\n.offset-11 {\n  margin-left: 91.666667%;\n}\n\n@media (min-width: 576px) {\n  .col-sm {\n    -ms-flex-preferred-size: 0;\n    flex-basis: 0;\n    -ms-flex-positive: 1;\n    flex-grow: 1;\n    max-width: 100%;\n  }\n  .col-sm-auto {\n    -ms-flex: 0 0 auto;\n    flex: 0 0 auto;\n    width: auto;\n    max-width: 100%;\n  }\n  .col-sm-1 {\n    -ms-flex: 0 0 8.333333%;\n    flex: 0 0 8.333333%;\n    max-width: 8.333333%;\n  }\n  .col-sm-2 {\n    -ms-flex: 0 0 16.666667%;\n    flex: 0 0 16.666667%;\n    max-width: 16.666667%;\n  }\n  .col-sm-3 {\n    -ms-flex: 0 0 25%;\n    flex: 0 0 25%;\n    max-width: 25%;\n  }\n  .col-sm-4 {\n    -ms-flex: 0 0 33.333333%;\n    flex: 0 0 33.333333%;\n    max-width: 33.333333%;\n  }\n  .col-sm-5 {\n    -ms-flex: 0 0 41.666667%;\n    flex: 0 0 41.666667%;\n    max-width: 41.666667%;\n  }\n  .col-sm-6 {\n    -ms-flex: 0 0 50%;\n    flex: 0 0 50%;\n    max-width: 50%;\n  }\n  .col-sm-7 {\n    -ms-flex: 0 0 58.333333%;\n    flex: 0 0 58.333333%;\n    max-width: 58.333333%;\n  }\n  .col-sm-8 {\n    -ms-flex: 0 0 66.666667%;\n    flex: 0 0 66.666667%;\n    max-width: 66.666667%;\n  }\n  .col-sm-9 {\n    -ms-flex: 0 0 75%;\n    flex: 0 0 75%;\n    max-width: 75%;\n  }\n  .col-sm-10 {\n    -ms-flex: 0 0 83.333333%;\n    flex: 0 0 83.333333%;\n    max-width: 83.333333%;\n  }\n  .col-sm-11 {\n    -ms-flex: 0 0 91.666667%;\n    flex: 0 0 91.666667%;\n    max-width: 91.666667%;\n  }\n  .col-sm-12 {\n    -ms-flex: 0 0 100%;\n    flex: 0 0 100%;\n    max-width: 100%;\n  }\n  .order-sm-first {\n    -ms-flex-order: -1;\n    order: -1;\n  }\n  .order-sm-last {\n    -ms-flex-order: 13;\n    order: 13;\n  }\n  .order-sm-0 {\n    -ms-flex-order: 0;\n    order: 0;\n  }\n  .order-sm-1 {\n    -ms-flex-order: 1;\n    order: 1;\n  }\n  .order-sm-2 {\n    -ms-flex-order: 2;\n    order: 2;\n  }\n  .order-sm-3 {\n    -ms-flex-order: 3;\n    order: 3;\n  }\n  .order-sm-4 {\n    -ms-flex-order: 4;\n    order: 4;\n  }\n  .order-sm-5 {\n    -ms-flex-order: 5;\n    order: 5;\n  }\n  .order-sm-6 {\n    -ms-flex-order: 6;\n    order: 6;\n  }\n  .order-sm-7 {\n    -ms-flex-order: 7;\n    order: 7;\n  }\n  .order-sm-8 {\n    -ms-flex-order: 8;\n    order: 8;\n  }\n  .order-sm-9 {\n    -ms-flex-order: 9;\n    order: 9;\n  }\n  .order-sm-10 {\n    -ms-flex-order: 10;\n    order: 10;\n  }\n  .order-sm-11 {\n    -ms-flex-order: 11;\n    order: 11;\n  }\n  .order-sm-12 {\n    -ms-flex-order: 12;\n    order: 12;\n  }\n  .offset-sm-0 {\n    margin-left: 0;\n  }\n  .offset-sm-1 {\n    margin-left: 8.333333%;\n  }\n  .offset-sm-2 {\n    margin-left: 16.666667%;\n  }\n  .offset-sm-3 {\n    margin-left: 25%;\n  }\n  .offset-sm-4 {\n    margin-left: 33.333333%;\n  }\n  .offset-sm-5 {\n    margin-left: 41.666667%;\n  }\n  .offset-sm-6 {\n    margin-left: 50%;\n  }\n  .offset-sm-7 {\n    margin-left: 58.333333%;\n  }\n  .offset-sm-8 {\n    margin-left: 66.666667%;\n  }\n  .offset-sm-9 {\n    margin-left: 75%;\n  }\n  .offset-sm-10 {\n    margin-left: 83.333333%;\n  }\n  .offset-sm-11 {\n    margin-left: 91.666667%;\n  }\n}\n\n@media (min-width: 768px) {\n  .col-md {\n    -ms-flex-preferred-size: 0;\n    flex-basis: 0;\n    -ms-flex-positive: 1;\n    flex-grow: 1;\n    max-width: 100%;\n  }\n  .col-md-auto {\n    -ms-flex: 0 0 auto;\n    flex: 0 0 auto;\n    width: auto;\n    max-width: 100%;\n  }\n  .col-md-1 {\n    -ms-flex: 0 0 8.333333%;\n    flex: 0 0 8.333333%;\n    max-width: 8.333333%;\n  }\n  .col-md-2 {\n    -ms-flex: 0 0 16.666667%;\n    flex: 0 0 16.666667%;\n    max-width: 16.666667%;\n  }\n  .col-md-3 {\n    -ms-flex: 0 0 25%;\n    flex: 0 0 25%;\n    max-width: 25%;\n  }\n  .col-md-4 {\n    -ms-flex: 0 0 33.333333%;\n    flex: 0 0 33.333333%;\n    max-width: 33.333333%;\n  }\n  .col-md-5 {\n    -ms-flex: 0 0 41.666667%;\n    flex: 0 0 41.666667%;\n    max-width: 41.666667%;\n  }\n  .col-md-6 {\n    -ms-flex: 0 0 50%;\n    flex: 0 0 50%;\n    max-width: 50%;\n  }\n  .col-md-7 {\n    -ms-flex: 0 0 58.333333%;\n    flex: 0 0 58.333333%;\n    max-width: 58.333333%;\n  }\n  .col-md-8 {\n    -ms-flex: 0 0 66.666667%;\n    flex: 0 0 66.666667%;\n    max-width: 66.666667%;\n  }\n  .col-md-9 {\n    -ms-flex: 0 0 75%;\n    flex: 0 0 75%;\n    max-width: 75%;\n  }\n  .col-md-10 {\n    -ms-flex: 0 0 83.333333%;\n    flex: 0 0 83.333333%;\n    max-width: 83.333333%;\n  }\n  .col-md-11 {\n    -ms-flex: 0 0 91.666667%;\n    flex: 0 0 91.666667%;\n    max-width: 91.666667%;\n  }\n  .col-md-12 {\n    -ms-flex: 0 0 100%;\n    flex: 0 0 100%;\n    max-width: 100%;\n  }\n  .order-md-first {\n    -ms-flex-order: -1;\n    order: -1;\n  }\n  .order-md-last {\n    -ms-flex-order: 13;\n    order: 13;\n  }\n  .order-md-0 {\n    -ms-flex-order: 0;\n    order: 0;\n  }\n  .order-md-1 {\n    -ms-flex-order: 1;\n    order: 1;\n  }\n  .order-md-2 {\n    -ms-flex-order: 2;\n    order: 2;\n  }\n  .order-md-3 {\n    -ms-flex-order: 3;\n    order: 3;\n  }\n  .order-md-4 {\n    -ms-flex-order: 4;\n    order: 4;\n  }\n  .order-md-5 {\n    -ms-flex-order: 5;\n    order: 5;\n  }\n  .order-md-6 {\n    -ms-flex-order: 6;\n    order: 6;\n  }\n  .order-md-7 {\n    -ms-flex-order: 7;\n    order: 7;\n  }\n  .order-md-8 {\n    -ms-flex-order: 8;\n    order: 8;\n  }\n  .order-md-9 {\n    -ms-flex-order: 9;\n    order: 9;\n  }\n  .order-md-10 {\n    -ms-flex-order: 10;\n    order: 10;\n  }\n  .order-md-11 {\n    -ms-flex-order: 11;\n    order: 11;\n  }\n  .order-md-12 {\n    -ms-flex-order: 12;\n    order: 12;\n  }\n  .offset-md-0 {\n    margin-left: 0;\n  }\n  .offset-md-1 {\n    margin-left: 8.333333%;\n  }\n  .offset-md-2 {\n    margin-left: 16.666667%;\n  }\n  .offset-md-3 {\n    margin-left: 25%;\n  }\n  .offset-md-4 {\n    margin-left: 33.333333%;\n  }\n  .offset-md-5 {\n    margin-left: 41.666667%;\n  }\n  .offset-md-6 {\n    margin-left: 50%;\n  }\n  .offset-md-7 {\n    margin-left: 58.333333%;\n  }\n  .offset-md-8 {\n    margin-left: 66.666667%;\n  }\n  .offset-md-9 {\n    margin-left: 75%;\n  }\n  .offset-md-10 {\n    margin-left: 83.333333%;\n  }\n  .offset-md-11 {\n    margin-left: 91.666667%;\n  }\n}\n\n@media (min-width: 992px) {\n  .col-lg {\n    -ms-flex-preferred-size: 0;\n    flex-basis: 0;\n    -ms-flex-positive: 1;\n    flex-grow: 1;\n    max-width: 100%;\n  }\n  .col-lg-auto {\n    -ms-flex: 0 0 auto;\n    flex: 0 0 auto;\n    width: auto;\n    max-width: 100%;\n  }\n  .col-lg-1 {\n    -ms-flex: 0 0 8.333333%;\n    flex: 0 0 8.333333%;\n    max-width: 8.333333%;\n  }\n  .col-lg-2 {\n    -ms-flex: 0 0 16.666667%;\n    flex: 0 0 16.666667%;\n    max-width: 16.666667%;\n  }\n  .col-lg-3 {\n    -ms-flex: 0 0 25%;\n    flex: 0 0 25%;\n    max-width: 25%;\n  }\n  .col-lg-4 {\n    -ms-flex: 0 0 33.333333%;\n    flex: 0 0 33.333333%;\n    max-width: 33.333333%;\n  }\n  .col-lg-5 {\n    -ms-flex: 0 0 41.666667%;\n    flex: 0 0 41.666667%;\n    max-width: 41.666667%;\n  }\n  .col-lg-6 {\n    -ms-flex: 0 0 50%;\n    flex: 0 0 50%;\n    max-width: 50%;\n  }\n  .col-lg-7 {\n    -ms-flex: 0 0 58.333333%;\n    flex: 0 0 58.333333%;\n    max-width: 58.333333%;\n  }\n  .col-lg-8 {\n    -ms-flex: 0 0 66.666667%;\n    flex: 0 0 66.666667%;\n    max-width: 66.666667%;\n  }\n  .col-lg-9 {\n    -ms-flex: 0 0 75%;\n    flex: 0 0 75%;\n    max-width: 75%;\n  }\n  .col-lg-10 {\n    -ms-flex: 0 0 83.333333%;\n    flex: 0 0 83.333333%;\n    max-width: 83.333333%;\n  }\n  .col-lg-11 {\n    -ms-flex: 0 0 91.666667%;\n    flex: 0 0 91.666667%;\n    max-width: 91.666667%;\n  }\n  .col-lg-12 {\n    -ms-flex: 0 0 100%;\n    flex: 0 0 100%;\n    max-width: 100%;\n  }\n  .order-lg-first {\n    -ms-flex-order: -1;\n    order: -1;\n  }\n  .order-lg-last {\n    -ms-flex-order: 13;\n    order: 13;\n  }\n  .order-lg-0 {\n    -ms-flex-order: 0;\n    order: 0;\n  }\n  .order-lg-1 {\n    -ms-flex-order: 1;\n    order: 1;\n  }\n  .order-lg-2 {\n    -ms-flex-order: 2;\n    order: 2;\n  }\n  .order-lg-3 {\n    -ms-flex-order: 3;\n    order: 3;\n  }\n  .order-lg-4 {\n    -ms-flex-order: 4;\n    order: 4;\n  }\n  .order-lg-5 {\n    -ms-flex-order: 5;\n    order: 5;\n  }\n  .order-lg-6 {\n    -ms-flex-order: 6;\n    order: 6;\n  }\n  .order-lg-7 {\n    -ms-flex-order: 7;\n    order: 7;\n  }\n  .order-lg-8 {\n    -ms-flex-order: 8;\n    order: 8;\n  }\n  .order-lg-9 {\n    -ms-flex-order: 9;\n    order: 9;\n  }\n  .order-lg-10 {\n    -ms-flex-order: 10;\n    order: 10;\n  }\n  .order-lg-11 {\n    -ms-flex-order: 11;\n    order: 11;\n  }\n  .order-lg-12 {\n    -ms-flex-order: 12;\n    order: 12;\n  }\n  .offset-lg-0 {\n    margin-left: 0;\n  }\n  .offset-lg-1 {\n    margin-left: 8.333333%;\n  }\n  .offset-lg-2 {\n    margin-left: 16.666667%;\n  }\n  .offset-lg-3 {\n    margin-left: 25%;\n  }\n  .offset-lg-4 {\n    margin-left: 33.333333%;\n  }\n  .offset-lg-5 {\n    margin-left: 41.666667%;\n  }\n  .offset-lg-6 {\n    margin-left: 50%;\n  }\n  .offset-lg-7 {\n    margin-left: 58.333333%;\n  }\n  .offset-lg-8 {\n    margin-left: 66.666667%;\n  }\n  .offset-lg-9 {\n    margin-left: 75%;\n  }\n  .offset-lg-10 {\n    margin-left: 83.333333%;\n  }\n  .offset-lg-11 {\n    margin-left: 91.666667%;\n  }\n}\n\n@media (min-width: 1200px) {\n  .col-xl {\n    -ms-flex-preferred-size: 0;\n    flex-basis: 0;\n    -ms-flex-positive: 1;\n    flex-grow: 1;\n    max-width: 100%;\n  }\n  .col-xl-auto {\n    -ms-flex: 0 0 auto;\n    flex: 0 0 auto;\n    width: auto;\n    max-width: 100%;\n  }\n  .col-xl-1 {\n    -ms-flex: 0 0 8.333333%;\n    flex: 0 0 8.333333%;\n    max-width: 8.333333%;\n  }\n  .col-xl-2 {\n    -ms-flex: 0 0 16.666667%;\n    flex: 0 0 16.666667%;\n    max-width: 16.666667%;\n  }\n  .col-xl-3 {\n    -ms-flex: 0 0 25%;\n    flex: 0 0 25%;\n    max-width: 25%;\n  }\n  .col-xl-4 {\n    -ms-flex: 0 0 33.333333%;\n    flex: 0 0 33.333333%;\n    max-width: 33.333333%;\n  }\n  .col-xl-5 {\n    -ms-flex: 0 0 41.666667%;\n    flex: 0 0 41.666667%;\n    max-width: 41.666667%;\n  }\n  .col-xl-6 {\n    -ms-flex: 0 0 50%;\n    flex: 0 0 50%;\n    max-width: 50%;\n  }\n  .col-xl-7 {\n    -ms-flex: 0 0 58.333333%;\n    flex: 0 0 58.333333%;\n    max-width: 58.333333%;\n  }\n  .col-xl-8 {\n    -ms-flex: 0 0 66.666667%;\n    flex: 0 0 66.666667%;\n    max-width: 66.666667%;\n  }\n  .col-xl-9 {\n    -ms-flex: 0 0 75%;\n    flex: 0 0 75%;\n    max-width: 75%;\n  }\n  .col-xl-10 {\n    -ms-flex: 0 0 83.333333%;\n    flex: 0 0 83.333333%;\n    max-width: 83.333333%;\n  }\n  .col-xl-11 {\n    -ms-flex: 0 0 91.666667%;\n    flex: 0 0 91.666667%;\n    max-width: 91.666667%;\n  }\n  .col-xl-12 {\n    -ms-flex: 0 0 100%;\n    flex: 0 0 100%;\n    max-width: 100%;\n  }\n  .order-xl-first {\n    -ms-flex-order: -1;\n    order: -1;\n  }\n  .order-xl-last {\n    -ms-flex-order: 13;\n    order: 13;\n  }\n  .order-xl-0 {\n    -ms-flex-order: 0;\n    order: 0;\n  }\n  .order-xl-1 {\n    -ms-flex-order: 1;\n    order: 1;\n  }\n  .order-xl-2 {\n    -ms-flex-order: 2;\n    order: 2;\n  }\n  .order-xl-3 {\n    -ms-flex-order: 3;\n    order: 3;\n  }\n  .order-xl-4 {\n    -ms-flex-order: 4;\n    order: 4;\n  }\n  .order-xl-5 {\n    -ms-flex-order: 5;\n    order: 5;\n  }\n  .order-xl-6 {\n    -ms-flex-order: 6;\n    order: 6;\n  }\n  .order-xl-7 {\n    -ms-flex-order: 7;\n    order: 7;\n  }\n  .order-xl-8 {\n    -ms-flex-order: 8;\n    order: 8;\n  }\n  .order-xl-9 {\n    -ms-flex-order: 9;\n    order: 9;\n  }\n  .order-xl-10 {\n    -ms-flex-order: 10;\n    order: 10;\n  }\n  .order-xl-11 {\n    -ms-flex-order: 11;\n    order: 11;\n  }\n  .order-xl-12 {\n    -ms-flex-order: 12;\n    order: 12;\n  }\n  .offset-xl-0 {\n    margin-left: 0;\n  }\n  .offset-xl-1 {\n    margin-left: 8.333333%;\n  }\n  .offset-xl-2 {\n    margin-left: 16.666667%;\n  }\n  .offset-xl-3 {\n    margin-left: 25%;\n  }\n  .offset-xl-4 {\n    margin-left: 33.333333%;\n  }\n  .offset-xl-5 {\n    margin-left: 41.666667%;\n  }\n  .offset-xl-6 {\n    margin-left: 50%;\n  }\n  .offset-xl-7 {\n    margin-left: 58.333333%;\n  }\n  .offset-xl-8 {\n    margin-left: 66.666667%;\n  }\n  .offset-xl-9 {\n    margin-left: 75%;\n  }\n  .offset-xl-10 {\n    margin-left: 83.333333%;\n  }\n  .offset-xl-11 {\n    margin-left: 91.666667%;\n  }\n}\n\n.table {\n  width: 100%;\n  margin-bottom: 1rem;\n  color: #212529;\n  background-color: transparent;\n}\n\n.table th,\n.table td {\n  padding: 0.75rem;\n  vertical-align: top;\n  border-top: 1px solid #dee2e6;\n}\n\n.table thead th {\n  vertical-align: bottom;\n  border-bottom: 2px solid #dee2e6;\n}\n\n.table tbody + tbody {\n  border-top: 2px solid #dee2e6;\n}\n\n.table-sm th,\n.table-sm td {\n  padding: 0.3rem;\n}\n\n.table-bordered {\n  border: 1px solid #dee2e6;\n}\n\n.table-bordered th,\n.table-bordered td {\n  border: 1px solid #dee2e6;\n}\n\n.table-bordered thead th,\n.table-bordered thead td {\n  border-bottom-width: 2px;\n}\n\n.table-borderless th,\n.table-borderless td,\n.table-borderless thead th,\n.table-borderless tbody + tbody {\n  border: 0;\n}\n\n.table-striped tbody tr:nth-of-type(odd) {\n  background-color: rgba(0, 0, 0, 0.05);\n}\n\n.table-hover tbody tr:hover {\n  color: #212529;\n  background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-primary,\n.table-primary > th,\n.table-primary > td {\n  background-color: #b8daff;\n}\n\n.table-primary th,\n.table-primary td,\n.table-primary thead th,\n.table-primary tbody + tbody {\n  border-color: #7abaff;\n}\n\n.table-hover .table-primary:hover {\n  background-color: #9fcdff;\n}\n\n.table-hover .table-primary:hover > td,\n.table-hover .table-primary:hover > th {\n  background-color: #9fcdff;\n}\n\n.table-secondary,\n.table-secondary > th,\n.table-secondary > td {\n  background-color: #d6d8db;\n}\n\n.table-secondary th,\n.table-secondary td,\n.table-secondary thead th,\n.table-secondary tbody + tbody {\n  border-color: #b3b7bb;\n}\n\n.table-hover .table-secondary:hover {\n  background-color: #c8cbcf;\n}\n\n.table-hover .table-secondary:hover > td,\n.table-hover .table-secondary:hover > th {\n  background-color: #c8cbcf;\n}\n\n.table-success,\n.table-success > th,\n.table-success > td {\n  background-color: #c3e6cb;\n}\n\n.table-success th,\n.table-success td,\n.table-success thead th,\n.table-success tbody + tbody {\n  border-color: #8fd19e;\n}\n\n.table-hover .table-success:hover {\n  background-color: #b1dfbb;\n}\n\n.table-hover .table-success:hover > td,\n.table-hover .table-success:hover > th {\n  background-color: #b1dfbb;\n}\n\n.table-info,\n.table-info > th,\n.table-info > td {\n  background-color: #bee5eb;\n}\n\n.table-info th,\n.table-info td,\n.table-info thead th,\n.table-info tbody + tbody {\n  border-color: #86cfda;\n}\n\n.table-hover .table-info:hover {\n  background-color: #abdde5;\n}\n\n.table-hover .table-info:hover > td,\n.table-hover .table-info:hover > th {\n  background-color: #abdde5;\n}\n\n.table-warning,\n.table-warning > th,\n.table-warning > td {\n  background-color: #ffeeba;\n}\n\n.table-warning th,\n.table-warning td,\n.table-warning thead th,\n.table-warning tbody + tbody {\n  border-color: #ffdf7e;\n}\n\n.table-hover .table-warning:hover {\n  background-color: #ffe8a1;\n}\n\n.table-hover .table-warning:hover > td,\n.table-hover .table-warning:hover > th {\n  background-color: #ffe8a1;\n}\n\n.table-danger,\n.table-danger > th,\n.table-danger > td {\n  background-color: #f5c6cb;\n}\n\n.table-danger th,\n.table-danger td,\n.table-danger thead th,\n.table-danger tbody + tbody {\n  border-color: #ed969e;\n}\n\n.table-hover .table-danger:hover {\n  background-color: #f1b0b7;\n}\n\n.table-hover .table-danger:hover > td,\n.table-hover .table-danger:hover > th {\n  background-color: #f1b0b7;\n}\n\n.table-light,\n.table-light > th,\n.table-light > td {\n  background-color: #fdfdfe;\n}\n\n.table-light th,\n.table-light td,\n.table-light thead th,\n.table-light tbody + tbody {\n  border-color: #fbfcfc;\n}\n\n.table-hover .table-light:hover {\n  background-color: #ececf6;\n}\n\n.table-hover .table-light:hover > td,\n.table-hover .table-light:hover > th {\n  background-color: #ececf6;\n}\n\n.table-dark,\n.table-dark > th,\n.table-dark > td {\n  background-color: #c6c8ca;\n}\n\n.table-dark th,\n.table-dark td,\n.table-dark thead th,\n.table-dark tbody + tbody {\n  border-color: #95999c;\n}\n\n.table-hover .table-dark:hover {\n  background-color: #b9bbbe;\n}\n\n.table-hover .table-dark:hover > td,\n.table-hover .table-dark:hover > th {\n  background-color: #b9bbbe;\n}\n\n.table-active,\n.table-active > th,\n.table-active > td {\n  background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-hover .table-active:hover {\n  background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-hover .table-active:hover > td,\n.table-hover .table-active:hover > th {\n  background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table .thead-dark th {\n  color: #ffffff;\n  background-color: #212529;\n  border-color: #383f45;\n}\n\n.table .thead-light th {\n  color: #495057;\n  background-color: #e9ecef;\n  border-color: #dee2e6;\n}\n\n.table-dark {\n  color: #ffffff;\n  background-color: #212529;\n}\n\n.table-dark th,\n.table-dark td,\n.table-dark thead th {\n  border-color: #383f45;\n}\n\n.table-dark.table-bordered {\n  border: 0;\n}\n\n.table-dark.table-striped tbody tr:nth-of-type(odd) {\n  background-color: rgba(255, 255, 255, 0.05);\n}\n\n.table-dark.table-hover tbody tr:hover {\n  color: #ffffff;\n  background-color: rgba(255, 255, 255, 0.075);\n}\n\n@media (max-width: 575.98px) {\n  .table-responsive-sm {\n    display: block;\n    width: 100%;\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n  }\n  .table-responsive-sm > .table-bordered {\n    border: 0;\n  }\n}\n\n@media (max-width: 767.98px) {\n  .table-responsive-md {\n    display: block;\n    width: 100%;\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n  }\n  .table-responsive-md > .table-bordered {\n    border: 0;\n  }\n}\n\n@media (max-width: 991.98px) {\n  .table-responsive-lg {\n    display: block;\n    width: 100%;\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n  }\n  .table-responsive-lg > .table-bordered {\n    border: 0;\n  }\n}\n\n@media (max-width: 1199.98px) {\n  .table-responsive-xl {\n    display: block;\n    width: 100%;\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n  }\n  .table-responsive-xl > .table-bordered {\n    border: 0;\n  }\n}\n\n.table-responsive {\n  display: block;\n  width: 100%;\n  overflow-x: auto;\n  -webkit-overflow-scrolling: touch;\n}\n\n.table-responsive > .table-bordered {\n  border: 0;\n}\n\n.form-control {\n  display: block;\n  width: 100%;\n  height: calc(2.25rem + 2px);\n  padding: 0.375rem 0.75rem;\n  font-size: 1rem;\n  font-weight: 400;\n  line-height: 1.5;\n  color: #495057;\n  background-color: #ffffff;\n  background-clip: padding-box;\n  border: 1px solid #ced4da;\n  border-radius: 0.25rem;\n  box-shadow: inset 0 0 0 rgba(0, 0, 0, 0);\n  transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .form-control {\n    transition: none;\n  }\n}\n\n.form-control::-ms-expand {\n  background-color: transparent;\n  border: 0;\n}\n\n.form-control:focus {\n  color: #495057;\n  background-color: #ffffff;\n  border-color: #80bdff;\n  outline: 0;\n  box-shadow: inset 0 0 0 rgba(0, 0, 0, 0), none;\n}\n\n.form-control::-webkit-input-placeholder {\n  color: #939ba2;\n  opacity: 1;\n}\n\n.form-control::-moz-placeholder {\n  color: #939ba2;\n  opacity: 1;\n}\n\n.form-control:-ms-input-placeholder {\n  color: #939ba2;\n  opacity: 1;\n}\n\n.form-control::-ms-input-placeholder {\n  color: #939ba2;\n  opacity: 1;\n}\n\n.form-control::placeholder {\n  color: #939ba2;\n  opacity: 1;\n}\n\n.form-control:disabled, .form-control[readonly] {\n  background-color: #e9ecef;\n  opacity: 1;\n}\n\nselect.form-control:focus::-ms-value {\n  color: #495057;\n  background-color: #ffffff;\n}\n\n.form-control-file,\n.form-control-range {\n  display: block;\n  width: 100%;\n}\n\n.col-form-label {\n  padding-top: calc(0.375rem + 1px);\n  padding-bottom: calc(0.375rem + 1px);\n  margin-bottom: 0;\n  font-size: inherit;\n  line-height: 1.5;\n}\n\n.col-form-label-lg {\n  padding-top: calc(0.5rem + 1px);\n  padding-bottom: calc(0.5rem + 1px);\n  font-size: 1.25rem;\n  line-height: 1.5;\n}\n\n.col-form-label-sm {\n  padding-top: calc(0.25rem + 1px);\n  padding-bottom: calc(0.25rem + 1px);\n  font-size: 0.875rem;\n  line-height: 1.5;\n}\n\n.form-control-plaintext {\n  display: block;\n  width: 100%;\n  padding-top: 0.375rem;\n  padding-bottom: 0.375rem;\n  margin-bottom: 0;\n  line-height: 1.5;\n  color: #212529;\n  background-color: transparent;\n  border: solid transparent;\n  border-width: 1px 0;\n}\n\n.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg {\n  padding-right: 0;\n  padding-left: 0;\n}\n\n.form-control-sm {\n  height: calc(1.8125rem + 2px);\n  padding: 0.25rem 0.5rem;\n  font-size: 0.875rem;\n  line-height: 1.5;\n  border-radius: 0.2rem;\n}\n\n.form-control-lg {\n  height: calc(2.875rem + 2px);\n  padding: 0.5rem 1rem;\n  font-size: 1.25rem;\n  line-height: 1.5;\n  border-radius: 0.3rem;\n}\n\nselect.form-control[size], select.form-control[multiple] {\n  height: auto;\n}\n\ntextarea.form-control {\n  height: auto;\n}\n\n.form-group {\n  margin-bottom: 1rem;\n}\n\n.form-text {\n  display: block;\n  margin-top: 0.25rem;\n}\n\n.form-row {\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-wrap: wrap;\n  flex-wrap: wrap;\n  margin-right: -5px;\n  margin-left: -5px;\n}\n\n.form-row > .col,\n.form-row > [class*=\"col-\"] {\n  padding-right: 5px;\n  padding-left: 5px;\n}\n\n.form-check {\n  position: relative;\n  display: block;\n  padding-left: 1.25rem;\n}\n\n.form-check-input {\n  position: absolute;\n  margin-top: 0.3rem;\n  margin-left: -1.25rem;\n}\n\n.form-check-input:disabled ~ .form-check-label {\n  color: #6c757d;\n}\n\n.form-check-label {\n  margin-bottom: 0;\n}\n\n.form-check-inline {\n  display: -ms-inline-flexbox;\n  display: inline-flex;\n  -ms-flex-align: center;\n  align-items: center;\n  padding-left: 0;\n  margin-right: 0.75rem;\n}\n\n.form-check-inline .form-check-input {\n  position: static;\n  margin-top: 0;\n  margin-right: 0.3125rem;\n  margin-left: 0;\n}\n\n.valid-feedback {\n  display: none;\n  width: 100%;\n  margin-top: 0.25rem;\n  font-size: 80%;\n  color: #28a745;\n}\n\n.valid-tooltip {\n  position: absolute;\n  top: 100%;\n  z-index: 5;\n  display: none;\n  max-width: 100%;\n  padding: 0.25rem 0.5rem;\n  margin-top: .1rem;\n  font-size: 0.875rem;\n  line-height: 1.5;\n  color: #ffffff;\n  background-color: rgba(40, 167, 69, 0.9);\n  border-radius: 0.25rem;\n}\n\n.was-validated .form-control:valid, .form-control.is-valid {\n  border-color: #28a745;\n  padding-right: 2.25rem;\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\");\n  background-repeat: no-repeat;\n  background-position: center right calc(0.375em + 0.1875rem);\n  background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n\n.was-validated .form-control:valid:focus, .form-control.is-valid:focus {\n  border-color: #28a745;\n  box-shadow: 0 0 0 0 rgba(40, 167, 69, 0.25);\n}\n\n.was-validated .form-control:valid ~ .valid-feedback,\n.was-validated .form-control:valid ~ .valid-tooltip, .form-control.is-valid ~ .valid-feedback,\n.form-control.is-valid ~ .valid-tooltip {\n  display: block;\n}\n\n.was-validated textarea.form-control:valid, textarea.form-control.is-valid {\n  padding-right: 2.25rem;\n  background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);\n}\n\n.was-validated .custom-select:valid, .custom-select.is-valid {\n  border-color: #28a745;\n  padding-right: calc((1em + 0.75rem) * 3 / 4 + 1.75rem);\n  background: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E\") no-repeat right 0.75rem center/8px 10px, url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\") #ffffff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n\n.was-validated .custom-select:valid:focus, .custom-select.is-valid:focus {\n  border-color: #28a745;\n  box-shadow: 0 0 0 0 rgba(40, 167, 69, 0.25);\n}\n\n.was-validated .custom-select:valid ~ .valid-feedback,\n.was-validated .custom-select:valid ~ .valid-tooltip, .custom-select.is-valid ~ .valid-feedback,\n.custom-select.is-valid ~ .valid-tooltip {\n  display: block;\n}\n\n.was-validated .form-control-file:valid ~ .valid-feedback,\n.was-validated .form-control-file:valid ~ .valid-tooltip, .form-control-file.is-valid ~ .valid-feedback,\n.form-control-file.is-valid ~ .valid-tooltip {\n  display: block;\n}\n\n.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label {\n  color: #28a745;\n}\n\n.was-validated .form-check-input:valid ~ .valid-feedback,\n.was-validated .form-check-input:valid ~ .valid-tooltip, .form-check-input.is-valid ~ .valid-feedback,\n.form-check-input.is-valid ~ .valid-tooltip {\n  display: block;\n}\n\n.was-validated .custom-control-input:valid ~ .custom-control-label, .custom-control-input.is-valid ~ .custom-control-label {\n  color: #28a745;\n}\n\n.was-validated .custom-control-input:valid ~ .custom-control-label::before, .custom-control-input.is-valid ~ .custom-control-label::before {\n  border-color: #28a745;\n}\n\n.was-validated .custom-control-input:valid ~ .valid-feedback,\n.was-validated .custom-control-input:valid ~ .valid-tooltip, .custom-control-input.is-valid ~ .valid-feedback,\n.custom-control-input.is-valid ~ .valid-tooltip {\n  display: block;\n}\n\n.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before, .custom-control-input.is-valid:checked ~ .custom-control-label::before {\n  border-color: #34ce57;\n  background-color: #34ce57;\n}\n\n.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before, .custom-control-input.is-valid:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 0 rgba(40, 167, 69, 0.25);\n}\n\n.was-validated .custom-control-input:valid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-valid:focus:not(:checked) ~ .custom-control-label::before {\n  border-color: #28a745;\n}\n\n.was-validated .custom-file-input:valid ~ .custom-file-label, .custom-file-input.is-valid ~ .custom-file-label {\n  border-color: #28a745;\n}\n\n.was-validated .custom-file-input:valid ~ .valid-feedback,\n.was-validated .custom-file-input:valid ~ .valid-tooltip, .custom-file-input.is-valid ~ .valid-feedback,\n.custom-file-input.is-valid ~ .valid-tooltip {\n  display: block;\n}\n\n.was-validated .custom-file-input:valid:focus ~ .custom-file-label, .custom-file-input.is-valid:focus ~ .custom-file-label {\n  border-color: #28a745;\n  box-shadow: 0 0 0 0 rgba(40, 167, 69, 0.25);\n}\n\n.invalid-feedback {\n  display: none;\n  width: 100%;\n  margin-top: 0.25rem;\n  font-size: 80%;\n  color: #dc3545;\n}\n\n.invalid-tooltip {\n  position: absolute;\n  top: 100%;\n  z-index: 5;\n  display: none;\n  max-width: 100%;\n  padding: 0.25rem 0.5rem;\n  margin-top: .1rem;\n  font-size: 0.875rem;\n  line-height: 1.5;\n  color: #ffffff;\n  background-color: rgba(220, 53, 69, 0.9);\n  border-radius: 0.25rem;\n}\n\n.was-validated .form-control:invalid, .form-control.is-invalid {\n  border-color: #dc3545;\n  padding-right: 2.25rem;\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23dc3545' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E\");\n  background-repeat: no-repeat;\n  background-position: center right calc(0.375em + 0.1875rem);\n  background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n\n.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus {\n  border-color: #dc3545;\n  box-shadow: 0 0 0 0 rgba(220, 53, 69, 0.25);\n}\n\n.was-validated .form-control:invalid ~ .invalid-feedback,\n.was-validated .form-control:invalid ~ .invalid-tooltip, .form-control.is-invalid ~ .invalid-feedback,\n.form-control.is-invalid ~ .invalid-tooltip {\n  display: block;\n}\n\n.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid {\n  padding-right: 2.25rem;\n  background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);\n}\n\n.was-validated .custom-select:invalid, .custom-select.is-invalid {\n  border-color: #dc3545;\n  padding-right: calc((1em + 0.75rem) * 3 / 4 + 1.75rem);\n  background: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E\") no-repeat right 0.75rem center/8px 10px, url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23dc3545' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E\") #ffffff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n\n.was-validated .custom-select:invalid:focus, .custom-select.is-invalid:focus {\n  border-color: #dc3545;\n  box-shadow: 0 0 0 0 rgba(220, 53, 69, 0.25);\n}\n\n.was-validated .custom-select:invalid ~ .invalid-feedback,\n.was-validated .custom-select:invalid ~ .invalid-tooltip, .custom-select.is-invalid ~ .invalid-feedback,\n.custom-select.is-invalid ~ .invalid-tooltip {\n  display: block;\n}\n\n.was-validated .form-control-file:invalid ~ .invalid-feedback,\n.was-validated .form-control-file:invalid ~ .invalid-tooltip, .form-control-file.is-invalid ~ .invalid-feedback,\n.form-control-file.is-invalid ~ .invalid-tooltip {\n  display: block;\n}\n\n.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label {\n  color: #dc3545;\n}\n\n.was-validated .form-check-input:invalid ~ .invalid-feedback,\n.was-validated .form-check-input:invalid ~ .invalid-tooltip, .form-check-input.is-invalid ~ .invalid-feedback,\n.form-check-input.is-invalid ~ .invalid-tooltip {\n  display: block;\n}\n\n.was-validated .custom-control-input:invalid ~ .custom-control-label, .custom-control-input.is-invalid ~ .custom-control-label {\n  color: #dc3545;\n}\n\n.was-validated .custom-control-input:invalid ~ .custom-control-label::before, .custom-control-input.is-invalid ~ .custom-control-label::before {\n  border-color: #dc3545;\n}\n\n.was-validated .custom-control-input:invalid ~ .invalid-feedback,\n.was-validated .custom-control-input:invalid ~ .invalid-tooltip, .custom-control-input.is-invalid ~ .invalid-feedback,\n.custom-control-input.is-invalid ~ .invalid-tooltip {\n  display: block;\n}\n\n.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before, .custom-control-input.is-invalid:checked ~ .custom-control-label::before {\n  border-color: #e4606d;\n  background-color: #e4606d;\n}\n\n.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before, .custom-control-input.is-invalid:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 0 rgba(220, 53, 69, 0.25);\n}\n\n.was-validated .custom-control-input:invalid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-invalid:focus:not(:checked) ~ .custom-control-label::before {\n  border-color: #dc3545;\n}\n\n.was-validated .custom-file-input:invalid ~ .custom-file-label, .custom-file-input.is-invalid ~ .custom-file-label {\n  border-color: #dc3545;\n}\n\n.was-validated .custom-file-input:invalid ~ .invalid-feedback,\n.was-validated .custom-file-input:invalid ~ .invalid-tooltip, .custom-file-input.is-invalid ~ .invalid-feedback,\n.custom-file-input.is-invalid ~ .invalid-tooltip {\n  display: block;\n}\n\n.was-validated .custom-file-input:invalid:focus ~ .custom-file-label, .custom-file-input.is-invalid:focus ~ .custom-file-label {\n  border-color: #dc3545;\n  box-shadow: 0 0 0 0 rgba(220, 53, 69, 0.25);\n}\n\n.form-inline {\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-flow: row wrap;\n  flex-flow: row wrap;\n  -ms-flex-align: center;\n  align-items: center;\n}\n\n.form-inline .form-check {\n  width: 100%;\n}\n\n@media (min-width: 576px) {\n  .form-inline label {\n    display: -ms-flexbox;\n    display: flex;\n    -ms-flex-align: center;\n    align-items: center;\n    -ms-flex-pack: center;\n    justify-content: center;\n    margin-bottom: 0;\n  }\n  .form-inline .form-group {\n    display: -ms-flexbox;\n    display: flex;\n    -ms-flex: 0 0 auto;\n    flex: 0 0 auto;\n    -ms-flex-flow: row wrap;\n    flex-flow: row wrap;\n    -ms-flex-align: center;\n    align-items: center;\n    margin-bottom: 0;\n  }\n  .form-inline .form-control {\n    display: inline-block;\n    width: auto;\n    vertical-align: middle;\n  }\n  .form-inline .form-control-plaintext {\n    display: inline-block;\n  }\n  .form-inline .input-group,\n  .form-inline .custom-select {\n    width: auto;\n  }\n  .form-inline .form-check {\n    display: -ms-flexbox;\n    display: flex;\n    -ms-flex-align: center;\n    align-items: center;\n    -ms-flex-pack: center;\n    justify-content: center;\n    width: auto;\n    padding-left: 0;\n  }\n  .form-inline .form-check-input {\n    position: relative;\n    -ms-flex-negative: 0;\n    flex-shrink: 0;\n    margin-top: 0;\n    margin-right: 0.25rem;\n    margin-left: 0;\n  }\n  .form-inline .custom-control {\n    -ms-flex-align: center;\n    align-items: center;\n    -ms-flex-pack: center;\n    justify-content: center;\n  }\n  .form-inline .custom-control-label {\n    margin-bottom: 0;\n  }\n}\n\n.btn {\n  display: inline-block;\n  font-weight: 400;\n  color: #212529;\n  text-align: center;\n  vertical-align: middle;\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  user-select: none;\n  background-color: transparent;\n  border: 1px solid transparent;\n  padding: 0.375rem 0.75rem;\n  font-size: 1rem;\n  line-height: 1.5;\n  border-radius: 0.25rem;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .btn {\n    transition: none;\n  }\n}\n\n.btn:hover {\n  color: #212529;\n  text-decoration: none;\n}\n\n.btn:focus, .btn.focus {\n  outline: 0;\n  box-shadow: none;\n}\n\n.btn.disabled, .btn:disabled {\n  opacity: 0.65;\n  box-shadow: none;\n}\n\n.btn:not(:disabled):not(.disabled):active, .btn:not(:disabled):not(.disabled).active {\n  box-shadow: none;\n}\n\na.btn.disabled,\nfieldset:disabled a.btn {\n  pointer-events: none;\n}\n\n.btn-primary {\n  color: #ffffff;\n  background-color: #007bff;\n  border-color: #007bff;\n  box-shadow: none;\n}\n\n.btn-primary:hover {\n  color: #ffffff;\n  background-color: #0069d9;\n  border-color: #0062cc;\n}\n\n.btn-primary:focus, .btn-primary.focus {\n  box-shadow: none, 0 0 0 0 rgba(38, 143, 255, 0.5);\n}\n\n.btn-primary.disabled, .btn-primary:disabled {\n  color: #ffffff;\n  background-color: #007bff;\n  border-color: #007bff;\n}\n\n.btn-primary:not(:disabled):not(.disabled):active, .btn-primary:not(:disabled):not(.disabled).active,\n.show > .btn-primary.dropdown-toggle {\n  color: #ffffff;\n  background-color: #0062cc;\n  border-color: #005cbf;\n}\n\n.btn-primary:not(:disabled):not(.disabled):active:focus, .btn-primary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-primary.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0 rgba(38, 143, 255, 0.5);\n}\n\n.btn-secondary {\n  color: #ffffff;\n  background-color: #6c757d;\n  border-color: #6c757d;\n  box-shadow: none;\n}\n\n.btn-secondary:hover {\n  color: #ffffff;\n  background-color: #5a6268;\n  border-color: #545b62;\n}\n\n.btn-secondary:focus, .btn-secondary.focus {\n  box-shadow: none, 0 0 0 0 rgba(130, 138, 145, 0.5);\n}\n\n.btn-secondary.disabled, .btn-secondary:disabled {\n  color: #ffffff;\n  background-color: #6c757d;\n  border-color: #6c757d;\n}\n\n.btn-secondary:not(:disabled):not(.disabled):active, .btn-secondary:not(:disabled):not(.disabled).active,\n.show > .btn-secondary.dropdown-toggle {\n  color: #ffffff;\n  background-color: #545b62;\n  border-color: #4e555b;\n}\n\n.btn-secondary:not(:disabled):not(.disabled):active:focus, .btn-secondary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-secondary.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0 rgba(130, 138, 145, 0.5);\n}\n\n.btn-success {\n  color: #ffffff;\n  background-color: #28a745;\n  border-color: #28a745;\n  box-shadow: none;\n}\n\n.btn-success:hover {\n  color: #ffffff;\n  background-color: #218838;\n  border-color: #1e7e34;\n}\n\n.btn-success:focus, .btn-success.focus {\n  box-shadow: none, 0 0 0 0 rgba(72, 180, 97, 0.5);\n}\n\n.btn-success.disabled, .btn-success:disabled {\n  color: #ffffff;\n  background-color: #28a745;\n  border-color: #28a745;\n}\n\n.btn-success:not(:disabled):not(.disabled):active, .btn-success:not(:disabled):not(.disabled).active,\n.show > .btn-success.dropdown-toggle {\n  color: #ffffff;\n  background-color: #1e7e34;\n  border-color: #1c7430;\n}\n\n.btn-success:not(:disabled):not(.disabled):active:focus, .btn-success:not(:disabled):not(.disabled).active:focus,\n.show > .btn-success.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0 rgba(72, 180, 97, 0.5);\n}\n\n.btn-info {\n  color: #ffffff;\n  background-color: #17a2b8;\n  border-color: #17a2b8;\n  box-shadow: none;\n}\n\n.btn-info:hover {\n  color: #ffffff;\n  background-color: #138496;\n  border-color: #117a8b;\n}\n\n.btn-info:focus, .btn-info.focus {\n  box-shadow: none, 0 0 0 0 rgba(58, 176, 195, 0.5);\n}\n\n.btn-info.disabled, .btn-info:disabled {\n  color: #ffffff;\n  background-color: #17a2b8;\n  border-color: #17a2b8;\n}\n\n.btn-info:not(:disabled):not(.disabled):active, .btn-info:not(:disabled):not(.disabled).active,\n.show > .btn-info.dropdown-toggle {\n  color: #ffffff;\n  background-color: #117a8b;\n  border-color: #10707f;\n}\n\n.btn-info:not(:disabled):not(.disabled):active:focus, .btn-info:not(:disabled):not(.disabled).active:focus,\n.show > .btn-info.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0 rgba(58, 176, 195, 0.5);\n}\n\n.btn-warning {\n  color: #1F2D3D;\n  background-color: #ffc107;\n  border-color: #ffc107;\n  box-shadow: none;\n}\n\n.btn-warning:hover {\n  color: #1F2D3D;\n  background-color: #e0a800;\n  border-color: #d39e00;\n}\n\n.btn-warning:focus, .btn-warning.focus {\n  box-shadow: none, 0 0 0 0 rgba(221, 171, 15, 0.5);\n}\n\n.btn-warning.disabled, .btn-warning:disabled {\n  color: #1F2D3D;\n  background-color: #ffc107;\n  border-color: #ffc107;\n}\n\n.btn-warning:not(:disabled):not(.disabled):active, .btn-warning:not(:disabled):not(.disabled).active,\n.show > .btn-warning.dropdown-toggle {\n  color: #1F2D3D;\n  background-color: #d39e00;\n  border-color: #c69500;\n}\n\n.btn-warning:not(:disabled):not(.disabled):active:focus, .btn-warning:not(:disabled):not(.disabled).active:focus,\n.show > .btn-warning.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0 rgba(221, 171, 15, 0.5);\n}\n\n.btn-danger {\n  color: #ffffff;\n  background-color: #dc3545;\n  border-color: #dc3545;\n  box-shadow: none;\n}\n\n.btn-danger:hover {\n  color: #ffffff;\n  background-color: #c82333;\n  border-color: #bd2130;\n}\n\n.btn-danger:focus, .btn-danger.focus {\n  box-shadow: none, 0 0 0 0 rgba(225, 83, 97, 0.5);\n}\n\n.btn-danger.disabled, .btn-danger:disabled {\n  color: #ffffff;\n  background-color: #dc3545;\n  border-color: #dc3545;\n}\n\n.btn-danger:not(:disabled):not(.disabled):active, .btn-danger:not(:disabled):not(.disabled).active,\n.show > .btn-danger.dropdown-toggle {\n  color: #ffffff;\n  background-color: #bd2130;\n  border-color: #b21f2d;\n}\n\n.btn-danger:not(:disabled):not(.disabled):active:focus, .btn-danger:not(:disabled):not(.disabled).active:focus,\n.show > .btn-danger.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0 rgba(225, 83, 97, 0.5);\n}\n\n.btn-light {\n  color: #1F2D3D;\n  background-color: #f8f9fa;\n  border-color: #f8f9fa;\n  box-shadow: none;\n}\n\n.btn-light:hover {\n  color: #1F2D3D;\n  background-color: #e2e6ea;\n  border-color: #dae0e5;\n}\n\n.btn-light:focus, .btn-light.focus {\n  box-shadow: none, 0 0 0 0 rgba(215, 218, 222, 0.5);\n}\n\n.btn-light.disabled, .btn-light:disabled {\n  color: #1F2D3D;\n  background-color: #f8f9fa;\n  border-color: #f8f9fa;\n}\n\n.btn-light:not(:disabled):not(.disabled):active, .btn-light:not(:disabled):not(.disabled).active,\n.show > .btn-light.dropdown-toggle {\n  color: #1F2D3D;\n  background-color: #dae0e5;\n  border-color: #d3d9df;\n}\n\n.btn-light:not(:disabled):not(.disabled):active:focus, .btn-light:not(:disabled):not(.disabled).active:focus,\n.show > .btn-light.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0 rgba(215, 218, 222, 0.5);\n}\n\n.btn-dark {\n  color: #ffffff;\n  background-color: #343a40;\n  border-color: #343a40;\n  box-shadow: none;\n}\n\n.btn-dark:hover {\n  color: #ffffff;\n  background-color: #23272b;\n  border-color: #1d2124;\n}\n\n.btn-dark:focus, .btn-dark.focus {\n  box-shadow: none, 0 0 0 0 rgba(82, 88, 93, 0.5);\n}\n\n.btn-dark.disabled, .btn-dark:disabled {\n  color: #ffffff;\n  background-color: #343a40;\n  border-color: #343a40;\n}\n\n.btn-dark:not(:disabled):not(.disabled):active, .btn-dark:not(:disabled):not(.disabled).active,\n.show > .btn-dark.dropdown-toggle {\n  color: #ffffff;\n  background-color: #1d2124;\n  border-color: #171a1d;\n}\n\n.btn-dark:not(:disabled):not(.disabled):active:focus, .btn-dark:not(:disabled):not(.disabled).active:focus,\n.show > .btn-dark.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0 rgba(82, 88, 93, 0.5);\n}\n\n.btn-outline-primary {\n  color: #007bff;\n  border-color: #007bff;\n}\n\n.btn-outline-primary:hover {\n  color: #ffffff;\n  background-color: #007bff;\n  border-color: #007bff;\n}\n\n.btn-outline-primary:focus, .btn-outline-primary.focus {\n  box-shadow: 0 0 0 0 rgba(0, 123, 255, 0.5);\n}\n\n.btn-outline-primary.disabled, .btn-outline-primary:disabled {\n  color: #007bff;\n  background-color: transparent;\n}\n\n.btn-outline-primary:not(:disabled):not(.disabled):active, .btn-outline-primary:not(:disabled):not(.disabled).active,\n.show > .btn-outline-primary.dropdown-toggle {\n  color: #ffffff;\n  background-color: #007bff;\n  border-color: #007bff;\n}\n\n.btn-outline-primary:not(:disabled):not(.disabled):active:focus, .btn-outline-primary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-primary.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0 rgba(0, 123, 255, 0.5);\n}\n\n.btn-outline-secondary {\n  color: #6c757d;\n  border-color: #6c757d;\n}\n\n.btn-outline-secondary:hover {\n  color: #ffffff;\n  background-color: #6c757d;\n  border-color: #6c757d;\n}\n\n.btn-outline-secondary:focus, .btn-outline-secondary.focus {\n  box-shadow: 0 0 0 0 rgba(108, 117, 125, 0.5);\n}\n\n.btn-outline-secondary.disabled, .btn-outline-secondary:disabled {\n  color: #6c757d;\n  background-color: transparent;\n}\n\n.btn-outline-secondary:not(:disabled):not(.disabled):active, .btn-outline-secondary:not(:disabled):not(.disabled).active,\n.show > .btn-outline-secondary.dropdown-toggle {\n  color: #ffffff;\n  background-color: #6c757d;\n  border-color: #6c757d;\n}\n\n.btn-outline-secondary:not(:disabled):not(.disabled):active:focus, .btn-outline-secondary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-secondary.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0 rgba(108, 117, 125, 0.5);\n}\n\n.btn-outline-success {\n  color: #28a745;\n  border-color: #28a745;\n}\n\n.btn-outline-success:hover {\n  color: #ffffff;\n  background-color: #28a745;\n  border-color: #28a745;\n}\n\n.btn-outline-success:focus, .btn-outline-success.focus {\n  box-shadow: 0 0 0 0 rgba(40, 167, 69, 0.5);\n}\n\n.btn-outline-success.disabled, .btn-outline-success:disabled {\n  color: #28a745;\n  background-color: transparent;\n}\n\n.btn-outline-success:not(:disabled):not(.disabled):active, .btn-outline-success:not(:disabled):not(.disabled).active,\n.show > .btn-outline-success.dropdown-toggle {\n  color: #ffffff;\n  background-color: #28a745;\n  border-color: #28a745;\n}\n\n.btn-outline-success:not(:disabled):not(.disabled):active:focus, .btn-outline-success:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-success.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0 rgba(40, 167, 69, 0.5);\n}\n\n.btn-outline-info {\n  color: #17a2b8;\n  border-color: #17a2b8;\n}\n\n.btn-outline-info:hover {\n  color: #ffffff;\n  background-color: #17a2b8;\n  border-color: #17a2b8;\n}\n\n.btn-outline-info:focus, .btn-outline-info.focus {\n  box-shadow: 0 0 0 0 rgba(23, 162, 184, 0.5);\n}\n\n.btn-outline-info.disabled, .btn-outline-info:disabled {\n  color: #17a2b8;\n  background-color: transparent;\n}\n\n.btn-outline-info:not(:disabled):not(.disabled):active, .btn-outline-info:not(:disabled):not(.disabled).active,\n.show > .btn-outline-info.dropdown-toggle {\n  color: #ffffff;\n  background-color: #17a2b8;\n  border-color: #17a2b8;\n}\n\n.btn-outline-info:not(:disabled):not(.disabled):active:focus, .btn-outline-info:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-info.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0 rgba(23, 162, 184, 0.5);\n}\n\n.btn-outline-warning {\n  color: #ffc107;\n  border-color: #ffc107;\n}\n\n.btn-outline-warning:hover {\n  color: #1F2D3D;\n  background-color: #ffc107;\n  border-color: #ffc107;\n}\n\n.btn-outline-warning:focus, .btn-outline-warning.focus {\n  box-shadow: 0 0 0 0 rgba(255, 193, 7, 0.5);\n}\n\n.btn-outline-warning.disabled, .btn-outline-warning:disabled {\n  color: #ffc107;\n  background-color: transparent;\n}\n\n.btn-outline-warning:not(:disabled):not(.disabled):active, .btn-outline-warning:not(:disabled):not(.disabled).active,\n.show > .btn-outline-warning.dropdown-toggle {\n  color: #1F2D3D;\n  background-color: #ffc107;\n  border-color: #ffc107;\n}\n\n.btn-outline-warning:not(:disabled):not(.disabled):active:focus, .btn-outline-warning:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-warning.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0 rgba(255, 193, 7, 0.5);\n}\n\n.btn-outline-danger {\n  color: #dc3545;\n  border-color: #dc3545;\n}\n\n.btn-outline-danger:hover {\n  color: #ffffff;\n  background-color: #dc3545;\n  border-color: #dc3545;\n}\n\n.btn-outline-danger:focus, .btn-outline-danger.focus {\n  box-shadow: 0 0 0 0 rgba(220, 53, 69, 0.5);\n}\n\n.btn-outline-danger.disabled, .btn-outline-danger:disabled {\n  color: #dc3545;\n  background-color: transparent;\n}\n\n.btn-outline-danger:not(:disabled):not(.disabled):active, .btn-outline-danger:not(:disabled):not(.disabled).active,\n.show > .btn-outline-danger.dropdown-toggle {\n  color: #ffffff;\n  background-color: #dc3545;\n  border-color: #dc3545;\n}\n\n.btn-outline-danger:not(:disabled):not(.disabled):active:focus, .btn-outline-danger:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-danger.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0 rgba(220, 53, 69, 0.5);\n}\n\n.btn-outline-light {\n  color: #f8f9fa;\n  border-color: #f8f9fa;\n}\n\n.btn-outline-light:hover {\n  color: #1F2D3D;\n  background-color: #f8f9fa;\n  border-color: #f8f9fa;\n}\n\n.btn-outline-light:focus, .btn-outline-light.focus {\n  box-shadow: 0 0 0 0 rgba(248, 249, 250, 0.5);\n}\n\n.btn-outline-light.disabled, .btn-outline-light:disabled {\n  color: #f8f9fa;\n  background-color: transparent;\n}\n\n.btn-outline-light:not(:disabled):not(.disabled):active, .btn-outline-light:not(:disabled):not(.disabled).active,\n.show > .btn-outline-light.dropdown-toggle {\n  color: #1F2D3D;\n  background-color: #f8f9fa;\n  border-color: #f8f9fa;\n}\n\n.btn-outline-light:not(:disabled):not(.disabled):active:focus, .btn-outline-light:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-light.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0 rgba(248, 249, 250, 0.5);\n}\n\n.btn-outline-dark {\n  color: #343a40;\n  border-color: #343a40;\n}\n\n.btn-outline-dark:hover {\n  color: #ffffff;\n  background-color: #343a40;\n  border-color: #343a40;\n}\n\n.btn-outline-dark:focus, .btn-outline-dark.focus {\n  box-shadow: 0 0 0 0 rgba(52, 58, 64, 0.5);\n}\n\n.btn-outline-dark.disabled, .btn-outline-dark:disabled {\n  color: #343a40;\n  background-color: transparent;\n}\n\n.btn-outline-dark:not(:disabled):not(.disabled):active, .btn-outline-dark:not(:disabled):not(.disabled).active,\n.show > .btn-outline-dark.dropdown-toggle {\n  color: #ffffff;\n  background-color: #343a40;\n  border-color: #343a40;\n}\n\n.btn-outline-dark:not(:disabled):not(.disabled):active:focus, .btn-outline-dark:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-dark.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0 rgba(52, 58, 64, 0.5);\n}\n\n.btn-link {\n  font-weight: 400;\n  color: #007bff;\n  text-decoration: none;\n}\n\n.btn-link:hover {\n  color: #0056b3;\n  text-decoration: none;\n}\n\n.btn-link:focus, .btn-link.focus {\n  text-decoration: none;\n  box-shadow: none;\n}\n\n.btn-link:disabled, .btn-link.disabled {\n  color: #6c757d;\n  pointer-events: none;\n}\n\n.btn-lg, .btn-group-lg > .btn {\n  padding: 0.5rem 1rem;\n  font-size: 1.25rem;\n  line-height: 1.5;\n  border-radius: 0.3rem;\n}\n\n.btn-sm, .btn-group-sm > .btn {\n  padding: 0.25rem 0.5rem;\n  font-size: 0.875rem;\n  line-height: 1.5;\n  border-radius: 0.2rem;\n}\n\n.btn-block {\n  display: block;\n  width: 100%;\n}\n\n.btn-block + .btn-block {\n  margin-top: 0.5rem;\n}\n\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n  width: 100%;\n}\n\n.fade {\n  transition: opacity 0.15s linear;\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .fade {\n    transition: none;\n  }\n}\n\n.fade:not(.show) {\n  opacity: 0;\n}\n\n.collapse:not(.show) {\n  display: none;\n}\n\n.collapsing {\n  position: relative;\n  height: 0;\n  overflow: hidden;\n  transition: height 0.35s ease;\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .collapsing {\n    transition: none;\n  }\n}\n\n.dropup,\n.dropright,\n.dropdown,\n.dropleft {\n  position: relative;\n}\n\n.dropdown-toggle {\n  white-space: nowrap;\n}\n\n.dropdown-toggle::after {\n  display: inline-block;\n  margin-left: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0.3em solid;\n  border-right: 0.3em solid transparent;\n  border-bottom: 0;\n  border-left: 0.3em solid transparent;\n}\n\n.dropdown-toggle:empty::after {\n  margin-left: 0;\n}\n\n.dropdown-menu {\n  position: absolute;\n  top: 100%;\n  left: 0;\n  z-index: 1000;\n  display: none;\n  float: left;\n  min-width: 10rem;\n  padding: 0.5rem 0;\n  margin: 0.125rem 0 0;\n  font-size: 1rem;\n  color: #212529;\n  text-align: left;\n  list-style: none;\n  background-color: #ffffff;\n  background-clip: padding-box;\n  border: 1px solid rgba(0, 0, 0, 0.15);\n  border-radius: 0.25rem;\n  box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.175);\n}\n\n.dropdown-menu-left {\n  right: auto;\n  left: 0;\n}\n\n.dropdown-menu-right {\n  right: 0;\n  left: auto;\n}\n\n@media (min-width: 576px) {\n  .dropdown-menu-sm-left {\n    right: auto;\n    left: 0;\n  }\n  .dropdown-menu-sm-right {\n    right: 0;\n    left: auto;\n  }\n}\n\n@media (min-width: 768px) {\n  .dropdown-menu-md-left {\n    right: auto;\n    left: 0;\n  }\n  .dropdown-menu-md-right {\n    right: 0;\n    left: auto;\n  }\n}\n\n@media (min-width: 992px) {\n  .dropdown-menu-lg-left {\n    right: auto;\n    left: 0;\n  }\n  .dropdown-menu-lg-right {\n    right: 0;\n    left: auto;\n  }\n}\n\n@media (min-width: 1200px) {\n  .dropdown-menu-xl-left {\n    right: auto;\n    left: 0;\n  }\n  .dropdown-menu-xl-right {\n    right: 0;\n    left: auto;\n  }\n}\n\n.dropup .dropdown-menu {\n  top: auto;\n  bottom: 100%;\n  margin-top: 0;\n  margin-bottom: 0.125rem;\n}\n\n.dropup .dropdown-toggle::after {\n  display: inline-block;\n  margin-left: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0;\n  border-right: 0.3em solid transparent;\n  border-bottom: 0.3em solid;\n  border-left: 0.3em solid transparent;\n}\n\n.dropup .dropdown-toggle:empty::after {\n  margin-left: 0;\n}\n\n.dropright .dropdown-menu {\n  top: 0;\n  right: auto;\n  left: 100%;\n  margin-top: 0;\n  margin-left: 0.125rem;\n}\n\n.dropright .dropdown-toggle::after {\n  display: inline-block;\n  margin-left: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0.3em solid transparent;\n  border-right: 0;\n  border-bottom: 0.3em solid transparent;\n  border-left: 0.3em solid;\n}\n\n.dropright .dropdown-toggle:empty::after {\n  margin-left: 0;\n}\n\n.dropright .dropdown-toggle::after {\n  vertical-align: 0;\n}\n\n.dropleft .dropdown-menu {\n  top: 0;\n  right: 100%;\n  left: auto;\n  margin-top: 0;\n  margin-right: 0.125rem;\n}\n\n.dropleft .dropdown-toggle::after {\n  display: inline-block;\n  margin-left: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n}\n\n.dropleft .dropdown-toggle::after {\n  display: none;\n}\n\n.dropleft .dropdown-toggle::before {\n  display: inline-block;\n  margin-right: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0.3em solid transparent;\n  border-right: 0.3em solid;\n  border-bottom: 0.3em solid transparent;\n}\n\n.dropleft .dropdown-toggle:empty::after {\n  margin-left: 0;\n}\n\n.dropleft .dropdown-toggle::before {\n  vertical-align: 0;\n}\n\n.dropdown-menu[x-placement^=\"top\"], .dropdown-menu[x-placement^=\"right\"], .dropdown-menu[x-placement^=\"bottom\"], .dropdown-menu[x-placement^=\"left\"] {\n  right: auto;\n  bottom: auto;\n}\n\n.dropdown-divider {\n  height: 0;\n  margin: 0.5rem 0;\n  overflow: hidden;\n  border-top: 1px solid #e9ecef;\n}\n\n.dropdown-item {\n  display: block;\n  width: 100%;\n  padding: 0.25rem 1rem;\n  clear: both;\n  font-weight: 400;\n  color: #212529;\n  text-align: inherit;\n  white-space: nowrap;\n  background-color: transparent;\n  border: 0;\n}\n\n.dropdown-item:hover, .dropdown-item:focus {\n  color: #16181b;\n  text-decoration: none;\n  background-color: #f8f9fa;\n}\n\n.dropdown-item.active, .dropdown-item:active {\n  color: #ffffff;\n  text-decoration: none;\n  background-color: #007bff;\n}\n\n.dropdown-item.disabled, .dropdown-item:disabled {\n  color: #6c757d;\n  pointer-events: none;\n  background-color: transparent;\n}\n\n.dropdown-menu.show {\n  display: block;\n}\n\n.dropdown-header {\n  display: block;\n  padding: 0.5rem 1rem;\n  margin-bottom: 0;\n  font-size: 0.875rem;\n  color: #6c757d;\n  white-space: nowrap;\n}\n\n.dropdown-item-text {\n  display: block;\n  padding: 0.25rem 1rem;\n  color: #212529;\n}\n\n.btn-group,\n.btn-group-vertical {\n  position: relative;\n  display: -ms-inline-flexbox;\n  display: inline-flex;\n  vertical-align: middle;\n}\n\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n  position: relative;\n  -ms-flex: 1 1 auto;\n  flex: 1 1 auto;\n}\n\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover {\n  z-index: 1;\n}\n\n.btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active,\n.btn-group-vertical > .btn:focus,\n.btn-group-vertical > .btn:active,\n.btn-group-vertical > .btn.active {\n  z-index: 1;\n}\n\n.btn-toolbar {\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-wrap: wrap;\n  flex-wrap: wrap;\n  -ms-flex-pack: start;\n  justify-content: flex-start;\n}\n\n.btn-toolbar .input-group {\n  width: auto;\n}\n\n.btn-group > .btn:not(:first-child),\n.btn-group > .btn-group:not(:first-child) {\n  margin-left: -1px;\n}\n\n.btn-group > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group > .btn-group:not(:last-child) > .btn {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n\n.btn-group > .btn:not(:first-child),\n.btn-group > .btn-group:not(:first-child) > .btn {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n\n.dropdown-toggle-split {\n  padding-right: 0.5625rem;\n  padding-left: 0.5625rem;\n}\n\n.dropdown-toggle-split::after,\n.dropup .dropdown-toggle-split::after,\n.dropright .dropdown-toggle-split::after {\n  margin-left: 0;\n}\n\n.dropleft .dropdown-toggle-split::before {\n  margin-right: 0;\n}\n\n.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split {\n  padding-right: 0.375rem;\n  padding-left: 0.375rem;\n}\n\n.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split {\n  padding-right: 0.75rem;\n  padding-left: 0.75rem;\n}\n\n.btn-group.show .dropdown-toggle {\n  box-shadow: none;\n}\n\n.btn-group.show .dropdown-toggle.btn-link {\n  box-shadow: none;\n}\n\n.btn-group-vertical {\n  -ms-flex-direction: column;\n  flex-direction: column;\n  -ms-flex-align: start;\n  align-items: flex-start;\n  -ms-flex-pack: center;\n  justify-content: center;\n}\n\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group {\n  width: 100%;\n}\n\n.btn-group-vertical > .btn:not(:first-child),\n.btn-group-vertical > .btn-group:not(:first-child) {\n  margin-top: -1px;\n}\n\n.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group-vertical > .btn-group:not(:last-child) > .btn {\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n\n.btn-group-vertical > .btn:not(:first-child),\n.btn-group-vertical > .btn-group:not(:first-child) > .btn {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n\n.btn-group-toggle > .btn,\n.btn-group-toggle > .btn-group > .btn {\n  margin-bottom: 0;\n}\n\n.btn-group-toggle > .btn input[type=\"radio\"],\n.btn-group-toggle > .btn input[type=\"checkbox\"],\n.btn-group-toggle > .btn-group > .btn input[type=\"radio\"],\n.btn-group-toggle > .btn-group > .btn input[type=\"checkbox\"] {\n  position: absolute;\n  clip: rect(0, 0, 0, 0);\n  pointer-events: none;\n}\n\n.input-group {\n  position: relative;\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-wrap: wrap;\n  flex-wrap: wrap;\n  -ms-flex-align: stretch;\n  align-items: stretch;\n  width: 100%;\n}\n\n.input-group > .form-control,\n.input-group > .form-control-plaintext,\n.input-group > .custom-select,\n.input-group > .custom-file {\n  position: relative;\n  -ms-flex: 1 1 auto;\n  flex: 1 1 auto;\n  width: 1%;\n  margin-bottom: 0;\n}\n\n.input-group > .form-control + .form-control,\n.input-group > .form-control + .custom-select,\n.input-group > .form-control + .custom-file,\n.input-group > .form-control-plaintext + .form-control,\n.input-group > .form-control-plaintext + .custom-select,\n.input-group > .form-control-plaintext + .custom-file,\n.input-group > .custom-select + .form-control,\n.input-group > .custom-select + .custom-select,\n.input-group > .custom-select + .custom-file,\n.input-group > .custom-file + .form-control,\n.input-group > .custom-file + .custom-select,\n.input-group > .custom-file + .custom-file {\n  margin-left: -1px;\n}\n\n.input-group > .form-control:focus,\n.input-group > .custom-select:focus,\n.input-group > .custom-file .custom-file-input:focus ~ .custom-file-label {\n  z-index: 3;\n}\n\n.input-group > .custom-file .custom-file-input:focus {\n  z-index: 4;\n}\n\n.input-group > .form-control:not(:last-child),\n.input-group > .custom-select:not(:last-child) {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n\n.input-group > .form-control:not(:first-child),\n.input-group > .custom-select:not(:first-child) {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n\n.input-group > .custom-file {\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-align: center;\n  align-items: center;\n}\n\n.input-group > .custom-file:not(:last-child) .custom-file-label,\n.input-group > .custom-file:not(:last-child) .custom-file-label::after {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n\n.input-group > .custom-file:not(:first-child) .custom-file-label {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n\n.input-group-prepend,\n.input-group-append {\n  display: -ms-flexbox;\n  display: flex;\n}\n\n.input-group-prepend .btn,\n.input-group-append .btn {\n  position: relative;\n  z-index: 2;\n}\n\n.input-group-prepend .btn:focus,\n.input-group-append .btn:focus {\n  z-index: 3;\n}\n\n.input-group-prepend .btn + .btn,\n.input-group-prepend .btn + .input-group-text,\n.input-group-prepend .input-group-text + .input-group-text,\n.input-group-prepend .input-group-text + .btn,\n.input-group-append .btn + .btn,\n.input-group-append .btn + .input-group-text,\n.input-group-append .input-group-text + .input-group-text,\n.input-group-append .input-group-text + .btn {\n  margin-left: -1px;\n}\n\n.input-group-prepend {\n  margin-right: -1px;\n}\n\n.input-group-append {\n  margin-left: -1px;\n}\n\n.input-group-text {\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-align: center;\n  align-items: center;\n  padding: 0.375rem 0.75rem;\n  margin-bottom: 0;\n  font-size: 1rem;\n  font-weight: 400;\n  line-height: 1.5;\n  color: #495057;\n  text-align: center;\n  white-space: nowrap;\n  background-color: #e9ecef;\n  border: 1px solid #ced4da;\n  border-radius: 0.25rem;\n}\n\n.input-group-text input[type=\"radio\"],\n.input-group-text input[type=\"checkbox\"] {\n  margin-top: 0;\n}\n\n.input-group-lg > .form-control:not(textarea),\n.input-group-lg > .custom-select {\n  height: calc(2.875rem + 2px);\n}\n\n.input-group-lg > .form-control,\n.input-group-lg > .custom-select,\n.input-group-lg > .input-group-prepend > .input-group-text,\n.input-group-lg > .input-group-append > .input-group-text,\n.input-group-lg > .input-group-prepend > .btn,\n.input-group-lg > .input-group-append > .btn {\n  padding: 0.5rem 1rem;\n  font-size: 1.25rem;\n  line-height: 1.5;\n  border-radius: 0.3rem;\n}\n\n.input-group-sm > .form-control:not(textarea),\n.input-group-sm > .custom-select {\n  height: calc(1.8125rem + 2px);\n}\n\n.input-group-sm > .form-control,\n.input-group-sm > .custom-select,\n.input-group-sm > .input-group-prepend > .input-group-text,\n.input-group-sm > .input-group-append > .input-group-text,\n.input-group-sm > .input-group-prepend > .btn,\n.input-group-sm > .input-group-append > .btn {\n  padding: 0.25rem 0.5rem;\n  font-size: 0.875rem;\n  line-height: 1.5;\n  border-radius: 0.2rem;\n}\n\n.input-group-lg > .custom-select,\n.input-group-sm > .custom-select {\n  padding-right: 1.75rem;\n}\n\n.input-group > .input-group-prepend > .btn,\n.input-group > .input-group-prepend > .input-group-text,\n.input-group > .input-group-append:not(:last-child) > .btn,\n.input-group > .input-group-append:not(:last-child) > .input-group-text,\n.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n\n.input-group > .input-group-append > .btn,\n.input-group > .input-group-append > .input-group-text,\n.input-group > .input-group-prepend:not(:first-child) > .btn,\n.input-group > .input-group-prepend:not(:first-child) > .input-group-text,\n.input-group > .input-group-prepend:first-child > .btn:not(:first-child),\n.input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n\n.custom-control {\n  position: relative;\n  display: block;\n  min-height: 1.5rem;\n  padding-left: 2.5rem;\n}\n\n.custom-control-inline {\n  display: -ms-inline-flexbox;\n  display: inline-flex;\n  margin-right: 1rem;\n}\n\n.custom-control-input {\n  position: absolute;\n  z-index: -1;\n  opacity: 0;\n}\n\n.custom-control-input:checked ~ .custom-control-label::before {\n  color: #ffffff;\n  border-color: #007bff;\n  background-color: #007bff;\n  box-shadow: none;\n}\n\n.custom-control-input:focus ~ .custom-control-label::before {\n  box-shadow: inset 0 0 0 rgba(0, 0, 0, 0), none;\n}\n\n.custom-control-input:focus:not(:checked) ~ .custom-control-label::before {\n  border-color: #80bdff;\n}\n\n.custom-control-input:not(:disabled):active ~ .custom-control-label::before {\n  color: #ffffff;\n  background-color: #b3d7ff;\n  border-color: #b3d7ff;\n  box-shadow: none;\n}\n\n.custom-control-input:disabled ~ .custom-control-label {\n  color: #6c757d;\n}\n\n.custom-control-input:disabled ~ .custom-control-label::before {\n  background-color: #e9ecef;\n}\n\n.custom-control-label {\n  position: relative;\n  margin-bottom: 0;\n  vertical-align: top;\n}\n\n.custom-control-label::before {\n  position: absolute;\n  top: 0.25rem;\n  left: -2.5rem;\n  display: block;\n  width: 1rem;\n  height: 1rem;\n  pointer-events: none;\n  content: \"\";\n  background-color: #dee2e6;\n  border: #adb5bd solid 1px;\n  box-shadow: inset 0 0.25rem 0.25rem rgba(0, 0, 0, 0.1);\n}\n\n.custom-control-label::after {\n  position: absolute;\n  top: 0.25rem;\n  left: -2.5rem;\n  display: block;\n  width: 1rem;\n  height: 1rem;\n  content: \"\";\n  background: no-repeat 50% / 50% 50%;\n}\n\n.custom-checkbox .custom-control-label::before {\n  border-radius: 0.25rem;\n}\n\n.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after {\n  background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23ffffff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E\");\n}\n\n.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before {\n  border-color: #007bff;\n  background-color: #007bff;\n  box-shadow: none;\n}\n\n.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after {\n  background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23ffffff' d='M0 2h4'/%3E%3C/svg%3E\");\n}\n\n.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before {\n  background-color: rgba(0, 123, 255, 0.5);\n}\n\n.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before {\n  background-color: rgba(0, 123, 255, 0.5);\n}\n\n.custom-radio .custom-control-label::before {\n  border-radius: 50%;\n}\n\n.custom-radio .custom-control-input:checked ~ .custom-control-label::after {\n  background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23ffffff'/%3E%3C/svg%3E\");\n}\n\n.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before {\n  background-color: rgba(0, 123, 255, 0.5);\n}\n\n.custom-switch {\n  padding-left: 3.25rem;\n}\n\n.custom-switch .custom-control-label::before {\n  left: -3.25rem;\n  width: 1.75rem;\n  pointer-events: all;\n  border-radius: 0.5rem;\n}\n\n.custom-switch .custom-control-label::after {\n  top: calc(0.25rem + 2px);\n  left: calc(-3.25rem + 2px);\n  width: calc(1rem - 4px);\n  height: calc(1rem - 4px);\n  background-color: #adb5bd;\n  border-radius: 0.5rem;\n  transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-transform 0.15s ease-in-out;\n  transition: transform 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  transition: transform 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-transform 0.15s ease-in-out;\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .custom-switch .custom-control-label::after {\n    transition: none;\n  }\n}\n\n.custom-switch .custom-control-input:checked ~ .custom-control-label::after {\n  background-color: #dee2e6;\n  -webkit-transform: translateX(0.75rem);\n  transform: translateX(0.75rem);\n}\n\n.custom-switch .custom-control-input:disabled:checked ~ .custom-control-label::before {\n  background-color: rgba(0, 123, 255, 0.5);\n}\n\n.custom-select {\n  display: inline-block;\n  width: 100%;\n  height: calc(2.25rem + 2px);\n  padding: 0.375rem 1.75rem 0.375rem 0.75rem;\n  font-size: 1rem;\n  font-weight: 400;\n  line-height: 1.5;\n  color: #495057;\n  vertical-align: middle;\n  background: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E\") no-repeat right 0.75rem center/8px 10px;\n  background-color: #ffffff;\n  border: 1px solid #ced4da;\n  border-radius: 0.25rem;\n  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075);\n  -webkit-appearance: none;\n  -moz-appearance: none;\n  appearance: none;\n}\n\n.custom-select:focus {\n  border-color: #80bdff;\n  outline: 0;\n  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075), none;\n}\n\n.custom-select:focus::-ms-value {\n  color: #495057;\n  background-color: #ffffff;\n}\n\n.custom-select[multiple], .custom-select[size]:not([size=\"1\"]) {\n  height: auto;\n  padding-right: 0.75rem;\n  background-image: none;\n}\n\n.custom-select:disabled {\n  color: #6c757d;\n  background-color: #e9ecef;\n}\n\n.custom-select::-ms-expand {\n  display: none;\n}\n\n.custom-select-sm {\n  height: calc(1.8125rem + 2px);\n  padding-top: 0.25rem;\n  padding-bottom: 0.25rem;\n  padding-left: 0.5rem;\n  font-size: 75%;\n}\n\n.custom-select-lg {\n  height: calc(2.875rem + 2px);\n  padding-top: 0.5rem;\n  padding-bottom: 0.5rem;\n  padding-left: 1rem;\n  font-size: 125%;\n}\n\n.custom-file {\n  position: relative;\n  display: inline-block;\n  width: 100%;\n  height: calc(2.25rem + 2px);\n  margin-bottom: 0;\n}\n\n.custom-file-input {\n  position: relative;\n  z-index: 2;\n  width: 100%;\n  height: calc(2.25rem + 2px);\n  margin: 0;\n  opacity: 0;\n}\n\n.custom-file-input:focus ~ .custom-file-label {\n  border-color: #80bdff;\n  box-shadow: none;\n}\n\n.custom-file-input:disabled ~ .custom-file-label {\n  background-color: #e9ecef;\n}\n\n.custom-file-input:lang(en) ~ .custom-file-label::after {\n  content: \"Browse\";\n}\n\n.custom-file-input ~ .custom-file-label[data-browse]::after {\n  content: attr(data-browse);\n}\n\n.custom-file-label {\n  position: absolute;\n  top: 0;\n  right: 0;\n  left: 0;\n  z-index: 1;\n  height: calc(2.25rem + 2px);\n  padding: 0.375rem 0.75rem;\n  font-weight: 400;\n  line-height: 1.5;\n  color: #495057;\n  background-color: #ffffff;\n  border: 1px solid #ced4da;\n  border-radius: 0.25rem;\n  box-shadow: none;\n}\n\n.custom-file-label::after {\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  z-index: 3;\n  display: block;\n  height: 2.25rem;\n  padding: 0.375rem 0.75rem;\n  line-height: 1.5;\n  color: #495057;\n  content: \"Browse\";\n  background-color: #e9ecef;\n  border-left: inherit;\n  border-radius: 0 0.25rem 0.25rem 0;\n}\n\n.custom-range {\n  width: 100%;\n  height: calc(1rem + 0);\n  padding: 0;\n  background-color: transparent;\n  -webkit-appearance: none;\n  -moz-appearance: none;\n  appearance: none;\n}\n\n.custom-range:focus {\n  outline: none;\n}\n\n.custom-range:focus::-webkit-slider-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-range:focus::-moz-range-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-range:focus::-ms-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-range::-moz-focus-outer {\n  border: 0;\n}\n\n.custom-range::-webkit-slider-thumb {\n  width: 1rem;\n  height: 1rem;\n  margin-top: -0.25rem;\n  background-color: #007bff;\n  border: 0;\n  border-radius: 1rem;\n  box-shadow: 0 0.1rem 0.25rem rgba(0, 0, 0, 0.1);\n  transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  -webkit-appearance: none;\n  appearance: none;\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .custom-range::-webkit-slider-thumb {\n    transition: none;\n  }\n}\n\n.custom-range::-webkit-slider-thumb:active {\n  background-color: #b3d7ff;\n}\n\n.custom-range::-webkit-slider-runnable-track {\n  width: 100%;\n  height: 0.5rem;\n  color: transparent;\n  cursor: pointer;\n  background-color: #dee2e6;\n  border-color: transparent;\n  border-radius: 1rem;\n  box-shadow: inset 0 0.25rem 0.25rem rgba(0, 0, 0, 0.1);\n}\n\n.custom-range::-moz-range-thumb {\n  width: 1rem;\n  height: 1rem;\n  background-color: #007bff;\n  border: 0;\n  border-radius: 1rem;\n  box-shadow: 0 0.1rem 0.25rem rgba(0, 0, 0, 0.1);\n  transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  -moz-appearance: none;\n  appearance: none;\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .custom-range::-moz-range-thumb {\n    transition: none;\n  }\n}\n\n.custom-range::-moz-range-thumb:active {\n  background-color: #b3d7ff;\n}\n\n.custom-range::-moz-range-track {\n  width: 100%;\n  height: 0.5rem;\n  color: transparent;\n  cursor: pointer;\n  background-color: #dee2e6;\n  border-color: transparent;\n  border-radius: 1rem;\n  box-shadow: inset 0 0.25rem 0.25rem rgba(0, 0, 0, 0.1);\n}\n\n.custom-range::-ms-thumb {\n  width: 1rem;\n  height: 1rem;\n  margin-top: 0;\n  margin-right: 0;\n  margin-left: 0;\n  background-color: #007bff;\n  border: 0;\n  border-radius: 1rem;\n  box-shadow: 0 0.1rem 0.25rem rgba(0, 0, 0, 0.1);\n  transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  appearance: none;\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .custom-range::-ms-thumb {\n    transition: none;\n  }\n}\n\n.custom-range::-ms-thumb:active {\n  background-color: #b3d7ff;\n}\n\n.custom-range::-ms-track {\n  width: 100%;\n  height: 0.5rem;\n  color: transparent;\n  cursor: pointer;\n  background-color: transparent;\n  border-color: transparent;\n  border-width: 0.5rem;\n  box-shadow: inset 0 0.25rem 0.25rem rgba(0, 0, 0, 0.1);\n}\n\n.custom-range::-ms-fill-lower {\n  background-color: #dee2e6;\n  border-radius: 1rem;\n}\n\n.custom-range::-ms-fill-upper {\n  margin-right: 15px;\n  background-color: #dee2e6;\n  border-radius: 1rem;\n}\n\n.custom-range:disabled::-webkit-slider-thumb {\n  background-color: #adb5bd;\n}\n\n.custom-range:disabled::-webkit-slider-runnable-track {\n  cursor: default;\n}\n\n.custom-range:disabled::-moz-range-thumb {\n  background-color: #adb5bd;\n}\n\n.custom-range:disabled::-moz-range-track {\n  cursor: default;\n}\n\n.custom-range:disabled::-ms-thumb {\n  background-color: #adb5bd;\n}\n\n.custom-control-label::before,\n.custom-file-label,\n.custom-select {\n  transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .custom-control-label::before,\n  .custom-file-label,\n  .custom-select {\n    transition: none;\n  }\n}\n\n.nav {\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-wrap: wrap;\n  flex-wrap: wrap;\n  padding-left: 0;\n  margin-bottom: 0;\n  list-style: none;\n}\n\n.nav-link {\n  display: block;\n  padding: 0.5rem 1rem;\n}\n\n.nav-link:hover, .nav-link:focus {\n  text-decoration: none;\n}\n\n.nav-link.disabled {\n  color: #6c757d;\n  pointer-events: none;\n  cursor: default;\n}\n\n.nav-tabs {\n  border-bottom: 1px solid #dee2e6;\n}\n\n.nav-tabs .nav-item {\n  margin-bottom: -1px;\n}\n\n.nav-tabs .nav-link {\n  border: 1px solid transparent;\n  border-top-left-radius: 0.25rem;\n  border-top-right-radius: 0.25rem;\n}\n\n.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus {\n  border-color: #e9ecef #e9ecef #dee2e6;\n}\n\n.nav-tabs .nav-link.disabled {\n  color: #6c757d;\n  background-color: transparent;\n  border-color: transparent;\n}\n\n.nav-tabs .nav-link.active,\n.nav-tabs .nav-item.show .nav-link {\n  color: #495057;\n  background-color: #ffffff;\n  border-color: #dee2e6 #dee2e6 #ffffff;\n}\n\n.nav-tabs .dropdown-menu {\n  margin-top: -1px;\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n\n.nav-pills .nav-link {\n  border-radius: 0.25rem;\n}\n\n.nav-pills .nav-link.active,\n.nav-pills .show > .nav-link {\n  color: #ffffff;\n  background-color: #007bff;\n}\n\n.nav-fill .nav-item {\n  -ms-flex: 1 1 auto;\n  flex: 1 1 auto;\n  text-align: center;\n}\n\n.nav-justified .nav-item {\n  -ms-flex-preferred-size: 0;\n  flex-basis: 0;\n  -ms-flex-positive: 1;\n  flex-grow: 1;\n  text-align: center;\n}\n\n.tab-content > .tab-pane {\n  display: none;\n}\n\n.tab-content > .active {\n  display: block;\n}\n\n.navbar {\n  position: relative;\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-wrap: wrap;\n  flex-wrap: wrap;\n  -ms-flex-align: center;\n  align-items: center;\n  -ms-flex-pack: justify;\n  justify-content: space-between;\n  padding: 0.5rem 0.5rem;\n}\n\n.navbar > .container,\n.navbar > .container-fluid {\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-wrap: wrap;\n  flex-wrap: wrap;\n  -ms-flex-align: center;\n  align-items: center;\n  -ms-flex-pack: justify;\n  justify-content: space-between;\n}\n\n.navbar-brand {\n  display: inline-block;\n  padding-top: 0.3125rem;\n  padding-bottom: 0.3125rem;\n  margin-right: 0.5rem;\n  font-size: 1.25rem;\n  line-height: inherit;\n  white-space: nowrap;\n}\n\n.navbar-brand:hover, .navbar-brand:focus {\n  text-decoration: none;\n}\n\n.navbar-nav {\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-direction: column;\n  flex-direction: column;\n  padding-left: 0;\n  margin-bottom: 0;\n  list-style: none;\n}\n\n.navbar-nav .nav-link {\n  padding-right: 0;\n  padding-left: 0;\n}\n\n.navbar-nav .dropdown-menu {\n  position: static;\n  float: none;\n}\n\n.navbar-text {\n  display: inline-block;\n  padding-top: 0.5rem;\n  padding-bottom: 0.5rem;\n}\n\n.navbar-collapse {\n  -ms-flex-preferred-size: 100%;\n  flex-basis: 100%;\n  -ms-flex-positive: 1;\n  flex-grow: 1;\n  -ms-flex-align: center;\n  align-items: center;\n}\n\n.navbar-toggler {\n  padding: 0.25rem 0.75rem;\n  font-size: 1.25rem;\n  line-height: 1;\n  background-color: transparent;\n  border: 1px solid transparent;\n  border-radius: 0.25rem;\n}\n\n.navbar-toggler:hover, .navbar-toggler:focus {\n  text-decoration: none;\n}\n\n.navbar-toggler-icon {\n  display: inline-block;\n  width: 1.5em;\n  height: 1.5em;\n  vertical-align: middle;\n  content: \"\";\n  background: no-repeat center center;\n  background-size: 100% 100%;\n}\n\n@media (max-width: 575.98px) {\n  .navbar-expand-sm > .container,\n  .navbar-expand-sm > .container-fluid {\n    padding-right: 0;\n    padding-left: 0;\n  }\n}\n\n@media (min-width: 576px) {\n  .navbar-expand-sm {\n    -ms-flex-flow: row nowrap;\n    flex-flow: row nowrap;\n    -ms-flex-pack: start;\n    justify-content: flex-start;\n  }\n  .navbar-expand-sm .navbar-nav {\n    -ms-flex-direction: row;\n    flex-direction: row;\n  }\n  .navbar-expand-sm .navbar-nav .dropdown-menu {\n    position: absolute;\n  }\n  .navbar-expand-sm .navbar-nav .nav-link {\n    padding-right: 1rem;\n    padding-left: 1rem;\n  }\n  .navbar-expand-sm > .container,\n  .navbar-expand-sm > .container-fluid {\n    -ms-flex-wrap: nowrap;\n    flex-wrap: nowrap;\n  }\n  .navbar-expand-sm .navbar-collapse {\n    display: -ms-flexbox !important;\n    display: flex !important;\n    -ms-flex-preferred-size: auto;\n    flex-basis: auto;\n  }\n  .navbar-expand-sm .navbar-toggler {\n    display: none;\n  }\n}\n\n@media (max-width: 767.98px) {\n  .navbar-expand-md > .container,\n  .navbar-expand-md > .container-fluid {\n    padding-right: 0;\n    padding-left: 0;\n  }\n}\n\n@media (min-width: 768px) {\n  .navbar-expand-md {\n    -ms-flex-flow: row nowrap;\n    flex-flow: row nowrap;\n    -ms-flex-pack: start;\n    justify-content: flex-start;\n  }\n  .navbar-expand-md .navbar-nav {\n    -ms-flex-direction: row;\n    flex-direction: row;\n  }\n  .navbar-expand-md .navbar-nav .dropdown-menu {\n    position: absolute;\n  }\n  .navbar-expand-md .navbar-nav .nav-link {\n    padding-right: 1rem;\n    padding-left: 1rem;\n  }\n  .navbar-expand-md > .container,\n  .navbar-expand-md > .container-fluid {\n    -ms-flex-wrap: nowrap;\n    flex-wrap: nowrap;\n  }\n  .navbar-expand-md .navbar-collapse {\n    display: -ms-flexbox !important;\n    display: flex !important;\n    -ms-flex-preferred-size: auto;\n    flex-basis: auto;\n  }\n  .navbar-expand-md .navbar-toggler {\n    display: none;\n  }\n}\n\n@media (max-width: 991.98px) {\n  .navbar-expand-lg > .container,\n  .navbar-expand-lg > .container-fluid {\n    padding-right: 0;\n    padding-left: 0;\n  }\n}\n\n@media (min-width: 992px) {\n  .navbar-expand-lg {\n    -ms-flex-flow: row nowrap;\n    flex-flow: row nowrap;\n    -ms-flex-pack: start;\n    justify-content: flex-start;\n  }\n  .navbar-expand-lg .navbar-nav {\n    -ms-flex-direction: row;\n    flex-direction: row;\n  }\n  .navbar-expand-lg .navbar-nav .dropdown-menu {\n    position: absolute;\n  }\n  .navbar-expand-lg .navbar-nav .nav-link {\n    padding-right: 1rem;\n    padding-left: 1rem;\n  }\n  .navbar-expand-lg > .container,\n  .navbar-expand-lg > .container-fluid {\n    -ms-flex-wrap: nowrap;\n    flex-wrap: nowrap;\n  }\n  .navbar-expand-lg .navbar-collapse {\n    display: -ms-flexbox !important;\n    display: flex !important;\n    -ms-flex-preferred-size: auto;\n    flex-basis: auto;\n  }\n  .navbar-expand-lg .navbar-toggler {\n    display: none;\n  }\n}\n\n@media (max-width: 1199.98px) {\n  .navbar-expand-xl > .container,\n  .navbar-expand-xl > .container-fluid {\n    padding-right: 0;\n    padding-left: 0;\n  }\n}\n\n@media (min-width: 1200px) {\n  .navbar-expand-xl {\n    -ms-flex-flow: row nowrap;\n    flex-flow: row nowrap;\n    -ms-flex-pack: start;\n    justify-content: flex-start;\n  }\n  .navbar-expand-xl .navbar-nav {\n    -ms-flex-direction: row;\n    flex-direction: row;\n  }\n  .navbar-expand-xl .navbar-nav .dropdown-menu {\n    position: absolute;\n  }\n  .navbar-expand-xl .navbar-nav .nav-link {\n    padding-right: 1rem;\n    padding-left: 1rem;\n  }\n  .navbar-expand-xl > .container,\n  .navbar-expand-xl > .container-fluid {\n    -ms-flex-wrap: nowrap;\n    flex-wrap: nowrap;\n  }\n  .navbar-expand-xl .navbar-collapse {\n    display: -ms-flexbox !important;\n    display: flex !important;\n    -ms-flex-preferred-size: auto;\n    flex-basis: auto;\n  }\n  .navbar-expand-xl .navbar-toggler {\n    display: none;\n  }\n}\n\n.navbar-expand {\n  -ms-flex-flow: row nowrap;\n  flex-flow: row nowrap;\n  -ms-flex-pack: start;\n  justify-content: flex-start;\n}\n\n.navbar-expand > .container,\n.navbar-expand > .container-fluid {\n  padding-right: 0;\n  padding-left: 0;\n}\n\n.navbar-expand .navbar-nav {\n  -ms-flex-direction: row;\n  flex-direction: row;\n}\n\n.navbar-expand .navbar-nav .dropdown-menu {\n  position: absolute;\n}\n\n.navbar-expand .navbar-nav .nav-link {\n  padding-right: 1rem;\n  padding-left: 1rem;\n}\n\n.navbar-expand > .container,\n.navbar-expand > .container-fluid {\n  -ms-flex-wrap: nowrap;\n  flex-wrap: nowrap;\n}\n\n.navbar-expand .navbar-collapse {\n  display: -ms-flexbox !important;\n  display: flex !important;\n  -ms-flex-preferred-size: auto;\n  flex-basis: auto;\n}\n\n.navbar-expand .navbar-toggler {\n  display: none;\n}\n\n.navbar-light .navbar-brand {\n  color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus {\n  color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-nav .nav-link {\n  color: rgba(0, 0, 0, 0.5);\n}\n\n.navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus {\n  color: rgba(0, 0, 0, 0.7);\n}\n\n.navbar-light .navbar-nav .nav-link.disabled {\n  color: rgba(0, 0, 0, 0.3);\n}\n\n.navbar-light .navbar-nav .show > .nav-link,\n.navbar-light .navbar-nav .active > .nav-link,\n.navbar-light .navbar-nav .nav-link.show,\n.navbar-light .navbar-nav .nav-link.active {\n  color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-toggler {\n  color: rgba(0, 0, 0, 0.5);\n  border-color: rgba(0, 0, 0, 0.1);\n}\n\n.navbar-light .navbar-toggler-icon {\n  background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\");\n}\n\n.navbar-light .navbar-text {\n  color: rgba(0, 0, 0, 0.5);\n}\n\n.navbar-light .navbar-text a {\n  color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-text a:hover, .navbar-light .navbar-text a:focus {\n  color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-dark .navbar-brand {\n  color: #ffffff;\n}\n\n.navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus {\n  color: #ffffff;\n}\n\n.navbar-dark .navbar-nav .nav-link {\n  color: rgba(255, 255, 255, 0.75);\n}\n\n.navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus {\n  color: white;\n}\n\n.navbar-dark .navbar-nav .nav-link.disabled {\n  color: rgba(255, 255, 255, 0.25);\n}\n\n.navbar-dark .navbar-nav .show > .nav-link,\n.navbar-dark .navbar-nav .active > .nav-link,\n.navbar-dark .navbar-nav .nav-link.show,\n.navbar-dark .navbar-nav .nav-link.active {\n  color: #ffffff;\n}\n\n.navbar-dark .navbar-toggler {\n  color: rgba(255, 255, 255, 0.75);\n  border-color: rgba(255, 255, 255, 0.1);\n}\n\n.navbar-dark .navbar-toggler-icon {\n  background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.75)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\");\n}\n\n.navbar-dark .navbar-text {\n  color: rgba(255, 255, 255, 0.75);\n}\n\n.navbar-dark .navbar-text a {\n  color: #ffffff;\n}\n\n.navbar-dark .navbar-text a:hover, .navbar-dark .navbar-text a:focus {\n  color: #ffffff;\n}\n\n.card {\n  position: relative;\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-direction: column;\n  flex-direction: column;\n  min-width: 0;\n  word-wrap: break-word;\n  background-color: #ffffff;\n  background-clip: border-box;\n  border: 0 solid rgba(0, 0, 0, 0.125);\n  border-radius: 0.25rem;\n}\n\n.card > hr {\n  margin-right: 0;\n  margin-left: 0;\n}\n\n.card > .list-group:first-child .list-group-item:first-child {\n  border-top-left-radius: 0.25rem;\n  border-top-right-radius: 0.25rem;\n}\n\n.card > .list-group:last-child .list-group-item:last-child {\n  border-bottom-right-radius: 0.25rem;\n  border-bottom-left-radius: 0.25rem;\n}\n\n.card-body {\n  -ms-flex: 1 1 auto;\n  flex: 1 1 auto;\n  padding: 1.25rem;\n}\n\n.card-title {\n  margin-bottom: 0.75rem;\n}\n\n.card-subtitle {\n  margin-top: -0.375rem;\n  margin-bottom: 0;\n}\n\n.card-text:last-child {\n  margin-bottom: 0;\n}\n\n.card-link:hover {\n  text-decoration: none;\n}\n\n.card-link + .card-link {\n  margin-left: 1.25rem;\n}\n\n.card-header {\n  padding: 0.75rem 1.25rem;\n  margin-bottom: 0;\n  background-color: rgba(0, 0, 0, 0.03);\n  border-bottom: 0 solid rgba(0, 0, 0, 0.125);\n}\n\n.card-header:first-child {\n  border-radius: calc(0.25rem - 0) calc(0.25rem - 0) 0 0;\n}\n\n.card-header + .list-group .list-group-item:first-child {\n  border-top: 0;\n}\n\n.card-footer {\n  padding: 0.75rem 1.25rem;\n  background-color: rgba(0, 0, 0, 0.03);\n  border-top: 0 solid rgba(0, 0, 0, 0.125);\n}\n\n.card-footer:last-child {\n  border-radius: 0 0 calc(0.25rem - 0) calc(0.25rem - 0);\n}\n\n.card-header-tabs {\n  margin-right: -0.625rem;\n  margin-bottom: -0.75rem;\n  margin-left: -0.625rem;\n  border-bottom: 0;\n}\n\n.card-header-pills {\n  margin-right: -0.625rem;\n  margin-left: -0.625rem;\n}\n\n.card-img-overlay {\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  padding: 1.25rem;\n}\n\n.card-img {\n  width: 100%;\n  border-radius: calc(0.25rem - 0);\n}\n\n.card-img-top {\n  width: 100%;\n  border-top-left-radius: calc(0.25rem - 0);\n  border-top-right-radius: calc(0.25rem - 0);\n}\n\n.card-img-bottom {\n  width: 100%;\n  border-bottom-right-radius: calc(0.25rem - 0);\n  border-bottom-left-radius: calc(0.25rem - 0);\n}\n\n.card-deck {\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-direction: column;\n  flex-direction: column;\n}\n\n.card-deck .card {\n  margin-bottom: 7.5px;\n}\n\n@media (min-width: 576px) {\n  .card-deck {\n    -ms-flex-flow: row wrap;\n    flex-flow: row wrap;\n    margin-right: -7.5px;\n    margin-left: -7.5px;\n  }\n  .card-deck .card {\n    display: -ms-flexbox;\n    display: flex;\n    -ms-flex: 1 0 0%;\n    flex: 1 0 0%;\n    -ms-flex-direction: column;\n    flex-direction: column;\n    margin-right: 7.5px;\n    margin-bottom: 0;\n    margin-left: 7.5px;\n  }\n}\n\n.card-group {\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-direction: column;\n  flex-direction: column;\n}\n\n.card-group > .card {\n  margin-bottom: 7.5px;\n}\n\n@media (min-width: 576px) {\n  .card-group {\n    -ms-flex-flow: row wrap;\n    flex-flow: row wrap;\n  }\n  .card-group > .card {\n    -ms-flex: 1 0 0%;\n    flex: 1 0 0%;\n    margin-bottom: 0;\n  }\n  .card-group > .card + .card {\n    margin-left: 0;\n    border-left: 0;\n  }\n  .card-group > .card:not(:last-child) {\n    border-top-right-radius: 0;\n    border-bottom-right-radius: 0;\n  }\n  .card-group > .card:not(:last-child) .card-img-top,\n  .card-group > .card:not(:last-child) .card-header {\n    border-top-right-radius: 0;\n  }\n  .card-group > .card:not(:last-child) .card-img-bottom,\n  .card-group > .card:not(:last-child) .card-footer {\n    border-bottom-right-radius: 0;\n  }\n  .card-group > .card:not(:first-child) {\n    border-top-left-radius: 0;\n    border-bottom-left-radius: 0;\n  }\n  .card-group > .card:not(:first-child) .card-img-top,\n  .card-group > .card:not(:first-child) .card-header {\n    border-top-left-radius: 0;\n  }\n  .card-group > .card:not(:first-child) .card-img-bottom,\n  .card-group > .card:not(:first-child) .card-footer {\n    border-bottom-left-radius: 0;\n  }\n}\n\n.card-columns .card {\n  margin-bottom: 0.75rem;\n}\n\n@media (min-width: 576px) {\n  .card-columns {\n    -webkit-column-count: 3;\n    -moz-column-count: 3;\n    column-count: 3;\n    -webkit-column-gap: 1.25rem;\n    -moz-column-gap: 1.25rem;\n    column-gap: 1.25rem;\n    orphans: 1;\n    widows: 1;\n  }\n  .card-columns .card {\n    display: inline-block;\n    width: 100%;\n  }\n}\n\n.accordion > .card {\n  overflow: hidden;\n}\n\n.accordion > .card:not(:first-of-type) .card-header:first-child {\n  border-radius: 0;\n}\n\n.accordion > .card:not(:first-of-type):not(:last-of-type) {\n  border-bottom: 0;\n  border-radius: 0;\n}\n\n.accordion > .card:first-of-type {\n  border-bottom: 0;\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n\n.accordion > .card:last-of-type {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n\n.accordion > .card .card-header {\n  margin-bottom: 0;\n}\n\n.breadcrumb {\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-wrap: wrap;\n  flex-wrap: wrap;\n  padding: 0.75rem 1rem;\n  margin-bottom: 1rem;\n  list-style: none;\n  background-color: #e9ecef;\n  border-radius: 0.25rem;\n}\n\n.breadcrumb-item + .breadcrumb-item {\n  padding-left: 0.5rem;\n}\n\n.breadcrumb-item + .breadcrumb-item::before {\n  display: inline-block;\n  padding-right: 0.5rem;\n  color: #6c757d;\n  content: \"/\";\n}\n\n.breadcrumb-item + .breadcrumb-item:hover::before {\n  text-decoration: underline;\n}\n\n.breadcrumb-item + .breadcrumb-item:hover::before {\n  text-decoration: none;\n}\n\n.breadcrumb-item.active {\n  color: #6c757d;\n}\n\n.pagination {\n  display: -ms-flexbox;\n  display: flex;\n  padding-left: 0;\n  list-style: none;\n  border-radius: 0.25rem;\n}\n\n.page-link {\n  position: relative;\n  display: block;\n  padding: 0.5rem 0.75rem;\n  margin-left: -1px;\n  line-height: 1.25;\n  color: #007bff;\n  background-color: #ffffff;\n  border: 1px solid #dee2e6;\n}\n\n.page-link:hover {\n  z-index: 2;\n  color: #0056b3;\n  text-decoration: none;\n  background-color: #e9ecef;\n  border-color: #dee2e6;\n}\n\n.page-link:focus {\n  z-index: 2;\n  outline: 0;\n  box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.page-item:first-child .page-link {\n  margin-left: 0;\n  border-top-left-radius: 0.25rem;\n  border-bottom-left-radius: 0.25rem;\n}\n\n.page-item:last-child .page-link {\n  border-top-right-radius: 0.25rem;\n  border-bottom-right-radius: 0.25rem;\n}\n\n.page-item.active .page-link {\n  z-index: 1;\n  color: #ffffff;\n  background-color: #007bff;\n  border-color: #007bff;\n}\n\n.page-item.disabled .page-link {\n  color: #6c757d;\n  pointer-events: none;\n  cursor: auto;\n  background-color: #ffffff;\n  border-color: #dee2e6;\n}\n\n.pagination-lg .page-link {\n  padding: 0.75rem 1.5rem;\n  font-size: 1.25rem;\n  line-height: 1.5;\n}\n\n.pagination-lg .page-item:first-child .page-link {\n  border-top-left-radius: 0.3rem;\n  border-bottom-left-radius: 0.3rem;\n}\n\n.pagination-lg .page-item:last-child .page-link {\n  border-top-right-radius: 0.3rem;\n  border-bottom-right-radius: 0.3rem;\n}\n\n.pagination-sm .page-link {\n  padding: 0.25rem 0.5rem;\n  font-size: 0.875rem;\n  line-height: 1.5;\n}\n\n.pagination-sm .page-item:first-child .page-link {\n  border-top-left-radius: 0.2rem;\n  border-bottom-left-radius: 0.2rem;\n}\n\n.pagination-sm .page-item:last-child .page-link {\n  border-top-right-radius: 0.2rem;\n  border-bottom-right-radius: 0.2rem;\n}\n\n.badge {\n  display: inline-block;\n  padding: 0.25em 0.4em;\n  font-size: 75%;\n  font-weight: 700;\n  line-height: 1;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: baseline;\n  border-radius: 0.25rem;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .badge {\n    transition: none;\n  }\n}\n\na.badge:hover, a.badge:focus {\n  text-decoration: none;\n}\n\n.badge:empty {\n  display: none;\n}\n\n.btn .badge {\n  position: relative;\n  top: -1px;\n}\n\n.badge-pill {\n  padding-right: 0.6em;\n  padding-left: 0.6em;\n  border-radius: 10rem;\n}\n\n.badge-primary {\n  color: #ffffff;\n  background-color: #007bff;\n}\n\na.badge-primary:hover, a.badge-primary:focus {\n  color: #ffffff;\n  background-color: #0062cc;\n}\n\na.badge-primary:focus, a.badge-primary.focus {\n  outline: 0;\n  box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n}\n\n.badge-secondary {\n  color: #ffffff;\n  background-color: #6c757d;\n}\n\na.badge-secondary:hover, a.badge-secondary:focus {\n  color: #ffffff;\n  background-color: #545b62;\n}\n\na.badge-secondary:focus, a.badge-secondary.focus {\n  outline: 0;\n  box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);\n}\n\n.badge-success {\n  color: #ffffff;\n  background-color: #28a745;\n}\n\na.badge-success:hover, a.badge-success:focus {\n  color: #ffffff;\n  background-color: #1e7e34;\n}\n\na.badge-success:focus, a.badge-success.focus {\n  outline: 0;\n  box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n}\n\n.badge-info {\n  color: #ffffff;\n  background-color: #17a2b8;\n}\n\na.badge-info:hover, a.badge-info:focus {\n  color: #ffffff;\n  background-color: #117a8b;\n}\n\na.badge-info:focus, a.badge-info.focus {\n  outline: 0;\n  box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n}\n\n.badge-warning {\n  color: #1F2D3D;\n  background-color: #ffc107;\n}\n\na.badge-warning:hover, a.badge-warning:focus {\n  color: #1F2D3D;\n  background-color: #d39e00;\n}\n\na.badge-warning:focus, a.badge-warning.focus {\n  outline: 0;\n  box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n}\n\n.badge-danger {\n  color: #ffffff;\n  background-color: #dc3545;\n}\n\na.badge-danger:hover, a.badge-danger:focus {\n  color: #ffffff;\n  background-color: #bd2130;\n}\n\na.badge-danger:focus, a.badge-danger.focus {\n  outline: 0;\n  box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n}\n\n.badge-light {\n  color: #1F2D3D;\n  background-color: #f8f9fa;\n}\n\na.badge-light:hover, a.badge-light:focus {\n  color: #1F2D3D;\n  background-color: #dae0e5;\n}\n\na.badge-light:focus, a.badge-light.focus {\n  outline: 0;\n  box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n}\n\n.badge-dark {\n  color: #ffffff;\n  background-color: #343a40;\n}\n\na.badge-dark:hover, a.badge-dark:focus {\n  color: #ffffff;\n  background-color: #1d2124;\n}\n\na.badge-dark:focus, a.badge-dark.focus {\n  outline: 0;\n  box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n}\n\n.jumbotron {\n  padding: 2rem 1rem;\n  margin-bottom: 2rem;\n  background-color: #e9ecef;\n  border-radius: 0.3rem;\n}\n\n@media (min-width: 576px) {\n  .jumbotron {\n    padding: 4rem 2rem;\n  }\n}\n\n.jumbotron-fluid {\n  padding-right: 0;\n  padding-left: 0;\n  border-radius: 0;\n}\n\n.alert {\n  position: relative;\n  padding: 0.75rem 1.25rem;\n  margin-bottom: 1rem;\n  border: 1px solid transparent;\n  border-radius: 0.25rem;\n}\n\n.alert-heading {\n  color: inherit;\n}\n\n.alert-link {\n  font-weight: 700;\n}\n\n.alert-dismissible {\n  padding-right: 4rem;\n}\n\n.alert-dismissible .close, .alert-dismissible .mailbox-attachment-close {\n  position: absolute;\n  top: 0;\n  right: 0;\n  padding: 0.75rem 1.25rem;\n  color: inherit;\n}\n\n.alert-primary {\n  color: #004085;\n  background-color: #cce5ff;\n  border-color: #b8daff;\n}\n\n.alert-primary hr {\n  border-top-color: #9fcdff;\n}\n\n.alert-primary .alert-link {\n  color: #002752;\n}\n\n.alert-secondary {\n  color: #383d41;\n  background-color: #e2e3e5;\n  border-color: #d6d8db;\n}\n\n.alert-secondary hr {\n  border-top-color: #c8cbcf;\n}\n\n.alert-secondary .alert-link {\n  color: #202326;\n}\n\n.alert-success {\n  color: #155724;\n  background-color: #d4edda;\n  border-color: #c3e6cb;\n}\n\n.alert-success hr {\n  border-top-color: #b1dfbb;\n}\n\n.alert-success .alert-link {\n  color: #0b2e13;\n}\n\n.alert-info {\n  color: #0c5460;\n  background-color: #d1ecf1;\n  border-color: #bee5eb;\n}\n\n.alert-info hr {\n  border-top-color: #abdde5;\n}\n\n.alert-info .alert-link {\n  color: #062c33;\n}\n\n.alert-warning {\n  color: #856404;\n  background-color: #fff3cd;\n  border-color: #ffeeba;\n}\n\n.alert-warning hr {\n  border-top-color: #ffe8a1;\n}\n\n.alert-warning .alert-link {\n  color: #533f03;\n}\n\n.alert-danger {\n  color: #721c24;\n  background-color: #f8d7da;\n  border-color: #f5c6cb;\n}\n\n.alert-danger hr {\n  border-top-color: #f1b0b7;\n}\n\n.alert-danger .alert-link {\n  color: #491217;\n}\n\n.alert-light {\n  color: #818182;\n  background-color: #fefefe;\n  border-color: #fdfdfe;\n}\n\n.alert-light hr {\n  border-top-color: #ececf6;\n}\n\n.alert-light .alert-link {\n  color: #686868;\n}\n\n.alert-dark {\n  color: #1b1e21;\n  background-color: #d6d8d9;\n  border-color: #c6c8ca;\n}\n\n.alert-dark hr {\n  border-top-color: #b9bbbe;\n}\n\n.alert-dark .alert-link {\n  color: #040505;\n}\n\n@-webkit-keyframes progress-bar-stripes {\n  from {\n    background-position: 1rem 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n\n@keyframes progress-bar-stripes {\n  from {\n    background-position: 1rem 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n\n.progress {\n  display: -ms-flexbox;\n  display: flex;\n  height: 1rem;\n  overflow: hidden;\n  font-size: 0.75rem;\n  background-color: #e9ecef;\n  border-radius: 0.25rem;\n  box-shadow: inset 0 0.1rem 0.1rem rgba(0, 0, 0, 0.1);\n}\n\n.progress-bar {\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-direction: column;\n  flex-direction: column;\n  -ms-flex-pack: center;\n  justify-content: center;\n  color: #ffffff;\n  text-align: center;\n  white-space: nowrap;\n  background-color: #007bff;\n  transition: width 0.6s ease;\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .progress-bar {\n    transition: none;\n  }\n}\n\n.progress-bar-striped {\n  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);\n  background-size: 1rem 1rem;\n}\n\n.progress-bar-animated {\n  -webkit-animation: progress-bar-stripes 1s linear infinite;\n  animation: progress-bar-stripes 1s linear infinite;\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .progress-bar-animated {\n    -webkit-animation: none;\n    animation: none;\n  }\n}\n\n.media {\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-align: start;\n  align-items: flex-start;\n}\n\n.media-body {\n  -ms-flex: 1;\n  flex: 1;\n}\n\n.list-group {\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-direction: column;\n  flex-direction: column;\n  padding-left: 0;\n  margin-bottom: 0;\n}\n\n.list-group-item-action {\n  width: 100%;\n  color: #495057;\n  text-align: inherit;\n}\n\n.list-group-item-action:hover, .list-group-item-action:focus {\n  z-index: 1;\n  color: #495057;\n  text-decoration: none;\n  background-color: #f8f9fa;\n}\n\n.list-group-item-action:active {\n  color: #212529;\n  background-color: #e9ecef;\n}\n\n.list-group-item {\n  position: relative;\n  display: block;\n  padding: 0.75rem 1.25rem;\n  margin-bottom: -1px;\n  background-color: #ffffff;\n  border: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.list-group-item:first-child {\n  border-top-left-radius: 0.25rem;\n  border-top-right-radius: 0.25rem;\n}\n\n.list-group-item:last-child {\n  margin-bottom: 0;\n  border-bottom-right-radius: 0.25rem;\n  border-bottom-left-radius: 0.25rem;\n}\n\n.list-group-item.disabled, .list-group-item:disabled {\n  color: #6c757d;\n  pointer-events: none;\n  background-color: #ffffff;\n}\n\n.list-group-item.active {\n  z-index: 2;\n  color: #ffffff;\n  background-color: #007bff;\n  border-color: #007bff;\n}\n\n.list-group-horizontal {\n  -ms-flex-direction: row;\n  flex-direction: row;\n}\n\n.list-group-horizontal .list-group-item {\n  margin-right: -1px;\n  margin-bottom: 0;\n}\n\n.list-group-horizontal .list-group-item:first-child {\n  border-top-left-radius: 0.25rem;\n  border-bottom-left-radius: 0.25rem;\n  border-top-right-radius: 0;\n}\n\n.list-group-horizontal .list-group-item:last-child {\n  margin-right: 0;\n  border-top-right-radius: 0.25rem;\n  border-bottom-right-radius: 0.25rem;\n  border-bottom-left-radius: 0;\n}\n\n@media (min-width: 576px) {\n  .list-group-horizontal-sm {\n    -ms-flex-direction: row;\n    flex-direction: row;\n  }\n  .list-group-horizontal-sm .list-group-item {\n    margin-right: -1px;\n    margin-bottom: 0;\n  }\n  .list-group-horizontal-sm .list-group-item:first-child {\n    border-top-left-radius: 0.25rem;\n    border-bottom-left-radius: 0.25rem;\n    border-top-right-radius: 0;\n  }\n  .list-group-horizontal-sm .list-group-item:last-child {\n    margin-right: 0;\n    border-top-right-radius: 0.25rem;\n    border-bottom-right-radius: 0.25rem;\n    border-bottom-left-radius: 0;\n  }\n}\n\n@media (min-width: 768px) {\n  .list-group-horizontal-md {\n    -ms-flex-direction: row;\n    flex-direction: row;\n  }\n  .list-group-horizontal-md .list-group-item {\n    margin-right: -1px;\n    margin-bottom: 0;\n  }\n  .list-group-horizontal-md .list-group-item:first-child {\n    border-top-left-radius: 0.25rem;\n    border-bottom-left-radius: 0.25rem;\n    border-top-right-radius: 0;\n  }\n  .list-group-horizontal-md .list-group-item:last-child {\n    margin-right: 0;\n    border-top-right-radius: 0.25rem;\n    border-bottom-right-radius: 0.25rem;\n    border-bottom-left-radius: 0;\n  }\n}\n\n@media (min-width: 992px) {\n  .list-group-horizontal-lg {\n    -ms-flex-direction: row;\n    flex-direction: row;\n  }\n  .list-group-horizontal-lg .list-group-item {\n    margin-right: -1px;\n    margin-bottom: 0;\n  }\n  .list-group-horizontal-lg .list-group-item:first-child {\n    border-top-left-radius: 0.25rem;\n    border-bottom-left-radius: 0.25rem;\n    border-top-right-radius: 0;\n  }\n  .list-group-horizontal-lg .list-group-item:last-child {\n    margin-right: 0;\n    border-top-right-radius: 0.25rem;\n    border-bottom-right-radius: 0.25rem;\n    border-bottom-left-radius: 0;\n  }\n}\n\n@media (min-width: 1200px) {\n  .list-group-horizontal-xl {\n    -ms-flex-direction: row;\n    flex-direction: row;\n  }\n  .list-group-horizontal-xl .list-group-item {\n    margin-right: -1px;\n    margin-bottom: 0;\n  }\n  .list-group-horizontal-xl .list-group-item:first-child {\n    border-top-left-radius: 0.25rem;\n    border-bottom-left-radius: 0.25rem;\n    border-top-right-radius: 0;\n  }\n  .list-group-horizontal-xl .list-group-item:last-child {\n    margin-right: 0;\n    border-top-right-radius: 0.25rem;\n    border-bottom-right-radius: 0.25rem;\n    border-bottom-left-radius: 0;\n  }\n}\n\n.list-group-flush .list-group-item {\n  border-right: 0;\n  border-left: 0;\n  border-radius: 0;\n}\n\n.list-group-flush .list-group-item:last-child {\n  margin-bottom: -1px;\n}\n\n.list-group-flush:first-child .list-group-item:first-child {\n  border-top: 0;\n}\n\n.list-group-flush:last-child .list-group-item:last-child {\n  margin-bottom: 0;\n  border-bottom: 0;\n}\n\n.list-group-item-primary {\n  color: #004085;\n  background-color: #b8daff;\n}\n\n.list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus {\n  color: #004085;\n  background-color: #9fcdff;\n}\n\n.list-group-item-primary.list-group-item-action.active {\n  color: #ffffff;\n  background-color: #004085;\n  border-color: #004085;\n}\n\n.list-group-item-secondary {\n  color: #383d41;\n  background-color: #d6d8db;\n}\n\n.list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus {\n  color: #383d41;\n  background-color: #c8cbcf;\n}\n\n.list-group-item-secondary.list-group-item-action.active {\n  color: #ffffff;\n  background-color: #383d41;\n  border-color: #383d41;\n}\n\n.list-group-item-success {\n  color: #155724;\n  background-color: #c3e6cb;\n}\n\n.list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus {\n  color: #155724;\n  background-color: #b1dfbb;\n}\n\n.list-group-item-success.list-group-item-action.active {\n  color: #ffffff;\n  background-color: #155724;\n  border-color: #155724;\n}\n\n.list-group-item-info {\n  color: #0c5460;\n  background-color: #bee5eb;\n}\n\n.list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus {\n  color: #0c5460;\n  background-color: #abdde5;\n}\n\n.list-group-item-info.list-group-item-action.active {\n  color: #ffffff;\n  background-color: #0c5460;\n  border-color: #0c5460;\n}\n\n.list-group-item-warning {\n  color: #856404;\n  background-color: #ffeeba;\n}\n\n.list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus {\n  color: #856404;\n  background-color: #ffe8a1;\n}\n\n.list-group-item-warning.list-group-item-action.active {\n  color: #ffffff;\n  background-color: #856404;\n  border-color: #856404;\n}\n\n.list-group-item-danger {\n  color: #721c24;\n  background-color: #f5c6cb;\n}\n\n.list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus {\n  color: #721c24;\n  background-color: #f1b0b7;\n}\n\n.list-group-item-danger.list-group-item-action.active {\n  color: #ffffff;\n  background-color: #721c24;\n  border-color: #721c24;\n}\n\n.list-group-item-light {\n  color: #818182;\n  background-color: #fdfdfe;\n}\n\n.list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus {\n  color: #818182;\n  background-color: #ececf6;\n}\n\n.list-group-item-light.list-group-item-action.active {\n  color: #ffffff;\n  background-color: #818182;\n  border-color: #818182;\n}\n\n.list-group-item-dark {\n  color: #1b1e21;\n  background-color: #c6c8ca;\n}\n\n.list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus {\n  color: #1b1e21;\n  background-color: #b9bbbe;\n}\n\n.list-group-item-dark.list-group-item-action.active {\n  color: #ffffff;\n  background-color: #1b1e21;\n  border-color: #1b1e21;\n}\n\n.close, .mailbox-attachment-close {\n  float: right;\n  font-size: 1.5rem;\n  font-weight: 700;\n  line-height: 1;\n  color: #000;\n  text-shadow: 0 1px 0 #ffffff;\n  opacity: .5;\n}\n\n.close:hover, .mailbox-attachment-close:hover {\n  color: #000;\n  text-decoration: none;\n}\n\n.close:not(:disabled):not(.disabled):hover, .mailbox-attachment-close:not(:disabled):not(.disabled):hover, .close:not(:disabled):not(.disabled):focus, .mailbox-attachment-close:not(:disabled):not(.disabled):focus {\n  opacity: .75;\n}\n\nbutton.close, button.mailbox-attachment-close {\n  padding: 0;\n  background-color: transparent;\n  border: 0;\n  -webkit-appearance: none;\n  -moz-appearance: none;\n  appearance: none;\n}\n\na.close.disabled, a.disabled.mailbox-attachment-close {\n  pointer-events: none;\n}\n\n.toast {\n  max-width: 350px;\n  overflow: hidden;\n  font-size: 0.875rem;\n  background-color: rgba(255, 255, 255, 0.85);\n  background-clip: padding-box;\n  border: 1px solid rgba(0, 0, 0, 0.1);\n  box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.1);\n  -webkit-backdrop-filter: blur(10px);\n  backdrop-filter: blur(10px);\n  opacity: 0;\n  border-radius: 0.25rem;\n}\n\n.toast:not(:last-child) {\n  margin-bottom: 0.75rem;\n}\n\n.toast.showing {\n  opacity: 1;\n}\n\n.toast.show {\n  display: block;\n  opacity: 1;\n}\n\n.toast.hide {\n  display: none;\n}\n\n.toast-header {\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-align: center;\n  align-items: center;\n  padding: 0.25rem 0.75rem;\n  color: #6c757d;\n  background-color: rgba(255, 255, 255, 0.85);\n  background-clip: padding-box;\n  border-bottom: 1px solid rgba(0, 0, 0, 0.05);\n}\n\n.toast-body {\n  padding: 0.75rem;\n}\n\n.modal-open {\n  overflow: hidden;\n}\n\n.modal-open .modal {\n  overflow-x: hidden;\n  overflow-y: auto;\n}\n\n.modal {\n  position: fixed;\n  top: 0;\n  left: 0;\n  z-index: 1050;\n  display: none;\n  width: 100%;\n  height: 100%;\n  overflow: hidden;\n  outline: 0;\n}\n\n.modal-dialog {\n  position: relative;\n  width: auto;\n  margin: 0.5rem;\n  pointer-events: none;\n}\n\n.modal.fade .modal-dialog {\n  transition: -webkit-transform 0.3s ease-out;\n  transition: transform 0.3s ease-out;\n  transition: transform 0.3s ease-out, -webkit-transform 0.3s ease-out;\n  -webkit-transform: translate(0, -50px);\n  transform: translate(0, -50px);\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .modal.fade .modal-dialog {\n    transition: none;\n  }\n}\n\n.modal.show .modal-dialog {\n  -webkit-transform: none;\n  transform: none;\n}\n\n.modal-dialog-scrollable {\n  display: -ms-flexbox;\n  display: flex;\n  max-height: calc(100% - 1rem);\n}\n\n.modal-dialog-scrollable .modal-content {\n  max-height: calc(100vh - 1rem);\n  overflow: hidden;\n}\n\n.modal-dialog-scrollable .modal-header,\n.modal-dialog-scrollable .modal-footer {\n  -ms-flex-negative: 0;\n  flex-shrink: 0;\n}\n\n.modal-dialog-scrollable .modal-body {\n  overflow-y: auto;\n}\n\n.modal-dialog-centered {\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-align: center;\n  align-items: center;\n  min-height: calc(100% - 1rem);\n}\n\n.modal-dialog-centered::before {\n  display: block;\n  height: calc(100vh - 1rem);\n  content: \"\";\n}\n\n.modal-dialog-centered.modal-dialog-scrollable {\n  -ms-flex-direction: column;\n  flex-direction: column;\n  -ms-flex-pack: center;\n  justify-content: center;\n  height: 100%;\n}\n\n.modal-dialog-centered.modal-dialog-scrollable .modal-content {\n  max-height: none;\n}\n\n.modal-dialog-centered.modal-dialog-scrollable::before {\n  content: none;\n}\n\n.modal-content {\n  position: relative;\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-direction: column;\n  flex-direction: column;\n  width: 100%;\n  pointer-events: auto;\n  background-color: #ffffff;\n  background-clip: padding-box;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  border-radius: 0.3rem;\n  box-shadow: 0 0.25rem 0.5rem rgba(0, 0, 0, 0.5);\n  outline: 0;\n}\n\n.modal-backdrop {\n  position: fixed;\n  top: 0;\n  left: 0;\n  z-index: 1040;\n  width: 100vw;\n  height: 100vh;\n  background-color: #000;\n}\n\n.modal-backdrop.fade {\n  opacity: 0;\n}\n\n.modal-backdrop.show {\n  opacity: 0.5;\n}\n\n.modal-header {\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-align: start;\n  align-items: flex-start;\n  -ms-flex-pack: justify;\n  justify-content: space-between;\n  padding: 1rem;\n  border-bottom: 1px solid #e9ecef;\n  border-top-left-radius: 0.3rem;\n  border-top-right-radius: 0.3rem;\n}\n\n.modal-header .close, .modal-header .mailbox-attachment-close {\n  padding: 1rem;\n  margin: -1rem -1rem -1rem auto;\n}\n\n.modal-title {\n  margin-bottom: 0;\n  line-height: 1.5;\n}\n\n.modal-body {\n  position: relative;\n  -ms-flex: 1 1 auto;\n  flex: 1 1 auto;\n  padding: 1rem;\n}\n\n.modal-footer {\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-align: center;\n  align-items: center;\n  -ms-flex-pack: end;\n  justify-content: flex-end;\n  padding: 1rem;\n  border-top: 1px solid #e9ecef;\n  border-bottom-right-radius: 0.3rem;\n  border-bottom-left-radius: 0.3rem;\n}\n\n.modal-footer > :not(:first-child) {\n  margin-left: .25rem;\n}\n\n.modal-footer > :not(:last-child) {\n  margin-right: .25rem;\n}\n\n.modal-scrollbar-measure {\n  position: absolute;\n  top: -9999px;\n  width: 50px;\n  height: 50px;\n  overflow: scroll;\n}\n\n@media (min-width: 576px) {\n  .modal-dialog {\n    max-width: 500px;\n    margin: 1.75rem auto;\n  }\n  .modal-dialog-scrollable {\n    max-height: calc(100% - 3.5rem);\n  }\n  .modal-dialog-scrollable .modal-content {\n    max-height: calc(100vh - 3.5rem);\n  }\n  .modal-dialog-centered {\n    min-height: calc(100% - 3.5rem);\n  }\n  .modal-dialog-centered::before {\n    height: calc(100vh - 3.5rem);\n  }\n  .modal-content {\n    box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.5);\n  }\n  .modal-sm {\n    max-width: 300px;\n  }\n}\n\n@media (min-width: 992px) {\n  .modal-lg,\n  .modal-xl {\n    max-width: 800px;\n  }\n}\n\n@media (min-width: 1200px) {\n  .modal-xl {\n    max-width: 1140px;\n  }\n}\n\n.tooltip {\n  position: absolute;\n  z-index: 1070;\n  display: block;\n  margin: 0;\n  font-family: \"Source Sans Pro\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n  font-style: normal;\n  font-weight: 400;\n  line-height: 1.5;\n  text-align: left;\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  word-spacing: normal;\n  white-space: normal;\n  line-break: auto;\n  font-size: 0.875rem;\n  word-wrap: break-word;\n  opacity: 0;\n}\n\n.tooltip.show {\n  opacity: 0.9;\n}\n\n.tooltip .arrow {\n  position: absolute;\n  display: block;\n  width: 0.8rem;\n  height: 0.4rem;\n}\n\n.tooltip .arrow::before {\n  position: absolute;\n  content: \"\";\n  border-color: transparent;\n  border-style: solid;\n}\n\n.bs-tooltip-top, .bs-tooltip-auto[x-placement^=\"top\"] {\n  padding: 0.4rem 0;\n}\n\n.bs-tooltip-top .arrow, .bs-tooltip-auto[x-placement^=\"top\"] .arrow {\n  bottom: 0;\n}\n\n.bs-tooltip-top .arrow::before, .bs-tooltip-auto[x-placement^=\"top\"] .arrow::before {\n  top: 0;\n  border-width: 0.4rem 0.4rem 0;\n  border-top-color: #000;\n}\n\n.bs-tooltip-right, .bs-tooltip-auto[x-placement^=\"right\"] {\n  padding: 0 0.4rem;\n}\n\n.bs-tooltip-right .arrow, .bs-tooltip-auto[x-placement^=\"right\"] .arrow {\n  left: 0;\n  width: 0.4rem;\n  height: 0.8rem;\n}\n\n.bs-tooltip-right .arrow::before, .bs-tooltip-auto[x-placement^=\"right\"] .arrow::before {\n  right: 0;\n  border-width: 0.4rem 0.4rem 0.4rem 0;\n  border-right-color: #000;\n}\n\n.bs-tooltip-bottom, .bs-tooltip-auto[x-placement^=\"bottom\"] {\n  padding: 0.4rem 0;\n}\n\n.bs-tooltip-bottom .arrow, .bs-tooltip-auto[x-placement^=\"bottom\"] .arrow {\n  top: 0;\n}\n\n.bs-tooltip-bottom .arrow::before, .bs-tooltip-auto[x-placement^=\"bottom\"] .arrow::before {\n  bottom: 0;\n  border-width: 0 0.4rem 0.4rem;\n  border-bottom-color: #000;\n}\n\n.bs-tooltip-left, .bs-tooltip-auto[x-placement^=\"left\"] {\n  padding: 0 0.4rem;\n}\n\n.bs-tooltip-left .arrow, .bs-tooltip-auto[x-placement^=\"left\"] .arrow {\n  right: 0;\n  width: 0.4rem;\n  height: 0.8rem;\n}\n\n.bs-tooltip-left .arrow::before, .bs-tooltip-auto[x-placement^=\"left\"] .arrow::before {\n  left: 0;\n  border-width: 0.4rem 0 0.4rem 0.4rem;\n  border-left-color: #000;\n}\n\n.tooltip-inner {\n  max-width: 200px;\n  padding: 0.25rem 0.5rem;\n  color: #ffffff;\n  text-align: center;\n  background-color: #000;\n  border-radius: 0.25rem;\n}\n\n.popover {\n  position: absolute;\n  top: 0;\n  left: 0;\n  z-index: 1060;\n  display: block;\n  max-width: 276px;\n  font-family: \"Source Sans Pro\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n  font-style: normal;\n  font-weight: 400;\n  line-height: 1.5;\n  text-align: left;\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  word-spacing: normal;\n  white-space: normal;\n  line-break: auto;\n  font-size: 0.875rem;\n  word-wrap: break-word;\n  background-color: #ffffff;\n  background-clip: padding-box;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  border-radius: 0.3rem;\n  box-shadow: 0 0.25rem 0.5rem rgba(0, 0, 0, 0.2);\n}\n\n.popover .arrow {\n  position: absolute;\n  display: block;\n  width: 1rem;\n  height: 0.5rem;\n  margin: 0 0.3rem;\n}\n\n.popover .arrow::before, .popover .arrow::after {\n  position: absolute;\n  display: block;\n  content: \"\";\n  border-color: transparent;\n  border-style: solid;\n}\n\n.bs-popover-top, .bs-popover-auto[x-placement^=\"top\"] {\n  margin-bottom: 0.5rem;\n}\n\n.bs-popover-top > .arrow, .bs-popover-auto[x-placement^=\"top\"] > .arrow {\n  bottom: calc((0.5rem + 1px) * -1);\n}\n\n.bs-popover-top > .arrow::before, .bs-popover-auto[x-placement^=\"top\"] > .arrow::before {\n  bottom: 0;\n  border-width: 0.5rem 0.5rem 0;\n  border-top-color: rgba(0, 0, 0, 0.25);\n}\n\n.bs-popover-top > .arrow::after, .bs-popover-auto[x-placement^=\"top\"] > .arrow::after {\n  bottom: 1px;\n  border-width: 0.5rem 0.5rem 0;\n  border-top-color: #ffffff;\n}\n\n.bs-popover-right, .bs-popover-auto[x-placement^=\"right\"] {\n  margin-left: 0.5rem;\n}\n\n.bs-popover-right > .arrow, .bs-popover-auto[x-placement^=\"right\"] > .arrow {\n  left: calc((0.5rem + 1px) * -1);\n  width: 0.5rem;\n  height: 1rem;\n  margin: 0.3rem 0;\n}\n\n.bs-popover-right > .arrow::before, .bs-popover-auto[x-placement^=\"right\"] > .arrow::before {\n  left: 0;\n  border-width: 0.5rem 0.5rem 0.5rem 0;\n  border-right-color: rgba(0, 0, 0, 0.25);\n}\n\n.bs-popover-right > .arrow::after, .bs-popover-auto[x-placement^=\"right\"] > .arrow::after {\n  left: 1px;\n  border-width: 0.5rem 0.5rem 0.5rem 0;\n  border-right-color: #ffffff;\n}\n\n.bs-popover-bottom, .bs-popover-auto[x-placement^=\"bottom\"] {\n  margin-top: 0.5rem;\n}\n\n.bs-popover-bottom > .arrow, .bs-popover-auto[x-placement^=\"bottom\"] > .arrow {\n  top: calc((0.5rem + 1px) * -1);\n}\n\n.bs-popover-bottom > .arrow::before, .bs-popover-auto[x-placement^=\"bottom\"] > .arrow::before {\n  top: 0;\n  border-width: 0 0.5rem 0.5rem 0.5rem;\n  border-bottom-color: rgba(0, 0, 0, 0.25);\n}\n\n.bs-popover-bottom > .arrow::after, .bs-popover-auto[x-placement^=\"bottom\"] > .arrow::after {\n  top: 1px;\n  border-width: 0 0.5rem 0.5rem 0.5rem;\n  border-bottom-color: #ffffff;\n}\n\n.bs-popover-bottom .popover-header::before, .bs-popover-auto[x-placement^=\"bottom\"] .popover-header::before {\n  position: absolute;\n  top: 0;\n  left: 50%;\n  display: block;\n  width: 1rem;\n  margin-left: -0.5rem;\n  content: \"\";\n  border-bottom: 1px solid #f7f7f7;\n}\n\n.bs-popover-left, .bs-popover-auto[x-placement^=\"left\"] {\n  margin-right: 0.5rem;\n}\n\n.bs-popover-left > .arrow, .bs-popover-auto[x-placement^=\"left\"] > .arrow {\n  right: calc((0.5rem + 1px) * -1);\n  width: 0.5rem;\n  height: 1rem;\n  margin: 0.3rem 0;\n}\n\n.bs-popover-left > .arrow::before, .bs-popover-auto[x-placement^=\"left\"] > .arrow::before {\n  right: 0;\n  border-width: 0.5rem 0 0.5rem 0.5rem;\n  border-left-color: rgba(0, 0, 0, 0.25);\n}\n\n.bs-popover-left > .arrow::after, .bs-popover-auto[x-placement^=\"left\"] > .arrow::after {\n  right: 1px;\n  border-width: 0.5rem 0 0.5rem 0.5rem;\n  border-left-color: #ffffff;\n}\n\n.popover-header {\n  padding: 0.5rem 0.75rem;\n  margin-bottom: 0;\n  font-size: 1rem;\n  color: inherit;\n  background-color: #f7f7f7;\n  border-bottom: 1px solid #ebebeb;\n  border-top-left-radius: calc(0.3rem - 1px);\n  border-top-right-radius: calc(0.3rem - 1px);\n}\n\n.popover-header:empty {\n  display: none;\n}\n\n.popover-body {\n  padding: 0.5rem 0.75rem;\n  color: #212529;\n}\n\n.carousel {\n  position: relative;\n}\n\n.carousel.pointer-event {\n  -ms-touch-action: pan-y;\n  touch-action: pan-y;\n}\n\n.carousel-inner {\n  position: relative;\n  width: 100%;\n  overflow: hidden;\n}\n\n.carousel-inner::after {\n  display: block;\n  clear: both;\n  content: \"\";\n}\n\n.carousel-item {\n  position: relative;\n  display: none;\n  float: left;\n  width: 100%;\n  margin-right: -100%;\n  -webkit-backface-visibility: hidden;\n  backface-visibility: hidden;\n  transition: -webkit-transform 0.6s ease;\n  transition: transform 0.6s ease;\n  transition: transform 0.6s ease, -webkit-transform 0.6s ease;\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .carousel-item {\n    transition: none;\n  }\n}\n\n.carousel-item.active,\n.carousel-item-next,\n.carousel-item-prev {\n  display: block;\n}\n\n.carousel-item-next:not(.carousel-item-left),\n.active.carousel-item-right {\n  -webkit-transform: translateX(100%);\n  transform: translateX(100%);\n}\n\n.carousel-item-prev:not(.carousel-item-right),\n.active.carousel-item-left {\n  -webkit-transform: translateX(-100%);\n  transform: translateX(-100%);\n}\n\n.carousel-fade .carousel-item {\n  opacity: 0;\n  transition-property: opacity;\n  -webkit-transform: none;\n  transform: none;\n}\n\n.carousel-fade .carousel-item.active,\n.carousel-fade .carousel-item-next.carousel-item-left,\n.carousel-fade .carousel-item-prev.carousel-item-right {\n  z-index: 1;\n  opacity: 1;\n}\n\n.carousel-fade .active.carousel-item-left,\n.carousel-fade .active.carousel-item-right {\n  z-index: 0;\n  opacity: 0;\n  transition: 0s 0.6s opacity;\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .carousel-fade .active.carousel-item-left,\n  .carousel-fade .active.carousel-item-right {\n    transition: none;\n  }\n}\n\n.carousel-control-prev,\n.carousel-control-next {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  z-index: 1;\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-align: center;\n  align-items: center;\n  -ms-flex-pack: center;\n  justify-content: center;\n  width: 15%;\n  color: #ffffff;\n  text-align: center;\n  opacity: 0.5;\n  transition: opacity 0.15s ease;\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .carousel-control-prev,\n  .carousel-control-next {\n    transition: none;\n  }\n}\n\n.carousel-control-prev:hover, .carousel-control-prev:focus,\n.carousel-control-next:hover,\n.carousel-control-next:focus {\n  color: #ffffff;\n  text-decoration: none;\n  outline: 0;\n  opacity: 0.9;\n}\n\n.carousel-control-prev {\n  left: 0;\n}\n\n.carousel-control-next {\n  right: 0;\n}\n\n.carousel-control-prev-icon,\n.carousel-control-next-icon {\n  display: inline-block;\n  width: 20px;\n  height: 20px;\n  background: no-repeat 50% / 100% 100%;\n}\n\n.carousel-control-prev-icon {\n  background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23ffffff' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E\");\n}\n\n.carousel-control-next-icon {\n  background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23ffffff' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E\");\n}\n\n.carousel-indicators {\n  position: absolute;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 15;\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-pack: center;\n  justify-content: center;\n  padding-left: 0;\n  margin-right: 15%;\n  margin-left: 15%;\n  list-style: none;\n}\n\n.carousel-indicators li {\n  box-sizing: content-box;\n  -ms-flex: 0 1 auto;\n  flex: 0 1 auto;\n  width: 30px;\n  height: 3px;\n  margin-right: 3px;\n  margin-left: 3px;\n  text-indent: -999px;\n  cursor: pointer;\n  background-color: #ffffff;\n  background-clip: padding-box;\n  border-top: 10px solid transparent;\n  border-bottom: 10px solid transparent;\n  opacity: .5;\n  transition: opacity 0.6s ease;\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .carousel-indicators li {\n    transition: none;\n  }\n}\n\n.carousel-indicators .active {\n  opacity: 1;\n}\n\n.carousel-caption {\n  position: absolute;\n  right: 15%;\n  bottom: 20px;\n  left: 15%;\n  z-index: 10;\n  padding-top: 20px;\n  padding-bottom: 20px;\n  color: #ffffff;\n  text-align: center;\n}\n\n@-webkit-keyframes spinner-border {\n  to {\n    -webkit-transform: rotate(360deg);\n    transform: rotate(360deg);\n  }\n}\n\n@keyframes spinner-border {\n  to {\n    -webkit-transform: rotate(360deg);\n    transform: rotate(360deg);\n  }\n}\n\n.spinner-border {\n  display: inline-block;\n  width: 2rem;\n  height: 2rem;\n  vertical-align: text-bottom;\n  border: 0.25em solid currentColor;\n  border-right-color: transparent;\n  border-radius: 50%;\n  -webkit-animation: spinner-border .75s linear infinite;\n  animation: spinner-border .75s linear infinite;\n}\n\n.spinner-border-sm {\n  width: 1rem;\n  height: 1rem;\n  border-width: 0.2em;\n}\n\n@-webkit-keyframes spinner-grow {\n  0% {\n    -webkit-transform: scale(0);\n    transform: scale(0);\n  }\n  50% {\n    opacity: 1;\n  }\n}\n\n@keyframes spinner-grow {\n  0% {\n    -webkit-transform: scale(0);\n    transform: scale(0);\n  }\n  50% {\n    opacity: 1;\n  }\n}\n\n.spinner-grow {\n  display: inline-block;\n  width: 2rem;\n  height: 2rem;\n  vertical-align: text-bottom;\n  background-color: currentColor;\n  border-radius: 50%;\n  opacity: 0;\n  -webkit-animation: spinner-grow .75s linear infinite;\n  animation: spinner-grow .75s linear infinite;\n}\n\n.spinner-grow-sm {\n  width: 1rem;\n  height: 1rem;\n}\n\n.align-baseline {\n  vertical-align: baseline !important;\n}\n\n.align-top {\n  vertical-align: top !important;\n}\n\n.align-middle {\n  vertical-align: middle !important;\n}\n\n.align-bottom {\n  vertical-align: bottom !important;\n}\n\n.align-text-bottom {\n  vertical-align: text-bottom !important;\n}\n\n.align-text-top {\n  vertical-align: text-top !important;\n}\n\n.bg-primary {\n  background-color: #007bff !important;\n}\n\na.bg-primary:hover, a.bg-primary:focus,\nbutton.bg-primary:hover,\nbutton.bg-primary:focus {\n  background-color: #0062cc !important;\n}\n\n.bg-secondary {\n  background-color: #6c757d !important;\n}\n\na.bg-secondary:hover, a.bg-secondary:focus,\nbutton.bg-secondary:hover,\nbutton.bg-secondary:focus {\n  background-color: #545b62 !important;\n}\n\n.bg-success {\n  background-color: #28a745 !important;\n}\n\na.bg-success:hover, a.bg-success:focus,\nbutton.bg-success:hover,\nbutton.bg-success:focus {\n  background-color: #1e7e34 !important;\n}\n\n.bg-info {\n  background-color: #17a2b8 !important;\n}\n\na.bg-info:hover, a.bg-info:focus,\nbutton.bg-info:hover,\nbutton.bg-info:focus {\n  background-color: #117a8b !important;\n}\n\n.bg-warning {\n  background-color: #ffc107 !important;\n}\n\na.bg-warning:hover, a.bg-warning:focus,\nbutton.bg-warning:hover,\nbutton.bg-warning:focus {\n  background-color: #d39e00 !important;\n}\n\n.bg-danger {\n  background-color: #dc3545 !important;\n}\n\na.bg-danger:hover, a.bg-danger:focus,\nbutton.bg-danger:hover,\nbutton.bg-danger:focus {\n  background-color: #bd2130 !important;\n}\n\n.bg-light {\n  background-color: #f8f9fa !important;\n}\n\na.bg-light:hover, a.bg-light:focus,\nbutton.bg-light:hover,\nbutton.bg-light:focus {\n  background-color: #dae0e5 !important;\n}\n\n.bg-dark {\n  background-color: #343a40 !important;\n}\n\na.bg-dark:hover, a.bg-dark:focus,\nbutton.bg-dark:hover,\nbutton.bg-dark:focus {\n  background-color: #1d2124 !important;\n}\n\n.bg-white {\n  background-color: #ffffff !important;\n}\n\n.bg-transparent {\n  background-color: transparent !important;\n}\n\n.border {\n  border: 1px solid #dee2e6 !important;\n}\n\n.border-top {\n  border-top: 1px solid #dee2e6 !important;\n}\n\n.border-right {\n  border-right: 1px solid #dee2e6 !important;\n}\n\n.border-bottom {\n  border-bottom: 1px solid #dee2e6 !important;\n}\n\n.border-left {\n  border-left: 1px solid #dee2e6 !important;\n}\n\n.border-0 {\n  border: 0 !important;\n}\n\n.border-top-0 {\n  border-top: 0 !important;\n}\n\n.border-right-0 {\n  border-right: 0 !important;\n}\n\n.border-bottom-0 {\n  border-bottom: 0 !important;\n}\n\n.border-left-0 {\n  border-left: 0 !important;\n}\n\n.border-primary {\n  border-color: #007bff !important;\n}\n\n.border-secondary {\n  border-color: #6c757d !important;\n}\n\n.border-success {\n  border-color: #28a745 !important;\n}\n\n.border-info {\n  border-color: #17a2b8 !important;\n}\n\n.border-warning {\n  border-color: #ffc107 !important;\n}\n\n.border-danger {\n  border-color: #dc3545 !important;\n}\n\n.border-light {\n  border-color: #f8f9fa !important;\n}\n\n.border-dark {\n  border-color: #343a40 !important;\n}\n\n.border-white {\n  border-color: #ffffff !important;\n}\n\n.rounded-sm {\n  border-radius: 0.2rem !important;\n}\n\n.rounded {\n  border-radius: 0.25rem !important;\n}\n\n.rounded-top {\n  border-top-left-radius: 0.25rem !important;\n  border-top-right-radius: 0.25rem !important;\n}\n\n.rounded-right {\n  border-top-right-radius: 0.25rem !important;\n  border-bottom-right-radius: 0.25rem !important;\n}\n\n.rounded-bottom {\n  border-bottom-right-radius: 0.25rem !important;\n  border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-left {\n  border-top-left-radius: 0.25rem !important;\n  border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-lg {\n  border-radius: 0.3rem !important;\n}\n\n.rounded-circle {\n  border-radius: 50% !important;\n}\n\n.rounded-pill {\n  border-radius: 50rem !important;\n}\n\n.rounded-0 {\n  border-radius: 0 !important;\n}\n\n.clearfix::after {\n  display: block;\n  clear: both;\n  content: \"\";\n}\n\n.d-none {\n  display: none !important;\n}\n\n.d-inline {\n  display: inline !important;\n}\n\n.d-inline-block {\n  display: inline-block !important;\n}\n\n.d-block {\n  display: block !important;\n}\n\n.d-table {\n  display: table !important;\n}\n\n.d-table-row {\n  display: table-row !important;\n}\n\n.d-table-cell {\n  display: table-cell !important;\n}\n\n.d-flex {\n  display: -ms-flexbox !important;\n  display: flex !important;\n}\n\n.d-inline-flex {\n  display: -ms-inline-flexbox !important;\n  display: inline-flex !important;\n}\n\n@media (min-width: 576px) {\n  .d-sm-none {\n    display: none !important;\n  }\n  .d-sm-inline {\n    display: inline !important;\n  }\n  .d-sm-inline-block {\n    display: inline-block !important;\n  }\n  .d-sm-block {\n    display: block !important;\n  }\n  .d-sm-table {\n    display: table !important;\n  }\n  .d-sm-table-row {\n    display: table-row !important;\n  }\n  .d-sm-table-cell {\n    display: table-cell !important;\n  }\n  .d-sm-flex {\n    display: -ms-flexbox !important;\n    display: flex !important;\n  }\n  .d-sm-inline-flex {\n    display: -ms-inline-flexbox !important;\n    display: inline-flex !important;\n  }\n}\n\n@media (min-width: 768px) {\n  .d-md-none {\n    display: none !important;\n  }\n  .d-md-inline {\n    display: inline !important;\n  }\n  .d-md-inline-block {\n    display: inline-block !important;\n  }\n  .d-md-block {\n    display: block !important;\n  }\n  .d-md-table {\n    display: table !important;\n  }\n  .d-md-table-row {\n    display: table-row !important;\n  }\n  .d-md-table-cell {\n    display: table-cell !important;\n  }\n  .d-md-flex {\n    display: -ms-flexbox !important;\n    display: flex !important;\n  }\n  .d-md-inline-flex {\n    display: -ms-inline-flexbox !important;\n    display: inline-flex !important;\n  }\n}\n\n@media (min-width: 992px) {\n  .d-lg-none {\n    display: none !important;\n  }\n  .d-lg-inline {\n    display: inline !important;\n  }\n  .d-lg-inline-block {\n    display: inline-block !important;\n  }\n  .d-lg-block {\n    display: block !important;\n  }\n  .d-lg-table {\n    display: table !important;\n  }\n  .d-lg-table-row {\n    display: table-row !important;\n  }\n  .d-lg-table-cell {\n    display: table-cell !important;\n  }\n  .d-lg-flex {\n    display: -ms-flexbox !important;\n    display: flex !important;\n  }\n  .d-lg-inline-flex {\n    display: -ms-inline-flexbox !important;\n    display: inline-flex !important;\n  }\n}\n\n@media (min-width: 1200px) {\n  .d-xl-none {\n    display: none !important;\n  }\n  .d-xl-inline {\n    display: inline !important;\n  }\n  .d-xl-inline-block {\n    display: inline-block !important;\n  }\n  .d-xl-block {\n    display: block !important;\n  }\n  .d-xl-table {\n    display: table !important;\n  }\n  .d-xl-table-row {\n    display: table-row !important;\n  }\n  .d-xl-table-cell {\n    display: table-cell !important;\n  }\n  .d-xl-flex {\n    display: -ms-flexbox !important;\n    display: flex !important;\n  }\n  .d-xl-inline-flex {\n    display: -ms-inline-flexbox !important;\n    display: inline-flex !important;\n  }\n}\n\n@media print {\n  .d-print-none {\n    display: none !important;\n  }\n  .d-print-inline {\n    display: inline !important;\n  }\n  .d-print-inline-block {\n    display: inline-block !important;\n  }\n  .d-print-block {\n    display: block !important;\n  }\n  .d-print-table {\n    display: table !important;\n  }\n  .d-print-table-row {\n    display: table-row !important;\n  }\n  .d-print-table-cell {\n    display: table-cell !important;\n  }\n  .d-print-flex {\n    display: -ms-flexbox !important;\n    display: flex !important;\n  }\n  .d-print-inline-flex {\n    display: -ms-inline-flexbox !important;\n    display: inline-flex !important;\n  }\n}\n\n.embed-responsive {\n  position: relative;\n  display: block;\n  width: 100%;\n  padding: 0;\n  overflow: hidden;\n}\n\n.embed-responsive::before {\n  display: block;\n  content: \"\";\n}\n\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  border: 0;\n}\n\n.embed-responsive-21by9::before {\n  padding-top: 42.857143%;\n}\n\n.embed-responsive-16by9::before {\n  padding-top: 56.25%;\n}\n\n.embed-responsive-4by3::before {\n  padding-top: 75%;\n}\n\n.embed-responsive-1by1::before {\n  padding-top: 100%;\n}\n\n.flex-row {\n  -ms-flex-direction: row !important;\n  flex-direction: row !important;\n}\n\n.flex-column {\n  -ms-flex-direction: column !important;\n  flex-direction: column !important;\n}\n\n.flex-row-reverse {\n  -ms-flex-direction: row-reverse !important;\n  flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n  -ms-flex-direction: column-reverse !important;\n  flex-direction: column-reverse !important;\n}\n\n.flex-wrap {\n  -ms-flex-wrap: wrap !important;\n  flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n  -ms-flex-wrap: nowrap !important;\n  flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n  -ms-flex-wrap: wrap-reverse !important;\n  flex-wrap: wrap-reverse !important;\n}\n\n.flex-fill {\n  -ms-flex: 1 1 auto !important;\n  flex: 1 1 auto !important;\n}\n\n.flex-grow-0 {\n  -ms-flex-positive: 0 !important;\n  flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n  -ms-flex-positive: 1 !important;\n  flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n  -ms-flex-negative: 0 !important;\n  flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n  -ms-flex-negative: 1 !important;\n  flex-shrink: 1 !important;\n}\n\n.justify-content-start {\n  -ms-flex-pack: start !important;\n  justify-content: flex-start !important;\n}\n\n.justify-content-end {\n  -ms-flex-pack: end !important;\n  justify-content: flex-end !important;\n}\n\n.justify-content-center {\n  -ms-flex-pack: center !important;\n  justify-content: center !important;\n}\n\n.justify-content-between {\n  -ms-flex-pack: justify !important;\n  justify-content: space-between !important;\n}\n\n.justify-content-around {\n  -ms-flex-pack: distribute !important;\n  justify-content: space-around !important;\n}\n\n.align-items-start {\n  -ms-flex-align: start !important;\n  align-items: flex-start !important;\n}\n\n.align-items-end {\n  -ms-flex-align: end !important;\n  align-items: flex-end !important;\n}\n\n.align-items-center {\n  -ms-flex-align: center !important;\n  align-items: center !important;\n}\n\n.align-items-baseline {\n  -ms-flex-align: baseline !important;\n  align-items: baseline !important;\n}\n\n.align-items-stretch {\n  -ms-flex-align: stretch !important;\n  align-items: stretch !important;\n}\n\n.align-content-start {\n  -ms-flex-line-pack: start !important;\n  align-content: flex-start !important;\n}\n\n.align-content-end {\n  -ms-flex-line-pack: end !important;\n  align-content: flex-end !important;\n}\n\n.align-content-center {\n  -ms-flex-line-pack: center !important;\n  align-content: center !important;\n}\n\n.align-content-between {\n  -ms-flex-line-pack: justify !important;\n  align-content: space-between !important;\n}\n\n.align-content-around {\n  -ms-flex-line-pack: distribute !important;\n  align-content: space-around !important;\n}\n\n.align-content-stretch {\n  -ms-flex-line-pack: stretch !important;\n  align-content: stretch !important;\n}\n\n.align-self-auto {\n  -ms-flex-item-align: auto !important;\n  align-self: auto !important;\n}\n\n.align-self-start {\n  -ms-flex-item-align: start !important;\n  align-self: flex-start !important;\n}\n\n.align-self-end {\n  -ms-flex-item-align: end !important;\n  align-self: flex-end !important;\n}\n\n.align-self-center {\n  -ms-flex-item-align: center !important;\n  align-self: center !important;\n}\n\n.align-self-baseline {\n  -ms-flex-item-align: baseline !important;\n  align-self: baseline !important;\n}\n\n.align-self-stretch {\n  -ms-flex-item-align: stretch !important;\n  align-self: stretch !important;\n}\n\n@media (min-width: 576px) {\n  .flex-sm-row {\n    -ms-flex-direction: row !important;\n    flex-direction: row !important;\n  }\n  .flex-sm-column {\n    -ms-flex-direction: column !important;\n    flex-direction: column !important;\n  }\n  .flex-sm-row-reverse {\n    -ms-flex-direction: row-reverse !important;\n    flex-direction: row-reverse !important;\n  }\n  .flex-sm-column-reverse {\n    -ms-flex-direction: column-reverse !important;\n    flex-direction: column-reverse !important;\n  }\n  .flex-sm-wrap {\n    -ms-flex-wrap: wrap !important;\n    flex-wrap: wrap !important;\n  }\n  .flex-sm-nowrap {\n    -ms-flex-wrap: nowrap !important;\n    flex-wrap: nowrap !important;\n  }\n  .flex-sm-wrap-reverse {\n    -ms-flex-wrap: wrap-reverse !important;\n    flex-wrap: wrap-reverse !important;\n  }\n  .flex-sm-fill {\n    -ms-flex: 1 1 auto !important;\n    flex: 1 1 auto !important;\n  }\n  .flex-sm-grow-0 {\n    -ms-flex-positive: 0 !important;\n    flex-grow: 0 !important;\n  }\n  .flex-sm-grow-1 {\n    -ms-flex-positive: 1 !important;\n    flex-grow: 1 !important;\n  }\n  .flex-sm-shrink-0 {\n    -ms-flex-negative: 0 !important;\n    flex-shrink: 0 !important;\n  }\n  .flex-sm-shrink-1 {\n    -ms-flex-negative: 1 !important;\n    flex-shrink: 1 !important;\n  }\n  .justify-content-sm-start {\n    -ms-flex-pack: start !important;\n    justify-content: flex-start !important;\n  }\n  .justify-content-sm-end {\n    -ms-flex-pack: end !important;\n    justify-content: flex-end !important;\n  }\n  .justify-content-sm-center {\n    -ms-flex-pack: center !important;\n    justify-content: center !important;\n  }\n  .justify-content-sm-between {\n    -ms-flex-pack: justify !important;\n    justify-content: space-between !important;\n  }\n  .justify-content-sm-around {\n    -ms-flex-pack: distribute !important;\n    justify-content: space-around !important;\n  }\n  .align-items-sm-start {\n    -ms-flex-align: start !important;\n    align-items: flex-start !important;\n  }\n  .align-items-sm-end {\n    -ms-flex-align: end !important;\n    align-items: flex-end !important;\n  }\n  .align-items-sm-center {\n    -ms-flex-align: center !important;\n    align-items: center !important;\n  }\n  .align-items-sm-baseline {\n    -ms-flex-align: baseline !important;\n    align-items: baseline !important;\n  }\n  .align-items-sm-stretch {\n    -ms-flex-align: stretch !important;\n    align-items: stretch !important;\n  }\n  .align-content-sm-start {\n    -ms-flex-line-pack: start !important;\n    align-content: flex-start !important;\n  }\n  .align-content-sm-end {\n    -ms-flex-line-pack: end !important;\n    align-content: flex-end !important;\n  }\n  .align-content-sm-center {\n    -ms-flex-line-pack: center !important;\n    align-content: center !important;\n  }\n  .align-content-sm-between {\n    -ms-flex-line-pack: justify !important;\n    align-content: space-between !important;\n  }\n  .align-content-sm-around {\n    -ms-flex-line-pack: distribute !important;\n    align-content: space-around !important;\n  }\n  .align-content-sm-stretch {\n    -ms-flex-line-pack: stretch !important;\n    align-content: stretch !important;\n  }\n  .align-self-sm-auto {\n    -ms-flex-item-align: auto !important;\n    align-self: auto !important;\n  }\n  .align-self-sm-start {\n    -ms-flex-item-align: start !important;\n    align-self: flex-start !important;\n  }\n  .align-self-sm-end {\n    -ms-flex-item-align: end !important;\n    align-self: flex-end !important;\n  }\n  .align-self-sm-center {\n    -ms-flex-item-align: center !important;\n    align-self: center !important;\n  }\n  .align-self-sm-baseline {\n    -ms-flex-item-align: baseline !important;\n    align-self: baseline !important;\n  }\n  .align-self-sm-stretch {\n    -ms-flex-item-align: stretch !important;\n    align-self: stretch !important;\n  }\n}\n\n@media (min-width: 768px) {\n  .flex-md-row {\n    -ms-flex-direction: row !important;\n    flex-direction: row !important;\n  }\n  .flex-md-column {\n    -ms-flex-direction: column !important;\n    flex-direction: column !important;\n  }\n  .flex-md-row-reverse {\n    -ms-flex-direction: row-reverse !important;\n    flex-direction: row-reverse !important;\n  }\n  .flex-md-column-reverse {\n    -ms-flex-direction: column-reverse !important;\n    flex-direction: column-reverse !important;\n  }\n  .flex-md-wrap {\n    -ms-flex-wrap: wrap !important;\n    flex-wrap: wrap !important;\n  }\n  .flex-md-nowrap {\n    -ms-flex-wrap: nowrap !important;\n    flex-wrap: nowrap !important;\n  }\n  .flex-md-wrap-reverse {\n    -ms-flex-wrap: wrap-reverse !important;\n    flex-wrap: wrap-reverse !important;\n  }\n  .flex-md-fill {\n    -ms-flex: 1 1 auto !important;\n    flex: 1 1 auto !important;\n  }\n  .flex-md-grow-0 {\n    -ms-flex-positive: 0 !important;\n    flex-grow: 0 !important;\n  }\n  .flex-md-grow-1 {\n    -ms-flex-positive: 1 !important;\n    flex-grow: 1 !important;\n  }\n  .flex-md-shrink-0 {\n    -ms-flex-negative: 0 !important;\n    flex-shrink: 0 !important;\n  }\n  .flex-md-shrink-1 {\n    -ms-flex-negative: 1 !important;\n    flex-shrink: 1 !important;\n  }\n  .justify-content-md-start {\n    -ms-flex-pack: start !important;\n    justify-content: flex-start !important;\n  }\n  .justify-content-md-end {\n    -ms-flex-pack: end !important;\n    justify-content: flex-end !important;\n  }\n  .justify-content-md-center {\n    -ms-flex-pack: center !important;\n    justify-content: center !important;\n  }\n  .justify-content-md-between {\n    -ms-flex-pack: justify !important;\n    justify-content: space-between !important;\n  }\n  .justify-content-md-around {\n    -ms-flex-pack: distribute !important;\n    justify-content: space-around !important;\n  }\n  .align-items-md-start {\n    -ms-flex-align: start !important;\n    align-items: flex-start !important;\n  }\n  .align-items-md-end {\n    -ms-flex-align: end !important;\n    align-items: flex-end !important;\n  }\n  .align-items-md-center {\n    -ms-flex-align: center !important;\n    align-items: center !important;\n  }\n  .align-items-md-baseline {\n    -ms-flex-align: baseline !important;\n    align-items: baseline !important;\n  }\n  .align-items-md-stretch {\n    -ms-flex-align: stretch !important;\n    align-items: stretch !important;\n  }\n  .align-content-md-start {\n    -ms-flex-line-pack: start !important;\n    align-content: flex-start !important;\n  }\n  .align-content-md-end {\n    -ms-flex-line-pack: end !important;\n    align-content: flex-end !important;\n  }\n  .align-content-md-center {\n    -ms-flex-line-pack: center !important;\n    align-content: center !important;\n  }\n  .align-content-md-between {\n    -ms-flex-line-pack: justify !important;\n    align-content: space-between !important;\n  }\n  .align-content-md-around {\n    -ms-flex-line-pack: distribute !important;\n    align-content: space-around !important;\n  }\n  .align-content-md-stretch {\n    -ms-flex-line-pack: stretch !important;\n    align-content: stretch !important;\n  }\n  .align-self-md-auto {\n    -ms-flex-item-align: auto !important;\n    align-self: auto !important;\n  }\n  .align-self-md-start {\n    -ms-flex-item-align: start !important;\n    align-self: flex-start !important;\n  }\n  .align-self-md-end {\n    -ms-flex-item-align: end !important;\n    align-self: flex-end !important;\n  }\n  .align-self-md-center {\n    -ms-flex-item-align: center !important;\n    align-self: center !important;\n  }\n  .align-self-md-baseline {\n    -ms-flex-item-align: baseline !important;\n    align-self: baseline !important;\n  }\n  .align-self-md-stretch {\n    -ms-flex-item-align: stretch !important;\n    align-self: stretch !important;\n  }\n}\n\n@media (min-width: 992px) {\n  .flex-lg-row {\n    -ms-flex-direction: row !important;\n    flex-direction: row !important;\n  }\n  .flex-lg-column {\n    -ms-flex-direction: column !important;\n    flex-direction: column !important;\n  }\n  .flex-lg-row-reverse {\n    -ms-flex-direction: row-reverse !important;\n    flex-direction: row-reverse !important;\n  }\n  .flex-lg-column-reverse {\n    -ms-flex-direction: column-reverse !important;\n    flex-direction: column-reverse !important;\n  }\n  .flex-lg-wrap {\n    -ms-flex-wrap: wrap !important;\n    flex-wrap: wrap !important;\n  }\n  .flex-lg-nowrap {\n    -ms-flex-wrap: nowrap !important;\n    flex-wrap: nowrap !important;\n  }\n  .flex-lg-wrap-reverse {\n    -ms-flex-wrap: wrap-reverse !important;\n    flex-wrap: wrap-reverse !important;\n  }\n  .flex-lg-fill {\n    -ms-flex: 1 1 auto !important;\n    flex: 1 1 auto !important;\n  }\n  .flex-lg-grow-0 {\n    -ms-flex-positive: 0 !important;\n    flex-grow: 0 !important;\n  }\n  .flex-lg-grow-1 {\n    -ms-flex-positive: 1 !important;\n    flex-grow: 1 !important;\n  }\n  .flex-lg-shrink-0 {\n    -ms-flex-negative: 0 !important;\n    flex-shrink: 0 !important;\n  }\n  .flex-lg-shrink-1 {\n    -ms-flex-negative: 1 !important;\n    flex-shrink: 1 !important;\n  }\n  .justify-content-lg-start {\n    -ms-flex-pack: start !important;\n    justify-content: flex-start !important;\n  }\n  .justify-content-lg-end {\n    -ms-flex-pack: end !important;\n    justify-content: flex-end !important;\n  }\n  .justify-content-lg-center {\n    -ms-flex-pack: center !important;\n    justify-content: center !important;\n  }\n  .justify-content-lg-between {\n    -ms-flex-pack: justify !important;\n    justify-content: space-between !important;\n  }\n  .justify-content-lg-around {\n    -ms-flex-pack: distribute !important;\n    justify-content: space-around !important;\n  }\n  .align-items-lg-start {\n    -ms-flex-align: start !important;\n    align-items: flex-start !important;\n  }\n  .align-items-lg-end {\n    -ms-flex-align: end !important;\n    align-items: flex-end !important;\n  }\n  .align-items-lg-center {\n    -ms-flex-align: center !important;\n    align-items: center !important;\n  }\n  .align-items-lg-baseline {\n    -ms-flex-align: baseline !important;\n    align-items: baseline !important;\n  }\n  .align-items-lg-stretch {\n    -ms-flex-align: stretch !important;\n    align-items: stretch !important;\n  }\n  .align-content-lg-start {\n    -ms-flex-line-pack: start !important;\n    align-content: flex-start !important;\n  }\n  .align-content-lg-end {\n    -ms-flex-line-pack: end !important;\n    align-content: flex-end !important;\n  }\n  .align-content-lg-center {\n    -ms-flex-line-pack: center !important;\n    align-content: center !important;\n  }\n  .align-content-lg-between {\n    -ms-flex-line-pack: justify !important;\n    align-content: space-between !important;\n  }\n  .align-content-lg-around {\n    -ms-flex-line-pack: distribute !important;\n    align-content: space-around !important;\n  }\n  .align-content-lg-stretch {\n    -ms-flex-line-pack: stretch !important;\n    align-content: stretch !important;\n  }\n  .align-self-lg-auto {\n    -ms-flex-item-align: auto !important;\n    align-self: auto !important;\n  }\n  .align-self-lg-start {\n    -ms-flex-item-align: start !important;\n    align-self: flex-start !important;\n  }\n  .align-self-lg-end {\n    -ms-flex-item-align: end !important;\n    align-self: flex-end !important;\n  }\n  .align-self-lg-center {\n    -ms-flex-item-align: center !important;\n    align-self: center !important;\n  }\n  .align-self-lg-baseline {\n    -ms-flex-item-align: baseline !important;\n    align-self: baseline !important;\n  }\n  .align-self-lg-stretch {\n    -ms-flex-item-align: stretch !important;\n    align-self: stretch !important;\n  }\n}\n\n@media (min-width: 1200px) {\n  .flex-xl-row {\n    -ms-flex-direction: row !important;\n    flex-direction: row !important;\n  }\n  .flex-xl-column {\n    -ms-flex-direction: column !important;\n    flex-direction: column !important;\n  }\n  .flex-xl-row-reverse {\n    -ms-flex-direction: row-reverse !important;\n    flex-direction: row-reverse !important;\n  }\n  .flex-xl-column-reverse {\n    -ms-flex-direction: column-reverse !important;\n    flex-direction: column-reverse !important;\n  }\n  .flex-xl-wrap {\n    -ms-flex-wrap: wrap !important;\n    flex-wrap: wrap !important;\n  }\n  .flex-xl-nowrap {\n    -ms-flex-wrap: nowrap !important;\n    flex-wrap: nowrap !important;\n  }\n  .flex-xl-wrap-reverse {\n    -ms-flex-wrap: wrap-reverse !important;\n    flex-wrap: wrap-reverse !important;\n  }\n  .flex-xl-fill {\n    -ms-flex: 1 1 auto !important;\n    flex: 1 1 auto !important;\n  }\n  .flex-xl-grow-0 {\n    -ms-flex-positive: 0 !important;\n    flex-grow: 0 !important;\n  }\n  .flex-xl-grow-1 {\n    -ms-flex-positive: 1 !important;\n    flex-grow: 1 !important;\n  }\n  .flex-xl-shrink-0 {\n    -ms-flex-negative: 0 !important;\n    flex-shrink: 0 !important;\n  }\n  .flex-xl-shrink-1 {\n    -ms-flex-negative: 1 !important;\n    flex-shrink: 1 !important;\n  }\n  .justify-content-xl-start {\n    -ms-flex-pack: start !important;\n    justify-content: flex-start !important;\n  }\n  .justify-content-xl-end {\n    -ms-flex-pack: end !important;\n    justify-content: flex-end !important;\n  }\n  .justify-content-xl-center {\n    -ms-flex-pack: center !important;\n    justify-content: center !important;\n  }\n  .justify-content-xl-between {\n    -ms-flex-pack: justify !important;\n    justify-content: space-between !important;\n  }\n  .justify-content-xl-around {\n    -ms-flex-pack: distribute !important;\n    justify-content: space-around !important;\n  }\n  .align-items-xl-start {\n    -ms-flex-align: start !important;\n    align-items: flex-start !important;\n  }\n  .align-items-xl-end {\n    -ms-flex-align: end !important;\n    align-items: flex-end !important;\n  }\n  .align-items-xl-center {\n    -ms-flex-align: center !important;\n    align-items: center !important;\n  }\n  .align-items-xl-baseline {\n    -ms-flex-align: baseline !important;\n    align-items: baseline !important;\n  }\n  .align-items-xl-stretch {\n    -ms-flex-align: stretch !important;\n    align-items: stretch !important;\n  }\n  .align-content-xl-start {\n    -ms-flex-line-pack: start !important;\n    align-content: flex-start !important;\n  }\n  .align-content-xl-end {\n    -ms-flex-line-pack: end !important;\n    align-content: flex-end !important;\n  }\n  .align-content-xl-center {\n    -ms-flex-line-pack: center !important;\n    align-content: center !important;\n  }\n  .align-content-xl-between {\n    -ms-flex-line-pack: justify !important;\n    align-content: space-between !important;\n  }\n  .align-content-xl-around {\n    -ms-flex-line-pack: distribute !important;\n    align-content: space-around !important;\n  }\n  .align-content-xl-stretch {\n    -ms-flex-line-pack: stretch !important;\n    align-content: stretch !important;\n  }\n  .align-self-xl-auto {\n    -ms-flex-item-align: auto !important;\n    align-self: auto !important;\n  }\n  .align-self-xl-start {\n    -ms-flex-item-align: start !important;\n    align-self: flex-start !important;\n  }\n  .align-self-xl-end {\n    -ms-flex-item-align: end !important;\n    align-self: flex-end !important;\n  }\n  .align-self-xl-center {\n    -ms-flex-item-align: center !important;\n    align-self: center !important;\n  }\n  .align-self-xl-baseline {\n    -ms-flex-item-align: baseline !important;\n    align-self: baseline !important;\n  }\n  .align-self-xl-stretch {\n    -ms-flex-item-align: stretch !important;\n    align-self: stretch !important;\n  }\n}\n\n.float-left {\n  float: left !important;\n}\n\n.float-right {\n  float: right !important;\n}\n\n.float-none {\n  float: none !important;\n}\n\n@media (min-width: 576px) {\n  .float-sm-left {\n    float: left !important;\n  }\n  .float-sm-right {\n    float: right !important;\n  }\n  .float-sm-none {\n    float: none !important;\n  }\n}\n\n@media (min-width: 768px) {\n  .float-md-left {\n    float: left !important;\n  }\n  .float-md-right {\n    float: right !important;\n  }\n  .float-md-none {\n    float: none !important;\n  }\n}\n\n@media (min-width: 992px) {\n  .float-lg-left {\n    float: left !important;\n  }\n  .float-lg-right {\n    float: right !important;\n  }\n  .float-lg-none {\n    float: none !important;\n  }\n}\n\n@media (min-width: 1200px) {\n  .float-xl-left {\n    float: left !important;\n  }\n  .float-xl-right {\n    float: right !important;\n  }\n  .float-xl-none {\n    float: none !important;\n  }\n}\n\n.overflow-auto {\n  overflow: auto !important;\n}\n\n.overflow-hidden {\n  overflow: hidden !important;\n}\n\n.position-static {\n  position: static !important;\n}\n\n.position-relative {\n  position: relative !important;\n}\n\n.position-absolute {\n  position: absolute !important;\n}\n\n.position-fixed {\n  position: fixed !important;\n}\n\n.position-sticky {\n  position: -webkit-sticky !important;\n  position: sticky !important;\n}\n\n.fixed-top {\n  position: fixed;\n  top: 0;\n  right: 0;\n  left: 0;\n  z-index: 1030;\n}\n\n.fixed-bottom {\n  position: fixed;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1030;\n}\n\n@supports ((position: -webkit-sticky) or (position: sticky)) {\n  .sticky-top {\n    position: -webkit-sticky;\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n\n.sr-only {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  white-space: nowrap;\n  border: 0;\n}\n\n.sr-only-focusable:active, .sr-only-focusable:focus {\n  position: static;\n  width: auto;\n  height: auto;\n  overflow: visible;\n  clip: auto;\n  white-space: normal;\n}\n\n.shadow-sm {\n  box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important;\n}\n\n.shadow {\n  box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;\n}\n\n.shadow-lg {\n  box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important;\n}\n\n.shadow-none {\n  box-shadow: none !important;\n}\n\n.w-25 {\n  width: 25% !important;\n}\n\n.w-50 {\n  width: 50% !important;\n}\n\n.w-75 {\n  width: 75% !important;\n}\n\n.w-100 {\n  width: 100% !important;\n}\n\n.w-auto {\n  width: auto !important;\n}\n\n.h-25 {\n  height: 25% !important;\n}\n\n.h-50 {\n  height: 50% !important;\n}\n\n.h-75 {\n  height: 75% !important;\n}\n\n.h-100 {\n  height: 100% !important;\n}\n\n.h-auto {\n  height: auto !important;\n}\n\n.mw-100 {\n  max-width: 100% !important;\n}\n\n.mh-100 {\n  max-height: 100% !important;\n}\n\n.min-vw-100 {\n  min-width: 100vw !important;\n}\n\n.min-vh-100 {\n  min-height: 100vh !important;\n}\n\n.vw-100 {\n  width: 100vw !important;\n}\n\n.vh-100 {\n  height: 100vh !important;\n}\n\n.stretched-link::after {\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1;\n  pointer-events: auto;\n  content: \"\";\n  background-color: rgba(0, 0, 0, 0);\n}\n\n.m-0 {\n  margin: 0 !important;\n}\n\n.mt-0,\n.my-0 {\n  margin-top: 0 !important;\n}\n\n.mr-0,\n.mx-0 {\n  margin-right: 0 !important;\n}\n\n.mb-0,\n.my-0 {\n  margin-bottom: 0 !important;\n}\n\n.ml-0,\n.mx-0 {\n  margin-left: 0 !important;\n}\n\n.m-1 {\n  margin: 0.25rem !important;\n}\n\n.mt-1,\n.my-1 {\n  margin-top: 0.25rem !important;\n}\n\n.mr-1,\n.mx-1 {\n  margin-right: 0.25rem !important;\n}\n\n.mb-1,\n.my-1 {\n  margin-bottom: 0.25rem !important;\n}\n\n.ml-1,\n.mx-1 {\n  margin-left: 0.25rem !important;\n}\n\n.m-2 {\n  margin: 0.5rem !important;\n}\n\n.mt-2,\n.my-2 {\n  margin-top: 0.5rem !important;\n}\n\n.mr-2,\n.mx-2 {\n  margin-right: 0.5rem !important;\n}\n\n.mb-2,\n.my-2 {\n  margin-bottom: 0.5rem !important;\n}\n\n.ml-2,\n.mx-2 {\n  margin-left: 0.5rem !important;\n}\n\n.m-3 {\n  margin: 1rem !important;\n}\n\n.mt-3,\n.my-3 {\n  margin-top: 1rem !important;\n}\n\n.mr-3,\n.mx-3 {\n  margin-right: 1rem !important;\n}\n\n.mb-3,\n.my-3 {\n  margin-bottom: 1rem !important;\n}\n\n.ml-3,\n.mx-3 {\n  margin-left: 1rem !important;\n}\n\n.m-4 {\n  margin: 1.5rem !important;\n}\n\n.mt-4,\n.my-4 {\n  margin-top: 1.5rem !important;\n}\n\n.mr-4,\n.mx-4 {\n  margin-right: 1.5rem !important;\n}\n\n.mb-4,\n.my-4 {\n  margin-bottom: 1.5rem !important;\n}\n\n.ml-4,\n.mx-4 {\n  margin-left: 1.5rem !important;\n}\n\n.m-5 {\n  margin: 3rem !important;\n}\n\n.mt-5,\n.my-5 {\n  margin-top: 3rem !important;\n}\n\n.mr-5,\n.mx-5 {\n  margin-right: 3rem !important;\n}\n\n.mb-5,\n.my-5 {\n  margin-bottom: 3rem !important;\n}\n\n.ml-5,\n.mx-5 {\n  margin-left: 3rem !important;\n}\n\n.p-0 {\n  padding: 0 !important;\n}\n\n.pt-0,\n.py-0 {\n  padding-top: 0 !important;\n}\n\n.pr-0,\n.px-0 {\n  padding-right: 0 !important;\n}\n\n.pb-0,\n.py-0 {\n  padding-bottom: 0 !important;\n}\n\n.pl-0,\n.px-0 {\n  padding-left: 0 !important;\n}\n\n.p-1 {\n  padding: 0.25rem !important;\n}\n\n.pt-1,\n.py-1 {\n  padding-top: 0.25rem !important;\n}\n\n.pr-1,\n.px-1 {\n  padding-right: 0.25rem !important;\n}\n\n.pb-1,\n.py-1 {\n  padding-bottom: 0.25rem !important;\n}\n\n.pl-1,\n.px-1 {\n  padding-left: 0.25rem !important;\n}\n\n.p-2 {\n  padding: 0.5rem !important;\n}\n\n.pt-2,\n.py-2 {\n  padding-top: 0.5rem !important;\n}\n\n.pr-2,\n.px-2 {\n  padding-right: 0.5rem !important;\n}\n\n.pb-2,\n.py-2 {\n  padding-bottom: 0.5rem !important;\n}\n\n.pl-2,\n.px-2 {\n  padding-left: 0.5rem !important;\n}\n\n.p-3 {\n  padding: 1rem !important;\n}\n\n.pt-3,\n.py-3 {\n  padding-top: 1rem !important;\n}\n\n.pr-3,\n.px-3 {\n  padding-right: 1rem !important;\n}\n\n.pb-3,\n.py-3 {\n  padding-bottom: 1rem !important;\n}\n\n.pl-3,\n.px-3 {\n  padding-left: 1rem !important;\n}\n\n.p-4 {\n  padding: 1.5rem !important;\n}\n\n.pt-4,\n.py-4 {\n  padding-top: 1.5rem !important;\n}\n\n.pr-4,\n.px-4 {\n  padding-right: 1.5rem !important;\n}\n\n.pb-4,\n.py-4 {\n  padding-bottom: 1.5rem !important;\n}\n\n.pl-4,\n.px-4 {\n  padding-left: 1.5rem !important;\n}\n\n.p-5 {\n  padding: 3rem !important;\n}\n\n.pt-5,\n.py-5 {\n  padding-top: 3rem !important;\n}\n\n.pr-5,\n.px-5 {\n  padding-right: 3rem !important;\n}\n\n.pb-5,\n.py-5 {\n  padding-bottom: 3rem !important;\n}\n\n.pl-5,\n.px-5 {\n  padding-left: 3rem !important;\n}\n\n.m-n1 {\n  margin: -0.25rem !important;\n}\n\n.mt-n1,\n.my-n1 {\n  margin-top: -0.25rem !important;\n}\n\n.mr-n1,\n.mx-n1 {\n  margin-right: -0.25rem !important;\n}\n\n.mb-n1,\n.my-n1 {\n  margin-bottom: -0.25rem !important;\n}\n\n.ml-n1,\n.mx-n1 {\n  margin-left: -0.25rem !important;\n}\n\n.m-n2 {\n  margin: -0.5rem !important;\n}\n\n.mt-n2,\n.my-n2 {\n  margin-top: -0.5rem !important;\n}\n\n.mr-n2,\n.mx-n2 {\n  margin-right: -0.5rem !important;\n}\n\n.mb-n2,\n.my-n2 {\n  margin-bottom: -0.5rem !important;\n}\n\n.ml-n2,\n.mx-n2 {\n  margin-left: -0.5rem !important;\n}\n\n.m-n3 {\n  margin: -1rem !important;\n}\n\n.mt-n3,\n.my-n3 {\n  margin-top: -1rem !important;\n}\n\n.mr-n3,\n.mx-n3 {\n  margin-right: -1rem !important;\n}\n\n.mb-n3,\n.my-n3 {\n  margin-bottom: -1rem !important;\n}\n\n.ml-n3,\n.mx-n3 {\n  margin-left: -1rem !important;\n}\n\n.m-n4 {\n  margin: -1.5rem !important;\n}\n\n.mt-n4,\n.my-n4 {\n  margin-top: -1.5rem !important;\n}\n\n.mr-n4,\n.mx-n4 {\n  margin-right: -1.5rem !important;\n}\n\n.mb-n4,\n.my-n4 {\n  margin-bottom: -1.5rem !important;\n}\n\n.ml-n4,\n.mx-n4 {\n  margin-left: -1.5rem !important;\n}\n\n.m-n5 {\n  margin: -3rem !important;\n}\n\n.mt-n5,\n.my-n5 {\n  margin-top: -3rem !important;\n}\n\n.mr-n5,\n.mx-n5 {\n  margin-right: -3rem !important;\n}\n\n.mb-n5,\n.my-n5 {\n  margin-bottom: -3rem !important;\n}\n\n.ml-n5,\n.mx-n5 {\n  margin-left: -3rem !important;\n}\n\n.m-auto {\n  margin: auto !important;\n}\n\n.mt-auto,\n.my-auto {\n  margin-top: auto !important;\n}\n\n.mr-auto,\n.mx-auto {\n  margin-right: auto !important;\n}\n\n.mb-auto,\n.my-auto {\n  margin-bottom: auto !important;\n}\n\n.ml-auto,\n.mx-auto {\n  margin-left: auto !important;\n}\n\n@media (min-width: 576px) {\n  .m-sm-0 {\n    margin: 0 !important;\n  }\n  .mt-sm-0,\n  .my-sm-0 {\n    margin-top: 0 !important;\n  }\n  .mr-sm-0,\n  .mx-sm-0 {\n    margin-right: 0 !important;\n  }\n  .mb-sm-0,\n  .my-sm-0 {\n    margin-bottom: 0 !important;\n  }\n  .ml-sm-0,\n  .mx-sm-0 {\n    margin-left: 0 !important;\n  }\n  .m-sm-1 {\n    margin: 0.25rem !important;\n  }\n  .mt-sm-1,\n  .my-sm-1 {\n    margin-top: 0.25rem !important;\n  }\n  .mr-sm-1,\n  .mx-sm-1 {\n    margin-right: 0.25rem !important;\n  }\n  .mb-sm-1,\n  .my-sm-1 {\n    margin-bottom: 0.25rem !important;\n  }\n  .ml-sm-1,\n  .mx-sm-1 {\n    margin-left: 0.25rem !important;\n  }\n  .m-sm-2 {\n    margin: 0.5rem !important;\n  }\n  .mt-sm-2,\n  .my-sm-2 {\n    margin-top: 0.5rem !important;\n  }\n  .mr-sm-2,\n  .mx-sm-2 {\n    margin-right: 0.5rem !important;\n  }\n  .mb-sm-2,\n  .my-sm-2 {\n    margin-bottom: 0.5rem !important;\n  }\n  .ml-sm-2,\n  .mx-sm-2 {\n    margin-left: 0.5rem !important;\n  }\n  .m-sm-3 {\n    margin: 1rem !important;\n  }\n  .mt-sm-3,\n  .my-sm-3 {\n    margin-top: 1rem !important;\n  }\n  .mr-sm-3,\n  .mx-sm-3 {\n    margin-right: 1rem !important;\n  }\n  .mb-sm-3,\n  .my-sm-3 {\n    margin-bottom: 1rem !important;\n  }\n  .ml-sm-3,\n  .mx-sm-3 {\n    margin-left: 1rem !important;\n  }\n  .m-sm-4 {\n    margin: 1.5rem !important;\n  }\n  .mt-sm-4,\n  .my-sm-4 {\n    margin-top: 1.5rem !important;\n  }\n  .mr-sm-4,\n  .mx-sm-4 {\n    margin-right: 1.5rem !important;\n  }\n  .mb-sm-4,\n  .my-sm-4 {\n    margin-bottom: 1.5rem !important;\n  }\n  .ml-sm-4,\n  .mx-sm-4 {\n    margin-left: 1.5rem !important;\n  }\n  .m-sm-5 {\n    margin: 3rem !important;\n  }\n  .mt-sm-5,\n  .my-sm-5 {\n    margin-top: 3rem !important;\n  }\n  .mr-sm-5,\n  .mx-sm-5 {\n    margin-right: 3rem !important;\n  }\n  .mb-sm-5,\n  .my-sm-5 {\n    margin-bottom: 3rem !important;\n  }\n  .ml-sm-5,\n  .mx-sm-5 {\n    margin-left: 3rem !important;\n  }\n  .p-sm-0 {\n    padding: 0 !important;\n  }\n  .pt-sm-0,\n  .py-sm-0 {\n    padding-top: 0 !important;\n  }\n  .pr-sm-0,\n  .px-sm-0 {\n    padding-right: 0 !important;\n  }\n  .pb-sm-0,\n  .py-sm-0 {\n    padding-bottom: 0 !important;\n  }\n  .pl-sm-0,\n  .px-sm-0 {\n    padding-left: 0 !important;\n  }\n  .p-sm-1 {\n    padding: 0.25rem !important;\n  }\n  .pt-sm-1,\n  .py-sm-1 {\n    padding-top: 0.25rem !important;\n  }\n  .pr-sm-1,\n  .px-sm-1 {\n    padding-right: 0.25rem !important;\n  }\n  .pb-sm-1,\n  .py-sm-1 {\n    padding-bottom: 0.25rem !important;\n  }\n  .pl-sm-1,\n  .px-sm-1 {\n    padding-left: 0.25rem !important;\n  }\n  .p-sm-2 {\n    padding: 0.5rem !important;\n  }\n  .pt-sm-2,\n  .py-sm-2 {\n    padding-top: 0.5rem !important;\n  }\n  .pr-sm-2,\n  .px-sm-2 {\n    padding-right: 0.5rem !important;\n  }\n  .pb-sm-2,\n  .py-sm-2 {\n    padding-bottom: 0.5rem !important;\n  }\n  .pl-sm-2,\n  .px-sm-2 {\n    padding-left: 0.5rem !important;\n  }\n  .p-sm-3 {\n    padding: 1rem !important;\n  }\n  .pt-sm-3,\n  .py-sm-3 {\n    padding-top: 1rem !important;\n  }\n  .pr-sm-3,\n  .px-sm-3 {\n    padding-right: 1rem !important;\n  }\n  .pb-sm-3,\n  .py-sm-3 {\n    padding-bottom: 1rem !important;\n  }\n  .pl-sm-3,\n  .px-sm-3 {\n    padding-left: 1rem !important;\n  }\n  .p-sm-4 {\n    padding: 1.5rem !important;\n  }\n  .pt-sm-4,\n  .py-sm-4 {\n    padding-top: 1.5rem !important;\n  }\n  .pr-sm-4,\n  .px-sm-4 {\n    padding-right: 1.5rem !important;\n  }\n  .pb-sm-4,\n  .py-sm-4 {\n    padding-bottom: 1.5rem !important;\n  }\n  .pl-sm-4,\n  .px-sm-4 {\n    padding-left: 1.5rem !important;\n  }\n  .p-sm-5 {\n    padding: 3rem !important;\n  }\n  .pt-sm-5,\n  .py-sm-5 {\n    padding-top: 3rem !important;\n  }\n  .pr-sm-5,\n  .px-sm-5 {\n    padding-right: 3rem !important;\n  }\n  .pb-sm-5,\n  .py-sm-5 {\n    padding-bottom: 3rem !important;\n  }\n  .pl-sm-5,\n  .px-sm-5 {\n    padding-left: 3rem !important;\n  }\n  .m-sm-n1 {\n    margin: -0.25rem !important;\n  }\n  .mt-sm-n1,\n  .my-sm-n1 {\n    margin-top: -0.25rem !important;\n  }\n  .mr-sm-n1,\n  .mx-sm-n1 {\n    margin-right: -0.25rem !important;\n  }\n  .mb-sm-n1,\n  .my-sm-n1 {\n    margin-bottom: -0.25rem !important;\n  }\n  .ml-sm-n1,\n  .mx-sm-n1 {\n    margin-left: -0.25rem !important;\n  }\n  .m-sm-n2 {\n    margin: -0.5rem !important;\n  }\n  .mt-sm-n2,\n  .my-sm-n2 {\n    margin-top: -0.5rem !important;\n  }\n  .mr-sm-n2,\n  .mx-sm-n2 {\n    margin-right: -0.5rem !important;\n  }\n  .mb-sm-n2,\n  .my-sm-n2 {\n    margin-bottom: -0.5rem !important;\n  }\n  .ml-sm-n2,\n  .mx-sm-n2 {\n    margin-left: -0.5rem !important;\n  }\n  .m-sm-n3 {\n    margin: -1rem !important;\n  }\n  .mt-sm-n3,\n  .my-sm-n3 {\n    margin-top: -1rem !important;\n  }\n  .mr-sm-n3,\n  .mx-sm-n3 {\n    margin-right: -1rem !important;\n  }\n  .mb-sm-n3,\n  .my-sm-n3 {\n    margin-bottom: -1rem !important;\n  }\n  .ml-sm-n3,\n  .mx-sm-n3 {\n    margin-left: -1rem !important;\n  }\n  .m-sm-n4 {\n    margin: -1.5rem !important;\n  }\n  .mt-sm-n4,\n  .my-sm-n4 {\n    margin-top: -1.5rem !important;\n  }\n  .mr-sm-n4,\n  .mx-sm-n4 {\n    margin-right: -1.5rem !important;\n  }\n  .mb-sm-n4,\n  .my-sm-n4 {\n    margin-bottom: -1.5rem !important;\n  }\n  .ml-sm-n4,\n  .mx-sm-n4 {\n    margin-left: -1.5rem !important;\n  }\n  .m-sm-n5 {\n    margin: -3rem !important;\n  }\n  .mt-sm-n5,\n  .my-sm-n5 {\n    margin-top: -3rem !important;\n  }\n  .mr-sm-n5,\n  .mx-sm-n5 {\n    margin-right: -3rem !important;\n  }\n  .mb-sm-n5,\n  .my-sm-n5 {\n    margin-bottom: -3rem !important;\n  }\n  .ml-sm-n5,\n  .mx-sm-n5 {\n    margin-left: -3rem !important;\n  }\n  .m-sm-auto {\n    margin: auto !important;\n  }\n  .mt-sm-auto,\n  .my-sm-auto {\n    margin-top: auto !important;\n  }\n  .mr-sm-auto,\n  .mx-sm-auto {\n    margin-right: auto !important;\n  }\n  .mb-sm-auto,\n  .my-sm-auto {\n    margin-bottom: auto !important;\n  }\n  .ml-sm-auto,\n  .mx-sm-auto {\n    margin-left: auto !important;\n  }\n}\n\n@media (min-width: 768px) {\n  .m-md-0 {\n    margin: 0 !important;\n  }\n  .mt-md-0,\n  .my-md-0 {\n    margin-top: 0 !important;\n  }\n  .mr-md-0,\n  .mx-md-0 {\n    margin-right: 0 !important;\n  }\n  .mb-md-0,\n  .my-md-0 {\n    margin-bottom: 0 !important;\n  }\n  .ml-md-0,\n  .mx-md-0 {\n    margin-left: 0 !important;\n  }\n  .m-md-1 {\n    margin: 0.25rem !important;\n  }\n  .mt-md-1,\n  .my-md-1 {\n    margin-top: 0.25rem !important;\n  }\n  .mr-md-1,\n  .mx-md-1 {\n    margin-right: 0.25rem !important;\n  }\n  .mb-md-1,\n  .my-md-1 {\n    margin-bottom: 0.25rem !important;\n  }\n  .ml-md-1,\n  .mx-md-1 {\n    margin-left: 0.25rem !important;\n  }\n  .m-md-2 {\n    margin: 0.5rem !important;\n  }\n  .mt-md-2,\n  .my-md-2 {\n    margin-top: 0.5rem !important;\n  }\n  .mr-md-2,\n  .mx-md-2 {\n    margin-right: 0.5rem !important;\n  }\n  .mb-md-2,\n  .my-md-2 {\n    margin-bottom: 0.5rem !important;\n  }\n  .ml-md-2,\n  .mx-md-2 {\n    margin-left: 0.5rem !important;\n  }\n  .m-md-3 {\n    margin: 1rem !important;\n  }\n  .mt-md-3,\n  .my-md-3 {\n    margin-top: 1rem !important;\n  }\n  .mr-md-3,\n  .mx-md-3 {\n    margin-right: 1rem !important;\n  }\n  .mb-md-3,\n  .my-md-3 {\n    margin-bottom: 1rem !important;\n  }\n  .ml-md-3,\n  .mx-md-3 {\n    margin-left: 1rem !important;\n  }\n  .m-md-4 {\n    margin: 1.5rem !important;\n  }\n  .mt-md-4,\n  .my-md-4 {\n    margin-top: 1.5rem !important;\n  }\n  .mr-md-4,\n  .mx-md-4 {\n    margin-right: 1.5rem !important;\n  }\n  .mb-md-4,\n  .my-md-4 {\n    margin-bottom: 1.5rem !important;\n  }\n  .ml-md-4,\n  .mx-md-4 {\n    margin-left: 1.5rem !important;\n  }\n  .m-md-5 {\n    margin: 3rem !important;\n  }\n  .mt-md-5,\n  .my-md-5 {\n    margin-top: 3rem !important;\n  }\n  .mr-md-5,\n  .mx-md-5 {\n    margin-right: 3rem !important;\n  }\n  .mb-md-5,\n  .my-md-5 {\n    margin-bottom: 3rem !important;\n  }\n  .ml-md-5,\n  .mx-md-5 {\n    margin-left: 3rem !important;\n  }\n  .p-md-0 {\n    padding: 0 !important;\n  }\n  .pt-md-0,\n  .py-md-0 {\n    padding-top: 0 !important;\n  }\n  .pr-md-0,\n  .px-md-0 {\n    padding-right: 0 !important;\n  }\n  .pb-md-0,\n  .py-md-0 {\n    padding-bottom: 0 !important;\n  }\n  .pl-md-0,\n  .px-md-0 {\n    padding-left: 0 !important;\n  }\n  .p-md-1 {\n    padding: 0.25rem !important;\n  }\n  .pt-md-1,\n  .py-md-1 {\n    padding-top: 0.25rem !important;\n  }\n  .pr-md-1,\n  .px-md-1 {\n    padding-right: 0.25rem !important;\n  }\n  .pb-md-1,\n  .py-md-1 {\n    padding-bottom: 0.25rem !important;\n  }\n  .pl-md-1,\n  .px-md-1 {\n    padding-left: 0.25rem !important;\n  }\n  .p-md-2 {\n    padding: 0.5rem !important;\n  }\n  .pt-md-2,\n  .py-md-2 {\n    padding-top: 0.5rem !important;\n  }\n  .pr-md-2,\n  .px-md-2 {\n    padding-right: 0.5rem !important;\n  }\n  .pb-md-2,\n  .py-md-2 {\n    padding-bottom: 0.5rem !important;\n  }\n  .pl-md-2,\n  .px-md-2 {\n    padding-left: 0.5rem !important;\n  }\n  .p-md-3 {\n    padding: 1rem !important;\n  }\n  .pt-md-3,\n  .py-md-3 {\n    padding-top: 1rem !important;\n  }\n  .pr-md-3,\n  .px-md-3 {\n    padding-right: 1rem !important;\n  }\n  .pb-md-3,\n  .py-md-3 {\n    padding-bottom: 1rem !important;\n  }\n  .pl-md-3,\n  .px-md-3 {\n    padding-left: 1rem !important;\n  }\n  .p-md-4 {\n    padding: 1.5rem !important;\n  }\n  .pt-md-4,\n  .py-md-4 {\n    padding-top: 1.5rem !important;\n  }\n  .pr-md-4,\n  .px-md-4 {\n    padding-right: 1.5rem !important;\n  }\n  .pb-md-4,\n  .py-md-4 {\n    padding-bottom: 1.5rem !important;\n  }\n  .pl-md-4,\n  .px-md-4 {\n    padding-left: 1.5rem !important;\n  }\n  .p-md-5 {\n    padding: 3rem !important;\n  }\n  .pt-md-5,\n  .py-md-5 {\n    padding-top: 3rem !important;\n  }\n  .pr-md-5,\n  .px-md-5 {\n    padding-right: 3rem !important;\n  }\n  .pb-md-5,\n  .py-md-5 {\n    padding-bottom: 3rem !important;\n  }\n  .pl-md-5,\n  .px-md-5 {\n    padding-left: 3rem !important;\n  }\n  .m-md-n1 {\n    margin: -0.25rem !important;\n  }\n  .mt-md-n1,\n  .my-md-n1 {\n    margin-top: -0.25rem !important;\n  }\n  .mr-md-n1,\n  .mx-md-n1 {\n    margin-right: -0.25rem !important;\n  }\n  .mb-md-n1,\n  .my-md-n1 {\n    margin-bottom: -0.25rem !important;\n  }\n  .ml-md-n1,\n  .mx-md-n1 {\n    margin-left: -0.25rem !important;\n  }\n  .m-md-n2 {\n    margin: -0.5rem !important;\n  }\n  .mt-md-n2,\n  .my-md-n2 {\n    margin-top: -0.5rem !important;\n  }\n  .mr-md-n2,\n  .mx-md-n2 {\n    margin-right: -0.5rem !important;\n  }\n  .mb-md-n2,\n  .my-md-n2 {\n    margin-bottom: -0.5rem !important;\n  }\n  .ml-md-n2,\n  .mx-md-n2 {\n    margin-left: -0.5rem !important;\n  }\n  .m-md-n3 {\n    margin: -1rem !important;\n  }\n  .mt-md-n3,\n  .my-md-n3 {\n    margin-top: -1rem !important;\n  }\n  .mr-md-n3,\n  .mx-md-n3 {\n    margin-right: -1rem !important;\n  }\n  .mb-md-n3,\n  .my-md-n3 {\n    margin-bottom: -1rem !important;\n  }\n  .ml-md-n3,\n  .mx-md-n3 {\n    margin-left: -1rem !important;\n  }\n  .m-md-n4 {\n    margin: -1.5rem !important;\n  }\n  .mt-md-n4,\n  .my-md-n4 {\n    margin-top: -1.5rem !important;\n  }\n  .mr-md-n4,\n  .mx-md-n4 {\n    margin-right: -1.5rem !important;\n  }\n  .mb-md-n4,\n  .my-md-n4 {\n    margin-bottom: -1.5rem !important;\n  }\n  .ml-md-n4,\n  .mx-md-n4 {\n    margin-left: -1.5rem !important;\n  }\n  .m-md-n5 {\n    margin: -3rem !important;\n  }\n  .mt-md-n5,\n  .my-md-n5 {\n    margin-top: -3rem !important;\n  }\n  .mr-md-n5,\n  .mx-md-n5 {\n    margin-right: -3rem !important;\n  }\n  .mb-md-n5,\n  .my-md-n5 {\n    margin-bottom: -3rem !important;\n  }\n  .ml-md-n5,\n  .mx-md-n5 {\n    margin-left: -3rem !important;\n  }\n  .m-md-auto {\n    margin: auto !important;\n  }\n  .mt-md-auto,\n  .my-md-auto {\n    margin-top: auto !important;\n  }\n  .mr-md-auto,\n  .mx-md-auto {\n    margin-right: auto !important;\n  }\n  .mb-md-auto,\n  .my-md-auto {\n    margin-bottom: auto !important;\n  }\n  .ml-md-auto,\n  .mx-md-auto {\n    margin-left: auto !important;\n  }\n}\n\n@media (min-width: 992px) {\n  .m-lg-0 {\n    margin: 0 !important;\n  }\n  .mt-lg-0,\n  .my-lg-0 {\n    margin-top: 0 !important;\n  }\n  .mr-lg-0,\n  .mx-lg-0 {\n    margin-right: 0 !important;\n  }\n  .mb-lg-0,\n  .my-lg-0 {\n    margin-bottom: 0 !important;\n  }\n  .ml-lg-0,\n  .mx-lg-0 {\n    margin-left: 0 !important;\n  }\n  .m-lg-1 {\n    margin: 0.25rem !important;\n  }\n  .mt-lg-1,\n  .my-lg-1 {\n    margin-top: 0.25rem !important;\n  }\n  .mr-lg-1,\n  .mx-lg-1 {\n    margin-right: 0.25rem !important;\n  }\n  .mb-lg-1,\n  .my-lg-1 {\n    margin-bottom: 0.25rem !important;\n  }\n  .ml-lg-1,\n  .mx-lg-1 {\n    margin-left: 0.25rem !important;\n  }\n  .m-lg-2 {\n    margin: 0.5rem !important;\n  }\n  .mt-lg-2,\n  .my-lg-2 {\n    margin-top: 0.5rem !important;\n  }\n  .mr-lg-2,\n  .mx-lg-2 {\n    margin-right: 0.5rem !important;\n  }\n  .mb-lg-2,\n  .my-lg-2 {\n    margin-bottom: 0.5rem !important;\n  }\n  .ml-lg-2,\n  .mx-lg-2 {\n    margin-left: 0.5rem !important;\n  }\n  .m-lg-3 {\n    margin: 1rem !important;\n  }\n  .mt-lg-3,\n  .my-lg-3 {\n    margin-top: 1rem !important;\n  }\n  .mr-lg-3,\n  .mx-lg-3 {\n    margin-right: 1rem !important;\n  }\n  .mb-lg-3,\n  .my-lg-3 {\n    margin-bottom: 1rem !important;\n  }\n  .ml-lg-3,\n  .mx-lg-3 {\n    margin-left: 1rem !important;\n  }\n  .m-lg-4 {\n    margin: 1.5rem !important;\n  }\n  .mt-lg-4,\n  .my-lg-4 {\n    margin-top: 1.5rem !important;\n  }\n  .mr-lg-4,\n  .mx-lg-4 {\n    margin-right: 1.5rem !important;\n  }\n  .mb-lg-4,\n  .my-lg-4 {\n    margin-bottom: 1.5rem !important;\n  }\n  .ml-lg-4,\n  .mx-lg-4 {\n    margin-left: 1.5rem !important;\n  }\n  .m-lg-5 {\n    margin: 3rem !important;\n  }\n  .mt-lg-5,\n  .my-lg-5 {\n    margin-top: 3rem !important;\n  }\n  .mr-lg-5,\n  .mx-lg-5 {\n    margin-right: 3rem !important;\n  }\n  .mb-lg-5,\n  .my-lg-5 {\n    margin-bottom: 3rem !important;\n  }\n  .ml-lg-5,\n  .mx-lg-5 {\n    margin-left: 3rem !important;\n  }\n  .p-lg-0 {\n    padding: 0 !important;\n  }\n  .pt-lg-0,\n  .py-lg-0 {\n    padding-top: 0 !important;\n  }\n  .pr-lg-0,\n  .px-lg-0 {\n    padding-right: 0 !important;\n  }\n  .pb-lg-0,\n  .py-lg-0 {\n    padding-bottom: 0 !important;\n  }\n  .pl-lg-0,\n  .px-lg-0 {\n    padding-left: 0 !important;\n  }\n  .p-lg-1 {\n    padding: 0.25rem !important;\n  }\n  .pt-lg-1,\n  .py-lg-1 {\n    padding-top: 0.25rem !important;\n  }\n  .pr-lg-1,\n  .px-lg-1 {\n    padding-right: 0.25rem !important;\n  }\n  .pb-lg-1,\n  .py-lg-1 {\n    padding-bottom: 0.25rem !important;\n  }\n  .pl-lg-1,\n  .px-lg-1 {\n    padding-left: 0.25rem !important;\n  }\n  .p-lg-2 {\n    padding: 0.5rem !important;\n  }\n  .pt-lg-2,\n  .py-lg-2 {\n    padding-top: 0.5rem !important;\n  }\n  .pr-lg-2,\n  .px-lg-2 {\n    padding-right: 0.5rem !important;\n  }\n  .pb-lg-2,\n  .py-lg-2 {\n    padding-bottom: 0.5rem !important;\n  }\n  .pl-lg-2,\n  .px-lg-2 {\n    padding-left: 0.5rem !important;\n  }\n  .p-lg-3 {\n    padding: 1rem !important;\n  }\n  .pt-lg-3,\n  .py-lg-3 {\n    padding-top: 1rem !important;\n  }\n  .pr-lg-3,\n  .px-lg-3 {\n    padding-right: 1rem !important;\n  }\n  .pb-lg-3,\n  .py-lg-3 {\n    padding-bottom: 1rem !important;\n  }\n  .pl-lg-3,\n  .px-lg-3 {\n    padding-left: 1rem !important;\n  }\n  .p-lg-4 {\n    padding: 1.5rem !important;\n  }\n  .pt-lg-4,\n  .py-lg-4 {\n    padding-top: 1.5rem !important;\n  }\n  .pr-lg-4,\n  .px-lg-4 {\n    padding-right: 1.5rem !important;\n  }\n  .pb-lg-4,\n  .py-lg-4 {\n    padding-bottom: 1.5rem !important;\n  }\n  .pl-lg-4,\n  .px-lg-4 {\n    padding-left: 1.5rem !important;\n  }\n  .p-lg-5 {\n    padding: 3rem !important;\n  }\n  .pt-lg-5,\n  .py-lg-5 {\n    padding-top: 3rem !important;\n  }\n  .pr-lg-5,\n  .px-lg-5 {\n    padding-right: 3rem !important;\n  }\n  .pb-lg-5,\n  .py-lg-5 {\n    padding-bottom: 3rem !important;\n  }\n  .pl-lg-5,\n  .px-lg-5 {\n    padding-left: 3rem !important;\n  }\n  .m-lg-n1 {\n    margin: -0.25rem !important;\n  }\n  .mt-lg-n1,\n  .my-lg-n1 {\n    margin-top: -0.25rem !important;\n  }\n  .mr-lg-n1,\n  .mx-lg-n1 {\n    margin-right: -0.25rem !important;\n  }\n  .mb-lg-n1,\n  .my-lg-n1 {\n    margin-bottom: -0.25rem !important;\n  }\n  .ml-lg-n1,\n  .mx-lg-n1 {\n    margin-left: -0.25rem !important;\n  }\n  .m-lg-n2 {\n    margin: -0.5rem !important;\n  }\n  .mt-lg-n2,\n  .my-lg-n2 {\n    margin-top: -0.5rem !important;\n  }\n  .mr-lg-n2,\n  .mx-lg-n2 {\n    margin-right: -0.5rem !important;\n  }\n  .mb-lg-n2,\n  .my-lg-n2 {\n    margin-bottom: -0.5rem !important;\n  }\n  .ml-lg-n2,\n  .mx-lg-n2 {\n    margin-left: -0.5rem !important;\n  }\n  .m-lg-n3 {\n    margin: -1rem !important;\n  }\n  .mt-lg-n3,\n  .my-lg-n3 {\n    margin-top: -1rem !important;\n  }\n  .mr-lg-n3,\n  .mx-lg-n3 {\n    margin-right: -1rem !important;\n  }\n  .mb-lg-n3,\n  .my-lg-n3 {\n    margin-bottom: -1rem !important;\n  }\n  .ml-lg-n3,\n  .mx-lg-n3 {\n    margin-left: -1rem !important;\n  }\n  .m-lg-n4 {\n    margin: -1.5rem !important;\n  }\n  .mt-lg-n4,\n  .my-lg-n4 {\n    margin-top: -1.5rem !important;\n  }\n  .mr-lg-n4,\n  .mx-lg-n4 {\n    margin-right: -1.5rem !important;\n  }\n  .mb-lg-n4,\n  .my-lg-n4 {\n    margin-bottom: -1.5rem !important;\n  }\n  .ml-lg-n4,\n  .mx-lg-n4 {\n    margin-left: -1.5rem !important;\n  }\n  .m-lg-n5 {\n    margin: -3rem !important;\n  }\n  .mt-lg-n5,\n  .my-lg-n5 {\n    margin-top: -3rem !important;\n  }\n  .mr-lg-n5,\n  .mx-lg-n5 {\n    margin-right: -3rem !important;\n  }\n  .mb-lg-n5,\n  .my-lg-n5 {\n    margin-bottom: -3rem !important;\n  }\n  .ml-lg-n5,\n  .mx-lg-n5 {\n    margin-left: -3rem !important;\n  }\n  .m-lg-auto {\n    margin: auto !important;\n  }\n  .mt-lg-auto,\n  .my-lg-auto {\n    margin-top: auto !important;\n  }\n  .mr-lg-auto,\n  .mx-lg-auto {\n    margin-right: auto !important;\n  }\n  .mb-lg-auto,\n  .my-lg-auto {\n    margin-bottom: auto !important;\n  }\n  .ml-lg-auto,\n  .mx-lg-auto {\n    margin-left: auto !important;\n  }\n}\n\n@media (min-width: 1200px) {\n  .m-xl-0 {\n    margin: 0 !important;\n  }\n  .mt-xl-0,\n  .my-xl-0 {\n    margin-top: 0 !important;\n  }\n  .mr-xl-0,\n  .mx-xl-0 {\n    margin-right: 0 !important;\n  }\n  .mb-xl-0,\n  .my-xl-0 {\n    margin-bottom: 0 !important;\n  }\n  .ml-xl-0,\n  .mx-xl-0 {\n    margin-left: 0 !important;\n  }\n  .m-xl-1 {\n    margin: 0.25rem !important;\n  }\n  .mt-xl-1,\n  .my-xl-1 {\n    margin-top: 0.25rem !important;\n  }\n  .mr-xl-1,\n  .mx-xl-1 {\n    margin-right: 0.25rem !important;\n  }\n  .mb-xl-1,\n  .my-xl-1 {\n    margin-bottom: 0.25rem !important;\n  }\n  .ml-xl-1,\n  .mx-xl-1 {\n    margin-left: 0.25rem !important;\n  }\n  .m-xl-2 {\n    margin: 0.5rem !important;\n  }\n  .mt-xl-2,\n  .my-xl-2 {\n    margin-top: 0.5rem !important;\n  }\n  .mr-xl-2,\n  .mx-xl-2 {\n    margin-right: 0.5rem !important;\n  }\n  .mb-xl-2,\n  .my-xl-2 {\n    margin-bottom: 0.5rem !important;\n  }\n  .ml-xl-2,\n  .mx-xl-2 {\n    margin-left: 0.5rem !important;\n  }\n  .m-xl-3 {\n    margin: 1rem !important;\n  }\n  .mt-xl-3,\n  .my-xl-3 {\n    margin-top: 1rem !important;\n  }\n  .mr-xl-3,\n  .mx-xl-3 {\n    margin-right: 1rem !important;\n  }\n  .mb-xl-3,\n  .my-xl-3 {\n    margin-bottom: 1rem !important;\n  }\n  .ml-xl-3,\n  .mx-xl-3 {\n    margin-left: 1rem !important;\n  }\n  .m-xl-4 {\n    margin: 1.5rem !important;\n  }\n  .mt-xl-4,\n  .my-xl-4 {\n    margin-top: 1.5rem !important;\n  }\n  .mr-xl-4,\n  .mx-xl-4 {\n    margin-right: 1.5rem !important;\n  }\n  .mb-xl-4,\n  .my-xl-4 {\n    margin-bottom: 1.5rem !important;\n  }\n  .ml-xl-4,\n  .mx-xl-4 {\n    margin-left: 1.5rem !important;\n  }\n  .m-xl-5 {\n    margin: 3rem !important;\n  }\n  .mt-xl-5,\n  .my-xl-5 {\n    margin-top: 3rem !important;\n  }\n  .mr-xl-5,\n  .mx-xl-5 {\n    margin-right: 3rem !important;\n  }\n  .mb-xl-5,\n  .my-xl-5 {\n    margin-bottom: 3rem !important;\n  }\n  .ml-xl-5,\n  .mx-xl-5 {\n    margin-left: 3rem !important;\n  }\n  .p-xl-0 {\n    padding: 0 !important;\n  }\n  .pt-xl-0,\n  .py-xl-0 {\n    padding-top: 0 !important;\n  }\n  .pr-xl-0,\n  .px-xl-0 {\n    padding-right: 0 !important;\n  }\n  .pb-xl-0,\n  .py-xl-0 {\n    padding-bottom: 0 !important;\n  }\n  .pl-xl-0,\n  .px-xl-0 {\n    padding-left: 0 !important;\n  }\n  .p-xl-1 {\n    padding: 0.25rem !important;\n  }\n  .pt-xl-1,\n  .py-xl-1 {\n    padding-top: 0.25rem !important;\n  }\n  .pr-xl-1,\n  .px-xl-1 {\n    padding-right: 0.25rem !important;\n  }\n  .pb-xl-1,\n  .py-xl-1 {\n    padding-bottom: 0.25rem !important;\n  }\n  .pl-xl-1,\n  .px-xl-1 {\n    padding-left: 0.25rem !important;\n  }\n  .p-xl-2 {\n    padding: 0.5rem !important;\n  }\n  .pt-xl-2,\n  .py-xl-2 {\n    padding-top: 0.5rem !important;\n  }\n  .pr-xl-2,\n  .px-xl-2 {\n    padding-right: 0.5rem !important;\n  }\n  .pb-xl-2,\n  .py-xl-2 {\n    padding-bottom: 0.5rem !important;\n  }\n  .pl-xl-2,\n  .px-xl-2 {\n    padding-left: 0.5rem !important;\n  }\n  .p-xl-3 {\n    padding: 1rem !important;\n  }\n  .pt-xl-3,\n  .py-xl-3 {\n    padding-top: 1rem !important;\n  }\n  .pr-xl-3,\n  .px-xl-3 {\n    padding-right: 1rem !important;\n  }\n  .pb-xl-3,\n  .py-xl-3 {\n    padding-bottom: 1rem !important;\n  }\n  .pl-xl-3,\n  .px-xl-3 {\n    padding-left: 1rem !important;\n  }\n  .p-xl-4 {\n    padding: 1.5rem !important;\n  }\n  .pt-xl-4,\n  .py-xl-4 {\n    padding-top: 1.5rem !important;\n  }\n  .pr-xl-4,\n  .px-xl-4 {\n    padding-right: 1.5rem !important;\n  }\n  .pb-xl-4,\n  .py-xl-4 {\n    padding-bottom: 1.5rem !important;\n  }\n  .pl-xl-4,\n  .px-xl-4 {\n    padding-left: 1.5rem !important;\n  }\n  .p-xl-5 {\n    padding: 3rem !important;\n  }\n  .pt-xl-5,\n  .py-xl-5 {\n    padding-top: 3rem !important;\n  }\n  .pr-xl-5,\n  .px-xl-5 {\n    padding-right: 3rem !important;\n  }\n  .pb-xl-5,\n  .py-xl-5 {\n    padding-bottom: 3rem !important;\n  }\n  .pl-xl-5,\n  .px-xl-5 {\n    padding-left: 3rem !important;\n  }\n  .m-xl-n1 {\n    margin: -0.25rem !important;\n  }\n  .mt-xl-n1,\n  .my-xl-n1 {\n    margin-top: -0.25rem !important;\n  }\n  .mr-xl-n1,\n  .mx-xl-n1 {\n    margin-right: -0.25rem !important;\n  }\n  .mb-xl-n1,\n  .my-xl-n1 {\n    margin-bottom: -0.25rem !important;\n  }\n  .ml-xl-n1,\n  .mx-xl-n1 {\n    margin-left: -0.25rem !important;\n  }\n  .m-xl-n2 {\n    margin: -0.5rem !important;\n  }\n  .mt-xl-n2,\n  .my-xl-n2 {\n    margin-top: -0.5rem !important;\n  }\n  .mr-xl-n2,\n  .mx-xl-n2 {\n    margin-right: -0.5rem !important;\n  }\n  .mb-xl-n2,\n  .my-xl-n2 {\n    margin-bottom: -0.5rem !important;\n  }\n  .ml-xl-n2,\n  .mx-xl-n2 {\n    margin-left: -0.5rem !important;\n  }\n  .m-xl-n3 {\n    margin: -1rem !important;\n  }\n  .mt-xl-n3,\n  .my-xl-n3 {\n    margin-top: -1rem !important;\n  }\n  .mr-xl-n3,\n  .mx-xl-n3 {\n    margin-right: -1rem !important;\n  }\n  .mb-xl-n3,\n  .my-xl-n3 {\n    margin-bottom: -1rem !important;\n  }\n  .ml-xl-n3,\n  .mx-xl-n3 {\n    margin-left: -1rem !important;\n  }\n  .m-xl-n4 {\n    margin: -1.5rem !important;\n  }\n  .mt-xl-n4,\n  .my-xl-n4 {\n    margin-top: -1.5rem !important;\n  }\n  .mr-xl-n4,\n  .mx-xl-n4 {\n    margin-right: -1.5rem !important;\n  }\n  .mb-xl-n4,\n  .my-xl-n4 {\n    margin-bottom: -1.5rem !important;\n  }\n  .ml-xl-n4,\n  .mx-xl-n4 {\n    margin-left: -1.5rem !important;\n  }\n  .m-xl-n5 {\n    margin: -3rem !important;\n  }\n  .mt-xl-n5,\n  .my-xl-n5 {\n    margin-top: -3rem !important;\n  }\n  .mr-xl-n5,\n  .mx-xl-n5 {\n    margin-right: -3rem !important;\n  }\n  .mb-xl-n5,\n  .my-xl-n5 {\n    margin-bottom: -3rem !important;\n  }\n  .ml-xl-n5,\n  .mx-xl-n5 {\n    margin-left: -3rem !important;\n  }\n  .m-xl-auto {\n    margin: auto !important;\n  }\n  .mt-xl-auto,\n  .my-xl-auto {\n    margin-top: auto !important;\n  }\n  .mr-xl-auto,\n  .mx-xl-auto {\n    margin-right: auto !important;\n  }\n  .mb-xl-auto,\n  .my-xl-auto {\n    margin-bottom: auto !important;\n  }\n  .ml-xl-auto,\n  .mx-xl-auto {\n    margin-left: auto !important;\n  }\n}\n\n.text-monospace {\n  font-family: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace !important;\n}\n\n.text-justify {\n  text-align: justify !important;\n}\n\n.text-wrap {\n  white-space: normal !important;\n}\n\n.text-nowrap {\n  white-space: nowrap !important;\n}\n\n.text-truncate {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n\n.text-left {\n  text-align: left !important;\n}\n\n.text-right {\n  text-align: right !important;\n}\n\n.text-center {\n  text-align: center !important;\n}\n\n@media (min-width: 576px) {\n  .text-sm-left {\n    text-align: left !important;\n  }\n  .text-sm-right {\n    text-align: right !important;\n  }\n  .text-sm-center {\n    text-align: center !important;\n  }\n}\n\n@media (min-width: 768px) {\n  .text-md-left {\n    text-align: left !important;\n  }\n  .text-md-right {\n    text-align: right !important;\n  }\n  .text-md-center {\n    text-align: center !important;\n  }\n}\n\n@media (min-width: 992px) {\n  .text-lg-left {\n    text-align: left !important;\n  }\n  .text-lg-right {\n    text-align: right !important;\n  }\n  .text-lg-center {\n    text-align: center !important;\n  }\n}\n\n@media (min-width: 1200px) {\n  .text-xl-left {\n    text-align: left !important;\n  }\n  .text-xl-right {\n    text-align: right !important;\n  }\n  .text-xl-center {\n    text-align: center !important;\n  }\n}\n\n.text-lowercase {\n  text-transform: lowercase !important;\n}\n\n.text-uppercase {\n  text-transform: uppercase !important;\n}\n\n.text-capitalize {\n  text-transform: capitalize !important;\n}\n\n.font-weight-light {\n  font-weight: 300 !important;\n}\n\n.font-weight-lighter {\n  font-weight: lighter !important;\n}\n\n.font-weight-normal {\n  font-weight: 400 !important;\n}\n\n.font-weight-bold {\n  font-weight: 700 !important;\n}\n\n.font-weight-bolder {\n  font-weight: bolder !important;\n}\n\n.font-italic {\n  font-style: italic !important;\n}\n\n.text-white {\n  color: #ffffff !important;\n}\n\n.text-primary {\n  color: #007bff !important;\n}\n\na.text-primary:hover, a.text-primary:focus {\n  color: #0056b3 !important;\n}\n\n.text-secondary {\n  color: #6c757d !important;\n}\n\na.text-secondary:hover, a.text-secondary:focus {\n  color: #494f54 !important;\n}\n\n.text-success {\n  color: #28a745 !important;\n}\n\na.text-success:hover, a.text-success:focus {\n  color: #19692c !important;\n}\n\n.text-info {\n  color: #17a2b8 !important;\n}\n\na.text-info:hover, a.text-info:focus {\n  color: #0f6674 !important;\n}\n\n.text-warning {\n  color: #ffc107 !important;\n}\n\na.text-warning:hover, a.text-warning:focus {\n  color: #ba8b00 !important;\n}\n\n.text-danger {\n  color: #dc3545 !important;\n}\n\na.text-danger:hover, a.text-danger:focus {\n  color: #a71d2a !important;\n}\n\n.text-light {\n  color: #f8f9fa !important;\n}\n\na.text-light:hover, a.text-light:focus {\n  color: #cbd3da !important;\n}\n\n.text-dark {\n  color: #343a40 !important;\n}\n\na.text-dark:hover, a.text-dark:focus {\n  color: #121416 !important;\n}\n\n.text-body {\n  color: #212529 !important;\n}\n\n.text-muted {\n  color: #6c757d !important;\n}\n\n.text-black-50 {\n  color: rgba(0, 0, 0, 0.5) !important;\n}\n\n.text-white-50 {\n  color: rgba(255, 255, 255, 0.5) !important;\n}\n\n.text-hide {\n  font: 0/0 a;\n  color: transparent;\n  text-shadow: none;\n  background-color: transparent;\n  border: 0;\n}\n\n.text-decoration-none {\n  text-decoration: none !important;\n}\n\n.text-break {\n  word-break: break-word !important;\n  overflow-wrap: break-word !important;\n}\n\n.text-reset {\n  color: inherit !important;\n}\n\n.visible {\n  visibility: visible !important;\n}\n\n.invisible {\n  visibility: hidden !important;\n}\n\n@media print {\n  *,\n  *::before,\n  *::after {\n    text-shadow: none !important;\n    box-shadow: none !important;\n  }\n  a:not(.btn) {\n    text-decoration: underline;\n  }\n  abbr[title]::after {\n    content: \" (\" attr(title) \")\";\n  }\n  pre {\n    white-space: pre-wrap !important;\n  }\n  pre,\n  blockquote {\n    border: 1px solid #adb5bd;\n    page-break-inside: avoid;\n  }\n  thead {\n    display: table-header-group;\n  }\n  tr,\n  img {\n    page-break-inside: avoid;\n  }\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3;\n  }\n  h2,\n  h3 {\n    page-break-after: avoid;\n  }\n  @page {\n    size: a3;\n  }\n  body {\n    min-width: 992px !important;\n  }\n  .container {\n    min-width: 992px !important;\n  }\n  .navbar {\n    display: none;\n  }\n  .badge {\n    border: 1px solid #000;\n  }\n  .table {\n    border-collapse: collapse !important;\n  }\n  .table td,\n  .table th {\n    background-color: #ffffff !important;\n  }\n  .table-bordered th,\n  .table-bordered td {\n    border: 1px solid #dee2e6 !important;\n  }\n  .table-dark {\n    color: inherit;\n  }\n  .table-dark th,\n  .table-dark td,\n  .table-dark thead th,\n  .table-dark tbody + tbody {\n    border-color: #dee2e6;\n  }\n  .table .thead-dark th {\n    color: inherit;\n    border-color: #dee2e6;\n  }\n}\n\nhtml {\n  scroll-behavior: smooth;\n}\n\nhtml,\nbody,\n.wrapper {\n  min-height: 100%;\n}\n\n.wrapper {\n  position: relative;\n}\n\n.wrapper .content-wrapper {\n  min-height: calc(100vh - calc(3.5rem + 1px) - calc(3.5rem + 1px));\n}\n\n.layout-boxed .wrapper {\n  box-shadow: 0 0 10 rgba(0, 0, 0, 0.3);\n}\n\n.layout-boxed .wrapper, .layout-boxed .wrapper::before {\n  margin: 0 auto;\n  max-width: 1250px;\n}\n\n.layout-boxed .wrapper .main-sidebar {\n  left: inherit;\n}\n\n.layout-navbar-fixed.layout-fixed .wrapper .control-sidebar {\n  top: calc(3.5rem + 1px);\n}\n\n.layout-navbar-fixed.layout-fixed .wrapper .main-header.text-sm ~ .control-sidebar {\n  top: calc(2.93725rem + 1px);\n}\n\n.layout-navbar-fixed.layout-fixed .wrapper .sidebar {\n  margin-top: calc(3.5rem + 1px);\n}\n\n.layout-navbar-fixed.layout-fixed .wrapper .brand-link.text-sm ~ .sidebar {\n  margin-top: calc(2.93725rem + 1px);\n}\n\n.layout-navbar-fixed.layout-fixed.text-sm .wrapper .control-sidebar {\n  top: calc(2.93725rem + 1px);\n}\n\n.layout-navbar-fixed.layout-fixed.text-sm .wrapper .sidebar {\n  margin-top: calc(2.93725rem + 1px);\n}\n\n.layout-navbar-fixed.sidebar-collapse .wrapper .brand-link {\n  height: calc(3.5rem + 1px);\n  width: 4.6rem;\n}\n\n.layout-navbar-fixed.sidebar-collapse .wrapper .brand-link.text-sm {\n  height: calc(2.93725rem + 1px);\n}\n\n.layout-navbar-fixed.sidebar-collapse.text-sm .wrapper .brand-link {\n  height: calc(2.93725rem + 1px);\n}\n\n.layout-navbar-fixed .wrapper .control-sidebar {\n  top: 0;\n}\n\n.layout-navbar-fixed .wrapper a.anchor {\n  display: block;\n  position: relative;\n  top: calc((3.5rem + 1px + (0.5rem * 2)) / -1);\n}\n\n.layout-navbar-fixed .wrapper .main-sidebar:hover .brand-link {\n  transition: width 0.3s ease-in-out;\n  width: 250px;\n}\n\n.layout-navbar-fixed .wrapper .brand-link {\n  overflow: hidden;\n  position: fixed;\n  top: 0;\n  transition: width 0.3s ease-in-out;\n  width: 250px;\n  z-index: 1035;\n}\n\n.layout-navbar-fixed .wrapper .sidebar-dark-primary .brand-link:not([class*=\"navbar\"]) {\n  background-color: #343a40;\n}\n\n.layout-navbar-fixed .wrapper .sidebar-light-primary .brand-link:not([class*=\"navbar\"]) {\n  background-color: #ffffff;\n}\n\n.layout-navbar-fixed .wrapper .sidebar-dark-secondary .brand-link:not([class*=\"navbar\"]) {\n  background-color: #343a40;\n}\n\n.layout-navbar-fixed .wrapper .sidebar-light-secondary .brand-link:not([class*=\"navbar\"]) {\n  background-color: #ffffff;\n}\n\n.layout-navbar-fixed .wrapper .sidebar-dark-success .brand-link:not([class*=\"navbar\"]) {\n  background-color: #343a40;\n}\n\n.layout-navbar-fixed .wrapper .sidebar-light-success .brand-link:not([class*=\"navbar\"]) {\n  background-color: #ffffff;\n}\n\n.layout-navbar-fixed .wrapper .sidebar-dark-info .brand-link:not([class*=\"navbar\"]) {\n  background-color: #343a40;\n}\n\n.layout-navbar-fixed .wrapper .sidebar-light-info .brand-link:not([class*=\"navbar\"]) {\n  background-color: #ffffff;\n}\n\n.layout-navbar-fixed .wrapper .sidebar-dark-warning .brand-link:not([class*=\"navbar\"]) {\n  background-color: #343a40;\n}\n\n.layout-navbar-fixed .wrapper .sidebar-light-warning .brand-link:not([class*=\"navbar\"]) {\n  background-color: #ffffff;\n}\n\n.layout-navbar-fixed .wrapper .sidebar-dark-danger .brand-link:not([class*=\"navbar\"]) {\n  background-color: #343a40;\n}\n\n.layout-navbar-fixed .wrapper .sidebar-light-danger .brand-link:not([class*=\"navbar\"]) {\n  background-color: #ffffff;\n}\n\n.layout-navbar-fixed .wrapper .sidebar-dark-light .brand-link:not([class*=\"navbar\"]) {\n  background-color: #343a40;\n}\n\n.layout-navbar-fixed .wrapper .sidebar-light-light .brand-link:not([class*=\"navbar\"]) {\n  background-color: #ffffff;\n}\n\n.layout-navbar-fixed .wrapper .sidebar-dark-dark .brand-link:not([class*=\"navbar\"]) {\n  background-color: #343a40;\n}\n\n.layout-navbar-fixed .wrapper .sidebar-light-dark .brand-link:not([class*=\"navbar\"]) {\n  background-color: #ffffff;\n}\n\n.layout-navbar-fixed .wrapper .content-wrapper {\n  margin-top: calc(3.5rem + 1px);\n}\n\n.layout-navbar-fixed .wrapper .main-header.text-sm ~ .content-wrapper {\n  margin-top: calc(2.93725rem + 1px);\n}\n\n.layout-navbar-fixed .wrapper .main-header {\n  left: 0;\n  position: fixed;\n  right: 0;\n  top: 0;\n  z-index: 1033;\n}\n\n.layout-navbar-fixed.text-sm .wrapper .content-wrapper {\n  margin-top: calc(2.93725rem + 1px);\n}\n\n.layout-navbar-not-fixed .wrapper .brand-link {\n  position: static;\n}\n\n.layout-navbar-not-fixed .wrapper .sidebar,\n.layout-navbar-not-fixed .wrapper .content-wrapper {\n  margin-top: 0;\n}\n\n.layout-navbar-not-fixed .wrapper .main-header {\n  position: static;\n}\n\n.layout-navbar-not-fixed.layout-fixed .wrapper .sidebar {\n  margin-top: 0;\n}\n\n.layout-navbar-fixed.layout-fixed .wrapper .control-sidebar {\n  top: calc(3.5rem + 1px);\n}\n\n.text-sm .layout-navbar-fixed.layout-fixed .wrapper .main-header ~ .control-sidebar,\n.layout-navbar-fixed.layout-fixed .wrapper .main-header.text-sm ~ .control-sidebar {\n  top: calc(2.93725rem + 1px);\n}\n\n.layout-navbar-fixed.layout-fixed .wrapper .sidebar {\n  margin-top: calc(3.5rem + 1px);\n}\n\n.text-sm .layout-navbar-fixed.layout-fixed .wrapper .brand-link ~ .sidebar,\n.layout-navbar-fixed.layout-fixed .wrapper .brand-link.text-sm ~ .sidebar {\n  margin-top: calc(2.93725rem + 1px);\n}\n\n.layout-navbar-fixed.layout-fixed.text-sm .wrapper .control-sidebar {\n  top: calc(2.93725rem + 1px);\n}\n\n.layout-navbar-fixed.layout-fixed.text-sm .wrapper .sidebar {\n  margin-top: calc(2.93725rem + 1px);\n}\n\n.layout-navbar-fixed .wrapper .control-sidebar {\n  top: 0;\n}\n\n.layout-navbar-fixed .wrapper a.anchor {\n  display: block;\n  position: relative;\n  top: calc((3.5rem + 1px + (0.5rem * 2)) / -1);\n}\n\n.layout-navbar-fixed .wrapper.sidebar-collapse .brand-link {\n  height: calc(3.5rem + 1px);\n  transition: width 0.3s ease-in-out;\n  width: 4.6rem;\n}\n\n.text-sm .layout-navbar-fixed .wrapper.sidebar-collapse .brand-link, .layout-navbar-fixed .wrapper.sidebar-collapse .brand-link.text-sm {\n  height: calc(2.93725rem + 1px);\n}\n\n.layout-navbar-fixed .wrapper.sidebar-collapse .main-sidebar:hover .brand-link {\n  transition: width 0.3s ease-in-out;\n  width: 250px;\n}\n\n.layout-navbar-fixed .wrapper .brand-link {\n  overflow: hidden;\n  position: fixed;\n  top: 0;\n  transition: width 0.3s ease-in-out;\n  width: 250px;\n  z-index: 1035;\n}\n\n.layout-navbar-fixed .wrapper .sidebar-dark-primary .brand-link:not([class*=\"navbar\"]) {\n  background-color: #343a40;\n}\n\n.layout-navbar-fixed .wrapper .sidebar-light-primary .brand-link:not([class*=\"navbar\"]) {\n  background-color: #ffffff;\n}\n\n.layout-navbar-fixed .wrapper .sidebar-dark-secondary .brand-link:not([class*=\"navbar\"]) {\n  background-color: #343a40;\n}\n\n.layout-navbar-fixed .wrapper .sidebar-light-secondary .brand-link:not([class*=\"navbar\"]) {\n  background-color: #ffffff;\n}\n\n.layout-navbar-fixed .wrapper .sidebar-dark-success .brand-link:not([class*=\"navbar\"]) {\n  background-color: #343a40;\n}\n\n.layout-navbar-fixed .wrapper .sidebar-light-success .brand-link:not([class*=\"navbar\"]) {\n  background-color: #ffffff;\n}\n\n.layout-navbar-fixed .wrapper .sidebar-dark-info .brand-link:not([class*=\"navbar\"]) {\n  background-color: #343a40;\n}\n\n.layout-navbar-fixed .wrapper .sidebar-light-info .brand-link:not([class*=\"navbar\"]) {\n  background-color: #ffffff;\n}\n\n.layout-navbar-fixed .wrapper .sidebar-dark-warning .brand-link:not([class*=\"navbar\"]) {\n  background-color: #343a40;\n}\n\n.layout-navbar-fixed .wrapper .sidebar-light-warning .brand-link:not([class*=\"navbar\"]) {\n  background-color: #ffffff;\n}\n\n.layout-navbar-fixed .wrapper .sidebar-dark-danger .brand-link:not([class*=\"navbar\"]) {\n  background-color: #343a40;\n}\n\n.layout-navbar-fixed .wrapper .sidebar-light-danger .brand-link:not([class*=\"navbar\"]) {\n  background-color: #ffffff;\n}\n\n.layout-navbar-fixed .wrapper .sidebar-dark-light .brand-link:not([class*=\"navbar\"]) {\n  background-color: #343a40;\n}\n\n.layout-navbar-fixed .wrapper .sidebar-light-light .brand-link:not([class*=\"navbar\"]) {\n  background-color: #ffffff;\n}\n\n.layout-navbar-fixed .wrapper .sidebar-dark-dark .brand-link:not([class*=\"navbar\"]) {\n  background-color: #343a40;\n}\n\n.layout-navbar-fixed .wrapper .sidebar-light-dark .brand-link:not([class*=\"navbar\"]) {\n  background-color: #ffffff;\n}\n\n.layout-navbar-fixed .wrapper .content-wrapper {\n  margin-top: calc(3.5rem + 1px);\n}\n\n.text-sm .layout-navbar-fixed .wrapper .main-header ~ .content-wrapper,\n.layout-navbar-fixed .wrapper .main-header.text-sm ~ .content-wrapper {\n  margin-top: calc(2.93725rem + 1px);\n}\n\n.layout-navbar-fixed .wrapper .main-header {\n  left: 0;\n  position: fixed;\n  right: 0;\n  top: 0;\n  z-index: 1037;\n}\n\n.layout-navbar-fixed.text-sm .wrapper .content-wrapper {\n  margin-top: calc(2.93725rem + 1px);\n}\n\n.layout-navbar-not-fixed .wrapper .brand-link {\n  position: static;\n}\n\n.layout-navbar-not-fixed .wrapper .sidebar,\n.layout-navbar-not-fixed .wrapper .content-wrapper {\n  margin-top: 0;\n}\n\n.layout-navbar-not-fixed .wrapper .main-header {\n  position: static;\n}\n\n.layout-navbar-not-fixed.layout-fixed .wrapper .sidebar {\n  margin-top: 0;\n}\n\n@media (min-width: 576px) {\n  .layout-sm-navbar-fixed.layout-fixed .wrapper .control-sidebar {\n    top: calc(3.5rem + 1px);\n  }\n  .text-sm .layout-sm-navbar-fixed.layout-fixed .wrapper .main-header ~ .control-sidebar,\n  .layout-sm-navbar-fixed.layout-fixed .wrapper .main-header.text-sm ~ .control-sidebar {\n    top: calc(2.93725rem + 1px);\n  }\n  .layout-sm-navbar-fixed.layout-fixed .wrapper .sidebar {\n    margin-top: calc(3.5rem + 1px);\n  }\n  .text-sm .layout-sm-navbar-fixed.layout-fixed .wrapper .brand-link ~ .sidebar,\n  .layout-sm-navbar-fixed.layout-fixed .wrapper .brand-link.text-sm ~ .sidebar {\n    margin-top: calc(2.93725rem + 1px);\n  }\n  .layout-sm-navbar-fixed.layout-fixed.text-sm .wrapper .control-sidebar {\n    top: calc(2.93725rem + 1px);\n  }\n  .layout-sm-navbar-fixed.layout-fixed.text-sm .wrapper .sidebar {\n    margin-top: calc(2.93725rem + 1px);\n  }\n  .layout-sm-navbar-fixed .wrapper .control-sidebar {\n    top: 0;\n  }\n  .layout-sm-navbar-fixed .wrapper a.anchor {\n    display: block;\n    position: relative;\n    top: calc((3.5rem + 1px + (0.5rem * 2)) / -1);\n  }\n  .layout-sm-navbar-fixed .wrapper.sidebar-collapse .brand-link {\n    height: calc(3.5rem + 1px);\n    transition: width 0.3s ease-in-out;\n    width: 4.6rem;\n  }\n  .text-sm .layout-sm-navbar-fixed .wrapper.sidebar-collapse .brand-link, .layout-sm-navbar-fixed .wrapper.sidebar-collapse .brand-link.text-sm {\n    height: calc(2.93725rem + 1px);\n  }\n  .layout-sm-navbar-fixed .wrapper.sidebar-collapse .main-sidebar:hover .brand-link {\n    transition: width 0.3s ease-in-out;\n    width: 250px;\n  }\n  .layout-sm-navbar-fixed .wrapper .brand-link {\n    overflow: hidden;\n    position: fixed;\n    top: 0;\n    transition: width 0.3s ease-in-out;\n    width: 250px;\n    z-index: 1035;\n  }\n  .layout-sm-navbar-fixed .wrapper .sidebar-dark-primary .brand-link:not([class*=\"navbar\"]) {\n    background-color: #343a40;\n  }\n  .layout-sm-navbar-fixed .wrapper .sidebar-light-primary .brand-link:not([class*=\"navbar\"]) {\n    background-color: #ffffff;\n  }\n  .layout-sm-navbar-fixed .wrapper .sidebar-dark-secondary .brand-link:not([class*=\"navbar\"]) {\n    background-color: #343a40;\n  }\n  .layout-sm-navbar-fixed .wrapper .sidebar-light-secondary .brand-link:not([class*=\"navbar\"]) {\n    background-color: #ffffff;\n  }\n  .layout-sm-navbar-fixed .wrapper .sidebar-dark-success .brand-link:not([class*=\"navbar\"]) {\n    background-color: #343a40;\n  }\n  .layout-sm-navbar-fixed .wrapper .sidebar-light-success .brand-link:not([class*=\"navbar\"]) {\n    background-color: #ffffff;\n  }\n  .layout-sm-navbar-fixed .wrapper .sidebar-dark-info .brand-link:not([class*=\"navbar\"]) {\n    background-color: #343a40;\n  }\n  .layout-sm-navbar-fixed .wrapper .sidebar-light-info .brand-link:not([class*=\"navbar\"]) {\n    background-color: #ffffff;\n  }\n  .layout-sm-navbar-fixed .wrapper .sidebar-dark-warning .brand-link:not([class*=\"navbar\"]) {\n    background-color: #343a40;\n  }\n  .layout-sm-navbar-fixed .wrapper .sidebar-light-warning .brand-link:not([class*=\"navbar\"]) {\n    background-color: #ffffff;\n  }\n  .layout-sm-navbar-fixed .wrapper .sidebar-dark-danger .brand-link:not([class*=\"navbar\"]) {\n    background-color: #343a40;\n  }\n  .layout-sm-navbar-fixed .wrapper .sidebar-light-danger .brand-link:not([class*=\"navbar\"]) {\n    background-color: #ffffff;\n  }\n  .layout-sm-navbar-fixed .wrapper .sidebar-dark-light .brand-link:not([class*=\"navbar\"]) {\n    background-color: #343a40;\n  }\n  .layout-sm-navbar-fixed .wrapper .sidebar-light-light .brand-link:not([class*=\"navbar\"]) {\n    background-color: #ffffff;\n  }\n  .layout-sm-navbar-fixed .wrapper .sidebar-dark-dark .brand-link:not([class*=\"navbar\"]) {\n    background-color: #343a40;\n  }\n  .layout-sm-navbar-fixed .wrapper .sidebar-light-dark .brand-link:not([class*=\"navbar\"]) {\n    background-color: #ffffff;\n  }\n  .layout-sm-navbar-fixed .wrapper .content-wrapper {\n    margin-top: calc(3.5rem + 1px);\n  }\n  .text-sm .layout-sm-navbar-fixed .wrapper .main-header ~ .content-wrapper,\n  .layout-sm-navbar-fixed .wrapper .main-header.text-sm ~ .content-wrapper {\n    margin-top: calc(2.93725rem + 1px);\n  }\n  .layout-sm-navbar-fixed .wrapper .main-header {\n    left: 0;\n    position: fixed;\n    right: 0;\n    top: 0;\n    z-index: 1037;\n  }\n  .layout-sm-navbar-fixed.text-sm .wrapper .content-wrapper {\n    margin-top: calc(2.93725rem + 1px);\n  }\n  .layout-sm-navbar-not-fixed .wrapper .brand-link {\n    position: static;\n  }\n  .layout-sm-navbar-not-fixed .wrapper .sidebar,\n  .layout-sm-navbar-not-fixed .wrapper .content-wrapper {\n    margin-top: 0;\n  }\n  .layout-sm-navbar-not-fixed .wrapper .main-header {\n    position: static;\n  }\n  .layout-sm-navbar-not-fixed.layout-fixed .wrapper .sidebar {\n    margin-top: 0;\n  }\n}\n\n@media (min-width: 768px) {\n  .layout-md-navbar-fixed.layout-fixed .wrapper .control-sidebar {\n    top: calc(3.5rem + 1px);\n  }\n  .text-sm .layout-md-navbar-fixed.layout-fixed .wrapper .main-header ~ .control-sidebar,\n  .layout-md-navbar-fixed.layout-fixed .wrapper .main-header.text-sm ~ .control-sidebar {\n    top: calc(2.93725rem + 1px);\n  }\n  .layout-md-navbar-fixed.layout-fixed .wrapper .sidebar {\n    margin-top: calc(3.5rem + 1px);\n  }\n  .text-sm .layout-md-navbar-fixed.layout-fixed .wrapper .brand-link ~ .sidebar,\n  .layout-md-navbar-fixed.layout-fixed .wrapper .brand-link.text-sm ~ .sidebar {\n    margin-top: calc(2.93725rem + 1px);\n  }\n  .layout-md-navbar-fixed.layout-fixed.text-sm .wrapper .control-sidebar {\n    top: calc(2.93725rem + 1px);\n  }\n  .layout-md-navbar-fixed.layout-fixed.text-sm .wrapper .sidebar {\n    margin-top: calc(2.93725rem + 1px);\n  }\n  .layout-md-navbar-fixed .wrapper .control-sidebar {\n    top: 0;\n  }\n  .layout-md-navbar-fixed .wrapper a.anchor {\n    display: block;\n    position: relative;\n    top: calc((3.5rem + 1px + (0.5rem * 2)) / -1);\n  }\n  .layout-md-navbar-fixed .wrapper.sidebar-collapse .brand-link {\n    height: calc(3.5rem + 1px);\n    transition: width 0.3s ease-in-out;\n    width: 4.6rem;\n  }\n  .text-sm .layout-md-navbar-fixed .wrapper.sidebar-collapse .brand-link, .layout-md-navbar-fixed .wrapper.sidebar-collapse .brand-link.text-sm {\n    height: calc(2.93725rem + 1px);\n  }\n  .layout-md-navbar-fixed .wrapper.sidebar-collapse .main-sidebar:hover .brand-link {\n    transition: width 0.3s ease-in-out;\n    width: 250px;\n  }\n  .layout-md-navbar-fixed .wrapper .brand-link {\n    overflow: hidden;\n    position: fixed;\n    top: 0;\n    transition: width 0.3s ease-in-out;\n    width: 250px;\n    z-index: 1035;\n  }\n  .layout-md-navbar-fixed .wrapper .sidebar-dark-primary .brand-link:not([class*=\"navbar\"]) {\n    background-color: #343a40;\n  }\n  .layout-md-navbar-fixed .wrapper .sidebar-light-primary .brand-link:not([class*=\"navbar\"]) {\n    background-color: #ffffff;\n  }\n  .layout-md-navbar-fixed .wrapper .sidebar-dark-secondary .brand-link:not([class*=\"navbar\"]) {\n    background-color: #343a40;\n  }\n  .layout-md-navbar-fixed .wrapper .sidebar-light-secondary .brand-link:not([class*=\"navbar\"]) {\n    background-color: #ffffff;\n  }\n  .layout-md-navbar-fixed .wrapper .sidebar-dark-success .brand-link:not([class*=\"navbar\"]) {\n    background-color: #343a40;\n  }\n  .layout-md-navbar-fixed .wrapper .sidebar-light-success .brand-link:not([class*=\"navbar\"]) {\n    background-color: #ffffff;\n  }\n  .layout-md-navbar-fixed .wrapper .sidebar-dark-info .brand-link:not([class*=\"navbar\"]) {\n    background-color: #343a40;\n  }\n  .layout-md-navbar-fixed .wrapper .sidebar-light-info .brand-link:not([class*=\"navbar\"]) {\n    background-color: #ffffff;\n  }\n  .layout-md-navbar-fixed .wrapper .sidebar-dark-warning .brand-link:not([class*=\"navbar\"]) {\n    background-color: #343a40;\n  }\n  .layout-md-navbar-fixed .wrapper .sidebar-light-warning .brand-link:not([class*=\"navbar\"]) {\n    background-color: #ffffff;\n  }\n  .layout-md-navbar-fixed .wrapper .sidebar-dark-danger .brand-link:not([class*=\"navbar\"]) {\n    background-color: #343a40;\n  }\n  .layout-md-navbar-fixed .wrapper .sidebar-light-danger .brand-link:not([class*=\"navbar\"]) {\n    background-color: #ffffff;\n  }\n  .layout-md-navbar-fixed .wrapper .sidebar-dark-light .brand-link:not([class*=\"navbar\"]) {\n    background-color: #343a40;\n  }\n  .layout-md-navbar-fixed .wrapper .sidebar-light-light .brand-link:not([class*=\"navbar\"]) {\n    background-color: #ffffff;\n  }\n  .layout-md-navbar-fixed .wrapper .sidebar-dark-dark .brand-link:not([class*=\"navbar\"]) {\n    background-color: #343a40;\n  }\n  .layout-md-navbar-fixed .wrapper .sidebar-light-dark .brand-link:not([class*=\"navbar\"]) {\n    background-color: #ffffff;\n  }\n  .layout-md-navbar-fixed .wrapper .content-wrapper {\n    margin-top: calc(3.5rem + 1px);\n  }\n  .text-sm .layout-md-navbar-fixed .wrapper .main-header ~ .content-wrapper,\n  .layout-md-navbar-fixed .wrapper .main-header.text-sm ~ .content-wrapper {\n    margin-top: calc(2.93725rem + 1px);\n  }\n  .layout-md-navbar-fixed .wrapper .main-header {\n    left: 0;\n    position: fixed;\n    right: 0;\n    top: 0;\n    z-index: 1037;\n  }\n  .layout-md-navbar-fixed.text-sm .wrapper .content-wrapper {\n    margin-top: calc(2.93725rem + 1px);\n  }\n  .layout-md-navbar-not-fixed .wrapper .brand-link {\n    position: static;\n  }\n  .layout-md-navbar-not-fixed .wrapper .sidebar,\n  .layout-md-navbar-not-fixed .wrapper .content-wrapper {\n    margin-top: 0;\n  }\n  .layout-md-navbar-not-fixed .wrapper .main-header {\n    position: static;\n  }\n  .layout-md-navbar-not-fixed.layout-fixed .wrapper .sidebar {\n    margin-top: 0;\n  }\n}\n\n@media (min-width: 992px) {\n  .layout-lg-navbar-fixed.layout-fixed .wrapper .control-sidebar {\n    top: calc(3.5rem + 1px);\n  }\n  .text-sm .layout-lg-navbar-fixed.layout-fixed .wrapper .main-header ~ .control-sidebar,\n  .layout-lg-navbar-fixed.layout-fixed .wrapper .main-header.text-sm ~ .control-sidebar {\n    top: calc(2.93725rem + 1px);\n  }\n  .layout-lg-navbar-fixed.layout-fixed .wrapper .sidebar {\n    margin-top: calc(3.5rem + 1px);\n  }\n  .text-sm .layout-lg-navbar-fixed.layout-fixed .wrapper .brand-link ~ .sidebar,\n  .layout-lg-navbar-fixed.layout-fixed .wrapper .brand-link.text-sm ~ .sidebar {\n    margin-top: calc(2.93725rem + 1px);\n  }\n  .layout-lg-navbar-fixed.layout-fixed.text-sm .wrapper .control-sidebar {\n    top: calc(2.93725rem + 1px);\n  }\n  .layout-lg-navbar-fixed.layout-fixed.text-sm .wrapper .sidebar {\n    margin-top: calc(2.93725rem + 1px);\n  }\n  .layout-lg-navbar-fixed .wrapper .control-sidebar {\n    top: 0;\n  }\n  .layout-lg-navbar-fixed .wrapper a.anchor {\n    display: block;\n    position: relative;\n    top: calc((3.5rem + 1px + (0.5rem * 2)) / -1);\n  }\n  .layout-lg-navbar-fixed .wrapper.sidebar-collapse .brand-link {\n    height: calc(3.5rem + 1px);\n    transition: width 0.3s ease-in-out;\n    width: 4.6rem;\n  }\n  .text-sm .layout-lg-navbar-fixed .wrapper.sidebar-collapse .brand-link, .layout-lg-navbar-fixed .wrapper.sidebar-collapse .brand-link.text-sm {\n    height: calc(2.93725rem + 1px);\n  }\n  .layout-lg-navbar-fixed .wrapper.sidebar-collapse .main-sidebar:hover .brand-link {\n    transition: width 0.3s ease-in-out;\n    width: 250px;\n  }\n  .layout-lg-navbar-fixed .wrapper .brand-link {\n    overflow: hidden;\n    position: fixed;\n    top: 0;\n    transition: width 0.3s ease-in-out;\n    width: 250px;\n    z-index: 1035;\n  }\n  .layout-lg-navbar-fixed .wrapper .sidebar-dark-primary .brand-link:not([class*=\"navbar\"]) {\n    background-color: #343a40;\n  }\n  .layout-lg-navbar-fixed .wrapper .sidebar-light-primary .brand-link:not([class*=\"navbar\"]) {\n    background-color: #ffffff;\n  }\n  .layout-lg-navbar-fixed .wrapper .sidebar-dark-secondary .brand-link:not([class*=\"navbar\"]) {\n    background-color: #343a40;\n  }\n  .layout-lg-navbar-fixed .wrapper .sidebar-light-secondary .brand-link:not([class*=\"navbar\"]) {\n    background-color: #ffffff;\n  }\n  .layout-lg-navbar-fixed .wrapper .sidebar-dark-success .brand-link:not([class*=\"navbar\"]) {\n    background-color: #343a40;\n  }\n  .layout-lg-navbar-fixed .wrapper .sidebar-light-success .brand-link:not([class*=\"navbar\"]) {\n    background-color: #ffffff;\n  }\n  .layout-lg-navbar-fixed .wrapper .sidebar-dark-info .brand-link:not([class*=\"navbar\"]) {\n    background-color: #343a40;\n  }\n  .layout-lg-navbar-fixed .wrapper .sidebar-light-info .brand-link:not([class*=\"navbar\"]) {\n    background-color: #ffffff;\n  }\n  .layout-lg-navbar-fixed .wrapper .sidebar-dark-warning .brand-link:not([class*=\"navbar\"]) {\n    background-color: #343a40;\n  }\n  .layout-lg-navbar-fixed .wrapper .sidebar-light-warning .brand-link:not([class*=\"navbar\"]) {\n    background-color: #ffffff;\n  }\n  .layout-lg-navbar-fixed .wrapper .sidebar-dark-danger .brand-link:not([class*=\"navbar\"]) {\n    background-color: #343a40;\n  }\n  .layout-lg-navbar-fixed .wrapper .sidebar-light-danger .brand-link:not([class*=\"navbar\"]) {\n    background-color: #ffffff;\n  }\n  .layout-lg-navbar-fixed .wrapper .sidebar-dark-light .brand-link:not([class*=\"navbar\"]) {\n    background-color: #343a40;\n  }\n  .layout-lg-navbar-fixed .wrapper .sidebar-light-light .brand-link:not([class*=\"navbar\"]) {\n    background-color: #ffffff;\n  }\n  .layout-lg-navbar-fixed .wrapper .sidebar-dark-dark .brand-link:not([class*=\"navbar\"]) {\n    background-color: #343a40;\n  }\n  .layout-lg-navbar-fixed .wrapper .sidebar-light-dark .brand-link:not([class*=\"navbar\"]) {\n    background-color: #ffffff;\n  }\n  .layout-lg-navbar-fixed .wrapper .content-wrapper {\n    margin-top: calc(3.5rem + 1px);\n  }\n  .text-sm .layout-lg-navbar-fixed .wrapper .main-header ~ .content-wrapper,\n  .layout-lg-navbar-fixed .wrapper .main-header.text-sm ~ .content-wrapper {\n    margin-top: calc(2.93725rem + 1px);\n  }\n  .layout-lg-navbar-fixed .wrapper .main-header {\n    left: 0;\n    position: fixed;\n    right: 0;\n    top: 0;\n    z-index: 1037;\n  }\n  .layout-lg-navbar-fixed.text-sm .wrapper .content-wrapper {\n    margin-top: calc(2.93725rem + 1px);\n  }\n  .layout-lg-navbar-not-fixed .wrapper .brand-link {\n    position: static;\n  }\n  .layout-lg-navbar-not-fixed .wrapper .sidebar,\n  .layout-lg-navbar-not-fixed .wrapper .content-wrapper {\n    margin-top: 0;\n  }\n  .layout-lg-navbar-not-fixed .wrapper .main-header {\n    position: static;\n  }\n  .layout-lg-navbar-not-fixed.layout-fixed .wrapper .sidebar {\n    margin-top: 0;\n  }\n}\n\n@media (min-width: 1200px) {\n  .layout-xl-navbar-fixed.layout-fixed .wrapper .control-sidebar {\n    top: calc(3.5rem + 1px);\n  }\n  .text-sm .layout-xl-navbar-fixed.layout-fixed .wrapper .main-header ~ .control-sidebar,\n  .layout-xl-navbar-fixed.layout-fixed .wrapper .main-header.text-sm ~ .control-sidebar {\n    top: calc(2.93725rem + 1px);\n  }\n  .layout-xl-navbar-fixed.layout-fixed .wrapper .sidebar {\n    margin-top: calc(3.5rem + 1px);\n  }\n  .text-sm .layout-xl-navbar-fixed.layout-fixed .wrapper .brand-link ~ .sidebar,\n  .layout-xl-navbar-fixed.layout-fixed .wrapper .brand-link.text-sm ~ .sidebar {\n    margin-top: calc(2.93725rem + 1px);\n  }\n  .layout-xl-navbar-fixed.layout-fixed.text-sm .wrapper .control-sidebar {\n    top: calc(2.93725rem + 1px);\n  }\n  .layout-xl-navbar-fixed.layout-fixed.text-sm .wrapper .sidebar {\n    margin-top: calc(2.93725rem + 1px);\n  }\n  .layout-xl-navbar-fixed .wrapper .control-sidebar {\n    top: 0;\n  }\n  .layout-xl-navbar-fixed .wrapper a.anchor {\n    display: block;\n    position: relative;\n    top: calc((3.5rem + 1px + (0.5rem * 2)) / -1);\n  }\n  .layout-xl-navbar-fixed .wrapper.sidebar-collapse .brand-link {\n    height: calc(3.5rem + 1px);\n    transition: width 0.3s ease-in-out;\n    width: 4.6rem;\n  }\n  .text-sm .layout-xl-navbar-fixed .wrapper.sidebar-collapse .brand-link, .layout-xl-navbar-fixed .wrapper.sidebar-collapse .brand-link.text-sm {\n    height: calc(2.93725rem + 1px);\n  }\n  .layout-xl-navbar-fixed .wrapper.sidebar-collapse .main-sidebar:hover .brand-link {\n    transition: width 0.3s ease-in-out;\n    width: 250px;\n  }\n  .layout-xl-navbar-fixed .wrapper .brand-link {\n    overflow: hidden;\n    position: fixed;\n    top: 0;\n    transition: width 0.3s ease-in-out;\n    width: 250px;\n    z-index: 1035;\n  }\n  .layout-xl-navbar-fixed .wrapper .sidebar-dark-primary .brand-link:not([class*=\"navbar\"]) {\n    background-color: #343a40;\n  }\n  .layout-xl-navbar-fixed .wrapper .sidebar-light-primary .brand-link:not([class*=\"navbar\"]) {\n    background-color: #ffffff;\n  }\n  .layout-xl-navbar-fixed .wrapper .sidebar-dark-secondary .brand-link:not([class*=\"navbar\"]) {\n    background-color: #343a40;\n  }\n  .layout-xl-navbar-fixed .wrapper .sidebar-light-secondary .brand-link:not([class*=\"navbar\"]) {\n    background-color: #ffffff;\n  }\n  .layout-xl-navbar-fixed .wrapper .sidebar-dark-success .brand-link:not([class*=\"navbar\"]) {\n    background-color: #343a40;\n  }\n  .layout-xl-navbar-fixed .wrapper .sidebar-light-success .brand-link:not([class*=\"navbar\"]) {\n    background-color: #ffffff;\n  }\n  .layout-xl-navbar-fixed .wrapper .sidebar-dark-info .brand-link:not([class*=\"navbar\"]) {\n    background-color: #343a40;\n  }\n  .layout-xl-navbar-fixed .wrapper .sidebar-light-info .brand-link:not([class*=\"navbar\"]) {\n    background-color: #ffffff;\n  }\n  .layout-xl-navbar-fixed .wrapper .sidebar-dark-warning .brand-link:not([class*=\"navbar\"]) {\n    background-color: #343a40;\n  }\n  .layout-xl-navbar-fixed .wrapper .sidebar-light-warning .brand-link:not([class*=\"navbar\"]) {\n    background-color: #ffffff;\n  }\n  .layout-xl-navbar-fixed .wrapper .sidebar-dark-danger .brand-link:not([class*=\"navbar\"]) {\n    background-color: #343a40;\n  }\n  .layout-xl-navbar-fixed .wrapper .sidebar-light-danger .brand-link:not([class*=\"navbar\"]) {\n    background-color: #ffffff;\n  }\n  .layout-xl-navbar-fixed .wrapper .sidebar-dark-light .brand-link:not([class*=\"navbar\"]) {\n    background-color: #343a40;\n  }\n  .layout-xl-navbar-fixed .wrapper .sidebar-light-light .brand-link:not([class*=\"navbar\"]) {\n    background-color: #ffffff;\n  }\n  .layout-xl-navbar-fixed .wrapper .sidebar-dark-dark .brand-link:not([class*=\"navbar\"]) {\n    background-color: #343a40;\n  }\n  .layout-xl-navbar-fixed .wrapper .sidebar-light-dark .brand-link:not([class*=\"navbar\"]) {\n    background-color: #ffffff;\n  }\n  .layout-xl-navbar-fixed .wrapper .content-wrapper {\n    margin-top: calc(3.5rem + 1px);\n  }\n  .text-sm .layout-xl-navbar-fixed .wrapper .main-header ~ .content-wrapper,\n  .layout-xl-navbar-fixed .wrapper .main-header.text-sm ~ .content-wrapper {\n    margin-top: calc(2.93725rem + 1px);\n  }\n  .layout-xl-navbar-fixed .wrapper .main-header {\n    left: 0;\n    position: fixed;\n    right: 0;\n    top: 0;\n    z-index: 1037;\n  }\n  .layout-xl-navbar-fixed.text-sm .wrapper .content-wrapper {\n    margin-top: calc(2.93725rem + 1px);\n  }\n  .layout-xl-navbar-not-fixed .wrapper .brand-link {\n    position: static;\n  }\n  .layout-xl-navbar-not-fixed .wrapper .sidebar,\n  .layout-xl-navbar-not-fixed .wrapper .content-wrapper {\n    margin-top: 0;\n  }\n  .layout-xl-navbar-not-fixed .wrapper .main-header {\n    position: static;\n  }\n  .layout-xl-navbar-not-fixed.layout-fixed .wrapper .sidebar {\n    margin-top: 0;\n  }\n}\n\n.layout-footer-fixed .wrapper .control-sidebar {\n  bottom: 0;\n}\n\n.layout-footer-fixed .wrapper .main-footer {\n  bottom: 0;\n  left: 0;\n  position: fixed;\n  right: 0;\n  z-index: 1032;\n}\n\n.layout-footer-not-fixed .wrapper .main-footer {\n  position: static;\n}\n\n.layout-footer-not-fixed .wrapper .content-wrapper {\n  margin-bottom: 0;\n}\n\n.layout-footer-fixed .wrapper .control-sidebar {\n  bottom: 0;\n}\n\n.layout-footer-fixed .wrapper .main-footer {\n  bottom: 0;\n  left: 0;\n  position: fixed;\n  right: 0;\n  z-index: 1032;\n}\n\n.layout-footer-fixed .wrapper .content-wrapper {\n  margin-bottom: calc(3.5rem + 1px);\n}\n\n.layout-footer-not-fixed .wrapper .main-footer {\n  position: static;\n}\n\n@media (min-width: 576px) {\n  .layout-sm-footer-fixed .wrapper .control-sidebar {\n    bottom: 0;\n  }\n  .layout-sm-footer-fixed .wrapper .main-footer {\n    bottom: 0;\n    left: 0;\n    position: fixed;\n    right: 0;\n    z-index: 1032;\n  }\n  .layout-sm-footer-fixed .wrapper .content-wrapper {\n    margin-bottom: calc(3.5rem + 1px);\n  }\n  .layout-sm-footer-not-fixed .wrapper .main-footer {\n    position: static;\n  }\n}\n\n@media (min-width: 768px) {\n  .layout-md-footer-fixed .wrapper .control-sidebar {\n    bottom: 0;\n  }\n  .layout-md-footer-fixed .wrapper .main-footer {\n    bottom: 0;\n    left: 0;\n    position: fixed;\n    right: 0;\n    z-index: 1032;\n  }\n  .layout-md-footer-fixed .wrapper .content-wrapper {\n    margin-bottom: calc(3.5rem + 1px);\n  }\n  .layout-md-footer-not-fixed .wrapper .main-footer {\n    position: static;\n  }\n}\n\n@media (min-width: 992px) {\n  .layout-lg-footer-fixed .wrapper .control-sidebar {\n    bottom: 0;\n  }\n  .layout-lg-footer-fixed .wrapper .main-footer {\n    bottom: 0;\n    left: 0;\n    position: fixed;\n    right: 0;\n    z-index: 1032;\n  }\n  .layout-lg-footer-fixed .wrapper .content-wrapper {\n    margin-bottom: calc(3.5rem + 1px);\n  }\n  .layout-lg-footer-not-fixed .wrapper .main-footer {\n    position: static;\n  }\n}\n\n@media (min-width: 1200px) {\n  .layout-xl-footer-fixed .wrapper .control-sidebar {\n    bottom: 0;\n  }\n  .layout-xl-footer-fixed .wrapper .main-footer {\n    bottom: 0;\n    left: 0;\n    position: fixed;\n    right: 0;\n    z-index: 1032;\n  }\n  .layout-xl-footer-fixed .wrapper .content-wrapper {\n    margin-bottom: calc(3.5rem + 1px);\n  }\n  .layout-xl-footer-not-fixed .wrapper .main-footer {\n    position: static;\n  }\n}\n\n.layout-top-nav .wrapper {\n  margin-left: 0;\n}\n\n.layout-top-nav .wrapper .text-sm .brand-image {\n  margin-top: -.5rem;\n}\n\n.layout-top-nav .wrapper .main-sidebar {\n  bottom: inherit;\n  height: inherit;\n}\n\n.layout-top-nav .wrapper .brand-image {\n  height: 33px;\n}\n\n.layout-top-nav .wrapper .main-sidebar {\n  display: none;\n}\n\n.layout-top-nav .wrapper .content-wrapper,\n.layout-top-nav .wrapper .main-header,\n.layout-top-nav .wrapper .main-footer {\n  margin-left: 0;\n}\n\n@media (min-width: 768px) {\n  body:not(.sidebar-mini-md) .content-wrapper,\n  body:not(.sidebar-mini-md) .main-footer,\n  body:not(.sidebar-mini-md) .main-header {\n    transition: margin-left 0.3s ease-in-out;\n    margin-left: 250px;\n  }\n}\n\n@media (min-width: 768px) and (prefers-reduced-motion: reduce) {\n  body:not(.sidebar-mini-md) .content-wrapper,\n  body:not(.sidebar-mini-md) .main-footer,\n  body:not(.sidebar-mini-md) .main-header {\n    transition: none;\n  }\n}\n\n@media (min-width: 768px) {\n  .sidebar-collapse body:not(.sidebar-mini-md) .content-wrapper, .sidebar-collapse\n  body:not(.sidebar-mini-md) .main-footer, .sidebar-collapse\n  body:not(.sidebar-mini-md) .main-header {\n    margin-left: 0;\n  }\n}\n\n@media (max-width: 991.98px) {\n  body:not(.sidebar-mini-md) .content-wrapper, body:not(.sidebar-mini-md) .content-wrapper::before,\n  body:not(.sidebar-mini-md) .main-footer,\n  body:not(.sidebar-mini-md) .main-footer::before,\n  body:not(.sidebar-mini-md) .main-header,\n  body:not(.sidebar-mini-md) .main-header::before {\n    margin-left: 0;\n  }\n}\n\n@media (min-width: 768px) {\n  .sidebar-mini-md .content-wrapper,\n  .sidebar-mini-md .main-footer,\n  .sidebar-mini-md .main-header {\n    transition: margin-left 0.3s ease-in-out;\n    margin-left: 250px;\n  }\n}\n\n@media (min-width: 768px) and (prefers-reduced-motion: reduce) {\n  .sidebar-mini-md .content-wrapper,\n  .sidebar-mini-md .main-footer,\n  .sidebar-mini-md .main-header {\n    transition: none;\n  }\n}\n\n@media (min-width: 768px) {\n  .sidebar-collapse .sidebar-mini-md .content-wrapper, .sidebar-collapse\n  .sidebar-mini-md .main-footer, .sidebar-collapse\n  .sidebar-mini-md .main-header {\n    margin-left: 4.6rem;\n  }\n}\n\n@media (max-width: 991.98px) {\n  .sidebar-mini-md .content-wrapper, .sidebar-mini-md .content-wrapper::before,\n  .sidebar-mini-md .main-footer,\n  .sidebar-mini-md .main-footer::before,\n  .sidebar-mini-md .main-header,\n  .sidebar-mini-md .main-header::before {\n    margin-left: 4.6rem;\n  }\n}\n\n.content-wrapper {\n  background: #f4f6f9;\n}\n\n.content-wrapper > .content {\n  padding: 0 0.5rem;\n}\n\n.main-sidebar, .main-sidebar::before {\n  transition: margin-left 0.3s ease-in-out, width 0.3s ease-in-out;\n  width: 250px;\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .main-sidebar, .main-sidebar::before {\n    transition: none;\n  }\n}\n\n.sidebar-collapse .main-sidebar, .sidebar-collapse .main-sidebar::before {\n  margin-left: -250px;\n}\n\n.sidebar-collapse .main-sidebar .nav-sidebar.nav-child-indent .nav-treeview {\n  padding: 0;\n}\n\n@media (max-width: 767.98px) {\n  .main-sidebar, .main-sidebar::before {\n    box-shadow: none !important;\n    margin-left: -250px;\n  }\n  .sidebar-open .main-sidebar, .sidebar-open .main-sidebar::before {\n    margin-left: 0;\n  }\n}\n\n:not(.layout-fixed) .main-sidebar {\n  height: inherit;\n  min-height: 100%;\n  position: absolute;\n  top: 0;\n}\n\n.layout-fixed .brand-link {\n  width: 250px;\n}\n\n.layout-fixed .main-sidebar {\n  bottom: 0;\n  float: none;\n  height: 100vh;\n  left: 0;\n  position: fixed;\n  top: 0;\n}\n\n.layout-fixed .control-sidebar {\n  bottom: 0;\n  float: none;\n  height: 100vh;\n  position: fixed;\n  top: 0;\n}\n\n.layout-fixed .control-sidebar .control-sidebar-content {\n  height: calc(100vh - calc(3.5rem + 1px));\n}\n\n.main-footer {\n  background: #ffffff;\n  border-top: 1px solid #dee2e6;\n  color: #869099;\n  padding: 1rem;\n}\n\n.text-sm .main-footer, .main-footer.text-sm {\n  padding: 0.812rem;\n}\n\n.content-header {\n  padding: 15px 0.5rem;\n}\n\n.text-sm .content-header {\n  padding: 10px 0.5rem;\n}\n\n.content-header h1 {\n  font-size: 1.8rem;\n  margin: 0;\n}\n\n.text-sm .content-header h1 {\n  font-size: 1.5rem;\n}\n\n.content-header .breadcrumb {\n  background: transparent;\n  line-height: 1.8rem;\n  margin-bottom: 0;\n  padding: 0;\n}\n\n.text-sm .content-header .breadcrumb {\n  line-height: 1.5rem;\n}\n\n.hold-transition .content-wrapper,\n.hold-transition .main-header,\n.hold-transition .main-sidebar,\n.hold-transition .main-sidebar *,\n.hold-transition .control-sidebar,\n.hold-transition .control-sidebar *,\n.hold-transition .main-footer {\n  transition: none !important;\n}\n\n.main-header {\n  border-bottom: 1px solid #dee2e6;\n  z-index: 1034;\n}\n\n.main-header .nav-link {\n  height: 2.5rem;\n  position: relative;\n}\n\n.text-sm .main-header .nav-link, .main-header.text-sm .nav-link {\n  height: 1.93725rem;\n  padding: 0.35rem 1rem;\n}\n\n.text-sm .main-header .nav-link > .fa,\n.text-sm .main-header .nav-link > .fas,\n.text-sm .main-header .nav-link > .far,\n.text-sm .main-header .nav-link > .fab,\n.text-sm .main-header .nav-link > .glyphicon,\n.text-sm .main-header .nav-link > .ion, .main-header.text-sm .nav-link > .fa,\n.main-header.text-sm .nav-link > .fas,\n.main-header.text-sm .nav-link > .far,\n.main-header.text-sm .nav-link > .fab,\n.main-header.text-sm .nav-link > .glyphicon,\n.main-header.text-sm .nav-link > .ion {\n  font-size: 0.875rem;\n}\n\n.main-header .navbar-nav .nav-item {\n  margin: 0;\n}\n\n.main-header .navbar-nav[class*='-right'] .dropdown-menu {\n  left: auto;\n  margin-top: -3px;\n  right: 0;\n}\n\n@media (max-width: 575.98px) {\n  .main-header .navbar-nav[class*='-right'] .dropdown-menu {\n    left: 0;\n    right: auto;\n  }\n}\n\n.navbar-img {\n  height: calc(3.5rem + 1px)/2;\n  width: auto;\n}\n\n.navbar-badge {\n  font-size: .6rem;\n  font-weight: 300;\n  padding: 2px 4px;\n  position: absolute;\n  right: 5px;\n  top: 9px;\n}\n\n.btn-navbar {\n  background-color: transparent;\n  border-left-width: 0;\n}\n\n.form-control-navbar {\n  border-right-width: 0;\n}\n\n.form-control-navbar + .input-group-append {\n  margin-left: 0;\n}\n\n.form-control-navbar,\n.btn-navbar {\n  transition: none;\n}\n\n.navbar-dark .form-control-navbar,\n.navbar-dark .btn-navbar {\n  background-color: rgba(255, 255, 255, 0.2);\n  border: 0;\n}\n\n.navbar-dark .form-control-navbar::-webkit-input-placeholder {\n  color: rgba(255, 255, 255, 0.6);\n}\n\n.navbar-dark .form-control-navbar::-moz-placeholder {\n  color: rgba(255, 255, 255, 0.6);\n}\n\n.navbar-dark .form-control-navbar:-ms-input-placeholder {\n  color: rgba(255, 255, 255, 0.6);\n}\n\n.navbar-dark .form-control-navbar::-ms-input-placeholder {\n  color: rgba(255, 255, 255, 0.6);\n}\n\n.navbar-dark .form-control-navbar::placeholder {\n  color: rgba(255, 255, 255, 0.6);\n}\n\n.navbar-dark .form-control-navbar + .input-group-append > .btn-navbar {\n  color: rgba(255, 255, 255, 0.6);\n}\n\n.navbar-dark .form-control-navbar:focus,\n.navbar-dark .form-control-navbar:focus + .input-group-append .btn-navbar {\n  background-color: rgba(255, 255, 255, 0.6);\n  border: 0 !important;\n  color: #343a40;\n}\n\n.navbar-light .form-control-navbar,\n.navbar-light .btn-navbar {\n  background-color: #f2f4f6;\n  border: 0;\n}\n\n.navbar-light .form-control-navbar::-webkit-input-placeholder {\n  color: rgba(0, 0, 0, 0.6);\n}\n\n.navbar-light .form-control-navbar::-moz-placeholder {\n  color: rgba(0, 0, 0, 0.6);\n}\n\n.navbar-light .form-control-navbar:-ms-input-placeholder {\n  color: rgba(0, 0, 0, 0.6);\n}\n\n.navbar-light .form-control-navbar::-ms-input-placeholder {\n  color: rgba(0, 0, 0, 0.6);\n}\n\n.navbar-light .form-control-navbar::placeholder {\n  color: rgba(0, 0, 0, 0.6);\n}\n\n.navbar-light .form-control-navbar + .input-group-append > .btn-navbar {\n  color: rgba(0, 0, 0, 0.6);\n}\n\n.navbar-light .form-control-navbar:focus,\n.navbar-light .form-control-navbar:focus + .input-group-append .btn-navbar {\n  background-color: #e9ecef;\n  border: 0 !important;\n  color: #343a40;\n}\n\n.brand-link {\n  display: block;\n  font-size: 1.25rem;\n  line-height: 1.5;\n  padding: 0.8125rem 0.5rem;\n  transition: width 0.3s ease-in-out;\n  white-space: nowrap;\n}\n\n.brand-link:hover {\n  color: #ffffff;\n  text-decoration: none;\n}\n\n.text-sm .brand-link {\n  font-size: inherit;\n}\n\n[class*='sidebar-dark'] .brand-link {\n  border-bottom: 1px solid #4b545c;\n  color: rgba(255, 255, 255, 0.8);\n}\n\n[class*='sidebar-light'] .brand-link {\n  border-bottom: 1px solid #dee2e6;\n  color: rgba(0, 0, 0, 0.8);\n}\n\n.brand-link .brand-image {\n  float: left;\n  line-height: .8;\n  margin-left: .8rem;\n  margin-right: .5rem;\n  margin-top: -3px;\n  max-height: 33px;\n  width: auto;\n}\n\n.brand-link .brand-image-xs {\n  float: left;\n  line-height: .8;\n  margin-top: -.1rem;\n  max-height: 33px;\n  width: auto;\n}\n\n.brand-link .brand-image-xl {\n  line-height: .8;\n  max-height: 40px;\n  width: auto;\n}\n\n.brand-link.text-sm .brand-image,\n.text-sm .brand-link .brand-image {\n  height: 29px;\n  margin-bottom: -.25rem;\n  margin-left: .95rem;\n  margin-top: -.25rem;\n}\n\n.brand-link.text-sm .brand-image-xs,\n.text-sm .brand-link .brand-image-xs {\n  margin-top: -.2rem;\n  max-height: 29px;\n}\n\n.brand-link.text-sm .brand-image-xl,\n.text-sm .brand-link .brand-image-xl {\n  margin-top: -.225rem;\n  max-height: 38px;\n}\n\n.main-sidebar {\n  height: 100vh;\n  overflow-y: hidden;\n  z-index: 1038;\n}\n\n.sidebar {\n  height: calc(100% - 4rem);\n  overflow-y: auto;\n  padding-bottom: 0;\n  padding-left: 0.5rem;\n  padding-right: 0.5rem;\n  padding-top: 0;\n}\n\n.user-panel {\n  position: relative;\n}\n\n[class*='sidebar-dark'] .user-panel {\n  border-bottom: 1px solid #4f5962;\n}\n\n[class*='sidebar-light'] .user-panel {\n  border-bottom: 1px solid #dee2e6;\n}\n\n.user-panel,\n.user-panel .info {\n  overflow: hidden;\n  white-space: nowrap;\n}\n\n.user-panel .image {\n  display: inline-block;\n  padding-left: 0.8rem;\n}\n\n.user-panel img {\n  height: auto;\n  width: 2.1rem;\n}\n\n.user-panel .info {\n  display: inline-block;\n  padding: 5px 5px 5px 10px;\n}\n\n.user-panel .status,\n.user-panel .dropdown-menu {\n  font-size: 0.875rem;\n}\n\n.nav-sidebar .nav-item > .nav-link {\n  margin-bottom: .2rem;\n}\n\n.nav-sidebar .nav-item > .nav-link .right {\n  transition: -webkit-transform ease-in-out 0.3s;\n  transition: transform ease-in-out 0.3s;\n  transition: transform ease-in-out 0.3s, -webkit-transform ease-in-out 0.3s;\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .nav-sidebar .nav-item > .nav-link .right {\n    transition: none;\n  }\n}\n\n.nav-sidebar .nav-link > .right,\n.nav-sidebar .nav-link > p > .right {\n  position: absolute;\n  right: 1rem;\n  top: .7rem;\n}\n\n.nav-sidebar .nav-link > .right i,\n.nav-sidebar .nav-link > .right span,\n.nav-sidebar .nav-link > p > .right i,\n.nav-sidebar .nav-link > p > .right span {\n  margin-left: .5rem;\n}\n\n.nav-sidebar .nav-link > .right:nth-child(2),\n.nav-sidebar .nav-link > p > .right:nth-child(2) {\n  right: 2.2rem;\n}\n\n.nav-sidebar .menu-open > .nav-treeview {\n  display: block;\n}\n\n.nav-sidebar .menu-open > .nav-link i.right {\n  -webkit-transform: rotate(-90deg);\n  transform: rotate(-90deg);\n}\n\n.nav-sidebar > .nav-item {\n  margin-bottom: 0;\n}\n\n.nav-sidebar > .nav-item .nav-icon {\n  font-size: 1.2rem;\n  margin-right: .2rem;\n  text-align: center;\n  width: 1.6rem;\n}\n\n.nav-sidebar > .nav-item .nav-icon.fa, .nav-sidebar > .nav-item .nav-icon.fas, .nav-sidebar > .nav-item .nav-icon.far, .nav-sidebar > .nav-item .nav-icon.fab, .nav-sidebar > .nav-item .nav-icon.glyphicon, .nav-sidebar > .nav-item .nav-icon.ion {\n  font-size: 1.1rem;\n}\n\n.nav-sidebar > .nav-item .float-right {\n  margin-top: 3px;\n}\n\n.nav-sidebar .nav-treeview {\n  display: none;\n  list-style: none;\n  padding: 0;\n}\n\n.nav-sidebar .nav-treeview > .nav-item > .nav-link > .nav-icon {\n  width: 1.6rem;\n}\n\n.nav-sidebar.nav-child-indent .nav-treeview {\n  transition: padding 0.3s ease-in-out;\n  padding-left: 1rem;\n}\n\n.nav-sidebar .nav-header {\n  font-size: .9rem;\n  padding: 0.5rem;\n}\n\n.nav-sidebar .nav-header:not(:first-of-type) {\n  padding: 1.7rem 1rem .5rem;\n}\n\n.nav-sidebar .nav-link p {\n  display: inline-block;\n  margin: 0;\n}\n\n#sidebar-overlay {\n  background-color: rgba(0, 0, 0, 0.1);\n  bottom: 0;\n  display: none;\n  left: 0;\n  position: fixed;\n  right: 0;\n  top: 0;\n  z-index: 1037;\n}\n\n@media (max-width: 991.98px) {\n  .sidebar-open #sidebar-overlay {\n    display: block;\n  }\n}\n\n[class*='sidebar-light-'] {\n  background-color: #ffffff;\n}\n\n[class*='sidebar-light-'] .user-panel a:hover {\n  color: #212529;\n}\n\n[class*='sidebar-light-'] .user-panel .status {\n  background: rgba(0, 0, 0, 0.1);\n  color: #343a40;\n}\n\n[class*='sidebar-light-'] .user-panel .status:hover, [class*='sidebar-light-'] .user-panel .status:focus, [class*='sidebar-light-'] .user-panel .status:active {\n  background: rgba(0, 0, 0, 0.1);\n  color: #212529;\n}\n\n[class*='sidebar-light-'] .user-panel .dropdown-menu {\n  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.4);\n  border-color: rgba(0, 0, 0, 0.1);\n}\n\n[class*='sidebar-light-'] .user-panel .dropdown-item {\n  color: #212529;\n}\n\n[class*='sidebar-light-'] .nav-sidebar > .nav-item > .nav-link:active, [class*='sidebar-light-'] .nav-sidebar > .nav-item > .nav-link:focus {\n  color: #343a40;\n}\n\n[class*='sidebar-light-'] .nav-sidebar > .nav-item.menu-open > .nav-link,\n[class*='sidebar-light-'] .nav-sidebar > .nav-item:hover > .nav-link {\n  background-color: rgba(0, 0, 0, 0.1);\n  color: #212529;\n}\n\n[class*='sidebar-light-'] .nav-sidebar > .nav-item > .nav-link.active {\n  color: #000;\n  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24);\n}\n\n[class*='sidebar-light-'] .nav-sidebar > .nav-item > .nav-treeview {\n  background: transparent;\n}\n\n[class*='sidebar-light-'] .nav-header {\n  background: inherit;\n  color: #292d32;\n}\n\n[class*='sidebar-light-'] .sidebar a {\n  color: #343a40;\n}\n\n[class*='sidebar-light-'] .sidebar a:hover {\n  text-decoration: none;\n}\n\n[class*='sidebar-light-'] .nav-treeview > .nav-item > .nav-link {\n  color: #777;\n}\n\n[class*='sidebar-light-'] .nav-treeview > .nav-item > .nav-link.active, [class*='sidebar-light-'] .nav-treeview > .nav-item > .nav-link.active:hover {\n  background-color: rgba(0, 0, 0, 0.1);\n  color: #212529;\n}\n\n[class*='sidebar-light-'] .nav-treeview > .nav-item > .nav-link:hover {\n  background-color: rgba(0, 0, 0, 0.1);\n}\n\n[class*='sidebar-light-'] .nav-flat .nav-item .nav-treeview .nav-treeview  {\n  border-color: rgba(0, 0, 0, 0.1);\n}\n\n[class*='sidebar-light-'] .nav-flat .nav-item .nav-treeview > .nav-item > .nav-link, [class*='sidebar-light-'] .nav-flat .nav-item .nav-treeview > .nav-item > .nav-link.active {\n  border-color: rgba(0, 0, 0, 0.1);\n}\n\n[class*='sidebar-dark-'] {\n  background-color: #343a40;\n}\n\n[class*='sidebar-dark-'] .user-panel a:hover {\n  color: #ffffff;\n}\n\n[class*='sidebar-dark-'] .user-panel .status {\n  background: rgba(255, 255, 255, 0.1);\n  color: #C2C7D0;\n}\n\n[class*='sidebar-dark-'] .user-panel .status:hover, [class*='sidebar-dark-'] .user-panel .status:focus, [class*='sidebar-dark-'] .user-panel .status:active {\n  background: rgba(247, 247, 247, 0.1);\n  color: #ffffff;\n}\n\n[class*='sidebar-dark-'] .user-panel .dropdown-menu {\n  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.4);\n  border-color: rgba(242, 242, 242, 0.1);\n}\n\n[class*='sidebar-dark-'] .user-panel .dropdown-item {\n  color: #212529;\n}\n\n[class*='sidebar-dark-'] .nav-sidebar > .nav-item > .nav-link:active {\n  color: #C2C7D0;\n}\n\n[class*='sidebar-dark-'] .nav-sidebar > .nav-item.menu-open > .nav-link,\n[class*='sidebar-dark-'] .nav-sidebar > .nav-item:hover > .nav-link,\n[class*='sidebar-dark-'] .nav-sidebar > .nav-item > .nav-link:focus {\n  background-color: rgba(255, 255, 255, 0.1);\n  color: #ffffff;\n}\n\n[class*='sidebar-dark-'] .nav-sidebar > .nav-item > .nav-link.active {\n  color: #ffffff;\n  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24);\n}\n\n[class*='sidebar-dark-'] .nav-sidebar > .nav-item > .nav-treeview {\n  background: transparent;\n}\n\n[class*='sidebar-dark-'] .nav-header {\n  background: inherit;\n  color: #d0d4db;\n}\n\n[class*='sidebar-dark-'] .sidebar a {\n  color: #C2C7D0;\n}\n\n[class*='sidebar-dark-'] .sidebar a:hover, [class*='sidebar-dark-'] .sidebar a:focus {\n  text-decoration: none;\n}\n\n[class*='sidebar-dark-'] .nav-treeview > .nav-item > .nav-link {\n  color: #C2C7D0;\n}\n\n[class*='sidebar-dark-'] .nav-treeview > .nav-item > .nav-link:hover, [class*='sidebar-dark-'] .nav-treeview > .nav-item > .nav-link:focus {\n  background-color: rgba(255, 255, 255, 0.1);\n  color: #ffffff;\n}\n\n[class*='sidebar-dark-'] .nav-treeview > .nav-item > .nav-link.active, [class*='sidebar-dark-'] .nav-treeview > .nav-item > .nav-link.active:hover, [class*='sidebar-dark-'] .nav-treeview > .nav-item > .nav-link.active:focus {\n  background-color: rgba(255, 255, 255, 0.9);\n  color: #343a40;\n}\n\n[class*='sidebar-dark-'] .nav-flat .nav-item .nav-treeview .nav-treeview  {\n  border-color: rgba(255, 255, 255, 0.9);\n}\n\n[class*='sidebar-dark-'] .nav-flat .nav-item .nav-treeview > .nav-item > .nav-link, [class*='sidebar-dark-'] .nav-flat .nav-item .nav-treeview > .nav-item > .nav-link.active {\n  border-color: rgba(255, 255, 255, 0.9);\n}\n\n.sidebar-dark-primary .nav-sidebar > .nav-item > .nav-link.active,\n.sidebar-light-primary .nav-sidebar > .nav-item > .nav-link.active {\n  background-color: #007bff;\n  color: #ffffff;\n}\n\n.sidebar-dark-primary .nav-sidebar.nav-legacy > .nav-item > .nav-link.active,\n.sidebar-light-primary .nav-sidebar.nav-legacy > .nav-item > .nav-link.active {\n  border-color: #007bff;\n}\n\n.sidebar-dark-secondary .nav-sidebar > .nav-item > .nav-link.active,\n.sidebar-light-secondary .nav-sidebar > .nav-item > .nav-link.active {\n  background-color: #6c757d;\n  color: #ffffff;\n}\n\n.sidebar-dark-secondary .nav-sidebar.nav-legacy > .nav-item > .nav-link.active,\n.sidebar-light-secondary .nav-sidebar.nav-legacy > .nav-item > .nav-link.active {\n  border-color: #6c757d;\n}\n\n.sidebar-dark-success .nav-sidebar > .nav-item > .nav-link.active,\n.sidebar-light-success .nav-sidebar > .nav-item > .nav-link.active {\n  background-color: #28a745;\n  color: #ffffff;\n}\n\n.sidebar-dark-success .nav-sidebar.nav-legacy > .nav-item > .nav-link.active,\n.sidebar-light-success .nav-sidebar.nav-legacy > .nav-item > .nav-link.active {\n  border-color: #28a745;\n}\n\n.sidebar-dark-info .nav-sidebar > .nav-item > .nav-link.active,\n.sidebar-light-info .nav-sidebar > .nav-item > .nav-link.active {\n  background-color: #17a2b8;\n  color: #ffffff;\n}\n\n.sidebar-dark-info .nav-sidebar.nav-legacy > .nav-item > .nav-link.active,\n.sidebar-light-info .nav-sidebar.nav-legacy > .nav-item > .nav-link.active {\n  border-color: #17a2b8;\n}\n\n.sidebar-dark-warning .nav-sidebar > .nav-item > .nav-link.active,\n.sidebar-light-warning .nav-sidebar > .nav-item > .nav-link.active {\n  background-color: #ffc107;\n  color: #1F2D3D;\n}\n\n.sidebar-dark-warning .nav-sidebar.nav-legacy > .nav-item > .nav-link.active,\n.sidebar-light-warning .nav-sidebar.nav-legacy > .nav-item > .nav-link.active {\n  border-color: #ffc107;\n}\n\n.sidebar-dark-danger .nav-sidebar > .nav-item > .nav-link.active,\n.sidebar-light-danger .nav-sidebar > .nav-item > .nav-link.active {\n  background-color: #dc3545;\n  color: #ffffff;\n}\n\n.sidebar-dark-danger .nav-sidebar.nav-legacy > .nav-item > .nav-link.active,\n.sidebar-light-danger .nav-sidebar.nav-legacy > .nav-item > .nav-link.active {\n  border-color: #dc3545;\n}\n\n.sidebar-dark-light .nav-sidebar > .nav-item > .nav-link.active,\n.sidebar-light-light .nav-sidebar > .nav-item > .nav-link.active {\n  background-color: #f8f9fa;\n  color: #1F2D3D;\n}\n\n.sidebar-dark-light .nav-sidebar.nav-legacy > .nav-item > .nav-link.active,\n.sidebar-light-light .nav-sidebar.nav-legacy > .nav-item > .nav-link.active {\n  border-color: #f8f9fa;\n}\n\n.sidebar-dark-dark .nav-sidebar > .nav-item > .nav-link.active,\n.sidebar-light-dark .nav-sidebar > .nav-item > .nav-link.active {\n  background-color: #343a40;\n  color: #ffffff;\n}\n\n.sidebar-dark-dark .nav-sidebar.nav-legacy > .nav-item > .nav-link.active,\n.sidebar-light-dark .nav-sidebar.nav-legacy > .nav-item > .nav-link.active {\n  border-color: #343a40;\n}\n\n.sidebar-dark-navy .nav-sidebar > .nav-item > .nav-link.active,\n.sidebar-light-navy .nav-sidebar > .nav-item > .nav-link.active {\n  background-color: #001f3f;\n  color: #ffffff;\n}\n\n.sidebar-dark-navy .nav-sidebar.nav-legacy > .nav-item > .nav-link.active,\n.sidebar-light-navy .nav-sidebar.nav-legacy > .nav-item > .nav-link.active {\n  border-color: #001f3f;\n}\n\n.sidebar-dark-olive .nav-sidebar > .nav-item > .nav-link.active,\n.sidebar-light-olive .nav-sidebar > .nav-item > .nav-link.active {\n  background-color: #3d9970;\n  color: #ffffff;\n}\n\n.sidebar-dark-olive .nav-sidebar.nav-legacy > .nav-item > .nav-link.active,\n.sidebar-light-olive .nav-sidebar.nav-legacy > .nav-item > .nav-link.active {\n  border-color: #3d9970;\n}\n\n.sidebar-dark-lime .nav-sidebar > .nav-item > .nav-link.active,\n.sidebar-light-lime .nav-sidebar > .nav-item > .nav-link.active {\n  background-color: #01ff70;\n  color: #1F2D3D;\n}\n\n.sidebar-dark-lime .nav-sidebar.nav-legacy > .nav-item > .nav-link.active,\n.sidebar-light-lime .nav-sidebar.nav-legacy > .nav-item > .nav-link.active {\n  border-color: #01ff70;\n}\n\n.sidebar-dark-fuchsia .nav-sidebar > .nav-item > .nav-link.active,\n.sidebar-light-fuchsia .nav-sidebar > .nav-item > .nav-link.active {\n  background-color: #f012be;\n  color: #ffffff;\n}\n\n.sidebar-dark-fuchsia .nav-sidebar.nav-legacy > .nav-item > .nav-link.active,\n.sidebar-light-fuchsia .nav-sidebar.nav-legacy > .nav-item > .nav-link.active {\n  border-color: #f012be;\n}\n\n.sidebar-dark-maroon .nav-sidebar > .nav-item > .nav-link.active,\n.sidebar-light-maroon .nav-sidebar > .nav-item > .nav-link.active {\n  background-color: #d81b60;\n  color: #ffffff;\n}\n\n.sidebar-dark-maroon .nav-sidebar.nav-legacy > .nav-item > .nav-link.active,\n.sidebar-light-maroon .nav-sidebar.nav-legacy > .nav-item > .nav-link.active {\n  border-color: #d81b60;\n}\n\n.sidebar-dark-blue .nav-sidebar > .nav-item > .nav-link.active,\n.sidebar-light-blue .nav-sidebar > .nav-item > .nav-link.active {\n  background-color: #007bff;\n  color: #ffffff;\n}\n\n.sidebar-dark-blue .nav-sidebar.nav-legacy > .nav-item > .nav-link.active,\n.sidebar-light-blue .nav-sidebar.nav-legacy > .nav-item > .nav-link.active {\n  border-color: #007bff;\n}\n\n.sidebar-dark-indigo .nav-sidebar > .nav-item > .nav-link.active,\n.sidebar-light-indigo .nav-sidebar > .nav-item > .nav-link.active {\n  background-color: #6610f2;\n  color: #ffffff;\n}\n\n.sidebar-dark-indigo .nav-sidebar.nav-legacy > .nav-item > .nav-link.active,\n.sidebar-light-indigo .nav-sidebar.nav-legacy > .nav-item > .nav-link.active {\n  border-color: #6610f2;\n}\n\n.sidebar-dark-purple .nav-sidebar > .nav-item > .nav-link.active,\n.sidebar-light-purple .nav-sidebar > .nav-item > .nav-link.active {\n  background-color: #6f42c1;\n  color: #ffffff;\n}\n\n.sidebar-dark-purple .nav-sidebar.nav-legacy > .nav-item > .nav-link.active,\n.sidebar-light-purple .nav-sidebar.nav-legacy > .nav-item > .nav-link.active {\n  border-color: #6f42c1;\n}\n\n.sidebar-dark-pink .nav-sidebar > .nav-item > .nav-link.active,\n.sidebar-light-pink .nav-sidebar > .nav-item > .nav-link.active {\n  background-color: #e83e8c;\n  color: #ffffff;\n}\n\n.sidebar-dark-pink .nav-sidebar.nav-legacy > .nav-item > .nav-link.active,\n.sidebar-light-pink .nav-sidebar.nav-legacy > .nav-item > .nav-link.active {\n  border-color: #e83e8c;\n}\n\n.sidebar-dark-red .nav-sidebar > .nav-item > .nav-link.active,\n.sidebar-light-red .nav-sidebar > .nav-item > .nav-link.active {\n  background-color: #dc3545;\n  color: #ffffff;\n}\n\n.sidebar-dark-red .nav-sidebar.nav-legacy > .nav-item > .nav-link.active,\n.sidebar-light-red .nav-sidebar.nav-legacy > .nav-item > .nav-link.active {\n  border-color: #dc3545;\n}\n\n.sidebar-dark-orange .nav-sidebar > .nav-item > .nav-link.active,\n.sidebar-light-orange .nav-sidebar > .nav-item > .nav-link.active {\n  background-color: #fd7e14;\n  color: #1F2D3D;\n}\n\n.sidebar-dark-orange .nav-sidebar.nav-legacy > .nav-item > .nav-link.active,\n.sidebar-light-orange .nav-sidebar.nav-legacy > .nav-item > .nav-link.active {\n  border-color: #fd7e14;\n}\n\n.sidebar-dark-yellow .nav-sidebar > .nav-item > .nav-link.active,\n.sidebar-light-yellow .nav-sidebar > .nav-item > .nav-link.active {\n  background-color: #ffc107;\n  color: #1F2D3D;\n}\n\n.sidebar-dark-yellow .nav-sidebar.nav-legacy > .nav-item > .nav-link.active,\n.sidebar-light-yellow .nav-sidebar.nav-legacy > .nav-item > .nav-link.active {\n  border-color: #ffc107;\n}\n\n.sidebar-dark-green .nav-sidebar > .nav-item > .nav-link.active,\n.sidebar-light-green .nav-sidebar > .nav-item > .nav-link.active {\n  background-color: #28a745;\n  color: #ffffff;\n}\n\n.sidebar-dark-green .nav-sidebar.nav-legacy > .nav-item > .nav-link.active,\n.sidebar-light-green .nav-sidebar.nav-legacy > .nav-item > .nav-link.active {\n  border-color: #28a745;\n}\n\n.sidebar-dark-teal .nav-sidebar > .nav-item > .nav-link.active,\n.sidebar-light-teal .nav-sidebar > .nav-item > .nav-link.active {\n  background-color: #20c997;\n  color: #ffffff;\n}\n\n.sidebar-dark-teal .nav-sidebar.nav-legacy > .nav-item > .nav-link.active,\n.sidebar-light-teal .nav-sidebar.nav-legacy > .nav-item > .nav-link.active {\n  border-color: #20c997;\n}\n\n.sidebar-dark-cyan .nav-sidebar > .nav-item > .nav-link.active,\n.sidebar-light-cyan .nav-sidebar > .nav-item > .nav-link.active {\n  background-color: #17a2b8;\n  color: #ffffff;\n}\n\n.sidebar-dark-cyan .nav-sidebar.nav-legacy > .nav-item > .nav-link.active,\n.sidebar-light-cyan .nav-sidebar.nav-legacy > .nav-item > .nav-link.active {\n  border-color: #17a2b8;\n}\n\n.sidebar-dark-white .nav-sidebar > .nav-item > .nav-link.active,\n.sidebar-light-white .nav-sidebar > .nav-item > .nav-link.active {\n  background-color: #ffffff;\n  color: #1F2D3D;\n}\n\n.sidebar-dark-white .nav-sidebar.nav-legacy > .nav-item > .nav-link.active,\n.sidebar-light-white .nav-sidebar.nav-legacy > .nav-item > .nav-link.active {\n  border-color: #ffffff;\n}\n\n.sidebar-dark-gray .nav-sidebar > .nav-item > .nav-link.active,\n.sidebar-light-gray .nav-sidebar > .nav-item > .nav-link.active {\n  background-color: #6c757d;\n  color: #ffffff;\n}\n\n.sidebar-dark-gray .nav-sidebar.nav-legacy > .nav-item > .nav-link.active,\n.sidebar-light-gray .nav-sidebar.nav-legacy > .nav-item > .nav-link.active {\n  border-color: #6c757d;\n}\n\n.sidebar-dark-gray-dark .nav-sidebar > .nav-item > .nav-link.active,\n.sidebar-light-gray-dark .nav-sidebar > .nav-item > .nav-link.active {\n  background-color: #343a40;\n  color: #ffffff;\n}\n\n.sidebar-dark-gray-dark .nav-sidebar.nav-legacy > .nav-item > .nav-link.active,\n.sidebar-light-gray-dark .nav-sidebar.nav-legacy > .nav-item > .nav-link.active {\n  border-color: #343a40;\n}\n\n.nav-flat {\n  margin: -0.25rem -0.5rem 0;\n}\n\n.nav-flat.nav-child-indent .nav-treeview {\n  padding-left: 0 !important;\n}\n\n.nav-flat.nav-child-indent .nav-treeview .nav-treeview {\n  border-left: .2rem solid;\n}\n\n.nav-flat .nav-item > .nav-link {\n  border-radius: 0;\n  margin-bottom: 0;\n}\n\n.nav-flat .nav-icon {\n  transition: margin-left ease-in-out 0.3s;\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .nav-flat .nav-icon {\n    transition: none;\n  }\n}\n\n.nav-flat .nav-treeview .nav-icon {\n  margin-left: -.2rem;\n}\n\n.sidebar-collapse .nav-flat .nav-icon {\n  margin-left: .5rem;\n}\n\n.sidebar-collapse .nav-flat .nav-treeview .nav-icon {\n  margin-left: .3rem;\n}\n\n.nav-flat.nav-sidebar > .nav-item .nav-treeview,\n.nav-flat.nav-sidebar > .nav-item > .nav-treeview {\n  background: rgba(255, 255, 255, 0.05);\n}\n\n.nav-flat.nav-sidebar > .nav-item .nav-treeview .nav-item > .nav-link,\n.nav-flat.nav-sidebar > .nav-item > .nav-treeview .nav-item > .nav-link {\n  border-left: .2rem solid;\n}\n\n.nav-legacy {\n  margin: -0.25rem -0.5rem 0;\n}\n\n.nav-legacy.nav-sidebar .nav-item > .nav-link {\n  border-radius: 0;\n  margin-bottom: 0;\n}\n\n.nav-legacy.nav-sidebar > .nav-item > .nav-link.active {\n  background: inherit;\n  border-left: 3px solid transparent;\n  box-shadow: none;\n}\n\n.nav-legacy.nav-sidebar > .nav-item > .nav-link.active > .nav-icon {\n  margin-left: -3px;\n}\n\n[class*='sidebar-dark'] .nav-legacy.nav-sidebar > .nav-item .nav-treeview,\n[class*='sidebar-dark'] .nav-legacy.nav-sidebar > .nav-item > .nav-treeview {\n  background: rgba(255, 255, 255, 0.05);\n}\n\n[class*='sidebar-dark'] .nav-legacy.nav-sidebar > .nav-item > .nav-link.active {\n  color: #ffffff;\n}\n\n[class*='sidebar-dark'] .nav-legacy .nav-treeview > .nav-item > .nav-link.active, [class*='sidebar-dark'] .nav-legacy .nav-treeview > .nav-item > .nav-link:focus, [class*='sidebar-dark'] .nav-legacy .nav-treeview > .nav-item > .nav-link:hover {\n  background: none;\n  color: #ffffff;\n}\n\n[class*='sidebar-light'] .nav-legacy.nav-sidebar > .nav-item .nav-treeview,\n[class*='sidebar-light'] .nav-legacy.nav-sidebar > .nav-item > .nav-treeview {\n  background: rgba(0, 0, 0, 0.05);\n}\n\n[class*='sidebar-light'] .nav-legacy.nav-sidebar > .nav-item > .nav-link.active {\n  color: #000;\n}\n\n[class*='sidebar-light'] .nav-legacy .nav-treeview > .nav-item > .nav-link.active, [class*='sidebar-light'] .nav-legacy .nav-treeview > .nav-item > .nav-link:focus, [class*='sidebar-light'] .nav-legacy .nav-treeview > .nav-item > .nav-link:hover {\n  background: none;\n  color: #000;\n}\n\n.nav-collapse-hide-child .menu-open > .nav-treeview {\n  max-height: -webkit-min-content;\n  max-height: -moz-min-content;\n  max-height: min-content;\n  opacity: 1;\n}\n\n.sidebar-collapse .nav-collapse-hide-child .menu-open > .nav-treeview {\n  max-height: 0;\n  opacity: 0;\n}\n\n.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .nav-collapse-hide-child .menu-open > .nav-treeview,\n.sidebar-mini.sidebar-collapse .main-sidebar:hover .nav-collapse-hide-child .menu-open > .nav-treeview {\n  max-height: -webkit-min-content;\n  max-height: -moz-min-content;\n  max-height: min-content;\n  opacity: 1;\n}\n\n.nav-compact .nav-link,\n.nav-compact .nav-header {\n  padding: 0.25rem 0.5rem;\n}\n\n.nav-compact .nav-header:not(:first-of-type) {\n  padding: 0.75rem 0.5rem 0.25rem;\n}\n\n.nav-compact .nav-link > .right,\n.nav-compact .nav-link > p > .right {\n  top: .5rem;\n  right: .5rem;\n}\n\n.nav-compact .nav-link > .right:nth-child(2),\n.nav-compact .nav-link > p > .right:nth-child(2) {\n  right: 1.6rem;\n}\n\n[class*='sidebar-dark'] .form-control-sidebar,\n[class*='sidebar-dark'] .btn-sidebar {\n  background: #3f474e;\n  border: 1px solid #56606a;\n  color: white;\n}\n\n[class*='sidebar-dark'] .form-control-sidebar:focus,\n[class*='sidebar-dark'] .btn-sidebar:focus {\n  border: 1px solid #7a8793;\n}\n\n[class*='sidebar-dark'] .btn-sidebar:hover {\n  background: #454d55;\n}\n\n[class*='sidebar-dark'] .btn-sidebar:focus {\n  background: #4b545c;\n}\n\n[class*='sidebar-light'] .form-control-sidebar,\n[class*='sidebar-light'] .btn-sidebar {\n  background: #f2f2f2;\n  border: 1px solid #d9d9d9;\n  color: #1F2D3D;\n}\n\n[class*='sidebar-light'] .form-control-sidebar:focus,\n[class*='sidebar-light'] .btn-sidebar:focus {\n  border: 1px solid #b3b3b3;\n}\n\n[class*='sidebar-light'] .btn-sidebar:hover {\n  background: #ececec;\n}\n\n[class*='sidebar-light'] .btn-sidebar:focus {\n  background: #e6e6e6;\n}\n\n.logo-xs,\n.logo-xl {\n  opacity: 1;\n  position: absolute;\n  visibility: visible;\n}\n\n.logo-xs.brand-image-xs,\n.logo-xl.brand-image-xs {\n  left: 18px;\n  top: 12px;\n}\n\n.logo-xs.brand-image-xl,\n.logo-xl.brand-image-xl {\n  left: 12px;\n  top: 6px;\n}\n\n.logo-xs {\n  opacity: 0;\n  visibility: hidden;\n}\n\n.logo-xs.brand-image-xl {\n  left: 16px;\n  top: 8px;\n}\n\n.brand-link.logo-switch::before {\n  content: '\\00a0';\n}\n\n@media (min-width: 992px) {\n  .sidebar-mini .nav-sidebar,\n  .sidebar-mini .nav-sidebar > .nav-header,\n  .sidebar-mini .nav-sidebar .nav-link {\n    white-space: nowrap;\n    overflow: hidden;\n  }\n  .sidebar-mini.sidebar-collapse .d-hidden-mini {\n    display: none;\n  }\n  .sidebar-mini.sidebar-collapse .content-wrapper,\n  .sidebar-mini.sidebar-collapse .main-footer,\n  .sidebar-mini.sidebar-collapse .main-header {\n    margin-left: 4.6rem !important;\n  }\n  .sidebar-mini.sidebar-collapse .nav-sidebar .nav-header {\n    display: none;\n  }\n  .sidebar-mini.sidebar-collapse .nav-sidebar .nav-link p {\n    width: 0;\n  }\n  .sidebar-mini.sidebar-collapse .sidebar .user-panel > .info,\n  .sidebar-mini.sidebar-collapse .nav-sidebar .nav-link p,\n  .sidebar-mini.sidebar-collapse .brand-text {\n    margin-left: -10px;\n    opacity: 0;\n    visibility: hidden;\n  }\n  .sidebar-mini.sidebar-collapse .logo-xl {\n    opacity: 0;\n    visibility: hidden;\n  }\n  .sidebar-mini.sidebar-collapse .logo-xs {\n    display: inline-block;\n    opacity: 1;\n    visibility: visible;\n  }\n  .sidebar-mini.sidebar-collapse .main-sidebar {\n    overflow-x: hidden;\n  }\n  .sidebar-mini.sidebar-collapse .main-sidebar, .sidebar-mini.sidebar-collapse .main-sidebar::before {\n    margin-left: 0;\n    width: 4.6rem;\n  }\n  .sidebar-mini.sidebar-collapse .main-sidebar .user-panel .image {\n    float: none;\n  }\n  .sidebar-mini.sidebar-collapse .main-sidebar:hover, .sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused {\n    width: 250px;\n  }\n  .sidebar-mini.sidebar-collapse .main-sidebar:hover .nav-sidebar.nav-child-indent .nav-treeview, .sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .nav-sidebar.nav-child-indent .nav-treeview {\n    padding-left: 1rem;\n  }\n  .sidebar-mini.sidebar-collapse .main-sidebar:hover .brand-link, .sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .brand-link {\n    width: 250px;\n  }\n  .sidebar-mini.sidebar-collapse .main-sidebar:hover .user-panel, .sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .user-panel {\n    text-align: left;\n  }\n  .sidebar-mini.sidebar-collapse .main-sidebar:hover .user-panel .image, .sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .user-panel .image {\n    float: left;\n  }\n  .sidebar-mini.sidebar-collapse .main-sidebar:hover .user-panel > .info,\n  .sidebar-mini.sidebar-collapse .main-sidebar:hover .nav-sidebar .nav-link p,\n  .sidebar-mini.sidebar-collapse .main-sidebar:hover .brand-text,\n  .sidebar-mini.sidebar-collapse .main-sidebar:hover .logo-xl, .sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .user-panel > .info,\n  .sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .nav-sidebar .nav-link p,\n  .sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .brand-text,\n  .sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .logo-xl {\n    display: inline-block;\n    margin-left: 0;\n    opacity: 1;\n    visibility: visible;\n  }\n  .sidebar-mini.sidebar-collapse .main-sidebar:hover .nav-flat .nav-icon, .sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .nav-flat .nav-icon {\n    margin-left: 0;\n  }\n  .sidebar-mini.sidebar-collapse .main-sidebar:hover .nav-flat .nav-treeview .nav-icon, .sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .nav-flat .nav-treeview .nav-icon {\n    margin-left: -.2rem;\n  }\n  .sidebar-mini.sidebar-collapse .main-sidebar:hover .logo-xs, .sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .logo-xs {\n    opacity: 0;\n    visibility: hidden;\n  }\n  .sidebar-mini.sidebar-collapse .main-sidebar:hover .brand-image, .sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .brand-image {\n    margin-right: .5rem;\n  }\n  .sidebar-mini.sidebar-collapse .main-sidebar:hover .sidebar-form,\n  .sidebar-mini.sidebar-collapse .main-sidebar:hover .user-panel > .info, .sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .sidebar-form,\n  .sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .user-panel > .info {\n    display: block !important;\n    -webkit-transform: translateZ(0);\n  }\n  .sidebar-mini.sidebar-collapse .main-sidebar:hover .nav-sidebar > .nav-item > .nav-link > span, .sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .nav-sidebar > .nav-item > .nav-link > span {\n    display: inline-block !important;\n  }\n  .sidebar-mini.sidebar-collapse .visible-sidebar-mini {\n    display: block !important;\n  }\n  .sidebar-mini.sidebar-collapse.layout-fixed .main-sidebar:hover .brand-link {\n    width: 250px;\n  }\n  .sidebar-mini.sidebar-collapse.layout-fixed .brand-link {\n    width: 4.6rem;\n  }\n}\n\n@media (min-width: 768px) {\n  .sidebar-mini-md .nav-sidebar,\n  .sidebar-mini-md .nav-sidebar > .nav-header,\n  .sidebar-mini-md .nav-sidebar .nav-link {\n    white-space: nowrap;\n    overflow: hidden;\n  }\n  .sidebar-mini-md.sidebar-collapse .d-hidden-mini {\n    display: none;\n  }\n  .sidebar-mini-md.sidebar-collapse .content-wrapper,\n  .sidebar-mini-md.sidebar-collapse .main-footer,\n  .sidebar-mini-md.sidebar-collapse .main-header {\n    margin-left: 4.6rem !important;\n  }\n  .sidebar-mini-md.sidebar-collapse .nav-sidebar .nav-header {\n    display: none;\n  }\n  .sidebar-mini-md.sidebar-collapse .nav-sidebar .nav-link p {\n    width: 0;\n  }\n  .sidebar-mini-md.sidebar-collapse .sidebar .user-panel > .info,\n  .sidebar-mini-md.sidebar-collapse .nav-sidebar .nav-link p,\n  .sidebar-mini-md.sidebar-collapse .brand-text {\n    margin-left: -10px;\n    opacity: 0;\n    visibility: hidden;\n  }\n  .sidebar-mini-md.sidebar-collapse .logo-xl {\n    opacity: 0;\n    visibility: hidden;\n  }\n  .sidebar-mini-md.sidebar-collapse .logo-xs {\n    display: inline-block;\n    opacity: 1;\n    visibility: visible;\n  }\n  .sidebar-mini-md.sidebar-collapse .main-sidebar {\n    overflow-x: hidden;\n  }\n  .sidebar-mini-md.sidebar-collapse .main-sidebar, .sidebar-mini-md.sidebar-collapse .main-sidebar::before {\n    margin-left: 0;\n    width: 4.6rem;\n  }\n  .sidebar-mini-md.sidebar-collapse .main-sidebar .user-panel .image {\n    float: none;\n  }\n  .sidebar-mini-md.sidebar-collapse .main-sidebar:hover, .sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused {\n    width: 250px;\n  }\n  .sidebar-mini-md.sidebar-collapse .main-sidebar:hover .nav-sidebar.nav-child-indent .nav-treeview, .sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .nav-sidebar.nav-child-indent .nav-treeview {\n    padding-left: 1rem;\n  }\n  .sidebar-mini-md.sidebar-collapse .main-sidebar:hover .brand-link, .sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .brand-link {\n    width: 250px;\n  }\n  .sidebar-mini-md.sidebar-collapse .main-sidebar:hover .user-panel, .sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .user-panel {\n    text-align: left;\n  }\n  .sidebar-mini-md.sidebar-collapse .main-sidebar:hover .user-panel .image, .sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .user-panel .image {\n    float: left;\n  }\n  .sidebar-mini-md.sidebar-collapse .main-sidebar:hover .user-panel > .info,\n  .sidebar-mini-md.sidebar-collapse .main-sidebar:hover .nav-sidebar .nav-link p,\n  .sidebar-mini-md.sidebar-collapse .main-sidebar:hover .brand-text,\n  .sidebar-mini-md.sidebar-collapse .main-sidebar:hover .logo-xl, .sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .user-panel > .info,\n  .sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .nav-sidebar .nav-link p,\n  .sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .brand-text,\n  .sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .logo-xl {\n    display: inline-block;\n    margin-left: 0;\n    opacity: 1;\n    visibility: visible;\n  }\n  .sidebar-mini-md.sidebar-collapse .main-sidebar:hover .nav-flat .nav-icon, .sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .nav-flat .nav-icon {\n    margin-left: 0;\n  }\n  .sidebar-mini-md.sidebar-collapse .main-sidebar:hover .nav-flat .nav-treeview .nav-icon, .sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .nav-flat .nav-treeview .nav-icon {\n    margin-left: -.2rem;\n  }\n  .sidebar-mini-md.sidebar-collapse .main-sidebar:hover .logo-xs, .sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .logo-xs {\n    opacity: 0;\n    visibility: hidden;\n  }\n  .sidebar-mini-md.sidebar-collapse .main-sidebar:hover .brand-image, .sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .brand-image {\n    margin-right: .5rem;\n  }\n  .sidebar-mini-md.sidebar-collapse .main-sidebar:hover .sidebar-form,\n  .sidebar-mini-md.sidebar-collapse .main-sidebar:hover .user-panel > .info, .sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .sidebar-form,\n  .sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .user-panel > .info {\n    display: block !important;\n    -webkit-transform: translateZ(0);\n  }\n  .sidebar-mini-md.sidebar-collapse .main-sidebar:hover .nav-sidebar > .nav-item > .nav-link > span, .sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .nav-sidebar > .nav-item > .nav-link > span {\n    display: inline-block !important;\n  }\n  .sidebar-mini-md.sidebar-collapse .visible-sidebar-mini {\n    display: block !important;\n  }\n  .sidebar-mini-md.sidebar-collapse.layout-fixed .main-sidebar:hover .brand-link {\n    width: 250px;\n  }\n  .sidebar-mini-md.sidebar-collapse.layout-fixed .brand-link {\n    width: 4.6rem;\n  }\n}\n\n.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused,\n.sidebar-collapse .sidebar-no-expand.main-sidebar:hover {\n  width: 4.6rem;\n}\n\n.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .brand-link,\n.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .brand-link {\n  width: 4.6rem !important;\n}\n\n.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .user-panel .image,\n.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .user-panel .image {\n  float: none !important;\n}\n\n.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .logo-xs,\n.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .logo-xs {\n  opacity: 1;\n  visibility: visible;\n}\n\n.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .logo-xl,\n.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .logo-xl {\n  opacity: 0;\n  visibility: hidden;\n}\n\n.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .nav-sidebar.nav-child-indent .nav-treeview,\n.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .nav-sidebar.nav-child-indent .nav-treeview {\n  padding-left: 0;\n}\n\n.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .brand-text,\n.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .user-panel > .info,\n.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .nav-sidebar .nav-link p,\n.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .brand-text,\n.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .user-panel > .info,\n.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .nav-sidebar .nav-link p {\n  margin-left: -10px;\n  opacity: 0;\n  visibility: hidden;\n  width: 0;\n}\n\n.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .nav-sidebar > .nav-item .nav-icon,\n.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .nav-sidebar > .nav-item .nav-icon {\n  margin-right: 0;\n}\n\n.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .nav-flat .nav-icon,\n.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .nav-flat .nav-icon {\n  margin-left: .5rem;\n}\n\n.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .nav-flat .nav-treeview .nav-icon,\n.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .nav-flat .nav-treeview .nav-icon {\n  margin-left: .3rem;\n}\n\n.nav-sidebar {\n  position: relative;\n}\n\n.nav-sidebar:hover {\n  overflow: visible;\n}\n\n.sidebar-form,\n.nav-sidebar > .nav-header {\n  overflow: hidden;\n  text-overflow: clip;\n}\n\n.nav-sidebar .nav-item > .nav-link {\n  position: relative;\n}\n\n.nav-sidebar .nav-item > .nav-link > .float-right {\n  margin-top: -7px;\n  position: absolute;\n  right: 10px;\n  top: 50%;\n}\n\n.sidebar .nav-link p,\n.main-sidebar .brand-text,\n.main-sidebar .logo-xs,\n.main-sidebar .logo-xl,\n.sidebar .user-panel .info {\n  transition: margin-left 0.3s linear, opacity 0.3s ease, visibility 0.3s ease;\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .sidebar .nav-link p,\n  .main-sidebar .brand-text,\n  .main-sidebar .logo-xs,\n  .main-sidebar .logo-xl,\n  .sidebar .user-panel .info {\n    transition: none;\n  }\n}\n\nhtml.control-sidebar-animate {\n  overflow-x: hidden;\n}\n\n.control-sidebar {\n  bottom: calc(3.5rem + 1px);\n  position: absolute;\n  top: calc(3.5rem + 1px);\n  z-index: 1031;\n}\n\n.control-sidebar, .control-sidebar::before {\n  bottom: calc(3.5rem + 1px);\n  display: none;\n  right: -250px;\n  width: 250px;\n  transition: right 0.3s ease-in-out, display 0.3s ease-in-out;\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .control-sidebar, .control-sidebar::before {\n    transition: none;\n  }\n}\n\n.control-sidebar::before {\n  content: '';\n  display: block;\n  position: fixed;\n  top: 0;\n  z-index: -1;\n}\n\nbody.text-sm .control-sidebar {\n  bottom: calc(2.9365rem + 1px);\n  top: calc(2.93725rem + 1px);\n}\n\n.main-header.text-sm ~ .control-sidebar {\n  top: calc(2.93725rem + 1px);\n}\n\n.main-footer.text-sm ~ .control-sidebar {\n  bottom: calc(2.9365rem + 1px);\n}\n\n.control-sidebar-push-slide .content-wrapper,\n.control-sidebar-push-slide .main-footer {\n  transition: margin-right 0.3s ease-in-out;\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .control-sidebar-push-slide .content-wrapper,\n  .control-sidebar-push-slide .main-footer {\n    transition: none;\n  }\n}\n\n.control-sidebar-open .control-sidebar {\n  display: block;\n}\n\n.control-sidebar-open .control-sidebar, .control-sidebar-open .control-sidebar::before {\n  right: 0;\n}\n\n.control-sidebar-open.control-sidebar-push .content-wrapper,\n.control-sidebar-open.control-sidebar-push .main-footer, .control-sidebar-open.control-sidebar-push-slide .content-wrapper,\n.control-sidebar-open.control-sidebar-push-slide .main-footer {\n  margin-right: 250px;\n}\n\n.control-sidebar-slide-open .control-sidebar {\n  display: block;\n}\n\n.control-sidebar-slide-open .control-sidebar, .control-sidebar-slide-open .control-sidebar::before {\n  right: 0;\n  transition: right 0.3s ease-in-out, display 0.3s ease-in-out;\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .control-sidebar-slide-open .control-sidebar, .control-sidebar-slide-open .control-sidebar::before {\n    transition: none;\n  }\n}\n\n.control-sidebar-slide-open.control-sidebar-push .content-wrapper,\n.control-sidebar-slide-open.control-sidebar-push .main-footer, .control-sidebar-slide-open.control-sidebar-push-slide .content-wrapper,\n.control-sidebar-slide-open.control-sidebar-push-slide .main-footer {\n  margin-right: 250px;\n}\n\n.control-sidebar-dark,\n.control-sidebar-dark a,\n.control-sidebar-dark .nav-link {\n  color: #C2C7D0;\n}\n\n.control-sidebar-dark {\n  background: #343a40;\n}\n\n.control-sidebar-dark a:hover {\n  color: #ffffff;\n}\n\n.control-sidebar-dark h1,\n.control-sidebar-dark h2,\n.control-sidebar-dark h3,\n.control-sidebar-dark h4,\n.control-sidebar-dark h5,\n.control-sidebar-dark h6,\n.control-sidebar-dark label {\n  color: #ffffff;\n}\n\n.control-sidebar-dark .nav-tabs {\n  background-color: rgba(255, 255, 255, 0.1);\n  border-bottom: 0;\n  margin-bottom: 5px;\n}\n\n.control-sidebar-dark .nav-tabs .nav-item {\n  margin: 0;\n}\n\n.control-sidebar-dark .nav-tabs .nav-link {\n  border-radius: 0;\n  padding: 10px 20px;\n  position: relative;\n  text-align: center;\n}\n\n.control-sidebar-dark .nav-tabs .nav-link, .control-sidebar-dark .nav-tabs .nav-link:hover, .control-sidebar-dark .nav-tabs .nav-link:active, .control-sidebar-dark .nav-tabs .nav-link:focus, .control-sidebar-dark .nav-tabs .nav-link.active {\n  border: 0;\n}\n\n.control-sidebar-dark .nav-tabs .nav-link:hover, .control-sidebar-dark .nav-tabs .nav-link:active, .control-sidebar-dark .nav-tabs .nav-link:focus, .control-sidebar-dark .nav-tabs .nav-link.active {\n  border-bottom-color: transparent;\n  border-left-color: transparent;\n  border-top-color: transparent;\n  color: #ffffff;\n}\n\n.control-sidebar-dark .nav-tabs .nav-link.active {\n  background-color: #343a40;\n}\n\n.control-sidebar-dark .tab-pane {\n  padding: 10px 15px;\n}\n\n.control-sidebar-light {\n  color: #4b545c;\n}\n\n.control-sidebar-light {\n  background: #ffffff;\n  border-left: 1px solid #dee2e6;\n}\n\n.text-sm .dropdown-menu {\n  font-size: 0.875rem !important;\n}\n\n.text-sm .dropdown-toggle::after {\n  vertical-align: .2rem;\n}\n\n.dropdown-item-title {\n  font-size: 1rem;\n  margin: 0;\n}\n\n.dropdown-icon::after {\n  margin-left: 0;\n}\n\n.dropdown-menu-lg {\n  max-width: 300px;\n  min-width: 280px;\n  padding: 0;\n}\n\n.dropdown-menu-lg .dropdown-divider {\n  margin: 0;\n}\n\n.dropdown-menu-lg .dropdown-item {\n  padding: 0.5rem 1rem;\n}\n\n.dropdown-menu-lg p {\n  margin: 0;\n  white-space: normal;\n}\n\n.dropdown-submenu {\n  position: relative;\n}\n\n.dropdown-submenu > a:after {\n  border-top: 0.3em solid transparent;\n  border-right: 0;\n  border-bottom: 0.3em solid transparent;\n  border-left: 0.3em solid;\n  float: right;\n  margin-left: .5rem;\n  margin-top: .5rem;\n}\n\n.dropdown-submenu > .dropdown-menu {\n  left: 100%;\n  margin-left: 0px;\n  margin-top: 0px;\n  top: 0;\n}\n\n.dropdown-hover:hover > .dropdown-menu, .dropdown-hover.nav-item.dropdown:hover > .dropdown-menu,\n.dropdown-hover .dropdown-submenu:hover > .dropdown-menu, .dropdown-hover.dropdown-submenu:hover > .dropdown-menu {\n  display: block;\n}\n\n.dropdown-menu-xl {\n  max-width: 420px;\n  min-width: 360px;\n  padding: 0;\n}\n\n.dropdown-menu-xl .dropdown-divider {\n  margin: 0;\n}\n\n.dropdown-menu-xl .dropdown-item {\n  padding: 0.5rem 1rem;\n}\n\n.dropdown-menu-xl p {\n  margin: 0;\n  white-space: normal;\n}\n\n.dropdown-footer,\n.dropdown-header {\n  display: block;\n  font-size: 0.875rem;\n  padding: 0.5rem 1rem;\n  text-align: center;\n}\n\n.open:not(.dropup) > .animated-dropdown-menu {\n  -webkit-animation: flipInX 0.7s both;\n  animation: flipInX 0.7s both;\n  -webkit-backface-visibility: visible !important;\n  backface-visibility: visible !important;\n}\n\n@-webkit-keyframes flipInX {\n  0% {\n    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n    transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n    transition-timing-function: ease-in;\n    opacity: 0;\n  }\n  40% {\n    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n    transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n    transition-timing-function: ease-in;\n  }\n  60% {\n    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\n    transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\n    opacity: 1;\n  }\n  80% {\n    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg);\n    transform: perspective(400px) rotate3d(1, 0, 0, -5deg);\n  }\n  100% {\n    -webkit-transform: perspective(400px);\n    transform: perspective(400px);\n  }\n}\n\n@keyframes flipInX {\n  0% {\n    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n    transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n    transition-timing-function: ease-in;\n    opacity: 0;\n  }\n  40% {\n    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n    transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n    transition-timing-function: ease-in;\n  }\n  60% {\n    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\n    transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\n    opacity: 1;\n  }\n  80% {\n    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg);\n    transform: perspective(400px) rotate3d(1, 0, 0, -5deg);\n  }\n  100% {\n    -webkit-transform: perspective(400px);\n    transform: perspective(400px);\n  }\n}\n\n.navbar-custom-menu > .navbar-nav > li {\n  position: relative;\n}\n\n.navbar-custom-menu > .navbar-nav > li > .dropdown-menu {\n  position: absolute;\n  right: 0;\n  left: auto;\n}\n\n@media (max-width: 767.98px) {\n  .navbar-custom-menu > .navbar-nav {\n    float: right;\n  }\n  .navbar-custom-menu > .navbar-nav > li {\n    position: static;\n  }\n  .navbar-custom-menu > .navbar-nav > li > .dropdown-menu {\n    position: absolute;\n    right: 5%;\n    left: auto;\n    border: 1px solid #ddd;\n    background: #ffffff;\n  }\n}\n\n.navbar-nav > .user-menu > .nav-link:after {\n  content: none;\n}\n\n.navbar-nav > .user-menu > .dropdown-menu {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n  padding: 0;\n  border-top-width: 0;\n  width: 280px;\n}\n\n.navbar-nav > .user-menu > .dropdown-menu,\n.navbar-nav > .user-menu > .dropdown-menu > .user-body {\n  border-bottom-right-radius: 4px;\n  border-bottom-left-radius: 4px;\n}\n\n.navbar-nav > .user-menu > .dropdown-menu > li.user-header {\n  height: 175px;\n  padding: 10px;\n  text-align: center;\n}\n\n.navbar-nav > .user-menu > .dropdown-menu > li.user-header > img {\n  z-index: 5;\n  height: 90px;\n  width: 90px;\n  border: 3px solid;\n  border-color: transparent;\n  border-color: rgba(255, 255, 255, 0.2);\n}\n\n.navbar-nav > .user-menu > .dropdown-menu > li.user-header > p {\n  z-index: 5;\n  font-size: 17px;\n  margin-top: 10px;\n}\n\n.navbar-nav > .user-menu > .dropdown-menu > li.user-header > p > small {\n  display: block;\n  font-size: 12px;\n}\n\n.navbar-nav > .user-menu > .dropdown-menu > .user-body {\n  border-bottom: 1px solid #495057;\n  border-top: 1px solid #dee2e6;\n  padding: 15px;\n}\n\n.navbar-nav > .user-menu > .dropdown-menu > .user-body::after {\n  display: block;\n  clear: both;\n  content: \"\";\n}\n\n@media (min-width: 576px) {\n  .navbar-nav > .user-menu > .dropdown-menu > .user-body a {\n    background: #ffffff !important;\n    color: #495057 !important;\n  }\n}\n\n.navbar-nav > .user-menu > .dropdown-menu > .user-footer {\n  background-color: #f8f9fa;\n  padding: 10px;\n}\n\n.navbar-nav > .user-menu > .dropdown-menu > .user-footer::after {\n  display: block;\n  clear: both;\n  content: \"\";\n}\n\n.navbar-nav > .user-menu > .dropdown-menu > .user-footer .btn-default {\n  color: #6c757d;\n}\n\n@media (min-width: 576px) {\n  .navbar-nav > .user-menu > .dropdown-menu > .user-footer .btn-default:hover {\n    background-color: #f8f9fa;\n  }\n}\n\n.navbar-nav > .user-menu .user-image {\n  border-radius: 50%;\n  float: left;\n  height: 2.1rem;\n  margin-right: 10px;\n  margin-top: -2px;\n  width: 2.1rem;\n}\n\n@media (min-width: 576px) {\n  .navbar-nav > .user-menu .user-image {\n    float: none;\n    line-height: 10px;\n    margin-right: .4rem;\n    margin-top: -8px;\n  }\n}\n\n.nav-pills .nav-link {\n  color: #6c757d;\n}\n\n.nav-pills .nav-link:not(.active):hover {\n  color: #007bff;\n}\n\n.nav-pills .nav-item.dropdown.show .nav-link:hover {\n  color: #ffffff;\n}\n\n.nav-tabs.flex-column {\n  border-bottom: 0;\n  border-right: 1px solid #dee2e6;\n}\n\n.nav-tabs.flex-column .nav-link {\n  border-bottom-left-radius: 0.25rem;\n  border-top-right-radius: 0;\n  margin-right: -1px;\n}\n\n.nav-tabs.flex-column .nav-link:hover, .nav-tabs.flex-column .nav-link:focus {\n  border-color: #e9ecef transparent #e9ecef #e9ecef;\n}\n\n.nav-tabs.flex-column .nav-link.active,\n.nav-tabs.flex-column .nav-item.show .nav-link {\n  border-color: #dee2e6 transparent #dee2e6 #dee2e6;\n}\n\n.nav-tabs.flex-column.nav-tabs-right {\n  border-left: 1px solid #dee2e6;\n  border-right: 0;\n}\n\n.nav-tabs.flex-column.nav-tabs-right .nav-link {\n  border-bottom-left-radius: 0;\n  border-bottom-right-radius: 0.25rem;\n  border-top-left-radius: 0;\n  border-top-right-radius: 0.25rem;\n  margin-left: -1px;\n}\n\n.nav-tabs.flex-column.nav-tabs-right .nav-link:hover, .nav-tabs.flex-column.nav-tabs-right .nav-link:focus {\n  border-color: #e9ecef #e9ecef #e9ecef transparent;\n}\n\n.nav-tabs.flex-column.nav-tabs-right .nav-link.active,\n.nav-tabs.flex-column.nav-tabs-right .nav-item.show .nav-link {\n  border-color: #dee2e6 #dee2e6 #dee2e6 transparent;\n}\n\n.navbar-no-expand {\n  -ms-flex-direction: row;\n  flex-direction: row;\n}\n\n.navbar-no-expand .nav-link {\n  padding-left: 1rem;\n  padding-right: 1rem;\n}\n\n.navbar-light {\n  background-color: #f8f9fa;\n}\n\n.navbar-dark {\n  background-color: #343a40;\n}\n\n.navbar-primary {\n  background-color: #007bff;\n}\n\n.navbar-secondary {\n  background-color: #6c757d;\n}\n\n.navbar-success {\n  background-color: #28a745;\n}\n\n.navbar-info {\n  background-color: #17a2b8;\n}\n\n.navbar-warning {\n  background-color: #ffc107;\n}\n\n.navbar-danger {\n  background-color: #dc3545;\n}\n\n.navbar-navy {\n  background-color: #001f3f;\n}\n\n.navbar-olive {\n  background-color: #3d9970;\n}\n\n.navbar-lime {\n  background-color: #01ff70;\n}\n\n.navbar-fuchsia {\n  background-color: #f012be;\n}\n\n.navbar-maroon {\n  background-color: #d81b60;\n}\n\n.navbar-blue {\n  background-color: #007bff;\n}\n\n.navbar-indigo {\n  background-color: #6610f2;\n}\n\n.navbar-purple {\n  background-color: #6f42c1;\n}\n\n.navbar-pink {\n  background-color: #e83e8c;\n}\n\n.navbar-red {\n  background-color: #dc3545;\n}\n\n.navbar-orange {\n  background-color: #fd7e14;\n}\n\n.navbar-yellow {\n  background-color: #ffc107;\n}\n\n.navbar-green {\n  background-color: #28a745;\n}\n\n.navbar-teal {\n  background-color: #20c997;\n}\n\n.navbar-cyan {\n  background-color: #17a2b8;\n}\n\n.navbar-white {\n  background-color: #ffffff;\n}\n\n.navbar-gray {\n  background-color: #6c757d;\n}\n\n.navbar-gray-dark {\n  background-color: #343a40;\n}\n\n.form-group.has-icon {\n  position: relative;\n}\n\n.form-group.has-icon .form-control {\n  padding-right: 35px;\n}\n\n.form-group.has-icon .form-icon {\n  background-color: transparent;\n  border: 0;\n  cursor: pointer;\n  font-size: 1rem;\n  padding: 0.375rem 0.75rem;\n  position: absolute;\n  right: 3px;\n  top: 0;\n}\n\n.btn-group-vertical .btn.btn-flat:first-of-type, .btn-group-vertical .btn.btn-flat:last-of-type {\n  border-radius: 0;\n}\n\n.form-control-feedback.fa, .form-control-feedback.fas, .form-control-feedback.far, .form-control-feedback.fab, .form-control-feedback.glyphicon, .form-control-feedback.ion {\n  line-height: calc(2.25rem + 2px);\n}\n\n.input-lg + .form-control-feedback.fa, .input-lg + .form-control-feedback.fas, .input-lg + .form-control-feedback.far, .input-lg + .form-control-feedback.fab, .input-lg + .form-control-feedback.glyphicon, .input-lg + .form-control-feedback.ion,\n.input-group-lg + .form-control-feedback.fa,\n.input-group-lg + .form-control-feedback.fas,\n.input-group-lg + .form-control-feedback.far,\n.input-group-lg + .form-control-feedback.fab,\n.input-group-lg + .form-control-feedback.glyphicon,\n.input-group-lg + .form-control-feedback.ion {\n  line-height: calc(2.875rem + 2px);\n}\n\n.form-group-lg .form-control + .form-control-feedback.fa, .form-group-lg .form-control + .form-control-feedback.fas, .form-group-lg .form-control + .form-control-feedback.far, .form-group-lg .form-control + .form-control-feedback.fab, .form-group-lg .form-control + .form-control-feedback.glyphicon, .form-group-lg .form-control + .form-control-feedback.ion {\n  line-height: calc(2.875rem + 2px);\n}\n\n.input-sm + .form-control-feedback.fa, .input-sm + .form-control-feedback.fas, .input-sm + .form-control-feedback.far, .input-sm + .form-control-feedback.fab, .input-sm + .form-control-feedback.glyphicon, .input-sm + .form-control-feedback.ion,\n.input-group-sm + .form-control-feedback.fa,\n.input-group-sm + .form-control-feedback.fas,\n.input-group-sm + .form-control-feedback.far,\n.input-group-sm + .form-control-feedback.fab,\n.input-group-sm + .form-control-feedback.glyphicon,\n.input-group-sm + .form-control-feedback.ion {\n  line-height: calc(1.8125rem + 2px);\n}\n\n.form-group-sm .form-control + .form-control-feedback.fa, .form-group-sm .form-control + .form-control-feedback.fas, .form-group-sm .form-control + .form-control-feedback.far, .form-group-sm .form-control + .form-control-feedback.fab, .form-group-sm .form-control + .form-control-feedback.glyphicon, .form-group-sm .form-control + .form-control-feedback.ion {\n  line-height: calc(1.8125rem + 2px);\n}\n\nlabel:not(.form-check-label):not(.custom-file-label) {\n  font-weight: 700;\n}\n\n.warning-feedback {\n  font-size: 80%;\n  color: #ffc107;\n  display: none;\n  margin-top: 0.25rem;\n  width: 100%;\n}\n\n.warning-tooltip {\n  border-radius: 0.25rem;\n  font-size: 0.875rem;\n  background-color: rgba(255, 193, 7, 0.9);\n  color: #1F2D3D;\n  display: none;\n  line-height: 1.5;\n  margin-top: .1rem;\n  max-width: 100%;\n  padding: 0.25rem 0.5rem;\n  position: absolute;\n  top: 100%;\n  z-index: 5;\n}\n\n.form-control.is-warning {\n  border-color: #ffc107;\n}\n\n.form-control.is-warning:focus {\n  border-color: #ffc107;\n  box-shadow: 0 0 0 0 rgba(255, 193, 7, 0.25);\n}\n\n.form-control.is-warning ~ .warning-feedback,\n.form-control.is-warning ~ .warning-tooltip {\n  display: block;\n}\n\ntextarea.form-control.is-warning {\n  padding-right: 2.25rem;\n  background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);\n}\n\n.custom-select.is-warning {\n  border-color: #ffc107;\n}\n\n.custom-select.is-warning:focus {\n  border-color: #ffc107;\n  box-shadow: 0 0 0 0 rgba(255, 193, 7, 0.25);\n}\n\n.custom-select.is-warning ~ .warning-feedback,\n.custom-select.is-warning ~ .warning-tooltip {\n  display: block;\n}\n\n.form-control-file.is-warning ~ .warning-feedback,\n.form-control-file.is-warning ~ .warning-tooltip {\n  display: block;\n}\n\n.form-check-input.is-warning ~ .form-check-label {\n  color: #ffc107;\n}\n\n.form-check-input.is-warning ~ .warning-feedback,\n.form-check-input.is-warning ~ .warning-tooltip {\n  display: block;\n}\n\n.custom-control-input.is-warning ~ .custom-control-label {\n  color: #ffc107;\n}\n\n.custom-control-input.is-warning ~ .custom-control-label::before {\n  border-color: #ffc107;\n}\n\n.custom-control-input.is-warning ~ .warning-feedback,\n.custom-control-input.is-warning ~ .warning-tooltip {\n  display: block;\n}\n\n.custom-control-input.is-warning:checked ~ .custom-control-label::before {\n  background-color: #ffce3a;\n  border-color: #ffce3a;\n}\n\n.custom-control-input.is-warning:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 0 rgba(255, 193, 7, 0.25);\n}\n\n.custom-control-input.is-warning:focus:not(:checked) ~ .custom-control-label::before {\n  border-color: #ffc107;\n}\n\n.custom-file-input.is-warning ~ .custom-file-label {\n  border-color: #ffc107;\n}\n\n.custom-file-input.is-warning ~ .warning-feedback,\n.custom-file-input.is-warning ~ .warning-tooltip {\n  display: block;\n}\n\n.custom-file-input.is-warning:focus ~ .custom-file-label {\n  border-color: #ffc107;\n  box-shadow: 0 0 0 0 rgba(255, 193, 7, 0.25);\n}\n\n.custom-switch.custom-switch-off-primary .custom-control-input ~ .custom-control-label::before {\n  background: #007bff;\n  border-color: #004a99;\n}\n\n.custom-switch.custom-switch-off-primary .custom-control-input:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(0, 123, 255, 0.25);\n}\n\n.custom-switch.custom-switch-off-primary .custom-control-input ~ .custom-control-label::after {\n  background: #003e80;\n}\n\n.custom-switch.custom-switch-on-primary .custom-control-input:checked ~ .custom-control-label::before {\n  background: #007bff;\n  border-color: #004a99;\n}\n\n.custom-switch.custom-switch-on-primary .custom-control-input:checked:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(0, 123, 255, 0.25);\n}\n\n.custom-switch.custom-switch-on-primary .custom-control-input:checked ~ .custom-control-label::after {\n  background: #99caff;\n}\n\n.custom-switch.custom-switch-off-secondary .custom-control-input ~ .custom-control-label::before {\n  background: #6c757d;\n  border-color: #3d4246;\n}\n\n.custom-switch.custom-switch-off-secondary .custom-control-input:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(108, 117, 125, 0.25);\n}\n\n.custom-switch.custom-switch-off-secondary .custom-control-input ~ .custom-control-label::after {\n  background: #313539;\n}\n\n.custom-switch.custom-switch-on-secondary .custom-control-input:checked ~ .custom-control-label::before {\n  background: #6c757d;\n  border-color: #3d4246;\n}\n\n.custom-switch.custom-switch-on-secondary .custom-control-input:checked:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(108, 117, 125, 0.25);\n}\n\n.custom-switch.custom-switch-on-secondary .custom-control-input:checked ~ .custom-control-label::after {\n  background: #bcc1c6;\n}\n\n.custom-switch.custom-switch-off-success .custom-control-input ~ .custom-control-label::before {\n  background: #28a745;\n  border-color: #145523;\n}\n\n.custom-switch.custom-switch-off-success .custom-control-input:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(40, 167, 69, 0.25);\n}\n\n.custom-switch.custom-switch-off-success .custom-control-input ~ .custom-control-label::after {\n  background: #0f401b;\n}\n\n.custom-switch.custom-switch-on-success .custom-control-input:checked ~ .custom-control-label::before {\n  background: #28a745;\n  border-color: #145523;\n}\n\n.custom-switch.custom-switch-on-success .custom-control-input:checked:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(40, 167, 69, 0.25);\n}\n\n.custom-switch.custom-switch-on-success .custom-control-input:checked ~ .custom-control-label::after {\n  background: #86e29b;\n}\n\n.custom-switch.custom-switch-off-info .custom-control-input ~ .custom-control-label::before {\n  background: #17a2b8;\n  border-color: #0c525d;\n}\n\n.custom-switch.custom-switch-off-info .custom-control-input:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(23, 162, 184, 0.25);\n}\n\n.custom-switch.custom-switch-off-info .custom-control-input ~ .custom-control-label::after {\n  background: #093e47;\n}\n\n.custom-switch.custom-switch-on-info .custom-control-input:checked ~ .custom-control-label::before {\n  background: #17a2b8;\n  border-color: #0c525d;\n}\n\n.custom-switch.custom-switch-on-info .custom-control-input:checked:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(23, 162, 184, 0.25);\n}\n\n.custom-switch.custom-switch-on-info .custom-control-input:checked ~ .custom-control-label::after {\n  background: #7adeee;\n}\n\n.custom-switch.custom-switch-off-warning .custom-control-input ~ .custom-control-label::before {\n  background: #ffc107;\n  border-color: #a07800;\n}\n\n.custom-switch.custom-switch-off-warning .custom-control-input:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(255, 193, 7, 0.25);\n}\n\n.custom-switch.custom-switch-off-warning .custom-control-input ~ .custom-control-label::after {\n  background: #876500;\n}\n\n.custom-switch.custom-switch-on-warning .custom-control-input:checked ~ .custom-control-label::before {\n  background: #ffc107;\n  border-color: #a07800;\n}\n\n.custom-switch.custom-switch-on-warning .custom-control-input:checked:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(255, 193, 7, 0.25);\n}\n\n.custom-switch.custom-switch-on-warning .custom-control-input:checked ~ .custom-control-label::after {\n  background: #ffe7a0;\n}\n\n.custom-switch.custom-switch-off-danger .custom-control-input ~ .custom-control-label::before {\n  background: #dc3545;\n  border-color: #921925;\n}\n\n.custom-switch.custom-switch-off-danger .custom-control-input:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(220, 53, 69, 0.25);\n}\n\n.custom-switch.custom-switch-off-danger .custom-control-input ~ .custom-control-label::after {\n  background: #7c151f;\n}\n\n.custom-switch.custom-switch-on-danger .custom-control-input:checked ~ .custom-control-label::before {\n  background: #dc3545;\n  border-color: #921925;\n}\n\n.custom-switch.custom-switch-on-danger .custom-control-input:checked:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(220, 53, 69, 0.25);\n}\n\n.custom-switch.custom-switch-on-danger .custom-control-input:checked ~ .custom-control-label::after {\n  background: #f3b7bd;\n}\n\n.custom-switch.custom-switch-off-light .custom-control-input ~ .custom-control-label::before {\n  background: #f8f9fa;\n  border-color: #bdc6d0;\n}\n\n.custom-switch.custom-switch-off-light .custom-control-input:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(248, 249, 250, 0.25);\n}\n\n.custom-switch.custom-switch-off-light .custom-control-input ~ .custom-control-label::after {\n  background: #aeb9c5;\n}\n\n.custom-switch.custom-switch-on-light .custom-control-input:checked ~ .custom-control-label::before {\n  background: #f8f9fa;\n  border-color: #bdc6d0;\n}\n\n.custom-switch.custom-switch-on-light .custom-control-input:checked:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(248, 249, 250, 0.25);\n}\n\n.custom-switch.custom-switch-on-light .custom-control-input:checked ~ .custom-control-label::after {\n  background: white;\n}\n\n.custom-switch.custom-switch-off-dark .custom-control-input ~ .custom-control-label::before {\n  background: #343a40;\n  border-color: #060708;\n}\n\n.custom-switch.custom-switch-off-dark .custom-control-input:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(52, 58, 64, 0.25);\n}\n\n.custom-switch.custom-switch-off-dark .custom-control-input ~ .custom-control-label::after {\n  background: black;\n}\n\n.custom-switch.custom-switch-on-dark .custom-control-input:checked ~ .custom-control-label::before {\n  background: #343a40;\n  border-color: #060708;\n}\n\n.custom-switch.custom-switch-on-dark .custom-control-input:checked:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(52, 58, 64, 0.25);\n}\n\n.custom-switch.custom-switch-on-dark .custom-control-input:checked ~ .custom-control-label::after {\n  background: #7a8793;\n}\n\n.custom-switch.custom-switch-off-navy .custom-control-input ~ .custom-control-label::before {\n  background: #001f3f;\n  border-color: black;\n}\n\n.custom-switch.custom-switch-off-navy .custom-control-input:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(0, 31, 63, 0.25);\n}\n\n.custom-switch.custom-switch-off-navy .custom-control-input ~ .custom-control-label::after {\n  background: black;\n}\n\n.custom-switch.custom-switch-on-navy .custom-control-input:checked ~ .custom-control-label::before {\n  background: #001f3f;\n  border-color: black;\n}\n\n.custom-switch.custom-switch-on-navy .custom-control-input:checked:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(0, 31, 63, 0.25);\n}\n\n.custom-switch.custom-switch-on-navy .custom-control-input:checked ~ .custom-control-label::after {\n  background: #006ad8;\n}\n\n.custom-switch.custom-switch-off-olive .custom-control-input ~ .custom-control-label::before {\n  background: #3d9970;\n  border-color: #20503b;\n}\n\n.custom-switch.custom-switch-off-olive .custom-control-input:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(61, 153, 112, 0.25);\n}\n\n.custom-switch.custom-switch-off-olive .custom-control-input ~ .custom-control-label::after {\n  background: #193e2d;\n}\n\n.custom-switch.custom-switch-on-olive .custom-control-input:checked ~ .custom-control-label::before {\n  background: #3d9970;\n  border-color: #20503b;\n}\n\n.custom-switch.custom-switch-on-olive .custom-control-input:checked:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(61, 153, 112, 0.25);\n}\n\n.custom-switch.custom-switch-on-olive .custom-control-input:checked ~ .custom-control-label::after {\n  background: #99d6bb;\n}\n\n.custom-switch.custom-switch-off-lime .custom-control-input ~ .custom-control-label::before {\n  background: #01ff70;\n  border-color: #009a43;\n}\n\n.custom-switch.custom-switch-off-lime .custom-control-input:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(1, 255, 112, 0.25);\n}\n\n.custom-switch.custom-switch-off-lime .custom-control-input ~ .custom-control-label::after {\n  background: #008138;\n}\n\n.custom-switch.custom-switch-on-lime .custom-control-input:checked ~ .custom-control-label::before {\n  background: #01ff70;\n  border-color: #009a43;\n}\n\n.custom-switch.custom-switch-on-lime .custom-control-input:checked:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(1, 255, 112, 0.25);\n}\n\n.custom-switch.custom-switch-on-lime .custom-control-input:checked ~ .custom-control-label::after {\n  background: #9affc6;\n}\n\n.custom-switch.custom-switch-off-fuchsia .custom-control-input ~ .custom-control-label::before {\n  background: #f012be;\n  border-color: #930974;\n}\n\n.custom-switch.custom-switch-off-fuchsia .custom-control-input:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(240, 18, 190, 0.25);\n}\n\n.custom-switch.custom-switch-off-fuchsia .custom-control-input ~ .custom-control-label::after {\n  background: #7b0861;\n}\n\n.custom-switch.custom-switch-on-fuchsia .custom-control-input:checked ~ .custom-control-label::before {\n  background: #f012be;\n  border-color: #930974;\n}\n\n.custom-switch.custom-switch-on-fuchsia .custom-control-input:checked:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(240, 18, 190, 0.25);\n}\n\n.custom-switch.custom-switch-on-fuchsia .custom-control-input:checked ~ .custom-control-label::after {\n  background: #f9a2e5;\n}\n\n.custom-switch.custom-switch-off-maroon .custom-control-input ~ .custom-control-label::before {\n  background: #d81b60;\n  border-color: #7d1038;\n}\n\n.custom-switch.custom-switch-off-maroon .custom-control-input:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(216, 27, 96, 0.25);\n}\n\n.custom-switch.custom-switch-off-maroon .custom-control-input ~ .custom-control-label::after {\n  background: #670d2e;\n}\n\n.custom-switch.custom-switch-on-maroon .custom-control-input:checked ~ .custom-control-label::before {\n  background: #d81b60;\n  border-color: #7d1038;\n}\n\n.custom-switch.custom-switch-on-maroon .custom-control-input:checked:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(216, 27, 96, 0.25);\n}\n\n.custom-switch.custom-switch-on-maroon .custom-control-input:checked ~ .custom-control-label::after {\n  background: #f29aba;\n}\n\n.custom-switch.custom-switch-off-blue .custom-control-input ~ .custom-control-label::before {\n  background: #007bff;\n  border-color: #004a99;\n}\n\n.custom-switch.custom-switch-off-blue .custom-control-input:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(0, 123, 255, 0.25);\n}\n\n.custom-switch.custom-switch-off-blue .custom-control-input ~ .custom-control-label::after {\n  background: #003e80;\n}\n\n.custom-switch.custom-switch-on-blue .custom-control-input:checked ~ .custom-control-label::before {\n  background: #007bff;\n  border-color: #004a99;\n}\n\n.custom-switch.custom-switch-on-blue .custom-control-input:checked:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(0, 123, 255, 0.25);\n}\n\n.custom-switch.custom-switch-on-blue .custom-control-input:checked ~ .custom-control-label::after {\n  background: #99caff;\n}\n\n.custom-switch.custom-switch-off-indigo .custom-control-input ~ .custom-control-label::before {\n  background: #6610f2;\n  border-color: #3d0894;\n}\n\n.custom-switch.custom-switch-off-indigo .custom-control-input:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(102, 16, 242, 0.25);\n}\n\n.custom-switch.custom-switch-off-indigo .custom-control-input ~ .custom-control-label::after {\n  background: #33077c;\n}\n\n.custom-switch.custom-switch-on-indigo .custom-control-input:checked ~ .custom-control-label::before {\n  background: #6610f2;\n  border-color: #3d0894;\n}\n\n.custom-switch.custom-switch-on-indigo .custom-control-input:checked:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(102, 16, 242, 0.25);\n}\n\n.custom-switch.custom-switch-on-indigo .custom-control-input:checked ~ .custom-control-label::after {\n  background: #c3a1fa;\n}\n\n.custom-switch.custom-switch-off-purple .custom-control-input ~ .custom-control-label::before {\n  background: #6f42c1;\n  border-color: #432776;\n}\n\n.custom-switch.custom-switch-off-purple .custom-control-input:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(111, 66, 193, 0.25);\n}\n\n.custom-switch.custom-switch-off-purple .custom-control-input ~ .custom-control-label::after {\n  background: #382063;\n}\n\n.custom-switch.custom-switch-on-purple .custom-control-input:checked ~ .custom-control-label::before {\n  background: #6f42c1;\n  border-color: #432776;\n}\n\n.custom-switch.custom-switch-on-purple .custom-control-input:checked:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(111, 66, 193, 0.25);\n}\n\n.custom-switch.custom-switch-on-purple .custom-control-input:checked ~ .custom-control-label::after {\n  background: #c7b5e7;\n}\n\n.custom-switch.custom-switch-off-pink .custom-control-input ~ .custom-control-label::before {\n  background: #e83e8c;\n  border-color: #ac145a;\n}\n\n.custom-switch.custom-switch-off-pink .custom-control-input:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(232, 62, 140, 0.25);\n}\n\n.custom-switch.custom-switch-off-pink .custom-control-input ~ .custom-control-label::after {\n  background: #95124e;\n}\n\n.custom-switch.custom-switch-on-pink .custom-control-input:checked ~ .custom-control-label::before {\n  background: #e83e8c;\n  border-color: #ac145a;\n}\n\n.custom-switch.custom-switch-on-pink .custom-control-input:checked:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(232, 62, 140, 0.25);\n}\n\n.custom-switch.custom-switch-on-pink .custom-control-input:checked ~ .custom-control-label::after {\n  background: #f8c7dd;\n}\n\n.custom-switch.custom-switch-off-red .custom-control-input ~ .custom-control-label::before {\n  background: #dc3545;\n  border-color: #921925;\n}\n\n.custom-switch.custom-switch-off-red .custom-control-input:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(220, 53, 69, 0.25);\n}\n\n.custom-switch.custom-switch-off-red .custom-control-input ~ .custom-control-label::after {\n  background: #7c151f;\n}\n\n.custom-switch.custom-switch-on-red .custom-control-input:checked ~ .custom-control-label::before {\n  background: #dc3545;\n  border-color: #921925;\n}\n\n.custom-switch.custom-switch-on-red .custom-control-input:checked:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(220, 53, 69, 0.25);\n}\n\n.custom-switch.custom-switch-on-red .custom-control-input:checked ~ .custom-control-label::after {\n  background: #f3b7bd;\n}\n\n.custom-switch.custom-switch-off-orange .custom-control-input ~ .custom-control-label::before {\n  background: #fd7e14;\n  border-color: #aa4e01;\n}\n\n.custom-switch.custom-switch-off-orange .custom-control-input:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(253, 126, 20, 0.25);\n}\n\n.custom-switch.custom-switch-off-orange .custom-control-input ~ .custom-control-label::after {\n  background: #904201;\n}\n\n.custom-switch.custom-switch-on-orange .custom-control-input:checked ~ .custom-control-label::before {\n  background: #fd7e14;\n  border-color: #aa4e01;\n}\n\n.custom-switch.custom-switch-on-orange .custom-control-input:checked:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(253, 126, 20, 0.25);\n}\n\n.custom-switch.custom-switch-on-orange .custom-control-input:checked ~ .custom-control-label::after {\n  background: #fed1ac;\n}\n\n.custom-switch.custom-switch-off-yellow .custom-control-input ~ .custom-control-label::before {\n  background: #ffc107;\n  border-color: #a07800;\n}\n\n.custom-switch.custom-switch-off-yellow .custom-control-input:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(255, 193, 7, 0.25);\n}\n\n.custom-switch.custom-switch-off-yellow .custom-control-input ~ .custom-control-label::after {\n  background: #876500;\n}\n\n.custom-switch.custom-switch-on-yellow .custom-control-input:checked ~ .custom-control-label::before {\n  background: #ffc107;\n  border-color: #a07800;\n}\n\n.custom-switch.custom-switch-on-yellow .custom-control-input:checked:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(255, 193, 7, 0.25);\n}\n\n.custom-switch.custom-switch-on-yellow .custom-control-input:checked ~ .custom-control-label::after {\n  background: #ffe7a0;\n}\n\n.custom-switch.custom-switch-off-green .custom-control-input ~ .custom-control-label::before {\n  background: #28a745;\n  border-color: #145523;\n}\n\n.custom-switch.custom-switch-off-green .custom-control-input:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(40, 167, 69, 0.25);\n}\n\n.custom-switch.custom-switch-off-green .custom-control-input ~ .custom-control-label::after {\n  background: #0f401b;\n}\n\n.custom-switch.custom-switch-on-green .custom-control-input:checked ~ .custom-control-label::before {\n  background: #28a745;\n  border-color: #145523;\n}\n\n.custom-switch.custom-switch-on-green .custom-control-input:checked:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(40, 167, 69, 0.25);\n}\n\n.custom-switch.custom-switch-on-green .custom-control-input:checked ~ .custom-control-label::after {\n  background: #86e29b;\n}\n\n.custom-switch.custom-switch-off-teal .custom-control-input ~ .custom-control-label::before {\n  background: #20c997;\n  border-color: #127155;\n}\n\n.custom-switch.custom-switch-off-teal .custom-control-input:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(32, 201, 151, 0.25);\n}\n\n.custom-switch.custom-switch-off-teal .custom-control-input ~ .custom-control-label::after {\n  background: #0e5b44;\n}\n\n.custom-switch.custom-switch-on-teal .custom-control-input:checked ~ .custom-control-label::before {\n  background: #20c997;\n  border-color: #127155;\n}\n\n.custom-switch.custom-switch-on-teal .custom-control-input:checked:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(32, 201, 151, 0.25);\n}\n\n.custom-switch.custom-switch-on-teal .custom-control-input:checked ~ .custom-control-label::after {\n  background: #94eed3;\n}\n\n.custom-switch.custom-switch-off-cyan .custom-control-input ~ .custom-control-label::before {\n  background: #17a2b8;\n  border-color: #0c525d;\n}\n\n.custom-switch.custom-switch-off-cyan .custom-control-input:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(23, 162, 184, 0.25);\n}\n\n.custom-switch.custom-switch-off-cyan .custom-control-input ~ .custom-control-label::after {\n  background: #093e47;\n}\n\n.custom-switch.custom-switch-on-cyan .custom-control-input:checked ~ .custom-control-label::before {\n  background: #17a2b8;\n  border-color: #0c525d;\n}\n\n.custom-switch.custom-switch-on-cyan .custom-control-input:checked:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(23, 162, 184, 0.25);\n}\n\n.custom-switch.custom-switch-on-cyan .custom-control-input:checked ~ .custom-control-label::after {\n  background: #7adeee;\n}\n\n.custom-switch.custom-switch-off-white .custom-control-input ~ .custom-control-label::before {\n  background: #ffffff;\n  border-color: #cccccc;\n}\n\n.custom-switch.custom-switch-off-white .custom-control-input:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(255, 255, 255, 0.25);\n}\n\n.custom-switch.custom-switch-off-white .custom-control-input ~ .custom-control-label::after {\n  background: #bfbfbf;\n}\n\n.custom-switch.custom-switch-on-white .custom-control-input:checked ~ .custom-control-label::before {\n  background: #ffffff;\n  border-color: #cccccc;\n}\n\n.custom-switch.custom-switch-on-white .custom-control-input:checked:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(255, 255, 255, 0.25);\n}\n\n.custom-switch.custom-switch-on-white .custom-control-input:checked ~ .custom-control-label::after {\n  background: white;\n}\n\n.custom-switch.custom-switch-off-gray .custom-control-input ~ .custom-control-label::before {\n  background: #6c757d;\n  border-color: #3d4246;\n}\n\n.custom-switch.custom-switch-off-gray .custom-control-input:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(108, 117, 125, 0.25);\n}\n\n.custom-switch.custom-switch-off-gray .custom-control-input ~ .custom-control-label::after {\n  background: #313539;\n}\n\n.custom-switch.custom-switch-on-gray .custom-control-input:checked ~ .custom-control-label::before {\n  background: #6c757d;\n  border-color: #3d4246;\n}\n\n.custom-switch.custom-switch-on-gray .custom-control-input:checked:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(108, 117, 125, 0.25);\n}\n\n.custom-switch.custom-switch-on-gray .custom-control-input:checked ~ .custom-control-label::after {\n  background: #bcc1c6;\n}\n\n.custom-switch.custom-switch-off-gray-dark .custom-control-input ~ .custom-control-label::before {\n  background: #343a40;\n  border-color: #060708;\n}\n\n.custom-switch.custom-switch-off-gray-dark .custom-control-input:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(52, 58, 64, 0.25);\n}\n\n.custom-switch.custom-switch-off-gray-dark .custom-control-input ~ .custom-control-label::after {\n  background: black;\n}\n\n.custom-switch.custom-switch-on-gray-dark .custom-control-input:checked ~ .custom-control-label::before {\n  background: #343a40;\n  border-color: #060708;\n}\n\n.custom-switch.custom-switch-on-gray-dark .custom-control-input:checked:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(52, 58, 64, 0.25);\n}\n\n.custom-switch.custom-switch-on-gray-dark .custom-control-input:checked ~ .custom-control-label::after {\n  background: #7a8793;\n}\n\n.custom-range.custom-range-primary:focus {\n  outline: none;\n}\n\n.custom-range.custom-range-primary:focus::-webkit-slider-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(0, 123, 255, 0.25);\n}\n\n.custom-range.custom-range-primary:focus::-moz-range-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(0, 123, 255, 0.25);\n}\n\n.custom-range.custom-range-primary:focus::-ms-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(0, 123, 255, 0.25);\n}\n\n.custom-range.custom-range-primary::-webkit-slider-thumb {\n  background-color: #007bff;\n}\n\n.custom-range.custom-range-primary::-webkit-slider-thumb:active {\n  background-color: #b3d7ff;\n}\n\n.custom-range.custom-range-primary::-moz-range-thumb {\n  background-color: #007bff;\n}\n\n.custom-range.custom-range-primary::-moz-range-thumb:active {\n  background-color: #b3d7ff;\n}\n\n.custom-range.custom-range-primary::-ms-thumb {\n  background-color: #007bff;\n}\n\n.custom-range.custom-range-primary::-ms-thumb:active {\n  background-color: #b3d7ff;\n}\n\n.custom-range.custom-range-secondary:focus {\n  outline: none;\n}\n\n.custom-range.custom-range-secondary:focus::-webkit-slider-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(108, 117, 125, 0.25);\n}\n\n.custom-range.custom-range-secondary:focus::-moz-range-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(108, 117, 125, 0.25);\n}\n\n.custom-range.custom-range-secondary:focus::-ms-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(108, 117, 125, 0.25);\n}\n\n.custom-range.custom-range-secondary::-webkit-slider-thumb {\n  background-color: #6c757d;\n}\n\n.custom-range.custom-range-secondary::-webkit-slider-thumb:active {\n  background-color: #caced1;\n}\n\n.custom-range.custom-range-secondary::-moz-range-thumb {\n  background-color: #6c757d;\n}\n\n.custom-range.custom-range-secondary::-moz-range-thumb:active {\n  background-color: #caced1;\n}\n\n.custom-range.custom-range-secondary::-ms-thumb {\n  background-color: #6c757d;\n}\n\n.custom-range.custom-range-secondary::-ms-thumb:active {\n  background-color: #caced1;\n}\n\n.custom-range.custom-range-success:focus {\n  outline: none;\n}\n\n.custom-range.custom-range-success:focus::-webkit-slider-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(40, 167, 69, 0.25);\n}\n\n.custom-range.custom-range-success:focus::-moz-range-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(40, 167, 69, 0.25);\n}\n\n.custom-range.custom-range-success:focus::-ms-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(40, 167, 69, 0.25);\n}\n\n.custom-range.custom-range-success::-webkit-slider-thumb {\n  background-color: #28a745;\n}\n\n.custom-range.custom-range-success::-webkit-slider-thumb:active {\n  background-color: #9be7ac;\n}\n\n.custom-range.custom-range-success::-moz-range-thumb {\n  background-color: #28a745;\n}\n\n.custom-range.custom-range-success::-moz-range-thumb:active {\n  background-color: #9be7ac;\n}\n\n.custom-range.custom-range-success::-ms-thumb {\n  background-color: #28a745;\n}\n\n.custom-range.custom-range-success::-ms-thumb:active {\n  background-color: #9be7ac;\n}\n\n.custom-range.custom-range-info:focus {\n  outline: none;\n}\n\n.custom-range.custom-range-info:focus::-webkit-slider-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(23, 162, 184, 0.25);\n}\n\n.custom-range.custom-range-info:focus::-moz-range-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(23, 162, 184, 0.25);\n}\n\n.custom-range.custom-range-info:focus::-ms-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(23, 162, 184, 0.25);\n}\n\n.custom-range.custom-range-info::-webkit-slider-thumb {\n  background-color: #17a2b8;\n}\n\n.custom-range.custom-range-info::-webkit-slider-thumb:active {\n  background-color: #90e4f1;\n}\n\n.custom-range.custom-range-info::-moz-range-thumb {\n  background-color: #17a2b8;\n}\n\n.custom-range.custom-range-info::-moz-range-thumb:active {\n  background-color: #90e4f1;\n}\n\n.custom-range.custom-range-info::-ms-thumb {\n  background-color: #17a2b8;\n}\n\n.custom-range.custom-range-info::-ms-thumb:active {\n  background-color: #90e4f1;\n}\n\n.custom-range.custom-range-warning:focus {\n  outline: none;\n}\n\n.custom-range.custom-range-warning:focus::-webkit-slider-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(255, 193, 7, 0.25);\n}\n\n.custom-range.custom-range-warning:focus::-moz-range-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(255, 193, 7, 0.25);\n}\n\n.custom-range.custom-range-warning:focus::-ms-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(255, 193, 7, 0.25);\n}\n\n.custom-range.custom-range-warning::-webkit-slider-thumb {\n  background-color: #ffc107;\n}\n\n.custom-range.custom-range-warning::-webkit-slider-thumb:active {\n  background-color: #ffeeba;\n}\n\n.custom-range.custom-range-warning::-moz-range-thumb {\n  background-color: #ffc107;\n}\n\n.custom-range.custom-range-warning::-moz-range-thumb:active {\n  background-color: #ffeeba;\n}\n\n.custom-range.custom-range-warning::-ms-thumb {\n  background-color: #ffc107;\n}\n\n.custom-range.custom-range-warning::-ms-thumb:active {\n  background-color: #ffeeba;\n}\n\n.custom-range.custom-range-danger:focus {\n  outline: none;\n}\n\n.custom-range.custom-range-danger:focus::-webkit-slider-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(220, 53, 69, 0.25);\n}\n\n.custom-range.custom-range-danger:focus::-moz-range-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(220, 53, 69, 0.25);\n}\n\n.custom-range.custom-range-danger:focus::-ms-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(220, 53, 69, 0.25);\n}\n\n.custom-range.custom-range-danger::-webkit-slider-thumb {\n  background-color: #dc3545;\n}\n\n.custom-range.custom-range-danger::-webkit-slider-thumb:active {\n  background-color: #f6cdd1;\n}\n\n.custom-range.custom-range-danger::-moz-range-thumb {\n  background-color: #dc3545;\n}\n\n.custom-range.custom-range-danger::-moz-range-thumb:active {\n  background-color: #f6cdd1;\n}\n\n.custom-range.custom-range-danger::-ms-thumb {\n  background-color: #dc3545;\n}\n\n.custom-range.custom-range-danger::-ms-thumb:active {\n  background-color: #f6cdd1;\n}\n\n.custom-range.custom-range-light:focus {\n  outline: none;\n}\n\n.custom-range.custom-range-light:focus::-webkit-slider-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(248, 249, 250, 0.25);\n}\n\n.custom-range.custom-range-light:focus::-moz-range-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(248, 249, 250, 0.25);\n}\n\n.custom-range.custom-range-light:focus::-ms-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(248, 249, 250, 0.25);\n}\n\n.custom-range.custom-range-light::-webkit-slider-thumb {\n  background-color: #f8f9fa;\n}\n\n.custom-range.custom-range-light::-webkit-slider-thumb:active {\n  background-color: white;\n}\n\n.custom-range.custom-range-light::-moz-range-thumb {\n  background-color: #f8f9fa;\n}\n\n.custom-range.custom-range-light::-moz-range-thumb:active {\n  background-color: white;\n}\n\n.custom-range.custom-range-light::-ms-thumb {\n  background-color: #f8f9fa;\n}\n\n.custom-range.custom-range-light::-ms-thumb:active {\n  background-color: white;\n}\n\n.custom-range.custom-range-dark:focus {\n  outline: none;\n}\n\n.custom-range.custom-range-dark:focus::-webkit-slider-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(52, 58, 64, 0.25);\n}\n\n.custom-range.custom-range-dark:focus::-moz-range-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(52, 58, 64, 0.25);\n}\n\n.custom-range.custom-range-dark:focus::-ms-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(52, 58, 64, 0.25);\n}\n\n.custom-range.custom-range-dark::-webkit-slider-thumb {\n  background-color: #343a40;\n}\n\n.custom-range.custom-range-dark::-webkit-slider-thumb:active {\n  background-color: #88939e;\n}\n\n.custom-range.custom-range-dark::-moz-range-thumb {\n  background-color: #343a40;\n}\n\n.custom-range.custom-range-dark::-moz-range-thumb:active {\n  background-color: #88939e;\n}\n\n.custom-range.custom-range-dark::-ms-thumb {\n  background-color: #343a40;\n}\n\n.custom-range.custom-range-dark::-ms-thumb:active {\n  background-color: #88939e;\n}\n\n.custom-range.custom-range-navy:focus {\n  outline: none;\n}\n\n.custom-range.custom-range-navy:focus::-webkit-slider-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(0, 31, 63, 0.25);\n}\n\n.custom-range.custom-range-navy:focus::-moz-range-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(0, 31, 63, 0.25);\n}\n\n.custom-range.custom-range-navy:focus::-ms-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(0, 31, 63, 0.25);\n}\n\n.custom-range.custom-range-navy::-webkit-slider-thumb {\n  background-color: #001f3f;\n}\n\n.custom-range.custom-range-navy::-webkit-slider-thumb:active {\n  background-color: #0077f2;\n}\n\n.custom-range.custom-range-navy::-moz-range-thumb {\n  background-color: #001f3f;\n}\n\n.custom-range.custom-range-navy::-moz-range-thumb:active {\n  background-color: #0077f2;\n}\n\n.custom-range.custom-range-navy::-ms-thumb {\n  background-color: #001f3f;\n}\n\n.custom-range.custom-range-navy::-ms-thumb:active {\n  background-color: #0077f2;\n}\n\n.custom-range.custom-range-olive:focus {\n  outline: none;\n}\n\n.custom-range.custom-range-olive:focus::-webkit-slider-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(61, 153, 112, 0.25);\n}\n\n.custom-range.custom-range-olive:focus::-moz-range-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(61, 153, 112, 0.25);\n}\n\n.custom-range.custom-range-olive:focus::-ms-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(61, 153, 112, 0.25);\n}\n\n.custom-range.custom-range-olive::-webkit-slider-thumb {\n  background-color: #3d9970;\n}\n\n.custom-range.custom-range-olive::-webkit-slider-thumb:active {\n  background-color: #abdec7;\n}\n\n.custom-range.custom-range-olive::-moz-range-thumb {\n  background-color: #3d9970;\n}\n\n.custom-range.custom-range-olive::-moz-range-thumb:active {\n  background-color: #abdec7;\n}\n\n.custom-range.custom-range-olive::-ms-thumb {\n  background-color: #3d9970;\n}\n\n.custom-range.custom-range-olive::-ms-thumb:active {\n  background-color: #abdec7;\n}\n\n.custom-range.custom-range-lime:focus {\n  outline: none;\n}\n\n.custom-range.custom-range-lime:focus::-webkit-slider-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(1, 255, 112, 0.25);\n}\n\n.custom-range.custom-range-lime:focus::-moz-range-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(1, 255, 112, 0.25);\n}\n\n.custom-range.custom-range-lime:focus::-ms-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(1, 255, 112, 0.25);\n}\n\n.custom-range.custom-range-lime::-webkit-slider-thumb {\n  background-color: #01ff70;\n}\n\n.custom-range.custom-range-lime::-webkit-slider-thumb:active {\n  background-color: #b4ffd4;\n}\n\n.custom-range.custom-range-lime::-moz-range-thumb {\n  background-color: #01ff70;\n}\n\n.custom-range.custom-range-lime::-moz-range-thumb:active {\n  background-color: #b4ffd4;\n}\n\n.custom-range.custom-range-lime::-ms-thumb {\n  background-color: #01ff70;\n}\n\n.custom-range.custom-range-lime::-ms-thumb:active {\n  background-color: #b4ffd4;\n}\n\n.custom-range.custom-range-fuchsia:focus {\n  outline: none;\n}\n\n.custom-range.custom-range-fuchsia:focus::-webkit-slider-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(240, 18, 190, 0.25);\n}\n\n.custom-range.custom-range-fuchsia:focus::-moz-range-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(240, 18, 190, 0.25);\n}\n\n.custom-range.custom-range-fuchsia:focus::-ms-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(240, 18, 190, 0.25);\n}\n\n.custom-range.custom-range-fuchsia::-webkit-slider-thumb {\n  background-color: #f012be;\n}\n\n.custom-range.custom-range-fuchsia::-webkit-slider-thumb:active {\n  background-color: #fbbaec;\n}\n\n.custom-range.custom-range-fuchsia::-moz-range-thumb {\n  background-color: #f012be;\n}\n\n.custom-range.custom-range-fuchsia::-moz-range-thumb:active {\n  background-color: #fbbaec;\n}\n\n.custom-range.custom-range-fuchsia::-ms-thumb {\n  background-color: #f012be;\n}\n\n.custom-range.custom-range-fuchsia::-ms-thumb:active {\n  background-color: #fbbaec;\n}\n\n.custom-range.custom-range-maroon:focus {\n  outline: none;\n}\n\n.custom-range.custom-range-maroon:focus::-webkit-slider-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(216, 27, 96, 0.25);\n}\n\n.custom-range.custom-range-maroon:focus::-moz-range-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(216, 27, 96, 0.25);\n}\n\n.custom-range.custom-range-maroon:focus::-ms-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(216, 27, 96, 0.25);\n}\n\n.custom-range.custom-range-maroon::-webkit-slider-thumb {\n  background-color: #d81b60;\n}\n\n.custom-range.custom-range-maroon::-webkit-slider-thumb:active {\n  background-color: #f5b0c9;\n}\n\n.custom-range.custom-range-maroon::-moz-range-thumb {\n  background-color: #d81b60;\n}\n\n.custom-range.custom-range-maroon::-moz-range-thumb:active {\n  background-color: #f5b0c9;\n}\n\n.custom-range.custom-range-maroon::-ms-thumb {\n  background-color: #d81b60;\n}\n\n.custom-range.custom-range-maroon::-ms-thumb:active {\n  background-color: #f5b0c9;\n}\n\n.custom-range.custom-range-blue:focus {\n  outline: none;\n}\n\n.custom-range.custom-range-blue:focus::-webkit-slider-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(0, 123, 255, 0.25);\n}\n\n.custom-range.custom-range-blue:focus::-moz-range-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(0, 123, 255, 0.25);\n}\n\n.custom-range.custom-range-blue:focus::-ms-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(0, 123, 255, 0.25);\n}\n\n.custom-range.custom-range-blue::-webkit-slider-thumb {\n  background-color: #007bff;\n}\n\n.custom-range.custom-range-blue::-webkit-slider-thumb:active {\n  background-color: #b3d7ff;\n}\n\n.custom-range.custom-range-blue::-moz-range-thumb {\n  background-color: #007bff;\n}\n\n.custom-range.custom-range-blue::-moz-range-thumb:active {\n  background-color: #b3d7ff;\n}\n\n.custom-range.custom-range-blue::-ms-thumb {\n  background-color: #007bff;\n}\n\n.custom-range.custom-range-blue::-ms-thumb:active {\n  background-color: #b3d7ff;\n}\n\n.custom-range.custom-range-indigo:focus {\n  outline: none;\n}\n\n.custom-range.custom-range-indigo:focus::-webkit-slider-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(102, 16, 242, 0.25);\n}\n\n.custom-range.custom-range-indigo:focus::-moz-range-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(102, 16, 242, 0.25);\n}\n\n.custom-range.custom-range-indigo:focus::-ms-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(102, 16, 242, 0.25);\n}\n\n.custom-range.custom-range-indigo::-webkit-slider-thumb {\n  background-color: #6610f2;\n}\n\n.custom-range.custom-range-indigo::-webkit-slider-thumb:active {\n  background-color: #d2b9fb;\n}\n\n.custom-range.custom-range-indigo::-moz-range-thumb {\n  background-color: #6610f2;\n}\n\n.custom-range.custom-range-indigo::-moz-range-thumb:active {\n  background-color: #d2b9fb;\n}\n\n.custom-range.custom-range-indigo::-ms-thumb {\n  background-color: #6610f2;\n}\n\n.custom-range.custom-range-indigo::-ms-thumb:active {\n  background-color: #d2b9fb;\n}\n\n.custom-range.custom-range-purple:focus {\n  outline: none;\n}\n\n.custom-range.custom-range-purple:focus::-webkit-slider-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(111, 66, 193, 0.25);\n}\n\n.custom-range.custom-range-purple:focus::-moz-range-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(111, 66, 193, 0.25);\n}\n\n.custom-range.custom-range-purple:focus::-ms-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(111, 66, 193, 0.25);\n}\n\n.custom-range.custom-range-purple::-webkit-slider-thumb {\n  background-color: #6f42c1;\n}\n\n.custom-range.custom-range-purple::-webkit-slider-thumb:active {\n  background-color: #d5c8ed;\n}\n\n.custom-range.custom-range-purple::-moz-range-thumb {\n  background-color: #6f42c1;\n}\n\n.custom-range.custom-range-purple::-moz-range-thumb:active {\n  background-color: #d5c8ed;\n}\n\n.custom-range.custom-range-purple::-ms-thumb {\n  background-color: #6f42c1;\n}\n\n.custom-range.custom-range-purple::-ms-thumb:active {\n  background-color: #d5c8ed;\n}\n\n.custom-range.custom-range-pink:focus {\n  outline: none;\n}\n\n.custom-range.custom-range-pink:focus::-webkit-slider-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(232, 62, 140, 0.25);\n}\n\n.custom-range.custom-range-pink:focus::-moz-range-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(232, 62, 140, 0.25);\n}\n\n.custom-range.custom-range-pink:focus::-ms-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(232, 62, 140, 0.25);\n}\n\n.custom-range.custom-range-pink::-webkit-slider-thumb {\n  background-color: #e83e8c;\n}\n\n.custom-range.custom-range-pink::-webkit-slider-thumb:active {\n  background-color: #fbddeb;\n}\n\n.custom-range.custom-range-pink::-moz-range-thumb {\n  background-color: #e83e8c;\n}\n\n.custom-range.custom-range-pink::-moz-range-thumb:active {\n  background-color: #fbddeb;\n}\n\n.custom-range.custom-range-pink::-ms-thumb {\n  background-color: #e83e8c;\n}\n\n.custom-range.custom-range-pink::-ms-thumb:active {\n  background-color: #fbddeb;\n}\n\n.custom-range.custom-range-red:focus {\n  outline: none;\n}\n\n.custom-range.custom-range-red:focus::-webkit-slider-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(220, 53, 69, 0.25);\n}\n\n.custom-range.custom-range-red:focus::-moz-range-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(220, 53, 69, 0.25);\n}\n\n.custom-range.custom-range-red:focus::-ms-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(220, 53, 69, 0.25);\n}\n\n.custom-range.custom-range-red::-webkit-slider-thumb {\n  background-color: #dc3545;\n}\n\n.custom-range.custom-range-red::-webkit-slider-thumb:active {\n  background-color: #f6cdd1;\n}\n\n.custom-range.custom-range-red::-moz-range-thumb {\n  background-color: #dc3545;\n}\n\n.custom-range.custom-range-red::-moz-range-thumb:active {\n  background-color: #f6cdd1;\n}\n\n.custom-range.custom-range-red::-ms-thumb {\n  background-color: #dc3545;\n}\n\n.custom-range.custom-range-red::-ms-thumb:active {\n  background-color: #f6cdd1;\n}\n\n.custom-range.custom-range-orange:focus {\n  outline: none;\n}\n\n.custom-range.custom-range-orange:focus::-webkit-slider-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(253, 126, 20, 0.25);\n}\n\n.custom-range.custom-range-orange:focus::-moz-range-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(253, 126, 20, 0.25);\n}\n\n.custom-range.custom-range-orange:focus::-ms-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(253, 126, 20, 0.25);\n}\n\n.custom-range.custom-range-orange::-webkit-slider-thumb {\n  background-color: #fd7e14;\n}\n\n.custom-range.custom-range-orange::-webkit-slider-thumb:active {\n  background-color: #ffdfc5;\n}\n\n.custom-range.custom-range-orange::-moz-range-thumb {\n  background-color: #fd7e14;\n}\n\n.custom-range.custom-range-orange::-moz-range-thumb:active {\n  background-color: #ffdfc5;\n}\n\n.custom-range.custom-range-orange::-ms-thumb {\n  background-color: #fd7e14;\n}\n\n.custom-range.custom-range-orange::-ms-thumb:active {\n  background-color: #ffdfc5;\n}\n\n.custom-range.custom-range-yellow:focus {\n  outline: none;\n}\n\n.custom-range.custom-range-yellow:focus::-webkit-slider-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(255, 193, 7, 0.25);\n}\n\n.custom-range.custom-range-yellow:focus::-moz-range-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(255, 193, 7, 0.25);\n}\n\n.custom-range.custom-range-yellow:focus::-ms-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(255, 193, 7, 0.25);\n}\n\n.custom-range.custom-range-yellow::-webkit-slider-thumb {\n  background-color: #ffc107;\n}\n\n.custom-range.custom-range-yellow::-webkit-slider-thumb:active {\n  background-color: #ffeeba;\n}\n\n.custom-range.custom-range-yellow::-moz-range-thumb {\n  background-color: #ffc107;\n}\n\n.custom-range.custom-range-yellow::-moz-range-thumb:active {\n  background-color: #ffeeba;\n}\n\n.custom-range.custom-range-yellow::-ms-thumb {\n  background-color: #ffc107;\n}\n\n.custom-range.custom-range-yellow::-ms-thumb:active {\n  background-color: #ffeeba;\n}\n\n.custom-range.custom-range-green:focus {\n  outline: none;\n}\n\n.custom-range.custom-range-green:focus::-webkit-slider-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(40, 167, 69, 0.25);\n}\n\n.custom-range.custom-range-green:focus::-moz-range-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(40, 167, 69, 0.25);\n}\n\n.custom-range.custom-range-green:focus::-ms-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(40, 167, 69, 0.25);\n}\n\n.custom-range.custom-range-green::-webkit-slider-thumb {\n  background-color: #28a745;\n}\n\n.custom-range.custom-range-green::-webkit-slider-thumb:active {\n  background-color: #9be7ac;\n}\n\n.custom-range.custom-range-green::-moz-range-thumb {\n  background-color: #28a745;\n}\n\n.custom-range.custom-range-green::-moz-range-thumb:active {\n  background-color: #9be7ac;\n}\n\n.custom-range.custom-range-green::-ms-thumb {\n  background-color: #28a745;\n}\n\n.custom-range.custom-range-green::-ms-thumb:active {\n  background-color: #9be7ac;\n}\n\n.custom-range.custom-range-teal:focus {\n  outline: none;\n}\n\n.custom-range.custom-range-teal:focus::-webkit-slider-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(32, 201, 151, 0.25);\n}\n\n.custom-range.custom-range-teal:focus::-moz-range-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(32, 201, 151, 0.25);\n}\n\n.custom-range.custom-range-teal:focus::-ms-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(32, 201, 151, 0.25);\n}\n\n.custom-range.custom-range-teal::-webkit-slider-thumb {\n  background-color: #20c997;\n}\n\n.custom-range.custom-range-teal::-webkit-slider-thumb:active {\n  background-color: #aaf1dc;\n}\n\n.custom-range.custom-range-teal::-moz-range-thumb {\n  background-color: #20c997;\n}\n\n.custom-range.custom-range-teal::-moz-range-thumb:active {\n  background-color: #aaf1dc;\n}\n\n.custom-range.custom-range-teal::-ms-thumb {\n  background-color: #20c997;\n}\n\n.custom-range.custom-range-teal::-ms-thumb:active {\n  background-color: #aaf1dc;\n}\n\n.custom-range.custom-range-cyan:focus {\n  outline: none;\n}\n\n.custom-range.custom-range-cyan:focus::-webkit-slider-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(23, 162, 184, 0.25);\n}\n\n.custom-range.custom-range-cyan:focus::-moz-range-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(23, 162, 184, 0.25);\n}\n\n.custom-range.custom-range-cyan:focus::-ms-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(23, 162, 184, 0.25);\n}\n\n.custom-range.custom-range-cyan::-webkit-slider-thumb {\n  background-color: #17a2b8;\n}\n\n.custom-range.custom-range-cyan::-webkit-slider-thumb:active {\n  background-color: #90e4f1;\n}\n\n.custom-range.custom-range-cyan::-moz-range-thumb {\n  background-color: #17a2b8;\n}\n\n.custom-range.custom-range-cyan::-moz-range-thumb:active {\n  background-color: #90e4f1;\n}\n\n.custom-range.custom-range-cyan::-ms-thumb {\n  background-color: #17a2b8;\n}\n\n.custom-range.custom-range-cyan::-ms-thumb:active {\n  background-color: #90e4f1;\n}\n\n.custom-range.custom-range-white:focus {\n  outline: none;\n}\n\n.custom-range.custom-range-white:focus::-webkit-slider-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(255, 255, 255, 0.25);\n}\n\n.custom-range.custom-range-white:focus::-moz-range-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(255, 255, 255, 0.25);\n}\n\n.custom-range.custom-range-white:focus::-ms-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(255, 255, 255, 0.25);\n}\n\n.custom-range.custom-range-white::-webkit-slider-thumb {\n  background-color: #ffffff;\n}\n\n.custom-range.custom-range-white::-webkit-slider-thumb:active {\n  background-color: white;\n}\n\n.custom-range.custom-range-white::-moz-range-thumb {\n  background-color: #ffffff;\n}\n\n.custom-range.custom-range-white::-moz-range-thumb:active {\n  background-color: white;\n}\n\n.custom-range.custom-range-white::-ms-thumb {\n  background-color: #ffffff;\n}\n\n.custom-range.custom-range-white::-ms-thumb:active {\n  background-color: white;\n}\n\n.custom-range.custom-range-gray:focus {\n  outline: none;\n}\n\n.custom-range.custom-range-gray:focus::-webkit-slider-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(108, 117, 125, 0.25);\n}\n\n.custom-range.custom-range-gray:focus::-moz-range-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(108, 117, 125, 0.25);\n}\n\n.custom-range.custom-range-gray:focus::-ms-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(108, 117, 125, 0.25);\n}\n\n.custom-range.custom-range-gray::-webkit-slider-thumb {\n  background-color: #6c757d;\n}\n\n.custom-range.custom-range-gray::-webkit-slider-thumb:active {\n  background-color: #caced1;\n}\n\n.custom-range.custom-range-gray::-moz-range-thumb {\n  background-color: #6c757d;\n}\n\n.custom-range.custom-range-gray::-moz-range-thumb:active {\n  background-color: #caced1;\n}\n\n.custom-range.custom-range-gray::-ms-thumb {\n  background-color: #6c757d;\n}\n\n.custom-range.custom-range-gray::-ms-thumb:active {\n  background-color: #caced1;\n}\n\n.custom-range.custom-range-gray-dark:focus {\n  outline: none;\n}\n\n.custom-range.custom-range-gray-dark:focus::-webkit-slider-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(52, 58, 64, 0.25);\n}\n\n.custom-range.custom-range-gray-dark:focus::-moz-range-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(52, 58, 64, 0.25);\n}\n\n.custom-range.custom-range-gray-dark:focus::-ms-thumb {\n  box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(52, 58, 64, 0.25);\n}\n\n.custom-range.custom-range-gray-dark::-webkit-slider-thumb {\n  background-color: #343a40;\n}\n\n.custom-range.custom-range-gray-dark::-webkit-slider-thumb:active {\n  background-color: #88939e;\n}\n\n.custom-range.custom-range-gray-dark::-moz-range-thumb {\n  background-color: #343a40;\n}\n\n.custom-range.custom-range-gray-dark::-moz-range-thumb:active {\n  background-color: #88939e;\n}\n\n.custom-range.custom-range-gray-dark::-ms-thumb {\n  background-color: #343a40;\n}\n\n.custom-range.custom-range-gray-dark::-ms-thumb:active {\n  background-color: #88939e;\n}\n\n.progress {\n  box-shadow: none;\n  border-radius: 1px;\n}\n\n.progress.vertical {\n  display: inline-block;\n  height: 200px;\n  margin-right: 10px;\n  position: relative;\n  width: 30px;\n}\n\n.progress.vertical > .progress-bar {\n  bottom: 0;\n  position: absolute;\n  width: 100%;\n}\n\n.progress.vertical.sm, .progress.vertical.progress-sm {\n  width: 20px;\n}\n\n.progress.vertical.xs, .progress.vertical.progress-xs {\n  width: 10px;\n}\n\n.progress.vertical.xxs, .progress.vertical.progress-xxs {\n  width: 3px;\n}\n\n.progress-group {\n  margin-bottom: 0.5rem;\n}\n\n.progress-sm {\n  height: 10px;\n}\n\n.progress-xs {\n  height: 7px;\n}\n\n.progress-xxs {\n  height: 3px;\n}\n\n.table tr > td .progress {\n  margin: 0;\n}\n\n.card {\n  box-shadow: 0 0 1px rgba(0, 0, 0, 0.125), 0 1px 3px rgba(0, 0, 0, 0.2);\n  margin-bottom: 1rem;\n}\n\n.card.bg-dark .card-header {\n  border-color: #383f45;\n}\n\n.card.bg-dark,\n.card.bg-dark .card-body {\n  color: #ffffff;\n}\n\n.card.maximized-card {\n  height: 100% !important;\n  left: 0;\n  max-height: 100% !important;\n  max-width: 100% !important;\n  position: fixed;\n  top: 0;\n  width: 100% !important;\n  z-index: 9999;\n}\n\n.card.maximized-card.was-collapsed .card-body {\n  display: block !important;\n}\n\n.card.maximized-card [data-widget='collapse'] {\n  display: none;\n}\n\n.card.maximized-card .card-header,\n.card.maximized-card .card-footer {\n  border-radius: 0 !important;\n}\n\n.card.collapsed-card .card-body,\n.card.collapsed-card .card-footer {\n  display: none;\n}\n\n.card .nav.flex-column > li {\n  border-bottom: 1px solid rgba(0, 0, 0, 0.125);\n  margin: 0;\n}\n\n.card .nav.flex-column > li:last-of-type {\n  border-bottom: 0;\n}\n\n.card.height-control .card-body {\n  max-height: 300px;\n  overflow: auto;\n}\n\n.card .border-right {\n  border-right: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card .border-left {\n  border-left: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card.card-tabs:not(.card-outline) .card-header {\n  border-bottom: 0;\n}\n\n.card.card-tabs:not(.card-outline) .card-header .nav-item:first-child .nav-link {\n  margin-left: -1px;\n}\n\n.card.card-tabs.card-outline .nav-item {\n  border-bottom: 0;\n}\n\n.card.card-tabs.card-outline .nav-item:first-child .nav-link {\n  border-left: 0;\n  margin-left: 0;\n}\n\n.card.card-outline-tabs {\n  border-top: 0;\n}\n\n.card.card-outline-tabs .card-header .nav-item:first-child .nav-link {\n  border-left: 0;\n  margin-left: 0;\n}\n\n.card.card-outline-tabs .card-header a {\n  border-top: 3px solid transparent;\n}\n\n.card.card-outline-tabs .card-header a:hover {\n  border-top: 3px solid #dee2e6;\n}\n\n.card.card-outline-tabs .card-header a.active:hover {\n  margin-top: 0;\n}\n\nhtml.maximized-card {\n  overflow: hidden;\n}\n\n.card-header::after,\n.card-body::after,\n.card-footer::after {\n  display: block;\n  clear: both;\n  content: \"\";\n}\n\n.card-header {\n  background-color: transparent;\n  border-bottom: 1px solid rgba(0, 0, 0, 0.125);\n  padding: 0.75rem 1.25rem;\n  position: relative;\n  border-top-left-radius: 0.25rem;\n  border-top-right-radius: 0.25rem;\n}\n\n.collapsed-card .card-header {\n  border-bottom: 0;\n}\n\n.card-header > .card-tools {\n  float: right;\n  margin-right: -0.625rem;\n}\n\n.card-header > .card-tools .input-group,\n.card-header > .card-tools .nav,\n.card-header > .card-tools .pagination {\n  margin-bottom: -0.3rem;\n  margin-top: -0.3rem;\n}\n\n.card-header > .card-tools [data-toggle='tooltip'] {\n  position: relative;\n}\n\n.card-title {\n  float: left;\n  font-size: 1.1rem;\n  font-weight: 400;\n  margin: 0;\n}\n\n.card-text {\n  clear: both;\n}\n\n.btn-tool {\n  background: transparent;\n  color: #adb5bd;\n  font-size: 0.875rem;\n  margin: -0.75rem 0;\n  padding: .25rem .5rem;\n}\n\n.btn-group.show .btn-tool, .btn-tool:hover {\n  color: #495057;\n}\n\n.show .btn-tool, .btn-tool:focus {\n  box-shadow: none !important;\n}\n\n.text-sm .card-title {\n  font-size: 1rem;\n}\n\n.text-sm .nav-link {\n  padding: 0.4rem 0.8rem;\n}\n\n.card-body > .table {\n  margin-bottom: 0;\n}\n\n.card-body > .table > thead > tr > th,\n.card-body > .table > thead > tr > td {\n  border-top-width: 0;\n}\n\n.card-body .fc {\n  margin-top: 5px;\n}\n\n.card-body .full-width-chart {\n  margin: -19px;\n}\n\n.card-body.p-0 .full-width-chart {\n  margin: -9px;\n}\n\n.chart-legend {\n  padding-left: 0;\n  list-style: none;\n  margin: 10px 0;\n}\n\n@media (max-width: 576px) {\n  .chart-legend > li {\n    float: left;\n    margin-right: 10px;\n  }\n}\n\n.card-comments {\n  background: #f8f9fa;\n}\n\n.card-comments .card-comment {\n  border-bottom: 1px solid #e9ecef;\n  padding: 8px 0;\n}\n\n.card-comments .card-comment::after {\n  display: block;\n  clear: both;\n  content: \"\";\n}\n\n.card-comments .card-comment:last-of-type {\n  border-bottom: 0;\n}\n\n.card-comments .card-comment:first-of-type {\n  padding-top: 0;\n}\n\n.card-comments .card-comment img {\n  height: 1.875rem;\n  width: 1.875rem;\n  float: left;\n}\n\n.card-comments .comment-text {\n  color: #78838e;\n  margin-left: 40px;\n}\n\n.card-comments .username {\n  color: #495057;\n  display: block;\n  font-weight: 600;\n}\n\n.card-comments .text-muted {\n  font-size: 12px;\n  font-weight: 400;\n}\n\n.todo-list {\n  list-style: none;\n  margin: 0;\n  overflow: auto;\n  padding: 0;\n}\n\n.todo-list > li {\n  border-radius: 2px;\n  background: #f8f9fa;\n  border-left: 2px solid #e9ecef;\n  color: #495057;\n  margin-bottom: 2px;\n  padding: 10px;\n}\n\n.todo-list > li:last-of-type {\n  margin-bottom: 0;\n}\n\n.todo-list > li > input[type='checkbox'] {\n  margin: 0 10px 0 5px;\n}\n\n.todo-list > li .text {\n  display: inline-block;\n  font-weight: 600;\n  margin-left: 5px;\n}\n\n.todo-list > li .badge {\n  font-size: .7rem;\n  margin-left: 10px;\n}\n\n.todo-list > li .tools {\n  color: #dc3545;\n  display: none;\n  float: right;\n}\n\n.todo-list > li .tools > .fa,\n.todo-list > li .tools > .fas,\n.todo-list > li .tools > .far,\n.todo-list > li .tools > .fab,\n.todo-list > li .tools > .glyphicon,\n.todo-list > li .tools > .ion {\n  cursor: pointer;\n  margin-right: 5px;\n}\n\n.todo-list > li:hover .tools {\n  display: inline-block;\n}\n\n.todo-list > li.done {\n  color: #697582;\n}\n\n.todo-list > li.done .text {\n  font-weight: 500;\n  text-decoration: line-through;\n}\n\n.todo-list > li.done .badge {\n  background: #adb5bd !important;\n}\n\n.todo-list .primary {\n  border-left-color: #007bff;\n}\n\n.todo-list .secondary {\n  border-left-color: #6c757d;\n}\n\n.todo-list .success {\n  border-left-color: #28a745;\n}\n\n.todo-list .info {\n  border-left-color: #17a2b8;\n}\n\n.todo-list .warning {\n  border-left-color: #ffc107;\n}\n\n.todo-list .danger {\n  border-left-color: #dc3545;\n}\n\n.todo-list .light {\n  border-left-color: #f8f9fa;\n}\n\n.todo-list .dark {\n  border-left-color: #343a40;\n}\n\n.todo-list .navy {\n  border-left-color: #001f3f;\n}\n\n.todo-list .olive {\n  border-left-color: #3d9970;\n}\n\n.todo-list .lime {\n  border-left-color: #01ff70;\n}\n\n.todo-list .fuchsia {\n  border-left-color: #f012be;\n}\n\n.todo-list .maroon {\n  border-left-color: #d81b60;\n}\n\n.todo-list .blue {\n  border-left-color: #007bff;\n}\n\n.todo-list .indigo {\n  border-left-color: #6610f2;\n}\n\n.todo-list .purple {\n  border-left-color: #6f42c1;\n}\n\n.todo-list .pink {\n  border-left-color: #e83e8c;\n}\n\n.todo-list .red {\n  border-left-color: #dc3545;\n}\n\n.todo-list .orange {\n  border-left-color: #fd7e14;\n}\n\n.todo-list .yellow {\n  border-left-color: #ffc107;\n}\n\n.todo-list .green {\n  border-left-color: #28a745;\n}\n\n.todo-list .teal {\n  border-left-color: #20c997;\n}\n\n.todo-list .cyan {\n  border-left-color: #17a2b8;\n}\n\n.todo-list .white {\n  border-left-color: #ffffff;\n}\n\n.todo-list .gray {\n  border-left-color: #6c757d;\n}\n\n.todo-list .gray-dark {\n  border-left-color: #343a40;\n}\n\n.todo-list .handle {\n  cursor: move;\n  display: inline-block;\n  margin: 0 5px;\n}\n\n.card-input {\n  max-width: 200px;\n}\n\n.card-primary.card-tabs:not(.card-outline) .card-header {\n  background-color: #007bff;\n}\n\n.card-primary.card-tabs:not(.card-outline) .card-header,\n.card-primary.card-tabs:not(.card-outline) .card-header a {\n  color: #ffffff;\n}\n\n.card-primary.card-tabs:not(.card-outline) .card-header a.active {\n  color: #1F2D3D;\n}\n\n.card-primary.card-tabs.card-outline {\n  border-top: 3px solid #007bff;\n}\n\n.card-primary.card-outline-tabs .card-header a:hover {\n  border-top: 3px solid #dee2e6;\n}\n\n.card-primary.card-outline-tabs .card-header a.active {\n  border-top: 3px solid #007bff;\n}\n\n.bg-primary .btn-tool,\n.bg-gradient-primary .btn-tool,\n.card-primary:not(.card-outline) .btn-tool {\n  color: rgba(255, 255, 255, 0.8);\n}\n\n.bg-primary .btn-tool:hover,\n.bg-gradient-primary .btn-tool:hover,\n.card-primary:not(.card-outline) .btn-tool:hover {\n  color: #ffffff;\n}\n\n.card.bg-primary .bootstrap-datetimepicker-widget .table td,\n.card.bg-primary .bootstrap-datetimepicker-widget .table th,\n.card.bg-gradient-primary .bootstrap-datetimepicker-widget .table td,\n.card.bg-gradient-primary .bootstrap-datetimepicker-widget .table th {\n  border: none;\n}\n\n.card.bg-primary .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,\n.card.bg-primary .bootstrap-datetimepicker-widget table td.day:hover,\n.card.bg-primary .bootstrap-datetimepicker-widget table td.hour:hover,\n.card.bg-primary .bootstrap-datetimepicker-widget table td.minute:hover,\n.card.bg-primary .bootstrap-datetimepicker-widget table td.second:hover,\n.card.bg-gradient-primary .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,\n.card.bg-gradient-primary .bootstrap-datetimepicker-widget table td.day:hover,\n.card.bg-gradient-primary .bootstrap-datetimepicker-widget table td.hour:hover,\n.card.bg-gradient-primary .bootstrap-datetimepicker-widget table td.minute:hover,\n.card.bg-gradient-primary .bootstrap-datetimepicker-widget table td.second:hover {\n  background: #0067d6;\n  color: #ffffff;\n}\n\n.card.bg-primary .bootstrap-datetimepicker-widget table td.today::before,\n.card.bg-gradient-primary .bootstrap-datetimepicker-widget table td.today::before {\n  border-bottom-color: #ffffff;\n}\n\n.card.bg-primary .bootstrap-datetimepicker-widget table td.active,\n.card.bg-primary .bootstrap-datetimepicker-widget table td.active:hover,\n.card.bg-gradient-primary .bootstrap-datetimepicker-widget table td.active,\n.card.bg-gradient-primary .bootstrap-datetimepicker-widget table td.active:hover {\n  background: #3395ff;\n  color: #ffffff;\n}\n\n.card-secondary.card-tabs:not(.card-outline) .card-header {\n  background-color: #6c757d;\n}\n\n.card-secondary.card-tabs:not(.card-outline) .card-header,\n.card-secondary.card-tabs:not(.card-outline) .card-header a {\n  color: #ffffff;\n}\n\n.card-secondary.card-tabs:not(.card-outline) .card-header a.active {\n  color: #1F2D3D;\n}\n\n.card-secondary.card-tabs.card-outline {\n  border-top: 3px solid #6c757d;\n}\n\n.card-secondary.card-outline-tabs .card-header a:hover {\n  border-top: 3px solid #dee2e6;\n}\n\n.card-secondary.card-outline-tabs .card-header a.active {\n  border-top: 3px solid #6c757d;\n}\n\n.bg-secondary .btn-tool,\n.bg-gradient-secondary .btn-tool,\n.card-secondary:not(.card-outline) .btn-tool {\n  color: rgba(255, 255, 255, 0.8);\n}\n\n.bg-secondary .btn-tool:hover,\n.bg-gradient-secondary .btn-tool:hover,\n.card-secondary:not(.card-outline) .btn-tool:hover {\n  color: #ffffff;\n}\n\n.card.bg-secondary .bootstrap-datetimepicker-widget .table td,\n.card.bg-secondary .bootstrap-datetimepicker-widget .table th,\n.card.bg-gradient-secondary .bootstrap-datetimepicker-widget .table td,\n.card.bg-gradient-secondary .bootstrap-datetimepicker-widget .table th {\n  border: none;\n}\n\n.card.bg-secondary .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,\n.card.bg-secondary .bootstrap-datetimepicker-widget table td.day:hover,\n.card.bg-secondary .bootstrap-datetimepicker-widget table td.hour:hover,\n.card.bg-secondary .bootstrap-datetimepicker-widget table td.minute:hover,\n.card.bg-secondary .bootstrap-datetimepicker-widget table td.second:hover,\n.card.bg-gradient-secondary .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,\n.card.bg-gradient-secondary .bootstrap-datetimepicker-widget table td.day:hover,\n.card.bg-gradient-secondary .bootstrap-datetimepicker-widget table td.hour:hover,\n.card.bg-gradient-secondary .bootstrap-datetimepicker-widget table td.minute:hover,\n.card.bg-gradient-secondary .bootstrap-datetimepicker-widget table td.second:hover {\n  background: #596167;\n  color: #ffffff;\n}\n\n.card.bg-secondary .bootstrap-datetimepicker-widget table td.today::before,\n.card.bg-gradient-secondary .bootstrap-datetimepicker-widget table td.today::before {\n  border-bottom-color: #ffffff;\n}\n\n.card.bg-secondary .bootstrap-datetimepicker-widget table td.active,\n.card.bg-secondary .bootstrap-datetimepicker-widget table td.active:hover,\n.card.bg-gradient-secondary .bootstrap-datetimepicker-widget table td.active,\n.card.bg-gradient-secondary .bootstrap-datetimepicker-widget table td.active:hover {\n  background: #868e96;\n  color: #ffffff;\n}\n\n.card-success.card-tabs:not(.card-outline) .card-header {\n  background-color: #28a745;\n}\n\n.card-success.card-tabs:not(.card-outline) .card-header,\n.card-success.card-tabs:not(.card-outline) .card-header a {\n  color: #ffffff;\n}\n\n.card-success.card-tabs:not(.card-outline) .card-header a.active {\n  color: #1F2D3D;\n}\n\n.card-success.card-tabs.card-outline {\n  border-top: 3px solid #28a745;\n}\n\n.card-success.card-outline-tabs .card-header a:hover {\n  border-top: 3px solid #dee2e6;\n}\n\n.card-success.card-outline-tabs .card-header a.active {\n  border-top: 3px solid #28a745;\n}\n\n.bg-success .btn-tool,\n.bg-gradient-success .btn-tool,\n.card-success:not(.card-outline) .btn-tool {\n  color: rgba(255, 255, 255, 0.8);\n}\n\n.bg-success .btn-tool:hover,\n.bg-gradient-success .btn-tool:hover,\n.card-success:not(.card-outline) .btn-tool:hover {\n  color: #ffffff;\n}\n\n.card.bg-success .bootstrap-datetimepicker-widget .table td,\n.card.bg-success .bootstrap-datetimepicker-widget .table th,\n.card.bg-gradient-success .bootstrap-datetimepicker-widget .table td,\n.card.bg-gradient-success .bootstrap-datetimepicker-widget .table th {\n  border: none;\n}\n\n.card.bg-success .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,\n.card.bg-success .bootstrap-datetimepicker-widget table td.day:hover,\n.card.bg-success .bootstrap-datetimepicker-widget table td.hour:hover,\n.card.bg-success .bootstrap-datetimepicker-widget table td.minute:hover,\n.card.bg-success .bootstrap-datetimepicker-widget table td.second:hover,\n.card.bg-gradient-success .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,\n.card.bg-gradient-success .bootstrap-datetimepicker-widget table td.day:hover,\n.card.bg-gradient-success .bootstrap-datetimepicker-widget table td.hour:hover,\n.card.bg-gradient-success .bootstrap-datetimepicker-widget table td.minute:hover,\n.card.bg-gradient-success .bootstrap-datetimepicker-widget table td.second:hover {\n  background: #208637;\n  color: #ffffff;\n}\n\n.card.bg-success .bootstrap-datetimepicker-widget table td.today::before,\n.card.bg-gradient-success .bootstrap-datetimepicker-widget table td.today::before {\n  border-bottom-color: #ffffff;\n}\n\n.card.bg-success .bootstrap-datetimepicker-widget table td.active,\n.card.bg-success .bootstrap-datetimepicker-widget table td.active:hover,\n.card.bg-gradient-success .bootstrap-datetimepicker-widget table td.active,\n.card.bg-gradient-success .bootstrap-datetimepicker-widget table td.active:hover {\n  background: #34ce57;\n  color: #ffffff;\n}\n\n.card-info.card-tabs:not(.card-outline) .card-header {\n  background-color: #17a2b8;\n}\n\n.card-info.card-tabs:not(.card-outline) .card-header,\n.card-info.card-tabs:not(.card-outline) .card-header a {\n  color: #ffffff;\n}\n\n.card-info.card-tabs:not(.card-outline) .card-header a.active {\n  color: #1F2D3D;\n}\n\n.card-info.card-tabs.card-outline {\n  border-top: 3px solid #17a2b8;\n}\n\n.card-info.card-outline-tabs .card-header a:hover {\n  border-top: 3px solid #dee2e6;\n}\n\n.card-info.card-outline-tabs .card-header a.active {\n  border-top: 3px solid #17a2b8;\n}\n\n.bg-info .btn-tool,\n.bg-gradient-info .btn-tool,\n.card-info:not(.card-outline) .btn-tool {\n  color: rgba(255, 255, 255, 0.8);\n}\n\n.bg-info .btn-tool:hover,\n.bg-gradient-info .btn-tool:hover,\n.card-info:not(.card-outline) .btn-tool:hover {\n  color: #ffffff;\n}\n\n.card.bg-info .bootstrap-datetimepicker-widget .table td,\n.card.bg-info .bootstrap-datetimepicker-widget .table th,\n.card.bg-gradient-info .bootstrap-datetimepicker-widget .table td,\n.card.bg-gradient-info .bootstrap-datetimepicker-widget .table th {\n  border: none;\n}\n\n.card.bg-info .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,\n.card.bg-info .bootstrap-datetimepicker-widget table td.day:hover,\n.card.bg-info .bootstrap-datetimepicker-widget table td.hour:hover,\n.card.bg-info .bootstrap-datetimepicker-widget table td.minute:hover,\n.card.bg-info .bootstrap-datetimepicker-widget table td.second:hover,\n.card.bg-gradient-info .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,\n.card.bg-gradient-info .bootstrap-datetimepicker-widget table td.day:hover,\n.card.bg-gradient-info .bootstrap-datetimepicker-widget table td.hour:hover,\n.card.bg-gradient-info .bootstrap-datetimepicker-widget table td.minute:hover,\n.card.bg-gradient-info .bootstrap-datetimepicker-widget table td.second:hover {\n  background: #128294;\n  color: #ffffff;\n}\n\n.card.bg-info .bootstrap-datetimepicker-widget table td.today::before,\n.card.bg-gradient-info .bootstrap-datetimepicker-widget table td.today::before {\n  border-bottom-color: #ffffff;\n}\n\n.card.bg-info .bootstrap-datetimepicker-widget table td.active,\n.card.bg-info .bootstrap-datetimepicker-widget table td.active:hover,\n.card.bg-gradient-info .bootstrap-datetimepicker-widget table td.active,\n.card.bg-gradient-info .bootstrap-datetimepicker-widget table td.active:hover {\n  background: #1fc8e3;\n  color: #ffffff;\n}\n\n.card-warning.card-tabs:not(.card-outline) .card-header {\n  background-color: #ffc107;\n}\n\n.card-warning.card-tabs:not(.card-outline) .card-header,\n.card-warning.card-tabs:not(.card-outline) .card-header a {\n  color: #1F2D3D;\n}\n\n.card-warning.card-tabs:not(.card-outline) .card-header a.active {\n  color: #1F2D3D;\n}\n\n.card-warning.card-tabs.card-outline {\n  border-top: 3px solid #ffc107;\n}\n\n.card-warning.card-outline-tabs .card-header a:hover {\n  border-top: 3px solid #dee2e6;\n}\n\n.card-warning.card-outline-tabs .card-header a.active {\n  border-top: 3px solid #ffc107;\n}\n\n.bg-warning .btn-tool,\n.bg-gradient-warning .btn-tool,\n.card-warning:not(.card-outline) .btn-tool {\n  color: rgba(31, 45, 61, 0.8);\n}\n\n.bg-warning .btn-tool:hover,\n.bg-gradient-warning .btn-tool:hover,\n.card-warning:not(.card-outline) .btn-tool:hover {\n  color: #1F2D3D;\n}\n\n.card.bg-warning .bootstrap-datetimepicker-widget .table td,\n.card.bg-warning .bootstrap-datetimepicker-widget .table th,\n.card.bg-gradient-warning .bootstrap-datetimepicker-widget .table td,\n.card.bg-gradient-warning .bootstrap-datetimepicker-widget .table th {\n  border: none;\n}\n\n.card.bg-warning .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,\n.card.bg-warning .bootstrap-datetimepicker-widget table td.day:hover,\n.card.bg-warning .bootstrap-datetimepicker-widget table td.hour:hover,\n.card.bg-warning .bootstrap-datetimepicker-widget table td.minute:hover,\n.card.bg-warning .bootstrap-datetimepicker-widget table td.second:hover,\n.card.bg-gradient-warning .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,\n.card.bg-gradient-warning .bootstrap-datetimepicker-widget table td.day:hover,\n.card.bg-gradient-warning .bootstrap-datetimepicker-widget table td.hour:hover,\n.card.bg-gradient-warning .bootstrap-datetimepicker-widget table td.minute:hover,\n.card.bg-gradient-warning .bootstrap-datetimepicker-widget table td.second:hover {\n  background: #dda600;\n  color: #1F2D3D;\n}\n\n.card.bg-warning .bootstrap-datetimepicker-widget table td.today::before,\n.card.bg-gradient-warning .bootstrap-datetimepicker-widget table td.today::before {\n  border-bottom-color: #1F2D3D;\n}\n\n.card.bg-warning .bootstrap-datetimepicker-widget table td.active,\n.card.bg-warning .bootstrap-datetimepicker-widget table td.active:hover,\n.card.bg-gradient-warning .bootstrap-datetimepicker-widget table td.active,\n.card.bg-gradient-warning .bootstrap-datetimepicker-widget table td.active:hover {\n  background: #ffce3a;\n  color: #1F2D3D;\n}\n\n.card-danger.card-tabs:not(.card-outline) .card-header {\n  background-color: #dc3545;\n}\n\n.card-danger.card-tabs:not(.card-outline) .card-header,\n.card-danger.card-tabs:not(.card-outline) .card-header a {\n  color: #ffffff;\n}\n\n.card-danger.card-tabs:not(.card-outline) .card-header a.active {\n  color: #1F2D3D;\n}\n\n.card-danger.card-tabs.card-outline {\n  border-top: 3px solid #dc3545;\n}\n\n.card-danger.card-outline-tabs .card-header a:hover {\n  border-top: 3px solid #dee2e6;\n}\n\n.card-danger.card-outline-tabs .card-header a.active {\n  border-top: 3px solid #dc3545;\n}\n\n.bg-danger .btn-tool,\n.bg-gradient-danger .btn-tool,\n.card-danger:not(.card-outline) .btn-tool {\n  color: rgba(255, 255, 255, 0.8);\n}\n\n.bg-danger .btn-tool:hover,\n.bg-gradient-danger .btn-tool:hover,\n.card-danger:not(.card-outline) .btn-tool:hover {\n  color: #ffffff;\n}\n\n.card.bg-danger .bootstrap-datetimepicker-widget .table td,\n.card.bg-danger .bootstrap-datetimepicker-widget .table th,\n.card.bg-gradient-danger .bootstrap-datetimepicker-widget .table td,\n.card.bg-gradient-danger .bootstrap-datetimepicker-widget .table th {\n  border: none;\n}\n\n.card.bg-danger .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,\n.card.bg-danger .bootstrap-datetimepicker-widget table td.day:hover,\n.card.bg-danger .bootstrap-datetimepicker-widget table td.hour:hover,\n.card.bg-danger .bootstrap-datetimepicker-widget table td.minute:hover,\n.card.bg-danger .bootstrap-datetimepicker-widget table td.second:hover,\n.card.bg-gradient-danger .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,\n.card.bg-gradient-danger .bootstrap-datetimepicker-widget table td.day:hover,\n.card.bg-gradient-danger .bootstrap-datetimepicker-widget table td.hour:hover,\n.card.bg-gradient-danger .bootstrap-datetimepicker-widget table td.minute:hover,\n.card.bg-gradient-danger .bootstrap-datetimepicker-widget table td.second:hover {\n  background: #c62232;\n  color: #ffffff;\n}\n\n.card.bg-danger .bootstrap-datetimepicker-widget table td.today::before,\n.card.bg-gradient-danger .bootstrap-datetimepicker-widget table td.today::before {\n  border-bottom-color: #ffffff;\n}\n\n.card.bg-danger .bootstrap-datetimepicker-widget table td.active,\n.card.bg-danger .bootstrap-datetimepicker-widget table td.active:hover,\n.card.bg-gradient-danger .bootstrap-datetimepicker-widget table td.active,\n.card.bg-gradient-danger .bootstrap-datetimepicker-widget table td.active:hover {\n  background: #e4606d;\n  color: #ffffff;\n}\n\n.card-light.card-tabs:not(.card-outline) .card-header {\n  background-color: #f8f9fa;\n}\n\n.card-light.card-tabs:not(.card-outline) .card-header,\n.card-light.card-tabs:not(.card-outline) .card-header a {\n  color: #1F2D3D;\n}\n\n.card-light.card-tabs:not(.card-outline) .card-header a.active {\n  color: #1F2D3D;\n}\n\n.card-light.card-tabs.card-outline {\n  border-top: 3px solid #f8f9fa;\n}\n\n.card-light.card-outline-tabs .card-header a:hover {\n  border-top: 3px solid #dee2e6;\n}\n\n.card-light.card-outline-tabs .card-header a.active {\n  border-top: 3px solid #f8f9fa;\n}\n\n.bg-light .btn-tool,\n.bg-gradient-light .btn-tool,\n.card-light:not(.card-outline) .btn-tool {\n  color: rgba(31, 45, 61, 0.8);\n}\n\n.bg-light .btn-tool:hover,\n.bg-gradient-light .btn-tool:hover,\n.card-light:not(.card-outline) .btn-tool:hover {\n  color: #1F2D3D;\n}\n\n.card.bg-light .bootstrap-datetimepicker-widget .table td,\n.card.bg-light .bootstrap-datetimepicker-widget .table th,\n.card.bg-gradient-light .bootstrap-datetimepicker-widget .table td,\n.card.bg-gradient-light .bootstrap-datetimepicker-widget .table th {\n  border: none;\n}\n\n.card.bg-light .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,\n.card.bg-light .bootstrap-datetimepicker-widget table td.day:hover,\n.card.bg-light .bootstrap-datetimepicker-widget table td.hour:hover,\n.card.bg-light .bootstrap-datetimepicker-widget table td.minute:hover,\n.card.bg-light .bootstrap-datetimepicker-widget table td.second:hover,\n.card.bg-gradient-light .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,\n.card.bg-gradient-light .bootstrap-datetimepicker-widget table td.day:hover,\n.card.bg-gradient-light .bootstrap-datetimepicker-widget table td.hour:hover,\n.card.bg-gradient-light .bootstrap-datetimepicker-widget table td.minute:hover,\n.card.bg-gradient-light .bootstrap-datetimepicker-widget table td.second:hover {\n  background: #e0e5e9;\n  color: #1F2D3D;\n}\n\n.card.bg-light .bootstrap-datetimepicker-widget table td.today::before,\n.card.bg-gradient-light .bootstrap-datetimepicker-widget table td.today::before {\n  border-bottom-color: #1F2D3D;\n}\n\n.card.bg-light .bootstrap-datetimepicker-widget table td.active,\n.card.bg-light .bootstrap-datetimepicker-widget table td.active:hover,\n.card.bg-gradient-light .bootstrap-datetimepicker-widget table td.active,\n.card.bg-gradient-light .bootstrap-datetimepicker-widget table td.active:hover {\n  background: white;\n  color: #1F2D3D;\n}\n\n.card-dark.card-tabs:not(.card-outline) .card-header {\n  background-color: #343a40;\n}\n\n.card-dark.card-tabs:not(.card-outline) .card-header,\n.card-dark.card-tabs:not(.card-outline) .card-header a {\n  color: #ffffff;\n}\n\n.card-dark.card-tabs:not(.card-outline) .card-header a.active {\n  color: #1F2D3D;\n}\n\n.card-dark.card-tabs.card-outline {\n  border-top: 3px solid #343a40;\n}\n\n.card-dark.card-outline-tabs .card-header a:hover {\n  border-top: 3px solid #dee2e6;\n}\n\n.card-dark.card-outline-tabs .card-header a.active {\n  border-top: 3px solid #343a40;\n}\n\n.bg-dark .btn-tool,\n.bg-gradient-dark .btn-tool,\n.card-dark:not(.card-outline) .btn-tool {\n  color: rgba(255, 255, 255, 0.8);\n}\n\n.bg-dark .btn-tool:hover,\n.bg-gradient-dark .btn-tool:hover,\n.card-dark:not(.card-outline) .btn-tool:hover {\n  color: #ffffff;\n}\n\n.card.bg-dark .bootstrap-datetimepicker-widget .table td,\n.card.bg-dark .bootstrap-datetimepicker-widget .table th,\n.card.bg-gradient-dark .bootstrap-datetimepicker-widget .table td,\n.card.bg-gradient-dark .bootstrap-datetimepicker-widget .table th {\n  border: none;\n}\n\n.card.bg-dark .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,\n.card.bg-dark .bootstrap-datetimepicker-widget table td.day:hover,\n.card.bg-dark .bootstrap-datetimepicker-widget table td.hour:hover,\n.card.bg-dark .bootstrap-datetimepicker-widget table td.minute:hover,\n.card.bg-dark .bootstrap-datetimepicker-widget table td.second:hover,\n.card.bg-gradient-dark .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,\n.card.bg-gradient-dark .bootstrap-datetimepicker-widget table td.day:hover,\n.card.bg-gradient-dark .bootstrap-datetimepicker-widget table td.hour:hover,\n.card.bg-gradient-dark .bootstrap-datetimepicker-widget table td.minute:hover,\n.card.bg-gradient-dark .bootstrap-datetimepicker-widget table td.second:hover {\n  background: #222629;\n  color: #ffffff;\n}\n\n.card.bg-dark .bootstrap-datetimepicker-widget table td.today::before,\n.card.bg-gradient-dark .bootstrap-datetimepicker-widget table td.today::before {\n  border-bottom-color: #ffffff;\n}\n\n.card.bg-dark .bootstrap-datetimepicker-widget table td.active,\n.card.bg-dark .bootstrap-datetimepicker-widget table td.active:hover,\n.card.bg-gradient-dark .bootstrap-datetimepicker-widget table td.active,\n.card.bg-gradient-dark .bootstrap-datetimepicker-widget table td.active:hover {\n  background: #4b545c;\n  color: #ffffff;\n}\n\n.card-navy.card-tabs:not(.card-outline) .card-header {\n  background-color: #001f3f;\n}\n\n.card-navy.card-tabs:not(.card-outline) .card-header,\n.card-navy.card-tabs:not(.card-outline) .card-header a {\n  color: #ffffff;\n}\n\n.card-navy.card-tabs:not(.card-outline) .card-header a.active {\n  color: #1F2D3D;\n}\n\n.card-navy.card-tabs.card-outline {\n  border-top: 3px solid #001f3f;\n}\n\n.card-navy.card-outline-tabs .card-header a:hover {\n  border-top: 3px solid #dee2e6;\n}\n\n.card-navy.card-outline-tabs .card-header a.active {\n  border-top: 3px solid #001f3f;\n}\n\n.bg-navy .btn-tool,\n.bg-gradient-navy .btn-tool,\n.card-navy:not(.card-outline) .btn-tool {\n  color: rgba(255, 255, 255, 0.8);\n}\n\n.bg-navy .btn-tool:hover,\n.bg-gradient-navy .btn-tool:hover,\n.card-navy:not(.card-outline) .btn-tool:hover {\n  color: #ffffff;\n}\n\n.card.bg-navy .bootstrap-datetimepicker-widget .table td,\n.card.bg-navy .bootstrap-datetimepicker-widget .table th,\n.card.bg-gradient-navy .bootstrap-datetimepicker-widget .table td,\n.card.bg-gradient-navy .bootstrap-datetimepicker-widget .table th {\n  border: none;\n}\n\n.card.bg-navy .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,\n.card.bg-navy .bootstrap-datetimepicker-widget table td.day:hover,\n.card.bg-navy .bootstrap-datetimepicker-widget table td.hour:hover,\n.card.bg-navy .bootstrap-datetimepicker-widget table td.minute:hover,\n.card.bg-navy .bootstrap-datetimepicker-widget table td.second:hover,\n.card.bg-gradient-navy .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,\n.card.bg-gradient-navy .bootstrap-datetimepicker-widget table td.day:hover,\n.card.bg-gradient-navy .bootstrap-datetimepicker-widget table td.hour:hover,\n.card.bg-gradient-navy .bootstrap-datetimepicker-widget table td.minute:hover,\n.card.bg-gradient-navy .bootstrap-datetimepicker-widget table td.second:hover {\n  background: #000b16;\n  color: #ffffff;\n}\n\n.card.bg-navy .bootstrap-datetimepicker-widget table td.today::before,\n.card.bg-gradient-navy .bootstrap-datetimepicker-widget table td.today::before {\n  border-bottom-color: #ffffff;\n}\n\n.card.bg-navy .bootstrap-datetimepicker-widget table td.active,\n.card.bg-navy .bootstrap-datetimepicker-widget table td.active:hover,\n.card.bg-gradient-navy .bootstrap-datetimepicker-widget table td.active,\n.card.bg-gradient-navy .bootstrap-datetimepicker-widget table td.active:hover {\n  background: #003872;\n  color: #ffffff;\n}\n\n.card-olive.card-tabs:not(.card-outline) .card-header {\n  background-color: #3d9970;\n}\n\n.card-olive.card-tabs:not(.card-outline) .card-header,\n.card-olive.card-tabs:not(.card-outline) .card-header a {\n  color: #ffffff;\n}\n\n.card-olive.card-tabs:not(.card-outline) .card-header a.active {\n  color: #1F2D3D;\n}\n\n.card-olive.card-tabs.card-outline {\n  border-top: 3px solid #3d9970;\n}\n\n.card-olive.card-outline-tabs .card-header a:hover {\n  border-top: 3px solid #dee2e6;\n}\n\n.card-olive.card-outline-tabs .card-header a.active {\n  border-top: 3px solid #3d9970;\n}\n\n.bg-olive .btn-tool,\n.bg-gradient-olive .btn-tool,\n.card-olive:not(.card-outline) .btn-tool {\n  color: rgba(255, 255, 255, 0.8);\n}\n\n.bg-olive .btn-tool:hover,\n.bg-gradient-olive .btn-tool:hover,\n.card-olive:not(.card-outline) .btn-tool:hover {\n  color: #ffffff;\n}\n\n.card.bg-olive .bootstrap-datetimepicker-widget .table td,\n.card.bg-olive .bootstrap-datetimepicker-widget .table th,\n.card.bg-gradient-olive .bootstrap-datetimepicker-widget .table td,\n.card.bg-gradient-olive .bootstrap-datetimepicker-widget .table th {\n  border: none;\n}\n\n.card.bg-olive .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,\n.card.bg-olive .bootstrap-datetimepicker-widget table td.day:hover,\n.card.bg-olive .bootstrap-datetimepicker-widget table td.hour:hover,\n.card.bg-olive .bootstrap-datetimepicker-widget table td.minute:hover,\n.card.bg-olive .bootstrap-datetimepicker-widget table td.second:hover,\n.card.bg-gradient-olive .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,\n.card.bg-gradient-olive .bootstrap-datetimepicker-widget table td.day:hover,\n.card.bg-gradient-olive .bootstrap-datetimepicker-widget table td.hour:hover,\n.card.bg-gradient-olive .bootstrap-datetimepicker-widget table td.minute:hover,\n.card.bg-gradient-olive .bootstrap-datetimepicker-widget table td.second:hover {\n  background: #317c5b;\n  color: #ffffff;\n}\n\n.card.bg-olive .bootstrap-datetimepicker-widget table td.today::before,\n.card.bg-gradient-olive .bootstrap-datetimepicker-widget table td.today::before {\n  border-bottom-color: #ffffff;\n}\n\n.card.bg-olive .bootstrap-datetimepicker-widget table td.active,\n.card.bg-olive .bootstrap-datetimepicker-widget table td.active:hover,\n.card.bg-gradient-olive .bootstrap-datetimepicker-widget table td.active,\n.card.bg-gradient-olive .bootstrap-datetimepicker-widget table td.active:hover {\n  background: #50b98a;\n  color: #ffffff;\n}\n\n.card-lime.card-tabs:not(.card-outline) .card-header {\n  background-color: #01ff70;\n}\n\n.card-lime.card-tabs:not(.card-outline) .card-header,\n.card-lime.card-tabs:not(.card-outline) .card-header a {\n  color: #1F2D3D;\n}\n\n.card-lime.card-tabs:not(.card-outline) .card-header a.active {\n  color: #1F2D3D;\n}\n\n.card-lime.card-tabs.card-outline {\n  border-top: 3px solid #01ff70;\n}\n\n.card-lime.card-outline-tabs .card-header a:hover {\n  border-top: 3px solid #dee2e6;\n}\n\n.card-lime.card-outline-tabs .card-header a.active {\n  border-top: 3px solid #01ff70;\n}\n\n.bg-lime .btn-tool,\n.bg-gradient-lime .btn-tool,\n.card-lime:not(.card-outline) .btn-tool {\n  color: rgba(31, 45, 61, 0.8);\n}\n\n.bg-lime .btn-tool:hover,\n.bg-gradient-lime .btn-tool:hover,\n.card-lime:not(.card-outline) .btn-tool:hover {\n  color: #1F2D3D;\n}\n\n.card.bg-lime .bootstrap-datetimepicker-widget .table td,\n.card.bg-lime .bootstrap-datetimepicker-widget .table th,\n.card.bg-gradient-lime .bootstrap-datetimepicker-widget .table td,\n.card.bg-gradient-lime .bootstrap-datetimepicker-widget .table th {\n  border: none;\n}\n\n.card.bg-lime .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,\n.card.bg-lime .bootstrap-datetimepicker-widget table td.day:hover,\n.card.bg-lime .bootstrap-datetimepicker-widget table td.hour:hover,\n.card.bg-lime .bootstrap-datetimepicker-widget table td.minute:hover,\n.card.bg-lime .bootstrap-datetimepicker-widget table td.second:hover,\n.card.bg-gradient-lime .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,\n.card.bg-gradient-lime .bootstrap-datetimepicker-widget table td.day:hover,\n.card.bg-gradient-lime .bootstrap-datetimepicker-widget table td.hour:hover,\n.card.bg-gradient-lime .bootstrap-datetimepicker-widget table td.minute:hover,\n.card.bg-gradient-lime .bootstrap-datetimepicker-widget table td.second:hover {\n  background: #00d75e;\n  color: #1F2D3D;\n}\n\n.card.bg-lime .bootstrap-datetimepicker-widget table td.today::before,\n.card.bg-gradient-lime .bootstrap-datetimepicker-widget table td.today::before {\n  border-bottom-color: #1F2D3D;\n}\n\n.card.bg-lime .bootstrap-datetimepicker-widget table td.active,\n.card.bg-lime .bootstrap-datetimepicker-widget table td.active:hover,\n.card.bg-gradient-lime .bootstrap-datetimepicker-widget table td.active,\n.card.bg-gradient-lime .bootstrap-datetimepicker-widget table td.active:hover {\n  background: #34ff8d;\n  color: #1F2D3D;\n}\n\n.card-fuchsia.card-tabs:not(.card-outline) .card-header {\n  background-color: #f012be;\n}\n\n.card-fuchsia.card-tabs:not(.card-outline) .card-header,\n.card-fuchsia.card-tabs:not(.card-outline) .card-header a {\n  color: #ffffff;\n}\n\n.card-fuchsia.card-tabs:not(.card-outline) .card-header a.active {\n  color: #1F2D3D;\n}\n\n.card-fuchsia.card-tabs.card-outline {\n  border-top: 3px solid #f012be;\n}\n\n.card-fuchsia.card-outline-tabs .card-header a:hover {\n  border-top: 3px solid #dee2e6;\n}\n\n.card-fuchsia.card-outline-tabs .card-header a.active {\n  border-top: 3px solid #f012be;\n}\n\n.bg-fuchsia .btn-tool,\n.bg-gradient-fuchsia .btn-tool,\n.card-fuchsia:not(.card-outline) .btn-tool {\n  color: rgba(255, 255, 255, 0.8);\n}\n\n.bg-fuchsia .btn-tool:hover,\n.bg-gradient-fuchsia .btn-tool:hover,\n.card-fuchsia:not(.card-outline) .btn-tool:hover {\n  color: #ffffff;\n}\n\n.card.bg-fuchsia .bootstrap-datetimepicker-widget .table td,\n.card.bg-fuchsia .bootstrap-datetimepicker-widget .table th,\n.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget .table td,\n.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget .table th {\n  border: none;\n}\n\n.card.bg-fuchsia .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,\n.card.bg-fuchsia .bootstrap-datetimepicker-widget table td.day:hover,\n.card.bg-fuchsia .bootstrap-datetimepicker-widget table td.hour:hover,\n.card.bg-fuchsia .bootstrap-datetimepicker-widget table td.minute:hover,\n.card.bg-fuchsia .bootstrap-datetimepicker-widget table td.second:hover,\n.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,\n.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget table td.day:hover,\n.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget table td.hour:hover,\n.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget table td.minute:hover,\n.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget table td.second:hover {\n  background: #cc0da1;\n  color: #ffffff;\n}\n\n.card.bg-fuchsia .bootstrap-datetimepicker-widget table td.today::before,\n.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget table td.today::before {\n  border-bottom-color: #ffffff;\n}\n\n.card.bg-fuchsia .bootstrap-datetimepicker-widget table td.active,\n.card.bg-fuchsia .bootstrap-datetimepicker-widget table td.active:hover,\n.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget table td.active,\n.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget table td.active:hover {\n  background: #f342cb;\n  color: #ffffff;\n}\n\n.card-maroon.card-tabs:not(.card-outline) .card-header {\n  background-color: #d81b60;\n}\n\n.card-maroon.card-tabs:not(.card-outline) .card-header,\n.card-maroon.card-tabs:not(.card-outline) .card-header a {\n  color: #ffffff;\n}\n\n.card-maroon.card-tabs:not(.card-outline) .card-header a.active {\n  color: #1F2D3D;\n}\n\n.card-maroon.card-tabs.card-outline {\n  border-top: 3px solid #d81b60;\n}\n\n.card-maroon.card-outline-tabs .card-header a:hover {\n  border-top: 3px solid #dee2e6;\n}\n\n.card-maroon.card-outline-tabs .card-header a.active {\n  border-top: 3px solid #d81b60;\n}\n\n.bg-maroon .btn-tool,\n.bg-gradient-maroon .btn-tool,\n.card-maroon:not(.card-outline) .btn-tool {\n  color: rgba(255, 255, 255, 0.8);\n}\n\n.bg-maroon .btn-tool:hover,\n.bg-gradient-maroon .btn-tool:hover,\n.card-maroon:not(.card-outline) .btn-tool:hover {\n  color: #ffffff;\n}\n\n.card.bg-maroon .bootstrap-datetimepicker-widget .table td,\n.card.bg-maroon .bootstrap-datetimepicker-widget .table th,\n.card.bg-gradient-maroon .bootstrap-datetimepicker-widget .table td,\n.card.bg-gradient-maroon .bootstrap-datetimepicker-widget .table th {\n  border: none;\n}\n\n.card.bg-maroon .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,\n.card.bg-maroon .bootstrap-datetimepicker-widget table td.day:hover,\n.card.bg-maroon .bootstrap-datetimepicker-widget table td.hour:hover,\n.card.bg-maroon .bootstrap-datetimepicker-widget table td.minute:hover,\n.card.bg-maroon .bootstrap-datetimepicker-widget table td.second:hover,\n.card.bg-gradient-maroon .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,\n.card.bg-gradient-maroon .bootstrap-datetimepicker-widget table td.day:hover,\n.card.bg-gradient-maroon .bootstrap-datetimepicker-widget table td.hour:hover,\n.card.bg-gradient-maroon .bootstrap-datetimepicker-widget table td.minute:hover,\n.card.bg-gradient-maroon .bootstrap-datetimepicker-widget table td.second:hover {\n  background: #b41650;\n  color: #ffffff;\n}\n\n.card.bg-maroon .bootstrap-datetimepicker-widget table td.today::before,\n.card.bg-gradient-maroon .bootstrap-datetimepicker-widget table td.today::before {\n  border-bottom-color: #ffffff;\n}\n\n.card.bg-maroon .bootstrap-datetimepicker-widget table td.active,\n.card.bg-maroon .bootstrap-datetimepicker-widget table td.active:hover,\n.card.bg-gradient-maroon .bootstrap-datetimepicker-widget table td.active,\n.card.bg-gradient-maroon .bootstrap-datetimepicker-widget table td.active:hover {\n  background: #e73f7c;\n  color: #ffffff;\n}\n\n.card-blue.card-tabs:not(.card-outline) .card-header {\n  background-color: #007bff;\n}\n\n.card-blue.card-tabs:not(.card-outline) .card-header,\n.card-blue.card-tabs:not(.card-outline) .card-header a {\n  color: #ffffff;\n}\n\n.card-blue.card-tabs:not(.card-outline) .card-header a.active {\n  color: #1F2D3D;\n}\n\n.card-blue.card-tabs.card-outline {\n  border-top: 3px solid #007bff;\n}\n\n.card-blue.card-outline-tabs .card-header a:hover {\n  border-top: 3px solid #dee2e6;\n}\n\n.card-blue.card-outline-tabs .card-header a.active {\n  border-top: 3px solid #007bff;\n}\n\n.bg-blue .btn-tool,\n.bg-gradient-blue .btn-tool,\n.card-blue:not(.card-outline) .btn-tool {\n  color: rgba(255, 255, 255, 0.8);\n}\n\n.bg-blue .btn-tool:hover,\n.bg-gradient-blue .btn-tool:hover,\n.card-blue:not(.card-outline) .btn-tool:hover {\n  color: #ffffff;\n}\n\n.card.bg-blue .bootstrap-datetimepicker-widget .table td,\n.card.bg-blue .bootstrap-datetimepicker-widget .table th,\n.card.bg-gradient-blue .bootstrap-datetimepicker-widget .table td,\n.card.bg-gradient-blue .bootstrap-datetimepicker-widget .table th {\n  border: none;\n}\n\n.card.bg-blue .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,\n.card.bg-blue .bootstrap-datetimepicker-widget table td.day:hover,\n.card.bg-blue .bootstrap-datetimepicker-widget table td.hour:hover,\n.card.bg-blue .bootstrap-datetimepicker-widget table td.minute:hover,\n.card.bg-blue .bootstrap-datetimepicker-widget table td.second:hover,\n.card.bg-gradient-blue .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,\n.card.bg-gradient-blue .bootstrap-datetimepicker-widget table td.day:hover,\n.card.bg-gradient-blue .bootstrap-datetimepicker-widget table td.hour:hover,\n.card.bg-gradient-blue .bootstrap-datetimepicker-widget table td.minute:hover,\n.card.bg-gradient-blue .bootstrap-datetimepicker-widget table td.second:hover {\n  background: #0067d6;\n  color: #ffffff;\n}\n\n.card.bg-blue .bootstrap-datetimepicker-widget table td.today::before,\n.card.bg-gradient-blue .bootstrap-datetimepicker-widget table td.today::before {\n  border-bottom-color: #ffffff;\n}\n\n.card.bg-blue .bootstrap-datetimepicker-widget table td.active,\n.card.bg-blue .bootstrap-datetimepicker-widget table td.active:hover,\n.card.bg-gradient-blue .bootstrap-datetimepicker-widget table td.active,\n.card.bg-gradient-blue .bootstrap-datetimepicker-widget table td.active:hover {\n  background: #3395ff;\n  color: #ffffff;\n}\n\n.card-indigo.card-tabs:not(.card-outline) .card-header {\n  background-color: #6610f2;\n}\n\n.card-indigo.card-tabs:not(.card-outline) .card-header,\n.card-indigo.card-tabs:not(.card-outline) .card-header a {\n  color: #ffffff;\n}\n\n.card-indigo.card-tabs:not(.card-outline) .card-header a.active {\n  color: #1F2D3D;\n}\n\n.card-indigo.card-tabs.card-outline {\n  border-top: 3px solid #6610f2;\n}\n\n.card-indigo.card-outline-tabs .card-header a:hover {\n  border-top: 3px solid #dee2e6;\n}\n\n.card-indigo.card-outline-tabs .card-header a.active {\n  border-top: 3px solid #6610f2;\n}\n\n.bg-indigo .btn-tool,\n.bg-gradient-indigo .btn-tool,\n.card-indigo:not(.card-outline) .btn-tool {\n  color: rgba(255, 255, 255, 0.8);\n}\n\n.bg-indigo .btn-tool:hover,\n.bg-gradient-indigo .btn-tool:hover,\n.card-indigo:not(.card-outline) .btn-tool:hover {\n  color: #ffffff;\n}\n\n.card.bg-indigo .bootstrap-datetimepicker-widget .table td,\n.card.bg-indigo .bootstrap-datetimepicker-widget .table th,\n.card.bg-gradient-indigo .bootstrap-datetimepicker-widget .table td,\n.card.bg-gradient-indigo .bootstrap-datetimepicker-widget .table th {\n  border: none;\n}\n\n.card.bg-indigo .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,\n.card.bg-indigo .bootstrap-datetimepicker-widget table td.day:hover,\n.card.bg-indigo .bootstrap-datetimepicker-widget table td.hour:hover,\n.card.bg-indigo .bootstrap-datetimepicker-widget table td.minute:hover,\n.card.bg-indigo .bootstrap-datetimepicker-widget table td.second:hover,\n.card.bg-gradient-indigo .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,\n.card.bg-gradient-indigo .bootstrap-datetimepicker-widget table td.day:hover,\n.card.bg-gradient-indigo .bootstrap-datetimepicker-widget table td.hour:hover,\n.card.bg-gradient-indigo .bootstrap-datetimepicker-widget table td.minute:hover,\n.card.bg-gradient-indigo .bootstrap-datetimepicker-widget table td.second:hover {\n  background: #550bce;\n  color: #ffffff;\n}\n\n.card.bg-indigo .bootstrap-datetimepicker-widget table td.today::before,\n.card.bg-gradient-indigo .bootstrap-datetimepicker-widget table td.today::before {\n  border-bottom-color: #ffffff;\n}\n\n.card.bg-indigo .bootstrap-datetimepicker-widget table td.active,\n.card.bg-indigo .bootstrap-datetimepicker-widget table td.active:hover,\n.card.bg-gradient-indigo .bootstrap-datetimepicker-widget table td.active,\n.card.bg-gradient-indigo .bootstrap-datetimepicker-widget table td.active:hover {\n  background: #8540f5;\n  color: #ffffff;\n}\n\n.card-purple.card-tabs:not(.card-outline) .card-header {\n  background-color: #6f42c1;\n}\n\n.card-purple.card-tabs:not(.card-outline) .card-header,\n.card-purple.card-tabs:not(.card-outline) .card-header a {\n  color: #ffffff;\n}\n\n.card-purple.card-tabs:not(.card-outline) .card-header a.active {\n  color: #1F2D3D;\n}\n\n.card-purple.card-tabs.card-outline {\n  border-top: 3px solid #6f42c1;\n}\n\n.card-purple.card-outline-tabs .card-header a:hover {\n  border-top: 3px solid #dee2e6;\n}\n\n.card-purple.card-outline-tabs .card-header a.active {\n  border-top: 3px solid #6f42c1;\n}\n\n.bg-purple .btn-tool,\n.bg-gradient-purple .btn-tool,\n.card-purple:not(.card-outline) .btn-tool {\n  color: rgba(255, 255, 255, 0.8);\n}\n\n.bg-purple .btn-tool:hover,\n.bg-gradient-purple .btn-tool:hover,\n.card-purple:not(.card-outline) .btn-tool:hover {\n  color: #ffffff;\n}\n\n.card.bg-purple .bootstrap-datetimepicker-widget .table td,\n.card.bg-purple .bootstrap-datetimepicker-widget .table th,\n.card.bg-gradient-purple .bootstrap-datetimepicker-widget .table td,\n.card.bg-gradient-purple .bootstrap-datetimepicker-widget .table th {\n  border: none;\n}\n\n.card.bg-purple .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,\n.card.bg-purple .bootstrap-datetimepicker-widget table td.day:hover,\n.card.bg-purple .bootstrap-datetimepicker-widget table td.hour:hover,\n.card.bg-purple .bootstrap-datetimepicker-widget table td.minute:hover,\n.card.bg-purple .bootstrap-datetimepicker-widget table td.second:hover,\n.card.bg-gradient-purple .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,\n.card.bg-gradient-purple .bootstrap-datetimepicker-widget table td.day:hover,\n.card.bg-gradient-purple .bootstrap-datetimepicker-widget table td.hour:hover,\n.card.bg-gradient-purple .bootstrap-datetimepicker-widget table td.minute:hover,\n.card.bg-gradient-purple .bootstrap-datetimepicker-widget table td.second:hover {\n  background: #5d36a4;\n  color: #ffffff;\n}\n\n.card.bg-purple .bootstrap-datetimepicker-widget table td.today::before,\n.card.bg-gradient-purple .bootstrap-datetimepicker-widget table td.today::before {\n  border-bottom-color: #ffffff;\n}\n\n.card.bg-purple .bootstrap-datetimepicker-widget table td.active,\n.card.bg-purple .bootstrap-datetimepicker-widget table td.active:hover,\n.card.bg-gradient-purple .bootstrap-datetimepicker-widget table td.active,\n.card.bg-gradient-purple .bootstrap-datetimepicker-widget table td.active:hover {\n  background: #8c68ce;\n  color: #ffffff;\n}\n\n.card-pink.card-tabs:not(.card-outline) .card-header {\n  background-color: #e83e8c;\n}\n\n.card-pink.card-tabs:not(.card-outline) .card-header,\n.card-pink.card-tabs:not(.card-outline) .card-header a {\n  color: #ffffff;\n}\n\n.card-pink.card-tabs:not(.card-outline) .card-header a.active {\n  color: #1F2D3D;\n}\n\n.card-pink.card-tabs.card-outline {\n  border-top: 3px solid #e83e8c;\n}\n\n.card-pink.card-outline-tabs .card-header a:hover {\n  border-top: 3px solid #dee2e6;\n}\n\n.card-pink.card-outline-tabs .card-header a.active {\n  border-top: 3px solid #e83e8c;\n}\n\n.bg-pink .btn-tool,\n.bg-gradient-pink .btn-tool,\n.card-pink:not(.card-outline) .btn-tool {\n  color: rgba(255, 255, 255, 0.8);\n}\n\n.bg-pink .btn-tool:hover,\n.bg-gradient-pink .btn-tool:hover,\n.card-pink:not(.card-outline) .btn-tool:hover {\n  color: #ffffff;\n}\n\n.card.bg-pink .bootstrap-datetimepicker-widget .table td,\n.card.bg-pink .bootstrap-datetimepicker-widget .table th,\n.card.bg-gradient-pink .bootstrap-datetimepicker-widget .table td,\n.card.bg-gradient-pink .bootstrap-datetimepicker-widget .table th {\n  border: none;\n}\n\n.card.bg-pink .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,\n.card.bg-pink .bootstrap-datetimepicker-widget table td.day:hover,\n.card.bg-pink .bootstrap-datetimepicker-widget table td.hour:hover,\n.card.bg-pink .bootstrap-datetimepicker-widget table td.minute:hover,\n.card.bg-pink .bootstrap-datetimepicker-widget table td.second:hover,\n.card.bg-gradient-pink .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,\n.card.bg-gradient-pink .bootstrap-datetimepicker-widget table td.day:hover,\n.card.bg-gradient-pink .bootstrap-datetimepicker-widget table td.hour:hover,\n.card.bg-gradient-pink .bootstrap-datetimepicker-widget table td.minute:hover,\n.card.bg-gradient-pink .bootstrap-datetimepicker-widget table td.second:hover {\n  background: #e21b76;\n  color: #ffffff;\n}\n\n.card.bg-pink .bootstrap-datetimepicker-widget table td.today::before,\n.card.bg-gradient-pink .bootstrap-datetimepicker-widget table td.today::before {\n  border-bottom-color: #ffffff;\n}\n\n.card.bg-pink .bootstrap-datetimepicker-widget table td.active,\n.card.bg-pink .bootstrap-datetimepicker-widget table td.active:hover,\n.card.bg-gradient-pink .bootstrap-datetimepicker-widget table td.active,\n.card.bg-gradient-pink .bootstrap-datetimepicker-widget table td.active:hover {\n  background: #ed6ca7;\n  color: #ffffff;\n}\n\n.card-red.card-tabs:not(.card-outline) .card-header {\n  background-color: #dc3545;\n}\n\n.card-red.card-tabs:not(.card-outline) .card-header,\n.card-red.card-tabs:not(.card-outline) .card-header a {\n  color: #ffffff;\n}\n\n.card-red.card-tabs:not(.card-outline) .card-header a.active {\n  color: #1F2D3D;\n}\n\n.card-red.card-tabs.card-outline {\n  border-top: 3px solid #dc3545;\n}\n\n.card-red.card-outline-tabs .card-header a:hover {\n  border-top: 3px solid #dee2e6;\n}\n\n.card-red.card-outline-tabs .card-header a.active {\n  border-top: 3px solid #dc3545;\n}\n\n.bg-red .btn-tool,\n.bg-gradient-red .btn-tool,\n.card-red:not(.card-outline) .btn-tool {\n  color: rgba(255, 255, 255, 0.8);\n}\n\n.bg-red .btn-tool:hover,\n.bg-gradient-red .btn-tool:hover,\n.card-red:not(.card-outline) .btn-tool:hover {\n  color: #ffffff;\n}\n\n.card.bg-red .bootstrap-datetimepicker-widget .table td,\n.card.bg-red .bootstrap-datetimepicker-widget .table th,\n.card.bg-gradient-red .bootstrap-datetimepicker-widget .table td,\n.card.bg-gradient-red .bootstrap-datetimepicker-widget .table th {\n  border: none;\n}\n\n.card.bg-red .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,\n.card.bg-red .bootstrap-datetimepicker-widget table td.day:hover,\n.card.bg-red .bootstrap-datetimepicker-widget table td.hour:hover,\n.card.bg-red .bootstrap-datetimepicker-widget table td.minute:hover,\n.card.bg-red .bootstrap-datetimepicker-widget table td.second:hover,\n.card.bg-gradient-red .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,\n.card.bg-gradient-red .bootstrap-datetimepicker-widget table td.day:hover,\n.card.bg-gradient-red .bootstrap-datetimepicker-widget table td.hour:hover,\n.card.bg-gradient-red .bootstrap-datetimepicker-widget table td.minute:hover,\n.card.bg-gradient-red .bootstrap-datetimepicker-widget table td.second:hover {\n  background: #c62232;\n  color: #ffffff;\n}\n\n.card.bg-red .bootstrap-datetimepicker-widget table td.today::before,\n.card.bg-gradient-red .bootstrap-datetimepicker-widget table td.today::before {\n  border-bottom-color: #ffffff;\n}\n\n.card.bg-red .bootstrap-datetimepicker-widget table td.active,\n.card.bg-red .bootstrap-datetimepicker-widget table td.active:hover,\n.card.bg-gradient-red .bootstrap-datetimepicker-widget table td.active,\n.card.bg-gradient-red .bootstrap-datetimepicker-widget table td.active:hover {\n  background: #e4606d;\n  color: #ffffff;\n}\n\n.card-orange.card-tabs:not(.card-outline) .card-header {\n  background-color: #fd7e14;\n}\n\n.card-orange.card-tabs:not(.card-outline) .card-header,\n.card-orange.card-tabs:not(.card-outline) .card-header a {\n  color: #1F2D3D;\n}\n\n.card-orange.card-tabs:not(.card-outline) .card-header a.active {\n  color: #1F2D3D;\n}\n\n.card-orange.card-tabs.card-outline {\n  border-top: 3px solid #fd7e14;\n}\n\n.card-orange.card-outline-tabs .card-header a:hover {\n  border-top: 3px solid #dee2e6;\n}\n\n.card-orange.card-outline-tabs .card-header a.active {\n  border-top: 3px solid #fd7e14;\n}\n\n.bg-orange .btn-tool,\n.bg-gradient-orange .btn-tool,\n.card-orange:not(.card-outline) .btn-tool {\n  color: rgba(31, 45, 61, 0.8);\n}\n\n.bg-orange .btn-tool:hover,\n.bg-gradient-orange .btn-tool:hover,\n.card-orange:not(.card-outline) .btn-tool:hover {\n  color: #1F2D3D;\n}\n\n.card.bg-orange .bootstrap-datetimepicker-widget .table td,\n.card.bg-orange .bootstrap-datetimepicker-widget .table th,\n.card.bg-gradient-orange .bootstrap-datetimepicker-widget .table td,\n.card.bg-gradient-orange .bootstrap-datetimepicker-widget .table th {\n  border: none;\n}\n\n.card.bg-orange .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,\n.card.bg-orange .bootstrap-datetimepicker-widget table td.day:hover,\n.card.bg-orange .bootstrap-datetimepicker-widget table td.hour:hover,\n.card.bg-orange .bootstrap-datetimepicker-widget table td.minute:hover,\n.card.bg-orange .bootstrap-datetimepicker-widget table td.second:hover,\n.card.bg-gradient-orange .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,\n.card.bg-gradient-orange .bootstrap-datetimepicker-widget table td.day:hover,\n.card.bg-gradient-orange .bootstrap-datetimepicker-widget table td.hour:hover,\n.card.bg-gradient-orange .bootstrap-datetimepicker-widget table td.minute:hover,\n.card.bg-gradient-orange .bootstrap-datetimepicker-widget table td.second:hover {\n  background: #e66a02;\n  color: #1F2D3D;\n}\n\n.card.bg-orange .bootstrap-datetimepicker-widget table td.today::before,\n.card.bg-gradient-orange .bootstrap-datetimepicker-widget table td.today::before {\n  border-bottom-color: #1F2D3D;\n}\n\n.card.bg-orange .bootstrap-datetimepicker-widget table td.active,\n.card.bg-orange .bootstrap-datetimepicker-widget table td.active:hover,\n.card.bg-gradient-orange .bootstrap-datetimepicker-widget table td.active,\n.card.bg-gradient-orange .bootstrap-datetimepicker-widget table td.active:hover {\n  background: #fd9a47;\n  color: #1F2D3D;\n}\n\n.card-yellow.card-tabs:not(.card-outline) .card-header {\n  background-color: #ffc107;\n}\n\n.card-yellow.card-tabs:not(.card-outline) .card-header,\n.card-yellow.card-tabs:not(.card-outline) .card-header a {\n  color: #1F2D3D;\n}\n\n.card-yellow.card-tabs:not(.card-outline) .card-header a.active {\n  color: #1F2D3D;\n}\n\n.card-yellow.card-tabs.card-outline {\n  border-top: 3px solid #ffc107;\n}\n\n.card-yellow.card-outline-tabs .card-header a:hover {\n  border-top: 3px solid #dee2e6;\n}\n\n.card-yellow.card-outline-tabs .card-header a.active {\n  border-top: 3px solid #ffc107;\n}\n\n.bg-yellow .btn-tool,\n.bg-gradient-yellow .btn-tool,\n.card-yellow:not(.card-outline) .btn-tool {\n  color: rgba(31, 45, 61, 0.8);\n}\n\n.bg-yellow .btn-tool:hover,\n.bg-gradient-yellow .btn-tool:hover,\n.card-yellow:not(.card-outline) .btn-tool:hover {\n  color: #1F2D3D;\n}\n\n.card.bg-yellow .bootstrap-datetimepicker-widget .table td,\n.card.bg-yellow .bootstrap-datetimepicker-widget .table th,\n.card.bg-gradient-yellow .bootstrap-datetimepicker-widget .table td,\n.card.bg-gradient-yellow .bootstrap-datetimepicker-widget .table th {\n  border: none;\n}\n\n.card.bg-yellow .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,\n.card.bg-yellow .bootstrap-datetimepicker-widget table td.day:hover,\n.card.bg-yellow .bootstrap-datetimepicker-widget table td.hour:hover,\n.card.bg-yellow .bootstrap-datetimepicker-widget table td.minute:hover,\n.card.bg-yellow .bootstrap-datetimepicker-widget table td.second:hover,\n.card.bg-gradient-yellow .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,\n.card.bg-gradient-yellow .bootstrap-datetimepicker-widget table td.day:hover,\n.card.bg-gradient-yellow .bootstrap-datetimepicker-widget table td.hour:hover,\n.card.bg-gradient-yellow .bootstrap-datetimepicker-widget table td.minute:hover,\n.card.bg-gradient-yellow .bootstrap-datetimepicker-widget table td.second:hover {\n  background: #dda600;\n  color: #1F2D3D;\n}\n\n.card.bg-yellow .bootstrap-datetimepicker-widget table td.today::before,\n.card.bg-gradient-yellow .bootstrap-datetimepicker-widget table td.today::before {\n  border-bottom-color: #1F2D3D;\n}\n\n.card.bg-yellow .bootstrap-datetimepicker-widget table td.active,\n.card.bg-yellow .bootstrap-datetimepicker-widget table td.active:hover,\n.card.bg-gradient-yellow .bootstrap-datetimepicker-widget table td.active,\n.card.bg-gradient-yellow .bootstrap-datetimepicker-widget table td.active:hover {\n  background: #ffce3a;\n  color: #1F2D3D;\n}\n\n.card-green.card-tabs:not(.card-outline) .card-header {\n  background-color: #28a745;\n}\n\n.card-green.card-tabs:not(.card-outline) .card-header,\n.card-green.card-tabs:not(.card-outline) .card-header a {\n  color: #ffffff;\n}\n\n.card-green.card-tabs:not(.card-outline) .card-header a.active {\n  color: #1F2D3D;\n}\n\n.card-green.card-tabs.card-outline {\n  border-top: 3px solid #28a745;\n}\n\n.card-green.card-outline-tabs .card-header a:hover {\n  border-top: 3px solid #dee2e6;\n}\n\n.card-green.card-outline-tabs .card-header a.active {\n  border-top: 3px solid #28a745;\n}\n\n.bg-green .btn-tool,\n.bg-gradient-green .btn-tool,\n.card-green:not(.card-outline) .btn-tool {\n  color: rgba(255, 255, 255, 0.8);\n}\n\n.bg-green .btn-tool:hover,\n.bg-gradient-green .btn-tool:hover,\n.card-green:not(.card-outline) .btn-tool:hover {\n  color: #ffffff;\n}\n\n.card.bg-green .bootstrap-datetimepicker-widget .table td,\n.card.bg-green .bootstrap-datetimepicker-widget .table th,\n.card.bg-gradient-green .bootstrap-datetimepicker-widget .table td,\n.card.bg-gradient-green .bootstrap-datetimepicker-widget .table th {\n  border: none;\n}\n\n.card.bg-green .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,\n.card.bg-green .bootstrap-datetimepicker-widget table td.day:hover,\n.card.bg-green .bootstrap-datetimepicker-widget table td.hour:hover,\n.card.bg-green .bootstrap-datetimepicker-widget table td.minute:hover,\n.card.bg-green .bootstrap-datetimepicker-widget table td.second:hover,\n.card.bg-gradient-green .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,\n.card.bg-gradient-green .bootstrap-datetimepicker-widget table td.day:hover,\n.card.bg-gradient-green .bootstrap-datetimepicker-widget table td.hour:hover,\n.card.bg-gradient-green .bootstrap-datetimepicker-widget table td.minute:hover,\n.card.bg-gradient-green .bootstrap-datetimepicker-widget table td.second:hover {\n  background: #208637;\n  color: #ffffff;\n}\n\n.card.bg-green .bootstrap-datetimepicker-widget table td.today::before,\n.card.bg-gradient-green .bootstrap-datetimepicker-widget table td.today::before {\n  border-bottom-color: #ffffff;\n}\n\n.card.bg-green .bootstrap-datetimepicker-widget table td.active,\n.card.bg-green .bootstrap-datetimepicker-widget table td.active:hover,\n.card.bg-gradient-green .bootstrap-datetimepicker-widget table td.active,\n.card.bg-gradient-green .bootstrap-datetimepicker-widget table td.active:hover {\n  background: #34ce57;\n  color: #ffffff;\n}\n\n.card-teal.card-tabs:not(.card-outline) .card-header {\n  background-color: #20c997;\n}\n\n.card-teal.card-tabs:not(.card-outline) .card-header,\n.card-teal.card-tabs:not(.card-outline) .card-header a {\n  color: #ffffff;\n}\n\n.card-teal.card-tabs:not(.card-outline) .card-header a.active {\n  color: #1F2D3D;\n}\n\n.card-teal.card-tabs.card-outline {\n  border-top: 3px solid #20c997;\n}\n\n.card-teal.card-outline-tabs .card-header a:hover {\n  border-top: 3px solid #dee2e6;\n}\n\n.card-teal.card-outline-tabs .card-header a.active {\n  border-top: 3px solid #20c997;\n}\n\n.bg-teal .btn-tool,\n.bg-gradient-teal .btn-tool,\n.card-teal:not(.card-outline) .btn-tool {\n  color: rgba(255, 255, 255, 0.8);\n}\n\n.bg-teal .btn-tool:hover,\n.bg-gradient-teal .btn-tool:hover,\n.card-teal:not(.card-outline) .btn-tool:hover {\n  color: #ffffff;\n}\n\n.card.bg-teal .bootstrap-datetimepicker-widget .table td,\n.card.bg-teal .bootstrap-datetimepicker-widget .table th,\n.card.bg-gradient-teal .bootstrap-datetimepicker-widget .table td,\n.card.bg-gradient-teal .bootstrap-datetimepicker-widget .table th {\n  border: none;\n}\n\n.card.bg-teal .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,\n.card.bg-teal .bootstrap-datetimepicker-widget table td.day:hover,\n.card.bg-teal .bootstrap-datetimepicker-widget table td.hour:hover,\n.card.bg-teal .bootstrap-datetimepicker-widget table td.minute:hover,\n.card.bg-teal .bootstrap-datetimepicker-widget table td.second:hover,\n.card.bg-gradient-teal .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,\n.card.bg-gradient-teal .bootstrap-datetimepicker-widget table td.day:hover,\n.card.bg-gradient-teal .bootstrap-datetimepicker-widget table td.hour:hover,\n.card.bg-gradient-teal .bootstrap-datetimepicker-widget table td.minute:hover,\n.card.bg-gradient-teal .bootstrap-datetimepicker-widget table td.second:hover {\n  background: #1aa67d;\n  color: #ffffff;\n}\n\n.card.bg-teal .bootstrap-datetimepicker-widget table td.today::before,\n.card.bg-gradient-teal .bootstrap-datetimepicker-widget table td.today::before {\n  border-bottom-color: #ffffff;\n}\n\n.card.bg-teal .bootstrap-datetimepicker-widget table td.active,\n.card.bg-teal .bootstrap-datetimepicker-widget table td.active:hover,\n.card.bg-gradient-teal .bootstrap-datetimepicker-widget table td.active,\n.card.bg-gradient-teal .bootstrap-datetimepicker-widget table td.active:hover {\n  background: #3ce0af;\n  color: #ffffff;\n}\n\n.card-cyan.card-tabs:not(.card-outline) .card-header {\n  background-color: #17a2b8;\n}\n\n.card-cyan.card-tabs:not(.card-outline) .card-header,\n.card-cyan.card-tabs:not(.card-outline) .card-header a {\n  color: #ffffff;\n}\n\n.card-cyan.card-tabs:not(.card-outline) .card-header a.active {\n  color: #1F2D3D;\n}\n\n.card-cyan.card-tabs.card-outline {\n  border-top: 3px solid #17a2b8;\n}\n\n.card-cyan.card-outline-tabs .card-header a:hover {\n  border-top: 3px solid #dee2e6;\n}\n\n.card-cyan.card-outline-tabs .card-header a.active {\n  border-top: 3px solid #17a2b8;\n}\n\n.bg-cyan .btn-tool,\n.bg-gradient-cyan .btn-tool,\n.card-cyan:not(.card-outline) .btn-tool {\n  color: rgba(255, 255, 255, 0.8);\n}\n\n.bg-cyan .btn-tool:hover,\n.bg-gradient-cyan .btn-tool:hover,\n.card-cyan:not(.card-outline) .btn-tool:hover {\n  color: #ffffff;\n}\n\n.card.bg-cyan .bootstrap-datetimepicker-widget .table td,\n.card.bg-cyan .bootstrap-datetimepicker-widget .table th,\n.card.bg-gradient-cyan .bootstrap-datetimepicker-widget .table td,\n.card.bg-gradient-cyan .bootstrap-datetimepicker-widget .table th {\n  border: none;\n}\n\n.card.bg-cyan .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,\n.card.bg-cyan .bootstrap-datetimepicker-widget table td.day:hover,\n.card.bg-cyan .bootstrap-datetimepicker-widget table td.hour:hover,\n.card.bg-cyan .bootstrap-datetimepicker-widget table td.minute:hover,\n.card.bg-cyan .bootstrap-datetimepicker-widget table td.second:hover,\n.card.bg-gradient-cyan .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,\n.card.bg-gradient-cyan .bootstrap-datetimepicker-widget table td.day:hover,\n.card.bg-gradient-cyan .bootstrap-datetimepicker-widget table td.hour:hover,\n.card.bg-gradient-cyan .bootstrap-datetimepicker-widget table td.minute:hover,\n.card.bg-gradient-cyan .bootstrap-datetimepicker-widget table td.second:hover {\n  background: #128294;\n  color: #ffffff;\n}\n\n.card.bg-cyan .bootstrap-datetimepicker-widget table td.today::before,\n.card.bg-gradient-cyan .bootstrap-datetimepicker-widget table td.today::before {\n  border-bottom-color: #ffffff;\n}\n\n.card.bg-cyan .bootstrap-datetimepicker-widget table td.active,\n.card.bg-cyan .bootstrap-datetimepicker-widget table td.active:hover,\n.card.bg-gradient-cyan .bootstrap-datetimepicker-widget table td.active,\n.card.bg-gradient-cyan .bootstrap-datetimepicker-widget table td.active:hover {\n  background: #1fc8e3;\n  color: #ffffff;\n}\n\n.card-white.card-tabs:not(.card-outline) .card-header {\n  background-color: #ffffff;\n}\n\n.card-white.card-tabs:not(.card-outline) .card-header,\n.card-white.card-tabs:not(.card-outline) .card-header a {\n  color: #1F2D3D;\n}\n\n.card-white.card-tabs:not(.card-outline) .card-header a.active {\n  color: #1F2D3D;\n}\n\n.card-white.card-tabs.card-outline {\n  border-top: 3px solid #ffffff;\n}\n\n.card-white.card-outline-tabs .card-header a:hover {\n  border-top: 3px solid #dee2e6;\n}\n\n.card-white.card-outline-tabs .card-header a.active {\n  border-top: 3px solid #ffffff;\n}\n\n.bg-white .btn-tool,\n.bg-gradient-white .btn-tool,\n.card-white:not(.card-outline) .btn-tool {\n  color: rgba(31, 45, 61, 0.8);\n}\n\n.bg-white .btn-tool:hover,\n.bg-gradient-white .btn-tool:hover,\n.card-white:not(.card-outline) .btn-tool:hover {\n  color: #1F2D3D;\n}\n\n.card.bg-white .bootstrap-datetimepicker-widget .table td,\n.card.bg-white .bootstrap-datetimepicker-widget .table th,\n.card.bg-gradient-white .bootstrap-datetimepicker-widget .table td,\n.card.bg-gradient-white .bootstrap-datetimepicker-widget .table th {\n  border: none;\n}\n\n.card.bg-white .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,\n.card.bg-white .bootstrap-datetimepicker-widget table td.day:hover,\n.card.bg-white .bootstrap-datetimepicker-widget table td.hour:hover,\n.card.bg-white .bootstrap-datetimepicker-widget table td.minute:hover,\n.card.bg-white .bootstrap-datetimepicker-widget table td.second:hover,\n.card.bg-gradient-white .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,\n.card.bg-gradient-white .bootstrap-datetimepicker-widget table td.day:hover,\n.card.bg-gradient-white .bootstrap-datetimepicker-widget table td.hour:hover,\n.card.bg-gradient-white .bootstrap-datetimepicker-widget table td.minute:hover,\n.card.bg-gradient-white .bootstrap-datetimepicker-widget table td.second:hover {\n  background: #ebebeb;\n  color: #1F2D3D;\n}\n\n.card.bg-white .bootstrap-datetimepicker-widget table td.today::before,\n.card.bg-gradient-white .bootstrap-datetimepicker-widget table td.today::before {\n  border-bottom-color: #1F2D3D;\n}\n\n.card.bg-white .bootstrap-datetimepicker-widget table td.active,\n.card.bg-white .bootstrap-datetimepicker-widget table td.active:hover,\n.card.bg-gradient-white .bootstrap-datetimepicker-widget table td.active,\n.card.bg-gradient-white .bootstrap-datetimepicker-widget table td.active:hover {\n  background: white;\n  color: #1F2D3D;\n}\n\n.card-gray.card-tabs:not(.card-outline) .card-header {\n  background-color: #6c757d;\n}\n\n.card-gray.card-tabs:not(.card-outline) .card-header,\n.card-gray.card-tabs:not(.card-outline) .card-header a {\n  color: #ffffff;\n}\n\n.card-gray.card-tabs:not(.card-outline) .card-header a.active {\n  color: #1F2D3D;\n}\n\n.card-gray.card-tabs.card-outline {\n  border-top: 3px solid #6c757d;\n}\n\n.card-gray.card-outline-tabs .card-header a:hover {\n  border-top: 3px solid #dee2e6;\n}\n\n.card-gray.card-outline-tabs .card-header a.active {\n  border-top: 3px solid #6c757d;\n}\n\n.bg-gray .btn-tool,\n.bg-gradient-gray .btn-tool,\n.card-gray:not(.card-outline) .btn-tool {\n  color: rgba(255, 255, 255, 0.8);\n}\n\n.bg-gray .btn-tool:hover,\n.bg-gradient-gray .btn-tool:hover,\n.card-gray:not(.card-outline) .btn-tool:hover {\n  color: #ffffff;\n}\n\n.card.bg-gray .bootstrap-datetimepicker-widget .table td,\n.card.bg-gray .bootstrap-datetimepicker-widget .table th,\n.card.bg-gradient-gray .bootstrap-datetimepicker-widget .table td,\n.card.bg-gradient-gray .bootstrap-datetimepicker-widget .table th {\n  border: none;\n}\n\n.card.bg-gray .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,\n.card.bg-gray .bootstrap-datetimepicker-widget table td.day:hover,\n.card.bg-gray .bootstrap-datetimepicker-widget table td.hour:hover,\n.card.bg-gray .bootstrap-datetimepicker-widget table td.minute:hover,\n.card.bg-gray .bootstrap-datetimepicker-widget table td.second:hover,\n.card.bg-gradient-gray .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,\n.card.bg-gradient-gray .bootstrap-datetimepicker-widget table td.day:hover,\n.card.bg-gradient-gray .bootstrap-datetimepicker-widget table td.hour:hover,\n.card.bg-gradient-gray .bootstrap-datetimepicker-widget table td.minute:hover,\n.card.bg-gradient-gray .bootstrap-datetimepicker-widget table td.second:hover {\n  background: #596167;\n  color: #ffffff;\n}\n\n.card.bg-gray .bootstrap-datetimepicker-widget table td.today::before,\n.card.bg-gradient-gray .bootstrap-datetimepicker-widget table td.today::before {\n  border-bottom-color: #ffffff;\n}\n\n.card.bg-gray .bootstrap-datetimepicker-widget table td.active,\n.card.bg-gray .bootstrap-datetimepicker-widget table td.active:hover,\n.card.bg-gradient-gray .bootstrap-datetimepicker-widget table td.active,\n.card.bg-gradient-gray .bootstrap-datetimepicker-widget table td.active:hover {\n  background: #868e96;\n  color: #ffffff;\n}\n\n.card-gray-dark.card-tabs:not(.card-outline) .card-header {\n  background-color: #343a40;\n}\n\n.card-gray-dark.card-tabs:not(.card-outline) .card-header,\n.card-gray-dark.card-tabs:not(.card-outline) .card-header a {\n  color: #ffffff;\n}\n\n.card-gray-dark.card-tabs:not(.card-outline) .card-header a.active {\n  color: #1F2D3D;\n}\n\n.card-gray-dark.card-tabs.card-outline {\n  border-top: 3px solid #343a40;\n}\n\n.card-gray-dark.card-outline-tabs .card-header a:hover {\n  border-top: 3px solid #dee2e6;\n}\n\n.card-gray-dark.card-outline-tabs .card-header a.active {\n  border-top: 3px solid #343a40;\n}\n\n.bg-gray-dark .btn-tool,\n.bg-gradient-gray-dark .btn-tool,\n.card-gray-dark:not(.card-outline) .btn-tool {\n  color: rgba(255, 255, 255, 0.8);\n}\n\n.bg-gray-dark .btn-tool:hover,\n.bg-gradient-gray-dark .btn-tool:hover,\n.card-gray-dark:not(.card-outline) .btn-tool:hover {\n  color: #ffffff;\n}\n\n.card.bg-gray-dark .bootstrap-datetimepicker-widget .table td,\n.card.bg-gray-dark .bootstrap-datetimepicker-widget .table th,\n.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget .table td,\n.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget .table th {\n  border: none;\n}\n\n.card.bg-gray-dark .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,\n.card.bg-gray-dark .bootstrap-datetimepicker-widget table td.day:hover,\n.card.bg-gray-dark .bootstrap-datetimepicker-widget table td.hour:hover,\n.card.bg-gray-dark .bootstrap-datetimepicker-widget table td.minute:hover,\n.card.bg-gray-dark .bootstrap-datetimepicker-widget table td.second:hover,\n.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,\n.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget table td.day:hover,\n.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget table td.hour:hover,\n.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget table td.minute:hover,\n.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget table td.second:hover {\n  background: #222629;\n  color: #ffffff;\n}\n\n.card.bg-gray-dark .bootstrap-datetimepicker-widget table td.today::before,\n.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget table td.today::before {\n  border-bottom-color: #ffffff;\n}\n\n.card.bg-gray-dark .bootstrap-datetimepicker-widget table td.active,\n.card.bg-gray-dark .bootstrap-datetimepicker-widget table td.active:hover,\n.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget table td.active,\n.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget table td.active:hover {\n  background: #4b545c;\n  color: #ffffff;\n}\n\n.card-default .nav-item:first-child .nav-link {\n  border-left: 0;\n}\n\n.modal-dialog .overlay {\n  background-color: #000;\n  display: block;\n  height: 100%;\n  left: 0;\n  opacity: .7;\n  position: absolute;\n  top: 0;\n  width: 100%;\n  z-index: 1052;\n}\n\n.modal-content.bg-warning .modal-header,\n.modal-content.bg-warning .modal-footer {\n  border-color: #343a40;\n}\n\n.modal-content.bg-primary .close, .modal-content.bg-primary .mailbox-attachment-close, .modal-content.bg-secondary .close, .modal-content.bg-secondary .mailbox-attachment-close, .modal-content.bg-info .close, .modal-content.bg-info .mailbox-attachment-close, .modal-content.bg-danger .close, .modal-content.bg-danger .mailbox-attachment-close, .modal-content.bg-success .close, .modal-content.bg-success .mailbox-attachment-close {\n  color: #ffffff;\n  text-shadow: 0 1px 0 #000;\n}\n\n.toasts-top-right {\n  position: absolute;\n  right: 0;\n  top: 0;\n  z-index: 1040;\n}\n\n.toasts-top-right.fixed {\n  position: fixed;\n}\n\n.toasts-top-left {\n  left: 0;\n  position: absolute;\n  top: 0;\n  z-index: 1040;\n}\n\n.toasts-top-left.fixed {\n  position: fixed;\n}\n\n.toasts-bottom-right {\n  bottom: 0;\n  position: absolute;\n  right: 0;\n  z-index: 1040;\n}\n\n.toasts-bottom-right.fixed {\n  position: fixed;\n}\n\n.toasts-bottom-left {\n  bottom: 0;\n  left: 0;\n  position: absolute;\n  z-index: 1040;\n}\n\n.toasts-bottom-left.fixed {\n  position: fixed;\n}\n\n.toast.bg-primary {\n  background: rgba(0, 123, 255, 0.9) !important;\n}\n\n.toast.bg-primary .close, .toast.bg-primary .mailbox-attachment-close {\n  color: #ffffff;\n  text-shadow: 0 1px 0 #000;\n}\n\n.toast.bg-primary .toast-header {\n  background: rgba(0, 123, 255, 0.85);\n  color: #ffffff;\n}\n\n.toast.bg-secondary {\n  background: rgba(108, 117, 125, 0.9) !important;\n}\n\n.toast.bg-secondary .close, .toast.bg-secondary .mailbox-attachment-close {\n  color: #ffffff;\n  text-shadow: 0 1px 0 #000;\n}\n\n.toast.bg-secondary .toast-header {\n  background: rgba(108, 117, 125, 0.85);\n  color: #ffffff;\n}\n\n.toast.bg-success {\n  background: rgba(40, 167, 69, 0.9) !important;\n}\n\n.toast.bg-success .close, .toast.bg-success .mailbox-attachment-close {\n  color: #ffffff;\n  text-shadow: 0 1px 0 #000;\n}\n\n.toast.bg-success .toast-header {\n  background: rgba(40, 167, 69, 0.85);\n  color: #ffffff;\n}\n\n.toast.bg-info {\n  background: rgba(23, 162, 184, 0.9) !important;\n}\n\n.toast.bg-info .close, .toast.bg-info .mailbox-attachment-close {\n  color: #ffffff;\n  text-shadow: 0 1px 0 #000;\n}\n\n.toast.bg-info .toast-header {\n  background: rgba(23, 162, 184, 0.85);\n  color: #ffffff;\n}\n\n.toast.bg-warning {\n  background: rgba(255, 193, 7, 0.9) !important;\n}\n\n.toast.bg-warning .toast-header {\n  background: rgba(255, 193, 7, 0.85);\n  color: #1F2D3D;\n}\n\n.toast.bg-danger {\n  background: rgba(220, 53, 69, 0.9) !important;\n}\n\n.toast.bg-danger .close, .toast.bg-danger .mailbox-attachment-close {\n  color: #ffffff;\n  text-shadow: 0 1px 0 #000;\n}\n\n.toast.bg-danger .toast-header {\n  background: rgba(220, 53, 69, 0.85);\n  color: #ffffff;\n}\n\n.toast.bg-light {\n  background: rgba(248, 249, 250, 0.9) !important;\n}\n\n.toast.bg-light .toast-header {\n  background: rgba(248, 249, 250, 0.85);\n  color: #1F2D3D;\n}\n\n.toast.bg-dark {\n  background: rgba(52, 58, 64, 0.9) !important;\n}\n\n.toast.bg-dark .close, .toast.bg-dark .mailbox-attachment-close {\n  color: #ffffff;\n  text-shadow: 0 1px 0 #000;\n}\n\n.toast.bg-dark .toast-header {\n  background: rgba(52, 58, 64, 0.85);\n  color: #ffffff;\n}\n\n.toast.bg-navy {\n  background: rgba(0, 31, 63, 0.9) !important;\n}\n\n.toast.bg-navy .close, .toast.bg-navy .mailbox-attachment-close {\n  color: #ffffff;\n  text-shadow: 0 1px 0 #000;\n}\n\n.toast.bg-navy .toast-header {\n  background: rgba(0, 31, 63, 0.85);\n  color: #ffffff;\n}\n\n.toast.bg-olive {\n  background: rgba(61, 153, 112, 0.9) !important;\n}\n\n.toast.bg-olive .close, .toast.bg-olive .mailbox-attachment-close {\n  color: #ffffff;\n  text-shadow: 0 1px 0 #000;\n}\n\n.toast.bg-olive .toast-header {\n  background: rgba(61, 153, 112, 0.85);\n  color: #ffffff;\n}\n\n.toast.bg-lime {\n  background: rgba(1, 255, 112, 0.9) !important;\n}\n\n.toast.bg-lime .toast-header {\n  background: rgba(1, 255, 112, 0.85);\n  color: #1F2D3D;\n}\n\n.toast.bg-fuchsia {\n  background: rgba(240, 18, 190, 0.9) !important;\n}\n\n.toast.bg-fuchsia .close, .toast.bg-fuchsia .mailbox-attachment-close {\n  color: #ffffff;\n  text-shadow: 0 1px 0 #000;\n}\n\n.toast.bg-fuchsia .toast-header {\n  background: rgba(240, 18, 190, 0.85);\n  color: #ffffff;\n}\n\n.toast.bg-maroon {\n  background: rgba(216, 27, 96, 0.9) !important;\n}\n\n.toast.bg-maroon .close, .toast.bg-maroon .mailbox-attachment-close {\n  color: #ffffff;\n  text-shadow: 0 1px 0 #000;\n}\n\n.toast.bg-maroon .toast-header {\n  background: rgba(216, 27, 96, 0.85);\n  color: #ffffff;\n}\n\n.toast.bg-blue {\n  background: rgba(0, 123, 255, 0.9) !important;\n}\n\n.toast.bg-blue .close, .toast.bg-blue .mailbox-attachment-close {\n  color: #ffffff;\n  text-shadow: 0 1px 0 #000;\n}\n\n.toast.bg-blue .toast-header {\n  background: rgba(0, 123, 255, 0.85);\n  color: #ffffff;\n}\n\n.toast.bg-indigo {\n  background: rgba(102, 16, 242, 0.9) !important;\n}\n\n.toast.bg-indigo .close, .toast.bg-indigo .mailbox-attachment-close {\n  color: #ffffff;\n  text-shadow: 0 1px 0 #000;\n}\n\n.toast.bg-indigo .toast-header {\n  background: rgba(102, 16, 242, 0.85);\n  color: #ffffff;\n}\n\n.toast.bg-purple {\n  background: rgba(111, 66, 193, 0.9) !important;\n}\n\n.toast.bg-purple .close, .toast.bg-purple .mailbox-attachment-close {\n  color: #ffffff;\n  text-shadow: 0 1px 0 #000;\n}\n\n.toast.bg-purple .toast-header {\n  background: rgba(111, 66, 193, 0.85);\n  color: #ffffff;\n}\n\n.toast.bg-pink {\n  background: rgba(232, 62, 140, 0.9) !important;\n}\n\n.toast.bg-pink .close, .toast.bg-pink .mailbox-attachment-close {\n  color: #ffffff;\n  text-shadow: 0 1px 0 #000;\n}\n\n.toast.bg-pink .toast-header {\n  background: rgba(232, 62, 140, 0.85);\n  color: #ffffff;\n}\n\n.toast.bg-red {\n  background: rgba(220, 53, 69, 0.9) !important;\n}\n\n.toast.bg-red .close, .toast.bg-red .mailbox-attachment-close {\n  color: #ffffff;\n  text-shadow: 0 1px 0 #000;\n}\n\n.toast.bg-red .toast-header {\n  background: rgba(220, 53, 69, 0.85);\n  color: #ffffff;\n}\n\n.toast.bg-orange {\n  background: rgba(253, 126, 20, 0.9) !important;\n}\n\n.toast.bg-orange .toast-header {\n  background: rgba(253, 126, 20, 0.85);\n  color: #1F2D3D;\n}\n\n.toast.bg-yellow {\n  background: rgba(255, 193, 7, 0.9) !important;\n}\n\n.toast.bg-yellow .toast-header {\n  background: rgba(255, 193, 7, 0.85);\n  color: #1F2D3D;\n}\n\n.toast.bg-green {\n  background: rgba(40, 167, 69, 0.9) !important;\n}\n\n.toast.bg-green .close, .toast.bg-green .mailbox-attachment-close {\n  color: #ffffff;\n  text-shadow: 0 1px 0 #000;\n}\n\n.toast.bg-green .toast-header {\n  background: rgba(40, 167, 69, 0.85);\n  color: #ffffff;\n}\n\n.toast.bg-teal {\n  background: rgba(32, 201, 151, 0.9) !important;\n}\n\n.toast.bg-teal .close, .toast.bg-teal .mailbox-attachment-close {\n  color: #ffffff;\n  text-shadow: 0 1px 0 #000;\n}\n\n.toast.bg-teal .toast-header {\n  background: rgba(32, 201, 151, 0.85);\n  color: #ffffff;\n}\n\n.toast.bg-cyan {\n  background: rgba(23, 162, 184, 0.9) !important;\n}\n\n.toast.bg-cyan .close, .toast.bg-cyan .mailbox-attachment-close {\n  color: #ffffff;\n  text-shadow: 0 1px 0 #000;\n}\n\n.toast.bg-cyan .toast-header {\n  background: rgba(23, 162, 184, 0.85);\n  color: #ffffff;\n}\n\n.toast.bg-white {\n  background: rgba(255, 255, 255, 0.9) !important;\n}\n\n.toast.bg-white .toast-header {\n  background: rgba(255, 255, 255, 0.85);\n  color: #1F2D3D;\n}\n\n.toast.bg-gray {\n  background: rgba(108, 117, 125, 0.9) !important;\n}\n\n.toast.bg-gray .close, .toast.bg-gray .mailbox-attachment-close {\n  color: #ffffff;\n  text-shadow: 0 1px 0 #000;\n}\n\n.toast.bg-gray .toast-header {\n  background: rgba(108, 117, 125, 0.85);\n  color: #ffffff;\n}\n\n.toast.bg-gray-dark {\n  background: rgba(52, 58, 64, 0.9) !important;\n}\n\n.toast.bg-gray-dark .close, .toast.bg-gray-dark .mailbox-attachment-close {\n  color: #ffffff;\n  text-shadow: 0 1px 0 #000;\n}\n\n.toast.bg-gray-dark .toast-header {\n  background: rgba(52, 58, 64, 0.85);\n  color: #ffffff;\n}\n\n.btn.disabled, .btn:disabled {\n  cursor: not-allowed;\n}\n\n.btn.btn-flat {\n  border-radius: 0;\n  border-width: 1px;\n  box-shadow: none;\n}\n\n.btn.btn-file {\n  overflow: hidden;\n  position: relative;\n}\n\n.btn.btn-file > input[type='file'] {\n  background: #ffffff;\n  cursor: inherit;\n  display: block;\n  font-size: 100px;\n  min-height: 100%;\n  min-width: 100%;\n  opacity: 0;\n  outline: none;\n  position: absolute;\n  right: 0;\n  text-align: right;\n  top: 0;\n}\n\n.text-sm .btn {\n  font-size: 0.875rem !important;\n}\n\n.btn-default {\n  background-color: #f8f9fa;\n  border-color: #ddd;\n  color: #444;\n}\n\n.btn-default:hover, .btn-default:active, .btn-default.hover {\n  background-color: #e9ecef;\n  color: #2b2b2b;\n}\n\n.btn-app {\n  border-radius: 3px;\n  background-color: #f8f9fa;\n  border: 1px solid #ddd;\n  color: #6c757d;\n  font-size: 12px;\n  height: 60px;\n  margin: 0 0 10px 10px;\n  min-width: 80px;\n  padding: 15px 5px;\n  position: relative;\n  text-align: center;\n}\n\n.btn-app > .fa,\n.btn-app > .fas,\n.btn-app > .far,\n.btn-app > .fab,\n.btn-app > .glyphicon,\n.btn-app > .ion {\n  display: block;\n  font-size: 20px;\n}\n\n.btn-app:hover {\n  background: #f8f9fa;\n  border-color: #aaaaaa;\n  color: #444;\n}\n\n.btn-app:active, .btn-app:focus {\n  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n\n.btn-app > .badge {\n  font-size: 10px;\n  font-weight: 400;\n  position: absolute;\n  right: -10px;\n  top: -3px;\n}\n\n.btn-xs {\n  padding: 0.125rem 0.25rem;\n  font-size: 0.75rem;\n  line-height: 1.5;\n  border-radius: 0.15rem;\n}\n\n.callout {\n  border-radius: 0.25rem;\n  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24);\n  background-color: #ffffff;\n  border-left: 5px solid #e9ecef;\n  margin-bottom: 1rem;\n  padding: 1rem;\n}\n\n.callout a {\n  color: #495057;\n  text-decoration: underline;\n}\n\n.callout a:hover {\n  color: #e9ecef;\n}\n\n.callout p:last-child {\n  margin-bottom: 0;\n}\n\n.callout.callout-danger {\n  border-left-color: #bd2130;\n}\n\n.callout.callout-warning {\n  border-left-color: #d39e00;\n}\n\n.callout.callout-info {\n  border-left-color: #117a8b;\n}\n\n.callout.callout-success {\n  border-left-color: #1e7e34;\n}\n\n.alert .icon {\n  margin-right: 10px;\n}\n\n.alert .close, .alert .mailbox-attachment-close {\n  color: #000;\n  opacity: .2;\n}\n\n.alert .close:hover, .alert .mailbox-attachment-close:hover {\n  opacity: .5;\n}\n\n.alert a {\n  color: #ffffff;\n  text-decoration: underline;\n}\n\n.alert-primary {\n  color: #ffffff;\n  background: #007bff;\n  border-color: #006fe6;\n}\n\n.alert-default-primary {\n  color: #004085;\n  background-color: #cce5ff;\n  border-color: #b8daff;\n}\n\n.alert-default-primary hr {\n  border-top-color: #9fcdff;\n}\n\n.alert-default-primary .alert-link {\n  color: #002752;\n}\n\n.alert-secondary {\n  color: #ffffff;\n  background: #6c757d;\n  border-color: #60686f;\n}\n\n.alert-default-secondary {\n  color: #383d41;\n  background-color: #e2e3e5;\n  border-color: #d6d8db;\n}\n\n.alert-default-secondary hr {\n  border-top-color: #c8cbcf;\n}\n\n.alert-default-secondary .alert-link {\n  color: #202326;\n}\n\n.alert-success {\n  color: #ffffff;\n  background: #28a745;\n  border-color: #23923d;\n}\n\n.alert-default-success {\n  color: #155724;\n  background-color: #d4edda;\n  border-color: #c3e6cb;\n}\n\n.alert-default-success hr {\n  border-top-color: #b1dfbb;\n}\n\n.alert-default-success .alert-link {\n  color: #0b2e13;\n}\n\n.alert-info {\n  color: #ffffff;\n  background: #17a2b8;\n  border-color: #148ea1;\n}\n\n.alert-default-info {\n  color: #0c5460;\n  background-color: #d1ecf1;\n  border-color: #bee5eb;\n}\n\n.alert-default-info hr {\n  border-top-color: #abdde5;\n}\n\n.alert-default-info .alert-link {\n  color: #062c33;\n}\n\n.alert-warning {\n  color: #1F2D3D;\n  background: #ffc107;\n  border-color: #edb100;\n}\n\n.alert-default-warning {\n  color: #856404;\n  background-color: #fff3cd;\n  border-color: #ffeeba;\n}\n\n.alert-default-warning hr {\n  border-top-color: #ffe8a1;\n}\n\n.alert-default-warning .alert-link {\n  color: #533f03;\n}\n\n.alert-danger {\n  color: #ffffff;\n  background: #dc3545;\n  border-color: #d32535;\n}\n\n.alert-default-danger {\n  color: #721c24;\n  background-color: #f8d7da;\n  border-color: #f5c6cb;\n}\n\n.alert-default-danger hr {\n  border-top-color: #f1b0b7;\n}\n\n.alert-default-danger .alert-link {\n  color: #491217;\n}\n\n.alert-light {\n  color: #1F2D3D;\n  background: #f8f9fa;\n  border-color: #e9ecef;\n}\n\n.alert-default-light {\n  color: #818182;\n  background-color: #fefefe;\n  border-color: #fdfdfe;\n}\n\n.alert-default-light hr {\n  border-top-color: #ececf6;\n}\n\n.alert-default-light .alert-link {\n  color: #686868;\n}\n\n.alert-dark {\n  color: #ffffff;\n  background: #343a40;\n  border-color: #292d32;\n}\n\n.alert-default-dark {\n  color: #1b1e21;\n  background-color: #d6d8d9;\n  border-color: #c6c8ca;\n}\n\n.alert-default-dark hr {\n  border-top-color: #b9bbbe;\n}\n\n.alert-default-dark .alert-link {\n  color: #040505;\n}\n\n.table:not(.table-dark) {\n  color: inherit;\n}\n\n.table.table-head-fixed thead tr:nth-child(1) th {\n  background-color: #ffffff;\n  border-bottom: 0;\n  box-shadow: inset 0 1px 0 #dee2e6, inset 0 -1px 0 #dee2e6;\n  position: -webkit-sticky;\n  position: sticky;\n  top: 0;\n  z-index: 10;\n}\n\n.table.table-head-fixed.table-dark thead tr:nth-child(1) th {\n  background-color: #212529;\n  box-shadow: inset 0 1px 0 #383f45, inset 0 -1px 0 #383f45;\n}\n\n.table.no-border,\n.table.no-border td,\n.table.no-border th {\n  border: 0;\n}\n\n.table.text-center,\n.table.text-center td,\n.table.text-center th {\n  text-align: center;\n}\n\n.table.table-valign-middle thead > tr > th,\n.table.table-valign-middle thead > tr > td,\n.table.table-valign-middle tbody > tr > th,\n.table.table-valign-middle tbody > tr > td {\n  vertical-align: middle;\n}\n\n.card-body.p-0 .table thead > tr > th:first-of-type,\n.card-body.p-0 .table thead > tr > td:first-of-type,\n.card-body.p-0 .table tbody > tr > th:first-of-type,\n.card-body.p-0 .table tbody > tr > td:first-of-type {\n  padding-left: 1.5rem;\n}\n\n.card-body.p-0 .table thead > tr > th:last-of-type,\n.card-body.p-0 .table thead > tr > td:last-of-type,\n.card-body.p-0 .table tbody > tr > th:last-of-type,\n.card-body.p-0 .table tbody > tr > td:last-of-type {\n  padding-right: 1.5rem;\n}\n\n.carousel-control.left, .carousel-control.right {\n  background-image: none;\n}\n\n.carousel-control > .fa,\n.carousel-control > .fas,\n.carousel-control > .far,\n.carousel-control > .fab,\n.carousel-control > .glyphicon,\n.carousel-control > .ion {\n  display: inline-block;\n  font-size: 40px;\n  margin-top: -20px;\n  position: absolute;\n  top: 50%;\n  z-index: 5;\n}\n\n.small-box {\n  border-radius: 0.25rem;\n  box-shadow: 0 0 1px rgba(0, 0, 0, 0.125), 0 1px 3px rgba(0, 0, 0, 0.2);\n  display: block;\n  margin-bottom: 20px;\n  position: relative;\n}\n\n.small-box > .inner {\n  padding: 10px;\n}\n\n.small-box > .small-box-footer {\n  background: rgba(0, 0, 0, 0.1);\n  color: rgba(255, 255, 255, 0.8);\n  display: block;\n  padding: 3px 0;\n  position: relative;\n  text-align: center;\n  text-decoration: none;\n  z-index: 10;\n}\n\n.small-box > .small-box-footer:hover {\n  background: rgba(0, 0, 0, 0.15);\n  color: #ffffff;\n}\n\n.small-box h3 {\n  font-size: 2.2rem;\n  font-weight: bold;\n  margin: 0 0 10px 0;\n  padding: 0;\n  white-space: nowrap;\n}\n\n@media (min-width: 992px) {\n  .col-xl-2 .small-box h3,\n  .col-lg-2 .small-box h3,\n  .col-md-2 .small-box h3 {\n    font-size: 1.6rem;\n  }\n  .col-xl-3 .small-box h3,\n  .col-lg-3 .small-box h3,\n  .col-md-3 .small-box h3 {\n    font-size: 1.6rem;\n  }\n}\n\n@media (min-width: 1200px) {\n  .col-xl-2 .small-box h3,\n  .col-lg-2 .small-box h3,\n  .col-md-2 .small-box h3 {\n    font-size: 2.2rem;\n  }\n  .col-xl-3 .small-box h3,\n  .col-lg-3 .small-box h3,\n  .col-md-3 .small-box h3 {\n    font-size: 2.2rem;\n  }\n}\n\n.small-box p {\n  font-size: 1rem;\n}\n\n.small-box p > small {\n  color: #f8f9fa;\n  display: block;\n  font-size: 0.9rem;\n  margin-top: 5px;\n}\n\n.small-box h3,\n.small-box p {\n  z-index: 5;\n}\n\n.small-box .icon {\n  color: rgba(0, 0, 0, 0.15);\n  z-index: 0;\n}\n\n.small-box .icon > i {\n  font-size: 90px;\n  position: absolute;\n  right: 15px;\n  top: 15px;\n  transition: all 0.3s linear;\n}\n\n.small-box .icon > i.fa, .small-box .icon > i.fas, .small-box .icon > i.far, .small-box .icon > i.fab, .small-box .icon > i.glyphicon, .small-box .icon > i.ion {\n  font-size: 70px;\n  top: 20px;\n}\n\n.small-box:hover {\n  text-decoration: none;\n}\n\n.small-box:hover .icon > i {\n  font-size: 95px;\n}\n\n.small-box:hover .icon > i.fa, .small-box:hover .icon > i.fas, .small-box:hover .icon > i.far, .small-box:hover .icon > i.fab, .small-box:hover .icon > i.glyphicon, .small-box:hover .icon > i.ion {\n  font-size: 75px;\n}\n\n@media (max-width: 767.98px) {\n  .small-box {\n    text-align: center;\n  }\n  .small-box .icon {\n    display: none;\n  }\n  .small-box p {\n    font-size: 12px;\n  }\n}\n\n.info-box {\n  box-shadow: 0 0 1px rgba(0, 0, 0, 0.125), 0 1px 3px rgba(0, 0, 0, 0.2);\n  border-radius: 0.25rem;\n  background: #ffffff;\n  display: -ms-flexbox;\n  display: flex;\n  margin-bottom: 1rem;\n  min-height: 80px;\n  padding: .5rem;\n  position: relative;\n}\n\n.info-box .progress {\n  background-color: rgba(0, 0, 0, 0.125);\n  height: 2px;\n  margin: 5px 0;\n}\n\n.info-box .progress .progress-bar {\n  background-color: #ffffff;\n}\n\n.info-box .info-box-icon {\n  border-radius: 0.25rem;\n  -ms-flex-align: center;\n  align-items: center;\n  display: -ms-flexbox;\n  display: flex;\n  font-size: 1.875rem;\n  -ms-flex-pack: center;\n  justify-content: center;\n  text-align: center;\n  width: 70px;\n}\n\n.info-box .info-box-icon > img {\n  max-width: 100%;\n}\n\n.info-box .info-box-content {\n  -ms-flex: 1;\n  flex: 1;\n  padding: 5px 10px;\n}\n\n.info-box .info-box-number {\n  display: block;\n  font-weight: 700;\n}\n\n.info-box .progress-description,\n.info-box .info-box-text {\n  display: block;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n\n.info-box .info-box .bg-primary,\n.info-box .info-box .bg-gradient-primary {\n  color: #ffffff;\n}\n\n.info-box .info-box .bg-primary .progress-bar,\n.info-box .info-box .bg-gradient-primary .progress-bar {\n  background-color: #ffffff;\n}\n\n.info-box .info-box .bg-secondary,\n.info-box .info-box .bg-gradient-secondary {\n  color: #ffffff;\n}\n\n.info-box .info-box .bg-secondary .progress-bar,\n.info-box .info-box .bg-gradient-secondary .progress-bar {\n  background-color: #ffffff;\n}\n\n.info-box .info-box .bg-success,\n.info-box .info-box .bg-gradient-success {\n  color: #ffffff;\n}\n\n.info-box .info-box .bg-success .progress-bar,\n.info-box .info-box .bg-gradient-success .progress-bar {\n  background-color: #ffffff;\n}\n\n.info-box .info-box .bg-info,\n.info-box .info-box .bg-gradient-info {\n  color: #ffffff;\n}\n\n.info-box .info-box .bg-info .progress-bar,\n.info-box .info-box .bg-gradient-info .progress-bar {\n  background-color: #ffffff;\n}\n\n.info-box .info-box .bg-warning,\n.info-box .info-box .bg-gradient-warning {\n  color: #1F2D3D;\n}\n\n.info-box .info-box .bg-warning .progress-bar,\n.info-box .info-box .bg-gradient-warning .progress-bar {\n  background-color: #1F2D3D;\n}\n\n.info-box .info-box .bg-danger,\n.info-box .info-box .bg-gradient-danger {\n  color: #ffffff;\n}\n\n.info-box .info-box .bg-danger .progress-bar,\n.info-box .info-box .bg-gradient-danger .progress-bar {\n  background-color: #ffffff;\n}\n\n.info-box .info-box .bg-light,\n.info-box .info-box .bg-gradient-light {\n  color: #1F2D3D;\n}\n\n.info-box .info-box .bg-light .progress-bar,\n.info-box .info-box .bg-gradient-light .progress-bar {\n  background-color: #1F2D3D;\n}\n\n.info-box .info-box .bg-dark,\n.info-box .info-box .bg-gradient-dark {\n  color: #ffffff;\n}\n\n.info-box .info-box .bg-dark .progress-bar,\n.info-box .info-box .bg-gradient-dark .progress-bar {\n  background-color: #ffffff;\n}\n\n.info-box .info-box-more {\n  display: block;\n}\n\n.info-box .progress-description {\n  margin: 0;\n}\n\n@media (min-width: 768px) {\n  .col-xl-2 .info-box .progress-description,\n  .col-lg-2 .info-box .progress-description,\n  .col-md-2 .info-box .progress-description {\n    display: none;\n  }\n  .col-xl-3 .info-box .progress-description,\n  .col-lg-3 .info-box .progress-description,\n  .col-md-3 .info-box .progress-description {\n    display: none;\n  }\n}\n\n@media (min-width: 992px) {\n  .col-xl-2 .info-box .progress-description,\n  .col-lg-2 .info-box .progress-description,\n  .col-md-2 .info-box .progress-description {\n    font-size: 0.75rem;\n    display: block;\n  }\n  .col-xl-3 .info-box .progress-description,\n  .col-lg-3 .info-box .progress-description,\n  .col-md-3 .info-box .progress-description {\n    font-size: 0.75rem;\n    display: block;\n  }\n}\n\n@media (min-width: 1200px) {\n  .col-xl-2 .info-box .progress-description,\n  .col-lg-2 .info-box .progress-description,\n  .col-md-2 .info-box .progress-description {\n    font-size: 1rem;\n    display: block;\n  }\n  .col-xl-3 .info-box .progress-description,\n  .col-lg-3 .info-box .progress-description,\n  .col-md-3 .info-box .progress-description {\n    font-size: 1rem;\n    display: block;\n  }\n}\n\n.timeline {\n  margin: 0 0 45px;\n  padding: 0;\n  position: relative;\n}\n\n.timeline::before {\n  border-radius: 0.25rem;\n  background: #dee2e6;\n  bottom: 0;\n  content: '';\n  left: 31px;\n  margin: 0;\n  position: absolute;\n  top: 0;\n  width: 4px;\n}\n\n.timeline > div {\n  margin-bottom: 15px;\n  margin-right: 10px;\n  position: relative;\n}\n\n.timeline > div::before, .timeline > div::after {\n  content: \"\";\n  display: table;\n}\n\n.timeline > div > .timeline-item {\n  box-shadow: 0 0 1px rgba(0, 0, 0, 0.125), 0 1px 3px rgba(0, 0, 0, 0.2);\n  border-radius: 0.25rem;\n  background: #ffffff;\n  color: #495057;\n  margin-left: 60px;\n  margin-right: 15px;\n  margin-top: 0;\n  padding: 0;\n  position: relative;\n}\n\n.timeline > div > .timeline-item > .time {\n  color: #999;\n  float: right;\n  font-size: 12px;\n  padding: 10px;\n}\n\n.timeline > div > .timeline-item > .timeline-header {\n  border-bottom: 1px solid rgba(0, 0, 0, 0.125);\n  color: #495057;\n  font-size: 16px;\n  line-height: 1.1;\n  margin: 0;\n  padding: 10px;\n}\n\n.timeline > div > .timeline-item > .timeline-header > a {\n  font-weight: 600;\n}\n\n.timeline > div > .timeline-item > .timeline-body,\n.timeline > div > .timeline-item > .timeline-footer {\n  padding: 10px;\n}\n\n.timeline > div > .timeline-item > .timeline-body > img {\n  margin: 10px;\n}\n\n.timeline > div > .timeline-item > .timeline-body > dl, .timeline > div > .timeline-item > .timeline-body ol, .timeline > div > .timeline-item > .timeline-body ul {\n  margin: 0;\n}\n\n.timeline > div > .timeline-item > .timeline-footer > a {\n  color: #ffffff;\n}\n\n.timeline > div > .fa,\n.timeline > div > .fas,\n.timeline > div > .far,\n.timeline > div > .fab,\n.timeline > div > .glyphicon,\n.timeline > div > .ion {\n  background: #adb5bd;\n  border-radius: 50%;\n  font-size: 15px;\n  height: 30px;\n  left: 18px;\n  line-height: 30px;\n  position: absolute;\n  text-align: center;\n  top: 0;\n  width: 30px;\n}\n\n.timeline > .time-label > span {\n  border-radius: 4px;\n  background-color: #ffffff;\n  display: inline-block;\n  font-weight: 600;\n  padding: 5px;\n}\n\n.timeline-inverse > div > .timeline-item {\n  box-shadow: none;\n  background: #f8f9fa;\n  border: 1px solid #dee2e6;\n}\n\n.timeline-inverse > div > .timeline-item > .timeline-header {\n  border-bottom-color: #dee2e6;\n}\n\n.products-list {\n  list-style: none;\n  margin: 0;\n  padding: 0;\n}\n\n.products-list > .item {\n  border-radius: 0.25rem;\n  background: #ffffff;\n  padding: 10px 0;\n}\n\n.products-list > .item::after {\n  display: block;\n  clear: both;\n  content: \"\";\n}\n\n.products-list .product-img {\n  float: left;\n}\n\n.products-list .product-img img {\n  height: 50px;\n  width: 50px;\n}\n\n.products-list .product-info {\n  margin-left: 60px;\n}\n\n.products-list .product-title {\n  font-weight: 600;\n}\n\n.products-list .product-description {\n  color: #6c757d;\n  display: block;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n\n.product-list-in-card > .item {\n  border-radius: 0;\n  border-bottom: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.product-list-in-card > .item:last-of-type {\n  border-bottom-width: 0;\n}\n\n.direct-chat .card-body {\n  overflow-x: hidden;\n  padding: 0;\n  position: relative;\n}\n\n.direct-chat.chat-pane-open .direct-chat-contacts {\n  -webkit-transform: translate(0, 0);\n  transform: translate(0, 0);\n}\n\n.direct-chat.timestamp-light .direct-chat-timestamp {\n  color: #30465f;\n}\n\n.direct-chat.timestamp-dark .direct-chat-timestamp {\n  color: #cccccc;\n}\n\n.direct-chat-messages {\n  -webkit-transform: translate(0, 0);\n  transform: translate(0, 0);\n  height: 250px;\n  overflow: auto;\n  padding: 10px;\n}\n\n.direct-chat-msg,\n.direct-chat-text {\n  display: block;\n}\n\n.direct-chat-msg {\n  margin-bottom: 10px;\n}\n\n.direct-chat-msg::after {\n  display: block;\n  clear: both;\n  content: \"\";\n}\n\n.direct-chat-messages,\n.direct-chat-contacts {\n  transition: -webkit-transform .5s ease-in-out;\n  transition: transform .5s ease-in-out;\n  transition: transform .5s ease-in-out, -webkit-transform .5s ease-in-out;\n}\n\n.direct-chat-text {\n  border-radius: 0.3rem;\n  background: #d2d6de;\n  border: 1px solid #d2d6de;\n  color: #444;\n  margin: 5px 0 0 50px;\n  padding: 5px 10px;\n  position: relative;\n}\n\n.direct-chat-text::after, .direct-chat-text::before {\n  border: solid transparent;\n  border-right-color: #d2d6de;\n  content: ' ';\n  height: 0;\n  pointer-events: none;\n  position: absolute;\n  right: 100%;\n  top: 15px;\n  width: 0;\n}\n\n.direct-chat-text::after {\n  border-width: 5px;\n  margin-top: -5px;\n}\n\n.direct-chat-text::before {\n  border-width: 6px;\n  margin-top: -6px;\n}\n\n.right .direct-chat-text {\n  margin-left: 0;\n  margin-right: 50px;\n}\n\n.right .direct-chat-text::after, .right .direct-chat-text::before {\n  border-left-color: #d2d6de;\n  border-right-color: transparent;\n  left: 100%;\n  right: auto;\n}\n\n.direct-chat-img {\n  border-radius: 50%;\n  float: left;\n  height: 40px;\n  width: 40px;\n}\n\n.right .direct-chat-img {\n  float: right;\n}\n\n.direct-chat-infos {\n  display: block;\n  font-size: 0.875rem;\n  margin-bottom: 2px;\n}\n\n.direct-chat-name {\n  font-weight: 600;\n}\n\n.direct-chat-timestamp {\n  color: #697582;\n}\n\n.direct-chat-contacts-open .direct-chat-contacts {\n  -webkit-transform: translate(0, 0);\n  transform: translate(0, 0);\n}\n\n.direct-chat-contacts {\n  -webkit-transform: translate(101%, 0);\n  transform: translate(101%, 0);\n  background: #343a40;\n  bottom: 0;\n  color: #ffffff;\n  height: 250px;\n  overflow: auto;\n  position: absolute;\n  top: 0;\n  width: 100%;\n}\n\n.direct-chat-contacts-light {\n  background: #f8f9fa;\n}\n\n.direct-chat-contacts-light .contacts-list-name {\n  color: #495057;\n}\n\n.direct-chat-contacts-light .contacts-list-date {\n  color: #6c757d;\n}\n\n.direct-chat-contacts-light .contacts-list-msg {\n  color: #545b62;\n}\n\n.contacts-list {\n  padding-left: 0;\n  list-style: none;\n}\n\n.contacts-list > li {\n  border-bottom: 1px solid rgba(0, 0, 0, 0.2);\n  margin: 0;\n  padding: 10px;\n}\n\n.contacts-list > li::after {\n  display: block;\n  clear: both;\n  content: \"\";\n}\n\n.contacts-list > li:last-of-type {\n  border-bottom: 0;\n}\n\n.contacts-list-img {\n  border-radius: 50%;\n  float: left;\n  width: 40px;\n}\n\n.contacts-list-info {\n  color: #ffffff;\n  margin-left: 45px;\n}\n\n.contacts-list-name,\n.contacts-list-status {\n  display: block;\n}\n\n.contacts-list-name {\n  font-weight: 600;\n}\n\n.contacts-list-status {\n  font-size: 0.875rem;\n}\n\n.contacts-list-date {\n  color: #ced4da;\n  font-weight: normal;\n}\n\n.contacts-list-msg {\n  color: #b1bbc4;\n}\n\n.direct-chat-primary .right > .direct-chat-text {\n  background: #007bff;\n  border-color: #007bff;\n  color: #ffffff;\n}\n\n.direct-chat-primary .right > .direct-chat-text::after, .direct-chat-primary .right > .direct-chat-text::before {\n  border-left-color: #007bff;\n}\n\n.direct-chat-secondary .right > .direct-chat-text {\n  background: #6c757d;\n  border-color: #6c757d;\n  color: #ffffff;\n}\n\n.direct-chat-secondary .right > .direct-chat-text::after, .direct-chat-secondary .right > .direct-chat-text::before {\n  border-left-color: #6c757d;\n}\n\n.direct-chat-success .right > .direct-chat-text {\n  background: #28a745;\n  border-color: #28a745;\n  color: #ffffff;\n}\n\n.direct-chat-success .right > .direct-chat-text::after, .direct-chat-success .right > .direct-chat-text::before {\n  border-left-color: #28a745;\n}\n\n.direct-chat-info .right > .direct-chat-text {\n  background: #17a2b8;\n  border-color: #17a2b8;\n  color: #ffffff;\n}\n\n.direct-chat-info .right > .direct-chat-text::after, .direct-chat-info .right > .direct-chat-text::before {\n  border-left-color: #17a2b8;\n}\n\n.direct-chat-warning .right > .direct-chat-text {\n  background: #ffc107;\n  border-color: #ffc107;\n  color: #1F2D3D;\n}\n\n.direct-chat-warning .right > .direct-chat-text::after, .direct-chat-warning .right > .direct-chat-text::before {\n  border-left-color: #ffc107;\n}\n\n.direct-chat-danger .right > .direct-chat-text {\n  background: #dc3545;\n  border-color: #dc3545;\n  color: #ffffff;\n}\n\n.direct-chat-danger .right > .direct-chat-text::after, .direct-chat-danger .right > .direct-chat-text::before {\n  border-left-color: #dc3545;\n}\n\n.direct-chat-light .right > .direct-chat-text {\n  background: #f8f9fa;\n  border-color: #f8f9fa;\n  color: #1F2D3D;\n}\n\n.direct-chat-light .right > .direct-chat-text::after, .direct-chat-light .right > .direct-chat-text::before {\n  border-left-color: #f8f9fa;\n}\n\n.direct-chat-dark .right > .direct-chat-text {\n  background: #343a40;\n  border-color: #343a40;\n  color: #ffffff;\n}\n\n.direct-chat-dark .right > .direct-chat-text::after, .direct-chat-dark .right > .direct-chat-text::before {\n  border-left-color: #343a40;\n}\n\n.direct-chat-navy .right > .direct-chat-text {\n  background: #001f3f;\n  border-color: #001f3f;\n  color: #ffffff;\n}\n\n.direct-chat-navy .right > .direct-chat-text::after, .direct-chat-navy .right > .direct-chat-text::before {\n  border-left-color: #001f3f;\n}\n\n.direct-chat-olive .right > .direct-chat-text {\n  background: #3d9970;\n  border-color: #3d9970;\n  color: #ffffff;\n}\n\n.direct-chat-olive .right > .direct-chat-text::after, .direct-chat-olive .right > .direct-chat-text::before {\n  border-left-color: #3d9970;\n}\n\n.direct-chat-lime .right > .direct-chat-text {\n  background: #01ff70;\n  border-color: #01ff70;\n  color: #1F2D3D;\n}\n\n.direct-chat-lime .right > .direct-chat-text::after, .direct-chat-lime .right > .direct-chat-text::before {\n  border-left-color: #01ff70;\n}\n\n.direct-chat-fuchsia .right > .direct-chat-text {\n  background: #f012be;\n  border-color: #f012be;\n  color: #ffffff;\n}\n\n.direct-chat-fuchsia .right > .direct-chat-text::after, .direct-chat-fuchsia .right > .direct-chat-text::before {\n  border-left-color: #f012be;\n}\n\n.direct-chat-maroon .right > .direct-chat-text {\n  background: #d81b60;\n  border-color: #d81b60;\n  color: #ffffff;\n}\n\n.direct-chat-maroon .right > .direct-chat-text::after, .direct-chat-maroon .right > .direct-chat-text::before {\n  border-left-color: #d81b60;\n}\n\n.direct-chat-blue .right > .direct-chat-text {\n  background: #007bff;\n  border-color: #007bff;\n  color: #ffffff;\n}\n\n.direct-chat-blue .right > .direct-chat-text::after, .direct-chat-blue .right > .direct-chat-text::before {\n  border-left-color: #007bff;\n}\n\n.direct-chat-indigo .right > .direct-chat-text {\n  background: #6610f2;\n  border-color: #6610f2;\n  color: #ffffff;\n}\n\n.direct-chat-indigo .right > .direct-chat-text::after, .direct-chat-indigo .right > .direct-chat-text::before {\n  border-left-color: #6610f2;\n}\n\n.direct-chat-purple .right > .direct-chat-text {\n  background: #6f42c1;\n  border-color: #6f42c1;\n  color: #ffffff;\n}\n\n.direct-chat-purple .right > .direct-chat-text::after, .direct-chat-purple .right > .direct-chat-text::before {\n  border-left-color: #6f42c1;\n}\n\n.direct-chat-pink .right > .direct-chat-text {\n  background: #e83e8c;\n  border-color: #e83e8c;\n  color: #ffffff;\n}\n\n.direct-chat-pink .right > .direct-chat-text::after, .direct-chat-pink .right > .direct-chat-text::before {\n  border-left-color: #e83e8c;\n}\n\n.direct-chat-red .right > .direct-chat-text {\n  background: #dc3545;\n  border-color: #dc3545;\n  color: #ffffff;\n}\n\n.direct-chat-red .right > .direct-chat-text::after, .direct-chat-red .right > .direct-chat-text::before {\n  border-left-color: #dc3545;\n}\n\n.direct-chat-orange .right > .direct-chat-text {\n  background: #fd7e14;\n  border-color: #fd7e14;\n  color: #1F2D3D;\n}\n\n.direct-chat-orange .right > .direct-chat-text::after, .direct-chat-orange .right > .direct-chat-text::before {\n  border-left-color: #fd7e14;\n}\n\n.direct-chat-yellow .right > .direct-chat-text {\n  background: #ffc107;\n  border-color: #ffc107;\n  color: #1F2D3D;\n}\n\n.direct-chat-yellow .right > .direct-chat-text::after, .direct-chat-yellow .right > .direct-chat-text::before {\n  border-left-color: #ffc107;\n}\n\n.direct-chat-green .right > .direct-chat-text {\n  background: #28a745;\n  border-color: #28a745;\n  color: #ffffff;\n}\n\n.direct-chat-green .right > .direct-chat-text::after, .direct-chat-green .right > .direct-chat-text::before {\n  border-left-color: #28a745;\n}\n\n.direct-chat-teal .right > .direct-chat-text {\n  background: #20c997;\n  border-color: #20c997;\n  color: #ffffff;\n}\n\n.direct-chat-teal .right > .direct-chat-text::after, .direct-chat-teal .right > .direct-chat-text::before {\n  border-left-color: #20c997;\n}\n\n.direct-chat-cyan .right > .direct-chat-text {\n  background: #17a2b8;\n  border-color: #17a2b8;\n  color: #ffffff;\n}\n\n.direct-chat-cyan .right > .direct-chat-text::after, .direct-chat-cyan .right > .direct-chat-text::before {\n  border-left-color: #17a2b8;\n}\n\n.direct-chat-white .right > .direct-chat-text {\n  background: #ffffff;\n  border-color: #ffffff;\n  color: #1F2D3D;\n}\n\n.direct-chat-white .right > .direct-chat-text::after, .direct-chat-white .right > .direct-chat-text::before {\n  border-left-color: #ffffff;\n}\n\n.direct-chat-gray .right > .direct-chat-text {\n  background: #6c757d;\n  border-color: #6c757d;\n  color: #ffffff;\n}\n\n.direct-chat-gray .right > .direct-chat-text::after, .direct-chat-gray .right > .direct-chat-text::before {\n  border-left-color: #6c757d;\n}\n\n.direct-chat-gray-dark .right > .direct-chat-text {\n  background: #343a40;\n  border-color: #343a40;\n  color: #ffffff;\n}\n\n.direct-chat-gray-dark .right > .direct-chat-text::after, .direct-chat-gray-dark .right > .direct-chat-text::before {\n  border-left-color: #343a40;\n}\n\n.users-list {\n  padding-left: 0;\n  list-style: none;\n}\n\n.users-list > li {\n  float: left;\n  padding: 10px;\n  text-align: center;\n  width: 25%;\n}\n\n.users-list > li img {\n  border-radius: 50%;\n  height: auto;\n  max-width: 100%;\n}\n\n.users-list > li > a:hover,\n.users-list > li > a:hover .users-list-name {\n  color: #999;\n}\n\n.users-list-name,\n.users-list-date {\n  display: block;\n}\n\n.users-list-name {\n  color: #495057;\n  font-size: 0.875rem;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n\n.users-list-date {\n  color: #748290;\n  font-size: 12px;\n}\n\n.card-widget {\n  border: 0;\n  position: relative;\n}\n\n.widget-user .widget-user-header {\n  border-top-left-radius: 0.25rem;\n  border-top-right-radius: 0.25rem;\n  height: 135px;\n  padding: 1rem;\n  text-align: center;\n}\n\n.widget-user .widget-user-username {\n  font-size: 25px;\n  font-weight: 300;\n  margin-bottom: 0;\n  margin-top: 0;\n  text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2);\n}\n\n.widget-user .widget-user-desc {\n  margin-top: 0;\n}\n\n.widget-user .widget-user-image {\n  left: 50%;\n  margin-left: -45px;\n  position: absolute;\n  top: 80px;\n}\n\n.widget-user .widget-user-image > img {\n  border: 3px solid #ffffff;\n  height: auto;\n  width: 90px;\n}\n\n.widget-user .card-footer {\n  padding-top: 50px;\n}\n\n.widget-user-2 .widget-user-header {\n  border-top-left-radius: 0.25rem;\n  border-top-right-radius: 0.25rem;\n  padding: 1rem;\n}\n\n.widget-user-2 .widget-user-username {\n  font-size: 25px;\n  font-weight: 300;\n  margin-bottom: 5px;\n  margin-top: 5px;\n}\n\n.widget-user-2 .widget-user-desc {\n  margin-top: 0;\n}\n\n.widget-user-2 .widget-user-username,\n.widget-user-2 .widget-user-desc {\n  margin-left: 75px;\n}\n\n.widget-user-2 .widget-user-image > img {\n  float: left;\n  height: auto;\n  width: 65px;\n}\n\n.mailbox-messages > .table {\n  margin: 0;\n}\n\n.mailbox-controls {\n  padding: 5px;\n}\n\n.mailbox-controls.with-border {\n  border-bottom: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.mailbox-read-info {\n  border-bottom: 1px solid rgba(0, 0, 0, 0.125);\n  padding: 10px;\n}\n\n.mailbox-read-info h3 {\n  font-size: 20px;\n  margin: 0;\n}\n\n.mailbox-read-info h5 {\n  margin: 0;\n  padding: 5px 0 0;\n}\n\n.mailbox-read-time {\n  color: #999;\n  font-size: 13px;\n}\n\n.mailbox-read-message {\n  padding: 10px;\n}\n\n.mailbox-attachments {\n  padding-left: 0;\n  list-style: none;\n}\n\n.mailbox-attachments li {\n  border: 1px solid #eee;\n  float: left;\n  margin-bottom: 10px;\n  margin-right: 10px;\n  width: 200px;\n}\n\n.mailbox-attachment-name {\n  color: #666;\n  font-weight: bold;\n}\n\n.mailbox-attachment-icon,\n.mailbox-attachment-info,\n.mailbox-attachment-size {\n  display: block;\n}\n\n.mailbox-attachment-info {\n  background: #f8f9fa;\n  padding: 10px;\n}\n\n.mailbox-attachment-size {\n  color: #999;\n  font-size: 12px;\n}\n\n.mailbox-attachment-size > span {\n  display: inline-block;\n  padding-top: 0.75rem;\n}\n\n.mailbox-attachment-icon {\n  color: #666;\n  font-size: 65px;\n  max-height: 132.5px;\n  padding: 20px 10px;\n  text-align: center;\n}\n\n.mailbox-attachment-icon.has-img {\n  padding: 0;\n}\n\n.mailbox-attachment-icon.has-img > img {\n  height: auto;\n  max-width: 100%;\n}\n\n.lockscreen {\n  background: #e9ecef;\n}\n\n.lockscreen .lockscreen-name {\n  font-weight: 600;\n  text-align: center;\n}\n\n.lockscreen-logo {\n  font-size: 35px;\n  font-weight: 300;\n  margin-bottom: 25px;\n  text-align: center;\n}\n\n.lockscreen-logo a {\n  color: #495057;\n}\n\n.lockscreen-wrapper {\n  margin: 0 auto;\n  margin-top: 10%;\n  max-width: 400px;\n}\n\n.lockscreen-item {\n  border-radius: 4px;\n  background: #ffffff;\n  margin: 10px auto 30px;\n  padding: 0;\n  position: relative;\n  width: 290px;\n}\n\n.lockscreen-image {\n  border-radius: 50%;\n  background: #ffffff;\n  left: -10px;\n  padding: 5px;\n  position: absolute;\n  top: -25px;\n  z-index: 10;\n}\n\n.lockscreen-image > img {\n  border-radius: 50%;\n  height: 70px;\n  width: 70px;\n}\n\n.lockscreen-credentials {\n  margin-left: 70px;\n}\n\n.lockscreen-credentials .form-control {\n  border: 0;\n}\n\n.lockscreen-credentials .btn {\n  background-color: #ffffff;\n  border: 0;\n  padding: 0 10px;\n}\n\n.lockscreen-footer {\n  margin-top: 10px;\n}\n\n.login-logo,\n.register-logo {\n  font-size: 2.1rem;\n  font-weight: 300;\n  margin-bottom: .9rem;\n  text-align: center;\n}\n\n.login-logo a,\n.register-logo a {\n  color: #495057;\n}\n\n.login-page,\n.register-page {\n  -ms-flex-align: center;\n  align-items: center;\n  background: #e9ecef;\n  display: -ms-flexbox;\n  display: flex;\n  height: 100vh;\n  -ms-flex-pack: center;\n  justify-content: center;\n}\n\n.login-box,\n.register-box {\n  width: 360px;\n}\n\n@media (max-width: 576px) {\n  .login-box,\n  .register-box {\n    margin-top: 20px;\n    width: 90%;\n  }\n}\n\n.login-card-body,\n.register-card-body {\n  background: #ffffff;\n  border-top: 0;\n  color: #666;\n  padding: 20px;\n}\n\n.login-card-body .input-group .form-control,\n.register-card-body .input-group .form-control {\n  border-right: 0;\n}\n\n.login-card-body .input-group .form-control:focus,\n.register-card-body .input-group .form-control:focus {\n  box-shadow: none;\n}\n\n.login-card-body .input-group .form-control:focus ~ .input-group-append .input-group-text,\n.register-card-body .input-group .form-control:focus ~ .input-group-append .input-group-text {\n  border-color: #80bdff;\n}\n\n.login-card-body .input-group .form-control.is-valid:focus,\n.register-card-body .input-group .form-control.is-valid:focus {\n  box-shadow: none;\n}\n\n.login-card-body .input-group .form-control.is-valid ~ .input-group-append .input-group-text,\n.register-card-body .input-group .form-control.is-valid ~ .input-group-append .input-group-text {\n  border-color: #28a745;\n}\n\n.login-card-body .input-group .form-control.is-invalid:focus,\n.register-card-body .input-group .form-control.is-invalid:focus {\n  box-shadow: none;\n}\n\n.login-card-body .input-group .form-control.is-invalid ~ .input-group-append .input-group-text,\n.register-card-body .input-group .form-control.is-invalid ~ .input-group-append .input-group-text {\n  border-color: #dc3545;\n}\n\n.login-card-body .input-group .input-group-text,\n.register-card-body .input-group .input-group-text {\n  background-color: transparent;\n  border-bottom-right-radius: 0.25rem;\n  border-left: 0;\n  border-top-right-radius: 0.25rem;\n  color: #777;\n  transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n.login-box-msg,\n.register-box-msg {\n  margin: 0;\n  padding: 0 20px 20px;\n  text-align: center;\n}\n\n.social-auth-links {\n  margin: 10px 0;\n}\n\n.error-page {\n  margin: 20px auto 0;\n  width: 600px;\n}\n\n@media (max-width: 767.98px) {\n  .error-page {\n    width: 100%;\n  }\n}\n\n.error-page > .headline {\n  float: left;\n  font-size: 100px;\n  font-weight: 300;\n}\n\n@media (max-width: 767.98px) {\n  .error-page > .headline {\n    float: none;\n    text-align: center;\n  }\n}\n\n.error-page > .error-content {\n  display: block;\n  margin-left: 190px;\n}\n\n@media (max-width: 767.98px) {\n  .error-page > .error-content {\n    margin-left: 0;\n  }\n}\n\n.error-page > .error-content > h3 {\n  font-size: 25px;\n  font-weight: 300;\n}\n\n@media (max-width: 767.98px) {\n  .error-page > .error-content > h3 {\n    text-align: center;\n  }\n}\n\n.invoice {\n  background: #ffffff;\n  border: 1px solid rgba(0, 0, 0, 0.125);\n  position: relative;\n}\n\n.invoice-title {\n  margin-top: 0;\n}\n\n.profile-user-img {\n  border: 3px solid #adb5bd;\n  margin: 0 auto;\n  padding: 3px;\n  width: 100px;\n}\n\n.profile-username {\n  font-size: 21px;\n  margin-top: 5px;\n}\n\n.post {\n  border-bottom: 1px solid #adb5bd;\n  color: #666;\n  margin-bottom: 15px;\n  padding-bottom: 15px;\n}\n\n.post:last-of-type {\n  border-bottom: 0;\n  margin-bottom: 0;\n  padding-bottom: 0;\n}\n\n.post .user-block {\n  margin-bottom: 15px;\n  width: 100%;\n}\n\n.post .row {\n  width: 100%;\n}\n\n.product-image {\n  max-width: 100%;\n  height: auto;\n  width: 100%;\n}\n\n.product-image-thumbs {\n  -ms-flex-align: stretch;\n  align-items: stretch;\n  display: -ms-flexbox;\n  display: flex;\n  margin-top: 2rem;\n}\n\n.product-image-thumb {\n  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n  border-radius: 0.25rem;\n  background-color: #ffffff;\n  border: 1px solid #dee2e6;\n  display: -ms-flexbox;\n  display: flex;\n  margin-right: 1rem;\n  max-width: 7rem;\n  padding: 0.5rem;\n}\n\n.product-image-thumb img {\n  max-width: 100%;\n  height: auto;\n  -ms-flex-item-align: center;\n  align-self: center;\n}\n\n.product-image-thumb:hover {\n  opacity: 0.5;\n}\n\n.product-share a {\n  margin-right: .5rem;\n}\n\n.projects td {\n  vertical-align: middle;\n}\n\n.projects .list-inline {\n  margin-bottom: 0;\n}\n\n.projects img.table-avatar,\n.projects .table-avatar img {\n  border-radius: 50%;\n  display: inline;\n  width: 2.5rem;\n}\n\n.projects .project-state {\n  text-align: center;\n}\n\n.fc-button {\n  background: #f8f9fa;\n  background-image: none;\n  border-bottom-color: #ddd;\n  border-color: #ddd;\n  color: #495057;\n}\n\n.fc-button:hover, .fc-button:active, .fc-button.hover {\n  background-color: #e9e9e9;\n}\n\n.fc-header-title h2 {\n  color: #666;\n  font-size: 15px;\n  line-height: 1.6em;\n  margin-left: 10px;\n}\n\n.fc-header-right {\n  padding-right: 10px;\n}\n\n.fc-header-left {\n  padding-left: 10px;\n}\n\n.fc-widget-header {\n  background: #fafafa;\n}\n\n.fc-grid {\n  border: 0;\n  width: 100%;\n}\n\n.fc-widget-header:first-of-type,\n.fc-widget-content:first-of-type {\n  border-left: 0;\n  border-right: 0;\n}\n\n.fc-widget-header:last-of-type,\n.fc-widget-content:last-of-type {\n  border-right: 0;\n}\n\n.fc-toolbar {\n  margin: 0;\n  padding: 1rem;\n}\n\n.fc-day-number {\n  font-size: 20px;\n  font-weight: 300;\n  padding-right: 10px;\n}\n\n.fc-color-picker {\n  list-style: none;\n  margin: 0;\n  padding: 0;\n}\n\n.fc-color-picker > li {\n  float: left;\n  font-size: 30px;\n  line-height: 30px;\n  margin-right: 5px;\n}\n\n.fc-color-picker > li .fa,\n.fc-color-picker > li .fas,\n.fc-color-picker > li .far,\n.fc-color-picker > li .fab,\n.fc-color-picker > li .glyphicon,\n.fc-color-picker > li .ion {\n  transition: -webkit-transform linear .3s;\n  transition: transform linear .3s;\n  transition: transform linear .3s, -webkit-transform linear .3s;\n}\n\n.fc-color-picker > li .fa:hover,\n.fc-color-picker > li .fas:hover,\n.fc-color-picker > li .far:hover,\n.fc-color-picker > li .fab:hover,\n.fc-color-picker > li .glyphicon:hover,\n.fc-color-picker > li .ion:hover {\n  -webkit-transform: rotate(30deg);\n  transform: rotate(30deg);\n}\n\n#add-new-event {\n  transition: all linear .3s;\n}\n\n.external-event {\n  box-shadow: 0 0 1px rgba(0, 0, 0, 0.125), 0 1px 3px rgba(0, 0, 0, 0.2);\n  border-radius: 0.25rem;\n  cursor: move;\n  font-weight: bold;\n  margin-bottom: 4px;\n  padding: 5px 10px;\n}\n\n.external-event:hover {\n  box-shadow: inset 0 0 90px rgba(0, 0, 0, 0.2);\n}\n\n.select2-container--default .select2-selection--single {\n  border: 1px solid #ced4da;\n  padding: 0.46875rem 0.75rem;\n  height: calc(2.25rem + 2px);\n}\n\n.select2-container--default.select2-container--open {\n  border-color: #007bff;\n}\n\n.select2-container--default .select2-dropdown {\n  border: 1px solid #ced4da;\n}\n\n.select2-container--default .select2-results__option {\n  padding: 6px 12px;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  user-select: none;\n  -webkit-user-select: none;\n}\n\n.select2-container--default .select2-selection--single .select2-selection__rendered {\n  padding-left: 0;\n  height: auto;\n  margin-top: -3px;\n}\n\n.select2-container--default[dir=\"rtl\"] .select2-selection--single .select2-selection__rendered {\n  padding-right: 6px;\n  padding-left: 20px;\n}\n\n.select2-container--default .select2-selection--single .select2-selection__arrow {\n  height: 31px;\n  right: 6px;\n}\n\n.select2-container--default .select2-selection--single .select2-selection__arrow b {\n  margin-top: 0;\n}\n\n.select2-container--default .select2-dropdown .select2-search__field,\n.select2-container--default .select2-search--inline .select2-search__field {\n  border: 1px solid #ced4da;\n}\n\n.select2-container--default .select2-dropdown .select2-search__field:focus,\n.select2-container--default .select2-search--inline .select2-search__field:focus {\n  outline: none;\n  border: 1px solid #80bdff;\n}\n\n.select2-container--default .select2-dropdown.select2-dropdown--below {\n  border-top: 0;\n}\n\n.select2-container--default .select2-dropdown.select2-dropdown--above {\n  border-bottom: 0;\n}\n\n.select2-container--default .select2-results__option[aria-disabled='true'] {\n  color: #6c757d;\n}\n\n.select2-container--default .select2-results__option[aria-selected='true'] {\n  background-color: #dee2e6;\n}\n\n.select2-container--default .select2-results__option[aria-selected='true'], .select2-container--default .select2-results__option[aria-selected='true']:hover {\n  color: #1F2D3D;\n}\n\n.select2-container--default .select2-results__option--highlighted {\n  background-color: #007bff;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-results__option--highlighted[aria-selected], .select2-container--default .select2-results__option--highlighted[aria-selected]:hover {\n  background-color: #0074f0;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-selection--multiple {\n  border: 1px solid #ced4da;\n  min-height: calc(2.25rem + 2px);\n}\n\n.select2-container--default .select2-selection--multiple:focus {\n  border-color: #80bdff;\n}\n\n.select2-container--default .select2-selection--multiple .select2-selection__rendered {\n  padding: 0 0.375rem 0.375rem;\n  margin-bottom: -0.375rem;\n}\n\n.select2-container--default .select2-selection--multiple .select2-selection__rendered li:first-child.select2-search.select2-search--inline {\n  width: 100%;\n  margin-left: 0.375rem;\n}\n\n.select2-container--default .select2-selection--multiple .select2-selection__rendered li:first-child.select2-search.select2-search--inline .select2-search__field {\n  width: 100% !important;\n}\n\n.select2-container--default .select2-selection--multiple .select2-selection__rendered .select2-search.select2-search--inline .select2-search__field {\n  border: 0;\n  margin-top: 6px;\n}\n\n.select2-container--default .select2-selection--multiple .select2-selection__choice {\n  background-color: #007bff;\n  border-color: #006fe6;\n  color: #ffffff;\n  padding: 0 10px;\n  margin-top: .31rem;\n}\n\n.select2-container--default .select2-selection--multiple .select2-selection__choice__remove {\n  color: rgba(255, 255, 255, 0.7);\n  float: right;\n  margin-left: 5px;\n  margin-right: -2px;\n}\n\n.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {\n  color: #ffffff;\n}\n\n.text-sm .select2-container--default .select2-selection--multiple .select2-search.select2-search--inline .select2-search__field, .select2-container--default .select2-selection--multiple.text-sm .select2-search.select2-search--inline .select2-search__field {\n  margin-top: 8px;\n}\n\n.text-sm .select2-container--default .select2-selection--multiple .select2-selection__choice, .select2-container--default .select2-selection--multiple.text-sm .select2-selection__choice {\n  margin-top: .4rem;\n}\n\n.select2-container--default.select2-container--focus .select2-selection--multiple {\n  border-color: #80bdff;\n}\n\n.select2-container--default.select2-container--focus .select2-selection--multiple .select2-search__field {\n  border: 0;\n}\n\n.select2-container--default .select2-selection--single .select2-selection__rendered li {\n  padding-right: 10px;\n}\n\n.input-group-prepend ~ .select2-container--default .select2-selection {\n  border-bottom-left-radius: 0;\n  border-top-left-radius: 0;\n}\n\n.input-group > .select2-container--default:not(:last-child) .select2-selection {\n  border-bottom-right-radius: 0;\n  border-top-right-radius: 0;\n}\n\n.select2-container--bootstrap4.select2-container--focus .select2-selection {\n  box-shadow: none;\n}\n\n.select2-container--default .select2-primary.select2-dropdown .select2-search__field:focus,\n.select2-container--default .select2-primary .select2-dropdown .select2-search__field:focus,\n.select2-container--default .select2-primary .select2-search--inline .select2-search__field:focus,\n.select2-primary .select2-container--default.select2-dropdown .select2-search__field:focus,\n.select2-primary .select2-container--default .select2-dropdown .select2-search__field:focus,\n.select2-primary .select2-container--default .select2-search--inline .select2-search__field:focus {\n  border: 1px solid #80bdff;\n}\n\n.select2-container--default .select2-primary .select2-results__option--highlighted,\n.select2-primary .select2-container--default .select2-results__option--highlighted {\n  background-color: #007bff;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-primary .select2-results__option--highlighted[aria-selected], .select2-container--default .select2-primary .select2-results__option--highlighted[aria-selected]:hover,\n.select2-primary .select2-container--default .select2-results__option--highlighted[aria-selected],\n.select2-primary .select2-container--default .select2-results__option--highlighted[aria-selected]:hover {\n  background-color: #0074f0;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-primary .select2-selection--multiple:focus,\n.select2-primary .select2-container--default .select2-selection--multiple:focus {\n  border-color: #80bdff;\n}\n\n.select2-container--default .select2-primary .select2-selection--multiple .select2-selection__choice,\n.select2-primary .select2-container--default .select2-selection--multiple .select2-selection__choice {\n  background-color: #007bff;\n  border-color: #006fe6;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-primary .select2-selection--multiple .select2-selection__choice__remove,\n.select2-primary .select2-container--default .select2-selection--multiple .select2-selection__choice__remove {\n  color: rgba(255, 255, 255, 0.7);\n}\n\n.select2-container--default .select2-primary .select2-selection--multiple .select2-selection__choice__remove:hover,\n.select2-primary .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {\n  color: #ffffff;\n}\n\n.select2-container--default .select2-primary.select2-container--focus .select2-selection--multiple,\n.select2-primary .select2-container--default.select2-container--focus .select2-selection--multiple {\n  border-color: #80bdff;\n}\n\n.select2-container--default .select2-secondary.select2-dropdown .select2-search__field:focus,\n.select2-container--default .select2-secondary .select2-dropdown .select2-search__field:focus,\n.select2-container--default .select2-secondary .select2-search--inline .select2-search__field:focus,\n.select2-secondary .select2-container--default.select2-dropdown .select2-search__field:focus,\n.select2-secondary .select2-container--default .select2-dropdown .select2-search__field:focus,\n.select2-secondary .select2-container--default .select2-search--inline .select2-search__field:focus {\n  border: 1px solid #afb5ba;\n}\n\n.select2-container--default .select2-secondary .select2-results__option--highlighted,\n.select2-secondary .select2-container--default .select2-results__option--highlighted {\n  background-color: #6c757d;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-secondary .select2-results__option--highlighted[aria-selected], .select2-container--default .select2-secondary .select2-results__option--highlighted[aria-selected]:hover,\n.select2-secondary .select2-container--default .select2-results__option--highlighted[aria-selected],\n.select2-secondary .select2-container--default .select2-results__option--highlighted[aria-selected]:hover {\n  background-color: #656d75;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-secondary .select2-selection--multiple:focus,\n.select2-secondary .select2-container--default .select2-selection--multiple:focus {\n  border-color: #afb5ba;\n}\n\n.select2-container--default .select2-secondary .select2-selection--multiple .select2-selection__choice,\n.select2-secondary .select2-container--default .select2-selection--multiple .select2-selection__choice {\n  background-color: #6c757d;\n  border-color: #60686f;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-secondary .select2-selection--multiple .select2-selection__choice__remove,\n.select2-secondary .select2-container--default .select2-selection--multiple .select2-selection__choice__remove {\n  color: rgba(255, 255, 255, 0.7);\n}\n\n.select2-container--default .select2-secondary .select2-selection--multiple .select2-selection__choice__remove:hover,\n.select2-secondary .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {\n  color: #ffffff;\n}\n\n.select2-container--default .select2-secondary.select2-container--focus .select2-selection--multiple,\n.select2-secondary .select2-container--default.select2-container--focus .select2-selection--multiple {\n  border-color: #afb5ba;\n}\n\n.select2-container--default .select2-success.select2-dropdown .select2-search__field:focus,\n.select2-container--default .select2-success .select2-dropdown .select2-search__field:focus,\n.select2-container--default .select2-success .select2-search--inline .select2-search__field:focus,\n.select2-success .select2-container--default.select2-dropdown .select2-search__field:focus,\n.select2-success .select2-container--default .select2-dropdown .select2-search__field:focus,\n.select2-success .select2-container--default .select2-search--inline .select2-search__field:focus {\n  border: 1px solid #71dd8a;\n}\n\n.select2-container--default .select2-success .select2-results__option--highlighted,\n.select2-success .select2-container--default .select2-results__option--highlighted {\n  background-color: #28a745;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-success .select2-results__option--highlighted[aria-selected], .select2-container--default .select2-success .select2-results__option--highlighted[aria-selected]:hover,\n.select2-success .select2-container--default .select2-results__option--highlighted[aria-selected],\n.select2-success .select2-container--default .select2-results__option--highlighted[aria-selected]:hover {\n  background-color: #259b40;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-success .select2-selection--multiple:focus,\n.select2-success .select2-container--default .select2-selection--multiple:focus {\n  border-color: #71dd8a;\n}\n\n.select2-container--default .select2-success .select2-selection--multiple .select2-selection__choice,\n.select2-success .select2-container--default .select2-selection--multiple .select2-selection__choice {\n  background-color: #28a745;\n  border-color: #23923d;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-success .select2-selection--multiple .select2-selection__choice__remove,\n.select2-success .select2-container--default .select2-selection--multiple .select2-selection__choice__remove {\n  color: rgba(255, 255, 255, 0.7);\n}\n\n.select2-container--default .select2-success .select2-selection--multiple .select2-selection__choice__remove:hover,\n.select2-success .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {\n  color: #ffffff;\n}\n\n.select2-container--default .select2-success.select2-container--focus .select2-selection--multiple,\n.select2-success .select2-container--default.select2-container--focus .select2-selection--multiple {\n  border-color: #71dd8a;\n}\n\n.select2-container--default .select2-info.select2-dropdown .select2-search__field:focus,\n.select2-container--default .select2-info .select2-dropdown .select2-search__field:focus,\n.select2-container--default .select2-info .select2-search--inline .select2-search__field:focus,\n.select2-info .select2-container--default.select2-dropdown .select2-search__field:focus,\n.select2-info .select2-container--default .select2-dropdown .select2-search__field:focus,\n.select2-info .select2-container--default .select2-search--inline .select2-search__field:focus {\n  border: 1px solid #63d9ec;\n}\n\n.select2-container--default .select2-info .select2-results__option--highlighted,\n.select2-info .select2-container--default .select2-results__option--highlighted {\n  background-color: #17a2b8;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-info .select2-results__option--highlighted[aria-selected], .select2-container--default .select2-info .select2-results__option--highlighted[aria-selected]:hover,\n.select2-info .select2-container--default .select2-results__option--highlighted[aria-selected],\n.select2-info .select2-container--default .select2-results__option--highlighted[aria-selected]:hover {\n  background-color: #1596aa;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-info .select2-selection--multiple:focus,\n.select2-info .select2-container--default .select2-selection--multiple:focus {\n  border-color: #63d9ec;\n}\n\n.select2-container--default .select2-info .select2-selection--multiple .select2-selection__choice,\n.select2-info .select2-container--default .select2-selection--multiple .select2-selection__choice {\n  background-color: #17a2b8;\n  border-color: #148ea1;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-info .select2-selection--multiple .select2-selection__choice__remove,\n.select2-info .select2-container--default .select2-selection--multiple .select2-selection__choice__remove {\n  color: rgba(255, 255, 255, 0.7);\n}\n\n.select2-container--default .select2-info .select2-selection--multiple .select2-selection__choice__remove:hover,\n.select2-info .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {\n  color: #ffffff;\n}\n\n.select2-container--default .select2-info.select2-container--focus .select2-selection--multiple,\n.select2-info .select2-container--default.select2-container--focus .select2-selection--multiple {\n  border-color: #63d9ec;\n}\n\n.select2-container--default .select2-warning.select2-dropdown .select2-search__field:focus,\n.select2-container--default .select2-warning .select2-dropdown .select2-search__field:focus,\n.select2-container--default .select2-warning .select2-search--inline .select2-search__field:focus,\n.select2-warning .select2-container--default.select2-dropdown .select2-search__field:focus,\n.select2-warning .select2-container--default .select2-dropdown .select2-search__field:focus,\n.select2-warning .select2-container--default .select2-search--inline .select2-search__field:focus {\n  border: 1px solid #ffe187;\n}\n\n.select2-container--default .select2-warning .select2-results__option--highlighted,\n.select2-warning .select2-container--default .select2-results__option--highlighted {\n  background-color: #ffc107;\n  color: #1F2D3D;\n}\n\n.select2-container--default .select2-warning .select2-results__option--highlighted[aria-selected], .select2-container--default .select2-warning .select2-results__option--highlighted[aria-selected]:hover,\n.select2-warning .select2-container--default .select2-results__option--highlighted[aria-selected],\n.select2-warning .select2-container--default .select2-results__option--highlighted[aria-selected]:hover {\n  background-color: #f7b900;\n  color: #1F2D3D;\n}\n\n.select2-container--default .select2-warning .select2-selection--multiple:focus,\n.select2-warning .select2-container--default .select2-selection--multiple:focus {\n  border-color: #ffe187;\n}\n\n.select2-container--default .select2-warning .select2-selection--multiple .select2-selection__choice,\n.select2-warning .select2-container--default .select2-selection--multiple .select2-selection__choice {\n  background-color: #ffc107;\n  border-color: #edb100;\n  color: #1F2D3D;\n}\n\n.select2-container--default .select2-warning .select2-selection--multiple .select2-selection__choice__remove,\n.select2-warning .select2-container--default .select2-selection--multiple .select2-selection__choice__remove {\n  color: rgba(31, 45, 61, 0.7);\n}\n\n.select2-container--default .select2-warning .select2-selection--multiple .select2-selection__choice__remove:hover,\n.select2-warning .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {\n  color: #1F2D3D;\n}\n\n.select2-container--default .select2-warning.select2-container--focus .select2-selection--multiple,\n.select2-warning .select2-container--default.select2-container--focus .select2-selection--multiple {\n  border-color: #ffe187;\n}\n\n.select2-container--default .select2-danger.select2-dropdown .select2-search__field:focus,\n.select2-container--default .select2-danger .select2-dropdown .select2-search__field:focus,\n.select2-container--default .select2-danger .select2-search--inline .select2-search__field:focus,\n.select2-danger .select2-container--default.select2-dropdown .select2-search__field:focus,\n.select2-danger .select2-container--default .select2-dropdown .select2-search__field:focus,\n.select2-danger .select2-container--default .select2-search--inline .select2-search__field:focus {\n  border: 1px solid #efa2a9;\n}\n\n.select2-container--default .select2-danger .select2-results__option--highlighted,\n.select2-danger .select2-container--default .select2-results__option--highlighted {\n  background-color: #dc3545;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-danger .select2-results__option--highlighted[aria-selected], .select2-container--default .select2-danger .select2-results__option--highlighted[aria-selected]:hover,\n.select2-danger .select2-container--default .select2-results__option--highlighted[aria-selected],\n.select2-danger .select2-container--default .select2-results__option--highlighted[aria-selected]:hover {\n  background-color: #da2839;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-danger .select2-selection--multiple:focus,\n.select2-danger .select2-container--default .select2-selection--multiple:focus {\n  border-color: #efa2a9;\n}\n\n.select2-container--default .select2-danger .select2-selection--multiple .select2-selection__choice,\n.select2-danger .select2-container--default .select2-selection--multiple .select2-selection__choice {\n  background-color: #dc3545;\n  border-color: #d32535;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-danger .select2-selection--multiple .select2-selection__choice__remove,\n.select2-danger .select2-container--default .select2-selection--multiple .select2-selection__choice__remove {\n  color: rgba(255, 255, 255, 0.7);\n}\n\n.select2-container--default .select2-danger .select2-selection--multiple .select2-selection__choice__remove:hover,\n.select2-danger .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {\n  color: #ffffff;\n}\n\n.select2-container--default .select2-danger.select2-container--focus .select2-selection--multiple,\n.select2-danger .select2-container--default.select2-container--focus .select2-selection--multiple {\n  border-color: #efa2a9;\n}\n\n.select2-container--default .select2-light.select2-dropdown .select2-search__field:focus,\n.select2-container--default .select2-light .select2-dropdown .select2-search__field:focus,\n.select2-container--default .select2-light .select2-search--inline .select2-search__field:focus,\n.select2-light .select2-container--default.select2-dropdown .select2-search__field:focus,\n.select2-light .select2-container--default .select2-dropdown .select2-search__field:focus,\n.select2-light .select2-container--default .select2-search--inline .select2-search__field:focus {\n  border: 1px solid white;\n}\n\n.select2-container--default .select2-light .select2-results__option--highlighted,\n.select2-light .select2-container--default .select2-results__option--highlighted {\n  background-color: #f8f9fa;\n  color: #1F2D3D;\n}\n\n.select2-container--default .select2-light .select2-results__option--highlighted[aria-selected], .select2-container--default .select2-light .select2-results__option--highlighted[aria-selected]:hover,\n.select2-light .select2-container--default .select2-results__option--highlighted[aria-selected],\n.select2-light .select2-container--default .select2-results__option--highlighted[aria-selected]:hover {\n  background-color: #eff1f4;\n  color: #1F2D3D;\n}\n\n.select2-container--default .select2-light .select2-selection--multiple:focus,\n.select2-light .select2-container--default .select2-selection--multiple:focus {\n  border-color: white;\n}\n\n.select2-container--default .select2-light .select2-selection--multiple .select2-selection__choice,\n.select2-light .select2-container--default .select2-selection--multiple .select2-selection__choice {\n  background-color: #f8f9fa;\n  border-color: #e9ecef;\n  color: #1F2D3D;\n}\n\n.select2-container--default .select2-light .select2-selection--multiple .select2-selection__choice__remove,\n.select2-light .select2-container--default .select2-selection--multiple .select2-selection__choice__remove {\n  color: rgba(31, 45, 61, 0.7);\n}\n\n.select2-container--default .select2-light .select2-selection--multiple .select2-selection__choice__remove:hover,\n.select2-light .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {\n  color: #1F2D3D;\n}\n\n.select2-container--default .select2-light.select2-container--focus .select2-selection--multiple,\n.select2-light .select2-container--default.select2-container--focus .select2-selection--multiple {\n  border-color: white;\n}\n\n.select2-container--default .select2-dark.select2-dropdown .select2-search__field:focus,\n.select2-container--default .select2-dark .select2-dropdown .select2-search__field:focus,\n.select2-container--default .select2-dark .select2-search--inline .select2-search__field:focus,\n.select2-dark .select2-container--default.select2-dropdown .select2-search__field:focus,\n.select2-dark .select2-container--default .select2-dropdown .select2-search__field:focus,\n.select2-dark .select2-container--default .select2-search--inline .select2-search__field:focus {\n  border: 1px solid #6d7a86;\n}\n\n.select2-container--default .select2-dark .select2-results__option--highlighted,\n.select2-dark .select2-container--default .select2-results__option--highlighted {\n  background-color: #343a40;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-dark .select2-results__option--highlighted[aria-selected], .select2-container--default .select2-dark .select2-results__option--highlighted[aria-selected]:hover,\n.select2-dark .select2-container--default .select2-results__option--highlighted[aria-selected],\n.select2-dark .select2-container--default .select2-results__option--highlighted[aria-selected]:hover {\n  background-color: #2d3238;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-dark .select2-selection--multiple:focus,\n.select2-dark .select2-container--default .select2-selection--multiple:focus {\n  border-color: #6d7a86;\n}\n\n.select2-container--default .select2-dark .select2-selection--multiple .select2-selection__choice,\n.select2-dark .select2-container--default .select2-selection--multiple .select2-selection__choice {\n  background-color: #343a40;\n  border-color: #292d32;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-dark .select2-selection--multiple .select2-selection__choice__remove,\n.select2-dark .select2-container--default .select2-selection--multiple .select2-selection__choice__remove {\n  color: rgba(255, 255, 255, 0.7);\n}\n\n.select2-container--default .select2-dark .select2-selection--multiple .select2-selection__choice__remove:hover,\n.select2-dark .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {\n  color: #ffffff;\n}\n\n.select2-container--default .select2-dark.select2-container--focus .select2-selection--multiple,\n.select2-dark .select2-container--default.select2-container--focus .select2-selection--multiple {\n  border-color: #6d7a86;\n}\n\n.select2-container--default .select2-navy.select2-dropdown .select2-search__field:focus,\n.select2-container--default .select2-navy .select2-dropdown .select2-search__field:focus,\n.select2-container--default .select2-navy .select2-search--inline .select2-search__field:focus,\n.select2-navy .select2-container--default.select2-dropdown .select2-search__field:focus,\n.select2-navy .select2-container--default .select2-dropdown .select2-search__field:focus,\n.select2-navy .select2-container--default .select2-search--inline .select2-search__field:focus {\n  border: 1px solid #005ebf;\n}\n\n.select2-container--default .select2-navy .select2-results__option--highlighted,\n.select2-navy .select2-container--default .select2-results__option--highlighted {\n  background-color: #001f3f;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-navy .select2-results__option--highlighted[aria-selected], .select2-container--default .select2-navy .select2-results__option--highlighted[aria-selected]:hover,\n.select2-navy .select2-container--default .select2-results__option--highlighted[aria-selected],\n.select2-navy .select2-container--default .select2-results__option--highlighted[aria-selected]:hover {\n  background-color: #001730;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-navy .select2-selection--multiple:focus,\n.select2-navy .select2-container--default .select2-selection--multiple:focus {\n  border-color: #005ebf;\n}\n\n.select2-container--default .select2-navy .select2-selection--multiple .select2-selection__choice,\n.select2-navy .select2-container--default .select2-selection--multiple .select2-selection__choice {\n  background-color: #001f3f;\n  border-color: #001226;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-navy .select2-selection--multiple .select2-selection__choice__remove,\n.select2-navy .select2-container--default .select2-selection--multiple .select2-selection__choice__remove {\n  color: rgba(255, 255, 255, 0.7);\n}\n\n.select2-container--default .select2-navy .select2-selection--multiple .select2-selection__choice__remove:hover,\n.select2-navy .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {\n  color: #ffffff;\n}\n\n.select2-container--default .select2-navy.select2-container--focus .select2-selection--multiple,\n.select2-navy .select2-container--default.select2-container--focus .select2-selection--multiple {\n  border-color: #005ebf;\n}\n\n.select2-container--default .select2-olive.select2-dropdown .select2-search__field:focus,\n.select2-container--default .select2-olive .select2-dropdown .select2-search__field:focus,\n.select2-container--default .select2-olive .select2-search--inline .select2-search__field:focus,\n.select2-olive .select2-container--default.select2-dropdown .select2-search__field:focus,\n.select2-olive .select2-container--default .select2-dropdown .select2-search__field:focus,\n.select2-olive .select2-container--default .select2-search--inline .select2-search__field:focus {\n  border: 1px solid #87cfaf;\n}\n\n.select2-container--default .select2-olive .select2-results__option--highlighted,\n.select2-olive .select2-container--default .select2-results__option--highlighted {\n  background-color: #3d9970;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-olive .select2-results__option--highlighted[aria-selected], .select2-container--default .select2-olive .select2-results__option--highlighted[aria-selected]:hover,\n.select2-olive .select2-container--default .select2-results__option--highlighted[aria-selected],\n.select2-olive .select2-container--default .select2-results__option--highlighted[aria-selected]:hover {\n  background-color: #398e68;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-olive .select2-selection--multiple:focus,\n.select2-olive .select2-container--default .select2-selection--multiple:focus {\n  border-color: #87cfaf;\n}\n\n.select2-container--default .select2-olive .select2-selection--multiple .select2-selection__choice,\n.select2-olive .select2-container--default .select2-selection--multiple .select2-selection__choice {\n  background-color: #3d9970;\n  border-color: #368763;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-olive .select2-selection--multiple .select2-selection__choice__remove,\n.select2-olive .select2-container--default .select2-selection--multiple .select2-selection__choice__remove {\n  color: rgba(255, 255, 255, 0.7);\n}\n\n.select2-container--default .select2-olive .select2-selection--multiple .select2-selection__choice__remove:hover,\n.select2-olive .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {\n  color: #ffffff;\n}\n\n.select2-container--default .select2-olive.select2-container--focus .select2-selection--multiple,\n.select2-olive .select2-container--default.select2-container--focus .select2-selection--multiple {\n  border-color: #87cfaf;\n}\n\n.select2-container--default .select2-lime.select2-dropdown .select2-search__field:focus,\n.select2-container--default .select2-lime .select2-dropdown .select2-search__field:focus,\n.select2-container--default .select2-lime .select2-search--inline .select2-search__field:focus,\n.select2-lime .select2-container--default.select2-dropdown .select2-search__field:focus,\n.select2-lime .select2-container--default .select2-dropdown .select2-search__field:focus,\n.select2-lime .select2-container--default .select2-search--inline .select2-search__field:focus {\n  border: 1px solid #81ffb8;\n}\n\n.select2-container--default .select2-lime .select2-results__option--highlighted,\n.select2-lime .select2-container--default .select2-results__option--highlighted {\n  background-color: #01ff70;\n  color: #1F2D3D;\n}\n\n.select2-container--default .select2-lime .select2-results__option--highlighted[aria-selected], .select2-container--default .select2-lime .select2-results__option--highlighted[aria-selected]:hover,\n.select2-lime .select2-container--default .select2-results__option--highlighted[aria-selected],\n.select2-lime .select2-container--default .select2-results__option--highlighted[aria-selected]:hover {\n  background-color: #00f169;\n  color: #1F2D3D;\n}\n\n.select2-container--default .select2-lime .select2-selection--multiple:focus,\n.select2-lime .select2-container--default .select2-selection--multiple:focus {\n  border-color: #81ffb8;\n}\n\n.select2-container--default .select2-lime .select2-selection--multiple .select2-selection__choice,\n.select2-lime .select2-container--default .select2-selection--multiple .select2-selection__choice {\n  background-color: #01ff70;\n  border-color: #00e765;\n  color: #1F2D3D;\n}\n\n.select2-container--default .select2-lime .select2-selection--multiple .select2-selection__choice__remove,\n.select2-lime .select2-container--default .select2-selection--multiple .select2-selection__choice__remove {\n  color: rgba(31, 45, 61, 0.7);\n}\n\n.select2-container--default .select2-lime .select2-selection--multiple .select2-selection__choice__remove:hover,\n.select2-lime .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {\n  color: #1F2D3D;\n}\n\n.select2-container--default .select2-lime.select2-container--focus .select2-selection--multiple,\n.select2-lime .select2-container--default.select2-container--focus .select2-selection--multiple {\n  border-color: #81ffb8;\n}\n\n.select2-container--default .select2-fuchsia.select2-dropdown .select2-search__field:focus,\n.select2-container--default .select2-fuchsia .select2-dropdown .select2-search__field:focus,\n.select2-container--default .select2-fuchsia .select2-search--inline .select2-search__field:focus,\n.select2-fuchsia .select2-container--default.select2-dropdown .select2-search__field:focus,\n.select2-fuchsia .select2-container--default .select2-dropdown .select2-search__field:focus,\n.select2-fuchsia .select2-container--default .select2-search--inline .select2-search__field:focus {\n  border: 1px solid #f88adf;\n}\n\n.select2-container--default .select2-fuchsia .select2-results__option--highlighted,\n.select2-fuchsia .select2-container--default .select2-results__option--highlighted {\n  background-color: #f012be;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-fuchsia .select2-results__option--highlighted[aria-selected], .select2-container--default .select2-fuchsia .select2-results__option--highlighted[aria-selected]:hover,\n.select2-fuchsia .select2-container--default .select2-results__option--highlighted[aria-selected],\n.select2-fuchsia .select2-container--default .select2-results__option--highlighted[aria-selected]:hover {\n  background-color: #e40eb4;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-fuchsia .select2-selection--multiple:focus,\n.select2-fuchsia .select2-container--default .select2-selection--multiple:focus {\n  border-color: #f88adf;\n}\n\n.select2-container--default .select2-fuchsia .select2-selection--multiple .select2-selection__choice,\n.select2-fuchsia .select2-container--default .select2-selection--multiple .select2-selection__choice {\n  background-color: #f012be;\n  border-color: #db0ead;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-fuchsia .select2-selection--multiple .select2-selection__choice__remove,\n.select2-fuchsia .select2-container--default .select2-selection--multiple .select2-selection__choice__remove {\n  color: rgba(255, 255, 255, 0.7);\n}\n\n.select2-container--default .select2-fuchsia .select2-selection--multiple .select2-selection__choice__remove:hover,\n.select2-fuchsia .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {\n  color: #ffffff;\n}\n\n.select2-container--default .select2-fuchsia.select2-container--focus .select2-selection--multiple,\n.select2-fuchsia .select2-container--default.select2-container--focus .select2-selection--multiple {\n  border-color: #f88adf;\n}\n\n.select2-container--default .select2-maroon.select2-dropdown .select2-search__field:focus,\n.select2-container--default .select2-maroon .select2-dropdown .select2-search__field:focus,\n.select2-container--default .select2-maroon .select2-search--inline .select2-search__field:focus,\n.select2-maroon .select2-container--default.select2-dropdown .select2-search__field:focus,\n.select2-maroon .select2-container--default .select2-dropdown .select2-search__field:focus,\n.select2-maroon .select2-container--default .select2-search--inline .select2-search__field:focus {\n  border: 1px solid #f083ab;\n}\n\n.select2-container--default .select2-maroon .select2-results__option--highlighted,\n.select2-maroon .select2-container--default .select2-results__option--highlighted {\n  background-color: #d81b60;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-maroon .select2-results__option--highlighted[aria-selected], .select2-container--default .select2-maroon .select2-results__option--highlighted[aria-selected]:hover,\n.select2-maroon .select2-container--default .select2-results__option--highlighted[aria-selected],\n.select2-maroon .select2-container--default .select2-results__option--highlighted[aria-selected]:hover {\n  background-color: #ca195a;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-maroon .select2-selection--multiple:focus,\n.select2-maroon .select2-container--default .select2-selection--multiple:focus {\n  border-color: #f083ab;\n}\n\n.select2-container--default .select2-maroon .select2-selection--multiple .select2-selection__choice,\n.select2-maroon .select2-container--default .select2-selection--multiple .select2-selection__choice {\n  background-color: #d81b60;\n  border-color: #c11856;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-maroon .select2-selection--multiple .select2-selection__choice__remove,\n.select2-maroon .select2-container--default .select2-selection--multiple .select2-selection__choice__remove {\n  color: rgba(255, 255, 255, 0.7);\n}\n\n.select2-container--default .select2-maroon .select2-selection--multiple .select2-selection__choice__remove:hover,\n.select2-maroon .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {\n  color: #ffffff;\n}\n\n.select2-container--default .select2-maroon.select2-container--focus .select2-selection--multiple,\n.select2-maroon .select2-container--default.select2-container--focus .select2-selection--multiple {\n  border-color: #f083ab;\n}\n\n.select2-container--default .select2-blue.select2-dropdown .select2-search__field:focus,\n.select2-container--default .select2-blue .select2-dropdown .select2-search__field:focus,\n.select2-container--default .select2-blue .select2-search--inline .select2-search__field:focus,\n.select2-blue .select2-container--default.select2-dropdown .select2-search__field:focus,\n.select2-blue .select2-container--default .select2-dropdown .select2-search__field:focus,\n.select2-blue .select2-container--default .select2-search--inline .select2-search__field:focus {\n  border: 1px solid #80bdff;\n}\n\n.select2-container--default .select2-blue .select2-results__option--highlighted,\n.select2-blue .select2-container--default .select2-results__option--highlighted {\n  background-color: #007bff;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-blue .select2-results__option--highlighted[aria-selected], .select2-container--default .select2-blue .select2-results__option--highlighted[aria-selected]:hover,\n.select2-blue .select2-container--default .select2-results__option--highlighted[aria-selected],\n.select2-blue .select2-container--default .select2-results__option--highlighted[aria-selected]:hover {\n  background-color: #0074f0;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-blue .select2-selection--multiple:focus,\n.select2-blue .select2-container--default .select2-selection--multiple:focus {\n  border-color: #80bdff;\n}\n\n.select2-container--default .select2-blue .select2-selection--multiple .select2-selection__choice,\n.select2-blue .select2-container--default .select2-selection--multiple .select2-selection__choice {\n  background-color: #007bff;\n  border-color: #006fe6;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-blue .select2-selection--multiple .select2-selection__choice__remove,\n.select2-blue .select2-container--default .select2-selection--multiple .select2-selection__choice__remove {\n  color: rgba(255, 255, 255, 0.7);\n}\n\n.select2-container--default .select2-blue .select2-selection--multiple .select2-selection__choice__remove:hover,\n.select2-blue .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {\n  color: #ffffff;\n}\n\n.select2-container--default .select2-blue.select2-container--focus .select2-selection--multiple,\n.select2-blue .select2-container--default.select2-container--focus .select2-selection--multiple {\n  border-color: #80bdff;\n}\n\n.select2-container--default .select2-indigo.select2-dropdown .select2-search__field:focus,\n.select2-container--default .select2-indigo .select2-dropdown .select2-search__field:focus,\n.select2-container--default .select2-indigo .select2-search--inline .select2-search__field:focus,\n.select2-indigo .select2-container--default.select2-dropdown .select2-search__field:focus,\n.select2-indigo .select2-container--default .select2-dropdown .select2-search__field:focus,\n.select2-indigo .select2-container--default .select2-search--inline .select2-search__field:focus {\n  border: 1px solid #b389f9;\n}\n\n.select2-container--default .select2-indigo .select2-results__option--highlighted,\n.select2-indigo .select2-container--default .select2-results__option--highlighted {\n  background-color: #6610f2;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-indigo .select2-results__option--highlighted[aria-selected], .select2-container--default .select2-indigo .select2-results__option--highlighted[aria-selected]:hover,\n.select2-indigo .select2-container--default .select2-results__option--highlighted[aria-selected],\n.select2-indigo .select2-container--default .select2-results__option--highlighted[aria-selected]:hover {\n  background-color: #5f0de6;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-indigo .select2-selection--multiple:focus,\n.select2-indigo .select2-container--default .select2-selection--multiple:focus {\n  border-color: #b389f9;\n}\n\n.select2-container--default .select2-indigo .select2-selection--multiple .select2-selection__choice,\n.select2-indigo .select2-container--default .select2-selection--multiple .select2-selection__choice {\n  background-color: #6610f2;\n  border-color: #5b0cdd;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-indigo .select2-selection--multiple .select2-selection__choice__remove,\n.select2-indigo .select2-container--default .select2-selection--multiple .select2-selection__choice__remove {\n  color: rgba(255, 255, 255, 0.7);\n}\n\n.select2-container--default .select2-indigo .select2-selection--multiple .select2-selection__choice__remove:hover,\n.select2-indigo .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {\n  color: #ffffff;\n}\n\n.select2-container--default .select2-indigo.select2-container--focus .select2-selection--multiple,\n.select2-indigo .select2-container--default.select2-container--focus .select2-selection--multiple {\n  border-color: #b389f9;\n}\n\n.select2-container--default .select2-purple.select2-dropdown .select2-search__field:focus,\n.select2-container--default .select2-purple .select2-dropdown .select2-search__field:focus,\n.select2-container--default .select2-purple .select2-search--inline .select2-search__field:focus,\n.select2-purple .select2-container--default.select2-dropdown .select2-search__field:focus,\n.select2-purple .select2-container--default .select2-dropdown .select2-search__field:focus,\n.select2-purple .select2-container--default .select2-search--inline .select2-search__field:focus {\n  border: 1px solid #b8a2e0;\n}\n\n.select2-container--default .select2-purple .select2-results__option--highlighted,\n.select2-purple .select2-container--default .select2-results__option--highlighted {\n  background-color: #6f42c1;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-purple .select2-results__option--highlighted[aria-selected], .select2-container--default .select2-purple .select2-results__option--highlighted[aria-selected]:hover,\n.select2-purple .select2-container--default .select2-results__option--highlighted[aria-selected],\n.select2-purple .select2-container--default .select2-results__option--highlighted[aria-selected]:hover {\n  background-color: #683cb8;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-purple .select2-selection--multiple:focus,\n.select2-purple .select2-container--default .select2-selection--multiple:focus {\n  border-color: #b8a2e0;\n}\n\n.select2-container--default .select2-purple .select2-selection--multiple .select2-selection__choice,\n.select2-purple .select2-container--default .select2-selection--multiple .select2-selection__choice {\n  background-color: #6f42c1;\n  border-color: #643ab0;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-purple .select2-selection--multiple .select2-selection__choice__remove,\n.select2-purple .select2-container--default .select2-selection--multiple .select2-selection__choice__remove {\n  color: rgba(255, 255, 255, 0.7);\n}\n\n.select2-container--default .select2-purple .select2-selection--multiple .select2-selection__choice__remove:hover,\n.select2-purple .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {\n  color: #ffffff;\n}\n\n.select2-container--default .select2-purple.select2-container--focus .select2-selection--multiple,\n.select2-purple .select2-container--default.select2-container--focus .select2-selection--multiple {\n  border-color: #b8a2e0;\n}\n\n.select2-container--default .select2-pink.select2-dropdown .select2-search__field:focus,\n.select2-container--default .select2-pink .select2-dropdown .select2-search__field:focus,\n.select2-container--default .select2-pink .select2-search--inline .select2-search__field:focus,\n.select2-pink .select2-container--default.select2-dropdown .select2-search__field:focus,\n.select2-pink .select2-container--default .select2-dropdown .select2-search__field:focus,\n.select2-pink .select2-container--default .select2-search--inline .select2-search__field:focus {\n  border: 1px solid #f6b0d0;\n}\n\n.select2-container--default .select2-pink .select2-results__option--highlighted,\n.select2-pink .select2-container--default .select2-results__option--highlighted {\n  background-color: #e83e8c;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-pink .select2-results__option--highlighted[aria-selected], .select2-container--default .select2-pink .select2-results__option--highlighted[aria-selected]:hover,\n.select2-pink .select2-container--default .select2-results__option--highlighted[aria-selected],\n.select2-pink .select2-container--default .select2-results__option--highlighted[aria-selected]:hover {\n  background-color: #e63084;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-pink .select2-selection--multiple:focus,\n.select2-pink .select2-container--default .select2-selection--multiple:focus {\n  border-color: #f6b0d0;\n}\n\n.select2-container--default .select2-pink .select2-selection--multiple .select2-selection__choice,\n.select2-pink .select2-container--default .select2-selection--multiple .select2-selection__choice {\n  background-color: #e83e8c;\n  border-color: #e5277e;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-pink .select2-selection--multiple .select2-selection__choice__remove,\n.select2-pink .select2-container--default .select2-selection--multiple .select2-selection__choice__remove {\n  color: rgba(255, 255, 255, 0.7);\n}\n\n.select2-container--default .select2-pink .select2-selection--multiple .select2-selection__choice__remove:hover,\n.select2-pink .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {\n  color: #ffffff;\n}\n\n.select2-container--default .select2-pink.select2-container--focus .select2-selection--multiple,\n.select2-pink .select2-container--default.select2-container--focus .select2-selection--multiple {\n  border-color: #f6b0d0;\n}\n\n.select2-container--default .select2-red.select2-dropdown .select2-search__field:focus,\n.select2-container--default .select2-red .select2-dropdown .select2-search__field:focus,\n.select2-container--default .select2-red .select2-search--inline .select2-search__field:focus,\n.select2-red .select2-container--default.select2-dropdown .select2-search__field:focus,\n.select2-red .select2-container--default .select2-dropdown .select2-search__field:focus,\n.select2-red .select2-container--default .select2-search--inline .select2-search__field:focus {\n  border: 1px solid #efa2a9;\n}\n\n.select2-container--default .select2-red .select2-results__option--highlighted,\n.select2-red .select2-container--default .select2-results__option--highlighted {\n  background-color: #dc3545;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-red .select2-results__option--highlighted[aria-selected], .select2-container--default .select2-red .select2-results__option--highlighted[aria-selected]:hover,\n.select2-red .select2-container--default .select2-results__option--highlighted[aria-selected],\n.select2-red .select2-container--default .select2-results__option--highlighted[aria-selected]:hover {\n  background-color: #da2839;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-red .select2-selection--multiple:focus,\n.select2-red .select2-container--default .select2-selection--multiple:focus {\n  border-color: #efa2a9;\n}\n\n.select2-container--default .select2-red .select2-selection--multiple .select2-selection__choice,\n.select2-red .select2-container--default .select2-selection--multiple .select2-selection__choice {\n  background-color: #dc3545;\n  border-color: #d32535;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-red .select2-selection--multiple .select2-selection__choice__remove,\n.select2-red .select2-container--default .select2-selection--multiple .select2-selection__choice__remove {\n  color: rgba(255, 255, 255, 0.7);\n}\n\n.select2-container--default .select2-red .select2-selection--multiple .select2-selection__choice__remove:hover,\n.select2-red .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {\n  color: #ffffff;\n}\n\n.select2-container--default .select2-red.select2-container--focus .select2-selection--multiple,\n.select2-red .select2-container--default.select2-container--focus .select2-selection--multiple {\n  border-color: #efa2a9;\n}\n\n.select2-container--default .select2-orange.select2-dropdown .select2-search__field:focus,\n.select2-container--default .select2-orange .select2-dropdown .select2-search__field:focus,\n.select2-container--default .select2-orange .select2-search--inline .select2-search__field:focus,\n.select2-orange .select2-container--default.select2-dropdown .select2-search__field:focus,\n.select2-orange .select2-container--default .select2-dropdown .select2-search__field:focus,\n.select2-orange .select2-container--default .select2-search--inline .select2-search__field:focus {\n  border: 1px solid #fec392;\n}\n\n.select2-container--default .select2-orange .select2-results__option--highlighted,\n.select2-orange .select2-container--default .select2-results__option--highlighted {\n  background-color: #fd7e14;\n  color: #1F2D3D;\n}\n\n.select2-container--default .select2-orange .select2-results__option--highlighted[aria-selected], .select2-container--default .select2-orange .select2-results__option--highlighted[aria-selected]:hover,\n.select2-orange .select2-container--default .select2-results__option--highlighted[aria-selected],\n.select2-orange .select2-container--default .select2-results__option--highlighted[aria-selected]:hover {\n  background-color: #fd7605;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-orange .select2-selection--multiple:focus,\n.select2-orange .select2-container--default .select2-selection--multiple:focus {\n  border-color: #fec392;\n}\n\n.select2-container--default .select2-orange .select2-selection--multiple .select2-selection__choice,\n.select2-orange .select2-container--default .select2-selection--multiple .select2-selection__choice {\n  background-color: #fd7e14;\n  border-color: #f57102;\n  color: #1F2D3D;\n}\n\n.select2-container--default .select2-orange .select2-selection--multiple .select2-selection__choice__remove,\n.select2-orange .select2-container--default .select2-selection--multiple .select2-selection__choice__remove {\n  color: rgba(31, 45, 61, 0.7);\n}\n\n.select2-container--default .select2-orange .select2-selection--multiple .select2-selection__choice__remove:hover,\n.select2-orange .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {\n  color: #1F2D3D;\n}\n\n.select2-container--default .select2-orange.select2-container--focus .select2-selection--multiple,\n.select2-orange .select2-container--default.select2-container--focus .select2-selection--multiple {\n  border-color: #fec392;\n}\n\n.select2-container--default .select2-yellow.select2-dropdown .select2-search__field:focus,\n.select2-container--default .select2-yellow .select2-dropdown .select2-search__field:focus,\n.select2-container--default .select2-yellow .select2-search--inline .select2-search__field:focus,\n.select2-yellow .select2-container--default.select2-dropdown .select2-search__field:focus,\n.select2-yellow .select2-container--default .select2-dropdown .select2-search__field:focus,\n.select2-yellow .select2-container--default .select2-search--inline .select2-search__field:focus {\n  border: 1px solid #ffe187;\n}\n\n.select2-container--default .select2-yellow .select2-results__option--highlighted,\n.select2-yellow .select2-container--default .select2-results__option--highlighted {\n  background-color: #ffc107;\n  color: #1F2D3D;\n}\n\n.select2-container--default .select2-yellow .select2-results__option--highlighted[aria-selected], .select2-container--default .select2-yellow .select2-results__option--highlighted[aria-selected]:hover,\n.select2-yellow .select2-container--default .select2-results__option--highlighted[aria-selected],\n.select2-yellow .select2-container--default .select2-results__option--highlighted[aria-selected]:hover {\n  background-color: #f7b900;\n  color: #1F2D3D;\n}\n\n.select2-container--default .select2-yellow .select2-selection--multiple:focus,\n.select2-yellow .select2-container--default .select2-selection--multiple:focus {\n  border-color: #ffe187;\n}\n\n.select2-container--default .select2-yellow .select2-selection--multiple .select2-selection__choice,\n.select2-yellow .select2-container--default .select2-selection--multiple .select2-selection__choice {\n  background-color: #ffc107;\n  border-color: #edb100;\n  color: #1F2D3D;\n}\n\n.select2-container--default .select2-yellow .select2-selection--multiple .select2-selection__choice__remove,\n.select2-yellow .select2-container--default .select2-selection--multiple .select2-selection__choice__remove {\n  color: rgba(31, 45, 61, 0.7);\n}\n\n.select2-container--default .select2-yellow .select2-selection--multiple .select2-selection__choice__remove:hover,\n.select2-yellow .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {\n  color: #1F2D3D;\n}\n\n.select2-container--default .select2-yellow.select2-container--focus .select2-selection--multiple,\n.select2-yellow .select2-container--default.select2-container--focus .select2-selection--multiple {\n  border-color: #ffe187;\n}\n\n.select2-container--default .select2-green.select2-dropdown .select2-search__field:focus,\n.select2-container--default .select2-green .select2-dropdown .select2-search__field:focus,\n.select2-container--default .select2-green .select2-search--inline .select2-search__field:focus,\n.select2-green .select2-container--default.select2-dropdown .select2-search__field:focus,\n.select2-green .select2-container--default .select2-dropdown .select2-search__field:focus,\n.select2-green .select2-container--default .select2-search--inline .select2-search__field:focus {\n  border: 1px solid #71dd8a;\n}\n\n.select2-container--default .select2-green .select2-results__option--highlighted,\n.select2-green .select2-container--default .select2-results__option--highlighted {\n  background-color: #28a745;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-green .select2-results__option--highlighted[aria-selected], .select2-container--default .select2-green .select2-results__option--highlighted[aria-selected]:hover,\n.select2-green .select2-container--default .select2-results__option--highlighted[aria-selected],\n.select2-green .select2-container--default .select2-results__option--highlighted[aria-selected]:hover {\n  background-color: #259b40;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-green .select2-selection--multiple:focus,\n.select2-green .select2-container--default .select2-selection--multiple:focus {\n  border-color: #71dd8a;\n}\n\n.select2-container--default .select2-green .select2-selection--multiple .select2-selection__choice,\n.select2-green .select2-container--default .select2-selection--multiple .select2-selection__choice {\n  background-color: #28a745;\n  border-color: #23923d;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-green .select2-selection--multiple .select2-selection__choice__remove,\n.select2-green .select2-container--default .select2-selection--multiple .select2-selection__choice__remove {\n  color: rgba(255, 255, 255, 0.7);\n}\n\n.select2-container--default .select2-green .select2-selection--multiple .select2-selection__choice__remove:hover,\n.select2-green .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {\n  color: #ffffff;\n}\n\n.select2-container--default .select2-green.select2-container--focus .select2-selection--multiple,\n.select2-green .select2-container--default.select2-container--focus .select2-selection--multiple {\n  border-color: #71dd8a;\n}\n\n.select2-container--default .select2-teal.select2-dropdown .select2-search__field:focus,\n.select2-container--default .select2-teal .select2-dropdown .select2-search__field:focus,\n.select2-container--default .select2-teal .select2-search--inline .select2-search__field:focus,\n.select2-teal .select2-container--default.select2-dropdown .select2-search__field:focus,\n.select2-teal .select2-container--default .select2-dropdown .select2-search__field:focus,\n.select2-teal .select2-container--default .select2-search--inline .select2-search__field:focus {\n  border: 1px solid #7eeaca;\n}\n\n.select2-container--default .select2-teal .select2-results__option--highlighted,\n.select2-teal .select2-container--default .select2-results__option--highlighted {\n  background-color: #20c997;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-teal .select2-results__option--highlighted[aria-selected], .select2-container--default .select2-teal .select2-results__option--highlighted[aria-selected]:hover,\n.select2-teal .select2-container--default .select2-results__option--highlighted[aria-selected],\n.select2-teal .select2-container--default .select2-results__option--highlighted[aria-selected]:hover {\n  background-color: #1ebc8d;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-teal .select2-selection--multiple:focus,\n.select2-teal .select2-container--default .select2-selection--multiple:focus {\n  border-color: #7eeaca;\n}\n\n.select2-container--default .select2-teal .select2-selection--multiple .select2-selection__choice,\n.select2-teal .select2-container--default .select2-selection--multiple .select2-selection__choice {\n  background-color: #20c997;\n  border-color: #1cb386;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-teal .select2-selection--multiple .select2-selection__choice__remove,\n.select2-teal .select2-container--default .select2-selection--multiple .select2-selection__choice__remove {\n  color: rgba(255, 255, 255, 0.7);\n}\n\n.select2-container--default .select2-teal .select2-selection--multiple .select2-selection__choice__remove:hover,\n.select2-teal .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {\n  color: #ffffff;\n}\n\n.select2-container--default .select2-teal.select2-container--focus .select2-selection--multiple,\n.select2-teal .select2-container--default.select2-container--focus .select2-selection--multiple {\n  border-color: #7eeaca;\n}\n\n.select2-container--default .select2-cyan.select2-dropdown .select2-search__field:focus,\n.select2-container--default .select2-cyan .select2-dropdown .select2-search__field:focus,\n.select2-container--default .select2-cyan .select2-search--inline .select2-search__field:focus,\n.select2-cyan .select2-container--default.select2-dropdown .select2-search__field:focus,\n.select2-cyan .select2-container--default .select2-dropdown .select2-search__field:focus,\n.select2-cyan .select2-container--default .select2-search--inline .select2-search__field:focus {\n  border: 1px solid #63d9ec;\n}\n\n.select2-container--default .select2-cyan .select2-results__option--highlighted,\n.select2-cyan .select2-container--default .select2-results__option--highlighted {\n  background-color: #17a2b8;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-cyan .select2-results__option--highlighted[aria-selected], .select2-container--default .select2-cyan .select2-results__option--highlighted[aria-selected]:hover,\n.select2-cyan .select2-container--default .select2-results__option--highlighted[aria-selected],\n.select2-cyan .select2-container--default .select2-results__option--highlighted[aria-selected]:hover {\n  background-color: #1596aa;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-cyan .select2-selection--multiple:focus,\n.select2-cyan .select2-container--default .select2-selection--multiple:focus {\n  border-color: #63d9ec;\n}\n\n.select2-container--default .select2-cyan .select2-selection--multiple .select2-selection__choice,\n.select2-cyan .select2-container--default .select2-selection--multiple .select2-selection__choice {\n  background-color: #17a2b8;\n  border-color: #148ea1;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-cyan .select2-selection--multiple .select2-selection__choice__remove,\n.select2-cyan .select2-container--default .select2-selection--multiple .select2-selection__choice__remove {\n  color: rgba(255, 255, 255, 0.7);\n}\n\n.select2-container--default .select2-cyan .select2-selection--multiple .select2-selection__choice__remove:hover,\n.select2-cyan .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {\n  color: #ffffff;\n}\n\n.select2-container--default .select2-cyan.select2-container--focus .select2-selection--multiple,\n.select2-cyan .select2-container--default.select2-container--focus .select2-selection--multiple {\n  border-color: #63d9ec;\n}\n\n.select2-container--default .select2-white.select2-dropdown .select2-search__field:focus,\n.select2-container--default .select2-white .select2-dropdown .select2-search__field:focus,\n.select2-container--default .select2-white .select2-search--inline .select2-search__field:focus,\n.select2-white .select2-container--default.select2-dropdown .select2-search__field:focus,\n.select2-white .select2-container--default .select2-dropdown .select2-search__field:focus,\n.select2-white .select2-container--default .select2-search--inline .select2-search__field:focus {\n  border: 1px solid white;\n}\n\n.select2-container--default .select2-white .select2-results__option--highlighted,\n.select2-white .select2-container--default .select2-results__option--highlighted {\n  background-color: #ffffff;\n  color: #1F2D3D;\n}\n\n.select2-container--default .select2-white .select2-results__option--highlighted[aria-selected], .select2-container--default .select2-white .select2-results__option--highlighted[aria-selected]:hover,\n.select2-white .select2-container--default .select2-results__option--highlighted[aria-selected],\n.select2-white .select2-container--default .select2-results__option--highlighted[aria-selected]:hover {\n  background-color: #f7f7f7;\n  color: #1F2D3D;\n}\n\n.select2-container--default .select2-white .select2-selection--multiple:focus,\n.select2-white .select2-container--default .select2-selection--multiple:focus {\n  border-color: white;\n}\n\n.select2-container--default .select2-white .select2-selection--multiple .select2-selection__choice,\n.select2-white .select2-container--default .select2-selection--multiple .select2-selection__choice {\n  background-color: #ffffff;\n  border-color: #f2f2f2;\n  color: #1F2D3D;\n}\n\n.select2-container--default .select2-white .select2-selection--multiple .select2-selection__choice__remove,\n.select2-white .select2-container--default .select2-selection--multiple .select2-selection__choice__remove {\n  color: rgba(31, 45, 61, 0.7);\n}\n\n.select2-container--default .select2-white .select2-selection--multiple .select2-selection__choice__remove:hover,\n.select2-white .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {\n  color: #1F2D3D;\n}\n\n.select2-container--default .select2-white.select2-container--focus .select2-selection--multiple,\n.select2-white .select2-container--default.select2-container--focus .select2-selection--multiple {\n  border-color: white;\n}\n\n.select2-container--default .select2-gray.select2-dropdown .select2-search__field:focus,\n.select2-container--default .select2-gray .select2-dropdown .select2-search__field:focus,\n.select2-container--default .select2-gray .select2-search--inline .select2-search__field:focus,\n.select2-gray .select2-container--default.select2-dropdown .select2-search__field:focus,\n.select2-gray .select2-container--default .select2-dropdown .select2-search__field:focus,\n.select2-gray .select2-container--default .select2-search--inline .select2-search__field:focus {\n  border: 1px solid #afb5ba;\n}\n\n.select2-container--default .select2-gray .select2-results__option--highlighted,\n.select2-gray .select2-container--default .select2-results__option--highlighted {\n  background-color: #6c757d;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-gray .select2-results__option--highlighted[aria-selected], .select2-container--default .select2-gray .select2-results__option--highlighted[aria-selected]:hover,\n.select2-gray .select2-container--default .select2-results__option--highlighted[aria-selected],\n.select2-gray .select2-container--default .select2-results__option--highlighted[aria-selected]:hover {\n  background-color: #656d75;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-gray .select2-selection--multiple:focus,\n.select2-gray .select2-container--default .select2-selection--multiple:focus {\n  border-color: #afb5ba;\n}\n\n.select2-container--default .select2-gray .select2-selection--multiple .select2-selection__choice,\n.select2-gray .select2-container--default .select2-selection--multiple .select2-selection__choice {\n  background-color: #6c757d;\n  border-color: #60686f;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-gray .select2-selection--multiple .select2-selection__choice__remove,\n.select2-gray .select2-container--default .select2-selection--multiple .select2-selection__choice__remove {\n  color: rgba(255, 255, 255, 0.7);\n}\n\n.select2-container--default .select2-gray .select2-selection--multiple .select2-selection__choice__remove:hover,\n.select2-gray .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {\n  color: #ffffff;\n}\n\n.select2-container--default .select2-gray.select2-container--focus .select2-selection--multiple,\n.select2-gray .select2-container--default.select2-container--focus .select2-selection--multiple {\n  border-color: #afb5ba;\n}\n\n.select2-container--default .select2-gray-dark.select2-dropdown .select2-search__field:focus,\n.select2-container--default .select2-gray-dark .select2-dropdown .select2-search__field:focus,\n.select2-container--default .select2-gray-dark .select2-search--inline .select2-search__field:focus,\n.select2-gray-dark .select2-container--default.select2-dropdown .select2-search__field:focus,\n.select2-gray-dark .select2-container--default .select2-dropdown .select2-search__field:focus,\n.select2-gray-dark .select2-container--default .select2-search--inline .select2-search__field:focus {\n  border: 1px solid #6d7a86;\n}\n\n.select2-container--default .select2-gray-dark .select2-results__option--highlighted,\n.select2-gray-dark .select2-container--default .select2-results__option--highlighted {\n  background-color: #343a40;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-gray-dark .select2-results__option--highlighted[aria-selected], .select2-container--default .select2-gray-dark .select2-results__option--highlighted[aria-selected]:hover,\n.select2-gray-dark .select2-container--default .select2-results__option--highlighted[aria-selected],\n.select2-gray-dark .select2-container--default .select2-results__option--highlighted[aria-selected]:hover {\n  background-color: #2d3238;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-gray-dark .select2-selection--multiple:focus,\n.select2-gray-dark .select2-container--default .select2-selection--multiple:focus {\n  border-color: #6d7a86;\n}\n\n.select2-container--default .select2-gray-dark .select2-selection--multiple .select2-selection__choice,\n.select2-gray-dark .select2-container--default .select2-selection--multiple .select2-selection__choice {\n  background-color: #343a40;\n  border-color: #292d32;\n  color: #ffffff;\n}\n\n.select2-container--default .select2-gray-dark .select2-selection--multiple .select2-selection__choice__remove,\n.select2-gray-dark .select2-container--default .select2-selection--multiple .select2-selection__choice__remove {\n  color: rgba(255, 255, 255, 0.7);\n}\n\n.select2-container--default .select2-gray-dark .select2-selection--multiple .select2-selection__choice__remove:hover,\n.select2-gray-dark .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {\n  color: #ffffff;\n}\n\n.select2-container--default .select2-gray-dark.select2-container--focus .select2-selection--multiple,\n.select2-gray-dark .select2-container--default.select2-container--focus .select2-selection--multiple {\n  border-color: #6d7a86;\n}\n\n.slider.slider-vertical {\n  height: 100%;\n}\n\n.slider.slider-horizontal {\n  width: 100%;\n}\n\n.slider-primary .slider .slider-selection {\n  background: #007bff;\n}\n\n.slider-secondary .slider .slider-selection {\n  background: #6c757d;\n}\n\n.slider-success .slider .slider-selection {\n  background: #28a745;\n}\n\n.slider-info .slider .slider-selection {\n  background: #17a2b8;\n}\n\n.slider-warning .slider .slider-selection {\n  background: #ffc107;\n}\n\n.slider-danger .slider .slider-selection {\n  background: #dc3545;\n}\n\n.slider-light .slider .slider-selection {\n  background: #f8f9fa;\n}\n\n.slider-dark .slider .slider-selection {\n  background: #343a40;\n}\n\n.slider-navy .slider .slider-selection {\n  background: #001f3f;\n}\n\n.slider-olive .slider .slider-selection {\n  background: #3d9970;\n}\n\n.slider-lime .slider .slider-selection {\n  background: #01ff70;\n}\n\n.slider-fuchsia .slider .slider-selection {\n  background: #f012be;\n}\n\n.slider-maroon .slider .slider-selection {\n  background: #d81b60;\n}\n\n.slider-blue .slider .slider-selection {\n  background: #007bff;\n}\n\n.slider-indigo .slider .slider-selection {\n  background: #6610f2;\n}\n\n.slider-purple .slider .slider-selection {\n  background: #6f42c1;\n}\n\n.slider-pink .slider .slider-selection {\n  background: #e83e8c;\n}\n\n.slider-red .slider .slider-selection {\n  background: #dc3545;\n}\n\n.slider-orange .slider .slider-selection {\n  background: #fd7e14;\n}\n\n.slider-yellow .slider .slider-selection {\n  background: #ffc107;\n}\n\n.slider-green .slider .slider-selection {\n  background: #28a745;\n}\n\n.slider-teal .slider .slider-selection {\n  background: #20c997;\n}\n\n.slider-cyan .slider .slider-selection {\n  background: #17a2b8;\n}\n\n.slider-white .slider .slider-selection {\n  background: #ffffff;\n}\n\n.slider-gray .slider .slider-selection {\n  background: #6c757d;\n}\n\n.slider-gray-dark .slider .slider-selection {\n  background: #343a40;\n}\n\n.icheck-primary > input:first-child:not(:checked):not(:disabled):hover + label::before,\n.icheck-primary > input:first-child:not(:checked):not(:disabled):hover + input[type=\"hidden\"] + label::before {\n  border-color: #007bff;\n}\n\n.icheck-primary > input:first-child:not(:checked):not(:disabled):focus + label::before,\n.icheck-primary > input:first-child:not(:checked):not(:disabled):focus + input[type=\"hidden\"] + label::before {\n  border-color: #007bff;\n}\n\n.icheck-primary > input:first-child:checked + label::before,\n.icheck-primary > input:first-child:checked + input[type=\"hidden\"] + label::before {\n  background-color: #007bff;\n  border-color: #007bff;\n}\n\n.icheck-secondary > input:first-child:not(:checked):not(:disabled):hover + label::before,\n.icheck-secondary > input:first-child:not(:checked):not(:disabled):hover + input[type=\"hidden\"] + label::before {\n  border-color: #6c757d;\n}\n\n.icheck-secondary > input:first-child:not(:checked):not(:disabled):focus + label::before,\n.icheck-secondary > input:first-child:not(:checked):not(:disabled):focus + input[type=\"hidden\"] + label::before {\n  border-color: #6c757d;\n}\n\n.icheck-secondary > input:first-child:checked + label::before,\n.icheck-secondary > input:first-child:checked + input[type=\"hidden\"] + label::before {\n  background-color: #6c757d;\n  border-color: #6c757d;\n}\n\n.icheck-success > input:first-child:not(:checked):not(:disabled):hover + label::before,\n.icheck-success > input:first-child:not(:checked):not(:disabled):hover + input[type=\"hidden\"] + label::before {\n  border-color: #28a745;\n}\n\n.icheck-success > input:first-child:not(:checked):not(:disabled):focus + label::before,\n.icheck-success > input:first-child:not(:checked):not(:disabled):focus + input[type=\"hidden\"] + label::before {\n  border-color: #28a745;\n}\n\n.icheck-success > input:first-child:checked + label::before,\n.icheck-success > input:first-child:checked + input[type=\"hidden\"] + label::before {\n  background-color: #28a745;\n  border-color: #28a745;\n}\n\n.icheck-info > input:first-child:not(:checked):not(:disabled):hover + label::before,\n.icheck-info > input:first-child:not(:checked):not(:disabled):hover + input[type=\"hidden\"] + label::before {\n  border-color: #17a2b8;\n}\n\n.icheck-info > input:first-child:not(:checked):not(:disabled):focus + label::before,\n.icheck-info > input:first-child:not(:checked):not(:disabled):focus + input[type=\"hidden\"] + label::before {\n  border-color: #17a2b8;\n}\n\n.icheck-info > input:first-child:checked + label::before,\n.icheck-info > input:first-child:checked + input[type=\"hidden\"] + label::before {\n  background-color: #17a2b8;\n  border-color: #17a2b8;\n}\n\n.icheck-warning > input:first-child:not(:checked):not(:disabled):hover + label::before,\n.icheck-warning > input:first-child:not(:checked):not(:disabled):hover + input[type=\"hidden\"] + label::before {\n  border-color: #ffc107;\n}\n\n.icheck-warning > input:first-child:not(:checked):not(:disabled):focus + label::before,\n.icheck-warning > input:first-child:not(:checked):not(:disabled):focus + input[type=\"hidden\"] + label::before {\n  border-color: #ffc107;\n}\n\n.icheck-warning > input:first-child:checked + label::before,\n.icheck-warning > input:first-child:checked + input[type=\"hidden\"] + label::before {\n  background-color: #ffc107;\n  border-color: #ffc107;\n}\n\n.icheck-danger > input:first-child:not(:checked):not(:disabled):hover + label::before,\n.icheck-danger > input:first-child:not(:checked):not(:disabled):hover + input[type=\"hidden\"] + label::before {\n  border-color: #dc3545;\n}\n\n.icheck-danger > input:first-child:not(:checked):not(:disabled):focus + label::before,\n.icheck-danger > input:first-child:not(:checked):not(:disabled):focus + input[type=\"hidden\"] + label::before {\n  border-color: #dc3545;\n}\n\n.icheck-danger > input:first-child:checked + label::before,\n.icheck-danger > input:first-child:checked + input[type=\"hidden\"] + label::before {\n  background-color: #dc3545;\n  border-color: #dc3545;\n}\n\n.icheck-light > input:first-child:not(:checked):not(:disabled):hover + label::before,\n.icheck-light > input:first-child:not(:checked):not(:disabled):hover + input[type=\"hidden\"] + label::before {\n  border-color: #f8f9fa;\n}\n\n.icheck-light > input:first-child:not(:checked):not(:disabled):focus + label::before,\n.icheck-light > input:first-child:not(:checked):not(:disabled):focus + input[type=\"hidden\"] + label::before {\n  border-color: #f8f9fa;\n}\n\n.icheck-light > input:first-child:checked + label::before,\n.icheck-light > input:first-child:checked + input[type=\"hidden\"] + label::before {\n  background-color: #f8f9fa;\n  border-color: #f8f9fa;\n}\n\n.icheck-dark > input:first-child:not(:checked):not(:disabled):hover + label::before,\n.icheck-dark > input:first-child:not(:checked):not(:disabled):hover + input[type=\"hidden\"] + label::before {\n  border-color: #343a40;\n}\n\n.icheck-dark > input:first-child:not(:checked):not(:disabled):focus + label::before,\n.icheck-dark > input:first-child:not(:checked):not(:disabled):focus + input[type=\"hidden\"] + label::before {\n  border-color: #343a40;\n}\n\n.icheck-dark > input:first-child:checked + label::before,\n.icheck-dark > input:first-child:checked + input[type=\"hidden\"] + label::before {\n  background-color: #343a40;\n  border-color: #343a40;\n}\n\n.icheck-navy > input:first-child:not(:checked):not(:disabled):hover + label::before,\n.icheck-navy > input:first-child:not(:checked):not(:disabled):hover + input[type=\"hidden\"] + label::before {\n  border-color: #001f3f;\n}\n\n.icheck-navy > input:first-child:not(:checked):not(:disabled):focus + label::before,\n.icheck-navy > input:first-child:not(:checked):not(:disabled):focus + input[type=\"hidden\"] + label::before {\n  border-color: #001f3f;\n}\n\n.icheck-navy > input:first-child:checked + label::before,\n.icheck-navy > input:first-child:checked + input[type=\"hidden\"] + label::before {\n  background-color: #001f3f;\n  border-color: #001f3f;\n}\n\n.icheck-olive > input:first-child:not(:checked):not(:disabled):hover + label::before,\n.icheck-olive > input:first-child:not(:checked):not(:disabled):hover + input[type=\"hidden\"] + label::before {\n  border-color: #3d9970;\n}\n\n.icheck-olive > input:first-child:not(:checked):not(:disabled):focus + label::before,\n.icheck-olive > input:first-child:not(:checked):not(:disabled):focus + input[type=\"hidden\"] + label::before {\n  border-color: #3d9970;\n}\n\n.icheck-olive > input:first-child:checked + label::before,\n.icheck-olive > input:first-child:checked + input[type=\"hidden\"] + label::before {\n  background-color: #3d9970;\n  border-color: #3d9970;\n}\n\n.icheck-lime > input:first-child:not(:checked):not(:disabled):hover + label::before,\n.icheck-lime > input:first-child:not(:checked):not(:disabled):hover + input[type=\"hidden\"] + label::before {\n  border-color: #01ff70;\n}\n\n.icheck-lime > input:first-child:not(:checked):not(:disabled):focus + label::before,\n.icheck-lime > input:first-child:not(:checked):not(:disabled):focus + input[type=\"hidden\"] + label::before {\n  border-color: #01ff70;\n}\n\n.icheck-lime > input:first-child:checked + label::before,\n.icheck-lime > input:first-child:checked + input[type=\"hidden\"] + label::before {\n  background-color: #01ff70;\n  border-color: #01ff70;\n}\n\n.icheck-fuchsia > input:first-child:not(:checked):not(:disabled):hover + label::before,\n.icheck-fuchsia > input:first-child:not(:checked):not(:disabled):hover + input[type=\"hidden\"] + label::before {\n  border-color: #f012be;\n}\n\n.icheck-fuchsia > input:first-child:not(:checked):not(:disabled):focus + label::before,\n.icheck-fuchsia > input:first-child:not(:checked):not(:disabled):focus + input[type=\"hidden\"] + label::before {\n  border-color: #f012be;\n}\n\n.icheck-fuchsia > input:first-child:checked + label::before,\n.icheck-fuchsia > input:first-child:checked + input[type=\"hidden\"] + label::before {\n  background-color: #f012be;\n  border-color: #f012be;\n}\n\n.icheck-maroon > input:first-child:not(:checked):not(:disabled):hover + label::before,\n.icheck-maroon > input:first-child:not(:checked):not(:disabled):hover + input[type=\"hidden\"] + label::before {\n  border-color: #d81b60;\n}\n\n.icheck-maroon > input:first-child:not(:checked):not(:disabled):focus + label::before,\n.icheck-maroon > input:first-child:not(:checked):not(:disabled):focus + input[type=\"hidden\"] + label::before {\n  border-color: #d81b60;\n}\n\n.icheck-maroon > input:first-child:checked + label::before,\n.icheck-maroon > input:first-child:checked + input[type=\"hidden\"] + label::before {\n  background-color: #d81b60;\n  border-color: #d81b60;\n}\n\n.icheck-blue > input:first-child:not(:checked):not(:disabled):hover + label::before,\n.icheck-blue > input:first-child:not(:checked):not(:disabled):hover + input[type=\"hidden\"] + label::before {\n  border-color: #007bff;\n}\n\n.icheck-blue > input:first-child:not(:checked):not(:disabled):focus + label::before,\n.icheck-blue > input:first-child:not(:checked):not(:disabled):focus + input[type=\"hidden\"] + label::before {\n  border-color: #007bff;\n}\n\n.icheck-blue > input:first-child:checked + label::before,\n.icheck-blue > input:first-child:checked + input[type=\"hidden\"] + label::before {\n  background-color: #007bff;\n  border-color: #007bff;\n}\n\n.icheck-indigo > input:first-child:not(:checked):not(:disabled):hover + label::before,\n.icheck-indigo > input:first-child:not(:checked):not(:disabled):hover + input[type=\"hidden\"] + label::before {\n  border-color: #6610f2;\n}\n\n.icheck-indigo > input:first-child:not(:checked):not(:disabled):focus + label::before,\n.icheck-indigo > input:first-child:not(:checked):not(:disabled):focus + input[type=\"hidden\"] + label::before {\n  border-color: #6610f2;\n}\n\n.icheck-indigo > input:first-child:checked + label::before,\n.icheck-indigo > input:first-child:checked + input[type=\"hidden\"] + label::before {\n  background-color: #6610f2;\n  border-color: #6610f2;\n}\n\n.icheck-purple > input:first-child:not(:checked):not(:disabled):hover + label::before,\n.icheck-purple > input:first-child:not(:checked):not(:disabled):hover + input[type=\"hidden\"] + label::before {\n  border-color: #6f42c1;\n}\n\n.icheck-purple > input:first-child:not(:checked):not(:disabled):focus + label::before,\n.icheck-purple > input:first-child:not(:checked):not(:disabled):focus + input[type=\"hidden\"] + label::before {\n  border-color: #6f42c1;\n}\n\n.icheck-purple > input:first-child:checked + label::before,\n.icheck-purple > input:first-child:checked + input[type=\"hidden\"] + label::before {\n  background-color: #6f42c1;\n  border-color: #6f42c1;\n}\n\n.icheck-pink > input:first-child:not(:checked):not(:disabled):hover + label::before,\n.icheck-pink > input:first-child:not(:checked):not(:disabled):hover + input[type=\"hidden\"] + label::before {\n  border-color: #e83e8c;\n}\n\n.icheck-pink > input:first-child:not(:checked):not(:disabled):focus + label::before,\n.icheck-pink > input:first-child:not(:checked):not(:disabled):focus + input[type=\"hidden\"] + label::before {\n  border-color: #e83e8c;\n}\n\n.icheck-pink > input:first-child:checked + label::before,\n.icheck-pink > input:first-child:checked + input[type=\"hidden\"] + label::before {\n  background-color: #e83e8c;\n  border-color: #e83e8c;\n}\n\n.icheck-red > input:first-child:not(:checked):not(:disabled):hover + label::before,\n.icheck-red > input:first-child:not(:checked):not(:disabled):hover + input[type=\"hidden\"] + label::before {\n  border-color: #dc3545;\n}\n\n.icheck-red > input:first-child:not(:checked):not(:disabled):focus + label::before,\n.icheck-red > input:first-child:not(:checked):not(:disabled):focus + input[type=\"hidden\"] + label::before {\n  border-color: #dc3545;\n}\n\n.icheck-red > input:first-child:checked + label::before,\n.icheck-red > input:first-child:checked + input[type=\"hidden\"] + label::before {\n  background-color: #dc3545;\n  border-color: #dc3545;\n}\n\n.icheck-orange > input:first-child:not(:checked):not(:disabled):hover + label::before,\n.icheck-orange > input:first-child:not(:checked):not(:disabled):hover + input[type=\"hidden\"] + label::before {\n  border-color: #fd7e14;\n}\n\n.icheck-orange > input:first-child:not(:checked):not(:disabled):focus + label::before,\n.icheck-orange > input:first-child:not(:checked):not(:disabled):focus + input[type=\"hidden\"] + label::before {\n  border-color: #fd7e14;\n}\n\n.icheck-orange > input:first-child:checked + label::before,\n.icheck-orange > input:first-child:checked + input[type=\"hidden\"] + label::before {\n  background-color: #fd7e14;\n  border-color: #fd7e14;\n}\n\n.icheck-yellow > input:first-child:not(:checked):not(:disabled):hover + label::before,\n.icheck-yellow > input:first-child:not(:checked):not(:disabled):hover + input[type=\"hidden\"] + label::before {\n  border-color: #ffc107;\n}\n\n.icheck-yellow > input:first-child:not(:checked):not(:disabled):focus + label::before,\n.icheck-yellow > input:first-child:not(:checked):not(:disabled):focus + input[type=\"hidden\"] + label::before {\n  border-color: #ffc107;\n}\n\n.icheck-yellow > input:first-child:checked + label::before,\n.icheck-yellow > input:first-child:checked + input[type=\"hidden\"] + label::before {\n  background-color: #ffc107;\n  border-color: #ffc107;\n}\n\n.icheck-green > input:first-child:not(:checked):not(:disabled):hover + label::before,\n.icheck-green > input:first-child:not(:checked):not(:disabled):hover + input[type=\"hidden\"] + label::before {\n  border-color: #28a745;\n}\n\n.icheck-green > input:first-child:not(:checked):not(:disabled):focus + label::before,\n.icheck-green > input:first-child:not(:checked):not(:disabled):focus + input[type=\"hidden\"] + label::before {\n  border-color: #28a745;\n}\n\n.icheck-green > input:first-child:checked + label::before,\n.icheck-green > input:first-child:checked + input[type=\"hidden\"] + label::before {\n  background-color: #28a745;\n  border-color: #28a745;\n}\n\n.icheck-teal > input:first-child:not(:checked):not(:disabled):hover + label::before,\n.icheck-teal > input:first-child:not(:checked):not(:disabled):hover + input[type=\"hidden\"] + label::before {\n  border-color: #20c997;\n}\n\n.icheck-teal > input:first-child:not(:checked):not(:disabled):focus + label::before,\n.icheck-teal > input:first-child:not(:checked):not(:disabled):focus + input[type=\"hidden\"] + label::before {\n  border-color: #20c997;\n}\n\n.icheck-teal > input:first-child:checked + label::before,\n.icheck-teal > input:first-child:checked + input[type=\"hidden\"] + label::before {\n  background-color: #20c997;\n  border-color: #20c997;\n}\n\n.icheck-cyan > input:first-child:not(:checked):not(:disabled):hover + label::before,\n.icheck-cyan > input:first-child:not(:checked):not(:disabled):hover + input[type=\"hidden\"] + label::before {\n  border-color: #17a2b8;\n}\n\n.icheck-cyan > input:first-child:not(:checked):not(:disabled):focus + label::before,\n.icheck-cyan > input:first-child:not(:checked):not(:disabled):focus + input[type=\"hidden\"] + label::before {\n  border-color: #17a2b8;\n}\n\n.icheck-cyan > input:first-child:checked + label::before,\n.icheck-cyan > input:first-child:checked + input[type=\"hidden\"] + label::before {\n  background-color: #17a2b8;\n  border-color: #17a2b8;\n}\n\n.icheck-white > input:first-child:not(:checked):not(:disabled):hover + label::before,\n.icheck-white > input:first-child:not(:checked):not(:disabled):hover + input[type=\"hidden\"] + label::before {\n  border-color: #ffffff;\n}\n\n.icheck-white > input:first-child:not(:checked):not(:disabled):focus + label::before,\n.icheck-white > input:first-child:not(:checked):not(:disabled):focus + input[type=\"hidden\"] + label::before {\n  border-color: #ffffff;\n}\n\n.icheck-white > input:first-child:checked + label::before,\n.icheck-white > input:first-child:checked + input[type=\"hidden\"] + label::before {\n  background-color: #ffffff;\n  border-color: #ffffff;\n}\n\n.icheck-gray > input:first-child:not(:checked):not(:disabled):hover + label::before,\n.icheck-gray > input:first-child:not(:checked):not(:disabled):hover + input[type=\"hidden\"] + label::before {\n  border-color: #6c757d;\n}\n\n.icheck-gray > input:first-child:not(:checked):not(:disabled):focus + label::before,\n.icheck-gray > input:first-child:not(:checked):not(:disabled):focus + input[type=\"hidden\"] + label::before {\n  border-color: #6c757d;\n}\n\n.icheck-gray > input:first-child:checked + label::before,\n.icheck-gray > input:first-child:checked + input[type=\"hidden\"] + label::before {\n  background-color: #6c757d;\n  border-color: #6c757d;\n}\n\n.icheck-gray-dark > input:first-child:not(:checked):not(:disabled):hover + label::before,\n.icheck-gray-dark > input:first-child:not(:checked):not(:disabled):hover + input[type=\"hidden\"] + label::before {\n  border-color: #343a40;\n}\n\n.icheck-gray-dark > input:first-child:not(:checked):not(:disabled):focus + label::before,\n.icheck-gray-dark > input:first-child:not(:checked):not(:disabled):focus + input[type=\"hidden\"] + label::before {\n  border-color: #343a40;\n}\n\n.icheck-gray-dark > input:first-child:checked + label::before,\n.icheck-gray-dark > input:first-child:checked + input[type=\"hidden\"] + label::before {\n  background-color: #343a40;\n  border-color: #343a40;\n}\n\n.mapael .map {\n  position: relative;\n}\n\n.mapael .mapTooltip {\n  font-family: \"Source Sans Pro\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n  font-style: normal;\n  font-weight: 400;\n  line-height: 1.5;\n  text-align: left;\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  word-spacing: normal;\n  white-space: normal;\n  line-break: auto;\n  border-radius: 0.25rem;\n  font-size: 0.875rem;\n  background-color: #000;\n  color: #ffffff;\n  display: block;\n  max-width: 200px;\n  padding: 0.25rem 0.5rem;\n  position: absolute;\n  text-align: center;\n  word-wrap: break-word;\n  z-index: 1070;\n}\n\n.mapael .myLegend {\n  background-color: #f8f9fa;\n  border: 1px solid #adb5bd;\n  padding: 10px;\n  width: 600px;\n}\n\n.mapael .zoomButton {\n  background-color: #f8f9fa;\n  border: 1px solid #ddd;\n  border-radius: 0.25rem;\n  color: #444;\n  cursor: pointer;\n  font-weight: bold;\n  height: 16px;\n  left: 10px;\n  line-height: 14px;\n  padding-left: 1px;\n  position: absolute;\n  text-align: center;\n  top: 0;\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  user-select: none;\n  width: 16px;\n}\n\n.mapael .zoomButton:hover, .mapael .zoomButton:active, .mapael .zoomButton.hover {\n  background-color: #e9ecef;\n  color: #2b2b2b;\n}\n\n.mapael .zoomReset {\n  line-height: 12px;\n  top: 10px;\n}\n\n.mapael .zoomIn {\n  top: 30px;\n}\n\n.mapael .zoomOut {\n  top: 50px;\n}\n\n.jqvmap-zoomin,\n.jqvmap-zoomout {\n  background-color: #f8f9fa;\n  border: 1px solid #ddd;\n  border-radius: 0.25rem;\n  color: #444;\n  height: 15px;\n  width: 15px;\n}\n\n.jqvmap-zoomin:hover, .jqvmap-zoomin:active, .jqvmap-zoomin.hover,\n.jqvmap-zoomout:hover,\n.jqvmap-zoomout:active,\n.jqvmap-zoomout.hover {\n  background-color: #e9ecef;\n  color: #2b2b2b;\n}\n\n.swal2-icon.swal2-info {\n  border-color: ligthen(#17a2b8, 20%);\n  color: #17a2b8;\n}\n\n.swal2-icon.swal2-warning {\n  border-color: ligthen(#ffc107, 20%);\n  color: #ffc107;\n}\n\n.swal2-icon.swal2-error {\n  border-color: ligthen(#dc3545, 20%);\n  color: #dc3545;\n}\n\n.swal2-icon.swal2-question {\n  border-color: ligthen(#6c757d, 20%);\n  color: #6c757d;\n}\n\n.swal2-icon.swal2-success {\n  border-color: ligthen(#28a745, 20%);\n  color: #28a745;\n}\n\n.swal2-icon.swal2-success .swal2-success-ring {\n  border-color: ligthen(#28a745, 20%);\n}\n\n.swal2-icon.swal2-success [class^='swal2-success-line'] {\n  background-color: #28a745;\n}\n\n#toast-container .toast {\n  background-color: #007bff;\n}\n\n#toast-container .toast-success {\n  background-color: #28a745;\n}\n\n#toast-container .toast-error {\n  background-color: #dc3545;\n}\n\n#toast-container .toast-info {\n  background-color: #17a2b8;\n}\n\n#toast-container .toast-warning {\n  background-color: #ffc107;\n}\n\n.pace {\n  z-index: 1048;\n}\n\n.pace .pace-progress {\n  z-index: 1049;\n}\n\n.pace .pace-activity {\n  z-index: 1050;\n}\n\n.pace-primary .pace .pace-progress {\n  background: #007bff;\n}\n\n.pace-barber-shop-primary .pace {\n  background: #ffffff;\n}\n\n.pace-barber-shop-primary .pace .pace-progress {\n  background: #007bff;\n}\n\n.pace-barber-shop-primary .pace .pace-activity {\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0.2) 75%, transparent 75%, transparent);\n}\n\n.pace-big-counter-primary .pace .pace-progress::after {\n  color: rgba(0, 123, 255, 0.2);\n}\n\n.pace-bounce-primary .pace .pace-activity {\n  background: #007bff;\n}\n\n.pace-center-atom-primary .pace-progress {\n  height: 100px;\n  width: 80px;\n}\n\n.pace-center-atom-primary .pace-progress::before {\n  background: #007bff;\n  color: #ffffff;\n  font-size: .8rem;\n  line-height: .7rem;\n  padding-top: 17%;\n}\n\n.pace-center-atom-primary .pace-activity {\n  border-color: #007bff;\n}\n\n.pace-center-atom-primary .pace-activity::after, .pace-center-atom-primary .pace-activity::before {\n  border-color: #007bff;\n}\n\n.pace-center-circle-primary .pace .pace-progress {\n  background: rgba(0, 123, 255, 0.8);\n  color: #ffffff;\n}\n\n.pace-center-radar-primary .pace .pace-activity {\n  border-color: #007bff transparent transparent;\n}\n\n.pace-center-radar-primary .pace .pace-activity::before {\n  border-color: #007bff transparent transparent;\n}\n\n.pace-center-simple-primary .pace {\n  background: #ffffff;\n  border-color: #007bff;\n}\n\n.pace-center-simple-primary .pace .pace-progress {\n  background: #007bff;\n}\n\n.pace-material-primary .pace {\n  color: #007bff;\n}\n\n.pace-corner-indicator-primary .pace .pace-activity {\n  background: #007bff;\n}\n\n.pace-corner-indicator-primary .pace .pace-activity::after,\n.pace-corner-indicator-primary .pace .pace-activity::before  {\n  border: 5px solid #ffffff;\n}\n\n.pace-corner-indicator-primary .pace .pace-activity::before {\n  border-right-color: rgba(0, 123, 255, 0.2);\n  border-left-color: rgba(0, 123, 255, 0.2);\n}\n\n.pace-corner-indicator-primary .pace .pace-activity::after {\n  border-top-color: rgba(0, 123, 255, 0.2);\n  border-bottom-color: rgba(0, 123, 255, 0.2);\n}\n\n.pace-fill-left-primary .pace .pace-progress {\n  background-color: rgba(0, 123, 255, 0.2);\n}\n\n.pace-flash-primary .pace .pace-progress {\n  background: #007bff;\n}\n\n.pace-flash-primary .pace .pace-progress-inner {\n  box-shadow: 0 0 10px #007bff, 0 0 5px #007bff;\n}\n\n.pace-flash-primary .pace .pace-activity {\n  border-top-color: #007bff;\n  border-left-color: #007bff;\n}\n\n.pace-loading-bar-primary .pace .pace-progress {\n  background: #007bff;\n  color: #007bff;\n  box-shadow: 120px 0 #ffffff, 240px 0 #ffffff;\n}\n\n.pace-loading-bar-primary .pace .pace-activity {\n  box-shadow: inset 0 0 0 2px #007bff, inset 0 0 0 7px #ffffff;\n}\n\n.pace-mac-osx-primary .pace .pace-progress {\n  background-color: #007bff;\n  box-shadow: inset -1px 0 #007bff, inset 0 -1px #007bff, inset 0 2px rgba(255, 255, 255, 0.5), inset 0 6px rgba(255, 255, 255, 0.3);\n}\n\n.pace-mac-osx-primary .pace .pace-activity {\n  background-image: radial-gradient(rgba(255, 255, 255, 0.65) 0%, rgba(255, 255, 255, 0.15) 100%);\n  height: 12px;\n}\n\n.pace-progress-color-primary .pace-progress {\n  color: #007bff;\n}\n\n.pace-secondary .pace .pace-progress {\n  background: #6c757d;\n}\n\n.pace-barber-shop-secondary .pace {\n  background: #ffffff;\n}\n\n.pace-barber-shop-secondary .pace .pace-progress {\n  background: #6c757d;\n}\n\n.pace-barber-shop-secondary .pace .pace-activity {\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0.2) 75%, transparent 75%, transparent);\n}\n\n.pace-big-counter-secondary .pace .pace-progress::after {\n  color: rgba(108, 117, 125, 0.2);\n}\n\n.pace-bounce-secondary .pace .pace-activity {\n  background: #6c757d;\n}\n\n.pace-center-atom-secondary .pace-progress {\n  height: 100px;\n  width: 80px;\n}\n\n.pace-center-atom-secondary .pace-progress::before {\n  background: #6c757d;\n  color: #ffffff;\n  font-size: .8rem;\n  line-height: .7rem;\n  padding-top: 17%;\n}\n\n.pace-center-atom-secondary .pace-activity {\n  border-color: #6c757d;\n}\n\n.pace-center-atom-secondary .pace-activity::after, .pace-center-atom-secondary .pace-activity::before {\n  border-color: #6c757d;\n}\n\n.pace-center-circle-secondary .pace .pace-progress {\n  background: rgba(108, 117, 125, 0.8);\n  color: #ffffff;\n}\n\n.pace-center-radar-secondary .pace .pace-activity {\n  border-color: #6c757d transparent transparent;\n}\n\n.pace-center-radar-secondary .pace .pace-activity::before {\n  border-color: #6c757d transparent transparent;\n}\n\n.pace-center-simple-secondary .pace {\n  background: #ffffff;\n  border-color: #6c757d;\n}\n\n.pace-center-simple-secondary .pace .pace-progress {\n  background: #6c757d;\n}\n\n.pace-material-secondary .pace {\n  color: #6c757d;\n}\n\n.pace-corner-indicator-secondary .pace .pace-activity {\n  background: #6c757d;\n}\n\n.pace-corner-indicator-secondary .pace .pace-activity::after,\n.pace-corner-indicator-secondary .pace .pace-activity::before  {\n  border: 5px solid #ffffff;\n}\n\n.pace-corner-indicator-secondary .pace .pace-activity::before {\n  border-right-color: rgba(108, 117, 125, 0.2);\n  border-left-color: rgba(108, 117, 125, 0.2);\n}\n\n.pace-corner-indicator-secondary .pace .pace-activity::after {\n  border-top-color: rgba(108, 117, 125, 0.2);\n  border-bottom-color: rgba(108, 117, 125, 0.2);\n}\n\n.pace-fill-left-secondary .pace .pace-progress {\n  background-color: rgba(108, 117, 125, 0.2);\n}\n\n.pace-flash-secondary .pace .pace-progress {\n  background: #6c757d;\n}\n\n.pace-flash-secondary .pace .pace-progress-inner {\n  box-shadow: 0 0 10px #6c757d, 0 0 5px #6c757d;\n}\n\n.pace-flash-secondary .pace .pace-activity {\n  border-top-color: #6c757d;\n  border-left-color: #6c757d;\n}\n\n.pace-loading-bar-secondary .pace .pace-progress {\n  background: #6c757d;\n  color: #6c757d;\n  box-shadow: 120px 0 #ffffff, 240px 0 #ffffff;\n}\n\n.pace-loading-bar-secondary .pace .pace-activity {\n  box-shadow: inset 0 0 0 2px #6c757d, inset 0 0 0 7px #ffffff;\n}\n\n.pace-mac-osx-secondary .pace .pace-progress {\n  background-color: #6c757d;\n  box-shadow: inset -1px 0 #6c757d, inset 0 -1px #6c757d, inset 0 2px rgba(255, 255, 255, 0.5), inset 0 6px rgba(255, 255, 255, 0.3);\n}\n\n.pace-mac-osx-secondary .pace .pace-activity {\n  background-image: radial-gradient(rgba(255, 255, 255, 0.65) 0%, rgba(255, 255, 255, 0.15) 100%);\n  height: 12px;\n}\n\n.pace-progress-color-secondary .pace-progress {\n  color: #6c757d;\n}\n\n.pace-success .pace .pace-progress {\n  background: #28a745;\n}\n\n.pace-barber-shop-success .pace {\n  background: #ffffff;\n}\n\n.pace-barber-shop-success .pace .pace-progress {\n  background: #28a745;\n}\n\n.pace-barber-shop-success .pace .pace-activity {\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0.2) 75%, transparent 75%, transparent);\n}\n\n.pace-big-counter-success .pace .pace-progress::after {\n  color: rgba(40, 167, 69, 0.2);\n}\n\n.pace-bounce-success .pace .pace-activity {\n  background: #28a745;\n}\n\n.pace-center-atom-success .pace-progress {\n  height: 100px;\n  width: 80px;\n}\n\n.pace-center-atom-success .pace-progress::before {\n  background: #28a745;\n  color: #ffffff;\n  font-size: .8rem;\n  line-height: .7rem;\n  padding-top: 17%;\n}\n\n.pace-center-atom-success .pace-activity {\n  border-color: #28a745;\n}\n\n.pace-center-atom-success .pace-activity::after, .pace-center-atom-success .pace-activity::before {\n  border-color: #28a745;\n}\n\n.pace-center-circle-success .pace .pace-progress {\n  background: rgba(40, 167, 69, 0.8);\n  color: #ffffff;\n}\n\n.pace-center-radar-success .pace .pace-activity {\n  border-color: #28a745 transparent transparent;\n}\n\n.pace-center-radar-success .pace .pace-activity::before {\n  border-color: #28a745 transparent transparent;\n}\n\n.pace-center-simple-success .pace {\n  background: #ffffff;\n  border-color: #28a745;\n}\n\n.pace-center-simple-success .pace .pace-progress {\n  background: #28a745;\n}\n\n.pace-material-success .pace {\n  color: #28a745;\n}\n\n.pace-corner-indicator-success .pace .pace-activity {\n  background: #28a745;\n}\n\n.pace-corner-indicator-success .pace .pace-activity::after,\n.pace-corner-indicator-success .pace .pace-activity::before  {\n  border: 5px solid #ffffff;\n}\n\n.pace-corner-indicator-success .pace .pace-activity::before {\n  border-right-color: rgba(40, 167, 69, 0.2);\n  border-left-color: rgba(40, 167, 69, 0.2);\n}\n\n.pace-corner-indicator-success .pace .pace-activity::after {\n  border-top-color: rgba(40, 167, 69, 0.2);\n  border-bottom-color: rgba(40, 167, 69, 0.2);\n}\n\n.pace-fill-left-success .pace .pace-progress {\n  background-color: rgba(40, 167, 69, 0.2);\n}\n\n.pace-flash-success .pace .pace-progress {\n  background: #28a745;\n}\n\n.pace-flash-success .pace .pace-progress-inner {\n  box-shadow: 0 0 10px #28a745, 0 0 5px #28a745;\n}\n\n.pace-flash-success .pace .pace-activity {\n  border-top-color: #28a745;\n  border-left-color: #28a745;\n}\n\n.pace-loading-bar-success .pace .pace-progress {\n  background: #28a745;\n  color: #28a745;\n  box-shadow: 120px 0 #ffffff, 240px 0 #ffffff;\n}\n\n.pace-loading-bar-success .pace .pace-activity {\n  box-shadow: inset 0 0 0 2px #28a745, inset 0 0 0 7px #ffffff;\n}\n\n.pace-mac-osx-success .pace .pace-progress {\n  background-color: #28a745;\n  box-shadow: inset -1px 0 #28a745, inset 0 -1px #28a745, inset 0 2px rgba(255, 255, 255, 0.5), inset 0 6px rgba(255, 255, 255, 0.3);\n}\n\n.pace-mac-osx-success .pace .pace-activity {\n  background-image: radial-gradient(rgba(255, 255, 255, 0.65) 0%, rgba(255, 255, 255, 0.15) 100%);\n  height: 12px;\n}\n\n.pace-progress-color-success .pace-progress {\n  color: #28a745;\n}\n\n.pace-info .pace .pace-progress {\n  background: #17a2b8;\n}\n\n.pace-barber-shop-info .pace {\n  background: #ffffff;\n}\n\n.pace-barber-shop-info .pace .pace-progress {\n  background: #17a2b8;\n}\n\n.pace-barber-shop-info .pace .pace-activity {\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0.2) 75%, transparent 75%, transparent);\n}\n\n.pace-big-counter-info .pace .pace-progress::after {\n  color: rgba(23, 162, 184, 0.2);\n}\n\n.pace-bounce-info .pace .pace-activity {\n  background: #17a2b8;\n}\n\n.pace-center-atom-info .pace-progress {\n  height: 100px;\n  width: 80px;\n}\n\n.pace-center-atom-info .pace-progress::before {\n  background: #17a2b8;\n  color: #ffffff;\n  font-size: .8rem;\n  line-height: .7rem;\n  padding-top: 17%;\n}\n\n.pace-center-atom-info .pace-activity {\n  border-color: #17a2b8;\n}\n\n.pace-center-atom-info .pace-activity::after, .pace-center-atom-info .pace-activity::before {\n  border-color: #17a2b8;\n}\n\n.pace-center-circle-info .pace .pace-progress {\n  background: rgba(23, 162, 184, 0.8);\n  color: #ffffff;\n}\n\n.pace-center-radar-info .pace .pace-activity {\n  border-color: #17a2b8 transparent transparent;\n}\n\n.pace-center-radar-info .pace .pace-activity::before {\n  border-color: #17a2b8 transparent transparent;\n}\n\n.pace-center-simple-info .pace {\n  background: #ffffff;\n  border-color: #17a2b8;\n}\n\n.pace-center-simple-info .pace .pace-progress {\n  background: #17a2b8;\n}\n\n.pace-material-info .pace {\n  color: #17a2b8;\n}\n\n.pace-corner-indicator-info .pace .pace-activity {\n  background: #17a2b8;\n}\n\n.pace-corner-indicator-info .pace .pace-activity::after,\n.pace-corner-indicator-info .pace .pace-activity::before  {\n  border: 5px solid #ffffff;\n}\n\n.pace-corner-indicator-info .pace .pace-activity::before {\n  border-right-color: rgba(23, 162, 184, 0.2);\n  border-left-color: rgba(23, 162, 184, 0.2);\n}\n\n.pace-corner-indicator-info .pace .pace-activity::after {\n  border-top-color: rgba(23, 162, 184, 0.2);\n  border-bottom-color: rgba(23, 162, 184, 0.2);\n}\n\n.pace-fill-left-info .pace .pace-progress {\n  background-color: rgba(23, 162, 184, 0.2);\n}\n\n.pace-flash-info .pace .pace-progress {\n  background: #17a2b8;\n}\n\n.pace-flash-info .pace .pace-progress-inner {\n  box-shadow: 0 0 10px #17a2b8, 0 0 5px #17a2b8;\n}\n\n.pace-flash-info .pace .pace-activity {\n  border-top-color: #17a2b8;\n  border-left-color: #17a2b8;\n}\n\n.pace-loading-bar-info .pace .pace-progress {\n  background: #17a2b8;\n  color: #17a2b8;\n  box-shadow: 120px 0 #ffffff, 240px 0 #ffffff;\n}\n\n.pace-loading-bar-info .pace .pace-activity {\n  box-shadow: inset 0 0 0 2px #17a2b8, inset 0 0 0 7px #ffffff;\n}\n\n.pace-mac-osx-info .pace .pace-progress {\n  background-color: #17a2b8;\n  box-shadow: inset -1px 0 #17a2b8, inset 0 -1px #17a2b8, inset 0 2px rgba(255, 255, 255, 0.5), inset 0 6px rgba(255, 255, 255, 0.3);\n}\n\n.pace-mac-osx-info .pace .pace-activity {\n  background-image: radial-gradient(rgba(255, 255, 255, 0.65) 0%, rgba(255, 255, 255, 0.15) 100%);\n  height: 12px;\n}\n\n.pace-progress-color-info .pace-progress {\n  color: #17a2b8;\n}\n\n.pace-warning .pace .pace-progress {\n  background: #ffc107;\n}\n\n.pace-barber-shop-warning .pace {\n  background: #1F2D3D;\n}\n\n.pace-barber-shop-warning .pace .pace-progress {\n  background: #ffc107;\n}\n\n.pace-barber-shop-warning .pace .pace-activity {\n  background-image: linear-gradient(45deg, rgba(31, 45, 61, 0.2) 25%, transparent 25%, transparent 50%, rgba(31, 45, 61, 0.2) 50%, rgba(31, 45, 61, 0.2) 75%, transparent 75%, transparent);\n}\n\n.pace-big-counter-warning .pace .pace-progress::after {\n  color: rgba(255, 193, 7, 0.2);\n}\n\n.pace-bounce-warning .pace .pace-activity {\n  background: #ffc107;\n}\n\n.pace-center-atom-warning .pace-progress {\n  height: 100px;\n  width: 80px;\n}\n\n.pace-center-atom-warning .pace-progress::before {\n  background: #ffc107;\n  color: #1F2D3D;\n  font-size: .8rem;\n  line-height: .7rem;\n  padding-top: 17%;\n}\n\n.pace-center-atom-warning .pace-activity {\n  border-color: #ffc107;\n}\n\n.pace-center-atom-warning .pace-activity::after, .pace-center-atom-warning .pace-activity::before {\n  border-color: #ffc107;\n}\n\n.pace-center-circle-warning .pace .pace-progress {\n  background: rgba(255, 193, 7, 0.8);\n  color: #1F2D3D;\n}\n\n.pace-center-radar-warning .pace .pace-activity {\n  border-color: #ffc107 transparent transparent;\n}\n\n.pace-center-radar-warning .pace .pace-activity::before {\n  border-color: #ffc107 transparent transparent;\n}\n\n.pace-center-simple-warning .pace {\n  background: #1F2D3D;\n  border-color: #ffc107;\n}\n\n.pace-center-simple-warning .pace .pace-progress {\n  background: #ffc107;\n}\n\n.pace-material-warning .pace {\n  color: #ffc107;\n}\n\n.pace-corner-indicator-warning .pace .pace-activity {\n  background: #ffc107;\n}\n\n.pace-corner-indicator-warning .pace .pace-activity::after,\n.pace-corner-indicator-warning .pace .pace-activity::before  {\n  border: 5px solid #1F2D3D;\n}\n\n.pace-corner-indicator-warning .pace .pace-activity::before {\n  border-right-color: rgba(255, 193, 7, 0.2);\n  border-left-color: rgba(255, 193, 7, 0.2);\n}\n\n.pace-corner-indicator-warning .pace .pace-activity::after {\n  border-top-color: rgba(255, 193, 7, 0.2);\n  border-bottom-color: rgba(255, 193, 7, 0.2);\n}\n\n.pace-fill-left-warning .pace .pace-progress {\n  background-color: rgba(255, 193, 7, 0.2);\n}\n\n.pace-flash-warning .pace .pace-progress {\n  background: #ffc107;\n}\n\n.pace-flash-warning .pace .pace-progress-inner {\n  box-shadow: 0 0 10px #ffc107, 0 0 5px #ffc107;\n}\n\n.pace-flash-warning .pace .pace-activity {\n  border-top-color: #ffc107;\n  border-left-color: #ffc107;\n}\n\n.pace-loading-bar-warning .pace .pace-progress {\n  background: #ffc107;\n  color: #ffc107;\n  box-shadow: 120px 0 #1F2D3D, 240px 0 #1F2D3D;\n}\n\n.pace-loading-bar-warning .pace .pace-activity {\n  box-shadow: inset 0 0 0 2px #ffc107, inset 0 0 0 7px #1F2D3D;\n}\n\n.pace-mac-osx-warning .pace .pace-progress {\n  background-color: #ffc107;\n  box-shadow: inset -1px 0 #ffc107, inset 0 -1px #ffc107, inset 0 2px rgba(31, 45, 61, 0.5), inset 0 6px rgba(31, 45, 61, 0.3);\n}\n\n.pace-mac-osx-warning .pace .pace-activity {\n  background-image: radial-gradient(rgba(31, 45, 61, 0.65) 0%, rgba(31, 45, 61, 0.15) 100%);\n  height: 12px;\n}\n\n.pace-progress-color-warning .pace-progress {\n  color: #ffc107;\n}\n\n.pace-danger .pace .pace-progress {\n  background: #dc3545;\n}\n\n.pace-barber-shop-danger .pace {\n  background: #ffffff;\n}\n\n.pace-barber-shop-danger .pace .pace-progress {\n  background: #dc3545;\n}\n\n.pace-barber-shop-danger .pace .pace-activity {\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0.2) 75%, transparent 75%, transparent);\n}\n\n.pace-big-counter-danger .pace .pace-progress::after {\n  color: rgba(220, 53, 69, 0.2);\n}\n\n.pace-bounce-danger .pace .pace-activity {\n  background: #dc3545;\n}\n\n.pace-center-atom-danger .pace-progress {\n  height: 100px;\n  width: 80px;\n}\n\n.pace-center-atom-danger .pace-progress::before {\n  background: #dc3545;\n  color: #ffffff;\n  font-size: .8rem;\n  line-height: .7rem;\n  padding-top: 17%;\n}\n\n.pace-center-atom-danger .pace-activity {\n  border-color: #dc3545;\n}\n\n.pace-center-atom-danger .pace-activity::after, .pace-center-atom-danger .pace-activity::before {\n  border-color: #dc3545;\n}\n\n.pace-center-circle-danger .pace .pace-progress {\n  background: rgba(220, 53, 69, 0.8);\n  color: #ffffff;\n}\n\n.pace-center-radar-danger .pace .pace-activity {\n  border-color: #dc3545 transparent transparent;\n}\n\n.pace-center-radar-danger .pace .pace-activity::before {\n  border-color: #dc3545 transparent transparent;\n}\n\n.pace-center-simple-danger .pace {\n  background: #ffffff;\n  border-color: #dc3545;\n}\n\n.pace-center-simple-danger .pace .pace-progress {\n  background: #dc3545;\n}\n\n.pace-material-danger .pace {\n  color: #dc3545;\n}\n\n.pace-corner-indicator-danger .pace .pace-activity {\n  background: #dc3545;\n}\n\n.pace-corner-indicator-danger .pace .pace-activity::after,\n.pace-corner-indicator-danger .pace .pace-activity::before  {\n  border: 5px solid #ffffff;\n}\n\n.pace-corner-indicator-danger .pace .pace-activity::before {\n  border-right-color: rgba(220, 53, 69, 0.2);\n  border-left-color: rgba(220, 53, 69, 0.2);\n}\n\n.pace-corner-indicator-danger .pace .pace-activity::after {\n  border-top-color: rgba(220, 53, 69, 0.2);\n  border-bottom-color: rgba(220, 53, 69, 0.2);\n}\n\n.pace-fill-left-danger .pace .pace-progress {\n  background-color: rgba(220, 53, 69, 0.2);\n}\n\n.pace-flash-danger .pace .pace-progress {\n  background: #dc3545;\n}\n\n.pace-flash-danger .pace .pace-progress-inner {\n  box-shadow: 0 0 10px #dc3545, 0 0 5px #dc3545;\n}\n\n.pace-flash-danger .pace .pace-activity {\n  border-top-color: #dc3545;\n  border-left-color: #dc3545;\n}\n\n.pace-loading-bar-danger .pace .pace-progress {\n  background: #dc3545;\n  color: #dc3545;\n  box-shadow: 120px 0 #ffffff, 240px 0 #ffffff;\n}\n\n.pace-loading-bar-danger .pace .pace-activity {\n  box-shadow: inset 0 0 0 2px #dc3545, inset 0 0 0 7px #ffffff;\n}\n\n.pace-mac-osx-danger .pace .pace-progress {\n  background-color: #dc3545;\n  box-shadow: inset -1px 0 #dc3545, inset 0 -1px #dc3545, inset 0 2px rgba(255, 255, 255, 0.5), inset 0 6px rgba(255, 255, 255, 0.3);\n}\n\n.pace-mac-osx-danger .pace .pace-activity {\n  background-image: radial-gradient(rgba(255, 255, 255, 0.65) 0%, rgba(255, 255, 255, 0.15) 100%);\n  height: 12px;\n}\n\n.pace-progress-color-danger .pace-progress {\n  color: #dc3545;\n}\n\n.pace-light .pace .pace-progress {\n  background: #f8f9fa;\n}\n\n.pace-barber-shop-light .pace {\n  background: #1F2D3D;\n}\n\n.pace-barber-shop-light .pace .pace-progress {\n  background: #f8f9fa;\n}\n\n.pace-barber-shop-light .pace .pace-activity {\n  background-image: linear-gradient(45deg, rgba(31, 45, 61, 0.2) 25%, transparent 25%, transparent 50%, rgba(31, 45, 61, 0.2) 50%, rgba(31, 45, 61, 0.2) 75%, transparent 75%, transparent);\n}\n\n.pace-big-counter-light .pace .pace-progress::after {\n  color: rgba(248, 249, 250, 0.2);\n}\n\n.pace-bounce-light .pace .pace-activity {\n  background: #f8f9fa;\n}\n\n.pace-center-atom-light .pace-progress {\n  height: 100px;\n  width: 80px;\n}\n\n.pace-center-atom-light .pace-progress::before {\n  background: #f8f9fa;\n  color: #1F2D3D;\n  font-size: .8rem;\n  line-height: .7rem;\n  padding-top: 17%;\n}\n\n.pace-center-atom-light .pace-activity {\n  border-color: #f8f9fa;\n}\n\n.pace-center-atom-light .pace-activity::after, .pace-center-atom-light .pace-activity::before {\n  border-color: #f8f9fa;\n}\n\n.pace-center-circle-light .pace .pace-progress {\n  background: rgba(248, 249, 250, 0.8);\n  color: #1F2D3D;\n}\n\n.pace-center-radar-light .pace .pace-activity {\n  border-color: #f8f9fa transparent transparent;\n}\n\n.pace-center-radar-light .pace .pace-activity::before {\n  border-color: #f8f9fa transparent transparent;\n}\n\n.pace-center-simple-light .pace {\n  background: #1F2D3D;\n  border-color: #f8f9fa;\n}\n\n.pace-center-simple-light .pace .pace-progress {\n  background: #f8f9fa;\n}\n\n.pace-material-light .pace {\n  color: #f8f9fa;\n}\n\n.pace-corner-indicator-light .pace .pace-activity {\n  background: #f8f9fa;\n}\n\n.pace-corner-indicator-light .pace .pace-activity::after,\n.pace-corner-indicator-light .pace .pace-activity::before  {\n  border: 5px solid #1F2D3D;\n}\n\n.pace-corner-indicator-light .pace .pace-activity::before {\n  border-right-color: rgba(248, 249, 250, 0.2);\n  border-left-color: rgba(248, 249, 250, 0.2);\n}\n\n.pace-corner-indicator-light .pace .pace-activity::after {\n  border-top-color: rgba(248, 249, 250, 0.2);\n  border-bottom-color: rgba(248, 249, 250, 0.2);\n}\n\n.pace-fill-left-light .pace .pace-progress {\n  background-color: rgba(248, 249, 250, 0.2);\n}\n\n.pace-flash-light .pace .pace-progress {\n  background: #f8f9fa;\n}\n\n.pace-flash-light .pace .pace-progress-inner {\n  box-shadow: 0 0 10px #f8f9fa, 0 0 5px #f8f9fa;\n}\n\n.pace-flash-light .pace .pace-activity {\n  border-top-color: #f8f9fa;\n  border-left-color: #f8f9fa;\n}\n\n.pace-loading-bar-light .pace .pace-progress {\n  background: #f8f9fa;\n  color: #f8f9fa;\n  box-shadow: 120px 0 #1F2D3D, 240px 0 #1F2D3D;\n}\n\n.pace-loading-bar-light .pace .pace-activity {\n  box-shadow: inset 0 0 0 2px #f8f9fa, inset 0 0 0 7px #1F2D3D;\n}\n\n.pace-mac-osx-light .pace .pace-progress {\n  background-color: #f8f9fa;\n  box-shadow: inset -1px 0 #f8f9fa, inset 0 -1px #f8f9fa, inset 0 2px rgba(31, 45, 61, 0.5), inset 0 6px rgba(31, 45, 61, 0.3);\n}\n\n.pace-mac-osx-light .pace .pace-activity {\n  background-image: radial-gradient(rgba(31, 45, 61, 0.65) 0%, rgba(31, 45, 61, 0.15) 100%);\n  height: 12px;\n}\n\n.pace-progress-color-light .pace-progress {\n  color: #f8f9fa;\n}\n\n.pace-dark .pace .pace-progress {\n  background: #343a40;\n}\n\n.pace-barber-shop-dark .pace {\n  background: #ffffff;\n}\n\n.pace-barber-shop-dark .pace .pace-progress {\n  background: #343a40;\n}\n\n.pace-barber-shop-dark .pace .pace-activity {\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0.2) 75%, transparent 75%, transparent);\n}\n\n.pace-big-counter-dark .pace .pace-progress::after {\n  color: rgba(52, 58, 64, 0.2);\n}\n\n.pace-bounce-dark .pace .pace-activity {\n  background: #343a40;\n}\n\n.pace-center-atom-dark .pace-progress {\n  height: 100px;\n  width: 80px;\n}\n\n.pace-center-atom-dark .pace-progress::before {\n  background: #343a40;\n  color: #ffffff;\n  font-size: .8rem;\n  line-height: .7rem;\n  padding-top: 17%;\n}\n\n.pace-center-atom-dark .pace-activity {\n  border-color: #343a40;\n}\n\n.pace-center-atom-dark .pace-activity::after, .pace-center-atom-dark .pace-activity::before {\n  border-color: #343a40;\n}\n\n.pace-center-circle-dark .pace .pace-progress {\n  background: rgba(52, 58, 64, 0.8);\n  color: #ffffff;\n}\n\n.pace-center-radar-dark .pace .pace-activity {\n  border-color: #343a40 transparent transparent;\n}\n\n.pace-center-radar-dark .pace .pace-activity::before {\n  border-color: #343a40 transparent transparent;\n}\n\n.pace-center-simple-dark .pace {\n  background: #ffffff;\n  border-color: #343a40;\n}\n\n.pace-center-simple-dark .pace .pace-progress {\n  background: #343a40;\n}\n\n.pace-material-dark .pace {\n  color: #343a40;\n}\n\n.pace-corner-indicator-dark .pace .pace-activity {\n  background: #343a40;\n}\n\n.pace-corner-indicator-dark .pace .pace-activity::after,\n.pace-corner-indicator-dark .pace .pace-activity::before  {\n  border: 5px solid #ffffff;\n}\n\n.pace-corner-indicator-dark .pace .pace-activity::before {\n  border-right-color: rgba(52, 58, 64, 0.2);\n  border-left-color: rgba(52, 58, 64, 0.2);\n}\n\n.pace-corner-indicator-dark .pace .pace-activity::after {\n  border-top-color: rgba(52, 58, 64, 0.2);\n  border-bottom-color: rgba(52, 58, 64, 0.2);\n}\n\n.pace-fill-left-dark .pace .pace-progress {\n  background-color: rgba(52, 58, 64, 0.2);\n}\n\n.pace-flash-dark .pace .pace-progress {\n  background: #343a40;\n}\n\n.pace-flash-dark .pace .pace-progress-inner {\n  box-shadow: 0 0 10px #343a40, 0 0 5px #343a40;\n}\n\n.pace-flash-dark .pace .pace-activity {\n  border-top-color: #343a40;\n  border-left-color: #343a40;\n}\n\n.pace-loading-bar-dark .pace .pace-progress {\n  background: #343a40;\n  color: #343a40;\n  box-shadow: 120px 0 #ffffff, 240px 0 #ffffff;\n}\n\n.pace-loading-bar-dark .pace .pace-activity {\n  box-shadow: inset 0 0 0 2px #343a40, inset 0 0 0 7px #ffffff;\n}\n\n.pace-mac-osx-dark .pace .pace-progress {\n  background-color: #343a40;\n  box-shadow: inset -1px 0 #343a40, inset 0 -1px #343a40, inset 0 2px rgba(255, 255, 255, 0.5), inset 0 6px rgba(255, 255, 255, 0.3);\n}\n\n.pace-mac-osx-dark .pace .pace-activity {\n  background-image: radial-gradient(rgba(255, 255, 255, 0.65) 0%, rgba(255, 255, 255, 0.15) 100%);\n  height: 12px;\n}\n\n.pace-progress-color-dark .pace-progress {\n  color: #343a40;\n}\n\n.pace-navy .pace .pace-progress {\n  background: #001f3f;\n}\n\n.pace-barber-shop-navy .pace {\n  background: #ffffff;\n}\n\n.pace-barber-shop-navy .pace .pace-progress {\n  background: #001f3f;\n}\n\n.pace-barber-shop-navy .pace .pace-activity {\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0.2) 75%, transparent 75%, transparent);\n}\n\n.pace-big-counter-navy .pace .pace-progress::after {\n  color: rgba(0, 31, 63, 0.2);\n}\n\n.pace-bounce-navy .pace .pace-activity {\n  background: #001f3f;\n}\n\n.pace-center-atom-navy .pace-progress {\n  height: 100px;\n  width: 80px;\n}\n\n.pace-center-atom-navy .pace-progress::before {\n  background: #001f3f;\n  color: #ffffff;\n  font-size: .8rem;\n  line-height: .7rem;\n  padding-top: 17%;\n}\n\n.pace-center-atom-navy .pace-activity {\n  border-color: #001f3f;\n}\n\n.pace-center-atom-navy .pace-activity::after, .pace-center-atom-navy .pace-activity::before {\n  border-color: #001f3f;\n}\n\n.pace-center-circle-navy .pace .pace-progress {\n  background: rgba(0, 31, 63, 0.8);\n  color: #ffffff;\n}\n\n.pace-center-radar-navy .pace .pace-activity {\n  border-color: #001f3f transparent transparent;\n}\n\n.pace-center-radar-navy .pace .pace-activity::before {\n  border-color: #001f3f transparent transparent;\n}\n\n.pace-center-simple-navy .pace {\n  background: #ffffff;\n  border-color: #001f3f;\n}\n\n.pace-center-simple-navy .pace .pace-progress {\n  background: #001f3f;\n}\n\n.pace-material-navy .pace {\n  color: #001f3f;\n}\n\n.pace-corner-indicator-navy .pace .pace-activity {\n  background: #001f3f;\n}\n\n.pace-corner-indicator-navy .pace .pace-activity::after,\n.pace-corner-indicator-navy .pace .pace-activity::before  {\n  border: 5px solid #ffffff;\n}\n\n.pace-corner-indicator-navy .pace .pace-activity::before {\n  border-right-color: rgba(0, 31, 63, 0.2);\n  border-left-color: rgba(0, 31, 63, 0.2);\n}\n\n.pace-corner-indicator-navy .pace .pace-activity::after {\n  border-top-color: rgba(0, 31, 63, 0.2);\n  border-bottom-color: rgba(0, 31, 63, 0.2);\n}\n\n.pace-fill-left-navy .pace .pace-progress {\n  background-color: rgba(0, 31, 63, 0.2);\n}\n\n.pace-flash-navy .pace .pace-progress {\n  background: #001f3f;\n}\n\n.pace-flash-navy .pace .pace-progress-inner {\n  box-shadow: 0 0 10px #001f3f, 0 0 5px #001f3f;\n}\n\n.pace-flash-navy .pace .pace-activity {\n  border-top-color: #001f3f;\n  border-left-color: #001f3f;\n}\n\n.pace-loading-bar-navy .pace .pace-progress {\n  background: #001f3f;\n  color: #001f3f;\n  box-shadow: 120px 0 #ffffff, 240px 0 #ffffff;\n}\n\n.pace-loading-bar-navy .pace .pace-activity {\n  box-shadow: inset 0 0 0 2px #001f3f, inset 0 0 0 7px #ffffff;\n}\n\n.pace-mac-osx-navy .pace .pace-progress {\n  background-color: #001f3f;\n  box-shadow: inset -1px 0 #001f3f, inset 0 -1px #001f3f, inset 0 2px rgba(255, 255, 255, 0.5), inset 0 6px rgba(255, 255, 255, 0.3);\n}\n\n.pace-mac-osx-navy .pace .pace-activity {\n  background-image: radial-gradient(rgba(255, 255, 255, 0.65) 0%, rgba(255, 255, 255, 0.15) 100%);\n  height: 12px;\n}\n\n.pace-progress-color-navy .pace-progress {\n  color: #001f3f;\n}\n\n.pace-olive .pace .pace-progress {\n  background: #3d9970;\n}\n\n.pace-barber-shop-olive .pace {\n  background: #ffffff;\n}\n\n.pace-barber-shop-olive .pace .pace-progress {\n  background: #3d9970;\n}\n\n.pace-barber-shop-olive .pace .pace-activity {\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0.2) 75%, transparent 75%, transparent);\n}\n\n.pace-big-counter-olive .pace .pace-progress::after {\n  color: rgba(61, 153, 112, 0.2);\n}\n\n.pace-bounce-olive .pace .pace-activity {\n  background: #3d9970;\n}\n\n.pace-center-atom-olive .pace-progress {\n  height: 100px;\n  width: 80px;\n}\n\n.pace-center-atom-olive .pace-progress::before {\n  background: #3d9970;\n  color: #ffffff;\n  font-size: .8rem;\n  line-height: .7rem;\n  padding-top: 17%;\n}\n\n.pace-center-atom-olive .pace-activity {\n  border-color: #3d9970;\n}\n\n.pace-center-atom-olive .pace-activity::after, .pace-center-atom-olive .pace-activity::before {\n  border-color: #3d9970;\n}\n\n.pace-center-circle-olive .pace .pace-progress {\n  background: rgba(61, 153, 112, 0.8);\n  color: #ffffff;\n}\n\n.pace-center-radar-olive .pace .pace-activity {\n  border-color: #3d9970 transparent transparent;\n}\n\n.pace-center-radar-olive .pace .pace-activity::before {\n  border-color: #3d9970 transparent transparent;\n}\n\n.pace-center-simple-olive .pace {\n  background: #ffffff;\n  border-color: #3d9970;\n}\n\n.pace-center-simple-olive .pace .pace-progress {\n  background: #3d9970;\n}\n\n.pace-material-olive .pace {\n  color: #3d9970;\n}\n\n.pace-corner-indicator-olive .pace .pace-activity {\n  background: #3d9970;\n}\n\n.pace-corner-indicator-olive .pace .pace-activity::after,\n.pace-corner-indicator-olive .pace .pace-activity::before  {\n  border: 5px solid #ffffff;\n}\n\n.pace-corner-indicator-olive .pace .pace-activity::before {\n  border-right-color: rgba(61, 153, 112, 0.2);\n  border-left-color: rgba(61, 153, 112, 0.2);\n}\n\n.pace-corner-indicator-olive .pace .pace-activity::after {\n  border-top-color: rgba(61, 153, 112, 0.2);\n  border-bottom-color: rgba(61, 153, 112, 0.2);\n}\n\n.pace-fill-left-olive .pace .pace-progress {\n  background-color: rgba(61, 153, 112, 0.2);\n}\n\n.pace-flash-olive .pace .pace-progress {\n  background: #3d9970;\n}\n\n.pace-flash-olive .pace .pace-progress-inner {\n  box-shadow: 0 0 10px #3d9970, 0 0 5px #3d9970;\n}\n\n.pace-flash-olive .pace .pace-activity {\n  border-top-color: #3d9970;\n  border-left-color: #3d9970;\n}\n\n.pace-loading-bar-olive .pace .pace-progress {\n  background: #3d9970;\n  color: #3d9970;\n  box-shadow: 120px 0 #ffffff, 240px 0 #ffffff;\n}\n\n.pace-loading-bar-olive .pace .pace-activity {\n  box-shadow: inset 0 0 0 2px #3d9970, inset 0 0 0 7px #ffffff;\n}\n\n.pace-mac-osx-olive .pace .pace-progress {\n  background-color: #3d9970;\n  box-shadow: inset -1px 0 #3d9970, inset 0 -1px #3d9970, inset 0 2px rgba(255, 255, 255, 0.5), inset 0 6px rgba(255, 255, 255, 0.3);\n}\n\n.pace-mac-osx-olive .pace .pace-activity {\n  background-image: radial-gradient(rgba(255, 255, 255, 0.65) 0%, rgba(255, 255, 255, 0.15) 100%);\n  height: 12px;\n}\n\n.pace-progress-color-olive .pace-progress {\n  color: #3d9970;\n}\n\n.pace-lime .pace .pace-progress {\n  background: #01ff70;\n}\n\n.pace-barber-shop-lime .pace {\n  background: #1F2D3D;\n}\n\n.pace-barber-shop-lime .pace .pace-progress {\n  background: #01ff70;\n}\n\n.pace-barber-shop-lime .pace .pace-activity {\n  background-image: linear-gradient(45deg, rgba(31, 45, 61, 0.2) 25%, transparent 25%, transparent 50%, rgba(31, 45, 61, 0.2) 50%, rgba(31, 45, 61, 0.2) 75%, transparent 75%, transparent);\n}\n\n.pace-big-counter-lime .pace .pace-progress::after {\n  color: rgba(1, 255, 112, 0.2);\n}\n\n.pace-bounce-lime .pace .pace-activity {\n  background: #01ff70;\n}\n\n.pace-center-atom-lime .pace-progress {\n  height: 100px;\n  width: 80px;\n}\n\n.pace-center-atom-lime .pace-progress::before {\n  background: #01ff70;\n  color: #1F2D3D;\n  font-size: .8rem;\n  line-height: .7rem;\n  padding-top: 17%;\n}\n\n.pace-center-atom-lime .pace-activity {\n  border-color: #01ff70;\n}\n\n.pace-center-atom-lime .pace-activity::after, .pace-center-atom-lime .pace-activity::before {\n  border-color: #01ff70;\n}\n\n.pace-center-circle-lime .pace .pace-progress {\n  background: rgba(1, 255, 112, 0.8);\n  color: #1F2D3D;\n}\n\n.pace-center-radar-lime .pace .pace-activity {\n  border-color: #01ff70 transparent transparent;\n}\n\n.pace-center-radar-lime .pace .pace-activity::before {\n  border-color: #01ff70 transparent transparent;\n}\n\n.pace-center-simple-lime .pace {\n  background: #1F2D3D;\n  border-color: #01ff70;\n}\n\n.pace-center-simple-lime .pace .pace-progress {\n  background: #01ff70;\n}\n\n.pace-material-lime .pace {\n  color: #01ff70;\n}\n\n.pace-corner-indicator-lime .pace .pace-activity {\n  background: #01ff70;\n}\n\n.pace-corner-indicator-lime .pace .pace-activity::after,\n.pace-corner-indicator-lime .pace .pace-activity::before  {\n  border: 5px solid #1F2D3D;\n}\n\n.pace-corner-indicator-lime .pace .pace-activity::before {\n  border-right-color: rgba(1, 255, 112, 0.2);\n  border-left-color: rgba(1, 255, 112, 0.2);\n}\n\n.pace-corner-indicator-lime .pace .pace-activity::after {\n  border-top-color: rgba(1, 255, 112, 0.2);\n  border-bottom-color: rgba(1, 255, 112, 0.2);\n}\n\n.pace-fill-left-lime .pace .pace-progress {\n  background-color: rgba(1, 255, 112, 0.2);\n}\n\n.pace-flash-lime .pace .pace-progress {\n  background: #01ff70;\n}\n\n.pace-flash-lime .pace .pace-progress-inner {\n  box-shadow: 0 0 10px #01ff70, 0 0 5px #01ff70;\n}\n\n.pace-flash-lime .pace .pace-activity {\n  border-top-color: #01ff70;\n  border-left-color: #01ff70;\n}\n\n.pace-loading-bar-lime .pace .pace-progress {\n  background: #01ff70;\n  color: #01ff70;\n  box-shadow: 120px 0 #1F2D3D, 240px 0 #1F2D3D;\n}\n\n.pace-loading-bar-lime .pace .pace-activity {\n  box-shadow: inset 0 0 0 2px #01ff70, inset 0 0 0 7px #1F2D3D;\n}\n\n.pace-mac-osx-lime .pace .pace-progress {\n  background-color: #01ff70;\n  box-shadow: inset -1px 0 #01ff70, inset 0 -1px #01ff70, inset 0 2px rgba(31, 45, 61, 0.5), inset 0 6px rgba(31, 45, 61, 0.3);\n}\n\n.pace-mac-osx-lime .pace .pace-activity {\n  background-image: radial-gradient(rgba(31, 45, 61, 0.65) 0%, rgba(31, 45, 61, 0.15) 100%);\n  height: 12px;\n}\n\n.pace-progress-color-lime .pace-progress {\n  color: #01ff70;\n}\n\n.pace-fuchsia .pace .pace-progress {\n  background: #f012be;\n}\n\n.pace-barber-shop-fuchsia .pace {\n  background: #ffffff;\n}\n\n.pace-barber-shop-fuchsia .pace .pace-progress {\n  background: #f012be;\n}\n\n.pace-barber-shop-fuchsia .pace .pace-activity {\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0.2) 75%, transparent 75%, transparent);\n}\n\n.pace-big-counter-fuchsia .pace .pace-progress::after {\n  color: rgba(240, 18, 190, 0.2);\n}\n\n.pace-bounce-fuchsia .pace .pace-activity {\n  background: #f012be;\n}\n\n.pace-center-atom-fuchsia .pace-progress {\n  height: 100px;\n  width: 80px;\n}\n\n.pace-center-atom-fuchsia .pace-progress::before {\n  background: #f012be;\n  color: #ffffff;\n  font-size: .8rem;\n  line-height: .7rem;\n  padding-top: 17%;\n}\n\n.pace-center-atom-fuchsia .pace-activity {\n  border-color: #f012be;\n}\n\n.pace-center-atom-fuchsia .pace-activity::after, .pace-center-atom-fuchsia .pace-activity::before {\n  border-color: #f012be;\n}\n\n.pace-center-circle-fuchsia .pace .pace-progress {\n  background: rgba(240, 18, 190, 0.8);\n  color: #ffffff;\n}\n\n.pace-center-radar-fuchsia .pace .pace-activity {\n  border-color: #f012be transparent transparent;\n}\n\n.pace-center-radar-fuchsia .pace .pace-activity::before {\n  border-color: #f012be transparent transparent;\n}\n\n.pace-center-simple-fuchsia .pace {\n  background: #ffffff;\n  border-color: #f012be;\n}\n\n.pace-center-simple-fuchsia .pace .pace-progress {\n  background: #f012be;\n}\n\n.pace-material-fuchsia .pace {\n  color: #f012be;\n}\n\n.pace-corner-indicator-fuchsia .pace .pace-activity {\n  background: #f012be;\n}\n\n.pace-corner-indicator-fuchsia .pace .pace-activity::after,\n.pace-corner-indicator-fuchsia .pace .pace-activity::before  {\n  border: 5px solid #ffffff;\n}\n\n.pace-corner-indicator-fuchsia .pace .pace-activity::before {\n  border-right-color: rgba(240, 18, 190, 0.2);\n  border-left-color: rgba(240, 18, 190, 0.2);\n}\n\n.pace-corner-indicator-fuchsia .pace .pace-activity::after {\n  border-top-color: rgba(240, 18, 190, 0.2);\n  border-bottom-color: rgba(240, 18, 190, 0.2);\n}\n\n.pace-fill-left-fuchsia .pace .pace-progress {\n  background-color: rgba(240, 18, 190, 0.2);\n}\n\n.pace-flash-fuchsia .pace .pace-progress {\n  background: #f012be;\n}\n\n.pace-flash-fuchsia .pace .pace-progress-inner {\n  box-shadow: 0 0 10px #f012be, 0 0 5px #f012be;\n}\n\n.pace-flash-fuchsia .pace .pace-activity {\n  border-top-color: #f012be;\n  border-left-color: #f012be;\n}\n\n.pace-loading-bar-fuchsia .pace .pace-progress {\n  background: #f012be;\n  color: #f012be;\n  box-shadow: 120px 0 #ffffff, 240px 0 #ffffff;\n}\n\n.pace-loading-bar-fuchsia .pace .pace-activity {\n  box-shadow: inset 0 0 0 2px #f012be, inset 0 0 0 7px #ffffff;\n}\n\n.pace-mac-osx-fuchsia .pace .pace-progress {\n  background-color: #f012be;\n  box-shadow: inset -1px 0 #f012be, inset 0 -1px #f012be, inset 0 2px rgba(255, 255, 255, 0.5), inset 0 6px rgba(255, 255, 255, 0.3);\n}\n\n.pace-mac-osx-fuchsia .pace .pace-activity {\n  background-image: radial-gradient(rgba(255, 255, 255, 0.65) 0%, rgba(255, 255, 255, 0.15) 100%);\n  height: 12px;\n}\n\n.pace-progress-color-fuchsia .pace-progress {\n  color: #f012be;\n}\n\n.pace-maroon .pace .pace-progress {\n  background: #d81b60;\n}\n\n.pace-barber-shop-maroon .pace {\n  background: #ffffff;\n}\n\n.pace-barber-shop-maroon .pace .pace-progress {\n  background: #d81b60;\n}\n\n.pace-barber-shop-maroon .pace .pace-activity {\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0.2) 75%, transparent 75%, transparent);\n}\n\n.pace-big-counter-maroon .pace .pace-progress::after {\n  color: rgba(216, 27, 96, 0.2);\n}\n\n.pace-bounce-maroon .pace .pace-activity {\n  background: #d81b60;\n}\n\n.pace-center-atom-maroon .pace-progress {\n  height: 100px;\n  width: 80px;\n}\n\n.pace-center-atom-maroon .pace-progress::before {\n  background: #d81b60;\n  color: #ffffff;\n  font-size: .8rem;\n  line-height: .7rem;\n  padding-top: 17%;\n}\n\n.pace-center-atom-maroon .pace-activity {\n  border-color: #d81b60;\n}\n\n.pace-center-atom-maroon .pace-activity::after, .pace-center-atom-maroon .pace-activity::before {\n  border-color: #d81b60;\n}\n\n.pace-center-circle-maroon .pace .pace-progress {\n  background: rgba(216, 27, 96, 0.8);\n  color: #ffffff;\n}\n\n.pace-center-radar-maroon .pace .pace-activity {\n  border-color: #d81b60 transparent transparent;\n}\n\n.pace-center-radar-maroon .pace .pace-activity::before {\n  border-color: #d81b60 transparent transparent;\n}\n\n.pace-center-simple-maroon .pace {\n  background: #ffffff;\n  border-color: #d81b60;\n}\n\n.pace-center-simple-maroon .pace .pace-progress {\n  background: #d81b60;\n}\n\n.pace-material-maroon .pace {\n  color: #d81b60;\n}\n\n.pace-corner-indicator-maroon .pace .pace-activity {\n  background: #d81b60;\n}\n\n.pace-corner-indicator-maroon .pace .pace-activity::after,\n.pace-corner-indicator-maroon .pace .pace-activity::before  {\n  border: 5px solid #ffffff;\n}\n\n.pace-corner-indicator-maroon .pace .pace-activity::before {\n  border-right-color: rgba(216, 27, 96, 0.2);\n  border-left-color: rgba(216, 27, 96, 0.2);\n}\n\n.pace-corner-indicator-maroon .pace .pace-activity::after {\n  border-top-color: rgba(216, 27, 96, 0.2);\n  border-bottom-color: rgba(216, 27, 96, 0.2);\n}\n\n.pace-fill-left-maroon .pace .pace-progress {\n  background-color: rgba(216, 27, 96, 0.2);\n}\n\n.pace-flash-maroon .pace .pace-progress {\n  background: #d81b60;\n}\n\n.pace-flash-maroon .pace .pace-progress-inner {\n  box-shadow: 0 0 10px #d81b60, 0 0 5px #d81b60;\n}\n\n.pace-flash-maroon .pace .pace-activity {\n  border-top-color: #d81b60;\n  border-left-color: #d81b60;\n}\n\n.pace-loading-bar-maroon .pace .pace-progress {\n  background: #d81b60;\n  color: #d81b60;\n  box-shadow: 120px 0 #ffffff, 240px 0 #ffffff;\n}\n\n.pace-loading-bar-maroon .pace .pace-activity {\n  box-shadow: inset 0 0 0 2px #d81b60, inset 0 0 0 7px #ffffff;\n}\n\n.pace-mac-osx-maroon .pace .pace-progress {\n  background-color: #d81b60;\n  box-shadow: inset -1px 0 #d81b60, inset 0 -1px #d81b60, inset 0 2px rgba(255, 255, 255, 0.5), inset 0 6px rgba(255, 255, 255, 0.3);\n}\n\n.pace-mac-osx-maroon .pace .pace-activity {\n  background-image: radial-gradient(rgba(255, 255, 255, 0.65) 0%, rgba(255, 255, 255, 0.15) 100%);\n  height: 12px;\n}\n\n.pace-progress-color-maroon .pace-progress {\n  color: #d81b60;\n}\n\n.pace-blue .pace .pace-progress {\n  background: #007bff;\n}\n\n.pace-barber-shop-blue .pace {\n  background: #ffffff;\n}\n\n.pace-barber-shop-blue .pace .pace-progress {\n  background: #007bff;\n}\n\n.pace-barber-shop-blue .pace .pace-activity {\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0.2) 75%, transparent 75%, transparent);\n}\n\n.pace-big-counter-blue .pace .pace-progress::after {\n  color: rgba(0, 123, 255, 0.2);\n}\n\n.pace-bounce-blue .pace .pace-activity {\n  background: #007bff;\n}\n\n.pace-center-atom-blue .pace-progress {\n  height: 100px;\n  width: 80px;\n}\n\n.pace-center-atom-blue .pace-progress::before {\n  background: #007bff;\n  color: #ffffff;\n  font-size: .8rem;\n  line-height: .7rem;\n  padding-top: 17%;\n}\n\n.pace-center-atom-blue .pace-activity {\n  border-color: #007bff;\n}\n\n.pace-center-atom-blue .pace-activity::after, .pace-center-atom-blue .pace-activity::before {\n  border-color: #007bff;\n}\n\n.pace-center-circle-blue .pace .pace-progress {\n  background: rgba(0, 123, 255, 0.8);\n  color: #ffffff;\n}\n\n.pace-center-radar-blue .pace .pace-activity {\n  border-color: #007bff transparent transparent;\n}\n\n.pace-center-radar-blue .pace .pace-activity::before {\n  border-color: #007bff transparent transparent;\n}\n\n.pace-center-simple-blue .pace {\n  background: #ffffff;\n  border-color: #007bff;\n}\n\n.pace-center-simple-blue .pace .pace-progress {\n  background: #007bff;\n}\n\n.pace-material-blue .pace {\n  color: #007bff;\n}\n\n.pace-corner-indicator-blue .pace .pace-activity {\n  background: #007bff;\n}\n\n.pace-corner-indicator-blue .pace .pace-activity::after,\n.pace-corner-indicator-blue .pace .pace-activity::before  {\n  border: 5px solid #ffffff;\n}\n\n.pace-corner-indicator-blue .pace .pace-activity::before {\n  border-right-color: rgba(0, 123, 255, 0.2);\n  border-left-color: rgba(0, 123, 255, 0.2);\n}\n\n.pace-corner-indicator-blue .pace .pace-activity::after {\n  border-top-color: rgba(0, 123, 255, 0.2);\n  border-bottom-color: rgba(0, 123, 255, 0.2);\n}\n\n.pace-fill-left-blue .pace .pace-progress {\n  background-color: rgba(0, 123, 255, 0.2);\n}\n\n.pace-flash-blue .pace .pace-progress {\n  background: #007bff;\n}\n\n.pace-flash-blue .pace .pace-progress-inner {\n  box-shadow: 0 0 10px #007bff, 0 0 5px #007bff;\n}\n\n.pace-flash-blue .pace .pace-activity {\n  border-top-color: #007bff;\n  border-left-color: #007bff;\n}\n\n.pace-loading-bar-blue .pace .pace-progress {\n  background: #007bff;\n  color: #007bff;\n  box-shadow: 120px 0 #ffffff, 240px 0 #ffffff;\n}\n\n.pace-loading-bar-blue .pace .pace-activity {\n  box-shadow: inset 0 0 0 2px #007bff, inset 0 0 0 7px #ffffff;\n}\n\n.pace-mac-osx-blue .pace .pace-progress {\n  background-color: #007bff;\n  box-shadow: inset -1px 0 #007bff, inset 0 -1px #007bff, inset 0 2px rgba(255, 255, 255, 0.5), inset 0 6px rgba(255, 255, 255, 0.3);\n}\n\n.pace-mac-osx-blue .pace .pace-activity {\n  background-image: radial-gradient(rgba(255, 255, 255, 0.65) 0%, rgba(255, 255, 255, 0.15) 100%);\n  height: 12px;\n}\n\n.pace-progress-color-blue .pace-progress {\n  color: #007bff;\n}\n\n.pace-indigo .pace .pace-progress {\n  background: #6610f2;\n}\n\n.pace-barber-shop-indigo .pace {\n  background: #ffffff;\n}\n\n.pace-barber-shop-indigo .pace .pace-progress {\n  background: #6610f2;\n}\n\n.pace-barber-shop-indigo .pace .pace-activity {\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0.2) 75%, transparent 75%, transparent);\n}\n\n.pace-big-counter-indigo .pace .pace-progress::after {\n  color: rgba(102, 16, 242, 0.2);\n}\n\n.pace-bounce-indigo .pace .pace-activity {\n  background: #6610f2;\n}\n\n.pace-center-atom-indigo .pace-progress {\n  height: 100px;\n  width: 80px;\n}\n\n.pace-center-atom-indigo .pace-progress::before {\n  background: #6610f2;\n  color: #ffffff;\n  font-size: .8rem;\n  line-height: .7rem;\n  padding-top: 17%;\n}\n\n.pace-center-atom-indigo .pace-activity {\n  border-color: #6610f2;\n}\n\n.pace-center-atom-indigo .pace-activity::after, .pace-center-atom-indigo .pace-activity::before {\n  border-color: #6610f2;\n}\n\n.pace-center-circle-indigo .pace .pace-progress {\n  background: rgba(102, 16, 242, 0.8);\n  color: #ffffff;\n}\n\n.pace-center-radar-indigo .pace .pace-activity {\n  border-color: #6610f2 transparent transparent;\n}\n\n.pace-center-radar-indigo .pace .pace-activity::before {\n  border-color: #6610f2 transparent transparent;\n}\n\n.pace-center-simple-indigo .pace {\n  background: #ffffff;\n  border-color: #6610f2;\n}\n\n.pace-center-simple-indigo .pace .pace-progress {\n  background: #6610f2;\n}\n\n.pace-material-indigo .pace {\n  color: #6610f2;\n}\n\n.pace-corner-indicator-indigo .pace .pace-activity {\n  background: #6610f2;\n}\n\n.pace-corner-indicator-indigo .pace .pace-activity::after,\n.pace-corner-indicator-indigo .pace .pace-activity::before  {\n  border: 5px solid #ffffff;\n}\n\n.pace-corner-indicator-indigo .pace .pace-activity::before {\n  border-right-color: rgba(102, 16, 242, 0.2);\n  border-left-color: rgba(102, 16, 242, 0.2);\n}\n\n.pace-corner-indicator-indigo .pace .pace-activity::after {\n  border-top-color: rgba(102, 16, 242, 0.2);\n  border-bottom-color: rgba(102, 16, 242, 0.2);\n}\n\n.pace-fill-left-indigo .pace .pace-progress {\n  background-color: rgba(102, 16, 242, 0.2);\n}\n\n.pace-flash-indigo .pace .pace-progress {\n  background: #6610f2;\n}\n\n.pace-flash-indigo .pace .pace-progress-inner {\n  box-shadow: 0 0 10px #6610f2, 0 0 5px #6610f2;\n}\n\n.pace-flash-indigo .pace .pace-activity {\n  border-top-color: #6610f2;\n  border-left-color: #6610f2;\n}\n\n.pace-loading-bar-indigo .pace .pace-progress {\n  background: #6610f2;\n  color: #6610f2;\n  box-shadow: 120px 0 #ffffff, 240px 0 #ffffff;\n}\n\n.pace-loading-bar-indigo .pace .pace-activity {\n  box-shadow: inset 0 0 0 2px #6610f2, inset 0 0 0 7px #ffffff;\n}\n\n.pace-mac-osx-indigo .pace .pace-progress {\n  background-color: #6610f2;\n  box-shadow: inset -1px 0 #6610f2, inset 0 -1px #6610f2, inset 0 2px rgba(255, 255, 255, 0.5), inset 0 6px rgba(255, 255, 255, 0.3);\n}\n\n.pace-mac-osx-indigo .pace .pace-activity {\n  background-image: radial-gradient(rgba(255, 255, 255, 0.65) 0%, rgba(255, 255, 255, 0.15) 100%);\n  height: 12px;\n}\n\n.pace-progress-color-indigo .pace-progress {\n  color: #6610f2;\n}\n\n.pace-purple .pace .pace-progress {\n  background: #6f42c1;\n}\n\n.pace-barber-shop-purple .pace {\n  background: #ffffff;\n}\n\n.pace-barber-shop-purple .pace .pace-progress {\n  background: #6f42c1;\n}\n\n.pace-barber-shop-purple .pace .pace-activity {\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0.2) 75%, transparent 75%, transparent);\n}\n\n.pace-big-counter-purple .pace .pace-progress::after {\n  color: rgba(111, 66, 193, 0.2);\n}\n\n.pace-bounce-purple .pace .pace-activity {\n  background: #6f42c1;\n}\n\n.pace-center-atom-purple .pace-progress {\n  height: 100px;\n  width: 80px;\n}\n\n.pace-center-atom-purple .pace-progress::before {\n  background: #6f42c1;\n  color: #ffffff;\n  font-size: .8rem;\n  line-height: .7rem;\n  padding-top: 17%;\n}\n\n.pace-center-atom-purple .pace-activity {\n  border-color: #6f42c1;\n}\n\n.pace-center-atom-purple .pace-activity::after, .pace-center-atom-purple .pace-activity::before {\n  border-color: #6f42c1;\n}\n\n.pace-center-circle-purple .pace .pace-progress {\n  background: rgba(111, 66, 193, 0.8);\n  color: #ffffff;\n}\n\n.pace-center-radar-purple .pace .pace-activity {\n  border-color: #6f42c1 transparent transparent;\n}\n\n.pace-center-radar-purple .pace .pace-activity::before {\n  border-color: #6f42c1 transparent transparent;\n}\n\n.pace-center-simple-purple .pace {\n  background: #ffffff;\n  border-color: #6f42c1;\n}\n\n.pace-center-simple-purple .pace .pace-progress {\n  background: #6f42c1;\n}\n\n.pace-material-purple .pace {\n  color: #6f42c1;\n}\n\n.pace-corner-indicator-purple .pace .pace-activity {\n  background: #6f42c1;\n}\n\n.pace-corner-indicator-purple .pace .pace-activity::after,\n.pace-corner-indicator-purple .pace .pace-activity::before  {\n  border: 5px solid #ffffff;\n}\n\n.pace-corner-indicator-purple .pace .pace-activity::before {\n  border-right-color: rgba(111, 66, 193, 0.2);\n  border-left-color: rgba(111, 66, 193, 0.2);\n}\n\n.pace-corner-indicator-purple .pace .pace-activity::after {\n  border-top-color: rgba(111, 66, 193, 0.2);\n  border-bottom-color: rgba(111, 66, 193, 0.2);\n}\n\n.pace-fill-left-purple .pace .pace-progress {\n  background-color: rgba(111, 66, 193, 0.2);\n}\n\n.pace-flash-purple .pace .pace-progress {\n  background: #6f42c1;\n}\n\n.pace-flash-purple .pace .pace-progress-inner {\n  box-shadow: 0 0 10px #6f42c1, 0 0 5px #6f42c1;\n}\n\n.pace-flash-purple .pace .pace-activity {\n  border-top-color: #6f42c1;\n  border-left-color: #6f42c1;\n}\n\n.pace-loading-bar-purple .pace .pace-progress {\n  background: #6f42c1;\n  color: #6f42c1;\n  box-shadow: 120px 0 #ffffff, 240px 0 #ffffff;\n}\n\n.pace-loading-bar-purple .pace .pace-activity {\n  box-shadow: inset 0 0 0 2px #6f42c1, inset 0 0 0 7px #ffffff;\n}\n\n.pace-mac-osx-purple .pace .pace-progress {\n  background-color: #6f42c1;\n  box-shadow: inset -1px 0 #6f42c1, inset 0 -1px #6f42c1, inset 0 2px rgba(255, 255, 255, 0.5), inset 0 6px rgba(255, 255, 255, 0.3);\n}\n\n.pace-mac-osx-purple .pace .pace-activity {\n  background-image: radial-gradient(rgba(255, 255, 255, 0.65) 0%, rgba(255, 255, 255, 0.15) 100%);\n  height: 12px;\n}\n\n.pace-progress-color-purple .pace-progress {\n  color: #6f42c1;\n}\n\n.pace-pink .pace .pace-progress {\n  background: #e83e8c;\n}\n\n.pace-barber-shop-pink .pace {\n  background: #ffffff;\n}\n\n.pace-barber-shop-pink .pace .pace-progress {\n  background: #e83e8c;\n}\n\n.pace-barber-shop-pink .pace .pace-activity {\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0.2) 75%, transparent 75%, transparent);\n}\n\n.pace-big-counter-pink .pace .pace-progress::after {\n  color: rgba(232, 62, 140, 0.2);\n}\n\n.pace-bounce-pink .pace .pace-activity {\n  background: #e83e8c;\n}\n\n.pace-center-atom-pink .pace-progress {\n  height: 100px;\n  width: 80px;\n}\n\n.pace-center-atom-pink .pace-progress::before {\n  background: #e83e8c;\n  color: #ffffff;\n  font-size: .8rem;\n  line-height: .7rem;\n  padding-top: 17%;\n}\n\n.pace-center-atom-pink .pace-activity {\n  border-color: #e83e8c;\n}\n\n.pace-center-atom-pink .pace-activity::after, .pace-center-atom-pink .pace-activity::before {\n  border-color: #e83e8c;\n}\n\n.pace-center-circle-pink .pace .pace-progress {\n  background: rgba(232, 62, 140, 0.8);\n  color: #ffffff;\n}\n\n.pace-center-radar-pink .pace .pace-activity {\n  border-color: #e83e8c transparent transparent;\n}\n\n.pace-center-radar-pink .pace .pace-activity::before {\n  border-color: #e83e8c transparent transparent;\n}\n\n.pace-center-simple-pink .pace {\n  background: #ffffff;\n  border-color: #e83e8c;\n}\n\n.pace-center-simple-pink .pace .pace-progress {\n  background: #e83e8c;\n}\n\n.pace-material-pink .pace {\n  color: #e83e8c;\n}\n\n.pace-corner-indicator-pink .pace .pace-activity {\n  background: #e83e8c;\n}\n\n.pace-corner-indicator-pink .pace .pace-activity::after,\n.pace-corner-indicator-pink .pace .pace-activity::before  {\n  border: 5px solid #ffffff;\n}\n\n.pace-corner-indicator-pink .pace .pace-activity::before {\n  border-right-color: rgba(232, 62, 140, 0.2);\n  border-left-color: rgba(232, 62, 140, 0.2);\n}\n\n.pace-corner-indicator-pink .pace .pace-activity::after {\n  border-top-color: rgba(232, 62, 140, 0.2);\n  border-bottom-color: rgba(232, 62, 140, 0.2);\n}\n\n.pace-fill-left-pink .pace .pace-progress {\n  background-color: rgba(232, 62, 140, 0.2);\n}\n\n.pace-flash-pink .pace .pace-progress {\n  background: #e83e8c;\n}\n\n.pace-flash-pink .pace .pace-progress-inner {\n  box-shadow: 0 0 10px #e83e8c, 0 0 5px #e83e8c;\n}\n\n.pace-flash-pink .pace .pace-activity {\n  border-top-color: #e83e8c;\n  border-left-color: #e83e8c;\n}\n\n.pace-loading-bar-pink .pace .pace-progress {\n  background: #e83e8c;\n  color: #e83e8c;\n  box-shadow: 120px 0 #ffffff, 240px 0 #ffffff;\n}\n\n.pace-loading-bar-pink .pace .pace-activity {\n  box-shadow: inset 0 0 0 2px #e83e8c, inset 0 0 0 7px #ffffff;\n}\n\n.pace-mac-osx-pink .pace .pace-progress {\n  background-color: #e83e8c;\n  box-shadow: inset -1px 0 #e83e8c, inset 0 -1px #e83e8c, inset 0 2px rgba(255, 255, 255, 0.5), inset 0 6px rgba(255, 255, 255, 0.3);\n}\n\n.pace-mac-osx-pink .pace .pace-activity {\n  background-image: radial-gradient(rgba(255, 255, 255, 0.65) 0%, rgba(255, 255, 255, 0.15) 100%);\n  height: 12px;\n}\n\n.pace-progress-color-pink .pace-progress {\n  color: #e83e8c;\n}\n\n.pace-red .pace .pace-progress {\n  background: #dc3545;\n}\n\n.pace-barber-shop-red .pace {\n  background: #ffffff;\n}\n\n.pace-barber-shop-red .pace .pace-progress {\n  background: #dc3545;\n}\n\n.pace-barber-shop-red .pace .pace-activity {\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0.2) 75%, transparent 75%, transparent);\n}\n\n.pace-big-counter-red .pace .pace-progress::after {\n  color: rgba(220, 53, 69, 0.2);\n}\n\n.pace-bounce-red .pace .pace-activity {\n  background: #dc3545;\n}\n\n.pace-center-atom-red .pace-progress {\n  height: 100px;\n  width: 80px;\n}\n\n.pace-center-atom-red .pace-progress::before {\n  background: #dc3545;\n  color: #ffffff;\n  font-size: .8rem;\n  line-height: .7rem;\n  padding-top: 17%;\n}\n\n.pace-center-atom-red .pace-activity {\n  border-color: #dc3545;\n}\n\n.pace-center-atom-red .pace-activity::after, .pace-center-atom-red .pace-activity::before {\n  border-color: #dc3545;\n}\n\n.pace-center-circle-red .pace .pace-progress {\n  background: rgba(220, 53, 69, 0.8);\n  color: #ffffff;\n}\n\n.pace-center-radar-red .pace .pace-activity {\n  border-color: #dc3545 transparent transparent;\n}\n\n.pace-center-radar-red .pace .pace-activity::before {\n  border-color: #dc3545 transparent transparent;\n}\n\n.pace-center-simple-red .pace {\n  background: #ffffff;\n  border-color: #dc3545;\n}\n\n.pace-center-simple-red .pace .pace-progress {\n  background: #dc3545;\n}\n\n.pace-material-red .pace {\n  color: #dc3545;\n}\n\n.pace-corner-indicator-red .pace .pace-activity {\n  background: #dc3545;\n}\n\n.pace-corner-indicator-red .pace .pace-activity::after,\n.pace-corner-indicator-red .pace .pace-activity::before  {\n  border: 5px solid #ffffff;\n}\n\n.pace-corner-indicator-red .pace .pace-activity::before {\n  border-right-color: rgba(220, 53, 69, 0.2);\n  border-left-color: rgba(220, 53, 69, 0.2);\n}\n\n.pace-corner-indicator-red .pace .pace-activity::after {\n  border-top-color: rgba(220, 53, 69, 0.2);\n  border-bottom-color: rgba(220, 53, 69, 0.2);\n}\n\n.pace-fill-left-red .pace .pace-progress {\n  background-color: rgba(220, 53, 69, 0.2);\n}\n\n.pace-flash-red .pace .pace-progress {\n  background: #dc3545;\n}\n\n.pace-flash-red .pace .pace-progress-inner {\n  box-shadow: 0 0 10px #dc3545, 0 0 5px #dc3545;\n}\n\n.pace-flash-red .pace .pace-activity {\n  border-top-color: #dc3545;\n  border-left-color: #dc3545;\n}\n\n.pace-loading-bar-red .pace .pace-progress {\n  background: #dc3545;\n  color: #dc3545;\n  box-shadow: 120px 0 #ffffff, 240px 0 #ffffff;\n}\n\n.pace-loading-bar-red .pace .pace-activity {\n  box-shadow: inset 0 0 0 2px #dc3545, inset 0 0 0 7px #ffffff;\n}\n\n.pace-mac-osx-red .pace .pace-progress {\n  background-color: #dc3545;\n  box-shadow: inset -1px 0 #dc3545, inset 0 -1px #dc3545, inset 0 2px rgba(255, 255, 255, 0.5), inset 0 6px rgba(255, 255, 255, 0.3);\n}\n\n.pace-mac-osx-red .pace .pace-activity {\n  background-image: radial-gradient(rgba(255, 255, 255, 0.65) 0%, rgba(255, 255, 255, 0.15) 100%);\n  height: 12px;\n}\n\n.pace-progress-color-red .pace-progress {\n  color: #dc3545;\n}\n\n.pace-orange .pace .pace-progress {\n  background: #fd7e14;\n}\n\n.pace-barber-shop-orange .pace {\n  background: #1F2D3D;\n}\n\n.pace-barber-shop-orange .pace .pace-progress {\n  background: #fd7e14;\n}\n\n.pace-barber-shop-orange .pace .pace-activity {\n  background-image: linear-gradient(45deg, rgba(31, 45, 61, 0.2) 25%, transparent 25%, transparent 50%, rgba(31, 45, 61, 0.2) 50%, rgba(31, 45, 61, 0.2) 75%, transparent 75%, transparent);\n}\n\n.pace-big-counter-orange .pace .pace-progress::after {\n  color: rgba(253, 126, 20, 0.2);\n}\n\n.pace-bounce-orange .pace .pace-activity {\n  background: #fd7e14;\n}\n\n.pace-center-atom-orange .pace-progress {\n  height: 100px;\n  width: 80px;\n}\n\n.pace-center-atom-orange .pace-progress::before {\n  background: #fd7e14;\n  color: #1F2D3D;\n  font-size: .8rem;\n  line-height: .7rem;\n  padding-top: 17%;\n}\n\n.pace-center-atom-orange .pace-activity {\n  border-color: #fd7e14;\n}\n\n.pace-center-atom-orange .pace-activity::after, .pace-center-atom-orange .pace-activity::before {\n  border-color: #fd7e14;\n}\n\n.pace-center-circle-orange .pace .pace-progress {\n  background: rgba(253, 126, 20, 0.8);\n  color: #1F2D3D;\n}\n\n.pace-center-radar-orange .pace .pace-activity {\n  border-color: #fd7e14 transparent transparent;\n}\n\n.pace-center-radar-orange .pace .pace-activity::before {\n  border-color: #fd7e14 transparent transparent;\n}\n\n.pace-center-simple-orange .pace {\n  background: #1F2D3D;\n  border-color: #fd7e14;\n}\n\n.pace-center-simple-orange .pace .pace-progress {\n  background: #fd7e14;\n}\n\n.pace-material-orange .pace {\n  color: #fd7e14;\n}\n\n.pace-corner-indicator-orange .pace .pace-activity {\n  background: #fd7e14;\n}\n\n.pace-corner-indicator-orange .pace .pace-activity::after,\n.pace-corner-indicator-orange .pace .pace-activity::before  {\n  border: 5px solid #1F2D3D;\n}\n\n.pace-corner-indicator-orange .pace .pace-activity::before {\n  border-right-color: rgba(253, 126, 20, 0.2);\n  border-left-color: rgba(253, 126, 20, 0.2);\n}\n\n.pace-corner-indicator-orange .pace .pace-activity::after {\n  border-top-color: rgba(253, 126, 20, 0.2);\n  border-bottom-color: rgba(253, 126, 20, 0.2);\n}\n\n.pace-fill-left-orange .pace .pace-progress {\n  background-color: rgba(253, 126, 20, 0.2);\n}\n\n.pace-flash-orange .pace .pace-progress {\n  background: #fd7e14;\n}\n\n.pace-flash-orange .pace .pace-progress-inner {\n  box-shadow: 0 0 10px #fd7e14, 0 0 5px #fd7e14;\n}\n\n.pace-flash-orange .pace .pace-activity {\n  border-top-color: #fd7e14;\n  border-left-color: #fd7e14;\n}\n\n.pace-loading-bar-orange .pace .pace-progress {\n  background: #fd7e14;\n  color: #fd7e14;\n  box-shadow: 120px 0 #1F2D3D, 240px 0 #1F2D3D;\n}\n\n.pace-loading-bar-orange .pace .pace-activity {\n  box-shadow: inset 0 0 0 2px #fd7e14, inset 0 0 0 7px #1F2D3D;\n}\n\n.pace-mac-osx-orange .pace .pace-progress {\n  background-color: #fd7e14;\n  box-shadow: inset -1px 0 #fd7e14, inset 0 -1px #fd7e14, inset 0 2px rgba(31, 45, 61, 0.5), inset 0 6px rgba(31, 45, 61, 0.3);\n}\n\n.pace-mac-osx-orange .pace .pace-activity {\n  background-image: radial-gradient(rgba(31, 45, 61, 0.65) 0%, rgba(31, 45, 61, 0.15) 100%);\n  height: 12px;\n}\n\n.pace-progress-color-orange .pace-progress {\n  color: #fd7e14;\n}\n\n.pace-yellow .pace .pace-progress {\n  background: #ffc107;\n}\n\n.pace-barber-shop-yellow .pace {\n  background: #1F2D3D;\n}\n\n.pace-barber-shop-yellow .pace .pace-progress {\n  background: #ffc107;\n}\n\n.pace-barber-shop-yellow .pace .pace-activity {\n  background-image: linear-gradient(45deg, rgba(31, 45, 61, 0.2) 25%, transparent 25%, transparent 50%, rgba(31, 45, 61, 0.2) 50%, rgba(31, 45, 61, 0.2) 75%, transparent 75%, transparent);\n}\n\n.pace-big-counter-yellow .pace .pace-progress::after {\n  color: rgba(255, 193, 7, 0.2);\n}\n\n.pace-bounce-yellow .pace .pace-activity {\n  background: #ffc107;\n}\n\n.pace-center-atom-yellow .pace-progress {\n  height: 100px;\n  width: 80px;\n}\n\n.pace-center-atom-yellow .pace-progress::before {\n  background: #ffc107;\n  color: #1F2D3D;\n  font-size: .8rem;\n  line-height: .7rem;\n  padding-top: 17%;\n}\n\n.pace-center-atom-yellow .pace-activity {\n  border-color: #ffc107;\n}\n\n.pace-center-atom-yellow .pace-activity::after, .pace-center-atom-yellow .pace-activity::before {\n  border-color: #ffc107;\n}\n\n.pace-center-circle-yellow .pace .pace-progress {\n  background: rgba(255, 193, 7, 0.8);\n  color: #1F2D3D;\n}\n\n.pace-center-radar-yellow .pace .pace-activity {\n  border-color: #ffc107 transparent transparent;\n}\n\n.pace-center-radar-yellow .pace .pace-activity::before {\n  border-color: #ffc107 transparent transparent;\n}\n\n.pace-center-simple-yellow .pace {\n  background: #1F2D3D;\n  border-color: #ffc107;\n}\n\n.pace-center-simple-yellow .pace .pace-progress {\n  background: #ffc107;\n}\n\n.pace-material-yellow .pace {\n  color: #ffc107;\n}\n\n.pace-corner-indicator-yellow .pace .pace-activity {\n  background: #ffc107;\n}\n\n.pace-corner-indicator-yellow .pace .pace-activity::after,\n.pace-corner-indicator-yellow .pace .pace-activity::before  {\n  border: 5px solid #1F2D3D;\n}\n\n.pace-corner-indicator-yellow .pace .pace-activity::before {\n  border-right-color: rgba(255, 193, 7, 0.2);\n  border-left-color: rgba(255, 193, 7, 0.2);\n}\n\n.pace-corner-indicator-yellow .pace .pace-activity::after {\n  border-top-color: rgba(255, 193, 7, 0.2);\n  border-bottom-color: rgba(255, 193, 7, 0.2);\n}\n\n.pace-fill-left-yellow .pace .pace-progress {\n  background-color: rgba(255, 193, 7, 0.2);\n}\n\n.pace-flash-yellow .pace .pace-progress {\n  background: #ffc107;\n}\n\n.pace-flash-yellow .pace .pace-progress-inner {\n  box-shadow: 0 0 10px #ffc107, 0 0 5px #ffc107;\n}\n\n.pace-flash-yellow .pace .pace-activity {\n  border-top-color: #ffc107;\n  border-left-color: #ffc107;\n}\n\n.pace-loading-bar-yellow .pace .pace-progress {\n  background: #ffc107;\n  color: #ffc107;\n  box-shadow: 120px 0 #1F2D3D, 240px 0 #1F2D3D;\n}\n\n.pace-loading-bar-yellow .pace .pace-activity {\n  box-shadow: inset 0 0 0 2px #ffc107, inset 0 0 0 7px #1F2D3D;\n}\n\n.pace-mac-osx-yellow .pace .pace-progress {\n  background-color: #ffc107;\n  box-shadow: inset -1px 0 #ffc107, inset 0 -1px #ffc107, inset 0 2px rgba(31, 45, 61, 0.5), inset 0 6px rgba(31, 45, 61, 0.3);\n}\n\n.pace-mac-osx-yellow .pace .pace-activity {\n  background-image: radial-gradient(rgba(31, 45, 61, 0.65) 0%, rgba(31, 45, 61, 0.15) 100%);\n  height: 12px;\n}\n\n.pace-progress-color-yellow .pace-progress {\n  color: #ffc107;\n}\n\n.pace-green .pace .pace-progress {\n  background: #28a745;\n}\n\n.pace-barber-shop-green .pace {\n  background: #ffffff;\n}\n\n.pace-barber-shop-green .pace .pace-progress {\n  background: #28a745;\n}\n\n.pace-barber-shop-green .pace .pace-activity {\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0.2) 75%, transparent 75%, transparent);\n}\n\n.pace-big-counter-green .pace .pace-progress::after {\n  color: rgba(40, 167, 69, 0.2);\n}\n\n.pace-bounce-green .pace .pace-activity {\n  background: #28a745;\n}\n\n.pace-center-atom-green .pace-progress {\n  height: 100px;\n  width: 80px;\n}\n\n.pace-center-atom-green .pace-progress::before {\n  background: #28a745;\n  color: #ffffff;\n  font-size: .8rem;\n  line-height: .7rem;\n  padding-top: 17%;\n}\n\n.pace-center-atom-green .pace-activity {\n  border-color: #28a745;\n}\n\n.pace-center-atom-green .pace-activity::after, .pace-center-atom-green .pace-activity::before {\n  border-color: #28a745;\n}\n\n.pace-center-circle-green .pace .pace-progress {\n  background: rgba(40, 167, 69, 0.8);\n  color: #ffffff;\n}\n\n.pace-center-radar-green .pace .pace-activity {\n  border-color: #28a745 transparent transparent;\n}\n\n.pace-center-radar-green .pace .pace-activity::before {\n  border-color: #28a745 transparent transparent;\n}\n\n.pace-center-simple-green .pace {\n  background: #ffffff;\n  border-color: #28a745;\n}\n\n.pace-center-simple-green .pace .pace-progress {\n  background: #28a745;\n}\n\n.pace-material-green .pace {\n  color: #28a745;\n}\n\n.pace-corner-indicator-green .pace .pace-activity {\n  background: #28a745;\n}\n\n.pace-corner-indicator-green .pace .pace-activity::after,\n.pace-corner-indicator-green .pace .pace-activity::before  {\n  border: 5px solid #ffffff;\n}\n\n.pace-corner-indicator-green .pace .pace-activity::before {\n  border-right-color: rgba(40, 167, 69, 0.2);\n  border-left-color: rgba(40, 167, 69, 0.2);\n}\n\n.pace-corner-indicator-green .pace .pace-activity::after {\n  border-top-color: rgba(40, 167, 69, 0.2);\n  border-bottom-color: rgba(40, 167, 69, 0.2);\n}\n\n.pace-fill-left-green .pace .pace-progress {\n  background-color: rgba(40, 167, 69, 0.2);\n}\n\n.pace-flash-green .pace .pace-progress {\n  background: #28a745;\n}\n\n.pace-flash-green .pace .pace-progress-inner {\n  box-shadow: 0 0 10px #28a745, 0 0 5px #28a745;\n}\n\n.pace-flash-green .pace .pace-activity {\n  border-top-color: #28a745;\n  border-left-color: #28a745;\n}\n\n.pace-loading-bar-green .pace .pace-progress {\n  background: #28a745;\n  color: #28a745;\n  box-shadow: 120px 0 #ffffff, 240px 0 #ffffff;\n}\n\n.pace-loading-bar-green .pace .pace-activity {\n  box-shadow: inset 0 0 0 2px #28a745, inset 0 0 0 7px #ffffff;\n}\n\n.pace-mac-osx-green .pace .pace-progress {\n  background-color: #28a745;\n  box-shadow: inset -1px 0 #28a745, inset 0 -1px #28a745, inset 0 2px rgba(255, 255, 255, 0.5), inset 0 6px rgba(255, 255, 255, 0.3);\n}\n\n.pace-mac-osx-green .pace .pace-activity {\n  background-image: radial-gradient(rgba(255, 255, 255, 0.65) 0%, rgba(255, 255, 255, 0.15) 100%);\n  height: 12px;\n}\n\n.pace-progress-color-green .pace-progress {\n  color: #28a745;\n}\n\n.pace-teal .pace .pace-progress {\n  background: #20c997;\n}\n\n.pace-barber-shop-teal .pace {\n  background: #ffffff;\n}\n\n.pace-barber-shop-teal .pace .pace-progress {\n  background: #20c997;\n}\n\n.pace-barber-shop-teal .pace .pace-activity {\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0.2) 75%, transparent 75%, transparent);\n}\n\n.pace-big-counter-teal .pace .pace-progress::after {\n  color: rgba(32, 201, 151, 0.2);\n}\n\n.pace-bounce-teal .pace .pace-activity {\n  background: #20c997;\n}\n\n.pace-center-atom-teal .pace-progress {\n  height: 100px;\n  width: 80px;\n}\n\n.pace-center-atom-teal .pace-progress::before {\n  background: #20c997;\n  color: #ffffff;\n  font-size: .8rem;\n  line-height: .7rem;\n  padding-top: 17%;\n}\n\n.pace-center-atom-teal .pace-activity {\n  border-color: #20c997;\n}\n\n.pace-center-atom-teal .pace-activity::after, .pace-center-atom-teal .pace-activity::before {\n  border-color: #20c997;\n}\n\n.pace-center-circle-teal .pace .pace-progress {\n  background: rgba(32, 201, 151, 0.8);\n  color: #ffffff;\n}\n\n.pace-center-radar-teal .pace .pace-activity {\n  border-color: #20c997 transparent transparent;\n}\n\n.pace-center-radar-teal .pace .pace-activity::before {\n  border-color: #20c997 transparent transparent;\n}\n\n.pace-center-simple-teal .pace {\n  background: #ffffff;\n  border-color: #20c997;\n}\n\n.pace-center-simple-teal .pace .pace-progress {\n  background: #20c997;\n}\n\n.pace-material-teal .pace {\n  color: #20c997;\n}\n\n.pace-corner-indicator-teal .pace .pace-activity {\n  background: #20c997;\n}\n\n.pace-corner-indicator-teal .pace .pace-activity::after,\n.pace-corner-indicator-teal .pace .pace-activity::before  {\n  border: 5px solid #ffffff;\n}\n\n.pace-corner-indicator-teal .pace .pace-activity::before {\n  border-right-color: rgba(32, 201, 151, 0.2);\n  border-left-color: rgba(32, 201, 151, 0.2);\n}\n\n.pace-corner-indicator-teal .pace .pace-activity::after {\n  border-top-color: rgba(32, 201, 151, 0.2);\n  border-bottom-color: rgba(32, 201, 151, 0.2);\n}\n\n.pace-fill-left-teal .pace .pace-progress {\n  background-color: rgba(32, 201, 151, 0.2);\n}\n\n.pace-flash-teal .pace .pace-progress {\n  background: #20c997;\n}\n\n.pace-flash-teal .pace .pace-progress-inner {\n  box-shadow: 0 0 10px #20c997, 0 0 5px #20c997;\n}\n\n.pace-flash-teal .pace .pace-activity {\n  border-top-color: #20c997;\n  border-left-color: #20c997;\n}\n\n.pace-loading-bar-teal .pace .pace-progress {\n  background: #20c997;\n  color: #20c997;\n  box-shadow: 120px 0 #ffffff, 240px 0 #ffffff;\n}\n\n.pace-loading-bar-teal .pace .pace-activity {\n  box-shadow: inset 0 0 0 2px #20c997, inset 0 0 0 7px #ffffff;\n}\n\n.pace-mac-osx-teal .pace .pace-progress {\n  background-color: #20c997;\n  box-shadow: inset -1px 0 #20c997, inset 0 -1px #20c997, inset 0 2px rgba(255, 255, 255, 0.5), inset 0 6px rgba(255, 255, 255, 0.3);\n}\n\n.pace-mac-osx-teal .pace .pace-activity {\n  background-image: radial-gradient(rgba(255, 255, 255, 0.65) 0%, rgba(255, 255, 255, 0.15) 100%);\n  height: 12px;\n}\n\n.pace-progress-color-teal .pace-progress {\n  color: #20c997;\n}\n\n.pace-cyan .pace .pace-progress {\n  background: #17a2b8;\n}\n\n.pace-barber-shop-cyan .pace {\n  background: #ffffff;\n}\n\n.pace-barber-shop-cyan .pace .pace-progress {\n  background: #17a2b8;\n}\n\n.pace-barber-shop-cyan .pace .pace-activity {\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0.2) 75%, transparent 75%, transparent);\n}\n\n.pace-big-counter-cyan .pace .pace-progress::after {\n  color: rgba(23, 162, 184, 0.2);\n}\n\n.pace-bounce-cyan .pace .pace-activity {\n  background: #17a2b8;\n}\n\n.pace-center-atom-cyan .pace-progress {\n  height: 100px;\n  width: 80px;\n}\n\n.pace-center-atom-cyan .pace-progress::before {\n  background: #17a2b8;\n  color: #ffffff;\n  font-size: .8rem;\n  line-height: .7rem;\n  padding-top: 17%;\n}\n\n.pace-center-atom-cyan .pace-activity {\n  border-color: #17a2b8;\n}\n\n.pace-center-atom-cyan .pace-activity::after, .pace-center-atom-cyan .pace-activity::before {\n  border-color: #17a2b8;\n}\n\n.pace-center-circle-cyan .pace .pace-progress {\n  background: rgba(23, 162, 184, 0.8);\n  color: #ffffff;\n}\n\n.pace-center-radar-cyan .pace .pace-activity {\n  border-color: #17a2b8 transparent transparent;\n}\n\n.pace-center-radar-cyan .pace .pace-activity::before {\n  border-color: #17a2b8 transparent transparent;\n}\n\n.pace-center-simple-cyan .pace {\n  background: #ffffff;\n  border-color: #17a2b8;\n}\n\n.pace-center-simple-cyan .pace .pace-progress {\n  background: #17a2b8;\n}\n\n.pace-material-cyan .pace {\n  color: #17a2b8;\n}\n\n.pace-corner-indicator-cyan .pace .pace-activity {\n  background: #17a2b8;\n}\n\n.pace-corner-indicator-cyan .pace .pace-activity::after,\n.pace-corner-indicator-cyan .pace .pace-activity::before  {\n  border: 5px solid #ffffff;\n}\n\n.pace-corner-indicator-cyan .pace .pace-activity::before {\n  border-right-color: rgba(23, 162, 184, 0.2);\n  border-left-color: rgba(23, 162, 184, 0.2);\n}\n\n.pace-corner-indicator-cyan .pace .pace-activity::after {\n  border-top-color: rgba(23, 162, 184, 0.2);\n  border-bottom-color: rgba(23, 162, 184, 0.2);\n}\n\n.pace-fill-left-cyan .pace .pace-progress {\n  background-color: rgba(23, 162, 184, 0.2);\n}\n\n.pace-flash-cyan .pace .pace-progress {\n  background: #17a2b8;\n}\n\n.pace-flash-cyan .pace .pace-progress-inner {\n  box-shadow: 0 0 10px #17a2b8, 0 0 5px #17a2b8;\n}\n\n.pace-flash-cyan .pace .pace-activity {\n  border-top-color: #17a2b8;\n  border-left-color: #17a2b8;\n}\n\n.pace-loading-bar-cyan .pace .pace-progress {\n  background: #17a2b8;\n  color: #17a2b8;\n  box-shadow: 120px 0 #ffffff, 240px 0 #ffffff;\n}\n\n.pace-loading-bar-cyan .pace .pace-activity {\n  box-shadow: inset 0 0 0 2px #17a2b8, inset 0 0 0 7px #ffffff;\n}\n\n.pace-mac-osx-cyan .pace .pace-progress {\n  background-color: #17a2b8;\n  box-shadow: inset -1px 0 #17a2b8, inset 0 -1px #17a2b8, inset 0 2px rgba(255, 255, 255, 0.5), inset 0 6px rgba(255, 255, 255, 0.3);\n}\n\n.pace-mac-osx-cyan .pace .pace-activity {\n  background-image: radial-gradient(rgba(255, 255, 255, 0.65) 0%, rgba(255, 255, 255, 0.15) 100%);\n  height: 12px;\n}\n\n.pace-progress-color-cyan .pace-progress {\n  color: #17a2b8;\n}\n\n.pace-white .pace .pace-progress {\n  background: #ffffff;\n}\n\n.pace-barber-shop-white .pace {\n  background: #1F2D3D;\n}\n\n.pace-barber-shop-white .pace .pace-progress {\n  background: #ffffff;\n}\n\n.pace-barber-shop-white .pace .pace-activity {\n  background-image: linear-gradient(45deg, rgba(31, 45, 61, 0.2) 25%, transparent 25%, transparent 50%, rgba(31, 45, 61, 0.2) 50%, rgba(31, 45, 61, 0.2) 75%, transparent 75%, transparent);\n}\n\n.pace-big-counter-white .pace .pace-progress::after {\n  color: rgba(255, 255, 255, 0.2);\n}\n\n.pace-bounce-white .pace .pace-activity {\n  background: #ffffff;\n}\n\n.pace-center-atom-white .pace-progress {\n  height: 100px;\n  width: 80px;\n}\n\n.pace-center-atom-white .pace-progress::before {\n  background: #ffffff;\n  color: #1F2D3D;\n  font-size: .8rem;\n  line-height: .7rem;\n  padding-top: 17%;\n}\n\n.pace-center-atom-white .pace-activity {\n  border-color: #ffffff;\n}\n\n.pace-center-atom-white .pace-activity::after, .pace-center-atom-white .pace-activity::before {\n  border-color: #ffffff;\n}\n\n.pace-center-circle-white .pace .pace-progress {\n  background: rgba(255, 255, 255, 0.8);\n  color: #1F2D3D;\n}\n\n.pace-center-radar-white .pace .pace-activity {\n  border-color: #ffffff transparent transparent;\n}\n\n.pace-center-radar-white .pace .pace-activity::before {\n  border-color: #ffffff transparent transparent;\n}\n\n.pace-center-simple-white .pace {\n  background: #1F2D3D;\n  border-color: #ffffff;\n}\n\n.pace-center-simple-white .pace .pace-progress {\n  background: #ffffff;\n}\n\n.pace-material-white .pace {\n  color: #ffffff;\n}\n\n.pace-corner-indicator-white .pace .pace-activity {\n  background: #ffffff;\n}\n\n.pace-corner-indicator-white .pace .pace-activity::after,\n.pace-corner-indicator-white .pace .pace-activity::before  {\n  border: 5px solid #1F2D3D;\n}\n\n.pace-corner-indicator-white .pace .pace-activity::before {\n  border-right-color: rgba(255, 255, 255, 0.2);\n  border-left-color: rgba(255, 255, 255, 0.2);\n}\n\n.pace-corner-indicator-white .pace .pace-activity::after {\n  border-top-color: rgba(255, 255, 255, 0.2);\n  border-bottom-color: rgba(255, 255, 255, 0.2);\n}\n\n.pace-fill-left-white .pace .pace-progress {\n  background-color: rgba(255, 255, 255, 0.2);\n}\n\n.pace-flash-white .pace .pace-progress {\n  background: #ffffff;\n}\n\n.pace-flash-white .pace .pace-progress-inner {\n  box-shadow: 0 0 10px #ffffff, 0 0 5px #ffffff;\n}\n\n.pace-flash-white .pace .pace-activity {\n  border-top-color: #ffffff;\n  border-left-color: #ffffff;\n}\n\n.pace-loading-bar-white .pace .pace-progress {\n  background: #ffffff;\n  color: #ffffff;\n  box-shadow: 120px 0 #1F2D3D, 240px 0 #1F2D3D;\n}\n\n.pace-loading-bar-white .pace .pace-activity {\n  box-shadow: inset 0 0 0 2px #ffffff, inset 0 0 0 7px #1F2D3D;\n}\n\n.pace-mac-osx-white .pace .pace-progress {\n  background-color: #ffffff;\n  box-shadow: inset -1px 0 #ffffff, inset 0 -1px #ffffff, inset 0 2px rgba(31, 45, 61, 0.5), inset 0 6px rgba(31, 45, 61, 0.3);\n}\n\n.pace-mac-osx-white .pace .pace-activity {\n  background-image: radial-gradient(rgba(31, 45, 61, 0.65) 0%, rgba(31, 45, 61, 0.15) 100%);\n  height: 12px;\n}\n\n.pace-progress-color-white .pace-progress {\n  color: #ffffff;\n}\n\n.pace-gray .pace .pace-progress {\n  background: #6c757d;\n}\n\n.pace-barber-shop-gray .pace {\n  background: #ffffff;\n}\n\n.pace-barber-shop-gray .pace .pace-progress {\n  background: #6c757d;\n}\n\n.pace-barber-shop-gray .pace .pace-activity {\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0.2) 75%, transparent 75%, transparent);\n}\n\n.pace-big-counter-gray .pace .pace-progress::after {\n  color: rgba(108, 117, 125, 0.2);\n}\n\n.pace-bounce-gray .pace .pace-activity {\n  background: #6c757d;\n}\n\n.pace-center-atom-gray .pace-progress {\n  height: 100px;\n  width: 80px;\n}\n\n.pace-center-atom-gray .pace-progress::before {\n  background: #6c757d;\n  color: #ffffff;\n  font-size: .8rem;\n  line-height: .7rem;\n  padding-top: 17%;\n}\n\n.pace-center-atom-gray .pace-activity {\n  border-color: #6c757d;\n}\n\n.pace-center-atom-gray .pace-activity::after, .pace-center-atom-gray .pace-activity::before {\n  border-color: #6c757d;\n}\n\n.pace-center-circle-gray .pace .pace-progress {\n  background: rgba(108, 117, 125, 0.8);\n  color: #ffffff;\n}\n\n.pace-center-radar-gray .pace .pace-activity {\n  border-color: #6c757d transparent transparent;\n}\n\n.pace-center-radar-gray .pace .pace-activity::before {\n  border-color: #6c757d transparent transparent;\n}\n\n.pace-center-simple-gray .pace {\n  background: #ffffff;\n  border-color: #6c757d;\n}\n\n.pace-center-simple-gray .pace .pace-progress {\n  background: #6c757d;\n}\n\n.pace-material-gray .pace {\n  color: #6c757d;\n}\n\n.pace-corner-indicator-gray .pace .pace-activity {\n  background: #6c757d;\n}\n\n.pace-corner-indicator-gray .pace .pace-activity::after,\n.pace-corner-indicator-gray .pace .pace-activity::before  {\n  border: 5px solid #ffffff;\n}\n\n.pace-corner-indicator-gray .pace .pace-activity::before {\n  border-right-color: rgba(108, 117, 125, 0.2);\n  border-left-color: rgba(108, 117, 125, 0.2);\n}\n\n.pace-corner-indicator-gray .pace .pace-activity::after {\n  border-top-color: rgba(108, 117, 125, 0.2);\n  border-bottom-color: rgba(108, 117, 125, 0.2);\n}\n\n.pace-fill-left-gray .pace .pace-progress {\n  background-color: rgba(108, 117, 125, 0.2);\n}\n\n.pace-flash-gray .pace .pace-progress {\n  background: #6c757d;\n}\n\n.pace-flash-gray .pace .pace-progress-inner {\n  box-shadow: 0 0 10px #6c757d, 0 0 5px #6c757d;\n}\n\n.pace-flash-gray .pace .pace-activity {\n  border-top-color: #6c757d;\n  border-left-color: #6c757d;\n}\n\n.pace-loading-bar-gray .pace .pace-progress {\n  background: #6c757d;\n  color: #6c757d;\n  box-shadow: 120px 0 #ffffff, 240px 0 #ffffff;\n}\n\n.pace-loading-bar-gray .pace .pace-activity {\n  box-shadow: inset 0 0 0 2px #6c757d, inset 0 0 0 7px #ffffff;\n}\n\n.pace-mac-osx-gray .pace .pace-progress {\n  background-color: #6c757d;\n  box-shadow: inset -1px 0 #6c757d, inset 0 -1px #6c757d, inset 0 2px rgba(255, 255, 255, 0.5), inset 0 6px rgba(255, 255, 255, 0.3);\n}\n\n.pace-mac-osx-gray .pace .pace-activity {\n  background-image: radial-gradient(rgba(255, 255, 255, 0.65) 0%, rgba(255, 255, 255, 0.15) 100%);\n  height: 12px;\n}\n\n.pace-progress-color-gray .pace-progress {\n  color: #6c757d;\n}\n\n.pace-gray-dark .pace .pace-progress {\n  background: #343a40;\n}\n\n.pace-barber-shop-gray-dark .pace {\n  background: #ffffff;\n}\n\n.pace-barber-shop-gray-dark .pace .pace-progress {\n  background: #343a40;\n}\n\n.pace-barber-shop-gray-dark .pace .pace-activity {\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0.2) 75%, transparent 75%, transparent);\n}\n\n.pace-big-counter-gray-dark .pace .pace-progress::after {\n  color: rgba(52, 58, 64, 0.2);\n}\n\n.pace-bounce-gray-dark .pace .pace-activity {\n  background: #343a40;\n}\n\n.pace-center-atom-gray-dark .pace-progress {\n  height: 100px;\n  width: 80px;\n}\n\n.pace-center-atom-gray-dark .pace-progress::before {\n  background: #343a40;\n  color: #ffffff;\n  font-size: .8rem;\n  line-height: .7rem;\n  padding-top: 17%;\n}\n\n.pace-center-atom-gray-dark .pace-activity {\n  border-color: #343a40;\n}\n\n.pace-center-atom-gray-dark .pace-activity::after, .pace-center-atom-gray-dark .pace-activity::before {\n  border-color: #343a40;\n}\n\n.pace-center-circle-gray-dark .pace .pace-progress {\n  background: rgba(52, 58, 64, 0.8);\n  color: #ffffff;\n}\n\n.pace-center-radar-gray-dark .pace .pace-activity {\n  border-color: #343a40 transparent transparent;\n}\n\n.pace-center-radar-gray-dark .pace .pace-activity::before {\n  border-color: #343a40 transparent transparent;\n}\n\n.pace-center-simple-gray-dark .pace {\n  background: #ffffff;\n  border-color: #343a40;\n}\n\n.pace-center-simple-gray-dark .pace .pace-progress {\n  background: #343a40;\n}\n\n.pace-material-gray-dark .pace {\n  color: #343a40;\n}\n\n.pace-corner-indicator-gray-dark .pace .pace-activity {\n  background: #343a40;\n}\n\n.pace-corner-indicator-gray-dark .pace .pace-activity::after,\n.pace-corner-indicator-gray-dark .pace .pace-activity::before  {\n  border: 5px solid #ffffff;\n}\n\n.pace-corner-indicator-gray-dark .pace .pace-activity::before {\n  border-right-color: rgba(52, 58, 64, 0.2);\n  border-left-color: rgba(52, 58, 64, 0.2);\n}\n\n.pace-corner-indicator-gray-dark .pace .pace-activity::after {\n  border-top-color: rgba(52, 58, 64, 0.2);\n  border-bottom-color: rgba(52, 58, 64, 0.2);\n}\n\n.pace-fill-left-gray-dark .pace .pace-progress {\n  background-color: rgba(52, 58, 64, 0.2);\n}\n\n.pace-flash-gray-dark .pace .pace-progress {\n  background: #343a40;\n}\n\n.pace-flash-gray-dark .pace .pace-progress-inner {\n  box-shadow: 0 0 10px #343a40, 0 0 5px #343a40;\n}\n\n.pace-flash-gray-dark .pace .pace-activity {\n  border-top-color: #343a40;\n  border-left-color: #343a40;\n}\n\n.pace-loading-bar-gray-dark .pace .pace-progress {\n  background: #343a40;\n  color: #343a40;\n  box-shadow: 120px 0 #ffffff, 240px 0 #ffffff;\n}\n\n.pace-loading-bar-gray-dark .pace .pace-activity {\n  box-shadow: inset 0 0 0 2px #343a40, inset 0 0 0 7px #ffffff;\n}\n\n.pace-mac-osx-gray-dark .pace .pace-progress {\n  background-color: #343a40;\n  box-shadow: inset -1px 0 #343a40, inset 0 -1px #343a40, inset 0 2px rgba(255, 255, 255, 0.5), inset 0 6px rgba(255, 255, 255, 0.3);\n}\n\n.pace-mac-osx-gray-dark .pace .pace-activity {\n  background-image: radial-gradient(rgba(255, 255, 255, 0.65) 0%, rgba(255, 255, 255, 0.15) 100%);\n  height: 12px;\n}\n\n.pace-progress-color-gray-dark .pace-progress {\n  color: #343a40;\n}\n\n/**\n  * bootstrap-switch - Turn checkboxes and radio buttons into toggle switches.\n  *\n  * @version v3.4 (MODDED)\n  * @homepage https://bttstrp.github.io/bootstrap-switch\n  * @author Mattia Larentis <mattia@larentis.eu> (http://larentis.eu)\n  * @license MIT\n  */\n.bootstrap-switch {\n  border: 1px solid #ced4da;\n  border-radius: 0.25rem;\n  cursor: pointer;\n  direction: ltr;\n  display: inline-block;\n  line-height: .5rem;\n  overflow: hidden;\n  position: relative;\n  text-align: left;\n  transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  user-select: none;\n  vertical-align: middle;\n  z-index: 0;\n}\n\n.bootstrap-switch .bootstrap-switch-container {\n  border-radius: 0.25rem;\n  display: inline-block;\n  top: 0;\n  -webkit-transform: translate3d(0, 0, 0);\n  transform: translate3d(0, 0, 0);\n}\n\n.bootstrap-switch:focus-within {\n  box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.bootstrap-switch .bootstrap-switch-handle-on,\n.bootstrap-switch .bootstrap-switch-handle-off,\n.bootstrap-switch .bootstrap-switch-label {\n  box-sizing: border-box;\n  cursor: pointer;\n  display: table-cell;\n  font-size: 1rem;\n  font-weight: 500;\n  line-height: 1.2rem;\n  padding: .25rem .5rem;\n  vertical-align: middle;\n}\n\n.bootstrap-switch .bootstrap-switch-handle-on,\n.bootstrap-switch .bootstrap-switch-handle-off {\n  text-align: center;\n  z-index: 1;\n}\n\n.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default,\n.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default {\n  background: #e9ecef;\n  color: #1F2D3D;\n}\n\n.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary,\n.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary {\n  background: #007bff;\n  color: #ffffff;\n}\n\n.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-secondary,\n.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-secondary {\n  background: #6c757d;\n  color: #ffffff;\n}\n\n.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success,\n.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success {\n  background: #28a745;\n  color: #ffffff;\n}\n\n.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info,\n.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info {\n  background: #17a2b8;\n  color: #ffffff;\n}\n\n.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning,\n.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning {\n  background: #ffc107;\n  color: #1F2D3D;\n}\n\n.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger,\n.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger {\n  background: #dc3545;\n  color: #ffffff;\n}\n\n.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-light,\n.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-light {\n  background: #f8f9fa;\n  color: #1F2D3D;\n}\n\n.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-dark,\n.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-dark {\n  background: #343a40;\n  color: #ffffff;\n}\n\n.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-navy,\n.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-navy {\n  background: #001f3f;\n  color: #ffffff;\n}\n\n.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-olive,\n.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-olive {\n  background: #3d9970;\n  color: #ffffff;\n}\n\n.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-lime,\n.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-lime {\n  background: #01ff70;\n  color: #1F2D3D;\n}\n\n.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-fuchsia,\n.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-fuchsia {\n  background: #f012be;\n  color: #ffffff;\n}\n\n.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-maroon,\n.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-maroon {\n  background: #d81b60;\n  color: #ffffff;\n}\n\n.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-blue,\n.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-blue {\n  background: #007bff;\n  color: #ffffff;\n}\n\n.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-indigo,\n.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-indigo {\n  background: #6610f2;\n  color: #ffffff;\n}\n\n.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-purple,\n.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-purple {\n  background: #6f42c1;\n  color: #ffffff;\n}\n\n.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-pink,\n.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-pink {\n  background: #e83e8c;\n  color: #ffffff;\n}\n\n.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-red,\n.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-red {\n  background: #dc3545;\n  color: #ffffff;\n}\n\n.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-orange,\n.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-orange {\n  background: #fd7e14;\n  color: #1F2D3D;\n}\n\n.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-yellow,\n.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-yellow {\n  background: #ffc107;\n  color: #1F2D3D;\n}\n\n.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-green,\n.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-green {\n  background: #28a745;\n  color: #ffffff;\n}\n\n.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-teal,\n.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-teal {\n  background: #20c997;\n  color: #ffffff;\n}\n\n.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-cyan,\n.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-cyan {\n  background: #17a2b8;\n  color: #ffffff;\n}\n\n.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-white,\n.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-white {\n  background: #ffffff;\n  color: #1F2D3D;\n}\n\n.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-gray,\n.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-gray {\n  background: #6c757d;\n  color: #ffffff;\n}\n\n.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-gray-dark,\n.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-gray-dark {\n  background: #343a40;\n  color: #ffffff;\n}\n\n.bootstrap-switch .bootstrap-switch-handle-on {\n  border-bottom-left-radius: 0.1rem;\n  border-top-left-radius: 0.1rem;\n}\n\n.bootstrap-switch .bootstrap-switch-handle-off {\n  border-bottom-right-radius: 0.1rem;\n  border-top-right-radius: 0.1rem;\n}\n\n.bootstrap-switch input[type='radio'],\n.bootstrap-switch input[type='checkbox'] {\n  filter: alpha(opacity=0);\n  left: 0;\n  margin: 0;\n  opacity: 0;\n  position: absolute;\n  top: 0;\n  visibility: hidden;\n  z-index: -1;\n}\n\n.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-handle-on,\n.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-handle-off,\n.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-label {\n  font-size: .875rem;\n  line-height: 1.5;\n  padding: .1rem .3rem;\n}\n\n.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-handle-on,\n.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-handle-off,\n.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-label {\n  font-size: .875rem;\n  line-height: 1.5;\n  padding: .2rem .4rem;\n}\n\n.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-handle-on,\n.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-handle-off,\n.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-label {\n  font-size: 1.25rem;\n  line-height: 1.3333333rem;\n  padding: .3rem .5rem;\n}\n\n.bootstrap-switch.bootstrap-switch-disabled, .bootstrap-switch.bootstrap-switch-readonly, .bootstrap-switch.bootstrap-switch-indeterminate {\n  cursor: default;\n}\n\n.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-handle-on,\n.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-handle-off,\n.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-label, .bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-handle-on,\n.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-handle-off,\n.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-label, .bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-handle-on,\n.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-handle-off,\n.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-label {\n  cursor: default;\n  filter: alpha(opacity=50);\n  opacity: .5;\n}\n\n.bootstrap-switch.bootstrap-switch-animate .bootstrap-switch-container {\n  transition: margin-left .5s;\n}\n\n.bootstrap-switch.bootstrap-switch-inverse .bootstrap-switch-handle-on {\n  border-radius: 0 0.1rem 0.1rem 0;\n}\n\n.bootstrap-switch.bootstrap-switch-inverse .bootstrap-switch-handle-off {\n  border-radius: 0.1rem 0 0 0.1rem;\n}\n\n.bootstrap-switch.bootstrap-switch-on .bootstrap-switch-label,\n.bootstrap-switch.bootstrap-switch-inverse.bootstrap-switch-off .bootstrap-switch-label {\n  border-bottom-right-radius: 0.1rem;\n  border-top-right-radius: 0.1rem;\n}\n\n.bootstrap-switch.bootstrap-switch-off .bootstrap-switch-label,\n.bootstrap-switch.bootstrap-switch-inverse.bootstrap-switch-on .bootstrap-switch-label {\n  border-bottom-left-radius: 0.1rem;\n  border-top-left-radius: 0.1rem;\n}\n\n.jqstooltip {\n  height: auto !important;\n  padding: 5px !important;\n  width: auto !important;\n}\n\n.connectedSortable {\n  min-height: 100px;\n}\n\n.ui-helper-hidden-accessible {\n  border: 0;\n  clip: rect(0 0 0 0);\n  height: 1px;\n  margin: -1px;\n  overflow: hidden;\n  padding: 0;\n  position: absolute;\n  width: 1px;\n}\n\n.sort-highlight {\n  background: #f8f9fa;\n  border: 1px dashed #dee2e6;\n  margin-bottom: 10px;\n}\n\n.chart {\n  overflow: hidden;\n  position: relative;\n}\n\n.border-transparent {\n  border-color: transparent !important;\n}\n\n.description-block {\n  display: block;\n  margin: 10px 0;\n  text-align: center;\n}\n\n.description-block.margin-bottom {\n  margin-bottom: 25px;\n}\n\n.description-block > .description-header {\n  font-size: 16px;\n  font-weight: 600;\n  margin: 0;\n  padding: 0;\n}\n\n.description-block > .description-text {\n  text-transform: uppercase;\n}\n\n.description-block .description-icon {\n  font-size: 16px;\n}\n\n.list-group-unbordered > .list-group-item {\n  border-left: 0;\n  border-radius: 0;\n  border-right: 0;\n  padding-left: 0;\n  padding-right: 0;\n}\n\n.list-header {\n  color: #6c757d;\n  font-size: 15px;\n  font-weight: bold;\n  padding: 10px 4px;\n}\n\n.list-seperator {\n  background: rgba(0, 0, 0, 0.125);\n  height: 1px;\n  margin: 15px 0 9px;\n}\n\n.list-link > a {\n  color: #6c757d;\n  padding: 4px;\n}\n\n.list-link > a:hover {\n  color: #212529;\n}\n\n.user-block {\n  float: left;\n}\n\n.user-block img {\n  float: left;\n  height: 40px;\n  width: 40px;\n}\n\n.user-block .username,\n.user-block .description,\n.user-block .comment {\n  display: block;\n  margin-left: 50px;\n}\n\n.user-block .username {\n  font-size: 16px;\n  font-weight: 600;\n  margin-top: -1px;\n}\n\n.user-block .description {\n  color: #6c757d;\n  font-size: 13px;\n  margin-top: -3px;\n}\n\n.user-block.user-block-sm img {\n  width: 1.875rem;\n  height: 1.875rem;\n}\n\n.user-block.user-block-sm .username,\n.user-block.user-block-sm .description,\n.user-block.user-block-sm .comment {\n  margin-left: 40px;\n}\n\n.user-block.user-block-sm .username {\n  font-size: 14px;\n}\n\n.img-sm,\n.img-md,\n.img-lg {\n  float: left;\n}\n\n.img-sm {\n  height: 1.875rem;\n  width: 1.875rem;\n}\n\n.img-sm + .img-push {\n  margin-left: 2.5rem;\n}\n\n.img-md {\n  width: 3.75rem;\n  height: 3.75rem;\n}\n\n.img-md + .img-push {\n  margin-left: 4.375rem;\n}\n\n.img-lg {\n  width: 6.25rem;\n  height: 6.25rem;\n}\n\n.img-lg + .img-push {\n  margin-left: 6.875rem;\n}\n\n.img-bordered {\n  border: 3px solid #adb5bd;\n  padding: 3px;\n}\n\n.img-bordered-sm {\n  border: 2px solid #adb5bd;\n  padding: 2px;\n}\n\n.img-rounded {\n  border-radius: 0.25rem;\n}\n\n.img-circle {\n  border-radius: 50%;\n}\n\n.img-size-64,\n.img-size-50,\n.img-size-32 {\n  height: auto;\n}\n\n.img-size-64 {\n  width: 64px;\n}\n\n.img-size-50 {\n  width: 50px;\n}\n\n.img-size-32 {\n  width: 32px;\n}\n\n.size-32,\n.size-40,\n.size-50 {\n  display: block;\n  text-align: center;\n}\n\n.size-32 {\n  height: 32px;\n  line-height: 32px;\n  width: 32px;\n}\n\n.size-40 {\n  height: 40px;\n  line-height: 40px;\n  width: 40px;\n}\n\n.size-50 {\n  height: 50px;\n  line-height: 50px;\n  width: 50px;\n}\n\n.attachment-block {\n  background: #f8f9fa;\n  border: 1px solid rgba(0, 0, 0, 0.125);\n  margin-bottom: 10px;\n  padding: 5px;\n}\n\n.attachment-block .attachment-img {\n  float: left;\n  height: auto;\n  max-height: 100px;\n  max-width: 100px;\n}\n\n.attachment-block .attachment-pushed {\n  margin-left: 110px;\n}\n\n.attachment-block .attachment-heading {\n  margin: 0;\n}\n\n.attachment-block .attachment-text {\n  color: #495057;\n}\n\n.card > .overlay,\n.card > .loading-img,\n.overlay-wrapper > .overlay,\n.overlay-wrapper > .loading-img,\n.info-box > .overlay,\n.info-box > .loading-img,\n.small-box > .overlay,\n.small-box > .loading-img {\n  height: 100%;\n  left: 0;\n  position: absolute;\n  top: 0;\n  width: 100%;\n}\n\n.card .overlay,\n.overlay-wrapper .overlay,\n.info-box .overlay,\n.small-box .overlay {\n  border-radius: 0.25rem;\n  -ms-flex-align: center;\n  align-items: center;\n  background: rgba(255, 255, 255, 0.7);\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-pack: center;\n  justify-content: center;\n  z-index: 50;\n}\n\n.card .overlay > .fa,\n.card .overlay > .fas,\n.card .overlay > .far,\n.card .overlay > .fab,\n.card .overlay > .glyphicon,\n.card .overlay > .ion,\n.overlay-wrapper .overlay > .fa,\n.overlay-wrapper .overlay > .fas,\n.overlay-wrapper .overlay > .far,\n.overlay-wrapper .overlay > .fab,\n.overlay-wrapper .overlay > .glyphicon,\n.overlay-wrapper .overlay > .ion,\n.info-box .overlay > .fa,\n.info-box .overlay > .fas,\n.info-box .overlay > .far,\n.info-box .overlay > .fab,\n.info-box .overlay > .glyphicon,\n.info-box .overlay > .ion,\n.small-box .overlay > .fa,\n.small-box .overlay > .fas,\n.small-box .overlay > .far,\n.small-box .overlay > .fab,\n.small-box .overlay > .glyphicon,\n.small-box .overlay > .ion {\n  color: #343a40;\n}\n\n.card .overlay.dark,\n.overlay-wrapper .overlay.dark,\n.info-box .overlay.dark,\n.small-box .overlay.dark {\n  background: rgba(0, 0, 0, 0.5);\n}\n\n.card .overlay.dark > .fa,\n.card .overlay.dark > .fas,\n.card .overlay.dark > .far,\n.card .overlay.dark > .fab,\n.card .overlay.dark > .glyphicon,\n.card .overlay.dark > .ion,\n.overlay-wrapper .overlay.dark > .fa,\n.overlay-wrapper .overlay.dark > .fas,\n.overlay-wrapper .overlay.dark > .far,\n.overlay-wrapper .overlay.dark > .fab,\n.overlay-wrapper .overlay.dark > .glyphicon,\n.overlay-wrapper .overlay.dark > .ion,\n.info-box .overlay.dark > .fa,\n.info-box .overlay.dark > .fas,\n.info-box .overlay.dark > .far,\n.info-box .overlay.dark > .fab,\n.info-box .overlay.dark > .glyphicon,\n.info-box .overlay.dark > .ion,\n.small-box .overlay.dark > .fa,\n.small-box .overlay.dark > .fas,\n.small-box .overlay.dark > .far,\n.small-box .overlay.dark > .fab,\n.small-box .overlay.dark > .glyphicon,\n.small-box .overlay.dark > .ion {\n  color: #ced4da;\n}\n\n.ribbon-wrapper {\n  height: 70px;\n  overflow: hidden;\n  position: absolute;\n  right: -2px;\n  top: -2px;\n  width: 70px;\n  z-index: 10;\n}\n\n.ribbon-wrapper.ribbon-lg {\n  height: 120px;\n  width: 120px;\n}\n\n.ribbon-wrapper.ribbon-lg .ribbon {\n  right: 0px;\n  top: 26px;\n  width: 160px;\n}\n\n.ribbon-wrapper.ribbon-xl {\n  height: 180px;\n  width: 180px;\n}\n\n.ribbon-wrapper.ribbon-xl .ribbon {\n  right: 4px;\n  top: 47px;\n  width: 240px;\n}\n\n.ribbon-wrapper .ribbon {\n  box-shadow: 0 0 3px rgba(0, 0, 0, 0.3);\n  font-size: 0.8rem;\n  line-height: 100%;\n  padding: 0.375rem 0;\n  position: relative;\n  right: -2px;\n  text-align: center;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.4);\n  text-transform: uppercase;\n  top: 10px;\n  -webkit-transform: rotate(45deg);\n  transform: rotate(45deg);\n  width: 90px;\n}\n\n.ribbon-wrapper .ribbon::before, .ribbon-wrapper .ribbon::after {\n  border-left: 3px solid transparent;\n  border-right: 3px solid transparent;\n  border-top: 3px solid #9e9e9e;\n  bottom: -3px;\n  content: '';\n  position: absolute;\n}\n\n.ribbon-wrapper .ribbon::before {\n  left: 0;\n}\n\n.ribbon-wrapper .ribbon::after {\n  right: 0;\n}\n\n.back-to-top {\n  bottom: 1.25rem;\n  position: fixed;\n  right: 1.25rem;\n  z-index: 1032;\n}\n\n.back-to-top:focus {\n  box-shadow: none;\n}\n\npre {\n  padding: .75rem;\n}\n\nblockquote {\n  background: #ffffff;\n  border-left: 0.7rem solid #007bff;\n  margin: 1.5em .7rem;\n  padding: 0.5em .7rem;\n}\n\n.box blockquote {\n  background: #e9ecef;\n}\n\nblockquote p:last-child {\n  margin-bottom: 0;\n}\n\nblockquote h1,\nblockquote h2,\nblockquote h3,\nblockquote h4,\nblockquote h5,\nblockquote h6 {\n  color: #007bff;\n  font-size: 1.25rem;\n  font-weight: 600;\n}\n\nblockquote.quote-primary {\n  border-color: #007bff;\n}\n\nblockquote.quote-primary h1,\nblockquote.quote-primary h2,\nblockquote.quote-primary h3,\nblockquote.quote-primary h4,\nblockquote.quote-primary h5,\nblockquote.quote-primary h6 {\n  color: #007bff;\n}\n\nblockquote.quote-secondary {\n  border-color: #6c757d;\n}\n\nblockquote.quote-secondary h1,\nblockquote.quote-secondary h2,\nblockquote.quote-secondary h3,\nblockquote.quote-secondary h4,\nblockquote.quote-secondary h5,\nblockquote.quote-secondary h6 {\n  color: #6c757d;\n}\n\nblockquote.quote-success {\n  border-color: #28a745;\n}\n\nblockquote.quote-success h1,\nblockquote.quote-success h2,\nblockquote.quote-success h3,\nblockquote.quote-success h4,\nblockquote.quote-success h5,\nblockquote.quote-success h6 {\n  color: #28a745;\n}\n\nblockquote.quote-info {\n  border-color: #17a2b8;\n}\n\nblockquote.quote-info h1,\nblockquote.quote-info h2,\nblockquote.quote-info h3,\nblockquote.quote-info h4,\nblockquote.quote-info h5,\nblockquote.quote-info h6 {\n  color: #17a2b8;\n}\n\nblockquote.quote-warning {\n  border-color: #ffc107;\n}\n\nblockquote.quote-warning h1,\nblockquote.quote-warning h2,\nblockquote.quote-warning h3,\nblockquote.quote-warning h4,\nblockquote.quote-warning h5,\nblockquote.quote-warning h6 {\n  color: #ffc107;\n}\n\nblockquote.quote-danger {\n  border-color: #dc3545;\n}\n\nblockquote.quote-danger h1,\nblockquote.quote-danger h2,\nblockquote.quote-danger h3,\nblockquote.quote-danger h4,\nblockquote.quote-danger h5,\nblockquote.quote-danger h6 {\n  color: #dc3545;\n}\n\nblockquote.quote-light {\n  border-color: #f8f9fa;\n}\n\nblockquote.quote-light h1,\nblockquote.quote-light h2,\nblockquote.quote-light h3,\nblockquote.quote-light h4,\nblockquote.quote-light h5,\nblockquote.quote-light h6 {\n  color: #f8f9fa;\n}\n\nblockquote.quote-dark {\n  border-color: #343a40;\n}\n\nblockquote.quote-dark h1,\nblockquote.quote-dark h2,\nblockquote.quote-dark h3,\nblockquote.quote-dark h4,\nblockquote.quote-dark h5,\nblockquote.quote-dark h6 {\n  color: #343a40;\n}\n\nblockquote.quote-navy {\n  border-color: #001f3f;\n}\n\nblockquote.quote-navy h1,\nblockquote.quote-navy h2,\nblockquote.quote-navy h3,\nblockquote.quote-navy h4,\nblockquote.quote-navy h5,\nblockquote.quote-navy h6 {\n  color: #001f3f;\n}\n\nblockquote.quote-olive {\n  border-color: #3d9970;\n}\n\nblockquote.quote-olive h1,\nblockquote.quote-olive h2,\nblockquote.quote-olive h3,\nblockquote.quote-olive h4,\nblockquote.quote-olive h5,\nblockquote.quote-olive h6 {\n  color: #3d9970;\n}\n\nblockquote.quote-lime {\n  border-color: #01ff70;\n}\n\nblockquote.quote-lime h1,\nblockquote.quote-lime h2,\nblockquote.quote-lime h3,\nblockquote.quote-lime h4,\nblockquote.quote-lime h5,\nblockquote.quote-lime h6 {\n  color: #01ff70;\n}\n\nblockquote.quote-fuchsia {\n  border-color: #f012be;\n}\n\nblockquote.quote-fuchsia h1,\nblockquote.quote-fuchsia h2,\nblockquote.quote-fuchsia h3,\nblockquote.quote-fuchsia h4,\nblockquote.quote-fuchsia h5,\nblockquote.quote-fuchsia h6 {\n  color: #f012be;\n}\n\nblockquote.quote-maroon {\n  border-color: #d81b60;\n}\n\nblockquote.quote-maroon h1,\nblockquote.quote-maroon h2,\nblockquote.quote-maroon h3,\nblockquote.quote-maroon h4,\nblockquote.quote-maroon h5,\nblockquote.quote-maroon h6 {\n  color: #d81b60;\n}\n\nblockquote.quote-blue {\n  border-color: #007bff;\n}\n\nblockquote.quote-blue h1,\nblockquote.quote-blue h2,\nblockquote.quote-blue h3,\nblockquote.quote-blue h4,\nblockquote.quote-blue h5,\nblockquote.quote-blue h6 {\n  color: #007bff;\n}\n\nblockquote.quote-indigo {\n  border-color: #6610f2;\n}\n\nblockquote.quote-indigo h1,\nblockquote.quote-indigo h2,\nblockquote.quote-indigo h3,\nblockquote.quote-indigo h4,\nblockquote.quote-indigo h5,\nblockquote.quote-indigo h6 {\n  color: #6610f2;\n}\n\nblockquote.quote-purple {\n  border-color: #6f42c1;\n}\n\nblockquote.quote-purple h1,\nblockquote.quote-purple h2,\nblockquote.quote-purple h3,\nblockquote.quote-purple h4,\nblockquote.quote-purple h5,\nblockquote.quote-purple h6 {\n  color: #6f42c1;\n}\n\nblockquote.quote-pink {\n  border-color: #e83e8c;\n}\n\nblockquote.quote-pink h1,\nblockquote.quote-pink h2,\nblockquote.quote-pink h3,\nblockquote.quote-pink h4,\nblockquote.quote-pink h5,\nblockquote.quote-pink h6 {\n  color: #e83e8c;\n}\n\nblockquote.quote-red {\n  border-color: #dc3545;\n}\n\nblockquote.quote-red h1,\nblockquote.quote-red h2,\nblockquote.quote-red h3,\nblockquote.quote-red h4,\nblockquote.quote-red h5,\nblockquote.quote-red h6 {\n  color: #dc3545;\n}\n\nblockquote.quote-orange {\n  border-color: #fd7e14;\n}\n\nblockquote.quote-orange h1,\nblockquote.quote-orange h2,\nblockquote.quote-orange h3,\nblockquote.quote-orange h4,\nblockquote.quote-orange h5,\nblockquote.quote-orange h6 {\n  color: #fd7e14;\n}\n\nblockquote.quote-yellow {\n  border-color: #ffc107;\n}\n\nblockquote.quote-yellow h1,\nblockquote.quote-yellow h2,\nblockquote.quote-yellow h3,\nblockquote.quote-yellow h4,\nblockquote.quote-yellow h5,\nblockquote.quote-yellow h6 {\n  color: #ffc107;\n}\n\nblockquote.quote-green {\n  border-color: #28a745;\n}\n\nblockquote.quote-green h1,\nblockquote.quote-green h2,\nblockquote.quote-green h3,\nblockquote.quote-green h4,\nblockquote.quote-green h5,\nblockquote.quote-green h6 {\n  color: #28a745;\n}\n\nblockquote.quote-teal {\n  border-color: #20c997;\n}\n\nblockquote.quote-teal h1,\nblockquote.quote-teal h2,\nblockquote.quote-teal h3,\nblockquote.quote-teal h4,\nblockquote.quote-teal h5,\nblockquote.quote-teal h6 {\n  color: #20c997;\n}\n\nblockquote.quote-cyan {\n  border-color: #17a2b8;\n}\n\nblockquote.quote-cyan h1,\nblockquote.quote-cyan h2,\nblockquote.quote-cyan h3,\nblockquote.quote-cyan h4,\nblockquote.quote-cyan h5,\nblockquote.quote-cyan h6 {\n  color: #17a2b8;\n}\n\nblockquote.quote-white {\n  border-color: #ffffff;\n}\n\nblockquote.quote-white h1,\nblockquote.quote-white h2,\nblockquote.quote-white h3,\nblockquote.quote-white h4,\nblockquote.quote-white h5,\nblockquote.quote-white h6 {\n  color: #ffffff;\n}\n\nblockquote.quote-gray {\n  border-color: #6c757d;\n}\n\nblockquote.quote-gray h1,\nblockquote.quote-gray h2,\nblockquote.quote-gray h3,\nblockquote.quote-gray h4,\nblockquote.quote-gray h5,\nblockquote.quote-gray h6 {\n  color: #6c757d;\n}\n\nblockquote.quote-gray-dark {\n  border-color: #343a40;\n}\n\nblockquote.quote-gray-dark h1,\nblockquote.quote-gray-dark h2,\nblockquote.quote-gray-dark h3,\nblockquote.quote-gray-dark h4,\nblockquote.quote-gray-dark h5,\nblockquote.quote-gray-dark h6 {\n  color: #343a40;\n}\n\n.tab-custom-content {\n  border-top: 1px solid #dee2e6;\n  margin-top: .5rem;\n  padding-top: .5rem;\n}\n\n.nav + .tab-custom-content {\n  border-top: none;\n  border-bottom: 1px solid #dee2e6;\n  margin-top: 0;\n  margin-bottom: .5rem;\n  padding-bottom: .5rem;\n}\n\na:-moz-focusring,\nbutton:-moz-focusring,\ninput.btn:-moz-focusring {\n  border: 0;\n  outline: none;\n}\n\n@media print {\n  .no-print, .main-sidebar,\n  .main-header,\n  .content-header {\n    display: none !important;\n  }\n  .content-wrapper,\n  .main-footer {\n    -webkit-transform: translate(0, 0);\n    transform: translate(0, 0);\n    margin-left: 0 !important;\n    min-height: 0 !important;\n  }\n  .layout-fixed .content-wrapper {\n    padding-top: 0 !important;\n  }\n  .invoice {\n    border: 0;\n    margin: 0;\n    padding: 0;\n    width: 100%;\n  }\n  .invoice-col {\n    float: left;\n    width: 33.3333333%;\n  }\n  .table-responsive {\n    overflow: auto;\n  }\n  .table-responsive > .table tr th,\n  .table-responsive > .table tr td {\n    white-space: normal !important;\n  }\n}\n\n.text-bold, .text-bold.table td, .text-bold.table th {\n  font-weight: 700;\n}\n\n.text-xs {\n  font-size: 0.75rem !important;\n}\n\n.text-sm {\n  font-size: 0.875rem !important;\n}\n\n.text-md {\n  font-size: 1rem !important;\n}\n\n.text-lg {\n  font-size: 1.25rem !important;\n}\n\n.text-xl {\n  font-size: 2rem !important;\n}\n\n.text-navy {\n  color: #001f3f;\n}\n\n.text-olive {\n  color: #3d9970;\n}\n\n.text-lime {\n  color: #01ff70;\n}\n\n.text-fuchsia {\n  color: #f012be;\n}\n\n.text-maroon {\n  color: #d81b60;\n}\n\n.text-blue {\n  color: #007bff;\n}\n\n.text-indigo {\n  color: #6610f2;\n}\n\n.text-purple {\n  color: #6f42c1;\n}\n\n.text-pink {\n  color: #e83e8c;\n}\n\n.text-red {\n  color: #dc3545;\n}\n\n.text-orange {\n  color: #fd7e14;\n}\n\n.text-yellow {\n  color: #ffc107;\n}\n\n.text-green {\n  color: #28a745;\n}\n\n.text-teal {\n  color: #20c997;\n}\n\n.text-cyan {\n  color: #17a2b8;\n}\n\n.text-white {\n  color: #ffffff;\n}\n\n.text-gray {\n  color: #6c757d;\n}\n\n.text-gray-dark {\n  color: #343a40;\n}\n\n.elevation-0 {\n  box-shadow: none !important;\n}\n\n.elevation-1 {\n  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24) !important;\n}\n\n.elevation-2 {\n  box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16), 0 3px 6px rgba(0, 0, 0, 0.23) !important;\n}\n\n.elevation-3 {\n  box-shadow: 0 10px 20px rgba(0, 0, 0, 0.19), 0 6px 6px rgba(0, 0, 0, 0.23) !important;\n}\n\n.elevation-4 {\n  box-shadow: 0 14px 28px rgba(0, 0, 0, 0.25), 0 10px 10px rgba(0, 0, 0, 0.22) !important;\n}\n\n.elevation-5 {\n  box-shadow: 0 19px 38px rgba(0, 0, 0, 0.3), 0 15px 12px rgba(0, 0, 0, 0.22) !important;\n}\n\n.bg-primary {\n  background-color: #007bff !important;\n}\n\n.bg-primary,\n.bg-primary > a {\n  color: #ffffff !important;\n}\n\n.bg-primary.btn:hover {\n  border-color: #0062cc;\n  color: #ececec;\n}\n\n.bg-primary.btn:not(:disabled):not(.disabled):active, .bg-primary.btn:not(:disabled):not(.disabled).active, .bg-primary.btn:active, .bg-primary.btn.active {\n  background-color: #0062cc !important;\n  border-color: #005cbf;\n  color: #ffffff;\n}\n\n.bg-secondary {\n  background-color: #6c757d !important;\n}\n\n.bg-secondary,\n.bg-secondary > a {\n  color: #ffffff !important;\n}\n\n.bg-secondary.btn:hover {\n  border-color: #545b62;\n  color: #ececec;\n}\n\n.bg-secondary.btn:not(:disabled):not(.disabled):active, .bg-secondary.btn:not(:disabled):not(.disabled).active, .bg-secondary.btn:active, .bg-secondary.btn.active {\n  background-color: #545b62 !important;\n  border-color: #4e555b;\n  color: #ffffff;\n}\n\n.bg-success {\n  background-color: #28a745 !important;\n}\n\n.bg-success,\n.bg-success > a {\n  color: #ffffff !important;\n}\n\n.bg-success.btn:hover {\n  border-color: #1e7e34;\n  color: #ececec;\n}\n\n.bg-success.btn:not(:disabled):not(.disabled):active, .bg-success.btn:not(:disabled):not(.disabled).active, .bg-success.btn:active, .bg-success.btn.active {\n  background-color: #1e7e34 !important;\n  border-color: #1c7430;\n  color: #ffffff;\n}\n\n.bg-info {\n  background-color: #17a2b8 !important;\n}\n\n.bg-info,\n.bg-info > a {\n  color: #ffffff !important;\n}\n\n.bg-info.btn:hover {\n  border-color: #117a8b;\n  color: #ececec;\n}\n\n.bg-info.btn:not(:disabled):not(.disabled):active, .bg-info.btn:not(:disabled):not(.disabled).active, .bg-info.btn:active, .bg-info.btn.active {\n  background-color: #117a8b !important;\n  border-color: #10707f;\n  color: #ffffff;\n}\n\n.bg-warning {\n  background-color: #ffc107 !important;\n}\n\n.bg-warning,\n.bg-warning > a {\n  color: #1F2D3D !important;\n}\n\n.bg-warning.btn:hover {\n  border-color: #d39e00;\n  color: #121a24;\n}\n\n.bg-warning.btn:not(:disabled):not(.disabled):active, .bg-warning.btn:not(:disabled):not(.disabled).active, .bg-warning.btn:active, .bg-warning.btn.active {\n  background-color: #d39e00 !important;\n  border-color: #c69500;\n  color: #1F2D3D;\n}\n\n.bg-danger {\n  background-color: #dc3545 !important;\n}\n\n.bg-danger,\n.bg-danger > a {\n  color: #ffffff !important;\n}\n\n.bg-danger.btn:hover {\n  border-color: #bd2130;\n  color: #ececec;\n}\n\n.bg-danger.btn:not(:disabled):not(.disabled):active, .bg-danger.btn:not(:disabled):not(.disabled).active, .bg-danger.btn:active, .bg-danger.btn.active {\n  background-color: #bd2130 !important;\n  border-color: #b21f2d;\n  color: #ffffff;\n}\n\n.bg-light {\n  background-color: #f8f9fa !important;\n}\n\n.bg-light,\n.bg-light > a {\n  color: #1F2D3D !important;\n}\n\n.bg-light.btn:hover {\n  border-color: #dae0e5;\n  color: #121a24;\n}\n\n.bg-light.btn:not(:disabled):not(.disabled):active, .bg-light.btn:not(:disabled):not(.disabled).active, .bg-light.btn:active, .bg-light.btn.active {\n  background-color: #dae0e5 !important;\n  border-color: #d3d9df;\n  color: #1F2D3D;\n}\n\n.bg-dark {\n  background-color: #343a40 !important;\n}\n\n.bg-dark,\n.bg-dark > a {\n  color: #ffffff !important;\n}\n\n.bg-dark.btn:hover {\n  border-color: #1d2124;\n  color: #ececec;\n}\n\n.bg-dark.btn:not(:disabled):not(.disabled):active, .bg-dark.btn:not(:disabled):not(.disabled).active, .bg-dark.btn:active, .bg-dark.btn.active {\n  background-color: #1d2124 !important;\n  border-color: #171a1d;\n  color: #ffffff;\n}\n\n.bg-navy {\n  background-color: #001f3f !important;\n}\n\n.bg-navy,\n.bg-navy > a {\n  color: #ffffff !important;\n}\n\n.bg-navy.btn:hover {\n  border-color: #00060c;\n  color: #ececec;\n}\n\n.bg-navy.btn:not(:disabled):not(.disabled):active, .bg-navy.btn:not(:disabled):not(.disabled).active, .bg-navy.btn:active, .bg-navy.btn.active {\n  background-color: #00060c !important;\n  border-color: black;\n  color: #ffffff;\n}\n\n.bg-olive {\n  background-color: #3d9970 !important;\n}\n\n.bg-olive,\n.bg-olive > a {\n  color: #ffffff !important;\n}\n\n.bg-olive.btn:hover {\n  border-color: #2e7555;\n  color: #ececec;\n}\n\n.bg-olive.btn:not(:disabled):not(.disabled):active, .bg-olive.btn:not(:disabled):not(.disabled).active, .bg-olive.btn:active, .bg-olive.btn.active {\n  background-color: #2e7555 !important;\n  border-color: #2b6b4f;\n  color: #ffffff;\n}\n\n.bg-lime {\n  background-color: #01ff70 !important;\n}\n\n.bg-lime,\n.bg-lime > a {\n  color: #1F2D3D !important;\n}\n\n.bg-lime.btn:hover {\n  border-color: #00cd5a;\n  color: #121a24;\n}\n\n.bg-lime.btn:not(:disabled):not(.disabled):active, .bg-lime.btn:not(:disabled):not(.disabled).active, .bg-lime.btn:active, .bg-lime.btn.active {\n  background-color: #00cd5a !important;\n  border-color: #00c054;\n  color: #ffffff;\n}\n\n.bg-fuchsia {\n  background-color: #f012be !important;\n}\n\n.bg-fuchsia,\n.bg-fuchsia > a {\n  color: #ffffff !important;\n}\n\n.bg-fuchsia.btn:hover {\n  border-color: #c30c9a;\n  color: #ececec;\n}\n\n.bg-fuchsia.btn:not(:disabled):not(.disabled):active, .bg-fuchsia.btn:not(:disabled):not(.disabled).active, .bg-fuchsia.btn:active, .bg-fuchsia.btn.active {\n  background-color: #c30c9a !important;\n  border-color: #b70c90;\n  color: #ffffff;\n}\n\n.bg-maroon {\n  background-color: #d81b60 !important;\n}\n\n.bg-maroon,\n.bg-maroon > a {\n  color: #ffffff !important;\n}\n\n.bg-maroon.btn:hover {\n  border-color: #ab154c;\n  color: #ececec;\n}\n\n.bg-maroon.btn:not(:disabled):not(.disabled):active, .bg-maroon.btn:not(:disabled):not(.disabled).active, .bg-maroon.btn:active, .bg-maroon.btn.active {\n  background-color: #ab154c !important;\n  border-color: #9f1447;\n  color: #ffffff;\n}\n\n.bg-blue {\n  background-color: #007bff !important;\n}\n\n.bg-blue,\n.bg-blue > a {\n  color: #ffffff !important;\n}\n\n.bg-blue.btn:hover {\n  border-color: #0062cc;\n  color: #ececec;\n}\n\n.bg-blue.btn:not(:disabled):not(.disabled):active, .bg-blue.btn:not(:disabled):not(.disabled).active, .bg-blue.btn:active, .bg-blue.btn.active {\n  background-color: #0062cc !important;\n  border-color: #005cbf;\n  color: #ffffff;\n}\n\n.bg-indigo {\n  background-color: #6610f2 !important;\n}\n\n.bg-indigo,\n.bg-indigo > a {\n  color: #ffffff !important;\n}\n\n.bg-indigo.btn:hover {\n  border-color: #510bc4;\n  color: #ececec;\n}\n\n.bg-indigo.btn:not(:disabled):not(.disabled):active, .bg-indigo.btn:not(:disabled):not(.disabled).active, .bg-indigo.btn:active, .bg-indigo.btn.active {\n  background-color: #510bc4 !important;\n  border-color: #4c0ab8;\n  color: #ffffff;\n}\n\n.bg-purple {\n  background-color: #6f42c1 !important;\n}\n\n.bg-purple,\n.bg-purple > a {\n  color: #ffffff !important;\n}\n\n.bg-purple.btn:hover {\n  border-color: #59339d;\n  color: #ececec;\n}\n\n.bg-purple.btn:not(:disabled):not(.disabled):active, .bg-purple.btn:not(:disabled):not(.disabled).active, .bg-purple.btn:active, .bg-purple.btn.active {\n  background-color: #59339d !important;\n  border-color: #533093;\n  color: #ffffff;\n}\n\n.bg-pink {\n  background-color: #e83e8c !important;\n}\n\n.bg-pink,\n.bg-pink > a {\n  color: #ffffff !important;\n}\n\n.bg-pink.btn:hover {\n  border-color: #d91a72;\n  color: #ececec;\n}\n\n.bg-pink.btn:not(:disabled):not(.disabled):active, .bg-pink.btn:not(:disabled):not(.disabled).active, .bg-pink.btn:active, .bg-pink.btn.active {\n  background-color: #d91a72 !important;\n  border-color: #ce196c;\n  color: #ffffff;\n}\n\n.bg-red {\n  background-color: #dc3545 !important;\n}\n\n.bg-red,\n.bg-red > a {\n  color: #ffffff !important;\n}\n\n.bg-red.btn:hover {\n  border-color: #bd2130;\n  color: #ececec;\n}\n\n.bg-red.btn:not(:disabled):not(.disabled):active, .bg-red.btn:not(:disabled):not(.disabled).active, .bg-red.btn:active, .bg-red.btn.active {\n  background-color: #bd2130 !important;\n  border-color: #b21f2d;\n  color: #ffffff;\n}\n\n.bg-orange {\n  background-color: #fd7e14 !important;\n}\n\n.bg-orange,\n.bg-orange > a {\n  color: #1F2D3D !important;\n}\n\n.bg-orange.btn:hover {\n  border-color: #dc6502;\n  color: #121a24;\n}\n\n.bg-orange.btn:not(:disabled):not(.disabled):active, .bg-orange.btn:not(:disabled):not(.disabled).active, .bg-orange.btn:active, .bg-orange.btn.active {\n  background-color: #dc6502 !important;\n  border-color: #cf5f02;\n  color: #ffffff;\n}\n\n.bg-yellow {\n  background-color: #ffc107 !important;\n}\n\n.bg-yellow,\n.bg-yellow > a {\n  color: #1F2D3D !important;\n}\n\n.bg-yellow.btn:hover {\n  border-color: #d39e00;\n  color: #121a24;\n}\n\n.bg-yellow.btn:not(:disabled):not(.disabled):active, .bg-yellow.btn:not(:disabled):not(.disabled).active, .bg-yellow.btn:active, .bg-yellow.btn.active {\n  background-color: #d39e00 !important;\n  border-color: #c69500;\n  color: #1F2D3D;\n}\n\n.bg-green {\n  background-color: #28a745 !important;\n}\n\n.bg-green,\n.bg-green > a {\n  color: #ffffff !important;\n}\n\n.bg-green.btn:hover {\n  border-color: #1e7e34;\n  color: #ececec;\n}\n\n.bg-green.btn:not(:disabled):not(.disabled):active, .bg-green.btn:not(:disabled):not(.disabled).active, .bg-green.btn:active, .bg-green.btn.active {\n  background-color: #1e7e34 !important;\n  border-color: #1c7430;\n  color: #ffffff;\n}\n\n.bg-teal {\n  background-color: #20c997 !important;\n}\n\n.bg-teal,\n.bg-teal > a {\n  color: #ffffff !important;\n}\n\n.bg-teal.btn:hover {\n  border-color: #199d76;\n  color: #ececec;\n}\n\n.bg-teal.btn:not(:disabled):not(.disabled):active, .bg-teal.btn:not(:disabled):not(.disabled).active, .bg-teal.btn:active, .bg-teal.btn.active {\n  background-color: #199d76 !important;\n  border-color: #17926e;\n  color: #ffffff;\n}\n\n.bg-cyan {\n  background-color: #17a2b8 !important;\n}\n\n.bg-cyan,\n.bg-cyan > a {\n  color: #ffffff !important;\n}\n\n.bg-cyan.btn:hover {\n  border-color: #117a8b;\n  color: #ececec;\n}\n\n.bg-cyan.btn:not(:disabled):not(.disabled):active, .bg-cyan.btn:not(:disabled):not(.disabled).active, .bg-cyan.btn:active, .bg-cyan.btn.active {\n  background-color: #117a8b !important;\n  border-color: #10707f;\n  color: #ffffff;\n}\n\n.bg-white {\n  background-color: #ffffff !important;\n}\n\n.bg-white,\n.bg-white > a {\n  color: #1F2D3D !important;\n}\n\n.bg-white.btn:hover {\n  border-color: #e6e6e6;\n  color: #121a24;\n}\n\n.bg-white.btn:not(:disabled):not(.disabled):active, .bg-white.btn:not(:disabled):not(.disabled).active, .bg-white.btn:active, .bg-white.btn.active {\n  background-color: #e6e6e6 !important;\n  border-color: #dfdfdf;\n  color: #1F2D3D;\n}\n\n.bg-gray {\n  background-color: #6c757d !important;\n}\n\n.bg-gray,\n.bg-gray > a {\n  color: #ffffff !important;\n}\n\n.bg-gray.btn:hover {\n  border-color: #545b62;\n  color: #ececec;\n}\n\n.bg-gray.btn:not(:disabled):not(.disabled):active, .bg-gray.btn:not(:disabled):not(.disabled).active, .bg-gray.btn:active, .bg-gray.btn.active {\n  background-color: #545b62 !important;\n  border-color: #4e555b;\n  color: #ffffff;\n}\n\n.bg-gray-dark {\n  background-color: #343a40 !important;\n}\n\n.bg-gray-dark,\n.bg-gray-dark > a {\n  color: #ffffff !important;\n}\n\n.bg-gray-dark.btn:hover {\n  border-color: #1d2124;\n  color: #ececec;\n}\n\n.bg-gray-dark.btn:not(:disabled):not(.disabled):active, .bg-gray-dark.btn:not(:disabled):not(.disabled).active, .bg-gray-dark.btn:active, .bg-gray-dark.btn.active {\n  background-color: #1d2124 !important;\n  border-color: #171a1d;\n  color: #ffffff;\n}\n\n.bg-gray {\n  background-color: #adb5bd;\n  color: #1F2D3D;\n}\n\n.bg-gray-light {\n  background-color: #f2f4f5;\n  color: #1F2D3D !important;\n}\n\n.bg-black {\n  background-color: #000;\n  color: #ffffff !important;\n}\n\n.bg-white {\n  background-color: #ffffff;\n  color: #1F2D3D !important;\n}\n\n.bg-gradient-primary {\n  color: #ffffff;\n}\n\n.bg-gradient-primary {\n  background: #007bff linear-gradient(180deg, #268fff, #007bff) repeat-x !important;\n}\n\n.bg-gradient-primary.btn.disabled, .bg-gradient-primary.btn:disabled, .bg-gradient-primary.btn:not(:disabled):not(.disabled):active, .bg-gradient-primary.btn:not(:disabled):not(.disabled).active,\n.show > .bg-gradient-primary.btn.dropdown-toggle {\n  background-image: none !important;\n}\n\n.bg-gradient-primary.btn:hover {\n  border-color: #0062cc;\n  color: #ececec;\n}\n\n.bg-gradient-primary.btn:hover {\n  background: #0069d9 linear-gradient(180deg, #267fde, #0069d9) repeat-x !important;\n}\n\n.bg-gradient-primary.btn:not(:disabled):not(.disabled):active, .bg-gradient-primary.btn:not(:disabled):not(.disabled).active, .bg-gradient-primary.btn:active, .bg-gradient-primary.btn.active {\n  border-color: #005cbf;\n  color: #ffffff;\n}\n\n.bg-gradient-primary.btn:not(:disabled):not(.disabled):active, .bg-gradient-primary.btn:not(:disabled):not(.disabled).active, .bg-gradient-primary.btn:active, .bg-gradient-primary.btn.active {\n  background: #0062cc linear-gradient(180deg, #267ad4, #0062cc) repeat-x !important;\n}\n\n.bg-gradient-secondary {\n  color: #ffffff;\n}\n\n.bg-gradient-secondary {\n  background: #6c757d linear-gradient(180deg, #828a91, #6c757d) repeat-x !important;\n}\n\n.bg-gradient-secondary.btn.disabled, .bg-gradient-secondary.btn:disabled, .bg-gradient-secondary.btn:not(:disabled):not(.disabled):active, .bg-gradient-secondary.btn:not(:disabled):not(.disabled).active,\n.show > .bg-gradient-secondary.btn.dropdown-toggle {\n  background-image: none !important;\n}\n\n.bg-gradient-secondary.btn:hover {\n  border-color: #545b62;\n  color: #ececec;\n}\n\n.bg-gradient-secondary.btn:hover {\n  background: #5a6268 linear-gradient(180deg, #73797f, #5a6268) repeat-x !important;\n}\n\n.bg-gradient-secondary.btn:not(:disabled):not(.disabled):active, .bg-gradient-secondary.btn:not(:disabled):not(.disabled).active, .bg-gradient-secondary.btn:active, .bg-gradient-secondary.btn.active {\n  border-color: #4e555b;\n  color: #ffffff;\n}\n\n.bg-gradient-secondary.btn:not(:disabled):not(.disabled):active, .bg-gradient-secondary.btn:not(:disabled):not(.disabled).active, .bg-gradient-secondary.btn:active, .bg-gradient-secondary.btn.active {\n  background: #545b62 linear-gradient(180deg, #6e7479, #545b62) repeat-x !important;\n}\n\n.bg-gradient-success {\n  color: #ffffff;\n}\n\n.bg-gradient-success {\n  background: #28a745 linear-gradient(180deg, #48b461, #28a745) repeat-x !important;\n}\n\n.bg-gradient-success.btn.disabled, .bg-gradient-success.btn:disabled, .bg-gradient-success.btn:not(:disabled):not(.disabled):active, .bg-gradient-success.btn:not(:disabled):not(.disabled).active,\n.show > .bg-gradient-success.btn.dropdown-toggle {\n  background-image: none !important;\n}\n\n.bg-gradient-success.btn:hover {\n  border-color: #1e7e34;\n  color: #ececec;\n}\n\n.bg-gradient-success.btn:hover {\n  background: #218838 linear-gradient(180deg, #429a56, #218838) repeat-x !important;\n}\n\n.bg-gradient-success.btn:not(:disabled):not(.disabled):active, .bg-gradient-success.btn:not(:disabled):not(.disabled).active, .bg-gradient-success.btn:active, .bg-gradient-success.btn.active {\n  border-color: #1c7430;\n  color: #ffffff;\n}\n\n.bg-gradient-success.btn:not(:disabled):not(.disabled):active, .bg-gradient-success.btn:not(:disabled):not(.disabled).active, .bg-gradient-success.btn:active, .bg-gradient-success.btn.active {\n  background: #1e7e34 linear-gradient(180deg, #409152, #1e7e34) repeat-x !important;\n}\n\n.bg-gradient-info {\n  color: #ffffff;\n}\n\n.bg-gradient-info {\n  background: #17a2b8 linear-gradient(180deg, #3ab0c3, #17a2b8) repeat-x !important;\n}\n\n.bg-gradient-info.btn.disabled, .bg-gradient-info.btn:disabled, .bg-gradient-info.btn:not(:disabled):not(.disabled):active, .bg-gradient-info.btn:not(:disabled):not(.disabled).active,\n.show > .bg-gradient-info.btn.dropdown-toggle {\n  background-image: none !important;\n}\n\n.bg-gradient-info.btn:hover {\n  border-color: #117a8b;\n  color: #ececec;\n}\n\n.bg-gradient-info.btn:hover {\n  background: #138496 linear-gradient(180deg, #3697a6, #138496) repeat-x !important;\n}\n\n.bg-gradient-info.btn:not(:disabled):not(.disabled):active, .bg-gradient-info.btn:not(:disabled):not(.disabled).active, .bg-gradient-info.btn:active, .bg-gradient-info.btn.active {\n  border-color: #10707f;\n  color: #ffffff;\n}\n\n.bg-gradient-info.btn:not(:disabled):not(.disabled):active, .bg-gradient-info.btn:not(:disabled):not(.disabled).active, .bg-gradient-info.btn:active, .bg-gradient-info.btn.active {\n  background: #117a8b linear-gradient(180deg, #358e9c, #117a8b) repeat-x !important;\n}\n\n.bg-gradient-warning {\n  color: #1F2D3D;\n}\n\n.bg-gradient-warning {\n  background: #ffc107 linear-gradient(180deg, #ffca2c, #ffc107) repeat-x !important;\n}\n\n.bg-gradient-warning.btn.disabled, .bg-gradient-warning.btn:disabled, .bg-gradient-warning.btn:not(:disabled):not(.disabled):active, .bg-gradient-warning.btn:not(:disabled):not(.disabled).active,\n.show > .bg-gradient-warning.btn.dropdown-toggle {\n  background-image: none !important;\n}\n\n.bg-gradient-warning.btn:hover {\n  border-color: #d39e00;\n  color: #121a24;\n}\n\n.bg-gradient-warning.btn:hover {\n  background: #e0a800 linear-gradient(180deg, #e4b526, #e0a800) repeat-x !important;\n}\n\n.bg-gradient-warning.btn:not(:disabled):not(.disabled):active, .bg-gradient-warning.btn:not(:disabled):not(.disabled).active, .bg-gradient-warning.btn:active, .bg-gradient-warning.btn.active {\n  border-color: #c69500;\n  color: #1F2D3D;\n}\n\n.bg-gradient-warning.btn:not(:disabled):not(.disabled):active, .bg-gradient-warning.btn:not(:disabled):not(.disabled).active, .bg-gradient-warning.btn:active, .bg-gradient-warning.btn.active {\n  background: #d39e00 linear-gradient(180deg, #daad26, #d39e00) repeat-x !important;\n}\n\n.bg-gradient-danger {\n  color: #ffffff;\n}\n\n.bg-gradient-danger {\n  background: #dc3545 linear-gradient(180deg, #e15361, #dc3545) repeat-x !important;\n}\n\n.bg-gradient-danger.btn.disabled, .bg-gradient-danger.btn:disabled, .bg-gradient-danger.btn:not(:disabled):not(.disabled):active, .bg-gradient-danger.btn:not(:disabled):not(.disabled).active,\n.show > .bg-gradient-danger.btn.dropdown-toggle {\n  background-image: none !important;\n}\n\n.bg-gradient-danger.btn:hover {\n  border-color: #bd2130;\n  color: #ececec;\n}\n\n.bg-gradient-danger.btn:hover {\n  background: #c82333 linear-gradient(180deg, #d04451, #c82333) repeat-x !important;\n}\n\n.bg-gradient-danger.btn:not(:disabled):not(.disabled):active, .bg-gradient-danger.btn:not(:disabled):not(.disabled).active, .bg-gradient-danger.btn:active, .bg-gradient-danger.btn.active {\n  border-color: #b21f2d;\n  color: #ffffff;\n}\n\n.bg-gradient-danger.btn:not(:disabled):not(.disabled):active, .bg-gradient-danger.btn:not(:disabled):not(.disabled).active, .bg-gradient-danger.btn:active, .bg-gradient-danger.btn.active {\n  background: #bd2130 linear-gradient(180deg, #c7424f, #bd2130) repeat-x !important;\n}\n\n.bg-gradient-light {\n  color: #1F2D3D;\n}\n\n.bg-gradient-light {\n  background: #f8f9fa linear-gradient(180deg, #f9fafb, #f8f9fa) repeat-x !important;\n}\n\n.bg-gradient-light.btn.disabled, .bg-gradient-light.btn:disabled, .bg-gradient-light.btn:not(:disabled):not(.disabled):active, .bg-gradient-light.btn:not(:disabled):not(.disabled).active,\n.show > .bg-gradient-light.btn.dropdown-toggle {\n  background-image: none !important;\n}\n\n.bg-gradient-light.btn:hover {\n  border-color: #dae0e5;\n  color: #121a24;\n}\n\n.bg-gradient-light.btn:hover {\n  background: #e2e6ea linear-gradient(180deg, #e6eaed, #e2e6ea) repeat-x !important;\n}\n\n.bg-gradient-light.btn:not(:disabled):not(.disabled):active, .bg-gradient-light.btn:not(:disabled):not(.disabled).active, .bg-gradient-light.btn:active, .bg-gradient-light.btn.active {\n  border-color: #d3d9df;\n  color: #1F2D3D;\n}\n\n.bg-gradient-light.btn:not(:disabled):not(.disabled):active, .bg-gradient-light.btn:not(:disabled):not(.disabled).active, .bg-gradient-light.btn:active, .bg-gradient-light.btn.active {\n  background: #dae0e5 linear-gradient(180deg, #e0e4e9, #dae0e5) repeat-x !important;\n}\n\n.bg-gradient-dark {\n  color: #ffffff;\n}\n\n.bg-gradient-dark {\n  background: #343a40 linear-gradient(180deg, #52585d, #343a40) repeat-x !important;\n}\n\n.bg-gradient-dark.btn.disabled, .bg-gradient-dark.btn:disabled, .bg-gradient-dark.btn:not(:disabled):not(.disabled):active, .bg-gradient-dark.btn:not(:disabled):not(.disabled).active,\n.show > .bg-gradient-dark.btn.dropdown-toggle {\n  background-image: none !important;\n}\n\n.bg-gradient-dark.btn:hover {\n  border-color: #1d2124;\n  color: #ececec;\n}\n\n.bg-gradient-dark.btn:hover {\n  background: #23272b linear-gradient(180deg, #44474b, #23272b) repeat-x !important;\n}\n\n.bg-gradient-dark.btn:not(:disabled):not(.disabled):active, .bg-gradient-dark.btn:not(:disabled):not(.disabled).active, .bg-gradient-dark.btn:active, .bg-gradient-dark.btn.active {\n  border-color: #171a1d;\n  color: #ffffff;\n}\n\n.bg-gradient-dark.btn:not(:disabled):not(.disabled):active, .bg-gradient-dark.btn:not(:disabled):not(.disabled).active, .bg-gradient-dark.btn:active, .bg-gradient-dark.btn.active {\n  background: #1d2124 linear-gradient(180deg, #3f4245, #1d2124) repeat-x !important;\n}\n\n.bg-gradient-navy {\n  color: #ffffff;\n}\n\n.bg-gradient-navy {\n  background: #001f3f linear-gradient(180deg, #26415c, #001f3f) repeat-x !important;\n}\n\n.bg-gradient-navy.btn.disabled, .bg-gradient-navy.btn:disabled, .bg-gradient-navy.btn:not(:disabled):not(.disabled):active, .bg-gradient-navy.btn:not(:disabled):not(.disabled).active,\n.show > .bg-gradient-navy.btn.dropdown-toggle {\n  background-image: none !important;\n}\n\n.bg-gradient-navy.btn:hover {\n  border-color: #00060c;\n  color: #ececec;\n}\n\n.bg-gradient-navy.btn:hover {\n  background: #000c19 linear-gradient(180deg, #26313b, #000c19) repeat-x !important;\n}\n\n.bg-gradient-navy.btn:not(:disabled):not(.disabled):active, .bg-gradient-navy.btn:not(:disabled):not(.disabled).active, .bg-gradient-navy.btn:active, .bg-gradient-navy.btn.active {\n  border-color: black;\n  color: #ffffff;\n}\n\n.bg-gradient-navy.btn:not(:disabled):not(.disabled):active, .bg-gradient-navy.btn:not(:disabled):not(.disabled).active, .bg-gradient-navy.btn:active, .bg-gradient-navy.btn.active {\n  background: #00060c linear-gradient(180deg, #262b30, #00060c) repeat-x !important;\n}\n\n.bg-gradient-olive {\n  color: #ffffff;\n}\n\n.bg-gradient-olive {\n  background: #3d9970 linear-gradient(180deg, #5aa885, #3d9970) repeat-x !important;\n}\n\n.bg-gradient-olive.btn.disabled, .bg-gradient-olive.btn:disabled, .bg-gradient-olive.btn:not(:disabled):not(.disabled):active, .bg-gradient-olive.btn:not(:disabled):not(.disabled).active,\n.show > .bg-gradient-olive.btn.dropdown-toggle {\n  background-image: none !important;\n}\n\n.bg-gradient-olive.btn:hover {\n  border-color: #2e7555;\n  color: #ececec;\n}\n\n.bg-gradient-olive.btn:hover {\n  background: #327e5c linear-gradient(180deg, #519174, #327e5c) repeat-x !important;\n}\n\n.bg-gradient-olive.btn:not(:disabled):not(.disabled):active, .bg-gradient-olive.btn:not(:disabled):not(.disabled).active, .bg-gradient-olive.btn:active, .bg-gradient-olive.btn.active {\n  border-color: #2b6b4f;\n  color: #ffffff;\n}\n\n.bg-gradient-olive.btn:not(:disabled):not(.disabled):active, .bg-gradient-olive.btn:not(:disabled):not(.disabled).active, .bg-gradient-olive.btn:active, .bg-gradient-olive.btn.active {\n  background: #2e7555 linear-gradient(180deg, #4e896f, #2e7555) repeat-x !important;\n}\n\n.bg-gradient-lime {\n  color: #1F2D3D;\n}\n\n.bg-gradient-lime {\n  background: #01ff70 linear-gradient(180deg, #27ff85, #01ff70) repeat-x !important;\n}\n\n.bg-gradient-lime.btn.disabled, .bg-gradient-lime.btn:disabled, .bg-gradient-lime.btn:not(:disabled):not(.disabled):active, .bg-gradient-lime.btn:not(:disabled):not(.disabled).active,\n.show > .bg-gradient-lime.btn.dropdown-toggle {\n  background-image: none !important;\n}\n\n.bg-gradient-lime.btn:hover {\n  border-color: #00cd5a;\n  color: #121a24;\n}\n\n.bg-gradient-lime.btn:hover {\n  background: #00da5f linear-gradient(180deg, #26df77, #00da5f) repeat-x !important;\n}\n\n.bg-gradient-lime.btn:not(:disabled):not(.disabled):active, .bg-gradient-lime.btn:not(:disabled):not(.disabled).active, .bg-gradient-lime.btn:active, .bg-gradient-lime.btn.active {\n  border-color: #00c054;\n  color: #ffffff;\n}\n\n.bg-gradient-lime.btn:not(:disabled):not(.disabled):active, .bg-gradient-lime.btn:not(:disabled):not(.disabled).active, .bg-gradient-lime.btn:active, .bg-gradient-lime.btn.active {\n  background: #00cd5a linear-gradient(180deg, #26d572, #00cd5a) repeat-x !important;\n}\n\n.bg-gradient-fuchsia {\n  color: #ffffff;\n}\n\n.bg-gradient-fuchsia {\n  background: #f012be linear-gradient(180deg, #f236c8, #f012be) repeat-x !important;\n}\n\n.bg-gradient-fuchsia.btn.disabled, .bg-gradient-fuchsia.btn:disabled, .bg-gradient-fuchsia.btn:not(:disabled):not(.disabled):active, .bg-gradient-fuchsia.btn:not(:disabled):not(.disabled).active,\n.show > .bg-gradient-fuchsia.btn.dropdown-toggle {\n  background-image: none !important;\n}\n\n.bg-gradient-fuchsia.btn:hover {\n  border-color: #c30c9a;\n  color: #ececec;\n}\n\n.bg-gradient-fuchsia.btn:hover {\n  background: #cf0da3 linear-gradient(180deg, #d631b1, #cf0da3) repeat-x !important;\n}\n\n.bg-gradient-fuchsia.btn:not(:disabled):not(.disabled):active, .bg-gradient-fuchsia.btn:not(:disabled):not(.disabled).active, .bg-gradient-fuchsia.btn:active, .bg-gradient-fuchsia.btn.active {\n  border-color: #b70c90;\n  color: #ffffff;\n}\n\n.bg-gradient-fuchsia.btn:not(:disabled):not(.disabled):active, .bg-gradient-fuchsia.btn:not(:disabled):not(.disabled).active, .bg-gradient-fuchsia.btn:active, .bg-gradient-fuchsia.btn.active {\n  background: #c30c9a linear-gradient(180deg, #cc31a9, #c30c9a) repeat-x !important;\n}\n\n.bg-gradient-maroon {\n  color: #ffffff;\n}\n\n.bg-gradient-maroon {\n  background: #d81b60 linear-gradient(180deg, #de3d78, #d81b60) repeat-x !important;\n}\n\n.bg-gradient-maroon.btn.disabled, .bg-gradient-maroon.btn:disabled, .bg-gradient-maroon.btn:not(:disabled):not(.disabled):active, .bg-gradient-maroon.btn:not(:disabled):not(.disabled).active,\n.show > .bg-gradient-maroon.btn.dropdown-toggle {\n  background-image: none !important;\n}\n\n.bg-gradient-maroon.btn:hover {\n  border-color: #ab154c;\n  color: #ececec;\n}\n\n.bg-gradient-maroon.btn:hover {\n  background: #b61751 linear-gradient(180deg, #c13a6b, #b61751) repeat-x !important;\n}\n\n.bg-gradient-maroon.btn:not(:disabled):not(.disabled):active, .bg-gradient-maroon.btn:not(:disabled):not(.disabled).active, .bg-gradient-maroon.btn:active, .bg-gradient-maroon.btn.active {\n  border-color: #9f1447;\n  color: #ffffff;\n}\n\n.bg-gradient-maroon.btn:not(:disabled):not(.disabled):active, .bg-gradient-maroon.btn:not(:disabled):not(.disabled).active, .bg-gradient-maroon.btn:active, .bg-gradient-maroon.btn.active {\n  background: #ab154c linear-gradient(180deg, #b73867, #ab154c) repeat-x !important;\n}\n\n.bg-gradient-blue {\n  color: #ffffff;\n}\n\n.bg-gradient-blue {\n  background: #007bff linear-gradient(180deg, #268fff, #007bff) repeat-x !important;\n}\n\n.bg-gradient-blue.btn.disabled, .bg-gradient-blue.btn:disabled, .bg-gradient-blue.btn:not(:disabled):not(.disabled):active, .bg-gradient-blue.btn:not(:disabled):not(.disabled).active,\n.show > .bg-gradient-blue.btn.dropdown-toggle {\n  background-image: none !important;\n}\n\n.bg-gradient-blue.btn:hover {\n  border-color: #0062cc;\n  color: #ececec;\n}\n\n.bg-gradient-blue.btn:hover {\n  background: #0069d9 linear-gradient(180deg, #267fde, #0069d9) repeat-x !important;\n}\n\n.bg-gradient-blue.btn:not(:disabled):not(.disabled):active, .bg-gradient-blue.btn:not(:disabled):not(.disabled).active, .bg-gradient-blue.btn:active, .bg-gradient-blue.btn.active {\n  border-color: #005cbf;\n  color: #ffffff;\n}\n\n.bg-gradient-blue.btn:not(:disabled):not(.disabled):active, .bg-gradient-blue.btn:not(:disabled):not(.disabled).active, .bg-gradient-blue.btn:active, .bg-gradient-blue.btn.active {\n  background: #0062cc linear-gradient(180deg, #267ad4, #0062cc) repeat-x !important;\n}\n\n.bg-gradient-indigo {\n  color: #ffffff;\n}\n\n.bg-gradient-indigo {\n  background: #6610f2 linear-gradient(180deg, #7d34f4, #6610f2) repeat-x !important;\n}\n\n.bg-gradient-indigo.btn.disabled, .bg-gradient-indigo.btn:disabled, .bg-gradient-indigo.btn:not(:disabled):not(.disabled):active, .bg-gradient-indigo.btn:not(:disabled):not(.disabled).active,\n.show > .bg-gradient-indigo.btn.dropdown-toggle {\n  background-image: none !important;\n}\n\n.bg-gradient-indigo.btn:hover {\n  border-color: #510bc4;\n  color: #ececec;\n}\n\n.bg-gradient-indigo.btn:hover {\n  background: #560bd0 linear-gradient(180deg, #7030d7, #560bd0) repeat-x !important;\n}\n\n.bg-gradient-indigo.btn:not(:disabled):not(.disabled):active, .bg-gradient-indigo.btn:not(:disabled):not(.disabled).active, .bg-gradient-indigo.btn:active, .bg-gradient-indigo.btn.active {\n  border-color: #4c0ab8;\n  color: #ffffff;\n}\n\n.bg-gradient-indigo.btn:not(:disabled):not(.disabled):active, .bg-gradient-indigo.btn:not(:disabled):not(.disabled).active, .bg-gradient-indigo.btn:active, .bg-gradient-indigo.btn.active {\n  background: #510bc4 linear-gradient(180deg, #6b2fcd, #510bc4) repeat-x !important;\n}\n\n.bg-gradient-purple {\n  color: #ffffff;\n}\n\n.bg-gradient-purple {\n  background: #6f42c1 linear-gradient(180deg, #855eca, #6f42c1) repeat-x !important;\n}\n\n.bg-gradient-purple.btn.disabled, .bg-gradient-purple.btn:disabled, .bg-gradient-purple.btn:not(:disabled):not(.disabled):active, .bg-gradient-purple.btn:not(:disabled):not(.disabled).active,\n.show > .bg-gradient-purple.btn.dropdown-toggle {\n  background-image: none !important;\n}\n\n.bg-gradient-purple.btn:hover {\n  border-color: #59339d;\n  color: #ececec;\n}\n\n.bg-gradient-purple.btn:hover {\n  background: #5e37a6 linear-gradient(180deg, #7655b4, #5e37a6) repeat-x !important;\n}\n\n.bg-gradient-purple.btn:not(:disabled):not(.disabled):active, .bg-gradient-purple.btn:not(:disabled):not(.disabled).active, .bg-gradient-purple.btn:active, .bg-gradient-purple.btn.active {\n  border-color: #533093;\n  color: #ffffff;\n}\n\n.bg-gradient-purple.btn:not(:disabled):not(.disabled):active, .bg-gradient-purple.btn:not(:disabled):not(.disabled).active, .bg-gradient-purple.btn:active, .bg-gradient-purple.btn.active {\n  background: #59339d linear-gradient(180deg, #7252ab, #59339d) repeat-x !important;\n}\n\n.bg-gradient-pink {\n  color: #ffffff;\n}\n\n.bg-gradient-pink {\n  background: #e83e8c linear-gradient(180deg, #eb5b9d, #e83e8c) repeat-x !important;\n}\n\n.bg-gradient-pink.btn.disabled, .bg-gradient-pink.btn:disabled, .bg-gradient-pink.btn:not(:disabled):not(.disabled):active, .bg-gradient-pink.btn:not(:disabled):not(.disabled).active,\n.show > .bg-gradient-pink.btn.dropdown-toggle {\n  background-image: none !important;\n}\n\n.bg-gradient-pink.btn:hover {\n  border-color: #d91a72;\n  color: #ececec;\n}\n\n.bg-gradient-pink.btn:hover {\n  background: #e41c78 linear-gradient(180deg, #e83e8c, #e41c78) repeat-x !important;\n}\n\n.bg-gradient-pink.btn:not(:disabled):not(.disabled):active, .bg-gradient-pink.btn:not(:disabled):not(.disabled).active, .bg-gradient-pink.btn:active, .bg-gradient-pink.btn.active {\n  border-color: #ce196c;\n  color: #ffffff;\n}\n\n.bg-gradient-pink.btn:not(:disabled):not(.disabled):active, .bg-gradient-pink.btn:not(:disabled):not(.disabled).active, .bg-gradient-pink.btn:active, .bg-gradient-pink.btn.active {\n  background: #d91a72 linear-gradient(180deg, #df3c87, #d91a72) repeat-x !important;\n}\n\n.bg-gradient-red {\n  color: #ffffff;\n}\n\n.bg-gradient-red {\n  background: #dc3545 linear-gradient(180deg, #e15361, #dc3545) repeat-x !important;\n}\n\n.bg-gradient-red.btn.disabled, .bg-gradient-red.btn:disabled, .bg-gradient-red.btn:not(:disabled):not(.disabled):active, .bg-gradient-red.btn:not(:disabled):not(.disabled).active,\n.show > .bg-gradient-red.btn.dropdown-toggle {\n  background-image: none !important;\n}\n\n.bg-gradient-red.btn:hover {\n  border-color: #bd2130;\n  color: #ececec;\n}\n\n.bg-gradient-red.btn:hover {\n  background: #c82333 linear-gradient(180deg, #d04451, #c82333) repeat-x !important;\n}\n\n.bg-gradient-red.btn:not(:disabled):not(.disabled):active, .bg-gradient-red.btn:not(:disabled):not(.disabled).active, .bg-gradient-red.btn:active, .bg-gradient-red.btn.active {\n  border-color: #b21f2d;\n  color: #ffffff;\n}\n\n.bg-gradient-red.btn:not(:disabled):not(.disabled):active, .bg-gradient-red.btn:not(:disabled):not(.disabled).active, .bg-gradient-red.btn:active, .bg-gradient-red.btn.active {\n  background: #bd2130 linear-gradient(180deg, #c7424f, #bd2130) repeat-x !important;\n}\n\n.bg-gradient-orange {\n  color: #1F2D3D;\n}\n\n.bg-gradient-orange {\n  background: #fd7e14 linear-gradient(180deg, #fd9137, #fd7e14) repeat-x !important;\n}\n\n.bg-gradient-orange.btn.disabled, .bg-gradient-orange.btn:disabled, .bg-gradient-orange.btn:not(:disabled):not(.disabled):active, .bg-gradient-orange.btn:not(:disabled):not(.disabled).active,\n.show > .bg-gradient-orange.btn.dropdown-toggle {\n  background-image: none !important;\n}\n\n.bg-gradient-orange.btn:hover {\n  border-color: #dc6502;\n  color: #121a24;\n}\n\n.bg-gradient-orange.btn:hover {\n  background: #e96b02 linear-gradient(180deg, #ec8128, #e96b02) repeat-x !important;\n}\n\n.bg-gradient-orange.btn:not(:disabled):not(.disabled):active, .bg-gradient-orange.btn:not(:disabled):not(.disabled).active, .bg-gradient-orange.btn:active, .bg-gradient-orange.btn.active {\n  border-color: #cf5f02;\n  color: #ffffff;\n}\n\n.bg-gradient-orange.btn:not(:disabled):not(.disabled):active, .bg-gradient-orange.btn:not(:disabled):not(.disabled).active, .bg-gradient-orange.btn:active, .bg-gradient-orange.btn.active {\n  background: #dc6502 linear-gradient(180deg, #e17c28, #dc6502) repeat-x !important;\n}\n\n.bg-gradient-yellow {\n  color: #1F2D3D;\n}\n\n.bg-gradient-yellow {\n  background: #ffc107 linear-gradient(180deg, #ffca2c, #ffc107) repeat-x !important;\n}\n\n.bg-gradient-yellow.btn.disabled, .bg-gradient-yellow.btn:disabled, .bg-gradient-yellow.btn:not(:disabled):not(.disabled):active, .bg-gradient-yellow.btn:not(:disabled):not(.disabled).active,\n.show > .bg-gradient-yellow.btn.dropdown-toggle {\n  background-image: none !important;\n}\n\n.bg-gradient-yellow.btn:hover {\n  border-color: #d39e00;\n  color: #121a24;\n}\n\n.bg-gradient-yellow.btn:hover {\n  background: #e0a800 linear-gradient(180deg, #e4b526, #e0a800) repeat-x !important;\n}\n\n.bg-gradient-yellow.btn:not(:disabled):not(.disabled):active, .bg-gradient-yellow.btn:not(:disabled):not(.disabled).active, .bg-gradient-yellow.btn:active, .bg-gradient-yellow.btn.active {\n  border-color: #c69500;\n  color: #1F2D3D;\n}\n\n.bg-gradient-yellow.btn:not(:disabled):not(.disabled):active, .bg-gradient-yellow.btn:not(:disabled):not(.disabled).active, .bg-gradient-yellow.btn:active, .bg-gradient-yellow.btn.active {\n  background: #d39e00 linear-gradient(180deg, #daad26, #d39e00) repeat-x !important;\n}\n\n.bg-gradient-green {\n  color: #ffffff;\n}\n\n.bg-gradient-green {\n  background: #28a745 linear-gradient(180deg, #48b461, #28a745) repeat-x !important;\n}\n\n.bg-gradient-green.btn.disabled, .bg-gradient-green.btn:disabled, .bg-gradient-green.btn:not(:disabled):not(.disabled):active, .bg-gradient-green.btn:not(:disabled):not(.disabled).active,\n.show > .bg-gradient-green.btn.dropdown-toggle {\n  background-image: none !important;\n}\n\n.bg-gradient-green.btn:hover {\n  border-color: #1e7e34;\n  color: #ececec;\n}\n\n.bg-gradient-green.btn:hover {\n  background: #218838 linear-gradient(180deg, #429a56, #218838) repeat-x !important;\n}\n\n.bg-gradient-green.btn:not(:disabled):not(.disabled):active, .bg-gradient-green.btn:not(:disabled):not(.disabled).active, .bg-gradient-green.btn:active, .bg-gradient-green.btn.active {\n  border-color: #1c7430;\n  color: #ffffff;\n}\n\n.bg-gradient-green.btn:not(:disabled):not(.disabled):active, .bg-gradient-green.btn:not(:disabled):not(.disabled).active, .bg-gradient-green.btn:active, .bg-gradient-green.btn.active {\n  background: #1e7e34 linear-gradient(180deg, #409152, #1e7e34) repeat-x !important;\n}\n\n.bg-gradient-teal {\n  color: #ffffff;\n}\n\n.bg-gradient-teal {\n  background: #20c997 linear-gradient(180deg, #41d1a7, #20c997) repeat-x !important;\n}\n\n.bg-gradient-teal.btn.disabled, .bg-gradient-teal.btn:disabled, .bg-gradient-teal.btn:not(:disabled):not(.disabled):active, .bg-gradient-teal.btn:not(:disabled):not(.disabled).active,\n.show > .bg-gradient-teal.btn.dropdown-toggle {\n  background-image: none !important;\n}\n\n.bg-gradient-teal.btn:hover {\n  border-color: #199d76;\n  color: #ececec;\n}\n\n.bg-gradient-teal.btn:hover {\n  background: #1ba87e linear-gradient(180deg, #3db592, #1ba87e) repeat-x !important;\n}\n\n.bg-gradient-teal.btn:not(:disabled):not(.disabled):active, .bg-gradient-teal.btn:not(:disabled):not(.disabled).active, .bg-gradient-teal.btn:active, .bg-gradient-teal.btn.active {\n  border-color: #17926e;\n  color: #ffffff;\n}\n\n.bg-gradient-teal.btn:not(:disabled):not(.disabled):active, .bg-gradient-teal.btn:not(:disabled):not(.disabled).active, .bg-gradient-teal.btn:active, .bg-gradient-teal.btn.active {\n  background: #199d76 linear-gradient(180deg, #3bac8b, #199d76) repeat-x !important;\n}\n\n.bg-gradient-cyan {\n  color: #ffffff;\n}\n\n.bg-gradient-cyan {\n  background: #17a2b8 linear-gradient(180deg, #3ab0c3, #17a2b8) repeat-x !important;\n}\n\n.bg-gradient-cyan.btn.disabled, .bg-gradient-cyan.btn:disabled, .bg-gradient-cyan.btn:not(:disabled):not(.disabled):active, .bg-gradient-cyan.btn:not(:disabled):not(.disabled).active,\n.show > .bg-gradient-cyan.btn.dropdown-toggle {\n  background-image: none !important;\n}\n\n.bg-gradient-cyan.btn:hover {\n  border-color: #117a8b;\n  color: #ececec;\n}\n\n.bg-gradient-cyan.btn:hover {\n  background: #138496 linear-gradient(180deg, #3697a6, #138496) repeat-x !important;\n}\n\n.bg-gradient-cyan.btn:not(:disabled):not(.disabled):active, .bg-gradient-cyan.btn:not(:disabled):not(.disabled).active, .bg-gradient-cyan.btn:active, .bg-gradient-cyan.btn.active {\n  border-color: #10707f;\n  color: #ffffff;\n}\n\n.bg-gradient-cyan.btn:not(:disabled):not(.disabled):active, .bg-gradient-cyan.btn:not(:disabled):not(.disabled).active, .bg-gradient-cyan.btn:active, .bg-gradient-cyan.btn.active {\n  background: #117a8b linear-gradient(180deg, #358e9c, #117a8b) repeat-x !important;\n}\n\n.bg-gradient-white {\n  color: #1F2D3D;\n}\n\n.bg-gradient-white {\n  background: #ffffff linear-gradient(180deg, white, #ffffff) repeat-x !important;\n}\n\n.bg-gradient-white.btn.disabled, .bg-gradient-white.btn:disabled, .bg-gradient-white.btn:not(:disabled):not(.disabled):active, .bg-gradient-white.btn:not(:disabled):not(.disabled).active,\n.show > .bg-gradient-white.btn.dropdown-toggle {\n  background-image: none !important;\n}\n\n.bg-gradient-white.btn:hover {\n  border-color: #e6e6e6;\n  color: #121a24;\n}\n\n.bg-gradient-white.btn:hover {\n  background: #ececec linear-gradient(180deg, #efefef, #ececec) repeat-x !important;\n}\n\n.bg-gradient-white.btn:not(:disabled):not(.disabled):active, .bg-gradient-white.btn:not(:disabled):not(.disabled).active, .bg-gradient-white.btn:active, .bg-gradient-white.btn.active {\n  border-color: #dfdfdf;\n  color: #1F2D3D;\n}\n\n.bg-gradient-white.btn:not(:disabled):not(.disabled):active, .bg-gradient-white.btn:not(:disabled):not(.disabled).active, .bg-gradient-white.btn:active, .bg-gradient-white.btn.active {\n  background: #e6e6e6 linear-gradient(180deg, #e9e9e9, #e6e6e6) repeat-x !important;\n}\n\n.bg-gradient-gray {\n  color: #ffffff;\n}\n\n.bg-gradient-gray {\n  background: #6c757d linear-gradient(180deg, #828a91, #6c757d) repeat-x !important;\n}\n\n.bg-gradient-gray.btn.disabled, .bg-gradient-gray.btn:disabled, .bg-gradient-gray.btn:not(:disabled):not(.disabled):active, .bg-gradient-gray.btn:not(:disabled):not(.disabled).active,\n.show > .bg-gradient-gray.btn.dropdown-toggle {\n  background-image: none !important;\n}\n\n.bg-gradient-gray.btn:hover {\n  border-color: #545b62;\n  color: #ececec;\n}\n\n.bg-gradient-gray.btn:hover {\n  background: #5a6268 linear-gradient(180deg, #73797f, #5a6268) repeat-x !important;\n}\n\n.bg-gradient-gray.btn:not(:disabled):not(.disabled):active, .bg-gradient-gray.btn:not(:disabled):not(.disabled).active, .bg-gradient-gray.btn:active, .bg-gradient-gray.btn.active {\n  border-color: #4e555b;\n  color: #ffffff;\n}\n\n.bg-gradient-gray.btn:not(:disabled):not(.disabled):active, .bg-gradient-gray.btn:not(:disabled):not(.disabled).active, .bg-gradient-gray.btn:active, .bg-gradient-gray.btn.active {\n  background: #545b62 linear-gradient(180deg, #6e7479, #545b62) repeat-x !important;\n}\n\n.bg-gradient-gray-dark {\n  color: #ffffff;\n}\n\n.bg-gradient-gray-dark {\n  background: #343a40 linear-gradient(180deg, #52585d, #343a40) repeat-x !important;\n}\n\n.bg-gradient-gray-dark.btn.disabled, .bg-gradient-gray-dark.btn:disabled, .bg-gradient-gray-dark.btn:not(:disabled):not(.disabled):active, .bg-gradient-gray-dark.btn:not(:disabled):not(.disabled).active,\n.show > .bg-gradient-gray-dark.btn.dropdown-toggle {\n  background-image: none !important;\n}\n\n.bg-gradient-gray-dark.btn:hover {\n  border-color: #1d2124;\n  color: #ececec;\n}\n\n.bg-gradient-gray-dark.btn:hover {\n  background: #23272b linear-gradient(180deg, #44474b, #23272b) repeat-x !important;\n}\n\n.bg-gradient-gray-dark.btn:not(:disabled):not(.disabled):active, .bg-gradient-gray-dark.btn:not(:disabled):not(.disabled).active, .bg-gradient-gray-dark.btn:active, .bg-gradient-gray-dark.btn.active {\n  border-color: #171a1d;\n  color: #ffffff;\n}\n\n.bg-gradient-gray-dark.btn:not(:disabled):not(.disabled):active, .bg-gradient-gray-dark.btn:not(:disabled):not(.disabled).active, .bg-gradient-gray-dark.btn:active, .bg-gradient-gray-dark.btn.active {\n  background: #1d2124 linear-gradient(180deg, #3f4245, #1d2124) repeat-x !important;\n}\n\n[class^='bg-'].disabled {\n  opacity: .65;\n}\n\na.text-muted:hover {\n  color: #007bff !important;\n}\n\n.link-muted {\n  color: #5d6974;\n}\n\n.link-muted:hover, .link-muted:focus {\n  color: #464f58;\n}\n\n.link-black {\n  color: #6c757d;\n}\n\n.link-black:hover, .link-black:focus {\n  color: #e6e8ea;\n}\n\n.accent-primary a {\n  color: #007bff;\n}\n\n.accent-primary a:hover {\n  color: #0056b3;\n}\n\n.accent-primary .page-item.active .page-link {\n  background-color: #007bff;\n  border-color: #007bff;\n}\n\n.accent-primary .page-item.disabled .page-link {\n  background-color: #ffffff;\n  border-color: #dee2e6;\n}\n\n.accent-secondary a {\n  color: #6c757d;\n}\n\n.accent-secondary a:hover {\n  color: #494f54;\n}\n\n.accent-secondary .page-item.active .page-link {\n  background-color: #6c757d;\n  border-color: #6c757d;\n}\n\n.accent-secondary .page-item.disabled .page-link {\n  background-color: #ffffff;\n  border-color: #dee2e6;\n}\n\n.accent-success a {\n  color: #28a745;\n}\n\n.accent-success a:hover {\n  color: #19692c;\n}\n\n.accent-success .page-item.active .page-link {\n  background-color: #28a745;\n  border-color: #28a745;\n}\n\n.accent-success .page-item.disabled .page-link {\n  background-color: #ffffff;\n  border-color: #dee2e6;\n}\n\n.accent-info a {\n  color: #17a2b8;\n}\n\n.accent-info a:hover {\n  color: #0f6674;\n}\n\n.accent-info .page-item.active .page-link {\n  background-color: #17a2b8;\n  border-color: #17a2b8;\n}\n\n.accent-info .page-item.disabled .page-link {\n  background-color: #ffffff;\n  border-color: #dee2e6;\n}\n\n.accent-warning a {\n  color: #ffc107;\n}\n\n.accent-warning a:hover {\n  color: #ba8b00;\n}\n\n.accent-warning .page-item.active .page-link {\n  background-color: #ffc107;\n  border-color: #ffc107;\n}\n\n.accent-warning .page-item.disabled .page-link {\n  background-color: #ffffff;\n  border-color: #dee2e6;\n}\n\n.accent-danger a {\n  color: #dc3545;\n}\n\n.accent-danger a:hover {\n  color: #a71d2a;\n}\n\n.accent-danger .page-item.active .page-link {\n  background-color: #dc3545;\n  border-color: #dc3545;\n}\n\n.accent-danger .page-item.disabled .page-link {\n  background-color: #ffffff;\n  border-color: #dee2e6;\n}\n\n.accent-light a {\n  color: #f8f9fa;\n}\n\n.accent-light a:hover {\n  color: #cbd3da;\n}\n\n.accent-light .page-item.active .page-link {\n  background-color: #f8f9fa;\n  border-color: #f8f9fa;\n}\n\n.accent-light .page-item.disabled .page-link {\n  background-color: #ffffff;\n  border-color: #dee2e6;\n}\n\n.accent-dark a {\n  color: #343a40;\n}\n\n.accent-dark a:hover {\n  color: #121416;\n}\n\n.accent-dark .page-item.active .page-link {\n  background-color: #343a40;\n  border-color: #343a40;\n}\n\n.accent-dark .page-item.disabled .page-link {\n  background-color: #ffffff;\n  border-color: #dee2e6;\n}\n\n.accent-navy a {\n  color: #001f3f;\n}\n\n.accent-navy a:hover {\n  color: black;\n}\n\n.accent-navy .page-item.active .page-link {\n  background-color: #001f3f;\n  border-color: #001f3f;\n}\n\n.accent-navy .page-item.disabled .page-link {\n  background-color: #ffffff;\n  border-color: #dee2e6;\n}\n\n.accent-olive a {\n  color: #3d9970;\n}\n\n.accent-olive a:hover {\n  color: #276248;\n}\n\n.accent-olive .page-item.active .page-link {\n  background-color: #3d9970;\n  border-color: #3d9970;\n}\n\n.accent-olive .page-item.disabled .page-link {\n  background-color: #ffffff;\n  border-color: #dee2e6;\n}\n\n.accent-lime a {\n  color: #01ff70;\n}\n\n.accent-lime a:hover {\n  color: #00b44e;\n}\n\n.accent-lime .page-item.active .page-link {\n  background-color: #01ff70;\n  border-color: #01ff70;\n}\n\n.accent-lime .page-item.disabled .page-link {\n  background-color: #ffffff;\n  border-color: #dee2e6;\n}\n\n.accent-fuchsia a {\n  color: #f012be;\n}\n\n.accent-fuchsia a:hover {\n  color: #ab0b87;\n}\n\n.accent-fuchsia .page-item.active .page-link {\n  background-color: #f012be;\n  border-color: #f012be;\n}\n\n.accent-fuchsia .page-item.disabled .page-link {\n  background-color: #ffffff;\n  border-color: #dee2e6;\n}\n\n.accent-maroon a {\n  color: #d81b60;\n}\n\n.accent-maroon a:hover {\n  color: #941342;\n}\n\n.accent-maroon .page-item.active .page-link {\n  background-color: #d81b60;\n  border-color: #d81b60;\n}\n\n.accent-maroon .page-item.disabled .page-link {\n  background-color: #ffffff;\n  border-color: #dee2e6;\n}\n\n.accent-blue a {\n  color: #007bff;\n}\n\n.accent-blue a:hover {\n  color: #0056b3;\n}\n\n.accent-blue .page-item.active .page-link {\n  background-color: #007bff;\n  border-color: #007bff;\n}\n\n.accent-blue .page-item.disabled .page-link {\n  background-color: #ffffff;\n  border-color: #dee2e6;\n}\n\n.accent-indigo a {\n  color: #6610f2;\n}\n\n.accent-indigo a:hover {\n  color: #4709ac;\n}\n\n.accent-indigo .page-item.active .page-link {\n  background-color: #6610f2;\n  border-color: #6610f2;\n}\n\n.accent-indigo .page-item.disabled .page-link {\n  background-color: #ffffff;\n  border-color: #dee2e6;\n}\n\n.accent-purple a {\n  color: #6f42c1;\n}\n\n.accent-purple a:hover {\n  color: #4e2d89;\n}\n\n.accent-purple .page-item.active .page-link {\n  background-color: #6f42c1;\n  border-color: #6f42c1;\n}\n\n.accent-purple .page-item.disabled .page-link {\n  background-color: #ffffff;\n  border-color: #dee2e6;\n}\n\n.accent-pink a {\n  color: #e83e8c;\n}\n\n.accent-pink a:hover {\n  color: #c21766;\n}\n\n.accent-pink .page-item.active .page-link {\n  background-color: #e83e8c;\n  border-color: #e83e8c;\n}\n\n.accent-pink .page-item.disabled .page-link {\n  background-color: #ffffff;\n  border-color: #dee2e6;\n}\n\n.accent-red a {\n  color: #dc3545;\n}\n\n.accent-red a:hover {\n  color: #a71d2a;\n}\n\n.accent-red .page-item.active .page-link {\n  background-color: #dc3545;\n  border-color: #dc3545;\n}\n\n.accent-red .page-item.disabled .page-link {\n  background-color: #ffffff;\n  border-color: #dee2e6;\n}\n\n.accent-orange a {\n  color: #fd7e14;\n}\n\n.accent-orange a:hover {\n  color: #c35a02;\n}\n\n.accent-orange .page-item.active .page-link {\n  background-color: #fd7e14;\n  border-color: #fd7e14;\n}\n\n.accent-orange .page-item.disabled .page-link {\n  background-color: #ffffff;\n  border-color: #dee2e6;\n}\n\n.accent-yellow a {\n  color: #ffc107;\n}\n\n.accent-yellow a:hover {\n  color: #ba8b00;\n}\n\n.accent-yellow .page-item.active .page-link {\n  background-color: #ffc107;\n  border-color: #ffc107;\n}\n\n.accent-yellow .page-item.disabled .page-link {\n  background-color: #ffffff;\n  border-color: #dee2e6;\n}\n\n.accent-green a {\n  color: #28a745;\n}\n\n.accent-green a:hover {\n  color: #19692c;\n}\n\n.accent-green .page-item.active .page-link {\n  background-color: #28a745;\n  border-color: #28a745;\n}\n\n.accent-green .page-item.disabled .page-link {\n  background-color: #ffffff;\n  border-color: #dee2e6;\n}\n\n.accent-teal a {\n  color: #20c997;\n}\n\n.accent-teal a:hover {\n  color: #158765;\n}\n\n.accent-teal .page-item.active .page-link {\n  background-color: #20c997;\n  border-color: #20c997;\n}\n\n.accent-teal .page-item.disabled .page-link {\n  background-color: #ffffff;\n  border-color: #dee2e6;\n}\n\n.accent-cyan a {\n  color: #17a2b8;\n}\n\n.accent-cyan a:hover {\n  color: #0f6674;\n}\n\n.accent-cyan .page-item.active .page-link {\n  background-color: #17a2b8;\n  border-color: #17a2b8;\n}\n\n.accent-cyan .page-item.disabled .page-link {\n  background-color: #ffffff;\n  border-color: #dee2e6;\n}\n\n.accent-white a {\n  color: #ffffff;\n}\n\n.accent-white a:hover {\n  color: #d9d9d9;\n}\n\n.accent-white .page-item.active .page-link {\n  background-color: #ffffff;\n  border-color: #ffffff;\n}\n\n.accent-white .page-item.disabled .page-link {\n  background-color: #ffffff;\n  border-color: #dee2e6;\n}\n\n.accent-gray a {\n  color: #6c757d;\n}\n\n.accent-gray a:hover {\n  color: #494f54;\n}\n\n.accent-gray .page-item.active .page-link {\n  background-color: #6c757d;\n  border-color: #6c757d;\n}\n\n.accent-gray .page-item.disabled .page-link {\n  background-color: #ffffff;\n  border-color: #dee2e6;\n}\n\n.accent-gray-dark a {\n  color: #343a40;\n}\n\n.accent-gray-dark a:hover {\n  color: #121416;\n}\n\n.accent-gray-dark .page-item.active .page-link {\n  background-color: #343a40;\n  border-color: #343a40;\n}\n\n.accent-gray-dark .page-item.disabled .page-link {\n  background-color: #ffffff;\n  border-color: #dee2e6;\n}\n/*# sourceMappingURL=adminlte.css.map */"
  },
  {
    "path": "public/dist/js/adminlte.js",
    "content": "/*!\n * AdminLTE v3.0.0 (https://adminlte.io)\n * Copyright 2014-2019 Colorlib <http://colorlib.com>\n * Licensed under MIT (https://github.com/ColorlibHQ/AdminLTE/blob/master/LICENSE)\n */\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n  typeof define === 'function' && define.amd ? define(['exports'], factory) :\n  (global = global || self, factory(global.adminlte = {}));\n}(this, function (exports) { 'use strict';\n\n  /**\n   * --------------------------------------------\n   * AdminLTE ControlSidebar.js\n   * License MIT\n   * --------------------------------------------\n   */\n  var ControlSidebar = function ($) {\n    /**\n     * Constants\n     * ====================================================\n     */\n    var NAME = 'ControlSidebar';\n    var DATA_KEY = 'lte.controlsidebar';\n    var EVENT_KEY = \".\" + DATA_KEY;\n    var JQUERY_NO_CONFLICT = $.fn[NAME];\n    var Event = {\n      COLLAPSED: \"collapsed\" + EVENT_KEY,\n      EXPANDED: \"expanded\" + EVENT_KEY\n    };\n    var Selector = {\n      CONTROL_SIDEBAR: '.control-sidebar',\n      CONTROL_SIDEBAR_CONTENT: '.control-sidebar-content',\n      DATA_TOGGLE: '[data-widget=\"control-sidebar\"]',\n      CONTENT: '.content-wrapper',\n      HEADER: '.main-header',\n      FOOTER: '.main-footer'\n    };\n    var ClassName = {\n      CONTROL_SIDEBAR_ANIMATE: 'control-sidebar-animate',\n      CONTROL_SIDEBAR_OPEN: 'control-sidebar-open',\n      CONTROL_SIDEBAR_SLIDE: 'control-sidebar-slide-open',\n      LAYOUT_FIXED: 'layout-fixed',\n      NAVBAR_FIXED: 'layout-navbar-fixed',\n      NAVBAR_SM_FIXED: 'layout-sm-navbar-fixed',\n      NAVBAR_MD_FIXED: 'layout-md-navbar-fixed',\n      NAVBAR_LG_FIXED: 'layout-lg-navbar-fixed',\n      NAVBAR_XL_FIXED: 'layout-xl-navbar-fixed',\n      FOOTER_FIXED: 'layout-footer-fixed',\n      FOOTER_SM_FIXED: 'layout-sm-footer-fixed',\n      FOOTER_MD_FIXED: 'layout-md-footer-fixed',\n      FOOTER_LG_FIXED: 'layout-lg-footer-fixed',\n      FOOTER_XL_FIXED: 'layout-xl-footer-fixed'\n    };\n    /**\n     * Class Definition\n     * ====================================================\n     */\n\n    var ControlSidebar =\n    /*#__PURE__*/\n    function () {\n      function ControlSidebar(element, config) {\n        this._element = element;\n        this._config = config;\n\n        this._init();\n      } // Public\n\n\n      var _proto = ControlSidebar.prototype;\n\n      _proto.show = function show() {\n        // Show the control sidebar\n        if (this._config.controlsidebarSlide) {\n          $('html').addClass(ClassName.CONTROL_SIDEBAR_ANIMATE);\n          $('body').removeClass(ClassName.CONTROL_SIDEBAR_SLIDE).delay(300).queue(function () {\n            $(Selector.CONTROL_SIDEBAR).hide();\n            $('html').removeClass(ClassName.CONTROL_SIDEBAR_ANIMATE);\n            $(this).dequeue();\n          });\n        } else {\n          $('body').removeClass(ClassName.CONTROL_SIDEBAR_OPEN);\n        }\n\n        var expandedEvent = $.Event(Event.EXPANDED);\n        $(this._element).trigger(expandedEvent);\n      };\n\n      _proto.collapse = function collapse() {\n        // Collapse the control sidebar\n        if (this._config.controlsidebarSlide) {\n          $('html').addClass(ClassName.CONTROL_SIDEBAR_ANIMATE);\n          $(Selector.CONTROL_SIDEBAR).show().delay(10).queue(function () {\n            $('body').addClass(ClassName.CONTROL_SIDEBAR_SLIDE).delay(300).queue(function () {\n              $('html').removeClass(ClassName.CONTROL_SIDEBAR_ANIMATE);\n              $(this).dequeue();\n            });\n            $(this).dequeue();\n          });\n        } else {\n          $('body').addClass(ClassName.CONTROL_SIDEBAR_OPEN);\n        }\n\n        var collapsedEvent = $.Event(Event.COLLAPSED);\n        $(this._element).trigger(collapsedEvent);\n      };\n\n      _proto.toggle = function toggle() {\n        var shouldOpen = $('body').hasClass(ClassName.CONTROL_SIDEBAR_OPEN) || $('body').hasClass(ClassName.CONTROL_SIDEBAR_SLIDE);\n\n        if (shouldOpen) {\n          // Open the control sidebar\n          this.show();\n        } else {\n          // Close the control sidebar\n          this.collapse();\n        }\n      } // Private\n      ;\n\n      _proto._init = function _init() {\n        var _this = this;\n\n        this._fixHeight();\n\n        this._fixScrollHeight();\n\n        $(window).resize(function () {\n          _this._fixHeight();\n\n          _this._fixScrollHeight();\n        });\n        $(window).scroll(function () {\n          if ($('body').hasClass(ClassName.CONTROL_SIDEBAR_OPEN) || $('body').hasClass(ClassName.CONTROL_SIDEBAR_SLIDE)) {\n            _this._fixScrollHeight();\n          }\n        });\n      };\n\n      _proto._fixScrollHeight = function _fixScrollHeight() {\n        var heights = {\n          scroll: $(document).height(),\n          window: $(window).height(),\n          header: $(Selector.HEADER).outerHeight(),\n          footer: $(Selector.FOOTER).outerHeight()\n        };\n        var positions = {\n          bottom: Math.abs(heights.window + $(window).scrollTop() - heights.scroll),\n          top: $(window).scrollTop()\n        };\n        var navbarFixed = false;\n        var footerFixed = false;\n\n        if ($('body').hasClass(ClassName.LAYOUT_FIXED)) {\n          if ($('body').hasClass(ClassName.NAVBAR_FIXED) || $('body').hasClass(ClassName.NAVBAR_SM_FIXED) || $('body').hasClass(ClassName.NAVBAR_MD_FIXED) || $('body').hasClass(ClassName.NAVBAR_LG_FIXED) || $('body').hasClass(ClassName.NAVBAR_XL_FIXED)) {\n            if ($(Selector.HEADER).css(\"position\") === \"fixed\") {\n              navbarFixed = true;\n            }\n          }\n\n          if ($('body').hasClass(ClassName.FOOTER_FIXED) || $('body').hasClass(ClassName.FOOTER_SM_FIXED) || $('body').hasClass(ClassName.FOOTER_MD_FIXED) || $('body').hasClass(ClassName.FOOTER_LG_FIXED) || $('body').hasClass(ClassName.FOOTER_XL_FIXED)) {\n            if ($(Selector.FOOTER).css(\"position\") === \"fixed\") {\n              footerFixed = true;\n            }\n          }\n\n          if (positions.top === 0 && positions.bottom === 0) {\n            $(Selector.CONTROL_SIDEBAR).css('bottom', heights.footer);\n            $(Selector.CONTROL_SIDEBAR).css('top', heights.header);\n            $(Selector.CONTROL_SIDEBAR + ', ' + Selector.CONTROL_SIDEBAR + ' ' + Selector.CONTROL_SIDEBAR_CONTENT).css('height', heights.window - (heights.header + heights.footer));\n          } else if (positions.bottom <= heights.footer) {\n            if (footerFixed === false) {\n              $(Selector.CONTROL_SIDEBAR).css('bottom', heights.footer - positions.bottom);\n              $(Selector.CONTROL_SIDEBAR + ', ' + Selector.CONTROL_SIDEBAR + ' ' + Selector.CONTROL_SIDEBAR_CONTENT).css('height', heights.window - (heights.footer - positions.bottom));\n            } else {\n              $(Selector.CONTROL_SIDEBAR).css('bottom', heights.footer);\n            }\n          } else if (positions.top <= heights.header) {\n            if (navbarFixed === false) {\n              $(Selector.CONTROL_SIDEBAR).css('top', heights.header - positions.top);\n              $(Selector.CONTROL_SIDEBAR + ', ' + Selector.CONTROL_SIDEBAR + ' ' + Selector.CONTROL_SIDEBAR_CONTENT).css('height', heights.window - (heights.header - positions.top));\n            } else {\n              $(Selector.CONTROL_SIDEBAR).css('top', heights.header);\n            }\n          } else {\n            if (navbarFixed === false) {\n              $(Selector.CONTROL_SIDEBAR).css('top', 0);\n              $(Selector.CONTROL_SIDEBAR + ', ' + Selector.CONTROL_SIDEBAR + ' ' + Selector.CONTROL_SIDEBAR_CONTENT).css('height', heights.window);\n            } else {\n              $(Selector.CONTROL_SIDEBAR).css('top', heights.header);\n            }\n          }\n        }\n      };\n\n      _proto._fixHeight = function _fixHeight() {\n        var heights = {\n          window: $(window).height(),\n          header: $(Selector.HEADER).outerHeight(),\n          footer: $(Selector.FOOTER).outerHeight()\n        };\n\n        if ($('body').hasClass(ClassName.LAYOUT_FIXED)) {\n          var sidebarHeight = heights.window - heights.header;\n\n          if ($('body').hasClass(ClassName.FOOTER_FIXED) || $('body').hasClass(ClassName.FOOTER_SM_FIXED) || $('body').hasClass(ClassName.FOOTER_MD_FIXED) || $('body').hasClass(ClassName.FOOTER_LG_FIXED) || $('body').hasClass(ClassName.FOOTER_XL_FIXED)) {\n            if ($(Selector.FOOTER).css(\"position\") === \"fixed\") {\n              sidebarHeight = heights.window - heights.header - heights.footer;\n            }\n          }\n\n          $(Selector.CONTROL_SIDEBAR + ' ' + Selector.CONTROL_SIDEBAR_CONTENT).css('height', sidebarHeight);\n\n          if (typeof $.fn.overlayScrollbars !== 'undefined') {\n            $(Selector.CONTROL_SIDEBAR + ' ' + Selector.CONTROL_SIDEBAR_CONTENT).overlayScrollbars({\n              className: this._config.scrollbarTheme,\n              sizeAutoCapable: true,\n              scrollbars: {\n                autoHide: this._config.scrollbarAutoHide,\n                clickScrolling: true\n              }\n            });\n          }\n        }\n      } // Static\n      ;\n\n      ControlSidebar._jQueryInterface = function _jQueryInterface(operation) {\n        return this.each(function () {\n          var data = $(this).data(DATA_KEY);\n\n          if (!data) {\n            data = new ControlSidebar(this, $(this).data());\n            $(this).data(DATA_KEY, data);\n          }\n\n          if (data[operation] === 'undefined') {\n            throw new Error(operation + \" is not a function\");\n          }\n\n          data[operation]();\n        });\n      };\n\n      return ControlSidebar;\n    }();\n    /**\n     *\n     * Data Api implementation\n     * ====================================================\n     */\n\n\n    $(document).on('click', Selector.DATA_TOGGLE, function (event) {\n      event.preventDefault();\n\n      ControlSidebar._jQueryInterface.call($(this), 'toggle');\n    });\n    /**\n     * jQuery API\n     * ====================================================\n     */\n\n    $.fn[NAME] = ControlSidebar._jQueryInterface;\n    $.fn[NAME].Constructor = ControlSidebar;\n\n    $.fn[NAME].noConflict = function () {\n      $.fn[NAME] = JQUERY_NO_CONFLICT;\n      return ControlSidebar._jQueryInterface;\n    };\n\n    return ControlSidebar;\n  }(jQuery);\n\n  /**\n   * --------------------------------------------\n   * AdminLTE Layout.js\n   * License MIT\n   * --------------------------------------------\n   */\n  var Layout = function ($) {\n    /**\n     * Constants\n     * ====================================================\n     */\n    var NAME = 'Layout';\n    var DATA_KEY = 'lte.layout';\n    var JQUERY_NO_CONFLICT = $.fn[NAME];\n    var Selector = {\n      HEADER: '.main-header',\n      MAIN_SIDEBAR: '.main-sidebar',\n      SIDEBAR: '.main-sidebar .sidebar',\n      CONTENT: '.content-wrapper',\n      BRAND: '.brand-link',\n      CONTENT_HEADER: '.content-header',\n      WRAPPER: '.wrapper',\n      CONTROL_SIDEBAR: '.control-sidebar',\n      LAYOUT_FIXED: '.layout-fixed',\n      FOOTER: '.main-footer',\n      PUSHMENU_BTN: '[data-widget=\"pushmenu\"]',\n      LOGIN_BOX: '.login-box',\n      REGISTER_BOX: '.register-box'\n    };\n    var ClassName = {\n      HOLD: 'hold-transition',\n      SIDEBAR: 'main-sidebar',\n      CONTENT_FIXED: 'content-fixed',\n      SIDEBAR_FOCUSED: 'sidebar-focused',\n      LAYOUT_FIXED: 'layout-fixed',\n      NAVBAR_FIXED: 'layout-navbar-fixed',\n      FOOTER_FIXED: 'layout-footer-fixed',\n      LOGIN_PAGE: 'login-page',\n      REGISTER_PAGE: 'register-page'\n    };\n    var Default = {\n      scrollbarTheme: 'os-theme-light',\n      scrollbarAutoHide: 'l'\n    };\n    /**\n     * Class Definition\n     * ====================================================\n     */\n\n    var Layout =\n    /*#__PURE__*/\n    function () {\n      function Layout(element, config) {\n        this._config = config;\n        this._element = element;\n\n        this._init();\n      } // Public\n\n\n      var _proto = Layout.prototype;\n\n      _proto.fixLayoutHeight = function fixLayoutHeight() {\n        var heights = {\n          window: $(window).height(),\n          header: $(Selector.HEADER).length !== 0 ? $(Selector.HEADER).outerHeight() : 0,\n          footer: $(Selector.FOOTER).length !== 0 ? $(Selector.FOOTER).outerHeight() : 0,\n          sidebar: $(Selector.SIDEBAR).length !== 0 ? $(Selector.SIDEBAR).height() : 0\n        };\n\n        var max = this._max(heights);\n\n        if (max == heights.window) {\n          $(Selector.CONTENT).css('min-height', max - heights.header - heights.footer);\n        } else {\n          $(Selector.CONTENT).css('min-height', max - heights.header);\n        }\n\n        if ($('body').hasClass(ClassName.LAYOUT_FIXED)) {\n          $(Selector.CONTENT).css('min-height', max - heights.header - heights.footer);\n\n          if (typeof $.fn.overlayScrollbars !== 'undefined') {\n            $(Selector.SIDEBAR).overlayScrollbars({\n              className: this._config.scrollbarTheme,\n              sizeAutoCapable: true,\n              scrollbars: {\n                autoHide: this._config.scrollbarAutoHide,\n                clickScrolling: true\n              }\n            });\n          }\n        }\n      } // Private\n      ;\n\n      _proto._init = function _init() {\n        var _this = this;\n\n        // Activate layout height watcher\n        this.fixLayoutHeight();\n        $(Selector.SIDEBAR).on('collapsed.lte.treeview expanded.lte.treeview', function () {\n          _this.fixLayoutHeight();\n        });\n        $(Selector.PUSHMENU_BTN).on('collapsed.lte.pushmenu shown.lte.pushmenu', function () {\n          _this.fixLayoutHeight();\n        });\n        $(window).resize(function () {\n          _this.fixLayoutHeight();\n        });\n\n        if (!$('body').hasClass(ClassName.LOGIN_PAGE) && !$('body').hasClass(ClassName.REGISTER_PAGE)) {\n          $('body, html').css('height', 'auto');\n        } else if ($('body').hasClass(ClassName.LOGIN_PAGE) || $('body').hasClass(ClassName.REGISTER_PAGE)) {\n          var box_height = $(Selector.LOGIN_BOX + ', ' + Selector.REGISTER_BOX).height();\n          $('body').css('min-height', box_height);\n        }\n\n        $('body.hold-transition').removeClass('hold-transition');\n      };\n\n      _proto._max = function _max(numbers) {\n        // Calculate the maximum number in a list\n        var max = 0;\n        Object.keys(numbers).forEach(function (key) {\n          if (numbers[key] > max) {\n            max = numbers[key];\n          }\n        });\n        return max;\n      } // Static\n      ;\n\n      Layout._jQueryInterface = function _jQueryInterface(config) {\n        return this.each(function () {\n          var data = $(this).data(DATA_KEY);\n\n          var _config = $.extend({}, Default, $(this).data());\n\n          if (!data) {\n            data = new Layout($(this), _config);\n            $(this).data(DATA_KEY, data);\n          }\n\n          if (config === 'init') {\n            data[config]();\n          }\n        });\n      };\n\n      return Layout;\n    }();\n    /**\n     * Data API\n     * ====================================================\n     */\n\n\n    $(window).on('load', function () {\n      Layout._jQueryInterface.call($('body'));\n    });\n    $(Selector.SIDEBAR + ' a').on('focusin', function () {\n      $(Selector.MAIN_SIDEBAR).addClass(ClassName.SIDEBAR_FOCUSED);\n    });\n    $(Selector.SIDEBAR + ' a').on('focusout', function () {\n      $(Selector.MAIN_SIDEBAR).removeClass(ClassName.SIDEBAR_FOCUSED);\n    });\n    /**\n     * jQuery API\n     * ====================================================\n     */\n\n    $.fn[NAME] = Layout._jQueryInterface;\n    $.fn[NAME].Constructor = Layout;\n\n    $.fn[NAME].noConflict = function () {\n      $.fn[NAME] = JQUERY_NO_CONFLICT;\n      return Layout._jQueryInterface;\n    };\n\n    return Layout;\n  }(jQuery);\n\n  /**\n   * --------------------------------------------\n   * AdminLTE PushMenu.js\n   * License MIT\n   * --------------------------------------------\n   */\n  var PushMenu = function ($) {\n    /**\n     * Constants\n     * ====================================================\n     */\n    var NAME = 'PushMenu';\n    var DATA_KEY = 'lte.pushmenu';\n    var EVENT_KEY = \".\" + DATA_KEY;\n    var JQUERY_NO_CONFLICT = $.fn[NAME];\n    var Event = {\n      COLLAPSED: \"collapsed\" + EVENT_KEY,\n      SHOWN: \"shown\" + EVENT_KEY\n    };\n    var Default = {\n      autoCollapseSize: 992,\n      enableRemember: false,\n      noTransitionAfterReload: true\n    };\n    var Selector = {\n      TOGGLE_BUTTON: '[data-widget=\"pushmenu\"]',\n      SIDEBAR_MINI: '.sidebar-mini',\n      SIDEBAR_COLLAPSED: '.sidebar-collapse',\n      BODY: 'body',\n      OVERLAY: '#sidebar-overlay',\n      WRAPPER: '.wrapper'\n    };\n    var ClassName = {\n      SIDEBAR_OPEN: 'sidebar-open',\n      COLLAPSED: 'sidebar-collapse',\n      OPEN: 'sidebar-open'\n    };\n    /**\n     * Class Definition\n     * ====================================================\n     */\n\n    var PushMenu =\n    /*#__PURE__*/\n    function () {\n      function PushMenu(element, options) {\n        this._element = element;\n        this._options = $.extend({}, Default, options);\n\n        if (!$(Selector.OVERLAY).length) {\n          this._addOverlay();\n        }\n\n        this._init();\n      } // Public\n\n\n      var _proto = PushMenu.prototype;\n\n      _proto.show = function show() {\n        if (this._options.autoCollapseSize) {\n          if ($(window).width() <= this._options.autoCollapseSize) {\n            $(Selector.BODY).addClass(ClassName.OPEN);\n          }\n        }\n\n        $(Selector.BODY).removeClass(ClassName.COLLAPSED);\n\n        if (this._options.enableRemember) {\n          localStorage.setItem(\"remember\" + EVENT_KEY, ClassName.OPEN);\n        }\n\n        var shownEvent = $.Event(Event.SHOWN);\n        $(this._element).trigger(shownEvent);\n      };\n\n      _proto.collapse = function collapse() {\n        if (this._options.autoCollapseSize) {\n          if ($(window).width() <= this._options.autoCollapseSize) {\n            $(Selector.BODY).removeClass(ClassName.OPEN);\n          }\n        }\n\n        $(Selector.BODY).addClass(ClassName.COLLAPSED);\n\n        if (this._options.enableRemember) {\n          localStorage.setItem(\"remember\" + EVENT_KEY, ClassName.COLLAPSED);\n        }\n\n        var collapsedEvent = $.Event(Event.COLLAPSED);\n        $(this._element).trigger(collapsedEvent);\n      };\n\n      _proto.toggle = function toggle() {\n        if (!$(Selector.BODY).hasClass(ClassName.COLLAPSED)) {\n          this.collapse();\n        } else {\n          this.show();\n        }\n      };\n\n      _proto.autoCollapse = function autoCollapse(resize) {\n        if (resize === void 0) {\n          resize = false;\n        }\n\n        if (this._options.autoCollapseSize) {\n          if ($(window).width() <= this._options.autoCollapseSize) {\n            if (!$(Selector.BODY).hasClass(ClassName.OPEN)) {\n              this.collapse();\n            }\n          } else if (resize == true) {\n            if ($(Selector.BODY).hasClass(ClassName.OPEN)) {\n              $(Selector.BODY).removeClass(ClassName.OPEN);\n            }\n          }\n        }\n      };\n\n      _proto.remember = function remember() {\n        if (this._options.enableRemember) {\n          var toggleState = localStorage.getItem(\"remember\" + EVENT_KEY);\n\n          if (toggleState == ClassName.COLLAPSED) {\n            if (this._options.noTransitionAfterReload) {\n              $(\"body\").addClass('hold-transition').addClass(ClassName.COLLAPSED).delay(50).queue(function () {\n                $(this).removeClass('hold-transition');\n                $(this).dequeue();\n              });\n            } else {\n              $(\"body\").addClass(ClassName.COLLAPSED);\n            }\n          } else {\n            if (this._options.noTransitionAfterReload) {\n              $(\"body\").addClass('hold-transition').removeClass(ClassName.COLLAPSED).delay(50).queue(function () {\n                $(this).removeClass('hold-transition');\n                $(this).dequeue();\n              });\n            } else {\n              $(\"body\").removeClass(ClassName.COLLAPSED);\n            }\n          }\n        }\n      } // Private\n      ;\n\n      _proto._init = function _init() {\n        var _this = this;\n\n        this.remember();\n        this.autoCollapse();\n        $(window).resize(function () {\n          _this.autoCollapse(true);\n        });\n      };\n\n      _proto._addOverlay = function _addOverlay() {\n        var _this2 = this;\n\n        var overlay = $('<div />', {\n          id: 'sidebar-overlay'\n        });\n        overlay.on('click', function () {\n          _this2.collapse();\n        });\n        $(Selector.WRAPPER).append(overlay);\n      } // Static\n      ;\n\n      PushMenu._jQueryInterface = function _jQueryInterface(operation) {\n        return this.each(function () {\n          var data = $(this).data(DATA_KEY);\n\n          var _options = $.extend({}, Default, $(this).data());\n\n          if (!data) {\n            data = new PushMenu(this, _options);\n            $(this).data(DATA_KEY, data);\n          }\n\n          if (operation === 'toggle') {\n            data[operation]();\n          }\n        });\n      };\n\n      return PushMenu;\n    }();\n    /**\n     * Data API\n     * ====================================================\n     */\n\n\n    $(document).on('click', Selector.TOGGLE_BUTTON, function (event) {\n      event.preventDefault();\n      var button = event.currentTarget;\n\n      if ($(button).data('widget') !== 'pushmenu') {\n        button = $(button).closest(Selector.TOGGLE_BUTTON);\n      }\n\n      PushMenu._jQueryInterface.call($(button), 'toggle');\n    });\n    $(window).on('load', function () {\n      PushMenu._jQueryInterface.call($(Selector.TOGGLE_BUTTON));\n    });\n    /**\n     * jQuery API\n     * ====================================================\n     */\n\n    $.fn[NAME] = PushMenu._jQueryInterface;\n    $.fn[NAME].Constructor = PushMenu;\n\n    $.fn[NAME].noConflict = function () {\n      $.fn[NAME] = JQUERY_NO_CONFLICT;\n      return PushMenu._jQueryInterface;\n    };\n\n    return PushMenu;\n  }(jQuery);\n\n  /**\n   * --------------------------------------------\n   * AdminLTE Treeview.js\n   * License MIT\n   * --------------------------------------------\n   */\n  var Treeview = function ($) {\n    /**\n     * Constants\n     * ====================================================\n     */\n    var NAME = 'Treeview';\n    var DATA_KEY = 'lte.treeview';\n    var EVENT_KEY = \".\" + DATA_KEY;\n    var JQUERY_NO_CONFLICT = $.fn[NAME];\n    var Event = {\n      SELECTED: \"selected\" + EVENT_KEY,\n      EXPANDED: \"expanded\" + EVENT_KEY,\n      COLLAPSED: \"collapsed\" + EVENT_KEY,\n      LOAD_DATA_API: \"load\" + EVENT_KEY\n    };\n    var Selector = {\n      LI: '.nav-item',\n      LINK: '.nav-link',\n      TREEVIEW_MENU: '.nav-treeview',\n      OPEN: '.menu-open',\n      DATA_WIDGET: '[data-widget=\"treeview\"]'\n    };\n    var ClassName = {\n      LI: 'nav-item',\n      LINK: 'nav-link',\n      TREEVIEW_MENU: 'nav-treeview',\n      OPEN: 'menu-open'\n    };\n    var Default = {\n      trigger: Selector.DATA_WIDGET + \" \" + Selector.LINK,\n      animationSpeed: 300,\n      accordion: true\n    };\n    /**\n     * Class Definition\n     * ====================================================\n     */\n\n    var Treeview =\n    /*#__PURE__*/\n    function () {\n      function Treeview(element, config) {\n        this._config = config;\n        this._element = element;\n      } // Public\n\n\n      var _proto = Treeview.prototype;\n\n      _proto.init = function init() {\n        this._setupListeners();\n      };\n\n      _proto.expand = function expand(treeviewMenu, parentLi) {\n        var _this = this;\n\n        var expandedEvent = $.Event(Event.EXPANDED);\n\n        if (this._config.accordion) {\n          var openMenuLi = parentLi.siblings(Selector.OPEN).first();\n          var openTreeview = openMenuLi.find(Selector.TREEVIEW_MENU).first();\n          this.collapse(openTreeview, openMenuLi);\n        }\n\n        treeviewMenu.stop().slideDown(this._config.animationSpeed, function () {\n          parentLi.addClass(ClassName.OPEN);\n          $(_this._element).trigger(expandedEvent);\n        });\n      };\n\n      _proto.collapse = function collapse(treeviewMenu, parentLi) {\n        var _this2 = this;\n\n        var collapsedEvent = $.Event(Event.COLLAPSED);\n        treeviewMenu.stop().slideUp(this._config.animationSpeed, function () {\n          parentLi.removeClass(ClassName.OPEN);\n          $(_this2._element).trigger(collapsedEvent);\n          treeviewMenu.find(Selector.OPEN + \" > \" + Selector.TREEVIEW_MENU).slideUp();\n          treeviewMenu.find(Selector.OPEN).removeClass(ClassName.OPEN);\n        });\n      };\n\n      _proto.toggle = function toggle(event) {\n        var $relativeTarget = $(event.currentTarget);\n        var $parent = $relativeTarget.parent();\n        var treeviewMenu = $parent.find('> ' + Selector.TREEVIEW_MENU);\n\n        if (!treeviewMenu.is(Selector.TREEVIEW_MENU)) {\n          if (!$parent.is(Selector.LI)) {\n            treeviewMenu = $parent.parent().find('> ' + Selector.TREEVIEW_MENU);\n          }\n\n          if (!treeviewMenu.is(Selector.TREEVIEW_MENU)) {\n            return;\n          }\n        }\n\n        event.preventDefault();\n        var parentLi = $relativeTarget.parents(Selector.LI).first();\n        var isOpen = parentLi.hasClass(ClassName.OPEN);\n\n        if (isOpen) {\n          this.collapse($(treeviewMenu), parentLi);\n        } else {\n          this.expand($(treeviewMenu), parentLi);\n        }\n      } // Private\n      ;\n\n      _proto._setupListeners = function _setupListeners() {\n        var _this3 = this;\n\n        $(document).on('click', this._config.trigger, function (event) {\n          _this3.toggle(event);\n        });\n      } // Static\n      ;\n\n      Treeview._jQueryInterface = function _jQueryInterface(config) {\n        return this.each(function () {\n          var data = $(this).data(DATA_KEY);\n\n          var _config = $.extend({}, Default, $(this).data());\n\n          if (!data) {\n            data = new Treeview($(this), _config);\n            $(this).data(DATA_KEY, data);\n          }\n\n          if (config === 'init') {\n            data[config]();\n          }\n        });\n      };\n\n      return Treeview;\n    }();\n    /**\n     * Data API\n     * ====================================================\n     */\n\n\n    $(window).on(Event.LOAD_DATA_API, function () {\n      $(Selector.DATA_WIDGET).each(function () {\n        Treeview._jQueryInterface.call($(this), 'init');\n      });\n    });\n    /**\n     * jQuery API\n     * ====================================================\n     */\n\n    $.fn[NAME] = Treeview._jQueryInterface;\n    $.fn[NAME].Constructor = Treeview;\n\n    $.fn[NAME].noConflict = function () {\n      $.fn[NAME] = JQUERY_NO_CONFLICT;\n      return Treeview._jQueryInterface;\n    };\n\n    return Treeview;\n  }(jQuery);\n\n  /**\n   * --------------------------------------------\n   * AdminLTE DirectChat.js\n   * License MIT\n   * --------------------------------------------\n   */\n  var DirectChat = function ($) {\n    /**\n     * Constants\n     * ====================================================\n     */\n    var NAME = 'DirectChat';\n    var DATA_KEY = 'lte.directchat';\n    var JQUERY_NO_CONFLICT = $.fn[NAME];\n    var Event = {\n      TOGGLED: \"toggled{EVENT_KEY}\"\n    };\n    var Selector = {\n      DATA_TOGGLE: '[data-widget=\"chat-pane-toggle\"]',\n      DIRECT_CHAT: '.direct-chat'\n    };\n    var ClassName = {\n      DIRECT_CHAT_OPEN: 'direct-chat-contacts-open'\n    };\n    /**\n     * Class Definition\n     * ====================================================\n     */\n\n    var DirectChat =\n    /*#__PURE__*/\n    function () {\n      function DirectChat(element, config) {\n        this._element = element;\n      }\n\n      var _proto = DirectChat.prototype;\n\n      _proto.toggle = function toggle() {\n        $(this._element).parents(Selector.DIRECT_CHAT).first().toggleClass(ClassName.DIRECT_CHAT_OPEN);\n        var toggledEvent = $.Event(Event.TOGGLED);\n        $(this._element).trigger(toggledEvent);\n      } // Static\n      ;\n\n      DirectChat._jQueryInterface = function _jQueryInterface(config) {\n        return this.each(function () {\n          var data = $(this).data(DATA_KEY);\n\n          if (!data) {\n            data = new DirectChat($(this));\n            $(this).data(DATA_KEY, data);\n          }\n\n          data[config]();\n        });\n      };\n\n      return DirectChat;\n    }();\n    /**\n     *\n     * Data Api implementation\n     * ====================================================\n     */\n\n\n    $(document).on('click', Selector.DATA_TOGGLE, function (event) {\n      if (event) event.preventDefault();\n\n      DirectChat._jQueryInterface.call($(this), 'toggle');\n    });\n    /**\n     * jQuery API\n     * ====================================================\n     */\n\n    $.fn[NAME] = DirectChat._jQueryInterface;\n    $.fn[NAME].Constructor = DirectChat;\n\n    $.fn[NAME].noConflict = function () {\n      $.fn[NAME] = JQUERY_NO_CONFLICT;\n      return DirectChat._jQueryInterface;\n    };\n\n    return DirectChat;\n  }(jQuery);\n\n  /**\n   * --------------------------------------------\n   * AdminLTE TodoList.js\n   * License MIT\n   * --------------------------------------------\n   */\n  var TodoList = function ($) {\n    /**\n     * Constants\n     * ====================================================\n     */\n    var NAME = 'TodoList';\n    var DATA_KEY = 'lte.todolist';\n    var JQUERY_NO_CONFLICT = $.fn[NAME];\n    var Selector = {\n      DATA_TOGGLE: '[data-widget=\"todo-list\"]'\n    };\n    var ClassName = {\n      TODO_LIST_DONE: 'done'\n    };\n    var Default = {\n      onCheck: function onCheck(item) {\n        return item;\n      },\n      onUnCheck: function onUnCheck(item) {\n        return item;\n      }\n    };\n    /**\n     * Class Definition\n     * ====================================================\n     */\n\n    var TodoList =\n    /*#__PURE__*/\n    function () {\n      function TodoList(element, config) {\n        this._config = config;\n        this._element = element;\n\n        this._init();\n      } // Public\n\n\n      var _proto = TodoList.prototype;\n\n      _proto.toggle = function toggle(item) {\n        item.parents('li').toggleClass(ClassName.TODO_LIST_DONE);\n\n        if (!$(item).prop('checked')) {\n          this.unCheck($(item));\n          return;\n        }\n\n        this.check(item);\n      };\n\n      _proto.check = function check(item) {\n        this._config.onCheck.call(item);\n      };\n\n      _proto.unCheck = function unCheck(item) {\n        this._config.onUnCheck.call(item);\n      } // Private\n      ;\n\n      _proto._init = function _init() {\n        var that = this;\n        $(Selector.DATA_TOGGLE).find('input:checkbox:checked').parents('li').toggleClass(ClassName.TODO_LIST_DONE);\n        $(Selector.DATA_TOGGLE).on('change', 'input:checkbox', function (event) {\n          that.toggle($(event.target));\n        });\n      } // Static\n      ;\n\n      TodoList._jQueryInterface = function _jQueryInterface(config) {\n        return this.each(function () {\n          var data = $(this).data(DATA_KEY);\n\n          var _config = $.extend({}, Default, $(this).data());\n\n          if (!data) {\n            data = new TodoList($(this), _config);\n            $(this).data(DATA_KEY, data);\n          }\n\n          if (config === 'init') {\n            data[config]();\n          }\n        });\n      };\n\n      return TodoList;\n    }();\n    /**\n     * Data API\n     * ====================================================\n     */\n\n\n    $(window).on('load', function () {\n      TodoList._jQueryInterface.call($(Selector.DATA_TOGGLE));\n    });\n    /**\n     * jQuery API\n     * ====================================================\n     */\n\n    $.fn[NAME] = TodoList._jQueryInterface;\n    $.fn[NAME].Constructor = TodoList;\n\n    $.fn[NAME].noConflict = function () {\n      $.fn[NAME] = JQUERY_NO_CONFLICT;\n      return TodoList._jQueryInterface;\n    };\n\n    return TodoList;\n  }(jQuery);\n\n  /**\n   * --------------------------------------------\n   * AdminLTE CardWidget.js\n   * License MIT\n   * --------------------------------------------\n   */\n  var CardWidget = function ($) {\n    /**\n     * Constants\n     * ====================================================\n     */\n    var NAME = 'CardWidget';\n    var DATA_KEY = 'lte.cardwidget';\n    var EVENT_KEY = \".\" + DATA_KEY;\n    var JQUERY_NO_CONFLICT = $.fn[NAME];\n    var Event = {\n      EXPANDED: \"expanded\" + EVENT_KEY,\n      COLLAPSED: \"collapsed\" + EVENT_KEY,\n      MAXIMIZED: \"maximized\" + EVENT_KEY,\n      MINIMIZED: \"minimized\" + EVENT_KEY,\n      REMOVED: \"removed\" + EVENT_KEY\n    };\n    var ClassName = {\n      CARD: 'card',\n      COLLAPSED: 'collapsed-card',\n      WAS_COLLAPSED: 'was-collapsed',\n      MAXIMIZED: 'maximized-card'\n    };\n    var Selector = {\n      DATA_REMOVE: '[data-card-widget=\"remove\"]',\n      DATA_COLLAPSE: '[data-card-widget=\"collapse\"]',\n      DATA_MAXIMIZE: '[data-card-widget=\"maximize\"]',\n      CARD: \".\" + ClassName.CARD,\n      CARD_HEADER: '.card-header',\n      CARD_BODY: '.card-body',\n      CARD_FOOTER: '.card-footer',\n      COLLAPSED: \".\" + ClassName.COLLAPSED\n    };\n    var Default = {\n      animationSpeed: 'normal',\n      collapseTrigger: Selector.DATA_COLLAPSE,\n      removeTrigger: Selector.DATA_REMOVE,\n      maximizeTrigger: Selector.DATA_MAXIMIZE,\n      collapseIcon: 'fa-minus',\n      expandIcon: 'fa-plus',\n      maximizeIcon: 'fa-expand',\n      minimizeIcon: 'fa-compress'\n    };\n\n    var CardWidget =\n    /*#__PURE__*/\n    function () {\n      function CardWidget(element, settings) {\n        this._element = element;\n        this._parent = element.parents(Selector.CARD).first();\n\n        if (element.hasClass(ClassName.CARD)) {\n          this._parent = element;\n        }\n\n        this._settings = $.extend({}, Default, settings);\n      }\n\n      var _proto = CardWidget.prototype;\n\n      _proto.collapse = function collapse() {\n        var _this = this;\n\n        this._parent.children(Selector.CARD_BODY + \", \" + Selector.CARD_FOOTER).slideUp(this._settings.animationSpeed, function () {\n          _this._parent.addClass(ClassName.COLLAPSED);\n        });\n\n        this._parent.find(this._settings.collapseTrigger + ' .' + this._settings.collapseIcon).addClass(this._settings.expandIcon).removeClass(this._settings.collapseIcon);\n\n        var collapsed = $.Event(Event.COLLAPSED);\n\n        this._element.trigger(collapsed, this._parent);\n      };\n\n      _proto.expand = function expand() {\n        var _this2 = this;\n\n        this._parent.children(Selector.CARD_BODY + \", \" + Selector.CARD_FOOTER).slideDown(this._settings.animationSpeed, function () {\n          _this2._parent.removeClass(ClassName.COLLAPSED);\n        });\n\n        this._parent.find(this._settings.collapseTrigger + ' .' + this._settings.expandIcon).addClass(this._settings.collapseIcon).removeClass(this._settings.expandIcon);\n\n        var expanded = $.Event(Event.EXPANDED);\n\n        this._element.trigger(expanded, this._parent);\n      };\n\n      _proto.remove = function remove() {\n        this._parent.slideUp();\n\n        var removed = $.Event(Event.REMOVED);\n\n        this._element.trigger(removed, this._parent);\n      };\n\n      _proto.toggle = function toggle() {\n        if (this._parent.hasClass(ClassName.COLLAPSED)) {\n          this.expand();\n          return;\n        }\n\n        this.collapse();\n      };\n\n      _proto.maximize = function maximize() {\n        this._parent.find(this._settings.maximizeTrigger + ' .' + this._settings.maximizeIcon).addClass(this._settings.minimizeIcon).removeClass(this._settings.maximizeIcon);\n\n        this._parent.css({\n          'height': this._parent.height(),\n          'width': this._parent.width(),\n          'transition': 'all .15s'\n        }).delay(150).queue(function () {\n          $(this).addClass(ClassName.MAXIMIZED);\n          $('html').addClass(ClassName.MAXIMIZED);\n\n          if ($(this).hasClass(ClassName.COLLAPSED)) {\n            $(this).addClass(ClassName.WAS_COLLAPSED);\n          }\n\n          $(this).dequeue();\n        });\n\n        var maximized = $.Event(Event.MAXIMIZED);\n\n        this._element.trigger(maximized, this._parent);\n      };\n\n      _proto.minimize = function minimize() {\n        this._parent.find(this._settings.maximizeTrigger + ' .' + this._settings.minimizeIcon).addClass(this._settings.maximizeIcon).removeClass(this._settings.minimizeIcon);\n\n        this._parent.css('cssText', 'height:' + this._parent[0].style.height + ' !important;' + 'width:' + this._parent[0].style.width + ' !important; transition: all .15s;').delay(10).queue(function () {\n          $(this).removeClass(ClassName.MAXIMIZED);\n          $('html').removeClass(ClassName.MAXIMIZED);\n          $(this).css({\n            'height': 'inherit',\n            'width': 'inherit'\n          });\n\n          if ($(this).hasClass(ClassName.WAS_COLLAPSED)) {\n            $(this).removeClass(ClassName.WAS_COLLAPSED);\n          }\n\n          $(this).dequeue();\n        });\n\n        var MINIMIZED = $.Event(Event.MINIMIZED);\n\n        this._element.trigger(MINIMIZED, this._parent);\n      };\n\n      _proto.toggleMaximize = function toggleMaximize() {\n        if (this._parent.hasClass(ClassName.MAXIMIZED)) {\n          this.minimize();\n          return;\n        }\n\n        this.maximize();\n      } // Private\n      ;\n\n      _proto._init = function _init(card) {\n        var _this3 = this;\n\n        this._parent = card;\n        $(this).find(this._settings.collapseTrigger).click(function () {\n          _this3.toggle();\n        });\n        $(this).find(this._settings.maximizeTrigger).click(function () {\n          _this3.toggleMaximize();\n        });\n        $(this).find(this._settings.removeTrigger).click(function () {\n          _this3.remove();\n        });\n      } // Static\n      ;\n\n      CardWidget._jQueryInterface = function _jQueryInterface(config) {\n        var data = $(this).data(DATA_KEY);\n\n        if (!data) {\n          data = new CardWidget($(this), data);\n          $(this).data(DATA_KEY, typeof config === 'string' ? data : config);\n        }\n\n        if (typeof config === 'string' && config.match(/collapse|expand|remove|toggle|maximize|minimize|toggleMaximize/)) {\n          data[config]();\n        } else if (typeof config === 'object') {\n          data._init($(this));\n        }\n      };\n\n      return CardWidget;\n    }();\n    /**\n     * Data API\n     * ====================================================\n     */\n\n\n    $(document).on('click', Selector.DATA_COLLAPSE, function (event) {\n      if (event) {\n        event.preventDefault();\n      }\n\n      CardWidget._jQueryInterface.call($(this), 'toggle');\n    });\n    $(document).on('click', Selector.DATA_REMOVE, function (event) {\n      if (event) {\n        event.preventDefault();\n      }\n\n      CardWidget._jQueryInterface.call($(this), 'remove');\n    });\n    $(document).on('click', Selector.DATA_MAXIMIZE, function (event) {\n      if (event) {\n        event.preventDefault();\n      }\n\n      CardWidget._jQueryInterface.call($(this), 'toggleMaximize');\n    });\n    /**\n     * jQuery API\n     * ====================================================\n     */\n\n    $.fn[NAME] = CardWidget._jQueryInterface;\n    $.fn[NAME].Constructor = CardWidget;\n\n    $.fn[NAME].noConflict = function () {\n      $.fn[NAME] = JQUERY_NO_CONFLICT;\n      return CardWidget._jQueryInterface;\n    };\n\n    return CardWidget;\n  }(jQuery);\n\n  /**\n   * --------------------------------------------\n   * AdminLTE CardRefresh.js\n   * License MIT\n   * --------------------------------------------\n   */\n  var CardRefresh = function ($) {\n    /**\n     * Constants\n     * ====================================================\n     */\n    var NAME = 'CardRefresh';\n    var DATA_KEY = 'lte.cardrefresh';\n    var EVENT_KEY = \".\" + DATA_KEY;\n    var JQUERY_NO_CONFLICT = $.fn[NAME];\n    var Event = {\n      LOADED: \"loaded\" + EVENT_KEY,\n      OVERLAY_ADDED: \"overlay.added\" + EVENT_KEY,\n      OVERLAY_REMOVED: \"overlay.removed\" + EVENT_KEY\n    };\n    var ClassName = {\n      CARD: 'card'\n    };\n    var Selector = {\n      CARD: \".\" + ClassName.CARD,\n      DATA_REFRESH: '[data-card-widget=\"card-refresh\"]'\n    };\n    var Default = {\n      source: '',\n      sourceSelector: '',\n      params: {},\n      trigger: Selector.DATA_REFRESH,\n      content: '.card-body',\n      loadInContent: true,\n      loadOnInit: true,\n      responseType: '',\n      overlayTemplate: '<div class=\"overlay\"><i class=\"fas fa-2x fa-sync-alt fa-spin\"></i></div>',\n      onLoadStart: function onLoadStart() {},\n      onLoadDone: function onLoadDone(response) {\n        return response;\n      }\n    };\n\n    var CardRefresh =\n    /*#__PURE__*/\n    function () {\n      function CardRefresh(element, settings) {\n        this._element = element;\n        this._parent = element.parents(Selector.CARD).first();\n        this._settings = $.extend({}, Default, settings);\n        this._overlay = $(this._settings.overlayTemplate);\n\n        if (element.hasClass(ClassName.CARD)) {\n          this._parent = element;\n        }\n\n        if (this._settings.source === '') {\n          throw new Error('Source url was not defined. Please specify a url in your CardRefresh source option.');\n        }\n\n        this._init();\n\n        if (this._settings.loadOnInit) {\n          this.load();\n        }\n      }\n\n      var _proto = CardRefresh.prototype;\n\n      _proto.load = function load() {\n        this._addOverlay();\n\n        this._settings.onLoadStart.call($(this));\n\n        $.get(this._settings.source, this._settings.params, function (response) {\n          if (this._settings.loadInContent) {\n            if (this._settings.sourceSelector != '') {\n              response = $(response).find(this._settings.sourceSelector).html();\n            }\n\n            this._parent.find(this._settings.content).html(response);\n          }\n\n          this._settings.onLoadDone.call($(this), response);\n\n          this._removeOverlay();\n        }.bind(this), this._settings.responseType !== '' && this._settings.responseType);\n        var loadedEvent = $.Event(Event.LOADED);\n        $(this._element).trigger(loadedEvent);\n      };\n\n      _proto._addOverlay = function _addOverlay() {\n        this._parent.append(this._overlay);\n\n        var overlayAddedEvent = $.Event(Event.OVERLAY_ADDED);\n        $(this._element).trigger(overlayAddedEvent);\n      };\n\n      _proto._removeOverlay = function _removeOverlay() {\n        this._parent.find(this._overlay).remove();\n\n        var overlayRemovedEvent = $.Event(Event.OVERLAY_REMOVED);\n        $(this._element).trigger(overlayRemovedEvent);\n      };\n\n      // Private\n      _proto._init = function _init(card) {\n        var _this = this;\n\n        $(this).find(this._settings.trigger).on('click', function () {\n          _this.load();\n        });\n      } // Static\n      ;\n\n      CardRefresh._jQueryInterface = function _jQueryInterface(config) {\n        var data = $(this).data(DATA_KEY);\n        var options = $(this).data();\n\n        if (!data) {\n          data = new CardRefresh($(this), options);\n          $(this).data(DATA_KEY, typeof config === 'string' ? data : config);\n        }\n\n        if (typeof config === 'string' && config.match(/load/)) {\n          data[config]();\n        } else if (typeof config === 'object') {\n          data._init($(this));\n        }\n      };\n\n      return CardRefresh;\n    }();\n    /**\n     * Data API\n     * ====================================================\n     */\n\n\n    $(document).on('click', Selector.DATA_REFRESH, function (event) {\n      if (event) {\n        event.preventDefault();\n      }\n\n      CardRefresh._jQueryInterface.call($(this), 'load');\n    });\n    /**\n     * jQuery API\n     * ====================================================\n     */\n\n    $.fn[NAME] = CardRefresh._jQueryInterface;\n    $.fn[NAME].Constructor = CardRefresh;\n\n    $.fn[NAME].noConflict = function () {\n      $.fn[NAME] = JQUERY_NO_CONFLICT;\n      return CardRefresh._jQueryInterface;\n    };\n\n    return CardRefresh;\n  }(jQuery);\n\n  /**\n   * --------------------------------------------\n   * AdminLTE Dropdown.js\n   * License MIT\n   * --------------------------------------------\n   */\n  var Dropdown = function ($) {\n    /**\n     * Constants\n     * ====================================================\n     */\n    var NAME = 'Dropdown';\n    var DATA_KEY = 'lte.dropdown';\n    var JQUERY_NO_CONFLICT = $.fn[NAME];\n    var Selector = {\n      DROPDOWN_MENU: 'ul.dropdown-menu',\n      DROPDOWN_TOGGLE: '[data-toggle=\"dropdown\"]'\n    };\n    var Default = {};\n    /**\n     * Class Definition\n     * ====================================================\n     */\n\n    var Dropdown =\n    /*#__PURE__*/\n    function () {\n      function Dropdown(element, config) {\n        this._config = config;\n        this._element = element;\n      } // Public\n\n\n      var _proto = Dropdown.prototype;\n\n      _proto.toggleSubmenu = function toggleSubmenu() {\n        this._element.siblings().show().toggleClass(\"show\");\n\n        if (!this._element.next().hasClass('show')) {\n          this._element.parents('.dropdown-menu').first().find('.show').removeClass(\"show\").hide();\n        }\n\n        this._element.parents('li.nav-item.dropdown.show').on('hidden.bs.dropdown', function (e) {\n          $('.dropdown-submenu .show').removeClass(\"show\").hide();\n        });\n      } // Static\n      ;\n\n      Dropdown._jQueryInterface = function _jQueryInterface(config) {\n        return this.each(function () {\n          var data = $(this).data(DATA_KEY);\n\n          var _config = $.extend({}, Default, $(this).data());\n\n          if (!data) {\n            data = new Dropdown($(this), _config);\n            $(this).data(DATA_KEY, data);\n          }\n\n          if (config === 'toggleSubmenu') {\n            data[config]();\n          }\n        });\n      };\n\n      return Dropdown;\n    }();\n    /**\n     * Data API\n     * ====================================================\n     */\n\n\n    $(Selector.DROPDOWN_MENU + ' ' + Selector.DROPDOWN_TOGGLE).on(\"click\", function (event) {\n      event.preventDefault();\n      event.stopPropagation();\n\n      Dropdown._jQueryInterface.call($(this), 'toggleSubmenu');\n    }); // $(Selector.SIDEBAR + ' a').on('focusin', () => {\n    //   $(Selector.MAIN_SIDEBAR).addClass(ClassName.SIDEBAR_FOCUSED);\n    // })\n    // $(Selector.SIDEBAR + ' a').on('focusout', () => {\n    //   $(Selector.MAIN_SIDEBAR).removeClass(ClassName.SIDEBAR_FOCUSED);\n    // })\n\n    /**\n     * jQuery API\n     * ====================================================\n     */\n\n    $.fn[NAME] = Dropdown._jQueryInterface;\n    $.fn[NAME].Constructor = Dropdown;\n\n    $.fn[NAME].noConflict = function () {\n      $.fn[NAME] = JQUERY_NO_CONFLICT;\n      return Dropdown._jQueryInterface;\n    };\n\n    return Dropdown;\n  }(jQuery);\n\n  /**\n   * --------------------------------------------\n   * AdminLTE Toasts.js\n   * License MIT\n   * --------------------------------------------\n   */\n  var Toasts = function ($) {\n    /**\n     * Constants\n     * ====================================================\n     */\n    var NAME = 'Toasts';\n    var DATA_KEY = 'lte.toasts';\n    var EVENT_KEY = \".\" + DATA_KEY;\n    var JQUERY_NO_CONFLICT = $.fn[NAME];\n    var Event = {\n      INIT: \"init\" + EVENT_KEY,\n      CREATED: \"created\" + EVENT_KEY,\n      REMOVED: \"removed\" + EVENT_KEY\n    };\n    var Selector = {\n      BODY: 'toast-body',\n      CONTAINER_TOP_RIGHT: '#toastsContainerTopRight',\n      CONTAINER_TOP_LEFT: '#toastsContainerTopLeft',\n      CONTAINER_BOTTOM_RIGHT: '#toastsContainerBottomRight',\n      CONTAINER_BOTTOM_LEFT: '#toastsContainerBottomLeft'\n    };\n    var ClassName = {\n      TOP_RIGHT: 'toasts-top-right',\n      TOP_LEFT: 'toasts-top-left',\n      BOTTOM_RIGHT: 'toasts-bottom-right',\n      BOTTOM_LEFT: 'toasts-bottom-left',\n      FADE: 'fade'\n    };\n    var Position = {\n      TOP_RIGHT: 'topRight',\n      TOP_LEFT: 'topLeft',\n      BOTTOM_RIGHT: 'bottomRight',\n      BOTTOM_LEFT: 'bottomLeft'\n    };\n    var Default = {\n      position: Position.TOP_RIGHT,\n      fixed: true,\n      autohide: false,\n      autoremove: true,\n      delay: 1000,\n      fade: true,\n      icon: null,\n      image: null,\n      imageAlt: null,\n      imageHeight: '25px',\n      title: null,\n      subtitle: null,\n      close: true,\n      body: null,\n      class: null\n    };\n    /**\n     * Class Definition\n     * ====================================================\n     */\n\n    var Toasts =\n    /*#__PURE__*/\n    function () {\n      function Toasts(element, config) {\n        this._config = config;\n\n        this._prepareContainer();\n\n        var initEvent = $.Event(Event.INIT);\n        $('body').trigger(initEvent);\n      } // Public\n\n\n      var _proto = Toasts.prototype;\n\n      _proto.create = function create() {\n        var toast = $('<div class=\"toast\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\"/>');\n        toast.data('autohide', this._config.autohide);\n        toast.data('animation', this._config.fade);\n\n        if (this._config.class) {\n          toast.addClass(this._config.class);\n        }\n\n        if (this._config.delay && this._config.delay != 500) {\n          toast.data('delay', this._config.delay);\n        }\n\n        var toast_header = $('<div class=\"toast-header\">');\n\n        if (this._config.image != null) {\n          var toast_image = $('<img />').addClass('rounded mr-2').attr('src', this._config.image).attr('alt', this._config.imageAlt);\n\n          if (this._config.imageHeight != null) {\n            toast_image.height(this._config.imageHeight).width('auto');\n          }\n\n          toast_header.append(toast_image);\n        }\n\n        if (this._config.icon != null) {\n          toast_header.append($('<i />').addClass('mr-2').addClass(this._config.icon));\n        }\n\n        if (this._config.title != null) {\n          toast_header.append($('<strong />').addClass('mr-auto').html(this._config.title));\n        }\n\n        if (this._config.subtitle != null) {\n          toast_header.append($('<small />').html(this._config.subtitle));\n        }\n\n        if (this._config.close == true) {\n          var toast_close = $('<button data-dismiss=\"toast\" />').attr('type', 'button').addClass('ml-2 mb-1 close').attr('aria-label', 'Close').append('<span aria-hidden=\"true\">&times;</span>');\n\n          if (this._config.title == null) {\n            toast_close.toggleClass('ml-2 ml-auto');\n          }\n\n          toast_header.append(toast_close);\n        }\n\n        toast.append(toast_header);\n\n        if (this._config.body != null) {\n          toast.append($('<div class=\"toast-body\" />').html(this._config.body));\n        }\n\n        $(this._getContainerId()).prepend(toast);\n        var createdEvent = $.Event(Event.CREATED);\n        $('body').trigger(createdEvent);\n        toast.toast('show');\n\n        if (this._config.autoremove) {\n          toast.on('hidden.bs.toast', function () {\n            $(this).delay(200).remove();\n            var removedEvent = $.Event(Event.REMOVED);\n            $('body').trigger(removedEvent);\n          });\n        }\n      } // Static\n      ;\n\n      _proto._getContainerId = function _getContainerId() {\n        if (this._config.position == Position.TOP_RIGHT) {\n          return Selector.CONTAINER_TOP_RIGHT;\n        } else if (this._config.position == Position.TOP_LEFT) {\n          return Selector.CONTAINER_TOP_LEFT;\n        } else if (this._config.position == Position.BOTTOM_RIGHT) {\n          return Selector.CONTAINER_BOTTOM_RIGHT;\n        } else if (this._config.position == Position.BOTTOM_LEFT) {\n          return Selector.CONTAINER_BOTTOM_LEFT;\n        }\n      };\n\n      _proto._prepareContainer = function _prepareContainer() {\n        if ($(this._getContainerId()).length === 0) {\n          var container = $('<div />').attr('id', this._getContainerId().replace('#', ''));\n\n          if (this._config.position == Position.TOP_RIGHT) {\n            container.addClass(ClassName.TOP_RIGHT);\n          } else if (this._config.position == Position.TOP_LEFT) {\n            container.addClass(ClassName.TOP_LEFT);\n          } else if (this._config.position == Position.BOTTOM_RIGHT) {\n            container.addClass(ClassName.BOTTOM_RIGHT);\n          } else if (this._config.position == Position.BOTTOM_LEFT) {\n            container.addClass(ClassName.BOTTOM_LEFT);\n          }\n\n          $('body').append(container);\n        }\n\n        if (this._config.fixed) {\n          $(this._getContainerId()).addClass('fixed');\n        } else {\n          $(this._getContainerId()).removeClass('fixed');\n        }\n      } // Static\n      ;\n\n      Toasts._jQueryInterface = function _jQueryInterface(option, config) {\n        return this.each(function () {\n          var _config = $.extend({}, Default, config);\n\n          var toast = new Toasts($(this), _config);\n\n          if (option === 'create') {\n            toast[option]();\n          }\n        });\n      };\n\n      return Toasts;\n    }();\n    /**\n     * jQuery API\n     * ====================================================\n     */\n\n\n    $.fn[NAME] = Toasts._jQueryInterface;\n    $.fn[NAME].Constructor = Toasts;\n\n    $.fn[NAME].noConflict = function () {\n      $.fn[NAME] = JQUERY_NO_CONFLICT;\n      return Toasts._jQueryInterface;\n    };\n\n    return Toasts;\n  }(jQuery);\n\n  exports.CardRefresh = CardRefresh;\n  exports.CardWidget = CardWidget;\n  exports.ControlSidebar = ControlSidebar;\n  exports.DirectChat = DirectChat;\n  exports.Dropdown = Dropdown;\n  exports.Layout = Layout;\n  exports.PushMenu = PushMenu;\n  exports.Toasts = Toasts;\n  exports.TodoList = TodoList;\n  exports.Treeview = Treeview;\n\n  Object.defineProperty(exports, '__esModule', { value: true });\n\n}));\n//# sourceMappingURL=adminlte.js.map\n"
  },
  {
    "path": "public/index.php",
    "content": "<?php\n\n/**\n * Laravel - A PHP Framework For Web Artisans\n *\n * @package  Laravel\n * @author   Taylor Otwell <taylor@laravel.com>\n */\n\ndefine('LARAVEL_START', microtime(true));\n\n/*\n|--------------------------------------------------------------------------\n| Register The Auto Loader\n|--------------------------------------------------------------------------\n|\n| Composer provides a convenient, automatically generated class loader for\n| our application. We just need to utilize it! We'll simply require it\n| into the script here so that we don't have to worry about manual\n| loading any of our classes later on. It feels great to relax.\n|\n*/\n\nrequire __DIR__.'/../vendor/autoload.php';\n\n/*\n|--------------------------------------------------------------------------\n| Turn On The Lights\n|--------------------------------------------------------------------------\n|\n| We need to illuminate PHP development, so let us turn on the lights.\n| This bootstraps the framework and gets it ready for use, then it\n| will load up this application so that we can run it and send\n| the responses back to the browser and delight our users.\n|\n*/\n\n$app = require_once __DIR__.'/../bootstrap/app.php';\n\n/*\n|--------------------------------------------------------------------------\n| Run The Application\n|--------------------------------------------------------------------------\n|\n| Once we have the application, we can handle the incoming request\n| through the kernel, and send the associated response back to\n| the client's browser allowing them to enjoy the creative\n| and wonderful application we have prepared for them.\n|\n*/\n\n$kernel = $app->make(Illuminate\\Contracts\\Http\\Kernel::class);\n\n$response = $kernel->handle(\n    $request = Illuminate\\Http\\Request::capture()\n);\n\n$response->send();\n\n$kernel->terminate($request, $response);\n"
  },
  {
    "path": "public/manifest.json",
    "content": "{\n  \"short_name\": \"React App\",\n  \"name\": \"Create React App Sample\",\n  \"icons\": [\n    {\n      \"src\": \"favicon.ico\",\n      \"sizes\": \"64x64 32x32 24x24 16x16\",\n      \"type\": \"image/x-icon\"\n    },\n    {\n      \"src\": \"logo192.png\",\n      \"type\": \"image/png\",\n      \"sizes\": \"192x192\"\n    },\n    {\n      \"src\": \"logo512.png\",\n      \"type\": \"image/png\",\n      \"sizes\": \"512x512\"\n    }\t    \n  ],\n  \"start_url\": \".\",\n  \"display\": \"standalone\",\n  \"theme_color\": \"#000000\",\n  \"background_color\": \"#ffffff\"\n}\n"
  },
  {
    "path": "public/plugins/bootstrap/js/bootstrap.bundle.js",
    "content": "/*!\n  * Bootstrap v4.3.1 (https://getbootstrap.com/)\n  * Copyright 2011-2019 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n  */\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('jquery')) :\n  typeof define === 'function' && define.amd ? define(['exports', 'jquery'], factory) :\n  (global = global || self, factory(global.bootstrap = {}, global.jQuery));\n}(this, function (exports, $) { 'use strict';\n\n  $ = $ && $.hasOwnProperty('default') ? $['default'] : $;\n\n  function _defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n      if (\"value\" in descriptor) descriptor.writable = true;\n      Object.defineProperty(target, descriptor.key, descriptor);\n    }\n  }\n\n  function _createClass(Constructor, protoProps, staticProps) {\n    if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) _defineProperties(Constructor, staticProps);\n    return Constructor;\n  }\n\n  function _defineProperty(obj, key, value) {\n    if (key in obj) {\n      Object.defineProperty(obj, key, {\n        value: value,\n        enumerable: true,\n        configurable: true,\n        writable: true\n      });\n    } else {\n      obj[key] = value;\n    }\n\n    return obj;\n  }\n\n  function _objectSpread(target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i] != null ? arguments[i] : {};\n      var ownKeys = Object.keys(source);\n\n      if (typeof Object.getOwnPropertySymbols === 'function') {\n        ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n          return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n        }));\n      }\n\n      ownKeys.forEach(function (key) {\n        _defineProperty(target, key, source[key]);\n      });\n    }\n\n    return target;\n  }\n\n  function _inheritsLoose(subClass, superClass) {\n    subClass.prototype = Object.create(superClass.prototype);\n    subClass.prototype.constructor = subClass;\n    subClass.__proto__ = superClass;\n  }\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v4.3.1): util.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n  /**\n   * ------------------------------------------------------------------------\n   * Private TransitionEnd Helpers\n   * ------------------------------------------------------------------------\n   */\n\n  var TRANSITION_END = 'transitionend';\n  var MAX_UID = 1000000;\n  var MILLISECONDS_MULTIPLIER = 1000; // Shoutout AngusCroll (https://goo.gl/pxwQGp)\n\n  function toType(obj) {\n    return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase();\n  }\n\n  function getSpecialTransitionEndEvent() {\n    return {\n      bindType: TRANSITION_END,\n      delegateType: TRANSITION_END,\n      handle: function handle(event) {\n        if ($(event.target).is(this)) {\n          return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params\n        }\n\n        return undefined; // eslint-disable-line no-undefined\n      }\n    };\n  }\n\n  function transitionEndEmulator(duration) {\n    var _this = this;\n\n    var called = false;\n    $(this).one(Util.TRANSITION_END, function () {\n      called = true;\n    });\n    setTimeout(function () {\n      if (!called) {\n        Util.triggerTransitionEnd(_this);\n      }\n    }, duration);\n    return this;\n  }\n\n  function setTransitionEndSupport() {\n    $.fn.emulateTransitionEnd = transitionEndEmulator;\n    $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();\n  }\n  /**\n   * --------------------------------------------------------------------------\n   * Public Util Api\n   * --------------------------------------------------------------------------\n   */\n\n\n  var Util = {\n    TRANSITION_END: 'bsTransitionEnd',\n    getUID: function getUID(prefix) {\n      do {\n        // eslint-disable-next-line no-bitwise\n        prefix += ~~(Math.random() * MAX_UID); // \"~~\" acts like a faster Math.floor() here\n      } while (document.getElementById(prefix));\n\n      return prefix;\n    },\n    getSelectorFromElement: function getSelectorFromElement(element) {\n      var selector = element.getAttribute('data-target');\n\n      if (!selector || selector === '#') {\n        var hrefAttr = element.getAttribute('href');\n        selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : '';\n      }\n\n      try {\n        return document.querySelector(selector) ? selector : null;\n      } catch (err) {\n        return null;\n      }\n    },\n    getTransitionDurationFromElement: function getTransitionDurationFromElement(element) {\n      if (!element) {\n        return 0;\n      } // Get transition-duration of the element\n\n\n      var transitionDuration = $(element).css('transition-duration');\n      var transitionDelay = $(element).css('transition-delay');\n      var floatTransitionDuration = parseFloat(transitionDuration);\n      var floatTransitionDelay = parseFloat(transitionDelay); // Return 0 if element or transition duration is not found\n\n      if (!floatTransitionDuration && !floatTransitionDelay) {\n        return 0;\n      } // If multiple durations are defined, take the first\n\n\n      transitionDuration = transitionDuration.split(',')[0];\n      transitionDelay = transitionDelay.split(',')[0];\n      return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;\n    },\n    reflow: function reflow(element) {\n      return element.offsetHeight;\n    },\n    triggerTransitionEnd: function triggerTransitionEnd(element) {\n      $(element).trigger(TRANSITION_END);\n    },\n    // TODO: Remove in v5\n    supportsTransitionEnd: function supportsTransitionEnd() {\n      return Boolean(TRANSITION_END);\n    },\n    isElement: function isElement(obj) {\n      return (obj[0] || obj).nodeType;\n    },\n    typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) {\n      for (var property in configTypes) {\n        if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n          var expectedTypes = configTypes[property];\n          var value = config[property];\n          var valueType = value && Util.isElement(value) ? 'element' : toType(value);\n\n          if (!new RegExp(expectedTypes).test(valueType)) {\n            throw new Error(componentName.toUpperCase() + \": \" + (\"Option \\\"\" + property + \"\\\" provided type \\\"\" + valueType + \"\\\" \") + (\"but expected type \\\"\" + expectedTypes + \"\\\".\"));\n          }\n        }\n      }\n    },\n    findShadowRoot: function findShadowRoot(element) {\n      if (!document.documentElement.attachShadow) {\n        return null;\n      } // Can find the shadow root otherwise it'll return the document\n\n\n      if (typeof element.getRootNode === 'function') {\n        var root = element.getRootNode();\n        return root instanceof ShadowRoot ? root : null;\n      }\n\n      if (element instanceof ShadowRoot) {\n        return element;\n      } // when we don't find a shadow root\n\n\n      if (!element.parentNode) {\n        return null;\n      }\n\n      return Util.findShadowRoot(element.parentNode);\n    }\n  };\n  setTransitionEndSupport();\n\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  var NAME = 'alert';\n  var VERSION = '4.3.1';\n  var DATA_KEY = 'bs.alert';\n  var EVENT_KEY = \".\" + DATA_KEY;\n  var DATA_API_KEY = '.data-api';\n  var JQUERY_NO_CONFLICT = $.fn[NAME];\n  var Selector = {\n    DISMISS: '[data-dismiss=\"alert\"]'\n  };\n  var Event = {\n    CLOSE: \"close\" + EVENT_KEY,\n    CLOSED: \"closed\" + EVENT_KEY,\n    CLICK_DATA_API: \"click\" + EVENT_KEY + DATA_API_KEY\n  };\n  var ClassName = {\n    ALERT: 'alert',\n    FADE: 'fade',\n    SHOW: 'show'\n    /**\n     * ------------------------------------------------------------------------\n     * Class Definition\n     * ------------------------------------------------------------------------\n     */\n\n  };\n\n  var Alert =\n  /*#__PURE__*/\n  function () {\n    function Alert(element) {\n      this._element = element;\n    } // Getters\n\n\n    var _proto = Alert.prototype;\n\n    // Public\n    _proto.close = function close(element) {\n      var rootElement = this._element;\n\n      if (element) {\n        rootElement = this._getRootElement(element);\n      }\n\n      var customEvent = this._triggerCloseEvent(rootElement);\n\n      if (customEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      this._removeElement(rootElement);\n    };\n\n    _proto.dispose = function dispose() {\n      $.removeData(this._element, DATA_KEY);\n      this._element = null;\n    } // Private\n    ;\n\n    _proto._getRootElement = function _getRootElement(element) {\n      var selector = Util.getSelectorFromElement(element);\n      var parent = false;\n\n      if (selector) {\n        parent = document.querySelector(selector);\n      }\n\n      if (!parent) {\n        parent = $(element).closest(\".\" + ClassName.ALERT)[0];\n      }\n\n      return parent;\n    };\n\n    _proto._triggerCloseEvent = function _triggerCloseEvent(element) {\n      var closeEvent = $.Event(Event.CLOSE);\n      $(element).trigger(closeEvent);\n      return closeEvent;\n    };\n\n    _proto._removeElement = function _removeElement(element) {\n      var _this = this;\n\n      $(element).removeClass(ClassName.SHOW);\n\n      if (!$(element).hasClass(ClassName.FADE)) {\n        this._destroyElement(element);\n\n        return;\n      }\n\n      var transitionDuration = Util.getTransitionDurationFromElement(element);\n      $(element).one(Util.TRANSITION_END, function (event) {\n        return _this._destroyElement(element, event);\n      }).emulateTransitionEnd(transitionDuration);\n    };\n\n    _proto._destroyElement = function _destroyElement(element) {\n      $(element).detach().trigger(Event.CLOSED).remove();\n    } // Static\n    ;\n\n    Alert._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var $element = $(this);\n        var data = $element.data(DATA_KEY);\n\n        if (!data) {\n          data = new Alert(this);\n          $element.data(DATA_KEY, data);\n        }\n\n        if (config === 'close') {\n          data[config](this);\n        }\n      });\n    };\n\n    Alert._handleDismiss = function _handleDismiss(alertInstance) {\n      return function (event) {\n        if (event) {\n          event.preventDefault();\n        }\n\n        alertInstance.close(this);\n      };\n    };\n\n    _createClass(Alert, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION;\n      }\n    }]);\n\n    return Alert;\n  }();\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n\n  $(document).on(Event.CLICK_DATA_API, Selector.DISMISS, Alert._handleDismiss(new Alert()));\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n  $.fn[NAME] = Alert._jQueryInterface;\n  $.fn[NAME].Constructor = Alert;\n\n  $.fn[NAME].noConflict = function () {\n    $.fn[NAME] = JQUERY_NO_CONFLICT;\n    return Alert._jQueryInterface;\n  };\n\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  var NAME$1 = 'button';\n  var VERSION$1 = '4.3.1';\n  var DATA_KEY$1 = 'bs.button';\n  var EVENT_KEY$1 = \".\" + DATA_KEY$1;\n  var DATA_API_KEY$1 = '.data-api';\n  var JQUERY_NO_CONFLICT$1 = $.fn[NAME$1];\n  var ClassName$1 = {\n    ACTIVE: 'active',\n    BUTTON: 'btn',\n    FOCUS: 'focus'\n  };\n  var Selector$1 = {\n    DATA_TOGGLE_CARROT: '[data-toggle^=\"button\"]',\n    DATA_TOGGLE: '[data-toggle=\"buttons\"]',\n    INPUT: 'input:not([type=\"hidden\"])',\n    ACTIVE: '.active',\n    BUTTON: '.btn'\n  };\n  var Event$1 = {\n    CLICK_DATA_API: \"click\" + EVENT_KEY$1 + DATA_API_KEY$1,\n    FOCUS_BLUR_DATA_API: \"focus\" + EVENT_KEY$1 + DATA_API_KEY$1 + \" \" + (\"blur\" + EVENT_KEY$1 + DATA_API_KEY$1)\n    /**\n     * ------------------------------------------------------------------------\n     * Class Definition\n     * ------------------------------------------------------------------------\n     */\n\n  };\n\n  var Button =\n  /*#__PURE__*/\n  function () {\n    function Button(element) {\n      this._element = element;\n    } // Getters\n\n\n    var _proto = Button.prototype;\n\n    // Public\n    _proto.toggle = function toggle() {\n      var triggerChangeEvent = true;\n      var addAriaPressed = true;\n      var rootElement = $(this._element).closest(Selector$1.DATA_TOGGLE)[0];\n\n      if (rootElement) {\n        var input = this._element.querySelector(Selector$1.INPUT);\n\n        if (input) {\n          if (input.type === 'radio') {\n            if (input.checked && this._element.classList.contains(ClassName$1.ACTIVE)) {\n              triggerChangeEvent = false;\n            } else {\n              var activeElement = rootElement.querySelector(Selector$1.ACTIVE);\n\n              if (activeElement) {\n                $(activeElement).removeClass(ClassName$1.ACTIVE);\n              }\n            }\n          }\n\n          if (triggerChangeEvent) {\n            if (input.hasAttribute('disabled') || rootElement.hasAttribute('disabled') || input.classList.contains('disabled') || rootElement.classList.contains('disabled')) {\n              return;\n            }\n\n            input.checked = !this._element.classList.contains(ClassName$1.ACTIVE);\n            $(input).trigger('change');\n          }\n\n          input.focus();\n          addAriaPressed = false;\n        }\n      }\n\n      if (addAriaPressed) {\n        this._element.setAttribute('aria-pressed', !this._element.classList.contains(ClassName$1.ACTIVE));\n      }\n\n      if (triggerChangeEvent) {\n        $(this._element).toggleClass(ClassName$1.ACTIVE);\n      }\n    };\n\n    _proto.dispose = function dispose() {\n      $.removeData(this._element, DATA_KEY$1);\n      this._element = null;\n    } // Static\n    ;\n\n    Button._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var data = $(this).data(DATA_KEY$1);\n\n        if (!data) {\n          data = new Button(this);\n          $(this).data(DATA_KEY$1, data);\n        }\n\n        if (config === 'toggle') {\n          data[config]();\n        }\n      });\n    };\n\n    _createClass(Button, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$1;\n      }\n    }]);\n\n    return Button;\n  }();\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n\n  $(document).on(Event$1.CLICK_DATA_API, Selector$1.DATA_TOGGLE_CARROT, function (event) {\n    event.preventDefault();\n    var button = event.target;\n\n    if (!$(button).hasClass(ClassName$1.BUTTON)) {\n      button = $(button).closest(Selector$1.BUTTON);\n    }\n\n    Button._jQueryInterface.call($(button), 'toggle');\n  }).on(Event$1.FOCUS_BLUR_DATA_API, Selector$1.DATA_TOGGLE_CARROT, function (event) {\n    var button = $(event.target).closest(Selector$1.BUTTON)[0];\n    $(button).toggleClass(ClassName$1.FOCUS, /^focus(in)?$/.test(event.type));\n  });\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n  $.fn[NAME$1] = Button._jQueryInterface;\n  $.fn[NAME$1].Constructor = Button;\n\n  $.fn[NAME$1].noConflict = function () {\n    $.fn[NAME$1] = JQUERY_NO_CONFLICT$1;\n    return Button._jQueryInterface;\n  };\n\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  var NAME$2 = 'carousel';\n  var VERSION$2 = '4.3.1';\n  var DATA_KEY$2 = 'bs.carousel';\n  var EVENT_KEY$2 = \".\" + DATA_KEY$2;\n  var DATA_API_KEY$2 = '.data-api';\n  var JQUERY_NO_CONFLICT$2 = $.fn[NAME$2];\n  var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key\n\n  var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key\n\n  var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch\n\n  var SWIPE_THRESHOLD = 40;\n  var Default = {\n    interval: 5000,\n    keyboard: true,\n    slide: false,\n    pause: 'hover',\n    wrap: true,\n    touch: true\n  };\n  var DefaultType = {\n    interval: '(number|boolean)',\n    keyboard: 'boolean',\n    slide: '(boolean|string)',\n    pause: '(string|boolean)',\n    wrap: 'boolean',\n    touch: 'boolean'\n  };\n  var Direction = {\n    NEXT: 'next',\n    PREV: 'prev',\n    LEFT: 'left',\n    RIGHT: 'right'\n  };\n  var Event$2 = {\n    SLIDE: \"slide\" + EVENT_KEY$2,\n    SLID: \"slid\" + EVENT_KEY$2,\n    KEYDOWN: \"keydown\" + EVENT_KEY$2,\n    MOUSEENTER: \"mouseenter\" + EVENT_KEY$2,\n    MOUSELEAVE: \"mouseleave\" + EVENT_KEY$2,\n    TOUCHSTART: \"touchstart\" + EVENT_KEY$2,\n    TOUCHMOVE: \"touchmove\" + EVENT_KEY$2,\n    TOUCHEND: \"touchend\" + EVENT_KEY$2,\n    POINTERDOWN: \"pointerdown\" + EVENT_KEY$2,\n    POINTERUP: \"pointerup\" + EVENT_KEY$2,\n    DRAG_START: \"dragstart\" + EVENT_KEY$2,\n    LOAD_DATA_API: \"load\" + EVENT_KEY$2 + DATA_API_KEY$2,\n    CLICK_DATA_API: \"click\" + EVENT_KEY$2 + DATA_API_KEY$2\n  };\n  var ClassName$2 = {\n    CAROUSEL: 'carousel',\n    ACTIVE: 'active',\n    SLIDE: 'slide',\n    RIGHT: 'carousel-item-right',\n    LEFT: 'carousel-item-left',\n    NEXT: 'carousel-item-next',\n    PREV: 'carousel-item-prev',\n    ITEM: 'carousel-item',\n    POINTER_EVENT: 'pointer-event'\n  };\n  var Selector$2 = {\n    ACTIVE: '.active',\n    ACTIVE_ITEM: '.active.carousel-item',\n    ITEM: '.carousel-item',\n    ITEM_IMG: '.carousel-item img',\n    NEXT_PREV: '.carousel-item-next, .carousel-item-prev',\n    INDICATORS: '.carousel-indicators',\n    DATA_SLIDE: '[data-slide], [data-slide-to]',\n    DATA_RIDE: '[data-ride=\"carousel\"]'\n  };\n  var PointerType = {\n    TOUCH: 'touch',\n    PEN: 'pen'\n    /**\n     * ------------------------------------------------------------------------\n     * Class Definition\n     * ------------------------------------------------------------------------\n     */\n\n  };\n\n  var Carousel =\n  /*#__PURE__*/\n  function () {\n    function Carousel(element, config) {\n      this._items = null;\n      this._interval = null;\n      this._activeElement = null;\n      this._isPaused = false;\n      this._isSliding = false;\n      this.touchTimeout = null;\n      this.touchStartX = 0;\n      this.touchDeltaX = 0;\n      this._config = this._getConfig(config);\n      this._element = element;\n      this._indicatorsElement = this._element.querySelector(Selector$2.INDICATORS);\n      this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;\n      this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent);\n\n      this._addEventListeners();\n    } // Getters\n\n\n    var _proto = Carousel.prototype;\n\n    // Public\n    _proto.next = function next() {\n      if (!this._isSliding) {\n        this._slide(Direction.NEXT);\n      }\n    };\n\n    _proto.nextWhenVisible = function nextWhenVisible() {\n      // Don't call next when the page isn't visible\n      // or the carousel or its parent isn't visible\n      if (!document.hidden && $(this._element).is(':visible') && $(this._element).css('visibility') !== 'hidden') {\n        this.next();\n      }\n    };\n\n    _proto.prev = function prev() {\n      if (!this._isSliding) {\n        this._slide(Direction.PREV);\n      }\n    };\n\n    _proto.pause = function pause(event) {\n      if (!event) {\n        this._isPaused = true;\n      }\n\n      if (this._element.querySelector(Selector$2.NEXT_PREV)) {\n        Util.triggerTransitionEnd(this._element);\n        this.cycle(true);\n      }\n\n      clearInterval(this._interval);\n      this._interval = null;\n    };\n\n    _proto.cycle = function cycle(event) {\n      if (!event) {\n        this._isPaused = false;\n      }\n\n      if (this._interval) {\n        clearInterval(this._interval);\n        this._interval = null;\n      }\n\n      if (this._config.interval && !this._isPaused) {\n        this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);\n      }\n    };\n\n    _proto.to = function to(index) {\n      var _this = this;\n\n      this._activeElement = this._element.querySelector(Selector$2.ACTIVE_ITEM);\n\n      var activeIndex = this._getItemIndex(this._activeElement);\n\n      if (index > this._items.length - 1 || index < 0) {\n        return;\n      }\n\n      if (this._isSliding) {\n        $(this._element).one(Event$2.SLID, function () {\n          return _this.to(index);\n        });\n        return;\n      }\n\n      if (activeIndex === index) {\n        this.pause();\n        this.cycle();\n        return;\n      }\n\n      var direction = index > activeIndex ? Direction.NEXT : Direction.PREV;\n\n      this._slide(direction, this._items[index]);\n    };\n\n    _proto.dispose = function dispose() {\n      $(this._element).off(EVENT_KEY$2);\n      $.removeData(this._element, DATA_KEY$2);\n      this._items = null;\n      this._config = null;\n      this._element = null;\n      this._interval = null;\n      this._isPaused = null;\n      this._isSliding = null;\n      this._activeElement = null;\n      this._indicatorsElement = null;\n    } // Private\n    ;\n\n    _proto._getConfig = function _getConfig(config) {\n      config = _objectSpread({}, Default, config);\n      Util.typeCheckConfig(NAME$2, config, DefaultType);\n      return config;\n    };\n\n    _proto._handleSwipe = function _handleSwipe() {\n      var absDeltax = Math.abs(this.touchDeltaX);\n\n      if (absDeltax <= SWIPE_THRESHOLD) {\n        return;\n      }\n\n      var direction = absDeltax / this.touchDeltaX; // swipe left\n\n      if (direction > 0) {\n        this.prev();\n      } // swipe right\n\n\n      if (direction < 0) {\n        this.next();\n      }\n    };\n\n    _proto._addEventListeners = function _addEventListeners() {\n      var _this2 = this;\n\n      if (this._config.keyboard) {\n        $(this._element).on(Event$2.KEYDOWN, function (event) {\n          return _this2._keydown(event);\n        });\n      }\n\n      if (this._config.pause === 'hover') {\n        $(this._element).on(Event$2.MOUSEENTER, function (event) {\n          return _this2.pause(event);\n        }).on(Event$2.MOUSELEAVE, function (event) {\n          return _this2.cycle(event);\n        });\n      }\n\n      if (this._config.touch) {\n        this._addTouchEventListeners();\n      }\n    };\n\n    _proto._addTouchEventListeners = function _addTouchEventListeners() {\n      var _this3 = this;\n\n      if (!this._touchSupported) {\n        return;\n      }\n\n      var start = function start(event) {\n        if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n          _this3.touchStartX = event.originalEvent.clientX;\n        } else if (!_this3._pointerEvent) {\n          _this3.touchStartX = event.originalEvent.touches[0].clientX;\n        }\n      };\n\n      var move = function move(event) {\n        // ensure swiping with one touch and not pinching\n        if (event.originalEvent.touches && event.originalEvent.touches.length > 1) {\n          _this3.touchDeltaX = 0;\n        } else {\n          _this3.touchDeltaX = event.originalEvent.touches[0].clientX - _this3.touchStartX;\n        }\n      };\n\n      var end = function end(event) {\n        if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n          _this3.touchDeltaX = event.originalEvent.clientX - _this3.touchStartX;\n        }\n\n        _this3._handleSwipe();\n\n        if (_this3._config.pause === 'hover') {\n          // If it's a touch-enabled device, mouseenter/leave are fired as\n          // part of the mouse compatibility events on first tap - the carousel\n          // would stop cycling until user tapped out of it;\n          // here, we listen for touchend, explicitly pause the carousel\n          // (as if it's the second time we tap on it, mouseenter compat event\n          // is NOT fired) and after a timeout (to allow for mouse compatibility\n          // events to fire) we explicitly restart cycling\n          _this3.pause();\n\n          if (_this3.touchTimeout) {\n            clearTimeout(_this3.touchTimeout);\n          }\n\n          _this3.touchTimeout = setTimeout(function (event) {\n            return _this3.cycle(event);\n          }, TOUCHEVENT_COMPAT_WAIT + _this3._config.interval);\n        }\n      };\n\n      $(this._element.querySelectorAll(Selector$2.ITEM_IMG)).on(Event$2.DRAG_START, function (e) {\n        return e.preventDefault();\n      });\n\n      if (this._pointerEvent) {\n        $(this._element).on(Event$2.POINTERDOWN, function (event) {\n          return start(event);\n        });\n        $(this._element).on(Event$2.POINTERUP, function (event) {\n          return end(event);\n        });\n\n        this._element.classList.add(ClassName$2.POINTER_EVENT);\n      } else {\n        $(this._element).on(Event$2.TOUCHSTART, function (event) {\n          return start(event);\n        });\n        $(this._element).on(Event$2.TOUCHMOVE, function (event) {\n          return move(event);\n        });\n        $(this._element).on(Event$2.TOUCHEND, function (event) {\n          return end(event);\n        });\n      }\n    };\n\n    _proto._keydown = function _keydown(event) {\n      if (/input|textarea/i.test(event.target.tagName)) {\n        return;\n      }\n\n      switch (event.which) {\n        case ARROW_LEFT_KEYCODE:\n          event.preventDefault();\n          this.prev();\n          break;\n\n        case ARROW_RIGHT_KEYCODE:\n          event.preventDefault();\n          this.next();\n          break;\n\n        default:\n      }\n    };\n\n    _proto._getItemIndex = function _getItemIndex(element) {\n      this._items = element && element.parentNode ? [].slice.call(element.parentNode.querySelectorAll(Selector$2.ITEM)) : [];\n      return this._items.indexOf(element);\n    };\n\n    _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) {\n      var isNextDirection = direction === Direction.NEXT;\n      var isPrevDirection = direction === Direction.PREV;\n\n      var activeIndex = this._getItemIndex(activeElement);\n\n      var lastItemIndex = this._items.length - 1;\n      var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex;\n\n      if (isGoingToWrap && !this._config.wrap) {\n        return activeElement;\n      }\n\n      var delta = direction === Direction.PREV ? -1 : 1;\n      var itemIndex = (activeIndex + delta) % this._items.length;\n      return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];\n    };\n\n    _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {\n      var targetIndex = this._getItemIndex(relatedTarget);\n\n      var fromIndex = this._getItemIndex(this._element.querySelector(Selector$2.ACTIVE_ITEM));\n\n      var slideEvent = $.Event(Event$2.SLIDE, {\n        relatedTarget: relatedTarget,\n        direction: eventDirectionName,\n        from: fromIndex,\n        to: targetIndex\n      });\n      $(this._element).trigger(slideEvent);\n      return slideEvent;\n    };\n\n    _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {\n      if (this._indicatorsElement) {\n        var indicators = [].slice.call(this._indicatorsElement.querySelectorAll(Selector$2.ACTIVE));\n        $(indicators).removeClass(ClassName$2.ACTIVE);\n\n        var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];\n\n        if (nextIndicator) {\n          $(nextIndicator).addClass(ClassName$2.ACTIVE);\n        }\n      }\n    };\n\n    _proto._slide = function _slide(direction, element) {\n      var _this4 = this;\n\n      var activeElement = this._element.querySelector(Selector$2.ACTIVE_ITEM);\n\n      var activeElementIndex = this._getItemIndex(activeElement);\n\n      var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement);\n\n      var nextElementIndex = this._getItemIndex(nextElement);\n\n      var isCycling = Boolean(this._interval);\n      var directionalClassName;\n      var orderClassName;\n      var eventDirectionName;\n\n      if (direction === Direction.NEXT) {\n        directionalClassName = ClassName$2.LEFT;\n        orderClassName = ClassName$2.NEXT;\n        eventDirectionName = Direction.LEFT;\n      } else {\n        directionalClassName = ClassName$2.RIGHT;\n        orderClassName = ClassName$2.PREV;\n        eventDirectionName = Direction.RIGHT;\n      }\n\n      if (nextElement && $(nextElement).hasClass(ClassName$2.ACTIVE)) {\n        this._isSliding = false;\n        return;\n      }\n\n      var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);\n\n      if (slideEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      if (!activeElement || !nextElement) {\n        // Some weirdness is happening, so we bail\n        return;\n      }\n\n      this._isSliding = true;\n\n      if (isCycling) {\n        this.pause();\n      }\n\n      this._setActiveIndicatorElement(nextElement);\n\n      var slidEvent = $.Event(Event$2.SLID, {\n        relatedTarget: nextElement,\n        direction: eventDirectionName,\n        from: activeElementIndex,\n        to: nextElementIndex\n      });\n\n      if ($(this._element).hasClass(ClassName$2.SLIDE)) {\n        $(nextElement).addClass(orderClassName);\n        Util.reflow(nextElement);\n        $(activeElement).addClass(directionalClassName);\n        $(nextElement).addClass(directionalClassName);\n        var nextElementInterval = parseInt(nextElement.getAttribute('data-interval'), 10);\n\n        if (nextElementInterval) {\n          this._config.defaultInterval = this._config.defaultInterval || this._config.interval;\n          this._config.interval = nextElementInterval;\n        } else {\n          this._config.interval = this._config.defaultInterval || this._config.interval;\n        }\n\n        var transitionDuration = Util.getTransitionDurationFromElement(activeElement);\n        $(activeElement).one(Util.TRANSITION_END, function () {\n          $(nextElement).removeClass(directionalClassName + \" \" + orderClassName).addClass(ClassName$2.ACTIVE);\n          $(activeElement).removeClass(ClassName$2.ACTIVE + \" \" + orderClassName + \" \" + directionalClassName);\n          _this4._isSliding = false;\n          setTimeout(function () {\n            return $(_this4._element).trigger(slidEvent);\n          }, 0);\n        }).emulateTransitionEnd(transitionDuration);\n      } else {\n        $(activeElement).removeClass(ClassName$2.ACTIVE);\n        $(nextElement).addClass(ClassName$2.ACTIVE);\n        this._isSliding = false;\n        $(this._element).trigger(slidEvent);\n      }\n\n      if (isCycling) {\n        this.cycle();\n      }\n    } // Static\n    ;\n\n    Carousel._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var data = $(this).data(DATA_KEY$2);\n\n        var _config = _objectSpread({}, Default, $(this).data());\n\n        if (typeof config === 'object') {\n          _config = _objectSpread({}, _config, config);\n        }\n\n        var action = typeof config === 'string' ? config : _config.slide;\n\n        if (!data) {\n          data = new Carousel(this, _config);\n          $(this).data(DATA_KEY$2, data);\n        }\n\n        if (typeof config === 'number') {\n          data.to(config);\n        } else if (typeof action === 'string') {\n          if (typeof data[action] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + action + \"\\\"\");\n          }\n\n          data[action]();\n        } else if (_config.interval && _config.ride) {\n          data.pause();\n          data.cycle();\n        }\n      });\n    };\n\n    Carousel._dataApiClickHandler = function _dataApiClickHandler(event) {\n      var selector = Util.getSelectorFromElement(this);\n\n      if (!selector) {\n        return;\n      }\n\n      var target = $(selector)[0];\n\n      if (!target || !$(target).hasClass(ClassName$2.CAROUSEL)) {\n        return;\n      }\n\n      var config = _objectSpread({}, $(target).data(), $(this).data());\n\n      var slideIndex = this.getAttribute('data-slide-to');\n\n      if (slideIndex) {\n        config.interval = false;\n      }\n\n      Carousel._jQueryInterface.call($(target), config);\n\n      if (slideIndex) {\n        $(target).data(DATA_KEY$2).to(slideIndex);\n      }\n\n      event.preventDefault();\n    };\n\n    _createClass(Carousel, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$2;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default;\n      }\n    }]);\n\n    return Carousel;\n  }();\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n\n  $(document).on(Event$2.CLICK_DATA_API, Selector$2.DATA_SLIDE, Carousel._dataApiClickHandler);\n  $(window).on(Event$2.LOAD_DATA_API, function () {\n    var carousels = [].slice.call(document.querySelectorAll(Selector$2.DATA_RIDE));\n\n    for (var i = 0, len = carousels.length; i < len; i++) {\n      var $carousel = $(carousels[i]);\n\n      Carousel._jQueryInterface.call($carousel, $carousel.data());\n    }\n  });\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n  $.fn[NAME$2] = Carousel._jQueryInterface;\n  $.fn[NAME$2].Constructor = Carousel;\n\n  $.fn[NAME$2].noConflict = function () {\n    $.fn[NAME$2] = JQUERY_NO_CONFLICT$2;\n    return Carousel._jQueryInterface;\n  };\n\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  var NAME$3 = 'collapse';\n  var VERSION$3 = '4.3.1';\n  var DATA_KEY$3 = 'bs.collapse';\n  var EVENT_KEY$3 = \".\" + DATA_KEY$3;\n  var DATA_API_KEY$3 = '.data-api';\n  var JQUERY_NO_CONFLICT$3 = $.fn[NAME$3];\n  var Default$1 = {\n    toggle: true,\n    parent: ''\n  };\n  var DefaultType$1 = {\n    toggle: 'boolean',\n    parent: '(string|element)'\n  };\n  var Event$3 = {\n    SHOW: \"show\" + EVENT_KEY$3,\n    SHOWN: \"shown\" + EVENT_KEY$3,\n    HIDE: \"hide\" + EVENT_KEY$3,\n    HIDDEN: \"hidden\" + EVENT_KEY$3,\n    CLICK_DATA_API: \"click\" + EVENT_KEY$3 + DATA_API_KEY$3\n  };\n  var ClassName$3 = {\n    SHOW: 'show',\n    COLLAPSE: 'collapse',\n    COLLAPSING: 'collapsing',\n    COLLAPSED: 'collapsed'\n  };\n  var Dimension = {\n    WIDTH: 'width',\n    HEIGHT: 'height'\n  };\n  var Selector$3 = {\n    ACTIVES: '.show, .collapsing',\n    DATA_TOGGLE: '[data-toggle=\"collapse\"]'\n    /**\n     * ------------------------------------------------------------------------\n     * Class Definition\n     * ------------------------------------------------------------------------\n     */\n\n  };\n\n  var Collapse =\n  /*#__PURE__*/\n  function () {\n    function Collapse(element, config) {\n      this._isTransitioning = false;\n      this._element = element;\n      this._config = this._getConfig(config);\n      this._triggerArray = [].slice.call(document.querySelectorAll(\"[data-toggle=\\\"collapse\\\"][href=\\\"#\" + element.id + \"\\\"],\" + (\"[data-toggle=\\\"collapse\\\"][data-target=\\\"#\" + element.id + \"\\\"]\")));\n      var toggleList = [].slice.call(document.querySelectorAll(Selector$3.DATA_TOGGLE));\n\n      for (var i = 0, len = toggleList.length; i < len; i++) {\n        var elem = toggleList[i];\n        var selector = Util.getSelectorFromElement(elem);\n        var filterElement = [].slice.call(document.querySelectorAll(selector)).filter(function (foundElem) {\n          return foundElem === element;\n        });\n\n        if (selector !== null && filterElement.length > 0) {\n          this._selector = selector;\n\n          this._triggerArray.push(elem);\n        }\n      }\n\n      this._parent = this._config.parent ? this._getParent() : null;\n\n      if (!this._config.parent) {\n        this._addAriaAndCollapsedClass(this._element, this._triggerArray);\n      }\n\n      if (this._config.toggle) {\n        this.toggle();\n      }\n    } // Getters\n\n\n    var _proto = Collapse.prototype;\n\n    // Public\n    _proto.toggle = function toggle() {\n      if ($(this._element).hasClass(ClassName$3.SHOW)) {\n        this.hide();\n      } else {\n        this.show();\n      }\n    };\n\n    _proto.show = function show() {\n      var _this = this;\n\n      if (this._isTransitioning || $(this._element).hasClass(ClassName$3.SHOW)) {\n        return;\n      }\n\n      var actives;\n      var activesData;\n\n      if (this._parent) {\n        actives = [].slice.call(this._parent.querySelectorAll(Selector$3.ACTIVES)).filter(function (elem) {\n          if (typeof _this._config.parent === 'string') {\n            return elem.getAttribute('data-parent') === _this._config.parent;\n          }\n\n          return elem.classList.contains(ClassName$3.COLLAPSE);\n        });\n\n        if (actives.length === 0) {\n          actives = null;\n        }\n      }\n\n      if (actives) {\n        activesData = $(actives).not(this._selector).data(DATA_KEY$3);\n\n        if (activesData && activesData._isTransitioning) {\n          return;\n        }\n      }\n\n      var startEvent = $.Event(Event$3.SHOW);\n      $(this._element).trigger(startEvent);\n\n      if (startEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      if (actives) {\n        Collapse._jQueryInterface.call($(actives).not(this._selector), 'hide');\n\n        if (!activesData) {\n          $(actives).data(DATA_KEY$3, null);\n        }\n      }\n\n      var dimension = this._getDimension();\n\n      $(this._element).removeClass(ClassName$3.COLLAPSE).addClass(ClassName$3.COLLAPSING);\n      this._element.style[dimension] = 0;\n\n      if (this._triggerArray.length) {\n        $(this._triggerArray).removeClass(ClassName$3.COLLAPSED).attr('aria-expanded', true);\n      }\n\n      this.setTransitioning(true);\n\n      var complete = function complete() {\n        $(_this._element).removeClass(ClassName$3.COLLAPSING).addClass(ClassName$3.COLLAPSE).addClass(ClassName$3.SHOW);\n        _this._element.style[dimension] = '';\n\n        _this.setTransitioning(false);\n\n        $(_this._element).trigger(Event$3.SHOWN);\n      };\n\n      var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);\n      var scrollSize = \"scroll\" + capitalizedDimension;\n      var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n      $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n      this._element.style[dimension] = this._element[scrollSize] + \"px\";\n    };\n\n    _proto.hide = function hide() {\n      var _this2 = this;\n\n      if (this._isTransitioning || !$(this._element).hasClass(ClassName$3.SHOW)) {\n        return;\n      }\n\n      var startEvent = $.Event(Event$3.HIDE);\n      $(this._element).trigger(startEvent);\n\n      if (startEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      var dimension = this._getDimension();\n\n      this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + \"px\";\n      Util.reflow(this._element);\n      $(this._element).addClass(ClassName$3.COLLAPSING).removeClass(ClassName$3.COLLAPSE).removeClass(ClassName$3.SHOW);\n      var triggerArrayLength = this._triggerArray.length;\n\n      if (triggerArrayLength > 0) {\n        for (var i = 0; i < triggerArrayLength; i++) {\n          var trigger = this._triggerArray[i];\n          var selector = Util.getSelectorFromElement(trigger);\n\n          if (selector !== null) {\n            var $elem = $([].slice.call(document.querySelectorAll(selector)));\n\n            if (!$elem.hasClass(ClassName$3.SHOW)) {\n              $(trigger).addClass(ClassName$3.COLLAPSED).attr('aria-expanded', false);\n            }\n          }\n        }\n      }\n\n      this.setTransitioning(true);\n\n      var complete = function complete() {\n        _this2.setTransitioning(false);\n\n        $(_this2._element).removeClass(ClassName$3.COLLAPSING).addClass(ClassName$3.COLLAPSE).trigger(Event$3.HIDDEN);\n      };\n\n      this._element.style[dimension] = '';\n      var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n      $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n    };\n\n    _proto.setTransitioning = function setTransitioning(isTransitioning) {\n      this._isTransitioning = isTransitioning;\n    };\n\n    _proto.dispose = function dispose() {\n      $.removeData(this._element, DATA_KEY$3);\n      this._config = null;\n      this._parent = null;\n      this._element = null;\n      this._triggerArray = null;\n      this._isTransitioning = null;\n    } // Private\n    ;\n\n    _proto._getConfig = function _getConfig(config) {\n      config = _objectSpread({}, Default$1, config);\n      config.toggle = Boolean(config.toggle); // Coerce string values\n\n      Util.typeCheckConfig(NAME$3, config, DefaultType$1);\n      return config;\n    };\n\n    _proto._getDimension = function _getDimension() {\n      var hasWidth = $(this._element).hasClass(Dimension.WIDTH);\n      return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT;\n    };\n\n    _proto._getParent = function _getParent() {\n      var _this3 = this;\n\n      var parent;\n\n      if (Util.isElement(this._config.parent)) {\n        parent = this._config.parent; // It's a jQuery object\n\n        if (typeof this._config.parent.jquery !== 'undefined') {\n          parent = this._config.parent[0];\n        }\n      } else {\n        parent = document.querySelector(this._config.parent);\n      }\n\n      var selector = \"[data-toggle=\\\"collapse\\\"][data-parent=\\\"\" + this._config.parent + \"\\\"]\";\n      var children = [].slice.call(parent.querySelectorAll(selector));\n      $(children).each(function (i, element) {\n        _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]);\n      });\n      return parent;\n    };\n\n    _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {\n      var isOpen = $(element).hasClass(ClassName$3.SHOW);\n\n      if (triggerArray.length) {\n        $(triggerArray).toggleClass(ClassName$3.COLLAPSED, !isOpen).attr('aria-expanded', isOpen);\n      }\n    } // Static\n    ;\n\n    Collapse._getTargetFromElement = function _getTargetFromElement(element) {\n      var selector = Util.getSelectorFromElement(element);\n      return selector ? document.querySelector(selector) : null;\n    };\n\n    Collapse._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var $this = $(this);\n        var data = $this.data(DATA_KEY$3);\n\n        var _config = _objectSpread({}, Default$1, $this.data(), typeof config === 'object' && config ? config : {});\n\n        if (!data && _config.toggle && /show|hide/.test(config)) {\n          _config.toggle = false;\n        }\n\n        if (!data) {\n          data = new Collapse(this, _config);\n          $this.data(DATA_KEY$3, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config]();\n        }\n      });\n    };\n\n    _createClass(Collapse, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$3;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$1;\n      }\n    }]);\n\n    return Collapse;\n  }();\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n\n  $(document).on(Event$3.CLICK_DATA_API, Selector$3.DATA_TOGGLE, function (event) {\n    // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n    if (event.currentTarget.tagName === 'A') {\n      event.preventDefault();\n    }\n\n    var $trigger = $(this);\n    var selector = Util.getSelectorFromElement(this);\n    var selectors = [].slice.call(document.querySelectorAll(selector));\n    $(selectors).each(function () {\n      var $target = $(this);\n      var data = $target.data(DATA_KEY$3);\n      var config = data ? 'toggle' : $trigger.data();\n\n      Collapse._jQueryInterface.call($target, config);\n    });\n  });\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n  $.fn[NAME$3] = Collapse._jQueryInterface;\n  $.fn[NAME$3].Constructor = Collapse;\n\n  $.fn[NAME$3].noConflict = function () {\n    $.fn[NAME$3] = JQUERY_NO_CONFLICT$3;\n    return Collapse._jQueryInterface;\n  };\n\n  /**!\n   * @fileOverview Kickass library to create and place poppers near their reference elements.\n   * @version 1.14.7\n   * @license\n   * Copyright (c) 2016 Federico Zivolo and contributors\n   *\n   * Permission is hereby granted, free of charge, to any person obtaining a copy\n   * of this software and associated documentation files (the \"Software\"), to deal\n   * in the Software without restriction, including without limitation the rights\n   * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n   * copies of the Software, and to permit persons to whom the Software is\n   * furnished to do so, subject to the following conditions:\n   *\n   * The above copyright notice and this permission notice shall be included in all\n   * copies or substantial portions of the Software.\n   *\n   * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n   * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n   * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n   * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n   * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n   * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n   * SOFTWARE.\n   */\n  var isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\n\n  var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\n  var timeoutDuration = 0;\n  for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n    if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n      timeoutDuration = 1;\n      break;\n    }\n  }\n\n  function microtaskDebounce(fn) {\n    var called = false;\n    return function () {\n      if (called) {\n        return;\n      }\n      called = true;\n      window.Promise.resolve().then(function () {\n        called = false;\n        fn();\n      });\n    };\n  }\n\n  function taskDebounce(fn) {\n    var scheduled = false;\n    return function () {\n      if (!scheduled) {\n        scheduled = true;\n        setTimeout(function () {\n          scheduled = false;\n          fn();\n        }, timeoutDuration);\n      }\n    };\n  }\n\n  var supportsMicroTasks = isBrowser && window.Promise;\n\n  /**\n  * Create a debounced version of a method, that's asynchronously deferred\n  * but called in the minimum time possible.\n  *\n  * @method\n  * @memberof Popper.Utils\n  * @argument {Function} fn\n  * @returns {Function}\n  */\n  var debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\n\n  /**\n   * Check if the given variable is a function\n   * @method\n   * @memberof Popper.Utils\n   * @argument {Any} functionToCheck - variable to check\n   * @returns {Boolean} answer to: is a function?\n   */\n  function isFunction(functionToCheck) {\n    var getType = {};\n    return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n  }\n\n  /**\n   * Get CSS computed property of the given element\n   * @method\n   * @memberof Popper.Utils\n   * @argument {Eement} element\n   * @argument {String} property\n   */\n  function getStyleComputedProperty(element, property) {\n    if (element.nodeType !== 1) {\n      return [];\n    }\n    // NOTE: 1 DOM access here\n    var window = element.ownerDocument.defaultView;\n    var css = window.getComputedStyle(element, null);\n    return property ? css[property] : css;\n  }\n\n  /**\n   * Returns the parentNode or the host of the element\n   * @method\n   * @memberof Popper.Utils\n   * @argument {Element} element\n   * @returns {Element} parent\n   */\n  function getParentNode(element) {\n    if (element.nodeName === 'HTML') {\n      return element;\n    }\n    return element.parentNode || element.host;\n  }\n\n  /**\n   * Returns the scrolling parent of the given element\n   * @method\n   * @memberof Popper.Utils\n   * @argument {Element} element\n   * @returns {Element} scroll parent\n   */\n  function getScrollParent(element) {\n    // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n    if (!element) {\n      return document.body;\n    }\n\n    switch (element.nodeName) {\n      case 'HTML':\n      case 'BODY':\n        return element.ownerDocument.body;\n      case '#document':\n        return element.body;\n    }\n\n    // Firefox want us to check `-x` and `-y` variations as well\n\n    var _getStyleComputedProp = getStyleComputedProperty(element),\n        overflow = _getStyleComputedProp.overflow,\n        overflowX = _getStyleComputedProp.overflowX,\n        overflowY = _getStyleComputedProp.overflowY;\n\n    if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n      return element;\n    }\n\n    return getScrollParent(getParentNode(element));\n  }\n\n  var isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\n  var isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n  /**\n   * Determines if the browser is Internet Explorer\n   * @method\n   * @memberof Popper.Utils\n   * @param {Number} version to check\n   * @returns {Boolean} isIE\n   */\n  function isIE(version) {\n    if (version === 11) {\n      return isIE11;\n    }\n    if (version === 10) {\n      return isIE10;\n    }\n    return isIE11 || isIE10;\n  }\n\n  /**\n   * Returns the offset parent of the given element\n   * @method\n   * @memberof Popper.Utils\n   * @argument {Element} element\n   * @returns {Element} offset parent\n   */\n  function getOffsetParent(element) {\n    if (!element) {\n      return document.documentElement;\n    }\n\n    var noOffsetParent = isIE(10) ? document.body : null;\n\n    // NOTE: 1 DOM access here\n    var offsetParent = element.offsetParent || null;\n    // Skip hidden elements which don't have an offsetParent\n    while (offsetParent === noOffsetParent && element.nextElementSibling) {\n      offsetParent = (element = element.nextElementSibling).offsetParent;\n    }\n\n    var nodeName = offsetParent && offsetParent.nodeName;\n\n    if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n      return element ? element.ownerDocument.documentElement : document.documentElement;\n    }\n\n    // .offsetParent will return the closest TH, TD or TABLE in case\n    // no offsetParent is present, I hate this job...\n    if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {\n      return getOffsetParent(offsetParent);\n    }\n\n    return offsetParent;\n  }\n\n  function isOffsetContainer(element) {\n    var nodeName = element.nodeName;\n\n    if (nodeName === 'BODY') {\n      return false;\n    }\n    return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;\n  }\n\n  /**\n   * Finds the root node (document, shadowDOM root) of the given element\n   * @method\n   * @memberof Popper.Utils\n   * @argument {Element} node\n   * @returns {Element} root node\n   */\n  function getRoot(node) {\n    if (node.parentNode !== null) {\n      return getRoot(node.parentNode);\n    }\n\n    return node;\n  }\n\n  /**\n   * Finds the offset parent common to the two provided nodes\n   * @method\n   * @memberof Popper.Utils\n   * @argument {Element} element1\n   * @argument {Element} element2\n   * @returns {Element} common offset parent\n   */\n  function findCommonOffsetParent(element1, element2) {\n    // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n    if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n      return document.documentElement;\n    }\n\n    // Here we make sure to give as \"start\" the element that comes first in the DOM\n    var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n    var start = order ? element1 : element2;\n    var end = order ? element2 : element1;\n\n    // Get common ancestor container\n    var range = document.createRange();\n    range.setStart(start, 0);\n    range.setEnd(end, 0);\n    var commonAncestorContainer = range.commonAncestorContainer;\n\n    // Both nodes are inside #document\n\n    if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {\n      if (isOffsetContainer(commonAncestorContainer)) {\n        return commonAncestorContainer;\n      }\n\n      return getOffsetParent(commonAncestorContainer);\n    }\n\n    // one of the nodes is inside shadowDOM, find which one\n    var element1root = getRoot(element1);\n    if (element1root.host) {\n      return findCommonOffsetParent(element1root.host, element2);\n    } else {\n      return findCommonOffsetParent(element1, getRoot(element2).host);\n    }\n  }\n\n  /**\n   * Gets the scroll value of the given element in the given side (top and left)\n   * @method\n   * @memberof Popper.Utils\n   * @argument {Element} element\n   * @argument {String} side `top` or `left`\n   * @returns {number} amount of scrolled pixels\n   */\n  function getScroll(element) {\n    var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\n\n    var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n    var nodeName = element.nodeName;\n\n    if (nodeName === 'BODY' || nodeName === 'HTML') {\n      var html = element.ownerDocument.documentElement;\n      var scrollingElement = element.ownerDocument.scrollingElement || html;\n      return scrollingElement[upperSide];\n    }\n\n    return element[upperSide];\n  }\n\n  /*\n   * Sum or subtract the element scroll values (left and top) from a given rect object\n   * @method\n   * @memberof Popper.Utils\n   * @param {Object} rect - Rect object you want to change\n   * @param {HTMLElement} element - The element from the function reads the scroll values\n   * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n   * @return {Object} rect - The modifier rect object\n   */\n  function includeScroll(rect, element) {\n    var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n    var scrollTop = getScroll(element, 'top');\n    var scrollLeft = getScroll(element, 'left');\n    var modifier = subtract ? -1 : 1;\n    rect.top += scrollTop * modifier;\n    rect.bottom += scrollTop * modifier;\n    rect.left += scrollLeft * modifier;\n    rect.right += scrollLeft * modifier;\n    return rect;\n  }\n\n  /*\n   * Helper to detect borders of a given element\n   * @method\n   * @memberof Popper.Utils\n   * @param {CSSStyleDeclaration} styles\n   * Result of `getStyleComputedProperty` on the given element\n   * @param {String} axis - `x` or `y`\n   * @return {number} borders - The borders size of the given axis\n   */\n\n  function getBordersSize(styles, axis) {\n    var sideA = axis === 'x' ? 'Left' : 'Top';\n    var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n    return parseFloat(styles['border' + sideA + 'Width'], 10) + parseFloat(styles['border' + sideB + 'Width'], 10);\n  }\n\n  function getSize(axis, body, html, computedStyle) {\n    return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0);\n  }\n\n  function getWindowSizes(document) {\n    var body = document.body;\n    var html = document.documentElement;\n    var computedStyle = isIE(10) && getComputedStyle(html);\n\n    return {\n      height: getSize('Height', body, html, computedStyle),\n      width: getSize('Width', body, html, computedStyle)\n    };\n  }\n\n  var classCallCheck = function (instance, Constructor) {\n    if (!(instance instanceof Constructor)) {\n      throw new TypeError(\"Cannot call a class as a function\");\n    }\n  };\n\n  var createClass = function () {\n    function defineProperties(target, props) {\n      for (var i = 0; i < props.length; i++) {\n        var descriptor = props[i];\n        descriptor.enumerable = descriptor.enumerable || false;\n        descriptor.configurable = true;\n        if (\"value\" in descriptor) descriptor.writable = true;\n        Object.defineProperty(target, descriptor.key, descriptor);\n      }\n    }\n\n    return function (Constructor, protoProps, staticProps) {\n      if (protoProps) defineProperties(Constructor.prototype, protoProps);\n      if (staticProps) defineProperties(Constructor, staticProps);\n      return Constructor;\n    };\n  }();\n\n\n\n\n\n  var defineProperty = function (obj, key, value) {\n    if (key in obj) {\n      Object.defineProperty(obj, key, {\n        value: value,\n        enumerable: true,\n        configurable: true,\n        writable: true\n      });\n    } else {\n      obj[key] = value;\n    }\n\n    return obj;\n  };\n\n  var _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  /**\n   * Given element offsets, generate an output similar to getBoundingClientRect\n   * @method\n   * @memberof Popper.Utils\n   * @argument {Object} offsets\n   * @returns {Object} ClientRect like output\n   */\n  function getClientRect(offsets) {\n    return _extends({}, offsets, {\n      right: offsets.left + offsets.width,\n      bottom: offsets.top + offsets.height\n    });\n  }\n\n  /**\n   * Get bounding client rect of given element\n   * @method\n   * @memberof Popper.Utils\n   * @param {HTMLElement} element\n   * @return {Object} client rect\n   */\n  function getBoundingClientRect(element) {\n    var rect = {};\n\n    // IE10 10 FIX: Please, don't ask, the element isn't\n    // considered in DOM in some circumstances...\n    // This isn't reproducible in IE10 compatibility mode of IE11\n    try {\n      if (isIE(10)) {\n        rect = element.getBoundingClientRect();\n        var scrollTop = getScroll(element, 'top');\n        var scrollLeft = getScroll(element, 'left');\n        rect.top += scrollTop;\n        rect.left += scrollLeft;\n        rect.bottom += scrollTop;\n        rect.right += scrollLeft;\n      } else {\n        rect = element.getBoundingClientRect();\n      }\n    } catch (e) {}\n\n    var result = {\n      left: rect.left,\n      top: rect.top,\n      width: rect.right - rect.left,\n      height: rect.bottom - rect.top\n    };\n\n    // subtract scrollbar size from sizes\n    var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n    var width = sizes.width || element.clientWidth || result.right - result.left;\n    var height = sizes.height || element.clientHeight || result.bottom - result.top;\n\n    var horizScrollbar = element.offsetWidth - width;\n    var vertScrollbar = element.offsetHeight - height;\n\n    // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n    // we make this check conditional for performance reasons\n    if (horizScrollbar || vertScrollbar) {\n      var styles = getStyleComputedProperty(element);\n      horizScrollbar -= getBordersSize(styles, 'x');\n      vertScrollbar -= getBordersSize(styles, 'y');\n\n      result.width -= horizScrollbar;\n      result.height -= vertScrollbar;\n    }\n\n    return getClientRect(result);\n  }\n\n  function getOffsetRectRelativeToArbitraryNode(children, parent) {\n    var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n    var isIE10 = isIE(10);\n    var isHTML = parent.nodeName === 'HTML';\n    var childrenRect = getBoundingClientRect(children);\n    var parentRect = getBoundingClientRect(parent);\n    var scrollParent = getScrollParent(children);\n\n    var styles = getStyleComputedProperty(parent);\n    var borderTopWidth = parseFloat(styles.borderTopWidth, 10);\n    var borderLeftWidth = parseFloat(styles.borderLeftWidth, 10);\n\n    // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n    if (fixedPosition && isHTML) {\n      parentRect.top = Math.max(parentRect.top, 0);\n      parentRect.left = Math.max(parentRect.left, 0);\n    }\n    var offsets = getClientRect({\n      top: childrenRect.top - parentRect.top - borderTopWidth,\n      left: childrenRect.left - parentRect.left - borderLeftWidth,\n      width: childrenRect.width,\n      height: childrenRect.height\n    });\n    offsets.marginTop = 0;\n    offsets.marginLeft = 0;\n\n    // Subtract margins of documentElement in case it's being used as parent\n    // we do this only on HTML because it's the only element that behaves\n    // differently when margins are applied to it. The margins are included in\n    // the box of the documentElement, in the other cases not.\n    if (!isIE10 && isHTML) {\n      var marginTop = parseFloat(styles.marginTop, 10);\n      var marginLeft = parseFloat(styles.marginLeft, 10);\n\n      offsets.top -= borderTopWidth - marginTop;\n      offsets.bottom -= borderTopWidth - marginTop;\n      offsets.left -= borderLeftWidth - marginLeft;\n      offsets.right -= borderLeftWidth - marginLeft;\n\n      // Attach marginTop and marginLeft because in some circumstances we may need them\n      offsets.marginTop = marginTop;\n      offsets.marginLeft = marginLeft;\n    }\n\n    if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {\n      offsets = includeScroll(offsets, parent);\n    }\n\n    return offsets;\n  }\n\n  function getViewportOffsetRectRelativeToArtbitraryNode(element) {\n    var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n    var html = element.ownerDocument.documentElement;\n    var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n    var width = Math.max(html.clientWidth, window.innerWidth || 0);\n    var height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n    var scrollTop = !excludeScroll ? getScroll(html) : 0;\n    var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n    var offset = {\n      top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n      left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n      width: width,\n      height: height\n    };\n\n    return getClientRect(offset);\n  }\n\n  /**\n   * Check if the given element is fixed or is inside a fixed parent\n   * @method\n   * @memberof Popper.Utils\n   * @argument {Element} element\n   * @argument {Element} customContainer\n   * @returns {Boolean} answer to \"isFixed?\"\n   */\n  function isFixed(element) {\n    var nodeName = element.nodeName;\n    if (nodeName === 'BODY' || nodeName === 'HTML') {\n      return false;\n    }\n    if (getStyleComputedProperty(element, 'position') === 'fixed') {\n      return true;\n    }\n    var parentNode = getParentNode(element);\n    if (!parentNode) {\n      return false;\n    }\n    return isFixed(parentNode);\n  }\n\n  /**\n   * Finds the first parent of an element that has a transformed property defined\n   * @method\n   * @memberof Popper.Utils\n   * @argument {Element} element\n   * @returns {Element} first transformed parent or documentElement\n   */\n\n  function getFixedPositionOffsetParent(element) {\n    // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n    if (!element || !element.parentElement || isIE()) {\n      return document.documentElement;\n    }\n    var el = element.parentElement;\n    while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n      el = el.parentElement;\n    }\n    return el || document.documentElement;\n  }\n\n  /**\n   * Computed the boundaries limits and return them\n   * @method\n   * @memberof Popper.Utils\n   * @param {HTMLElement} popper\n   * @param {HTMLElement} reference\n   * @param {number} padding\n   * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n   * @param {Boolean} fixedPosition - Is in fixed position mode\n   * @returns {Object} Coordinates of the boundaries\n   */\n  function getBoundaries(popper, reference, padding, boundariesElement) {\n    var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n    // NOTE: 1 DOM access here\n\n    var boundaries = { top: 0, left: 0 };\n    var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference);\n\n    // Handle viewport case\n    if (boundariesElement === 'viewport') {\n      boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n    } else {\n      // Handle other cases based on DOM element used as boundaries\n      var boundariesNode = void 0;\n      if (boundariesElement === 'scrollParent') {\n        boundariesNode = getScrollParent(getParentNode(reference));\n        if (boundariesNode.nodeName === 'BODY') {\n          boundariesNode = popper.ownerDocument.documentElement;\n        }\n      } else if (boundariesElement === 'window') {\n        boundariesNode = popper.ownerDocument.documentElement;\n      } else {\n        boundariesNode = boundariesElement;\n      }\n\n      var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition);\n\n      // In case of HTML, we need a different computation\n      if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n        var _getWindowSizes = getWindowSizes(popper.ownerDocument),\n            height = _getWindowSizes.height,\n            width = _getWindowSizes.width;\n\n        boundaries.top += offsets.top - offsets.marginTop;\n        boundaries.bottom = height + offsets.top;\n        boundaries.left += offsets.left - offsets.marginLeft;\n        boundaries.right = width + offsets.left;\n      } else {\n        // for all the other DOM elements, this one is good\n        boundaries = offsets;\n      }\n    }\n\n    // Add paddings\n    padding = padding || 0;\n    var isPaddingNumber = typeof padding === 'number';\n    boundaries.left += isPaddingNumber ? padding : padding.left || 0;\n    boundaries.top += isPaddingNumber ? padding : padding.top || 0;\n    boundaries.right -= isPaddingNumber ? padding : padding.right || 0;\n    boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;\n\n    return boundaries;\n  }\n\n  function getArea(_ref) {\n    var width = _ref.width,\n        height = _ref.height;\n\n    return width * height;\n  }\n\n  /**\n   * Utility used to transform the `auto` placement to the placement with more\n   * available space.\n   * @method\n   * @memberof Popper.Utils\n   * @argument {Object} data - The data object generated by update method\n   * @argument {Object} options - Modifiers configuration and options\n   * @returns {Object} The data object, properly modified\n   */\n  function computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {\n    var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n\n    if (placement.indexOf('auto') === -1) {\n      return placement;\n    }\n\n    var boundaries = getBoundaries(popper, reference, padding, boundariesElement);\n\n    var rects = {\n      top: {\n        width: boundaries.width,\n        height: refRect.top - boundaries.top\n      },\n      right: {\n        width: boundaries.right - refRect.right,\n        height: boundaries.height\n      },\n      bottom: {\n        width: boundaries.width,\n        height: boundaries.bottom - refRect.bottom\n      },\n      left: {\n        width: refRect.left - boundaries.left,\n        height: boundaries.height\n      }\n    };\n\n    var sortedAreas = Object.keys(rects).map(function (key) {\n      return _extends({\n        key: key\n      }, rects[key], {\n        area: getArea(rects[key])\n      });\n    }).sort(function (a, b) {\n      return b.area - a.area;\n    });\n\n    var filteredAreas = sortedAreas.filter(function (_ref2) {\n      var width = _ref2.width,\n          height = _ref2.height;\n      return width >= popper.clientWidth && height >= popper.clientHeight;\n    });\n\n    var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\n\n    var variation = placement.split('-')[1];\n\n    return computedPlacement + (variation ? '-' + variation : '');\n  }\n\n  /**\n   * Get offsets to the reference element\n   * @method\n   * @memberof Popper.Utils\n   * @param {Object} state\n   * @param {Element} popper - the popper element\n   * @param {Element} reference - the reference element (the popper will be relative to this)\n   * @param {Element} fixedPosition - is in fixed position mode\n   * @returns {Object} An object containing the offsets which will be applied to the popper\n   */\n  function getReferenceOffsets(state, popper, reference) {\n    var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n    var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference);\n    return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n  }\n\n  /**\n   * Get the outer sizes of the given element (offset size + margins)\n   * @method\n   * @memberof Popper.Utils\n   * @argument {Element} element\n   * @returns {Object} object containing width and height properties\n   */\n  function getOuterSizes(element) {\n    var window = element.ownerDocument.defaultView;\n    var styles = window.getComputedStyle(element);\n    var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n    var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n    var result = {\n      width: element.offsetWidth + y,\n      height: element.offsetHeight + x\n    };\n    return result;\n  }\n\n  /**\n   * Get the opposite placement of the given one\n   * @method\n   * @memberof Popper.Utils\n   * @argument {String} placement\n   * @returns {String} flipped placement\n   */\n  function getOppositePlacement(placement) {\n    var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n    return placement.replace(/left|right|bottom|top/g, function (matched) {\n      return hash[matched];\n    });\n  }\n\n  /**\n   * Get offsets to the popper\n   * @method\n   * @memberof Popper.Utils\n   * @param {Object} position - CSS position the Popper will get applied\n   * @param {HTMLElement} popper - the popper element\n   * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n   * @param {String} placement - one of the valid placement options\n   * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n   */\n  function getPopperOffsets(popper, referenceOffsets, placement) {\n    placement = placement.split('-')[0];\n\n    // Get popper node sizes\n    var popperRect = getOuterSizes(popper);\n\n    // Add position, width and height to our offsets object\n    var popperOffsets = {\n      width: popperRect.width,\n      height: popperRect.height\n    };\n\n    // depending by the popper placement we have to compute its offsets slightly differently\n    var isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n    var mainSide = isHoriz ? 'top' : 'left';\n    var secondarySide = isHoriz ? 'left' : 'top';\n    var measurement = isHoriz ? 'height' : 'width';\n    var secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n    popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;\n    if (placement === secondarySide) {\n      popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n    } else {\n      popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];\n    }\n\n    return popperOffsets;\n  }\n\n  /**\n   * Mimics the `find` method of Array\n   * @method\n   * @memberof Popper.Utils\n   * @argument {Array} arr\n   * @argument prop\n   * @argument value\n   * @returns index or -1\n   */\n  function find(arr, check) {\n    // use native find if supported\n    if (Array.prototype.find) {\n      return arr.find(check);\n    }\n\n    // use `filter` to obtain the same behavior of `find`\n    return arr.filter(check)[0];\n  }\n\n  /**\n   * Return the index of the matching object\n   * @method\n   * @memberof Popper.Utils\n   * @argument {Array} arr\n   * @argument prop\n   * @argument value\n   * @returns index or -1\n   */\n  function findIndex(arr, prop, value) {\n    // use native findIndex if supported\n    if (Array.prototype.findIndex) {\n      return arr.findIndex(function (cur) {\n        return cur[prop] === value;\n      });\n    }\n\n    // use `find` + `indexOf` if `findIndex` isn't supported\n    var match = find(arr, function (obj) {\n      return obj[prop] === value;\n    });\n    return arr.indexOf(match);\n  }\n\n  /**\n   * Loop trough the list of modifiers and run them in order,\n   * each of them will then edit the data object.\n   * @method\n   * @memberof Popper.Utils\n   * @param {dataObject} data\n   * @param {Array} modifiers\n   * @param {String} ends - Optional modifier name used as stopper\n   * @returns {dataObject}\n   */\n  function runModifiers(modifiers, data, ends) {\n    var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n    modifiersToRun.forEach(function (modifier) {\n      if (modifier['function']) {\n        // eslint-disable-line dot-notation\n        console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n      }\n      var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n      if (modifier.enabled && isFunction(fn)) {\n        // Add properties to offsets to make them a complete clientRect object\n        // we do this before each modifier to make sure the previous one doesn't\n        // mess with these values\n        data.offsets.popper = getClientRect(data.offsets.popper);\n        data.offsets.reference = getClientRect(data.offsets.reference);\n\n        data = fn(data, modifier);\n      }\n    });\n\n    return data;\n  }\n\n  /**\n   * Updates the position of the popper, computing the new offsets and applying\n   * the new style.<br />\n   * Prefer `scheduleUpdate` over `update` because of performance reasons.\n   * @method\n   * @memberof Popper\n   */\n  function update() {\n    // if popper is destroyed, don't perform any further update\n    if (this.state.isDestroyed) {\n      return;\n    }\n\n    var data = {\n      instance: this,\n      styles: {},\n      arrowStyles: {},\n      attributes: {},\n      flipped: false,\n      offsets: {}\n    };\n\n    // compute reference element offsets\n    data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed);\n\n    // compute auto placement, store placement inside the data object,\n    // modifiers will be able to edit `placement` if needed\n    // and refer to originalPlacement to know the original value\n    data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);\n\n    // store the computed placement inside `originalPlacement`\n    data.originalPlacement = data.placement;\n\n    data.positionFixed = this.options.positionFixed;\n\n    // compute the popper offsets\n    data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n\n    data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute';\n\n    // run the modifiers\n    data = runModifiers(this.modifiers, data);\n\n    // the first `update` will call `onCreate` callback\n    // the other ones will call `onUpdate` callback\n    if (!this.state.isCreated) {\n      this.state.isCreated = true;\n      this.options.onCreate(data);\n    } else {\n      this.options.onUpdate(data);\n    }\n  }\n\n  /**\n   * Helper used to know if the given modifier is enabled.\n   * @method\n   * @memberof Popper.Utils\n   * @returns {Boolean}\n   */\n  function isModifierEnabled(modifiers, modifierName) {\n    return modifiers.some(function (_ref) {\n      var name = _ref.name,\n          enabled = _ref.enabled;\n      return enabled && name === modifierName;\n    });\n  }\n\n  /**\n   * Get the prefixed supported property name\n   * @method\n   * @memberof Popper.Utils\n   * @argument {String} property (camelCase)\n   * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n   */\n  function getSupportedPropertyName(property) {\n    var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n    var upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n    for (var i = 0; i < prefixes.length; i++) {\n      var prefix = prefixes[i];\n      var toCheck = prefix ? '' + prefix + upperProp : property;\n      if (typeof document.body.style[toCheck] !== 'undefined') {\n        return toCheck;\n      }\n    }\n    return null;\n  }\n\n  /**\n   * Destroys the popper.\n   * @method\n   * @memberof Popper\n   */\n  function destroy() {\n    this.state.isDestroyed = true;\n\n    // touch DOM only if `applyStyle` modifier is enabled\n    if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n      this.popper.removeAttribute('x-placement');\n      this.popper.style.position = '';\n      this.popper.style.top = '';\n      this.popper.style.left = '';\n      this.popper.style.right = '';\n      this.popper.style.bottom = '';\n      this.popper.style.willChange = '';\n      this.popper.style[getSupportedPropertyName('transform')] = '';\n    }\n\n    this.disableEventListeners();\n\n    // remove the popper if user explicity asked for the deletion on destroy\n    // do not use `remove` because IE11 doesn't support it\n    if (this.options.removeOnDestroy) {\n      this.popper.parentNode.removeChild(this.popper);\n    }\n    return this;\n  }\n\n  /**\n   * Get the window associated with the element\n   * @argument {Element} element\n   * @returns {Window}\n   */\n  function getWindow(element) {\n    var ownerDocument = element.ownerDocument;\n    return ownerDocument ? ownerDocument.defaultView : window;\n  }\n\n  function attachToScrollParents(scrollParent, event, callback, scrollParents) {\n    var isBody = scrollParent.nodeName === 'BODY';\n    var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n    target.addEventListener(event, callback, { passive: true });\n\n    if (!isBody) {\n      attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\n    }\n    scrollParents.push(target);\n  }\n\n  /**\n   * Setup needed event listeners used to update the popper position\n   * @method\n   * @memberof Popper.Utils\n   * @private\n   */\n  function setupEventListeners(reference, options, state, updateBound) {\n    // Resize event listener on window\n    state.updateBound = updateBound;\n    getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n    // Scroll event listener on scroll parents\n    var scrollElement = getScrollParent(reference);\n    attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\n    state.scrollElement = scrollElement;\n    state.eventsEnabled = true;\n\n    return state;\n  }\n\n  /**\n   * It will add resize/scroll events and start recalculating\n   * position of the popper element when they are triggered.\n   * @method\n   * @memberof Popper\n   */\n  function enableEventListeners() {\n    if (!this.state.eventsEnabled) {\n      this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\n    }\n  }\n\n  /**\n   * Remove event listeners used to update the popper position\n   * @method\n   * @memberof Popper.Utils\n   * @private\n   */\n  function removeEventListeners(reference, state) {\n    // Remove resize event listener on window\n    getWindow(reference).removeEventListener('resize', state.updateBound);\n\n    // Remove scroll event listener on scroll parents\n    state.scrollParents.forEach(function (target) {\n      target.removeEventListener('scroll', state.updateBound);\n    });\n\n    // Reset state\n    state.updateBound = null;\n    state.scrollParents = [];\n    state.scrollElement = null;\n    state.eventsEnabled = false;\n    return state;\n  }\n\n  /**\n   * It will remove resize/scroll events and won't recalculate popper position\n   * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n   * unless you call `update` method manually.\n   * @method\n   * @memberof Popper\n   */\n  function disableEventListeners() {\n    if (this.state.eventsEnabled) {\n      cancelAnimationFrame(this.scheduleUpdate);\n      this.state = removeEventListeners(this.reference, this.state);\n    }\n  }\n\n  /**\n   * Tells if a given input is a number\n   * @method\n   * @memberof Popper.Utils\n   * @param {*} input to check\n   * @return {Boolean}\n   */\n  function isNumeric(n) {\n    return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n  }\n\n  /**\n   * Set the style to the given popper\n   * @method\n   * @memberof Popper.Utils\n   * @argument {Element} element - Element to apply the style to\n   * @argument {Object} styles\n   * Object with a list of properties and values which will be applied to the element\n   */\n  function setStyles(element, styles) {\n    Object.keys(styles).forEach(function (prop) {\n      var unit = '';\n      // add unit if the value is numeric and is one of the following\n      if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\n        unit = 'px';\n      }\n      element.style[prop] = styles[prop] + unit;\n    });\n  }\n\n  /**\n   * Set the attributes to the given popper\n   * @method\n   * @memberof Popper.Utils\n   * @argument {Element} element - Element to apply the attributes to\n   * @argument {Object} styles\n   * Object with a list of properties and values which will be applied to the element\n   */\n  function setAttributes(element, attributes) {\n    Object.keys(attributes).forEach(function (prop) {\n      var value = attributes[prop];\n      if (value !== false) {\n        element.setAttribute(prop, attributes[prop]);\n      } else {\n        element.removeAttribute(prop);\n      }\n    });\n  }\n\n  /**\n   * @function\n   * @memberof Modifiers\n   * @argument {Object} data - The data object generated by `update` method\n   * @argument {Object} data.styles - List of style properties - values to apply to popper element\n   * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n   * @argument {Object} options - Modifiers configuration and options\n   * @returns {Object} The same data object\n   */\n  function applyStyle(data) {\n    // any property present in `data.styles` will be applied to the popper,\n    // in this way we can make the 3rd party modifiers add custom styles to it\n    // Be aware, modifiers could override the properties defined in the previous\n    // lines of this modifier!\n    setStyles(data.instance.popper, data.styles);\n\n    // any property present in `data.attributes` will be applied to the popper,\n    // they will be set as HTML attributes of the element\n    setAttributes(data.instance.popper, data.attributes);\n\n    // if arrowElement is defined and arrowStyles has some properties\n    if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n      setStyles(data.arrowElement, data.arrowStyles);\n    }\n\n    return data;\n  }\n\n  /**\n   * Set the x-placement attribute before everything else because it could be used\n   * to add margins to the popper margins needs to be calculated to get the\n   * correct popper offsets.\n   * @method\n   * @memberof Popper.modifiers\n   * @param {HTMLElement} reference - The reference element used to position the popper\n   * @param {HTMLElement} popper - The HTML element used as popper\n   * @param {Object} options - Popper.js options\n   */\n  function applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\n    // compute reference element offsets\n    var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n    // compute auto placement, store placement inside the data object,\n    // modifiers will be able to edit `placement` if needed\n    // and refer to originalPlacement to know the original value\n    var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\n\n    popper.setAttribute('x-placement', placement);\n\n    // Apply `position` to popper before anything else because\n    // without the position applied we can't guarantee correct computations\n    setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n    return options;\n  }\n\n  /**\n   * @function\n   * @memberof Popper.Utils\n   * @argument {Object} data - The data object generated by `update` method\n   * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n   * @returns {Object} The popper's position offsets rounded\n   *\n   * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n   * good as it can be within reason.\n   * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n   *\n   * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n   * as well on High DPI screens).\n   *\n   * Firefox prefers no rounding for positioning and does not have blurriness on\n   * high DPI screens.\n   *\n   * Only horizontal placement and left/right values need to be considered.\n   */\n  function getRoundedOffsets(data, shouldRound) {\n    var _data$offsets = data.offsets,\n        popper = _data$offsets.popper,\n        reference = _data$offsets.reference;\n    var round = Math.round,\n        floor = Math.floor;\n\n    var noRound = function noRound(v) {\n      return v;\n    };\n\n    var referenceWidth = round(reference.width);\n    var popperWidth = round(popper.width);\n\n    var isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n    var isVariation = data.placement.indexOf('-') !== -1;\n    var sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n    var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n\n    var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor;\n    var verticalToInteger = !shouldRound ? noRound : round;\n\n    return {\n      left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left),\n      top: verticalToInteger(popper.top),\n      bottom: verticalToInteger(popper.bottom),\n      right: horizontalToInteger(popper.right)\n    };\n  }\n\n  var isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n\n  /**\n   * @function\n   * @memberof Modifiers\n   * @argument {Object} data - The data object generated by `update` method\n   * @argument {Object} options - Modifiers configuration and options\n   * @returns {Object} The data object, properly modified\n   */\n  function computeStyle(data, options) {\n    var x = options.x,\n        y = options.y;\n    var popper = data.offsets.popper;\n\n    // Remove this legacy support in Popper.js v2\n\n    var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {\n      return modifier.name === 'applyStyle';\n    }).gpuAcceleration;\n    if (legacyGpuAccelerationOption !== undefined) {\n      console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');\n    }\n    var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;\n\n    var offsetParent = getOffsetParent(data.instance.popper);\n    var offsetParentRect = getBoundingClientRect(offsetParent);\n\n    // Styles\n    var styles = {\n      position: popper.position\n    };\n\n    var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox);\n\n    var sideA = x === 'bottom' ? 'top' : 'bottom';\n    var sideB = y === 'right' ? 'left' : 'right';\n\n    // if gpuAcceleration is set to `true` and transform is supported,\n    //  we use `translate3d` to apply the position to the popper we\n    // automatically use the supported prefixed version if needed\n    var prefixedProperty = getSupportedPropertyName('transform');\n\n    // now, let's make a step back and look at this code closely (wtf?)\n    // If the content of the popper grows once it's been positioned, it\n    // may happen that the popper gets misplaced because of the new content\n    // overflowing its reference element\n    // To avoid this problem, we provide two options (x and y), which allow\n    // the consumer to define the offset origin.\n    // If we position a popper on top of a reference element, we can set\n    // `x` to `top` to make the popper grow towards its top instead of\n    // its bottom.\n    var left = void 0,\n        top = void 0;\n    if (sideA === 'bottom') {\n      // when offsetParent is <html> the positioning is relative to the bottom of the screen (excluding the scrollbar)\n      // and not the bottom of the html element\n      if (offsetParent.nodeName === 'HTML') {\n        top = -offsetParent.clientHeight + offsets.bottom;\n      } else {\n        top = -offsetParentRect.height + offsets.bottom;\n      }\n    } else {\n      top = offsets.top;\n    }\n    if (sideB === 'right') {\n      if (offsetParent.nodeName === 'HTML') {\n        left = -offsetParent.clientWidth + offsets.right;\n      } else {\n        left = -offsetParentRect.width + offsets.right;\n      }\n    } else {\n      left = offsets.left;\n    }\n    if (gpuAcceleration && prefixedProperty) {\n      styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';\n      styles[sideA] = 0;\n      styles[sideB] = 0;\n      styles.willChange = 'transform';\n    } else {\n      // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n      var invertTop = sideA === 'bottom' ? -1 : 1;\n      var invertLeft = sideB === 'right' ? -1 : 1;\n      styles[sideA] = top * invertTop;\n      styles[sideB] = left * invertLeft;\n      styles.willChange = sideA + ', ' + sideB;\n    }\n\n    // Attributes\n    var attributes = {\n      'x-placement': data.placement\n    };\n\n    // Update `data` attributes, styles and arrowStyles\n    data.attributes = _extends({}, attributes, data.attributes);\n    data.styles = _extends({}, styles, data.styles);\n    data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\n\n    return data;\n  }\n\n  /**\n   * Helper used to know if the given modifier depends from another one.<br />\n   * It checks if the needed modifier is listed and enabled.\n   * @method\n   * @memberof Popper.Utils\n   * @param {Array} modifiers - list of modifiers\n   * @param {String} requestingName - name of requesting modifier\n   * @param {String} requestedName - name of requested modifier\n   * @returns {Boolean}\n   */\n  function isModifierRequired(modifiers, requestingName, requestedName) {\n    var requesting = find(modifiers, function (_ref) {\n      var name = _ref.name;\n      return name === requestingName;\n    });\n\n    var isRequired = !!requesting && modifiers.some(function (modifier) {\n      return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;\n    });\n\n    if (!isRequired) {\n      var _requesting = '`' + requestingName + '`';\n      var requested = '`' + requestedName + '`';\n      console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');\n    }\n    return isRequired;\n  }\n\n  /**\n   * @function\n   * @memberof Modifiers\n   * @argument {Object} data - The data object generated by update method\n   * @argument {Object} options - Modifiers configuration and options\n   * @returns {Object} The data object, properly modified\n   */\n  function arrow(data, options) {\n    var _data$offsets$arrow;\n\n    // arrow depends on keepTogether in order to work\n    if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n      return data;\n    }\n\n    var arrowElement = options.element;\n\n    // if arrowElement is a string, suppose it's a CSS selector\n    if (typeof arrowElement === 'string') {\n      arrowElement = data.instance.popper.querySelector(arrowElement);\n\n      // if arrowElement is not found, don't run the modifier\n      if (!arrowElement) {\n        return data;\n      }\n    } else {\n      // if the arrowElement isn't a query selector we must check that the\n      // provided DOM node is child of its popper node\n      if (!data.instance.popper.contains(arrowElement)) {\n        console.warn('WARNING: `arrow.element` must be child of its popper element!');\n        return data;\n      }\n    }\n\n    var placement = data.placement.split('-')[0];\n    var _data$offsets = data.offsets,\n        popper = _data$offsets.popper,\n        reference = _data$offsets.reference;\n\n    var isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n    var len = isVertical ? 'height' : 'width';\n    var sideCapitalized = isVertical ? 'Top' : 'Left';\n    var side = sideCapitalized.toLowerCase();\n    var altSide = isVertical ? 'left' : 'top';\n    var opSide = isVertical ? 'bottom' : 'right';\n    var arrowElementSize = getOuterSizes(arrowElement)[len];\n\n    //\n    // extends keepTogether behavior making sure the popper and its\n    // reference have enough pixels in conjunction\n    //\n\n    // top/left side\n    if (reference[opSide] - arrowElementSize < popper[side]) {\n      data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);\n    }\n    // bottom/right side\n    if (reference[side] + arrowElementSize > popper[opSide]) {\n      data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];\n    }\n    data.offsets.popper = getClientRect(data.offsets.popper);\n\n    // compute center of the popper\n    var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n    // Compute the sideValue using the updated popper offsets\n    // take popper margin in account because we don't have this info available\n    var css = getStyleComputedProperty(data.instance.popper);\n    var popperMarginSide = parseFloat(css['margin' + sideCapitalized], 10);\n    var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width'], 10);\n    var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n    // prevent arrowElement from being placed not contiguously to its popper\n    sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n    data.arrowElement = arrowElement;\n    data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);\n\n    return data;\n  }\n\n  /**\n   * Get the opposite placement variation of the given one\n   * @method\n   * @memberof Popper.Utils\n   * @argument {String} placement variation\n   * @returns {String} flipped placement variation\n   */\n  function getOppositeVariation(variation) {\n    if (variation === 'end') {\n      return 'start';\n    } else if (variation === 'start') {\n      return 'end';\n    }\n    return variation;\n  }\n\n  /**\n   * List of accepted placements to use as values of the `placement` option.<br />\n   * Valid placements are:\n   * - `auto`\n   * - `top`\n   * - `right`\n   * - `bottom`\n   * - `left`\n   *\n   * Each placement can have a variation from this list:\n   * - `-start`\n   * - `-end`\n   *\n   * Variations are interpreted easily if you think of them as the left to right\n   * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n   * is right.<br />\n   * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n   *\n   * Some valid examples are:\n   * - `top-end` (on top of reference, right aligned)\n   * - `right-start` (on right of reference, top aligned)\n   * - `bottom` (on bottom, centered)\n   * - `auto-end` (on the side with more space available, alignment depends by placement)\n   *\n   * @static\n   * @type {Array}\n   * @enum {String}\n   * @readonly\n   * @method placements\n   * @memberof Popper\n   */\n  var placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\n\n  // Get rid of `auto` `auto-start` and `auto-end`\n  var validPlacements = placements.slice(3);\n\n  /**\n   * Given an initial placement, returns all the subsequent placements\n   * clockwise (or counter-clockwise).\n   *\n   * @method\n   * @memberof Popper.Utils\n   * @argument {String} placement - A valid placement (it accepts variations)\n   * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n   * @returns {Array} placements including their variations\n   */\n  function clockwise(placement) {\n    var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n    var index = validPlacements.indexOf(placement);\n    var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));\n    return counter ? arr.reverse() : arr;\n  }\n\n  var BEHAVIORS = {\n    FLIP: 'flip',\n    CLOCKWISE: 'clockwise',\n    COUNTERCLOCKWISE: 'counterclockwise'\n  };\n\n  /**\n   * @function\n   * @memberof Modifiers\n   * @argument {Object} data - The data object generated by update method\n   * @argument {Object} options - Modifiers configuration and options\n   * @returns {Object} The data object, properly modified\n   */\n  function flip(data, options) {\n    // if `inner` modifier is enabled, we can't use the `flip` modifier\n    if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n      return data;\n    }\n\n    if (data.flipped && data.placement === data.originalPlacement) {\n      // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n      return data;\n    }\n\n    var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed);\n\n    var placement = data.placement.split('-')[0];\n    var placementOpposite = getOppositePlacement(placement);\n    var variation = data.placement.split('-')[1] || '';\n\n    var flipOrder = [];\n\n    switch (options.behavior) {\n      case BEHAVIORS.FLIP:\n        flipOrder = [placement, placementOpposite];\n        break;\n      case BEHAVIORS.CLOCKWISE:\n        flipOrder = clockwise(placement);\n        break;\n      case BEHAVIORS.COUNTERCLOCKWISE:\n        flipOrder = clockwise(placement, true);\n        break;\n      default:\n        flipOrder = options.behavior;\n    }\n\n    flipOrder.forEach(function (step, index) {\n      if (placement !== step || flipOrder.length === index + 1) {\n        return data;\n      }\n\n      placement = data.placement.split('-')[0];\n      placementOpposite = getOppositePlacement(placement);\n\n      var popperOffsets = data.offsets.popper;\n      var refOffsets = data.offsets.reference;\n\n      // using floor because the reference offsets may contain decimals we are not going to consider here\n      var floor = Math.floor;\n      var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);\n\n      var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n      var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n      var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n      var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n      var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;\n\n      // flip the variation if required\n      var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n      var flippedVariation = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);\n\n      if (overlapsRef || overflowsBoundaries || flippedVariation) {\n        // this boolean to detect any flip loop\n        data.flipped = true;\n\n        if (overlapsRef || overflowsBoundaries) {\n          placement = flipOrder[index + 1];\n        }\n\n        if (flippedVariation) {\n          variation = getOppositeVariation(variation);\n        }\n\n        data.placement = placement + (variation ? '-' + variation : '');\n\n        // this object contains `position`, we want to preserve it along with\n        // any additional property we may add in the future\n        data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\n\n        data = runModifiers(data.instance.modifiers, data, 'flip');\n      }\n    });\n    return data;\n  }\n\n  /**\n   * @function\n   * @memberof Modifiers\n   * @argument {Object} data - The data object generated by update method\n   * @argument {Object} options - Modifiers configuration and options\n   * @returns {Object} The data object, properly modified\n   */\n  function keepTogether(data) {\n    var _data$offsets = data.offsets,\n        popper = _data$offsets.popper,\n        reference = _data$offsets.reference;\n\n    var placement = data.placement.split('-')[0];\n    var floor = Math.floor;\n    var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n    var side = isVertical ? 'right' : 'bottom';\n    var opSide = isVertical ? 'left' : 'top';\n    var measurement = isVertical ? 'width' : 'height';\n\n    if (popper[side] < floor(reference[opSide])) {\n      data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];\n    }\n    if (popper[opSide] > floor(reference[side])) {\n      data.offsets.popper[opSide] = floor(reference[side]);\n    }\n\n    return data;\n  }\n\n  /**\n   * Converts a string containing value + unit into a px value number\n   * @function\n   * @memberof {modifiers~offset}\n   * @private\n   * @argument {String} str - Value + unit string\n   * @argument {String} measurement - `height` or `width`\n   * @argument {Object} popperOffsets\n   * @argument {Object} referenceOffsets\n   * @returns {Number|String}\n   * Value in pixels, or original string if no values were extracted\n   */\n  function toValue(str, measurement, popperOffsets, referenceOffsets) {\n    // separate value from unit\n    var split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n    var value = +split[1];\n    var unit = split[2];\n\n    // If it's not a number it's an operator, I guess\n    if (!value) {\n      return str;\n    }\n\n    if (unit.indexOf('%') === 0) {\n      var element = void 0;\n      switch (unit) {\n        case '%p':\n          element = popperOffsets;\n          break;\n        case '%':\n        case '%r':\n        default:\n          element = referenceOffsets;\n      }\n\n      var rect = getClientRect(element);\n      return rect[measurement] / 100 * value;\n    } else if (unit === 'vh' || unit === 'vw') {\n      // if is a vh or vw, we calculate the size based on the viewport\n      var size = void 0;\n      if (unit === 'vh') {\n        size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n      } else {\n        size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n      }\n      return size / 100 * value;\n    } else {\n      // if is an explicit pixel unit, we get rid of the unit and keep the value\n      // if is an implicit unit, it's px, and we return just the value\n      return value;\n    }\n  }\n\n  /**\n   * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n   * @function\n   * @memberof {modifiers~offset}\n   * @private\n   * @argument {String} offset\n   * @argument {Object} popperOffsets\n   * @argument {Object} referenceOffsets\n   * @argument {String} basePlacement\n   * @returns {Array} a two cells array with x and y offsets in numbers\n   */\n  function parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\n    var offsets = [0, 0];\n\n    // Use height if placement is left or right and index is 0 otherwise use width\n    // in this way the first offset will use an axis and the second one\n    // will use the other one\n    var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n    // Split the offset string to obtain a list of values and operands\n    // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n    var fragments = offset.split(/(\\+|\\-)/).map(function (frag) {\n      return frag.trim();\n    });\n\n    // Detect if the offset string contains a pair of values or a single one\n    // they could be separated by comma or space\n    var divider = fragments.indexOf(find(fragments, function (frag) {\n      return frag.search(/,|\\s/) !== -1;\n    }));\n\n    if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n      console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');\n    }\n\n    // If divider is found, we divide the list of values and operands to divide\n    // them by ofset X and Y.\n    var splitRegex = /\\s*,\\s*|\\s+/;\n    var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments];\n\n    // Convert the values with units to absolute pixels to allow our computations\n    ops = ops.map(function (op, index) {\n      // Most of the units rely on the orientation of the popper\n      var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';\n      var mergeWithPrevious = false;\n      return op\n      // This aggregates any `+` or `-` sign that aren't considered operators\n      // e.g.: 10 + +5 => [10, +, +5]\n      .reduce(function (a, b) {\n        if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n          a[a.length - 1] = b;\n          mergeWithPrevious = true;\n          return a;\n        } else if (mergeWithPrevious) {\n          a[a.length - 1] += b;\n          mergeWithPrevious = false;\n          return a;\n        } else {\n          return a.concat(b);\n        }\n      }, [])\n      // Here we convert the string values into number values (in px)\n      .map(function (str) {\n        return toValue(str, measurement, popperOffsets, referenceOffsets);\n      });\n    });\n\n    // Loop trough the offsets arrays and execute the operations\n    ops.forEach(function (op, index) {\n      op.forEach(function (frag, index2) {\n        if (isNumeric(frag)) {\n          offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n        }\n      });\n    });\n    return offsets;\n  }\n\n  /**\n   * @function\n   * @memberof Modifiers\n   * @argument {Object} data - The data object generated by update method\n   * @argument {Object} options - Modifiers configuration and options\n   * @argument {Number|String} options.offset=0\n   * The offset value as described in the modifier description\n   * @returns {Object} The data object, properly modified\n   */\n  function offset(data, _ref) {\n    var offset = _ref.offset;\n    var placement = data.placement,\n        _data$offsets = data.offsets,\n        popper = _data$offsets.popper,\n        reference = _data$offsets.reference;\n\n    var basePlacement = placement.split('-')[0];\n\n    var offsets = void 0;\n    if (isNumeric(+offset)) {\n      offsets = [+offset, 0];\n    } else {\n      offsets = parseOffset(offset, popper, reference, basePlacement);\n    }\n\n    if (basePlacement === 'left') {\n      popper.top += offsets[0];\n      popper.left -= offsets[1];\n    } else if (basePlacement === 'right') {\n      popper.top += offsets[0];\n      popper.left += offsets[1];\n    } else if (basePlacement === 'top') {\n      popper.left += offsets[0];\n      popper.top -= offsets[1];\n    } else if (basePlacement === 'bottom') {\n      popper.left += offsets[0];\n      popper.top += offsets[1];\n    }\n\n    data.popper = popper;\n    return data;\n  }\n\n  /**\n   * @function\n   * @memberof Modifiers\n   * @argument {Object} data - The data object generated by `update` method\n   * @argument {Object} options - Modifiers configuration and options\n   * @returns {Object} The data object, properly modified\n   */\n  function preventOverflow(data, options) {\n    var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);\n\n    // If offsetParent is the reference element, we really want to\n    // go one step up and use the next offsetParent as reference to\n    // avoid to make this modifier completely useless and look like broken\n    if (data.instance.reference === boundariesElement) {\n      boundariesElement = getOffsetParent(boundariesElement);\n    }\n\n    // NOTE: DOM access here\n    // resets the popper's position so that the document size can be calculated excluding\n    // the size of the popper element itself\n    var transformProp = getSupportedPropertyName('transform');\n    var popperStyles = data.instance.popper.style; // assignment to help minification\n    var top = popperStyles.top,\n        left = popperStyles.left,\n        transform = popperStyles[transformProp];\n\n    popperStyles.top = '';\n    popperStyles.left = '';\n    popperStyles[transformProp] = '';\n\n    var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed);\n\n    // NOTE: DOM access here\n    // restores the original style properties after the offsets have been computed\n    popperStyles.top = top;\n    popperStyles.left = left;\n    popperStyles[transformProp] = transform;\n\n    options.boundaries = boundaries;\n\n    var order = options.priority;\n    var popper = data.offsets.popper;\n\n    var check = {\n      primary: function primary(placement) {\n        var value = popper[placement];\n        if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\n          value = Math.max(popper[placement], boundaries[placement]);\n        }\n        return defineProperty({}, placement, value);\n      },\n      secondary: function secondary(placement) {\n        var mainSide = placement === 'right' ? 'left' : 'top';\n        var value = popper[mainSide];\n        if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\n          value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\n        }\n        return defineProperty({}, mainSide, value);\n      }\n    };\n\n    order.forEach(function (placement) {\n      var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n      popper = _extends({}, popper, check[side](placement));\n    });\n\n    data.offsets.popper = popper;\n\n    return data;\n  }\n\n  /**\n   * @function\n   * @memberof Modifiers\n   * @argument {Object} data - The data object generated by `update` method\n   * @argument {Object} options - Modifiers configuration and options\n   * @returns {Object} The data object, properly modified\n   */\n  function shift(data) {\n    var placement = data.placement;\n    var basePlacement = placement.split('-')[0];\n    var shiftvariation = placement.split('-')[1];\n\n    // if shift shiftvariation is specified, run the modifier\n    if (shiftvariation) {\n      var _data$offsets = data.offsets,\n          reference = _data$offsets.reference,\n          popper = _data$offsets.popper;\n\n      var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n      var side = isVertical ? 'left' : 'top';\n      var measurement = isVertical ? 'width' : 'height';\n\n      var shiftOffsets = {\n        start: defineProperty({}, side, reference[side]),\n        end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\n      };\n\n      data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\n    }\n\n    return data;\n  }\n\n  /**\n   * @function\n   * @memberof Modifiers\n   * @argument {Object} data - The data object generated by update method\n   * @argument {Object} options - Modifiers configuration and options\n   * @returns {Object} The data object, properly modified\n   */\n  function hide(data) {\n    if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n      return data;\n    }\n\n    var refRect = data.offsets.reference;\n    var bound = find(data.instance.modifiers, function (modifier) {\n      return modifier.name === 'preventOverflow';\n    }).boundaries;\n\n    if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {\n      // Avoid unnecessary DOM access if visibility hasn't changed\n      if (data.hide === true) {\n        return data;\n      }\n\n      data.hide = true;\n      data.attributes['x-out-of-boundaries'] = '';\n    } else {\n      // Avoid unnecessary DOM access if visibility hasn't changed\n      if (data.hide === false) {\n        return data;\n      }\n\n      data.hide = false;\n      data.attributes['x-out-of-boundaries'] = false;\n    }\n\n    return data;\n  }\n\n  /**\n   * @function\n   * @memberof Modifiers\n   * @argument {Object} data - The data object generated by `update` method\n   * @argument {Object} options - Modifiers configuration and options\n   * @returns {Object} The data object, properly modified\n   */\n  function inner(data) {\n    var placement = data.placement;\n    var basePlacement = placement.split('-')[0];\n    var _data$offsets = data.offsets,\n        popper = _data$offsets.popper,\n        reference = _data$offsets.reference;\n\n    var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n    var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n    popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n    data.placement = getOppositePlacement(placement);\n    data.offsets.popper = getClientRect(popper);\n\n    return data;\n  }\n\n  /**\n   * Modifier function, each modifier can have a function of this type assigned\n   * to its `fn` property.<br />\n   * These functions will be called on each update, this means that you must\n   * make sure they are performant enough to avoid performance bottlenecks.\n   *\n   * @function ModifierFn\n   * @argument {dataObject} data - The data object generated by `update` method\n   * @argument {Object} options - Modifiers configuration and options\n   * @returns {dataObject} The data object, properly modified\n   */\n\n  /**\n   * Modifiers are plugins used to alter the behavior of your poppers.<br />\n   * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n   * needed by the library.\n   *\n   * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n   * All the other properties are configurations that could be tweaked.\n   * @namespace modifiers\n   */\n  var modifiers = {\n    /**\n     * Modifier used to shift the popper on the start or end of its reference\n     * element.<br />\n     * It will read the variation of the `placement` property.<br />\n     * It can be one either `-end` or `-start`.\n     * @memberof modifiers\n     * @inner\n     */\n    shift: {\n      /** @prop {number} order=100 - Index used to define the order of execution */\n      order: 100,\n      /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n      enabled: true,\n      /** @prop {ModifierFn} */\n      fn: shift\n    },\n\n    /**\n     * The `offset` modifier can shift your popper on both its axis.\n     *\n     * It accepts the following units:\n     * - `px` or unit-less, interpreted as pixels\n     * - `%` or `%r`, percentage relative to the length of the reference element\n     * - `%p`, percentage relative to the length of the popper element\n     * - `vw`, CSS viewport width unit\n     * - `vh`, CSS viewport height unit\n     *\n     * For length is intended the main axis relative to the placement of the popper.<br />\n     * This means that if the placement is `top` or `bottom`, the length will be the\n     * `width`. In case of `left` or `right`, it will be the `height`.\n     *\n     * You can provide a single value (as `Number` or `String`), or a pair of values\n     * as `String` divided by a comma or one (or more) white spaces.<br />\n     * The latter is a deprecated method because it leads to confusion and will be\n     * removed in v2.<br />\n     * Additionally, it accepts additions and subtractions between different units.\n     * Note that multiplications and divisions aren't supported.\n     *\n     * Valid examples are:\n     * ```\n     * 10\n     * '10%'\n     * '10, 10'\n     * '10%, 10'\n     * '10 + 10%'\n     * '10 - 5vh + 3%'\n     * '-10px + 5vh, 5px - 6%'\n     * ```\n     * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n     * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n     * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n     *\n     * @memberof modifiers\n     * @inner\n     */\n    offset: {\n      /** @prop {number} order=200 - Index used to define the order of execution */\n      order: 200,\n      /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n      enabled: true,\n      /** @prop {ModifierFn} */\n      fn: offset,\n      /** @prop {Number|String} offset=0\n       * The offset value as described in the modifier description\n       */\n      offset: 0\n    },\n\n    /**\n     * Modifier used to prevent the popper from being positioned outside the boundary.\n     *\n     * A scenario exists where the reference itself is not within the boundaries.<br />\n     * We can say it has \"escaped the boundaries\" — or just \"escaped\".<br />\n     * In this case we need to decide whether the popper should either:\n     *\n     * - detach from the reference and remain \"trapped\" in the boundaries, or\n     * - if it should ignore the boundary and \"escape with its reference\"\n     *\n     * When `escapeWithReference` is set to`true` and reference is completely\n     * outside its boundaries, the popper will overflow (or completely leave)\n     * the boundaries in order to remain attached to the edge of the reference.\n     *\n     * @memberof modifiers\n     * @inner\n     */\n    preventOverflow: {\n      /** @prop {number} order=300 - Index used to define the order of execution */\n      order: 300,\n      /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n      enabled: true,\n      /** @prop {ModifierFn} */\n      fn: preventOverflow,\n      /**\n       * @prop {Array} [priority=['left','right','top','bottom']]\n       * Popper will try to prevent overflow following these priorities by default,\n       * then, it could overflow on the left and on top of the `boundariesElement`\n       */\n      priority: ['left', 'right', 'top', 'bottom'],\n      /**\n       * @prop {number} padding=5\n       * Amount of pixel used to define a minimum distance between the boundaries\n       * and the popper. This makes sure the popper always has a little padding\n       * between the edges of its container\n       */\n      padding: 5,\n      /**\n       * @prop {String|HTMLElement} boundariesElement='scrollParent'\n       * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n       * `viewport` or any DOM element.\n       */\n      boundariesElement: 'scrollParent'\n    },\n\n    /**\n     * Modifier used to make sure the reference and its popper stay near each other\n     * without leaving any gap between the two. Especially useful when the arrow is\n     * enabled and you want to ensure that it points to its reference element.\n     * It cares only about the first axis. You can still have poppers with margin\n     * between the popper and its reference element.\n     * @memberof modifiers\n     * @inner\n     */\n    keepTogether: {\n      /** @prop {number} order=400 - Index used to define the order of execution */\n      order: 400,\n      /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n      enabled: true,\n      /** @prop {ModifierFn} */\n      fn: keepTogether\n    },\n\n    /**\n     * This modifier is used to move the `arrowElement` of the popper to make\n     * sure it is positioned between the reference element and its popper element.\n     * It will read the outer size of the `arrowElement` node to detect how many\n     * pixels of conjunction are needed.\n     *\n     * It has no effect if no `arrowElement` is provided.\n     * @memberof modifiers\n     * @inner\n     */\n    arrow: {\n      /** @prop {number} order=500 - Index used to define the order of execution */\n      order: 500,\n      /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n      enabled: true,\n      /** @prop {ModifierFn} */\n      fn: arrow,\n      /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n      element: '[x-arrow]'\n    },\n\n    /**\n     * Modifier used to flip the popper's placement when it starts to overlap its\n     * reference element.\n     *\n     * Requires the `preventOverflow` modifier before it in order to work.\n     *\n     * **NOTE:** this modifier will interrupt the current update cycle and will\n     * restart it if it detects the need to flip the placement.\n     * @memberof modifiers\n     * @inner\n     */\n    flip: {\n      /** @prop {number} order=600 - Index used to define the order of execution */\n      order: 600,\n      /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n      enabled: true,\n      /** @prop {ModifierFn} */\n      fn: flip,\n      /**\n       * @prop {String|Array} behavior='flip'\n       * The behavior used to change the popper's placement. It can be one of\n       * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n       * placements (with optional variations)\n       */\n      behavior: 'flip',\n      /**\n       * @prop {number} padding=5\n       * The popper will flip if it hits the edges of the `boundariesElement`\n       */\n      padding: 5,\n      /**\n       * @prop {String|HTMLElement} boundariesElement='viewport'\n       * The element which will define the boundaries of the popper position.\n       * The popper will never be placed outside of the defined boundaries\n       * (except if `keepTogether` is enabled)\n       */\n      boundariesElement: 'viewport'\n    },\n\n    /**\n     * Modifier used to make the popper flow toward the inner of the reference element.\n     * By default, when this modifier is disabled, the popper will be placed outside\n     * the reference element.\n     * @memberof modifiers\n     * @inner\n     */\n    inner: {\n      /** @prop {number} order=700 - Index used to define the order of execution */\n      order: 700,\n      /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n      enabled: false,\n      /** @prop {ModifierFn} */\n      fn: inner\n    },\n\n    /**\n     * Modifier used to hide the popper when its reference element is outside of the\n     * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n     * be used to hide with a CSS selector the popper when its reference is\n     * out of boundaries.\n     *\n     * Requires the `preventOverflow` modifier before it in order to work.\n     * @memberof modifiers\n     * @inner\n     */\n    hide: {\n      /** @prop {number} order=800 - Index used to define the order of execution */\n      order: 800,\n      /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n      enabled: true,\n      /** @prop {ModifierFn} */\n      fn: hide\n    },\n\n    /**\n     * Computes the style that will be applied to the popper element to gets\n     * properly positioned.\n     *\n     * Note that this modifier will not touch the DOM, it just prepares the styles\n     * so that `applyStyle` modifier can apply it. This separation is useful\n     * in case you need to replace `applyStyle` with a custom implementation.\n     *\n     * This modifier has `850` as `order` value to maintain backward compatibility\n     * with previous versions of Popper.js. Expect the modifiers ordering method\n     * to change in future major versions of the library.\n     *\n     * @memberof modifiers\n     * @inner\n     */\n    computeStyle: {\n      /** @prop {number} order=850 - Index used to define the order of execution */\n      order: 850,\n      /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n      enabled: true,\n      /** @prop {ModifierFn} */\n      fn: computeStyle,\n      /**\n       * @prop {Boolean} gpuAcceleration=true\n       * If true, it uses the CSS 3D transformation to position the popper.\n       * Otherwise, it will use the `top` and `left` properties\n       */\n      gpuAcceleration: true,\n      /**\n       * @prop {string} [x='bottom']\n       * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n       * Change this if your popper should grow in a direction different from `bottom`\n       */\n      x: 'bottom',\n      /**\n       * @prop {string} [x='left']\n       * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n       * Change this if your popper should grow in a direction different from `right`\n       */\n      y: 'right'\n    },\n\n    /**\n     * Applies the computed styles to the popper element.\n     *\n     * All the DOM manipulations are limited to this modifier. This is useful in case\n     * you want to integrate Popper.js inside a framework or view library and you\n     * want to delegate all the DOM manipulations to it.\n     *\n     * Note that if you disable this modifier, you must make sure the popper element\n     * has its position set to `absolute` before Popper.js can do its work!\n     *\n     * Just disable this modifier and define your own to achieve the desired effect.\n     *\n     * @memberof modifiers\n     * @inner\n     */\n    applyStyle: {\n      /** @prop {number} order=900 - Index used to define the order of execution */\n      order: 900,\n      /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n      enabled: true,\n      /** @prop {ModifierFn} */\n      fn: applyStyle,\n      /** @prop {Function} */\n      onLoad: applyStyleOnLoad,\n      /**\n       * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n       * @prop {Boolean} gpuAcceleration=true\n       * If true, it uses the CSS 3D transformation to position the popper.\n       * Otherwise, it will use the `top` and `left` properties\n       */\n      gpuAcceleration: undefined\n    }\n  };\n\n  /**\n   * The `dataObject` is an object containing all the information used by Popper.js.\n   * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n   * @name dataObject\n   * @property {Object} data.instance The Popper.js instance\n   * @property {String} data.placement Placement applied to popper\n   * @property {String} data.originalPlacement Placement originally defined on init\n   * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n   * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n   * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n   * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n   * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n   * @property {Object} data.boundaries Offsets of the popper boundaries\n   * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n   * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n   * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n   * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n   */\n\n  /**\n   * Default options provided to Popper.js constructor.<br />\n   * These can be overridden using the `options` argument of Popper.js.<br />\n   * To override an option, simply pass an object with the same\n   * structure of the `options` object, as the 3rd argument. For example:\n   * ```\n   * new Popper(ref, pop, {\n   *   modifiers: {\n   *     preventOverflow: { enabled: false }\n   *   }\n   * })\n   * ```\n   * @type {Object}\n   * @static\n   * @memberof Popper\n   */\n  var Defaults = {\n    /**\n     * Popper's placement.\n     * @prop {Popper.placements} placement='bottom'\n     */\n    placement: 'bottom',\n\n    /**\n     * Set this to true if you want popper to position it self in 'fixed' mode\n     * @prop {Boolean} positionFixed=false\n     */\n    positionFixed: false,\n\n    /**\n     * Whether events (resize, scroll) are initially enabled.\n     * @prop {Boolean} eventsEnabled=true\n     */\n    eventsEnabled: true,\n\n    /**\n     * Set to true if you want to automatically remove the popper when\n     * you call the `destroy` method.\n     * @prop {Boolean} removeOnDestroy=false\n     */\n    removeOnDestroy: false,\n\n    /**\n     * Callback called when the popper is created.<br />\n     * By default, it is set to no-op.<br />\n     * Access Popper.js instance with `data.instance`.\n     * @prop {onCreate}\n     */\n    onCreate: function onCreate() {},\n\n    /**\n     * Callback called when the popper is updated. This callback is not called\n     * on the initialization/creation of the popper, but only on subsequent\n     * updates.<br />\n     * By default, it is set to no-op.<br />\n     * Access Popper.js instance with `data.instance`.\n     * @prop {onUpdate}\n     */\n    onUpdate: function onUpdate() {},\n\n    /**\n     * List of modifiers used to modify the offsets before they are applied to the popper.\n     * They provide most of the functionalities of Popper.js.\n     * @prop {modifiers}\n     */\n    modifiers: modifiers\n  };\n\n  /**\n   * @callback onCreate\n   * @param {dataObject} data\n   */\n\n  /**\n   * @callback onUpdate\n   * @param {dataObject} data\n   */\n\n  // Utils\n  // Methods\n  var Popper = function () {\n    /**\n     * Creates a new Popper.js instance.\n     * @class Popper\n     * @param {HTMLElement|referenceObject} reference - The reference element used to position the popper\n     * @param {HTMLElement} popper - The HTML element used as the popper\n     * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n     * @return {Object} instance - The generated Popper.js instance\n     */\n    function Popper(reference, popper) {\n      var _this = this;\n\n      var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n      classCallCheck(this, Popper);\n\n      this.scheduleUpdate = function () {\n        return requestAnimationFrame(_this.update);\n      };\n\n      // make update() debounced, so that it only runs at most once-per-tick\n      this.update = debounce(this.update.bind(this));\n\n      // with {} we create a new object with the options inside it\n      this.options = _extends({}, Popper.Defaults, options);\n\n      // init state\n      this.state = {\n        isDestroyed: false,\n        isCreated: false,\n        scrollParents: []\n      };\n\n      // get reference and popper elements (allow jQuery wrappers)\n      this.reference = reference && reference.jquery ? reference[0] : reference;\n      this.popper = popper && popper.jquery ? popper[0] : popper;\n\n      // Deep merge modifiers options\n      this.options.modifiers = {};\n      Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {\n        _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});\n      });\n\n      // Refactoring modifiers' list (Object => Array)\n      this.modifiers = Object.keys(this.options.modifiers).map(function (name) {\n        return _extends({\n          name: name\n        }, _this.options.modifiers[name]);\n      })\n      // sort the modifiers by order\n      .sort(function (a, b) {\n        return a.order - b.order;\n      });\n\n      // modifiers have the ability to execute arbitrary code when Popper.js get inited\n      // such code is executed in the same order of its modifier\n      // they could add new properties to their options configuration\n      // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n      this.modifiers.forEach(function (modifierOptions) {\n        if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n          modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);\n        }\n      });\n\n      // fire the first update to position the popper in the right place\n      this.update();\n\n      var eventsEnabled = this.options.eventsEnabled;\n      if (eventsEnabled) {\n        // setup event listeners, they will take care of update the position in specific situations\n        this.enableEventListeners();\n      }\n\n      this.state.eventsEnabled = eventsEnabled;\n    }\n\n    // We can't use class properties because they don't get listed in the\n    // class prototype and break stuff like Sinon stubs\n\n\n    createClass(Popper, [{\n      key: 'update',\n      value: function update$$1() {\n        return update.call(this);\n      }\n    }, {\n      key: 'destroy',\n      value: function destroy$$1() {\n        return destroy.call(this);\n      }\n    }, {\n      key: 'enableEventListeners',\n      value: function enableEventListeners$$1() {\n        return enableEventListeners.call(this);\n      }\n    }, {\n      key: 'disableEventListeners',\n      value: function disableEventListeners$$1() {\n        return disableEventListeners.call(this);\n      }\n\n      /**\n       * Schedules an update. It will run on the next UI update available.\n       * @method scheduleUpdate\n       * @memberof Popper\n       */\n\n\n      /**\n       * Collection of utilities useful when writing custom modifiers.\n       * Starting from version 1.7, this method is available only if you\n       * include `popper-utils.js` before `popper.js`.\n       *\n       * **DEPRECATION**: This way to access PopperUtils is deprecated\n       * and will be removed in v2! Use the PopperUtils module directly instead.\n       * Due to the high instability of the methods contained in Utils, we can't\n       * guarantee them to follow semver. Use them at your own risk!\n       * @static\n       * @private\n       * @type {Object}\n       * @deprecated since version 1.8\n       * @member Utils\n       * @memberof Popper\n       */\n\n    }]);\n    return Popper;\n  }();\n\n  /**\n   * The `referenceObject` is an object that provides an interface compatible with Popper.js\n   * and lets you use it as replacement of a real DOM node.<br />\n   * You can use this method to position a popper relatively to a set of coordinates\n   * in case you don't have a DOM node to use as reference.\n   *\n   * ```\n   * new Popper(referenceObject, popperNode);\n   * ```\n   *\n   * NB: This feature isn't supported in Internet Explorer 10.\n   * @name referenceObject\n   * @property {Function} data.getBoundingClientRect\n   * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n   * @property {number} data.clientWidth\n   * An ES6 getter that will return the width of the virtual reference element.\n   * @property {number} data.clientHeight\n   * An ES6 getter that will return the height of the virtual reference element.\n   */\n\n\n  Popper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\n  Popper.placements = placements;\n  Popper.Defaults = Defaults;\n\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  var NAME$4 = 'dropdown';\n  var VERSION$4 = '4.3.1';\n  var DATA_KEY$4 = 'bs.dropdown';\n  var EVENT_KEY$4 = \".\" + DATA_KEY$4;\n  var DATA_API_KEY$4 = '.data-api';\n  var JQUERY_NO_CONFLICT$4 = $.fn[NAME$4];\n  var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key\n\n  var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key\n\n  var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key\n\n  var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key\n\n  var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key\n\n  var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse)\n\n  var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + \"|\" + ARROW_DOWN_KEYCODE + \"|\" + ESCAPE_KEYCODE);\n  var Event$4 = {\n    HIDE: \"hide\" + EVENT_KEY$4,\n    HIDDEN: \"hidden\" + EVENT_KEY$4,\n    SHOW: \"show\" + EVENT_KEY$4,\n    SHOWN: \"shown\" + EVENT_KEY$4,\n    CLICK: \"click\" + EVENT_KEY$4,\n    CLICK_DATA_API: \"click\" + EVENT_KEY$4 + DATA_API_KEY$4,\n    KEYDOWN_DATA_API: \"keydown\" + EVENT_KEY$4 + DATA_API_KEY$4,\n    KEYUP_DATA_API: \"keyup\" + EVENT_KEY$4 + DATA_API_KEY$4\n  };\n  var ClassName$4 = {\n    DISABLED: 'disabled',\n    SHOW: 'show',\n    DROPUP: 'dropup',\n    DROPRIGHT: 'dropright',\n    DROPLEFT: 'dropleft',\n    MENURIGHT: 'dropdown-menu-right',\n    MENULEFT: 'dropdown-menu-left',\n    POSITION_STATIC: 'position-static'\n  };\n  var Selector$4 = {\n    DATA_TOGGLE: '[data-toggle=\"dropdown\"]',\n    FORM_CHILD: '.dropdown form',\n    MENU: '.dropdown-menu',\n    NAVBAR_NAV: '.navbar-nav',\n    VISIBLE_ITEMS: '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n  };\n  var AttachmentMap = {\n    TOP: 'top-start',\n    TOPEND: 'top-end',\n    BOTTOM: 'bottom-start',\n    BOTTOMEND: 'bottom-end',\n    RIGHT: 'right-start',\n    RIGHTEND: 'right-end',\n    LEFT: 'left-start',\n    LEFTEND: 'left-end'\n  };\n  var Default$2 = {\n    offset: 0,\n    flip: true,\n    boundary: 'scrollParent',\n    reference: 'toggle',\n    display: 'dynamic'\n  };\n  var DefaultType$2 = {\n    offset: '(number|string|function)',\n    flip: 'boolean',\n    boundary: '(string|element)',\n    reference: '(string|element)',\n    display: 'string'\n    /**\n     * ------------------------------------------------------------------------\n     * Class Definition\n     * ------------------------------------------------------------------------\n     */\n\n  };\n\n  var Dropdown =\n  /*#__PURE__*/\n  function () {\n    function Dropdown(element, config) {\n      this._element = element;\n      this._popper = null;\n      this._config = this._getConfig(config);\n      this._menu = this._getMenuElement();\n      this._inNavbar = this._detectNavbar();\n\n      this._addEventListeners();\n    } // Getters\n\n\n    var _proto = Dropdown.prototype;\n\n    // Public\n    _proto.toggle = function toggle() {\n      if (this._element.disabled || $(this._element).hasClass(ClassName$4.DISABLED)) {\n        return;\n      }\n\n      var parent = Dropdown._getParentFromElement(this._element);\n\n      var isActive = $(this._menu).hasClass(ClassName$4.SHOW);\n\n      Dropdown._clearMenus();\n\n      if (isActive) {\n        return;\n      }\n\n      var relatedTarget = {\n        relatedTarget: this._element\n      };\n      var showEvent = $.Event(Event$4.SHOW, relatedTarget);\n      $(parent).trigger(showEvent);\n\n      if (showEvent.isDefaultPrevented()) {\n        return;\n      } // Disable totally Popper.js for Dropdown in Navbar\n\n\n      if (!this._inNavbar) {\n        /**\n         * Check for Popper dependency\n         * Popper - https://popper.js.org\n         */\n        if (typeof Popper === 'undefined') {\n          throw new TypeError('Bootstrap\\'s dropdowns require Popper.js (https://popper.js.org/)');\n        }\n\n        var referenceElement = this._element;\n\n        if (this._config.reference === 'parent') {\n          referenceElement = parent;\n        } else if (Util.isElement(this._config.reference)) {\n          referenceElement = this._config.reference; // Check if it's jQuery element\n\n          if (typeof this._config.reference.jquery !== 'undefined') {\n            referenceElement = this._config.reference[0];\n          }\n        } // If boundary is not `scrollParent`, then set position to `static`\n        // to allow the menu to \"escape\" the scroll parent's boundaries\n        // https://github.com/twbs/bootstrap/issues/24251\n\n\n        if (this._config.boundary !== 'scrollParent') {\n          $(parent).addClass(ClassName$4.POSITION_STATIC);\n        }\n\n        this._popper = new Popper(referenceElement, this._menu, this._getPopperConfig());\n      } // If this is a touch-enabled device we add extra\n      // empty mouseover listeners to the body's immediate children;\n      // only needed because of broken event delegation on iOS\n      // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n\n      if ('ontouchstart' in document.documentElement && $(parent).closest(Selector$4.NAVBAR_NAV).length === 0) {\n        $(document.body).children().on('mouseover', null, $.noop);\n      }\n\n      this._element.focus();\n\n      this._element.setAttribute('aria-expanded', true);\n\n      $(this._menu).toggleClass(ClassName$4.SHOW);\n      $(parent).toggleClass(ClassName$4.SHOW).trigger($.Event(Event$4.SHOWN, relatedTarget));\n    };\n\n    _proto.show = function show() {\n      if (this._element.disabled || $(this._element).hasClass(ClassName$4.DISABLED) || $(this._menu).hasClass(ClassName$4.SHOW)) {\n        return;\n      }\n\n      var relatedTarget = {\n        relatedTarget: this._element\n      };\n      var showEvent = $.Event(Event$4.SHOW, relatedTarget);\n\n      var parent = Dropdown._getParentFromElement(this._element);\n\n      $(parent).trigger(showEvent);\n\n      if (showEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      $(this._menu).toggleClass(ClassName$4.SHOW);\n      $(parent).toggleClass(ClassName$4.SHOW).trigger($.Event(Event$4.SHOWN, relatedTarget));\n    };\n\n    _proto.hide = function hide() {\n      if (this._element.disabled || $(this._element).hasClass(ClassName$4.DISABLED) || !$(this._menu).hasClass(ClassName$4.SHOW)) {\n        return;\n      }\n\n      var relatedTarget = {\n        relatedTarget: this._element\n      };\n      var hideEvent = $.Event(Event$4.HIDE, relatedTarget);\n\n      var parent = Dropdown._getParentFromElement(this._element);\n\n      $(parent).trigger(hideEvent);\n\n      if (hideEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      $(this._menu).toggleClass(ClassName$4.SHOW);\n      $(parent).toggleClass(ClassName$4.SHOW).trigger($.Event(Event$4.HIDDEN, relatedTarget));\n    };\n\n    _proto.dispose = function dispose() {\n      $.removeData(this._element, DATA_KEY$4);\n      $(this._element).off(EVENT_KEY$4);\n      this._element = null;\n      this._menu = null;\n\n      if (this._popper !== null) {\n        this._popper.destroy();\n\n        this._popper = null;\n      }\n    };\n\n    _proto.update = function update() {\n      this._inNavbar = this._detectNavbar();\n\n      if (this._popper !== null) {\n        this._popper.scheduleUpdate();\n      }\n    } // Private\n    ;\n\n    _proto._addEventListeners = function _addEventListeners() {\n      var _this = this;\n\n      $(this._element).on(Event$4.CLICK, function (event) {\n        event.preventDefault();\n        event.stopPropagation();\n\n        _this.toggle();\n      });\n    };\n\n    _proto._getConfig = function _getConfig(config) {\n      config = _objectSpread({}, this.constructor.Default, $(this._element).data(), config);\n      Util.typeCheckConfig(NAME$4, config, this.constructor.DefaultType);\n      return config;\n    };\n\n    _proto._getMenuElement = function _getMenuElement() {\n      if (!this._menu) {\n        var parent = Dropdown._getParentFromElement(this._element);\n\n        if (parent) {\n          this._menu = parent.querySelector(Selector$4.MENU);\n        }\n      }\n\n      return this._menu;\n    };\n\n    _proto._getPlacement = function _getPlacement() {\n      var $parentDropdown = $(this._element.parentNode);\n      var placement = AttachmentMap.BOTTOM; // Handle dropup\n\n      if ($parentDropdown.hasClass(ClassName$4.DROPUP)) {\n        placement = AttachmentMap.TOP;\n\n        if ($(this._menu).hasClass(ClassName$4.MENURIGHT)) {\n          placement = AttachmentMap.TOPEND;\n        }\n      } else if ($parentDropdown.hasClass(ClassName$4.DROPRIGHT)) {\n        placement = AttachmentMap.RIGHT;\n      } else if ($parentDropdown.hasClass(ClassName$4.DROPLEFT)) {\n        placement = AttachmentMap.LEFT;\n      } else if ($(this._menu).hasClass(ClassName$4.MENURIGHT)) {\n        placement = AttachmentMap.BOTTOMEND;\n      }\n\n      return placement;\n    };\n\n    _proto._detectNavbar = function _detectNavbar() {\n      return $(this._element).closest('.navbar').length > 0;\n    };\n\n    _proto._getOffset = function _getOffset() {\n      var _this2 = this;\n\n      var offset = {};\n\n      if (typeof this._config.offset === 'function') {\n        offset.fn = function (data) {\n          data.offsets = _objectSpread({}, data.offsets, _this2._config.offset(data.offsets, _this2._element) || {});\n          return data;\n        };\n      } else {\n        offset.offset = this._config.offset;\n      }\n\n      return offset;\n    };\n\n    _proto._getPopperConfig = function _getPopperConfig() {\n      var popperConfig = {\n        placement: this._getPlacement(),\n        modifiers: {\n          offset: this._getOffset(),\n          flip: {\n            enabled: this._config.flip\n          },\n          preventOverflow: {\n            boundariesElement: this._config.boundary\n          }\n        } // Disable Popper.js if we have a static display\n\n      };\n\n      if (this._config.display === 'static') {\n        popperConfig.modifiers.applyStyle = {\n          enabled: false\n        };\n      }\n\n      return popperConfig;\n    } // Static\n    ;\n\n    Dropdown._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var data = $(this).data(DATA_KEY$4);\n\n        var _config = typeof config === 'object' ? config : null;\n\n        if (!data) {\n          data = new Dropdown(this, _config);\n          $(this).data(DATA_KEY$4, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config]();\n        }\n      });\n    };\n\n    Dropdown._clearMenus = function _clearMenus(event) {\n      if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) {\n        return;\n      }\n\n      var toggles = [].slice.call(document.querySelectorAll(Selector$4.DATA_TOGGLE));\n\n      for (var i = 0, len = toggles.length; i < len; i++) {\n        var parent = Dropdown._getParentFromElement(toggles[i]);\n\n        var context = $(toggles[i]).data(DATA_KEY$4);\n        var relatedTarget = {\n          relatedTarget: toggles[i]\n        };\n\n        if (event && event.type === 'click') {\n          relatedTarget.clickEvent = event;\n        }\n\n        if (!context) {\n          continue;\n        }\n\n        var dropdownMenu = context._menu;\n\n        if (!$(parent).hasClass(ClassName$4.SHOW)) {\n          continue;\n        }\n\n        if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $.contains(parent, event.target)) {\n          continue;\n        }\n\n        var hideEvent = $.Event(Event$4.HIDE, relatedTarget);\n        $(parent).trigger(hideEvent);\n\n        if (hideEvent.isDefaultPrevented()) {\n          continue;\n        } // If this is a touch-enabled device we remove the extra\n        // empty mouseover listeners we added for iOS support\n\n\n        if ('ontouchstart' in document.documentElement) {\n          $(document.body).children().off('mouseover', null, $.noop);\n        }\n\n        toggles[i].setAttribute('aria-expanded', 'false');\n        $(dropdownMenu).removeClass(ClassName$4.SHOW);\n        $(parent).removeClass(ClassName$4.SHOW).trigger($.Event(Event$4.HIDDEN, relatedTarget));\n      }\n    };\n\n    Dropdown._getParentFromElement = function _getParentFromElement(element) {\n      var parent;\n      var selector = Util.getSelectorFromElement(element);\n\n      if (selector) {\n        parent = document.querySelector(selector);\n      }\n\n      return parent || element.parentNode;\n    } // eslint-disable-next-line complexity\n    ;\n\n    Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {\n      // If not input/textarea:\n      //  - And not a key in REGEXP_KEYDOWN => not a dropdown command\n      // If input/textarea:\n      //  - If space key => not a dropdown command\n      //  - If key is other than escape\n      //    - If key is not up or down => not a dropdown command\n      //    - If trigger inside the menu => not a dropdown command\n      if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $(event.target).closest(Selector$4.MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {\n        return;\n      }\n\n      event.preventDefault();\n      event.stopPropagation();\n\n      if (this.disabled || $(this).hasClass(ClassName$4.DISABLED)) {\n        return;\n      }\n\n      var parent = Dropdown._getParentFromElement(this);\n\n      var isActive = $(parent).hasClass(ClassName$4.SHOW);\n\n      if (!isActive || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {\n        if (event.which === ESCAPE_KEYCODE) {\n          var toggle = parent.querySelector(Selector$4.DATA_TOGGLE);\n          $(toggle).trigger('focus');\n        }\n\n        $(this).trigger('click');\n        return;\n      }\n\n      var items = [].slice.call(parent.querySelectorAll(Selector$4.VISIBLE_ITEMS));\n\n      if (items.length === 0) {\n        return;\n      }\n\n      var index = items.indexOf(event.target);\n\n      if (event.which === ARROW_UP_KEYCODE && index > 0) {\n        // Up\n        index--;\n      }\n\n      if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) {\n        // Down\n        index++;\n      }\n\n      if (index < 0) {\n        index = 0;\n      }\n\n      items[index].focus();\n    };\n\n    _createClass(Dropdown, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$4;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$2;\n      }\n    }, {\n      key: \"DefaultType\",\n      get: function get() {\n        return DefaultType$2;\n      }\n    }]);\n\n    return Dropdown;\n  }();\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n\n  $(document).on(Event$4.KEYDOWN_DATA_API, Selector$4.DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(Event$4.KEYDOWN_DATA_API, Selector$4.MENU, Dropdown._dataApiKeydownHandler).on(Event$4.CLICK_DATA_API + \" \" + Event$4.KEYUP_DATA_API, Dropdown._clearMenus).on(Event$4.CLICK_DATA_API, Selector$4.DATA_TOGGLE, function (event) {\n    event.preventDefault();\n    event.stopPropagation();\n\n    Dropdown._jQueryInterface.call($(this), 'toggle');\n  }).on(Event$4.CLICK_DATA_API, Selector$4.FORM_CHILD, function (e) {\n    e.stopPropagation();\n  });\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n  $.fn[NAME$4] = Dropdown._jQueryInterface;\n  $.fn[NAME$4].Constructor = Dropdown;\n\n  $.fn[NAME$4].noConflict = function () {\n    $.fn[NAME$4] = JQUERY_NO_CONFLICT$4;\n    return Dropdown._jQueryInterface;\n  };\n\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  var NAME$5 = 'modal';\n  var VERSION$5 = '4.3.1';\n  var DATA_KEY$5 = 'bs.modal';\n  var EVENT_KEY$5 = \".\" + DATA_KEY$5;\n  var DATA_API_KEY$5 = '.data-api';\n  var JQUERY_NO_CONFLICT$5 = $.fn[NAME$5];\n  var ESCAPE_KEYCODE$1 = 27; // KeyboardEvent.which value for Escape (Esc) key\n\n  var Default$3 = {\n    backdrop: true,\n    keyboard: true,\n    focus: true,\n    show: true\n  };\n  var DefaultType$3 = {\n    backdrop: '(boolean|string)',\n    keyboard: 'boolean',\n    focus: 'boolean',\n    show: 'boolean'\n  };\n  var Event$5 = {\n    HIDE: \"hide\" + EVENT_KEY$5,\n    HIDDEN: \"hidden\" + EVENT_KEY$5,\n    SHOW: \"show\" + EVENT_KEY$5,\n    SHOWN: \"shown\" + EVENT_KEY$5,\n    FOCUSIN: \"focusin\" + EVENT_KEY$5,\n    RESIZE: \"resize\" + EVENT_KEY$5,\n    CLICK_DISMISS: \"click.dismiss\" + EVENT_KEY$5,\n    KEYDOWN_DISMISS: \"keydown.dismiss\" + EVENT_KEY$5,\n    MOUSEUP_DISMISS: \"mouseup.dismiss\" + EVENT_KEY$5,\n    MOUSEDOWN_DISMISS: \"mousedown.dismiss\" + EVENT_KEY$5,\n    CLICK_DATA_API: \"click\" + EVENT_KEY$5 + DATA_API_KEY$5\n  };\n  var ClassName$5 = {\n    SCROLLABLE: 'modal-dialog-scrollable',\n    SCROLLBAR_MEASURER: 'modal-scrollbar-measure',\n    BACKDROP: 'modal-backdrop',\n    OPEN: 'modal-open',\n    FADE: 'fade',\n    SHOW: 'show'\n  };\n  var Selector$5 = {\n    DIALOG: '.modal-dialog',\n    MODAL_BODY: '.modal-body',\n    DATA_TOGGLE: '[data-toggle=\"modal\"]',\n    DATA_DISMISS: '[data-dismiss=\"modal\"]',\n    FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',\n    STICKY_CONTENT: '.sticky-top'\n    /**\n     * ------------------------------------------------------------------------\n     * Class Definition\n     * ------------------------------------------------------------------------\n     */\n\n  };\n\n  var Modal =\n  /*#__PURE__*/\n  function () {\n    function Modal(element, config) {\n      this._config = this._getConfig(config);\n      this._element = element;\n      this._dialog = element.querySelector(Selector$5.DIALOG);\n      this._backdrop = null;\n      this._isShown = false;\n      this._isBodyOverflowing = false;\n      this._ignoreBackdropClick = false;\n      this._isTransitioning = false;\n      this._scrollbarWidth = 0;\n    } // Getters\n\n\n    var _proto = Modal.prototype;\n\n    // Public\n    _proto.toggle = function toggle(relatedTarget) {\n      return this._isShown ? this.hide() : this.show(relatedTarget);\n    };\n\n    _proto.show = function show(relatedTarget) {\n      var _this = this;\n\n      if (this._isShown || this._isTransitioning) {\n        return;\n      }\n\n      if ($(this._element).hasClass(ClassName$5.FADE)) {\n        this._isTransitioning = true;\n      }\n\n      var showEvent = $.Event(Event$5.SHOW, {\n        relatedTarget: relatedTarget\n      });\n      $(this._element).trigger(showEvent);\n\n      if (this._isShown || showEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      this._isShown = true;\n\n      this._checkScrollbar();\n\n      this._setScrollbar();\n\n      this._adjustDialog();\n\n      this._setEscapeEvent();\n\n      this._setResizeEvent();\n\n      $(this._element).on(Event$5.CLICK_DISMISS, Selector$5.DATA_DISMISS, function (event) {\n        return _this.hide(event);\n      });\n      $(this._dialog).on(Event$5.MOUSEDOWN_DISMISS, function () {\n        $(_this._element).one(Event$5.MOUSEUP_DISMISS, function (event) {\n          if ($(event.target).is(_this._element)) {\n            _this._ignoreBackdropClick = true;\n          }\n        });\n      });\n\n      this._showBackdrop(function () {\n        return _this._showElement(relatedTarget);\n      });\n    };\n\n    _proto.hide = function hide(event) {\n      var _this2 = this;\n\n      if (event) {\n        event.preventDefault();\n      }\n\n      if (!this._isShown || this._isTransitioning) {\n        return;\n      }\n\n      var hideEvent = $.Event(Event$5.HIDE);\n      $(this._element).trigger(hideEvent);\n\n      if (!this._isShown || hideEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      this._isShown = false;\n      var transition = $(this._element).hasClass(ClassName$5.FADE);\n\n      if (transition) {\n        this._isTransitioning = true;\n      }\n\n      this._setEscapeEvent();\n\n      this._setResizeEvent();\n\n      $(document).off(Event$5.FOCUSIN);\n      $(this._element).removeClass(ClassName$5.SHOW);\n      $(this._element).off(Event$5.CLICK_DISMISS);\n      $(this._dialog).off(Event$5.MOUSEDOWN_DISMISS);\n\n      if (transition) {\n        var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n        $(this._element).one(Util.TRANSITION_END, function (event) {\n          return _this2._hideModal(event);\n        }).emulateTransitionEnd(transitionDuration);\n      } else {\n        this._hideModal();\n      }\n    };\n\n    _proto.dispose = function dispose() {\n      [window, this._element, this._dialog].forEach(function (htmlElement) {\n        return $(htmlElement).off(EVENT_KEY$5);\n      });\n      /**\n       * `document` has 2 events `Event.FOCUSIN` and `Event.CLICK_DATA_API`\n       * Do not move `document` in `htmlElements` array\n       * It will remove `Event.CLICK_DATA_API` event that should remain\n       */\n\n      $(document).off(Event$5.FOCUSIN);\n      $.removeData(this._element, DATA_KEY$5);\n      this._config = null;\n      this._element = null;\n      this._dialog = null;\n      this._backdrop = null;\n      this._isShown = null;\n      this._isBodyOverflowing = null;\n      this._ignoreBackdropClick = null;\n      this._isTransitioning = null;\n      this._scrollbarWidth = null;\n    };\n\n    _proto.handleUpdate = function handleUpdate() {\n      this._adjustDialog();\n    } // Private\n    ;\n\n    _proto._getConfig = function _getConfig(config) {\n      config = _objectSpread({}, Default$3, config);\n      Util.typeCheckConfig(NAME$5, config, DefaultType$3);\n      return config;\n    };\n\n    _proto._showElement = function _showElement(relatedTarget) {\n      var _this3 = this;\n\n      var transition = $(this._element).hasClass(ClassName$5.FADE);\n\n      if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n        // Don't move modal's DOM position\n        document.body.appendChild(this._element);\n      }\n\n      this._element.style.display = 'block';\n\n      this._element.removeAttribute('aria-hidden');\n\n      this._element.setAttribute('aria-modal', true);\n\n      if ($(this._dialog).hasClass(ClassName$5.SCROLLABLE)) {\n        this._dialog.querySelector(Selector$5.MODAL_BODY).scrollTop = 0;\n      } else {\n        this._element.scrollTop = 0;\n      }\n\n      if (transition) {\n        Util.reflow(this._element);\n      }\n\n      $(this._element).addClass(ClassName$5.SHOW);\n\n      if (this._config.focus) {\n        this._enforceFocus();\n      }\n\n      var shownEvent = $.Event(Event$5.SHOWN, {\n        relatedTarget: relatedTarget\n      });\n\n      var transitionComplete = function transitionComplete() {\n        if (_this3._config.focus) {\n          _this3._element.focus();\n        }\n\n        _this3._isTransitioning = false;\n        $(_this3._element).trigger(shownEvent);\n      };\n\n      if (transition) {\n        var transitionDuration = Util.getTransitionDurationFromElement(this._dialog);\n        $(this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration);\n      } else {\n        transitionComplete();\n      }\n    };\n\n    _proto._enforceFocus = function _enforceFocus() {\n      var _this4 = this;\n\n      $(document).off(Event$5.FOCUSIN) // Guard against infinite focus loop\n      .on(Event$5.FOCUSIN, function (event) {\n        if (document !== event.target && _this4._element !== event.target && $(_this4._element).has(event.target).length === 0) {\n          _this4._element.focus();\n        }\n      });\n    };\n\n    _proto._setEscapeEvent = function _setEscapeEvent() {\n      var _this5 = this;\n\n      if (this._isShown && this._config.keyboard) {\n        $(this._element).on(Event$5.KEYDOWN_DISMISS, function (event) {\n          if (event.which === ESCAPE_KEYCODE$1) {\n            event.preventDefault();\n\n            _this5.hide();\n          }\n        });\n      } else if (!this._isShown) {\n        $(this._element).off(Event$5.KEYDOWN_DISMISS);\n      }\n    };\n\n    _proto._setResizeEvent = function _setResizeEvent() {\n      var _this6 = this;\n\n      if (this._isShown) {\n        $(window).on(Event$5.RESIZE, function (event) {\n          return _this6.handleUpdate(event);\n        });\n      } else {\n        $(window).off(Event$5.RESIZE);\n      }\n    };\n\n    _proto._hideModal = function _hideModal() {\n      var _this7 = this;\n\n      this._element.style.display = 'none';\n\n      this._element.setAttribute('aria-hidden', true);\n\n      this._element.removeAttribute('aria-modal');\n\n      this._isTransitioning = false;\n\n      this._showBackdrop(function () {\n        $(document.body).removeClass(ClassName$5.OPEN);\n\n        _this7._resetAdjustments();\n\n        _this7._resetScrollbar();\n\n        $(_this7._element).trigger(Event$5.HIDDEN);\n      });\n    };\n\n    _proto._removeBackdrop = function _removeBackdrop() {\n      if (this._backdrop) {\n        $(this._backdrop).remove();\n        this._backdrop = null;\n      }\n    };\n\n    _proto._showBackdrop = function _showBackdrop(callback) {\n      var _this8 = this;\n\n      var animate = $(this._element).hasClass(ClassName$5.FADE) ? ClassName$5.FADE : '';\n\n      if (this._isShown && this._config.backdrop) {\n        this._backdrop = document.createElement('div');\n        this._backdrop.className = ClassName$5.BACKDROP;\n\n        if (animate) {\n          this._backdrop.classList.add(animate);\n        }\n\n        $(this._backdrop).appendTo(document.body);\n        $(this._element).on(Event$5.CLICK_DISMISS, function (event) {\n          if (_this8._ignoreBackdropClick) {\n            _this8._ignoreBackdropClick = false;\n            return;\n          }\n\n          if (event.target !== event.currentTarget) {\n            return;\n          }\n\n          if (_this8._config.backdrop === 'static') {\n            _this8._element.focus();\n          } else {\n            _this8.hide();\n          }\n        });\n\n        if (animate) {\n          Util.reflow(this._backdrop);\n        }\n\n        $(this._backdrop).addClass(ClassName$5.SHOW);\n\n        if (!callback) {\n          return;\n        }\n\n        if (!animate) {\n          callback();\n          return;\n        }\n\n        var backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);\n        $(this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration);\n      } else if (!this._isShown && this._backdrop) {\n        $(this._backdrop).removeClass(ClassName$5.SHOW);\n\n        var callbackRemove = function callbackRemove() {\n          _this8._removeBackdrop();\n\n          if (callback) {\n            callback();\n          }\n        };\n\n        if ($(this._element).hasClass(ClassName$5.FADE)) {\n          var _backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);\n\n          $(this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(_backdropTransitionDuration);\n        } else {\n          callbackRemove();\n        }\n      } else if (callback) {\n        callback();\n      }\n    } // ----------------------------------------------------------------------\n    // the following methods are used to handle overflowing modals\n    // todo (fat): these should probably be refactored out of modal.js\n    // ----------------------------------------------------------------------\n    ;\n\n    _proto._adjustDialog = function _adjustDialog() {\n      var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n\n      if (!this._isBodyOverflowing && isModalOverflowing) {\n        this._element.style.paddingLeft = this._scrollbarWidth + \"px\";\n      }\n\n      if (this._isBodyOverflowing && !isModalOverflowing) {\n        this._element.style.paddingRight = this._scrollbarWidth + \"px\";\n      }\n    };\n\n    _proto._resetAdjustments = function _resetAdjustments() {\n      this._element.style.paddingLeft = '';\n      this._element.style.paddingRight = '';\n    };\n\n    _proto._checkScrollbar = function _checkScrollbar() {\n      var rect = document.body.getBoundingClientRect();\n      this._isBodyOverflowing = rect.left + rect.right < window.innerWidth;\n      this._scrollbarWidth = this._getScrollbarWidth();\n    };\n\n    _proto._setScrollbar = function _setScrollbar() {\n      var _this9 = this;\n\n      if (this._isBodyOverflowing) {\n        // Note: DOMNode.style.paddingRight returns the actual value or '' if not set\n        //   while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\n        var fixedContent = [].slice.call(document.querySelectorAll(Selector$5.FIXED_CONTENT));\n        var stickyContent = [].slice.call(document.querySelectorAll(Selector$5.STICKY_CONTENT)); // Adjust fixed content padding\n\n        $(fixedContent).each(function (index, element) {\n          var actualPadding = element.style.paddingRight;\n          var calculatedPadding = $(element).css('padding-right');\n          $(element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this9._scrollbarWidth + \"px\");\n        }); // Adjust sticky content margin\n\n        $(stickyContent).each(function (index, element) {\n          var actualMargin = element.style.marginRight;\n          var calculatedMargin = $(element).css('margin-right');\n          $(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this9._scrollbarWidth + \"px\");\n        }); // Adjust body padding\n\n        var actualPadding = document.body.style.paddingRight;\n        var calculatedPadding = $(document.body).css('padding-right');\n        $(document.body).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + \"px\");\n      }\n\n      $(document.body).addClass(ClassName$5.OPEN);\n    };\n\n    _proto._resetScrollbar = function _resetScrollbar() {\n      // Restore fixed content padding\n      var fixedContent = [].slice.call(document.querySelectorAll(Selector$5.FIXED_CONTENT));\n      $(fixedContent).each(function (index, element) {\n        var padding = $(element).data('padding-right');\n        $(element).removeData('padding-right');\n        element.style.paddingRight = padding ? padding : '';\n      }); // Restore sticky content\n\n      var elements = [].slice.call(document.querySelectorAll(\"\" + Selector$5.STICKY_CONTENT));\n      $(elements).each(function (index, element) {\n        var margin = $(element).data('margin-right');\n\n        if (typeof margin !== 'undefined') {\n          $(element).css('margin-right', margin).removeData('margin-right');\n        }\n      }); // Restore body padding\n\n      var padding = $(document.body).data('padding-right');\n      $(document.body).removeData('padding-right');\n      document.body.style.paddingRight = padding ? padding : '';\n    };\n\n    _proto._getScrollbarWidth = function _getScrollbarWidth() {\n      // thx d.walsh\n      var scrollDiv = document.createElement('div');\n      scrollDiv.className = ClassName$5.SCROLLBAR_MEASURER;\n      document.body.appendChild(scrollDiv);\n      var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;\n      document.body.removeChild(scrollDiv);\n      return scrollbarWidth;\n    } // Static\n    ;\n\n    Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) {\n      return this.each(function () {\n        var data = $(this).data(DATA_KEY$5);\n\n        var _config = _objectSpread({}, Default$3, $(this).data(), typeof config === 'object' && config ? config : {});\n\n        if (!data) {\n          data = new Modal(this, _config);\n          $(this).data(DATA_KEY$5, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config](relatedTarget);\n        } else if (_config.show) {\n          data.show(relatedTarget);\n        }\n      });\n    };\n\n    _createClass(Modal, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$5;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$3;\n      }\n    }]);\n\n    return Modal;\n  }();\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n\n  $(document).on(Event$5.CLICK_DATA_API, Selector$5.DATA_TOGGLE, function (event) {\n    var _this10 = this;\n\n    var target;\n    var selector = Util.getSelectorFromElement(this);\n\n    if (selector) {\n      target = document.querySelector(selector);\n    }\n\n    var config = $(target).data(DATA_KEY$5) ? 'toggle' : _objectSpread({}, $(target).data(), $(this).data());\n\n    if (this.tagName === 'A' || this.tagName === 'AREA') {\n      event.preventDefault();\n    }\n\n    var $target = $(target).one(Event$5.SHOW, function (showEvent) {\n      if (showEvent.isDefaultPrevented()) {\n        // Only register focus restorer if modal will actually get shown\n        return;\n      }\n\n      $target.one(Event$5.HIDDEN, function () {\n        if ($(_this10).is(':visible')) {\n          _this10.focus();\n        }\n      });\n    });\n\n    Modal._jQueryInterface.call($(target), config, this);\n  });\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n  $.fn[NAME$5] = Modal._jQueryInterface;\n  $.fn[NAME$5].Constructor = Modal;\n\n  $.fn[NAME$5].noConflict = function () {\n    $.fn[NAME$5] = JQUERY_NO_CONFLICT$5;\n    return Modal._jQueryInterface;\n  };\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v4.3.1): tools/sanitizer.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n  var uriAttrs = ['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href'];\n  var ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i;\n  var DefaultWhitelist = {\n    // Global attributes allowed on any supplied element below.\n    '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n    a: ['target', 'href', 'title', 'rel'],\n    area: [],\n    b: [],\n    br: [],\n    col: [],\n    code: [],\n    div: [],\n    em: [],\n    hr: [],\n    h1: [],\n    h2: [],\n    h3: [],\n    h4: [],\n    h5: [],\n    h6: [],\n    i: [],\n    img: ['src', 'alt', 'title', 'width', 'height'],\n    li: [],\n    ol: [],\n    p: [],\n    pre: [],\n    s: [],\n    small: [],\n    span: [],\n    sub: [],\n    sup: [],\n    strong: [],\n    u: [],\n    ul: []\n    /**\n     * A pattern that recognizes a commonly useful subset of URLs that are safe.\n     *\n     * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n     */\n\n  };\n  var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi;\n  /**\n   * A pattern that matches safe data URLs. Only matches image, video and audio types.\n   *\n   * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n   */\n\n  var DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i;\n\n  function allowedAttribute(attr, allowedAttributeList) {\n    var attrName = attr.nodeName.toLowerCase();\n\n    if (allowedAttributeList.indexOf(attrName) !== -1) {\n      if (uriAttrs.indexOf(attrName) !== -1) {\n        return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN));\n      }\n\n      return true;\n    }\n\n    var regExp = allowedAttributeList.filter(function (attrRegex) {\n      return attrRegex instanceof RegExp;\n    }); // Check if a regular expression validates the attribute.\n\n    for (var i = 0, l = regExp.length; i < l; i++) {\n      if (attrName.match(regExp[i])) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n    if (unsafeHtml.length === 0) {\n      return unsafeHtml;\n    }\n\n    if (sanitizeFn && typeof sanitizeFn === 'function') {\n      return sanitizeFn(unsafeHtml);\n    }\n\n    var domParser = new window.DOMParser();\n    var createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');\n    var whitelistKeys = Object.keys(whiteList);\n    var elements = [].slice.call(createdDocument.body.querySelectorAll('*'));\n\n    var _loop = function _loop(i, len) {\n      var el = elements[i];\n      var elName = el.nodeName.toLowerCase();\n\n      if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) {\n        el.parentNode.removeChild(el);\n        return \"continue\";\n      }\n\n      var attributeList = [].slice.call(el.attributes);\n      var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || []);\n      attributeList.forEach(function (attr) {\n        if (!allowedAttribute(attr, whitelistedAttributes)) {\n          el.removeAttribute(attr.nodeName);\n        }\n      });\n    };\n\n    for (var i = 0, len = elements.length; i < len; i++) {\n      var _ret = _loop(i, len);\n\n      if (_ret === \"continue\") continue;\n    }\n\n    return createdDocument.body.innerHTML;\n  }\n\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  var NAME$6 = 'tooltip';\n  var VERSION$6 = '4.3.1';\n  var DATA_KEY$6 = 'bs.tooltip';\n  var EVENT_KEY$6 = \".\" + DATA_KEY$6;\n  var JQUERY_NO_CONFLICT$6 = $.fn[NAME$6];\n  var CLASS_PREFIX = 'bs-tooltip';\n  var BSCLS_PREFIX_REGEX = new RegExp(\"(^|\\\\s)\" + CLASS_PREFIX + \"\\\\S+\", 'g');\n  var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn'];\n  var DefaultType$4 = {\n    animation: 'boolean',\n    template: 'string',\n    title: '(string|element|function)',\n    trigger: 'string',\n    delay: '(number|object)',\n    html: 'boolean',\n    selector: '(string|boolean)',\n    placement: '(string|function)',\n    offset: '(number|string|function)',\n    container: '(string|element|boolean)',\n    fallbackPlacement: '(string|array)',\n    boundary: '(string|element)',\n    sanitize: 'boolean',\n    sanitizeFn: '(null|function)',\n    whiteList: 'object'\n  };\n  var AttachmentMap$1 = {\n    AUTO: 'auto',\n    TOP: 'top',\n    RIGHT: 'right',\n    BOTTOM: 'bottom',\n    LEFT: 'left'\n  };\n  var Default$4 = {\n    animation: true,\n    template: '<div class=\"tooltip\" role=\"tooltip\">' + '<div class=\"arrow\"></div>' + '<div class=\"tooltip-inner\"></div></div>',\n    trigger: 'hover focus',\n    title: '',\n    delay: 0,\n    html: false,\n    selector: false,\n    placement: 'top',\n    offset: 0,\n    container: false,\n    fallbackPlacement: 'flip',\n    boundary: 'scrollParent',\n    sanitize: true,\n    sanitizeFn: null,\n    whiteList: DefaultWhitelist\n  };\n  var HoverState = {\n    SHOW: 'show',\n    OUT: 'out'\n  };\n  var Event$6 = {\n    HIDE: \"hide\" + EVENT_KEY$6,\n    HIDDEN: \"hidden\" + EVENT_KEY$6,\n    SHOW: \"show\" + EVENT_KEY$6,\n    SHOWN: \"shown\" + EVENT_KEY$6,\n    INSERTED: \"inserted\" + EVENT_KEY$6,\n    CLICK: \"click\" + EVENT_KEY$6,\n    FOCUSIN: \"focusin\" + EVENT_KEY$6,\n    FOCUSOUT: \"focusout\" + EVENT_KEY$6,\n    MOUSEENTER: \"mouseenter\" + EVENT_KEY$6,\n    MOUSELEAVE: \"mouseleave\" + EVENT_KEY$6\n  };\n  var ClassName$6 = {\n    FADE: 'fade',\n    SHOW: 'show'\n  };\n  var Selector$6 = {\n    TOOLTIP: '.tooltip',\n    TOOLTIP_INNER: '.tooltip-inner',\n    ARROW: '.arrow'\n  };\n  var Trigger = {\n    HOVER: 'hover',\n    FOCUS: 'focus',\n    CLICK: 'click',\n    MANUAL: 'manual'\n    /**\n     * ------------------------------------------------------------------------\n     * Class Definition\n     * ------------------------------------------------------------------------\n     */\n\n  };\n\n  var Tooltip =\n  /*#__PURE__*/\n  function () {\n    function Tooltip(element, config) {\n      /**\n       * Check for Popper dependency\n       * Popper - https://popper.js.org\n       */\n      if (typeof Popper === 'undefined') {\n        throw new TypeError('Bootstrap\\'s tooltips require Popper.js (https://popper.js.org/)');\n      } // private\n\n\n      this._isEnabled = true;\n      this._timeout = 0;\n      this._hoverState = '';\n      this._activeTrigger = {};\n      this._popper = null; // Protected\n\n      this.element = element;\n      this.config = this._getConfig(config);\n      this.tip = null;\n\n      this._setListeners();\n    } // Getters\n\n\n    var _proto = Tooltip.prototype;\n\n    // Public\n    _proto.enable = function enable() {\n      this._isEnabled = true;\n    };\n\n    _proto.disable = function disable() {\n      this._isEnabled = false;\n    };\n\n    _proto.toggleEnabled = function toggleEnabled() {\n      this._isEnabled = !this._isEnabled;\n    };\n\n    _proto.toggle = function toggle(event) {\n      if (!this._isEnabled) {\n        return;\n      }\n\n      if (event) {\n        var dataKey = this.constructor.DATA_KEY;\n        var context = $(event.currentTarget).data(dataKey);\n\n        if (!context) {\n          context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n          $(event.currentTarget).data(dataKey, context);\n        }\n\n        context._activeTrigger.click = !context._activeTrigger.click;\n\n        if (context._isWithActiveTrigger()) {\n          context._enter(null, context);\n        } else {\n          context._leave(null, context);\n        }\n      } else {\n        if ($(this.getTipElement()).hasClass(ClassName$6.SHOW)) {\n          this._leave(null, this);\n\n          return;\n        }\n\n        this._enter(null, this);\n      }\n    };\n\n    _proto.dispose = function dispose() {\n      clearTimeout(this._timeout);\n      $.removeData(this.element, this.constructor.DATA_KEY);\n      $(this.element).off(this.constructor.EVENT_KEY);\n      $(this.element).closest('.modal').off('hide.bs.modal');\n\n      if (this.tip) {\n        $(this.tip).remove();\n      }\n\n      this._isEnabled = null;\n      this._timeout = null;\n      this._hoverState = null;\n      this._activeTrigger = null;\n\n      if (this._popper !== null) {\n        this._popper.destroy();\n      }\n\n      this._popper = null;\n      this.element = null;\n      this.config = null;\n      this.tip = null;\n    };\n\n    _proto.show = function show() {\n      var _this = this;\n\n      if ($(this.element).css('display') === 'none') {\n        throw new Error('Please use show on visible elements');\n      }\n\n      var showEvent = $.Event(this.constructor.Event.SHOW);\n\n      if (this.isWithContent() && this._isEnabled) {\n        $(this.element).trigger(showEvent);\n        var shadowRoot = Util.findShadowRoot(this.element);\n        var isInTheDom = $.contains(shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement, this.element);\n\n        if (showEvent.isDefaultPrevented() || !isInTheDom) {\n          return;\n        }\n\n        var tip = this.getTipElement();\n        var tipId = Util.getUID(this.constructor.NAME);\n        tip.setAttribute('id', tipId);\n        this.element.setAttribute('aria-describedby', tipId);\n        this.setContent();\n\n        if (this.config.animation) {\n          $(tip).addClass(ClassName$6.FADE);\n        }\n\n        var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement;\n\n        var attachment = this._getAttachment(placement);\n\n        this.addAttachmentClass(attachment);\n\n        var container = this._getContainer();\n\n        $(tip).data(this.constructor.DATA_KEY, this);\n\n        if (!$.contains(this.element.ownerDocument.documentElement, this.tip)) {\n          $(tip).appendTo(container);\n        }\n\n        $(this.element).trigger(this.constructor.Event.INSERTED);\n        this._popper = new Popper(this.element, tip, {\n          placement: attachment,\n          modifiers: {\n            offset: this._getOffset(),\n            flip: {\n              behavior: this.config.fallbackPlacement\n            },\n            arrow: {\n              element: Selector$6.ARROW\n            },\n            preventOverflow: {\n              boundariesElement: this.config.boundary\n            }\n          },\n          onCreate: function onCreate(data) {\n            if (data.originalPlacement !== data.placement) {\n              _this._handlePopperPlacementChange(data);\n            }\n          },\n          onUpdate: function onUpdate(data) {\n            return _this._handlePopperPlacementChange(data);\n          }\n        });\n        $(tip).addClass(ClassName$6.SHOW); // If this is a touch-enabled device we add extra\n        // empty mouseover listeners to the body's immediate children;\n        // only needed because of broken event delegation on iOS\n        // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n        if ('ontouchstart' in document.documentElement) {\n          $(document.body).children().on('mouseover', null, $.noop);\n        }\n\n        var complete = function complete() {\n          if (_this.config.animation) {\n            _this._fixTransition();\n          }\n\n          var prevHoverState = _this._hoverState;\n          _this._hoverState = null;\n          $(_this.element).trigger(_this.constructor.Event.SHOWN);\n\n          if (prevHoverState === HoverState.OUT) {\n            _this._leave(null, _this);\n          }\n        };\n\n        if ($(this.tip).hasClass(ClassName$6.FADE)) {\n          var transitionDuration = Util.getTransitionDurationFromElement(this.tip);\n          $(this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n        } else {\n          complete();\n        }\n      }\n    };\n\n    _proto.hide = function hide(callback) {\n      var _this2 = this;\n\n      var tip = this.getTipElement();\n      var hideEvent = $.Event(this.constructor.Event.HIDE);\n\n      var complete = function complete() {\n        if (_this2._hoverState !== HoverState.SHOW && tip.parentNode) {\n          tip.parentNode.removeChild(tip);\n        }\n\n        _this2._cleanTipClass();\n\n        _this2.element.removeAttribute('aria-describedby');\n\n        $(_this2.element).trigger(_this2.constructor.Event.HIDDEN);\n\n        if (_this2._popper !== null) {\n          _this2._popper.destroy();\n        }\n\n        if (callback) {\n          callback();\n        }\n      };\n\n      $(this.element).trigger(hideEvent);\n\n      if (hideEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      $(tip).removeClass(ClassName$6.SHOW); // If this is a touch-enabled device we remove the extra\n      // empty mouseover listeners we added for iOS support\n\n      if ('ontouchstart' in document.documentElement) {\n        $(document.body).children().off('mouseover', null, $.noop);\n      }\n\n      this._activeTrigger[Trigger.CLICK] = false;\n      this._activeTrigger[Trigger.FOCUS] = false;\n      this._activeTrigger[Trigger.HOVER] = false;\n\n      if ($(this.tip).hasClass(ClassName$6.FADE)) {\n        var transitionDuration = Util.getTransitionDurationFromElement(tip);\n        $(tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n      } else {\n        complete();\n      }\n\n      this._hoverState = '';\n    };\n\n    _proto.update = function update() {\n      if (this._popper !== null) {\n        this._popper.scheduleUpdate();\n      }\n    } // Protected\n    ;\n\n    _proto.isWithContent = function isWithContent() {\n      return Boolean(this.getTitle());\n    };\n\n    _proto.addAttachmentClass = function addAttachmentClass(attachment) {\n      $(this.getTipElement()).addClass(CLASS_PREFIX + \"-\" + attachment);\n    };\n\n    _proto.getTipElement = function getTipElement() {\n      this.tip = this.tip || $(this.config.template)[0];\n      return this.tip;\n    };\n\n    _proto.setContent = function setContent() {\n      var tip = this.getTipElement();\n      this.setElementContent($(tip.querySelectorAll(Selector$6.TOOLTIP_INNER)), this.getTitle());\n      $(tip).removeClass(ClassName$6.FADE + \" \" + ClassName$6.SHOW);\n    };\n\n    _proto.setElementContent = function setElementContent($element, content) {\n      if (typeof content === 'object' && (content.nodeType || content.jquery)) {\n        // Content is a DOM node or a jQuery\n        if (this.config.html) {\n          if (!$(content).parent().is($element)) {\n            $element.empty().append(content);\n          }\n        } else {\n          $element.text($(content).text());\n        }\n\n        return;\n      }\n\n      if (this.config.html) {\n        if (this.config.sanitize) {\n          content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn);\n        }\n\n        $element.html(content);\n      } else {\n        $element.text(content);\n      }\n    };\n\n    _proto.getTitle = function getTitle() {\n      var title = this.element.getAttribute('data-original-title');\n\n      if (!title) {\n        title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title;\n      }\n\n      return title;\n    } // Private\n    ;\n\n    _proto._getOffset = function _getOffset() {\n      var _this3 = this;\n\n      var offset = {};\n\n      if (typeof this.config.offset === 'function') {\n        offset.fn = function (data) {\n          data.offsets = _objectSpread({}, data.offsets, _this3.config.offset(data.offsets, _this3.element) || {});\n          return data;\n        };\n      } else {\n        offset.offset = this.config.offset;\n      }\n\n      return offset;\n    };\n\n    _proto._getContainer = function _getContainer() {\n      if (this.config.container === false) {\n        return document.body;\n      }\n\n      if (Util.isElement(this.config.container)) {\n        return $(this.config.container);\n      }\n\n      return $(document).find(this.config.container);\n    };\n\n    _proto._getAttachment = function _getAttachment(placement) {\n      return AttachmentMap$1[placement.toUpperCase()];\n    };\n\n    _proto._setListeners = function _setListeners() {\n      var _this4 = this;\n\n      var triggers = this.config.trigger.split(' ');\n      triggers.forEach(function (trigger) {\n        if (trigger === 'click') {\n          $(_this4.element).on(_this4.constructor.Event.CLICK, _this4.config.selector, function (event) {\n            return _this4.toggle(event);\n          });\n        } else if (trigger !== Trigger.MANUAL) {\n          var eventIn = trigger === Trigger.HOVER ? _this4.constructor.Event.MOUSEENTER : _this4.constructor.Event.FOCUSIN;\n          var eventOut = trigger === Trigger.HOVER ? _this4.constructor.Event.MOUSELEAVE : _this4.constructor.Event.FOCUSOUT;\n          $(_this4.element).on(eventIn, _this4.config.selector, function (event) {\n            return _this4._enter(event);\n          }).on(eventOut, _this4.config.selector, function (event) {\n            return _this4._leave(event);\n          });\n        }\n      });\n      $(this.element).closest('.modal').on('hide.bs.modal', function () {\n        if (_this4.element) {\n          _this4.hide();\n        }\n      });\n\n      if (this.config.selector) {\n        this.config = _objectSpread({}, this.config, {\n          trigger: 'manual',\n          selector: ''\n        });\n      } else {\n        this._fixTitle();\n      }\n    };\n\n    _proto._fixTitle = function _fixTitle() {\n      var titleType = typeof this.element.getAttribute('data-original-title');\n\n      if (this.element.getAttribute('title') || titleType !== 'string') {\n        this.element.setAttribute('data-original-title', this.element.getAttribute('title') || '');\n        this.element.setAttribute('title', '');\n      }\n    };\n\n    _proto._enter = function _enter(event, context) {\n      var dataKey = this.constructor.DATA_KEY;\n      context = context || $(event.currentTarget).data(dataKey);\n\n      if (!context) {\n        context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n        $(event.currentTarget).data(dataKey, context);\n      }\n\n      if (event) {\n        context._activeTrigger[event.type === 'focusin' ? Trigger.FOCUS : Trigger.HOVER] = true;\n      }\n\n      if ($(context.getTipElement()).hasClass(ClassName$6.SHOW) || context._hoverState === HoverState.SHOW) {\n        context._hoverState = HoverState.SHOW;\n        return;\n      }\n\n      clearTimeout(context._timeout);\n      context._hoverState = HoverState.SHOW;\n\n      if (!context.config.delay || !context.config.delay.show) {\n        context.show();\n        return;\n      }\n\n      context._timeout = setTimeout(function () {\n        if (context._hoverState === HoverState.SHOW) {\n          context.show();\n        }\n      }, context.config.delay.show);\n    };\n\n    _proto._leave = function _leave(event, context) {\n      var dataKey = this.constructor.DATA_KEY;\n      context = context || $(event.currentTarget).data(dataKey);\n\n      if (!context) {\n        context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n        $(event.currentTarget).data(dataKey, context);\n      }\n\n      if (event) {\n        context._activeTrigger[event.type === 'focusout' ? Trigger.FOCUS : Trigger.HOVER] = false;\n      }\n\n      if (context._isWithActiveTrigger()) {\n        return;\n      }\n\n      clearTimeout(context._timeout);\n      context._hoverState = HoverState.OUT;\n\n      if (!context.config.delay || !context.config.delay.hide) {\n        context.hide();\n        return;\n      }\n\n      context._timeout = setTimeout(function () {\n        if (context._hoverState === HoverState.OUT) {\n          context.hide();\n        }\n      }, context.config.delay.hide);\n    };\n\n    _proto._isWithActiveTrigger = function _isWithActiveTrigger() {\n      for (var trigger in this._activeTrigger) {\n        if (this._activeTrigger[trigger]) {\n          return true;\n        }\n      }\n\n      return false;\n    };\n\n    _proto._getConfig = function _getConfig(config) {\n      var dataAttributes = $(this.element).data();\n      Object.keys(dataAttributes).forEach(function (dataAttr) {\n        if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {\n          delete dataAttributes[dataAttr];\n        }\n      });\n      config = _objectSpread({}, this.constructor.Default, dataAttributes, typeof config === 'object' && config ? config : {});\n\n      if (typeof config.delay === 'number') {\n        config.delay = {\n          show: config.delay,\n          hide: config.delay\n        };\n      }\n\n      if (typeof config.title === 'number') {\n        config.title = config.title.toString();\n      }\n\n      if (typeof config.content === 'number') {\n        config.content = config.content.toString();\n      }\n\n      Util.typeCheckConfig(NAME$6, config, this.constructor.DefaultType);\n\n      if (config.sanitize) {\n        config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn);\n      }\n\n      return config;\n    };\n\n    _proto._getDelegateConfig = function _getDelegateConfig() {\n      var config = {};\n\n      if (this.config) {\n        for (var key in this.config) {\n          if (this.constructor.Default[key] !== this.config[key]) {\n            config[key] = this.config[key];\n          }\n        }\n      }\n\n      return config;\n    };\n\n    _proto._cleanTipClass = function _cleanTipClass() {\n      var $tip = $(this.getTipElement());\n      var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);\n\n      if (tabClass !== null && tabClass.length) {\n        $tip.removeClass(tabClass.join(''));\n      }\n    };\n\n    _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(popperData) {\n      var popperInstance = popperData.instance;\n      this.tip = popperInstance.popper;\n\n      this._cleanTipClass();\n\n      this.addAttachmentClass(this._getAttachment(popperData.placement));\n    };\n\n    _proto._fixTransition = function _fixTransition() {\n      var tip = this.getTipElement();\n      var initConfigAnimation = this.config.animation;\n\n      if (tip.getAttribute('x-placement') !== null) {\n        return;\n      }\n\n      $(tip).removeClass(ClassName$6.FADE);\n      this.config.animation = false;\n      this.hide();\n      this.show();\n      this.config.animation = initConfigAnimation;\n    } // Static\n    ;\n\n    Tooltip._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var data = $(this).data(DATA_KEY$6);\n\n        var _config = typeof config === 'object' && config;\n\n        if (!data && /dispose|hide/.test(config)) {\n          return;\n        }\n\n        if (!data) {\n          data = new Tooltip(this, _config);\n          $(this).data(DATA_KEY$6, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config]();\n        }\n      });\n    };\n\n    _createClass(Tooltip, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$6;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$4;\n      }\n    }, {\n      key: \"NAME\",\n      get: function get() {\n        return NAME$6;\n      }\n    }, {\n      key: \"DATA_KEY\",\n      get: function get() {\n        return DATA_KEY$6;\n      }\n    }, {\n      key: \"Event\",\n      get: function get() {\n        return Event$6;\n      }\n    }, {\n      key: \"EVENT_KEY\",\n      get: function get() {\n        return EVENT_KEY$6;\n      }\n    }, {\n      key: \"DefaultType\",\n      get: function get() {\n        return DefaultType$4;\n      }\n    }]);\n\n    return Tooltip;\n  }();\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n\n  $.fn[NAME$6] = Tooltip._jQueryInterface;\n  $.fn[NAME$6].Constructor = Tooltip;\n\n  $.fn[NAME$6].noConflict = function () {\n    $.fn[NAME$6] = JQUERY_NO_CONFLICT$6;\n    return Tooltip._jQueryInterface;\n  };\n\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  var NAME$7 = 'popover';\n  var VERSION$7 = '4.3.1';\n  var DATA_KEY$7 = 'bs.popover';\n  var EVENT_KEY$7 = \".\" + DATA_KEY$7;\n  var JQUERY_NO_CONFLICT$7 = $.fn[NAME$7];\n  var CLASS_PREFIX$1 = 'bs-popover';\n  var BSCLS_PREFIX_REGEX$1 = new RegExp(\"(^|\\\\s)\" + CLASS_PREFIX$1 + \"\\\\S+\", 'g');\n\n  var Default$5 = _objectSpread({}, Tooltip.Default, {\n    placement: 'right',\n    trigger: 'click',\n    content: '',\n    template: '<div class=\"popover\" role=\"tooltip\">' + '<div class=\"arrow\"></div>' + '<h3 class=\"popover-header\"></h3>' + '<div class=\"popover-body\"></div></div>'\n  });\n\n  var DefaultType$5 = _objectSpread({}, Tooltip.DefaultType, {\n    content: '(string|element|function)'\n  });\n\n  var ClassName$7 = {\n    FADE: 'fade',\n    SHOW: 'show'\n  };\n  var Selector$7 = {\n    TITLE: '.popover-header',\n    CONTENT: '.popover-body'\n  };\n  var Event$7 = {\n    HIDE: \"hide\" + EVENT_KEY$7,\n    HIDDEN: \"hidden\" + EVENT_KEY$7,\n    SHOW: \"show\" + EVENT_KEY$7,\n    SHOWN: \"shown\" + EVENT_KEY$7,\n    INSERTED: \"inserted\" + EVENT_KEY$7,\n    CLICK: \"click\" + EVENT_KEY$7,\n    FOCUSIN: \"focusin\" + EVENT_KEY$7,\n    FOCUSOUT: \"focusout\" + EVENT_KEY$7,\n    MOUSEENTER: \"mouseenter\" + EVENT_KEY$7,\n    MOUSELEAVE: \"mouseleave\" + EVENT_KEY$7\n    /**\n     * ------------------------------------------------------------------------\n     * Class Definition\n     * ------------------------------------------------------------------------\n     */\n\n  };\n\n  var Popover =\n  /*#__PURE__*/\n  function (_Tooltip) {\n    _inheritsLoose(Popover, _Tooltip);\n\n    function Popover() {\n      return _Tooltip.apply(this, arguments) || this;\n    }\n\n    var _proto = Popover.prototype;\n\n    // Overrides\n    _proto.isWithContent = function isWithContent() {\n      return this.getTitle() || this._getContent();\n    };\n\n    _proto.addAttachmentClass = function addAttachmentClass(attachment) {\n      $(this.getTipElement()).addClass(CLASS_PREFIX$1 + \"-\" + attachment);\n    };\n\n    _proto.getTipElement = function getTipElement() {\n      this.tip = this.tip || $(this.config.template)[0];\n      return this.tip;\n    };\n\n    _proto.setContent = function setContent() {\n      var $tip = $(this.getTipElement()); // We use append for html objects to maintain js events\n\n      this.setElementContent($tip.find(Selector$7.TITLE), this.getTitle());\n\n      var content = this._getContent();\n\n      if (typeof content === 'function') {\n        content = content.call(this.element);\n      }\n\n      this.setElementContent($tip.find(Selector$7.CONTENT), content);\n      $tip.removeClass(ClassName$7.FADE + \" \" + ClassName$7.SHOW);\n    } // Private\n    ;\n\n    _proto._getContent = function _getContent() {\n      return this.element.getAttribute('data-content') || this.config.content;\n    };\n\n    _proto._cleanTipClass = function _cleanTipClass() {\n      var $tip = $(this.getTipElement());\n      var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX$1);\n\n      if (tabClass !== null && tabClass.length > 0) {\n        $tip.removeClass(tabClass.join(''));\n      }\n    } // Static\n    ;\n\n    Popover._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var data = $(this).data(DATA_KEY$7);\n\n        var _config = typeof config === 'object' ? config : null;\n\n        if (!data && /dispose|hide/.test(config)) {\n          return;\n        }\n\n        if (!data) {\n          data = new Popover(this, _config);\n          $(this).data(DATA_KEY$7, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config]();\n        }\n      });\n    };\n\n    _createClass(Popover, null, [{\n      key: \"VERSION\",\n      // Getters\n      get: function get() {\n        return VERSION$7;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$5;\n      }\n    }, {\n      key: \"NAME\",\n      get: function get() {\n        return NAME$7;\n      }\n    }, {\n      key: \"DATA_KEY\",\n      get: function get() {\n        return DATA_KEY$7;\n      }\n    }, {\n      key: \"Event\",\n      get: function get() {\n        return Event$7;\n      }\n    }, {\n      key: \"EVENT_KEY\",\n      get: function get() {\n        return EVENT_KEY$7;\n      }\n    }, {\n      key: \"DefaultType\",\n      get: function get() {\n        return DefaultType$5;\n      }\n    }]);\n\n    return Popover;\n  }(Tooltip);\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n\n  $.fn[NAME$7] = Popover._jQueryInterface;\n  $.fn[NAME$7].Constructor = Popover;\n\n  $.fn[NAME$7].noConflict = function () {\n    $.fn[NAME$7] = JQUERY_NO_CONFLICT$7;\n    return Popover._jQueryInterface;\n  };\n\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  var NAME$8 = 'scrollspy';\n  var VERSION$8 = '4.3.1';\n  var DATA_KEY$8 = 'bs.scrollspy';\n  var EVENT_KEY$8 = \".\" + DATA_KEY$8;\n  var DATA_API_KEY$6 = '.data-api';\n  var JQUERY_NO_CONFLICT$8 = $.fn[NAME$8];\n  var Default$6 = {\n    offset: 10,\n    method: 'auto',\n    target: ''\n  };\n  var DefaultType$6 = {\n    offset: 'number',\n    method: 'string',\n    target: '(string|element)'\n  };\n  var Event$8 = {\n    ACTIVATE: \"activate\" + EVENT_KEY$8,\n    SCROLL: \"scroll\" + EVENT_KEY$8,\n    LOAD_DATA_API: \"load\" + EVENT_KEY$8 + DATA_API_KEY$6\n  };\n  var ClassName$8 = {\n    DROPDOWN_ITEM: 'dropdown-item',\n    DROPDOWN_MENU: 'dropdown-menu',\n    ACTIVE: 'active'\n  };\n  var Selector$8 = {\n    DATA_SPY: '[data-spy=\"scroll\"]',\n    ACTIVE: '.active',\n    NAV_LIST_GROUP: '.nav, .list-group',\n    NAV_LINKS: '.nav-link',\n    NAV_ITEMS: '.nav-item',\n    LIST_ITEMS: '.list-group-item',\n    DROPDOWN: '.dropdown',\n    DROPDOWN_ITEMS: '.dropdown-item',\n    DROPDOWN_TOGGLE: '.dropdown-toggle'\n  };\n  var OffsetMethod = {\n    OFFSET: 'offset',\n    POSITION: 'position'\n    /**\n     * ------------------------------------------------------------------------\n     * Class Definition\n     * ------------------------------------------------------------------------\n     */\n\n  };\n\n  var ScrollSpy =\n  /*#__PURE__*/\n  function () {\n    function ScrollSpy(element, config) {\n      var _this = this;\n\n      this._element = element;\n      this._scrollElement = element.tagName === 'BODY' ? window : element;\n      this._config = this._getConfig(config);\n      this._selector = this._config.target + \" \" + Selector$8.NAV_LINKS + \",\" + (this._config.target + \" \" + Selector$8.LIST_ITEMS + \",\") + (this._config.target + \" \" + Selector$8.DROPDOWN_ITEMS);\n      this._offsets = [];\n      this._targets = [];\n      this._activeTarget = null;\n      this._scrollHeight = 0;\n      $(this._scrollElement).on(Event$8.SCROLL, function (event) {\n        return _this._process(event);\n      });\n      this.refresh();\n\n      this._process();\n    } // Getters\n\n\n    var _proto = ScrollSpy.prototype;\n\n    // Public\n    _proto.refresh = function refresh() {\n      var _this2 = this;\n\n      var autoMethod = this._scrollElement === this._scrollElement.window ? OffsetMethod.OFFSET : OffsetMethod.POSITION;\n      var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;\n      var offsetBase = offsetMethod === OffsetMethod.POSITION ? this._getScrollTop() : 0;\n      this._offsets = [];\n      this._targets = [];\n      this._scrollHeight = this._getScrollHeight();\n      var targets = [].slice.call(document.querySelectorAll(this._selector));\n      targets.map(function (element) {\n        var target;\n        var targetSelector = Util.getSelectorFromElement(element);\n\n        if (targetSelector) {\n          target = document.querySelector(targetSelector);\n        }\n\n        if (target) {\n          var targetBCR = target.getBoundingClientRect();\n\n          if (targetBCR.width || targetBCR.height) {\n            // TODO (fat): remove sketch reliance on jQuery position/offset\n            return [$(target)[offsetMethod]().top + offsetBase, targetSelector];\n          }\n        }\n\n        return null;\n      }).filter(function (item) {\n        return item;\n      }).sort(function (a, b) {\n        return a[0] - b[0];\n      }).forEach(function (item) {\n        _this2._offsets.push(item[0]);\n\n        _this2._targets.push(item[1]);\n      });\n    };\n\n    _proto.dispose = function dispose() {\n      $.removeData(this._element, DATA_KEY$8);\n      $(this._scrollElement).off(EVENT_KEY$8);\n      this._element = null;\n      this._scrollElement = null;\n      this._config = null;\n      this._selector = null;\n      this._offsets = null;\n      this._targets = null;\n      this._activeTarget = null;\n      this._scrollHeight = null;\n    } // Private\n    ;\n\n    _proto._getConfig = function _getConfig(config) {\n      config = _objectSpread({}, Default$6, typeof config === 'object' && config ? config : {});\n\n      if (typeof config.target !== 'string') {\n        var id = $(config.target).attr('id');\n\n        if (!id) {\n          id = Util.getUID(NAME$8);\n          $(config.target).attr('id', id);\n        }\n\n        config.target = \"#\" + id;\n      }\n\n      Util.typeCheckConfig(NAME$8, config, DefaultType$6);\n      return config;\n    };\n\n    _proto._getScrollTop = function _getScrollTop() {\n      return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;\n    };\n\n    _proto._getScrollHeight = function _getScrollHeight() {\n      return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);\n    };\n\n    _proto._getOffsetHeight = function _getOffsetHeight() {\n      return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;\n    };\n\n    _proto._process = function _process() {\n      var scrollTop = this._getScrollTop() + this._config.offset;\n\n      var scrollHeight = this._getScrollHeight();\n\n      var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();\n\n      if (this._scrollHeight !== scrollHeight) {\n        this.refresh();\n      }\n\n      if (scrollTop >= maxScroll) {\n        var target = this._targets[this._targets.length - 1];\n\n        if (this._activeTarget !== target) {\n          this._activate(target);\n        }\n\n        return;\n      }\n\n      if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n        this._activeTarget = null;\n\n        this._clear();\n\n        return;\n      }\n\n      var offsetLength = this._offsets.length;\n\n      for (var i = offsetLength; i--;) {\n        var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]);\n\n        if (isActiveTarget) {\n          this._activate(this._targets[i]);\n        }\n      }\n    };\n\n    _proto._activate = function _activate(target) {\n      this._activeTarget = target;\n\n      this._clear();\n\n      var queries = this._selector.split(',').map(function (selector) {\n        return selector + \"[data-target=\\\"\" + target + \"\\\"],\" + selector + \"[href=\\\"\" + target + \"\\\"]\";\n      });\n\n      var $link = $([].slice.call(document.querySelectorAll(queries.join(','))));\n\n      if ($link.hasClass(ClassName$8.DROPDOWN_ITEM)) {\n        $link.closest(Selector$8.DROPDOWN).find(Selector$8.DROPDOWN_TOGGLE).addClass(ClassName$8.ACTIVE);\n        $link.addClass(ClassName$8.ACTIVE);\n      } else {\n        // Set triggered link as active\n        $link.addClass(ClassName$8.ACTIVE); // Set triggered links parents as active\n        // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n\n        $link.parents(Selector$8.NAV_LIST_GROUP).prev(Selector$8.NAV_LINKS + \", \" + Selector$8.LIST_ITEMS).addClass(ClassName$8.ACTIVE); // Handle special case when .nav-link is inside .nav-item\n\n        $link.parents(Selector$8.NAV_LIST_GROUP).prev(Selector$8.NAV_ITEMS).children(Selector$8.NAV_LINKS).addClass(ClassName$8.ACTIVE);\n      }\n\n      $(this._scrollElement).trigger(Event$8.ACTIVATE, {\n        relatedTarget: target\n      });\n    };\n\n    _proto._clear = function _clear() {\n      [].slice.call(document.querySelectorAll(this._selector)).filter(function (node) {\n        return node.classList.contains(ClassName$8.ACTIVE);\n      }).forEach(function (node) {\n        return node.classList.remove(ClassName$8.ACTIVE);\n      });\n    } // Static\n    ;\n\n    ScrollSpy._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var data = $(this).data(DATA_KEY$8);\n\n        var _config = typeof config === 'object' && config;\n\n        if (!data) {\n          data = new ScrollSpy(this, _config);\n          $(this).data(DATA_KEY$8, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config]();\n        }\n      });\n    };\n\n    _createClass(ScrollSpy, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$8;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$6;\n      }\n    }]);\n\n    return ScrollSpy;\n  }();\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n\n  $(window).on(Event$8.LOAD_DATA_API, function () {\n    var scrollSpys = [].slice.call(document.querySelectorAll(Selector$8.DATA_SPY));\n    var scrollSpysLength = scrollSpys.length;\n\n    for (var i = scrollSpysLength; i--;) {\n      var $spy = $(scrollSpys[i]);\n\n      ScrollSpy._jQueryInterface.call($spy, $spy.data());\n    }\n  });\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n  $.fn[NAME$8] = ScrollSpy._jQueryInterface;\n  $.fn[NAME$8].Constructor = ScrollSpy;\n\n  $.fn[NAME$8].noConflict = function () {\n    $.fn[NAME$8] = JQUERY_NO_CONFLICT$8;\n    return ScrollSpy._jQueryInterface;\n  };\n\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  var NAME$9 = 'tab';\n  var VERSION$9 = '4.3.1';\n  var DATA_KEY$9 = 'bs.tab';\n  var EVENT_KEY$9 = \".\" + DATA_KEY$9;\n  var DATA_API_KEY$7 = '.data-api';\n  var JQUERY_NO_CONFLICT$9 = $.fn[NAME$9];\n  var Event$9 = {\n    HIDE: \"hide\" + EVENT_KEY$9,\n    HIDDEN: \"hidden\" + EVENT_KEY$9,\n    SHOW: \"show\" + EVENT_KEY$9,\n    SHOWN: \"shown\" + EVENT_KEY$9,\n    CLICK_DATA_API: \"click\" + EVENT_KEY$9 + DATA_API_KEY$7\n  };\n  var ClassName$9 = {\n    DROPDOWN_MENU: 'dropdown-menu',\n    ACTIVE: 'active',\n    DISABLED: 'disabled',\n    FADE: 'fade',\n    SHOW: 'show'\n  };\n  var Selector$9 = {\n    DROPDOWN: '.dropdown',\n    NAV_LIST_GROUP: '.nav, .list-group',\n    ACTIVE: '.active',\n    ACTIVE_UL: '> li > .active',\n    DATA_TOGGLE: '[data-toggle=\"tab\"], [data-toggle=\"pill\"], [data-toggle=\"list\"]',\n    DROPDOWN_TOGGLE: '.dropdown-toggle',\n    DROPDOWN_ACTIVE_CHILD: '> .dropdown-menu .active'\n    /**\n     * ------------------------------------------------------------------------\n     * Class Definition\n     * ------------------------------------------------------------------------\n     */\n\n  };\n\n  var Tab =\n  /*#__PURE__*/\n  function () {\n    function Tab(element) {\n      this._element = element;\n    } // Getters\n\n\n    var _proto = Tab.prototype;\n\n    // Public\n    _proto.show = function show() {\n      var _this = this;\n\n      if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $(this._element).hasClass(ClassName$9.ACTIVE) || $(this._element).hasClass(ClassName$9.DISABLED)) {\n        return;\n      }\n\n      var target;\n      var previous;\n      var listElement = $(this._element).closest(Selector$9.NAV_LIST_GROUP)[0];\n      var selector = Util.getSelectorFromElement(this._element);\n\n      if (listElement) {\n        var itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? Selector$9.ACTIVE_UL : Selector$9.ACTIVE;\n        previous = $.makeArray($(listElement).find(itemSelector));\n        previous = previous[previous.length - 1];\n      }\n\n      var hideEvent = $.Event(Event$9.HIDE, {\n        relatedTarget: this._element\n      });\n      var showEvent = $.Event(Event$9.SHOW, {\n        relatedTarget: previous\n      });\n\n      if (previous) {\n        $(previous).trigger(hideEvent);\n      }\n\n      $(this._element).trigger(showEvent);\n\n      if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      if (selector) {\n        target = document.querySelector(selector);\n      }\n\n      this._activate(this._element, listElement);\n\n      var complete = function complete() {\n        var hiddenEvent = $.Event(Event$9.HIDDEN, {\n          relatedTarget: _this._element\n        });\n        var shownEvent = $.Event(Event$9.SHOWN, {\n          relatedTarget: previous\n        });\n        $(previous).trigger(hiddenEvent);\n        $(_this._element).trigger(shownEvent);\n      };\n\n      if (target) {\n        this._activate(target, target.parentNode, complete);\n      } else {\n        complete();\n      }\n    };\n\n    _proto.dispose = function dispose() {\n      $.removeData(this._element, DATA_KEY$9);\n      this._element = null;\n    } // Private\n    ;\n\n    _proto._activate = function _activate(element, container, callback) {\n      var _this2 = this;\n\n      var activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? $(container).find(Selector$9.ACTIVE_UL) : $(container).children(Selector$9.ACTIVE);\n      var active = activeElements[0];\n      var isTransitioning = callback && active && $(active).hasClass(ClassName$9.FADE);\n\n      var complete = function complete() {\n        return _this2._transitionComplete(element, active, callback);\n      };\n\n      if (active && isTransitioning) {\n        var transitionDuration = Util.getTransitionDurationFromElement(active);\n        $(active).removeClass(ClassName$9.SHOW).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n      } else {\n        complete();\n      }\n    };\n\n    _proto._transitionComplete = function _transitionComplete(element, active, callback) {\n      if (active) {\n        $(active).removeClass(ClassName$9.ACTIVE);\n        var dropdownChild = $(active.parentNode).find(Selector$9.DROPDOWN_ACTIVE_CHILD)[0];\n\n        if (dropdownChild) {\n          $(dropdownChild).removeClass(ClassName$9.ACTIVE);\n        }\n\n        if (active.getAttribute('role') === 'tab') {\n          active.setAttribute('aria-selected', false);\n        }\n      }\n\n      $(element).addClass(ClassName$9.ACTIVE);\n\n      if (element.getAttribute('role') === 'tab') {\n        element.setAttribute('aria-selected', true);\n      }\n\n      Util.reflow(element);\n\n      if (element.classList.contains(ClassName$9.FADE)) {\n        element.classList.add(ClassName$9.SHOW);\n      }\n\n      if (element.parentNode && $(element.parentNode).hasClass(ClassName$9.DROPDOWN_MENU)) {\n        var dropdownElement = $(element).closest(Selector$9.DROPDOWN)[0];\n\n        if (dropdownElement) {\n          var dropdownToggleList = [].slice.call(dropdownElement.querySelectorAll(Selector$9.DROPDOWN_TOGGLE));\n          $(dropdownToggleList).addClass(ClassName$9.ACTIVE);\n        }\n\n        element.setAttribute('aria-expanded', true);\n      }\n\n      if (callback) {\n        callback();\n      }\n    } // Static\n    ;\n\n    Tab._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var $this = $(this);\n        var data = $this.data(DATA_KEY$9);\n\n        if (!data) {\n          data = new Tab(this);\n          $this.data(DATA_KEY$9, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config]();\n        }\n      });\n    };\n\n    _createClass(Tab, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$9;\n      }\n    }]);\n\n    return Tab;\n  }();\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n\n  $(document).on(Event$9.CLICK_DATA_API, Selector$9.DATA_TOGGLE, function (event) {\n    event.preventDefault();\n\n    Tab._jQueryInterface.call($(this), 'show');\n  });\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n  $.fn[NAME$9] = Tab._jQueryInterface;\n  $.fn[NAME$9].Constructor = Tab;\n\n  $.fn[NAME$9].noConflict = function () {\n    $.fn[NAME$9] = JQUERY_NO_CONFLICT$9;\n    return Tab._jQueryInterface;\n  };\n\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  var NAME$a = 'toast';\n  var VERSION$a = '4.3.1';\n  var DATA_KEY$a = 'bs.toast';\n  var EVENT_KEY$a = \".\" + DATA_KEY$a;\n  var JQUERY_NO_CONFLICT$a = $.fn[NAME$a];\n  var Event$a = {\n    CLICK_DISMISS: \"click.dismiss\" + EVENT_KEY$a,\n    HIDE: \"hide\" + EVENT_KEY$a,\n    HIDDEN: \"hidden\" + EVENT_KEY$a,\n    SHOW: \"show\" + EVENT_KEY$a,\n    SHOWN: \"shown\" + EVENT_KEY$a\n  };\n  var ClassName$a = {\n    FADE: 'fade',\n    HIDE: 'hide',\n    SHOW: 'show',\n    SHOWING: 'showing'\n  };\n  var DefaultType$7 = {\n    animation: 'boolean',\n    autohide: 'boolean',\n    delay: 'number'\n  };\n  var Default$7 = {\n    animation: true,\n    autohide: true,\n    delay: 500\n  };\n  var Selector$a = {\n    DATA_DISMISS: '[data-dismiss=\"toast\"]'\n    /**\n     * ------------------------------------------------------------------------\n     * Class Definition\n     * ------------------------------------------------------------------------\n     */\n\n  };\n\n  var Toast =\n  /*#__PURE__*/\n  function () {\n    function Toast(element, config) {\n      this._element = element;\n      this._config = this._getConfig(config);\n      this._timeout = null;\n\n      this._setListeners();\n    } // Getters\n\n\n    var _proto = Toast.prototype;\n\n    // Public\n    _proto.show = function show() {\n      var _this = this;\n\n      $(this._element).trigger(Event$a.SHOW);\n\n      if (this._config.animation) {\n        this._element.classList.add(ClassName$a.FADE);\n      }\n\n      var complete = function complete() {\n        _this._element.classList.remove(ClassName$a.SHOWING);\n\n        _this._element.classList.add(ClassName$a.SHOW);\n\n        $(_this._element).trigger(Event$a.SHOWN);\n\n        if (_this._config.autohide) {\n          _this.hide();\n        }\n      };\n\n      this._element.classList.remove(ClassName$a.HIDE);\n\n      this._element.classList.add(ClassName$a.SHOWING);\n\n      if (this._config.animation) {\n        var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n        $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n      } else {\n        complete();\n      }\n    };\n\n    _proto.hide = function hide(withoutTimeout) {\n      var _this2 = this;\n\n      if (!this._element.classList.contains(ClassName$a.SHOW)) {\n        return;\n      }\n\n      $(this._element).trigger(Event$a.HIDE);\n\n      if (withoutTimeout) {\n        this._close();\n      } else {\n        this._timeout = setTimeout(function () {\n          _this2._close();\n        }, this._config.delay);\n      }\n    };\n\n    _proto.dispose = function dispose() {\n      clearTimeout(this._timeout);\n      this._timeout = null;\n\n      if (this._element.classList.contains(ClassName$a.SHOW)) {\n        this._element.classList.remove(ClassName$a.SHOW);\n      }\n\n      $(this._element).off(Event$a.CLICK_DISMISS);\n      $.removeData(this._element, DATA_KEY$a);\n      this._element = null;\n      this._config = null;\n    } // Private\n    ;\n\n    _proto._getConfig = function _getConfig(config) {\n      config = _objectSpread({}, Default$7, $(this._element).data(), typeof config === 'object' && config ? config : {});\n      Util.typeCheckConfig(NAME$a, config, this.constructor.DefaultType);\n      return config;\n    };\n\n    _proto._setListeners = function _setListeners() {\n      var _this3 = this;\n\n      $(this._element).on(Event$a.CLICK_DISMISS, Selector$a.DATA_DISMISS, function () {\n        return _this3.hide(true);\n      });\n    };\n\n    _proto._close = function _close() {\n      var _this4 = this;\n\n      var complete = function complete() {\n        _this4._element.classList.add(ClassName$a.HIDE);\n\n        $(_this4._element).trigger(Event$a.HIDDEN);\n      };\n\n      this._element.classList.remove(ClassName$a.SHOW);\n\n      if (this._config.animation) {\n        var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n        $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n      } else {\n        complete();\n      }\n    } // Static\n    ;\n\n    Toast._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var $element = $(this);\n        var data = $element.data(DATA_KEY$a);\n\n        var _config = typeof config === 'object' && config;\n\n        if (!data) {\n          data = new Toast(this, _config);\n          $element.data(DATA_KEY$a, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config](this);\n        }\n      });\n    };\n\n    _createClass(Toast, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$a;\n      }\n    }, {\n      key: \"DefaultType\",\n      get: function get() {\n        return DefaultType$7;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$7;\n      }\n    }]);\n\n    return Toast;\n  }();\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n\n  $.fn[NAME$a] = Toast._jQueryInterface;\n  $.fn[NAME$a].Constructor = Toast;\n\n  $.fn[NAME$a].noConflict = function () {\n    $.fn[NAME$a] = JQUERY_NO_CONFLICT$a;\n    return Toast._jQueryInterface;\n  };\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v4.3.1): index.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n\n  (function () {\n    if (typeof $ === 'undefined') {\n      throw new TypeError('Bootstrap\\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\\'s JavaScript.');\n    }\n\n    var version = $.fn.jquery.split(' ')[0].split('.');\n    var minMajor = 1;\n    var ltMajor = 2;\n    var minMinor = 9;\n    var minPatch = 1;\n    var maxMajor = 4;\n\n    if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {\n      throw new Error('Bootstrap\\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0');\n    }\n  })();\n\n  exports.Util = Util;\n  exports.Alert = Alert;\n  exports.Button = Button;\n  exports.Carousel = Carousel;\n  exports.Collapse = Collapse;\n  exports.Dropdown = Dropdown;\n  exports.Modal = Modal;\n  exports.Popover = Popover;\n  exports.Scrollspy = ScrollSpy;\n  exports.Tab = Tab;\n  exports.Toast = Toast;\n  exports.Tooltip = Tooltip;\n\n  Object.defineProperty(exports, '__esModule', { value: true });\n\n}));\n//# sourceMappingURL=bootstrap.bundle.js.map\n"
  },
  {
    "path": "public/plugins/bootstrap/js/bootstrap.js",
    "content": "/*!\n  * Bootstrap v4.3.1 (https://getbootstrap.com/)\n  * Copyright 2011-2019 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n  */\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('jquery'), require('popper.js')) :\n  typeof define === 'function' && define.amd ? define(['exports', 'jquery', 'popper.js'], factory) :\n  (global = global || self, factory(global.bootstrap = {}, global.jQuery, global.Popper));\n}(this, function (exports, $, Popper) { 'use strict';\n\n  $ = $ && $.hasOwnProperty('default') ? $['default'] : $;\n  Popper = Popper && Popper.hasOwnProperty('default') ? Popper['default'] : Popper;\n\n  function _defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n      if (\"value\" in descriptor) descriptor.writable = true;\n      Object.defineProperty(target, descriptor.key, descriptor);\n    }\n  }\n\n  function _createClass(Constructor, protoProps, staticProps) {\n    if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) _defineProperties(Constructor, staticProps);\n    return Constructor;\n  }\n\n  function _defineProperty(obj, key, value) {\n    if (key in obj) {\n      Object.defineProperty(obj, key, {\n        value: value,\n        enumerable: true,\n        configurable: true,\n        writable: true\n      });\n    } else {\n      obj[key] = value;\n    }\n\n    return obj;\n  }\n\n  function _objectSpread(target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i] != null ? arguments[i] : {};\n      var ownKeys = Object.keys(source);\n\n      if (typeof Object.getOwnPropertySymbols === 'function') {\n        ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n          return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n        }));\n      }\n\n      ownKeys.forEach(function (key) {\n        _defineProperty(target, key, source[key]);\n      });\n    }\n\n    return target;\n  }\n\n  function _inheritsLoose(subClass, superClass) {\n    subClass.prototype = Object.create(superClass.prototype);\n    subClass.prototype.constructor = subClass;\n    subClass.__proto__ = superClass;\n  }\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v4.3.1): util.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n  /**\n   * ------------------------------------------------------------------------\n   * Private TransitionEnd Helpers\n   * ------------------------------------------------------------------------\n   */\n\n  var TRANSITION_END = 'transitionend';\n  var MAX_UID = 1000000;\n  var MILLISECONDS_MULTIPLIER = 1000; // Shoutout AngusCroll (https://goo.gl/pxwQGp)\n\n  function toType(obj) {\n    return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase();\n  }\n\n  function getSpecialTransitionEndEvent() {\n    return {\n      bindType: TRANSITION_END,\n      delegateType: TRANSITION_END,\n      handle: function handle(event) {\n        if ($(event.target).is(this)) {\n          return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params\n        }\n\n        return undefined; // eslint-disable-line no-undefined\n      }\n    };\n  }\n\n  function transitionEndEmulator(duration) {\n    var _this = this;\n\n    var called = false;\n    $(this).one(Util.TRANSITION_END, function () {\n      called = true;\n    });\n    setTimeout(function () {\n      if (!called) {\n        Util.triggerTransitionEnd(_this);\n      }\n    }, duration);\n    return this;\n  }\n\n  function setTransitionEndSupport() {\n    $.fn.emulateTransitionEnd = transitionEndEmulator;\n    $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();\n  }\n  /**\n   * --------------------------------------------------------------------------\n   * Public Util Api\n   * --------------------------------------------------------------------------\n   */\n\n\n  var Util = {\n    TRANSITION_END: 'bsTransitionEnd',\n    getUID: function getUID(prefix) {\n      do {\n        // eslint-disable-next-line no-bitwise\n        prefix += ~~(Math.random() * MAX_UID); // \"~~\" acts like a faster Math.floor() here\n      } while (document.getElementById(prefix));\n\n      return prefix;\n    },\n    getSelectorFromElement: function getSelectorFromElement(element) {\n      var selector = element.getAttribute('data-target');\n\n      if (!selector || selector === '#') {\n        var hrefAttr = element.getAttribute('href');\n        selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : '';\n      }\n\n      try {\n        return document.querySelector(selector) ? selector : null;\n      } catch (err) {\n        return null;\n      }\n    },\n    getTransitionDurationFromElement: function getTransitionDurationFromElement(element) {\n      if (!element) {\n        return 0;\n      } // Get transition-duration of the element\n\n\n      var transitionDuration = $(element).css('transition-duration');\n      var transitionDelay = $(element).css('transition-delay');\n      var floatTransitionDuration = parseFloat(transitionDuration);\n      var floatTransitionDelay = parseFloat(transitionDelay); // Return 0 if element or transition duration is not found\n\n      if (!floatTransitionDuration && !floatTransitionDelay) {\n        return 0;\n      } // If multiple durations are defined, take the first\n\n\n      transitionDuration = transitionDuration.split(',')[0];\n      transitionDelay = transitionDelay.split(',')[0];\n      return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;\n    },\n    reflow: function reflow(element) {\n      return element.offsetHeight;\n    },\n    triggerTransitionEnd: function triggerTransitionEnd(element) {\n      $(element).trigger(TRANSITION_END);\n    },\n    // TODO: Remove in v5\n    supportsTransitionEnd: function supportsTransitionEnd() {\n      return Boolean(TRANSITION_END);\n    },\n    isElement: function isElement(obj) {\n      return (obj[0] || obj).nodeType;\n    },\n    typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) {\n      for (var property in configTypes) {\n        if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n          var expectedTypes = configTypes[property];\n          var value = config[property];\n          var valueType = value && Util.isElement(value) ? 'element' : toType(value);\n\n          if (!new RegExp(expectedTypes).test(valueType)) {\n            throw new Error(componentName.toUpperCase() + \": \" + (\"Option \\\"\" + property + \"\\\" provided type \\\"\" + valueType + \"\\\" \") + (\"but expected type \\\"\" + expectedTypes + \"\\\".\"));\n          }\n        }\n      }\n    },\n    findShadowRoot: function findShadowRoot(element) {\n      if (!document.documentElement.attachShadow) {\n        return null;\n      } // Can find the shadow root otherwise it'll return the document\n\n\n      if (typeof element.getRootNode === 'function') {\n        var root = element.getRootNode();\n        return root instanceof ShadowRoot ? root : null;\n      }\n\n      if (element instanceof ShadowRoot) {\n        return element;\n      } // when we don't find a shadow root\n\n\n      if (!element.parentNode) {\n        return null;\n      }\n\n      return Util.findShadowRoot(element.parentNode);\n    }\n  };\n  setTransitionEndSupport();\n\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  var NAME = 'alert';\n  var VERSION = '4.3.1';\n  var DATA_KEY = 'bs.alert';\n  var EVENT_KEY = \".\" + DATA_KEY;\n  var DATA_API_KEY = '.data-api';\n  var JQUERY_NO_CONFLICT = $.fn[NAME];\n  var Selector = {\n    DISMISS: '[data-dismiss=\"alert\"]'\n  };\n  var Event = {\n    CLOSE: \"close\" + EVENT_KEY,\n    CLOSED: \"closed\" + EVENT_KEY,\n    CLICK_DATA_API: \"click\" + EVENT_KEY + DATA_API_KEY\n  };\n  var ClassName = {\n    ALERT: 'alert',\n    FADE: 'fade',\n    SHOW: 'show'\n    /**\n     * ------------------------------------------------------------------------\n     * Class Definition\n     * ------------------------------------------------------------------------\n     */\n\n  };\n\n  var Alert =\n  /*#__PURE__*/\n  function () {\n    function Alert(element) {\n      this._element = element;\n    } // Getters\n\n\n    var _proto = Alert.prototype;\n\n    // Public\n    _proto.close = function close(element) {\n      var rootElement = this._element;\n\n      if (element) {\n        rootElement = this._getRootElement(element);\n      }\n\n      var customEvent = this._triggerCloseEvent(rootElement);\n\n      if (customEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      this._removeElement(rootElement);\n    };\n\n    _proto.dispose = function dispose() {\n      $.removeData(this._element, DATA_KEY);\n      this._element = null;\n    } // Private\n    ;\n\n    _proto._getRootElement = function _getRootElement(element) {\n      var selector = Util.getSelectorFromElement(element);\n      var parent = false;\n\n      if (selector) {\n        parent = document.querySelector(selector);\n      }\n\n      if (!parent) {\n        parent = $(element).closest(\".\" + ClassName.ALERT)[0];\n      }\n\n      return parent;\n    };\n\n    _proto._triggerCloseEvent = function _triggerCloseEvent(element) {\n      var closeEvent = $.Event(Event.CLOSE);\n      $(element).trigger(closeEvent);\n      return closeEvent;\n    };\n\n    _proto._removeElement = function _removeElement(element) {\n      var _this = this;\n\n      $(element).removeClass(ClassName.SHOW);\n\n      if (!$(element).hasClass(ClassName.FADE)) {\n        this._destroyElement(element);\n\n        return;\n      }\n\n      var transitionDuration = Util.getTransitionDurationFromElement(element);\n      $(element).one(Util.TRANSITION_END, function (event) {\n        return _this._destroyElement(element, event);\n      }).emulateTransitionEnd(transitionDuration);\n    };\n\n    _proto._destroyElement = function _destroyElement(element) {\n      $(element).detach().trigger(Event.CLOSED).remove();\n    } // Static\n    ;\n\n    Alert._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var $element = $(this);\n        var data = $element.data(DATA_KEY);\n\n        if (!data) {\n          data = new Alert(this);\n          $element.data(DATA_KEY, data);\n        }\n\n        if (config === 'close') {\n          data[config](this);\n        }\n      });\n    };\n\n    Alert._handleDismiss = function _handleDismiss(alertInstance) {\n      return function (event) {\n        if (event) {\n          event.preventDefault();\n        }\n\n        alertInstance.close(this);\n      };\n    };\n\n    _createClass(Alert, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION;\n      }\n    }]);\n\n    return Alert;\n  }();\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n\n  $(document).on(Event.CLICK_DATA_API, Selector.DISMISS, Alert._handleDismiss(new Alert()));\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n  $.fn[NAME] = Alert._jQueryInterface;\n  $.fn[NAME].Constructor = Alert;\n\n  $.fn[NAME].noConflict = function () {\n    $.fn[NAME] = JQUERY_NO_CONFLICT;\n    return Alert._jQueryInterface;\n  };\n\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  var NAME$1 = 'button';\n  var VERSION$1 = '4.3.1';\n  var DATA_KEY$1 = 'bs.button';\n  var EVENT_KEY$1 = \".\" + DATA_KEY$1;\n  var DATA_API_KEY$1 = '.data-api';\n  var JQUERY_NO_CONFLICT$1 = $.fn[NAME$1];\n  var ClassName$1 = {\n    ACTIVE: 'active',\n    BUTTON: 'btn',\n    FOCUS: 'focus'\n  };\n  var Selector$1 = {\n    DATA_TOGGLE_CARROT: '[data-toggle^=\"button\"]',\n    DATA_TOGGLE: '[data-toggle=\"buttons\"]',\n    INPUT: 'input:not([type=\"hidden\"])',\n    ACTIVE: '.active',\n    BUTTON: '.btn'\n  };\n  var Event$1 = {\n    CLICK_DATA_API: \"click\" + EVENT_KEY$1 + DATA_API_KEY$1,\n    FOCUS_BLUR_DATA_API: \"focus\" + EVENT_KEY$1 + DATA_API_KEY$1 + \" \" + (\"blur\" + EVENT_KEY$1 + DATA_API_KEY$1)\n    /**\n     * ------------------------------------------------------------------------\n     * Class Definition\n     * ------------------------------------------------------------------------\n     */\n\n  };\n\n  var Button =\n  /*#__PURE__*/\n  function () {\n    function Button(element) {\n      this._element = element;\n    } // Getters\n\n\n    var _proto = Button.prototype;\n\n    // Public\n    _proto.toggle = function toggle() {\n      var triggerChangeEvent = true;\n      var addAriaPressed = true;\n      var rootElement = $(this._element).closest(Selector$1.DATA_TOGGLE)[0];\n\n      if (rootElement) {\n        var input = this._element.querySelector(Selector$1.INPUT);\n\n        if (input) {\n          if (input.type === 'radio') {\n            if (input.checked && this._element.classList.contains(ClassName$1.ACTIVE)) {\n              triggerChangeEvent = false;\n            } else {\n              var activeElement = rootElement.querySelector(Selector$1.ACTIVE);\n\n              if (activeElement) {\n                $(activeElement).removeClass(ClassName$1.ACTIVE);\n              }\n            }\n          }\n\n          if (triggerChangeEvent) {\n            if (input.hasAttribute('disabled') || rootElement.hasAttribute('disabled') || input.classList.contains('disabled') || rootElement.classList.contains('disabled')) {\n              return;\n            }\n\n            input.checked = !this._element.classList.contains(ClassName$1.ACTIVE);\n            $(input).trigger('change');\n          }\n\n          input.focus();\n          addAriaPressed = false;\n        }\n      }\n\n      if (addAriaPressed) {\n        this._element.setAttribute('aria-pressed', !this._element.classList.contains(ClassName$1.ACTIVE));\n      }\n\n      if (triggerChangeEvent) {\n        $(this._element).toggleClass(ClassName$1.ACTIVE);\n      }\n    };\n\n    _proto.dispose = function dispose() {\n      $.removeData(this._element, DATA_KEY$1);\n      this._element = null;\n    } // Static\n    ;\n\n    Button._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var data = $(this).data(DATA_KEY$1);\n\n        if (!data) {\n          data = new Button(this);\n          $(this).data(DATA_KEY$1, data);\n        }\n\n        if (config === 'toggle') {\n          data[config]();\n        }\n      });\n    };\n\n    _createClass(Button, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$1;\n      }\n    }]);\n\n    return Button;\n  }();\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n\n  $(document).on(Event$1.CLICK_DATA_API, Selector$1.DATA_TOGGLE_CARROT, function (event) {\n    event.preventDefault();\n    var button = event.target;\n\n    if (!$(button).hasClass(ClassName$1.BUTTON)) {\n      button = $(button).closest(Selector$1.BUTTON);\n    }\n\n    Button._jQueryInterface.call($(button), 'toggle');\n  }).on(Event$1.FOCUS_BLUR_DATA_API, Selector$1.DATA_TOGGLE_CARROT, function (event) {\n    var button = $(event.target).closest(Selector$1.BUTTON)[0];\n    $(button).toggleClass(ClassName$1.FOCUS, /^focus(in)?$/.test(event.type));\n  });\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n  $.fn[NAME$1] = Button._jQueryInterface;\n  $.fn[NAME$1].Constructor = Button;\n\n  $.fn[NAME$1].noConflict = function () {\n    $.fn[NAME$1] = JQUERY_NO_CONFLICT$1;\n    return Button._jQueryInterface;\n  };\n\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  var NAME$2 = 'carousel';\n  var VERSION$2 = '4.3.1';\n  var DATA_KEY$2 = 'bs.carousel';\n  var EVENT_KEY$2 = \".\" + DATA_KEY$2;\n  var DATA_API_KEY$2 = '.data-api';\n  var JQUERY_NO_CONFLICT$2 = $.fn[NAME$2];\n  var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key\n\n  var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key\n\n  var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch\n\n  var SWIPE_THRESHOLD = 40;\n  var Default = {\n    interval: 5000,\n    keyboard: true,\n    slide: false,\n    pause: 'hover',\n    wrap: true,\n    touch: true\n  };\n  var DefaultType = {\n    interval: '(number|boolean)',\n    keyboard: 'boolean',\n    slide: '(boolean|string)',\n    pause: '(string|boolean)',\n    wrap: 'boolean',\n    touch: 'boolean'\n  };\n  var Direction = {\n    NEXT: 'next',\n    PREV: 'prev',\n    LEFT: 'left',\n    RIGHT: 'right'\n  };\n  var Event$2 = {\n    SLIDE: \"slide\" + EVENT_KEY$2,\n    SLID: \"slid\" + EVENT_KEY$2,\n    KEYDOWN: \"keydown\" + EVENT_KEY$2,\n    MOUSEENTER: \"mouseenter\" + EVENT_KEY$2,\n    MOUSELEAVE: \"mouseleave\" + EVENT_KEY$2,\n    TOUCHSTART: \"touchstart\" + EVENT_KEY$2,\n    TOUCHMOVE: \"touchmove\" + EVENT_KEY$2,\n    TOUCHEND: \"touchend\" + EVENT_KEY$2,\n    POINTERDOWN: \"pointerdown\" + EVENT_KEY$2,\n    POINTERUP: \"pointerup\" + EVENT_KEY$2,\n    DRAG_START: \"dragstart\" + EVENT_KEY$2,\n    LOAD_DATA_API: \"load\" + EVENT_KEY$2 + DATA_API_KEY$2,\n    CLICK_DATA_API: \"click\" + EVENT_KEY$2 + DATA_API_KEY$2\n  };\n  var ClassName$2 = {\n    CAROUSEL: 'carousel',\n    ACTIVE: 'active',\n    SLIDE: 'slide',\n    RIGHT: 'carousel-item-right',\n    LEFT: 'carousel-item-left',\n    NEXT: 'carousel-item-next',\n    PREV: 'carousel-item-prev',\n    ITEM: 'carousel-item',\n    POINTER_EVENT: 'pointer-event'\n  };\n  var Selector$2 = {\n    ACTIVE: '.active',\n    ACTIVE_ITEM: '.active.carousel-item',\n    ITEM: '.carousel-item',\n    ITEM_IMG: '.carousel-item img',\n    NEXT_PREV: '.carousel-item-next, .carousel-item-prev',\n    INDICATORS: '.carousel-indicators',\n    DATA_SLIDE: '[data-slide], [data-slide-to]',\n    DATA_RIDE: '[data-ride=\"carousel\"]'\n  };\n  var PointerType = {\n    TOUCH: 'touch',\n    PEN: 'pen'\n    /**\n     * ------------------------------------------------------------------------\n     * Class Definition\n     * ------------------------------------------------------------------------\n     */\n\n  };\n\n  var Carousel =\n  /*#__PURE__*/\n  function () {\n    function Carousel(element, config) {\n      this._items = null;\n      this._interval = null;\n      this._activeElement = null;\n      this._isPaused = false;\n      this._isSliding = false;\n      this.touchTimeout = null;\n      this.touchStartX = 0;\n      this.touchDeltaX = 0;\n      this._config = this._getConfig(config);\n      this._element = element;\n      this._indicatorsElement = this._element.querySelector(Selector$2.INDICATORS);\n      this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;\n      this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent);\n\n      this._addEventListeners();\n    } // Getters\n\n\n    var _proto = Carousel.prototype;\n\n    // Public\n    _proto.next = function next() {\n      if (!this._isSliding) {\n        this._slide(Direction.NEXT);\n      }\n    };\n\n    _proto.nextWhenVisible = function nextWhenVisible() {\n      // Don't call next when the page isn't visible\n      // or the carousel or its parent isn't visible\n      if (!document.hidden && $(this._element).is(':visible') && $(this._element).css('visibility') !== 'hidden') {\n        this.next();\n      }\n    };\n\n    _proto.prev = function prev() {\n      if (!this._isSliding) {\n        this._slide(Direction.PREV);\n      }\n    };\n\n    _proto.pause = function pause(event) {\n      if (!event) {\n        this._isPaused = true;\n      }\n\n      if (this._element.querySelector(Selector$2.NEXT_PREV)) {\n        Util.triggerTransitionEnd(this._element);\n        this.cycle(true);\n      }\n\n      clearInterval(this._interval);\n      this._interval = null;\n    };\n\n    _proto.cycle = function cycle(event) {\n      if (!event) {\n        this._isPaused = false;\n      }\n\n      if (this._interval) {\n        clearInterval(this._interval);\n        this._interval = null;\n      }\n\n      if (this._config.interval && !this._isPaused) {\n        this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);\n      }\n    };\n\n    _proto.to = function to(index) {\n      var _this = this;\n\n      this._activeElement = this._element.querySelector(Selector$2.ACTIVE_ITEM);\n\n      var activeIndex = this._getItemIndex(this._activeElement);\n\n      if (index > this._items.length - 1 || index < 0) {\n        return;\n      }\n\n      if (this._isSliding) {\n        $(this._element).one(Event$2.SLID, function () {\n          return _this.to(index);\n        });\n        return;\n      }\n\n      if (activeIndex === index) {\n        this.pause();\n        this.cycle();\n        return;\n      }\n\n      var direction = index > activeIndex ? Direction.NEXT : Direction.PREV;\n\n      this._slide(direction, this._items[index]);\n    };\n\n    _proto.dispose = function dispose() {\n      $(this._element).off(EVENT_KEY$2);\n      $.removeData(this._element, DATA_KEY$2);\n      this._items = null;\n      this._config = null;\n      this._element = null;\n      this._interval = null;\n      this._isPaused = null;\n      this._isSliding = null;\n      this._activeElement = null;\n      this._indicatorsElement = null;\n    } // Private\n    ;\n\n    _proto._getConfig = function _getConfig(config) {\n      config = _objectSpread({}, Default, config);\n      Util.typeCheckConfig(NAME$2, config, DefaultType);\n      return config;\n    };\n\n    _proto._handleSwipe = function _handleSwipe() {\n      var absDeltax = Math.abs(this.touchDeltaX);\n\n      if (absDeltax <= SWIPE_THRESHOLD) {\n        return;\n      }\n\n      var direction = absDeltax / this.touchDeltaX; // swipe left\n\n      if (direction > 0) {\n        this.prev();\n      } // swipe right\n\n\n      if (direction < 0) {\n        this.next();\n      }\n    };\n\n    _proto._addEventListeners = function _addEventListeners() {\n      var _this2 = this;\n\n      if (this._config.keyboard) {\n        $(this._element).on(Event$2.KEYDOWN, function (event) {\n          return _this2._keydown(event);\n        });\n      }\n\n      if (this._config.pause === 'hover') {\n        $(this._element).on(Event$2.MOUSEENTER, function (event) {\n          return _this2.pause(event);\n        }).on(Event$2.MOUSELEAVE, function (event) {\n          return _this2.cycle(event);\n        });\n      }\n\n      if (this._config.touch) {\n        this._addTouchEventListeners();\n      }\n    };\n\n    _proto._addTouchEventListeners = function _addTouchEventListeners() {\n      var _this3 = this;\n\n      if (!this._touchSupported) {\n        return;\n      }\n\n      var start = function start(event) {\n        if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n          _this3.touchStartX = event.originalEvent.clientX;\n        } else if (!_this3._pointerEvent) {\n          _this3.touchStartX = event.originalEvent.touches[0].clientX;\n        }\n      };\n\n      var move = function move(event) {\n        // ensure swiping with one touch and not pinching\n        if (event.originalEvent.touches && event.originalEvent.touches.length > 1) {\n          _this3.touchDeltaX = 0;\n        } else {\n          _this3.touchDeltaX = event.originalEvent.touches[0].clientX - _this3.touchStartX;\n        }\n      };\n\n      var end = function end(event) {\n        if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n          _this3.touchDeltaX = event.originalEvent.clientX - _this3.touchStartX;\n        }\n\n        _this3._handleSwipe();\n\n        if (_this3._config.pause === 'hover') {\n          // If it's a touch-enabled device, mouseenter/leave are fired as\n          // part of the mouse compatibility events on first tap - the carousel\n          // would stop cycling until user tapped out of it;\n          // here, we listen for touchend, explicitly pause the carousel\n          // (as if it's the second time we tap on it, mouseenter compat event\n          // is NOT fired) and after a timeout (to allow for mouse compatibility\n          // events to fire) we explicitly restart cycling\n          _this3.pause();\n\n          if (_this3.touchTimeout) {\n            clearTimeout(_this3.touchTimeout);\n          }\n\n          _this3.touchTimeout = setTimeout(function (event) {\n            return _this3.cycle(event);\n          }, TOUCHEVENT_COMPAT_WAIT + _this3._config.interval);\n        }\n      };\n\n      $(this._element.querySelectorAll(Selector$2.ITEM_IMG)).on(Event$2.DRAG_START, function (e) {\n        return e.preventDefault();\n      });\n\n      if (this._pointerEvent) {\n        $(this._element).on(Event$2.POINTERDOWN, function (event) {\n          return start(event);\n        });\n        $(this._element).on(Event$2.POINTERUP, function (event) {\n          return end(event);\n        });\n\n        this._element.classList.add(ClassName$2.POINTER_EVENT);\n      } else {\n        $(this._element).on(Event$2.TOUCHSTART, function (event) {\n          return start(event);\n        });\n        $(this._element).on(Event$2.TOUCHMOVE, function (event) {\n          return move(event);\n        });\n        $(this._element).on(Event$2.TOUCHEND, function (event) {\n          return end(event);\n        });\n      }\n    };\n\n    _proto._keydown = function _keydown(event) {\n      if (/input|textarea/i.test(event.target.tagName)) {\n        return;\n      }\n\n      switch (event.which) {\n        case ARROW_LEFT_KEYCODE:\n          event.preventDefault();\n          this.prev();\n          break;\n\n        case ARROW_RIGHT_KEYCODE:\n          event.preventDefault();\n          this.next();\n          break;\n\n        default:\n      }\n    };\n\n    _proto._getItemIndex = function _getItemIndex(element) {\n      this._items = element && element.parentNode ? [].slice.call(element.parentNode.querySelectorAll(Selector$2.ITEM)) : [];\n      return this._items.indexOf(element);\n    };\n\n    _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) {\n      var isNextDirection = direction === Direction.NEXT;\n      var isPrevDirection = direction === Direction.PREV;\n\n      var activeIndex = this._getItemIndex(activeElement);\n\n      var lastItemIndex = this._items.length - 1;\n      var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex;\n\n      if (isGoingToWrap && !this._config.wrap) {\n        return activeElement;\n      }\n\n      var delta = direction === Direction.PREV ? -1 : 1;\n      var itemIndex = (activeIndex + delta) % this._items.length;\n      return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];\n    };\n\n    _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {\n      var targetIndex = this._getItemIndex(relatedTarget);\n\n      var fromIndex = this._getItemIndex(this._element.querySelector(Selector$2.ACTIVE_ITEM));\n\n      var slideEvent = $.Event(Event$2.SLIDE, {\n        relatedTarget: relatedTarget,\n        direction: eventDirectionName,\n        from: fromIndex,\n        to: targetIndex\n      });\n      $(this._element).trigger(slideEvent);\n      return slideEvent;\n    };\n\n    _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {\n      if (this._indicatorsElement) {\n        var indicators = [].slice.call(this._indicatorsElement.querySelectorAll(Selector$2.ACTIVE));\n        $(indicators).removeClass(ClassName$2.ACTIVE);\n\n        var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];\n\n        if (nextIndicator) {\n          $(nextIndicator).addClass(ClassName$2.ACTIVE);\n        }\n      }\n    };\n\n    _proto._slide = function _slide(direction, element) {\n      var _this4 = this;\n\n      var activeElement = this._element.querySelector(Selector$2.ACTIVE_ITEM);\n\n      var activeElementIndex = this._getItemIndex(activeElement);\n\n      var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement);\n\n      var nextElementIndex = this._getItemIndex(nextElement);\n\n      var isCycling = Boolean(this._interval);\n      var directionalClassName;\n      var orderClassName;\n      var eventDirectionName;\n\n      if (direction === Direction.NEXT) {\n        directionalClassName = ClassName$2.LEFT;\n        orderClassName = ClassName$2.NEXT;\n        eventDirectionName = Direction.LEFT;\n      } else {\n        directionalClassName = ClassName$2.RIGHT;\n        orderClassName = ClassName$2.PREV;\n        eventDirectionName = Direction.RIGHT;\n      }\n\n      if (nextElement && $(nextElement).hasClass(ClassName$2.ACTIVE)) {\n        this._isSliding = false;\n        return;\n      }\n\n      var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);\n\n      if (slideEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      if (!activeElement || !nextElement) {\n        // Some weirdness is happening, so we bail\n        return;\n      }\n\n      this._isSliding = true;\n\n      if (isCycling) {\n        this.pause();\n      }\n\n      this._setActiveIndicatorElement(nextElement);\n\n      var slidEvent = $.Event(Event$2.SLID, {\n        relatedTarget: nextElement,\n        direction: eventDirectionName,\n        from: activeElementIndex,\n        to: nextElementIndex\n      });\n\n      if ($(this._element).hasClass(ClassName$2.SLIDE)) {\n        $(nextElement).addClass(orderClassName);\n        Util.reflow(nextElement);\n        $(activeElement).addClass(directionalClassName);\n        $(nextElement).addClass(directionalClassName);\n        var nextElementInterval = parseInt(nextElement.getAttribute('data-interval'), 10);\n\n        if (nextElementInterval) {\n          this._config.defaultInterval = this._config.defaultInterval || this._config.interval;\n          this._config.interval = nextElementInterval;\n        } else {\n          this._config.interval = this._config.defaultInterval || this._config.interval;\n        }\n\n        var transitionDuration = Util.getTransitionDurationFromElement(activeElement);\n        $(activeElement).one(Util.TRANSITION_END, function () {\n          $(nextElement).removeClass(directionalClassName + \" \" + orderClassName).addClass(ClassName$2.ACTIVE);\n          $(activeElement).removeClass(ClassName$2.ACTIVE + \" \" + orderClassName + \" \" + directionalClassName);\n          _this4._isSliding = false;\n          setTimeout(function () {\n            return $(_this4._element).trigger(slidEvent);\n          }, 0);\n        }).emulateTransitionEnd(transitionDuration);\n      } else {\n        $(activeElement).removeClass(ClassName$2.ACTIVE);\n        $(nextElement).addClass(ClassName$2.ACTIVE);\n        this._isSliding = false;\n        $(this._element).trigger(slidEvent);\n      }\n\n      if (isCycling) {\n        this.cycle();\n      }\n    } // Static\n    ;\n\n    Carousel._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var data = $(this).data(DATA_KEY$2);\n\n        var _config = _objectSpread({}, Default, $(this).data());\n\n        if (typeof config === 'object') {\n          _config = _objectSpread({}, _config, config);\n        }\n\n        var action = typeof config === 'string' ? config : _config.slide;\n\n        if (!data) {\n          data = new Carousel(this, _config);\n          $(this).data(DATA_KEY$2, data);\n        }\n\n        if (typeof config === 'number') {\n          data.to(config);\n        } else if (typeof action === 'string') {\n          if (typeof data[action] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + action + \"\\\"\");\n          }\n\n          data[action]();\n        } else if (_config.interval && _config.ride) {\n          data.pause();\n          data.cycle();\n        }\n      });\n    };\n\n    Carousel._dataApiClickHandler = function _dataApiClickHandler(event) {\n      var selector = Util.getSelectorFromElement(this);\n\n      if (!selector) {\n        return;\n      }\n\n      var target = $(selector)[0];\n\n      if (!target || !$(target).hasClass(ClassName$2.CAROUSEL)) {\n        return;\n      }\n\n      var config = _objectSpread({}, $(target).data(), $(this).data());\n\n      var slideIndex = this.getAttribute('data-slide-to');\n\n      if (slideIndex) {\n        config.interval = false;\n      }\n\n      Carousel._jQueryInterface.call($(target), config);\n\n      if (slideIndex) {\n        $(target).data(DATA_KEY$2).to(slideIndex);\n      }\n\n      event.preventDefault();\n    };\n\n    _createClass(Carousel, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$2;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default;\n      }\n    }]);\n\n    return Carousel;\n  }();\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n\n  $(document).on(Event$2.CLICK_DATA_API, Selector$2.DATA_SLIDE, Carousel._dataApiClickHandler);\n  $(window).on(Event$2.LOAD_DATA_API, function () {\n    var carousels = [].slice.call(document.querySelectorAll(Selector$2.DATA_RIDE));\n\n    for (var i = 0, len = carousels.length; i < len; i++) {\n      var $carousel = $(carousels[i]);\n\n      Carousel._jQueryInterface.call($carousel, $carousel.data());\n    }\n  });\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n  $.fn[NAME$2] = Carousel._jQueryInterface;\n  $.fn[NAME$2].Constructor = Carousel;\n\n  $.fn[NAME$2].noConflict = function () {\n    $.fn[NAME$2] = JQUERY_NO_CONFLICT$2;\n    return Carousel._jQueryInterface;\n  };\n\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  var NAME$3 = 'collapse';\n  var VERSION$3 = '4.3.1';\n  var DATA_KEY$3 = 'bs.collapse';\n  var EVENT_KEY$3 = \".\" + DATA_KEY$3;\n  var DATA_API_KEY$3 = '.data-api';\n  var JQUERY_NO_CONFLICT$3 = $.fn[NAME$3];\n  var Default$1 = {\n    toggle: true,\n    parent: ''\n  };\n  var DefaultType$1 = {\n    toggle: 'boolean',\n    parent: '(string|element)'\n  };\n  var Event$3 = {\n    SHOW: \"show\" + EVENT_KEY$3,\n    SHOWN: \"shown\" + EVENT_KEY$3,\n    HIDE: \"hide\" + EVENT_KEY$3,\n    HIDDEN: \"hidden\" + EVENT_KEY$3,\n    CLICK_DATA_API: \"click\" + EVENT_KEY$3 + DATA_API_KEY$3\n  };\n  var ClassName$3 = {\n    SHOW: 'show',\n    COLLAPSE: 'collapse',\n    COLLAPSING: 'collapsing',\n    COLLAPSED: 'collapsed'\n  };\n  var Dimension = {\n    WIDTH: 'width',\n    HEIGHT: 'height'\n  };\n  var Selector$3 = {\n    ACTIVES: '.show, .collapsing',\n    DATA_TOGGLE: '[data-toggle=\"collapse\"]'\n    /**\n     * ------------------------------------------------------------------------\n     * Class Definition\n     * ------------------------------------------------------------------------\n     */\n\n  };\n\n  var Collapse =\n  /*#__PURE__*/\n  function () {\n    function Collapse(element, config) {\n      this._isTransitioning = false;\n      this._element = element;\n      this._config = this._getConfig(config);\n      this._triggerArray = [].slice.call(document.querySelectorAll(\"[data-toggle=\\\"collapse\\\"][href=\\\"#\" + element.id + \"\\\"],\" + (\"[data-toggle=\\\"collapse\\\"][data-target=\\\"#\" + element.id + \"\\\"]\")));\n      var toggleList = [].slice.call(document.querySelectorAll(Selector$3.DATA_TOGGLE));\n\n      for (var i = 0, len = toggleList.length; i < len; i++) {\n        var elem = toggleList[i];\n        var selector = Util.getSelectorFromElement(elem);\n        var filterElement = [].slice.call(document.querySelectorAll(selector)).filter(function (foundElem) {\n          return foundElem === element;\n        });\n\n        if (selector !== null && filterElement.length > 0) {\n          this._selector = selector;\n\n          this._triggerArray.push(elem);\n        }\n      }\n\n      this._parent = this._config.parent ? this._getParent() : null;\n\n      if (!this._config.parent) {\n        this._addAriaAndCollapsedClass(this._element, this._triggerArray);\n      }\n\n      if (this._config.toggle) {\n        this.toggle();\n      }\n    } // Getters\n\n\n    var _proto = Collapse.prototype;\n\n    // Public\n    _proto.toggle = function toggle() {\n      if ($(this._element).hasClass(ClassName$3.SHOW)) {\n        this.hide();\n      } else {\n        this.show();\n      }\n    };\n\n    _proto.show = function show() {\n      var _this = this;\n\n      if (this._isTransitioning || $(this._element).hasClass(ClassName$3.SHOW)) {\n        return;\n      }\n\n      var actives;\n      var activesData;\n\n      if (this._parent) {\n        actives = [].slice.call(this._parent.querySelectorAll(Selector$3.ACTIVES)).filter(function (elem) {\n          if (typeof _this._config.parent === 'string') {\n            return elem.getAttribute('data-parent') === _this._config.parent;\n          }\n\n          return elem.classList.contains(ClassName$3.COLLAPSE);\n        });\n\n        if (actives.length === 0) {\n          actives = null;\n        }\n      }\n\n      if (actives) {\n        activesData = $(actives).not(this._selector).data(DATA_KEY$3);\n\n        if (activesData && activesData._isTransitioning) {\n          return;\n        }\n      }\n\n      var startEvent = $.Event(Event$3.SHOW);\n      $(this._element).trigger(startEvent);\n\n      if (startEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      if (actives) {\n        Collapse._jQueryInterface.call($(actives).not(this._selector), 'hide');\n\n        if (!activesData) {\n          $(actives).data(DATA_KEY$3, null);\n        }\n      }\n\n      var dimension = this._getDimension();\n\n      $(this._element).removeClass(ClassName$3.COLLAPSE).addClass(ClassName$3.COLLAPSING);\n      this._element.style[dimension] = 0;\n\n      if (this._triggerArray.length) {\n        $(this._triggerArray).removeClass(ClassName$3.COLLAPSED).attr('aria-expanded', true);\n      }\n\n      this.setTransitioning(true);\n\n      var complete = function complete() {\n        $(_this._element).removeClass(ClassName$3.COLLAPSING).addClass(ClassName$3.COLLAPSE).addClass(ClassName$3.SHOW);\n        _this._element.style[dimension] = '';\n\n        _this.setTransitioning(false);\n\n        $(_this._element).trigger(Event$3.SHOWN);\n      };\n\n      var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);\n      var scrollSize = \"scroll\" + capitalizedDimension;\n      var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n      $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n      this._element.style[dimension] = this._element[scrollSize] + \"px\";\n    };\n\n    _proto.hide = function hide() {\n      var _this2 = this;\n\n      if (this._isTransitioning || !$(this._element).hasClass(ClassName$3.SHOW)) {\n        return;\n      }\n\n      var startEvent = $.Event(Event$3.HIDE);\n      $(this._element).trigger(startEvent);\n\n      if (startEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      var dimension = this._getDimension();\n\n      this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + \"px\";\n      Util.reflow(this._element);\n      $(this._element).addClass(ClassName$3.COLLAPSING).removeClass(ClassName$3.COLLAPSE).removeClass(ClassName$3.SHOW);\n      var triggerArrayLength = this._triggerArray.length;\n\n      if (triggerArrayLength > 0) {\n        for (var i = 0; i < triggerArrayLength; i++) {\n          var trigger = this._triggerArray[i];\n          var selector = Util.getSelectorFromElement(trigger);\n\n          if (selector !== null) {\n            var $elem = $([].slice.call(document.querySelectorAll(selector)));\n\n            if (!$elem.hasClass(ClassName$3.SHOW)) {\n              $(trigger).addClass(ClassName$3.COLLAPSED).attr('aria-expanded', false);\n            }\n          }\n        }\n      }\n\n      this.setTransitioning(true);\n\n      var complete = function complete() {\n        _this2.setTransitioning(false);\n\n        $(_this2._element).removeClass(ClassName$3.COLLAPSING).addClass(ClassName$3.COLLAPSE).trigger(Event$3.HIDDEN);\n      };\n\n      this._element.style[dimension] = '';\n      var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n      $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n    };\n\n    _proto.setTransitioning = function setTransitioning(isTransitioning) {\n      this._isTransitioning = isTransitioning;\n    };\n\n    _proto.dispose = function dispose() {\n      $.removeData(this._element, DATA_KEY$3);\n      this._config = null;\n      this._parent = null;\n      this._element = null;\n      this._triggerArray = null;\n      this._isTransitioning = null;\n    } // Private\n    ;\n\n    _proto._getConfig = function _getConfig(config) {\n      config = _objectSpread({}, Default$1, config);\n      config.toggle = Boolean(config.toggle); // Coerce string values\n\n      Util.typeCheckConfig(NAME$3, config, DefaultType$1);\n      return config;\n    };\n\n    _proto._getDimension = function _getDimension() {\n      var hasWidth = $(this._element).hasClass(Dimension.WIDTH);\n      return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT;\n    };\n\n    _proto._getParent = function _getParent() {\n      var _this3 = this;\n\n      var parent;\n\n      if (Util.isElement(this._config.parent)) {\n        parent = this._config.parent; // It's a jQuery object\n\n        if (typeof this._config.parent.jquery !== 'undefined') {\n          parent = this._config.parent[0];\n        }\n      } else {\n        parent = document.querySelector(this._config.parent);\n      }\n\n      var selector = \"[data-toggle=\\\"collapse\\\"][data-parent=\\\"\" + this._config.parent + \"\\\"]\";\n      var children = [].slice.call(parent.querySelectorAll(selector));\n      $(children).each(function (i, element) {\n        _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]);\n      });\n      return parent;\n    };\n\n    _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {\n      var isOpen = $(element).hasClass(ClassName$3.SHOW);\n\n      if (triggerArray.length) {\n        $(triggerArray).toggleClass(ClassName$3.COLLAPSED, !isOpen).attr('aria-expanded', isOpen);\n      }\n    } // Static\n    ;\n\n    Collapse._getTargetFromElement = function _getTargetFromElement(element) {\n      var selector = Util.getSelectorFromElement(element);\n      return selector ? document.querySelector(selector) : null;\n    };\n\n    Collapse._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var $this = $(this);\n        var data = $this.data(DATA_KEY$3);\n\n        var _config = _objectSpread({}, Default$1, $this.data(), typeof config === 'object' && config ? config : {});\n\n        if (!data && _config.toggle && /show|hide/.test(config)) {\n          _config.toggle = false;\n        }\n\n        if (!data) {\n          data = new Collapse(this, _config);\n          $this.data(DATA_KEY$3, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config]();\n        }\n      });\n    };\n\n    _createClass(Collapse, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$3;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$1;\n      }\n    }]);\n\n    return Collapse;\n  }();\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n\n  $(document).on(Event$3.CLICK_DATA_API, Selector$3.DATA_TOGGLE, function (event) {\n    // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n    if (event.currentTarget.tagName === 'A') {\n      event.preventDefault();\n    }\n\n    var $trigger = $(this);\n    var selector = Util.getSelectorFromElement(this);\n    var selectors = [].slice.call(document.querySelectorAll(selector));\n    $(selectors).each(function () {\n      var $target = $(this);\n      var data = $target.data(DATA_KEY$3);\n      var config = data ? 'toggle' : $trigger.data();\n\n      Collapse._jQueryInterface.call($target, config);\n    });\n  });\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n  $.fn[NAME$3] = Collapse._jQueryInterface;\n  $.fn[NAME$3].Constructor = Collapse;\n\n  $.fn[NAME$3].noConflict = function () {\n    $.fn[NAME$3] = JQUERY_NO_CONFLICT$3;\n    return Collapse._jQueryInterface;\n  };\n\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  var NAME$4 = 'dropdown';\n  var VERSION$4 = '4.3.1';\n  var DATA_KEY$4 = 'bs.dropdown';\n  var EVENT_KEY$4 = \".\" + DATA_KEY$4;\n  var DATA_API_KEY$4 = '.data-api';\n  var JQUERY_NO_CONFLICT$4 = $.fn[NAME$4];\n  var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key\n\n  var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key\n\n  var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key\n\n  var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key\n\n  var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key\n\n  var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse)\n\n  var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + \"|\" + ARROW_DOWN_KEYCODE + \"|\" + ESCAPE_KEYCODE);\n  var Event$4 = {\n    HIDE: \"hide\" + EVENT_KEY$4,\n    HIDDEN: \"hidden\" + EVENT_KEY$4,\n    SHOW: \"show\" + EVENT_KEY$4,\n    SHOWN: \"shown\" + EVENT_KEY$4,\n    CLICK: \"click\" + EVENT_KEY$4,\n    CLICK_DATA_API: \"click\" + EVENT_KEY$4 + DATA_API_KEY$4,\n    KEYDOWN_DATA_API: \"keydown\" + EVENT_KEY$4 + DATA_API_KEY$4,\n    KEYUP_DATA_API: \"keyup\" + EVENT_KEY$4 + DATA_API_KEY$4\n  };\n  var ClassName$4 = {\n    DISABLED: 'disabled',\n    SHOW: 'show',\n    DROPUP: 'dropup',\n    DROPRIGHT: 'dropright',\n    DROPLEFT: 'dropleft',\n    MENURIGHT: 'dropdown-menu-right',\n    MENULEFT: 'dropdown-menu-left',\n    POSITION_STATIC: 'position-static'\n  };\n  var Selector$4 = {\n    DATA_TOGGLE: '[data-toggle=\"dropdown\"]',\n    FORM_CHILD: '.dropdown form',\n    MENU: '.dropdown-menu',\n    NAVBAR_NAV: '.navbar-nav',\n    VISIBLE_ITEMS: '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n  };\n  var AttachmentMap = {\n    TOP: 'top-start',\n    TOPEND: 'top-end',\n    BOTTOM: 'bottom-start',\n    BOTTOMEND: 'bottom-end',\n    RIGHT: 'right-start',\n    RIGHTEND: 'right-end',\n    LEFT: 'left-start',\n    LEFTEND: 'left-end'\n  };\n  var Default$2 = {\n    offset: 0,\n    flip: true,\n    boundary: 'scrollParent',\n    reference: 'toggle',\n    display: 'dynamic'\n  };\n  var DefaultType$2 = {\n    offset: '(number|string|function)',\n    flip: 'boolean',\n    boundary: '(string|element)',\n    reference: '(string|element)',\n    display: 'string'\n    /**\n     * ------------------------------------------------------------------------\n     * Class Definition\n     * ------------------------------------------------------------------------\n     */\n\n  };\n\n  var Dropdown =\n  /*#__PURE__*/\n  function () {\n    function Dropdown(element, config) {\n      this._element = element;\n      this._popper = null;\n      this._config = this._getConfig(config);\n      this._menu = this._getMenuElement();\n      this._inNavbar = this._detectNavbar();\n\n      this._addEventListeners();\n    } // Getters\n\n\n    var _proto = Dropdown.prototype;\n\n    // Public\n    _proto.toggle = function toggle() {\n      if (this._element.disabled || $(this._element).hasClass(ClassName$4.DISABLED)) {\n        return;\n      }\n\n      var parent = Dropdown._getParentFromElement(this._element);\n\n      var isActive = $(this._menu).hasClass(ClassName$4.SHOW);\n\n      Dropdown._clearMenus();\n\n      if (isActive) {\n        return;\n      }\n\n      var relatedTarget = {\n        relatedTarget: this._element\n      };\n      var showEvent = $.Event(Event$4.SHOW, relatedTarget);\n      $(parent).trigger(showEvent);\n\n      if (showEvent.isDefaultPrevented()) {\n        return;\n      } // Disable totally Popper.js for Dropdown in Navbar\n\n\n      if (!this._inNavbar) {\n        /**\n         * Check for Popper dependency\n         * Popper - https://popper.js.org\n         */\n        if (typeof Popper === 'undefined') {\n          throw new TypeError('Bootstrap\\'s dropdowns require Popper.js (https://popper.js.org/)');\n        }\n\n        var referenceElement = this._element;\n\n        if (this._config.reference === 'parent') {\n          referenceElement = parent;\n        } else if (Util.isElement(this._config.reference)) {\n          referenceElement = this._config.reference; // Check if it's jQuery element\n\n          if (typeof this._config.reference.jquery !== 'undefined') {\n            referenceElement = this._config.reference[0];\n          }\n        } // If boundary is not `scrollParent`, then set position to `static`\n        // to allow the menu to \"escape\" the scroll parent's boundaries\n        // https://github.com/twbs/bootstrap/issues/24251\n\n\n        if (this._config.boundary !== 'scrollParent') {\n          $(parent).addClass(ClassName$4.POSITION_STATIC);\n        }\n\n        this._popper = new Popper(referenceElement, this._menu, this._getPopperConfig());\n      } // If this is a touch-enabled device we add extra\n      // empty mouseover listeners to the body's immediate children;\n      // only needed because of broken event delegation on iOS\n      // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n\n      if ('ontouchstart' in document.documentElement && $(parent).closest(Selector$4.NAVBAR_NAV).length === 0) {\n        $(document.body).children().on('mouseover', null, $.noop);\n      }\n\n      this._element.focus();\n\n      this._element.setAttribute('aria-expanded', true);\n\n      $(this._menu).toggleClass(ClassName$4.SHOW);\n      $(parent).toggleClass(ClassName$4.SHOW).trigger($.Event(Event$4.SHOWN, relatedTarget));\n    };\n\n    _proto.show = function show() {\n      if (this._element.disabled || $(this._element).hasClass(ClassName$4.DISABLED) || $(this._menu).hasClass(ClassName$4.SHOW)) {\n        return;\n      }\n\n      var relatedTarget = {\n        relatedTarget: this._element\n      };\n      var showEvent = $.Event(Event$4.SHOW, relatedTarget);\n\n      var parent = Dropdown._getParentFromElement(this._element);\n\n      $(parent).trigger(showEvent);\n\n      if (showEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      $(this._menu).toggleClass(ClassName$4.SHOW);\n      $(parent).toggleClass(ClassName$4.SHOW).trigger($.Event(Event$4.SHOWN, relatedTarget));\n    };\n\n    _proto.hide = function hide() {\n      if (this._element.disabled || $(this._element).hasClass(ClassName$4.DISABLED) || !$(this._menu).hasClass(ClassName$4.SHOW)) {\n        return;\n      }\n\n      var relatedTarget = {\n        relatedTarget: this._element\n      };\n      var hideEvent = $.Event(Event$4.HIDE, relatedTarget);\n\n      var parent = Dropdown._getParentFromElement(this._element);\n\n      $(parent).trigger(hideEvent);\n\n      if (hideEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      $(this._menu).toggleClass(ClassName$4.SHOW);\n      $(parent).toggleClass(ClassName$4.SHOW).trigger($.Event(Event$4.HIDDEN, relatedTarget));\n    };\n\n    _proto.dispose = function dispose() {\n      $.removeData(this._element, DATA_KEY$4);\n      $(this._element).off(EVENT_KEY$4);\n      this._element = null;\n      this._menu = null;\n\n      if (this._popper !== null) {\n        this._popper.destroy();\n\n        this._popper = null;\n      }\n    };\n\n    _proto.update = function update() {\n      this._inNavbar = this._detectNavbar();\n\n      if (this._popper !== null) {\n        this._popper.scheduleUpdate();\n      }\n    } // Private\n    ;\n\n    _proto._addEventListeners = function _addEventListeners() {\n      var _this = this;\n\n      $(this._element).on(Event$4.CLICK, function (event) {\n        event.preventDefault();\n        event.stopPropagation();\n\n        _this.toggle();\n      });\n    };\n\n    _proto._getConfig = function _getConfig(config) {\n      config = _objectSpread({}, this.constructor.Default, $(this._element).data(), config);\n      Util.typeCheckConfig(NAME$4, config, this.constructor.DefaultType);\n      return config;\n    };\n\n    _proto._getMenuElement = function _getMenuElement() {\n      if (!this._menu) {\n        var parent = Dropdown._getParentFromElement(this._element);\n\n        if (parent) {\n          this._menu = parent.querySelector(Selector$4.MENU);\n        }\n      }\n\n      return this._menu;\n    };\n\n    _proto._getPlacement = function _getPlacement() {\n      var $parentDropdown = $(this._element.parentNode);\n      var placement = AttachmentMap.BOTTOM; // Handle dropup\n\n      if ($parentDropdown.hasClass(ClassName$4.DROPUP)) {\n        placement = AttachmentMap.TOP;\n\n        if ($(this._menu).hasClass(ClassName$4.MENURIGHT)) {\n          placement = AttachmentMap.TOPEND;\n        }\n      } else if ($parentDropdown.hasClass(ClassName$4.DROPRIGHT)) {\n        placement = AttachmentMap.RIGHT;\n      } else if ($parentDropdown.hasClass(ClassName$4.DROPLEFT)) {\n        placement = AttachmentMap.LEFT;\n      } else if ($(this._menu).hasClass(ClassName$4.MENURIGHT)) {\n        placement = AttachmentMap.BOTTOMEND;\n      }\n\n      return placement;\n    };\n\n    _proto._detectNavbar = function _detectNavbar() {\n      return $(this._element).closest('.navbar').length > 0;\n    };\n\n    _proto._getOffset = function _getOffset() {\n      var _this2 = this;\n\n      var offset = {};\n\n      if (typeof this._config.offset === 'function') {\n        offset.fn = function (data) {\n          data.offsets = _objectSpread({}, data.offsets, _this2._config.offset(data.offsets, _this2._element) || {});\n          return data;\n        };\n      } else {\n        offset.offset = this._config.offset;\n      }\n\n      return offset;\n    };\n\n    _proto._getPopperConfig = function _getPopperConfig() {\n      var popperConfig = {\n        placement: this._getPlacement(),\n        modifiers: {\n          offset: this._getOffset(),\n          flip: {\n            enabled: this._config.flip\n          },\n          preventOverflow: {\n            boundariesElement: this._config.boundary\n          }\n        } // Disable Popper.js if we have a static display\n\n      };\n\n      if (this._config.display === 'static') {\n        popperConfig.modifiers.applyStyle = {\n          enabled: false\n        };\n      }\n\n      return popperConfig;\n    } // Static\n    ;\n\n    Dropdown._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var data = $(this).data(DATA_KEY$4);\n\n        var _config = typeof config === 'object' ? config : null;\n\n        if (!data) {\n          data = new Dropdown(this, _config);\n          $(this).data(DATA_KEY$4, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config]();\n        }\n      });\n    };\n\n    Dropdown._clearMenus = function _clearMenus(event) {\n      if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) {\n        return;\n      }\n\n      var toggles = [].slice.call(document.querySelectorAll(Selector$4.DATA_TOGGLE));\n\n      for (var i = 0, len = toggles.length; i < len; i++) {\n        var parent = Dropdown._getParentFromElement(toggles[i]);\n\n        var context = $(toggles[i]).data(DATA_KEY$4);\n        var relatedTarget = {\n          relatedTarget: toggles[i]\n        };\n\n        if (event && event.type === 'click') {\n          relatedTarget.clickEvent = event;\n        }\n\n        if (!context) {\n          continue;\n        }\n\n        var dropdownMenu = context._menu;\n\n        if (!$(parent).hasClass(ClassName$4.SHOW)) {\n          continue;\n        }\n\n        if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $.contains(parent, event.target)) {\n          continue;\n        }\n\n        var hideEvent = $.Event(Event$4.HIDE, relatedTarget);\n        $(parent).trigger(hideEvent);\n\n        if (hideEvent.isDefaultPrevented()) {\n          continue;\n        } // If this is a touch-enabled device we remove the extra\n        // empty mouseover listeners we added for iOS support\n\n\n        if ('ontouchstart' in document.documentElement) {\n          $(document.body).children().off('mouseover', null, $.noop);\n        }\n\n        toggles[i].setAttribute('aria-expanded', 'false');\n        $(dropdownMenu).removeClass(ClassName$4.SHOW);\n        $(parent).removeClass(ClassName$4.SHOW).trigger($.Event(Event$4.HIDDEN, relatedTarget));\n      }\n    };\n\n    Dropdown._getParentFromElement = function _getParentFromElement(element) {\n      var parent;\n      var selector = Util.getSelectorFromElement(element);\n\n      if (selector) {\n        parent = document.querySelector(selector);\n      }\n\n      return parent || element.parentNode;\n    } // eslint-disable-next-line complexity\n    ;\n\n    Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {\n      // If not input/textarea:\n      //  - And not a key in REGEXP_KEYDOWN => not a dropdown command\n      // If input/textarea:\n      //  - If space key => not a dropdown command\n      //  - If key is other than escape\n      //    - If key is not up or down => not a dropdown command\n      //    - If trigger inside the menu => not a dropdown command\n      if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $(event.target).closest(Selector$4.MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {\n        return;\n      }\n\n      event.preventDefault();\n      event.stopPropagation();\n\n      if (this.disabled || $(this).hasClass(ClassName$4.DISABLED)) {\n        return;\n      }\n\n      var parent = Dropdown._getParentFromElement(this);\n\n      var isActive = $(parent).hasClass(ClassName$4.SHOW);\n\n      if (!isActive || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {\n        if (event.which === ESCAPE_KEYCODE) {\n          var toggle = parent.querySelector(Selector$4.DATA_TOGGLE);\n          $(toggle).trigger('focus');\n        }\n\n        $(this).trigger('click');\n        return;\n      }\n\n      var items = [].slice.call(parent.querySelectorAll(Selector$4.VISIBLE_ITEMS));\n\n      if (items.length === 0) {\n        return;\n      }\n\n      var index = items.indexOf(event.target);\n\n      if (event.which === ARROW_UP_KEYCODE && index > 0) {\n        // Up\n        index--;\n      }\n\n      if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) {\n        // Down\n        index++;\n      }\n\n      if (index < 0) {\n        index = 0;\n      }\n\n      items[index].focus();\n    };\n\n    _createClass(Dropdown, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$4;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$2;\n      }\n    }, {\n      key: \"DefaultType\",\n      get: function get() {\n        return DefaultType$2;\n      }\n    }]);\n\n    return Dropdown;\n  }();\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n\n  $(document).on(Event$4.KEYDOWN_DATA_API, Selector$4.DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(Event$4.KEYDOWN_DATA_API, Selector$4.MENU, Dropdown._dataApiKeydownHandler).on(Event$4.CLICK_DATA_API + \" \" + Event$4.KEYUP_DATA_API, Dropdown._clearMenus).on(Event$4.CLICK_DATA_API, Selector$4.DATA_TOGGLE, function (event) {\n    event.preventDefault();\n    event.stopPropagation();\n\n    Dropdown._jQueryInterface.call($(this), 'toggle');\n  }).on(Event$4.CLICK_DATA_API, Selector$4.FORM_CHILD, function (e) {\n    e.stopPropagation();\n  });\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n  $.fn[NAME$4] = Dropdown._jQueryInterface;\n  $.fn[NAME$4].Constructor = Dropdown;\n\n  $.fn[NAME$4].noConflict = function () {\n    $.fn[NAME$4] = JQUERY_NO_CONFLICT$4;\n    return Dropdown._jQueryInterface;\n  };\n\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  var NAME$5 = 'modal';\n  var VERSION$5 = '4.3.1';\n  var DATA_KEY$5 = 'bs.modal';\n  var EVENT_KEY$5 = \".\" + DATA_KEY$5;\n  var DATA_API_KEY$5 = '.data-api';\n  var JQUERY_NO_CONFLICT$5 = $.fn[NAME$5];\n  var ESCAPE_KEYCODE$1 = 27; // KeyboardEvent.which value for Escape (Esc) key\n\n  var Default$3 = {\n    backdrop: true,\n    keyboard: true,\n    focus: true,\n    show: true\n  };\n  var DefaultType$3 = {\n    backdrop: '(boolean|string)',\n    keyboard: 'boolean',\n    focus: 'boolean',\n    show: 'boolean'\n  };\n  var Event$5 = {\n    HIDE: \"hide\" + EVENT_KEY$5,\n    HIDDEN: \"hidden\" + EVENT_KEY$5,\n    SHOW: \"show\" + EVENT_KEY$5,\n    SHOWN: \"shown\" + EVENT_KEY$5,\n    FOCUSIN: \"focusin\" + EVENT_KEY$5,\n    RESIZE: \"resize\" + EVENT_KEY$5,\n    CLICK_DISMISS: \"click.dismiss\" + EVENT_KEY$5,\n    KEYDOWN_DISMISS: \"keydown.dismiss\" + EVENT_KEY$5,\n    MOUSEUP_DISMISS: \"mouseup.dismiss\" + EVENT_KEY$5,\n    MOUSEDOWN_DISMISS: \"mousedown.dismiss\" + EVENT_KEY$5,\n    CLICK_DATA_API: \"click\" + EVENT_KEY$5 + DATA_API_KEY$5\n  };\n  var ClassName$5 = {\n    SCROLLABLE: 'modal-dialog-scrollable',\n    SCROLLBAR_MEASURER: 'modal-scrollbar-measure',\n    BACKDROP: 'modal-backdrop',\n    OPEN: 'modal-open',\n    FADE: 'fade',\n    SHOW: 'show'\n  };\n  var Selector$5 = {\n    DIALOG: '.modal-dialog',\n    MODAL_BODY: '.modal-body',\n    DATA_TOGGLE: '[data-toggle=\"modal\"]',\n    DATA_DISMISS: '[data-dismiss=\"modal\"]',\n    FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',\n    STICKY_CONTENT: '.sticky-top'\n    /**\n     * ------------------------------------------------------------------------\n     * Class Definition\n     * ------------------------------------------------------------------------\n     */\n\n  };\n\n  var Modal =\n  /*#__PURE__*/\n  function () {\n    function Modal(element, config) {\n      this._config = this._getConfig(config);\n      this._element = element;\n      this._dialog = element.querySelector(Selector$5.DIALOG);\n      this._backdrop = null;\n      this._isShown = false;\n      this._isBodyOverflowing = false;\n      this._ignoreBackdropClick = false;\n      this._isTransitioning = false;\n      this._scrollbarWidth = 0;\n    } // Getters\n\n\n    var _proto = Modal.prototype;\n\n    // Public\n    _proto.toggle = function toggle(relatedTarget) {\n      return this._isShown ? this.hide() : this.show(relatedTarget);\n    };\n\n    _proto.show = function show(relatedTarget) {\n      var _this = this;\n\n      if (this._isShown || this._isTransitioning) {\n        return;\n      }\n\n      if ($(this._element).hasClass(ClassName$5.FADE)) {\n        this._isTransitioning = true;\n      }\n\n      var showEvent = $.Event(Event$5.SHOW, {\n        relatedTarget: relatedTarget\n      });\n      $(this._element).trigger(showEvent);\n\n      if (this._isShown || showEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      this._isShown = true;\n\n      this._checkScrollbar();\n\n      this._setScrollbar();\n\n      this._adjustDialog();\n\n      this._setEscapeEvent();\n\n      this._setResizeEvent();\n\n      $(this._element).on(Event$5.CLICK_DISMISS, Selector$5.DATA_DISMISS, function (event) {\n        return _this.hide(event);\n      });\n      $(this._dialog).on(Event$5.MOUSEDOWN_DISMISS, function () {\n        $(_this._element).one(Event$5.MOUSEUP_DISMISS, function (event) {\n          if ($(event.target).is(_this._element)) {\n            _this._ignoreBackdropClick = true;\n          }\n        });\n      });\n\n      this._showBackdrop(function () {\n        return _this._showElement(relatedTarget);\n      });\n    };\n\n    _proto.hide = function hide(event) {\n      var _this2 = this;\n\n      if (event) {\n        event.preventDefault();\n      }\n\n      if (!this._isShown || this._isTransitioning) {\n        return;\n      }\n\n      var hideEvent = $.Event(Event$5.HIDE);\n      $(this._element).trigger(hideEvent);\n\n      if (!this._isShown || hideEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      this._isShown = false;\n      var transition = $(this._element).hasClass(ClassName$5.FADE);\n\n      if (transition) {\n        this._isTransitioning = true;\n      }\n\n      this._setEscapeEvent();\n\n      this._setResizeEvent();\n\n      $(document).off(Event$5.FOCUSIN);\n      $(this._element).removeClass(ClassName$5.SHOW);\n      $(this._element).off(Event$5.CLICK_DISMISS);\n      $(this._dialog).off(Event$5.MOUSEDOWN_DISMISS);\n\n      if (transition) {\n        var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n        $(this._element).one(Util.TRANSITION_END, function (event) {\n          return _this2._hideModal(event);\n        }).emulateTransitionEnd(transitionDuration);\n      } else {\n        this._hideModal();\n      }\n    };\n\n    _proto.dispose = function dispose() {\n      [window, this._element, this._dialog].forEach(function (htmlElement) {\n        return $(htmlElement).off(EVENT_KEY$5);\n      });\n      /**\n       * `document` has 2 events `Event.FOCUSIN` and `Event.CLICK_DATA_API`\n       * Do not move `document` in `htmlElements` array\n       * It will remove `Event.CLICK_DATA_API` event that should remain\n       */\n\n      $(document).off(Event$5.FOCUSIN);\n      $.removeData(this._element, DATA_KEY$5);\n      this._config = null;\n      this._element = null;\n      this._dialog = null;\n      this._backdrop = null;\n      this._isShown = null;\n      this._isBodyOverflowing = null;\n      this._ignoreBackdropClick = null;\n      this._isTransitioning = null;\n      this._scrollbarWidth = null;\n    };\n\n    _proto.handleUpdate = function handleUpdate() {\n      this._adjustDialog();\n    } // Private\n    ;\n\n    _proto._getConfig = function _getConfig(config) {\n      config = _objectSpread({}, Default$3, config);\n      Util.typeCheckConfig(NAME$5, config, DefaultType$3);\n      return config;\n    };\n\n    _proto._showElement = function _showElement(relatedTarget) {\n      var _this3 = this;\n\n      var transition = $(this._element).hasClass(ClassName$5.FADE);\n\n      if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n        // Don't move modal's DOM position\n        document.body.appendChild(this._element);\n      }\n\n      this._element.style.display = 'block';\n\n      this._element.removeAttribute('aria-hidden');\n\n      this._element.setAttribute('aria-modal', true);\n\n      if ($(this._dialog).hasClass(ClassName$5.SCROLLABLE)) {\n        this._dialog.querySelector(Selector$5.MODAL_BODY).scrollTop = 0;\n      } else {\n        this._element.scrollTop = 0;\n      }\n\n      if (transition) {\n        Util.reflow(this._element);\n      }\n\n      $(this._element).addClass(ClassName$5.SHOW);\n\n      if (this._config.focus) {\n        this._enforceFocus();\n      }\n\n      var shownEvent = $.Event(Event$5.SHOWN, {\n        relatedTarget: relatedTarget\n      });\n\n      var transitionComplete = function transitionComplete() {\n        if (_this3._config.focus) {\n          _this3._element.focus();\n        }\n\n        _this3._isTransitioning = false;\n        $(_this3._element).trigger(shownEvent);\n      };\n\n      if (transition) {\n        var transitionDuration = Util.getTransitionDurationFromElement(this._dialog);\n        $(this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration);\n      } else {\n        transitionComplete();\n      }\n    };\n\n    _proto._enforceFocus = function _enforceFocus() {\n      var _this4 = this;\n\n      $(document).off(Event$5.FOCUSIN) // Guard against infinite focus loop\n      .on(Event$5.FOCUSIN, function (event) {\n        if (document !== event.target && _this4._element !== event.target && $(_this4._element).has(event.target).length === 0) {\n          _this4._element.focus();\n        }\n      });\n    };\n\n    _proto._setEscapeEvent = function _setEscapeEvent() {\n      var _this5 = this;\n\n      if (this._isShown && this._config.keyboard) {\n        $(this._element).on(Event$5.KEYDOWN_DISMISS, function (event) {\n          if (event.which === ESCAPE_KEYCODE$1) {\n            event.preventDefault();\n\n            _this5.hide();\n          }\n        });\n      } else if (!this._isShown) {\n        $(this._element).off(Event$5.KEYDOWN_DISMISS);\n      }\n    };\n\n    _proto._setResizeEvent = function _setResizeEvent() {\n      var _this6 = this;\n\n      if (this._isShown) {\n        $(window).on(Event$5.RESIZE, function (event) {\n          return _this6.handleUpdate(event);\n        });\n      } else {\n        $(window).off(Event$5.RESIZE);\n      }\n    };\n\n    _proto._hideModal = function _hideModal() {\n      var _this7 = this;\n\n      this._element.style.display = 'none';\n\n      this._element.setAttribute('aria-hidden', true);\n\n      this._element.removeAttribute('aria-modal');\n\n      this._isTransitioning = false;\n\n      this._showBackdrop(function () {\n        $(document.body).removeClass(ClassName$5.OPEN);\n\n        _this7._resetAdjustments();\n\n        _this7._resetScrollbar();\n\n        $(_this7._element).trigger(Event$5.HIDDEN);\n      });\n    };\n\n    _proto._removeBackdrop = function _removeBackdrop() {\n      if (this._backdrop) {\n        $(this._backdrop).remove();\n        this._backdrop = null;\n      }\n    };\n\n    _proto._showBackdrop = function _showBackdrop(callback) {\n      var _this8 = this;\n\n      var animate = $(this._element).hasClass(ClassName$5.FADE) ? ClassName$5.FADE : '';\n\n      if (this._isShown && this._config.backdrop) {\n        this._backdrop = document.createElement('div');\n        this._backdrop.className = ClassName$5.BACKDROP;\n\n        if (animate) {\n          this._backdrop.classList.add(animate);\n        }\n\n        $(this._backdrop).appendTo(document.body);\n        $(this._element).on(Event$5.CLICK_DISMISS, function (event) {\n          if (_this8._ignoreBackdropClick) {\n            _this8._ignoreBackdropClick = false;\n            return;\n          }\n\n          if (event.target !== event.currentTarget) {\n            return;\n          }\n\n          if (_this8._config.backdrop === 'static') {\n            _this8._element.focus();\n          } else {\n            _this8.hide();\n          }\n        });\n\n        if (animate) {\n          Util.reflow(this._backdrop);\n        }\n\n        $(this._backdrop).addClass(ClassName$5.SHOW);\n\n        if (!callback) {\n          return;\n        }\n\n        if (!animate) {\n          callback();\n          return;\n        }\n\n        var backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);\n        $(this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration);\n      } else if (!this._isShown && this._backdrop) {\n        $(this._backdrop).removeClass(ClassName$5.SHOW);\n\n        var callbackRemove = function callbackRemove() {\n          _this8._removeBackdrop();\n\n          if (callback) {\n            callback();\n          }\n        };\n\n        if ($(this._element).hasClass(ClassName$5.FADE)) {\n          var _backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);\n\n          $(this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(_backdropTransitionDuration);\n        } else {\n          callbackRemove();\n        }\n      } else if (callback) {\n        callback();\n      }\n    } // ----------------------------------------------------------------------\n    // the following methods are used to handle overflowing modals\n    // todo (fat): these should probably be refactored out of modal.js\n    // ----------------------------------------------------------------------\n    ;\n\n    _proto._adjustDialog = function _adjustDialog() {\n      var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n\n      if (!this._isBodyOverflowing && isModalOverflowing) {\n        this._element.style.paddingLeft = this._scrollbarWidth + \"px\";\n      }\n\n      if (this._isBodyOverflowing && !isModalOverflowing) {\n        this._element.style.paddingRight = this._scrollbarWidth + \"px\";\n      }\n    };\n\n    _proto._resetAdjustments = function _resetAdjustments() {\n      this._element.style.paddingLeft = '';\n      this._element.style.paddingRight = '';\n    };\n\n    _proto._checkScrollbar = function _checkScrollbar() {\n      var rect = document.body.getBoundingClientRect();\n      this._isBodyOverflowing = rect.left + rect.right < window.innerWidth;\n      this._scrollbarWidth = this._getScrollbarWidth();\n    };\n\n    _proto._setScrollbar = function _setScrollbar() {\n      var _this9 = this;\n\n      if (this._isBodyOverflowing) {\n        // Note: DOMNode.style.paddingRight returns the actual value or '' if not set\n        //   while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\n        var fixedContent = [].slice.call(document.querySelectorAll(Selector$5.FIXED_CONTENT));\n        var stickyContent = [].slice.call(document.querySelectorAll(Selector$5.STICKY_CONTENT)); // Adjust fixed content padding\n\n        $(fixedContent).each(function (index, element) {\n          var actualPadding = element.style.paddingRight;\n          var calculatedPadding = $(element).css('padding-right');\n          $(element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this9._scrollbarWidth + \"px\");\n        }); // Adjust sticky content margin\n\n        $(stickyContent).each(function (index, element) {\n          var actualMargin = element.style.marginRight;\n          var calculatedMargin = $(element).css('margin-right');\n          $(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this9._scrollbarWidth + \"px\");\n        }); // Adjust body padding\n\n        var actualPadding = document.body.style.paddingRight;\n        var calculatedPadding = $(document.body).css('padding-right');\n        $(document.body).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + \"px\");\n      }\n\n      $(document.body).addClass(ClassName$5.OPEN);\n    };\n\n    _proto._resetScrollbar = function _resetScrollbar() {\n      // Restore fixed content padding\n      var fixedContent = [].slice.call(document.querySelectorAll(Selector$5.FIXED_CONTENT));\n      $(fixedContent).each(function (index, element) {\n        var padding = $(element).data('padding-right');\n        $(element).removeData('padding-right');\n        element.style.paddingRight = padding ? padding : '';\n      }); // Restore sticky content\n\n      var elements = [].slice.call(document.querySelectorAll(\"\" + Selector$5.STICKY_CONTENT));\n      $(elements).each(function (index, element) {\n        var margin = $(element).data('margin-right');\n\n        if (typeof margin !== 'undefined') {\n          $(element).css('margin-right', margin).removeData('margin-right');\n        }\n      }); // Restore body padding\n\n      var padding = $(document.body).data('padding-right');\n      $(document.body).removeData('padding-right');\n      document.body.style.paddingRight = padding ? padding : '';\n    };\n\n    _proto._getScrollbarWidth = function _getScrollbarWidth() {\n      // thx d.walsh\n      var scrollDiv = document.createElement('div');\n      scrollDiv.className = ClassName$5.SCROLLBAR_MEASURER;\n      document.body.appendChild(scrollDiv);\n      var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;\n      document.body.removeChild(scrollDiv);\n      return scrollbarWidth;\n    } // Static\n    ;\n\n    Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) {\n      return this.each(function () {\n        var data = $(this).data(DATA_KEY$5);\n\n        var _config = _objectSpread({}, Default$3, $(this).data(), typeof config === 'object' && config ? config : {});\n\n        if (!data) {\n          data = new Modal(this, _config);\n          $(this).data(DATA_KEY$5, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config](relatedTarget);\n        } else if (_config.show) {\n          data.show(relatedTarget);\n        }\n      });\n    };\n\n    _createClass(Modal, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$5;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$3;\n      }\n    }]);\n\n    return Modal;\n  }();\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n\n  $(document).on(Event$5.CLICK_DATA_API, Selector$5.DATA_TOGGLE, function (event) {\n    var _this10 = this;\n\n    var target;\n    var selector = Util.getSelectorFromElement(this);\n\n    if (selector) {\n      target = document.querySelector(selector);\n    }\n\n    var config = $(target).data(DATA_KEY$5) ? 'toggle' : _objectSpread({}, $(target).data(), $(this).data());\n\n    if (this.tagName === 'A' || this.tagName === 'AREA') {\n      event.preventDefault();\n    }\n\n    var $target = $(target).one(Event$5.SHOW, function (showEvent) {\n      if (showEvent.isDefaultPrevented()) {\n        // Only register focus restorer if modal will actually get shown\n        return;\n      }\n\n      $target.one(Event$5.HIDDEN, function () {\n        if ($(_this10).is(':visible')) {\n          _this10.focus();\n        }\n      });\n    });\n\n    Modal._jQueryInterface.call($(target), config, this);\n  });\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n  $.fn[NAME$5] = Modal._jQueryInterface;\n  $.fn[NAME$5].Constructor = Modal;\n\n  $.fn[NAME$5].noConflict = function () {\n    $.fn[NAME$5] = JQUERY_NO_CONFLICT$5;\n    return Modal._jQueryInterface;\n  };\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v4.3.1): tools/sanitizer.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n  var uriAttrs = ['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href'];\n  var ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i;\n  var DefaultWhitelist = {\n    // Global attributes allowed on any supplied element below.\n    '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n    a: ['target', 'href', 'title', 'rel'],\n    area: [],\n    b: [],\n    br: [],\n    col: [],\n    code: [],\n    div: [],\n    em: [],\n    hr: [],\n    h1: [],\n    h2: [],\n    h3: [],\n    h4: [],\n    h5: [],\n    h6: [],\n    i: [],\n    img: ['src', 'alt', 'title', 'width', 'height'],\n    li: [],\n    ol: [],\n    p: [],\n    pre: [],\n    s: [],\n    small: [],\n    span: [],\n    sub: [],\n    sup: [],\n    strong: [],\n    u: [],\n    ul: []\n    /**\n     * A pattern that recognizes a commonly useful subset of URLs that are safe.\n     *\n     * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n     */\n\n  };\n  var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi;\n  /**\n   * A pattern that matches safe data URLs. Only matches image, video and audio types.\n   *\n   * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n   */\n\n  var DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i;\n\n  function allowedAttribute(attr, allowedAttributeList) {\n    var attrName = attr.nodeName.toLowerCase();\n\n    if (allowedAttributeList.indexOf(attrName) !== -1) {\n      if (uriAttrs.indexOf(attrName) !== -1) {\n        return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN));\n      }\n\n      return true;\n    }\n\n    var regExp = allowedAttributeList.filter(function (attrRegex) {\n      return attrRegex instanceof RegExp;\n    }); // Check if a regular expression validates the attribute.\n\n    for (var i = 0, l = regExp.length; i < l; i++) {\n      if (attrName.match(regExp[i])) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n    if (unsafeHtml.length === 0) {\n      return unsafeHtml;\n    }\n\n    if (sanitizeFn && typeof sanitizeFn === 'function') {\n      return sanitizeFn(unsafeHtml);\n    }\n\n    var domParser = new window.DOMParser();\n    var createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');\n    var whitelistKeys = Object.keys(whiteList);\n    var elements = [].slice.call(createdDocument.body.querySelectorAll('*'));\n\n    var _loop = function _loop(i, len) {\n      var el = elements[i];\n      var elName = el.nodeName.toLowerCase();\n\n      if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) {\n        el.parentNode.removeChild(el);\n        return \"continue\";\n      }\n\n      var attributeList = [].slice.call(el.attributes);\n      var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || []);\n      attributeList.forEach(function (attr) {\n        if (!allowedAttribute(attr, whitelistedAttributes)) {\n          el.removeAttribute(attr.nodeName);\n        }\n      });\n    };\n\n    for (var i = 0, len = elements.length; i < len; i++) {\n      var _ret = _loop(i, len);\n\n      if (_ret === \"continue\") continue;\n    }\n\n    return createdDocument.body.innerHTML;\n  }\n\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  var NAME$6 = 'tooltip';\n  var VERSION$6 = '4.3.1';\n  var DATA_KEY$6 = 'bs.tooltip';\n  var EVENT_KEY$6 = \".\" + DATA_KEY$6;\n  var JQUERY_NO_CONFLICT$6 = $.fn[NAME$6];\n  var CLASS_PREFIX = 'bs-tooltip';\n  var BSCLS_PREFIX_REGEX = new RegExp(\"(^|\\\\s)\" + CLASS_PREFIX + \"\\\\S+\", 'g');\n  var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn'];\n  var DefaultType$4 = {\n    animation: 'boolean',\n    template: 'string',\n    title: '(string|element|function)',\n    trigger: 'string',\n    delay: '(number|object)',\n    html: 'boolean',\n    selector: '(string|boolean)',\n    placement: '(string|function)',\n    offset: '(number|string|function)',\n    container: '(string|element|boolean)',\n    fallbackPlacement: '(string|array)',\n    boundary: '(string|element)',\n    sanitize: 'boolean',\n    sanitizeFn: '(null|function)',\n    whiteList: 'object'\n  };\n  var AttachmentMap$1 = {\n    AUTO: 'auto',\n    TOP: 'top',\n    RIGHT: 'right',\n    BOTTOM: 'bottom',\n    LEFT: 'left'\n  };\n  var Default$4 = {\n    animation: true,\n    template: '<div class=\"tooltip\" role=\"tooltip\">' + '<div class=\"arrow\"></div>' + '<div class=\"tooltip-inner\"></div></div>',\n    trigger: 'hover focus',\n    title: '',\n    delay: 0,\n    html: false,\n    selector: false,\n    placement: 'top',\n    offset: 0,\n    container: false,\n    fallbackPlacement: 'flip',\n    boundary: 'scrollParent',\n    sanitize: true,\n    sanitizeFn: null,\n    whiteList: DefaultWhitelist\n  };\n  var HoverState = {\n    SHOW: 'show',\n    OUT: 'out'\n  };\n  var Event$6 = {\n    HIDE: \"hide\" + EVENT_KEY$6,\n    HIDDEN: \"hidden\" + EVENT_KEY$6,\n    SHOW: \"show\" + EVENT_KEY$6,\n    SHOWN: \"shown\" + EVENT_KEY$6,\n    INSERTED: \"inserted\" + EVENT_KEY$6,\n    CLICK: \"click\" + EVENT_KEY$6,\n    FOCUSIN: \"focusin\" + EVENT_KEY$6,\n    FOCUSOUT: \"focusout\" + EVENT_KEY$6,\n    MOUSEENTER: \"mouseenter\" + EVENT_KEY$6,\n    MOUSELEAVE: \"mouseleave\" + EVENT_KEY$6\n  };\n  var ClassName$6 = {\n    FADE: 'fade',\n    SHOW: 'show'\n  };\n  var Selector$6 = {\n    TOOLTIP: '.tooltip',\n    TOOLTIP_INNER: '.tooltip-inner',\n    ARROW: '.arrow'\n  };\n  var Trigger = {\n    HOVER: 'hover',\n    FOCUS: 'focus',\n    CLICK: 'click',\n    MANUAL: 'manual'\n    /**\n     * ------------------------------------------------------------------------\n     * Class Definition\n     * ------------------------------------------------------------------------\n     */\n\n  };\n\n  var Tooltip =\n  /*#__PURE__*/\n  function () {\n    function Tooltip(element, config) {\n      /**\n       * Check for Popper dependency\n       * Popper - https://popper.js.org\n       */\n      if (typeof Popper === 'undefined') {\n        throw new TypeError('Bootstrap\\'s tooltips require Popper.js (https://popper.js.org/)');\n      } // private\n\n\n      this._isEnabled = true;\n      this._timeout = 0;\n      this._hoverState = '';\n      this._activeTrigger = {};\n      this._popper = null; // Protected\n\n      this.element = element;\n      this.config = this._getConfig(config);\n      this.tip = null;\n\n      this._setListeners();\n    } // Getters\n\n\n    var _proto = Tooltip.prototype;\n\n    // Public\n    _proto.enable = function enable() {\n      this._isEnabled = true;\n    };\n\n    _proto.disable = function disable() {\n      this._isEnabled = false;\n    };\n\n    _proto.toggleEnabled = function toggleEnabled() {\n      this._isEnabled = !this._isEnabled;\n    };\n\n    _proto.toggle = function toggle(event) {\n      if (!this._isEnabled) {\n        return;\n      }\n\n      if (event) {\n        var dataKey = this.constructor.DATA_KEY;\n        var context = $(event.currentTarget).data(dataKey);\n\n        if (!context) {\n          context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n          $(event.currentTarget).data(dataKey, context);\n        }\n\n        context._activeTrigger.click = !context._activeTrigger.click;\n\n        if (context._isWithActiveTrigger()) {\n          context._enter(null, context);\n        } else {\n          context._leave(null, context);\n        }\n      } else {\n        if ($(this.getTipElement()).hasClass(ClassName$6.SHOW)) {\n          this._leave(null, this);\n\n          return;\n        }\n\n        this._enter(null, this);\n      }\n    };\n\n    _proto.dispose = function dispose() {\n      clearTimeout(this._timeout);\n      $.removeData(this.element, this.constructor.DATA_KEY);\n      $(this.element).off(this.constructor.EVENT_KEY);\n      $(this.element).closest('.modal').off('hide.bs.modal');\n\n      if (this.tip) {\n        $(this.tip).remove();\n      }\n\n      this._isEnabled = null;\n      this._timeout = null;\n      this._hoverState = null;\n      this._activeTrigger = null;\n\n      if (this._popper !== null) {\n        this._popper.destroy();\n      }\n\n      this._popper = null;\n      this.element = null;\n      this.config = null;\n      this.tip = null;\n    };\n\n    _proto.show = function show() {\n      var _this = this;\n\n      if ($(this.element).css('display') === 'none') {\n        throw new Error('Please use show on visible elements');\n      }\n\n      var showEvent = $.Event(this.constructor.Event.SHOW);\n\n      if (this.isWithContent() && this._isEnabled) {\n        $(this.element).trigger(showEvent);\n        var shadowRoot = Util.findShadowRoot(this.element);\n        var isInTheDom = $.contains(shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement, this.element);\n\n        if (showEvent.isDefaultPrevented() || !isInTheDom) {\n          return;\n        }\n\n        var tip = this.getTipElement();\n        var tipId = Util.getUID(this.constructor.NAME);\n        tip.setAttribute('id', tipId);\n        this.element.setAttribute('aria-describedby', tipId);\n        this.setContent();\n\n        if (this.config.animation) {\n          $(tip).addClass(ClassName$6.FADE);\n        }\n\n        var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement;\n\n        var attachment = this._getAttachment(placement);\n\n        this.addAttachmentClass(attachment);\n\n        var container = this._getContainer();\n\n        $(tip).data(this.constructor.DATA_KEY, this);\n\n        if (!$.contains(this.element.ownerDocument.documentElement, this.tip)) {\n          $(tip).appendTo(container);\n        }\n\n        $(this.element).trigger(this.constructor.Event.INSERTED);\n        this._popper = new Popper(this.element, tip, {\n          placement: attachment,\n          modifiers: {\n            offset: this._getOffset(),\n            flip: {\n              behavior: this.config.fallbackPlacement\n            },\n            arrow: {\n              element: Selector$6.ARROW\n            },\n            preventOverflow: {\n              boundariesElement: this.config.boundary\n            }\n          },\n          onCreate: function onCreate(data) {\n            if (data.originalPlacement !== data.placement) {\n              _this._handlePopperPlacementChange(data);\n            }\n          },\n          onUpdate: function onUpdate(data) {\n            return _this._handlePopperPlacementChange(data);\n          }\n        });\n        $(tip).addClass(ClassName$6.SHOW); // If this is a touch-enabled device we add extra\n        // empty mouseover listeners to the body's immediate children;\n        // only needed because of broken event delegation on iOS\n        // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n        if ('ontouchstart' in document.documentElement) {\n          $(document.body).children().on('mouseover', null, $.noop);\n        }\n\n        var complete = function complete() {\n          if (_this.config.animation) {\n            _this._fixTransition();\n          }\n\n          var prevHoverState = _this._hoverState;\n          _this._hoverState = null;\n          $(_this.element).trigger(_this.constructor.Event.SHOWN);\n\n          if (prevHoverState === HoverState.OUT) {\n            _this._leave(null, _this);\n          }\n        };\n\n        if ($(this.tip).hasClass(ClassName$6.FADE)) {\n          var transitionDuration = Util.getTransitionDurationFromElement(this.tip);\n          $(this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n        } else {\n          complete();\n        }\n      }\n    };\n\n    _proto.hide = function hide(callback) {\n      var _this2 = this;\n\n      var tip = this.getTipElement();\n      var hideEvent = $.Event(this.constructor.Event.HIDE);\n\n      var complete = function complete() {\n        if (_this2._hoverState !== HoverState.SHOW && tip.parentNode) {\n          tip.parentNode.removeChild(tip);\n        }\n\n        _this2._cleanTipClass();\n\n        _this2.element.removeAttribute('aria-describedby');\n\n        $(_this2.element).trigger(_this2.constructor.Event.HIDDEN);\n\n        if (_this2._popper !== null) {\n          _this2._popper.destroy();\n        }\n\n        if (callback) {\n          callback();\n        }\n      };\n\n      $(this.element).trigger(hideEvent);\n\n      if (hideEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      $(tip).removeClass(ClassName$6.SHOW); // If this is a touch-enabled device we remove the extra\n      // empty mouseover listeners we added for iOS support\n\n      if ('ontouchstart' in document.documentElement) {\n        $(document.body).children().off('mouseover', null, $.noop);\n      }\n\n      this._activeTrigger[Trigger.CLICK] = false;\n      this._activeTrigger[Trigger.FOCUS] = false;\n      this._activeTrigger[Trigger.HOVER] = false;\n\n      if ($(this.tip).hasClass(ClassName$6.FADE)) {\n        var transitionDuration = Util.getTransitionDurationFromElement(tip);\n        $(tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n      } else {\n        complete();\n      }\n\n      this._hoverState = '';\n    };\n\n    _proto.update = function update() {\n      if (this._popper !== null) {\n        this._popper.scheduleUpdate();\n      }\n    } // Protected\n    ;\n\n    _proto.isWithContent = function isWithContent() {\n      return Boolean(this.getTitle());\n    };\n\n    _proto.addAttachmentClass = function addAttachmentClass(attachment) {\n      $(this.getTipElement()).addClass(CLASS_PREFIX + \"-\" + attachment);\n    };\n\n    _proto.getTipElement = function getTipElement() {\n      this.tip = this.tip || $(this.config.template)[0];\n      return this.tip;\n    };\n\n    _proto.setContent = function setContent() {\n      var tip = this.getTipElement();\n      this.setElementContent($(tip.querySelectorAll(Selector$6.TOOLTIP_INNER)), this.getTitle());\n      $(tip).removeClass(ClassName$6.FADE + \" \" + ClassName$6.SHOW);\n    };\n\n    _proto.setElementContent = function setElementContent($element, content) {\n      if (typeof content === 'object' && (content.nodeType || content.jquery)) {\n        // Content is a DOM node or a jQuery\n        if (this.config.html) {\n          if (!$(content).parent().is($element)) {\n            $element.empty().append(content);\n          }\n        } else {\n          $element.text($(content).text());\n        }\n\n        return;\n      }\n\n      if (this.config.html) {\n        if (this.config.sanitize) {\n          content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn);\n        }\n\n        $element.html(content);\n      } else {\n        $element.text(content);\n      }\n    };\n\n    _proto.getTitle = function getTitle() {\n      var title = this.element.getAttribute('data-original-title');\n\n      if (!title) {\n        title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title;\n      }\n\n      return title;\n    } // Private\n    ;\n\n    _proto._getOffset = function _getOffset() {\n      var _this3 = this;\n\n      var offset = {};\n\n      if (typeof this.config.offset === 'function') {\n        offset.fn = function (data) {\n          data.offsets = _objectSpread({}, data.offsets, _this3.config.offset(data.offsets, _this3.element) || {});\n          return data;\n        };\n      } else {\n        offset.offset = this.config.offset;\n      }\n\n      return offset;\n    };\n\n    _proto._getContainer = function _getContainer() {\n      if (this.config.container === false) {\n        return document.body;\n      }\n\n      if (Util.isElement(this.config.container)) {\n        return $(this.config.container);\n      }\n\n      return $(document).find(this.config.container);\n    };\n\n    _proto._getAttachment = function _getAttachment(placement) {\n      return AttachmentMap$1[placement.toUpperCase()];\n    };\n\n    _proto._setListeners = function _setListeners() {\n      var _this4 = this;\n\n      var triggers = this.config.trigger.split(' ');\n      triggers.forEach(function (trigger) {\n        if (trigger === 'click') {\n          $(_this4.element).on(_this4.constructor.Event.CLICK, _this4.config.selector, function (event) {\n            return _this4.toggle(event);\n          });\n        } else if (trigger !== Trigger.MANUAL) {\n          var eventIn = trigger === Trigger.HOVER ? _this4.constructor.Event.MOUSEENTER : _this4.constructor.Event.FOCUSIN;\n          var eventOut = trigger === Trigger.HOVER ? _this4.constructor.Event.MOUSELEAVE : _this4.constructor.Event.FOCUSOUT;\n          $(_this4.element).on(eventIn, _this4.config.selector, function (event) {\n            return _this4._enter(event);\n          }).on(eventOut, _this4.config.selector, function (event) {\n            return _this4._leave(event);\n          });\n        }\n      });\n      $(this.element).closest('.modal').on('hide.bs.modal', function () {\n        if (_this4.element) {\n          _this4.hide();\n        }\n      });\n\n      if (this.config.selector) {\n        this.config = _objectSpread({}, this.config, {\n          trigger: 'manual',\n          selector: ''\n        });\n      } else {\n        this._fixTitle();\n      }\n    };\n\n    _proto._fixTitle = function _fixTitle() {\n      var titleType = typeof this.element.getAttribute('data-original-title');\n\n      if (this.element.getAttribute('title') || titleType !== 'string') {\n        this.element.setAttribute('data-original-title', this.element.getAttribute('title') || '');\n        this.element.setAttribute('title', '');\n      }\n    };\n\n    _proto._enter = function _enter(event, context) {\n      var dataKey = this.constructor.DATA_KEY;\n      context = context || $(event.currentTarget).data(dataKey);\n\n      if (!context) {\n        context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n        $(event.currentTarget).data(dataKey, context);\n      }\n\n      if (event) {\n        context._activeTrigger[event.type === 'focusin' ? Trigger.FOCUS : Trigger.HOVER] = true;\n      }\n\n      if ($(context.getTipElement()).hasClass(ClassName$6.SHOW) || context._hoverState === HoverState.SHOW) {\n        context._hoverState = HoverState.SHOW;\n        return;\n      }\n\n      clearTimeout(context._timeout);\n      context._hoverState = HoverState.SHOW;\n\n      if (!context.config.delay || !context.config.delay.show) {\n        context.show();\n        return;\n      }\n\n      context._timeout = setTimeout(function () {\n        if (context._hoverState === HoverState.SHOW) {\n          context.show();\n        }\n      }, context.config.delay.show);\n    };\n\n    _proto._leave = function _leave(event, context) {\n      var dataKey = this.constructor.DATA_KEY;\n      context = context || $(event.currentTarget).data(dataKey);\n\n      if (!context) {\n        context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n        $(event.currentTarget).data(dataKey, context);\n      }\n\n      if (event) {\n        context._activeTrigger[event.type === 'focusout' ? Trigger.FOCUS : Trigger.HOVER] = false;\n      }\n\n      if (context._isWithActiveTrigger()) {\n        return;\n      }\n\n      clearTimeout(context._timeout);\n      context._hoverState = HoverState.OUT;\n\n      if (!context.config.delay || !context.config.delay.hide) {\n        context.hide();\n        return;\n      }\n\n      context._timeout = setTimeout(function () {\n        if (context._hoverState === HoverState.OUT) {\n          context.hide();\n        }\n      }, context.config.delay.hide);\n    };\n\n    _proto._isWithActiveTrigger = function _isWithActiveTrigger() {\n      for (var trigger in this._activeTrigger) {\n        if (this._activeTrigger[trigger]) {\n          return true;\n        }\n      }\n\n      return false;\n    };\n\n    _proto._getConfig = function _getConfig(config) {\n      var dataAttributes = $(this.element).data();\n      Object.keys(dataAttributes).forEach(function (dataAttr) {\n        if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {\n          delete dataAttributes[dataAttr];\n        }\n      });\n      config = _objectSpread({}, this.constructor.Default, dataAttributes, typeof config === 'object' && config ? config : {});\n\n      if (typeof config.delay === 'number') {\n        config.delay = {\n          show: config.delay,\n          hide: config.delay\n        };\n      }\n\n      if (typeof config.title === 'number') {\n        config.title = config.title.toString();\n      }\n\n      if (typeof config.content === 'number') {\n        config.content = config.content.toString();\n      }\n\n      Util.typeCheckConfig(NAME$6, config, this.constructor.DefaultType);\n\n      if (config.sanitize) {\n        config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn);\n      }\n\n      return config;\n    };\n\n    _proto._getDelegateConfig = function _getDelegateConfig() {\n      var config = {};\n\n      if (this.config) {\n        for (var key in this.config) {\n          if (this.constructor.Default[key] !== this.config[key]) {\n            config[key] = this.config[key];\n          }\n        }\n      }\n\n      return config;\n    };\n\n    _proto._cleanTipClass = function _cleanTipClass() {\n      var $tip = $(this.getTipElement());\n      var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);\n\n      if (tabClass !== null && tabClass.length) {\n        $tip.removeClass(tabClass.join(''));\n      }\n    };\n\n    _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(popperData) {\n      var popperInstance = popperData.instance;\n      this.tip = popperInstance.popper;\n\n      this._cleanTipClass();\n\n      this.addAttachmentClass(this._getAttachment(popperData.placement));\n    };\n\n    _proto._fixTransition = function _fixTransition() {\n      var tip = this.getTipElement();\n      var initConfigAnimation = this.config.animation;\n\n      if (tip.getAttribute('x-placement') !== null) {\n        return;\n      }\n\n      $(tip).removeClass(ClassName$6.FADE);\n      this.config.animation = false;\n      this.hide();\n      this.show();\n      this.config.animation = initConfigAnimation;\n    } // Static\n    ;\n\n    Tooltip._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var data = $(this).data(DATA_KEY$6);\n\n        var _config = typeof config === 'object' && config;\n\n        if (!data && /dispose|hide/.test(config)) {\n          return;\n        }\n\n        if (!data) {\n          data = new Tooltip(this, _config);\n          $(this).data(DATA_KEY$6, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config]();\n        }\n      });\n    };\n\n    _createClass(Tooltip, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$6;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$4;\n      }\n    }, {\n      key: \"NAME\",\n      get: function get() {\n        return NAME$6;\n      }\n    }, {\n      key: \"DATA_KEY\",\n      get: function get() {\n        return DATA_KEY$6;\n      }\n    }, {\n      key: \"Event\",\n      get: function get() {\n        return Event$6;\n      }\n    }, {\n      key: \"EVENT_KEY\",\n      get: function get() {\n        return EVENT_KEY$6;\n      }\n    }, {\n      key: \"DefaultType\",\n      get: function get() {\n        return DefaultType$4;\n      }\n    }]);\n\n    return Tooltip;\n  }();\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n\n  $.fn[NAME$6] = Tooltip._jQueryInterface;\n  $.fn[NAME$6].Constructor = Tooltip;\n\n  $.fn[NAME$6].noConflict = function () {\n    $.fn[NAME$6] = JQUERY_NO_CONFLICT$6;\n    return Tooltip._jQueryInterface;\n  };\n\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  var NAME$7 = 'popover';\n  var VERSION$7 = '4.3.1';\n  var DATA_KEY$7 = 'bs.popover';\n  var EVENT_KEY$7 = \".\" + DATA_KEY$7;\n  var JQUERY_NO_CONFLICT$7 = $.fn[NAME$7];\n  var CLASS_PREFIX$1 = 'bs-popover';\n  var BSCLS_PREFIX_REGEX$1 = new RegExp(\"(^|\\\\s)\" + CLASS_PREFIX$1 + \"\\\\S+\", 'g');\n\n  var Default$5 = _objectSpread({}, Tooltip.Default, {\n    placement: 'right',\n    trigger: 'click',\n    content: '',\n    template: '<div class=\"popover\" role=\"tooltip\">' + '<div class=\"arrow\"></div>' + '<h3 class=\"popover-header\"></h3>' + '<div class=\"popover-body\"></div></div>'\n  });\n\n  var DefaultType$5 = _objectSpread({}, Tooltip.DefaultType, {\n    content: '(string|element|function)'\n  });\n\n  var ClassName$7 = {\n    FADE: 'fade',\n    SHOW: 'show'\n  };\n  var Selector$7 = {\n    TITLE: '.popover-header',\n    CONTENT: '.popover-body'\n  };\n  var Event$7 = {\n    HIDE: \"hide\" + EVENT_KEY$7,\n    HIDDEN: \"hidden\" + EVENT_KEY$7,\n    SHOW: \"show\" + EVENT_KEY$7,\n    SHOWN: \"shown\" + EVENT_KEY$7,\n    INSERTED: \"inserted\" + EVENT_KEY$7,\n    CLICK: \"click\" + EVENT_KEY$7,\n    FOCUSIN: \"focusin\" + EVENT_KEY$7,\n    FOCUSOUT: \"focusout\" + EVENT_KEY$7,\n    MOUSEENTER: \"mouseenter\" + EVENT_KEY$7,\n    MOUSELEAVE: \"mouseleave\" + EVENT_KEY$7\n    /**\n     * ------------------------------------------------------------------------\n     * Class Definition\n     * ------------------------------------------------------------------------\n     */\n\n  };\n\n  var Popover =\n  /*#__PURE__*/\n  function (_Tooltip) {\n    _inheritsLoose(Popover, _Tooltip);\n\n    function Popover() {\n      return _Tooltip.apply(this, arguments) || this;\n    }\n\n    var _proto = Popover.prototype;\n\n    // Overrides\n    _proto.isWithContent = function isWithContent() {\n      return this.getTitle() || this._getContent();\n    };\n\n    _proto.addAttachmentClass = function addAttachmentClass(attachment) {\n      $(this.getTipElement()).addClass(CLASS_PREFIX$1 + \"-\" + attachment);\n    };\n\n    _proto.getTipElement = function getTipElement() {\n      this.tip = this.tip || $(this.config.template)[0];\n      return this.tip;\n    };\n\n    _proto.setContent = function setContent() {\n      var $tip = $(this.getTipElement()); // We use append for html objects to maintain js events\n\n      this.setElementContent($tip.find(Selector$7.TITLE), this.getTitle());\n\n      var content = this._getContent();\n\n      if (typeof content === 'function') {\n        content = content.call(this.element);\n      }\n\n      this.setElementContent($tip.find(Selector$7.CONTENT), content);\n      $tip.removeClass(ClassName$7.FADE + \" \" + ClassName$7.SHOW);\n    } // Private\n    ;\n\n    _proto._getContent = function _getContent() {\n      return this.element.getAttribute('data-content') || this.config.content;\n    };\n\n    _proto._cleanTipClass = function _cleanTipClass() {\n      var $tip = $(this.getTipElement());\n      var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX$1);\n\n      if (tabClass !== null && tabClass.length > 0) {\n        $tip.removeClass(tabClass.join(''));\n      }\n    } // Static\n    ;\n\n    Popover._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var data = $(this).data(DATA_KEY$7);\n\n        var _config = typeof config === 'object' ? config : null;\n\n        if (!data && /dispose|hide/.test(config)) {\n          return;\n        }\n\n        if (!data) {\n          data = new Popover(this, _config);\n          $(this).data(DATA_KEY$7, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config]();\n        }\n      });\n    };\n\n    _createClass(Popover, null, [{\n      key: \"VERSION\",\n      // Getters\n      get: function get() {\n        return VERSION$7;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$5;\n      }\n    }, {\n      key: \"NAME\",\n      get: function get() {\n        return NAME$7;\n      }\n    }, {\n      key: \"DATA_KEY\",\n      get: function get() {\n        return DATA_KEY$7;\n      }\n    }, {\n      key: \"Event\",\n      get: function get() {\n        return Event$7;\n      }\n    }, {\n      key: \"EVENT_KEY\",\n      get: function get() {\n        return EVENT_KEY$7;\n      }\n    }, {\n      key: \"DefaultType\",\n      get: function get() {\n        return DefaultType$5;\n      }\n    }]);\n\n    return Popover;\n  }(Tooltip);\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n\n  $.fn[NAME$7] = Popover._jQueryInterface;\n  $.fn[NAME$7].Constructor = Popover;\n\n  $.fn[NAME$7].noConflict = function () {\n    $.fn[NAME$7] = JQUERY_NO_CONFLICT$7;\n    return Popover._jQueryInterface;\n  };\n\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  var NAME$8 = 'scrollspy';\n  var VERSION$8 = '4.3.1';\n  var DATA_KEY$8 = 'bs.scrollspy';\n  var EVENT_KEY$8 = \".\" + DATA_KEY$8;\n  var DATA_API_KEY$6 = '.data-api';\n  var JQUERY_NO_CONFLICT$8 = $.fn[NAME$8];\n  var Default$6 = {\n    offset: 10,\n    method: 'auto',\n    target: ''\n  };\n  var DefaultType$6 = {\n    offset: 'number',\n    method: 'string',\n    target: '(string|element)'\n  };\n  var Event$8 = {\n    ACTIVATE: \"activate\" + EVENT_KEY$8,\n    SCROLL: \"scroll\" + EVENT_KEY$8,\n    LOAD_DATA_API: \"load\" + EVENT_KEY$8 + DATA_API_KEY$6\n  };\n  var ClassName$8 = {\n    DROPDOWN_ITEM: 'dropdown-item',\n    DROPDOWN_MENU: 'dropdown-menu',\n    ACTIVE: 'active'\n  };\n  var Selector$8 = {\n    DATA_SPY: '[data-spy=\"scroll\"]',\n    ACTIVE: '.active',\n    NAV_LIST_GROUP: '.nav, .list-group',\n    NAV_LINKS: '.nav-link',\n    NAV_ITEMS: '.nav-item',\n    LIST_ITEMS: '.list-group-item',\n    DROPDOWN: '.dropdown',\n    DROPDOWN_ITEMS: '.dropdown-item',\n    DROPDOWN_TOGGLE: '.dropdown-toggle'\n  };\n  var OffsetMethod = {\n    OFFSET: 'offset',\n    POSITION: 'position'\n    /**\n     * ------------------------------------------------------------------------\n     * Class Definition\n     * ------------------------------------------------------------------------\n     */\n\n  };\n\n  var ScrollSpy =\n  /*#__PURE__*/\n  function () {\n    function ScrollSpy(element, config) {\n      var _this = this;\n\n      this._element = element;\n      this._scrollElement = element.tagName === 'BODY' ? window : element;\n      this._config = this._getConfig(config);\n      this._selector = this._config.target + \" \" + Selector$8.NAV_LINKS + \",\" + (this._config.target + \" \" + Selector$8.LIST_ITEMS + \",\") + (this._config.target + \" \" + Selector$8.DROPDOWN_ITEMS);\n      this._offsets = [];\n      this._targets = [];\n      this._activeTarget = null;\n      this._scrollHeight = 0;\n      $(this._scrollElement).on(Event$8.SCROLL, function (event) {\n        return _this._process(event);\n      });\n      this.refresh();\n\n      this._process();\n    } // Getters\n\n\n    var _proto = ScrollSpy.prototype;\n\n    // Public\n    _proto.refresh = function refresh() {\n      var _this2 = this;\n\n      var autoMethod = this._scrollElement === this._scrollElement.window ? OffsetMethod.OFFSET : OffsetMethod.POSITION;\n      var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;\n      var offsetBase = offsetMethod === OffsetMethod.POSITION ? this._getScrollTop() : 0;\n      this._offsets = [];\n      this._targets = [];\n      this._scrollHeight = this._getScrollHeight();\n      var targets = [].slice.call(document.querySelectorAll(this._selector));\n      targets.map(function (element) {\n        var target;\n        var targetSelector = Util.getSelectorFromElement(element);\n\n        if (targetSelector) {\n          target = document.querySelector(targetSelector);\n        }\n\n        if (target) {\n          var targetBCR = target.getBoundingClientRect();\n\n          if (targetBCR.width || targetBCR.height) {\n            // TODO (fat): remove sketch reliance on jQuery position/offset\n            return [$(target)[offsetMethod]().top + offsetBase, targetSelector];\n          }\n        }\n\n        return null;\n      }).filter(function (item) {\n        return item;\n      }).sort(function (a, b) {\n        return a[0] - b[0];\n      }).forEach(function (item) {\n        _this2._offsets.push(item[0]);\n\n        _this2._targets.push(item[1]);\n      });\n    };\n\n    _proto.dispose = function dispose() {\n      $.removeData(this._element, DATA_KEY$8);\n      $(this._scrollElement).off(EVENT_KEY$8);\n      this._element = null;\n      this._scrollElement = null;\n      this._config = null;\n      this._selector = null;\n      this._offsets = null;\n      this._targets = null;\n      this._activeTarget = null;\n      this._scrollHeight = null;\n    } // Private\n    ;\n\n    _proto._getConfig = function _getConfig(config) {\n      config = _objectSpread({}, Default$6, typeof config === 'object' && config ? config : {});\n\n      if (typeof config.target !== 'string') {\n        var id = $(config.target).attr('id');\n\n        if (!id) {\n          id = Util.getUID(NAME$8);\n          $(config.target).attr('id', id);\n        }\n\n        config.target = \"#\" + id;\n      }\n\n      Util.typeCheckConfig(NAME$8, config, DefaultType$6);\n      return config;\n    };\n\n    _proto._getScrollTop = function _getScrollTop() {\n      return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;\n    };\n\n    _proto._getScrollHeight = function _getScrollHeight() {\n      return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);\n    };\n\n    _proto._getOffsetHeight = function _getOffsetHeight() {\n      return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;\n    };\n\n    _proto._process = function _process() {\n      var scrollTop = this._getScrollTop() + this._config.offset;\n\n      var scrollHeight = this._getScrollHeight();\n\n      var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();\n\n      if (this._scrollHeight !== scrollHeight) {\n        this.refresh();\n      }\n\n      if (scrollTop >= maxScroll) {\n        var target = this._targets[this._targets.length - 1];\n\n        if (this._activeTarget !== target) {\n          this._activate(target);\n        }\n\n        return;\n      }\n\n      if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n        this._activeTarget = null;\n\n        this._clear();\n\n        return;\n      }\n\n      var offsetLength = this._offsets.length;\n\n      for (var i = offsetLength; i--;) {\n        var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]);\n\n        if (isActiveTarget) {\n          this._activate(this._targets[i]);\n        }\n      }\n    };\n\n    _proto._activate = function _activate(target) {\n      this._activeTarget = target;\n\n      this._clear();\n\n      var queries = this._selector.split(',').map(function (selector) {\n        return selector + \"[data-target=\\\"\" + target + \"\\\"],\" + selector + \"[href=\\\"\" + target + \"\\\"]\";\n      });\n\n      var $link = $([].slice.call(document.querySelectorAll(queries.join(','))));\n\n      if ($link.hasClass(ClassName$8.DROPDOWN_ITEM)) {\n        $link.closest(Selector$8.DROPDOWN).find(Selector$8.DROPDOWN_TOGGLE).addClass(ClassName$8.ACTIVE);\n        $link.addClass(ClassName$8.ACTIVE);\n      } else {\n        // Set triggered link as active\n        $link.addClass(ClassName$8.ACTIVE); // Set triggered links parents as active\n        // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n\n        $link.parents(Selector$8.NAV_LIST_GROUP).prev(Selector$8.NAV_LINKS + \", \" + Selector$8.LIST_ITEMS).addClass(ClassName$8.ACTIVE); // Handle special case when .nav-link is inside .nav-item\n\n        $link.parents(Selector$8.NAV_LIST_GROUP).prev(Selector$8.NAV_ITEMS).children(Selector$8.NAV_LINKS).addClass(ClassName$8.ACTIVE);\n      }\n\n      $(this._scrollElement).trigger(Event$8.ACTIVATE, {\n        relatedTarget: target\n      });\n    };\n\n    _proto._clear = function _clear() {\n      [].slice.call(document.querySelectorAll(this._selector)).filter(function (node) {\n        return node.classList.contains(ClassName$8.ACTIVE);\n      }).forEach(function (node) {\n        return node.classList.remove(ClassName$8.ACTIVE);\n      });\n    } // Static\n    ;\n\n    ScrollSpy._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var data = $(this).data(DATA_KEY$8);\n\n        var _config = typeof config === 'object' && config;\n\n        if (!data) {\n          data = new ScrollSpy(this, _config);\n          $(this).data(DATA_KEY$8, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config]();\n        }\n      });\n    };\n\n    _createClass(ScrollSpy, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$8;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$6;\n      }\n    }]);\n\n    return ScrollSpy;\n  }();\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n\n  $(window).on(Event$8.LOAD_DATA_API, function () {\n    var scrollSpys = [].slice.call(document.querySelectorAll(Selector$8.DATA_SPY));\n    var scrollSpysLength = scrollSpys.length;\n\n    for (var i = scrollSpysLength; i--;) {\n      var $spy = $(scrollSpys[i]);\n\n      ScrollSpy._jQueryInterface.call($spy, $spy.data());\n    }\n  });\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n  $.fn[NAME$8] = ScrollSpy._jQueryInterface;\n  $.fn[NAME$8].Constructor = ScrollSpy;\n\n  $.fn[NAME$8].noConflict = function () {\n    $.fn[NAME$8] = JQUERY_NO_CONFLICT$8;\n    return ScrollSpy._jQueryInterface;\n  };\n\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  var NAME$9 = 'tab';\n  var VERSION$9 = '4.3.1';\n  var DATA_KEY$9 = 'bs.tab';\n  var EVENT_KEY$9 = \".\" + DATA_KEY$9;\n  var DATA_API_KEY$7 = '.data-api';\n  var JQUERY_NO_CONFLICT$9 = $.fn[NAME$9];\n  var Event$9 = {\n    HIDE: \"hide\" + EVENT_KEY$9,\n    HIDDEN: \"hidden\" + EVENT_KEY$9,\n    SHOW: \"show\" + EVENT_KEY$9,\n    SHOWN: \"shown\" + EVENT_KEY$9,\n    CLICK_DATA_API: \"click\" + EVENT_KEY$9 + DATA_API_KEY$7\n  };\n  var ClassName$9 = {\n    DROPDOWN_MENU: 'dropdown-menu',\n    ACTIVE: 'active',\n    DISABLED: 'disabled',\n    FADE: 'fade',\n    SHOW: 'show'\n  };\n  var Selector$9 = {\n    DROPDOWN: '.dropdown',\n    NAV_LIST_GROUP: '.nav, .list-group',\n    ACTIVE: '.active',\n    ACTIVE_UL: '> li > .active',\n    DATA_TOGGLE: '[data-toggle=\"tab\"], [data-toggle=\"pill\"], [data-toggle=\"list\"]',\n    DROPDOWN_TOGGLE: '.dropdown-toggle',\n    DROPDOWN_ACTIVE_CHILD: '> .dropdown-menu .active'\n    /**\n     * ------------------------------------------------------------------------\n     * Class Definition\n     * ------------------------------------------------------------------------\n     */\n\n  };\n\n  var Tab =\n  /*#__PURE__*/\n  function () {\n    function Tab(element) {\n      this._element = element;\n    } // Getters\n\n\n    var _proto = Tab.prototype;\n\n    // Public\n    _proto.show = function show() {\n      var _this = this;\n\n      if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $(this._element).hasClass(ClassName$9.ACTIVE) || $(this._element).hasClass(ClassName$9.DISABLED)) {\n        return;\n      }\n\n      var target;\n      var previous;\n      var listElement = $(this._element).closest(Selector$9.NAV_LIST_GROUP)[0];\n      var selector = Util.getSelectorFromElement(this._element);\n\n      if (listElement) {\n        var itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? Selector$9.ACTIVE_UL : Selector$9.ACTIVE;\n        previous = $.makeArray($(listElement).find(itemSelector));\n        previous = previous[previous.length - 1];\n      }\n\n      var hideEvent = $.Event(Event$9.HIDE, {\n        relatedTarget: this._element\n      });\n      var showEvent = $.Event(Event$9.SHOW, {\n        relatedTarget: previous\n      });\n\n      if (previous) {\n        $(previous).trigger(hideEvent);\n      }\n\n      $(this._element).trigger(showEvent);\n\n      if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      if (selector) {\n        target = document.querySelector(selector);\n      }\n\n      this._activate(this._element, listElement);\n\n      var complete = function complete() {\n        var hiddenEvent = $.Event(Event$9.HIDDEN, {\n          relatedTarget: _this._element\n        });\n        var shownEvent = $.Event(Event$9.SHOWN, {\n          relatedTarget: previous\n        });\n        $(previous).trigger(hiddenEvent);\n        $(_this._element).trigger(shownEvent);\n      };\n\n      if (target) {\n        this._activate(target, target.parentNode, complete);\n      } else {\n        complete();\n      }\n    };\n\n    _proto.dispose = function dispose() {\n      $.removeData(this._element, DATA_KEY$9);\n      this._element = null;\n    } // Private\n    ;\n\n    _proto._activate = function _activate(element, container, callback) {\n      var _this2 = this;\n\n      var activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? $(container).find(Selector$9.ACTIVE_UL) : $(container).children(Selector$9.ACTIVE);\n      var active = activeElements[0];\n      var isTransitioning = callback && active && $(active).hasClass(ClassName$9.FADE);\n\n      var complete = function complete() {\n        return _this2._transitionComplete(element, active, callback);\n      };\n\n      if (active && isTransitioning) {\n        var transitionDuration = Util.getTransitionDurationFromElement(active);\n        $(active).removeClass(ClassName$9.SHOW).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n      } else {\n        complete();\n      }\n    };\n\n    _proto._transitionComplete = function _transitionComplete(element, active, callback) {\n      if (active) {\n        $(active).removeClass(ClassName$9.ACTIVE);\n        var dropdownChild = $(active.parentNode).find(Selector$9.DROPDOWN_ACTIVE_CHILD)[0];\n\n        if (dropdownChild) {\n          $(dropdownChild).removeClass(ClassName$9.ACTIVE);\n        }\n\n        if (active.getAttribute('role') === 'tab') {\n          active.setAttribute('aria-selected', false);\n        }\n      }\n\n      $(element).addClass(ClassName$9.ACTIVE);\n\n      if (element.getAttribute('role') === 'tab') {\n        element.setAttribute('aria-selected', true);\n      }\n\n      Util.reflow(element);\n\n      if (element.classList.contains(ClassName$9.FADE)) {\n        element.classList.add(ClassName$9.SHOW);\n      }\n\n      if (element.parentNode && $(element.parentNode).hasClass(ClassName$9.DROPDOWN_MENU)) {\n        var dropdownElement = $(element).closest(Selector$9.DROPDOWN)[0];\n\n        if (dropdownElement) {\n          var dropdownToggleList = [].slice.call(dropdownElement.querySelectorAll(Selector$9.DROPDOWN_TOGGLE));\n          $(dropdownToggleList).addClass(ClassName$9.ACTIVE);\n        }\n\n        element.setAttribute('aria-expanded', true);\n      }\n\n      if (callback) {\n        callback();\n      }\n    } // Static\n    ;\n\n    Tab._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var $this = $(this);\n        var data = $this.data(DATA_KEY$9);\n\n        if (!data) {\n          data = new Tab(this);\n          $this.data(DATA_KEY$9, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config]();\n        }\n      });\n    };\n\n    _createClass(Tab, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$9;\n      }\n    }]);\n\n    return Tab;\n  }();\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n\n  $(document).on(Event$9.CLICK_DATA_API, Selector$9.DATA_TOGGLE, function (event) {\n    event.preventDefault();\n\n    Tab._jQueryInterface.call($(this), 'show');\n  });\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n  $.fn[NAME$9] = Tab._jQueryInterface;\n  $.fn[NAME$9].Constructor = Tab;\n\n  $.fn[NAME$9].noConflict = function () {\n    $.fn[NAME$9] = JQUERY_NO_CONFLICT$9;\n    return Tab._jQueryInterface;\n  };\n\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  var NAME$a = 'toast';\n  var VERSION$a = '4.3.1';\n  var DATA_KEY$a = 'bs.toast';\n  var EVENT_KEY$a = \".\" + DATA_KEY$a;\n  var JQUERY_NO_CONFLICT$a = $.fn[NAME$a];\n  var Event$a = {\n    CLICK_DISMISS: \"click.dismiss\" + EVENT_KEY$a,\n    HIDE: \"hide\" + EVENT_KEY$a,\n    HIDDEN: \"hidden\" + EVENT_KEY$a,\n    SHOW: \"show\" + EVENT_KEY$a,\n    SHOWN: \"shown\" + EVENT_KEY$a\n  };\n  var ClassName$a = {\n    FADE: 'fade',\n    HIDE: 'hide',\n    SHOW: 'show',\n    SHOWING: 'showing'\n  };\n  var DefaultType$7 = {\n    animation: 'boolean',\n    autohide: 'boolean',\n    delay: 'number'\n  };\n  var Default$7 = {\n    animation: true,\n    autohide: true,\n    delay: 500\n  };\n  var Selector$a = {\n    DATA_DISMISS: '[data-dismiss=\"toast\"]'\n    /**\n     * ------------------------------------------------------------------------\n     * Class Definition\n     * ------------------------------------------------------------------------\n     */\n\n  };\n\n  var Toast =\n  /*#__PURE__*/\n  function () {\n    function Toast(element, config) {\n      this._element = element;\n      this._config = this._getConfig(config);\n      this._timeout = null;\n\n      this._setListeners();\n    } // Getters\n\n\n    var _proto = Toast.prototype;\n\n    // Public\n    _proto.show = function show() {\n      var _this = this;\n\n      $(this._element).trigger(Event$a.SHOW);\n\n      if (this._config.animation) {\n        this._element.classList.add(ClassName$a.FADE);\n      }\n\n      var complete = function complete() {\n        _this._element.classList.remove(ClassName$a.SHOWING);\n\n        _this._element.classList.add(ClassName$a.SHOW);\n\n        $(_this._element).trigger(Event$a.SHOWN);\n\n        if (_this._config.autohide) {\n          _this.hide();\n        }\n      };\n\n      this._element.classList.remove(ClassName$a.HIDE);\n\n      this._element.classList.add(ClassName$a.SHOWING);\n\n      if (this._config.animation) {\n        var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n        $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n      } else {\n        complete();\n      }\n    };\n\n    _proto.hide = function hide(withoutTimeout) {\n      var _this2 = this;\n\n      if (!this._element.classList.contains(ClassName$a.SHOW)) {\n        return;\n      }\n\n      $(this._element).trigger(Event$a.HIDE);\n\n      if (withoutTimeout) {\n        this._close();\n      } else {\n        this._timeout = setTimeout(function () {\n          _this2._close();\n        }, this._config.delay);\n      }\n    };\n\n    _proto.dispose = function dispose() {\n      clearTimeout(this._timeout);\n      this._timeout = null;\n\n      if (this._element.classList.contains(ClassName$a.SHOW)) {\n        this._element.classList.remove(ClassName$a.SHOW);\n      }\n\n      $(this._element).off(Event$a.CLICK_DISMISS);\n      $.removeData(this._element, DATA_KEY$a);\n      this._element = null;\n      this._config = null;\n    } // Private\n    ;\n\n    _proto._getConfig = function _getConfig(config) {\n      config = _objectSpread({}, Default$7, $(this._element).data(), typeof config === 'object' && config ? config : {});\n      Util.typeCheckConfig(NAME$a, config, this.constructor.DefaultType);\n      return config;\n    };\n\n    _proto._setListeners = function _setListeners() {\n      var _this3 = this;\n\n      $(this._element).on(Event$a.CLICK_DISMISS, Selector$a.DATA_DISMISS, function () {\n        return _this3.hide(true);\n      });\n    };\n\n    _proto._close = function _close() {\n      var _this4 = this;\n\n      var complete = function complete() {\n        _this4._element.classList.add(ClassName$a.HIDE);\n\n        $(_this4._element).trigger(Event$a.HIDDEN);\n      };\n\n      this._element.classList.remove(ClassName$a.SHOW);\n\n      if (this._config.animation) {\n        var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n        $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n      } else {\n        complete();\n      }\n    } // Static\n    ;\n\n    Toast._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var $element = $(this);\n        var data = $element.data(DATA_KEY$a);\n\n        var _config = typeof config === 'object' && config;\n\n        if (!data) {\n          data = new Toast(this, _config);\n          $element.data(DATA_KEY$a, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config](this);\n        }\n      });\n    };\n\n    _createClass(Toast, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$a;\n      }\n    }, {\n      key: \"DefaultType\",\n      get: function get() {\n        return DefaultType$7;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$7;\n      }\n    }]);\n\n    return Toast;\n  }();\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n\n  $.fn[NAME$a] = Toast._jQueryInterface;\n  $.fn[NAME$a].Constructor = Toast;\n\n  $.fn[NAME$a].noConflict = function () {\n    $.fn[NAME$a] = JQUERY_NO_CONFLICT$a;\n    return Toast._jQueryInterface;\n  };\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v4.3.1): index.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n\n  (function () {\n    if (typeof $ === 'undefined') {\n      throw new TypeError('Bootstrap\\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\\'s JavaScript.');\n    }\n\n    var version = $.fn.jquery.split(' ')[0].split('.');\n    var minMajor = 1;\n    var ltMajor = 2;\n    var minMinor = 9;\n    var minPatch = 1;\n    var maxMajor = 4;\n\n    if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {\n      throw new Error('Bootstrap\\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0');\n    }\n  })();\n\n  exports.Util = Util;\n  exports.Alert = Alert;\n  exports.Button = Button;\n  exports.Carousel = Carousel;\n  exports.Collapse = Collapse;\n  exports.Dropdown = Dropdown;\n  exports.Modal = Modal;\n  exports.Popover = Popover;\n  exports.Scrollspy = ScrollSpy;\n  exports.Tab = Tab;\n  exports.Toast = Toast;\n  exports.Tooltip = Tooltip;\n\n  Object.defineProperty(exports, '__esModule', { value: true });\n\n}));\n//# sourceMappingURL=bootstrap.js.map\n"
  },
  {
    "path": "public/plugins/fontawesome-free/css/all.css",
    "content": "/*!\n * Font Awesome Free 5.11.2 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n */\n.fa,\n.fas,\n.far,\n.fal,\n.fad,\n.fab {\n  -moz-osx-font-smoothing: grayscale;\n  -webkit-font-smoothing: antialiased;\n  display: inline-block;\n  font-style: normal;\n  font-variant: normal;\n  text-rendering: auto;\n  line-height: 1; }\n\n.fa-lg {\n  font-size: 1.33333em;\n  line-height: 0.75em;\n  vertical-align: -.0667em; }\n\n.fa-xs {\n  font-size: .75em; }\n\n.fa-sm {\n  font-size: .875em; }\n\n.fa-1x {\n  font-size: 1em; }\n\n.fa-2x {\n  font-size: 2em; }\n\n.fa-3x {\n  font-size: 3em; }\n\n.fa-4x {\n  font-size: 4em; }\n\n.fa-5x {\n  font-size: 5em; }\n\n.fa-6x {\n  font-size: 6em; }\n\n.fa-7x {\n  font-size: 7em; }\n\n.fa-8x {\n  font-size: 8em; }\n\n.fa-9x {\n  font-size: 9em; }\n\n.fa-10x {\n  font-size: 10em; }\n\n.fa-fw {\n  text-align: center;\n  width: 1.25em; }\n\n.fa-ul {\n  list-style-type: none;\n  margin-left: 2.5em;\n  padding-left: 0; }\n  .fa-ul > li {\n    position: relative; }\n\n.fa-li {\n  left: -2em;\n  position: absolute;\n  text-align: center;\n  width: 2em;\n  line-height: inherit; }\n\n.fa-border {\n  border: solid 0.08em #eee;\n  border-radius: .1em;\n  padding: .2em .25em .15em; }\n\n.fa-pull-left {\n  float: left; }\n\n.fa-pull-right {\n  float: right; }\n\n.fa.fa-pull-left,\n.fas.fa-pull-left,\n.far.fa-pull-left,\n.fal.fa-pull-left,\n.fab.fa-pull-left {\n  margin-right: .3em; }\n\n.fa.fa-pull-right,\n.fas.fa-pull-right,\n.far.fa-pull-right,\n.fal.fa-pull-right,\n.fab.fa-pull-right {\n  margin-left: .3em; }\n\n.fa-spin {\n  -webkit-animation: fa-spin 2s infinite linear;\n          animation: fa-spin 2s infinite linear; }\n\n.fa-pulse {\n  -webkit-animation: fa-spin 1s infinite steps(8);\n          animation: fa-spin 1s infinite steps(8); }\n\n@-webkit-keyframes fa-spin {\n  0% {\n    -webkit-transform: rotate(0deg);\n            transform: rotate(0deg); }\n  100% {\n    -webkit-transform: rotate(360deg);\n            transform: rotate(360deg); } }\n\n@keyframes fa-spin {\n  0% {\n    -webkit-transform: rotate(0deg);\n            transform: rotate(0deg); }\n  100% {\n    -webkit-transform: rotate(360deg);\n            transform: rotate(360deg); } }\n\n.fa-rotate-90 {\n  -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\";\n  -webkit-transform: rotate(90deg);\n          transform: rotate(90deg); }\n\n.fa-rotate-180 {\n  -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\";\n  -webkit-transform: rotate(180deg);\n          transform: rotate(180deg); }\n\n.fa-rotate-270 {\n  -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\";\n  -webkit-transform: rotate(270deg);\n          transform: rotate(270deg); }\n\n.fa-flip-horizontal {\n  -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\";\n  -webkit-transform: scale(-1, 1);\n          transform: scale(-1, 1); }\n\n.fa-flip-vertical {\n  -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";\n  -webkit-transform: scale(1, -1);\n          transform: scale(1, -1); }\n\n.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {\n  -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";\n  -webkit-transform: scale(-1, -1);\n          transform: scale(-1, -1); }\n\n:root .fa-rotate-90,\n:root .fa-rotate-180,\n:root .fa-rotate-270,\n:root .fa-flip-horizontal,\n:root .fa-flip-vertical,\n:root .fa-flip-both {\n  -webkit-filter: none;\n          filter: none; }\n\n.fa-stack {\n  display: inline-block;\n  height: 2em;\n  line-height: 2em;\n  position: relative;\n  vertical-align: middle;\n  width: 2.5em; }\n\n.fa-stack-1x,\n.fa-stack-2x {\n  left: 0;\n  position: absolute;\n  text-align: center;\n  width: 100%; }\n\n.fa-stack-1x {\n  line-height: inherit; }\n\n.fa-stack-2x {\n  font-size: 2em; }\n\n.fa-inverse {\n  color: #fff; }\n\n/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen\nreaders do not read off random characters that represent icons */\n.fa-500px:before {\n  content: \"\\f26e\"; }\n\n.fa-accessible-icon:before {\n  content: \"\\f368\"; }\n\n.fa-accusoft:before {\n  content: \"\\f369\"; }\n\n.fa-acquisitions-incorporated:before {\n  content: \"\\f6af\"; }\n\n.fa-ad:before {\n  content: \"\\f641\"; }\n\n.fa-address-book:before {\n  content: \"\\f2b9\"; }\n\n.fa-address-card:before {\n  content: \"\\f2bb\"; }\n\n.fa-adjust:before {\n  content: \"\\f042\"; }\n\n.fa-adn:before {\n  content: \"\\f170\"; }\n\n.fa-adobe:before {\n  content: \"\\f778\"; }\n\n.fa-adversal:before {\n  content: \"\\f36a\"; }\n\n.fa-affiliatetheme:before {\n  content: \"\\f36b\"; }\n\n.fa-air-freshener:before {\n  content: \"\\f5d0\"; }\n\n.fa-airbnb:before {\n  content: \"\\f834\"; }\n\n.fa-algolia:before {\n  content: \"\\f36c\"; }\n\n.fa-align-center:before {\n  content: \"\\f037\"; }\n\n.fa-align-justify:before {\n  content: \"\\f039\"; }\n\n.fa-align-left:before {\n  content: \"\\f036\"; }\n\n.fa-align-right:before {\n  content: \"\\f038\"; }\n\n.fa-alipay:before {\n  content: \"\\f642\"; }\n\n.fa-allergies:before {\n  content: \"\\f461\"; }\n\n.fa-amazon:before {\n  content: \"\\f270\"; }\n\n.fa-amazon-pay:before {\n  content: \"\\f42c\"; }\n\n.fa-ambulance:before {\n  content: \"\\f0f9\"; }\n\n.fa-american-sign-language-interpreting:before {\n  content: \"\\f2a3\"; }\n\n.fa-amilia:before {\n  content: \"\\f36d\"; }\n\n.fa-anchor:before {\n  content: \"\\f13d\"; }\n\n.fa-android:before {\n  content: \"\\f17b\"; }\n\n.fa-angellist:before {\n  content: \"\\f209\"; }\n\n.fa-angle-double-down:before {\n  content: \"\\f103\"; }\n\n.fa-angle-double-left:before {\n  content: \"\\f100\"; }\n\n.fa-angle-double-right:before {\n  content: \"\\f101\"; }\n\n.fa-angle-double-up:before {\n  content: \"\\f102\"; }\n\n.fa-angle-down:before {\n  content: \"\\f107\"; }\n\n.fa-angle-left:before {\n  content: \"\\f104\"; }\n\n.fa-angle-right:before {\n  content: \"\\f105\"; }\n\n.fa-angle-up:before {\n  content: \"\\f106\"; }\n\n.fa-angry:before {\n  content: \"\\f556\"; }\n\n.fa-angrycreative:before {\n  content: \"\\f36e\"; }\n\n.fa-angular:before {\n  content: \"\\f420\"; }\n\n.fa-ankh:before {\n  content: \"\\f644\"; }\n\n.fa-app-store:before {\n  content: \"\\f36f\"; }\n\n.fa-app-store-ios:before {\n  content: \"\\f370\"; }\n\n.fa-apper:before {\n  content: \"\\f371\"; }\n\n.fa-apple:before {\n  content: \"\\f179\"; }\n\n.fa-apple-alt:before {\n  content: \"\\f5d1\"; }\n\n.fa-apple-pay:before {\n  content: \"\\f415\"; }\n\n.fa-archive:before {\n  content: \"\\f187\"; }\n\n.fa-archway:before {\n  content: \"\\f557\"; }\n\n.fa-arrow-alt-circle-down:before {\n  content: \"\\f358\"; }\n\n.fa-arrow-alt-circle-left:before {\n  content: \"\\f359\"; }\n\n.fa-arrow-alt-circle-right:before {\n  content: \"\\f35a\"; }\n\n.fa-arrow-alt-circle-up:before {\n  content: \"\\f35b\"; }\n\n.fa-arrow-circle-down:before {\n  content: \"\\f0ab\"; }\n\n.fa-arrow-circle-left:before {\n  content: \"\\f0a8\"; }\n\n.fa-arrow-circle-right:before {\n  content: \"\\f0a9\"; }\n\n.fa-arrow-circle-up:before {\n  content: \"\\f0aa\"; }\n\n.fa-arrow-down:before {\n  content: \"\\f063\"; }\n\n.fa-arrow-left:before {\n  content: \"\\f060\"; }\n\n.fa-arrow-right:before {\n  content: \"\\f061\"; }\n\n.fa-arrow-up:before {\n  content: \"\\f062\"; }\n\n.fa-arrows-alt:before {\n  content: \"\\f0b2\"; }\n\n.fa-arrows-alt-h:before {\n  content: \"\\f337\"; }\n\n.fa-arrows-alt-v:before {\n  content: \"\\f338\"; }\n\n.fa-artstation:before {\n  content: \"\\f77a\"; }\n\n.fa-assistive-listening-systems:before {\n  content: \"\\f2a2\"; }\n\n.fa-asterisk:before {\n  content: \"\\f069\"; }\n\n.fa-asymmetrik:before {\n  content: \"\\f372\"; }\n\n.fa-at:before {\n  content: \"\\f1fa\"; }\n\n.fa-atlas:before {\n  content: \"\\f558\"; }\n\n.fa-atlassian:before {\n  content: \"\\f77b\"; }\n\n.fa-atom:before {\n  content: \"\\f5d2\"; }\n\n.fa-audible:before {\n  content: \"\\f373\"; }\n\n.fa-audio-description:before {\n  content: \"\\f29e\"; }\n\n.fa-autoprefixer:before {\n  content: \"\\f41c\"; }\n\n.fa-avianex:before {\n  content: \"\\f374\"; }\n\n.fa-aviato:before {\n  content: \"\\f421\"; }\n\n.fa-award:before {\n  content: \"\\f559\"; }\n\n.fa-aws:before {\n  content: \"\\f375\"; }\n\n.fa-baby:before {\n  content: \"\\f77c\"; }\n\n.fa-baby-carriage:before {\n  content: \"\\f77d\"; }\n\n.fa-backspace:before {\n  content: \"\\f55a\"; }\n\n.fa-backward:before {\n  content: \"\\f04a\"; }\n\n.fa-bacon:before {\n  content: \"\\f7e5\"; }\n\n.fa-balance-scale:before {\n  content: \"\\f24e\"; }\n\n.fa-balance-scale-left:before {\n  content: \"\\f515\"; }\n\n.fa-balance-scale-right:before {\n  content: \"\\f516\"; }\n\n.fa-ban:before {\n  content: \"\\f05e\"; }\n\n.fa-band-aid:before {\n  content: \"\\f462\"; }\n\n.fa-bandcamp:before {\n  content: \"\\f2d5\"; }\n\n.fa-barcode:before {\n  content: \"\\f02a\"; }\n\n.fa-bars:before {\n  content: \"\\f0c9\"; }\n\n.fa-baseball-ball:before {\n  content: \"\\f433\"; }\n\n.fa-basketball-ball:before {\n  content: \"\\f434\"; }\n\n.fa-bath:before {\n  content: \"\\f2cd\"; }\n\n.fa-battery-empty:before {\n  content: \"\\f244\"; }\n\n.fa-battery-full:before {\n  content: \"\\f240\"; }\n\n.fa-battery-half:before {\n  content: \"\\f242\"; }\n\n.fa-battery-quarter:before {\n  content: \"\\f243\"; }\n\n.fa-battery-three-quarters:before {\n  content: \"\\f241\"; }\n\n.fa-battle-net:before {\n  content: \"\\f835\"; }\n\n.fa-bed:before {\n  content: \"\\f236\"; }\n\n.fa-beer:before {\n  content: \"\\f0fc\"; }\n\n.fa-behance:before {\n  content: \"\\f1b4\"; }\n\n.fa-behance-square:before {\n  content: \"\\f1b5\"; }\n\n.fa-bell:before {\n  content: \"\\f0f3\"; }\n\n.fa-bell-slash:before {\n  content: \"\\f1f6\"; }\n\n.fa-bezier-curve:before {\n  content: \"\\f55b\"; }\n\n.fa-bible:before {\n  content: \"\\f647\"; }\n\n.fa-bicycle:before {\n  content: \"\\f206\"; }\n\n.fa-biking:before {\n  content: \"\\f84a\"; }\n\n.fa-bimobject:before {\n  content: \"\\f378\"; }\n\n.fa-binoculars:before {\n  content: \"\\f1e5\"; }\n\n.fa-biohazard:before {\n  content: \"\\f780\"; }\n\n.fa-birthday-cake:before {\n  content: \"\\f1fd\"; }\n\n.fa-bitbucket:before {\n  content: \"\\f171\"; }\n\n.fa-bitcoin:before {\n  content: \"\\f379\"; }\n\n.fa-bity:before {\n  content: \"\\f37a\"; }\n\n.fa-black-tie:before {\n  content: \"\\f27e\"; }\n\n.fa-blackberry:before {\n  content: \"\\f37b\"; }\n\n.fa-blender:before {\n  content: \"\\f517\"; }\n\n.fa-blender-phone:before {\n  content: \"\\f6b6\"; }\n\n.fa-blind:before {\n  content: \"\\f29d\"; }\n\n.fa-blog:before {\n  content: \"\\f781\"; }\n\n.fa-blogger:before {\n  content: \"\\f37c\"; }\n\n.fa-blogger-b:before {\n  content: \"\\f37d\"; }\n\n.fa-bluetooth:before {\n  content: \"\\f293\"; }\n\n.fa-bluetooth-b:before {\n  content: \"\\f294\"; }\n\n.fa-bold:before {\n  content: \"\\f032\"; }\n\n.fa-bolt:before {\n  content: \"\\f0e7\"; }\n\n.fa-bomb:before {\n  content: \"\\f1e2\"; }\n\n.fa-bone:before {\n  content: \"\\f5d7\"; }\n\n.fa-bong:before {\n  content: \"\\f55c\"; }\n\n.fa-book:before {\n  content: \"\\f02d\"; }\n\n.fa-book-dead:before {\n  content: \"\\f6b7\"; }\n\n.fa-book-medical:before {\n  content: \"\\f7e6\"; }\n\n.fa-book-open:before {\n  content: \"\\f518\"; }\n\n.fa-book-reader:before {\n  content: \"\\f5da\"; }\n\n.fa-bookmark:before {\n  content: \"\\f02e\"; }\n\n.fa-bootstrap:before {\n  content: \"\\f836\"; }\n\n.fa-border-all:before {\n  content: \"\\f84c\"; }\n\n.fa-border-none:before {\n  content: \"\\f850\"; }\n\n.fa-border-style:before {\n  content: \"\\f853\"; }\n\n.fa-bowling-ball:before {\n  content: \"\\f436\"; }\n\n.fa-box:before {\n  content: \"\\f466\"; }\n\n.fa-box-open:before {\n  content: \"\\f49e\"; }\n\n.fa-boxes:before {\n  content: \"\\f468\"; }\n\n.fa-braille:before {\n  content: \"\\f2a1\"; }\n\n.fa-brain:before {\n  content: \"\\f5dc\"; }\n\n.fa-bread-slice:before {\n  content: \"\\f7ec\"; }\n\n.fa-briefcase:before {\n  content: \"\\f0b1\"; }\n\n.fa-briefcase-medical:before {\n  content: \"\\f469\"; }\n\n.fa-broadcast-tower:before {\n  content: \"\\f519\"; }\n\n.fa-broom:before {\n  content: \"\\f51a\"; }\n\n.fa-brush:before {\n  content: \"\\f55d\"; }\n\n.fa-btc:before {\n  content: \"\\f15a\"; }\n\n.fa-buffer:before {\n  content: \"\\f837\"; }\n\n.fa-bug:before {\n  content: \"\\f188\"; }\n\n.fa-building:before {\n  content: \"\\f1ad\"; }\n\n.fa-bullhorn:before {\n  content: \"\\f0a1\"; }\n\n.fa-bullseye:before {\n  content: \"\\f140\"; }\n\n.fa-burn:before {\n  content: \"\\f46a\"; }\n\n.fa-buromobelexperte:before {\n  content: \"\\f37f\"; }\n\n.fa-bus:before {\n  content: \"\\f207\"; }\n\n.fa-bus-alt:before {\n  content: \"\\f55e\"; }\n\n.fa-business-time:before {\n  content: \"\\f64a\"; }\n\n.fa-buy-n-large:before {\n  content: \"\\f8a6\"; }\n\n.fa-buysellads:before {\n  content: \"\\f20d\"; }\n\n.fa-calculator:before {\n  content: \"\\f1ec\"; }\n\n.fa-calendar:before {\n  content: \"\\f133\"; }\n\n.fa-calendar-alt:before {\n  content: \"\\f073\"; }\n\n.fa-calendar-check:before {\n  content: \"\\f274\"; }\n\n.fa-calendar-day:before {\n  content: \"\\f783\"; }\n\n.fa-calendar-minus:before {\n  content: \"\\f272\"; }\n\n.fa-calendar-plus:before {\n  content: \"\\f271\"; }\n\n.fa-calendar-times:before {\n  content: \"\\f273\"; }\n\n.fa-calendar-week:before {\n  content: \"\\f784\"; }\n\n.fa-camera:before {\n  content: \"\\f030\"; }\n\n.fa-camera-retro:before {\n  content: \"\\f083\"; }\n\n.fa-campground:before {\n  content: \"\\f6bb\"; }\n\n.fa-canadian-maple-leaf:before {\n  content: \"\\f785\"; }\n\n.fa-candy-cane:before {\n  content: \"\\f786\"; }\n\n.fa-cannabis:before {\n  content: \"\\f55f\"; }\n\n.fa-capsules:before {\n  content: \"\\f46b\"; }\n\n.fa-car:before {\n  content: \"\\f1b9\"; }\n\n.fa-car-alt:before {\n  content: \"\\f5de\"; }\n\n.fa-car-battery:before {\n  content: \"\\f5df\"; }\n\n.fa-car-crash:before {\n  content: \"\\f5e1\"; }\n\n.fa-car-side:before {\n  content: \"\\f5e4\"; }\n\n.fa-caret-down:before {\n  content: \"\\f0d7\"; }\n\n.fa-caret-left:before {\n  content: \"\\f0d9\"; }\n\n.fa-caret-right:before {\n  content: \"\\f0da\"; }\n\n.fa-caret-square-down:before {\n  content: \"\\f150\"; }\n\n.fa-caret-square-left:before {\n  content: \"\\f191\"; }\n\n.fa-caret-square-right:before {\n  content: \"\\f152\"; }\n\n.fa-caret-square-up:before {\n  content: \"\\f151\"; }\n\n.fa-caret-up:before {\n  content: \"\\f0d8\"; }\n\n.fa-carrot:before {\n  content: \"\\f787\"; }\n\n.fa-cart-arrow-down:before {\n  content: \"\\f218\"; }\n\n.fa-cart-plus:before {\n  content: \"\\f217\"; }\n\n.fa-cash-register:before {\n  content: \"\\f788\"; }\n\n.fa-cat:before {\n  content: \"\\f6be\"; }\n\n.fa-cc-amazon-pay:before {\n  content: \"\\f42d\"; }\n\n.fa-cc-amex:before {\n  content: \"\\f1f3\"; }\n\n.fa-cc-apple-pay:before {\n  content: \"\\f416\"; }\n\n.fa-cc-diners-club:before {\n  content: \"\\f24c\"; }\n\n.fa-cc-discover:before {\n  content: \"\\f1f2\"; }\n\n.fa-cc-jcb:before {\n  content: \"\\f24b\"; }\n\n.fa-cc-mastercard:before {\n  content: \"\\f1f1\"; }\n\n.fa-cc-paypal:before {\n  content: \"\\f1f4\"; }\n\n.fa-cc-stripe:before {\n  content: \"\\f1f5\"; }\n\n.fa-cc-visa:before {\n  content: \"\\f1f0\"; }\n\n.fa-centercode:before {\n  content: \"\\f380\"; }\n\n.fa-centos:before {\n  content: \"\\f789\"; }\n\n.fa-certificate:before {\n  content: \"\\f0a3\"; }\n\n.fa-chair:before {\n  content: \"\\f6c0\"; }\n\n.fa-chalkboard:before {\n  content: \"\\f51b\"; }\n\n.fa-chalkboard-teacher:before {\n  content: \"\\f51c\"; }\n\n.fa-charging-station:before {\n  content: \"\\f5e7\"; }\n\n.fa-chart-area:before {\n  content: \"\\f1fe\"; }\n\n.fa-chart-bar:before {\n  content: \"\\f080\"; }\n\n.fa-chart-line:before {\n  content: \"\\f201\"; }\n\n.fa-chart-pie:before {\n  content: \"\\f200\"; }\n\n.fa-check:before {\n  content: \"\\f00c\"; }\n\n.fa-check-circle:before {\n  content: \"\\f058\"; }\n\n.fa-check-double:before {\n  content: \"\\f560\"; }\n\n.fa-check-square:before {\n  content: \"\\f14a\"; }\n\n.fa-cheese:before {\n  content: \"\\f7ef\"; }\n\n.fa-chess:before {\n  content: \"\\f439\"; }\n\n.fa-chess-bishop:before {\n  content: \"\\f43a\"; }\n\n.fa-chess-board:before {\n  content: \"\\f43c\"; }\n\n.fa-chess-king:before {\n  content: \"\\f43f\"; }\n\n.fa-chess-knight:before {\n  content: \"\\f441\"; }\n\n.fa-chess-pawn:before {\n  content: \"\\f443\"; }\n\n.fa-chess-queen:before {\n  content: \"\\f445\"; }\n\n.fa-chess-rook:before {\n  content: \"\\f447\"; }\n\n.fa-chevron-circle-down:before {\n  content: \"\\f13a\"; }\n\n.fa-chevron-circle-left:before {\n  content: \"\\f137\"; }\n\n.fa-chevron-circle-right:before {\n  content: \"\\f138\"; }\n\n.fa-chevron-circle-up:before {\n  content: \"\\f139\"; }\n\n.fa-chevron-down:before {\n  content: \"\\f078\"; }\n\n.fa-chevron-left:before {\n  content: \"\\f053\"; }\n\n.fa-chevron-right:before {\n  content: \"\\f054\"; }\n\n.fa-chevron-up:before {\n  content: \"\\f077\"; }\n\n.fa-child:before {\n  content: \"\\f1ae\"; }\n\n.fa-chrome:before {\n  content: \"\\f268\"; }\n\n.fa-chromecast:before {\n  content: \"\\f838\"; }\n\n.fa-church:before {\n  content: \"\\f51d\"; }\n\n.fa-circle:before {\n  content: \"\\f111\"; }\n\n.fa-circle-notch:before {\n  content: \"\\f1ce\"; }\n\n.fa-city:before {\n  content: \"\\f64f\"; }\n\n.fa-clinic-medical:before {\n  content: \"\\f7f2\"; }\n\n.fa-clipboard:before {\n  content: \"\\f328\"; }\n\n.fa-clipboard-check:before {\n  content: \"\\f46c\"; }\n\n.fa-clipboard-list:before {\n  content: \"\\f46d\"; }\n\n.fa-clock:before {\n  content: \"\\f017\"; }\n\n.fa-clone:before {\n  content: \"\\f24d\"; }\n\n.fa-closed-captioning:before {\n  content: \"\\f20a\"; }\n\n.fa-cloud:before {\n  content: \"\\f0c2\"; }\n\n.fa-cloud-download-alt:before {\n  content: \"\\f381\"; }\n\n.fa-cloud-meatball:before {\n  content: \"\\f73b\"; }\n\n.fa-cloud-moon:before {\n  content: \"\\f6c3\"; }\n\n.fa-cloud-moon-rain:before {\n  content: \"\\f73c\"; }\n\n.fa-cloud-rain:before {\n  content: \"\\f73d\"; }\n\n.fa-cloud-showers-heavy:before {\n  content: \"\\f740\"; }\n\n.fa-cloud-sun:before {\n  content: \"\\f6c4\"; }\n\n.fa-cloud-sun-rain:before {\n  content: \"\\f743\"; }\n\n.fa-cloud-upload-alt:before {\n  content: \"\\f382\"; }\n\n.fa-cloudscale:before {\n  content: \"\\f383\"; }\n\n.fa-cloudsmith:before {\n  content: \"\\f384\"; }\n\n.fa-cloudversify:before {\n  content: \"\\f385\"; }\n\n.fa-cocktail:before {\n  content: \"\\f561\"; }\n\n.fa-code:before {\n  content: \"\\f121\"; }\n\n.fa-code-branch:before {\n  content: \"\\f126\"; }\n\n.fa-codepen:before {\n  content: \"\\f1cb\"; }\n\n.fa-codiepie:before {\n  content: \"\\f284\"; }\n\n.fa-coffee:before {\n  content: \"\\f0f4\"; }\n\n.fa-cog:before {\n  content: \"\\f013\"; }\n\n.fa-cogs:before {\n  content: \"\\f085\"; }\n\n.fa-coins:before {\n  content: \"\\f51e\"; }\n\n.fa-columns:before {\n  content: \"\\f0db\"; }\n\n.fa-comment:before {\n  content: \"\\f075\"; }\n\n.fa-comment-alt:before {\n  content: \"\\f27a\"; }\n\n.fa-comment-dollar:before {\n  content: \"\\f651\"; }\n\n.fa-comment-dots:before {\n  content: \"\\f4ad\"; }\n\n.fa-comment-medical:before {\n  content: \"\\f7f5\"; }\n\n.fa-comment-slash:before {\n  content: \"\\f4b3\"; }\n\n.fa-comments:before {\n  content: \"\\f086\"; }\n\n.fa-comments-dollar:before {\n  content: \"\\f653\"; }\n\n.fa-compact-disc:before {\n  content: \"\\f51f\"; }\n\n.fa-compass:before {\n  content: \"\\f14e\"; }\n\n.fa-compress:before {\n  content: \"\\f066\"; }\n\n.fa-compress-arrows-alt:before {\n  content: \"\\f78c\"; }\n\n.fa-concierge-bell:before {\n  content: \"\\f562\"; }\n\n.fa-confluence:before {\n  content: \"\\f78d\"; }\n\n.fa-connectdevelop:before {\n  content: \"\\f20e\"; }\n\n.fa-contao:before {\n  content: \"\\f26d\"; }\n\n.fa-cookie:before {\n  content: \"\\f563\"; }\n\n.fa-cookie-bite:before {\n  content: \"\\f564\"; }\n\n.fa-copy:before {\n  content: \"\\f0c5\"; }\n\n.fa-copyright:before {\n  content: \"\\f1f9\"; }\n\n.fa-cotton-bureau:before {\n  content: \"\\f89e\"; }\n\n.fa-couch:before {\n  content: \"\\f4b8\"; }\n\n.fa-cpanel:before {\n  content: \"\\f388\"; }\n\n.fa-creative-commons:before {\n  content: \"\\f25e\"; }\n\n.fa-creative-commons-by:before {\n  content: \"\\f4e7\"; }\n\n.fa-creative-commons-nc:before {\n  content: \"\\f4e8\"; }\n\n.fa-creative-commons-nc-eu:before {\n  content: \"\\f4e9\"; }\n\n.fa-creative-commons-nc-jp:before {\n  content: \"\\f4ea\"; }\n\n.fa-creative-commons-nd:before {\n  content: \"\\f4eb\"; }\n\n.fa-creative-commons-pd:before {\n  content: \"\\f4ec\"; }\n\n.fa-creative-commons-pd-alt:before {\n  content: \"\\f4ed\"; }\n\n.fa-creative-commons-remix:before {\n  content: \"\\f4ee\"; }\n\n.fa-creative-commons-sa:before {\n  content: \"\\f4ef\"; }\n\n.fa-creative-commons-sampling:before {\n  content: \"\\f4f0\"; }\n\n.fa-creative-commons-sampling-plus:before {\n  content: \"\\f4f1\"; }\n\n.fa-creative-commons-share:before {\n  content: \"\\f4f2\"; }\n\n.fa-creative-commons-zero:before {\n  content: \"\\f4f3\"; }\n\n.fa-credit-card:before {\n  content: \"\\f09d\"; }\n\n.fa-critical-role:before {\n  content: \"\\f6c9\"; }\n\n.fa-crop:before {\n  content: \"\\f125\"; }\n\n.fa-crop-alt:before {\n  content: \"\\f565\"; }\n\n.fa-cross:before {\n  content: \"\\f654\"; }\n\n.fa-crosshairs:before {\n  content: \"\\f05b\"; }\n\n.fa-crow:before {\n  content: \"\\f520\"; }\n\n.fa-crown:before {\n  content: \"\\f521\"; }\n\n.fa-crutch:before {\n  content: \"\\f7f7\"; }\n\n.fa-css3:before {\n  content: \"\\f13c\"; }\n\n.fa-css3-alt:before {\n  content: \"\\f38b\"; }\n\n.fa-cube:before {\n  content: \"\\f1b2\"; }\n\n.fa-cubes:before {\n  content: \"\\f1b3\"; }\n\n.fa-cut:before {\n  content: \"\\f0c4\"; }\n\n.fa-cuttlefish:before {\n  content: \"\\f38c\"; }\n\n.fa-d-and-d:before {\n  content: \"\\f38d\"; }\n\n.fa-d-and-d-beyond:before {\n  content: \"\\f6ca\"; }\n\n.fa-dashcube:before {\n  content: \"\\f210\"; }\n\n.fa-database:before {\n  content: \"\\f1c0\"; }\n\n.fa-deaf:before {\n  content: \"\\f2a4\"; }\n\n.fa-delicious:before {\n  content: \"\\f1a5\"; }\n\n.fa-democrat:before {\n  content: \"\\f747\"; }\n\n.fa-deploydog:before {\n  content: \"\\f38e\"; }\n\n.fa-deskpro:before {\n  content: \"\\f38f\"; }\n\n.fa-desktop:before {\n  content: \"\\f108\"; }\n\n.fa-dev:before {\n  content: \"\\f6cc\"; }\n\n.fa-deviantart:before {\n  content: \"\\f1bd\"; }\n\n.fa-dharmachakra:before {\n  content: \"\\f655\"; }\n\n.fa-dhl:before {\n  content: \"\\f790\"; }\n\n.fa-diagnoses:before {\n  content: \"\\f470\"; }\n\n.fa-diaspora:before {\n  content: \"\\f791\"; }\n\n.fa-dice:before {\n  content: \"\\f522\"; }\n\n.fa-dice-d20:before {\n  content: \"\\f6cf\"; }\n\n.fa-dice-d6:before {\n  content: \"\\f6d1\"; }\n\n.fa-dice-five:before {\n  content: \"\\f523\"; }\n\n.fa-dice-four:before {\n  content: \"\\f524\"; }\n\n.fa-dice-one:before {\n  content: \"\\f525\"; }\n\n.fa-dice-six:before {\n  content: \"\\f526\"; }\n\n.fa-dice-three:before {\n  content: \"\\f527\"; }\n\n.fa-dice-two:before {\n  content: \"\\f528\"; }\n\n.fa-digg:before {\n  content: \"\\f1a6\"; }\n\n.fa-digital-ocean:before {\n  content: \"\\f391\"; }\n\n.fa-digital-tachograph:before {\n  content: \"\\f566\"; }\n\n.fa-directions:before {\n  content: \"\\f5eb\"; }\n\n.fa-discord:before {\n  content: \"\\f392\"; }\n\n.fa-discourse:before {\n  content: \"\\f393\"; }\n\n.fa-divide:before {\n  content: \"\\f529\"; }\n\n.fa-dizzy:before {\n  content: \"\\f567\"; }\n\n.fa-dna:before {\n  content: \"\\f471\"; }\n\n.fa-dochub:before {\n  content: \"\\f394\"; }\n\n.fa-docker:before {\n  content: \"\\f395\"; }\n\n.fa-dog:before {\n  content: \"\\f6d3\"; }\n\n.fa-dollar-sign:before {\n  content: \"\\f155\"; }\n\n.fa-dolly:before {\n  content: \"\\f472\"; }\n\n.fa-dolly-flatbed:before {\n  content: \"\\f474\"; }\n\n.fa-donate:before {\n  content: \"\\f4b9\"; }\n\n.fa-door-closed:before {\n  content: \"\\f52a\"; }\n\n.fa-door-open:before {\n  content: \"\\f52b\"; }\n\n.fa-dot-circle:before {\n  content: \"\\f192\"; }\n\n.fa-dove:before {\n  content: \"\\f4ba\"; }\n\n.fa-download:before {\n  content: \"\\f019\"; }\n\n.fa-draft2digital:before {\n  content: \"\\f396\"; }\n\n.fa-drafting-compass:before {\n  content: \"\\f568\"; }\n\n.fa-dragon:before {\n  content: \"\\f6d5\"; }\n\n.fa-draw-polygon:before {\n  content: \"\\f5ee\"; }\n\n.fa-dribbble:before {\n  content: \"\\f17d\"; }\n\n.fa-dribbble-square:before {\n  content: \"\\f397\"; }\n\n.fa-dropbox:before {\n  content: \"\\f16b\"; }\n\n.fa-drum:before {\n  content: \"\\f569\"; }\n\n.fa-drum-steelpan:before {\n  content: \"\\f56a\"; }\n\n.fa-drumstick-bite:before {\n  content: \"\\f6d7\"; }\n\n.fa-drupal:before {\n  content: \"\\f1a9\"; }\n\n.fa-dumbbell:before {\n  content: \"\\f44b\"; }\n\n.fa-dumpster:before {\n  content: \"\\f793\"; }\n\n.fa-dumpster-fire:before {\n  content: \"\\f794\"; }\n\n.fa-dungeon:before {\n  content: \"\\f6d9\"; }\n\n.fa-dyalog:before {\n  content: \"\\f399\"; }\n\n.fa-earlybirds:before {\n  content: \"\\f39a\"; }\n\n.fa-ebay:before {\n  content: \"\\f4f4\"; }\n\n.fa-edge:before {\n  content: \"\\f282\"; }\n\n.fa-edit:before {\n  content: \"\\f044\"; }\n\n.fa-egg:before {\n  content: \"\\f7fb\"; }\n\n.fa-eject:before {\n  content: \"\\f052\"; }\n\n.fa-elementor:before {\n  content: \"\\f430\"; }\n\n.fa-ellipsis-h:before {\n  content: \"\\f141\"; }\n\n.fa-ellipsis-v:before {\n  content: \"\\f142\"; }\n\n.fa-ello:before {\n  content: \"\\f5f1\"; }\n\n.fa-ember:before {\n  content: \"\\f423\"; }\n\n.fa-empire:before {\n  content: \"\\f1d1\"; }\n\n.fa-envelope:before {\n  content: \"\\f0e0\"; }\n\n.fa-envelope-open:before {\n  content: \"\\f2b6\"; }\n\n.fa-envelope-open-text:before {\n  content: \"\\f658\"; }\n\n.fa-envelope-square:before {\n  content: \"\\f199\"; }\n\n.fa-envira:before {\n  content: \"\\f299\"; }\n\n.fa-equals:before {\n  content: \"\\f52c\"; }\n\n.fa-eraser:before {\n  content: \"\\f12d\"; }\n\n.fa-erlang:before {\n  content: \"\\f39d\"; }\n\n.fa-ethereum:before {\n  content: \"\\f42e\"; }\n\n.fa-ethernet:before {\n  content: \"\\f796\"; }\n\n.fa-etsy:before {\n  content: \"\\f2d7\"; }\n\n.fa-euro-sign:before {\n  content: \"\\f153\"; }\n\n.fa-evernote:before {\n  content: \"\\f839\"; }\n\n.fa-exchange-alt:before {\n  content: \"\\f362\"; }\n\n.fa-exclamation:before {\n  content: \"\\f12a\"; }\n\n.fa-exclamation-circle:before {\n  content: \"\\f06a\"; }\n\n.fa-exclamation-triangle:before {\n  content: \"\\f071\"; }\n\n.fa-expand:before {\n  content: \"\\f065\"; }\n\n.fa-expand-arrows-alt:before {\n  content: \"\\f31e\"; }\n\n.fa-expeditedssl:before {\n  content: \"\\f23e\"; }\n\n.fa-external-link-alt:before {\n  content: \"\\f35d\"; }\n\n.fa-external-link-square-alt:before {\n  content: \"\\f360\"; }\n\n.fa-eye:before {\n  content: \"\\f06e\"; }\n\n.fa-eye-dropper:before {\n  content: \"\\f1fb\"; }\n\n.fa-eye-slash:before {\n  content: \"\\f070\"; }\n\n.fa-facebook:before {\n  content: \"\\f09a\"; }\n\n.fa-facebook-f:before {\n  content: \"\\f39e\"; }\n\n.fa-facebook-messenger:before {\n  content: \"\\f39f\"; }\n\n.fa-facebook-square:before {\n  content: \"\\f082\"; }\n\n.fa-fan:before {\n  content: \"\\f863\"; }\n\n.fa-fantasy-flight-games:before {\n  content: \"\\f6dc\"; }\n\n.fa-fast-backward:before {\n  content: \"\\f049\"; }\n\n.fa-fast-forward:before {\n  content: \"\\f050\"; }\n\n.fa-fax:before {\n  content: \"\\f1ac\"; }\n\n.fa-feather:before {\n  content: \"\\f52d\"; }\n\n.fa-feather-alt:before {\n  content: \"\\f56b\"; }\n\n.fa-fedex:before {\n  content: \"\\f797\"; }\n\n.fa-fedora:before {\n  content: \"\\f798\"; }\n\n.fa-female:before {\n  content: \"\\f182\"; }\n\n.fa-fighter-jet:before {\n  content: \"\\f0fb\"; }\n\n.fa-figma:before {\n  content: \"\\f799\"; }\n\n.fa-file:before {\n  content: \"\\f15b\"; }\n\n.fa-file-alt:before {\n  content: \"\\f15c\"; }\n\n.fa-file-archive:before {\n  content: \"\\f1c6\"; }\n\n.fa-file-audio:before {\n  content: \"\\f1c7\"; }\n\n.fa-file-code:before {\n  content: \"\\f1c9\"; }\n\n.fa-file-contract:before {\n  content: \"\\f56c\"; }\n\n.fa-file-csv:before {\n  content: \"\\f6dd\"; }\n\n.fa-file-download:before {\n  content: \"\\f56d\"; }\n\n.fa-file-excel:before {\n  content: \"\\f1c3\"; }\n\n.fa-file-export:before {\n  content: \"\\f56e\"; }\n\n.fa-file-image:before {\n  content: \"\\f1c5\"; }\n\n.fa-file-import:before {\n  content: \"\\f56f\"; }\n\n.fa-file-invoice:before {\n  content: \"\\f570\"; }\n\n.fa-file-invoice-dollar:before {\n  content: \"\\f571\"; }\n\n.fa-file-medical:before {\n  content: \"\\f477\"; }\n\n.fa-file-medical-alt:before {\n  content: \"\\f478\"; }\n\n.fa-file-pdf:before {\n  content: \"\\f1c1\"; }\n\n.fa-file-powerpoint:before {\n  content: \"\\f1c4\"; }\n\n.fa-file-prescription:before {\n  content: \"\\f572\"; }\n\n.fa-file-signature:before {\n  content: \"\\f573\"; }\n\n.fa-file-upload:before {\n  content: \"\\f574\"; }\n\n.fa-file-video:before {\n  content: \"\\f1c8\"; }\n\n.fa-file-word:before {\n  content: \"\\f1c2\"; }\n\n.fa-fill:before {\n  content: \"\\f575\"; }\n\n.fa-fill-drip:before {\n  content: \"\\f576\"; }\n\n.fa-film:before {\n  content: \"\\f008\"; }\n\n.fa-filter:before {\n  content: \"\\f0b0\"; }\n\n.fa-fingerprint:before {\n  content: \"\\f577\"; }\n\n.fa-fire:before {\n  content: \"\\f06d\"; }\n\n.fa-fire-alt:before {\n  content: \"\\f7e4\"; }\n\n.fa-fire-extinguisher:before {\n  content: \"\\f134\"; }\n\n.fa-firefox:before {\n  content: \"\\f269\"; }\n\n.fa-first-aid:before {\n  content: \"\\f479\"; }\n\n.fa-first-order:before {\n  content: \"\\f2b0\"; }\n\n.fa-first-order-alt:before {\n  content: \"\\f50a\"; }\n\n.fa-firstdraft:before {\n  content: \"\\f3a1\"; }\n\n.fa-fish:before {\n  content: \"\\f578\"; }\n\n.fa-fist-raised:before {\n  content: \"\\f6de\"; }\n\n.fa-flag:before {\n  content: \"\\f024\"; }\n\n.fa-flag-checkered:before {\n  content: \"\\f11e\"; }\n\n.fa-flag-usa:before {\n  content: \"\\f74d\"; }\n\n.fa-flask:before {\n  content: \"\\f0c3\"; }\n\n.fa-flickr:before {\n  content: \"\\f16e\"; }\n\n.fa-flipboard:before {\n  content: \"\\f44d\"; }\n\n.fa-flushed:before {\n  content: \"\\f579\"; }\n\n.fa-fly:before {\n  content: \"\\f417\"; }\n\n.fa-folder:before {\n  content: \"\\f07b\"; }\n\n.fa-folder-minus:before {\n  content: \"\\f65d\"; }\n\n.fa-folder-open:before {\n  content: \"\\f07c\"; }\n\n.fa-folder-plus:before {\n  content: \"\\f65e\"; }\n\n.fa-font:before {\n  content: \"\\f031\"; }\n\n.fa-font-awesome:before {\n  content: \"\\f2b4\"; }\n\n.fa-font-awesome-alt:before {\n  content: \"\\f35c\"; }\n\n.fa-font-awesome-flag:before {\n  content: \"\\f425\"; }\n\n.fa-font-awesome-logo-full:before {\n  content: \"\\f4e6\"; }\n\n.fa-fonticons:before {\n  content: \"\\f280\"; }\n\n.fa-fonticons-fi:before {\n  content: \"\\f3a2\"; }\n\n.fa-football-ball:before {\n  content: \"\\f44e\"; }\n\n.fa-fort-awesome:before {\n  content: \"\\f286\"; }\n\n.fa-fort-awesome-alt:before {\n  content: \"\\f3a3\"; }\n\n.fa-forumbee:before {\n  content: \"\\f211\"; }\n\n.fa-forward:before {\n  content: \"\\f04e\"; }\n\n.fa-foursquare:before {\n  content: \"\\f180\"; }\n\n.fa-free-code-camp:before {\n  content: \"\\f2c5\"; }\n\n.fa-freebsd:before {\n  content: \"\\f3a4\"; }\n\n.fa-frog:before {\n  content: \"\\f52e\"; }\n\n.fa-frown:before {\n  content: \"\\f119\"; }\n\n.fa-frown-open:before {\n  content: \"\\f57a\"; }\n\n.fa-fulcrum:before {\n  content: \"\\f50b\"; }\n\n.fa-funnel-dollar:before {\n  content: \"\\f662\"; }\n\n.fa-futbol:before {\n  content: \"\\f1e3\"; }\n\n.fa-galactic-republic:before {\n  content: \"\\f50c\"; }\n\n.fa-galactic-senate:before {\n  content: \"\\f50d\"; }\n\n.fa-gamepad:before {\n  content: \"\\f11b\"; }\n\n.fa-gas-pump:before {\n  content: \"\\f52f\"; }\n\n.fa-gavel:before {\n  content: \"\\f0e3\"; }\n\n.fa-gem:before {\n  content: \"\\f3a5\"; }\n\n.fa-genderless:before {\n  content: \"\\f22d\"; }\n\n.fa-get-pocket:before {\n  content: \"\\f265\"; }\n\n.fa-gg:before {\n  content: \"\\f260\"; }\n\n.fa-gg-circle:before {\n  content: \"\\f261\"; }\n\n.fa-ghost:before {\n  content: \"\\f6e2\"; }\n\n.fa-gift:before {\n  content: \"\\f06b\"; }\n\n.fa-gifts:before {\n  content: \"\\f79c\"; }\n\n.fa-git:before {\n  content: \"\\f1d3\"; }\n\n.fa-git-alt:before {\n  content: \"\\f841\"; }\n\n.fa-git-square:before {\n  content: \"\\f1d2\"; }\n\n.fa-github:before {\n  content: \"\\f09b\"; }\n\n.fa-github-alt:before {\n  content: \"\\f113\"; }\n\n.fa-github-square:before {\n  content: \"\\f092\"; }\n\n.fa-gitkraken:before {\n  content: \"\\f3a6\"; }\n\n.fa-gitlab:before {\n  content: \"\\f296\"; }\n\n.fa-gitter:before {\n  content: \"\\f426\"; }\n\n.fa-glass-cheers:before {\n  content: \"\\f79f\"; }\n\n.fa-glass-martini:before {\n  content: \"\\f000\"; }\n\n.fa-glass-martini-alt:before {\n  content: \"\\f57b\"; }\n\n.fa-glass-whiskey:before {\n  content: \"\\f7a0\"; }\n\n.fa-glasses:before {\n  content: \"\\f530\"; }\n\n.fa-glide:before {\n  content: \"\\f2a5\"; }\n\n.fa-glide-g:before {\n  content: \"\\f2a6\"; }\n\n.fa-globe:before {\n  content: \"\\f0ac\"; }\n\n.fa-globe-africa:before {\n  content: \"\\f57c\"; }\n\n.fa-globe-americas:before {\n  content: \"\\f57d\"; }\n\n.fa-globe-asia:before {\n  content: \"\\f57e\"; }\n\n.fa-globe-europe:before {\n  content: \"\\f7a2\"; }\n\n.fa-gofore:before {\n  content: \"\\f3a7\"; }\n\n.fa-golf-ball:before {\n  content: \"\\f450\"; }\n\n.fa-goodreads:before {\n  content: \"\\f3a8\"; }\n\n.fa-goodreads-g:before {\n  content: \"\\f3a9\"; }\n\n.fa-google:before {\n  content: \"\\f1a0\"; }\n\n.fa-google-drive:before {\n  content: \"\\f3aa\"; }\n\n.fa-google-play:before {\n  content: \"\\f3ab\"; }\n\n.fa-google-plus:before {\n  content: \"\\f2b3\"; }\n\n.fa-google-plus-g:before {\n  content: \"\\f0d5\"; }\n\n.fa-google-plus-square:before {\n  content: \"\\f0d4\"; }\n\n.fa-google-wallet:before {\n  content: \"\\f1ee\"; }\n\n.fa-gopuram:before {\n  content: \"\\f664\"; }\n\n.fa-graduation-cap:before {\n  content: \"\\f19d\"; }\n\n.fa-gratipay:before {\n  content: \"\\f184\"; }\n\n.fa-grav:before {\n  content: \"\\f2d6\"; }\n\n.fa-greater-than:before {\n  content: \"\\f531\"; }\n\n.fa-greater-than-equal:before {\n  content: \"\\f532\"; }\n\n.fa-grimace:before {\n  content: \"\\f57f\"; }\n\n.fa-grin:before {\n  content: \"\\f580\"; }\n\n.fa-grin-alt:before {\n  content: \"\\f581\"; }\n\n.fa-grin-beam:before {\n  content: \"\\f582\"; }\n\n.fa-grin-beam-sweat:before {\n  content: \"\\f583\"; }\n\n.fa-grin-hearts:before {\n  content: \"\\f584\"; }\n\n.fa-grin-squint:before {\n  content: \"\\f585\"; }\n\n.fa-grin-squint-tears:before {\n  content: \"\\f586\"; }\n\n.fa-grin-stars:before {\n  content: \"\\f587\"; }\n\n.fa-grin-tears:before {\n  content: \"\\f588\"; }\n\n.fa-grin-tongue:before {\n  content: \"\\f589\"; }\n\n.fa-grin-tongue-squint:before {\n  content: \"\\f58a\"; }\n\n.fa-grin-tongue-wink:before {\n  content: \"\\f58b\"; }\n\n.fa-grin-wink:before {\n  content: \"\\f58c\"; }\n\n.fa-grip-horizontal:before {\n  content: \"\\f58d\"; }\n\n.fa-grip-lines:before {\n  content: \"\\f7a4\"; }\n\n.fa-grip-lines-vertical:before {\n  content: \"\\f7a5\"; }\n\n.fa-grip-vertical:before {\n  content: \"\\f58e\"; }\n\n.fa-gripfire:before {\n  content: \"\\f3ac\"; }\n\n.fa-grunt:before {\n  content: \"\\f3ad\"; }\n\n.fa-guitar:before {\n  content: \"\\f7a6\"; }\n\n.fa-gulp:before {\n  content: \"\\f3ae\"; }\n\n.fa-h-square:before {\n  content: \"\\f0fd\"; }\n\n.fa-hacker-news:before {\n  content: \"\\f1d4\"; }\n\n.fa-hacker-news-square:before {\n  content: \"\\f3af\"; }\n\n.fa-hackerrank:before {\n  content: \"\\f5f7\"; }\n\n.fa-hamburger:before {\n  content: \"\\f805\"; }\n\n.fa-hammer:before {\n  content: \"\\f6e3\"; }\n\n.fa-hamsa:before {\n  content: \"\\f665\"; }\n\n.fa-hand-holding:before {\n  content: \"\\f4bd\"; }\n\n.fa-hand-holding-heart:before {\n  content: \"\\f4be\"; }\n\n.fa-hand-holding-usd:before {\n  content: \"\\f4c0\"; }\n\n.fa-hand-lizard:before {\n  content: \"\\f258\"; }\n\n.fa-hand-middle-finger:before {\n  content: \"\\f806\"; }\n\n.fa-hand-paper:before {\n  content: \"\\f256\"; }\n\n.fa-hand-peace:before {\n  content: \"\\f25b\"; }\n\n.fa-hand-point-down:before {\n  content: \"\\f0a7\"; }\n\n.fa-hand-point-left:before {\n  content: \"\\f0a5\"; }\n\n.fa-hand-point-right:before {\n  content: \"\\f0a4\"; }\n\n.fa-hand-point-up:before {\n  content: \"\\f0a6\"; }\n\n.fa-hand-pointer:before {\n  content: \"\\f25a\"; }\n\n.fa-hand-rock:before {\n  content: \"\\f255\"; }\n\n.fa-hand-scissors:before {\n  content: \"\\f257\"; }\n\n.fa-hand-spock:before {\n  content: \"\\f259\"; }\n\n.fa-hands:before {\n  content: \"\\f4c2\"; }\n\n.fa-hands-helping:before {\n  content: \"\\f4c4\"; }\n\n.fa-handshake:before {\n  content: \"\\f2b5\"; }\n\n.fa-hanukiah:before {\n  content: \"\\f6e6\"; }\n\n.fa-hard-hat:before {\n  content: \"\\f807\"; }\n\n.fa-hashtag:before {\n  content: \"\\f292\"; }\n\n.fa-hat-cowboy:before {\n  content: \"\\f8c0\"; }\n\n.fa-hat-cowboy-side:before {\n  content: \"\\f8c1\"; }\n\n.fa-hat-wizard:before {\n  content: \"\\f6e8\"; }\n\n.fa-haykal:before {\n  content: \"\\f666\"; }\n\n.fa-hdd:before {\n  content: \"\\f0a0\"; }\n\n.fa-heading:before {\n  content: \"\\f1dc\"; }\n\n.fa-headphones:before {\n  content: \"\\f025\"; }\n\n.fa-headphones-alt:before {\n  content: \"\\f58f\"; }\n\n.fa-headset:before {\n  content: \"\\f590\"; }\n\n.fa-heart:before {\n  content: \"\\f004\"; }\n\n.fa-heart-broken:before {\n  content: \"\\f7a9\"; }\n\n.fa-heartbeat:before {\n  content: \"\\f21e\"; }\n\n.fa-helicopter:before {\n  content: \"\\f533\"; }\n\n.fa-highlighter:before {\n  content: \"\\f591\"; }\n\n.fa-hiking:before {\n  content: \"\\f6ec\"; }\n\n.fa-hippo:before {\n  content: \"\\f6ed\"; }\n\n.fa-hips:before {\n  content: \"\\f452\"; }\n\n.fa-hire-a-helper:before {\n  content: \"\\f3b0\"; }\n\n.fa-history:before {\n  content: \"\\f1da\"; }\n\n.fa-hockey-puck:before {\n  content: \"\\f453\"; }\n\n.fa-holly-berry:before {\n  content: \"\\f7aa\"; }\n\n.fa-home:before {\n  content: \"\\f015\"; }\n\n.fa-hooli:before {\n  content: \"\\f427\"; }\n\n.fa-hornbill:before {\n  content: \"\\f592\"; }\n\n.fa-horse:before {\n  content: \"\\f6f0\"; }\n\n.fa-horse-head:before {\n  content: \"\\f7ab\"; }\n\n.fa-hospital:before {\n  content: \"\\f0f8\"; }\n\n.fa-hospital-alt:before {\n  content: \"\\f47d\"; }\n\n.fa-hospital-symbol:before {\n  content: \"\\f47e\"; }\n\n.fa-hot-tub:before {\n  content: \"\\f593\"; }\n\n.fa-hotdog:before {\n  content: \"\\f80f\"; }\n\n.fa-hotel:before {\n  content: \"\\f594\"; }\n\n.fa-hotjar:before {\n  content: \"\\f3b1\"; }\n\n.fa-hourglass:before {\n  content: \"\\f254\"; }\n\n.fa-hourglass-end:before {\n  content: \"\\f253\"; }\n\n.fa-hourglass-half:before {\n  content: \"\\f252\"; }\n\n.fa-hourglass-start:before {\n  content: \"\\f251\"; }\n\n.fa-house-damage:before {\n  content: \"\\f6f1\"; }\n\n.fa-houzz:before {\n  content: \"\\f27c\"; }\n\n.fa-hryvnia:before {\n  content: \"\\f6f2\"; }\n\n.fa-html5:before {\n  content: \"\\f13b\"; }\n\n.fa-hubspot:before {\n  content: \"\\f3b2\"; }\n\n.fa-i-cursor:before {\n  content: \"\\f246\"; }\n\n.fa-ice-cream:before {\n  content: \"\\f810\"; }\n\n.fa-icicles:before {\n  content: \"\\f7ad\"; }\n\n.fa-icons:before {\n  content: \"\\f86d\"; }\n\n.fa-id-badge:before {\n  content: \"\\f2c1\"; }\n\n.fa-id-card:before {\n  content: \"\\f2c2\"; }\n\n.fa-id-card-alt:before {\n  content: \"\\f47f\"; }\n\n.fa-igloo:before {\n  content: \"\\f7ae\"; }\n\n.fa-image:before {\n  content: \"\\f03e\"; }\n\n.fa-images:before {\n  content: \"\\f302\"; }\n\n.fa-imdb:before {\n  content: \"\\f2d8\"; }\n\n.fa-inbox:before {\n  content: \"\\f01c\"; }\n\n.fa-indent:before {\n  content: \"\\f03c\"; }\n\n.fa-industry:before {\n  content: \"\\f275\"; }\n\n.fa-infinity:before {\n  content: \"\\f534\"; }\n\n.fa-info:before {\n  content: \"\\f129\"; }\n\n.fa-info-circle:before {\n  content: \"\\f05a\"; }\n\n.fa-instagram:before {\n  content: \"\\f16d\"; }\n\n.fa-intercom:before {\n  content: \"\\f7af\"; }\n\n.fa-internet-explorer:before {\n  content: \"\\f26b\"; }\n\n.fa-invision:before {\n  content: \"\\f7b0\"; }\n\n.fa-ioxhost:before {\n  content: \"\\f208\"; }\n\n.fa-italic:before {\n  content: \"\\f033\"; }\n\n.fa-itch-io:before {\n  content: \"\\f83a\"; }\n\n.fa-itunes:before {\n  content: \"\\f3b4\"; }\n\n.fa-itunes-note:before {\n  content: \"\\f3b5\"; }\n\n.fa-java:before {\n  content: \"\\f4e4\"; }\n\n.fa-jedi:before {\n  content: \"\\f669\"; }\n\n.fa-jedi-order:before {\n  content: \"\\f50e\"; }\n\n.fa-jenkins:before {\n  content: \"\\f3b6\"; }\n\n.fa-jira:before {\n  content: \"\\f7b1\"; }\n\n.fa-joget:before {\n  content: \"\\f3b7\"; }\n\n.fa-joint:before {\n  content: \"\\f595\"; }\n\n.fa-joomla:before {\n  content: \"\\f1aa\"; }\n\n.fa-journal-whills:before {\n  content: \"\\f66a\"; }\n\n.fa-js:before {\n  content: \"\\f3b8\"; }\n\n.fa-js-square:before {\n  content: \"\\f3b9\"; }\n\n.fa-jsfiddle:before {\n  content: \"\\f1cc\"; }\n\n.fa-kaaba:before {\n  content: \"\\f66b\"; }\n\n.fa-kaggle:before {\n  content: \"\\f5fa\"; }\n\n.fa-key:before {\n  content: \"\\f084\"; }\n\n.fa-keybase:before {\n  content: \"\\f4f5\"; }\n\n.fa-keyboard:before {\n  content: \"\\f11c\"; }\n\n.fa-keycdn:before {\n  content: \"\\f3ba\"; }\n\n.fa-khanda:before {\n  content: \"\\f66d\"; }\n\n.fa-kickstarter:before {\n  content: \"\\f3bb\"; }\n\n.fa-kickstarter-k:before {\n  content: \"\\f3bc\"; }\n\n.fa-kiss:before {\n  content: \"\\f596\"; }\n\n.fa-kiss-beam:before {\n  content: \"\\f597\"; }\n\n.fa-kiss-wink-heart:before {\n  content: \"\\f598\"; }\n\n.fa-kiwi-bird:before {\n  content: \"\\f535\"; }\n\n.fa-korvue:before {\n  content: \"\\f42f\"; }\n\n.fa-landmark:before {\n  content: \"\\f66f\"; }\n\n.fa-language:before {\n  content: \"\\f1ab\"; }\n\n.fa-laptop:before {\n  content: \"\\f109\"; }\n\n.fa-laptop-code:before {\n  content: \"\\f5fc\"; }\n\n.fa-laptop-medical:before {\n  content: \"\\f812\"; }\n\n.fa-laravel:before {\n  content: \"\\f3bd\"; }\n\n.fa-lastfm:before {\n  content: \"\\f202\"; }\n\n.fa-lastfm-square:before {\n  content: \"\\f203\"; }\n\n.fa-laugh:before {\n  content: \"\\f599\"; }\n\n.fa-laugh-beam:before {\n  content: \"\\f59a\"; }\n\n.fa-laugh-squint:before {\n  content: \"\\f59b\"; }\n\n.fa-laugh-wink:before {\n  content: \"\\f59c\"; }\n\n.fa-layer-group:before {\n  content: \"\\f5fd\"; }\n\n.fa-leaf:before {\n  content: \"\\f06c\"; }\n\n.fa-leanpub:before {\n  content: \"\\f212\"; }\n\n.fa-lemon:before {\n  content: \"\\f094\"; }\n\n.fa-less:before {\n  content: \"\\f41d\"; }\n\n.fa-less-than:before {\n  content: \"\\f536\"; }\n\n.fa-less-than-equal:before {\n  content: \"\\f537\"; }\n\n.fa-level-down-alt:before {\n  content: \"\\f3be\"; }\n\n.fa-level-up-alt:before {\n  content: \"\\f3bf\"; }\n\n.fa-life-ring:before {\n  content: \"\\f1cd\"; }\n\n.fa-lightbulb:before {\n  content: \"\\f0eb\"; }\n\n.fa-line:before {\n  content: \"\\f3c0\"; }\n\n.fa-link:before {\n  content: \"\\f0c1\"; }\n\n.fa-linkedin:before {\n  content: \"\\f08c\"; }\n\n.fa-linkedin-in:before {\n  content: \"\\f0e1\"; }\n\n.fa-linode:before {\n  content: \"\\f2b8\"; }\n\n.fa-linux:before {\n  content: \"\\f17c\"; }\n\n.fa-lira-sign:before {\n  content: \"\\f195\"; }\n\n.fa-list:before {\n  content: \"\\f03a\"; }\n\n.fa-list-alt:before {\n  content: \"\\f022\"; }\n\n.fa-list-ol:before {\n  content: \"\\f0cb\"; }\n\n.fa-list-ul:before {\n  content: \"\\f0ca\"; }\n\n.fa-location-arrow:before {\n  content: \"\\f124\"; }\n\n.fa-lock:before {\n  content: \"\\f023\"; }\n\n.fa-lock-open:before {\n  content: \"\\f3c1\"; }\n\n.fa-long-arrow-alt-down:before {\n  content: \"\\f309\"; }\n\n.fa-long-arrow-alt-left:before {\n  content: \"\\f30a\"; }\n\n.fa-long-arrow-alt-right:before {\n  content: \"\\f30b\"; }\n\n.fa-long-arrow-alt-up:before {\n  content: \"\\f30c\"; }\n\n.fa-low-vision:before {\n  content: \"\\f2a8\"; }\n\n.fa-luggage-cart:before {\n  content: \"\\f59d\"; }\n\n.fa-lyft:before {\n  content: \"\\f3c3\"; }\n\n.fa-magento:before {\n  content: \"\\f3c4\"; }\n\n.fa-magic:before {\n  content: \"\\f0d0\"; }\n\n.fa-magnet:before {\n  content: \"\\f076\"; }\n\n.fa-mail-bulk:before {\n  content: \"\\f674\"; }\n\n.fa-mailchimp:before {\n  content: \"\\f59e\"; }\n\n.fa-male:before {\n  content: \"\\f183\"; }\n\n.fa-mandalorian:before {\n  content: \"\\f50f\"; }\n\n.fa-map:before {\n  content: \"\\f279\"; }\n\n.fa-map-marked:before {\n  content: \"\\f59f\"; }\n\n.fa-map-marked-alt:before {\n  content: \"\\f5a0\"; }\n\n.fa-map-marker:before {\n  content: \"\\f041\"; }\n\n.fa-map-marker-alt:before {\n  content: \"\\f3c5\"; }\n\n.fa-map-pin:before {\n  content: \"\\f276\"; }\n\n.fa-map-signs:before {\n  content: \"\\f277\"; }\n\n.fa-markdown:before {\n  content: \"\\f60f\"; }\n\n.fa-marker:before {\n  content: \"\\f5a1\"; }\n\n.fa-mars:before {\n  content: \"\\f222\"; }\n\n.fa-mars-double:before {\n  content: \"\\f227\"; }\n\n.fa-mars-stroke:before {\n  content: \"\\f229\"; }\n\n.fa-mars-stroke-h:before {\n  content: \"\\f22b\"; }\n\n.fa-mars-stroke-v:before {\n  content: \"\\f22a\"; }\n\n.fa-mask:before {\n  content: \"\\f6fa\"; }\n\n.fa-mastodon:before {\n  content: \"\\f4f6\"; }\n\n.fa-maxcdn:before {\n  content: \"\\f136\"; }\n\n.fa-mdb:before {\n  content: \"\\f8ca\"; }\n\n.fa-medal:before {\n  content: \"\\f5a2\"; }\n\n.fa-medapps:before {\n  content: \"\\f3c6\"; }\n\n.fa-medium:before {\n  content: \"\\f23a\"; }\n\n.fa-medium-m:before {\n  content: \"\\f3c7\"; }\n\n.fa-medkit:before {\n  content: \"\\f0fa\"; }\n\n.fa-medrt:before {\n  content: \"\\f3c8\"; }\n\n.fa-meetup:before {\n  content: \"\\f2e0\"; }\n\n.fa-megaport:before {\n  content: \"\\f5a3\"; }\n\n.fa-meh:before {\n  content: \"\\f11a\"; }\n\n.fa-meh-blank:before {\n  content: \"\\f5a4\"; }\n\n.fa-meh-rolling-eyes:before {\n  content: \"\\f5a5\"; }\n\n.fa-memory:before {\n  content: \"\\f538\"; }\n\n.fa-mendeley:before {\n  content: \"\\f7b3\"; }\n\n.fa-menorah:before {\n  content: \"\\f676\"; }\n\n.fa-mercury:before {\n  content: \"\\f223\"; }\n\n.fa-meteor:before {\n  content: \"\\f753\"; }\n\n.fa-microchip:before {\n  content: \"\\f2db\"; }\n\n.fa-microphone:before {\n  content: \"\\f130\"; }\n\n.fa-microphone-alt:before {\n  content: \"\\f3c9\"; }\n\n.fa-microphone-alt-slash:before {\n  content: \"\\f539\"; }\n\n.fa-microphone-slash:before {\n  content: \"\\f131\"; }\n\n.fa-microscope:before {\n  content: \"\\f610\"; }\n\n.fa-microsoft:before {\n  content: \"\\f3ca\"; }\n\n.fa-minus:before {\n  content: \"\\f068\"; }\n\n.fa-minus-circle:before {\n  content: \"\\f056\"; }\n\n.fa-minus-square:before {\n  content: \"\\f146\"; }\n\n.fa-mitten:before {\n  content: \"\\f7b5\"; }\n\n.fa-mix:before {\n  content: \"\\f3cb\"; }\n\n.fa-mixcloud:before {\n  content: \"\\f289\"; }\n\n.fa-mizuni:before {\n  content: \"\\f3cc\"; }\n\n.fa-mobile:before {\n  content: \"\\f10b\"; }\n\n.fa-mobile-alt:before {\n  content: \"\\f3cd\"; }\n\n.fa-modx:before {\n  content: \"\\f285\"; }\n\n.fa-monero:before {\n  content: \"\\f3d0\"; }\n\n.fa-money-bill:before {\n  content: \"\\f0d6\"; }\n\n.fa-money-bill-alt:before {\n  content: \"\\f3d1\"; }\n\n.fa-money-bill-wave:before {\n  content: \"\\f53a\"; }\n\n.fa-money-bill-wave-alt:before {\n  content: \"\\f53b\"; }\n\n.fa-money-check:before {\n  content: \"\\f53c\"; }\n\n.fa-money-check-alt:before {\n  content: \"\\f53d\"; }\n\n.fa-monument:before {\n  content: \"\\f5a6\"; }\n\n.fa-moon:before {\n  content: \"\\f186\"; }\n\n.fa-mortar-pestle:before {\n  content: \"\\f5a7\"; }\n\n.fa-mosque:before {\n  content: \"\\f678\"; }\n\n.fa-motorcycle:before {\n  content: \"\\f21c\"; }\n\n.fa-mountain:before {\n  content: \"\\f6fc\"; }\n\n.fa-mouse:before {\n  content: \"\\f8cc\"; }\n\n.fa-mouse-pointer:before {\n  content: \"\\f245\"; }\n\n.fa-mug-hot:before {\n  content: \"\\f7b6\"; }\n\n.fa-music:before {\n  content: \"\\f001\"; }\n\n.fa-napster:before {\n  content: \"\\f3d2\"; }\n\n.fa-neos:before {\n  content: \"\\f612\"; }\n\n.fa-network-wired:before {\n  content: \"\\f6ff\"; }\n\n.fa-neuter:before {\n  content: \"\\f22c\"; }\n\n.fa-newspaper:before {\n  content: \"\\f1ea\"; }\n\n.fa-nimblr:before {\n  content: \"\\f5a8\"; }\n\n.fa-node:before {\n  content: \"\\f419\"; }\n\n.fa-node-js:before {\n  content: \"\\f3d3\"; }\n\n.fa-not-equal:before {\n  content: \"\\f53e\"; }\n\n.fa-notes-medical:before {\n  content: \"\\f481\"; }\n\n.fa-npm:before {\n  content: \"\\f3d4\"; }\n\n.fa-ns8:before {\n  content: \"\\f3d5\"; }\n\n.fa-nutritionix:before {\n  content: \"\\f3d6\"; }\n\n.fa-object-group:before {\n  content: \"\\f247\"; }\n\n.fa-object-ungroup:before {\n  content: \"\\f248\"; }\n\n.fa-odnoklassniki:before {\n  content: \"\\f263\"; }\n\n.fa-odnoklassniki-square:before {\n  content: \"\\f264\"; }\n\n.fa-oil-can:before {\n  content: \"\\f613\"; }\n\n.fa-old-republic:before {\n  content: \"\\f510\"; }\n\n.fa-om:before {\n  content: \"\\f679\"; }\n\n.fa-opencart:before {\n  content: \"\\f23d\"; }\n\n.fa-openid:before {\n  content: \"\\f19b\"; }\n\n.fa-opera:before {\n  content: \"\\f26a\"; }\n\n.fa-optin-monster:before {\n  content: \"\\f23c\"; }\n\n.fa-orcid:before {\n  content: \"\\f8d2\"; }\n\n.fa-osi:before {\n  content: \"\\f41a\"; }\n\n.fa-otter:before {\n  content: \"\\f700\"; }\n\n.fa-outdent:before {\n  content: \"\\f03b\"; }\n\n.fa-page4:before {\n  content: \"\\f3d7\"; }\n\n.fa-pagelines:before {\n  content: \"\\f18c\"; }\n\n.fa-pager:before {\n  content: \"\\f815\"; }\n\n.fa-paint-brush:before {\n  content: \"\\f1fc\"; }\n\n.fa-paint-roller:before {\n  content: \"\\f5aa\"; }\n\n.fa-palette:before {\n  content: \"\\f53f\"; }\n\n.fa-palfed:before {\n  content: \"\\f3d8\"; }\n\n.fa-pallet:before {\n  content: \"\\f482\"; }\n\n.fa-paper-plane:before {\n  content: \"\\f1d8\"; }\n\n.fa-paperclip:before {\n  content: \"\\f0c6\"; }\n\n.fa-parachute-box:before {\n  content: \"\\f4cd\"; }\n\n.fa-paragraph:before {\n  content: \"\\f1dd\"; }\n\n.fa-parking:before {\n  content: \"\\f540\"; }\n\n.fa-passport:before {\n  content: \"\\f5ab\"; }\n\n.fa-pastafarianism:before {\n  content: \"\\f67b\"; }\n\n.fa-paste:before {\n  content: \"\\f0ea\"; }\n\n.fa-patreon:before {\n  content: \"\\f3d9\"; }\n\n.fa-pause:before {\n  content: \"\\f04c\"; }\n\n.fa-pause-circle:before {\n  content: \"\\f28b\"; }\n\n.fa-paw:before {\n  content: \"\\f1b0\"; }\n\n.fa-paypal:before {\n  content: \"\\f1ed\"; }\n\n.fa-peace:before {\n  content: \"\\f67c\"; }\n\n.fa-pen:before {\n  content: \"\\f304\"; }\n\n.fa-pen-alt:before {\n  content: \"\\f305\"; }\n\n.fa-pen-fancy:before {\n  content: \"\\f5ac\"; }\n\n.fa-pen-nib:before {\n  content: \"\\f5ad\"; }\n\n.fa-pen-square:before {\n  content: \"\\f14b\"; }\n\n.fa-pencil-alt:before {\n  content: \"\\f303\"; }\n\n.fa-pencil-ruler:before {\n  content: \"\\f5ae\"; }\n\n.fa-penny-arcade:before {\n  content: \"\\f704\"; }\n\n.fa-people-carry:before {\n  content: \"\\f4ce\"; }\n\n.fa-pepper-hot:before {\n  content: \"\\f816\"; }\n\n.fa-percent:before {\n  content: \"\\f295\"; }\n\n.fa-percentage:before {\n  content: \"\\f541\"; }\n\n.fa-periscope:before {\n  content: \"\\f3da\"; }\n\n.fa-person-booth:before {\n  content: \"\\f756\"; }\n\n.fa-phabricator:before {\n  content: \"\\f3db\"; }\n\n.fa-phoenix-framework:before {\n  content: \"\\f3dc\"; }\n\n.fa-phoenix-squadron:before {\n  content: \"\\f511\"; }\n\n.fa-phone:before {\n  content: \"\\f095\"; }\n\n.fa-phone-alt:before {\n  content: \"\\f879\"; }\n\n.fa-phone-slash:before {\n  content: \"\\f3dd\"; }\n\n.fa-phone-square:before {\n  content: \"\\f098\"; }\n\n.fa-phone-square-alt:before {\n  content: \"\\f87b\"; }\n\n.fa-phone-volume:before {\n  content: \"\\f2a0\"; }\n\n.fa-photo-video:before {\n  content: \"\\f87c\"; }\n\n.fa-php:before {\n  content: \"\\f457\"; }\n\n.fa-pied-piper:before {\n  content: \"\\f2ae\"; }\n\n.fa-pied-piper-alt:before {\n  content: \"\\f1a8\"; }\n\n.fa-pied-piper-hat:before {\n  content: \"\\f4e5\"; }\n\n.fa-pied-piper-pp:before {\n  content: \"\\f1a7\"; }\n\n.fa-piggy-bank:before {\n  content: \"\\f4d3\"; }\n\n.fa-pills:before {\n  content: \"\\f484\"; }\n\n.fa-pinterest:before {\n  content: \"\\f0d2\"; }\n\n.fa-pinterest-p:before {\n  content: \"\\f231\"; }\n\n.fa-pinterest-square:before {\n  content: \"\\f0d3\"; }\n\n.fa-pizza-slice:before {\n  content: \"\\f818\"; }\n\n.fa-place-of-worship:before {\n  content: \"\\f67f\"; }\n\n.fa-plane:before {\n  content: \"\\f072\"; }\n\n.fa-plane-arrival:before {\n  content: \"\\f5af\"; }\n\n.fa-plane-departure:before {\n  content: \"\\f5b0\"; }\n\n.fa-play:before {\n  content: \"\\f04b\"; }\n\n.fa-play-circle:before {\n  content: \"\\f144\"; }\n\n.fa-playstation:before {\n  content: \"\\f3df\"; }\n\n.fa-plug:before {\n  content: \"\\f1e6\"; }\n\n.fa-plus:before {\n  content: \"\\f067\"; }\n\n.fa-plus-circle:before {\n  content: \"\\f055\"; }\n\n.fa-plus-square:before {\n  content: \"\\f0fe\"; }\n\n.fa-podcast:before {\n  content: \"\\f2ce\"; }\n\n.fa-poll:before {\n  content: \"\\f681\"; }\n\n.fa-poll-h:before {\n  content: \"\\f682\"; }\n\n.fa-poo:before {\n  content: \"\\f2fe\"; }\n\n.fa-poo-storm:before {\n  content: \"\\f75a\"; }\n\n.fa-poop:before {\n  content: \"\\f619\"; }\n\n.fa-portrait:before {\n  content: \"\\f3e0\"; }\n\n.fa-pound-sign:before {\n  content: \"\\f154\"; }\n\n.fa-power-off:before {\n  content: \"\\f011\"; }\n\n.fa-pray:before {\n  content: \"\\f683\"; }\n\n.fa-praying-hands:before {\n  content: \"\\f684\"; }\n\n.fa-prescription:before {\n  content: \"\\f5b1\"; }\n\n.fa-prescription-bottle:before {\n  content: \"\\f485\"; }\n\n.fa-prescription-bottle-alt:before {\n  content: \"\\f486\"; }\n\n.fa-print:before {\n  content: \"\\f02f\"; }\n\n.fa-procedures:before {\n  content: \"\\f487\"; }\n\n.fa-product-hunt:before {\n  content: \"\\f288\"; }\n\n.fa-project-diagram:before {\n  content: \"\\f542\"; }\n\n.fa-pushed:before {\n  content: \"\\f3e1\"; }\n\n.fa-puzzle-piece:before {\n  content: \"\\f12e\"; }\n\n.fa-python:before {\n  content: \"\\f3e2\"; }\n\n.fa-qq:before {\n  content: \"\\f1d6\"; }\n\n.fa-qrcode:before {\n  content: \"\\f029\"; }\n\n.fa-question:before {\n  content: \"\\f128\"; }\n\n.fa-question-circle:before {\n  content: \"\\f059\"; }\n\n.fa-quidditch:before {\n  content: \"\\f458\"; }\n\n.fa-quinscape:before {\n  content: \"\\f459\"; }\n\n.fa-quora:before {\n  content: \"\\f2c4\"; }\n\n.fa-quote-left:before {\n  content: \"\\f10d\"; }\n\n.fa-quote-right:before {\n  content: \"\\f10e\"; }\n\n.fa-quran:before {\n  content: \"\\f687\"; }\n\n.fa-r-project:before {\n  content: \"\\f4f7\"; }\n\n.fa-radiation:before {\n  content: \"\\f7b9\"; }\n\n.fa-radiation-alt:before {\n  content: \"\\f7ba\"; }\n\n.fa-rainbow:before {\n  content: \"\\f75b\"; }\n\n.fa-random:before {\n  content: \"\\f074\"; }\n\n.fa-raspberry-pi:before {\n  content: \"\\f7bb\"; }\n\n.fa-ravelry:before {\n  content: \"\\f2d9\"; }\n\n.fa-react:before {\n  content: \"\\f41b\"; }\n\n.fa-reacteurope:before {\n  content: \"\\f75d\"; }\n\n.fa-readme:before {\n  content: \"\\f4d5\"; }\n\n.fa-rebel:before {\n  content: \"\\f1d0\"; }\n\n.fa-receipt:before {\n  content: \"\\f543\"; }\n\n.fa-record-vinyl:before {\n  content: \"\\f8d9\"; }\n\n.fa-recycle:before {\n  content: \"\\f1b8\"; }\n\n.fa-red-river:before {\n  content: \"\\f3e3\"; }\n\n.fa-reddit:before {\n  content: \"\\f1a1\"; }\n\n.fa-reddit-alien:before {\n  content: \"\\f281\"; }\n\n.fa-reddit-square:before {\n  content: \"\\f1a2\"; }\n\n.fa-redhat:before {\n  content: \"\\f7bc\"; }\n\n.fa-redo:before {\n  content: \"\\f01e\"; }\n\n.fa-redo-alt:before {\n  content: \"\\f2f9\"; }\n\n.fa-registered:before {\n  content: \"\\f25d\"; }\n\n.fa-remove-format:before {\n  content: \"\\f87d\"; }\n\n.fa-renren:before {\n  content: \"\\f18b\"; }\n\n.fa-reply:before {\n  content: \"\\f3e5\"; }\n\n.fa-reply-all:before {\n  content: \"\\f122\"; }\n\n.fa-replyd:before {\n  content: \"\\f3e6\"; }\n\n.fa-republican:before {\n  content: \"\\f75e\"; }\n\n.fa-researchgate:before {\n  content: \"\\f4f8\"; }\n\n.fa-resolving:before {\n  content: \"\\f3e7\"; }\n\n.fa-restroom:before {\n  content: \"\\f7bd\"; }\n\n.fa-retweet:before {\n  content: \"\\f079\"; }\n\n.fa-rev:before {\n  content: \"\\f5b2\"; }\n\n.fa-ribbon:before {\n  content: \"\\f4d6\"; }\n\n.fa-ring:before {\n  content: \"\\f70b\"; }\n\n.fa-road:before {\n  content: \"\\f018\"; }\n\n.fa-robot:before {\n  content: \"\\f544\"; }\n\n.fa-rocket:before {\n  content: \"\\f135\"; }\n\n.fa-rocketchat:before {\n  content: \"\\f3e8\"; }\n\n.fa-rockrms:before {\n  content: \"\\f3e9\"; }\n\n.fa-route:before {\n  content: \"\\f4d7\"; }\n\n.fa-rss:before {\n  content: \"\\f09e\"; }\n\n.fa-rss-square:before {\n  content: \"\\f143\"; }\n\n.fa-ruble-sign:before {\n  content: \"\\f158\"; }\n\n.fa-ruler:before {\n  content: \"\\f545\"; }\n\n.fa-ruler-combined:before {\n  content: \"\\f546\"; }\n\n.fa-ruler-horizontal:before {\n  content: \"\\f547\"; }\n\n.fa-ruler-vertical:before {\n  content: \"\\f548\"; }\n\n.fa-running:before {\n  content: \"\\f70c\"; }\n\n.fa-rupee-sign:before {\n  content: \"\\f156\"; }\n\n.fa-sad-cry:before {\n  content: \"\\f5b3\"; }\n\n.fa-sad-tear:before {\n  content: \"\\f5b4\"; }\n\n.fa-safari:before {\n  content: \"\\f267\"; }\n\n.fa-salesforce:before {\n  content: \"\\f83b\"; }\n\n.fa-sass:before {\n  content: \"\\f41e\"; }\n\n.fa-satellite:before {\n  content: \"\\f7bf\"; }\n\n.fa-satellite-dish:before {\n  content: \"\\f7c0\"; }\n\n.fa-save:before {\n  content: \"\\f0c7\"; }\n\n.fa-schlix:before {\n  content: \"\\f3ea\"; }\n\n.fa-school:before {\n  content: \"\\f549\"; }\n\n.fa-screwdriver:before {\n  content: \"\\f54a\"; }\n\n.fa-scribd:before {\n  content: \"\\f28a\"; }\n\n.fa-scroll:before {\n  content: \"\\f70e\"; }\n\n.fa-sd-card:before {\n  content: \"\\f7c2\"; }\n\n.fa-search:before {\n  content: \"\\f002\"; }\n\n.fa-search-dollar:before {\n  content: \"\\f688\"; }\n\n.fa-search-location:before {\n  content: \"\\f689\"; }\n\n.fa-search-minus:before {\n  content: \"\\f010\"; }\n\n.fa-search-plus:before {\n  content: \"\\f00e\"; }\n\n.fa-searchengin:before {\n  content: \"\\f3eb\"; }\n\n.fa-seedling:before {\n  content: \"\\f4d8\"; }\n\n.fa-sellcast:before {\n  content: \"\\f2da\"; }\n\n.fa-sellsy:before {\n  content: \"\\f213\"; }\n\n.fa-server:before {\n  content: \"\\f233\"; }\n\n.fa-servicestack:before {\n  content: \"\\f3ec\"; }\n\n.fa-shapes:before {\n  content: \"\\f61f\"; }\n\n.fa-share:before {\n  content: \"\\f064\"; }\n\n.fa-share-alt:before {\n  content: \"\\f1e0\"; }\n\n.fa-share-alt-square:before {\n  content: \"\\f1e1\"; }\n\n.fa-share-square:before {\n  content: \"\\f14d\"; }\n\n.fa-shekel-sign:before {\n  content: \"\\f20b\"; }\n\n.fa-shield-alt:before {\n  content: \"\\f3ed\"; }\n\n.fa-ship:before {\n  content: \"\\f21a\"; }\n\n.fa-shipping-fast:before {\n  content: \"\\f48b\"; }\n\n.fa-shirtsinbulk:before {\n  content: \"\\f214\"; }\n\n.fa-shoe-prints:before {\n  content: \"\\f54b\"; }\n\n.fa-shopping-bag:before {\n  content: \"\\f290\"; }\n\n.fa-shopping-basket:before {\n  content: \"\\f291\"; }\n\n.fa-shopping-cart:before {\n  content: \"\\f07a\"; }\n\n.fa-shopware:before {\n  content: \"\\f5b5\"; }\n\n.fa-shower:before {\n  content: \"\\f2cc\"; }\n\n.fa-shuttle-van:before {\n  content: \"\\f5b6\"; }\n\n.fa-sign:before {\n  content: \"\\f4d9\"; }\n\n.fa-sign-in-alt:before {\n  content: \"\\f2f6\"; }\n\n.fa-sign-language:before {\n  content: \"\\f2a7\"; }\n\n.fa-sign-out-alt:before {\n  content: \"\\f2f5\"; }\n\n.fa-signal:before {\n  content: \"\\f012\"; }\n\n.fa-signature:before {\n  content: \"\\f5b7\"; }\n\n.fa-sim-card:before {\n  content: \"\\f7c4\"; }\n\n.fa-simplybuilt:before {\n  content: \"\\f215\"; }\n\n.fa-sistrix:before {\n  content: \"\\f3ee\"; }\n\n.fa-sitemap:before {\n  content: \"\\f0e8\"; }\n\n.fa-sith:before {\n  content: \"\\f512\"; }\n\n.fa-skating:before {\n  content: \"\\f7c5\"; }\n\n.fa-sketch:before {\n  content: \"\\f7c6\"; }\n\n.fa-skiing:before {\n  content: \"\\f7c9\"; }\n\n.fa-skiing-nordic:before {\n  content: \"\\f7ca\"; }\n\n.fa-skull:before {\n  content: \"\\f54c\"; }\n\n.fa-skull-crossbones:before {\n  content: \"\\f714\"; }\n\n.fa-skyatlas:before {\n  content: \"\\f216\"; }\n\n.fa-skype:before {\n  content: \"\\f17e\"; }\n\n.fa-slack:before {\n  content: \"\\f198\"; }\n\n.fa-slack-hash:before {\n  content: \"\\f3ef\"; }\n\n.fa-slash:before {\n  content: \"\\f715\"; }\n\n.fa-sleigh:before {\n  content: \"\\f7cc\"; }\n\n.fa-sliders-h:before {\n  content: \"\\f1de\"; }\n\n.fa-slideshare:before {\n  content: \"\\f1e7\"; }\n\n.fa-smile:before {\n  content: \"\\f118\"; }\n\n.fa-smile-beam:before {\n  content: \"\\f5b8\"; }\n\n.fa-smile-wink:before {\n  content: \"\\f4da\"; }\n\n.fa-smog:before {\n  content: \"\\f75f\"; }\n\n.fa-smoking:before {\n  content: \"\\f48d\"; }\n\n.fa-smoking-ban:before {\n  content: \"\\f54d\"; }\n\n.fa-sms:before {\n  content: \"\\f7cd\"; }\n\n.fa-snapchat:before {\n  content: \"\\f2ab\"; }\n\n.fa-snapchat-ghost:before {\n  content: \"\\f2ac\"; }\n\n.fa-snapchat-square:before {\n  content: \"\\f2ad\"; }\n\n.fa-snowboarding:before {\n  content: \"\\f7ce\"; }\n\n.fa-snowflake:before {\n  content: \"\\f2dc\"; }\n\n.fa-snowman:before {\n  content: \"\\f7d0\"; }\n\n.fa-snowplow:before {\n  content: \"\\f7d2\"; }\n\n.fa-socks:before {\n  content: \"\\f696\"; }\n\n.fa-solar-panel:before {\n  content: \"\\f5ba\"; }\n\n.fa-sort:before {\n  content: \"\\f0dc\"; }\n\n.fa-sort-alpha-down:before {\n  content: \"\\f15d\"; }\n\n.fa-sort-alpha-down-alt:before {\n  content: \"\\f881\"; }\n\n.fa-sort-alpha-up:before {\n  content: \"\\f15e\"; }\n\n.fa-sort-alpha-up-alt:before {\n  content: \"\\f882\"; }\n\n.fa-sort-amount-down:before {\n  content: \"\\f160\"; }\n\n.fa-sort-amount-down-alt:before {\n  content: \"\\f884\"; }\n\n.fa-sort-amount-up:before {\n  content: \"\\f161\"; }\n\n.fa-sort-amount-up-alt:before {\n  content: \"\\f885\"; }\n\n.fa-sort-down:before {\n  content: \"\\f0dd\"; }\n\n.fa-sort-numeric-down:before {\n  content: \"\\f162\"; }\n\n.fa-sort-numeric-down-alt:before {\n  content: \"\\f886\"; }\n\n.fa-sort-numeric-up:before {\n  content: \"\\f163\"; }\n\n.fa-sort-numeric-up-alt:before {\n  content: \"\\f887\"; }\n\n.fa-sort-up:before {\n  content: \"\\f0de\"; }\n\n.fa-soundcloud:before {\n  content: \"\\f1be\"; }\n\n.fa-sourcetree:before {\n  content: \"\\f7d3\"; }\n\n.fa-spa:before {\n  content: \"\\f5bb\"; }\n\n.fa-space-shuttle:before {\n  content: \"\\f197\"; }\n\n.fa-speakap:before {\n  content: \"\\f3f3\"; }\n\n.fa-speaker-deck:before {\n  content: \"\\f83c\"; }\n\n.fa-spell-check:before {\n  content: \"\\f891\"; }\n\n.fa-spider:before {\n  content: \"\\f717\"; }\n\n.fa-spinner:before {\n  content: \"\\f110\"; }\n\n.fa-splotch:before {\n  content: \"\\f5bc\"; }\n\n.fa-spotify:before {\n  content: \"\\f1bc\"; }\n\n.fa-spray-can:before {\n  content: \"\\f5bd\"; }\n\n.fa-square:before {\n  content: \"\\f0c8\"; }\n\n.fa-square-full:before {\n  content: \"\\f45c\"; }\n\n.fa-square-root-alt:before {\n  content: \"\\f698\"; }\n\n.fa-squarespace:before {\n  content: \"\\f5be\"; }\n\n.fa-stack-exchange:before {\n  content: \"\\f18d\"; }\n\n.fa-stack-overflow:before {\n  content: \"\\f16c\"; }\n\n.fa-stackpath:before {\n  content: \"\\f842\"; }\n\n.fa-stamp:before {\n  content: \"\\f5bf\"; }\n\n.fa-star:before {\n  content: \"\\f005\"; }\n\n.fa-star-and-crescent:before {\n  content: \"\\f699\"; }\n\n.fa-star-half:before {\n  content: \"\\f089\"; }\n\n.fa-star-half-alt:before {\n  content: \"\\f5c0\"; }\n\n.fa-star-of-david:before {\n  content: \"\\f69a\"; }\n\n.fa-star-of-life:before {\n  content: \"\\f621\"; }\n\n.fa-staylinked:before {\n  content: \"\\f3f5\"; }\n\n.fa-steam:before {\n  content: \"\\f1b6\"; }\n\n.fa-steam-square:before {\n  content: \"\\f1b7\"; }\n\n.fa-steam-symbol:before {\n  content: \"\\f3f6\"; }\n\n.fa-step-backward:before {\n  content: \"\\f048\"; }\n\n.fa-step-forward:before {\n  content: \"\\f051\"; }\n\n.fa-stethoscope:before {\n  content: \"\\f0f1\"; }\n\n.fa-sticker-mule:before {\n  content: \"\\f3f7\"; }\n\n.fa-sticky-note:before {\n  content: \"\\f249\"; }\n\n.fa-stop:before {\n  content: \"\\f04d\"; }\n\n.fa-stop-circle:before {\n  content: \"\\f28d\"; }\n\n.fa-stopwatch:before {\n  content: \"\\f2f2\"; }\n\n.fa-store:before {\n  content: \"\\f54e\"; }\n\n.fa-store-alt:before {\n  content: \"\\f54f\"; }\n\n.fa-strava:before {\n  content: \"\\f428\"; }\n\n.fa-stream:before {\n  content: \"\\f550\"; }\n\n.fa-street-view:before {\n  content: \"\\f21d\"; }\n\n.fa-strikethrough:before {\n  content: \"\\f0cc\"; }\n\n.fa-stripe:before {\n  content: \"\\f429\"; }\n\n.fa-stripe-s:before {\n  content: \"\\f42a\"; }\n\n.fa-stroopwafel:before {\n  content: \"\\f551\"; }\n\n.fa-studiovinari:before {\n  content: \"\\f3f8\"; }\n\n.fa-stumbleupon:before {\n  content: \"\\f1a4\"; }\n\n.fa-stumbleupon-circle:before {\n  content: \"\\f1a3\"; }\n\n.fa-subscript:before {\n  content: \"\\f12c\"; }\n\n.fa-subway:before {\n  content: \"\\f239\"; }\n\n.fa-suitcase:before {\n  content: \"\\f0f2\"; }\n\n.fa-suitcase-rolling:before {\n  content: \"\\f5c1\"; }\n\n.fa-sun:before {\n  content: \"\\f185\"; }\n\n.fa-superpowers:before {\n  content: \"\\f2dd\"; }\n\n.fa-superscript:before {\n  content: \"\\f12b\"; }\n\n.fa-supple:before {\n  content: \"\\f3f9\"; }\n\n.fa-surprise:before {\n  content: \"\\f5c2\"; }\n\n.fa-suse:before {\n  content: \"\\f7d6\"; }\n\n.fa-swatchbook:before {\n  content: \"\\f5c3\"; }\n\n.fa-swift:before {\n  content: \"\\f8e1\"; }\n\n.fa-swimmer:before {\n  content: \"\\f5c4\"; }\n\n.fa-swimming-pool:before {\n  content: \"\\f5c5\"; }\n\n.fa-symfony:before {\n  content: \"\\f83d\"; }\n\n.fa-synagogue:before {\n  content: \"\\f69b\"; }\n\n.fa-sync:before {\n  content: \"\\f021\"; }\n\n.fa-sync-alt:before {\n  content: \"\\f2f1\"; }\n\n.fa-syringe:before {\n  content: \"\\f48e\"; }\n\n.fa-table:before {\n  content: \"\\f0ce\"; }\n\n.fa-table-tennis:before {\n  content: \"\\f45d\"; }\n\n.fa-tablet:before {\n  content: \"\\f10a\"; }\n\n.fa-tablet-alt:before {\n  content: \"\\f3fa\"; }\n\n.fa-tablets:before {\n  content: \"\\f490\"; }\n\n.fa-tachometer-alt:before {\n  content: \"\\f3fd\"; }\n\n.fa-tag:before {\n  content: \"\\f02b\"; }\n\n.fa-tags:before {\n  content: \"\\f02c\"; }\n\n.fa-tape:before {\n  content: \"\\f4db\"; }\n\n.fa-tasks:before {\n  content: \"\\f0ae\"; }\n\n.fa-taxi:before {\n  content: \"\\f1ba\"; }\n\n.fa-teamspeak:before {\n  content: \"\\f4f9\"; }\n\n.fa-teeth:before {\n  content: \"\\f62e\"; }\n\n.fa-teeth-open:before {\n  content: \"\\f62f\"; }\n\n.fa-telegram:before {\n  content: \"\\f2c6\"; }\n\n.fa-telegram-plane:before {\n  content: \"\\f3fe\"; }\n\n.fa-temperature-high:before {\n  content: \"\\f769\"; }\n\n.fa-temperature-low:before {\n  content: \"\\f76b\"; }\n\n.fa-tencent-weibo:before {\n  content: \"\\f1d5\"; }\n\n.fa-tenge:before {\n  content: \"\\f7d7\"; }\n\n.fa-terminal:before {\n  content: \"\\f120\"; }\n\n.fa-text-height:before {\n  content: \"\\f034\"; }\n\n.fa-text-width:before {\n  content: \"\\f035\"; }\n\n.fa-th:before {\n  content: \"\\f00a\"; }\n\n.fa-th-large:before {\n  content: \"\\f009\"; }\n\n.fa-th-list:before {\n  content: \"\\f00b\"; }\n\n.fa-the-red-yeti:before {\n  content: \"\\f69d\"; }\n\n.fa-theater-masks:before {\n  content: \"\\f630\"; }\n\n.fa-themeco:before {\n  content: \"\\f5c6\"; }\n\n.fa-themeisle:before {\n  content: \"\\f2b2\"; }\n\n.fa-thermometer:before {\n  content: \"\\f491\"; }\n\n.fa-thermometer-empty:before {\n  content: \"\\f2cb\"; }\n\n.fa-thermometer-full:before {\n  content: \"\\f2c7\"; }\n\n.fa-thermometer-half:before {\n  content: \"\\f2c9\"; }\n\n.fa-thermometer-quarter:before {\n  content: \"\\f2ca\"; }\n\n.fa-thermometer-three-quarters:before {\n  content: \"\\f2c8\"; }\n\n.fa-think-peaks:before {\n  content: \"\\f731\"; }\n\n.fa-thumbs-down:before {\n  content: \"\\f165\"; }\n\n.fa-thumbs-up:before {\n  content: \"\\f164\"; }\n\n.fa-thumbtack:before {\n  content: \"\\f08d\"; }\n\n.fa-ticket-alt:before {\n  content: \"\\f3ff\"; }\n\n.fa-times:before {\n  content: \"\\f00d\"; }\n\n.fa-times-circle:before {\n  content: \"\\f057\"; }\n\n.fa-tint:before {\n  content: \"\\f043\"; }\n\n.fa-tint-slash:before {\n  content: \"\\f5c7\"; }\n\n.fa-tired:before {\n  content: \"\\f5c8\"; }\n\n.fa-toggle-off:before {\n  content: \"\\f204\"; }\n\n.fa-toggle-on:before {\n  content: \"\\f205\"; }\n\n.fa-toilet:before {\n  content: \"\\f7d8\"; }\n\n.fa-toilet-paper:before {\n  content: \"\\f71e\"; }\n\n.fa-toolbox:before {\n  content: \"\\f552\"; }\n\n.fa-tools:before {\n  content: \"\\f7d9\"; }\n\n.fa-tooth:before {\n  content: \"\\f5c9\"; }\n\n.fa-torah:before {\n  content: \"\\f6a0\"; }\n\n.fa-torii-gate:before {\n  content: \"\\f6a1\"; }\n\n.fa-tractor:before {\n  content: \"\\f722\"; }\n\n.fa-trade-federation:before {\n  content: \"\\f513\"; }\n\n.fa-trademark:before {\n  content: \"\\f25c\"; }\n\n.fa-traffic-light:before {\n  content: \"\\f637\"; }\n\n.fa-train:before {\n  content: \"\\f238\"; }\n\n.fa-tram:before {\n  content: \"\\f7da\"; }\n\n.fa-transgender:before {\n  content: \"\\f224\"; }\n\n.fa-transgender-alt:before {\n  content: \"\\f225\"; }\n\n.fa-trash:before {\n  content: \"\\f1f8\"; }\n\n.fa-trash-alt:before {\n  content: \"\\f2ed\"; }\n\n.fa-trash-restore:before {\n  content: \"\\f829\"; }\n\n.fa-trash-restore-alt:before {\n  content: \"\\f82a\"; }\n\n.fa-tree:before {\n  content: \"\\f1bb\"; }\n\n.fa-trello:before {\n  content: \"\\f181\"; }\n\n.fa-tripadvisor:before {\n  content: \"\\f262\"; }\n\n.fa-trophy:before {\n  content: \"\\f091\"; }\n\n.fa-truck:before {\n  content: \"\\f0d1\"; }\n\n.fa-truck-loading:before {\n  content: \"\\f4de\"; }\n\n.fa-truck-monster:before {\n  content: \"\\f63b\"; }\n\n.fa-truck-moving:before {\n  content: \"\\f4df\"; }\n\n.fa-truck-pickup:before {\n  content: \"\\f63c\"; }\n\n.fa-tshirt:before {\n  content: \"\\f553\"; }\n\n.fa-tty:before {\n  content: \"\\f1e4\"; }\n\n.fa-tumblr:before {\n  content: \"\\f173\"; }\n\n.fa-tumblr-square:before {\n  content: \"\\f174\"; }\n\n.fa-tv:before {\n  content: \"\\f26c\"; }\n\n.fa-twitch:before {\n  content: \"\\f1e8\"; }\n\n.fa-twitter:before {\n  content: \"\\f099\"; }\n\n.fa-twitter-square:before {\n  content: \"\\f081\"; }\n\n.fa-typo3:before {\n  content: \"\\f42b\"; }\n\n.fa-uber:before {\n  content: \"\\f402\"; }\n\n.fa-ubuntu:before {\n  content: \"\\f7df\"; }\n\n.fa-uikit:before {\n  content: \"\\f403\"; }\n\n.fa-umbraco:before {\n  content: \"\\f8e8\"; }\n\n.fa-umbrella:before {\n  content: \"\\f0e9\"; }\n\n.fa-umbrella-beach:before {\n  content: \"\\f5ca\"; }\n\n.fa-underline:before {\n  content: \"\\f0cd\"; }\n\n.fa-undo:before {\n  content: \"\\f0e2\"; }\n\n.fa-undo-alt:before {\n  content: \"\\f2ea\"; }\n\n.fa-uniregistry:before {\n  content: \"\\f404\"; }\n\n.fa-universal-access:before {\n  content: \"\\f29a\"; }\n\n.fa-university:before {\n  content: \"\\f19c\"; }\n\n.fa-unlink:before {\n  content: \"\\f127\"; }\n\n.fa-unlock:before {\n  content: \"\\f09c\"; }\n\n.fa-unlock-alt:before {\n  content: \"\\f13e\"; }\n\n.fa-untappd:before {\n  content: \"\\f405\"; }\n\n.fa-upload:before {\n  content: \"\\f093\"; }\n\n.fa-ups:before {\n  content: \"\\f7e0\"; }\n\n.fa-usb:before {\n  content: \"\\f287\"; }\n\n.fa-user:before {\n  content: \"\\f007\"; }\n\n.fa-user-alt:before {\n  content: \"\\f406\"; }\n\n.fa-user-alt-slash:before {\n  content: \"\\f4fa\"; }\n\n.fa-user-astronaut:before {\n  content: \"\\f4fb\"; }\n\n.fa-user-check:before {\n  content: \"\\f4fc\"; }\n\n.fa-user-circle:before {\n  content: \"\\f2bd\"; }\n\n.fa-user-clock:before {\n  content: \"\\f4fd\"; }\n\n.fa-user-cog:before {\n  content: \"\\f4fe\"; }\n\n.fa-user-edit:before {\n  content: \"\\f4ff\"; }\n\n.fa-user-friends:before {\n  content: \"\\f500\"; }\n\n.fa-user-graduate:before {\n  content: \"\\f501\"; }\n\n.fa-user-injured:before {\n  content: \"\\f728\"; }\n\n.fa-user-lock:before {\n  content: \"\\f502\"; }\n\n.fa-user-md:before {\n  content: \"\\f0f0\"; }\n\n.fa-user-minus:before {\n  content: \"\\f503\"; }\n\n.fa-user-ninja:before {\n  content: \"\\f504\"; }\n\n.fa-user-nurse:before {\n  content: \"\\f82f\"; }\n\n.fa-user-plus:before {\n  content: \"\\f234\"; }\n\n.fa-user-secret:before {\n  content: \"\\f21b\"; }\n\n.fa-user-shield:before {\n  content: \"\\f505\"; }\n\n.fa-user-slash:before {\n  content: \"\\f506\"; }\n\n.fa-user-tag:before {\n  content: \"\\f507\"; }\n\n.fa-user-tie:before {\n  content: \"\\f508\"; }\n\n.fa-user-times:before {\n  content: \"\\f235\"; }\n\n.fa-users:before {\n  content: \"\\f0c0\"; }\n\n.fa-users-cog:before {\n  content: \"\\f509\"; }\n\n.fa-usps:before {\n  content: \"\\f7e1\"; }\n\n.fa-ussunnah:before {\n  content: \"\\f407\"; }\n\n.fa-utensil-spoon:before {\n  content: \"\\f2e5\"; }\n\n.fa-utensils:before {\n  content: \"\\f2e7\"; }\n\n.fa-vaadin:before {\n  content: \"\\f408\"; }\n\n.fa-vector-square:before {\n  content: \"\\f5cb\"; }\n\n.fa-venus:before {\n  content: \"\\f221\"; }\n\n.fa-venus-double:before {\n  content: \"\\f226\"; }\n\n.fa-venus-mars:before {\n  content: \"\\f228\"; }\n\n.fa-viacoin:before {\n  content: \"\\f237\"; }\n\n.fa-viadeo:before {\n  content: \"\\f2a9\"; }\n\n.fa-viadeo-square:before {\n  content: \"\\f2aa\"; }\n\n.fa-vial:before {\n  content: \"\\f492\"; }\n\n.fa-vials:before {\n  content: \"\\f493\"; }\n\n.fa-viber:before {\n  content: \"\\f409\"; }\n\n.fa-video:before {\n  content: \"\\f03d\"; }\n\n.fa-video-slash:before {\n  content: \"\\f4e2\"; }\n\n.fa-vihara:before {\n  content: \"\\f6a7\"; }\n\n.fa-vimeo:before {\n  content: \"\\f40a\"; }\n\n.fa-vimeo-square:before {\n  content: \"\\f194\"; }\n\n.fa-vimeo-v:before {\n  content: \"\\f27d\"; }\n\n.fa-vine:before {\n  content: \"\\f1ca\"; }\n\n.fa-vk:before {\n  content: \"\\f189\"; }\n\n.fa-vnv:before {\n  content: \"\\f40b\"; }\n\n.fa-voicemail:before {\n  content: \"\\f897\"; }\n\n.fa-volleyball-ball:before {\n  content: \"\\f45f\"; }\n\n.fa-volume-down:before {\n  content: \"\\f027\"; }\n\n.fa-volume-mute:before {\n  content: \"\\f6a9\"; }\n\n.fa-volume-off:before {\n  content: \"\\f026\"; }\n\n.fa-volume-up:before {\n  content: \"\\f028\"; }\n\n.fa-vote-yea:before {\n  content: \"\\f772\"; }\n\n.fa-vr-cardboard:before {\n  content: \"\\f729\"; }\n\n.fa-vuejs:before {\n  content: \"\\f41f\"; }\n\n.fa-walking:before {\n  content: \"\\f554\"; }\n\n.fa-wallet:before {\n  content: \"\\f555\"; }\n\n.fa-warehouse:before {\n  content: \"\\f494\"; }\n\n.fa-water:before {\n  content: \"\\f773\"; }\n\n.fa-wave-square:before {\n  content: \"\\f83e\"; }\n\n.fa-waze:before {\n  content: \"\\f83f\"; }\n\n.fa-weebly:before {\n  content: \"\\f5cc\"; }\n\n.fa-weibo:before {\n  content: \"\\f18a\"; }\n\n.fa-weight:before {\n  content: \"\\f496\"; }\n\n.fa-weight-hanging:before {\n  content: \"\\f5cd\"; }\n\n.fa-weixin:before {\n  content: \"\\f1d7\"; }\n\n.fa-whatsapp:before {\n  content: \"\\f232\"; }\n\n.fa-whatsapp-square:before {\n  content: \"\\f40c\"; }\n\n.fa-wheelchair:before {\n  content: \"\\f193\"; }\n\n.fa-whmcs:before {\n  content: \"\\f40d\"; }\n\n.fa-wifi:before {\n  content: \"\\f1eb\"; }\n\n.fa-wikipedia-w:before {\n  content: \"\\f266\"; }\n\n.fa-wind:before {\n  content: \"\\f72e\"; }\n\n.fa-window-close:before {\n  content: \"\\f410\"; }\n\n.fa-window-maximize:before {\n  content: \"\\f2d0\"; }\n\n.fa-window-minimize:before {\n  content: \"\\f2d1\"; }\n\n.fa-window-restore:before {\n  content: \"\\f2d2\"; }\n\n.fa-windows:before {\n  content: \"\\f17a\"; }\n\n.fa-wine-bottle:before {\n  content: \"\\f72f\"; }\n\n.fa-wine-glass:before {\n  content: \"\\f4e3\"; }\n\n.fa-wine-glass-alt:before {\n  content: \"\\f5ce\"; }\n\n.fa-wix:before {\n  content: \"\\f5cf\"; }\n\n.fa-wizards-of-the-coast:before {\n  content: \"\\f730\"; }\n\n.fa-wolf-pack-battalion:before {\n  content: \"\\f514\"; }\n\n.fa-won-sign:before {\n  content: \"\\f159\"; }\n\n.fa-wordpress:before {\n  content: \"\\f19a\"; }\n\n.fa-wordpress-simple:before {\n  content: \"\\f411\"; }\n\n.fa-wpbeginner:before {\n  content: \"\\f297\"; }\n\n.fa-wpexplorer:before {\n  content: \"\\f2de\"; }\n\n.fa-wpforms:before {\n  content: \"\\f298\"; }\n\n.fa-wpressr:before {\n  content: \"\\f3e4\"; }\n\n.fa-wrench:before {\n  content: \"\\f0ad\"; }\n\n.fa-x-ray:before {\n  content: \"\\f497\"; }\n\n.fa-xbox:before {\n  content: \"\\f412\"; }\n\n.fa-xing:before {\n  content: \"\\f168\"; }\n\n.fa-xing-square:before {\n  content: \"\\f169\"; }\n\n.fa-y-combinator:before {\n  content: \"\\f23b\"; }\n\n.fa-yahoo:before {\n  content: \"\\f19e\"; }\n\n.fa-yammer:before {\n  content: \"\\f840\"; }\n\n.fa-yandex:before {\n  content: \"\\f413\"; }\n\n.fa-yandex-international:before {\n  content: \"\\f414\"; }\n\n.fa-yarn:before {\n  content: \"\\f7e3\"; }\n\n.fa-yelp:before {\n  content: \"\\f1e9\"; }\n\n.fa-yen-sign:before {\n  content: \"\\f157\"; }\n\n.fa-yin-yang:before {\n  content: \"\\f6ad\"; }\n\n.fa-yoast:before {\n  content: \"\\f2b1\"; }\n\n.fa-youtube:before {\n  content: \"\\f167\"; }\n\n.fa-youtube-square:before {\n  content: \"\\f431\"; }\n\n.fa-zhihu:before {\n  content: \"\\f63f\"; }\n\n.sr-only {\n  border: 0;\n  clip: rect(0, 0, 0, 0);\n  height: 1px;\n  margin: -1px;\n  overflow: hidden;\n  padding: 0;\n  position: absolute;\n  width: 1px; }\n\n.sr-only-focusable:active, .sr-only-focusable:focus {\n  clip: auto;\n  height: auto;\n  margin: 0;\n  overflow: visible;\n  position: static;\n  width: auto; }\n@font-face {\n  font-family: 'Font Awesome 5 Brands';\n  font-style: normal;\n  font-weight: normal;\n  font-display: auto;\n  src: url(\"../webfonts/fa-brands-400.eot\");\n  src: url(\"../webfonts/fa-brands-400.eot?#iefix\") format(\"embedded-opentype\"), url(\"../webfonts/fa-brands-400.woff2\") format(\"woff2\"), url(\"../webfonts/fa-brands-400.woff\") format(\"woff\"), url(\"../webfonts/fa-brands-400.ttf\") format(\"truetype\"), url(\"../webfonts/fa-brands-400.svg#fontawesome\") format(\"svg\"); }\n\n.fab {\n  font-family: 'Font Awesome 5 Brands'; }\n@font-face {\n  font-family: 'Font Awesome 5 Free';\n  font-style: normal;\n  font-weight: 400;\n  font-display: auto;\n  src: url(\"../webfonts/fa-regular-400.eot\");\n  src: url(\"../webfonts/fa-regular-400.eot?#iefix\") format(\"embedded-opentype\"), url(\"../webfonts/fa-regular-400.woff2\") format(\"woff2\"), url(\"../webfonts/fa-regular-400.woff\") format(\"woff\"), url(\"../webfonts/fa-regular-400.ttf\") format(\"truetype\"), url(\"../webfonts/fa-regular-400.svg#fontawesome\") format(\"svg\"); }\n\n.far {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n@font-face {\n  font-family: 'Font Awesome 5 Free';\n  font-style: normal;\n  font-weight: 900;\n  font-display: auto;\n  src: url(\"../webfonts/fa-solid-900.eot\");\n  src: url(\"../webfonts/fa-solid-900.eot?#iefix\") format(\"embedded-opentype\"), url(\"../webfonts/fa-solid-900.woff2\") format(\"woff2\"), url(\"../webfonts/fa-solid-900.woff\") format(\"woff\"), url(\"../webfonts/fa-solid-900.ttf\") format(\"truetype\"), url(\"../webfonts/fa-solid-900.svg#fontawesome\") format(\"svg\"); }\n\n.fa,\n.fas {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 900; }\n"
  },
  {
    "path": "public/plugins/fontawesome-free/css/brands.css",
    "content": "/*!\n * Font Awesome Free 5.11.2 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n */\n@font-face {\n  font-family: 'Font Awesome 5 Brands';\n  font-style: normal;\n  font-weight: normal;\n  font-display: auto;\n  src: url(\"../webfonts/fa-brands-400.eot\");\n  src: url(\"../webfonts/fa-brands-400.eot?#iefix\") format(\"embedded-opentype\"), url(\"../webfonts/fa-brands-400.woff2\") format(\"woff2\"), url(\"../webfonts/fa-brands-400.woff\") format(\"woff\"), url(\"../webfonts/fa-brands-400.ttf\") format(\"truetype\"), url(\"../webfonts/fa-brands-400.svg#fontawesome\") format(\"svg\"); }\n\n.fab {\n  font-family: 'Font Awesome 5 Brands'; }\n"
  },
  {
    "path": "public/plugins/fontawesome-free/css/fontawesome.css",
    "content": "/*!\n * Font Awesome Free 5.11.2 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n */\n.fa,\n.fas,\n.far,\n.fal,\n.fad,\n.fab {\n  -moz-osx-font-smoothing: grayscale;\n  -webkit-font-smoothing: antialiased;\n  display: inline-block;\n  font-style: normal;\n  font-variant: normal;\n  text-rendering: auto;\n  line-height: 1; }\n\n.fa-lg {\n  font-size: 1.33333em;\n  line-height: 0.75em;\n  vertical-align: -.0667em; }\n\n.fa-xs {\n  font-size: .75em; }\n\n.fa-sm {\n  font-size: .875em; }\n\n.fa-1x {\n  font-size: 1em; }\n\n.fa-2x {\n  font-size: 2em; }\n\n.fa-3x {\n  font-size: 3em; }\n\n.fa-4x {\n  font-size: 4em; }\n\n.fa-5x {\n  font-size: 5em; }\n\n.fa-6x {\n  font-size: 6em; }\n\n.fa-7x {\n  font-size: 7em; }\n\n.fa-8x {\n  font-size: 8em; }\n\n.fa-9x {\n  font-size: 9em; }\n\n.fa-10x {\n  font-size: 10em; }\n\n.fa-fw {\n  text-align: center;\n  width: 1.25em; }\n\n.fa-ul {\n  list-style-type: none;\n  margin-left: 2.5em;\n  padding-left: 0; }\n  .fa-ul > li {\n    position: relative; }\n\n.fa-li {\n  left: -2em;\n  position: absolute;\n  text-align: center;\n  width: 2em;\n  line-height: inherit; }\n\n.fa-border {\n  border: solid 0.08em #eee;\n  border-radius: .1em;\n  padding: .2em .25em .15em; }\n\n.fa-pull-left {\n  float: left; }\n\n.fa-pull-right {\n  float: right; }\n\n.fa.fa-pull-left,\n.fas.fa-pull-left,\n.far.fa-pull-left,\n.fal.fa-pull-left,\n.fab.fa-pull-left {\n  margin-right: .3em; }\n\n.fa.fa-pull-right,\n.fas.fa-pull-right,\n.far.fa-pull-right,\n.fal.fa-pull-right,\n.fab.fa-pull-right {\n  margin-left: .3em; }\n\n.fa-spin {\n  -webkit-animation: fa-spin 2s infinite linear;\n          animation: fa-spin 2s infinite linear; }\n\n.fa-pulse {\n  -webkit-animation: fa-spin 1s infinite steps(8);\n          animation: fa-spin 1s infinite steps(8); }\n\n@-webkit-keyframes fa-spin {\n  0% {\n    -webkit-transform: rotate(0deg);\n            transform: rotate(0deg); }\n  100% {\n    -webkit-transform: rotate(360deg);\n            transform: rotate(360deg); } }\n\n@keyframes fa-spin {\n  0% {\n    -webkit-transform: rotate(0deg);\n            transform: rotate(0deg); }\n  100% {\n    -webkit-transform: rotate(360deg);\n            transform: rotate(360deg); } }\n\n.fa-rotate-90 {\n  -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\";\n  -webkit-transform: rotate(90deg);\n          transform: rotate(90deg); }\n\n.fa-rotate-180 {\n  -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\";\n  -webkit-transform: rotate(180deg);\n          transform: rotate(180deg); }\n\n.fa-rotate-270 {\n  -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\";\n  -webkit-transform: rotate(270deg);\n          transform: rotate(270deg); }\n\n.fa-flip-horizontal {\n  -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\";\n  -webkit-transform: scale(-1, 1);\n          transform: scale(-1, 1); }\n\n.fa-flip-vertical {\n  -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";\n  -webkit-transform: scale(1, -1);\n          transform: scale(1, -1); }\n\n.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {\n  -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";\n  -webkit-transform: scale(-1, -1);\n          transform: scale(-1, -1); }\n\n:root .fa-rotate-90,\n:root .fa-rotate-180,\n:root .fa-rotate-270,\n:root .fa-flip-horizontal,\n:root .fa-flip-vertical,\n:root .fa-flip-both {\n  -webkit-filter: none;\n          filter: none; }\n\n.fa-stack {\n  display: inline-block;\n  height: 2em;\n  line-height: 2em;\n  position: relative;\n  vertical-align: middle;\n  width: 2.5em; }\n\n.fa-stack-1x,\n.fa-stack-2x {\n  left: 0;\n  position: absolute;\n  text-align: center;\n  width: 100%; }\n\n.fa-stack-1x {\n  line-height: inherit; }\n\n.fa-stack-2x {\n  font-size: 2em; }\n\n.fa-inverse {\n  color: #fff; }\n\n/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen\nreaders do not read off random characters that represent icons */\n.fa-500px:before {\n  content: \"\\f26e\"; }\n\n.fa-accessible-icon:before {\n  content: \"\\f368\"; }\n\n.fa-accusoft:before {\n  content: \"\\f369\"; }\n\n.fa-acquisitions-incorporated:before {\n  content: \"\\f6af\"; }\n\n.fa-ad:before {\n  content: \"\\f641\"; }\n\n.fa-address-book:before {\n  content: \"\\f2b9\"; }\n\n.fa-address-card:before {\n  content: \"\\f2bb\"; }\n\n.fa-adjust:before {\n  content: \"\\f042\"; }\n\n.fa-adn:before {\n  content: \"\\f170\"; }\n\n.fa-adobe:before {\n  content: \"\\f778\"; }\n\n.fa-adversal:before {\n  content: \"\\f36a\"; }\n\n.fa-affiliatetheme:before {\n  content: \"\\f36b\"; }\n\n.fa-air-freshener:before {\n  content: \"\\f5d0\"; }\n\n.fa-airbnb:before {\n  content: \"\\f834\"; }\n\n.fa-algolia:before {\n  content: \"\\f36c\"; }\n\n.fa-align-center:before {\n  content: \"\\f037\"; }\n\n.fa-align-justify:before {\n  content: \"\\f039\"; }\n\n.fa-align-left:before {\n  content: \"\\f036\"; }\n\n.fa-align-right:before {\n  content: \"\\f038\"; }\n\n.fa-alipay:before {\n  content: \"\\f642\"; }\n\n.fa-allergies:before {\n  content: \"\\f461\"; }\n\n.fa-amazon:before {\n  content: \"\\f270\"; }\n\n.fa-amazon-pay:before {\n  content: \"\\f42c\"; }\n\n.fa-ambulance:before {\n  content: \"\\f0f9\"; }\n\n.fa-american-sign-language-interpreting:before {\n  content: \"\\f2a3\"; }\n\n.fa-amilia:before {\n  content: \"\\f36d\"; }\n\n.fa-anchor:before {\n  content: \"\\f13d\"; }\n\n.fa-android:before {\n  content: \"\\f17b\"; }\n\n.fa-angellist:before {\n  content: \"\\f209\"; }\n\n.fa-angle-double-down:before {\n  content: \"\\f103\"; }\n\n.fa-angle-double-left:before {\n  content: \"\\f100\"; }\n\n.fa-angle-double-right:before {\n  content: \"\\f101\"; }\n\n.fa-angle-double-up:before {\n  content: \"\\f102\"; }\n\n.fa-angle-down:before {\n  content: \"\\f107\"; }\n\n.fa-angle-left:before {\n  content: \"\\f104\"; }\n\n.fa-angle-right:before {\n  content: \"\\f105\"; }\n\n.fa-angle-up:before {\n  content: \"\\f106\"; }\n\n.fa-angry:before {\n  content: \"\\f556\"; }\n\n.fa-angrycreative:before {\n  content: \"\\f36e\"; }\n\n.fa-angular:before {\n  content: \"\\f420\"; }\n\n.fa-ankh:before {\n  content: \"\\f644\"; }\n\n.fa-app-store:before {\n  content: \"\\f36f\"; }\n\n.fa-app-store-ios:before {\n  content: \"\\f370\"; }\n\n.fa-apper:before {\n  content: \"\\f371\"; }\n\n.fa-apple:before {\n  content: \"\\f179\"; }\n\n.fa-apple-alt:before {\n  content: \"\\f5d1\"; }\n\n.fa-apple-pay:before {\n  content: \"\\f415\"; }\n\n.fa-archive:before {\n  content: \"\\f187\"; }\n\n.fa-archway:before {\n  content: \"\\f557\"; }\n\n.fa-arrow-alt-circle-down:before {\n  content: \"\\f358\"; }\n\n.fa-arrow-alt-circle-left:before {\n  content: \"\\f359\"; }\n\n.fa-arrow-alt-circle-right:before {\n  content: \"\\f35a\"; }\n\n.fa-arrow-alt-circle-up:before {\n  content: \"\\f35b\"; }\n\n.fa-arrow-circle-down:before {\n  content: \"\\f0ab\"; }\n\n.fa-arrow-circle-left:before {\n  content: \"\\f0a8\"; }\n\n.fa-arrow-circle-right:before {\n  content: \"\\f0a9\"; }\n\n.fa-arrow-circle-up:before {\n  content: \"\\f0aa\"; }\n\n.fa-arrow-down:before {\n  content: \"\\f063\"; }\n\n.fa-arrow-left:before {\n  content: \"\\f060\"; }\n\n.fa-arrow-right:before {\n  content: \"\\f061\"; }\n\n.fa-arrow-up:before {\n  content: \"\\f062\"; }\n\n.fa-arrows-alt:before {\n  content: \"\\f0b2\"; }\n\n.fa-arrows-alt-h:before {\n  content: \"\\f337\"; }\n\n.fa-arrows-alt-v:before {\n  content: \"\\f338\"; }\n\n.fa-artstation:before {\n  content: \"\\f77a\"; }\n\n.fa-assistive-listening-systems:before {\n  content: \"\\f2a2\"; }\n\n.fa-asterisk:before {\n  content: \"\\f069\"; }\n\n.fa-asymmetrik:before {\n  content: \"\\f372\"; }\n\n.fa-at:before {\n  content: \"\\f1fa\"; }\n\n.fa-atlas:before {\n  content: \"\\f558\"; }\n\n.fa-atlassian:before {\n  content: \"\\f77b\"; }\n\n.fa-atom:before {\n  content: \"\\f5d2\"; }\n\n.fa-audible:before {\n  content: \"\\f373\"; }\n\n.fa-audio-description:before {\n  content: \"\\f29e\"; }\n\n.fa-autoprefixer:before {\n  content: \"\\f41c\"; }\n\n.fa-avianex:before {\n  content: \"\\f374\"; }\n\n.fa-aviato:before {\n  content: \"\\f421\"; }\n\n.fa-award:before {\n  content: \"\\f559\"; }\n\n.fa-aws:before {\n  content: \"\\f375\"; }\n\n.fa-baby:before {\n  content: \"\\f77c\"; }\n\n.fa-baby-carriage:before {\n  content: \"\\f77d\"; }\n\n.fa-backspace:before {\n  content: \"\\f55a\"; }\n\n.fa-backward:before {\n  content: \"\\f04a\"; }\n\n.fa-bacon:before {\n  content: \"\\f7e5\"; }\n\n.fa-balance-scale:before {\n  content: \"\\f24e\"; }\n\n.fa-balance-scale-left:before {\n  content: \"\\f515\"; }\n\n.fa-balance-scale-right:before {\n  content: \"\\f516\"; }\n\n.fa-ban:before {\n  content: \"\\f05e\"; }\n\n.fa-band-aid:before {\n  content: \"\\f462\"; }\n\n.fa-bandcamp:before {\n  content: \"\\f2d5\"; }\n\n.fa-barcode:before {\n  content: \"\\f02a\"; }\n\n.fa-bars:before {\n  content: \"\\f0c9\"; }\n\n.fa-baseball-ball:before {\n  content: \"\\f433\"; }\n\n.fa-basketball-ball:before {\n  content: \"\\f434\"; }\n\n.fa-bath:before {\n  content: \"\\f2cd\"; }\n\n.fa-battery-empty:before {\n  content: \"\\f244\"; }\n\n.fa-battery-full:before {\n  content: \"\\f240\"; }\n\n.fa-battery-half:before {\n  content: \"\\f242\"; }\n\n.fa-battery-quarter:before {\n  content: \"\\f243\"; }\n\n.fa-battery-three-quarters:before {\n  content: \"\\f241\"; }\n\n.fa-battle-net:before {\n  content: \"\\f835\"; }\n\n.fa-bed:before {\n  content: \"\\f236\"; }\n\n.fa-beer:before {\n  content: \"\\f0fc\"; }\n\n.fa-behance:before {\n  content: \"\\f1b4\"; }\n\n.fa-behance-square:before {\n  content: \"\\f1b5\"; }\n\n.fa-bell:before {\n  content: \"\\f0f3\"; }\n\n.fa-bell-slash:before {\n  content: \"\\f1f6\"; }\n\n.fa-bezier-curve:before {\n  content: \"\\f55b\"; }\n\n.fa-bible:before {\n  content: \"\\f647\"; }\n\n.fa-bicycle:before {\n  content: \"\\f206\"; }\n\n.fa-biking:before {\n  content: \"\\f84a\"; }\n\n.fa-bimobject:before {\n  content: \"\\f378\"; }\n\n.fa-binoculars:before {\n  content: \"\\f1e5\"; }\n\n.fa-biohazard:before {\n  content: \"\\f780\"; }\n\n.fa-birthday-cake:before {\n  content: \"\\f1fd\"; }\n\n.fa-bitbucket:before {\n  content: \"\\f171\"; }\n\n.fa-bitcoin:before {\n  content: \"\\f379\"; }\n\n.fa-bity:before {\n  content: \"\\f37a\"; }\n\n.fa-black-tie:before {\n  content: \"\\f27e\"; }\n\n.fa-blackberry:before {\n  content: \"\\f37b\"; }\n\n.fa-blender:before {\n  content: \"\\f517\"; }\n\n.fa-blender-phone:before {\n  content: \"\\f6b6\"; }\n\n.fa-blind:before {\n  content: \"\\f29d\"; }\n\n.fa-blog:before {\n  content: \"\\f781\"; }\n\n.fa-blogger:before {\n  content: \"\\f37c\"; }\n\n.fa-blogger-b:before {\n  content: \"\\f37d\"; }\n\n.fa-bluetooth:before {\n  content: \"\\f293\"; }\n\n.fa-bluetooth-b:before {\n  content: \"\\f294\"; }\n\n.fa-bold:before {\n  content: \"\\f032\"; }\n\n.fa-bolt:before {\n  content: \"\\f0e7\"; }\n\n.fa-bomb:before {\n  content: \"\\f1e2\"; }\n\n.fa-bone:before {\n  content: \"\\f5d7\"; }\n\n.fa-bong:before {\n  content: \"\\f55c\"; }\n\n.fa-book:before {\n  content: \"\\f02d\"; }\n\n.fa-book-dead:before {\n  content: \"\\f6b7\"; }\n\n.fa-book-medical:before {\n  content: \"\\f7e6\"; }\n\n.fa-book-open:before {\n  content: \"\\f518\"; }\n\n.fa-book-reader:before {\n  content: \"\\f5da\"; }\n\n.fa-bookmark:before {\n  content: \"\\f02e\"; }\n\n.fa-bootstrap:before {\n  content: \"\\f836\"; }\n\n.fa-border-all:before {\n  content: \"\\f84c\"; }\n\n.fa-border-none:before {\n  content: \"\\f850\"; }\n\n.fa-border-style:before {\n  content: \"\\f853\"; }\n\n.fa-bowling-ball:before {\n  content: \"\\f436\"; }\n\n.fa-box:before {\n  content: \"\\f466\"; }\n\n.fa-box-open:before {\n  content: \"\\f49e\"; }\n\n.fa-boxes:before {\n  content: \"\\f468\"; }\n\n.fa-braille:before {\n  content: \"\\f2a1\"; }\n\n.fa-brain:before {\n  content: \"\\f5dc\"; }\n\n.fa-bread-slice:before {\n  content: \"\\f7ec\"; }\n\n.fa-briefcase:before {\n  content: \"\\f0b1\"; }\n\n.fa-briefcase-medical:before {\n  content: \"\\f469\"; }\n\n.fa-broadcast-tower:before {\n  content: \"\\f519\"; }\n\n.fa-broom:before {\n  content: \"\\f51a\"; }\n\n.fa-brush:before {\n  content: \"\\f55d\"; }\n\n.fa-btc:before {\n  content: \"\\f15a\"; }\n\n.fa-buffer:before {\n  content: \"\\f837\"; }\n\n.fa-bug:before {\n  content: \"\\f188\"; }\n\n.fa-building:before {\n  content: \"\\f1ad\"; }\n\n.fa-bullhorn:before {\n  content: \"\\f0a1\"; }\n\n.fa-bullseye:before {\n  content: \"\\f140\"; }\n\n.fa-burn:before {\n  content: \"\\f46a\"; }\n\n.fa-buromobelexperte:before {\n  content: \"\\f37f\"; }\n\n.fa-bus:before {\n  content: \"\\f207\"; }\n\n.fa-bus-alt:before {\n  content: \"\\f55e\"; }\n\n.fa-business-time:before {\n  content: \"\\f64a\"; }\n\n.fa-buy-n-large:before {\n  content: \"\\f8a6\"; }\n\n.fa-buysellads:before {\n  content: \"\\f20d\"; }\n\n.fa-calculator:before {\n  content: \"\\f1ec\"; }\n\n.fa-calendar:before {\n  content: \"\\f133\"; }\n\n.fa-calendar-alt:before {\n  content: \"\\f073\"; }\n\n.fa-calendar-check:before {\n  content: \"\\f274\"; }\n\n.fa-calendar-day:before {\n  content: \"\\f783\"; }\n\n.fa-calendar-minus:before {\n  content: \"\\f272\"; }\n\n.fa-calendar-plus:before {\n  content: \"\\f271\"; }\n\n.fa-calendar-times:before {\n  content: \"\\f273\"; }\n\n.fa-calendar-week:before {\n  content: \"\\f784\"; }\n\n.fa-camera:before {\n  content: \"\\f030\"; }\n\n.fa-camera-retro:before {\n  content: \"\\f083\"; }\n\n.fa-campground:before {\n  content: \"\\f6bb\"; }\n\n.fa-canadian-maple-leaf:before {\n  content: \"\\f785\"; }\n\n.fa-candy-cane:before {\n  content: \"\\f786\"; }\n\n.fa-cannabis:before {\n  content: \"\\f55f\"; }\n\n.fa-capsules:before {\n  content: \"\\f46b\"; }\n\n.fa-car:before {\n  content: \"\\f1b9\"; }\n\n.fa-car-alt:before {\n  content: \"\\f5de\"; }\n\n.fa-car-battery:before {\n  content: \"\\f5df\"; }\n\n.fa-car-crash:before {\n  content: \"\\f5e1\"; }\n\n.fa-car-side:before {\n  content: \"\\f5e4\"; }\n\n.fa-caret-down:before {\n  content: \"\\f0d7\"; }\n\n.fa-caret-left:before {\n  content: \"\\f0d9\"; }\n\n.fa-caret-right:before {\n  content: \"\\f0da\"; }\n\n.fa-caret-square-down:before {\n  content: \"\\f150\"; }\n\n.fa-caret-square-left:before {\n  content: \"\\f191\"; }\n\n.fa-caret-square-right:before {\n  content: \"\\f152\"; }\n\n.fa-caret-square-up:before {\n  content: \"\\f151\"; }\n\n.fa-caret-up:before {\n  content: \"\\f0d8\"; }\n\n.fa-carrot:before {\n  content: \"\\f787\"; }\n\n.fa-cart-arrow-down:before {\n  content: \"\\f218\"; }\n\n.fa-cart-plus:before {\n  content: \"\\f217\"; }\n\n.fa-cash-register:before {\n  content: \"\\f788\"; }\n\n.fa-cat:before {\n  content: \"\\f6be\"; }\n\n.fa-cc-amazon-pay:before {\n  content: \"\\f42d\"; }\n\n.fa-cc-amex:before {\n  content: \"\\f1f3\"; }\n\n.fa-cc-apple-pay:before {\n  content: \"\\f416\"; }\n\n.fa-cc-diners-club:before {\n  content: \"\\f24c\"; }\n\n.fa-cc-discover:before {\n  content: \"\\f1f2\"; }\n\n.fa-cc-jcb:before {\n  content: \"\\f24b\"; }\n\n.fa-cc-mastercard:before {\n  content: \"\\f1f1\"; }\n\n.fa-cc-paypal:before {\n  content: \"\\f1f4\"; }\n\n.fa-cc-stripe:before {\n  content: \"\\f1f5\"; }\n\n.fa-cc-visa:before {\n  content: \"\\f1f0\"; }\n\n.fa-centercode:before {\n  content: \"\\f380\"; }\n\n.fa-centos:before {\n  content: \"\\f789\"; }\n\n.fa-certificate:before {\n  content: \"\\f0a3\"; }\n\n.fa-chair:before {\n  content: \"\\f6c0\"; }\n\n.fa-chalkboard:before {\n  content: \"\\f51b\"; }\n\n.fa-chalkboard-teacher:before {\n  content: \"\\f51c\"; }\n\n.fa-charging-station:before {\n  content: \"\\f5e7\"; }\n\n.fa-chart-area:before {\n  content: \"\\f1fe\"; }\n\n.fa-chart-bar:before {\n  content: \"\\f080\"; }\n\n.fa-chart-line:before {\n  content: \"\\f201\"; }\n\n.fa-chart-pie:before {\n  content: \"\\f200\"; }\n\n.fa-check:before {\n  content: \"\\f00c\"; }\n\n.fa-check-circle:before {\n  content: \"\\f058\"; }\n\n.fa-check-double:before {\n  content: \"\\f560\"; }\n\n.fa-check-square:before {\n  content: \"\\f14a\"; }\n\n.fa-cheese:before {\n  content: \"\\f7ef\"; }\n\n.fa-chess:before {\n  content: \"\\f439\"; }\n\n.fa-chess-bishop:before {\n  content: \"\\f43a\"; }\n\n.fa-chess-board:before {\n  content: \"\\f43c\"; }\n\n.fa-chess-king:before {\n  content: \"\\f43f\"; }\n\n.fa-chess-knight:before {\n  content: \"\\f441\"; }\n\n.fa-chess-pawn:before {\n  content: \"\\f443\"; }\n\n.fa-chess-queen:before {\n  content: \"\\f445\"; }\n\n.fa-chess-rook:before {\n  content: \"\\f447\"; }\n\n.fa-chevron-circle-down:before {\n  content: \"\\f13a\"; }\n\n.fa-chevron-circle-left:before {\n  content: \"\\f137\"; }\n\n.fa-chevron-circle-right:before {\n  content: \"\\f138\"; }\n\n.fa-chevron-circle-up:before {\n  content: \"\\f139\"; }\n\n.fa-chevron-down:before {\n  content: \"\\f078\"; }\n\n.fa-chevron-left:before {\n  content: \"\\f053\"; }\n\n.fa-chevron-right:before {\n  content: \"\\f054\"; }\n\n.fa-chevron-up:before {\n  content: \"\\f077\"; }\n\n.fa-child:before {\n  content: \"\\f1ae\"; }\n\n.fa-chrome:before {\n  content: \"\\f268\"; }\n\n.fa-chromecast:before {\n  content: \"\\f838\"; }\n\n.fa-church:before {\n  content: \"\\f51d\"; }\n\n.fa-circle:before {\n  content: \"\\f111\"; }\n\n.fa-circle-notch:before {\n  content: \"\\f1ce\"; }\n\n.fa-city:before {\n  content: \"\\f64f\"; }\n\n.fa-clinic-medical:before {\n  content: \"\\f7f2\"; }\n\n.fa-clipboard:before {\n  content: \"\\f328\"; }\n\n.fa-clipboard-check:before {\n  content: \"\\f46c\"; }\n\n.fa-clipboard-list:before {\n  content: \"\\f46d\"; }\n\n.fa-clock:before {\n  content: \"\\f017\"; }\n\n.fa-clone:before {\n  content: \"\\f24d\"; }\n\n.fa-closed-captioning:before {\n  content: \"\\f20a\"; }\n\n.fa-cloud:before {\n  content: \"\\f0c2\"; }\n\n.fa-cloud-download-alt:before {\n  content: \"\\f381\"; }\n\n.fa-cloud-meatball:before {\n  content: \"\\f73b\"; }\n\n.fa-cloud-moon:before {\n  content: \"\\f6c3\"; }\n\n.fa-cloud-moon-rain:before {\n  content: \"\\f73c\"; }\n\n.fa-cloud-rain:before {\n  content: \"\\f73d\"; }\n\n.fa-cloud-showers-heavy:before {\n  content: \"\\f740\"; }\n\n.fa-cloud-sun:before {\n  content: \"\\f6c4\"; }\n\n.fa-cloud-sun-rain:before {\n  content: \"\\f743\"; }\n\n.fa-cloud-upload-alt:before {\n  content: \"\\f382\"; }\n\n.fa-cloudscale:before {\n  content: \"\\f383\"; }\n\n.fa-cloudsmith:before {\n  content: \"\\f384\"; }\n\n.fa-cloudversify:before {\n  content: \"\\f385\"; }\n\n.fa-cocktail:before {\n  content: \"\\f561\"; }\n\n.fa-code:before {\n  content: \"\\f121\"; }\n\n.fa-code-branch:before {\n  content: \"\\f126\"; }\n\n.fa-codepen:before {\n  content: \"\\f1cb\"; }\n\n.fa-codiepie:before {\n  content: \"\\f284\"; }\n\n.fa-coffee:before {\n  content: \"\\f0f4\"; }\n\n.fa-cog:before {\n  content: \"\\f013\"; }\n\n.fa-cogs:before {\n  content: \"\\f085\"; }\n\n.fa-coins:before {\n  content: \"\\f51e\"; }\n\n.fa-columns:before {\n  content: \"\\f0db\"; }\n\n.fa-comment:before {\n  content: \"\\f075\"; }\n\n.fa-comment-alt:before {\n  content: \"\\f27a\"; }\n\n.fa-comment-dollar:before {\n  content: \"\\f651\"; }\n\n.fa-comment-dots:before {\n  content: \"\\f4ad\"; }\n\n.fa-comment-medical:before {\n  content: \"\\f7f5\"; }\n\n.fa-comment-slash:before {\n  content: \"\\f4b3\"; }\n\n.fa-comments:before {\n  content: \"\\f086\"; }\n\n.fa-comments-dollar:before {\n  content: \"\\f653\"; }\n\n.fa-compact-disc:before {\n  content: \"\\f51f\"; }\n\n.fa-compass:before {\n  content: \"\\f14e\"; }\n\n.fa-compress:before {\n  content: \"\\f066\"; }\n\n.fa-compress-arrows-alt:before {\n  content: \"\\f78c\"; }\n\n.fa-concierge-bell:before {\n  content: \"\\f562\"; }\n\n.fa-confluence:before {\n  content: \"\\f78d\"; }\n\n.fa-connectdevelop:before {\n  content: \"\\f20e\"; }\n\n.fa-contao:before {\n  content: \"\\f26d\"; }\n\n.fa-cookie:before {\n  content: \"\\f563\"; }\n\n.fa-cookie-bite:before {\n  content: \"\\f564\"; }\n\n.fa-copy:before {\n  content: \"\\f0c5\"; }\n\n.fa-copyright:before {\n  content: \"\\f1f9\"; }\n\n.fa-cotton-bureau:before {\n  content: \"\\f89e\"; }\n\n.fa-couch:before {\n  content: \"\\f4b8\"; }\n\n.fa-cpanel:before {\n  content: \"\\f388\"; }\n\n.fa-creative-commons:before {\n  content: \"\\f25e\"; }\n\n.fa-creative-commons-by:before {\n  content: \"\\f4e7\"; }\n\n.fa-creative-commons-nc:before {\n  content: \"\\f4e8\"; }\n\n.fa-creative-commons-nc-eu:before {\n  content: \"\\f4e9\"; }\n\n.fa-creative-commons-nc-jp:before {\n  content: \"\\f4ea\"; }\n\n.fa-creative-commons-nd:before {\n  content: \"\\f4eb\"; }\n\n.fa-creative-commons-pd:before {\n  content: \"\\f4ec\"; }\n\n.fa-creative-commons-pd-alt:before {\n  content: \"\\f4ed\"; }\n\n.fa-creative-commons-remix:before {\n  content: \"\\f4ee\"; }\n\n.fa-creative-commons-sa:before {\n  content: \"\\f4ef\"; }\n\n.fa-creative-commons-sampling:before {\n  content: \"\\f4f0\"; }\n\n.fa-creative-commons-sampling-plus:before {\n  content: \"\\f4f1\"; }\n\n.fa-creative-commons-share:before {\n  content: \"\\f4f2\"; }\n\n.fa-creative-commons-zero:before {\n  content: \"\\f4f3\"; }\n\n.fa-credit-card:before {\n  content: \"\\f09d\"; }\n\n.fa-critical-role:before {\n  content: \"\\f6c9\"; }\n\n.fa-crop:before {\n  content: \"\\f125\"; }\n\n.fa-crop-alt:before {\n  content: \"\\f565\"; }\n\n.fa-cross:before {\n  content: \"\\f654\"; }\n\n.fa-crosshairs:before {\n  content: \"\\f05b\"; }\n\n.fa-crow:before {\n  content: \"\\f520\"; }\n\n.fa-crown:before {\n  content: \"\\f521\"; }\n\n.fa-crutch:before {\n  content: \"\\f7f7\"; }\n\n.fa-css3:before {\n  content: \"\\f13c\"; }\n\n.fa-css3-alt:before {\n  content: \"\\f38b\"; }\n\n.fa-cube:before {\n  content: \"\\f1b2\"; }\n\n.fa-cubes:before {\n  content: \"\\f1b3\"; }\n\n.fa-cut:before {\n  content: \"\\f0c4\"; }\n\n.fa-cuttlefish:before {\n  content: \"\\f38c\"; }\n\n.fa-d-and-d:before {\n  content: \"\\f38d\"; }\n\n.fa-d-and-d-beyond:before {\n  content: \"\\f6ca\"; }\n\n.fa-dashcube:before {\n  content: \"\\f210\"; }\n\n.fa-database:before {\n  content: \"\\f1c0\"; }\n\n.fa-deaf:before {\n  content: \"\\f2a4\"; }\n\n.fa-delicious:before {\n  content: \"\\f1a5\"; }\n\n.fa-democrat:before {\n  content: \"\\f747\"; }\n\n.fa-deploydog:before {\n  content: \"\\f38e\"; }\n\n.fa-deskpro:before {\n  content: \"\\f38f\"; }\n\n.fa-desktop:before {\n  content: \"\\f108\"; }\n\n.fa-dev:before {\n  content: \"\\f6cc\"; }\n\n.fa-deviantart:before {\n  content: \"\\f1bd\"; }\n\n.fa-dharmachakra:before {\n  content: \"\\f655\"; }\n\n.fa-dhl:before {\n  content: \"\\f790\"; }\n\n.fa-diagnoses:before {\n  content: \"\\f470\"; }\n\n.fa-diaspora:before {\n  content: \"\\f791\"; }\n\n.fa-dice:before {\n  content: \"\\f522\"; }\n\n.fa-dice-d20:before {\n  content: \"\\f6cf\"; }\n\n.fa-dice-d6:before {\n  content: \"\\f6d1\"; }\n\n.fa-dice-five:before {\n  content: \"\\f523\"; }\n\n.fa-dice-four:before {\n  content: \"\\f524\"; }\n\n.fa-dice-one:before {\n  content: \"\\f525\"; }\n\n.fa-dice-six:before {\n  content: \"\\f526\"; }\n\n.fa-dice-three:before {\n  content: \"\\f527\"; }\n\n.fa-dice-two:before {\n  content: \"\\f528\"; }\n\n.fa-digg:before {\n  content: \"\\f1a6\"; }\n\n.fa-digital-ocean:before {\n  content: \"\\f391\"; }\n\n.fa-digital-tachograph:before {\n  content: \"\\f566\"; }\n\n.fa-directions:before {\n  content: \"\\f5eb\"; }\n\n.fa-discord:before {\n  content: \"\\f392\"; }\n\n.fa-discourse:before {\n  content: \"\\f393\"; }\n\n.fa-divide:before {\n  content: \"\\f529\"; }\n\n.fa-dizzy:before {\n  content: \"\\f567\"; }\n\n.fa-dna:before {\n  content: \"\\f471\"; }\n\n.fa-dochub:before {\n  content: \"\\f394\"; }\n\n.fa-docker:before {\n  content: \"\\f395\"; }\n\n.fa-dog:before {\n  content: \"\\f6d3\"; }\n\n.fa-dollar-sign:before {\n  content: \"\\f155\"; }\n\n.fa-dolly:before {\n  content: \"\\f472\"; }\n\n.fa-dolly-flatbed:before {\n  content: \"\\f474\"; }\n\n.fa-donate:before {\n  content: \"\\f4b9\"; }\n\n.fa-door-closed:before {\n  content: \"\\f52a\"; }\n\n.fa-door-open:before {\n  content: \"\\f52b\"; }\n\n.fa-dot-circle:before {\n  content: \"\\f192\"; }\n\n.fa-dove:before {\n  content: \"\\f4ba\"; }\n\n.fa-download:before {\n  content: \"\\f019\"; }\n\n.fa-draft2digital:before {\n  content: \"\\f396\"; }\n\n.fa-drafting-compass:before {\n  content: \"\\f568\"; }\n\n.fa-dragon:before {\n  content: \"\\f6d5\"; }\n\n.fa-draw-polygon:before {\n  content: \"\\f5ee\"; }\n\n.fa-dribbble:before {\n  content: \"\\f17d\"; }\n\n.fa-dribbble-square:before {\n  content: \"\\f397\"; }\n\n.fa-dropbox:before {\n  content: \"\\f16b\"; }\n\n.fa-drum:before {\n  content: \"\\f569\"; }\n\n.fa-drum-steelpan:before {\n  content: \"\\f56a\"; }\n\n.fa-drumstick-bite:before {\n  content: \"\\f6d7\"; }\n\n.fa-drupal:before {\n  content: \"\\f1a9\"; }\n\n.fa-dumbbell:before {\n  content: \"\\f44b\"; }\n\n.fa-dumpster:before {\n  content: \"\\f793\"; }\n\n.fa-dumpster-fire:before {\n  content: \"\\f794\"; }\n\n.fa-dungeon:before {\n  content: \"\\f6d9\"; }\n\n.fa-dyalog:before {\n  content: \"\\f399\"; }\n\n.fa-earlybirds:before {\n  content: \"\\f39a\"; }\n\n.fa-ebay:before {\n  content: \"\\f4f4\"; }\n\n.fa-edge:before {\n  content: \"\\f282\"; }\n\n.fa-edit:before {\n  content: \"\\f044\"; }\n\n.fa-egg:before {\n  content: \"\\f7fb\"; }\n\n.fa-eject:before {\n  content: \"\\f052\"; }\n\n.fa-elementor:before {\n  content: \"\\f430\"; }\n\n.fa-ellipsis-h:before {\n  content: \"\\f141\"; }\n\n.fa-ellipsis-v:before {\n  content: \"\\f142\"; }\n\n.fa-ello:before {\n  content: \"\\f5f1\"; }\n\n.fa-ember:before {\n  content: \"\\f423\"; }\n\n.fa-empire:before {\n  content: \"\\f1d1\"; }\n\n.fa-envelope:before {\n  content: \"\\f0e0\"; }\n\n.fa-envelope-open:before {\n  content: \"\\f2b6\"; }\n\n.fa-envelope-open-text:before {\n  content: \"\\f658\"; }\n\n.fa-envelope-square:before {\n  content: \"\\f199\"; }\n\n.fa-envira:before {\n  content: \"\\f299\"; }\n\n.fa-equals:before {\n  content: \"\\f52c\"; }\n\n.fa-eraser:before {\n  content: \"\\f12d\"; }\n\n.fa-erlang:before {\n  content: \"\\f39d\"; }\n\n.fa-ethereum:before {\n  content: \"\\f42e\"; }\n\n.fa-ethernet:before {\n  content: \"\\f796\"; }\n\n.fa-etsy:before {\n  content: \"\\f2d7\"; }\n\n.fa-euro-sign:before {\n  content: \"\\f153\"; }\n\n.fa-evernote:before {\n  content: \"\\f839\"; }\n\n.fa-exchange-alt:before {\n  content: \"\\f362\"; }\n\n.fa-exclamation:before {\n  content: \"\\f12a\"; }\n\n.fa-exclamation-circle:before {\n  content: \"\\f06a\"; }\n\n.fa-exclamation-triangle:before {\n  content: \"\\f071\"; }\n\n.fa-expand:before {\n  content: \"\\f065\"; }\n\n.fa-expand-arrows-alt:before {\n  content: \"\\f31e\"; }\n\n.fa-expeditedssl:before {\n  content: \"\\f23e\"; }\n\n.fa-external-link-alt:before {\n  content: \"\\f35d\"; }\n\n.fa-external-link-square-alt:before {\n  content: \"\\f360\"; }\n\n.fa-eye:before {\n  content: \"\\f06e\"; }\n\n.fa-eye-dropper:before {\n  content: \"\\f1fb\"; }\n\n.fa-eye-slash:before {\n  content: \"\\f070\"; }\n\n.fa-facebook:before {\n  content: \"\\f09a\"; }\n\n.fa-facebook-f:before {\n  content: \"\\f39e\"; }\n\n.fa-facebook-messenger:before {\n  content: \"\\f39f\"; }\n\n.fa-facebook-square:before {\n  content: \"\\f082\"; }\n\n.fa-fan:before {\n  content: \"\\f863\"; }\n\n.fa-fantasy-flight-games:before {\n  content: \"\\f6dc\"; }\n\n.fa-fast-backward:before {\n  content: \"\\f049\"; }\n\n.fa-fast-forward:before {\n  content: \"\\f050\"; }\n\n.fa-fax:before {\n  content: \"\\f1ac\"; }\n\n.fa-feather:before {\n  content: \"\\f52d\"; }\n\n.fa-feather-alt:before {\n  content: \"\\f56b\"; }\n\n.fa-fedex:before {\n  content: \"\\f797\"; }\n\n.fa-fedora:before {\n  content: \"\\f798\"; }\n\n.fa-female:before {\n  content: \"\\f182\"; }\n\n.fa-fighter-jet:before {\n  content: \"\\f0fb\"; }\n\n.fa-figma:before {\n  content: \"\\f799\"; }\n\n.fa-file:before {\n  content: \"\\f15b\"; }\n\n.fa-file-alt:before {\n  content: \"\\f15c\"; }\n\n.fa-file-archive:before {\n  content: \"\\f1c6\"; }\n\n.fa-file-audio:before {\n  content: \"\\f1c7\"; }\n\n.fa-file-code:before {\n  content: \"\\f1c9\"; }\n\n.fa-file-contract:before {\n  content: \"\\f56c\"; }\n\n.fa-file-csv:before {\n  content: \"\\f6dd\"; }\n\n.fa-file-download:before {\n  content: \"\\f56d\"; }\n\n.fa-file-excel:before {\n  content: \"\\f1c3\"; }\n\n.fa-file-export:before {\n  content: \"\\f56e\"; }\n\n.fa-file-image:before {\n  content: \"\\f1c5\"; }\n\n.fa-file-import:before {\n  content: \"\\f56f\"; }\n\n.fa-file-invoice:before {\n  content: \"\\f570\"; }\n\n.fa-file-invoice-dollar:before {\n  content: \"\\f571\"; }\n\n.fa-file-medical:before {\n  content: \"\\f477\"; }\n\n.fa-file-medical-alt:before {\n  content: \"\\f478\"; }\n\n.fa-file-pdf:before {\n  content: \"\\f1c1\"; }\n\n.fa-file-powerpoint:before {\n  content: \"\\f1c4\"; }\n\n.fa-file-prescription:before {\n  content: \"\\f572\"; }\n\n.fa-file-signature:before {\n  content: \"\\f573\"; }\n\n.fa-file-upload:before {\n  content: \"\\f574\"; }\n\n.fa-file-video:before {\n  content: \"\\f1c8\"; }\n\n.fa-file-word:before {\n  content: \"\\f1c2\"; }\n\n.fa-fill:before {\n  content: \"\\f575\"; }\n\n.fa-fill-drip:before {\n  content: \"\\f576\"; }\n\n.fa-film:before {\n  content: \"\\f008\"; }\n\n.fa-filter:before {\n  content: \"\\f0b0\"; }\n\n.fa-fingerprint:before {\n  content: \"\\f577\"; }\n\n.fa-fire:before {\n  content: \"\\f06d\"; }\n\n.fa-fire-alt:before {\n  content: \"\\f7e4\"; }\n\n.fa-fire-extinguisher:before {\n  content: \"\\f134\"; }\n\n.fa-firefox:before {\n  content: \"\\f269\"; }\n\n.fa-first-aid:before {\n  content: \"\\f479\"; }\n\n.fa-first-order:before {\n  content: \"\\f2b0\"; }\n\n.fa-first-order-alt:before {\n  content: \"\\f50a\"; }\n\n.fa-firstdraft:before {\n  content: \"\\f3a1\"; }\n\n.fa-fish:before {\n  content: \"\\f578\"; }\n\n.fa-fist-raised:before {\n  content: \"\\f6de\"; }\n\n.fa-flag:before {\n  content: \"\\f024\"; }\n\n.fa-flag-checkered:before {\n  content: \"\\f11e\"; }\n\n.fa-flag-usa:before {\n  content: \"\\f74d\"; }\n\n.fa-flask:before {\n  content: \"\\f0c3\"; }\n\n.fa-flickr:before {\n  content: \"\\f16e\"; }\n\n.fa-flipboard:before {\n  content: \"\\f44d\"; }\n\n.fa-flushed:before {\n  content: \"\\f579\"; }\n\n.fa-fly:before {\n  content: \"\\f417\"; }\n\n.fa-folder:before {\n  content: \"\\f07b\"; }\n\n.fa-folder-minus:before {\n  content: \"\\f65d\"; }\n\n.fa-folder-open:before {\n  content: \"\\f07c\"; }\n\n.fa-folder-plus:before {\n  content: \"\\f65e\"; }\n\n.fa-font:before {\n  content: \"\\f031\"; }\n\n.fa-font-awesome:before {\n  content: \"\\f2b4\"; }\n\n.fa-font-awesome-alt:before {\n  content: \"\\f35c\"; }\n\n.fa-font-awesome-flag:before {\n  content: \"\\f425\"; }\n\n.fa-font-awesome-logo-full:before {\n  content: \"\\f4e6\"; }\n\n.fa-fonticons:before {\n  content: \"\\f280\"; }\n\n.fa-fonticons-fi:before {\n  content: \"\\f3a2\"; }\n\n.fa-football-ball:before {\n  content: \"\\f44e\"; }\n\n.fa-fort-awesome:before {\n  content: \"\\f286\"; }\n\n.fa-fort-awesome-alt:before {\n  content: \"\\f3a3\"; }\n\n.fa-forumbee:before {\n  content: \"\\f211\"; }\n\n.fa-forward:before {\n  content: \"\\f04e\"; }\n\n.fa-foursquare:before {\n  content: \"\\f180\"; }\n\n.fa-free-code-camp:before {\n  content: \"\\f2c5\"; }\n\n.fa-freebsd:before {\n  content: \"\\f3a4\"; }\n\n.fa-frog:before {\n  content: \"\\f52e\"; }\n\n.fa-frown:before {\n  content: \"\\f119\"; }\n\n.fa-frown-open:before {\n  content: \"\\f57a\"; }\n\n.fa-fulcrum:before {\n  content: \"\\f50b\"; }\n\n.fa-funnel-dollar:before {\n  content: \"\\f662\"; }\n\n.fa-futbol:before {\n  content: \"\\f1e3\"; }\n\n.fa-galactic-republic:before {\n  content: \"\\f50c\"; }\n\n.fa-galactic-senate:before {\n  content: \"\\f50d\"; }\n\n.fa-gamepad:before {\n  content: \"\\f11b\"; }\n\n.fa-gas-pump:before {\n  content: \"\\f52f\"; }\n\n.fa-gavel:before {\n  content: \"\\f0e3\"; }\n\n.fa-gem:before {\n  content: \"\\f3a5\"; }\n\n.fa-genderless:before {\n  content: \"\\f22d\"; }\n\n.fa-get-pocket:before {\n  content: \"\\f265\"; }\n\n.fa-gg:before {\n  content: \"\\f260\"; }\n\n.fa-gg-circle:before {\n  content: \"\\f261\"; }\n\n.fa-ghost:before {\n  content: \"\\f6e2\"; }\n\n.fa-gift:before {\n  content: \"\\f06b\"; }\n\n.fa-gifts:before {\n  content: \"\\f79c\"; }\n\n.fa-git:before {\n  content: \"\\f1d3\"; }\n\n.fa-git-alt:before {\n  content: \"\\f841\"; }\n\n.fa-git-square:before {\n  content: \"\\f1d2\"; }\n\n.fa-github:before {\n  content: \"\\f09b\"; }\n\n.fa-github-alt:before {\n  content: \"\\f113\"; }\n\n.fa-github-square:before {\n  content: \"\\f092\"; }\n\n.fa-gitkraken:before {\n  content: \"\\f3a6\"; }\n\n.fa-gitlab:before {\n  content: \"\\f296\"; }\n\n.fa-gitter:before {\n  content: \"\\f426\"; }\n\n.fa-glass-cheers:before {\n  content: \"\\f79f\"; }\n\n.fa-glass-martini:before {\n  content: \"\\f000\"; }\n\n.fa-glass-martini-alt:before {\n  content: \"\\f57b\"; }\n\n.fa-glass-whiskey:before {\n  content: \"\\f7a0\"; }\n\n.fa-glasses:before {\n  content: \"\\f530\"; }\n\n.fa-glide:before {\n  content: \"\\f2a5\"; }\n\n.fa-glide-g:before {\n  content: \"\\f2a6\"; }\n\n.fa-globe:before {\n  content: \"\\f0ac\"; }\n\n.fa-globe-africa:before {\n  content: \"\\f57c\"; }\n\n.fa-globe-americas:before {\n  content: \"\\f57d\"; }\n\n.fa-globe-asia:before {\n  content: \"\\f57e\"; }\n\n.fa-globe-europe:before {\n  content: \"\\f7a2\"; }\n\n.fa-gofore:before {\n  content: \"\\f3a7\"; }\n\n.fa-golf-ball:before {\n  content: \"\\f450\"; }\n\n.fa-goodreads:before {\n  content: \"\\f3a8\"; }\n\n.fa-goodreads-g:before {\n  content: \"\\f3a9\"; }\n\n.fa-google:before {\n  content: \"\\f1a0\"; }\n\n.fa-google-drive:before {\n  content: \"\\f3aa\"; }\n\n.fa-google-play:before {\n  content: \"\\f3ab\"; }\n\n.fa-google-plus:before {\n  content: \"\\f2b3\"; }\n\n.fa-google-plus-g:before {\n  content: \"\\f0d5\"; }\n\n.fa-google-plus-square:before {\n  content: \"\\f0d4\"; }\n\n.fa-google-wallet:before {\n  content: \"\\f1ee\"; }\n\n.fa-gopuram:before {\n  content: \"\\f664\"; }\n\n.fa-graduation-cap:before {\n  content: \"\\f19d\"; }\n\n.fa-gratipay:before {\n  content: \"\\f184\"; }\n\n.fa-grav:before {\n  content: \"\\f2d6\"; }\n\n.fa-greater-than:before {\n  content: \"\\f531\"; }\n\n.fa-greater-than-equal:before {\n  content: \"\\f532\"; }\n\n.fa-grimace:before {\n  content: \"\\f57f\"; }\n\n.fa-grin:before {\n  content: \"\\f580\"; }\n\n.fa-grin-alt:before {\n  content: \"\\f581\"; }\n\n.fa-grin-beam:before {\n  content: \"\\f582\"; }\n\n.fa-grin-beam-sweat:before {\n  content: \"\\f583\"; }\n\n.fa-grin-hearts:before {\n  content: \"\\f584\"; }\n\n.fa-grin-squint:before {\n  content: \"\\f585\"; }\n\n.fa-grin-squint-tears:before {\n  content: \"\\f586\"; }\n\n.fa-grin-stars:before {\n  content: \"\\f587\"; }\n\n.fa-grin-tears:before {\n  content: \"\\f588\"; }\n\n.fa-grin-tongue:before {\n  content: \"\\f589\"; }\n\n.fa-grin-tongue-squint:before {\n  content: \"\\f58a\"; }\n\n.fa-grin-tongue-wink:before {\n  content: \"\\f58b\"; }\n\n.fa-grin-wink:before {\n  content: \"\\f58c\"; }\n\n.fa-grip-horizontal:before {\n  content: \"\\f58d\"; }\n\n.fa-grip-lines:before {\n  content: \"\\f7a4\"; }\n\n.fa-grip-lines-vertical:before {\n  content: \"\\f7a5\"; }\n\n.fa-grip-vertical:before {\n  content: \"\\f58e\"; }\n\n.fa-gripfire:before {\n  content: \"\\f3ac\"; }\n\n.fa-grunt:before {\n  content: \"\\f3ad\"; }\n\n.fa-guitar:before {\n  content: \"\\f7a6\"; }\n\n.fa-gulp:before {\n  content: \"\\f3ae\"; }\n\n.fa-h-square:before {\n  content: \"\\f0fd\"; }\n\n.fa-hacker-news:before {\n  content: \"\\f1d4\"; }\n\n.fa-hacker-news-square:before {\n  content: \"\\f3af\"; }\n\n.fa-hackerrank:before {\n  content: \"\\f5f7\"; }\n\n.fa-hamburger:before {\n  content: \"\\f805\"; }\n\n.fa-hammer:before {\n  content: \"\\f6e3\"; }\n\n.fa-hamsa:before {\n  content: \"\\f665\"; }\n\n.fa-hand-holding:before {\n  content: \"\\f4bd\"; }\n\n.fa-hand-holding-heart:before {\n  content: \"\\f4be\"; }\n\n.fa-hand-holding-usd:before {\n  content: \"\\f4c0\"; }\n\n.fa-hand-lizard:before {\n  content: \"\\f258\"; }\n\n.fa-hand-middle-finger:before {\n  content: \"\\f806\"; }\n\n.fa-hand-paper:before {\n  content: \"\\f256\"; }\n\n.fa-hand-peace:before {\n  content: \"\\f25b\"; }\n\n.fa-hand-point-down:before {\n  content: \"\\f0a7\"; }\n\n.fa-hand-point-left:before {\n  content: \"\\f0a5\"; }\n\n.fa-hand-point-right:before {\n  content: \"\\f0a4\"; }\n\n.fa-hand-point-up:before {\n  content: \"\\f0a6\"; }\n\n.fa-hand-pointer:before {\n  content: \"\\f25a\"; }\n\n.fa-hand-rock:before {\n  content: \"\\f255\"; }\n\n.fa-hand-scissors:before {\n  content: \"\\f257\"; }\n\n.fa-hand-spock:before {\n  content: \"\\f259\"; }\n\n.fa-hands:before {\n  content: \"\\f4c2\"; }\n\n.fa-hands-helping:before {\n  content: \"\\f4c4\"; }\n\n.fa-handshake:before {\n  content: \"\\f2b5\"; }\n\n.fa-hanukiah:before {\n  content: \"\\f6e6\"; }\n\n.fa-hard-hat:before {\n  content: \"\\f807\"; }\n\n.fa-hashtag:before {\n  content: \"\\f292\"; }\n\n.fa-hat-cowboy:before {\n  content: \"\\f8c0\"; }\n\n.fa-hat-cowboy-side:before {\n  content: \"\\f8c1\"; }\n\n.fa-hat-wizard:before {\n  content: \"\\f6e8\"; }\n\n.fa-haykal:before {\n  content: \"\\f666\"; }\n\n.fa-hdd:before {\n  content: \"\\f0a0\"; }\n\n.fa-heading:before {\n  content: \"\\f1dc\"; }\n\n.fa-headphones:before {\n  content: \"\\f025\"; }\n\n.fa-headphones-alt:before {\n  content: \"\\f58f\"; }\n\n.fa-headset:before {\n  content: \"\\f590\"; }\n\n.fa-heart:before {\n  content: \"\\f004\"; }\n\n.fa-heart-broken:before {\n  content: \"\\f7a9\"; }\n\n.fa-heartbeat:before {\n  content: \"\\f21e\"; }\n\n.fa-helicopter:before {\n  content: \"\\f533\"; }\n\n.fa-highlighter:before {\n  content: \"\\f591\"; }\n\n.fa-hiking:before {\n  content: \"\\f6ec\"; }\n\n.fa-hippo:before {\n  content: \"\\f6ed\"; }\n\n.fa-hips:before {\n  content: \"\\f452\"; }\n\n.fa-hire-a-helper:before {\n  content: \"\\f3b0\"; }\n\n.fa-history:before {\n  content: \"\\f1da\"; }\n\n.fa-hockey-puck:before {\n  content: \"\\f453\"; }\n\n.fa-holly-berry:before {\n  content: \"\\f7aa\"; }\n\n.fa-home:before {\n  content: \"\\f015\"; }\n\n.fa-hooli:before {\n  content: \"\\f427\"; }\n\n.fa-hornbill:before {\n  content: \"\\f592\"; }\n\n.fa-horse:before {\n  content: \"\\f6f0\"; }\n\n.fa-horse-head:before {\n  content: \"\\f7ab\"; }\n\n.fa-hospital:before {\n  content: \"\\f0f8\"; }\n\n.fa-hospital-alt:before {\n  content: \"\\f47d\"; }\n\n.fa-hospital-symbol:before {\n  content: \"\\f47e\"; }\n\n.fa-hot-tub:before {\n  content: \"\\f593\"; }\n\n.fa-hotdog:before {\n  content: \"\\f80f\"; }\n\n.fa-hotel:before {\n  content: \"\\f594\"; }\n\n.fa-hotjar:before {\n  content: \"\\f3b1\"; }\n\n.fa-hourglass:before {\n  content: \"\\f254\"; }\n\n.fa-hourglass-end:before {\n  content: \"\\f253\"; }\n\n.fa-hourglass-half:before {\n  content: \"\\f252\"; }\n\n.fa-hourglass-start:before {\n  content: \"\\f251\"; }\n\n.fa-house-damage:before {\n  content: \"\\f6f1\"; }\n\n.fa-houzz:before {\n  content: \"\\f27c\"; }\n\n.fa-hryvnia:before {\n  content: \"\\f6f2\"; }\n\n.fa-html5:before {\n  content: \"\\f13b\"; }\n\n.fa-hubspot:before {\n  content: \"\\f3b2\"; }\n\n.fa-i-cursor:before {\n  content: \"\\f246\"; }\n\n.fa-ice-cream:before {\n  content: \"\\f810\"; }\n\n.fa-icicles:before {\n  content: \"\\f7ad\"; }\n\n.fa-icons:before {\n  content: \"\\f86d\"; }\n\n.fa-id-badge:before {\n  content: \"\\f2c1\"; }\n\n.fa-id-card:before {\n  content: \"\\f2c2\"; }\n\n.fa-id-card-alt:before {\n  content: \"\\f47f\"; }\n\n.fa-igloo:before {\n  content: \"\\f7ae\"; }\n\n.fa-image:before {\n  content: \"\\f03e\"; }\n\n.fa-images:before {\n  content: \"\\f302\"; }\n\n.fa-imdb:before {\n  content: \"\\f2d8\"; }\n\n.fa-inbox:before {\n  content: \"\\f01c\"; }\n\n.fa-indent:before {\n  content: \"\\f03c\"; }\n\n.fa-industry:before {\n  content: \"\\f275\"; }\n\n.fa-infinity:before {\n  content: \"\\f534\"; }\n\n.fa-info:before {\n  content: \"\\f129\"; }\n\n.fa-info-circle:before {\n  content: \"\\f05a\"; }\n\n.fa-instagram:before {\n  content: \"\\f16d\"; }\n\n.fa-intercom:before {\n  content: \"\\f7af\"; }\n\n.fa-internet-explorer:before {\n  content: \"\\f26b\"; }\n\n.fa-invision:before {\n  content: \"\\f7b0\"; }\n\n.fa-ioxhost:before {\n  content: \"\\f208\"; }\n\n.fa-italic:before {\n  content: \"\\f033\"; }\n\n.fa-itch-io:before {\n  content: \"\\f83a\"; }\n\n.fa-itunes:before {\n  content: \"\\f3b4\"; }\n\n.fa-itunes-note:before {\n  content: \"\\f3b5\"; }\n\n.fa-java:before {\n  content: \"\\f4e4\"; }\n\n.fa-jedi:before {\n  content: \"\\f669\"; }\n\n.fa-jedi-order:before {\n  content: \"\\f50e\"; }\n\n.fa-jenkins:before {\n  content: \"\\f3b6\"; }\n\n.fa-jira:before {\n  content: \"\\f7b1\"; }\n\n.fa-joget:before {\n  content: \"\\f3b7\"; }\n\n.fa-joint:before {\n  content: \"\\f595\"; }\n\n.fa-joomla:before {\n  content: \"\\f1aa\"; }\n\n.fa-journal-whills:before {\n  content: \"\\f66a\"; }\n\n.fa-js:before {\n  content: \"\\f3b8\"; }\n\n.fa-js-square:before {\n  content: \"\\f3b9\"; }\n\n.fa-jsfiddle:before {\n  content: \"\\f1cc\"; }\n\n.fa-kaaba:before {\n  content: \"\\f66b\"; }\n\n.fa-kaggle:before {\n  content: \"\\f5fa\"; }\n\n.fa-key:before {\n  content: \"\\f084\"; }\n\n.fa-keybase:before {\n  content: \"\\f4f5\"; }\n\n.fa-keyboard:before {\n  content: \"\\f11c\"; }\n\n.fa-keycdn:before {\n  content: \"\\f3ba\"; }\n\n.fa-khanda:before {\n  content: \"\\f66d\"; }\n\n.fa-kickstarter:before {\n  content: \"\\f3bb\"; }\n\n.fa-kickstarter-k:before {\n  content: \"\\f3bc\"; }\n\n.fa-kiss:before {\n  content: \"\\f596\"; }\n\n.fa-kiss-beam:before {\n  content: \"\\f597\"; }\n\n.fa-kiss-wink-heart:before {\n  content: \"\\f598\"; }\n\n.fa-kiwi-bird:before {\n  content: \"\\f535\"; }\n\n.fa-korvue:before {\n  content: \"\\f42f\"; }\n\n.fa-landmark:before {\n  content: \"\\f66f\"; }\n\n.fa-language:before {\n  content: \"\\f1ab\"; }\n\n.fa-laptop:before {\n  content: \"\\f109\"; }\n\n.fa-laptop-code:before {\n  content: \"\\f5fc\"; }\n\n.fa-laptop-medical:before {\n  content: \"\\f812\"; }\n\n.fa-laravel:before {\n  content: \"\\f3bd\"; }\n\n.fa-lastfm:before {\n  content: \"\\f202\"; }\n\n.fa-lastfm-square:before {\n  content: \"\\f203\"; }\n\n.fa-laugh:before {\n  content: \"\\f599\"; }\n\n.fa-laugh-beam:before {\n  content: \"\\f59a\"; }\n\n.fa-laugh-squint:before {\n  content: \"\\f59b\"; }\n\n.fa-laugh-wink:before {\n  content: \"\\f59c\"; }\n\n.fa-layer-group:before {\n  content: \"\\f5fd\"; }\n\n.fa-leaf:before {\n  content: \"\\f06c\"; }\n\n.fa-leanpub:before {\n  content: \"\\f212\"; }\n\n.fa-lemon:before {\n  content: \"\\f094\"; }\n\n.fa-less:before {\n  content: \"\\f41d\"; }\n\n.fa-less-than:before {\n  content: \"\\f536\"; }\n\n.fa-less-than-equal:before {\n  content: \"\\f537\"; }\n\n.fa-level-down-alt:before {\n  content: \"\\f3be\"; }\n\n.fa-level-up-alt:before {\n  content: \"\\f3bf\"; }\n\n.fa-life-ring:before {\n  content: \"\\f1cd\"; }\n\n.fa-lightbulb:before {\n  content: \"\\f0eb\"; }\n\n.fa-line:before {\n  content: \"\\f3c0\"; }\n\n.fa-link:before {\n  content: \"\\f0c1\"; }\n\n.fa-linkedin:before {\n  content: \"\\f08c\"; }\n\n.fa-linkedin-in:before {\n  content: \"\\f0e1\"; }\n\n.fa-linode:before {\n  content: \"\\f2b8\"; }\n\n.fa-linux:before {\n  content: \"\\f17c\"; }\n\n.fa-lira-sign:before {\n  content: \"\\f195\"; }\n\n.fa-list:before {\n  content: \"\\f03a\"; }\n\n.fa-list-alt:before {\n  content: \"\\f022\"; }\n\n.fa-list-ol:before {\n  content: \"\\f0cb\"; }\n\n.fa-list-ul:before {\n  content: \"\\f0ca\"; }\n\n.fa-location-arrow:before {\n  content: \"\\f124\"; }\n\n.fa-lock:before {\n  content: \"\\f023\"; }\n\n.fa-lock-open:before {\n  content: \"\\f3c1\"; }\n\n.fa-long-arrow-alt-down:before {\n  content: \"\\f309\"; }\n\n.fa-long-arrow-alt-left:before {\n  content: \"\\f30a\"; }\n\n.fa-long-arrow-alt-right:before {\n  content: \"\\f30b\"; }\n\n.fa-long-arrow-alt-up:before {\n  content: \"\\f30c\"; }\n\n.fa-low-vision:before {\n  content: \"\\f2a8\"; }\n\n.fa-luggage-cart:before {\n  content: \"\\f59d\"; }\n\n.fa-lyft:before {\n  content: \"\\f3c3\"; }\n\n.fa-magento:before {\n  content: \"\\f3c4\"; }\n\n.fa-magic:before {\n  content: \"\\f0d0\"; }\n\n.fa-magnet:before {\n  content: \"\\f076\"; }\n\n.fa-mail-bulk:before {\n  content: \"\\f674\"; }\n\n.fa-mailchimp:before {\n  content: \"\\f59e\"; }\n\n.fa-male:before {\n  content: \"\\f183\"; }\n\n.fa-mandalorian:before {\n  content: \"\\f50f\"; }\n\n.fa-map:before {\n  content: \"\\f279\"; }\n\n.fa-map-marked:before {\n  content: \"\\f59f\"; }\n\n.fa-map-marked-alt:before {\n  content: \"\\f5a0\"; }\n\n.fa-map-marker:before {\n  content: \"\\f041\"; }\n\n.fa-map-marker-alt:before {\n  content: \"\\f3c5\"; }\n\n.fa-map-pin:before {\n  content: \"\\f276\"; }\n\n.fa-map-signs:before {\n  content: \"\\f277\"; }\n\n.fa-markdown:before {\n  content: \"\\f60f\"; }\n\n.fa-marker:before {\n  content: \"\\f5a1\"; }\n\n.fa-mars:before {\n  content: \"\\f222\"; }\n\n.fa-mars-double:before {\n  content: \"\\f227\"; }\n\n.fa-mars-stroke:before {\n  content: \"\\f229\"; }\n\n.fa-mars-stroke-h:before {\n  content: \"\\f22b\"; }\n\n.fa-mars-stroke-v:before {\n  content: \"\\f22a\"; }\n\n.fa-mask:before {\n  content: \"\\f6fa\"; }\n\n.fa-mastodon:before {\n  content: \"\\f4f6\"; }\n\n.fa-maxcdn:before {\n  content: \"\\f136\"; }\n\n.fa-mdb:before {\n  content: \"\\f8ca\"; }\n\n.fa-medal:before {\n  content: \"\\f5a2\"; }\n\n.fa-medapps:before {\n  content: \"\\f3c6\"; }\n\n.fa-medium:before {\n  content: \"\\f23a\"; }\n\n.fa-medium-m:before {\n  content: \"\\f3c7\"; }\n\n.fa-medkit:before {\n  content: \"\\f0fa\"; }\n\n.fa-medrt:before {\n  content: \"\\f3c8\"; }\n\n.fa-meetup:before {\n  content: \"\\f2e0\"; }\n\n.fa-megaport:before {\n  content: \"\\f5a3\"; }\n\n.fa-meh:before {\n  content: \"\\f11a\"; }\n\n.fa-meh-blank:before {\n  content: \"\\f5a4\"; }\n\n.fa-meh-rolling-eyes:before {\n  content: \"\\f5a5\"; }\n\n.fa-memory:before {\n  content: \"\\f538\"; }\n\n.fa-mendeley:before {\n  content: \"\\f7b3\"; }\n\n.fa-menorah:before {\n  content: \"\\f676\"; }\n\n.fa-mercury:before {\n  content: \"\\f223\"; }\n\n.fa-meteor:before {\n  content: \"\\f753\"; }\n\n.fa-microchip:before {\n  content: \"\\f2db\"; }\n\n.fa-microphone:before {\n  content: \"\\f130\"; }\n\n.fa-microphone-alt:before {\n  content: \"\\f3c9\"; }\n\n.fa-microphone-alt-slash:before {\n  content: \"\\f539\"; }\n\n.fa-microphone-slash:before {\n  content: \"\\f131\"; }\n\n.fa-microscope:before {\n  content: \"\\f610\"; }\n\n.fa-microsoft:before {\n  content: \"\\f3ca\"; }\n\n.fa-minus:before {\n  content: \"\\f068\"; }\n\n.fa-minus-circle:before {\n  content: \"\\f056\"; }\n\n.fa-minus-square:before {\n  content: \"\\f146\"; }\n\n.fa-mitten:before {\n  content: \"\\f7b5\"; }\n\n.fa-mix:before {\n  content: \"\\f3cb\"; }\n\n.fa-mixcloud:before {\n  content: \"\\f289\"; }\n\n.fa-mizuni:before {\n  content: \"\\f3cc\"; }\n\n.fa-mobile:before {\n  content: \"\\f10b\"; }\n\n.fa-mobile-alt:before {\n  content: \"\\f3cd\"; }\n\n.fa-modx:before {\n  content: \"\\f285\"; }\n\n.fa-monero:before {\n  content: \"\\f3d0\"; }\n\n.fa-money-bill:before {\n  content: \"\\f0d6\"; }\n\n.fa-money-bill-alt:before {\n  content: \"\\f3d1\"; }\n\n.fa-money-bill-wave:before {\n  content: \"\\f53a\"; }\n\n.fa-money-bill-wave-alt:before {\n  content: \"\\f53b\"; }\n\n.fa-money-check:before {\n  content: \"\\f53c\"; }\n\n.fa-money-check-alt:before {\n  content: \"\\f53d\"; }\n\n.fa-monument:before {\n  content: \"\\f5a6\"; }\n\n.fa-moon:before {\n  content: \"\\f186\"; }\n\n.fa-mortar-pestle:before {\n  content: \"\\f5a7\"; }\n\n.fa-mosque:before {\n  content: \"\\f678\"; }\n\n.fa-motorcycle:before {\n  content: \"\\f21c\"; }\n\n.fa-mountain:before {\n  content: \"\\f6fc\"; }\n\n.fa-mouse:before {\n  content: \"\\f8cc\"; }\n\n.fa-mouse-pointer:before {\n  content: \"\\f245\"; }\n\n.fa-mug-hot:before {\n  content: \"\\f7b6\"; }\n\n.fa-music:before {\n  content: \"\\f001\"; }\n\n.fa-napster:before {\n  content: \"\\f3d2\"; }\n\n.fa-neos:before {\n  content: \"\\f612\"; }\n\n.fa-network-wired:before {\n  content: \"\\f6ff\"; }\n\n.fa-neuter:before {\n  content: \"\\f22c\"; }\n\n.fa-newspaper:before {\n  content: \"\\f1ea\"; }\n\n.fa-nimblr:before {\n  content: \"\\f5a8\"; }\n\n.fa-node:before {\n  content: \"\\f419\"; }\n\n.fa-node-js:before {\n  content: \"\\f3d3\"; }\n\n.fa-not-equal:before {\n  content: \"\\f53e\"; }\n\n.fa-notes-medical:before {\n  content: \"\\f481\"; }\n\n.fa-npm:before {\n  content: \"\\f3d4\"; }\n\n.fa-ns8:before {\n  content: \"\\f3d5\"; }\n\n.fa-nutritionix:before {\n  content: \"\\f3d6\"; }\n\n.fa-object-group:before {\n  content: \"\\f247\"; }\n\n.fa-object-ungroup:before {\n  content: \"\\f248\"; }\n\n.fa-odnoklassniki:before {\n  content: \"\\f263\"; }\n\n.fa-odnoklassniki-square:before {\n  content: \"\\f264\"; }\n\n.fa-oil-can:before {\n  content: \"\\f613\"; }\n\n.fa-old-republic:before {\n  content: \"\\f510\"; }\n\n.fa-om:before {\n  content: \"\\f679\"; }\n\n.fa-opencart:before {\n  content: \"\\f23d\"; }\n\n.fa-openid:before {\n  content: \"\\f19b\"; }\n\n.fa-opera:before {\n  content: \"\\f26a\"; }\n\n.fa-optin-monster:before {\n  content: \"\\f23c\"; }\n\n.fa-orcid:before {\n  content: \"\\f8d2\"; }\n\n.fa-osi:before {\n  content: \"\\f41a\"; }\n\n.fa-otter:before {\n  content: \"\\f700\"; }\n\n.fa-outdent:before {\n  content: \"\\f03b\"; }\n\n.fa-page4:before {\n  content: \"\\f3d7\"; }\n\n.fa-pagelines:before {\n  content: \"\\f18c\"; }\n\n.fa-pager:before {\n  content: \"\\f815\"; }\n\n.fa-paint-brush:before {\n  content: \"\\f1fc\"; }\n\n.fa-paint-roller:before {\n  content: \"\\f5aa\"; }\n\n.fa-palette:before {\n  content: \"\\f53f\"; }\n\n.fa-palfed:before {\n  content: \"\\f3d8\"; }\n\n.fa-pallet:before {\n  content: \"\\f482\"; }\n\n.fa-paper-plane:before {\n  content: \"\\f1d8\"; }\n\n.fa-paperclip:before {\n  content: \"\\f0c6\"; }\n\n.fa-parachute-box:before {\n  content: \"\\f4cd\"; }\n\n.fa-paragraph:before {\n  content: \"\\f1dd\"; }\n\n.fa-parking:before {\n  content: \"\\f540\"; }\n\n.fa-passport:before {\n  content: \"\\f5ab\"; }\n\n.fa-pastafarianism:before {\n  content: \"\\f67b\"; }\n\n.fa-paste:before {\n  content: \"\\f0ea\"; }\n\n.fa-patreon:before {\n  content: \"\\f3d9\"; }\n\n.fa-pause:before {\n  content: \"\\f04c\"; }\n\n.fa-pause-circle:before {\n  content: \"\\f28b\"; }\n\n.fa-paw:before {\n  content: \"\\f1b0\"; }\n\n.fa-paypal:before {\n  content: \"\\f1ed\"; }\n\n.fa-peace:before {\n  content: \"\\f67c\"; }\n\n.fa-pen:before {\n  content: \"\\f304\"; }\n\n.fa-pen-alt:before {\n  content: \"\\f305\"; }\n\n.fa-pen-fancy:before {\n  content: \"\\f5ac\"; }\n\n.fa-pen-nib:before {\n  content: \"\\f5ad\"; }\n\n.fa-pen-square:before {\n  content: \"\\f14b\"; }\n\n.fa-pencil-alt:before {\n  content: \"\\f303\"; }\n\n.fa-pencil-ruler:before {\n  content: \"\\f5ae\"; }\n\n.fa-penny-arcade:before {\n  content: \"\\f704\"; }\n\n.fa-people-carry:before {\n  content: \"\\f4ce\"; }\n\n.fa-pepper-hot:before {\n  content: \"\\f816\"; }\n\n.fa-percent:before {\n  content: \"\\f295\"; }\n\n.fa-percentage:before {\n  content: \"\\f541\"; }\n\n.fa-periscope:before {\n  content: \"\\f3da\"; }\n\n.fa-person-booth:before {\n  content: \"\\f756\"; }\n\n.fa-phabricator:before {\n  content: \"\\f3db\"; }\n\n.fa-phoenix-framework:before {\n  content: \"\\f3dc\"; }\n\n.fa-phoenix-squadron:before {\n  content: \"\\f511\"; }\n\n.fa-phone:before {\n  content: \"\\f095\"; }\n\n.fa-phone-alt:before {\n  content: \"\\f879\"; }\n\n.fa-phone-slash:before {\n  content: \"\\f3dd\"; }\n\n.fa-phone-square:before {\n  content: \"\\f098\"; }\n\n.fa-phone-square-alt:before {\n  content: \"\\f87b\"; }\n\n.fa-phone-volume:before {\n  content: \"\\f2a0\"; }\n\n.fa-photo-video:before {\n  content: \"\\f87c\"; }\n\n.fa-php:before {\n  content: \"\\f457\"; }\n\n.fa-pied-piper:before {\n  content: \"\\f2ae\"; }\n\n.fa-pied-piper-alt:before {\n  content: \"\\f1a8\"; }\n\n.fa-pied-piper-hat:before {\n  content: \"\\f4e5\"; }\n\n.fa-pied-piper-pp:before {\n  content: \"\\f1a7\"; }\n\n.fa-piggy-bank:before {\n  content: \"\\f4d3\"; }\n\n.fa-pills:before {\n  content: \"\\f484\"; }\n\n.fa-pinterest:before {\n  content: \"\\f0d2\"; }\n\n.fa-pinterest-p:before {\n  content: \"\\f231\"; }\n\n.fa-pinterest-square:before {\n  content: \"\\f0d3\"; }\n\n.fa-pizza-slice:before {\n  content: \"\\f818\"; }\n\n.fa-place-of-worship:before {\n  content: \"\\f67f\"; }\n\n.fa-plane:before {\n  content: \"\\f072\"; }\n\n.fa-plane-arrival:before {\n  content: \"\\f5af\"; }\n\n.fa-plane-departure:before {\n  content: \"\\f5b0\"; }\n\n.fa-play:before {\n  content: \"\\f04b\"; }\n\n.fa-play-circle:before {\n  content: \"\\f144\"; }\n\n.fa-playstation:before {\n  content: \"\\f3df\"; }\n\n.fa-plug:before {\n  content: \"\\f1e6\"; }\n\n.fa-plus:before {\n  content: \"\\f067\"; }\n\n.fa-plus-circle:before {\n  content: \"\\f055\"; }\n\n.fa-plus-square:before {\n  content: \"\\f0fe\"; }\n\n.fa-podcast:before {\n  content: \"\\f2ce\"; }\n\n.fa-poll:before {\n  content: \"\\f681\"; }\n\n.fa-poll-h:before {\n  content: \"\\f682\"; }\n\n.fa-poo:before {\n  content: \"\\f2fe\"; }\n\n.fa-poo-storm:before {\n  content: \"\\f75a\"; }\n\n.fa-poop:before {\n  content: \"\\f619\"; }\n\n.fa-portrait:before {\n  content: \"\\f3e0\"; }\n\n.fa-pound-sign:before {\n  content: \"\\f154\"; }\n\n.fa-power-off:before {\n  content: \"\\f011\"; }\n\n.fa-pray:before {\n  content: \"\\f683\"; }\n\n.fa-praying-hands:before {\n  content: \"\\f684\"; }\n\n.fa-prescription:before {\n  content: \"\\f5b1\"; }\n\n.fa-prescription-bottle:before {\n  content: \"\\f485\"; }\n\n.fa-prescription-bottle-alt:before {\n  content: \"\\f486\"; }\n\n.fa-print:before {\n  content: \"\\f02f\"; }\n\n.fa-procedures:before {\n  content: \"\\f487\"; }\n\n.fa-product-hunt:before {\n  content: \"\\f288\"; }\n\n.fa-project-diagram:before {\n  content: \"\\f542\"; }\n\n.fa-pushed:before {\n  content: \"\\f3e1\"; }\n\n.fa-puzzle-piece:before {\n  content: \"\\f12e\"; }\n\n.fa-python:before {\n  content: \"\\f3e2\"; }\n\n.fa-qq:before {\n  content: \"\\f1d6\"; }\n\n.fa-qrcode:before {\n  content: \"\\f029\"; }\n\n.fa-question:before {\n  content: \"\\f128\"; }\n\n.fa-question-circle:before {\n  content: \"\\f059\"; }\n\n.fa-quidditch:before {\n  content: \"\\f458\"; }\n\n.fa-quinscape:before {\n  content: \"\\f459\"; }\n\n.fa-quora:before {\n  content: \"\\f2c4\"; }\n\n.fa-quote-left:before {\n  content: \"\\f10d\"; }\n\n.fa-quote-right:before {\n  content: \"\\f10e\"; }\n\n.fa-quran:before {\n  content: \"\\f687\"; }\n\n.fa-r-project:before {\n  content: \"\\f4f7\"; }\n\n.fa-radiation:before {\n  content: \"\\f7b9\"; }\n\n.fa-radiation-alt:before {\n  content: \"\\f7ba\"; }\n\n.fa-rainbow:before {\n  content: \"\\f75b\"; }\n\n.fa-random:before {\n  content: \"\\f074\"; }\n\n.fa-raspberry-pi:before {\n  content: \"\\f7bb\"; }\n\n.fa-ravelry:before {\n  content: \"\\f2d9\"; }\n\n.fa-react:before {\n  content: \"\\f41b\"; }\n\n.fa-reacteurope:before {\n  content: \"\\f75d\"; }\n\n.fa-readme:before {\n  content: \"\\f4d5\"; }\n\n.fa-rebel:before {\n  content: \"\\f1d0\"; }\n\n.fa-receipt:before {\n  content: \"\\f543\"; }\n\n.fa-record-vinyl:before {\n  content: \"\\f8d9\"; }\n\n.fa-recycle:before {\n  content: \"\\f1b8\"; }\n\n.fa-red-river:before {\n  content: \"\\f3e3\"; }\n\n.fa-reddit:before {\n  content: \"\\f1a1\"; }\n\n.fa-reddit-alien:before {\n  content: \"\\f281\"; }\n\n.fa-reddit-square:before {\n  content: \"\\f1a2\"; }\n\n.fa-redhat:before {\n  content: \"\\f7bc\"; }\n\n.fa-redo:before {\n  content: \"\\f01e\"; }\n\n.fa-redo-alt:before {\n  content: \"\\f2f9\"; }\n\n.fa-registered:before {\n  content: \"\\f25d\"; }\n\n.fa-remove-format:before {\n  content: \"\\f87d\"; }\n\n.fa-renren:before {\n  content: \"\\f18b\"; }\n\n.fa-reply:before {\n  content: \"\\f3e5\"; }\n\n.fa-reply-all:before {\n  content: \"\\f122\"; }\n\n.fa-replyd:before {\n  content: \"\\f3e6\"; }\n\n.fa-republican:before {\n  content: \"\\f75e\"; }\n\n.fa-researchgate:before {\n  content: \"\\f4f8\"; }\n\n.fa-resolving:before {\n  content: \"\\f3e7\"; }\n\n.fa-restroom:before {\n  content: \"\\f7bd\"; }\n\n.fa-retweet:before {\n  content: \"\\f079\"; }\n\n.fa-rev:before {\n  content: \"\\f5b2\"; }\n\n.fa-ribbon:before {\n  content: \"\\f4d6\"; }\n\n.fa-ring:before {\n  content: \"\\f70b\"; }\n\n.fa-road:before {\n  content: \"\\f018\"; }\n\n.fa-robot:before {\n  content: \"\\f544\"; }\n\n.fa-rocket:before {\n  content: \"\\f135\"; }\n\n.fa-rocketchat:before {\n  content: \"\\f3e8\"; }\n\n.fa-rockrms:before {\n  content: \"\\f3e9\"; }\n\n.fa-route:before {\n  content: \"\\f4d7\"; }\n\n.fa-rss:before {\n  content: \"\\f09e\"; }\n\n.fa-rss-square:before {\n  content: \"\\f143\"; }\n\n.fa-ruble-sign:before {\n  content: \"\\f158\"; }\n\n.fa-ruler:before {\n  content: \"\\f545\"; }\n\n.fa-ruler-combined:before {\n  content: \"\\f546\"; }\n\n.fa-ruler-horizontal:before {\n  content: \"\\f547\"; }\n\n.fa-ruler-vertical:before {\n  content: \"\\f548\"; }\n\n.fa-running:before {\n  content: \"\\f70c\"; }\n\n.fa-rupee-sign:before {\n  content: \"\\f156\"; }\n\n.fa-sad-cry:before {\n  content: \"\\f5b3\"; }\n\n.fa-sad-tear:before {\n  content: \"\\f5b4\"; }\n\n.fa-safari:before {\n  content: \"\\f267\"; }\n\n.fa-salesforce:before {\n  content: \"\\f83b\"; }\n\n.fa-sass:before {\n  content: \"\\f41e\"; }\n\n.fa-satellite:before {\n  content: \"\\f7bf\"; }\n\n.fa-satellite-dish:before {\n  content: \"\\f7c0\"; }\n\n.fa-save:before {\n  content: \"\\f0c7\"; }\n\n.fa-schlix:before {\n  content: \"\\f3ea\"; }\n\n.fa-school:before {\n  content: \"\\f549\"; }\n\n.fa-screwdriver:before {\n  content: \"\\f54a\"; }\n\n.fa-scribd:before {\n  content: \"\\f28a\"; }\n\n.fa-scroll:before {\n  content: \"\\f70e\"; }\n\n.fa-sd-card:before {\n  content: \"\\f7c2\"; }\n\n.fa-search:before {\n  content: \"\\f002\"; }\n\n.fa-search-dollar:before {\n  content: \"\\f688\"; }\n\n.fa-search-location:before {\n  content: \"\\f689\"; }\n\n.fa-search-minus:before {\n  content: \"\\f010\"; }\n\n.fa-search-plus:before {\n  content: \"\\f00e\"; }\n\n.fa-searchengin:before {\n  content: \"\\f3eb\"; }\n\n.fa-seedling:before {\n  content: \"\\f4d8\"; }\n\n.fa-sellcast:before {\n  content: \"\\f2da\"; }\n\n.fa-sellsy:before {\n  content: \"\\f213\"; }\n\n.fa-server:before {\n  content: \"\\f233\"; }\n\n.fa-servicestack:before {\n  content: \"\\f3ec\"; }\n\n.fa-shapes:before {\n  content: \"\\f61f\"; }\n\n.fa-share:before {\n  content: \"\\f064\"; }\n\n.fa-share-alt:before {\n  content: \"\\f1e0\"; }\n\n.fa-share-alt-square:before {\n  content: \"\\f1e1\"; }\n\n.fa-share-square:before {\n  content: \"\\f14d\"; }\n\n.fa-shekel-sign:before {\n  content: \"\\f20b\"; }\n\n.fa-shield-alt:before {\n  content: \"\\f3ed\"; }\n\n.fa-ship:before {\n  content: \"\\f21a\"; }\n\n.fa-shipping-fast:before {\n  content: \"\\f48b\"; }\n\n.fa-shirtsinbulk:before {\n  content: \"\\f214\"; }\n\n.fa-shoe-prints:before {\n  content: \"\\f54b\"; }\n\n.fa-shopping-bag:before {\n  content: \"\\f290\"; }\n\n.fa-shopping-basket:before {\n  content: \"\\f291\"; }\n\n.fa-shopping-cart:before {\n  content: \"\\f07a\"; }\n\n.fa-shopware:before {\n  content: \"\\f5b5\"; }\n\n.fa-shower:before {\n  content: \"\\f2cc\"; }\n\n.fa-shuttle-van:before {\n  content: \"\\f5b6\"; }\n\n.fa-sign:before {\n  content: \"\\f4d9\"; }\n\n.fa-sign-in-alt:before {\n  content: \"\\f2f6\"; }\n\n.fa-sign-language:before {\n  content: \"\\f2a7\"; }\n\n.fa-sign-out-alt:before {\n  content: \"\\f2f5\"; }\n\n.fa-signal:before {\n  content: \"\\f012\"; }\n\n.fa-signature:before {\n  content: \"\\f5b7\"; }\n\n.fa-sim-card:before {\n  content: \"\\f7c4\"; }\n\n.fa-simplybuilt:before {\n  content: \"\\f215\"; }\n\n.fa-sistrix:before {\n  content: \"\\f3ee\"; }\n\n.fa-sitemap:before {\n  content: \"\\f0e8\"; }\n\n.fa-sith:before {\n  content: \"\\f512\"; }\n\n.fa-skating:before {\n  content: \"\\f7c5\"; }\n\n.fa-sketch:before {\n  content: \"\\f7c6\"; }\n\n.fa-skiing:before {\n  content: \"\\f7c9\"; }\n\n.fa-skiing-nordic:before {\n  content: \"\\f7ca\"; }\n\n.fa-skull:before {\n  content: \"\\f54c\"; }\n\n.fa-skull-crossbones:before {\n  content: \"\\f714\"; }\n\n.fa-skyatlas:before {\n  content: \"\\f216\"; }\n\n.fa-skype:before {\n  content: \"\\f17e\"; }\n\n.fa-slack:before {\n  content: \"\\f198\"; }\n\n.fa-slack-hash:before {\n  content: \"\\f3ef\"; }\n\n.fa-slash:before {\n  content: \"\\f715\"; }\n\n.fa-sleigh:before {\n  content: \"\\f7cc\"; }\n\n.fa-sliders-h:before {\n  content: \"\\f1de\"; }\n\n.fa-slideshare:before {\n  content: \"\\f1e7\"; }\n\n.fa-smile:before {\n  content: \"\\f118\"; }\n\n.fa-smile-beam:before {\n  content: \"\\f5b8\"; }\n\n.fa-smile-wink:before {\n  content: \"\\f4da\"; }\n\n.fa-smog:before {\n  content: \"\\f75f\"; }\n\n.fa-smoking:before {\n  content: \"\\f48d\"; }\n\n.fa-smoking-ban:before {\n  content: \"\\f54d\"; }\n\n.fa-sms:before {\n  content: \"\\f7cd\"; }\n\n.fa-snapchat:before {\n  content: \"\\f2ab\"; }\n\n.fa-snapchat-ghost:before {\n  content: \"\\f2ac\"; }\n\n.fa-snapchat-square:before {\n  content: \"\\f2ad\"; }\n\n.fa-snowboarding:before {\n  content: \"\\f7ce\"; }\n\n.fa-snowflake:before {\n  content: \"\\f2dc\"; }\n\n.fa-snowman:before {\n  content: \"\\f7d0\"; }\n\n.fa-snowplow:before {\n  content: \"\\f7d2\"; }\n\n.fa-socks:before {\n  content: \"\\f696\"; }\n\n.fa-solar-panel:before {\n  content: \"\\f5ba\"; }\n\n.fa-sort:before {\n  content: \"\\f0dc\"; }\n\n.fa-sort-alpha-down:before {\n  content: \"\\f15d\"; }\n\n.fa-sort-alpha-down-alt:before {\n  content: \"\\f881\"; }\n\n.fa-sort-alpha-up:before {\n  content: \"\\f15e\"; }\n\n.fa-sort-alpha-up-alt:before {\n  content: \"\\f882\"; }\n\n.fa-sort-amount-down:before {\n  content: \"\\f160\"; }\n\n.fa-sort-amount-down-alt:before {\n  content: \"\\f884\"; }\n\n.fa-sort-amount-up:before {\n  content: \"\\f161\"; }\n\n.fa-sort-amount-up-alt:before {\n  content: \"\\f885\"; }\n\n.fa-sort-down:before {\n  content: \"\\f0dd\"; }\n\n.fa-sort-numeric-down:before {\n  content: \"\\f162\"; }\n\n.fa-sort-numeric-down-alt:before {\n  content: \"\\f886\"; }\n\n.fa-sort-numeric-up:before {\n  content: \"\\f163\"; }\n\n.fa-sort-numeric-up-alt:before {\n  content: \"\\f887\"; }\n\n.fa-sort-up:before {\n  content: \"\\f0de\"; }\n\n.fa-soundcloud:before {\n  content: \"\\f1be\"; }\n\n.fa-sourcetree:before {\n  content: \"\\f7d3\"; }\n\n.fa-spa:before {\n  content: \"\\f5bb\"; }\n\n.fa-space-shuttle:before {\n  content: \"\\f197\"; }\n\n.fa-speakap:before {\n  content: \"\\f3f3\"; }\n\n.fa-speaker-deck:before {\n  content: \"\\f83c\"; }\n\n.fa-spell-check:before {\n  content: \"\\f891\"; }\n\n.fa-spider:before {\n  content: \"\\f717\"; }\n\n.fa-spinner:before {\n  content: \"\\f110\"; }\n\n.fa-splotch:before {\n  content: \"\\f5bc\"; }\n\n.fa-spotify:before {\n  content: \"\\f1bc\"; }\n\n.fa-spray-can:before {\n  content: \"\\f5bd\"; }\n\n.fa-square:before {\n  content: \"\\f0c8\"; }\n\n.fa-square-full:before {\n  content: \"\\f45c\"; }\n\n.fa-square-root-alt:before {\n  content: \"\\f698\"; }\n\n.fa-squarespace:before {\n  content: \"\\f5be\"; }\n\n.fa-stack-exchange:before {\n  content: \"\\f18d\"; }\n\n.fa-stack-overflow:before {\n  content: \"\\f16c\"; }\n\n.fa-stackpath:before {\n  content: \"\\f842\"; }\n\n.fa-stamp:before {\n  content: \"\\f5bf\"; }\n\n.fa-star:before {\n  content: \"\\f005\"; }\n\n.fa-star-and-crescent:before {\n  content: \"\\f699\"; }\n\n.fa-star-half:before {\n  content: \"\\f089\"; }\n\n.fa-star-half-alt:before {\n  content: \"\\f5c0\"; }\n\n.fa-star-of-david:before {\n  content: \"\\f69a\"; }\n\n.fa-star-of-life:before {\n  content: \"\\f621\"; }\n\n.fa-staylinked:before {\n  content: \"\\f3f5\"; }\n\n.fa-steam:before {\n  content: \"\\f1b6\"; }\n\n.fa-steam-square:before {\n  content: \"\\f1b7\"; }\n\n.fa-steam-symbol:before {\n  content: \"\\f3f6\"; }\n\n.fa-step-backward:before {\n  content: \"\\f048\"; }\n\n.fa-step-forward:before {\n  content: \"\\f051\"; }\n\n.fa-stethoscope:before {\n  content: \"\\f0f1\"; }\n\n.fa-sticker-mule:before {\n  content: \"\\f3f7\"; }\n\n.fa-sticky-note:before {\n  content: \"\\f249\"; }\n\n.fa-stop:before {\n  content: \"\\f04d\"; }\n\n.fa-stop-circle:before {\n  content: \"\\f28d\"; }\n\n.fa-stopwatch:before {\n  content: \"\\f2f2\"; }\n\n.fa-store:before {\n  content: \"\\f54e\"; }\n\n.fa-store-alt:before {\n  content: \"\\f54f\"; }\n\n.fa-strava:before {\n  content: \"\\f428\"; }\n\n.fa-stream:before {\n  content: \"\\f550\"; }\n\n.fa-street-view:before {\n  content: \"\\f21d\"; }\n\n.fa-strikethrough:before {\n  content: \"\\f0cc\"; }\n\n.fa-stripe:before {\n  content: \"\\f429\"; }\n\n.fa-stripe-s:before {\n  content: \"\\f42a\"; }\n\n.fa-stroopwafel:before {\n  content: \"\\f551\"; }\n\n.fa-studiovinari:before {\n  content: \"\\f3f8\"; }\n\n.fa-stumbleupon:before {\n  content: \"\\f1a4\"; }\n\n.fa-stumbleupon-circle:before {\n  content: \"\\f1a3\"; }\n\n.fa-subscript:before {\n  content: \"\\f12c\"; }\n\n.fa-subway:before {\n  content: \"\\f239\"; }\n\n.fa-suitcase:before {\n  content: \"\\f0f2\"; }\n\n.fa-suitcase-rolling:before {\n  content: \"\\f5c1\"; }\n\n.fa-sun:before {\n  content: \"\\f185\"; }\n\n.fa-superpowers:before {\n  content: \"\\f2dd\"; }\n\n.fa-superscript:before {\n  content: \"\\f12b\"; }\n\n.fa-supple:before {\n  content: \"\\f3f9\"; }\n\n.fa-surprise:before {\n  content: \"\\f5c2\"; }\n\n.fa-suse:before {\n  content: \"\\f7d6\"; }\n\n.fa-swatchbook:before {\n  content: \"\\f5c3\"; }\n\n.fa-swift:before {\n  content: \"\\f8e1\"; }\n\n.fa-swimmer:before {\n  content: \"\\f5c4\"; }\n\n.fa-swimming-pool:before {\n  content: \"\\f5c5\"; }\n\n.fa-symfony:before {\n  content: \"\\f83d\"; }\n\n.fa-synagogue:before {\n  content: \"\\f69b\"; }\n\n.fa-sync:before {\n  content: \"\\f021\"; }\n\n.fa-sync-alt:before {\n  content: \"\\f2f1\"; }\n\n.fa-syringe:before {\n  content: \"\\f48e\"; }\n\n.fa-table:before {\n  content: \"\\f0ce\"; }\n\n.fa-table-tennis:before {\n  content: \"\\f45d\"; }\n\n.fa-tablet:before {\n  content: \"\\f10a\"; }\n\n.fa-tablet-alt:before {\n  content: \"\\f3fa\"; }\n\n.fa-tablets:before {\n  content: \"\\f490\"; }\n\n.fa-tachometer-alt:before {\n  content: \"\\f3fd\"; }\n\n.fa-tag:before {\n  content: \"\\f02b\"; }\n\n.fa-tags:before {\n  content: \"\\f02c\"; }\n\n.fa-tape:before {\n  content: \"\\f4db\"; }\n\n.fa-tasks:before {\n  content: \"\\f0ae\"; }\n\n.fa-taxi:before {\n  content: \"\\f1ba\"; }\n\n.fa-teamspeak:before {\n  content: \"\\f4f9\"; }\n\n.fa-teeth:before {\n  content: \"\\f62e\"; }\n\n.fa-teeth-open:before {\n  content: \"\\f62f\"; }\n\n.fa-telegram:before {\n  content: \"\\f2c6\"; }\n\n.fa-telegram-plane:before {\n  content: \"\\f3fe\"; }\n\n.fa-temperature-high:before {\n  content: \"\\f769\"; }\n\n.fa-temperature-low:before {\n  content: \"\\f76b\"; }\n\n.fa-tencent-weibo:before {\n  content: \"\\f1d5\"; }\n\n.fa-tenge:before {\n  content: \"\\f7d7\"; }\n\n.fa-terminal:before {\n  content: \"\\f120\"; }\n\n.fa-text-height:before {\n  content: \"\\f034\"; }\n\n.fa-text-width:before {\n  content: \"\\f035\"; }\n\n.fa-th:before {\n  content: \"\\f00a\"; }\n\n.fa-th-large:before {\n  content: \"\\f009\"; }\n\n.fa-th-list:before {\n  content: \"\\f00b\"; }\n\n.fa-the-red-yeti:before {\n  content: \"\\f69d\"; }\n\n.fa-theater-masks:before {\n  content: \"\\f630\"; }\n\n.fa-themeco:before {\n  content: \"\\f5c6\"; }\n\n.fa-themeisle:before {\n  content: \"\\f2b2\"; }\n\n.fa-thermometer:before {\n  content: \"\\f491\"; }\n\n.fa-thermometer-empty:before {\n  content: \"\\f2cb\"; }\n\n.fa-thermometer-full:before {\n  content: \"\\f2c7\"; }\n\n.fa-thermometer-half:before {\n  content: \"\\f2c9\"; }\n\n.fa-thermometer-quarter:before {\n  content: \"\\f2ca\"; }\n\n.fa-thermometer-three-quarters:before {\n  content: \"\\f2c8\"; }\n\n.fa-think-peaks:before {\n  content: \"\\f731\"; }\n\n.fa-thumbs-down:before {\n  content: \"\\f165\"; }\n\n.fa-thumbs-up:before {\n  content: \"\\f164\"; }\n\n.fa-thumbtack:before {\n  content: \"\\f08d\"; }\n\n.fa-ticket-alt:before {\n  content: \"\\f3ff\"; }\n\n.fa-times:before {\n  content: \"\\f00d\"; }\n\n.fa-times-circle:before {\n  content: \"\\f057\"; }\n\n.fa-tint:before {\n  content: \"\\f043\"; }\n\n.fa-tint-slash:before {\n  content: \"\\f5c7\"; }\n\n.fa-tired:before {\n  content: \"\\f5c8\"; }\n\n.fa-toggle-off:before {\n  content: \"\\f204\"; }\n\n.fa-toggle-on:before {\n  content: \"\\f205\"; }\n\n.fa-toilet:before {\n  content: \"\\f7d8\"; }\n\n.fa-toilet-paper:before {\n  content: \"\\f71e\"; }\n\n.fa-toolbox:before {\n  content: \"\\f552\"; }\n\n.fa-tools:before {\n  content: \"\\f7d9\"; }\n\n.fa-tooth:before {\n  content: \"\\f5c9\"; }\n\n.fa-torah:before {\n  content: \"\\f6a0\"; }\n\n.fa-torii-gate:before {\n  content: \"\\f6a1\"; }\n\n.fa-tractor:before {\n  content: \"\\f722\"; }\n\n.fa-trade-federation:before {\n  content: \"\\f513\"; }\n\n.fa-trademark:before {\n  content: \"\\f25c\"; }\n\n.fa-traffic-light:before {\n  content: \"\\f637\"; }\n\n.fa-train:before {\n  content: \"\\f238\"; }\n\n.fa-tram:before {\n  content: \"\\f7da\"; }\n\n.fa-transgender:before {\n  content: \"\\f224\"; }\n\n.fa-transgender-alt:before {\n  content: \"\\f225\"; }\n\n.fa-trash:before {\n  content: \"\\f1f8\"; }\n\n.fa-trash-alt:before {\n  content: \"\\f2ed\"; }\n\n.fa-trash-restore:before {\n  content: \"\\f829\"; }\n\n.fa-trash-restore-alt:before {\n  content: \"\\f82a\"; }\n\n.fa-tree:before {\n  content: \"\\f1bb\"; }\n\n.fa-trello:before {\n  content: \"\\f181\"; }\n\n.fa-tripadvisor:before {\n  content: \"\\f262\"; }\n\n.fa-trophy:before {\n  content: \"\\f091\"; }\n\n.fa-truck:before {\n  content: \"\\f0d1\"; }\n\n.fa-truck-loading:before {\n  content: \"\\f4de\"; }\n\n.fa-truck-monster:before {\n  content: \"\\f63b\"; }\n\n.fa-truck-moving:before {\n  content: \"\\f4df\"; }\n\n.fa-truck-pickup:before {\n  content: \"\\f63c\"; }\n\n.fa-tshirt:before {\n  content: \"\\f553\"; }\n\n.fa-tty:before {\n  content: \"\\f1e4\"; }\n\n.fa-tumblr:before {\n  content: \"\\f173\"; }\n\n.fa-tumblr-square:before {\n  content: \"\\f174\"; }\n\n.fa-tv:before {\n  content: \"\\f26c\"; }\n\n.fa-twitch:before {\n  content: \"\\f1e8\"; }\n\n.fa-twitter:before {\n  content: \"\\f099\"; }\n\n.fa-twitter-square:before {\n  content: \"\\f081\"; }\n\n.fa-typo3:before {\n  content: \"\\f42b\"; }\n\n.fa-uber:before {\n  content: \"\\f402\"; }\n\n.fa-ubuntu:before {\n  content: \"\\f7df\"; }\n\n.fa-uikit:before {\n  content: \"\\f403\"; }\n\n.fa-umbraco:before {\n  content: \"\\f8e8\"; }\n\n.fa-umbrella:before {\n  content: \"\\f0e9\"; }\n\n.fa-umbrella-beach:before {\n  content: \"\\f5ca\"; }\n\n.fa-underline:before {\n  content: \"\\f0cd\"; }\n\n.fa-undo:before {\n  content: \"\\f0e2\"; }\n\n.fa-undo-alt:before {\n  content: \"\\f2ea\"; }\n\n.fa-uniregistry:before {\n  content: \"\\f404\"; }\n\n.fa-universal-access:before {\n  content: \"\\f29a\"; }\n\n.fa-university:before {\n  content: \"\\f19c\"; }\n\n.fa-unlink:before {\n  content: \"\\f127\"; }\n\n.fa-unlock:before {\n  content: \"\\f09c\"; }\n\n.fa-unlock-alt:before {\n  content: \"\\f13e\"; }\n\n.fa-untappd:before {\n  content: \"\\f405\"; }\n\n.fa-upload:before {\n  content: \"\\f093\"; }\n\n.fa-ups:before {\n  content: \"\\f7e0\"; }\n\n.fa-usb:before {\n  content: \"\\f287\"; }\n\n.fa-user:before {\n  content: \"\\f007\"; }\n\n.fa-user-alt:before {\n  content: \"\\f406\"; }\n\n.fa-user-alt-slash:before {\n  content: \"\\f4fa\"; }\n\n.fa-user-astronaut:before {\n  content: \"\\f4fb\"; }\n\n.fa-user-check:before {\n  content: \"\\f4fc\"; }\n\n.fa-user-circle:before {\n  content: \"\\f2bd\"; }\n\n.fa-user-clock:before {\n  content: \"\\f4fd\"; }\n\n.fa-user-cog:before {\n  content: \"\\f4fe\"; }\n\n.fa-user-edit:before {\n  content: \"\\f4ff\"; }\n\n.fa-user-friends:before {\n  content: \"\\f500\"; }\n\n.fa-user-graduate:before {\n  content: \"\\f501\"; }\n\n.fa-user-injured:before {\n  content: \"\\f728\"; }\n\n.fa-user-lock:before {\n  content: \"\\f502\"; }\n\n.fa-user-md:before {\n  content: \"\\f0f0\"; }\n\n.fa-user-minus:before {\n  content: \"\\f503\"; }\n\n.fa-user-ninja:before {\n  content: \"\\f504\"; }\n\n.fa-user-nurse:before {\n  content: \"\\f82f\"; }\n\n.fa-user-plus:before {\n  content: \"\\f234\"; }\n\n.fa-user-secret:before {\n  content: \"\\f21b\"; }\n\n.fa-user-shield:before {\n  content: \"\\f505\"; }\n\n.fa-user-slash:before {\n  content: \"\\f506\"; }\n\n.fa-user-tag:before {\n  content: \"\\f507\"; }\n\n.fa-user-tie:before {\n  content: \"\\f508\"; }\n\n.fa-user-times:before {\n  content: \"\\f235\"; }\n\n.fa-users:before {\n  content: \"\\f0c0\"; }\n\n.fa-users-cog:before {\n  content: \"\\f509\"; }\n\n.fa-usps:before {\n  content: \"\\f7e1\"; }\n\n.fa-ussunnah:before {\n  content: \"\\f407\"; }\n\n.fa-utensil-spoon:before {\n  content: \"\\f2e5\"; }\n\n.fa-utensils:before {\n  content: \"\\f2e7\"; }\n\n.fa-vaadin:before {\n  content: \"\\f408\"; }\n\n.fa-vector-square:before {\n  content: \"\\f5cb\"; }\n\n.fa-venus:before {\n  content: \"\\f221\"; }\n\n.fa-venus-double:before {\n  content: \"\\f226\"; }\n\n.fa-venus-mars:before {\n  content: \"\\f228\"; }\n\n.fa-viacoin:before {\n  content: \"\\f237\"; }\n\n.fa-viadeo:before {\n  content: \"\\f2a9\"; }\n\n.fa-viadeo-square:before {\n  content: \"\\f2aa\"; }\n\n.fa-vial:before {\n  content: \"\\f492\"; }\n\n.fa-vials:before {\n  content: \"\\f493\"; }\n\n.fa-viber:before {\n  content: \"\\f409\"; }\n\n.fa-video:before {\n  content: \"\\f03d\"; }\n\n.fa-video-slash:before {\n  content: \"\\f4e2\"; }\n\n.fa-vihara:before {\n  content: \"\\f6a7\"; }\n\n.fa-vimeo:before {\n  content: \"\\f40a\"; }\n\n.fa-vimeo-square:before {\n  content: \"\\f194\"; }\n\n.fa-vimeo-v:before {\n  content: \"\\f27d\"; }\n\n.fa-vine:before {\n  content: \"\\f1ca\"; }\n\n.fa-vk:before {\n  content: \"\\f189\"; }\n\n.fa-vnv:before {\n  content: \"\\f40b\"; }\n\n.fa-voicemail:before {\n  content: \"\\f897\"; }\n\n.fa-volleyball-ball:before {\n  content: \"\\f45f\"; }\n\n.fa-volume-down:before {\n  content: \"\\f027\"; }\n\n.fa-volume-mute:before {\n  content: \"\\f6a9\"; }\n\n.fa-volume-off:before {\n  content: \"\\f026\"; }\n\n.fa-volume-up:before {\n  content: \"\\f028\"; }\n\n.fa-vote-yea:before {\n  content: \"\\f772\"; }\n\n.fa-vr-cardboard:before {\n  content: \"\\f729\"; }\n\n.fa-vuejs:before {\n  content: \"\\f41f\"; }\n\n.fa-walking:before {\n  content: \"\\f554\"; }\n\n.fa-wallet:before {\n  content: \"\\f555\"; }\n\n.fa-warehouse:before {\n  content: \"\\f494\"; }\n\n.fa-water:before {\n  content: \"\\f773\"; }\n\n.fa-wave-square:before {\n  content: \"\\f83e\"; }\n\n.fa-waze:before {\n  content: \"\\f83f\"; }\n\n.fa-weebly:before {\n  content: \"\\f5cc\"; }\n\n.fa-weibo:before {\n  content: \"\\f18a\"; }\n\n.fa-weight:before {\n  content: \"\\f496\"; }\n\n.fa-weight-hanging:before {\n  content: \"\\f5cd\"; }\n\n.fa-weixin:before {\n  content: \"\\f1d7\"; }\n\n.fa-whatsapp:before {\n  content: \"\\f232\"; }\n\n.fa-whatsapp-square:before {\n  content: \"\\f40c\"; }\n\n.fa-wheelchair:before {\n  content: \"\\f193\"; }\n\n.fa-whmcs:before {\n  content: \"\\f40d\"; }\n\n.fa-wifi:before {\n  content: \"\\f1eb\"; }\n\n.fa-wikipedia-w:before {\n  content: \"\\f266\"; }\n\n.fa-wind:before {\n  content: \"\\f72e\"; }\n\n.fa-window-close:before {\n  content: \"\\f410\"; }\n\n.fa-window-maximize:before {\n  content: \"\\f2d0\"; }\n\n.fa-window-minimize:before {\n  content: \"\\f2d1\"; }\n\n.fa-window-restore:before {\n  content: \"\\f2d2\"; }\n\n.fa-windows:before {\n  content: \"\\f17a\"; }\n\n.fa-wine-bottle:before {\n  content: \"\\f72f\"; }\n\n.fa-wine-glass:before {\n  content: \"\\f4e3\"; }\n\n.fa-wine-glass-alt:before {\n  content: \"\\f5ce\"; }\n\n.fa-wix:before {\n  content: \"\\f5cf\"; }\n\n.fa-wizards-of-the-coast:before {\n  content: \"\\f730\"; }\n\n.fa-wolf-pack-battalion:before {\n  content: \"\\f514\"; }\n\n.fa-won-sign:before {\n  content: \"\\f159\"; }\n\n.fa-wordpress:before {\n  content: \"\\f19a\"; }\n\n.fa-wordpress-simple:before {\n  content: \"\\f411\"; }\n\n.fa-wpbeginner:before {\n  content: \"\\f297\"; }\n\n.fa-wpexplorer:before {\n  content: \"\\f2de\"; }\n\n.fa-wpforms:before {\n  content: \"\\f298\"; }\n\n.fa-wpressr:before {\n  content: \"\\f3e4\"; }\n\n.fa-wrench:before {\n  content: \"\\f0ad\"; }\n\n.fa-x-ray:before {\n  content: \"\\f497\"; }\n\n.fa-xbox:before {\n  content: \"\\f412\"; }\n\n.fa-xing:before {\n  content: \"\\f168\"; }\n\n.fa-xing-square:before {\n  content: \"\\f169\"; }\n\n.fa-y-combinator:before {\n  content: \"\\f23b\"; }\n\n.fa-yahoo:before {\n  content: \"\\f19e\"; }\n\n.fa-yammer:before {\n  content: \"\\f840\"; }\n\n.fa-yandex:before {\n  content: \"\\f413\"; }\n\n.fa-yandex-international:before {\n  content: \"\\f414\"; }\n\n.fa-yarn:before {\n  content: \"\\f7e3\"; }\n\n.fa-yelp:before {\n  content: \"\\f1e9\"; }\n\n.fa-yen-sign:before {\n  content: \"\\f157\"; }\n\n.fa-yin-yang:before {\n  content: \"\\f6ad\"; }\n\n.fa-yoast:before {\n  content: \"\\f2b1\"; }\n\n.fa-youtube:before {\n  content: \"\\f167\"; }\n\n.fa-youtube-square:before {\n  content: \"\\f431\"; }\n\n.fa-zhihu:before {\n  content: \"\\f63f\"; }\n\n.sr-only {\n  border: 0;\n  clip: rect(0, 0, 0, 0);\n  height: 1px;\n  margin: -1px;\n  overflow: hidden;\n  padding: 0;\n  position: absolute;\n  width: 1px; }\n\n.sr-only-focusable:active, .sr-only-focusable:focus {\n  clip: auto;\n  height: auto;\n  margin: 0;\n  overflow: visible;\n  position: static;\n  width: auto; }\n"
  },
  {
    "path": "public/plugins/fontawesome-free/css/regular.css",
    "content": "/*!\n * Font Awesome Free 5.11.2 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n */\n@font-face {\n  font-family: 'Font Awesome 5 Free';\n  font-style: normal;\n  font-weight: 400;\n  font-display: auto;\n  src: url(\"../webfonts/fa-regular-400.eot\");\n  src: url(\"../webfonts/fa-regular-400.eot?#iefix\") format(\"embedded-opentype\"), url(\"../webfonts/fa-regular-400.woff2\") format(\"woff2\"), url(\"../webfonts/fa-regular-400.woff\") format(\"woff\"), url(\"../webfonts/fa-regular-400.ttf\") format(\"truetype\"), url(\"../webfonts/fa-regular-400.svg#fontawesome\") format(\"svg\"); }\n\n.far {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n"
  },
  {
    "path": "public/plugins/fontawesome-free/css/solid.css",
    "content": "/*!\n * Font Awesome Free 5.11.2 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n */\n@font-face {\n  font-family: 'Font Awesome 5 Free';\n  font-style: normal;\n  font-weight: 900;\n  font-display: auto;\n  src: url(\"../webfonts/fa-solid-900.eot\");\n  src: url(\"../webfonts/fa-solid-900.eot?#iefix\") format(\"embedded-opentype\"), url(\"../webfonts/fa-solid-900.woff2\") format(\"woff2\"), url(\"../webfonts/fa-solid-900.woff\") format(\"woff\"), url(\"../webfonts/fa-solid-900.ttf\") format(\"truetype\"), url(\"../webfonts/fa-solid-900.svg#fontawesome\") format(\"svg\"); }\n\n.fa,\n.fas {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 900; }\n"
  },
  {
    "path": "public/plugins/fontawesome-free/css/svg-with-js.css",
    "content": "/*!\n * Font Awesome Free 5.11.2 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n */\nsvg:not(:root).svg-inline--fa {\n  overflow: visible; }\n\n.svg-inline--fa {\n  display: inline-block;\n  font-size: inherit;\n  height: 1em;\n  overflow: visible;\n  vertical-align: -.125em; }\n  .svg-inline--fa.fa-lg {\n    vertical-align: -.225em; }\n  .svg-inline--fa.fa-w-1 {\n    width: 0.0625em; }\n  .svg-inline--fa.fa-w-2 {\n    width: 0.125em; }\n  .svg-inline--fa.fa-w-3 {\n    width: 0.1875em; }\n  .svg-inline--fa.fa-w-4 {\n    width: 0.25em; }\n  .svg-inline--fa.fa-w-5 {\n    width: 0.3125em; }\n  .svg-inline--fa.fa-w-6 {\n    width: 0.375em; }\n  .svg-inline--fa.fa-w-7 {\n    width: 0.4375em; }\n  .svg-inline--fa.fa-w-8 {\n    width: 0.5em; }\n  .svg-inline--fa.fa-w-9 {\n    width: 0.5625em; }\n  .svg-inline--fa.fa-w-10 {\n    width: 0.625em; }\n  .svg-inline--fa.fa-w-11 {\n    width: 0.6875em; }\n  .svg-inline--fa.fa-w-12 {\n    width: 0.75em; }\n  .svg-inline--fa.fa-w-13 {\n    width: 0.8125em; }\n  .svg-inline--fa.fa-w-14 {\n    width: 0.875em; }\n  .svg-inline--fa.fa-w-15 {\n    width: 0.9375em; }\n  .svg-inline--fa.fa-w-16 {\n    width: 1em; }\n  .svg-inline--fa.fa-w-17 {\n    width: 1.0625em; }\n  .svg-inline--fa.fa-w-18 {\n    width: 1.125em; }\n  .svg-inline--fa.fa-w-19 {\n    width: 1.1875em; }\n  .svg-inline--fa.fa-w-20 {\n    width: 1.25em; }\n  .svg-inline--fa.fa-pull-left {\n    margin-right: .3em;\n    width: auto; }\n  .svg-inline--fa.fa-pull-right {\n    margin-left: .3em;\n    width: auto; }\n  .svg-inline--fa.fa-border {\n    height: 1.5em; }\n  .svg-inline--fa.fa-li {\n    width: 2em; }\n  .svg-inline--fa.fa-fw {\n    width: 1.25em; }\n\n.fa-layers svg.svg-inline--fa {\n  bottom: 0;\n  left: 0;\n  margin: auto;\n  position: absolute;\n  right: 0;\n  top: 0; }\n\n.fa-layers {\n  display: inline-block;\n  height: 1em;\n  position: relative;\n  text-align: center;\n  vertical-align: -.125em;\n  width: 1em; }\n  .fa-layers svg.svg-inline--fa {\n    -webkit-transform-origin: center center;\n            transform-origin: center center; }\n\n.fa-layers-text, .fa-layers-counter {\n  display: inline-block;\n  position: absolute;\n  text-align: center; }\n\n.fa-layers-text {\n  left: 50%;\n  top: 50%;\n  -webkit-transform: translate(-50%, -50%);\n          transform: translate(-50%, -50%);\n  -webkit-transform-origin: center center;\n          transform-origin: center center; }\n\n.fa-layers-counter {\n  background-color: #ff253a;\n  border-radius: 1em;\n  -webkit-box-sizing: border-box;\n          box-sizing: border-box;\n  color: #fff;\n  height: 1.5em;\n  line-height: 1;\n  max-width: 5em;\n  min-width: 1.5em;\n  overflow: hidden;\n  padding: .25em;\n  right: 0;\n  text-overflow: ellipsis;\n  top: 0;\n  -webkit-transform: scale(0.25);\n          transform: scale(0.25);\n  -webkit-transform-origin: top right;\n          transform-origin: top right; }\n\n.fa-layers-bottom-right {\n  bottom: 0;\n  right: 0;\n  top: auto;\n  -webkit-transform: scale(0.25);\n          transform: scale(0.25);\n  -webkit-transform-origin: bottom right;\n          transform-origin: bottom right; }\n\n.fa-layers-bottom-left {\n  bottom: 0;\n  left: 0;\n  right: auto;\n  top: auto;\n  -webkit-transform: scale(0.25);\n          transform: scale(0.25);\n  -webkit-transform-origin: bottom left;\n          transform-origin: bottom left; }\n\n.fa-layers-top-right {\n  right: 0;\n  top: 0;\n  -webkit-transform: scale(0.25);\n          transform: scale(0.25);\n  -webkit-transform-origin: top right;\n          transform-origin: top right; }\n\n.fa-layers-top-left {\n  left: 0;\n  right: auto;\n  top: 0;\n  -webkit-transform: scale(0.25);\n          transform: scale(0.25);\n  -webkit-transform-origin: top left;\n          transform-origin: top left; }\n\n.fa-lg {\n  font-size: 1.33333em;\n  line-height: 0.75em;\n  vertical-align: -.0667em; }\n\n.fa-xs {\n  font-size: .75em; }\n\n.fa-sm {\n  font-size: .875em; }\n\n.fa-1x {\n  font-size: 1em; }\n\n.fa-2x {\n  font-size: 2em; }\n\n.fa-3x {\n  font-size: 3em; }\n\n.fa-4x {\n  font-size: 4em; }\n\n.fa-5x {\n  font-size: 5em; }\n\n.fa-6x {\n  font-size: 6em; }\n\n.fa-7x {\n  font-size: 7em; }\n\n.fa-8x {\n  font-size: 8em; }\n\n.fa-9x {\n  font-size: 9em; }\n\n.fa-10x {\n  font-size: 10em; }\n\n.fa-fw {\n  text-align: center;\n  width: 1.25em; }\n\n.fa-ul {\n  list-style-type: none;\n  margin-left: 2.5em;\n  padding-left: 0; }\n  .fa-ul > li {\n    position: relative; }\n\n.fa-li {\n  left: -2em;\n  position: absolute;\n  text-align: center;\n  width: 2em;\n  line-height: inherit; }\n\n.fa-border {\n  border: solid 0.08em #eee;\n  border-radius: .1em;\n  padding: .2em .25em .15em; }\n\n.fa-pull-left {\n  float: left; }\n\n.fa-pull-right {\n  float: right; }\n\n.fa.fa-pull-left,\n.fas.fa-pull-left,\n.far.fa-pull-left,\n.fal.fa-pull-left,\n.fab.fa-pull-left {\n  margin-right: .3em; }\n\n.fa.fa-pull-right,\n.fas.fa-pull-right,\n.far.fa-pull-right,\n.fal.fa-pull-right,\n.fab.fa-pull-right {\n  margin-left: .3em; }\n\n.fa-spin {\n  -webkit-animation: fa-spin 2s infinite linear;\n          animation: fa-spin 2s infinite linear; }\n\n.fa-pulse {\n  -webkit-animation: fa-spin 1s infinite steps(8);\n          animation: fa-spin 1s infinite steps(8); }\n\n@-webkit-keyframes fa-spin {\n  0% {\n    -webkit-transform: rotate(0deg);\n            transform: rotate(0deg); }\n  100% {\n    -webkit-transform: rotate(360deg);\n            transform: rotate(360deg); } }\n\n@keyframes fa-spin {\n  0% {\n    -webkit-transform: rotate(0deg);\n            transform: rotate(0deg); }\n  100% {\n    -webkit-transform: rotate(360deg);\n            transform: rotate(360deg); } }\n\n.fa-rotate-90 {\n  -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\";\n  -webkit-transform: rotate(90deg);\n          transform: rotate(90deg); }\n\n.fa-rotate-180 {\n  -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\";\n  -webkit-transform: rotate(180deg);\n          transform: rotate(180deg); }\n\n.fa-rotate-270 {\n  -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\";\n  -webkit-transform: rotate(270deg);\n          transform: rotate(270deg); }\n\n.fa-flip-horizontal {\n  -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\";\n  -webkit-transform: scale(-1, 1);\n          transform: scale(-1, 1); }\n\n.fa-flip-vertical {\n  -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";\n  -webkit-transform: scale(1, -1);\n          transform: scale(1, -1); }\n\n.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {\n  -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";\n  -webkit-transform: scale(-1, -1);\n          transform: scale(-1, -1); }\n\n:root .fa-rotate-90,\n:root .fa-rotate-180,\n:root .fa-rotate-270,\n:root .fa-flip-horizontal,\n:root .fa-flip-vertical,\n:root .fa-flip-both {\n  -webkit-filter: none;\n          filter: none; }\n\n.fa-stack {\n  display: inline-block;\n  height: 2em;\n  position: relative;\n  width: 2.5em; }\n\n.fa-stack-1x,\n.fa-stack-2x {\n  bottom: 0;\n  left: 0;\n  margin: auto;\n  position: absolute;\n  right: 0;\n  top: 0; }\n\n.svg-inline--fa.fa-stack-1x {\n  height: 1em;\n  width: 1.25em; }\n\n.svg-inline--fa.fa-stack-2x {\n  height: 2em;\n  width: 2.5em; }\n\n.fa-inverse {\n  color: #fff; }\n\n.sr-only {\n  border: 0;\n  clip: rect(0, 0, 0, 0);\n  height: 1px;\n  margin: -1px;\n  overflow: hidden;\n  padding: 0;\n  position: absolute;\n  width: 1px; }\n\n.sr-only-focusable:active, .sr-only-focusable:focus {\n  clip: auto;\n  height: auto;\n  margin: 0;\n  overflow: visible;\n  position: static;\n  width: auto; }\n\n.svg-inline--fa .fa-primary {\n  fill: var(--fa-primary-color, currentColor);\n  opacity: 1;\n  opacity: var(--fa-primary-opacity, 1); }\n\n.svg-inline--fa .fa-secondary {\n  fill: var(--fa-secondary-color, currentColor);\n  opacity: 0.4;\n  opacity: var(--fa-secondary-opacity, 0.4); }\n\n.svg-inline--fa.fa-swap-opacity .fa-primary {\n  opacity: 0.4;\n  opacity: var(--fa-secondary-opacity, 0.4); }\n\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\n  opacity: 1;\n  opacity: var(--fa-primary-opacity, 1); }\n\n.svg-inline--fa mask .fa-primary,\n.svg-inline--fa mask .fa-secondary {\n  fill: black; }\n\n.fad.fa-inverse {\n  color: #fff; }\n"
  },
  {
    "path": "public/plugins/fontawesome-free/css/v4-shims.css",
    "content": "/*!\n * Font Awesome Free 5.11.2 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n */\n.fa.fa-glass:before {\n  content: \"\\f000\"; }\n\n.fa.fa-meetup {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-star-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-star-o:before {\n  content: \"\\f005\"; }\n\n.fa.fa-remove:before {\n  content: \"\\f00d\"; }\n\n.fa.fa-close:before {\n  content: \"\\f00d\"; }\n\n.fa.fa-gear:before {\n  content: \"\\f013\"; }\n\n.fa.fa-trash-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-trash-o:before {\n  content: \"\\f2ed\"; }\n\n.fa.fa-file-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-file-o:before {\n  content: \"\\f15b\"; }\n\n.fa.fa-clock-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-clock-o:before {\n  content: \"\\f017\"; }\n\n.fa.fa-arrow-circle-o-down {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-arrow-circle-o-down:before {\n  content: \"\\f358\"; }\n\n.fa.fa-arrow-circle-o-up {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-arrow-circle-o-up:before {\n  content: \"\\f35b\"; }\n\n.fa.fa-play-circle-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-play-circle-o:before {\n  content: \"\\f144\"; }\n\n.fa.fa-repeat:before {\n  content: \"\\f01e\"; }\n\n.fa.fa-rotate-right:before {\n  content: \"\\f01e\"; }\n\n.fa.fa-refresh:before {\n  content: \"\\f021\"; }\n\n.fa.fa-list-alt {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-dedent:before {\n  content: \"\\f03b\"; }\n\n.fa.fa-video-camera:before {\n  content: \"\\f03d\"; }\n\n.fa.fa-picture-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-picture-o:before {\n  content: \"\\f03e\"; }\n\n.fa.fa-photo {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-photo:before {\n  content: \"\\f03e\"; }\n\n.fa.fa-image {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-image:before {\n  content: \"\\f03e\"; }\n\n.fa.fa-pencil:before {\n  content: \"\\f303\"; }\n\n.fa.fa-map-marker:before {\n  content: \"\\f3c5\"; }\n\n.fa.fa-pencil-square-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-pencil-square-o:before {\n  content: \"\\f044\"; }\n\n.fa.fa-share-square-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-share-square-o:before {\n  content: \"\\f14d\"; }\n\n.fa.fa-check-square-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-check-square-o:before {\n  content: \"\\f14a\"; }\n\n.fa.fa-arrows:before {\n  content: \"\\f0b2\"; }\n\n.fa.fa-times-circle-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-times-circle-o:before {\n  content: \"\\f057\"; }\n\n.fa.fa-check-circle-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-check-circle-o:before {\n  content: \"\\f058\"; }\n\n.fa.fa-mail-forward:before {\n  content: \"\\f064\"; }\n\n.fa.fa-eye {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-eye-slash {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-warning:before {\n  content: \"\\f071\"; }\n\n.fa.fa-calendar:before {\n  content: \"\\f073\"; }\n\n.fa.fa-arrows-v:before {\n  content: \"\\f338\"; }\n\n.fa.fa-arrows-h:before {\n  content: \"\\f337\"; }\n\n.fa.fa-bar-chart {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-bar-chart:before {\n  content: \"\\f080\"; }\n\n.fa.fa-bar-chart-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-bar-chart-o:before {\n  content: \"\\f080\"; }\n\n.fa.fa-twitter-square {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-facebook-square {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-gears:before {\n  content: \"\\f085\"; }\n\n.fa.fa-thumbs-o-up {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-thumbs-o-up:before {\n  content: \"\\f164\"; }\n\n.fa.fa-thumbs-o-down {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-thumbs-o-down:before {\n  content: \"\\f165\"; }\n\n.fa.fa-heart-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-heart-o:before {\n  content: \"\\f004\"; }\n\n.fa.fa-sign-out:before {\n  content: \"\\f2f5\"; }\n\n.fa.fa-linkedin-square {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-linkedin-square:before {\n  content: \"\\f08c\"; }\n\n.fa.fa-thumb-tack:before {\n  content: \"\\f08d\"; }\n\n.fa.fa-external-link:before {\n  content: \"\\f35d\"; }\n\n.fa.fa-sign-in:before {\n  content: \"\\f2f6\"; }\n\n.fa.fa-github-square {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-lemon-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-lemon-o:before {\n  content: \"\\f094\"; }\n\n.fa.fa-square-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-square-o:before {\n  content: \"\\f0c8\"; }\n\n.fa.fa-bookmark-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-bookmark-o:before {\n  content: \"\\f02e\"; }\n\n.fa.fa-twitter {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-facebook {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-facebook:before {\n  content: \"\\f39e\"; }\n\n.fa.fa-facebook-f {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-facebook-f:before {\n  content: \"\\f39e\"; }\n\n.fa.fa-github {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-credit-card {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-feed:before {\n  content: \"\\f09e\"; }\n\n.fa.fa-hdd-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-hdd-o:before {\n  content: \"\\f0a0\"; }\n\n.fa.fa-hand-o-right {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-hand-o-right:before {\n  content: \"\\f0a4\"; }\n\n.fa.fa-hand-o-left {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-hand-o-left:before {\n  content: \"\\f0a5\"; }\n\n.fa.fa-hand-o-up {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-hand-o-up:before {\n  content: \"\\f0a6\"; }\n\n.fa.fa-hand-o-down {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-hand-o-down:before {\n  content: \"\\f0a7\"; }\n\n.fa.fa-arrows-alt:before {\n  content: \"\\f31e\"; }\n\n.fa.fa-group:before {\n  content: \"\\f0c0\"; }\n\n.fa.fa-chain:before {\n  content: \"\\f0c1\"; }\n\n.fa.fa-scissors:before {\n  content: \"\\f0c4\"; }\n\n.fa.fa-files-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-files-o:before {\n  content: \"\\f0c5\"; }\n\n.fa.fa-floppy-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-floppy-o:before {\n  content: \"\\f0c7\"; }\n\n.fa.fa-navicon:before {\n  content: \"\\f0c9\"; }\n\n.fa.fa-reorder:before {\n  content: \"\\f0c9\"; }\n\n.fa.fa-pinterest {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-pinterest-square {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-google-plus-square {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-google-plus {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-google-plus:before {\n  content: \"\\f0d5\"; }\n\n.fa.fa-money {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-money:before {\n  content: \"\\f3d1\"; }\n\n.fa.fa-unsorted:before {\n  content: \"\\f0dc\"; }\n\n.fa.fa-sort-desc:before {\n  content: \"\\f0dd\"; }\n\n.fa.fa-sort-asc:before {\n  content: \"\\f0de\"; }\n\n.fa.fa-linkedin {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-linkedin:before {\n  content: \"\\f0e1\"; }\n\n.fa.fa-rotate-left:before {\n  content: \"\\f0e2\"; }\n\n.fa.fa-legal:before {\n  content: \"\\f0e3\"; }\n\n.fa.fa-tachometer:before {\n  content: \"\\f3fd\"; }\n\n.fa.fa-dashboard:before {\n  content: \"\\f3fd\"; }\n\n.fa.fa-comment-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-comment-o:before {\n  content: \"\\f075\"; }\n\n.fa.fa-comments-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-comments-o:before {\n  content: \"\\f086\"; }\n\n.fa.fa-flash:before {\n  content: \"\\f0e7\"; }\n\n.fa.fa-clipboard {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-paste {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-paste:before {\n  content: \"\\f328\"; }\n\n.fa.fa-lightbulb-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-lightbulb-o:before {\n  content: \"\\f0eb\"; }\n\n.fa.fa-exchange:before {\n  content: \"\\f362\"; }\n\n.fa.fa-cloud-download:before {\n  content: \"\\f381\"; }\n\n.fa.fa-cloud-upload:before {\n  content: \"\\f382\"; }\n\n.fa.fa-bell-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-bell-o:before {\n  content: \"\\f0f3\"; }\n\n.fa.fa-cutlery:before {\n  content: \"\\f2e7\"; }\n\n.fa.fa-file-text-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-file-text-o:before {\n  content: \"\\f15c\"; }\n\n.fa.fa-building-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-building-o:before {\n  content: \"\\f1ad\"; }\n\n.fa.fa-hospital-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-hospital-o:before {\n  content: \"\\f0f8\"; }\n\n.fa.fa-tablet:before {\n  content: \"\\f3fa\"; }\n\n.fa.fa-mobile:before {\n  content: \"\\f3cd\"; }\n\n.fa.fa-mobile-phone:before {\n  content: \"\\f3cd\"; }\n\n.fa.fa-circle-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-circle-o:before {\n  content: \"\\f111\"; }\n\n.fa.fa-mail-reply:before {\n  content: \"\\f3e5\"; }\n\n.fa.fa-github-alt {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-folder-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-folder-o:before {\n  content: \"\\f07b\"; }\n\n.fa.fa-folder-open-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-folder-open-o:before {\n  content: \"\\f07c\"; }\n\n.fa.fa-smile-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-smile-o:before {\n  content: \"\\f118\"; }\n\n.fa.fa-frown-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-frown-o:before {\n  content: \"\\f119\"; }\n\n.fa.fa-meh-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-meh-o:before {\n  content: \"\\f11a\"; }\n\n.fa.fa-keyboard-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-keyboard-o:before {\n  content: \"\\f11c\"; }\n\n.fa.fa-flag-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-flag-o:before {\n  content: \"\\f024\"; }\n\n.fa.fa-mail-reply-all:before {\n  content: \"\\f122\"; }\n\n.fa.fa-star-half-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-star-half-o:before {\n  content: \"\\f089\"; }\n\n.fa.fa-star-half-empty {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-star-half-empty:before {\n  content: \"\\f089\"; }\n\n.fa.fa-star-half-full {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-star-half-full:before {\n  content: \"\\f089\"; }\n\n.fa.fa-code-fork:before {\n  content: \"\\f126\"; }\n\n.fa.fa-chain-broken:before {\n  content: \"\\f127\"; }\n\n.fa.fa-shield:before {\n  content: \"\\f3ed\"; }\n\n.fa.fa-calendar-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-calendar-o:before {\n  content: \"\\f133\"; }\n\n.fa.fa-maxcdn {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-html5 {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-css3 {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-ticket:before {\n  content: \"\\f3ff\"; }\n\n.fa.fa-minus-square-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-minus-square-o:before {\n  content: \"\\f146\"; }\n\n.fa.fa-level-up:before {\n  content: \"\\f3bf\"; }\n\n.fa.fa-level-down:before {\n  content: \"\\f3be\"; }\n\n.fa.fa-pencil-square:before {\n  content: \"\\f14b\"; }\n\n.fa.fa-external-link-square:before {\n  content: \"\\f360\"; }\n\n.fa.fa-compass {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-caret-square-o-down {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-caret-square-o-down:before {\n  content: \"\\f150\"; }\n\n.fa.fa-toggle-down {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-toggle-down:before {\n  content: \"\\f150\"; }\n\n.fa.fa-caret-square-o-up {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-caret-square-o-up:before {\n  content: \"\\f151\"; }\n\n.fa.fa-toggle-up {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-toggle-up:before {\n  content: \"\\f151\"; }\n\n.fa.fa-caret-square-o-right {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-caret-square-o-right:before {\n  content: \"\\f152\"; }\n\n.fa.fa-toggle-right {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-toggle-right:before {\n  content: \"\\f152\"; }\n\n.fa.fa-eur:before {\n  content: \"\\f153\"; }\n\n.fa.fa-euro:before {\n  content: \"\\f153\"; }\n\n.fa.fa-gbp:before {\n  content: \"\\f154\"; }\n\n.fa.fa-usd:before {\n  content: \"\\f155\"; }\n\n.fa.fa-dollar:before {\n  content: \"\\f155\"; }\n\n.fa.fa-inr:before {\n  content: \"\\f156\"; }\n\n.fa.fa-rupee:before {\n  content: \"\\f156\"; }\n\n.fa.fa-jpy:before {\n  content: \"\\f157\"; }\n\n.fa.fa-cny:before {\n  content: \"\\f157\"; }\n\n.fa.fa-rmb:before {\n  content: \"\\f157\"; }\n\n.fa.fa-yen:before {\n  content: \"\\f157\"; }\n\n.fa.fa-rub:before {\n  content: \"\\f158\"; }\n\n.fa.fa-ruble:before {\n  content: \"\\f158\"; }\n\n.fa.fa-rouble:before {\n  content: \"\\f158\"; }\n\n.fa.fa-krw:before {\n  content: \"\\f159\"; }\n\n.fa.fa-won:before {\n  content: \"\\f159\"; }\n\n.fa.fa-btc {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-bitcoin {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-bitcoin:before {\n  content: \"\\f15a\"; }\n\n.fa.fa-file-text:before {\n  content: \"\\f15c\"; }\n\n.fa.fa-sort-alpha-asc:before {\n  content: \"\\f15d\"; }\n\n.fa.fa-sort-alpha-desc:before {\n  content: \"\\f881\"; }\n\n.fa.fa-sort-amount-asc:before {\n  content: \"\\f160\"; }\n\n.fa.fa-sort-amount-desc:before {\n  content: \"\\f884\"; }\n\n.fa.fa-sort-numeric-asc:before {\n  content: \"\\f162\"; }\n\n.fa.fa-sort-numeric-desc:before {\n  content: \"\\f886\"; }\n\n.fa.fa-youtube-square {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-youtube {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-xing {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-xing-square {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-youtube-play {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-youtube-play:before {\n  content: \"\\f167\"; }\n\n.fa.fa-dropbox {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-stack-overflow {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-instagram {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-flickr {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-adn {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-bitbucket {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-bitbucket-square {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-bitbucket-square:before {\n  content: \"\\f171\"; }\n\n.fa.fa-tumblr {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-tumblr-square {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-long-arrow-down:before {\n  content: \"\\f309\"; }\n\n.fa.fa-long-arrow-up:before {\n  content: \"\\f30c\"; }\n\n.fa.fa-long-arrow-left:before {\n  content: \"\\f30a\"; }\n\n.fa.fa-long-arrow-right:before {\n  content: \"\\f30b\"; }\n\n.fa.fa-apple {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-windows {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-android {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-linux {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-dribbble {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-skype {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-foursquare {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-trello {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-gratipay {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-gittip {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-gittip:before {\n  content: \"\\f184\"; }\n\n.fa.fa-sun-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-sun-o:before {\n  content: \"\\f185\"; }\n\n.fa.fa-moon-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-moon-o:before {\n  content: \"\\f186\"; }\n\n.fa.fa-vk {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-weibo {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-renren {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-pagelines {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-stack-exchange {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-arrow-circle-o-right {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-arrow-circle-o-right:before {\n  content: \"\\f35a\"; }\n\n.fa.fa-arrow-circle-o-left {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-arrow-circle-o-left:before {\n  content: \"\\f359\"; }\n\n.fa.fa-caret-square-o-left {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-caret-square-o-left:before {\n  content: \"\\f191\"; }\n\n.fa.fa-toggle-left {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-toggle-left:before {\n  content: \"\\f191\"; }\n\n.fa.fa-dot-circle-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-dot-circle-o:before {\n  content: \"\\f192\"; }\n\n.fa.fa-vimeo-square {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-try:before {\n  content: \"\\f195\"; }\n\n.fa.fa-turkish-lira:before {\n  content: \"\\f195\"; }\n\n.fa.fa-plus-square-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-plus-square-o:before {\n  content: \"\\f0fe\"; }\n\n.fa.fa-slack {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-wordpress {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-openid {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-institution:before {\n  content: \"\\f19c\"; }\n\n.fa.fa-bank:before {\n  content: \"\\f19c\"; }\n\n.fa.fa-mortar-board:before {\n  content: \"\\f19d\"; }\n\n.fa.fa-yahoo {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-google {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-reddit {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-reddit-square {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-stumbleupon-circle {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-stumbleupon {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-delicious {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-digg {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-pied-piper-pp {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-pied-piper-alt {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-drupal {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-joomla {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-spoon:before {\n  content: \"\\f2e5\"; }\n\n.fa.fa-behance {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-behance-square {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-steam {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-steam-square {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-automobile:before {\n  content: \"\\f1b9\"; }\n\n.fa.fa-cab:before {\n  content: \"\\f1ba\"; }\n\n.fa.fa-envelope-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-envelope-o:before {\n  content: \"\\f0e0\"; }\n\n.fa.fa-deviantart {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-soundcloud {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-file-pdf-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-file-pdf-o:before {\n  content: \"\\f1c1\"; }\n\n.fa.fa-file-word-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-file-word-o:before {\n  content: \"\\f1c2\"; }\n\n.fa.fa-file-excel-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-file-excel-o:before {\n  content: \"\\f1c3\"; }\n\n.fa.fa-file-powerpoint-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-file-powerpoint-o:before {\n  content: \"\\f1c4\"; }\n\n.fa.fa-file-image-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-file-image-o:before {\n  content: \"\\f1c5\"; }\n\n.fa.fa-file-photo-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-file-photo-o:before {\n  content: \"\\f1c5\"; }\n\n.fa.fa-file-picture-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-file-picture-o:before {\n  content: \"\\f1c5\"; }\n\n.fa.fa-file-archive-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-file-archive-o:before {\n  content: \"\\f1c6\"; }\n\n.fa.fa-file-zip-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-file-zip-o:before {\n  content: \"\\f1c6\"; }\n\n.fa.fa-file-audio-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-file-audio-o:before {\n  content: \"\\f1c7\"; }\n\n.fa.fa-file-sound-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-file-sound-o:before {\n  content: \"\\f1c7\"; }\n\n.fa.fa-file-video-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-file-video-o:before {\n  content: \"\\f1c8\"; }\n\n.fa.fa-file-movie-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-file-movie-o:before {\n  content: \"\\f1c8\"; }\n\n.fa.fa-file-code-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-file-code-o:before {\n  content: \"\\f1c9\"; }\n\n.fa.fa-vine {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-codepen {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-jsfiddle {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-life-ring {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-life-bouy {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-life-bouy:before {\n  content: \"\\f1cd\"; }\n\n.fa.fa-life-buoy {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-life-buoy:before {\n  content: \"\\f1cd\"; }\n\n.fa.fa-life-saver {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-life-saver:before {\n  content: \"\\f1cd\"; }\n\n.fa.fa-support {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-support:before {\n  content: \"\\f1cd\"; }\n\n.fa.fa-circle-o-notch:before {\n  content: \"\\f1ce\"; }\n\n.fa.fa-rebel {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-ra {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-ra:before {\n  content: \"\\f1d0\"; }\n\n.fa.fa-resistance {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-resistance:before {\n  content: \"\\f1d0\"; }\n\n.fa.fa-empire {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-ge {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-ge:before {\n  content: \"\\f1d1\"; }\n\n.fa.fa-git-square {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-git {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-hacker-news {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-y-combinator-square {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-y-combinator-square:before {\n  content: \"\\f1d4\"; }\n\n.fa.fa-yc-square {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-yc-square:before {\n  content: \"\\f1d4\"; }\n\n.fa.fa-tencent-weibo {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-qq {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-weixin {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-wechat {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-wechat:before {\n  content: \"\\f1d7\"; }\n\n.fa.fa-send:before {\n  content: \"\\f1d8\"; }\n\n.fa.fa-paper-plane-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-paper-plane-o:before {\n  content: \"\\f1d8\"; }\n\n.fa.fa-send-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-send-o:before {\n  content: \"\\f1d8\"; }\n\n.fa.fa-circle-thin {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-circle-thin:before {\n  content: \"\\f111\"; }\n\n.fa.fa-header:before {\n  content: \"\\f1dc\"; }\n\n.fa.fa-sliders:before {\n  content: \"\\f1de\"; }\n\n.fa.fa-futbol-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-futbol-o:before {\n  content: \"\\f1e3\"; }\n\n.fa.fa-soccer-ball-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-soccer-ball-o:before {\n  content: \"\\f1e3\"; }\n\n.fa.fa-slideshare {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-twitch {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-yelp {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-newspaper-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-newspaper-o:before {\n  content: \"\\f1ea\"; }\n\n.fa.fa-paypal {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-google-wallet {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-cc-visa {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-cc-mastercard {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-cc-discover {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-cc-amex {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-cc-paypal {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-cc-stripe {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-bell-slash-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-bell-slash-o:before {\n  content: \"\\f1f6\"; }\n\n.fa.fa-trash:before {\n  content: \"\\f2ed\"; }\n\n.fa.fa-copyright {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-eyedropper:before {\n  content: \"\\f1fb\"; }\n\n.fa.fa-area-chart:before {\n  content: \"\\f1fe\"; }\n\n.fa.fa-pie-chart:before {\n  content: \"\\f200\"; }\n\n.fa.fa-line-chart:before {\n  content: \"\\f201\"; }\n\n.fa.fa-lastfm {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-lastfm-square {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-ioxhost {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-angellist {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-cc {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-cc:before {\n  content: \"\\f20a\"; }\n\n.fa.fa-ils:before {\n  content: \"\\f20b\"; }\n\n.fa.fa-shekel:before {\n  content: \"\\f20b\"; }\n\n.fa.fa-sheqel:before {\n  content: \"\\f20b\"; }\n\n.fa.fa-meanpath {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-meanpath:before {\n  content: \"\\f2b4\"; }\n\n.fa.fa-buysellads {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-connectdevelop {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-dashcube {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-forumbee {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-leanpub {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-sellsy {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-shirtsinbulk {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-simplybuilt {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-skyatlas {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-diamond {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-diamond:before {\n  content: \"\\f3a5\"; }\n\n.fa.fa-intersex:before {\n  content: \"\\f224\"; }\n\n.fa.fa-facebook-official {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-facebook-official:before {\n  content: \"\\f09a\"; }\n\n.fa.fa-pinterest-p {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-whatsapp {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-hotel:before {\n  content: \"\\f236\"; }\n\n.fa.fa-viacoin {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-medium {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-y-combinator {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-yc {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-yc:before {\n  content: \"\\f23b\"; }\n\n.fa.fa-optin-monster {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-opencart {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-expeditedssl {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-battery-4:before {\n  content: \"\\f240\"; }\n\n.fa.fa-battery:before {\n  content: \"\\f240\"; }\n\n.fa.fa-battery-3:before {\n  content: \"\\f241\"; }\n\n.fa.fa-battery-2:before {\n  content: \"\\f242\"; }\n\n.fa.fa-battery-1:before {\n  content: \"\\f243\"; }\n\n.fa.fa-battery-0:before {\n  content: \"\\f244\"; }\n\n.fa.fa-object-group {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-object-ungroup {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-sticky-note-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-sticky-note-o:before {\n  content: \"\\f249\"; }\n\n.fa.fa-cc-jcb {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-cc-diners-club {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-clone {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-hourglass-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-hourglass-o:before {\n  content: \"\\f254\"; }\n\n.fa.fa-hourglass-1:before {\n  content: \"\\f251\"; }\n\n.fa.fa-hourglass-2:before {\n  content: \"\\f252\"; }\n\n.fa.fa-hourglass-3:before {\n  content: \"\\f253\"; }\n\n.fa.fa-hand-rock-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-hand-rock-o:before {\n  content: \"\\f255\"; }\n\n.fa.fa-hand-grab-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-hand-grab-o:before {\n  content: \"\\f255\"; }\n\n.fa.fa-hand-paper-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-hand-paper-o:before {\n  content: \"\\f256\"; }\n\n.fa.fa-hand-stop-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-hand-stop-o:before {\n  content: \"\\f256\"; }\n\n.fa.fa-hand-scissors-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-hand-scissors-o:before {\n  content: \"\\f257\"; }\n\n.fa.fa-hand-lizard-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-hand-lizard-o:before {\n  content: \"\\f258\"; }\n\n.fa.fa-hand-spock-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-hand-spock-o:before {\n  content: \"\\f259\"; }\n\n.fa.fa-hand-pointer-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-hand-pointer-o:before {\n  content: \"\\f25a\"; }\n\n.fa.fa-hand-peace-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-hand-peace-o:before {\n  content: \"\\f25b\"; }\n\n.fa.fa-registered {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-creative-commons {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-gg {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-gg-circle {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-tripadvisor {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-odnoklassniki {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-odnoklassniki-square {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-get-pocket {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-wikipedia-w {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-safari {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-chrome {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-firefox {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-opera {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-internet-explorer {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-television:before {\n  content: \"\\f26c\"; }\n\n.fa.fa-contao {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-500px {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-amazon {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-calendar-plus-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-calendar-plus-o:before {\n  content: \"\\f271\"; }\n\n.fa.fa-calendar-minus-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-calendar-minus-o:before {\n  content: \"\\f272\"; }\n\n.fa.fa-calendar-times-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-calendar-times-o:before {\n  content: \"\\f273\"; }\n\n.fa.fa-calendar-check-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-calendar-check-o:before {\n  content: \"\\f274\"; }\n\n.fa.fa-map-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-map-o:before {\n  content: \"\\f279\"; }\n\n.fa.fa-commenting:before {\n  content: \"\\f4ad\"; }\n\n.fa.fa-commenting-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-commenting-o:before {\n  content: \"\\f4ad\"; }\n\n.fa.fa-houzz {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-vimeo {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-vimeo:before {\n  content: \"\\f27d\"; }\n\n.fa.fa-black-tie {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-fonticons {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-reddit-alien {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-edge {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-credit-card-alt:before {\n  content: \"\\f09d\"; }\n\n.fa.fa-codiepie {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-modx {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-fort-awesome {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-usb {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-product-hunt {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-mixcloud {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-scribd {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-pause-circle-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-pause-circle-o:before {\n  content: \"\\f28b\"; }\n\n.fa.fa-stop-circle-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-stop-circle-o:before {\n  content: \"\\f28d\"; }\n\n.fa.fa-bluetooth {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-bluetooth-b {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-gitlab {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-wpbeginner {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-wpforms {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-envira {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-wheelchair-alt {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-wheelchair-alt:before {\n  content: \"\\f368\"; }\n\n.fa.fa-question-circle-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-question-circle-o:before {\n  content: \"\\f059\"; }\n\n.fa.fa-volume-control-phone:before {\n  content: \"\\f2a0\"; }\n\n.fa.fa-asl-interpreting:before {\n  content: \"\\f2a3\"; }\n\n.fa.fa-deafness:before {\n  content: \"\\f2a4\"; }\n\n.fa.fa-hard-of-hearing:before {\n  content: \"\\f2a4\"; }\n\n.fa.fa-glide {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-glide-g {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-signing:before {\n  content: \"\\f2a7\"; }\n\n.fa.fa-viadeo {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-viadeo-square {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-snapchat {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-snapchat-ghost {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-snapchat-square {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-pied-piper {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-first-order {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-yoast {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-themeisle {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-google-plus-official {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-google-plus-official:before {\n  content: \"\\f2b3\"; }\n\n.fa.fa-google-plus-circle {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-google-plus-circle:before {\n  content: \"\\f2b3\"; }\n\n.fa.fa-font-awesome {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-fa {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-fa:before {\n  content: \"\\f2b4\"; }\n\n.fa.fa-handshake-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-handshake-o:before {\n  content: \"\\f2b5\"; }\n\n.fa.fa-envelope-open-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-envelope-open-o:before {\n  content: \"\\f2b6\"; }\n\n.fa.fa-linode {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-address-book-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-address-book-o:before {\n  content: \"\\f2b9\"; }\n\n.fa.fa-vcard:before {\n  content: \"\\f2bb\"; }\n\n.fa.fa-address-card-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-address-card-o:before {\n  content: \"\\f2bb\"; }\n\n.fa.fa-vcard-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-vcard-o:before {\n  content: \"\\f2bb\"; }\n\n.fa.fa-user-circle-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-user-circle-o:before {\n  content: \"\\f2bd\"; }\n\n.fa.fa-user-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-user-o:before {\n  content: \"\\f007\"; }\n\n.fa.fa-id-badge {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-drivers-license:before {\n  content: \"\\f2c2\"; }\n\n.fa.fa-id-card-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-id-card-o:before {\n  content: \"\\f2c2\"; }\n\n.fa.fa-drivers-license-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-drivers-license-o:before {\n  content: \"\\f2c2\"; }\n\n.fa.fa-quora {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-free-code-camp {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-telegram {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-thermometer-4:before {\n  content: \"\\f2c7\"; }\n\n.fa.fa-thermometer:before {\n  content: \"\\f2c7\"; }\n\n.fa.fa-thermometer-3:before {\n  content: \"\\f2c8\"; }\n\n.fa.fa-thermometer-2:before {\n  content: \"\\f2c9\"; }\n\n.fa.fa-thermometer-1:before {\n  content: \"\\f2ca\"; }\n\n.fa.fa-thermometer-0:before {\n  content: \"\\f2cb\"; }\n\n.fa.fa-bathtub:before {\n  content: \"\\f2cd\"; }\n\n.fa.fa-s15:before {\n  content: \"\\f2cd\"; }\n\n.fa.fa-window-maximize {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-window-restore {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-times-rectangle:before {\n  content: \"\\f410\"; }\n\n.fa.fa-window-close-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-window-close-o:before {\n  content: \"\\f410\"; }\n\n.fa.fa-times-rectangle-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-times-rectangle-o:before {\n  content: \"\\f410\"; }\n\n.fa.fa-bandcamp {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-grav {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-etsy {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-imdb {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-ravelry {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-eercast {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-eercast:before {\n  content: \"\\f2da\"; }\n\n.fa.fa-snowflake-o {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n\n.fa.fa-snowflake-o:before {\n  content: \"\\f2dc\"; }\n\n.fa.fa-superpowers {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-wpexplorer {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n\n.fa.fa-spotify {\n  font-family: 'Font Awesome 5 Brands';\n  font-weight: 400; }\n"
  },
  {
    "path": "public/plugins/icheck-bootstrap/LICENSE",
    "content": "MIT License\n\nCopyright (c) 2018 Hovhannes Bantikyan\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "public/plugins/icheck-bootstrap/icheck-bootstrap.css",
    "content": "/*!\n * icheck-bootstrap v3.0.1 (https://github.com/bantikyan/icheck-bootstrap)\n * Copyright 2018 Hovhannes Bantikyan.\n * Licensed under MIT (https://github.com/bantikyan/icheck-bootstrap/blob/master/LICENSE)\n */\n\n [class*=\"icheck-\"] {\n    min-height: 22px;\n    margin-top: 6px !important;\n    margin-bottom: 6px !important;\n    padding-left: 0px;\n}\n\n.icheck-inline {\n    display: inline-block;\n}\n\n    .icheck-inline + .icheck-inline {\n        margin-left: .75rem;\n        margin-top: 6px;\n    }\n\n[class*=\"icheck-\"] > label {\n    padding-left: 29px !important;\n    min-height: 22px;\n    line-height: 22px;\n    display: inline-block;\n    position: relative;\n    vertical-align: top;\n    margin-bottom: 0;\n    font-weight: normal;\n    cursor: pointer;\n}\n\n[class*=\"icheck-\"] > input:first-child {\n    position: absolute !important;\n    opacity: 0;\n    margin: 0;\n}\n\n    [class*=\"icheck-\"] > input:first-child:disabled {\n        cursor: default;\n    }\n\n    [class*=\"icheck-\"] > input:first-child + label::before,\n    [class*=\"icheck-\"] > input:first-child + input[type=\"hidden\"] + label::before {\n        content: \"\";\n        display: inline-block;\n        position: absolute;\n        width: 22px;\n        height: 22px;\n        border: 1px solid #D3CFC8;\n        border-radius: 0px;\n        margin-left: -29px;\n    }\n\n    [class*=\"icheck-\"] > input:first-child:checked + label::after,\n    [class*=\"icheck-\"] > input:first-child:checked + input[type=\"hidden\"] + label::after {\n        content: \"\";\n        display: inline-block;\n        position: absolute;\n        top: 0;\n        left: 0;\n        width: 7px;\n        height: 10px;\n        border: solid 2px #fff;\n        border-left: none;\n        border-top: none;\n        transform: translate(7.75px, 4.5px) rotate(45deg);\n        -ms-transform: translate(7.75px, 4.5px) rotate(45deg);\n    }\n\n[class*=\"icheck-\"] > input[type=\"radio\"]:first-child + label::before,\n[class*=\"icheck-\"] > input[type=\"radio\"]:first-child + input[type=\"hidden\"] + label::before {\n    border-radius: 50%;\n}\n\n[class*=\"icheck-\"] > input:first-child:not(:checked):not(:disabled):hover + label::before,\n[class*=\"icheck-\"] > input:first-child:not(:checked):not(:disabled):hover + input[type=\"hidden\"] + label::before {\n    border-width: 2px;\n}\n\n[class*=\"icheck-\"] > input:first-child:disabled + label,\n[class*=\"icheck-\"] > input:first-child:disabled + input[type=\"hidden\"] + label,\n[class*=\"icheck-\"] > input:first-child:disabled + label::before,\n[class*=\"icheck-\"] > input:first-child:disabled + input[type=\"hidden\"] + label::before {\n    pointer-events: none;\n    cursor: default;\n    filter: alpha(opacity=65);\n    -webkit-box-shadow: none;\n    box-shadow: none;\n    opacity: .65;\n}\n\n.icheck-default > input:first-child:not(:checked):not(:disabled):hover + label::before,\n.icheck-default > input:first-child:not(:checked):not(:disabled):hover + input[type=\"hidden\"] + label::before {\n    border-color: #adadad;\n}\n\n.icheck-default > input:first-child:checked + label::before,\n.icheck-default > input:first-child:checked + input[type=\"hidden\"] + label::before {\n    background-color: #e6e6e6;\n    border-color: #adadad;\n}\n\n.icheck-default > input:first-child:checked + label::after,\n.icheck-default > input:first-child:checked + input[type=\"hidden\"] + label::after {\n    border-bottom-color: #333;\n    border-right-color: #333;\n}\n\n.icheck-primary > input:first-child:not(:checked):not(:disabled):hover + label::before,\n.icheck-primary > input:first-child:not(:checked):not(:disabled):hover + input[type=\"hidden\"] + label::before {\n    border-color: #2e6da4;\n}\n\n.icheck-primary > input:first-child:checked + label::before,\n.icheck-primary > input:first-child:checked + input[type=\"hidden\"] + label::before {\n    background-color: #337ab7;\n    border-color: #2e6da4;\n}\n\n.icheck-success > input:first-child:not(:checked):not(:disabled):hover + label::before,\n.icheck-success > input:first-child:not(:checked):not(:disabled):hover + input[type=\"hidden\"] + label::before {\n    border-color: #4cae4c;\n}\n\n.icheck-success > input:first-child:checked + label::before,\n.icheck-success > input:first-child:checked + input[type=\"hidden\"] + label::before {\n    background-color: #5cb85c;\n    border-color: #4cae4c;\n}\n\n.icheck-info > input:first-child:not(:checked):not(:disabled):hover + label::before,\n.icheck-info > input:first-child:not(:checked):not(:disabled):hover + input[type=\"hidden\"] + label::before {\n    border-color: #46b8da;\n}\n\n.icheck-info > input:first-child:checked + label::before,\n.icheck-info > input:first-child:checked + input[type=\"hidden\"] + label::before {\n    background-color: #5bc0de;\n    border-color: #46b8da;\n}\n\n.icheck-warning > input:first-child:not(:checked):not(:disabled):hover + label::before,\n.icheck-warning > input:first-child:not(:checked):not(:disabled):hover + input[type=\"hidden\"] + label::before {\n    border-color: #eea236;\n}\n\n.icheck-warning > input:first-child:checked + label::before,\n.icheck-warning > input:first-child:checked + input[type=\"hidden\"] + label::before {\n    background-color: #f0ad4e;\n    border-color: #eea236;\n}\n\n.icheck-danger > input:first-child:not(:checked):not(:disabled):hover + label::before,\n.icheck-danger > input:first-child:not(:checked):not(:disabled):hover + input[type=\"hidden\"] + label::before {\n    border-color: #d43f3a;\n}\n\n.icheck-danger > input:first-child:checked + label::before,\n.icheck-danger > input:first-child:checked + input[type=\"hidden\"] + label::before {\n    background-color: #d9534f;\n    border-color: #d43f3a;\n}\n\n.icheck-turquoise > input:first-child:not(:checked):not(:disabled):hover + label::before,\n.icheck-turquoise > input:first-child:not(:checked):not(:disabled):hover + input[type=\"hidden\"] + label::before {\n    border-color: #1abc9c;\n}\n\n.icheck-turquoise > input:first-child:checked + label::before,\n.icheck-turquoise > input:first-child:checked + input[type=\"hidden\"] + label::before {\n    background-color: #1abc9c;\n    border-color: #1abc9c;\n}\n\n.icheck-emerland > input:first-child:not(:checked):not(:disabled):hover + label::before,\n.icheck-emerland > input:first-child:not(:checked):not(:disabled):hover + input[type=\"hidden\"] + label::before {\n    border-color: #2ecc71;\n}\n\n.icheck-emerland > input:first-child:checked + label::before,\n.icheck-emerland > input:first-child:checked + input[type=\"hidden\"] + label::before {\n    background-color: #2ecc71;\n    border-color: #2ecc71;\n}\n\n.icheck-peterriver > input:first-child:not(:checked):not(:disabled):hover + label::before,\n.icheck-peterriver > input:first-child:not(:checked):not(:disabled):hover + input[type=\"hidden\"] + label::before {\n    border-color: #3498db;\n}\n\n.icheck-peterriver > input:first-child:checked + label::before,\n.icheck-peterriver > input:first-child:checked + input[type=\"hidden\"] + label::before {\n    background-color: #3498db;\n    border-color: #3498db;\n}\n\n.icheck-amethyst > input:first-child:not(:checked):not(:disabled):hover + label::before,\n.icheck-amethyst > input:first-child:not(:checked):not(:disabled):hover + input[type=\"hidden\"] + label::before {\n    border-color: #9b59b6;\n}\n\n.icheck-amethyst > input:first-child:checked + label::before,\n.icheck-amethyst > input:first-child:checked + input[type=\"hidden\"] + label::before {\n    background-color: #9b59b6;\n    border-color: #9b59b6;\n}\n\n.icheck-wetasphalt > input:first-child:not(:checked):not(:disabled):hover + label::before,\n.icheck-wetasphalt > input:first-child:not(:checked):not(:disabled):hover + input[type=\"hidden\"] + label::before {\n    border-color: #34495e;\n}\n\n.icheck-wetasphalt > input:first-child:checked + label::before,\n.icheck-wetasphalt > input:first-child:checked + input[type=\"hidden\"] + label::before {\n    background-color: #34495e;\n    border-color: #34495e;\n}\n\n.icheck-greensea > input:first-child:not(:checked):not(:disabled):hover + label::before,\n.icheck-greensea > input:first-child:not(:checked):not(:disabled):hover + input[type=\"hidden\"] + label::before {\n    border-color: #16a085;\n}\n\n.icheck-greensea > input:first-child:checked + label::before,\n.icheck-greensea > input:first-child:checked + input[type=\"hidden\"] + label::before {\n    background-color: #16a085;\n    border-color: #16a085;\n}\n\n.icheck-nephritis > input:first-child:not(:checked):not(:disabled):hover + label::before,\n.icheck-nephritis > input:first-child:not(:checked):not(:disabled):hover + input[type=\"hidden\"] + label::before {\n    border-color: #27ae60;\n}\n\n.icheck-nephritis > input:first-child:checked + label::before,\n.icheck-nephritis > input:first-child:checked + input[type=\"hidden\"] + label::before {\n    background-color: #27ae60;\n    border-color: #27ae60;\n}\n\n.icheck-belizehole > input:first-child:not(:checked):not(:disabled):hover + label::before,\n.icheck-belizehole > input:first-child:not(:checked):not(:disabled):hover + input[type=\"hidden\"] + label::before {\n    border-color: #2980b9;\n}\n\n.icheck-belizehole > input:first-child:checked + label::before,\n.icheck-belizehole > input:first-child:checked + input[type=\"hidden\"] + label::before {\n    background-color: #2980b9;\n    border-color: #2980b9;\n}\n\n.icheck-wisteria > input:first-child:not(:checked):not(:disabled):hover + label::before,\n.icheck-wisteria > input:first-child:not(:checked):not(:disabled):hover + input[type=\"hidden\"] + label::before {\n    border-color: #8e44ad;\n}\n\n.icheck-wisteria > input:first-child:checked + label::before,\n.icheck-wisteria > input:first-child:checked + input[type=\"hidden\"] + label::before {\n    background-color: #8e44ad;\n    border-color: #8e44ad;\n}\n\n.icheck-midnightblue > input:first-child:not(:checked):not(:disabled):hover + label::before,\n.icheck-midnightblue > input:first-child:not(:checked):not(:disabled):hover + input[type=\"hidden\"] + label::before {\n    border-color: #2c3e50;\n}\n\n.icheck-midnightblue > input:first-child:checked + label::before,\n.icheck-midnightblue > input:first-child:checked + input[type=\"hidden\"] + label::before {\n    background-color: #2c3e50;\n    border-color: #2c3e50;\n}\n\n.icheck-sunflower > input:first-child:not(:checked):not(:disabled):hover + label::before,\n.icheck-sunflower > input:first-child:not(:checked):not(:disabled):hover + input[type=\"hidden\"] + label::before {\n    border-color: #f1c40f;\n}\n\n.icheck-sunflower > input:first-child:checked + label::before,\n.icheck-sunflower > input:first-child:checked + input[type=\"hidden\"] + label::before {\n    background-color: #f1c40f;\n    border-color: #f1c40f;\n}\n\n.icheck-carrot > input:first-child:not(:checked):not(:disabled):hover + label::before,\n.icheck-carrot > input:first-child:not(:checked):not(:disabled):hover + input[type=\"hidden\"] + label::before {\n    border-color: #e67e22;\n}\n\n.icheck-carrot > input:first-child:checked + label::before,\n.icheck-carrot > input:first-child:checked + input[type=\"hidden\"] + label::before {\n    background-color: #e67e22;\n    border-color: #e67e22;\n}\n\n.icheck-alizarin > input:first-child:not(:checked):not(:disabled):hover + label::before,\n.icheck-alizarin > input:first-child:not(:checked):not(:disabled):hover + input[type=\"hidden\"] + label::before {\n    border-color: #e74c3c;\n}\n\n.icheck-alizarin > input:first-child:checked + label::before,\n.icheck-alizarin > input:first-child:checked + input[type=\"hidden\"] + label::before {\n    background-color: #e74c3c;\n    border-color: #e74c3c;\n}\n\n.icheck-clouds > input:first-child:not(:checked):not(:disabled):hover + label::before,\n.icheck-clouds > input:first-child:not(:checked):not(:disabled):hover + input[type=\"hidden\"] + label::before {\n    border-color: #ecf0f1;\n}\n\n.icheck-clouds > input:first-child:checked + label::before,\n.icheck-clouds > input:first-child:checked + input[type=\"hidden\"] + label::before {\n    background-color: #ecf0f1;\n    border-color: #ecf0f1;\n}\n\n.icheck-clouds > input:first-child:checked + label::after,\n.icheck-clouds > input:first-child:checked + input[type=\"hidden\"] + label::after {\n    border-bottom-color: #95a5a6;\n    border-right-color: #95a5a6;\n}\n\n.icheck-concrete > input:first-child:not(:checked):not(:disabled):hover + label::before,\n.icheck-concrete > input:first-child:not(:checked):not(:disabled):hover + input[type=\"hidden\"] + label::before {\n    border-color: #95a5a6;\n}\n\n.icheck-concrete > input:first-child:checked + label::before,\n.icheck-concrete > input:first-child:checked + input[type=\"hidden\"] + label::before {\n    background-color: #95a5a6;\n    border-color: #95a5a6;\n}\n\n.icheck-orange > input:first-child:not(:checked):not(:disabled):hover + label::before,\n.icheck-orange > input:first-child:not(:checked):not(:disabled):hover + input[type=\"hidden\"] + label::before {\n    border-color: #f39c12;\n}\n\n.icheck-orange > input:first-child:checked + label::before,\n.icheck-orange > input:first-child:checked + input[type=\"hidden\"] + label::before {\n    background-color: #f39c12;\n    border-color: #f39c12;\n}\n\n.icheck-pumpkin > input:first-child:not(:checked):not(:disabled):hover + label::before,\n.icheck-pumpkin > input:first-child:not(:checked):not(:disabled):hover + input[type=\"hidden\"] + label::before {\n    border-color: #d35400;\n}\n\n.icheck-pumpkin > input:first-child:checked + label::before,\n.icheck-pumpkin > input:first-child:checked + input[type=\"hidden\"] + label::before {\n    background-color: #d35400;\n    border-color: #d35400;\n}\n\n.icheck-pomegranate > input:first-child:not(:checked):not(:disabled):hover + label::before,\n.icheck-pomegranate > input:first-child:not(:checked):not(:disabled):hover + input[type=\"hidden\"] + label::before {\n    border-color: #c0392b;\n}\n\n.icheck-pomegranate > input:first-child:checked + label::before,\n.icheck-pomegranate > input:first-child:checked + input[type=\"hidden\"] + label::before {\n    background-color: #c0392b;\n    border-color: #c0392b;\n}\n\n.icheck-silver > input:first-child:not(:checked):not(:disabled):hover + label::before,\n.icheck-silver > input:first-child:not(:checked):not(:disabled):hover + input[type=\"hidden\"] + label::before {\n    border-color: #bdc3c7;\n}\n\n.icheck-silver > input:first-child:checked + label::before,\n.icheck-silver > input:first-child:checked + input[type=\"hidden\"] + label::before {\n    background-color: #bdc3c7;\n    border-color: #bdc3c7;\n}\n\n.icheck-asbestos > input:first-child:not(:checked):not(:disabled):hover + label::before,\n.icheck-asbestos > input:first-child:not(:checked):not(:disabled):hover + input[type=\"hidden\"] + label::before {\n    border-color: #7f8c8d;\n}\n\n.icheck-asbestos > input:first-child:checked + label::before,\n.icheck-asbestos > input:first-child:checked + input[type=\"hidden\"] + label::before {\n    background-color: #7f8c8d;\n    border-color: #7f8c8d;\n}"
  },
  {
    "path": "public/plugins/jquery/core.js",
    "content": "/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\ndefine( [\n\t\"./var/arr\",\n\t\"./var/document\",\n\t\"./var/getProto\",\n\t\"./var/slice\",\n\t\"./var/concat\",\n\t\"./var/push\",\n\t\"./var/indexOf\",\n\t\"./var/class2type\",\n\t\"./var/toString\",\n\t\"./var/hasOwn\",\n\t\"./var/fnToString\",\n\t\"./var/ObjectFunctionString\",\n\t\"./var/support\",\n\t\"./var/isFunction\",\n\t\"./var/isWindow\",\n\t\"./core/DOMEval\",\n\t\"./core/toType\"\n], function( arr, document, getProto, slice, concat, push, indexOf,\n\tclass2type, toString, hasOwn, fnToString, ObjectFunctionString,\n\tsupport, isFunction, isWindow, DOMEval, toType ) {\n\n\"use strict\";\n\nvar\n\tversion = \"3.4.1\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t},\n\n\t// Support: Android <=4.0 only\n\t// Make sure we trim BOM and NBSP\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a global context\n\tglobalEval: function( code, options ) {\n\t\tDOMEval( code, { nonce: options && options.nonce } );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// Support: Android <=4.0 only\n\ttrim: function( text ) {\n\t\treturn text == null ?\n\t\t\t\"\" :\n\t\t\t( text + \"\" ).replace( rtrim, \"\" );\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\nfunction( i, name ) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\n\nreturn jQuery;\n} );\n"
  },
  {
    "path": "public/plugins/jquery/jquery.js",
    "content": "/*!\n * jQuery JavaScript Library v3.4.1\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2019-05-01T21:04Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar document = window.document;\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar concat = arr.concat;\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n      // Support: Chrome <=57, Firefox <=52\n      // In some browsers, typeof returns \"function\" for HTML <object> elements\n      // (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n      // We don't want to classify *any* DOM node as a function.\n      return typeof obj === \"function\" && typeof obj.nodeType !== \"number\";\n  };\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.4.1\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t},\n\n\t// Support: Android <=4.0 only\n\t// Make sure we trim BOM and NBSP\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a global context\n\tglobalEval: function( code, options ) {\n\t\tDOMEval( code, { nonce: options && options.nonce } );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// Support: Android <=4.0 only\n\ttrim: function( text ) {\n\t\treturn text == null ?\n\t\t\t\"\" :\n\t\t\t( text + \"\" ).replace( rtrim, \"\" );\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\nfunction( i, name ) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.4\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://js.foundation/\n *\n * Date: 2019-04-08\n */\n(function( window ) {\n\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ({}).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpush_native = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[i] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = \"(?:\\\\\\\\.|[\\\\w-]|[^\\0-\\\\xa0])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace +\n\t\t\"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace +\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" +\n\t\t\twhitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trhtml = /HTML$/i,\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\" ),\n\tfunescape = function( _, escaped, escapedWhitespace ) {\n\t\tvar high = \"0x\" + escaped - 0x10000;\n\t\t// NaN means non-codepoint\n\t\t// Support: Firefox<24\n\t\t// Workaround erroneous numeric interpretation of +\"0x\"\n\t\treturn high !== high || escapedWhitespace ?\n\t\t\tescaped :\n\t\t\thigh < 0 ?\n\t\t\t\t// BMP codepoint\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t(arr = slice.call( preferredDoc.childNodes )),\n\t\tpreferredDoc.childNodes\n\t);\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpush_native.apply( target, slice.call(els) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( (target[j++] = els[i++]) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\n\t\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\n\t\t\tsetDocument( context );\n\t\t}\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( (m = match[1]) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( (elem = context.getElementById( m )) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && (elem = newContext.getElementById( m )) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[2] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t(!rbuggyQSA || !rbuggyQSA.test( selector )) &&\n\n\t\t\t\t// Support: IE 8 only\n\t\t\t\t// Exclude object elements\n\t\t\t\t(nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\") ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 && rdescend.test( selector ) ) {\n\n\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\tif ( (nid = context.getAttribute( \"id\" )) ) {\n\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", (nid = expando) );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[i] = \"#\" + nid + \" \" + toSelector( groups[i] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn (cache[ key + \" \" ] = value);\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement(\"fieldset\");\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split(\"|\"),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[i] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( (cur = cur.nextSibling) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction(function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction(function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\tvar namespace = elem.namespaceURI,\n\t\tdocElem = (elem.ownerDocument || elem).documentElement;\n\n\t// Support: IE <=8\n\t// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n\t// https://bugs.jquery.com/ticket/4833\n\treturn !rhtml.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9-11, Edge\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\tif ( preferredDoc !== document &&\n\t\t(subWindow = document.defaultView) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert(function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute(\"className\");\n\t});\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert(function( el ) {\n\t\tel.appendChild( document.createComment(\"\") );\n\t\treturn !el.getElementsByTagName(\"*\").length;\n\t});\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert(function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t});\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute(\"id\") === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[\"ID\"] =  function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode(\"id\");\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode(\"id\");\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( (elem = elems[i++]) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode(\"id\");\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[\"TAG\"] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( (elem = results[i++]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[\"CLASS\"] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( (support.qsa = rnative.test( document.querySelectorAll )) ) {\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( el ) {\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"<a id='\" + expando + \"'></a>\" +\n\t\t\t\t\"<select id='\" + expando + \"-\\r\\\\' msallowcapture=''>\" +\n\t\t\t\t\"<option selected=''></option></select>\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll(\"[msallowcapture^='']\").length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll(\"[selected]\").length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push(\"~=\");\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll(\":checked\").length ) {\n\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push(\".#.+[+~]\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( el ) {\n\t\t\tel.innerHTML = \"<a href='' disabled='disabled'></a>\" +\n\t\t\t\t\"<select disabled='disabled'><option/></select>\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement(\"input\");\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll(\"[name=d]\").length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll(\":enabled\").length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll(\":disabled\").length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll(\"*,:x\");\n\t\t\trbuggyQSA.push(\",.*:\");\n\t\t});\n\t}\n\n\tif ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector) )) ) {\n\n\t\tassert(function( el ) {\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t});\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join(\"|\") );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join(\"|\") );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t));\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( (b = b.parentNode) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\tcompare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\tif ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\t\t\treturn a === document ? -1 :\n\t\t\t\tb === document ? 1 :\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[i] === bp[i] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[i], bp[i] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\tap[i] === preferredDoc ? -1 :\n\t\t\tbp[i] === preferredDoc ? 1 :\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\t// Set document vars if needed\n\tif ( ( context.ownerDocument || context ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn (sel + \"\").replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( (elem = results[i++]) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( (node = elem[i++]) ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[1] = match[1].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[3] || match[4] || match[5] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1].slice( 0, 3 ) === \"nth\" ) {\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[3] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[3] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[6] && match[2];\n\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[3] ) {\n\t\t\t\tmatch[2] = match[4] || match[5] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() { return true; } :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\" );\n\t\t\t\t});\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[i] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction(function( selector ) {\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}) :\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tinput[0] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[0] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t}),\n\n\t\t\"has\": markFunction(function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t}),\n\n\t\t\"contains\": markFunction(function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t}),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test(lang || \"\") ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( (elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t}),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t//   but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo(function() {\n\t\t\treturn [ 0 ];\n\t\t}),\n\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t}),\n\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t}),\n\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ?\n\t\t\t\targument + length :\n\t\t\t\targument > length ?\n\t\t\t\t\tlength :\n\t\t\t\t\targument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t})\n\t}\n};\n\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\n\t\t\tif ( match ) {\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( (tokens = []) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push({\n\t\t\t\tvalue: matched,\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[0].replace( rtrim, \" \" )\n\t\t\t});\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push({\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t});\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[i].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( (oldCache = uniqueCache[ key ]) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn (newCache[ 2 ] = oldCache[ 2 ]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[0];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[i], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (elem = unmatched[i]) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction(function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( (elem = temp[i]) ) {\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\n\t\t\t\t\t\t(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {\n\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t(checkContext = context).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\n\t\t\tmatchers = [ addCombinator(elementMatcher( matchers ), matcher) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" })\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", outermost ),\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context === document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: <number>) matching elements by id\n\t\t\tfor ( ; i !== len && (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\tif ( !context && elem.ownerDocument !== document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( (matcher = elementMatchers[j++]) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (matcher = setMatchers[j++]) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[i] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n *  selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n *  selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( (selector = compiled.selector || selector) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[0] = match[0].slice( 0 );\n\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {\n\n\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[\"needsContext\"].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[i];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( (seed = find(\n\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context\n\t\t\t\t)) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split(\"\").sort( sortOrder ).join(\"\") === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert(function( el ) {\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement(\"fieldset\") ) & 1;\n});\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert(function( el ) {\n\tel.innerHTML = \"<a href='#'></a>\";\n\treturn el.firstChild.getAttribute(\"href\") === \"#\" ;\n}) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert(function( el ) {\n\tel.innerHTML = \"<input/>\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n}) ) {\n\taddHandle( \"value\", function( elem, name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert(function( el ) {\n\treturn el.getAttribute(\"disabled\") == null;\n}) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t\t(val = elem.getAttributeNode( name )) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\tnull;\n\t\t}\n\t});\n}\n\nreturn Sizzle;\n\n})( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n  return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n};\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( typeof elem.contentDocument !== \"undefined\" ) {\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the master Deferred\n\t\t\tmaster = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tmaster.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( master.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn master.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), master.reject );\n\t\t}\n\n\t\treturn master.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\tvalue :\n\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (#9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t//  - Node\n\t//    - Node.ELEMENT_NODE\n\t//    - Node.DOCUMENT_NODE\n\t//  - Object\n\t//    - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t//   1. No key was specified\n\t\t//   2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t//   1. The entire cache object\n\t\t//   2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t//   1. An object of properties\n\t\t//   2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\nvar swap = function( elem, options, callback, args ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.apply( elem, args || [] );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// Support: IE <=9 only\n\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting <tbody> or other required elements.\n\tthead: [ 1, \"<table>\", \"</table>\" ],\n\tcol: [ 2, \"<table><colgroup>\", \"</colgroup></table>\" ],\n\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\n// Support: IE <=9 only\nwrapMap.optgroup = wrapMap.option;\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"<textarea>x</textarea>\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n} )();\n\n\nvar\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 - 11+\n// focus() and blur() are asynchronous, except when they are no-op.\n// So expect focus to be synchronous when the element is already active,\n// and blur to be synchronous when the element is not already active.\n// (focus and blur are always synchronous in other supported browsers,\n// this just defines when we can count on it).\nfunction expectSync( elem, type ) {\n\treturn ( elem === safeActiveElement() ) === ( type === \"focus\" );\n}\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Don't attach events to noData or text/comment nodes (but allow plain objects)\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = {};\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tvar event = jQuery.event.fix( nativeEvent );\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\t\t\thandlers = ( dataPriv.get( this, \"events\" ) || {} )[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG <use> instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", returnTrue );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, expectSync ) {\n\n\t// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !expectSync ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar notAsync, result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\t// Saved data should be false in such cases, but might be a leftover capture object\n\t\t\t\t// from an async native handler (gh-4350)\n\t\t\t\tif ( !saved.length ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t// focus() and blur() are asynchronous\n\t\t\t\t\tnotAsync = expectSync( this, type );\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tif ( saved !== result || notAsync ) {\n\t\t\t\t\t\tdataPriv.set( this, type, false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = {};\n\t\t\t\t\t}\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\treturn result.value;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering the\n\t\t\t\t// native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved.length ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, {\n\t\t\t\t\tvalue: jQuery.event.trigger(\n\n\t\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t\t// Extend with the prototype to reset the above stopImmediatePropagation()\n\t\t\t\t\t\tjQuery.extend( saved[ 0 ], jQuery.Event.prototype ),\n\t\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\t\tthis\n\t\t\t\t\t)\n\t\t\t\t} );\n\n\t\t\t\t// Abort handling of the native event\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (#504, #13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\n\twhich: function( event ) {\n\t\tvar button = event.button;\n\n\t\t// Add which for key events\n\t\tif ( event.which == null && rkeyEvent.test( event.type ) ) {\n\t\t\treturn event.charCode != null ? event.charCode : event.keyCode;\n\t\t}\n\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\tif ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {\n\t\t\tif ( button & 1 ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\tif ( button & 2 ) {\n\t\t\t\treturn 3;\n\t\t\t}\n\n\t\t\tif ( button & 4 ) {\n\t\t\t\treturn 2;\n\t\t\t}\n\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn event.which;\n\t}\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, expectSync );\n\n\t\t\t// Return false to allow normal processing in the caller\n\t\t\treturn false;\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event )  dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t/* eslint-disable max-len */\n\n\t// See https://github.com/eslint/eslint/issues/3229\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)[^>]*)\\/>/gi,\n\n\t/* eslint-enable */\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /<script|<style|<link/i,\n\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.access( src );\n\t\tpdataCur = dataPriv.set( dest, pdataOld );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdelete pdataCur.handle;\n\t\t\tpdataCur.events = {};\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = concat.apply( [], args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase()  !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html.replace( rxhtmlTag, \"<$1></$2>\" );\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t//   .css('filter') (IE 9 only, #12537)\n\t//   .css('--customProperty) (#3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trcustomProp = /^--/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\tif ( box === \"margin\" ) {\n\t\t\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t// This happens for inline elements with no explicit setting (gh-3571)\n\t// Support: Android <=4.1 - 4.3 only\n\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t// Support: IE 9-11 only\n\t// Also use offsetWidth/offsetHeight for when box sizing is unreliable\n\t// We use getClientRects() to check for hidden/disconnected.\n\t// In those cases, the computed value can be trusted to be border-box\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\t\tval === \"auto\" ||\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"gridArea\": true,\n\t\t\"gridColumn\": true,\n\t\t\"gridColumnEnd\": true,\n\t\t\"gridColumnStart\": true,\n\t\t\"gridRow\": true,\n\t\t\"gridRowEnd\": true,\n\t\t\"gridRowStart\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (#7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t\t} ) :\n\t\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\t\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue && type !== false ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = classesToArray( value );\n\n\t\t\t\twhile ( ( className = classNames[ i++ ] ) ) {\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || {} )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = Date.now();\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {\n\t\txml = undefined;\n\t}\n\n\tif ( !xml || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\tjQuery.error( \"Invalid XML: \" + data );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} )\n\t\t.filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} )\n\t\t.map( function( i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t *    - BEFORE asking for a transport\n\t *    - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\toriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce++ ) + uncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\n\njQuery._evalUrl = function( url, options ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (#11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// #1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see #8605, #14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\"  ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// #14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"<script>\" )\n\t\t\t\t\t.attr( s.scriptAttrs || {} )\n\t\t\t\t\t.prop( { charset: s.scriptCharset, src: s.url } )\n\t\t\t\t\t.on( \"load error\", callback = function( evt ) {\n\t\t\t\t\t\tscript.remove();\n\t\t\t\t\t\tcallback = null;\n\t\t\t\t\t\tif ( evt ) {\n\t\t\t\t\t\t\tcomplete( evt.type === \"error\" ? 404 : 200, evt.type );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t// Use native DOM manipulation to avoid our domManip AJAX trickery\n\t\t\t\tdocument.head.appendChild( script[ 0 ] );\n\t\t\t},\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\nvar oldCallbacks = [],\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n// Default jsonp settings\njQuery.ajaxSetup( {\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n} );\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\n\t\t\t\"url\" :\n\t\t\ttypeof s.data === \"string\" &&\n\t\t\t\t( s.contentType || \"\" )\n\t\t\t\t\t.indexOf( \"application/x-www-form-urlencoded\" ) === 0 &&\n\t\t\t\trjsonp.test( s.data ) && \"data\"\n\t\t);\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( jsonProp || s.dataTypes[ 0 ] === \"jsonp\" ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\n\t\t// Insert callback into url or form data\n\t\tif ( jsonProp ) {\n\t\t\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( s.jsonp !== false ) {\n\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[ \"script json\" ] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// Force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\toverwritten = window[ callbackName ];\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always( function() {\n\n\t\t\t// If previous value didn't exist - remove it\n\t\t\tif ( overwritten === undefined ) {\n\t\t\t\tjQuery( window ).removeProp( callbackName );\n\n\t\t\t// Otherwise restore preexisting value\n\t\t\t} else {\n\t\t\t\twindow[ callbackName ] = overwritten;\n\t\t\t}\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\n\t\t\t\t// Make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// Save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t} );\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\n\n// Support: Safari 8 only\n// In Safari 8 documents created via document.implementation.createHTMLDocument\n// collapse sibling forms: the second one becomes a child of the first one.\n// Because of that, this security measure has to be disabled in Safari 8.\n// https://bugs.webkit.org/show_bug.cgi?id=137337\nsupport.createHTMLDocument = ( function() {\n\tvar body = document.implementation.createHTMLDocument( \"\" ).body;\n\tbody.innerHTML = \"<form></form><form></form>\";\n\treturn body.childNodes.length === 2;\n} )();\n\n\n// Argument \"data\" should be string of html\n// context (optional): If specified, the fragment will be created in this context,\n// defaults to document\n// keepScripts (optional): If true, will include scripts passed in the html string\njQuery.parseHTML = function( data, context, keepScripts ) {\n\tif ( typeof data !== \"string\" ) {\n\t\treturn [];\n\t}\n\tif ( typeof context === \"boolean\" ) {\n\t\tkeepScripts = context;\n\t\tcontext = false;\n\t}\n\n\tvar base, parsed, scripts;\n\n\tif ( !context ) {\n\n\t\t// Stop scripts or inline event handlers from being executed immediately\n\t\t// by using document.implementation\n\t\tif ( support.createHTMLDocument ) {\n\t\t\tcontext = document.implementation.createHTMLDocument( \"\" );\n\n\t\t\t// Set the base href for the created document\n\t\t\t// so any parsed elements with URLs\n\t\t\t// are based on the document's URL (gh-2965)\n\t\t\tbase = context.createElement( \"base\" );\n\t\t\tbase.href = document.location.href;\n\t\t\tcontext.head.appendChild( base );\n\t\t} else {\n\t\t\tcontext = document;\n\t\t}\n\t}\n\n\tparsed = rsingleTag.exec( data );\n\tscripts = !keepScripts && [];\n\n\t// Single tag\n\tif ( parsed ) {\n\t\treturn [ context.createElement( parsed[ 1 ] ) ];\n\t}\n\n\tparsed = buildFragment( [ data ], context, scripts );\n\n\tif ( scripts && scripts.length ) {\n\t\tjQuery( scripts ).remove();\n\t}\n\n\treturn jQuery.merge( [], parsed.childNodes );\n};\n\n\n/**\n * Load a url into a page\n */\njQuery.fn.load = function( url, params, callback ) {\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf( \" \" );\n\n\tif ( off > -1 ) {\n\t\tselector = stripAndCollapse( url.slice( off ) );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// If we have elements to modify, make the request\n\tif ( self.length > 0 ) {\n\t\tjQuery.ajax( {\n\t\t\turl: url,\n\n\t\t\t// If \"type\" variable is undefined, then \"GET\" method will be used.\n\t\t\t// Make value of this field explicit since\n\t\t\t// user can override it through ajaxSetup method\n\t\t\ttype: type || \"GET\",\n\t\t\tdataType: \"html\",\n\t\t\tdata: params\n\t\t} ).done( function( responseText ) {\n\n\t\t\t// Save response for use in complete callback\n\t\t\tresponse = arguments;\n\n\t\t\tself.html( selector ?\n\n\t\t\t\t// If a selector was specified, locate the right elements in a dummy div\n\t\t\t\t// Exclude scripts to avoid IE 'Permission Denied' errors\n\t\t\t\tjQuery( \"<div>\" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :\n\n\t\t\t\t// Otherwise use the full result\n\t\t\t\tresponseText );\n\n\t\t// If the request succeeds, this function gets \"data\", \"status\", \"jqXHR\"\n\t\t// but they are ignored because response was set above.\n\t\t// If it fails, this function gets \"jqXHR\", \"status\", \"error\"\n\t\t} ).always( callback && function( jqXHR, status ) {\n\t\t\tself.each( function() {\n\t\t\t\tcallback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t\t} );\n\t\t} );\n\t}\n\n\treturn this;\n};\n\n\n\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( [\n\t\"ajaxStart\",\n\t\"ajaxStop\",\n\t\"ajaxComplete\",\n\t\"ajaxError\",\n\t\"ajaxSuccess\",\n\t\"ajaxSend\"\n], function( i, type ) {\n\tjQuery.fn[ type ] = function( fn ) {\n\t\treturn this.on( type, fn );\n\t};\n} );\n\n\n\n\njQuery.expr.pseudos.animated = function( elem ) {\n\treturn jQuery.grep( jQuery.timers, function( fn ) {\n\t\treturn elem === fn.elem;\n\t} ).length;\n};\n\n\n\n\njQuery.offset = {\n\tsetOffset: function( elem, options, i ) {\n\t\tvar curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,\n\t\t\tposition = jQuery.css( elem, \"position\" ),\n\t\t\tcurElem = jQuery( elem ),\n\t\t\tprops = {};\n\n\t\t// Set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tcurOffset = curElem.offset();\n\t\tcurCSSTop = jQuery.css( elem, \"top\" );\n\t\tcurCSSLeft = jQuery.css( elem, \"left\" );\n\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) &&\n\t\t\t( curCSSTop + curCSSLeft ).indexOf( \"auto\" ) > -1;\n\n\t\t// Need to be able to calculate position if either\n\t\t// top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( isFunction( options ) ) {\n\n\t\t\t// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n\t\t\toptions = options.call( elem, i, jQuery.extend( {}, curOffset ) );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\njQuery.fn.extend( {\n\n\t// offset() relates an element's border box to the document origin\n\toffset: function( options ) {\n\n\t\t// Preserve chaining for setter\n\t\tif ( arguments.length ) {\n\t\t\treturn options === undefined ?\n\t\t\t\tthis :\n\t\t\t\tthis.each( function( i ) {\n\t\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t\t} );\n\t\t}\n\n\t\tvar rect, win,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Return zeros for disconnected and hidden (display: none) elements (gh-2310)\n\t\t// Support: IE <=11 only\n\t\t// Running getBoundingClientRect on a\n\t\t// disconnected node in IE throws an error\n\t\tif ( !elem.getClientRects().length ) {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t\t// Get document-relative position by adding viewport scroll to viewport-relative gBCR\n\t\trect = elem.getBoundingClientRect();\n\t\twin = elem.ownerDocument.defaultView;\n\t\treturn {\n\t\t\ttop: rect.top + win.pageYOffset,\n\t\t\tleft: rect.left + win.pageXOffset\n\t\t};\n\t},\n\n\t// position() relates an element's margin box to its offset parent's padding box\n\t// This corresponds to the behavior of CSS absolute positioning\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset, doc,\n\t\t\telem = this[ 0 ],\n\t\t\tparentOffset = { top: 0, left: 0 };\n\n\t\t// position:fixed elements are offset from the viewport, which itself always has zero offset\n\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\n\t\t\t// Assume position:fixed implies availability of getBoundingClientRect\n\t\t\toffset = elem.getBoundingClientRect();\n\n\t\t} else {\n\t\t\toffset = this.offset();\n\n\t\t\t// Account for the *real* offset parent, which can be the document or its root element\n\t\t\t// when a statically positioned element is identified\n\t\t\tdoc = elem.ownerDocument;\n\t\t\toffsetParent = elem.offsetParent || doc.documentElement;\n\t\t\twhile ( offsetParent &&\n\t\t\t\t( offsetParent === doc.body || offsetParent === doc.documentElement ) &&\n\t\t\t\tjQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\n\t\t\t\toffsetParent = offsetParent.parentNode;\n\t\t\t}\n\t\t\tif ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {\n\n\t\t\t\t// Incorporate borders into its offset, since they are outside its content origin\n\t\t\t\tparentOffset = jQuery( offsetParent ).offset();\n\t\t\t\tparentOffset.top += jQuery.css( offsetParent, \"borderTopWidth\", true );\n\t\t\t\tparentOffset.left += jQuery.css( offsetParent, \"borderLeftWidth\", true );\n\t\t\t}\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\treturn {\n\t\t\ttop: offset.top - parentOffset.top - jQuery.css( elem, \"marginTop\", true ),\n\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, \"marginLeft\", true )\n\t\t};\n\t},\n\n\t// This method will return documentElement in the following cases:\n\t// 1) For the element inside the iframe without offsetParent, this method will return\n\t//    documentElement of the parent window\n\t// 2) For the hidden or detached element\n\t// 3) For body or html element, i.e. in case of the html node - it will return itself\n\t//\n\t// but those exceptions were never presented as a real life use-cases\n\t// and might be considered as more preferable results.\n\t//\n\t// This logic, however, is not guaranteed and can change at any point in the future\n\toffsetParent: function() {\n\t\treturn this.map( function() {\n\t\t\tvar offsetParent = this.offsetParent;\n\n\t\t\twhile ( offsetParent && jQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\n\t\t\treturn offsetParent || documentElement;\n\t\t} );\n\t}\n} );\n\n// Create scrollLeft and scrollTop methods\njQuery.each( { scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\" }, function( method, prop ) {\n\tvar top = \"pageYOffset\" === prop;\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn access( this, function( elem, method, val ) {\n\n\t\t\t// Coalesce documents and windows\n\t\t\tvar win;\n\t\t\tif ( isWindow( elem ) ) {\n\t\t\t\twin = elem;\n\t\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t\twin = elem.defaultView;\n\t\t\t}\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? win[ prop ] : elem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : win.pageXOffset,\n\t\t\t\t\ttop ? val : win.pageYOffset\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length );\n\t};\n} );\n\n// Support: Safari <=7 - 9.1, Chrome <=37 - 49\n// Add the top/left cssHooks using jQuery.fn.position\n// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347\n// getComputedStyle returns percent when specified for top/left/bottom/right;\n// rather than make the css module depend on the offset module, just check for it here\njQuery.each( [ \"top\", \"left\" ], function( i, prop ) {\n\tjQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,\n\t\tfunction( elem, computed ) {\n\t\t\tif ( computed ) {\n\t\t\t\tcomputed = curCSS( elem, prop );\n\n\t\t\t\t// If curCSS returns percentage, fallback to offset\n\t\t\t\treturn rnumnonpx.test( computed ) ?\n\t\t\t\t\tjQuery( elem ).position()[ prop ] + \"px\" :\n\t\t\t\t\tcomputed;\n\t\t\t}\n\t\t}\n\t);\n} );\n\n\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( { padding: \"inner\" + name, content: type, \"\": \"outer\" + name },\n\t\tfunction( defaultExtra, funcName ) {\n\n\t\t// Margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( isWindow( elem ) ) {\n\n\t\t\t\t\t// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)\n\t\t\t\t\treturn funcName.indexOf( \"outer\" ) === 0 ?\n\t\t\t\t\t\telem[ \"inner\" + name ] :\n\t\t\t\t\t\telem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n\t\t\t\t\t// whichever is greatest\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable );\n\t\t};\n\t} );\n} );\n\n\njQuery.each( ( \"blur focus focusin focusout resize scroll click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup contextmenu\" ).split( \" \" ),\n\tfunction( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.on( name, null, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n} );\n\njQuery.fn.extend( {\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n} );\n\n\n\n\njQuery.fn.extend( {\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ?\n\t\t\tthis.off( selector, \"**\" ) :\n\t\t\tthis.off( types, selector || \"**\", fn );\n\t}\n} );\n\n// Bind a function to a context, optionally partially applying any\n// arguments.\n// jQuery.proxy is deprecated to promote standards (specifically Function#bind)\n// However, it is not slated for removal any time soon\njQuery.proxy = function( fn, context ) {\n\tvar tmp, args, proxy;\n\n\tif ( typeof context === \"string\" ) {\n\t\ttmp = fn[ context ];\n\t\tcontext = fn;\n\t\tfn = tmp;\n\t}\n\n\t// Quick check to determine if target is callable, in the spec\n\t// this throws a TypeError, but we will just return undefined.\n\tif ( !isFunction( fn ) ) {\n\t\treturn undefined;\n\t}\n\n\t// Simulated bind\n\targs = slice.call( arguments, 2 );\n\tproxy = function() {\n\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t};\n\n\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\treturn proxy;\n};\n\njQuery.holdReady = function( hold ) {\n\tif ( hold ) {\n\t\tjQuery.readyWait++;\n\t} else {\n\t\tjQuery.ready( true );\n\t}\n};\njQuery.isArray = Array.isArray;\njQuery.parseJSON = JSON.parse;\njQuery.nodeName = nodeName;\njQuery.isFunction = isFunction;\njQuery.isWindow = isWindow;\njQuery.camelCase = camelCase;\njQuery.type = toType;\n\njQuery.now = Date.now;\n\njQuery.isNumeric = function( obj ) {\n\n\t// As of jQuery 3.0, isNumeric is limited to\n\t// strings and numbers (primitives or objects)\n\t// that can be coerced to finite numbers (gh-2662)\n\tvar type = jQuery.type( obj );\n\treturn ( type === \"number\" || type === \"string\" ) &&\n\n\t\t// parseFloat NaNs numeric-cast false positives (\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t!isNaN( obj - parseFloat( obj ) );\n};\n\n\n\n\n// Register as a named AMD module, since jQuery can be concatenated with other\n// files that may use define, but not via a proper concatenation script that\n// understands anonymous AMD modules. A named AMD is safest and most robust\n// way to register. Lowercase jquery is used because AMD module names are\n// derived from file names, and jQuery is normally delivered in a lowercase\n// file name. Do this after creating the global so that if an AMD module wants\n// to call noConflict to hide this version of jQuery, it will work.\n\n// Note that for maximum portability, libraries that are not jQuery should\n// declare themselves as anonymous modules, and avoid setting a global if an\n// AMD loader is present. jQuery is a special case. For more information, see\n// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\nif ( typeof define === \"function\" && define.amd ) {\n\tdefine( \"jquery\", [], function() {\n\t\treturn jQuery;\n\t} );\n}\n\n\n\n\nvar\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$;\n\njQuery.noConflict = function( deep ) {\n\tif ( window.$ === jQuery ) {\n\t\twindow.$ = _$;\n\t}\n\n\tif ( deep && window.jQuery === jQuery ) {\n\t\twindow.jQuery = _jQuery;\n\t}\n\n\treturn jQuery;\n};\n\n// Expose jQuery and $ identifiers, even in AMD\n// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)\n// and CommonJS for browser emulators (#13566)\nif ( !noGlobal ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\n\n\n\nreturn jQuery;\n} );\n"
  },
  {
    "path": "public/plugins/jquery/jquery.slim.js",
    "content": "/*!\n * jQuery JavaScript Library v3.4.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/parseXML,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-event/ajax,-effects,-effects/Tween,-effects/animatedSelector\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2019-05-01T21:04Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar document = window.document;\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar concat = arr.concat;\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n      // Support: Chrome <=57, Firefox <=52\n      // In some browsers, typeof returns \"function\" for HTML <object> elements\n      // (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n      // We don't want to classify *any* DOM node as a function.\n      return typeof obj === \"function\" && typeof obj.nodeType !== \"number\";\n  };\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.4.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/parseXML,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-event/ajax,-effects,-effects/Tween,-effects/animatedSelector\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t},\n\n\t// Support: Android <=4.0 only\n\t// Make sure we trim BOM and NBSP\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a global context\n\tglobalEval: function( code, options ) {\n\t\tDOMEval( code, { nonce: options && options.nonce } );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// Support: Android <=4.0 only\n\ttrim: function( text ) {\n\t\treturn text == null ?\n\t\t\t\"\" :\n\t\t\t( text + \"\" ).replace( rtrim, \"\" );\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\nfunction( i, name ) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.4\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://js.foundation/\n *\n * Date: 2019-04-08\n */\n(function( window ) {\n\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ({}).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpush_native = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[i] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = \"(?:\\\\\\\\.|[\\\\w-]|[^\\0-\\\\xa0])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace +\n\t\t\"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace +\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" +\n\t\t\twhitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trhtml = /HTML$/i,\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\" ),\n\tfunescape = function( _, escaped, escapedWhitespace ) {\n\t\tvar high = \"0x\" + escaped - 0x10000;\n\t\t// NaN means non-codepoint\n\t\t// Support: Firefox<24\n\t\t// Workaround erroneous numeric interpretation of +\"0x\"\n\t\treturn high !== high || escapedWhitespace ?\n\t\t\tescaped :\n\t\t\thigh < 0 ?\n\t\t\t\t// BMP codepoint\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t(arr = slice.call( preferredDoc.childNodes )),\n\t\tpreferredDoc.childNodes\n\t);\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpush_native.apply( target, slice.call(els) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( (target[j++] = els[i++]) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\n\t\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\n\t\t\tsetDocument( context );\n\t\t}\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( (m = match[1]) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( (elem = context.getElementById( m )) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && (elem = newContext.getElementById( m )) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[2] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t(!rbuggyQSA || !rbuggyQSA.test( selector )) &&\n\n\t\t\t\t// Support: IE 8 only\n\t\t\t\t// Exclude object elements\n\t\t\t\t(nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\") ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 && rdescend.test( selector ) ) {\n\n\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\tif ( (nid = context.getAttribute( \"id\" )) ) {\n\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", (nid = expando) );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[i] = \"#\" + nid + \" \" + toSelector( groups[i] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn (cache[ key + \" \" ] = value);\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement(\"fieldset\");\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split(\"|\"),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[i] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( (cur = cur.nextSibling) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction(function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction(function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\tvar namespace = elem.namespaceURI,\n\t\tdocElem = (elem.ownerDocument || elem).documentElement;\n\n\t// Support: IE <=8\n\t// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n\t// https://bugs.jquery.com/ticket/4833\n\treturn !rhtml.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9-11, Edge\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\tif ( preferredDoc !== document &&\n\t\t(subWindow = document.defaultView) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert(function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute(\"className\");\n\t});\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert(function( el ) {\n\t\tel.appendChild( document.createComment(\"\") );\n\t\treturn !el.getElementsByTagName(\"*\").length;\n\t});\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert(function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t});\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute(\"id\") === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[\"ID\"] =  function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode(\"id\");\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode(\"id\");\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( (elem = elems[i++]) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode(\"id\");\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[\"TAG\"] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( (elem = results[i++]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[\"CLASS\"] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( (support.qsa = rnative.test( document.querySelectorAll )) ) {\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( el ) {\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"<a id='\" + expando + \"'></a>\" +\n\t\t\t\t\"<select id='\" + expando + \"-\\r\\\\' msallowcapture=''>\" +\n\t\t\t\t\"<option selected=''></option></select>\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll(\"[msallowcapture^='']\").length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll(\"[selected]\").length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push(\"~=\");\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll(\":checked\").length ) {\n\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push(\".#.+[+~]\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( el ) {\n\t\t\tel.innerHTML = \"<a href='' disabled='disabled'></a>\" +\n\t\t\t\t\"<select disabled='disabled'><option/></select>\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement(\"input\");\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll(\"[name=d]\").length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll(\":enabled\").length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll(\":disabled\").length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll(\"*,:x\");\n\t\t\trbuggyQSA.push(\",.*:\");\n\t\t});\n\t}\n\n\tif ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector) )) ) {\n\n\t\tassert(function( el ) {\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t});\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join(\"|\") );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join(\"|\") );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t));\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( (b = b.parentNode) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\tcompare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\tif ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\t\t\treturn a === document ? -1 :\n\t\t\t\tb === document ? 1 :\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[i] === bp[i] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[i], bp[i] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\tap[i] === preferredDoc ? -1 :\n\t\t\tbp[i] === preferredDoc ? 1 :\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\t// Set document vars if needed\n\tif ( ( context.ownerDocument || context ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn (sel + \"\").replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( (elem = results[i++]) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( (node = elem[i++]) ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[1] = match[1].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[3] || match[4] || match[5] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1].slice( 0, 3 ) === \"nth\" ) {\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[3] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[3] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[6] && match[2];\n\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[3] ) {\n\t\t\t\tmatch[2] = match[4] || match[5] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() { return true; } :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\" );\n\t\t\t\t});\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[i] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction(function( selector ) {\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}) :\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tinput[0] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[0] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t}),\n\n\t\t\"has\": markFunction(function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t}),\n\n\t\t\"contains\": markFunction(function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t}),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test(lang || \"\") ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( (elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t}),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t//   but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo(function() {\n\t\t\treturn [ 0 ];\n\t\t}),\n\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t}),\n\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t}),\n\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ?\n\t\t\t\targument + length :\n\t\t\t\targument > length ?\n\t\t\t\t\tlength :\n\t\t\t\t\targument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t})\n\t}\n};\n\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\n\t\t\tif ( match ) {\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( (tokens = []) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push({\n\t\t\t\tvalue: matched,\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[0].replace( rtrim, \" \" )\n\t\t\t});\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push({\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t});\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[i].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( (oldCache = uniqueCache[ key ]) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn (newCache[ 2 ] = oldCache[ 2 ]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[0];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[i], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (elem = unmatched[i]) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction(function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( (elem = temp[i]) ) {\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\n\t\t\t\t\t\t(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {\n\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t(checkContext = context).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\n\t\t\tmatchers = [ addCombinator(elementMatcher( matchers ), matcher) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" })\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", outermost ),\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context === document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: <number>) matching elements by id\n\t\t\tfor ( ; i !== len && (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\tif ( !context && elem.ownerDocument !== document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( (matcher = elementMatchers[j++]) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (matcher = setMatchers[j++]) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[i] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n *  selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n *  selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( (selector = compiled.selector || selector) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[0] = match[0].slice( 0 );\n\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {\n\n\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[\"needsContext\"].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[i];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( (seed = find(\n\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context\n\t\t\t\t)) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split(\"\").sort( sortOrder ).join(\"\") === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert(function( el ) {\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement(\"fieldset\") ) & 1;\n});\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert(function( el ) {\n\tel.innerHTML = \"<a href='#'></a>\";\n\treturn el.firstChild.getAttribute(\"href\") === \"#\" ;\n}) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert(function( el ) {\n\tel.innerHTML = \"<input/>\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n}) ) {\n\taddHandle( \"value\", function( elem, name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert(function( el ) {\n\treturn el.getAttribute(\"disabled\") == null;\n}) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t\t(val = elem.getAttributeNode( name )) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\tnull;\n\t\t}\n\t});\n}\n\nreturn Sizzle;\n\n})( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n  return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n};\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( typeof elem.contentDocument !== \"undefined\" ) {\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the master Deferred\n\t\t\tmaster = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tmaster.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( master.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn master.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), master.reject );\n\t\t}\n\n\t\treturn master.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\tvalue :\n\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (#9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t//  - Node\n\t//    - Node.ELEMENT_NODE\n\t//    - Node.DOCUMENT_NODE\n\t//  - Object\n\t//    - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t//   1. No key was specified\n\t\t//   2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t//   1. The entire cache object\n\t\t//   2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t//   1. An object of properties\n\t\t//   2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\nvar swap = function( elem, options, callback, args ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.apply( elem, args || [] );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// Support: IE <=9 only\n\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting <tbody> or other required elements.\n\tthead: [ 1, \"<table>\", \"</table>\" ],\n\tcol: [ 2, \"<table><colgroup>\", \"</colgroup></table>\" ],\n\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\n// Support: IE <=9 only\nwrapMap.optgroup = wrapMap.option;\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"<textarea>x</textarea>\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n} )();\n\n\nvar\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 - 11+\n// focus() and blur() are asynchronous, except when they are no-op.\n// So expect focus to be synchronous when the element is already active,\n// and blur to be synchronous when the element is not already active.\n// (focus and blur are always synchronous in other supported browsers,\n// this just defines when we can count on it).\nfunction expectSync( elem, type ) {\n\treturn ( elem === safeActiveElement() ) === ( type === \"focus\" );\n}\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Don't attach events to noData or text/comment nodes (but allow plain objects)\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = {};\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tvar event = jQuery.event.fix( nativeEvent );\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\t\t\thandlers = ( dataPriv.get( this, \"events\" ) || {} )[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG <use> instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", returnTrue );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, expectSync ) {\n\n\t// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !expectSync ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar notAsync, result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\t// Saved data should be false in such cases, but might be a leftover capture object\n\t\t\t\t// from an async native handler (gh-4350)\n\t\t\t\tif ( !saved.length ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t// focus() and blur() are asynchronous\n\t\t\t\t\tnotAsync = expectSync( this, type );\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tif ( saved !== result || notAsync ) {\n\t\t\t\t\t\tdataPriv.set( this, type, false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = {};\n\t\t\t\t\t}\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\treturn result.value;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering the\n\t\t\t\t// native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved.length ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, {\n\t\t\t\t\tvalue: jQuery.event.trigger(\n\n\t\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t\t// Extend with the prototype to reset the above stopImmediatePropagation()\n\t\t\t\t\t\tjQuery.extend( saved[ 0 ], jQuery.Event.prototype ),\n\t\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\t\tthis\n\t\t\t\t\t)\n\t\t\t\t} );\n\n\t\t\t\t// Abort handling of the native event\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (#504, #13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\n\twhich: function( event ) {\n\t\tvar button = event.button;\n\n\t\t// Add which for key events\n\t\tif ( event.which == null && rkeyEvent.test( event.type ) ) {\n\t\t\treturn event.charCode != null ? event.charCode : event.keyCode;\n\t\t}\n\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\tif ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {\n\t\t\tif ( button & 1 ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\tif ( button & 2 ) {\n\t\t\t\treturn 3;\n\t\t\t}\n\n\t\t\tif ( button & 4 ) {\n\t\t\t\treturn 2;\n\t\t\t}\n\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn event.which;\n\t}\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, expectSync );\n\n\t\t\t// Return false to allow normal processing in the caller\n\t\t\treturn false;\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event )  dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t/* eslint-disable max-len */\n\n\t// See https://github.com/eslint/eslint/issues/3229\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)[^>]*)\\/>/gi,\n\n\t/* eslint-enable */\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /<script|<style|<link/i,\n\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.access( src );\n\t\tpdataCur = dataPriv.set( dest, pdataOld );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdelete pdataCur.handle;\n\t\t\tpdataCur.events = {};\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = concat.apply( [], args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase()  !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html.replace( rxhtmlTag, \"<$1></$2>\" );\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t//   .css('filter') (IE 9 only, #12537)\n\t//   .css('--customProperty) (#3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trcustomProp = /^--/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\tif ( box === \"margin\" ) {\n\t\t\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t// This happens for inline elements with no explicit setting (gh-3571)\n\t// Support: Android <=4.1 - 4.3 only\n\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t// Support: IE 9-11 only\n\t// Also use offsetWidth/offsetHeight for when box sizing is unreliable\n\t// We use getClientRects() to check for hidden/disconnected.\n\t// In those cases, the computed value can be trusted to be border-box\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\t\tval === \"auto\" ||\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"gridArea\": true,\n\t\t\"gridColumn\": true,\n\t\t\"gridColumnEnd\": true,\n\t\t\"gridColumnStart\": true,\n\t\t\"gridRow\": true,\n\t\t\"gridRowEnd\": true,\n\t\t\"gridRowStart\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (#7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t\t} ) :\n\t\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = classesToArray( value );\n\n\t\t\t\twhile ( ( className = classNames[ i++ ] ) ) {\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || {} )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} )\n\t\t.filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} )\n\t\t.map( function( i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\n// Support: Safari 8 only\n// In Safari 8 documents created via document.implementation.createHTMLDocument\n// collapse sibling forms: the second one becomes a child of the first one.\n// Because of that, this security measure has to be disabled in Safari 8.\n// https://bugs.webkit.org/show_bug.cgi?id=137337\nsupport.createHTMLDocument = ( function() {\n\tvar body = document.implementation.createHTMLDocument( \"\" ).body;\n\tbody.innerHTML = \"<form></form><form></form>\";\n\treturn body.childNodes.length === 2;\n} )();\n\n\n// Argument \"data\" should be string of html\n// context (optional): If specified, the fragment will be created in this context,\n// defaults to document\n// keepScripts (optional): If true, will include scripts passed in the html string\njQuery.parseHTML = function( data, context, keepScripts ) {\n\tif ( typeof data !== \"string\" ) {\n\t\treturn [];\n\t}\n\tif ( typeof context === \"boolean\" ) {\n\t\tkeepScripts = context;\n\t\tcontext = false;\n\t}\n\n\tvar base, parsed, scripts;\n\n\tif ( !context ) {\n\n\t\t// Stop scripts or inline event handlers from being executed immediately\n\t\t// by using document.implementation\n\t\tif ( support.createHTMLDocument ) {\n\t\t\tcontext = document.implementation.createHTMLDocument( \"\" );\n\n\t\t\t// Set the base href for the created document\n\t\t\t// so any parsed elements with URLs\n\t\t\t// are based on the document's URL (gh-2965)\n\t\t\tbase = context.createElement( \"base\" );\n\t\t\tbase.href = document.location.href;\n\t\t\tcontext.head.appendChild( base );\n\t\t} else {\n\t\t\tcontext = document;\n\t\t}\n\t}\n\n\tparsed = rsingleTag.exec( data );\n\tscripts = !keepScripts && [];\n\n\t// Single tag\n\tif ( parsed ) {\n\t\treturn [ context.createElement( parsed[ 1 ] ) ];\n\t}\n\n\tparsed = buildFragment( [ data ], context, scripts );\n\n\tif ( scripts && scripts.length ) {\n\t\tjQuery( scripts ).remove();\n\t}\n\n\treturn jQuery.merge( [], parsed.childNodes );\n};\n\n\njQuery.offset = {\n\tsetOffset: function( elem, options, i ) {\n\t\tvar curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,\n\t\t\tposition = jQuery.css( elem, \"position\" ),\n\t\t\tcurElem = jQuery( elem ),\n\t\t\tprops = {};\n\n\t\t// Set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tcurOffset = curElem.offset();\n\t\tcurCSSTop = jQuery.css( elem, \"top\" );\n\t\tcurCSSLeft = jQuery.css( elem, \"left\" );\n\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) &&\n\t\t\t( curCSSTop + curCSSLeft ).indexOf( \"auto\" ) > -1;\n\n\t\t// Need to be able to calculate position if either\n\t\t// top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( isFunction( options ) ) {\n\n\t\t\t// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n\t\t\toptions = options.call( elem, i, jQuery.extend( {}, curOffset ) );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\njQuery.fn.extend( {\n\n\t// offset() relates an element's border box to the document origin\n\toffset: function( options ) {\n\n\t\t// Preserve chaining for setter\n\t\tif ( arguments.length ) {\n\t\t\treturn options === undefined ?\n\t\t\t\tthis :\n\t\t\t\tthis.each( function( i ) {\n\t\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t\t} );\n\t\t}\n\n\t\tvar rect, win,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Return zeros for disconnected and hidden (display: none) elements (gh-2310)\n\t\t// Support: IE <=11 only\n\t\t// Running getBoundingClientRect on a\n\t\t// disconnected node in IE throws an error\n\t\tif ( !elem.getClientRects().length ) {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t\t// Get document-relative position by adding viewport scroll to viewport-relative gBCR\n\t\trect = elem.getBoundingClientRect();\n\t\twin = elem.ownerDocument.defaultView;\n\t\treturn {\n\t\t\ttop: rect.top + win.pageYOffset,\n\t\t\tleft: rect.left + win.pageXOffset\n\t\t};\n\t},\n\n\t// position() relates an element's margin box to its offset parent's padding box\n\t// This corresponds to the behavior of CSS absolute positioning\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset, doc,\n\t\t\telem = this[ 0 ],\n\t\t\tparentOffset = { top: 0, left: 0 };\n\n\t\t// position:fixed elements are offset from the viewport, which itself always has zero offset\n\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\n\t\t\t// Assume position:fixed implies availability of getBoundingClientRect\n\t\t\toffset = elem.getBoundingClientRect();\n\n\t\t} else {\n\t\t\toffset = this.offset();\n\n\t\t\t// Account for the *real* offset parent, which can be the document or its root element\n\t\t\t// when a statically positioned element is identified\n\t\t\tdoc = elem.ownerDocument;\n\t\t\toffsetParent = elem.offsetParent || doc.documentElement;\n\t\t\twhile ( offsetParent &&\n\t\t\t\t( offsetParent === doc.body || offsetParent === doc.documentElement ) &&\n\t\t\t\tjQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\n\t\t\t\toffsetParent = offsetParent.parentNode;\n\t\t\t}\n\t\t\tif ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {\n\n\t\t\t\t// Incorporate borders into its offset, since they are outside its content origin\n\t\t\t\tparentOffset = jQuery( offsetParent ).offset();\n\t\t\t\tparentOffset.top += jQuery.css( offsetParent, \"borderTopWidth\", true );\n\t\t\t\tparentOffset.left += jQuery.css( offsetParent, \"borderLeftWidth\", true );\n\t\t\t}\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\treturn {\n\t\t\ttop: offset.top - parentOffset.top - jQuery.css( elem, \"marginTop\", true ),\n\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, \"marginLeft\", true )\n\t\t};\n\t},\n\n\t// This method will return documentElement in the following cases:\n\t// 1) For the element inside the iframe without offsetParent, this method will return\n\t//    documentElement of the parent window\n\t// 2) For the hidden or detached element\n\t// 3) For body or html element, i.e. in case of the html node - it will return itself\n\t//\n\t// but those exceptions were never presented as a real life use-cases\n\t// and might be considered as more preferable results.\n\t//\n\t// This logic, however, is not guaranteed and can change at any point in the future\n\toffsetParent: function() {\n\t\treturn this.map( function() {\n\t\t\tvar offsetParent = this.offsetParent;\n\n\t\t\twhile ( offsetParent && jQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\n\t\t\treturn offsetParent || documentElement;\n\t\t} );\n\t}\n} );\n\n// Create scrollLeft and scrollTop methods\njQuery.each( { scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\" }, function( method, prop ) {\n\tvar top = \"pageYOffset\" === prop;\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn access( this, function( elem, method, val ) {\n\n\t\t\t// Coalesce documents and windows\n\t\t\tvar win;\n\t\t\tif ( isWindow( elem ) ) {\n\t\t\t\twin = elem;\n\t\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t\twin = elem.defaultView;\n\t\t\t}\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? win[ prop ] : elem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : win.pageXOffset,\n\t\t\t\t\ttop ? val : win.pageYOffset\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length );\n\t};\n} );\n\n// Support: Safari <=7 - 9.1, Chrome <=37 - 49\n// Add the top/left cssHooks using jQuery.fn.position\n// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347\n// getComputedStyle returns percent when specified for top/left/bottom/right;\n// rather than make the css module depend on the offset module, just check for it here\njQuery.each( [ \"top\", \"left\" ], function( i, prop ) {\n\tjQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,\n\t\tfunction( elem, computed ) {\n\t\t\tif ( computed ) {\n\t\t\t\tcomputed = curCSS( elem, prop );\n\n\t\t\t\t// If curCSS returns percentage, fallback to offset\n\t\t\t\treturn rnumnonpx.test( computed ) ?\n\t\t\t\t\tjQuery( elem ).position()[ prop ] + \"px\" :\n\t\t\t\t\tcomputed;\n\t\t\t}\n\t\t}\n\t);\n} );\n\n\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( { padding: \"inner\" + name, content: type, \"\": \"outer\" + name },\n\t\tfunction( defaultExtra, funcName ) {\n\n\t\t// Margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( isWindow( elem ) ) {\n\n\t\t\t\t\t// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)\n\t\t\t\t\treturn funcName.indexOf( \"outer\" ) === 0 ?\n\t\t\t\t\t\telem[ \"inner\" + name ] :\n\t\t\t\t\t\telem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n\t\t\t\t\t// whichever is greatest\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable );\n\t\t};\n\t} );\n} );\n\n\njQuery.each( ( \"blur focus focusin focusout resize scroll click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup contextmenu\" ).split( \" \" ),\n\tfunction( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.on( name, null, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n} );\n\njQuery.fn.extend( {\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n} );\n\n\n\n\njQuery.fn.extend( {\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ?\n\t\t\tthis.off( selector, \"**\" ) :\n\t\t\tthis.off( types, selector || \"**\", fn );\n\t}\n} );\n\n// Bind a function to a context, optionally partially applying any\n// arguments.\n// jQuery.proxy is deprecated to promote standards (specifically Function#bind)\n// However, it is not slated for removal any time soon\njQuery.proxy = function( fn, context ) {\n\tvar tmp, args, proxy;\n\n\tif ( typeof context === \"string\" ) {\n\t\ttmp = fn[ context ];\n\t\tcontext = fn;\n\t\tfn = tmp;\n\t}\n\n\t// Quick check to determine if target is callable, in the spec\n\t// this throws a TypeError, but we will just return undefined.\n\tif ( !isFunction( fn ) ) {\n\t\treturn undefined;\n\t}\n\n\t// Simulated bind\n\targs = slice.call( arguments, 2 );\n\tproxy = function() {\n\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t};\n\n\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\treturn proxy;\n};\n\njQuery.holdReady = function( hold ) {\n\tif ( hold ) {\n\t\tjQuery.readyWait++;\n\t} else {\n\t\tjQuery.ready( true );\n\t}\n};\njQuery.isArray = Array.isArray;\njQuery.parseJSON = JSON.parse;\njQuery.nodeName = nodeName;\njQuery.isFunction = isFunction;\njQuery.isWindow = isWindow;\njQuery.camelCase = camelCase;\njQuery.type = toType;\n\njQuery.now = Date.now;\n\njQuery.isNumeric = function( obj ) {\n\n\t// As of jQuery 3.0, isNumeric is limited to\n\t// strings and numbers (primitives or objects)\n\t// that can be coerced to finite numbers (gh-2662)\n\tvar type = jQuery.type( obj );\n\treturn ( type === \"number\" || type === \"string\" ) &&\n\n\t\t// parseFloat NaNs numeric-cast false positives (\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t!isNaN( obj - parseFloat( obj ) );\n};\n\n\n\n\n// Register as a named AMD module, since jQuery can be concatenated with other\n// files that may use define, but not via a proper concatenation script that\n// understands anonymous AMD modules. A named AMD is safest and most robust\n// way to register. Lowercase jquery is used because AMD module names are\n// derived from file names, and jQuery is normally delivered in a lowercase\n// file name. Do this after creating the global so that if an AMD module wants\n// to call noConflict to hide this version of jQuery, it will work.\n\n// Note that for maximum portability, libraries that are not jQuery should\n// declare themselves as anonymous modules, and avoid setting a global if an\n// AMD loader is present. jQuery is a special case. For more information, see\n// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\nif ( typeof define === \"function\" && define.amd ) {\n\tdefine( \"jquery\", [], function() {\n\t\treturn jQuery;\n\t} );\n}\n\n\n\n\nvar\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$;\n\njQuery.noConflict = function( deep ) {\n\tif ( window.$ === jQuery ) {\n\t\twindow.$ = _$;\n\t}\n\n\tif ( deep && window.jQuery === jQuery ) {\n\t\twindow.jQuery = _jQuery;\n\t}\n\n\treturn jQuery;\n};\n\n// Expose jQuery and $ identifiers, even in AMD\n// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)\n// and CommonJS for browser emulators (#13566)\nif ( !noGlobal ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\n\n\n\nreturn jQuery;\n} );\n"
  },
  {
    "path": "public/profile/css/_about.css",
    "content": "\n/*# sourceMappingURL=_about.css.map */"
  },
  {
    "path": "public/profile/css/_courses.css",
    "content": "\n/*# sourceMappingURL=_courses.css.map */"
  },
  {
    "path": "public/profile/css/_feature.css",
    "content": "\n/*# sourceMappingURL=_feature.css.map */"
  },
  {
    "path": "public/profile/css/_gallery.css",
    "content": "\n/*# sourceMappingURL=_gallery.css.map */"
  },
  {
    "path": "public/profile/css/_instagram.css",
    "content": "\n/*# sourceMappingURL=_instagram.css.map */"
  },
  {
    "path": "public/profile/css/_price.css",
    "content": "\n/*# sourceMappingURL=_price.css.map */"
  },
  {
    "path": "public/profile/css/_service.css",
    "content": "\n/*# sourceMappingURL=_service.css.map */"
  },
  {
    "path": "public/profile/css/_testimonials.css",
    "content": "\n/*# sourceMappingURL=_testimonials.css.map */"
  },
  {
    "path": "public/profile/css/bootstrap.css",
    "content": "/*!\n * Bootstrap v4.1.3 (https://getbootstrap.com/)\n * Copyright 2011-2018 The Bootstrap Authors\n * Copyright 2011-2018 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\n:root {\n    --blue: #007bff;\n    --indigo: #6610f2;\n    --purple: #6f42c1;\n    --pink: #e83e8c;\n    --red: #dc3545;\n    --orange: #fd7e14;\n    --yellow: #ffc107;\n    --green: #28a745;\n    --teal: #20c997;\n    --cyan: #17a2b8;\n    --white: #fff;\n    --gray: #6c757d;\n    --gray-dark: #343a40;\n    --primary: #007bff;\n    --secondary: #6c757d;\n    --success: #28a745;\n    --info: #17a2b8;\n    --warning: #ffc107;\n    --danger: #dc3545;\n    --light: #f8f9fa;\n    --dark: #343a40;\n    --breakpoint-xs: 0;\n    --breakpoint-sm: 576px;\n    --breakpoint-md: 768px;\n    --breakpoint-lg: 992px;\n    --breakpoint-xl: 1200px;\n    --font-family-sans-serif: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n    --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace\n}\n\n*,\n::after,\n::before {\n    box-sizing: border-box\n}\n\nhtml {\n    font-family: sans-serif;\n    line-height: 1.15;\n    -webkit-text-size-adjust: 100%;\n    -ms-text-size-adjust: 100%;\n    -ms-overflow-style: scrollbar;\n    -webkit-tap-highlight-color: transparent\n}\n\n@-ms-viewport {\n    width: device-width\n}\n\narticle,\naside,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nnav,\nsection {\n    display: block\n}\n\nbody {\n    margin: 0;\n    font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n    font-size: 1rem;\n    font-weight: 400;\n    line-height: 1.5;\n    color: #212529;\n    text-align: left;\n    background-color: #fff\n}\n\n[tabindex=\"-1\"]:focus {\n    outline: 0 !important\n}\n\nhr {\n    box-sizing: content-box;\n    height: 0;\n    overflow: visible\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n    margin-top: 0;\n    margin-bottom: .5rem\n}\n\np {\n    margin-top: 0;\n    margin-bottom: 1rem\n}\n\nabbr[data-original-title],\nabbr[title] {\n    text-decoration: underline;\n    -webkit-text-decoration: underline dotted;\n    text-decoration: underline dotted;\n    cursor: help;\n    border-bottom: 0\n}\n\naddress {\n    margin-bottom: 1rem;\n    font-style: normal;\n    line-height: inherit\n}\n\ndl,\nol,\nul {\n    margin-top: 0;\n    margin-bottom: 1rem\n}\n\nol ol,\nol ul,\nul ol,\nul ul {\n    margin-bottom: 0\n}\n\ndt {\n    font-weight: 700\n}\n\ndd {\n    margin-bottom: .5rem;\n    margin-left: 0\n}\n\nblockquote {\n    margin: 0 0 1rem\n}\n\ndfn {\n    font-style: italic\n}\n\nb,\nstrong {\n    font-weight: bolder\n}\n\nsmall {\n    font-size: 80%\n}\n\nsub,\nsup {\n    position: relative;\n    font-size: 75%;\n    line-height: 0;\n    vertical-align: baseline\n}\n\nsub {\n    bottom: -.25em\n}\n\nsup {\n    top: -.5em\n}\n\na {\n    color: #007bff;\n    text-decoration: none;\n    background-color: transparent;\n    -webkit-text-decoration-skip: objects\n}\n\na:hover {\n    color: #0056b3;\n    text-decoration: underline\n}\n\na:not([href]):not([tabindex]) {\n    color: inherit;\n    text-decoration: none\n}\n\na:not([href]):not([tabindex]):focus,\na:not([href]):not([tabindex]):hover {\n    color: inherit;\n    text-decoration: none\n}\n\na:not([href]):not([tabindex]):focus {\n    outline: 0\n}\n\ncode,\nkbd,\npre,\nsamp {\n    font-family: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n    font-size: 1em\n}\n\npre {\n    margin-top: 0;\n    margin-bottom: 1rem;\n    overflow: auto;\n    -ms-overflow-style: scrollbar\n}\n\nfigure {\n    margin: 0 0 1rem\n}\n\nimg {\n    vertical-align: middle;\n    border-style: none\n}\n\nsvg {\n    overflow: hidden;\n    vertical-align: middle\n}\n\ntable {\n    border-collapse: collapse\n}\n\ncaption {\n    padding-top: .75rem;\n    padding-bottom: .75rem;\n    color: #6c757d;\n    text-align: left;\n    caption-side: bottom\n}\n\nth {\n    text-align: inherit\n}\n\nlabel {\n    display: inline-block;\n    margin-bottom: .5rem\n}\n\nbutton {\n    border-radius: 0\n}\n\nbutton:focus {\n    outline: 1px dotted;\n    outline: 5px auto -webkit-focus-ring-color\n}\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n    margin: 0;\n    font-family: inherit;\n    font-size: inherit;\n    line-height: inherit\n}\n\nbutton,\ninput {\n    overflow: visible\n}\n\nbutton,\nselect {\n    text-transform: none\n}\n\n[type=reset],\n[type=submit],\nbutton,\nhtml [type=button] {\n    -webkit-appearance: button\n}\n\n[type=button]::-moz-focus-inner,\n[type=reset]::-moz-focus-inner,\n[type=submit]::-moz-focus-inner,\nbutton::-moz-focus-inner {\n    padding: 0;\n    border-style: none\n}\n\ninput[type=checkbox],\ninput[type=radio] {\n    box-sizing: border-box;\n    padding: 0\n}\n\ninput[type=date],\ninput[type=datetime-local],\ninput[type=month],\ninput[type=time] {\n    -webkit-appearance: listbox\n}\n\ntextarea {\n    overflow: auto;\n    resize: vertical\n}\n\nfieldset {\n    min-width: 0;\n    padding: 0;\n    margin: 0;\n    border: 0\n}\n\nlegend {\n    display: block;\n    width: 100%;\n    max-width: 100%;\n    padding: 0;\n    margin-bottom: .5rem;\n    font-size: 1.5rem;\n    line-height: inherit;\n    color: inherit;\n    white-space: normal\n}\n\nprogress {\n    vertical-align: baseline\n}\n\n[type=number]::-webkit-inner-spin-button,\n[type=number]::-webkit-outer-spin-button {\n    height: auto\n}\n\n[type=search] {\n    outline-offset: -2px;\n    -webkit-appearance: none\n}\n\n[type=search]::-webkit-search-cancel-button,\n[type=search]::-webkit-search-decoration {\n    -webkit-appearance: none\n}\n\n::-webkit-file-upload-button {\n    font: inherit;\n    -webkit-appearance: button\n}\n\noutput {\n    display: inline-block\n}\n\nsummary {\n    display: list-item;\n    cursor: pointer\n}\n\ntemplate {\n    display: none\n}\n\n[hidden] {\n    display: none !important\n}\n\n.h1,\n.h2,\n.h3,\n.h4,\n.h5,\n.h6,\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n    margin-bottom: .5rem;\n    font-family: inherit;\n    font-weight: 500;\n    line-height: 1.2;\n    color: inherit\n}\n\n.h1,\nh1 {\n    font-size: 2.5rem\n}\n\n.h2,\nh2 {\n    font-size: 2rem\n}\n\n.h3,\nh3 {\n    font-size: 1.75rem\n}\n\n.h4,\nh4 {\n    font-size: 1.5rem\n}\n\n.h5,\nh5 {\n    font-size: 1.25rem\n}\n\n.h6,\nh6 {\n    font-size: 1rem\n}\n\n.lead {\n    font-size: 1.25rem;\n    font-weight: 300\n}\n\n.display-1 {\n    font-size: 6rem;\n    font-weight: 300;\n    line-height: 1.2\n}\n\n.display-2 {\n    font-size: 5.5rem;\n    font-weight: 300;\n    line-height: 1.2\n}\n\n.display-3 {\n    font-size: 4.5rem;\n    font-weight: 300;\n    line-height: 1.2\n}\n\n.display-4 {\n    font-size: 3.5rem;\n    font-weight: 300;\n    line-height: 1.2\n}\n\nhr {\n    margin-top: 1rem;\n    margin-bottom: 1rem;\n    border: 0;\n    border-top: 1px solid rgba(0, 0, 0, .1)\n}\n\n.small,\nsmall {\n    font-size: 80%;\n    font-weight: 400\n}\n\n.mark,\nmark {\n    padding: .2em;\n    background-color: #fcf8e3\n}\n\n.list-unstyled {\n    padding-left: 0;\n    list-style: none\n}\n\n.list-inline {\n    padding-left: 0;\n    list-style: none\n}\n\n.list-inline-item {\n    display: inline-block\n}\n\n.list-inline-item:not(:last-child) {\n    margin-right: .5rem\n}\n\n.initialism {\n    font-size: 90%;\n    text-transform: uppercase\n}\n\n.blockquote {\n    margin-bottom: 1rem;\n    font-size: 1.25rem\n}\n\n.blockquote-footer {\n    display: block;\n    font-size: 80%;\n    color: #6c757d\n}\n\n.blockquote-footer::before {\n    content: \"\\2014 \\00A0\"\n}\n\n.img-fluid {\n    max-width: 100%;\n    height: auto\n}\n\n.img-thumbnail {\n    padding: .25rem;\n    background-color: #fff;\n    border: 1px solid #dee2e6;\n    border-radius: .25rem;\n    max-width: 100%;\n    height: auto\n}\n\n.figure {\n    display: inline-block\n}\n\n.figure-img {\n    margin-bottom: .5rem;\n    line-height: 1\n}\n\n.figure-caption {\n    font-size: 90%;\n    color: #6c757d\n}\n\ncode {\n    font-size: 87.5%;\n    color: #e83e8c;\n    word-break: break-word\n}\n\na>code {\n    color: inherit\n}\n\nkbd {\n    padding: .2rem .4rem;\n    font-size: 87.5%;\n    color: #fff;\n    background-color: #212529;\n    border-radius: .2rem\n}\n\nkbd kbd {\n    padding: 0;\n    font-size: 100%;\n    font-weight: 700\n}\n\npre {\n    display: block;\n    font-size: 87.5%;\n    color: #212529\n}\n\npre code {\n    font-size: inherit;\n    color: inherit;\n    word-break: normal\n}\n\n.pre-scrollable {\n    max-height: 340px;\n    overflow-y: scroll\n}\n\n.container {\n    width: 100%;\n    padding-right: 15px;\n    padding-left: 15px;\n    margin-right: auto;\n    margin-left: auto\n}\n\n@media (min-width:576px) {\n    .container {\n        max-width: 540px\n    }\n}\n\n@media (min-width:768px) {\n    .container {\n        max-width: 720px\n    }\n}\n\n@media (min-width:992px) {\n    .container {\n        max-width: 960px\n    }\n}\n\n@media (min-width:1200px) {\n    .container {\n        max-width: 1140px\n    }\n}\n\n.container-fluid {\n    width: 100%;\n    padding-right: 15px;\n    padding-left: 15px;\n    margin-right: auto;\n    margin-left: auto\n}\n\n.row {\n    display: -ms-flexbox;\n    display: flex;\n    -ms-flex-wrap: wrap;\n    flex-wrap: wrap;\n    margin-right: -15px;\n    margin-left: -15px\n}\n\n.no-gutters {\n    margin-right: 0;\n    margin-left: 0\n}\n\n.no-gutters>.col,\n.no-gutters>[class*=col-] {\n    padding-right: 0;\n    padding-left: 0\n}\n\n.col,\n.col-1,\n.col-10,\n.col-11,\n.col-12,\n.col-2,\n.col-3,\n.col-4,\n.col-5,\n.col-6,\n.col-7,\n.col-8,\n.col-9,\n.col-auto,\n.col-lg,\n.col-lg-1,\n.col-lg-10,\n.col-lg-11,\n.col-lg-12,\n.col-lg-2,\n.col-lg-3,\n.col-lg-4,\n.col-lg-5,\n.col-lg-6,\n.col-lg-7,\n.col-lg-8,\n.col-lg-9,\n.col-lg-auto,\n.col-md,\n.col-md-1,\n.col-md-10,\n.col-md-11,\n.col-md-12,\n.col-md-2,\n.col-md-3,\n.col-md-4,\n.col-md-5,\n.col-md-6,\n.col-md-7,\n.col-md-8,\n.col-md-9,\n.col-md-auto,\n.col-sm,\n.col-sm-1,\n.col-sm-10,\n.col-sm-11,\n.col-sm-12,\n.col-sm-2,\n.col-sm-3,\n.col-sm-4,\n.col-sm-5,\n.col-sm-6,\n.col-sm-7,\n.col-sm-8,\n.col-sm-9,\n.col-sm-auto,\n.col-xl,\n.col-xl-1,\n.col-xl-10,\n.col-xl-11,\n.col-xl-12,\n.col-xl-2,\n.col-xl-3,\n.col-xl-4,\n.col-xl-5,\n.col-xl-6,\n.col-xl-7,\n.col-xl-8,\n.col-xl-9,\n.col-xl-auto {\n    position: relative;\n    width: 100%;\n    min-height: 1px;\n    padding-right: 15px;\n    padding-left: 15px\n}\n\n.col {\n    -ms-flex-preferred-size: 0;\n    flex-basis: 0;\n    -ms-flex-positive: 1;\n    flex-grow: 1;\n    max-width: 100%\n}\n\n.col-auto {\n    -ms-flex: 0 0 auto;\n    flex: 0 0 auto;\n    width: auto;\n    max-width: none\n}\n\n.col-1 {\n    -ms-flex: 0 0 8.333333%;\n    flex: 0 0 8.333333%;\n    max-width: 8.333333%\n}\n\n.col-2 {\n    -ms-flex: 0 0 16.666667%;\n    flex: 0 0 16.666667%;\n    max-width: 16.666667%\n}\n\n.col-3 {\n    -ms-flex: 0 0 25%;\n    flex: 0 0 25%;\n    max-width: 25%\n}\n\n.col-4 {\n    -ms-flex: 0 0 33.333333%;\n    flex: 0 0 33.333333%;\n    max-width: 33.333333%\n}\n\n.col-5 {\n    -ms-flex: 0 0 41.666667%;\n    flex: 0 0 41.666667%;\n    max-width: 41.666667%\n}\n\n.col-6 {\n    -ms-flex: 0 0 50%;\n    flex: 0 0 50%;\n    max-width: 50%\n}\n\n.col-7 {\n    -ms-flex: 0 0 58.333333%;\n    flex: 0 0 58.333333%;\n    max-width: 58.333333%\n}\n\n.col-8 {\n    -ms-flex: 0 0 66.666667%;\n    flex: 0 0 66.666667%;\n    max-width: 66.666667%\n}\n\n.col-9 {\n    -ms-flex: 0 0 75%;\n    flex: 0 0 75%;\n    max-width: 75%\n}\n\n.col-10 {\n    -ms-flex: 0 0 83.333333%;\n    flex: 0 0 83.333333%;\n    max-width: 83.333333%\n}\n\n.col-11 {\n    -ms-flex: 0 0 91.666667%;\n    flex: 0 0 91.666667%;\n    max-width: 91.666667%\n}\n\n.col-12 {\n    -ms-flex: 0 0 100%;\n    flex: 0 0 100%;\n    max-width: 100%\n}\n\n.order-first {\n    -ms-flex-order: -1;\n    order: -1\n}\n\n.order-last {\n    -ms-flex-order: 13;\n    order: 13\n}\n\n.order-0 {\n    -ms-flex-order: 0;\n    order: 0\n}\n\n.order-1 {\n    -ms-flex-order: 1;\n    order: 1\n}\n\n.order-2 {\n    -ms-flex-order: 2;\n    order: 2\n}\n\n.order-3 {\n    -ms-flex-order: 3;\n    order: 3\n}\n\n.order-4 {\n    -ms-flex-order: 4;\n    order: 4\n}\n\n.order-5 {\n    -ms-flex-order: 5;\n    order: 5\n}\n\n.order-6 {\n    -ms-flex-order: 6;\n    order: 6\n}\n\n.order-7 {\n    -ms-flex-order: 7;\n    order: 7\n}\n\n.order-8 {\n    -ms-flex-order: 8;\n    order: 8\n}\n\n.order-9 {\n    -ms-flex-order: 9;\n    order: 9\n}\n\n.order-10 {\n    -ms-flex-order: 10;\n    order: 10\n}\n\n.order-11 {\n    -ms-flex-order: 11;\n    order: 11\n}\n\n.order-12 {\n    -ms-flex-order: 12;\n    order: 12\n}\n\n.offset-1 {\n    margin-left: 8.333333%\n}\n\n.offset-2 {\n    margin-left: 16.666667%\n}\n\n.offset-3 {\n    margin-left: 25%\n}\n\n.offset-4 {\n    margin-left: 33.333333%\n}\n\n.offset-5 {\n    margin-left: 41.666667%\n}\n\n.offset-6 {\n    margin-left: 50%\n}\n\n.offset-7 {\n    margin-left: 58.333333%\n}\n\n.offset-8 {\n    margin-left: 66.666667%\n}\n\n.offset-9 {\n    margin-left: 75%\n}\n\n.offset-10 {\n    margin-left: 83.333333%\n}\n\n.offset-11 {\n    margin-left: 91.666667%\n}\n\n@media (min-width:576px) {\n    .col-sm {\n        -ms-flex-preferred-size: 0;\n        flex-basis: 0;\n        -ms-flex-positive: 1;\n        flex-grow: 1;\n        max-width: 100%\n    }\n    .col-sm-auto {\n        -ms-flex: 0 0 auto;\n        flex: 0 0 auto;\n        width: auto;\n        max-width: none\n    }\n    .col-sm-1 {\n        -ms-flex: 0 0 8.333333%;\n        flex: 0 0 8.333333%;\n        max-width: 8.333333%\n    }\n    .col-sm-2 {\n        -ms-flex: 0 0 16.666667%;\n        flex: 0 0 16.666667%;\n        max-width: 16.666667%\n    }\n    .col-sm-3 {\n        -ms-flex: 0 0 25%;\n        flex: 0 0 25%;\n        max-width: 25%\n    }\n    .col-sm-4 {\n        -ms-flex: 0 0 33.333333%;\n        flex: 0 0 33.333333%;\n        max-width: 33.333333%\n    }\n    .col-sm-5 {\n        -ms-flex: 0 0 41.666667%;\n        flex: 0 0 41.666667%;\n        max-width: 41.666667%\n    }\n    .col-sm-6 {\n        -ms-flex: 0 0 50%;\n        flex: 0 0 50%;\n        max-width: 50%\n    }\n    .col-sm-7 {\n        -ms-flex: 0 0 58.333333%;\n        flex: 0 0 58.333333%;\n        max-width: 58.333333%\n    }\n    .col-sm-8 {\n        -ms-flex: 0 0 66.666667%;\n        flex: 0 0 66.666667%;\n        max-width: 66.666667%\n    }\n    .col-sm-9 {\n        -ms-flex: 0 0 75%;\n        flex: 0 0 75%;\n        max-width: 75%\n    }\n    .col-sm-10 {\n        -ms-flex: 0 0 83.333333%;\n        flex: 0 0 83.333333%;\n        max-width: 83.333333%\n    }\n    .col-sm-11 {\n        -ms-flex: 0 0 91.666667%;\n        flex: 0 0 91.666667%;\n        max-width: 91.666667%\n    }\n    .col-sm-12 {\n        -ms-flex: 0 0 100%;\n        flex: 0 0 100%;\n        max-width: 100%\n    }\n    .order-sm-first {\n        -ms-flex-order: -1;\n        order: -1\n    }\n    .order-sm-last {\n        -ms-flex-order: 13;\n        order: 13\n    }\n    .order-sm-0 {\n        -ms-flex-order: 0;\n        order: 0\n    }\n    .order-sm-1 {\n        -ms-flex-order: 1;\n        order: 1\n    }\n    .order-sm-2 {\n        -ms-flex-order: 2;\n        order: 2\n    }\n    .order-sm-3 {\n        -ms-flex-order: 3;\n        order: 3\n    }\n    .order-sm-4 {\n        -ms-flex-order: 4;\n        order: 4\n    }\n    .order-sm-5 {\n        -ms-flex-order: 5;\n        order: 5\n    }\n    .order-sm-6 {\n        -ms-flex-order: 6;\n        order: 6\n    }\n    .order-sm-7 {\n        -ms-flex-order: 7;\n        order: 7\n    }\n    .order-sm-8 {\n        -ms-flex-order: 8;\n        order: 8\n    }\n    .order-sm-9 {\n        -ms-flex-order: 9;\n        order: 9\n    }\n    .order-sm-10 {\n        -ms-flex-order: 10;\n        order: 10\n    }\n    .order-sm-11 {\n        -ms-flex-order: 11;\n        order: 11\n    }\n    .order-sm-12 {\n        -ms-flex-order: 12;\n        order: 12\n    }\n    .offset-sm-0 {\n        margin-left: 0\n    }\n    .offset-sm-1 {\n        margin-left: 8.333333%\n    }\n    .offset-sm-2 {\n        margin-left: 16.666667%\n    }\n    .offset-sm-3 {\n        margin-left: 25%\n    }\n    .offset-sm-4 {\n        margin-left: 33.333333%\n    }\n    .offset-sm-5 {\n        margin-left: 41.666667%\n    }\n    .offset-sm-6 {\n        margin-left: 50%\n    }\n    .offset-sm-7 {\n        margin-left: 58.333333%\n    }\n    .offset-sm-8 {\n        margin-left: 66.666667%\n    }\n    .offset-sm-9 {\n        margin-left: 75%\n    }\n    .offset-sm-10 {\n        margin-left: 83.333333%\n    }\n    .offset-sm-11 {\n        margin-left: 91.666667%\n    }\n}\n\n@media (min-width:768px) {\n    .col-md {\n        -ms-flex-preferred-size: 0;\n        flex-basis: 0;\n        -ms-flex-positive: 1;\n        flex-grow: 1;\n        max-width: 100%\n    }\n    .col-md-auto {\n        -ms-flex: 0 0 auto;\n        flex: 0 0 auto;\n        width: auto;\n        max-width: none\n    }\n    .col-md-1 {\n        -ms-flex: 0 0 8.333333%;\n        flex: 0 0 8.333333%;\n        max-width: 8.333333%\n    }\n    .col-md-2 {\n        -ms-flex: 0 0 16.666667%;\n        flex: 0 0 16.666667%;\n        max-width: 16.666667%\n    }\n    .col-md-3 {\n        -ms-flex: 0 0 25%;\n        flex: 0 0 25%;\n        max-width: 25%\n    }\n    .col-md-4 {\n        -ms-flex: 0 0 33.333333%;\n        flex: 0 0 33.333333%;\n        max-width: 33.333333%\n    }\n    .col-md-5 {\n        -ms-flex: 0 0 41.666667%;\n        flex: 0 0 41.666667%;\n        max-width: 41.666667%\n    }\n    .col-md-6 {\n        -ms-flex: 0 0 50%;\n        flex: 0 0 50%;\n        max-width: 50%\n    }\n    .col-md-7 {\n        -ms-flex: 0 0 58.333333%;\n        flex: 0 0 58.333333%;\n        max-width: 58.333333%\n    }\n    .col-md-8 {\n        -ms-flex: 0 0 66.666667%;\n        flex: 0 0 66.666667%;\n        max-width: 66.666667%\n    }\n    .col-md-9 {\n        -ms-flex: 0 0 75%;\n        flex: 0 0 75%;\n        max-width: 75%\n    }\n    .col-md-10 {\n        -ms-flex: 0 0 83.333333%;\n        flex: 0 0 83.333333%;\n        max-width: 83.333333%\n    }\n    .col-md-11 {\n        -ms-flex: 0 0 91.666667%;\n        flex: 0 0 91.666667%;\n        max-width: 91.666667%\n    }\n    .col-md-12 {\n        -ms-flex: 0 0 100%;\n        flex: 0 0 100%;\n        max-width: 100%\n    }\n    .order-md-first {\n        -ms-flex-order: -1;\n        order: -1\n    }\n    .order-md-last {\n        -ms-flex-order: 13;\n        order: 13\n    }\n    .order-md-0 {\n        -ms-flex-order: 0;\n        order: 0\n    }\n    .order-md-1 {\n        -ms-flex-order: 1;\n        order: 1\n    }\n    .order-md-2 {\n        -ms-flex-order: 2;\n        order: 2\n    }\n    .order-md-3 {\n        -ms-flex-order: 3;\n        order: 3\n    }\n    .order-md-4 {\n        -ms-flex-order: 4;\n        order: 4\n    }\n    .order-md-5 {\n        -ms-flex-order: 5;\n        order: 5\n    }\n    .order-md-6 {\n        -ms-flex-order: 6;\n        order: 6\n    }\n    .order-md-7 {\n        -ms-flex-order: 7;\n        order: 7\n    }\n    .order-md-8 {\n        -ms-flex-order: 8;\n        order: 8\n    }\n    .order-md-9 {\n        -ms-flex-order: 9;\n        order: 9\n    }\n    .order-md-10 {\n        -ms-flex-order: 10;\n        order: 10\n    }\n    .order-md-11 {\n        -ms-flex-order: 11;\n        order: 11\n    }\n    .order-md-12 {\n        -ms-flex-order: 12;\n        order: 12\n    }\n    .offset-md-0 {\n        margin-left: 0\n    }\n    .offset-md-1 {\n        margin-left: 8.333333%\n    }\n    .offset-md-2 {\n        margin-left: 16.666667%\n    }\n    .offset-md-3 {\n        margin-left: 25%\n    }\n    .offset-md-4 {\n        margin-left: 33.333333%\n    }\n    .offset-md-5 {\n        margin-left: 41.666667%\n    }\n    .offset-md-6 {\n        margin-left: 50%\n    }\n    .offset-md-7 {\n        margin-left: 58.333333%\n    }\n    .offset-md-8 {\n        margin-left: 66.666667%\n    }\n    .offset-md-9 {\n        margin-left: 75%\n    }\n    .offset-md-10 {\n        margin-left: 83.333333%\n    }\n    .offset-md-11 {\n        margin-left: 91.666667%\n    }\n}\n\n@media (min-width:992px) {\n    .col-lg {\n        -ms-flex-preferred-size: 0;\n        flex-basis: 0;\n        -ms-flex-positive: 1;\n        flex-grow: 1;\n        max-width: 100%\n    }\n    .col-lg-auto {\n        -ms-flex: 0 0 auto;\n        flex: 0 0 auto;\n        width: auto;\n        max-width: none\n    }\n    .col-lg-1 {\n        -ms-flex: 0 0 8.333333%;\n        flex: 0 0 8.333333%;\n        max-width: 8.333333%\n    }\n    .col-lg-2 {\n        -ms-flex: 0 0 16.666667%;\n        flex: 0 0 16.666667%;\n        max-width: 16.666667%\n    }\n    .col-lg-3 {\n        -ms-flex: 0 0 25%;\n        flex: 0 0 25%;\n        max-width: 25%\n    }\n    .col-lg-4 {\n        -ms-flex: 0 0 33.333333%;\n        flex: 0 0 33.333333%;\n        max-width: 33.333333%\n    }\n    .col-lg-5 {\n        -ms-flex: 0 0 41.666667%;\n        flex: 0 0 41.666667%;\n        max-width: 41.666667%\n    }\n    .col-lg-6 {\n        -ms-flex: 0 0 50%;\n        flex: 0 0 50%;\n        max-width: 50%\n    }\n    .col-lg-7 {\n        -ms-flex: 0 0 58.333333%;\n        flex: 0 0 58.333333%;\n        max-width: 58.333333%\n    }\n    .col-lg-8 {\n        -ms-flex: 0 0 66.666667%;\n        flex: 0 0 66.666667%;\n        max-width: 66.666667%\n    }\n    .col-lg-9 {\n        -ms-flex: 0 0 75%;\n        flex: 0 0 75%;\n        max-width: 75%\n    }\n    .col-lg-10 {\n        -ms-flex: 0 0 83.333333%;\n        flex: 0 0 83.333333%;\n        max-width: 83.333333%\n    }\n    .col-lg-11 {\n        -ms-flex: 0 0 91.666667%;\n        flex: 0 0 91.666667%;\n        max-width: 91.666667%\n    }\n    .col-lg-12 {\n        -ms-flex: 0 0 100%;\n        flex: 0 0 100%;\n        max-width: 100%\n    }\n    .order-lg-first {\n        -ms-flex-order: -1;\n        order: -1\n    }\n    .order-lg-last {\n        -ms-flex-order: 13;\n        order: 13\n    }\n    .order-lg-0 {\n        -ms-flex-order: 0;\n        order: 0\n    }\n    .order-lg-1 {\n        -ms-flex-order: 1;\n        order: 1\n    }\n    .order-lg-2 {\n        -ms-flex-order: 2;\n        order: 2\n    }\n    .order-lg-3 {\n        -ms-flex-order: 3;\n        order: 3\n    }\n    .order-lg-4 {\n        -ms-flex-order: 4;\n        order: 4\n    }\n    .order-lg-5 {\n        -ms-flex-order: 5;\n        order: 5\n    }\n    .order-lg-6 {\n        -ms-flex-order: 6;\n        order: 6\n    }\n    .order-lg-7 {\n        -ms-flex-order: 7;\n        order: 7\n    }\n    .order-lg-8 {\n        -ms-flex-order: 8;\n        order: 8\n    }\n    .order-lg-9 {\n        -ms-flex-order: 9;\n        order: 9\n    }\n    .order-lg-10 {\n        -ms-flex-order: 10;\n        order: 10\n    }\n    .order-lg-11 {\n        -ms-flex-order: 11;\n        order: 11\n    }\n    .order-lg-12 {\n        -ms-flex-order: 12;\n        order: 12\n    }\n    .offset-lg-0 {\n        margin-left: 0\n    }\n    .offset-lg-1 {\n        margin-left: 8.333333%\n    }\n    .offset-lg-2 {\n        margin-left: 16.666667%\n    }\n    .offset-lg-3 {\n        margin-left: 25%\n    }\n    .offset-lg-4 {\n        margin-left: 33.333333%\n    }\n    .offset-lg-5 {\n        margin-left: 41.666667%\n    }\n    .offset-lg-6 {\n        margin-left: 50%\n    }\n    .offset-lg-7 {\n        margin-left: 58.333333%\n    }\n    .offset-lg-8 {\n        margin-left: 66.666667%\n    }\n    .offset-lg-9 {\n        margin-left: 75%\n    }\n    .offset-lg-10 {\n        margin-left: 83.333333%\n    }\n    .offset-lg-11 {\n        margin-left: 91.666667%\n    }\n}\n\n@media (min-width:1200px) {\n    .col-xl {\n        -ms-flex-preferred-size: 0;\n        flex-basis: 0;\n        -ms-flex-positive: 1;\n        flex-grow: 1;\n        max-width: 100%\n    }\n    .col-xl-auto {\n        -ms-flex: 0 0 auto;\n        flex: 0 0 auto;\n        width: auto;\n        max-width: none\n    }\n    .col-xl-1 {\n        -ms-flex: 0 0 8.333333%;\n        flex: 0 0 8.333333%;\n        max-width: 8.333333%\n    }\n    .col-xl-2 {\n        -ms-flex: 0 0 16.666667%;\n        flex: 0 0 16.666667%;\n        max-width: 16.666667%\n    }\n    .col-xl-3 {\n        -ms-flex: 0 0 25%;\n        flex: 0 0 25%;\n        max-width: 25%\n    }\n    .col-xl-4 {\n        -ms-flex: 0 0 33.333333%;\n        flex: 0 0 33.333333%;\n        max-width: 33.333333%\n    }\n    .col-xl-5 {\n        -ms-flex: 0 0 41.666667%;\n        flex: 0 0 41.666667%;\n        max-width: 41.666667%\n    }\n    .col-xl-6 {\n        -ms-flex: 0 0 50%;\n        flex: 0 0 50%;\n        max-width: 50%\n    }\n    .col-xl-7 {\n        -ms-flex: 0 0 58.333333%;\n        flex: 0 0 58.333333%;\n        max-width: 58.333333%\n    }\n    .col-xl-8 {\n        -ms-flex: 0 0 66.666667%;\n        flex: 0 0 66.666667%;\n        max-width: 66.666667%\n    }\n    .col-xl-9 {\n        -ms-flex: 0 0 75%;\n        flex: 0 0 75%;\n        max-width: 75%\n    }\n    .col-xl-10 {\n        -ms-flex: 0 0 83.333333%;\n        flex: 0 0 83.333333%;\n        max-width: 83.333333%\n    }\n    .col-xl-11 {\n        -ms-flex: 0 0 91.666667%;\n        flex: 0 0 91.666667%;\n        max-width: 91.666667%\n    }\n    .col-xl-12 {\n        -ms-flex: 0 0 100%;\n        flex: 0 0 100%;\n        max-width: 100%\n    }\n    .order-xl-first {\n        -ms-flex-order: -1;\n        order: -1\n    }\n    .order-xl-last {\n        -ms-flex-order: 13;\n        order: 13\n    }\n    .order-xl-0 {\n        -ms-flex-order: 0;\n        order: 0\n    }\n    .order-xl-1 {\n        -ms-flex-order: 1;\n        order: 1\n    }\n    .order-xl-2 {\n        -ms-flex-order: 2;\n        order: 2\n    }\n    .order-xl-3 {\n        -ms-flex-order: 3;\n        order: 3\n    }\n    .order-xl-4 {\n        -ms-flex-order: 4;\n        order: 4\n    }\n    .order-xl-5 {\n        -ms-flex-order: 5;\n        order: 5\n    }\n    .order-xl-6 {\n        -ms-flex-order: 6;\n        order: 6\n    }\n    .order-xl-7 {\n        -ms-flex-order: 7;\n        order: 7\n    }\n    .order-xl-8 {\n        -ms-flex-order: 8;\n        order: 8\n    }\n    .order-xl-9 {\n        -ms-flex-order: 9;\n        order: 9\n    }\n    .order-xl-10 {\n        -ms-flex-order: 10;\n        order: 10\n    }\n    .order-xl-11 {\n        -ms-flex-order: 11;\n        order: 11\n    }\n    .order-xl-12 {\n        -ms-flex-order: 12;\n        order: 12\n    }\n    .offset-xl-0 {\n        margin-left: 0\n    }\n    .offset-xl-1 {\n        margin-left: 8.333333%\n    }\n    .offset-xl-2 {\n        margin-left: 16.666667%\n    }\n    .offset-xl-3 {\n        margin-left: 25%\n    }\n    .offset-xl-4 {\n        margin-left: 33.333333%\n    }\n    .offset-xl-5 {\n        margin-left: 41.666667%\n    }\n    .offset-xl-6 {\n        margin-left: 50%\n    }\n    .offset-xl-7 {\n        margin-left: 58.333333%\n    }\n    .offset-xl-8 {\n        margin-left: 66.666667%\n    }\n    .offset-xl-9 {\n        margin-left: 75%\n    }\n    .offset-xl-10 {\n        margin-left: 83.333333%\n    }\n    .offset-xl-11 {\n        margin-left: 91.666667%\n    }\n}\n\n.table {\n    width: 100%;\n    margin-bottom: 1rem;\n    background-color: transparent\n}\n\n.table td,\n.table th {\n    padding: .75rem;\n    vertical-align: top;\n    border-top: 1px solid #dee2e6\n}\n\n.table thead th {\n    vertical-align: bottom;\n    border-bottom: 2px solid #dee2e6\n}\n\n.table tbody+tbody {\n    border-top: 2px solid #dee2e6\n}\n\n.table .table {\n    background-color: #fff\n}\n\n.table-sm td,\n.table-sm th {\n    padding: .3rem\n}\n\n.table-bordered {\n    border: 1px solid #dee2e6\n}\n\n.table-bordered td,\n.table-bordered th {\n    border: 1px solid #dee2e6\n}\n\n.table-bordered thead td,\n.table-bordered thead th {\n    border-bottom-width: 2px\n}\n\n.table-borderless tbody+tbody,\n.table-borderless td,\n.table-borderless th,\n.table-borderless thead th {\n    border: 0\n}\n\n.table-striped tbody tr:nth-of-type(odd) {\n    background-color: rgba(0, 0, 0, .05)\n}\n\n.table-hover tbody tr:hover {\n    background-color: rgba(0, 0, 0, .075)\n}\n\n.table-primary,\n.table-primary>td,\n.table-primary>th {\n    background-color: #b8daff\n}\n\n.table-hover .table-primary:hover {\n    background-color: #9fcdff\n}\n\n.table-hover .table-primary:hover>td,\n.table-hover .table-primary:hover>th {\n    background-color: #9fcdff\n}\n\n.table-secondary,\n.table-secondary>td,\n.table-secondary>th {\n    background-color: #d6d8db\n}\n\n.table-hover .table-secondary:hover {\n    background-color: #c8cbcf\n}\n\n.table-hover .table-secondary:hover>td,\n.table-hover .table-secondary:hover>th {\n    background-color: #c8cbcf\n}\n\n.table-success,\n.table-success>td,\n.table-success>th {\n    background-color: #c3e6cb\n}\n\n.table-hover .table-success:hover {\n    background-color: #b1dfbb\n}\n\n.table-hover .table-success:hover>td,\n.table-hover .table-success:hover>th {\n    background-color: #b1dfbb\n}\n\n.table-info,\n.table-info>td,\n.table-info>th {\n    background-color: #bee5eb\n}\n\n.table-hover .table-info:hover {\n    background-color: #abdde5\n}\n\n.table-hover .table-info:hover>td,\n.table-hover .table-info:hover>th {\n    background-color: #abdde5\n}\n\n.table-warning,\n.table-warning>td,\n.table-warning>th {\n    background-color: #ffeeba\n}\n\n.table-hover .table-warning:hover {\n    background-color: #ffe8a1\n}\n\n.table-hover .table-warning:hover>td,\n.table-hover .table-warning:hover>th {\n    background-color: #ffe8a1\n}\n\n.table-danger,\n.table-danger>td,\n.table-danger>th {\n    background-color: #f5c6cb\n}\n\n.table-hover .table-danger:hover {\n    background-color: #f1b0b7\n}\n\n.table-hover .table-danger:hover>td,\n.table-hover .table-danger:hover>th {\n    background-color: #f1b0b7\n}\n\n.table-light,\n.table-light>td,\n.table-light>th {\n    background-color: #fdfdfe\n}\n\n.table-hover .table-light:hover {\n    background-color: #ececf6\n}\n\n.table-hover .table-light:hover>td,\n.table-hover .table-light:hover>th {\n    background-color: #ececf6\n}\n\n.table-dark,\n.table-dark>td,\n.table-dark>th {\n    background-color: #c6c8ca\n}\n\n.table-hover .table-dark:hover {\n    background-color: #b9bbbe\n}\n\n.table-hover .table-dark:hover>td,\n.table-hover .table-dark:hover>th {\n    background-color: #b9bbbe\n}\n\n.table-active,\n.table-active>td,\n.table-active>th {\n    background-color: rgba(0, 0, 0, .075)\n}\n\n.table-hover .table-active:hover {\n    background-color: rgba(0, 0, 0, .075)\n}\n\n.table-hover .table-active:hover>td,\n.table-hover .table-active:hover>th {\n    background-color: rgba(0, 0, 0, .075)\n}\n\n.table .thead-dark th {\n    color: #fff;\n    background-color: #212529;\n    border-color: #32383e\n}\n\n.table .thead-light th {\n    color: #495057;\n    background-color: #e9ecef;\n    border-color: #dee2e6\n}\n\n.table-dark {\n    color: #fff;\n    background-color: #212529\n}\n\n.table-dark td,\n.table-dark th,\n.table-dark thead th {\n    border-color: #32383e\n}\n\n.table-dark.table-bordered {\n    border: 0\n}\n\n.table-dark.table-striped tbody tr:nth-of-type(odd) {\n    background-color: rgba(255, 255, 255, .05)\n}\n\n.table-dark.table-hover tbody tr:hover {\n    background-color: rgba(255, 255, 255, .075)\n}\n\n@media (max-width:575.98px) {\n    .table-responsive-sm {\n        display: block;\n        width: 100%;\n        overflow-x: auto;\n        -webkit-overflow-scrolling: touch;\n        -ms-overflow-style: -ms-autohiding-scrollbar\n    }\n    .table-responsive-sm>.table-bordered {\n        border: 0\n    }\n}\n\n@media (max-width:767.98px) {\n    .table-responsive-md {\n        display: block;\n        width: 100%;\n        overflow-x: auto;\n        -webkit-overflow-scrolling: touch;\n        -ms-overflow-style: -ms-autohiding-scrollbar\n    }\n    .table-responsive-md>.table-bordered {\n        border: 0\n    }\n}\n\n@media (max-width:991.98px) {\n    .table-responsive-lg {\n        display: block;\n        width: 100%;\n        overflow-x: auto;\n        -webkit-overflow-scrolling: touch;\n        -ms-overflow-style: -ms-autohiding-scrollbar\n    }\n    .table-responsive-lg>.table-bordered {\n        border: 0\n    }\n}\n\n@media (max-width:1199.98px) {\n    .table-responsive-xl {\n        display: block;\n        width: 100%;\n        overflow-x: auto;\n        -webkit-overflow-scrolling: touch;\n        -ms-overflow-style: -ms-autohiding-scrollbar\n    }\n    .table-responsive-xl>.table-bordered {\n        border: 0\n    }\n}\n\n.table-responsive {\n    display: block;\n    width: 100%;\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n    -ms-overflow-style: -ms-autohiding-scrollbar\n}\n\n.table-responsive>.table-bordered {\n    border: 0\n}\n\n.form-control {\n    display: block;\n    width: 100%;\n    height: calc(2.25rem + 2px);\n    padding: .375rem .75rem;\n    font-size: 1rem;\n    line-height: 1.5;\n    color: #495057;\n    background-color: #fff;\n    background-clip: padding-box;\n    border: 1px solid #ced4da;\n    border-radius: .25rem;\n    transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out\n}\n\n@media screen and (prefers-reduced-motion:reduce) {\n    .form-control {\n        transition: none\n    }\n}\n\n.form-control::-ms-expand {\n    background-color: transparent;\n    border: 0\n}\n\n.form-control:focus {\n    color: #495057;\n    background-color: #fff;\n    border-color: #80bdff;\n    outline: 0;\n    box-shadow: 0 0 0 .2rem rgba(0, 123, 255, .25)\n}\n\n.form-control::-webkit-input-placeholder {\n    color: #6c757d;\n    opacity: 1\n}\n\n.form-control::-moz-placeholder {\n    color: #6c757d;\n    opacity: 1\n}\n\n.form-control:-ms-input-placeholder {\n    color: #6c757d;\n    opacity: 1\n}\n\n.form-control::-ms-input-placeholder {\n    color: #6c757d;\n    opacity: 1\n}\n\n.form-control::placeholder {\n    color: #6c757d;\n    opacity: 1\n}\n\n.form-control:disabled,\n.form-control[readonly] {\n    background-color: #e9ecef;\n    opacity: 1\n}\n\nselect.form-control:focus::-ms-value {\n    color: #495057;\n    background-color: #fff\n}\n\n.form-control-file,\n.form-control-range {\n    display: block;\n    width: 100%\n}\n\n.col-form-label {\n    padding-top: calc(.375rem + 1px);\n    padding-bottom: calc(.375rem + 1px);\n    margin-bottom: 0;\n    font-size: inherit;\n    line-height: 1.5\n}\n\n.col-form-label-lg {\n    padding-top: calc(.5rem + 1px);\n    padding-bottom: calc(.5rem + 1px);\n    font-size: 1.25rem;\n    line-height: 1.5\n}\n\n.col-form-label-sm {\n    padding-top: calc(.25rem + 1px);\n    padding-bottom: calc(.25rem + 1px);\n    font-size: .875rem;\n    line-height: 1.5\n}\n\n.form-control-plaintext {\n    display: block;\n    width: 100%;\n    padding-top: .375rem;\n    padding-bottom: .375rem;\n    margin-bottom: 0;\n    line-height: 1.5;\n    color: #212529;\n    background-color: transparent;\n    border: solid transparent;\n    border-width: 1px 0\n}\n\n.form-control-plaintext.form-control-lg,\n.form-control-plaintext.form-control-sm {\n    padding-right: 0;\n    padding-left: 0\n}\n\n.form-control-sm {\n    height: calc(1.8125rem + 2px);\n    padding: .25rem .5rem;\n    font-size: .875rem;\n    line-height: 1.5;\n    border-radius: .2rem\n}\n\n.form-control-lg {\n    height: calc(2.875rem + 2px);\n    padding: .5rem 1rem;\n    font-size: 1.25rem;\n    line-height: 1.5;\n    border-radius: .3rem\n}\n\nselect.form-control[multiple],\nselect.form-control[size] {\n    height: auto\n}\n\ntextarea.form-control {\n    height: auto\n}\n\n.form-group {\n    margin-bottom: 1rem\n}\n\n.form-text {\n    display: block;\n    margin-top: .25rem\n}\n\n.form-row {\n    display: -ms-flexbox;\n    display: flex;\n    -ms-flex-wrap: wrap;\n    flex-wrap: wrap;\n    margin-right: -5px;\n    margin-left: -5px\n}\n\n.form-row>.col,\n.form-row>[class*=col-] {\n    padding-right: 5px;\n    padding-left: 5px\n}\n\n.form-check {\n    position: relative;\n    display: block;\n    padding-left: 1.25rem\n}\n\n.form-check-input {\n    position: absolute;\n    margin-top: .3rem;\n    margin-left: -1.25rem\n}\n\n.form-check-input:disabled~.form-check-label {\n    color: #6c757d\n}\n\n.form-check-label {\n    margin-bottom: 0\n}\n\n.form-check-inline {\n    display: -ms-inline-flexbox;\n    display: inline-flex;\n    -ms-flex-align: center;\n    align-items: center;\n    padding-left: 0;\n    margin-right: .75rem\n}\n\n.form-check-inline .form-check-input {\n    position: static;\n    margin-top: 0;\n    margin-right: .3125rem;\n    margin-left: 0\n}\n\n.valid-feedback {\n    display: none;\n    width: 100%;\n    margin-top: .25rem;\n    font-size: 80%;\n    color: #28a745\n}\n\n.valid-tooltip {\n    position: absolute;\n    top: 100%;\n    z-index: 5;\n    display: none;\n    max-width: 100%;\n    padding: .25rem .5rem;\n    margin-top: .1rem;\n    font-size: .875rem;\n    line-height: 1.5;\n    color: #fff;\n    background-color: rgba(40, 167, 69, .9);\n    border-radius: .25rem\n}\n\n.custom-select.is-valid,\n.form-control.is-valid,\n.was-validated .custom-select:valid,\n.was-validated .form-control:valid {\n    border-color: #28a745\n}\n\n.custom-select.is-valid:focus,\n.form-control.is-valid:focus,\n.was-validated .custom-select:valid:focus,\n.was-validated .form-control:valid:focus {\n    border-color: #28a745;\n    box-shadow: 0 0 0 .2rem rgba(40, 167, 69, .25)\n}\n\n.custom-select.is-valid~.valid-feedback,\n.custom-select.is-valid~.valid-tooltip,\n.form-control.is-valid~.valid-feedback,\n.form-control.is-valid~.valid-tooltip,\n.was-validated .custom-select:valid~.valid-feedback,\n.was-validated .custom-select:valid~.valid-tooltip,\n.was-validated .form-control:valid~.valid-feedback,\n.was-validated .form-control:valid~.valid-tooltip {\n    display: block\n}\n\n.form-control-file.is-valid~.valid-feedback,\n.form-control-file.is-valid~.valid-tooltip,\n.was-validated .form-control-file:valid~.valid-feedback,\n.was-validated .form-control-file:valid~.valid-tooltip {\n    display: block\n}\n\n.form-check-input.is-valid~.form-check-label,\n.was-validated .form-check-input:valid~.form-check-label {\n    color: #28a745\n}\n\n.form-check-input.is-valid~.valid-feedback,\n.form-check-input.is-valid~.valid-tooltip,\n.was-validated .form-check-input:valid~.valid-feedback,\n.was-validated .form-check-input:valid~.valid-tooltip {\n    display: block\n}\n\n.custom-control-input.is-valid~.custom-control-label,\n.was-validated .custom-control-input:valid~.custom-control-label {\n    color: #28a745\n}\n\n.custom-control-input.is-valid~.custom-control-label::before,\n.was-validated .custom-control-input:valid~.custom-control-label::before {\n    background-color: #71dd8a\n}\n\n.custom-control-input.is-valid~.valid-feedback,\n.custom-control-input.is-valid~.valid-tooltip,\n.was-validated .custom-control-input:valid~.valid-feedback,\n.was-validated .custom-control-input:valid~.valid-tooltip {\n    display: block\n}\n\n.custom-control-input.is-valid:checked~.custom-control-label::before,\n.was-validated .custom-control-input:valid:checked~.custom-control-label::before {\n    background-color: #34ce57\n}\n\n.custom-control-input.is-valid:focus~.custom-control-label::before,\n.was-validated .custom-control-input:valid:focus~.custom-control-label::before {\n    box-shadow: 0 0 0 1px #fff, 0 0 0 .2rem rgba(40, 167, 69, .25)\n}\n\n.custom-file-input.is-valid~.custom-file-label,\n.was-validated .custom-file-input:valid~.custom-file-label {\n    border-color: #28a745\n}\n\n.custom-file-input.is-valid~.custom-file-label::after,\n.was-validated .custom-file-input:valid~.custom-file-label::after {\n    border-color: inherit\n}\n\n.custom-file-input.is-valid~.valid-feedback,\n.custom-file-input.is-valid~.valid-tooltip,\n.was-validated .custom-file-input:valid~.valid-feedback,\n.was-validated .custom-file-input:valid~.valid-tooltip {\n    display: block\n}\n\n.custom-file-input.is-valid:focus~.custom-file-label,\n.was-validated .custom-file-input:valid:focus~.custom-file-label {\n    box-shadow: 0 0 0 .2rem rgba(40, 167, 69, .25)\n}\n\n.invalid-feedback {\n    display: none;\n    width: 100%;\n    margin-top: .25rem;\n    font-size: 80%;\n    color: #dc3545\n}\n\n.invalid-tooltip {\n    position: absolute;\n    top: 100%;\n    z-index: 5;\n    display: none;\n    max-width: 100%;\n    padding: .25rem .5rem;\n    margin-top: .1rem;\n    font-size: .875rem;\n    line-height: 1.5;\n    color: #fff;\n    background-color: rgba(220, 53, 69, .9);\n    border-radius: .25rem\n}\n\n.custom-select.is-invalid,\n.form-control.is-invalid,\n.was-validated .custom-select:invalid,\n.was-validated .form-control:invalid {\n    border-color: #dc3545\n}\n\n.custom-select.is-invalid:focus,\n.form-control.is-invalid:focus,\n.was-validated .custom-select:invalid:focus,\n.was-validated .form-control:invalid:focus {\n    border-color: #dc3545;\n    box-shadow: 0 0 0 .2rem rgba(220, 53, 69, .25)\n}\n\n.custom-select.is-invalid~.invalid-feedback,\n.custom-select.is-invalid~.invalid-tooltip,\n.form-control.is-invalid~.invalid-feedback,\n.form-control.is-invalid~.invalid-tooltip,\n.was-validated .custom-select:invalid~.invalid-feedback,\n.was-validated .custom-select:invalid~.invalid-tooltip,\n.was-validated .form-control:invalid~.invalid-feedback,\n.was-validated .form-control:invalid~.invalid-tooltip {\n    display: block\n}\n\n.form-control-file.is-invalid~.invalid-feedback,\n.form-control-file.is-invalid~.invalid-tooltip,\n.was-validated .form-control-file:invalid~.invalid-feedback,\n.was-validated .form-control-file:invalid~.invalid-tooltip {\n    display: block\n}\n\n.form-check-input.is-invalid~.form-check-label,\n.was-validated .form-check-input:invalid~.form-check-label {\n    color: #dc3545\n}\n\n.form-check-input.is-invalid~.invalid-feedback,\n.form-check-input.is-invalid~.invalid-tooltip,\n.was-validated .form-check-input:invalid~.invalid-feedback,\n.was-validated .form-check-input:invalid~.invalid-tooltip {\n    display: block\n}\n\n.custom-control-input.is-invalid~.custom-control-label,\n.was-validated .custom-control-input:invalid~.custom-control-label {\n    color: #dc3545\n}\n\n.custom-control-input.is-invalid~.custom-control-label::before,\n.was-validated .custom-control-input:invalid~.custom-control-label::before {\n    background-color: #efa2a9\n}\n\n.custom-control-input.is-invalid~.invalid-feedback,\n.custom-control-input.is-invalid~.invalid-tooltip,\n.was-validated .custom-control-input:invalid~.invalid-feedback,\n.was-validated .custom-control-input:invalid~.invalid-tooltip {\n    display: block\n}\n\n.custom-control-input.is-invalid:checked~.custom-control-label::before,\n.was-validated .custom-control-input:invalid:checked~.custom-control-label::before {\n    background-color: #e4606d\n}\n\n.custom-control-input.is-invalid:focus~.custom-control-label::before,\n.was-validated .custom-control-input:invalid:focus~.custom-control-label::before {\n    box-shadow: 0 0 0 1px #fff, 0 0 0 .2rem rgba(220, 53, 69, .25)\n}\n\n.custom-file-input.is-invalid~.custom-file-label,\n.was-validated .custom-file-input:invalid~.custom-file-label {\n    border-color: #dc3545\n}\n\n.custom-file-input.is-invalid~.custom-file-label::after,\n.was-validated .custom-file-input:invalid~.custom-file-label::after {\n    border-color: inherit\n}\n\n.custom-file-input.is-invalid~.invalid-feedback,\n.custom-file-input.is-invalid~.invalid-tooltip,\n.was-validated .custom-file-input:invalid~.invalid-feedback,\n.was-validated .custom-file-input:invalid~.invalid-tooltip {\n    display: block\n}\n\n.custom-file-input.is-invalid:focus~.custom-file-label,\n.was-validated .custom-file-input:invalid:focus~.custom-file-label {\n    box-shadow: 0 0 0 .2rem rgba(220, 53, 69, .25)\n}\n\n.form-inline {\n    display: -ms-flexbox;\n    display: flex;\n    -ms-flex-flow: row wrap;\n    flex-flow: row wrap;\n    -ms-flex-align: center;\n    align-items: center\n}\n\n.form-inline .form-check {\n    width: 100%\n}\n\n@media (min-width:576px) {\n    .form-inline label {\n        display: -ms-flexbox;\n        display: flex;\n        -ms-flex-align: center;\n        align-items: center;\n        -ms-flex-pack: center;\n        justify-content: center;\n        margin-bottom: 0\n    }\n    .form-inline .form-group {\n        display: -ms-flexbox;\n        display: flex;\n        -ms-flex: 0 0 auto;\n        flex: 0 0 auto;\n        -ms-flex-flow: row wrap;\n        flex-flow: row wrap;\n        -ms-flex-align: center;\n        align-items: center;\n        margin-bottom: 0\n    }\n    .form-inline .form-control {\n        display: inline-block;\n        width: auto;\n        vertical-align: middle\n    }\n    .form-inline .form-control-plaintext {\n        display: inline-block\n    }\n    .form-inline .custom-select,\n    .form-inline .input-group {\n        width: auto\n    }\n    .form-inline .form-check {\n        display: -ms-flexbox;\n        display: flex;\n        -ms-flex-align: center;\n        align-items: center;\n        -ms-flex-pack: center;\n        justify-content: center;\n        width: auto;\n        padding-left: 0\n    }\n    .form-inline .form-check-input {\n        position: relative;\n        margin-top: 0;\n        margin-right: .25rem;\n        margin-left: 0\n    }\n    .form-inline .custom-control {\n        -ms-flex-align: center;\n        align-items: center;\n        -ms-flex-pack: center;\n        justify-content: center\n    }\n    .form-inline .custom-control-label {\n        margin-bottom: 0\n    }\n}\n\n.btn {\n    display: inline-block;\n    font-weight: 400;\n    text-align: center;\n    white-space: nowrap;\n    vertical-align: middle;\n    -webkit-user-select: none;\n    -moz-user-select: none;\n    -ms-user-select: none;\n    user-select: none;\n    border: 1px solid transparent;\n    padding: .375rem .75rem;\n    font-size: 1rem;\n    line-height: 1.5;\n    border-radius: .25rem;\n    transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out\n}\n\n@media screen and (prefers-reduced-motion:reduce) {\n    .btn {\n        transition: none\n    }\n}\n\n.btn:focus,\n.btn:hover {\n    text-decoration: none\n}\n\n.btn.focus,\n.btn:focus {\n    outline: 0;\n    box-shadow: 0 0 0 .2rem rgba(0, 123, 255, .25)\n}\n\n.btn.disabled,\n.btn:disabled {\n    opacity: .65\n}\n\n.btn:not(:disabled):not(.disabled) {\n    cursor: pointer\n}\n\na.btn.disabled,\nfieldset:disabled a.btn {\n    pointer-events: none\n}\n\n.btn-primary {\n    color: #fff;\n    background-color: #007bff;\n    border-color: #007bff\n}\n\n.btn-primary:hover {\n    color: #fff;\n    background-color: #0069d9;\n    border-color: #0062cc\n}\n\n.btn-primary.focus,\n.btn-primary:focus {\n    box-shadow: 0 0 0 .2rem rgba(0, 123, 255, .5)\n}\n\n.btn-primary.disabled,\n.btn-primary:disabled {\n    color: #fff;\n    background-color: #007bff;\n    border-color: #007bff\n}\n\n.btn-primary:not(:disabled):not(.disabled).active,\n.btn-primary:not(:disabled):not(.disabled):active,\n.show>.btn-primary.dropdown-toggle {\n    color: #fff;\n    background-color: #0062cc;\n    border-color: #005cbf\n}\n\n.btn-primary:not(:disabled):not(.disabled).active:focus,\n.btn-primary:not(:disabled):not(.disabled):active:focus,\n.show>.btn-primary.dropdown-toggle:focus {\n    box-shadow: 0 0 0 .2rem rgba(0, 123, 255, .5)\n}\n\n.btn-secondary {\n    color: #fff;\n    background-color: #6c757d;\n    border-color: #6c757d\n}\n\n.btn-secondary:hover {\n    color: #fff;\n    background-color: #5a6268;\n    border-color: #545b62\n}\n\n.btn-secondary.focus,\n.btn-secondary:focus {\n    box-shadow: 0 0 0 .2rem rgba(108, 117, 125, .5)\n}\n\n.btn-secondary.disabled,\n.btn-secondary:disabled {\n    color: #fff;\n    background-color: #6c757d;\n    border-color: #6c757d\n}\n\n.btn-secondary:not(:disabled):not(.disabled).active,\n.btn-secondary:not(:disabled):not(.disabled):active,\n.show>.btn-secondary.dropdown-toggle {\n    color: #fff;\n    background-color: #545b62;\n    border-color: #4e555b\n}\n\n.btn-secondary:not(:disabled):not(.disabled).active:focus,\n.btn-secondary:not(:disabled):not(.disabled):active:focus,\n.show>.btn-secondary.dropdown-toggle:focus {\n    box-shadow: 0 0 0 .2rem rgba(108, 117, 125, .5)\n}\n\n.btn-success {\n    color: #fff;\n    background-color: #28a745;\n    border-color: #28a745\n}\n\n.btn-success:hover {\n    color: #fff;\n    background-color: #218838;\n    border-color: #1e7e34\n}\n\n.btn-success.focus,\n.btn-success:focus {\n    box-shadow: 0 0 0 .2rem rgba(40, 167, 69, .5)\n}\n\n.btn-success.disabled,\n.btn-success:disabled {\n    color: #fff;\n    background-color: #28a745;\n    border-color: #28a745\n}\n\n.btn-success:not(:disabled):not(.disabled).active,\n.btn-success:not(:disabled):not(.disabled):active,\n.show>.btn-success.dropdown-toggle {\n    color: #fff;\n    background-color: #1e7e34;\n    border-color: #1c7430\n}\n\n.btn-success:not(:disabled):not(.disabled).active:focus,\n.btn-success:not(:disabled):not(.disabled):active:focus,\n.show>.btn-success.dropdown-toggle:focus {\n    box-shadow: 0 0 0 .2rem rgba(40, 167, 69, .5)\n}\n\n.btn-info {\n    color: #fff;\n    background-color: #17a2b8;\n    border-color: #17a2b8\n}\n\n.btn-info:hover {\n    color: #fff;\n    background-color: #138496;\n    border-color: #117a8b\n}\n\n.btn-info.focus,\n.btn-info:focus {\n    box-shadow: 0 0 0 .2rem rgba(23, 162, 184, .5)\n}\n\n.btn-info.disabled,\n.btn-info:disabled {\n    color: #fff;\n    background-color: #17a2b8;\n    border-color: #17a2b8\n}\n\n.btn-info:not(:disabled):not(.disabled).active,\n.btn-info:not(:disabled):not(.disabled):active,\n.show>.btn-info.dropdown-toggle {\n    color: #fff;\n    background-color: #117a8b;\n    border-color: #10707f\n}\n\n.btn-info:not(:disabled):not(.disabled).active:focus,\n.btn-info:not(:disabled):not(.disabled):active:focus,\n.show>.btn-info.dropdown-toggle:focus {\n    box-shadow: 0 0 0 .2rem rgba(23, 162, 184, .5)\n}\n\n.btn-warning {\n    color: #212529;\n    background-color: #ffc107;\n    border-color: #ffc107\n}\n\n.btn-warning:hover {\n    color: #212529;\n    background-color: #e0a800;\n    border-color: #d39e00\n}\n\n.btn-warning.focus,\n.btn-warning:focus {\n    box-shadow: 0 0 0 .2rem rgba(255, 193, 7, .5)\n}\n\n.btn-warning.disabled,\n.btn-warning:disabled {\n    color: #212529;\n    background-color: #ffc107;\n    border-color: #ffc107\n}\n\n.btn-warning:not(:disabled):not(.disabled).active,\n.btn-warning:not(:disabled):not(.disabled):active,\n.show>.btn-warning.dropdown-toggle {\n    color: #212529;\n    background-color: #d39e00;\n    border-color: #c69500\n}\n\n.btn-warning:not(:disabled):not(.disabled).active:focus,\n.btn-warning:not(:disabled):not(.disabled):active:focus,\n.show>.btn-warning.dropdown-toggle:focus {\n    box-shadow: 0 0 0 .2rem rgba(255, 193, 7, .5)\n}\n\n.btn-danger {\n    color: #fff;\n    background-color: #dc3545;\n    border-color: #dc3545\n}\n\n.btn-danger:hover {\n    color: #fff;\n    background-color: #c82333;\n    border-color: #bd2130\n}\n\n.btn-danger.focus,\n.btn-danger:focus {\n    box-shadow: 0 0 0 .2rem rgba(220, 53, 69, .5)\n}\n\n.btn-danger.disabled,\n.btn-danger:disabled {\n    color: #fff;\n    background-color: #dc3545;\n    border-color: #dc3545\n}\n\n.btn-danger:not(:disabled):not(.disabled).active,\n.btn-danger:not(:disabled):not(.disabled):active,\n.show>.btn-danger.dropdown-toggle {\n    color: #fff;\n    background-color: #bd2130;\n    border-color: #b21f2d\n}\n\n.btn-danger:not(:disabled):not(.disabled).active:focus,\n.btn-danger:not(:disabled):not(.disabled):active:focus,\n.show>.btn-danger.dropdown-toggle:focus {\n    box-shadow: 0 0 0 .2rem rgba(220, 53, 69, .5)\n}\n\n.btn-light {\n    color: #212529;\n    background-color: #f8f9fa;\n    border-color: #f8f9fa\n}\n\n.btn-light:hover {\n    color: #212529;\n    background-color: #e2e6ea;\n    border-color: #dae0e5\n}\n\n.btn-light.focus,\n.btn-light:focus {\n    box-shadow: 0 0 0 .2rem rgba(248, 249, 250, .5)\n}\n\n.btn-light.disabled,\n.btn-light:disabled {\n    color: #212529;\n    background-color: #f8f9fa;\n    border-color: #f8f9fa\n}\n\n.btn-light:not(:disabled):not(.disabled).active,\n.btn-light:not(:disabled):not(.disabled):active,\n.show>.btn-light.dropdown-toggle {\n    color: #212529;\n    background-color: #dae0e5;\n    border-color: #d3d9df\n}\n\n.btn-light:not(:disabled):not(.disabled).active:focus,\n.btn-light:not(:disabled):not(.disabled):active:focus,\n.show>.btn-light.dropdown-toggle:focus {\n    box-shadow: 0 0 0 .2rem rgba(248, 249, 250, .5)\n}\n\n.btn-dark {\n    color: #fff;\n    background-color: #343a40;\n    border-color: #343a40\n}\n\n.btn-dark:hover {\n    color: #fff;\n    background-color: #23272b;\n    border-color: #1d2124\n}\n\n.btn-dark.focus,\n.btn-dark:focus {\n    box-shadow: 0 0 0 .2rem rgba(52, 58, 64, .5)\n}\n\n.btn-dark.disabled,\n.btn-dark:disabled {\n    color: #fff;\n    background-color: #343a40;\n    border-color: #343a40\n}\n\n.btn-dark:not(:disabled):not(.disabled).active,\n.btn-dark:not(:disabled):not(.disabled):active,\n.show>.btn-dark.dropdown-toggle {\n    color: #fff;\n    background-color: #1d2124;\n    border-color: #171a1d\n}\n\n.btn-dark:not(:disabled):not(.disabled).active:focus,\n.btn-dark:not(:disabled):not(.disabled):active:focus,\n.show>.btn-dark.dropdown-toggle:focus {\n    box-shadow: 0 0 0 .2rem rgba(52, 58, 64, .5)\n}\n\n.btn-outline-primary {\n    color: #007bff;\n    background-color: transparent;\n    background-image: none;\n    border-color: #007bff\n}\n\n.btn-outline-primary:hover {\n    color: #fff;\n    background-color: #007bff;\n    border-color: #007bff\n}\n\n.btn-outline-primary.focus,\n.btn-outline-primary:focus {\n    box-shadow: 0 0 0 .2rem rgba(0, 123, 255, .5)\n}\n\n.btn-outline-primary.disabled,\n.btn-outline-primary:disabled {\n    color: #007bff;\n    background-color: transparent\n}\n\n.btn-outline-primary:not(:disabled):not(.disabled).active,\n.btn-outline-primary:not(:disabled):not(.disabled):active,\n.show>.btn-outline-primary.dropdown-toggle {\n    color: #fff;\n    background-color: #007bff;\n    border-color: #007bff\n}\n\n.btn-outline-primary:not(:disabled):not(.disabled).active:focus,\n.btn-outline-primary:not(:disabled):not(.disabled):active:focus,\n.show>.btn-outline-primary.dropdown-toggle:focus {\n    box-shadow: 0 0 0 .2rem rgba(0, 123, 255, .5)\n}\n\n.btn-outline-secondary {\n    color: #6c757d;\n    background-color: transparent;\n    background-image: none;\n    border-color: #6c757d\n}\n\n.btn-outline-secondary:hover {\n    color: #fff;\n    background-color: #6c757d;\n    border-color: #6c757d\n}\n\n.btn-outline-secondary.focus,\n.btn-outline-secondary:focus {\n    box-shadow: 0 0 0 .2rem rgba(108, 117, 125, .5)\n}\n\n.btn-outline-secondary.disabled,\n.btn-outline-secondary:disabled {\n    color: #6c757d;\n    background-color: transparent\n}\n\n.btn-outline-secondary:not(:disabled):not(.disabled).active,\n.btn-outline-secondary:not(:disabled):not(.disabled):active,\n.show>.btn-outline-secondary.dropdown-toggle {\n    color: #fff;\n    background-color: #6c757d;\n    border-color: #6c757d\n}\n\n.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,\n.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,\n.show>.btn-outline-secondary.dropdown-toggle:focus {\n    box-shadow: 0 0 0 .2rem rgba(108, 117, 125, .5)\n}\n\n.btn-outline-success {\n    color: #28a745;\n    background-color: transparent;\n    background-image: none;\n    border-color: #28a745\n}\n\n.btn-outline-success:hover {\n    color: #fff;\n    background-color: #28a745;\n    border-color: #28a745\n}\n\n.btn-outline-success.focus,\n.btn-outline-success:focus {\n    box-shadow: 0 0 0 .2rem rgba(40, 167, 69, .5)\n}\n\n.btn-outline-success.disabled,\n.btn-outline-success:disabled {\n    color: #28a745;\n    background-color: transparent\n}\n\n.btn-outline-success:not(:disabled):not(.disabled).active,\n.btn-outline-success:not(:disabled):not(.disabled):active,\n.show>.btn-outline-success.dropdown-toggle {\n    color: #fff;\n    background-color: #28a745;\n    border-color: #28a745\n}\n\n.btn-outline-success:not(:disabled):not(.disabled).active:focus,\n.btn-outline-success:not(:disabled):not(.disabled):active:focus,\n.show>.btn-outline-success.dropdown-toggle:focus {\n    box-shadow: 0 0 0 .2rem rgba(40, 167, 69, .5)\n}\n\n.btn-outline-info {\n    color: #17a2b8;\n    background-color: transparent;\n    background-image: none;\n    border-color: #17a2b8\n}\n\n.btn-outline-info:hover {\n    color: #fff;\n    background-color: #17a2b8;\n    border-color: #17a2b8\n}\n\n.btn-outline-info.focus,\n.btn-outline-info:focus {\n    box-shadow: 0 0 0 .2rem rgba(23, 162, 184, .5)\n}\n\n.btn-outline-info.disabled,\n.btn-outline-info:disabled {\n    color: #17a2b8;\n    background-color: transparent\n}\n\n.btn-outline-info:not(:disabled):not(.disabled).active,\n.btn-outline-info:not(:disabled):not(.disabled):active,\n.show>.btn-outline-info.dropdown-toggle {\n    color: #fff;\n    background-color: #17a2b8;\n    border-color: #17a2b8\n}\n\n.btn-outline-info:not(:disabled):not(.disabled).active:focus,\n.btn-outline-info:not(:disabled):not(.disabled):active:focus,\n.show>.btn-outline-info.dropdown-toggle:focus {\n    box-shadow: 0 0 0 .2rem rgba(23, 162, 184, .5)\n}\n\n.btn-outline-warning {\n    color: #ffc107;\n    background-color: transparent;\n    background-image: none;\n    border-color: #ffc107\n}\n\n.btn-outline-warning:hover {\n    color: #212529;\n    background-color: #ffc107;\n    border-color: #ffc107\n}\n\n.btn-outline-warning.focus,\n.btn-outline-warning:focus {\n    box-shadow: 0 0 0 .2rem rgba(255, 193, 7, .5)\n}\n\n.btn-outline-warning.disabled,\n.btn-outline-warning:disabled {\n    color: #ffc107;\n    background-color: transparent\n}\n\n.btn-outline-warning:not(:disabled):not(.disabled).active,\n.btn-outline-warning:not(:disabled):not(.disabled):active,\n.show>.btn-outline-warning.dropdown-toggle {\n    color: #212529;\n    background-color: #ffc107;\n    border-color: #ffc107\n}\n\n.btn-outline-warning:not(:disabled):not(.disabled).active:focus,\n.btn-outline-warning:not(:disabled):not(.disabled):active:focus,\n.show>.btn-outline-warning.dropdown-toggle:focus {\n    box-shadow: 0 0 0 .2rem rgba(255, 193, 7, .5)\n}\n\n.btn-outline-danger {\n    color: #dc3545;\n    background-color: transparent;\n    background-image: none;\n    border-color: #dc3545\n}\n\n.btn-outline-danger:hover {\n    color: #fff;\n    background-color: #dc3545;\n    border-color: #dc3545\n}\n\n.btn-outline-danger.focus,\n.btn-outline-danger:focus {\n    box-shadow: 0 0 0 .2rem rgba(220, 53, 69, .5)\n}\n\n.btn-outline-danger.disabled,\n.btn-outline-danger:disabled {\n    color: #dc3545;\n    background-color: transparent\n}\n\n.btn-outline-danger:not(:disabled):not(.disabled).active,\n.btn-outline-danger:not(:disabled):not(.disabled):active,\n.show>.btn-outline-danger.dropdown-toggle {\n    color: #fff;\n    background-color: #dc3545;\n    border-color: #dc3545\n}\n\n.btn-outline-danger:not(:disabled):not(.disabled).active:focus,\n.btn-outline-danger:not(:disabled):not(.disabled):active:focus,\n.show>.btn-outline-danger.dropdown-toggle:focus {\n    box-shadow: 0 0 0 .2rem rgba(220, 53, 69, .5)\n}\n\n.btn-outline-light {\n    color: #f8f9fa;\n    background-color: transparent;\n    background-image: none;\n    border-color: #f8f9fa\n}\n\n.btn-outline-light:hover {\n    color: #212529;\n    background-color: #f8f9fa;\n    border-color: #f8f9fa\n}\n\n.btn-outline-light.focus,\n.btn-outline-light:focus {\n    box-shadow: 0 0 0 .2rem rgba(248, 249, 250, .5)\n}\n\n.btn-outline-light.disabled,\n.btn-outline-light:disabled {\n    color: #f8f9fa;\n    background-color: transparent\n}\n\n.btn-outline-light:not(:disabled):not(.disabled).active,\n.btn-outline-light:not(:disabled):not(.disabled):active,\n.show>.btn-outline-light.dropdown-toggle {\n    color: #212529;\n    background-color: #f8f9fa;\n    border-color: #f8f9fa\n}\n\n.btn-outline-light:not(:disabled):not(.disabled).active:focus,\n.btn-outline-light:not(:disabled):not(.disabled):active:focus,\n.show>.btn-outline-light.dropdown-toggle:focus {\n    box-shadow: 0 0 0 .2rem rgba(248, 249, 250, .5)\n}\n\n.btn-outline-dark {\n    color: #343a40;\n    background-color: transparent;\n    background-image: none;\n    border-color: #343a40\n}\n\n.btn-outline-dark:hover {\n    color: #fff;\n    background-color: #343a40;\n    border-color: #343a40\n}\n\n.btn-outline-dark.focus,\n.btn-outline-dark:focus {\n    box-shadow: 0 0 0 .2rem rgba(52, 58, 64, .5)\n}\n\n.btn-outline-dark.disabled,\n.btn-outline-dark:disabled {\n    color: #343a40;\n    background-color: transparent\n}\n\n.btn-outline-dark:not(:disabled):not(.disabled).active,\n.btn-outline-dark:not(:disabled):not(.disabled):active,\n.show>.btn-outline-dark.dropdown-toggle {\n    color: #fff;\n    background-color: #343a40;\n    border-color: #343a40\n}\n\n.btn-outline-dark:not(:disabled):not(.disabled).active:focus,\n.btn-outline-dark:not(:disabled):not(.disabled):active:focus,\n.show>.btn-outline-dark.dropdown-toggle:focus {\n    box-shadow: 0 0 0 .2rem rgba(52, 58, 64, .5)\n}\n\n.btn-link {\n    font-weight: 400;\n    color: #007bff;\n    background-color: transparent\n}\n\n.btn-link:hover {\n    color: #0056b3;\n    text-decoration: underline;\n    background-color: transparent;\n    border-color: transparent\n}\n\n.btn-link.focus,\n.btn-link:focus {\n    text-decoration: underline;\n    border-color: transparent;\n    box-shadow: none\n}\n\n.btn-link.disabled,\n.btn-link:disabled {\n    color: #6c757d;\n    pointer-events: none\n}\n\n.btn-group-lg>.btn,\n.btn-lg {\n    padding: .5rem 1rem;\n    font-size: 1.25rem;\n    line-height: 1.5;\n    border-radius: .3rem\n}\n\n.btn-group-sm>.btn,\n.btn-sm {\n    padding: .25rem .5rem;\n    font-size: .875rem;\n    line-height: 1.5;\n    border-radius: .2rem\n}\n\n.btn-block {\n    display: block;\n    width: 100%\n}\n\n.btn-block+.btn-block {\n    margin-top: .5rem\n}\n\ninput[type=button].btn-block,\ninput[type=reset].btn-block,\ninput[type=submit].btn-block {\n    width: 100%\n}\n\n.fade {\n    transition: opacity .15s linear\n}\n\n@media screen and (prefers-reduced-motion:reduce) {\n    .fade {\n        transition: none\n    }\n}\n\n.fade:not(.show) {\n    opacity: 0\n}\n\n.collapse:not(.show) {\n    display: none\n}\n\n.collapsing {\n    position: relative;\n    height: 0;\n    overflow: hidden;\n    transition: height .35s ease\n}\n\n@media screen and (prefers-reduced-motion:reduce) {\n    .collapsing {\n        transition: none\n    }\n}\n\n.dropdown,\n.dropleft,\n.dropright,\n.dropup {\n    position: relative\n}\n\n.dropdown-toggle::after {\n    display: inline-block;\n    width: 0;\n    height: 0;\n    margin-left: .255em;\n    vertical-align: .255em;\n    content: \"\";\n    border-top: .3em solid;\n    border-right: .3em solid transparent;\n    border-bottom: 0;\n    border-left: .3em solid transparent\n}\n\n.dropdown-toggle:empty::after {\n    margin-left: 0\n}\n\n.dropdown-menu {\n    position: absolute;\n    top: 100%;\n    left: 0;\n    z-index: 1000;\n    display: none;\n    float: left;\n    min-width: 10rem;\n    padding: .5rem 0;\n    margin: .125rem 0 0;\n    font-size: 1rem;\n    color: #212529;\n    text-align: left;\n    list-style: none;\n    background-color: #fff;\n    background-clip: padding-box;\n    border: 1px solid rgba(0, 0, 0, .15);\n    border-radius: .25rem\n}\n\n.dropdown-menu-right {\n    right: 0;\n    left: auto\n}\n\n.dropup .dropdown-menu {\n    top: auto;\n    bottom: 100%;\n    margin-top: 0;\n    margin-bottom: .125rem\n}\n\n.dropup .dropdown-toggle::after {\n    display: inline-block;\n    width: 0;\n    height: 0;\n    margin-left: .255em;\n    vertical-align: .255em;\n    content: \"\";\n    border-top: 0;\n    border-right: .3em solid transparent;\n    border-bottom: .3em solid;\n    border-left: .3em solid transparent\n}\n\n.dropup .dropdown-toggle:empty::after {\n    margin-left: 0\n}\n\n.dropright .dropdown-menu {\n    top: 0;\n    right: auto;\n    left: 100%;\n    margin-top: 0;\n    margin-left: .125rem\n}\n\n.dropright .dropdown-toggle::after {\n    display: inline-block;\n    width: 0;\n    height: 0;\n    margin-left: .255em;\n    vertical-align: .255em;\n    content: \"\";\n    border-top: .3em solid transparent;\n    border-right: 0;\n    border-bottom: .3em solid transparent;\n    border-left: .3em solid\n}\n\n.dropright .dropdown-toggle:empty::after {\n    margin-left: 0\n}\n\n.dropright .dropdown-toggle::after {\n    vertical-align: 0\n}\n\n.dropleft .dropdown-menu {\n    top: 0;\n    right: 100%;\n    left: auto;\n    margin-top: 0;\n    margin-right: .125rem\n}\n\n.dropleft .dropdown-toggle::after {\n    display: inline-block;\n    width: 0;\n    height: 0;\n    margin-left: .255em;\n    vertical-align: .255em;\n    content: \"\"\n}\n\n.dropleft .dropdown-toggle::after {\n    display: none\n}\n\n.dropleft .dropdown-toggle::before {\n    display: inline-block;\n    width: 0;\n    height: 0;\n    margin-right: .255em;\n    vertical-align: .255em;\n    content: \"\";\n    border-top: .3em solid transparent;\n    border-right: .3em solid;\n    border-bottom: .3em solid transparent\n}\n\n.dropleft .dropdown-toggle:empty::after {\n    margin-left: 0\n}\n\n.dropleft .dropdown-toggle::before {\n    vertical-align: 0\n}\n\n.dropdown-menu[x-placement^=bottom],\n.dropdown-menu[x-placement^=left],\n.dropdown-menu[x-placement^=right],\n.dropdown-menu[x-placement^=top] {\n    right: auto;\n    bottom: auto\n}\n\n.dropdown-divider {\n    height: 0;\n    margin: .5rem 0;\n    overflow: hidden;\n    border-top: 1px solid #e9ecef\n}\n\n.dropdown-item {\n    display: block;\n    width: 100%;\n    padding: .25rem 1.5rem;\n    clear: both;\n    font-weight: 400;\n    color: #212529;\n    text-align: inherit;\n    white-space: nowrap;\n    background-color: transparent;\n    border: 0\n}\n\n.dropdown-item:focus,\n.dropdown-item:hover {\n    color: #16181b;\n    text-decoration: none;\n    background-color: #f8f9fa\n}\n\n.dropdown-item.active,\n.dropdown-item:active {\n    color: #fff;\n    text-decoration: none;\n    background-color: #007bff\n}\n\n.dropdown-item.disabled,\n.dropdown-item:disabled {\n    color: #6c757d;\n    background-color: transparent\n}\n\n.dropdown-menu.show {\n    display: block\n}\n\n.dropdown-header {\n    display: block;\n    padding: .5rem 1.5rem;\n    margin-bottom: 0;\n    font-size: .875rem;\n    color: #6c757d;\n    white-space: nowrap\n}\n\n.dropdown-item-text {\n    display: block;\n    padding: .25rem 1.5rem;\n    color: #212529\n}\n\n.btn-group,\n.btn-group-vertical {\n    position: relative;\n    display: -ms-inline-flexbox;\n    display: inline-flex;\n    vertical-align: middle\n}\n\n.btn-group-vertical>.btn,\n.btn-group>.btn {\n    position: relative;\n    -ms-flex: 0 1 auto;\n    flex: 0 1 auto\n}\n\n.btn-group-vertical>.btn:hover,\n.btn-group>.btn:hover {\n    z-index: 1\n}\n\n.btn-group-vertical>.btn.active,\n.btn-group-vertical>.btn:active,\n.btn-group-vertical>.btn:focus,\n.btn-group>.btn.active,\n.btn-group>.btn:active,\n.btn-group>.btn:focus {\n    z-index: 1\n}\n\n.btn-group .btn+.btn,\n.btn-group .btn+.btn-group,\n.btn-group .btn-group+.btn,\n.btn-group .btn-group+.btn-group,\n.btn-group-vertical .btn+.btn,\n.btn-group-vertical .btn+.btn-group,\n.btn-group-vertical .btn-group+.btn,\n.btn-group-vertical .btn-group+.btn-group {\n    margin-left: -1px\n}\n\n.btn-toolbar {\n    display: -ms-flexbox;\n    display: flex;\n    -ms-flex-wrap: wrap;\n    flex-wrap: wrap;\n    -ms-flex-pack: start;\n    justify-content: flex-start\n}\n\n.btn-toolbar .input-group {\n    width: auto\n}\n\n.btn-group>.btn:first-child {\n    margin-left: 0\n}\n\n.btn-group>.btn-group:not(:last-child)>.btn,\n.btn-group>.btn:not(:last-child):not(.dropdown-toggle) {\n    border-top-right-radius: 0;\n    border-bottom-right-radius: 0\n}\n\n.btn-group>.btn-group:not(:first-child)>.btn,\n.btn-group>.btn:not(:first-child) {\n    border-top-left-radius: 0;\n    border-bottom-left-radius: 0\n}\n\n.dropdown-toggle-split {\n    padding-right: .5625rem;\n    padding-left: .5625rem\n}\n\n.dropdown-toggle-split::after,\n.dropright .dropdown-toggle-split::after,\n.dropup .dropdown-toggle-split::after {\n    margin-left: 0\n}\n\n.dropleft .dropdown-toggle-split::before {\n    margin-right: 0\n}\n\n.btn-group-sm>.btn+.dropdown-toggle-split,\n.btn-sm+.dropdown-toggle-split {\n    padding-right: .375rem;\n    padding-left: .375rem\n}\n\n.btn-group-lg>.btn+.dropdown-toggle-split,\n.btn-lg+.dropdown-toggle-split {\n    padding-right: .75rem;\n    padding-left: .75rem\n}\n\n.btn-group-vertical {\n    -ms-flex-direction: column;\n    flex-direction: column;\n    -ms-flex-align: start;\n    align-items: flex-start;\n    -ms-flex-pack: center;\n    justify-content: center\n}\n\n.btn-group-vertical .btn,\n.btn-group-vertical .btn-group {\n    width: 100%\n}\n\n.btn-group-vertical>.btn+.btn,\n.btn-group-vertical>.btn+.btn-group,\n.btn-group-vertical>.btn-group+.btn,\n.btn-group-vertical>.btn-group+.btn-group {\n    margin-top: -1px;\n    margin-left: 0\n}\n\n.btn-group-vertical>.btn-group:not(:last-child)>.btn,\n.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle) {\n    border-bottom-right-radius: 0;\n    border-bottom-left-radius: 0\n}\n\n.btn-group-vertical>.btn-group:not(:first-child)>.btn,\n.btn-group-vertical>.btn:not(:first-child) {\n    border-top-left-radius: 0;\n    border-top-right-radius: 0\n}\n\n.btn-group-toggle>.btn,\n.btn-group-toggle>.btn-group>.btn {\n    margin-bottom: 0\n}\n\n.btn-group-toggle>.btn input[type=checkbox],\n.btn-group-toggle>.btn input[type=radio],\n.btn-group-toggle>.btn-group>.btn input[type=checkbox],\n.btn-group-toggle>.btn-group>.btn input[type=radio] {\n    position: absolute;\n    clip: rect(0, 0, 0, 0);\n    pointer-events: none\n}\n\n.input-group {\n    position: relative;\n    display: -ms-flexbox;\n    display: flex;\n    -ms-flex-wrap: wrap;\n    flex-wrap: wrap;\n    -ms-flex-align: stretch;\n    align-items: stretch;\n    width: 100%\n}\n\n.input-group>.custom-file,\n.input-group>.custom-select,\n.input-group>.form-control {\n    position: relative;\n    -ms-flex: 1 1 auto;\n    flex: 1 1 auto;\n    width: 1%;\n    margin-bottom: 0\n}\n\n.input-group>.custom-file+.custom-file,\n.input-group>.custom-file+.custom-select,\n.input-group>.custom-file+.form-control,\n.input-group>.custom-select+.custom-file,\n.input-group>.custom-select+.custom-select,\n.input-group>.custom-select+.form-control,\n.input-group>.form-control+.custom-file,\n.input-group>.form-control+.custom-select,\n.input-group>.form-control+.form-control {\n    margin-left: -1px\n}\n\n.input-group>.custom-file .custom-file-input:focus~.custom-file-label,\n.input-group>.custom-select:focus,\n.input-group>.form-control:focus {\n    z-index: 3\n}\n\n.input-group>.custom-file .custom-file-input:focus {\n    z-index: 4\n}\n\n.input-group>.custom-select:not(:last-child),\n.input-group>.form-control:not(:last-child) {\n    border-top-right-radius: 0;\n    border-bottom-right-radius: 0\n}\n\n.input-group>.custom-select:not(:first-child),\n.input-group>.form-control:not(:first-child) {\n    border-top-left-radius: 0;\n    border-bottom-left-radius: 0\n}\n\n.input-group>.custom-file {\n    display: -ms-flexbox;\n    display: flex;\n    -ms-flex-align: center;\n    align-items: center\n}\n\n.input-group>.custom-file:not(:last-child) .custom-file-label,\n.input-group>.custom-file:not(:last-child) .custom-file-label::after {\n    border-top-right-radius: 0;\n    border-bottom-right-radius: 0\n}\n\n.input-group>.custom-file:not(:first-child) .custom-file-label {\n    border-top-left-radius: 0;\n    border-bottom-left-radius: 0\n}\n\n.input-group-append,\n.input-group-prepend {\n    display: -ms-flexbox;\n    display: flex\n}\n\n.input-group-append .btn,\n.input-group-prepend .btn {\n    position: relative;\n    z-index: 2\n}\n\n.input-group-append .btn+.btn,\n.input-group-append .btn+.input-group-text,\n.input-group-append .input-group-text+.btn,\n.input-group-append .input-group-text+.input-group-text,\n.input-group-prepend .btn+.btn,\n.input-group-prepend .btn+.input-group-text,\n.input-group-prepend .input-group-text+.btn,\n.input-group-prepend .input-group-text+.input-group-text {\n    margin-left: -1px\n}\n\n.input-group-prepend {\n    margin-right: -1px\n}\n\n.input-group-append {\n    margin-left: -1px\n}\n\n.input-group-text {\n    display: -ms-flexbox;\n    display: flex;\n    -ms-flex-align: center;\n    align-items: center;\n    padding: .375rem .75rem;\n    margin-bottom: 0;\n    font-size: 1rem;\n    font-weight: 400;\n    line-height: 1.5;\n    color: #495057;\n    text-align: center;\n    white-space: nowrap;\n    background-color: #e9ecef;\n    border: 1px solid #ced4da;\n    border-radius: .25rem\n}\n\n.input-group-text input[type=checkbox],\n.input-group-text input[type=radio] {\n    margin-top: 0\n}\n\n.input-group-lg>.form-control,\n.input-group-lg>.input-group-append>.btn,\n.input-group-lg>.input-group-append>.input-group-text,\n.input-group-lg>.input-group-prepend>.btn,\n.input-group-lg>.input-group-prepend>.input-group-text {\n    height: calc(2.875rem + 2px);\n    padding: .5rem 1rem;\n    font-size: 1.25rem;\n    line-height: 1.5;\n    border-radius: .3rem\n}\n\n.input-group-sm>.form-control,\n.input-group-sm>.input-group-append>.btn,\n.input-group-sm>.input-group-append>.input-group-text,\n.input-group-sm>.input-group-prepend>.btn,\n.input-group-sm>.input-group-prepend>.input-group-text {\n    height: calc(1.8125rem + 2px);\n    padding: .25rem .5rem;\n    font-size: .875rem;\n    line-height: 1.5;\n    border-radius: .2rem\n}\n\n.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),\n.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),\n.input-group>.input-group-append:not(:last-child)>.btn,\n.input-group>.input-group-append:not(:last-child)>.input-group-text,\n.input-group>.input-group-prepend>.btn,\n.input-group>.input-group-prepend>.input-group-text {\n    border-top-right-radius: 0;\n    border-bottom-right-radius: 0\n}\n\n.input-group>.input-group-append>.btn,\n.input-group>.input-group-append>.input-group-text,\n.input-group>.input-group-prepend:first-child>.btn:not(:first-child),\n.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),\n.input-group>.input-group-prepend:not(:first-child)>.btn,\n.input-group>.input-group-prepend:not(:first-child)>.input-group-text {\n    border-top-left-radius: 0;\n    border-bottom-left-radius: 0\n}\n\n.custom-control {\n    position: relative;\n    display: block;\n    min-height: 1.5rem;\n    padding-left: 1.5rem\n}\n\n.custom-control-inline {\n    display: -ms-inline-flexbox;\n    display: inline-flex;\n    margin-right: 1rem\n}\n\n.custom-control-input {\n    position: absolute;\n    z-index: -1;\n    opacity: 0\n}\n\n.custom-control-input:checked~.custom-control-label::before {\n    color: #fff;\n    background-color: #007bff\n}\n\n.custom-control-input:focus~.custom-control-label::before {\n    box-shadow: 0 0 0 1px #fff, 0 0 0 .2rem rgba(0, 123, 255, .25)\n}\n\n.custom-control-input:active~.custom-control-label::before {\n    color: #fff;\n    background-color: #b3d7ff\n}\n\n.custom-control-input:disabled~.custom-control-label {\n    color: #6c757d\n}\n\n.custom-control-input:disabled~.custom-control-label::before {\n    background-color: #e9ecef\n}\n\n.custom-control-label {\n    position: relative;\n    margin-bottom: 0\n}\n\n.custom-control-label::before {\n    position: absolute;\n    top: .25rem;\n    left: -1.5rem;\n    display: block;\n    width: 1rem;\n    height: 1rem;\n    pointer-events: none;\n    content: \"\";\n    -webkit-user-select: none;\n    -moz-user-select: none;\n    -ms-user-select: none;\n    user-select: none;\n    background-color: #dee2e6\n}\n\n.custom-control-label::after {\n    position: absolute;\n    top: .25rem;\n    left: -1.5rem;\n    display: block;\n    width: 1rem;\n    height: 1rem;\n    content: \"\";\n    background-repeat: no-repeat;\n    background-position: center center;\n    background-size: 50% 50%\n}\n\n.custom-checkbox .custom-control-label::before {\n    border-radius: .25rem\n}\n\n.custom-checkbox .custom-control-input:checked~.custom-control-label::before {\n    background-color: #007bff\n}\n\n.custom-checkbox .custom-control-input:checked~.custom-control-label::after {\n    background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E\")\n}\n\n.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before {\n    background-color: #007bff\n}\n\n.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after {\n    background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E\")\n}\n\n.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before {\n    background-color: rgba(0, 123, 255, .5)\n}\n\n.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before {\n    background-color: rgba(0, 123, 255, .5)\n}\n\n.custom-radio .custom-control-label::before {\n    border-radius: 50%\n}\n\n.custom-radio .custom-control-input:checked~.custom-control-label::before {\n    background-color: #007bff\n}\n\n.custom-radio .custom-control-input:checked~.custom-control-label::after {\n    background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E\")\n}\n\n.custom-radio .custom-control-input:disabled:checked~.custom-control-label::before {\n    background-color: rgba(0, 123, 255, .5)\n}\n\n.custom-select {\n    display: inline-block;\n    width: 100%;\n    height: calc(2.25rem + 2px);\n    padding: .375rem 1.75rem .375rem .75rem;\n    line-height: 1.5;\n    color: #495057;\n    vertical-align: middle;\n    background: #fff url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E\") no-repeat right .75rem center;\n    background-size: 8px 10px;\n    border: 1px solid #ced4da;\n    border-radius: .25rem;\n    -webkit-appearance: none;\n    -moz-appearance: none;\n    appearance: none\n}\n\n.custom-select:focus {\n    border-color: #80bdff;\n    outline: 0;\n    box-shadow: 0 0 0 .2rem rgba(128, 189, 255, .5)\n}\n\n.custom-select:focus::-ms-value {\n    color: #495057;\n    background-color: #fff\n}\n\n.custom-select[multiple],\n.custom-select[size]:not([size=\"1\"]) {\n    height: auto;\n    padding-right: .75rem;\n    background-image: none\n}\n\n.custom-select:disabled {\n    color: #6c757d;\n    background-color: #e9ecef\n}\n\n.custom-select::-ms-expand {\n    opacity: 0\n}\n\n.custom-select-sm {\n    height: calc(1.8125rem + 2px);\n    padding-top: .375rem;\n    padding-bottom: .375rem;\n    font-size: 75%\n}\n\n.custom-select-lg {\n    height: calc(2.875rem + 2px);\n    padding-top: .375rem;\n    padding-bottom: .375rem;\n    font-size: 125%\n}\n\n.custom-file {\n    position: relative;\n    display: inline-block;\n    width: 100%;\n    height: calc(2.25rem + 2px);\n    margin-bottom: 0\n}\n\n.custom-file-input {\n    position: relative;\n    z-index: 2;\n    width: 100%;\n    height: calc(2.25rem + 2px);\n    margin: 0;\n    opacity: 0\n}\n\n.custom-file-input:focus~.custom-file-label {\n    border-color: #80bdff;\n    box-shadow: 0 0 0 .2rem rgba(0, 123, 255, .25)\n}\n\n.custom-file-input:focus~.custom-file-label::after {\n    border-color: #80bdff\n}\n\n.custom-file-input:disabled~.custom-file-label {\n    background-color: #e9ecef\n}\n\n.custom-file-input:lang(en)~.custom-file-label::after {\n    content: \"Browse\"\n}\n\n.custom-file-label {\n    position: absolute;\n    top: 0;\n    right: 0;\n    left: 0;\n    z-index: 1;\n    height: calc(2.25rem + 2px);\n    padding: .375rem .75rem;\n    line-height: 1.5;\n    color: #495057;\n    background-color: #fff;\n    border: 1px solid #ced4da;\n    border-radius: .25rem\n}\n\n.custom-file-label::after {\n    position: absolute;\n    top: 0;\n    right: 0;\n    bottom: 0;\n    z-index: 3;\n    display: block;\n    height: 2.25rem;\n    padding: .375rem .75rem;\n    line-height: 1.5;\n    color: #495057;\n    content: \"Browse\";\n    background-color: #e9ecef;\n    border-left: 1px solid #ced4da;\n    border-radius: 0 .25rem .25rem 0\n}\n\n.custom-range {\n    width: 100%;\n    padding-left: 0;\n    background-color: transparent;\n    -webkit-appearance: none;\n    -moz-appearance: none;\n    appearance: none\n}\n\n.custom-range:focus {\n    outline: 0\n}\n\n.custom-range:focus::-webkit-slider-thumb {\n    box-shadow: 0 0 0 1px #fff, 0 0 0 .2rem rgba(0, 123, 255, .25)\n}\n\n.custom-range:focus::-moz-range-thumb {\n    box-shadow: 0 0 0 1px #fff, 0 0 0 .2rem rgba(0, 123, 255, .25)\n}\n\n.custom-range:focus::-ms-thumb {\n    box-shadow: 0 0 0 1px #fff, 0 0 0 .2rem rgba(0, 123, 255, .25)\n}\n\n.custom-range::-moz-focus-outer {\n    border: 0\n}\n\n.custom-range::-webkit-slider-thumb {\n    width: 1rem;\n    height: 1rem;\n    margin-top: -.25rem;\n    background-color: #007bff;\n    border: 0;\n    border-radius: 1rem;\n    transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out;\n    -webkit-appearance: none;\n    appearance: none\n}\n\n@media screen and (prefers-reduced-motion:reduce) {\n    .custom-range::-webkit-slider-thumb {\n        transition: none\n    }\n}\n\n.custom-range::-webkit-slider-thumb:active {\n    background-color: #b3d7ff\n}\n\n.custom-range::-webkit-slider-runnable-track {\n    width: 100%;\n    height: .5rem;\n    color: transparent;\n    cursor: pointer;\n    background-color: #dee2e6;\n    border-color: transparent;\n    border-radius: 1rem\n}\n\n.custom-range::-moz-range-thumb {\n    width: 1rem;\n    height: 1rem;\n    background-color: #007bff;\n    border: 0;\n    border-radius: 1rem;\n    transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out;\n    -moz-appearance: none;\n    appearance: none\n}\n\n@media screen and (prefers-reduced-motion:reduce) {\n    .custom-range::-moz-range-thumb {\n        transition: none\n    }\n}\n\n.custom-range::-moz-range-thumb:active {\n    background-color: #b3d7ff\n}\n\n.custom-range::-moz-range-track {\n    width: 100%;\n    height: .5rem;\n    color: transparent;\n    cursor: pointer;\n    background-color: #dee2e6;\n    border-color: transparent;\n    border-radius: 1rem\n}\n\n.custom-range::-ms-thumb {\n    width: 1rem;\n    height: 1rem;\n    margin-top: 0;\n    margin-right: .2rem;\n    margin-left: .2rem;\n    background-color: #007bff;\n    border: 0;\n    border-radius: 1rem;\n    transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out;\n    appearance: none\n}\n\n@media screen and (prefers-reduced-motion:reduce) {\n    .custom-range::-ms-thumb {\n        transition: none\n    }\n}\n\n.custom-range::-ms-thumb:active {\n    background-color: #b3d7ff\n}\n\n.custom-range::-ms-track {\n    width: 100%;\n    height: .5rem;\n    color: transparent;\n    cursor: pointer;\n    background-color: transparent;\n    border-color: transparent;\n    border-width: .5rem\n}\n\n.custom-range::-ms-fill-lower {\n    background-color: #dee2e6;\n    border-radius: 1rem\n}\n\n.custom-range::-ms-fill-upper {\n    margin-right: 15px;\n    background-color: #dee2e6;\n    border-radius: 1rem\n}\n\n.custom-control-label::before,\n.custom-file-label,\n.custom-select {\n    transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out\n}\n\n@media screen and (prefers-reduced-motion:reduce) {\n    .custom-control-label::before,\n    .custom-file-label,\n    .custom-select {\n        transition: none\n    }\n}\n\n.nav {\n    display: -ms-flexbox;\n    display: flex;\n    -ms-flex-wrap: wrap;\n    flex-wrap: wrap;\n    padding-left: 0;\n    margin-bottom: 0;\n    list-style: none\n}\n\n.nav-link {\n    display: block;\n    padding: .5rem 1rem\n}\n\n.nav-link:focus,\n.nav-link:hover {\n    text-decoration: none\n}\n\n.nav-link.disabled {\n    color: #6c757d\n}\n\n.nav-tabs {\n    border-bottom: 1px solid #dee2e6\n}\n\n.nav-tabs .nav-item {\n    margin-bottom: -1px\n}\n\n.nav-tabs .nav-link {\n    border: 1px solid transparent;\n    border-top-left-radius: .25rem;\n    border-top-right-radius: .25rem\n}\n\n.nav-tabs .nav-link:focus,\n.nav-tabs .nav-link:hover {\n    border-color: #e9ecef #e9ecef #dee2e6\n}\n\n.nav-tabs .nav-link.disabled {\n    color: #6c757d;\n    background-color: transparent;\n    border-color: transparent\n}\n\n.nav-tabs .nav-item.show .nav-link,\n.nav-tabs .nav-link.active {\n    color: #495057;\n    background-color: #fff;\n    border-color: #dee2e6 #dee2e6 #fff\n}\n\n.nav-tabs .dropdown-menu {\n    margin-top: -1px;\n    border-top-left-radius: 0;\n    border-top-right-radius: 0\n}\n\n.nav-pills .nav-link {\n    border-radius: .25rem\n}\n\n.nav-pills .nav-link.active,\n.nav-pills .show>.nav-link {\n    color: #fff;\n    background-color: #007bff\n}\n\n.nav-fill .nav-item {\n    -ms-flex: 1 1 auto;\n    flex: 1 1 auto;\n    text-align: center\n}\n\n.nav-justified .nav-item {\n    -ms-flex-preferred-size: 0;\n    flex-basis: 0;\n    -ms-flex-positive: 1;\n    flex-grow: 1;\n    text-align: center\n}\n\n.tab-content>.tab-pane {\n    display: none\n}\n\n.tab-content>.active {\n    display: block\n}\n\n.navbar {\n    position: relative;\n    display: -ms-flexbox;\n    display: flex;\n    -ms-flex-wrap: wrap;\n    flex-wrap: wrap;\n    -ms-flex-align: center;\n    align-items: center;\n    -ms-flex-pack: justify;\n    justify-content: space-between;\n    padding: .5rem 1rem\n}\n\n.navbar>.container,\n.navbar>.container-fluid {\n    display: -ms-flexbox;\n    display: flex;\n    -ms-flex-wrap: wrap;\n    flex-wrap: wrap;\n    -ms-flex-align: center;\n    align-items: center;\n    -ms-flex-pack: justify;\n    justify-content: space-between\n}\n\n.navbar-brand {\n    display: inline-block;\n    padding-top: .3125rem;\n    padding-bottom: .3125rem;\n    margin-right: 1rem;\n    font-size: 1.25rem;\n    line-height: inherit;\n    white-space: nowrap\n}\n\n.navbar-brand:focus,\n.navbar-brand:hover {\n    text-decoration: none\n}\n\n.navbar-nav {\n    display: -ms-flexbox;\n    display: flex;\n    -ms-flex-direction: column;\n    flex-direction: column;\n    padding-left: 0;\n    margin-bottom: 0;\n    list-style: none\n}\n\n.navbar-nav .nav-link {\n    padding-right: 0;\n    padding-left: 0\n}\n\n.navbar-nav .dropdown-menu {\n    position: static;\n    float: none\n}\n\n.navbar-text {\n    display: inline-block;\n    padding-top: .5rem;\n    padding-bottom: .5rem\n}\n\n.navbar-collapse {\n    -ms-flex-preferred-size: 100%;\n    flex-basis: 100%;\n    -ms-flex-positive: 1;\n    flex-grow: 1;\n    -ms-flex-align: center;\n    align-items: center\n}\n\n.navbar-toggler {\n    padding: .25rem .75rem;\n    font-size: 1.25rem;\n    line-height: 1;\n    background-color: transparent;\n    border: 1px solid transparent;\n    border-radius: .25rem\n}\n\n.navbar-toggler:focus,\n.navbar-toggler:hover {\n    text-decoration: none\n}\n\n.navbar-toggler:not(:disabled):not(.disabled) {\n    cursor: pointer\n}\n\n.navbar-toggler-icon {\n    display: inline-block;\n    width: 1.5em;\n    height: 1.5em;\n    vertical-align: middle;\n    content: \"\";\n    background: no-repeat center center;\n    background-size: 100% 100%\n}\n\n@media (max-width:575.98px) {\n    .navbar-expand-sm>.container,\n    .navbar-expand-sm>.container-fluid {\n        padding-right: 0;\n        padding-left: 0\n    }\n}\n\n@media (min-width:576px) {\n    .navbar-expand-sm {\n        -ms-flex-flow: row nowrap;\n        flex-flow: row nowrap;\n        -ms-flex-pack: start;\n        justify-content: flex-start\n    }\n    .navbar-expand-sm .navbar-nav {\n        -ms-flex-direction: row;\n        flex-direction: row\n    }\n    .navbar-expand-sm .navbar-nav .dropdown-menu {\n        position: absolute\n    }\n    .navbar-expand-sm .navbar-nav .nav-link {\n        padding-right: .5rem;\n        padding-left: .5rem\n    }\n    .navbar-expand-sm>.container,\n    .navbar-expand-sm>.container-fluid {\n        -ms-flex-wrap: nowrap;\n        flex-wrap: nowrap\n    }\n    .navbar-expand-sm .navbar-collapse {\n        display: -ms-flexbox !important;\n        display: flex !important;\n        -ms-flex-preferred-size: auto;\n        flex-basis: auto\n    }\n    .navbar-expand-sm .navbar-toggler {\n        display: none\n    }\n}\n\n@media (max-width:767.98px) {\n    .navbar-expand-md>.container,\n    .navbar-expand-md>.container-fluid {\n        padding-right: 0;\n        padding-left: 0\n    }\n}\n\n@media (min-width:768px) {\n    .navbar-expand-md {\n        -ms-flex-flow: row nowrap;\n        flex-flow: row nowrap;\n        -ms-flex-pack: start;\n        justify-content: flex-start\n    }\n    .navbar-expand-md .navbar-nav {\n        -ms-flex-direction: row;\n        flex-direction: row\n    }\n    .navbar-expand-md .navbar-nav .dropdown-menu {\n        position: absolute\n    }\n    .navbar-expand-md .navbar-nav .nav-link {\n        padding-right: .5rem;\n        padding-left: .5rem\n    }\n    .navbar-expand-md>.container,\n    .navbar-expand-md>.container-fluid {\n        -ms-flex-wrap: nowrap;\n        flex-wrap: nowrap\n    }\n    .navbar-expand-md .navbar-collapse {\n        display: -ms-flexbox !important;\n        display: flex !important;\n        -ms-flex-preferred-size: auto;\n        flex-basis: auto\n    }\n    .navbar-expand-md .navbar-toggler {\n        display: none\n    }\n}\n\n@media (max-width:991.98px) {\n    .navbar-expand-lg>.container,\n    .navbar-expand-lg>.container-fluid {\n        padding-right: 0;\n        padding-left: 0\n    }\n}\n\n@media (min-width:992px) {\n    .navbar-expand-lg {\n        -ms-flex-flow: row nowrap;\n        flex-flow: row nowrap;\n        -ms-flex-pack: start;\n        justify-content: flex-start\n    }\n    .navbar-expand-lg .navbar-nav {\n        -ms-flex-direction: row;\n        flex-direction: row\n    }\n    .navbar-expand-lg .navbar-nav .dropdown-menu {\n        position: absolute\n    }\n    .navbar-expand-lg .navbar-nav .nav-link {\n        padding-right: .5rem;\n        padding-left: .5rem\n    }\n    .navbar-expand-lg>.container,\n    .navbar-expand-lg>.container-fluid {\n        -ms-flex-wrap: nowrap;\n        flex-wrap: nowrap\n    }\n    .navbar-expand-lg .navbar-collapse {\n        display: -ms-flexbox !important;\n        display: flex !important;\n        -ms-flex-preferred-size: auto;\n        flex-basis: auto\n    }\n    .navbar-expand-lg .navbar-toggler {\n        display: none\n    }\n}\n\n@media (max-width:1199.98px) {\n    .navbar-expand-xl>.container,\n    .navbar-expand-xl>.container-fluid {\n        padding-right: 0;\n        padding-left: 0\n    }\n}\n\n@media (min-width:1200px) {\n    .navbar-expand-xl {\n        -ms-flex-flow: row nowrap;\n        flex-flow: row nowrap;\n        -ms-flex-pack: start;\n        justify-content: flex-start\n    }\n    .navbar-expand-xl .navbar-nav {\n        -ms-flex-direction: row;\n        flex-direction: row\n    }\n    .navbar-expand-xl .navbar-nav .dropdown-menu {\n        position: absolute\n    }\n    .navbar-expand-xl .navbar-nav .nav-link {\n        padding-right: .5rem;\n        padding-left: .5rem\n    }\n    .navbar-expand-xl>.container,\n    .navbar-expand-xl>.container-fluid {\n        -ms-flex-wrap: nowrap;\n        flex-wrap: nowrap\n    }\n    .navbar-expand-xl .navbar-collapse {\n        display: -ms-flexbox !important;\n        display: flex !important;\n        -ms-flex-preferred-size: auto;\n        flex-basis: auto\n    }\n    .navbar-expand-xl .navbar-toggler {\n        display: none\n    }\n}\n\n.navbar-expand {\n    -ms-flex-flow: row nowrap;\n    flex-flow: row nowrap;\n    -ms-flex-pack: start;\n    justify-content: flex-start\n}\n\n.navbar-expand>.container,\n.navbar-expand>.container-fluid {\n    padding-right: 0;\n    padding-left: 0\n}\n\n.navbar-expand .navbar-nav {\n    -ms-flex-direction: row;\n    flex-direction: row\n}\n\n.navbar-expand .navbar-nav .dropdown-menu {\n    position: absolute\n}\n\n.navbar-expand .navbar-nav .nav-link {\n    padding-right: .5rem;\n    padding-left: .5rem\n}\n\n.navbar-expand>.container,\n.navbar-expand>.container-fluid {\n    -ms-flex-wrap: nowrap;\n    flex-wrap: nowrap\n}\n\n.navbar-expand .navbar-collapse {\n    display: -ms-flexbox !important;\n    display: flex !important;\n    -ms-flex-preferred-size: auto;\n    flex-basis: auto\n}\n\n.navbar-expand .navbar-toggler {\n    display: none\n}\n\n.navbar-light .navbar-brand {\n    color: rgba(0, 0, 0, .9)\n}\n\n.navbar-light .navbar-brand:focus,\n.navbar-light .navbar-brand:hover {\n    color: rgba(0, 0, 0, .9)\n}\n\n.navbar-light .navbar-nav .nav-link {\n    color: rgba(0, 0, 0, .5)\n}\n\n.navbar-light .navbar-nav .nav-link:focus,\n.navbar-light .navbar-nav .nav-link:hover {\n    color: rgba(0, 0, 0, .7)\n}\n\n.navbar-light .navbar-nav .nav-link.disabled {\n    color: rgba(0, 0, 0, .3)\n}\n\n.navbar-light .navbar-nav .active>.nav-link,\n.navbar-light .navbar-nav .nav-link.active,\n.navbar-light .navbar-nav .nav-link.show,\n.navbar-light .navbar-nav .show>.nav-link {\n    color: rgba(0, 0, 0, .9)\n}\n\n.navbar-light .navbar-toggler {\n    color: rgba(0, 0, 0, .5);\n    border-color: rgba(0, 0, 0, .1)\n}\n\n.navbar-light .navbar-toggler-icon {\n    background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\")\n}\n\n.navbar-light .navbar-text {\n    color: rgba(0, 0, 0, .5)\n}\n\n.navbar-light .navbar-text a {\n    color: rgba(0, 0, 0, .9)\n}\n\n.navbar-light .navbar-text a:focus,\n.navbar-light .navbar-text a:hover {\n    color: rgba(0, 0, 0, .9)\n}\n\n.navbar-dark .navbar-brand {\n    color: #fff\n}\n\n.navbar-dark .navbar-brand:focus,\n.navbar-dark .navbar-brand:hover {\n    color: #fff\n}\n\n.navbar-dark .navbar-nav .nav-link {\n    color: rgba(255, 255, 255, .5)\n}\n\n.navbar-dark .navbar-nav .nav-link:focus,\n.navbar-dark .navbar-nav .nav-link:hover {\n    color: rgba(255, 255, 255, .75)\n}\n\n.navbar-dark .navbar-nav .nav-link.disabled {\n    color: rgba(255, 255, 255, .25)\n}\n\n.navbar-dark .navbar-nav .active>.nav-link,\n.navbar-dark .navbar-nav .nav-link.active,\n.navbar-dark .navbar-nav .nav-link.show,\n.navbar-dark .navbar-nav .show>.nav-link {\n    color: #fff\n}\n\n.navbar-dark .navbar-toggler {\n    color: rgba(255, 255, 255, .5);\n    border-color: rgba(255, 255, 255, .1)\n}\n\n.navbar-dark .navbar-toggler-icon {\n    background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\")\n}\n\n.navbar-dark .navbar-text {\n    color: rgba(255, 255, 255, .5)\n}\n\n.navbar-dark .navbar-text a {\n    color: #fff\n}\n\n.navbar-dark .navbar-text a:focus,\n.navbar-dark .navbar-text a:hover {\n    color: #fff\n}\n\n.card {\n    position: relative;\n    display: -ms-flexbox;\n    display: flex;\n    -ms-flex-direction: column;\n    flex-direction: column;\n    min-width: 0;\n    word-wrap: break-word;\n    background-color: #fff;\n    background-clip: border-box;\n    border: 1px solid rgba(0, 0, 0, .125);\n    border-radius: .25rem\n}\n\n.card>hr {\n    margin-right: 0;\n    margin-left: 0\n}\n\n.card>.list-group:first-child .list-group-item:first-child {\n    border-top-left-radius: .25rem;\n    border-top-right-radius: .25rem\n}\n\n.card>.list-group:last-child .list-group-item:last-child {\n    border-bottom-right-radius: .25rem;\n    border-bottom-left-radius: .25rem\n}\n\n.card-body {\n    -ms-flex: 1 1 auto;\n    flex: 1 1 auto;\n    padding: 1.25rem\n}\n\n.card-title {\n    margin-bottom: .75rem\n}\n\n.card-subtitle {\n    margin-top: -.375rem;\n    margin-bottom: 0\n}\n\n.card-text:last-child {\n    margin-bottom: 0\n}\n\n.card-link:hover {\n    text-decoration: none\n}\n\n.card-link+.card-link {\n    margin-left: 1.25rem\n}\n\n.card-header {\n    padding: .75rem 1.25rem;\n    margin-bottom: 0;\n    background-color: rgba(0, 0, 0, .03);\n    border-bottom: 1px solid rgba(0, 0, 0, .125)\n}\n\n.card-header:first-child {\n    border-radius: calc(.25rem - 1px) calc(.25rem - 1px) 0 0\n}\n\n.card-header+.list-group .list-group-item:first-child {\n    border-top: 0\n}\n\n.card-footer {\n    padding: .75rem 1.25rem;\n    background-color: rgba(0, 0, 0, .03);\n    border-top: 1px solid rgba(0, 0, 0, .125)\n}\n\n.card-footer:last-child {\n    border-radius: 0 0 calc(.25rem - 1px) calc(.25rem - 1px)\n}\n\n.card-header-tabs {\n    margin-right: -.625rem;\n    margin-bottom: -.75rem;\n    margin-left: -.625rem;\n    border-bottom: 0\n}\n\n.card-header-pills {\n    margin-right: -.625rem;\n    margin-left: -.625rem\n}\n\n.card-img-overlay {\n    position: absolute;\n    top: 0;\n    right: 0;\n    bottom: 0;\n    left: 0;\n    padding: 1.25rem\n}\n\n.card-img {\n    width: 100%;\n    border-radius: calc(.25rem - 1px)\n}\n\n.card-img-top {\n    width: 100%;\n    border-top-left-radius: calc(.25rem - 1px);\n    border-top-right-radius: calc(.25rem - 1px)\n}\n\n.card-img-bottom {\n    width: 100%;\n    border-bottom-right-radius: calc(.25rem - 1px);\n    border-bottom-left-radius: calc(.25rem - 1px)\n}\n\n.card-deck {\n    display: -ms-flexbox;\n    display: flex;\n    -ms-flex-direction: column;\n    flex-direction: column\n}\n\n.card-deck .card {\n    margin-bottom: 15px\n}\n\n@media (min-width:576px) {\n    .card-deck {\n        -ms-flex-flow: row wrap;\n        flex-flow: row wrap;\n        margin-right: -15px;\n        margin-left: -15px\n    }\n    .card-deck .card {\n        display: -ms-flexbox;\n        display: flex;\n        -ms-flex: 1 0 0%;\n        flex: 1 0 0%;\n        -ms-flex-direction: column;\n        flex-direction: column;\n        margin-right: 15px;\n        margin-bottom: 0;\n        margin-left: 15px\n    }\n}\n\n.card-group {\n    display: -ms-flexbox;\n    display: flex;\n    -ms-flex-direction: column;\n    flex-direction: column\n}\n\n.card-group>.card {\n    margin-bottom: 15px\n}\n\n@media (min-width:576px) {\n    .card-group {\n        -ms-flex-flow: row wrap;\n        flex-flow: row wrap\n    }\n    .card-group>.card {\n        -ms-flex: 1 0 0%;\n        flex: 1 0 0%;\n        margin-bottom: 0\n    }\n    .card-group>.card+.card {\n        margin-left: 0;\n        border-left: 0\n    }\n    .card-group>.card:first-child {\n        border-top-right-radius: 0;\n        border-bottom-right-radius: 0\n    }\n    .card-group>.card:first-child .card-header,\n    .card-group>.card:first-child .card-img-top {\n        border-top-right-radius: 0\n    }\n    .card-group>.card:first-child .card-footer,\n    .card-group>.card:first-child .card-img-bottom {\n        border-bottom-right-radius: 0\n    }\n    .card-group>.card:last-child {\n        border-top-left-radius: 0;\n        border-bottom-left-radius: 0\n    }\n    .card-group>.card:last-child .card-header,\n    .card-group>.card:last-child .card-img-top {\n        border-top-left-radius: 0\n    }\n    .card-group>.card:last-child .card-footer,\n    .card-group>.card:last-child .card-img-bottom {\n        border-bottom-left-radius: 0\n    }\n    .card-group>.card:only-child {\n        border-radius: .25rem\n    }\n    .card-group>.card:only-child .card-header,\n    .card-group>.card:only-child .card-img-top {\n        border-top-left-radius: .25rem;\n        border-top-right-radius: .25rem\n    }\n    .card-group>.card:only-child .card-footer,\n    .card-group>.card:only-child .card-img-bottom {\n        border-bottom-right-radius: .25rem;\n        border-bottom-left-radius: .25rem\n    }\n    .card-group>.card:not(:first-child):not(:last-child):not(:only-child) {\n        border-radius: 0\n    }\n    .card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-footer,\n    .card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-header,\n    .card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,\n    .card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-top {\n        border-radius: 0\n    }\n}\n\n.card-columns .card {\n    margin-bottom: .75rem\n}\n\n@media (min-width:576px) {\n    .card-columns {\n        -webkit-column-count: 3;\n        -moz-column-count: 3;\n        column-count: 3;\n        -webkit-column-gap: 1.25rem;\n        -moz-column-gap: 1.25rem;\n        column-gap: 1.25rem;\n        orphans: 1;\n        widows: 1\n    }\n    .card-columns .card {\n        display: inline-block;\n        width: 100%\n    }\n}\n\n.accordion .card:not(:first-of-type):not(:last-of-type) {\n    border-bottom: 0;\n    border-radius: 0\n}\n\n.accordion .card:not(:first-of-type) .card-header:first-child {\n    border-radius: 0\n}\n\n.accordion .card:first-of-type {\n    border-bottom: 0;\n    border-bottom-right-radius: 0;\n    border-bottom-left-radius: 0\n}\n\n.accordion .card:last-of-type {\n    border-top-left-radius: 0;\n    border-top-right-radius: 0\n}\n\n.breadcrumb {\n    display: -ms-flexbox;\n    display: flex;\n    -ms-flex-wrap: wrap;\n    flex-wrap: wrap;\n    padding: .75rem 1rem;\n    margin-bottom: 1rem;\n    list-style: none;\n    background-color: #e9ecef;\n    border-radius: .25rem\n}\n\n.breadcrumb-item+.breadcrumb-item {\n    padding-left: .5rem\n}\n\n.breadcrumb-item+.breadcrumb-item::before {\n    display: inline-block;\n    padding-right: .5rem;\n    color: #6c757d;\n    content: \"/\"\n}\n\n.breadcrumb-item+.breadcrumb-item:hover::before {\n    text-decoration: underline\n}\n\n.breadcrumb-item+.breadcrumb-item:hover::before {\n    text-decoration: none\n}\n\n.breadcrumb-item.active {\n    color: #6c757d\n}\n\n.pagination {\n    display: -ms-flexbox;\n    display: flex;\n    padding-left: 0;\n    list-style: none;\n    border-radius: .25rem\n}\n\n.page-link {\n    position: relative;\n    display: block;\n    padding: .5rem .75rem;\n    margin-left: -1px;\n    line-height: 1.25;\n    color: #007bff;\n    background-color: #fff;\n    border: 1px solid #dee2e6\n}\n\n.page-link:hover {\n    z-index: 2;\n    color: #0056b3;\n    text-decoration: none;\n    background-color: #e9ecef;\n    border-color: #dee2e6\n}\n\n.page-link:focus {\n    z-index: 2;\n    outline: 0;\n    box-shadow: 0 0 0 .2rem rgba(0, 123, 255, .25)\n}\n\n.page-link:not(:disabled):not(.disabled) {\n    cursor: pointer\n}\n\n.page-item:first-child .page-link {\n    margin-left: 0;\n    border-top-left-radius: .25rem;\n    border-bottom-left-radius: .25rem\n}\n\n.page-item:last-child .page-link {\n    border-top-right-radius: .25rem;\n    border-bottom-right-radius: .25rem\n}\n\n.page-item.active .page-link {\n    z-index: 1;\n    color: #fff;\n    background-color: #007bff;\n    border-color: #007bff\n}\n\n.page-item.disabled .page-link {\n    color: #6c757d;\n    pointer-events: none;\n    cursor: auto;\n    background-color: #fff;\n    border-color: #dee2e6\n}\n\n.pagination-lg .page-link {\n    padding: .75rem 1.5rem;\n    font-size: 1.25rem;\n    line-height: 1.5\n}\n\n.pagination-lg .page-item:first-child .page-link {\n    border-top-left-radius: .3rem;\n    border-bottom-left-radius: .3rem\n}\n\n.pagination-lg .page-item:last-child .page-link {\n    border-top-right-radius: .3rem;\n    border-bottom-right-radius: .3rem\n}\n\n.pagination-sm .page-link {\n    padding: .25rem .5rem;\n    font-size: .875rem;\n    line-height: 1.5\n}\n\n.pagination-sm .page-item:first-child .page-link {\n    border-top-left-radius: .2rem;\n    border-bottom-left-radius: .2rem\n}\n\n.pagination-sm .page-item:last-child .page-link {\n    border-top-right-radius: .2rem;\n    border-bottom-right-radius: .2rem\n}\n\n.badge {\n    display: inline-block;\n    padding: .25em .4em;\n    font-size: 75%;\n    font-weight: 700;\n    line-height: 1;\n    text-align: center;\n    white-space: nowrap;\n    vertical-align: baseline;\n    border-radius: .25rem\n}\n\n.badge:empty {\n    display: none\n}\n\n.btn .badge {\n    position: relative;\n    top: -1px\n}\n\n.badge-pill {\n    padding-right: .6em;\n    padding-left: .6em;\n    border-radius: 10rem\n}\n\n.badge-primary {\n    color: #fff;\n    background-color: #007bff\n}\n\n.badge-primary[href]:focus,\n.badge-primary[href]:hover {\n    color: #fff;\n    text-decoration: none;\n    background-color: #0062cc\n}\n\n.badge-secondary {\n    color: #fff;\n    background-color: #6c757d\n}\n\n.badge-secondary[href]:focus,\n.badge-secondary[href]:hover {\n    color: #fff;\n    text-decoration: none;\n    background-color: #545b62\n}\n\n.badge-success {\n    color: #fff;\n    background-color: #28a745\n}\n\n.badge-success[href]:focus,\n.badge-success[href]:hover {\n    color: #fff;\n    text-decoration: none;\n    background-color: #1e7e34\n}\n\n.badge-info {\n    color: #fff;\n    background-color: #17a2b8\n}\n\n.badge-info[href]:focus,\n.badge-info[href]:hover {\n    color: #fff;\n    text-decoration: none;\n    background-color: #117a8b\n}\n\n.badge-warning {\n    color: #212529;\n    background-color: #ffc107\n}\n\n.badge-warning[href]:focus,\n.badge-warning[href]:hover {\n    color: #212529;\n    text-decoration: none;\n    background-color: #d39e00\n}\n\n.badge-danger {\n    color: #fff;\n    background-color: #dc3545\n}\n\n.badge-danger[href]:focus,\n.badge-danger[href]:hover {\n    color: #fff;\n    text-decoration: none;\n    background-color: #bd2130\n}\n\n.badge-light {\n    color: #212529;\n    background-color: #f8f9fa\n}\n\n.badge-light[href]:focus,\n.badge-light[href]:hover {\n    color: #212529;\n    text-decoration: none;\n    background-color: #dae0e5\n}\n\n.badge-dark {\n    color: #fff;\n    background-color: #343a40\n}\n\n.badge-dark[href]:focus,\n.badge-dark[href]:hover {\n    color: #fff;\n    text-decoration: none;\n    background-color: #1d2124\n}\n\n.jumbotron {\n    padding: 2rem 1rem;\n    margin-bottom: 2rem;\n    background-color: #e9ecef;\n    border-radius: .3rem\n}\n\n@media (min-width:576px) {\n    .jumbotron {\n        padding: 4rem 2rem\n    }\n}\n\n.jumbotron-fluid {\n    padding-right: 0;\n    padding-left: 0;\n    border-radius: 0\n}\n\n.alert {\n    position: relative;\n    padding: .75rem 1.25rem;\n    margin-bottom: 1rem;\n    border: 1px solid transparent;\n    border-radius: .25rem\n}\n\n.alert-heading {\n    color: inherit\n}\n\n.alert-link {\n    font-weight: 700\n}\n\n.alert-dismissible {\n    padding-right: 4rem\n}\n\n.alert-dismissible .close {\n    position: absolute;\n    top: 0;\n    right: 0;\n    padding: .75rem 1.25rem;\n    color: inherit\n}\n\n.alert-primary {\n    color: #004085;\n    background-color: #cce5ff;\n    border-color: #b8daff\n}\n\n.alert-primary hr {\n    border-top-color: #9fcdff\n}\n\n.alert-primary .alert-link {\n    color: #002752\n}\n\n.alert-secondary {\n    color: #383d41;\n    background-color: #e2e3e5;\n    border-color: #d6d8db\n}\n\n.alert-secondary hr {\n    border-top-color: #c8cbcf\n}\n\n.alert-secondary .alert-link {\n    color: #202326\n}\n\n.alert-success {\n    color: #155724;\n    background-color: #d4edda;\n    border-color: #c3e6cb\n}\n\n.alert-success hr {\n    border-top-color: #b1dfbb\n}\n\n.alert-success .alert-link {\n    color: #0b2e13\n}\n\n.alert-info {\n    color: #0c5460;\n    background-color: #d1ecf1;\n    border-color: #bee5eb\n}\n\n.alert-info hr {\n    border-top-color: #abdde5\n}\n\n.alert-info .alert-link {\n    color: #062c33\n}\n\n.alert-warning {\n    color: #856404;\n    background-color: #fff3cd;\n    border-color: #ffeeba\n}\n\n.alert-warning hr {\n    border-top-color: #ffe8a1\n}\n\n.alert-warning .alert-link {\n    color: #533f03\n}\n\n.alert-danger {\n    color: #721c24;\n    background-color: #f8d7da;\n    border-color: #f5c6cb\n}\n\n.alert-danger hr {\n    border-top-color: #f1b0b7\n}\n\n.alert-danger .alert-link {\n    color: #491217\n}\n\n.alert-light {\n    color: #818182;\n    background-color: #fefefe;\n    border-color: #fdfdfe\n}\n\n.alert-light hr {\n    border-top-color: #ececf6\n}\n\n.alert-light .alert-link {\n    color: #686868\n}\n\n.alert-dark {\n    color: #1b1e21;\n    background-color: #d6d8d9;\n    border-color: #c6c8ca\n}\n\n.alert-dark hr {\n    border-top-color: #b9bbbe\n}\n\n.alert-dark .alert-link {\n    color: #040505\n}\n\n@-webkit-keyframes progress-bar-stripes {\n    from {\n        background-position: 1rem 0\n    }\n    to {\n        background-position: 0 0\n    }\n}\n\n@keyframes progress-bar-stripes {\n    from {\n        background-position: 1rem 0\n    }\n    to {\n        background-position: 0 0\n    }\n}\n\n.progress {\n    display: -ms-flexbox;\n    display: flex;\n    height: 1rem;\n    overflow: hidden;\n    font-size: .75rem;\n    background-color: #e9ecef;\n    border-radius: .25rem\n}\n\n.progress-bar {\n    display: -ms-flexbox;\n    display: flex;\n    -ms-flex-direction: column;\n    flex-direction: column;\n    -ms-flex-pack: center;\n    justify-content: center;\n    color: #fff;\n    text-align: center;\n    white-space: nowrap;\n    background-color: #007bff;\n    transition: width .6s ease\n}\n\n@media screen and (prefers-reduced-motion:reduce) {\n    .progress-bar {\n        transition: none\n    }\n}\n\n.progress-bar-striped {\n    background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n    background-size: 1rem 1rem\n}\n\n.progress-bar-animated {\n    -webkit-animation: progress-bar-stripes 1s linear infinite;\n    animation: progress-bar-stripes 1s linear infinite\n}\n\n.media {\n    display: -ms-flexbox;\n    display: flex;\n    -ms-flex-align: start;\n    align-items: flex-start\n}\n\n.media-body {\n    -ms-flex: 1;\n    flex: 1\n}\n\n.list-group {\n    display: -ms-flexbox;\n    display: flex;\n    -ms-flex-direction: column;\n    flex-direction: column;\n    padding-left: 0;\n    margin-bottom: 0\n}\n\n.list-group-item-action {\n    width: 100%;\n    color: #495057;\n    text-align: inherit\n}\n\n.list-group-item-action:focus,\n.list-group-item-action:hover {\n    color: #495057;\n    text-decoration: none;\n    background-color: #f8f9fa\n}\n\n.list-group-item-action:active {\n    color: #212529;\n    background-color: #e9ecef\n}\n\n.list-group-item {\n    position: relative;\n    display: block;\n    padding: .75rem 1.25rem;\n    margin-bottom: -1px;\n    background-color: #fff;\n    border: 1px solid rgba(0, 0, 0, .125)\n}\n\n.list-group-item:first-child {\n    border-top-left-radius: .25rem;\n    border-top-right-radius: .25rem\n}\n\n.list-group-item:last-child {\n    margin-bottom: 0;\n    border-bottom-right-radius: .25rem;\n    border-bottom-left-radius: .25rem\n}\n\n.list-group-item:focus,\n.list-group-item:hover {\n    z-index: 1;\n    text-decoration: none\n}\n\n.list-group-item.disabled,\n.list-group-item:disabled {\n    color: #6c757d;\n    background-color: #fff\n}\n\n.list-group-item.active {\n    z-index: 2;\n    color: #fff;\n    background-color: #007bff;\n    border-color: #007bff\n}\n\n.list-group-flush .list-group-item {\n    border-right: 0;\n    border-left: 0;\n    border-radius: 0\n}\n\n.list-group-flush:first-child .list-group-item:first-child {\n    border-top: 0\n}\n\n.list-group-flush:last-child .list-group-item:last-child {\n    border-bottom: 0\n}\n\n.list-group-item-primary {\n    color: #004085;\n    background-color: #b8daff\n}\n\n.list-group-item-primary.list-group-item-action:focus,\n.list-group-item-primary.list-group-item-action:hover {\n    color: #004085;\n    background-color: #9fcdff\n}\n\n.list-group-item-primary.list-group-item-action.active {\n    color: #fff;\n    background-color: #004085;\n    border-color: #004085\n}\n\n.list-group-item-secondary {\n    color: #383d41;\n    background-color: #d6d8db\n}\n\n.list-group-item-secondary.list-group-item-action:focus,\n.list-group-item-secondary.list-group-item-action:hover {\n    color: #383d41;\n    background-color: #c8cbcf\n}\n\n.list-group-item-secondary.list-group-item-action.active {\n    color: #fff;\n    background-color: #383d41;\n    border-color: #383d41\n}\n\n.list-group-item-success {\n    color: #155724;\n    background-color: #c3e6cb\n}\n\n.list-group-item-success.list-group-item-action:focus,\n.list-group-item-success.list-group-item-action:hover {\n    color: #155724;\n    background-color: #b1dfbb\n}\n\n.list-group-item-success.list-group-item-action.active {\n    color: #fff;\n    background-color: #155724;\n    border-color: #155724\n}\n\n.list-group-item-info {\n    color: #0c5460;\n    background-color: #bee5eb\n}\n\n.list-group-item-info.list-group-item-action:focus,\n.list-group-item-info.list-group-item-action:hover {\n    color: #0c5460;\n    background-color: #abdde5\n}\n\n.list-group-item-info.list-group-item-action.active {\n    color: #fff;\n    background-color: #0c5460;\n    border-color: #0c5460\n}\n\n.list-group-item-warning {\n    color: #856404;\n    background-color: #ffeeba\n}\n\n.list-group-item-warning.list-group-item-action:focus,\n.list-group-item-warning.list-group-item-action:hover {\n    color: #856404;\n    background-color: #ffe8a1\n}\n\n.list-group-item-warning.list-group-item-action.active {\n    color: #fff;\n    background-color: #856404;\n    border-color: #856404\n}\n\n.list-group-item-danger {\n    color: #721c24;\n    background-color: #f5c6cb\n}\n\n.list-group-item-danger.list-group-item-action:focus,\n.list-group-item-danger.list-group-item-action:hover {\n    color: #721c24;\n    background-color: #f1b0b7\n}\n\n.list-group-item-danger.list-group-item-action.active {\n    color: #fff;\n    background-color: #721c24;\n    border-color: #721c24\n}\n\n.list-group-item-light {\n    color: #818182;\n    background-color: #fdfdfe\n}\n\n.list-group-item-light.list-group-item-action:focus,\n.list-group-item-light.list-group-item-action:hover {\n    color: #818182;\n    background-color: #ececf6\n}\n\n.list-group-item-light.list-group-item-action.active {\n    color: #fff;\n    background-color: #818182;\n    border-color: #818182\n}\n\n.list-group-item-dark {\n    color: #1b1e21;\n    background-color: #c6c8ca\n}\n\n.list-group-item-dark.list-group-item-action:focus,\n.list-group-item-dark.list-group-item-action:hover {\n    color: #1b1e21;\n    background-color: #b9bbbe\n}\n\n.list-group-item-dark.list-group-item-action.active {\n    color: #fff;\n    background-color: #1b1e21;\n    border-color: #1b1e21\n}\n\n.close {\n    float: right;\n    font-size: 1.5rem;\n    font-weight: 700;\n    line-height: 1;\n    color: #000;\n    text-shadow: 0 1px 0 #fff;\n    opacity: .5\n}\n\n.close:not(:disabled):not(.disabled) {\n    cursor: pointer\n}\n\n.close:not(:disabled):not(.disabled):focus,\n.close:not(:disabled):not(.disabled):hover {\n    color: #000;\n    text-decoration: none;\n    opacity: .75\n}\n\nbutton.close {\n    padding: 0;\n    background-color: transparent;\n    border: 0;\n    -webkit-appearance: none\n}\n\n.modal-open {\n    overflow: hidden\n}\n\n.modal-open .modal {\n    overflow-x: hidden;\n    overflow-y: auto\n}\n\n.modal {\n    position: fixed;\n    top: 0;\n    right: 0;\n    bottom: 0;\n    left: 0;\n    z-index: 1050;\n    display: none;\n    overflow: hidden;\n    outline: 0\n}\n\n.modal-dialog {\n    position: relative;\n    width: auto;\n    margin: .5rem;\n    pointer-events: none\n}\n\n.modal.fade .modal-dialog {\n    transition: -webkit-transform .3s ease-out;\n    transition: transform .3s ease-out;\n    transition: transform .3s ease-out, -webkit-transform .3s ease-out;\n    -webkit-transform: translate(0, -25%);\n    transform: translate(0, -25%)\n}\n\n@media screen and (prefers-reduced-motion:reduce) {\n    .modal.fade .modal-dialog {\n        transition: none\n    }\n}\n\n.modal.show .modal-dialog {\n    -webkit-transform: translate(0, 0);\n    transform: translate(0, 0)\n}\n\n.modal-dialog-centered {\n    display: -ms-flexbox;\n    display: flex;\n    -ms-flex-align: center;\n    align-items: center;\n    min-height: calc(100% - (.5rem * 2))\n}\n\n.modal-dialog-centered::before {\n    display: block;\n    height: calc(100vh - (.5rem * 2));\n    content: \"\"\n}\n\n.modal-content {\n    position: relative;\n    display: -ms-flexbox;\n    display: flex;\n    -ms-flex-direction: column;\n    flex-direction: column;\n    width: 100%;\n    pointer-events: auto;\n    background-color: #fff;\n    background-clip: padding-box;\n    border: 1px solid rgba(0, 0, 0, .2);\n    border-radius: .3rem;\n    outline: 0\n}\n\n.modal-backdrop {\n    position: fixed;\n    top: 0;\n    right: 0;\n    bottom: 0;\n    left: 0;\n    z-index: 1040;\n    background-color: #000\n}\n\n.modal-backdrop.fade {\n    opacity: 0\n}\n\n.modal-backdrop.show {\n    opacity: .5\n}\n\n.modal-header {\n    display: -ms-flexbox;\n    display: flex;\n    -ms-flex-align: start;\n    align-items: flex-start;\n    -ms-flex-pack: justify;\n    justify-content: space-between;\n    padding: 1rem;\n    border-bottom: 1px solid #e9ecef;\n    border-top-left-radius: .3rem;\n    border-top-right-radius: .3rem\n}\n\n.modal-header .close {\n    padding: 1rem;\n    margin: -1rem -1rem -1rem auto\n}\n\n.modal-title {\n    margin-bottom: 0;\n    line-height: 1.5\n}\n\n.modal-body {\n    position: relative;\n    -ms-flex: 1 1 auto;\n    flex: 1 1 auto;\n    padding: 1rem\n}\n\n.modal-footer {\n    display: -ms-flexbox;\n    display: flex;\n    -ms-flex-align: center;\n    align-items: center;\n    -ms-flex-pack: end;\n    justify-content: flex-end;\n    padding: 1rem;\n    border-top: 1px solid #e9ecef\n}\n\n.modal-footer>:not(:first-child) {\n    margin-left: .25rem\n}\n\n.modal-footer>:not(:last-child) {\n    margin-right: .25rem\n}\n\n.modal-scrollbar-measure {\n    position: absolute;\n    top: -9999px;\n    width: 50px;\n    height: 50px;\n    overflow: scroll\n}\n\n@media (min-width:576px) {\n    .modal-dialog {\n        max-width: 500px;\n        margin: 1.75rem auto\n    }\n    .modal-dialog-centered {\n        min-height: calc(100% - (1.75rem * 2))\n    }\n    .modal-dialog-centered::before {\n        height: calc(100vh - (1.75rem * 2))\n    }\n    .modal-sm {\n        max-width: 300px\n    }\n}\n\n@media (min-width:992px) {\n    .modal-lg {\n        max-width: 800px\n    }\n}\n\n.tooltip {\n    position: absolute;\n    z-index: 1070;\n    display: block;\n    margin: 0;\n    font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n    font-style: normal;\n    font-weight: 400;\n    line-height: 1.5;\n    text-align: left;\n    text-align: start;\n    text-decoration: none;\n    text-shadow: none;\n    text-transform: none;\n    letter-spacing: normal;\n    word-break: normal;\n    word-spacing: normal;\n    white-space: normal;\n    line-break: auto;\n    font-size: .875rem;\n    word-wrap: break-word;\n    opacity: 0\n}\n\n.tooltip.show {\n    opacity: .9\n}\n\n.tooltip .arrow {\n    position: absolute;\n    display: block;\n    width: .8rem;\n    height: .4rem\n}\n\n.tooltip .arrow::before {\n    position: absolute;\n    content: \"\";\n    border-color: transparent;\n    border-style: solid\n}\n\n.bs-tooltip-auto[x-placement^=top],\n.bs-tooltip-top {\n    padding: .4rem 0\n}\n\n.bs-tooltip-auto[x-placement^=top] .arrow,\n.bs-tooltip-top .arrow {\n    bottom: 0\n}\n\n.bs-tooltip-auto[x-placement^=top] .arrow::before,\n.bs-tooltip-top .arrow::before {\n    top: 0;\n    border-width: .4rem .4rem 0;\n    border-top-color: #000\n}\n\n.bs-tooltip-auto[x-placement^=right],\n.bs-tooltip-right {\n    padding: 0 .4rem\n}\n\n.bs-tooltip-auto[x-placement^=right] .arrow,\n.bs-tooltip-right .arrow {\n    left: 0;\n    width: .4rem;\n    height: .8rem\n}\n\n.bs-tooltip-auto[x-placement^=right] .arrow::before,\n.bs-tooltip-right .arrow::before {\n    right: 0;\n    border-width: .4rem .4rem .4rem 0;\n    border-right-color: #000\n}\n\n.bs-tooltip-auto[x-placement^=bottom],\n.bs-tooltip-bottom {\n    padding: .4rem 0\n}\n\n.bs-tooltip-auto[x-placement^=bottom] .arrow,\n.bs-tooltip-bottom .arrow {\n    top: 0\n}\n\n.bs-tooltip-auto[x-placement^=bottom] .arrow::before,\n.bs-tooltip-bottom .arrow::before {\n    bottom: 0;\n    border-width: 0 .4rem .4rem;\n    border-bottom-color: #000\n}\n\n.bs-tooltip-auto[x-placement^=left],\n.bs-tooltip-left {\n    padding: 0 .4rem\n}\n\n.bs-tooltip-auto[x-placement^=left] .arrow,\n.bs-tooltip-left .arrow {\n    right: 0;\n    width: .4rem;\n    height: .8rem\n}\n\n.bs-tooltip-auto[x-placement^=left] .arrow::before,\n.bs-tooltip-left .arrow::before {\n    left: 0;\n    border-width: .4rem 0 .4rem .4rem;\n    border-left-color: #000\n}\n\n.tooltip-inner {\n    max-width: 200px;\n    padding: .25rem .5rem;\n    color: #fff;\n    text-align: center;\n    background-color: #000;\n    border-radius: .25rem\n}\n\n.popover {\n    position: absolute;\n    top: 0;\n    left: 0;\n    z-index: 1060;\n    display: block;\n    max-width: 276px;\n    font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n    font-style: normal;\n    font-weight: 400;\n    line-height: 1.5;\n    text-align: left;\n    text-align: start;\n    text-decoration: none;\n    text-shadow: none;\n    text-transform: none;\n    letter-spacing: normal;\n    word-break: normal;\n    word-spacing: normal;\n    white-space: normal;\n    line-break: auto;\n    font-size: .875rem;\n    word-wrap: break-word;\n    background-color: #fff;\n    background-clip: padding-box;\n    border: 1px solid rgba(0, 0, 0, .2);\n    border-radius: .3rem\n}\n\n.popover .arrow {\n    position: absolute;\n    display: block;\n    width: 1rem;\n    height: .5rem;\n    margin: 0 .3rem\n}\n\n.popover .arrow::after,\n.popover .arrow::before {\n    position: absolute;\n    display: block;\n    content: \"\";\n    border-color: transparent;\n    border-style: solid\n}\n\n.bs-popover-auto[x-placement^=top],\n.bs-popover-top {\n    margin-bottom: .5rem\n}\n\n.bs-popover-auto[x-placement^=top] .arrow,\n.bs-popover-top .arrow {\n    bottom: calc((.5rem + 1px) * -1)\n}\n\n.bs-popover-auto[x-placement^=top] .arrow::after,\n.bs-popover-auto[x-placement^=top] .arrow::before,\n.bs-popover-top .arrow::after,\n.bs-popover-top .arrow::before {\n    border-width: .5rem .5rem 0\n}\n\n.bs-popover-auto[x-placement^=top] .arrow::before,\n.bs-popover-top .arrow::before {\n    bottom: 0;\n    border-top-color: rgba(0, 0, 0, .25)\n}\n\n.bs-popover-auto[x-placement^=top] .arrow::after,\n.bs-popover-top .arrow::after {\n    bottom: 1px;\n    border-top-color: #fff\n}\n\n.bs-popover-auto[x-placement^=right],\n.bs-popover-right {\n    margin-left: .5rem\n}\n\n.bs-popover-auto[x-placement^=right] .arrow,\n.bs-popover-right .arrow {\n    left: calc((.5rem + 1px) * -1);\n    width: .5rem;\n    height: 1rem;\n    margin: .3rem 0\n}\n\n.bs-popover-auto[x-placement^=right] .arrow::after,\n.bs-popover-auto[x-placement^=right] .arrow::before,\n.bs-popover-right .arrow::after,\n.bs-popover-right .arrow::before {\n    border-width: .5rem .5rem .5rem 0\n}\n\n.bs-popover-auto[x-placement^=right] .arrow::before,\n.bs-popover-right .arrow::before {\n    left: 0;\n    border-right-color: rgba(0, 0, 0, .25)\n}\n\n.bs-popover-auto[x-placement^=right] .arrow::after,\n.bs-popover-right .arrow::after {\n    left: 1px;\n    border-right-color: #fff\n}\n\n.bs-popover-auto[x-placement^=bottom],\n.bs-popover-bottom {\n    margin-top: .5rem\n}\n\n.bs-popover-auto[x-placement^=bottom] .arrow,\n.bs-popover-bottom .arrow {\n    top: calc((.5rem + 1px) * -1)\n}\n\n.bs-popover-auto[x-placement^=bottom] .arrow::after,\n.bs-popover-auto[x-placement^=bottom] .arrow::before,\n.bs-popover-bottom .arrow::after,\n.bs-popover-bottom .arrow::before {\n    border-width: 0 .5rem .5rem .5rem\n}\n\n.bs-popover-auto[x-placement^=bottom] .arrow::before,\n.bs-popover-bottom .arrow::before {\n    top: 0;\n    border-bottom-color: rgba(0, 0, 0, .25)\n}\n\n.bs-popover-auto[x-placement^=bottom] .arrow::after,\n.bs-popover-bottom .arrow::after {\n    top: 1px;\n    border-bottom-color: #fff\n}\n\n.bs-popover-auto[x-placement^=bottom] .popover-header::before,\n.bs-popover-bottom .popover-header::before {\n    position: absolute;\n    top: 0;\n    left: 50%;\n    display: block;\n    width: 1rem;\n    margin-left: -.5rem;\n    content: \"\";\n    border-bottom: 1px solid #f7f7f7\n}\n\n.bs-popover-auto[x-placement^=left],\n.bs-popover-left {\n    margin-right: .5rem\n}\n\n.bs-popover-auto[x-placement^=left] .arrow,\n.bs-popover-left .arrow {\n    right: calc((.5rem + 1px) * -1);\n    width: .5rem;\n    height: 1rem;\n    margin: .3rem 0\n}\n\n.bs-popover-auto[x-placement^=left] .arrow::after,\n.bs-popover-auto[x-placement^=left] .arrow::before,\n.bs-popover-left .arrow::after,\n.bs-popover-left .arrow::before {\n    border-width: .5rem 0 .5rem .5rem\n}\n\n.bs-popover-auto[x-placement^=left] .arrow::before,\n.bs-popover-left .arrow::before {\n    right: 0;\n    border-left-color: rgba(0, 0, 0, .25)\n}\n\n.bs-popover-auto[x-placement^=left] .arrow::after,\n.bs-popover-left .arrow::after {\n    right: 1px;\n    border-left-color: #fff\n}\n\n.popover-header {\n    padding: .5rem .75rem;\n    margin-bottom: 0;\n    font-size: 1rem;\n    color: inherit;\n    background-color: #f7f7f7;\n    border-bottom: 1px solid #ebebeb;\n    border-top-left-radius: calc(.3rem - 1px);\n    border-top-right-radius: calc(.3rem - 1px)\n}\n\n.popover-header:empty {\n    display: none\n}\n\n.popover-body {\n    padding: .5rem .75rem;\n    color: #212529\n}\n\n.carousel {\n    position: relative\n}\n\n.carousel-inner {\n    position: relative;\n    width: 100%;\n    overflow: hidden\n}\n\n.carousel-item {\n    position: relative;\n    display: none;\n    -ms-flex-align: center;\n    align-items: center;\n    width: 100%;\n    -webkit-backface-visibility: hidden;\n    backface-visibility: hidden;\n    -webkit-perspective: 1000px;\n    perspective: 1000px\n}\n\n.carousel-item-next,\n.carousel-item-prev,\n.carousel-item.active {\n    display: block;\n    transition: -webkit-transform .6s ease;\n    transition: transform .6s ease;\n    transition: transform .6s ease, -webkit-transform .6s ease\n}\n\n@media screen and (prefers-reduced-motion:reduce) {\n    .carousel-item-next,\n    .carousel-item-prev,\n    .carousel-item.active {\n        transition: none\n    }\n}\n\n.carousel-item-next,\n.carousel-item-prev {\n    position: absolute;\n    top: 0\n}\n\n.carousel-item-next.carousel-item-left,\n.carousel-item-prev.carousel-item-right {\n    -webkit-transform: translateX(0);\n    transform: translateX(0)\n}\n\n@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)) {\n    .carousel-item-next.carousel-item-left,\n    .carousel-item-prev.carousel-item-right {\n        -webkit-transform: translate3d(0, 0, 0);\n        transform: translate3d(0, 0, 0)\n    }\n}\n\n.active.carousel-item-right,\n.carousel-item-next {\n    -webkit-transform: translateX(100%);\n    transform: translateX(100%)\n}\n\n@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)) {\n    .active.carousel-item-right,\n    .carousel-item-next {\n        -webkit-transform: translate3d(100%, 0, 0);\n        transform: translate3d(100%, 0, 0)\n    }\n}\n\n.active.carousel-item-left,\n.carousel-item-prev {\n    -webkit-transform: translateX(-100%);\n    transform: translateX(-100%)\n}\n\n@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)) {\n    .active.carousel-item-left,\n    .carousel-item-prev {\n        -webkit-transform: translate3d(-100%, 0, 0);\n        transform: translate3d(-100%, 0, 0)\n    }\n}\n\n.carousel-fade .carousel-item {\n    opacity: 0;\n    transition-duration: .6s;\n    transition-property: opacity\n}\n\n.carousel-fade .carousel-item-next.carousel-item-left,\n.carousel-fade .carousel-item-prev.carousel-item-right,\n.carousel-fade .carousel-item.active {\n    opacity: 1\n}\n\n.carousel-fade .active.carousel-item-left,\n.carousel-fade .active.carousel-item-right {\n    opacity: 0\n}\n\n.carousel-fade .active.carousel-item-left,\n.carousel-fade .active.carousel-item-prev,\n.carousel-fade .carousel-item-next,\n.carousel-fade .carousel-item-prev,\n.carousel-fade .carousel-item.active {\n    -webkit-transform: translateX(0);\n    transform: translateX(0)\n}\n\n@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)) {\n    .carousel-fade .active.carousel-item-left,\n    .carousel-fade .active.carousel-item-prev,\n    .carousel-fade .carousel-item-next,\n    .carousel-fade .carousel-item-prev,\n    .carousel-fade .carousel-item.active {\n        -webkit-transform: translate3d(0, 0, 0);\n        transform: translate3d(0, 0, 0)\n    }\n}\n\n.carousel-control-next,\n.carousel-control-prev {\n    position: absolute;\n    top: 0;\n    bottom: 0;\n    display: -ms-flexbox;\n    display: flex;\n    -ms-flex-align: center;\n    align-items: center;\n    -ms-flex-pack: center;\n    justify-content: center;\n    width: 15%;\n    color: #fff;\n    text-align: center;\n    opacity: .5\n}\n\n.carousel-control-next:focus,\n.carousel-control-next:hover,\n.carousel-control-prev:focus,\n.carousel-control-prev:hover {\n    color: #fff;\n    text-decoration: none;\n    outline: 0;\n    opacity: .9\n}\n\n.carousel-control-prev {\n    left: 0\n}\n\n.carousel-control-next {\n    right: 0\n}\n\n.carousel-control-next-icon,\n.carousel-control-prev-icon {\n    display: inline-block;\n    width: 20px;\n    height: 20px;\n    background: transparent no-repeat center center;\n    background-size: 100% 100%\n}\n\n.carousel-control-prev-icon {\n    background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E\")\n}\n\n.carousel-control-next-icon {\n    background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E\")\n}\n\n.carousel-indicators {\n    position: absolute;\n    right: 0;\n    bottom: 10px;\n    left: 0;\n    z-index: 15;\n    display: -ms-flexbox;\n    display: flex;\n    -ms-flex-pack: center;\n    justify-content: center;\n    padding-left: 0;\n    margin-right: 15%;\n    margin-left: 15%;\n    list-style: none\n}\n\n.carousel-indicators li {\n    position: relative;\n    -ms-flex: 0 1 auto;\n    flex: 0 1 auto;\n    width: 30px;\n    height: 3px;\n    margin-right: 3px;\n    margin-left: 3px;\n    text-indent: -999px;\n    cursor: pointer;\n    background-color: rgba(255, 255, 255, .5)\n}\n\n.carousel-indicators li::before {\n    position: absolute;\n    top: -10px;\n    left: 0;\n    display: inline-block;\n    width: 100%;\n    height: 10px;\n    content: \"\"\n}\n\n.carousel-indicators li::after {\n    position: absolute;\n    bottom: -10px;\n    left: 0;\n    display: inline-block;\n    width: 100%;\n    height: 10px;\n    content: \"\"\n}\n\n.carousel-indicators .active {\n    background-color: #fff\n}\n\n.carousel-caption {\n    position: absolute;\n    right: 15%;\n    bottom: 20px;\n    left: 15%;\n    z-index: 10;\n    padding-top: 20px;\n    padding-bottom: 20px;\n    color: #fff;\n    text-align: center\n}\n\n.align-baseline {\n    vertical-align: baseline !important\n}\n\n.align-top {\n    vertical-align: top !important\n}\n\n.align-middle {\n    vertical-align: middle !important\n}\n\n.align-bottom {\n    vertical-align: bottom !important\n}\n\n.align-text-bottom {\n    vertical-align: text-bottom !important\n}\n\n.align-text-top {\n    vertical-align: text-top !important\n}\n\n.bg-primary {\n    background-color: #007bff !important\n}\n\na.bg-primary:focus,\na.bg-primary:hover,\nbutton.bg-primary:focus,\nbutton.bg-primary:hover {\n    background-color: #0062cc !important\n}\n\n.bg-secondary {\n    background-color: #6c757d !important\n}\n\na.bg-secondary:focus,\na.bg-secondary:hover,\nbutton.bg-secondary:focus,\nbutton.bg-secondary:hover {\n    background-color: #545b62 !important\n}\n\n.bg-success {\n    background-color: #28a745 !important\n}\n\na.bg-success:focus,\na.bg-success:hover,\nbutton.bg-success:focus,\nbutton.bg-success:hover {\n    background-color: #1e7e34 !important\n}\n\n.bg-info {\n    background-color: #17a2b8 !important\n}\n\na.bg-info:focus,\na.bg-info:hover,\nbutton.bg-info:focus,\nbutton.bg-info:hover {\n    background-color: #117a8b !important\n}\n\n.bg-warning {\n    background-color: #ffc107 !important\n}\n\na.bg-warning:focus,\na.bg-warning:hover,\nbutton.bg-warning:focus,\nbutton.bg-warning:hover {\n    background-color: #d39e00 !important\n}\n\n.bg-danger {\n    background-color: #dc3545 !important\n}\n\na.bg-danger:focus,\na.bg-danger:hover,\nbutton.bg-danger:focus,\nbutton.bg-danger:hover {\n    background-color: #bd2130 !important\n}\n\n.bg-light {\n    background-color: #f8f9fa !important\n}\n\na.bg-light:focus,\na.bg-light:hover,\nbutton.bg-light:focus,\nbutton.bg-light:hover {\n    background-color: #dae0e5 !important\n}\n\n.bg-dark {\n    background-color: #343a40 !important\n}\n\na.bg-dark:focus,\na.bg-dark:hover,\nbutton.bg-dark:focus,\nbutton.bg-dark:hover {\n    background-color: #1d2124 !important\n}\n\n.bg-white {\n    background-color: #fff !important\n}\n\n.bg-transparent {\n    background-color: transparent !important\n}\n\n.border {\n    border: 1px solid #dee2e6 !important\n}\n\n.border-top {\n    border-top: 1px solid #dee2e6 !important\n}\n\n.border-right {\n    border-right: 1px solid #dee2e6 !important\n}\n\n.border-bottom {\n    border-bottom: 1px solid #dee2e6 !important\n}\n\n.border-left {\n    border-left: 1px solid #dee2e6 !important\n}\n\n.border-0 {\n    border: 0 !important\n}\n\n.border-top-0 {\n    border-top: 0 !important\n}\n\n.border-right-0 {\n    border-right: 0 !important\n}\n\n.border-bottom-0 {\n    border-bottom: 0 !important\n}\n\n.border-left-0 {\n    border-left: 0 !important\n}\n\n.border-primary {\n    border-color: #007bff !important\n}\n\n.border-secondary {\n    border-color: #6c757d !important\n}\n\n.border-success {\n    border-color: #28a745 !important\n}\n\n.border-info {\n    border-color: #17a2b8 !important\n}\n\n.border-warning {\n    border-color: #ffc107 !important\n}\n\n.border-danger {\n    border-color: #dc3545 !important\n}\n\n.border-light {\n    border-color: #f8f9fa !important\n}\n\n.border-dark {\n    border-color: #343a40 !important\n}\n\n.border-white {\n    border-color: #fff !important\n}\n\n.rounded {\n    border-radius: .25rem !important\n}\n\n.rounded-top {\n    border-top-left-radius: .25rem !important;\n    border-top-right-radius: .25rem !important\n}\n\n.rounded-right {\n    border-top-right-radius: .25rem !important;\n    border-bottom-right-radius: .25rem !important\n}\n\n.rounded-bottom {\n    border-bottom-right-radius: .25rem !important;\n    border-bottom-left-radius: .25rem !important\n}\n\n.rounded-left {\n    border-top-left-radius: .25rem !important;\n    border-bottom-left-radius: .25rem !important\n}\n\n.rounded-circle {\n    border-radius: 50% !important\n}\n\n.rounded-0 {\n    border-radius: 0 !important\n}\n\n.clearfix::after {\n    display: block;\n    clear: both;\n    content: \"\"\n}\n\n.d-none {\n    display: none !important\n}\n\n.d-inline {\n    display: inline !important\n}\n\n.d-inline-block {\n    display: inline-block !important\n}\n\n.d-block {\n    display: block !important\n}\n\n.d-table {\n    display: table !important\n}\n\n.d-table-row {\n    display: table-row !important\n}\n\n.d-table-cell {\n    display: table-cell !important\n}\n\n.d-flex {\n    display: -ms-flexbox !important;\n    display: flex !important\n}\n\n.d-inline-flex {\n    display: -ms-inline-flexbox !important;\n    display: inline-flex !important\n}\n\n@media (min-width:576px) {\n    .d-sm-none {\n        display: none !important\n    }\n    .d-sm-inline {\n        display: inline !important\n    }\n    .d-sm-inline-block {\n        display: inline-block !important\n    }\n    .d-sm-block {\n        display: block !important\n    }\n    .d-sm-table {\n        display: table !important\n    }\n    .d-sm-table-row {\n        display: table-row !important\n    }\n    .d-sm-table-cell {\n        display: table-cell !important\n    }\n    .d-sm-flex {\n        display: -ms-flexbox !important;\n        display: flex !important\n    }\n    .d-sm-inline-flex {\n        display: -ms-inline-flexbox !important;\n        display: inline-flex !important\n    }\n}\n\n@media (min-width:768px) {\n    .d-md-none {\n        display: none !important\n    }\n    .d-md-inline {\n        display: inline !important\n    }\n    .d-md-inline-block {\n        display: inline-block !important\n    }\n    .d-md-block {\n        display: block !important\n    }\n    .d-md-table {\n        display: table !important\n    }\n    .d-md-table-row {\n        display: table-row !important\n    }\n    .d-md-table-cell {\n        display: table-cell !important\n    }\n    .d-md-flex {\n        display: -ms-flexbox !important;\n        display: flex !important\n    }\n    .d-md-inline-flex {\n        display: -ms-inline-flexbox !important;\n        display: inline-flex !important\n    }\n}\n\n@media (min-width:992px) {\n    .d-lg-none {\n        display: none !important\n    }\n    .d-lg-inline {\n        display: inline !important\n    }\n    .d-lg-inline-block {\n        display: inline-block !important\n    }\n    .d-lg-block {\n        display: block !important\n    }\n    .d-lg-table {\n        display: table !important\n    }\n    .d-lg-table-row {\n        display: table-row !important\n    }\n    .d-lg-table-cell {\n        display: table-cell !important\n    }\n    .d-lg-flex {\n        display: -ms-flexbox !important;\n        display: flex !important\n    }\n    .d-lg-inline-flex {\n        display: -ms-inline-flexbox !important;\n        display: inline-flex !important\n    }\n}\n\n@media (min-width:1200px) {\n    .d-xl-none {\n        display: none !important\n    }\n    .d-xl-inline {\n        display: inline !important\n    }\n    .d-xl-inline-block {\n        display: inline-block !important\n    }\n    .d-xl-block {\n        display: block !important\n    }\n    .d-xl-table {\n        display: table !important\n    }\n    .d-xl-table-row {\n        display: table-row !important\n    }\n    .d-xl-table-cell {\n        display: table-cell !important\n    }\n    .d-xl-flex {\n        display: -ms-flexbox !important;\n        display: flex !important\n    }\n    .d-xl-inline-flex {\n        display: -ms-inline-flexbox !important;\n        display: inline-flex !important\n    }\n}\n\n@media print {\n    .d-print-none {\n        display: none !important\n    }\n    .d-print-inline {\n        display: inline !important\n    }\n    .d-print-inline-block {\n        display: inline-block !important\n    }\n    .d-print-block {\n        display: block !important\n    }\n    .d-print-table {\n        display: table !important\n    }\n    .d-print-table-row {\n        display: table-row !important\n    }\n    .d-print-table-cell {\n        display: table-cell !important\n    }\n    .d-print-flex {\n        display: -ms-flexbox !important;\n        display: flex !important\n    }\n    .d-print-inline-flex {\n        display: -ms-inline-flexbox !important;\n        display: inline-flex !important\n    }\n}\n\n.embed-responsive {\n    position: relative;\n    display: block;\n    width: 100%;\n    padding: 0;\n    overflow: hidden\n}\n\n.embed-responsive::before {\n    display: block;\n    content: \"\"\n}\n\n.embed-responsive .embed-responsive-item,\n.embed-responsive embed,\n.embed-responsive iframe,\n.embed-responsive object,\n.embed-responsive video {\n    position: absolute;\n    top: 0;\n    bottom: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n    border: 0\n}\n\n.embed-responsive-21by9::before {\n    padding-top: 42.857143%\n}\n\n.embed-responsive-16by9::before {\n    padding-top: 56.25%\n}\n\n.embed-responsive-4by3::before {\n    padding-top: 75%\n}\n\n.embed-responsive-1by1::before {\n    padding-top: 100%\n}\n\n.flex-row {\n    -ms-flex-direction: row !important;\n    flex-direction: row !important\n}\n\n.flex-column {\n    -ms-flex-direction: column !important;\n    flex-direction: column !important\n}\n\n.flex-row-reverse {\n    -ms-flex-direction: row-reverse !important;\n    flex-direction: row-reverse !important\n}\n\n.flex-column-reverse {\n    -ms-flex-direction: column-reverse !important;\n    flex-direction: column-reverse !important\n}\n\n.flex-wrap {\n    -ms-flex-wrap: wrap !important;\n    flex-wrap: wrap !important\n}\n\n.flex-nowrap {\n    -ms-flex-wrap: nowrap !important;\n    flex-wrap: nowrap !important\n}\n\n.flex-wrap-reverse {\n    -ms-flex-wrap: wrap-reverse !important;\n    flex-wrap: wrap-reverse !important\n}\n\n.flex-fill {\n    -ms-flex: 1 1 auto !important;\n    flex: 1 1 auto !important\n}\n\n.flex-grow-0 {\n    -ms-flex-positive: 0 !important;\n    flex-grow: 0 !important\n}\n\n.flex-grow-1 {\n    -ms-flex-positive: 1 !important;\n    flex-grow: 1 !important\n}\n\n.flex-shrink-0 {\n    -ms-flex-negative: 0 !important;\n    flex-shrink: 0 !important\n}\n\n.flex-shrink-1 {\n    -ms-flex-negative: 1 !important;\n    flex-shrink: 1 !important\n}\n\n.justify-content-start {\n    -ms-flex-pack: start !important;\n    justify-content: flex-start !important\n}\n\n.justify-content-end {\n    -ms-flex-pack: end !important;\n    justify-content: flex-end !important\n}\n\n.justify-content-center {\n    -ms-flex-pack: center !important;\n    justify-content: center !important\n}\n\n.justify-content-between {\n    -ms-flex-pack: justify !important;\n    justify-content: space-between !important\n}\n\n.justify-content-around {\n    -ms-flex-pack: distribute !important;\n    justify-content: space-around !important\n}\n\n.align-items-start {\n    -ms-flex-align: start !important;\n    align-items: flex-start !important\n}\n\n.align-items-end {\n    -ms-flex-align: end !important;\n    align-items: flex-end !important\n}\n\n.align-items-center {\n    -ms-flex-align: center !important;\n    align-items: center !important\n}\n\n.align-items-baseline {\n    -ms-flex-align: baseline !important;\n    align-items: baseline !important\n}\n\n.align-items-stretch {\n    -ms-flex-align: stretch !important;\n    align-items: stretch !important\n}\n\n.align-content-start {\n    -ms-flex-line-pack: start !important;\n    align-content: flex-start !important\n}\n\n.align-content-end {\n    -ms-flex-line-pack: end !important;\n    align-content: flex-end !important\n}\n\n.align-content-center {\n    -ms-flex-line-pack: center !important;\n    align-content: center !important\n}\n\n.align-content-between {\n    -ms-flex-line-pack: justify !important;\n    align-content: space-between !important\n}\n\n.align-content-around {\n    -ms-flex-line-pack: distribute !important;\n    align-content: space-around !important\n}\n\n.align-content-stretch {\n    -ms-flex-line-pack: stretch !important;\n    align-content: stretch !important\n}\n\n.align-self-auto {\n    -ms-flex-item-align: auto !important;\n    align-self: auto !important\n}\n\n.align-self-start {\n    -ms-flex-item-align: start !important;\n    align-self: flex-start !important\n}\n\n.align-self-end {\n    -ms-flex-item-align: end !important;\n    align-self: flex-end !important\n}\n\n.align-self-center {\n    -ms-flex-item-align: center !important;\n    align-self: center !important\n}\n\n.align-self-baseline {\n    -ms-flex-item-align: baseline !important;\n    align-self: baseline !important\n}\n\n.align-self-stretch {\n    -ms-flex-item-align: stretch !important;\n    align-self: stretch !important\n}\n\n@media (min-width:576px) {\n    .flex-sm-row {\n        -ms-flex-direction: row !important;\n        flex-direction: row !important\n    }\n    .flex-sm-column {\n        -ms-flex-direction: column !important;\n        flex-direction: column !important\n    }\n    .flex-sm-row-reverse {\n        -ms-flex-direction: row-reverse !important;\n        flex-direction: row-reverse !important\n    }\n    .flex-sm-column-reverse {\n        -ms-flex-direction: column-reverse !important;\n        flex-direction: column-reverse !important\n    }\n    .flex-sm-wrap {\n        -ms-flex-wrap: wrap !important;\n        flex-wrap: wrap !important\n    }\n    .flex-sm-nowrap {\n        -ms-flex-wrap: nowrap !important;\n        flex-wrap: nowrap !important\n    }\n    .flex-sm-wrap-reverse {\n        -ms-flex-wrap: wrap-reverse !important;\n        flex-wrap: wrap-reverse !important\n    }\n    .flex-sm-fill {\n        -ms-flex: 1 1 auto !important;\n        flex: 1 1 auto !important\n    }\n    .flex-sm-grow-0 {\n        -ms-flex-positive: 0 !important;\n        flex-grow: 0 !important\n    }\n    .flex-sm-grow-1 {\n        -ms-flex-positive: 1 !important;\n        flex-grow: 1 !important\n    }\n    .flex-sm-shrink-0 {\n        -ms-flex-negative: 0 !important;\n        flex-shrink: 0 !important\n    }\n    .flex-sm-shrink-1 {\n        -ms-flex-negative: 1 !important;\n        flex-shrink: 1 !important\n    }\n    .justify-content-sm-start {\n        -ms-flex-pack: start !important;\n        justify-content: flex-start !important\n    }\n    .justify-content-sm-end {\n        -ms-flex-pack: end !important;\n        justify-content: flex-end !important\n    }\n    .justify-content-sm-center {\n        -ms-flex-pack: center !important;\n        justify-content: center !important\n    }\n    .justify-content-sm-between {\n        -ms-flex-pack: justify !important;\n        justify-content: space-between !important\n    }\n    .justify-content-sm-around {\n        -ms-flex-pack: distribute !important;\n        justify-content: space-around !important\n    }\n    .align-items-sm-start {\n        -ms-flex-align: start !important;\n        align-items: flex-start !important\n    }\n    .align-items-sm-end {\n        -ms-flex-align: end !important;\n        align-items: flex-end !important\n    }\n    .align-items-sm-center {\n        -ms-flex-align: center !important;\n        align-items: center !important\n    }\n    .align-items-sm-baseline {\n        -ms-flex-align: baseline !important;\n        align-items: baseline !important\n    }\n    .align-items-sm-stretch {\n        -ms-flex-align: stretch !important;\n        align-items: stretch !important\n    }\n    .align-content-sm-start {\n        -ms-flex-line-pack: start !important;\n        align-content: flex-start !important\n    }\n    .align-content-sm-end {\n        -ms-flex-line-pack: end !important;\n        align-content: flex-end !important\n    }\n    .align-content-sm-center {\n        -ms-flex-line-pack: center !important;\n        align-content: center !important\n    }\n    .align-content-sm-between {\n        -ms-flex-line-pack: justify !important;\n        align-content: space-between !important\n    }\n    .align-content-sm-around {\n        -ms-flex-line-pack: distribute !important;\n        align-content: space-around !important\n    }\n    .align-content-sm-stretch {\n        -ms-flex-line-pack: stretch !important;\n        align-content: stretch !important\n    }\n    .align-self-sm-auto {\n        -ms-flex-item-align: auto !important;\n        align-self: auto !important\n    }\n    .align-self-sm-start {\n        -ms-flex-item-align: start !important;\n        align-self: flex-start !important\n    }\n    .align-self-sm-end {\n        -ms-flex-item-align: end !important;\n        align-self: flex-end !important\n    }\n    .align-self-sm-center {\n        -ms-flex-item-align: center !important;\n        align-self: center !important\n    }\n    .align-self-sm-baseline {\n        -ms-flex-item-align: baseline !important;\n        align-self: baseline !important\n    }\n    .align-self-sm-stretch {\n        -ms-flex-item-align: stretch !important;\n        align-self: stretch !important\n    }\n}\n\n@media (min-width:768px) {\n    .flex-md-row {\n        -ms-flex-direction: row !important;\n        flex-direction: row !important\n    }\n    .flex-md-column {\n        -ms-flex-direction: column !important;\n        flex-direction: column !important\n    }\n    .flex-md-row-reverse {\n        -ms-flex-direction: row-reverse !important;\n        flex-direction: row-reverse !important\n    }\n    .flex-md-column-reverse {\n        -ms-flex-direction: column-reverse !important;\n        flex-direction: column-reverse !important\n    }\n    .flex-md-wrap {\n        -ms-flex-wrap: wrap !important;\n        flex-wrap: wrap !important\n    }\n    .flex-md-nowrap {\n        -ms-flex-wrap: nowrap !important;\n        flex-wrap: nowrap !important\n    }\n    .flex-md-wrap-reverse {\n        -ms-flex-wrap: wrap-reverse !important;\n        flex-wrap: wrap-reverse !important\n    }\n    .flex-md-fill {\n        -ms-flex: 1 1 auto !important;\n        flex: 1 1 auto !important\n    }\n    .flex-md-grow-0 {\n        -ms-flex-positive: 0 !important;\n        flex-grow: 0 !important\n    }\n    .flex-md-grow-1 {\n        -ms-flex-positive: 1 !important;\n        flex-grow: 1 !important\n    }\n    .flex-md-shrink-0 {\n        -ms-flex-negative: 0 !important;\n        flex-shrink: 0 !important\n    }\n    .flex-md-shrink-1 {\n        -ms-flex-negative: 1 !important;\n        flex-shrink: 1 !important\n    }\n    .justify-content-md-start {\n        -ms-flex-pack: start !important;\n        justify-content: flex-start !important\n    }\n    .justify-content-md-end {\n        -ms-flex-pack: end !important;\n        justify-content: flex-end !important\n    }\n    .justify-content-md-center {\n        -ms-flex-pack: center !important;\n        justify-content: center !important\n    }\n    .justify-content-md-between {\n        -ms-flex-pack: justify !important;\n        justify-content: space-between !important\n    }\n    .justify-content-md-around {\n        -ms-flex-pack: distribute !important;\n        justify-content: space-around !important\n    }\n    .align-items-md-start {\n        -ms-flex-align: start !important;\n        align-items: flex-start !important\n    }\n    .align-items-md-end {\n        -ms-flex-align: end !important;\n        align-items: flex-end !important\n    }\n    .align-items-md-center {\n        -ms-flex-align: center !important;\n        align-items: center !important\n    }\n    .align-items-md-baseline {\n        -ms-flex-align: baseline !important;\n        align-items: baseline !important\n    }\n    .align-items-md-stretch {\n        -ms-flex-align: stretch !important;\n        align-items: stretch !important\n    }\n    .align-content-md-start {\n        -ms-flex-line-pack: start !important;\n        align-content: flex-start !important\n    }\n    .align-content-md-end {\n        -ms-flex-line-pack: end !important;\n        align-content: flex-end !important\n    }\n    .align-content-md-center {\n        -ms-flex-line-pack: center !important;\n        align-content: center !important\n    }\n    .align-content-md-between {\n        -ms-flex-line-pack: justify !important;\n        align-content: space-between !important\n    }\n    .align-content-md-around {\n        -ms-flex-line-pack: distribute !important;\n        align-content: space-around !important\n    }\n    .align-content-md-stretch {\n        -ms-flex-line-pack: stretch !important;\n        align-content: stretch !important\n    }\n    .align-self-md-auto {\n        -ms-flex-item-align: auto !important;\n        align-self: auto !important\n    }\n    .align-self-md-start {\n        -ms-flex-item-align: start !important;\n        align-self: flex-start !important\n    }\n    .align-self-md-end {\n        -ms-flex-item-align: end !important;\n        align-self: flex-end !important\n    }\n    .align-self-md-center {\n        -ms-flex-item-align: center !important;\n        align-self: center !important\n    }\n    .align-self-md-baseline {\n        -ms-flex-item-align: baseline !important;\n        align-self: baseline !important\n    }\n    .align-self-md-stretch {\n        -ms-flex-item-align: stretch !important;\n        align-self: stretch !important\n    }\n}\n\n@media (min-width:992px) {\n    .flex-lg-row {\n        -ms-flex-direction: row !important;\n        flex-direction: row !important\n    }\n    .flex-lg-column {\n        -ms-flex-direction: column !important;\n        flex-direction: column !important\n    }\n    .flex-lg-row-reverse {\n        -ms-flex-direction: row-reverse !important;\n        flex-direction: row-reverse !important\n    }\n    .flex-lg-column-reverse {\n        -ms-flex-direction: column-reverse !important;\n        flex-direction: column-reverse !important\n    }\n    .flex-lg-wrap {\n        -ms-flex-wrap: wrap !important;\n        flex-wrap: wrap !important\n    }\n    .flex-lg-nowrap {\n        -ms-flex-wrap: nowrap !important;\n        flex-wrap: nowrap !important\n    }\n    .flex-lg-wrap-reverse {\n        -ms-flex-wrap: wrap-reverse !important;\n        flex-wrap: wrap-reverse !important\n    }\n    .flex-lg-fill {\n        -ms-flex: 1 1 auto !important;\n        flex: 1 1 auto !important\n    }\n    .flex-lg-grow-0 {\n        -ms-flex-positive: 0 !important;\n        flex-grow: 0 !important\n    }\n    .flex-lg-grow-1 {\n        -ms-flex-positive: 1 !important;\n        flex-grow: 1 !important\n    }\n    .flex-lg-shrink-0 {\n        -ms-flex-negative: 0 !important;\n        flex-shrink: 0 !important\n    }\n    .flex-lg-shrink-1 {\n        -ms-flex-negative: 1 !important;\n        flex-shrink: 1 !important\n    }\n    .justify-content-lg-start {\n        -ms-flex-pack: start !important;\n        justify-content: flex-start !important\n    }\n    .justify-content-lg-end {\n        -ms-flex-pack: end !important;\n        justify-content: flex-end !important\n    }\n    .justify-content-lg-center {\n        -ms-flex-pack: center !important;\n        justify-content: center !important\n    }\n    .justify-content-lg-between {\n        -ms-flex-pack: justify !important;\n        justify-content: space-between !important\n    }\n    .justify-content-lg-around {\n        -ms-flex-pack: distribute !important;\n        justify-content: space-around !important\n    }\n    .align-items-lg-start {\n        -ms-flex-align: start !important;\n        align-items: flex-start !important\n    }\n    .align-items-lg-end {\n        -ms-flex-align: end !important;\n        align-items: flex-end !important\n    }\n    .align-items-lg-center {\n        -ms-flex-align: center !important;\n        align-items: center !important\n    }\n    .align-items-lg-baseline {\n        -ms-flex-align: baseline !important;\n        align-items: baseline !important\n    }\n    .align-items-lg-stretch {\n        -ms-flex-align: stretch !important;\n        align-items: stretch !important\n    }\n    .align-content-lg-start {\n        -ms-flex-line-pack: start !important;\n        align-content: flex-start !important\n    }\n    .align-content-lg-end {\n        -ms-flex-line-pack: end !important;\n        align-content: flex-end !important\n    }\n    .align-content-lg-center {\n        -ms-flex-line-pack: center !important;\n        align-content: center !important\n    }\n    .align-content-lg-between {\n        -ms-flex-line-pack: justify !important;\n        align-content: space-between !important\n    }\n    .align-content-lg-around {\n        -ms-flex-line-pack: distribute !important;\n        align-content: space-around !important\n    }\n    .align-content-lg-stretch {\n        -ms-flex-line-pack: stretch !important;\n        align-content: stretch !important\n    }\n    .align-self-lg-auto {\n        -ms-flex-item-align: auto !important;\n        align-self: auto !important\n    }\n    .align-self-lg-start {\n        -ms-flex-item-align: start !important;\n        align-self: flex-start !important\n    }\n    .align-self-lg-end {\n        -ms-flex-item-align: end !important;\n        align-self: flex-end !important\n    }\n    .align-self-lg-center {\n        -ms-flex-item-align: center !important;\n        align-self: center !important\n    }\n    .align-self-lg-baseline {\n        -ms-flex-item-align: baseline !important;\n        align-self: baseline !important\n    }\n    .align-self-lg-stretch {\n        -ms-flex-item-align: stretch !important;\n        align-self: stretch !important\n    }\n}\n\n@media (min-width:1200px) {\n    .flex-xl-row {\n        -ms-flex-direction: row !important;\n        flex-direction: row !important\n    }\n    .flex-xl-column {\n        -ms-flex-direction: column !important;\n        flex-direction: column !important\n    }\n    .flex-xl-row-reverse {\n        -ms-flex-direction: row-reverse !important;\n        flex-direction: row-reverse !important\n    }\n    .flex-xl-column-reverse {\n        -ms-flex-direction: column-reverse !important;\n        flex-direction: column-reverse !important\n    }\n    .flex-xl-wrap {\n        -ms-flex-wrap: wrap !important;\n        flex-wrap: wrap !important\n    }\n    .flex-xl-nowrap {\n        -ms-flex-wrap: nowrap !important;\n        flex-wrap: nowrap !important\n    }\n    .flex-xl-wrap-reverse {\n        -ms-flex-wrap: wrap-reverse !important;\n        flex-wrap: wrap-reverse !important\n    }\n    .flex-xl-fill {\n        -ms-flex: 1 1 auto !important;\n        flex: 1 1 auto !important\n    }\n    .flex-xl-grow-0 {\n        -ms-flex-positive: 0 !important;\n        flex-grow: 0 !important\n    }\n    .flex-xl-grow-1 {\n        -ms-flex-positive: 1 !important;\n        flex-grow: 1 !important\n    }\n    .flex-xl-shrink-0 {\n        -ms-flex-negative: 0 !important;\n        flex-shrink: 0 !important\n    }\n    .flex-xl-shrink-1 {\n        -ms-flex-negative: 1 !important;\n        flex-shrink: 1 !important\n    }\n    .justify-content-xl-start {\n        -ms-flex-pack: start !important;\n        justify-content: flex-start !important\n    }\n    .justify-content-xl-end {\n        -ms-flex-pack: end !important;\n        justify-content: flex-end !important\n    }\n    .justify-content-xl-center {\n        -ms-flex-pack: center !important;\n        justify-content: center !important\n    }\n    .justify-content-xl-between {\n        -ms-flex-pack: justify !important;\n        justify-content: space-between !important\n    }\n    .justify-content-xl-around {\n        -ms-flex-pack: distribute !important;\n        justify-content: space-around !important\n    }\n    .align-items-xl-start {\n        -ms-flex-align: start !important;\n        align-items: flex-start !important\n    }\n    .align-items-xl-end {\n        -ms-flex-align: end !important;\n        align-items: flex-end !important\n    }\n    .align-items-xl-center {\n        -ms-flex-align: center !important;\n        align-items: center !important\n    }\n    .align-items-xl-baseline {\n        -ms-flex-align: baseline !important;\n        align-items: baseline !important\n    }\n    .align-items-xl-stretch {\n        -ms-flex-align: stretch !important;\n        align-items: stretch !important\n    }\n    .align-content-xl-start {\n        -ms-flex-line-pack: start !important;\n        align-content: flex-start !important\n    }\n    .align-content-xl-end {\n        -ms-flex-line-pack: end !important;\n        align-content: flex-end !important\n    }\n    .align-content-xl-center {\n        -ms-flex-line-pack: center !important;\n        align-content: center !important\n    }\n    .align-content-xl-between {\n        -ms-flex-line-pack: justify !important;\n        align-content: space-between !important\n    }\n    .align-content-xl-around {\n        -ms-flex-line-pack: distribute !important;\n        align-content: space-around !important\n    }\n    .align-content-xl-stretch {\n        -ms-flex-line-pack: stretch !important;\n        align-content: stretch !important\n    }\n    .align-self-xl-auto {\n        -ms-flex-item-align: auto !important;\n        align-self: auto !important\n    }\n    .align-self-xl-start {\n        -ms-flex-item-align: start !important;\n        align-self: flex-start !important\n    }\n    .align-self-xl-end {\n        -ms-flex-item-align: end !important;\n        align-self: flex-end !important\n    }\n    .align-self-xl-center {\n        -ms-flex-item-align: center !important;\n        align-self: center !important\n    }\n    .align-self-xl-baseline {\n        -ms-flex-item-align: baseline !important;\n        align-self: baseline !important\n    }\n    .align-self-xl-stretch {\n        -ms-flex-item-align: stretch !important;\n        align-self: stretch !important\n    }\n}\n\n.float-left {\n    float: left !important\n}\n\n.float-right {\n    float: right !important\n}\n\n.float-none {\n    float: none !important\n}\n\n@media (min-width:576px) {\n    .float-sm-left {\n        float: left !important\n    }\n    .float-sm-right {\n        float: right !important\n    }\n    .float-sm-none {\n        float: none !important\n    }\n}\n\n@media (min-width:768px) {\n    .float-md-left {\n        float: left !important\n    }\n    .float-md-right {\n        float: right !important\n    }\n    .float-md-none {\n        float: none !important\n    }\n}\n\n@media (min-width:992px) {\n    .float-lg-left {\n        float: left !important\n    }\n    .float-lg-right {\n        float: right !important\n    }\n    .float-lg-none {\n        float: none !important\n    }\n}\n\n@media (min-width:1200px) {\n    .float-xl-left {\n        float: left !important\n    }\n    .float-xl-right {\n        float: right !important\n    }\n    .float-xl-none {\n        float: none !important\n    }\n}\n\n.position-static {\n    position: static !important\n}\n\n.position-relative {\n    position: relative !important\n}\n\n.position-absolute {\n    position: absolute !important\n}\n\n.position-fixed {\n    position: fixed !important\n}\n\n.position-sticky {\n    position: -webkit-sticky !important;\n    position: sticky !important\n}\n\n.fixed-top {\n    position: fixed;\n    top: 0;\n    right: 0;\n    left: 0;\n    z-index: 1030\n}\n\n.fixed-bottom {\n    position: fixed;\n    right: 0;\n    bottom: 0;\n    left: 0;\n    z-index: 1030\n}\n\n@supports ((position:-webkit-sticky) or (position:sticky)) {\n    .sticky-top {\n        position: -webkit-sticky;\n        position: sticky;\n        top: 0;\n        z-index: 1020\n    }\n}\n\n.sr-only {\n    position: absolute;\n    width: 1px;\n    height: 1px;\n    padding: 0;\n    overflow: hidden;\n    clip: rect(0, 0, 0, 0);\n    white-space: nowrap;\n    border: 0\n}\n\n.sr-only-focusable:active,\n.sr-only-focusable:focus {\n    position: static;\n    width: auto;\n    height: auto;\n    overflow: visible;\n    clip: auto;\n    white-space: normal\n}\n\n.shadow-sm {\n    box-shadow: 0 .125rem .25rem rgba(0, 0, 0, .075) !important\n}\n\n.shadow {\n    box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .15) !important\n}\n\n.shadow-lg {\n    box-shadow: 0 1rem 3rem rgba(0, 0, 0, .175) !important\n}\n\n.shadow-none {\n    box-shadow: none !important\n}\n\n.w-25 {\n    width: 25% !important\n}\n\n.w-50 {\n    width: 50% !important\n}\n\n.w-75 {\n    width: 75% !important\n}\n\n.w-100 {\n    width: 100% !important\n}\n\n.w-auto {\n    width: auto !important\n}\n\n.h-25 {\n    height: 25% !important\n}\n\n.h-50 {\n    height: 50% !important\n}\n\n.h-75 {\n    height: 75% !important\n}\n\n.h-100 {\n    height: 100% !important\n}\n\n.h-auto {\n    height: auto !important\n}\n\n.mw-100 {\n    max-width: 100% !important\n}\n\n.mh-100 {\n    max-height: 100% !important\n}\n\n.m-0 {\n    margin: 0 !important\n}\n\n.mt-0,\n.my-0 {\n    margin-top: 0 !important\n}\n\n.mr-0,\n.mx-0 {\n    margin-right: 0 !important\n}\n\n.mb-0,\n.my-0 {\n    margin-bottom: 0 !important\n}\n\n.ml-0,\n.mx-0 {\n    margin-left: 0 !important\n}\n\n.m-1 {\n    margin: .25rem !important\n}\n\n.mt-1,\n.my-1 {\n    margin-top: .25rem !important\n}\n\n.mr-1,\n.mx-1 {\n    margin-right: .25rem !important\n}\n\n.mb-1,\n.my-1 {\n    margin-bottom: .25rem !important\n}\n\n.ml-1,\n.mx-1 {\n    margin-left: .25rem !important\n}\n\n.m-2 {\n    margin: .5rem !important\n}\n\n.mt-2,\n.my-2 {\n    margin-top: .5rem !important\n}\n\n.mr-2,\n.mx-2 {\n    margin-right: .5rem !important\n}\n\n.mb-2,\n.my-2 {\n    margin-bottom: .5rem !important\n}\n\n.ml-2,\n.mx-2 {\n    margin-left: .5rem !important\n}\n\n.m-3 {\n    margin: 1rem !important\n}\n\n.mt-3,\n.my-3 {\n    margin-top: 1rem !important\n}\n\n.mr-3,\n.mx-3 {\n    margin-right: 1rem !important\n}\n\n.mb-3,\n.my-3 {\n    margin-bottom: 1rem !important\n}\n\n.ml-3,\n.mx-3 {\n    margin-left: 1rem !important\n}\n\n.m-4 {\n    margin: 1.5rem !important\n}\n\n.mt-4,\n.my-4 {\n    margin-top: 1.5rem !important\n}\n\n.mr-4,\n.mx-4 {\n    margin-right: 1.5rem !important\n}\n\n.mb-4,\n.my-4 {\n    margin-bottom: 1.5rem !important\n}\n\n.ml-4,\n.mx-4 {\n    margin-left: 1.5rem !important\n}\n\n.m-5 {\n    margin: 3rem !important\n}\n\n.mt-5,\n.my-5 {\n    margin-top: 3rem !important\n}\n\n.mr-5,\n.mx-5 {\n    margin-right: 3rem !important\n}\n\n.mb-5,\n.my-5 {\n    margin-bottom: 3rem !important\n}\n\n.ml-5,\n.mx-5 {\n    margin-left: 3rem !important\n}\n\n.p-0 {\n    padding: 0 !important\n}\n\n.pt-0,\n.py-0 {\n    padding-top: 0 !important\n}\n\n.pr-0,\n.px-0 {\n    padding-right: 0 !important\n}\n\n.pb-0,\n.py-0 {\n    padding-bottom: 0 !important\n}\n\n.pl-0,\n.px-0 {\n    padding-left: 0 !important\n}\n\n.p-1 {\n    padding: .25rem !important\n}\n\n.pt-1,\n.py-1 {\n    padding-top: .25rem !important\n}\n\n.pr-1,\n.px-1 {\n    padding-right: .25rem !important\n}\n\n.pb-1,\n.py-1 {\n    padding-bottom: .25rem !important\n}\n\n.pl-1,\n.px-1 {\n    padding-left: .25rem !important\n}\n\n.p-2 {\n    padding: .5rem !important\n}\n\n.pt-2,\n.py-2 {\n    padding-top: .5rem !important\n}\n\n.pr-2,\n.px-2 {\n    padding-right: .5rem !important\n}\n\n.pb-2,\n.py-2 {\n    padding-bottom: .5rem !important\n}\n\n.pl-2,\n.px-2 {\n    padding-left: .5rem !important\n}\n\n.p-3 {\n    padding: 1rem !important\n}\n\n.pt-3,\n.py-3 {\n    padding-top: 1rem !important\n}\n\n.pr-3,\n.px-3 {\n    padding-right: 1rem !important\n}\n\n.pb-3,\n.py-3 {\n    padding-bottom: 1rem !important\n}\n\n.pl-3,\n.px-3 {\n    padding-left: 1rem !important\n}\n\n.p-4 {\n    padding: 1.5rem !important\n}\n\n.pt-4,\n.py-4 {\n    padding-top: 1.5rem !important\n}\n\n.pr-4,\n.px-4 {\n    padding-right: 1.5rem !important\n}\n\n.pb-4,\n.py-4 {\n    padding-bottom: 1.5rem !important\n}\n\n.pl-4,\n.px-4 {\n    padding-left: 1.5rem !important\n}\n\n.p-5 {\n    padding: 3rem !important\n}\n\n.pt-5,\n.py-5 {\n    padding-top: 3rem !important\n}\n\n.pr-5,\n.px-5 {\n    padding-right: 3rem !important\n}\n\n.pb-5,\n.py-5 {\n    padding-bottom: 3rem !important\n}\n\n.pl-5,\n.px-5 {\n    padding-left: 3rem !important\n}\n\n.m-auto {\n    margin: auto !important\n}\n\n.mt-auto,\n.my-auto {\n    margin-top: auto !important\n}\n\n.mr-auto,\n.mx-auto {\n    margin-right: auto !important\n}\n\n.mb-auto,\n.my-auto {\n    margin-bottom: auto !important\n}\n\n.ml-auto,\n.mx-auto {\n    margin-left: auto !important\n}\n\n@media (min-width:576px) {\n    .m-sm-0 {\n        margin: 0 !important\n    }\n    .mt-sm-0,\n    .my-sm-0 {\n        margin-top: 0 !important\n    }\n    .mr-sm-0,\n    .mx-sm-0 {\n        margin-right: 0 !important\n    }\n    .mb-sm-0,\n    .my-sm-0 {\n        margin-bottom: 0 !important\n    }\n    .ml-sm-0,\n    .mx-sm-0 {\n        margin-left: 0 !important\n    }\n    .m-sm-1 {\n        margin: .25rem !important\n    }\n    .mt-sm-1,\n    .my-sm-1 {\n        margin-top: .25rem !important\n    }\n    .mr-sm-1,\n    .mx-sm-1 {\n        margin-right: .25rem !important\n    }\n    .mb-sm-1,\n    .my-sm-1 {\n        margin-bottom: .25rem !important\n    }\n    .ml-sm-1,\n    .mx-sm-1 {\n        margin-left: .25rem !important\n    }\n    .m-sm-2 {\n        margin: .5rem !important\n    }\n    .mt-sm-2,\n    .my-sm-2 {\n        margin-top: .5rem !important\n    }\n    .mr-sm-2,\n    .mx-sm-2 {\n        margin-right: .5rem !important\n    }\n    .mb-sm-2,\n    .my-sm-2 {\n        margin-bottom: .5rem !important\n    }\n    .ml-sm-2,\n    .mx-sm-2 {\n        margin-left: .5rem !important\n    }\n    .m-sm-3 {\n        margin: 1rem !important\n    }\n    .mt-sm-3,\n    .my-sm-3 {\n        margin-top: 1rem !important\n    }\n    .mr-sm-3,\n    .mx-sm-3 {\n        margin-right: 1rem !important\n    }\n    .mb-sm-3,\n    .my-sm-3 {\n        margin-bottom: 1rem !important\n    }\n    .ml-sm-3,\n    .mx-sm-3 {\n        margin-left: 1rem !important\n    }\n    .m-sm-4 {\n        margin: 1.5rem !important\n    }\n    .mt-sm-4,\n    .my-sm-4 {\n        margin-top: 1.5rem !important\n    }\n    .mr-sm-4,\n    .mx-sm-4 {\n        margin-right: 1.5rem !important\n    }\n    .mb-sm-4,\n    .my-sm-4 {\n        margin-bottom: 1.5rem !important\n    }\n    .ml-sm-4,\n    .mx-sm-4 {\n        margin-left: 1.5rem !important\n    }\n    .m-sm-5 {\n        margin: 3rem !important\n    }\n    .mt-sm-5,\n    .my-sm-5 {\n        margin-top: 3rem !important\n    }\n    .mr-sm-5,\n    .mx-sm-5 {\n        margin-right: 3rem !important\n    }\n    .mb-sm-5,\n    .my-sm-5 {\n        margin-bottom: 3rem !important\n    }\n    .ml-sm-5,\n    .mx-sm-5 {\n        margin-left: 3rem !important\n    }\n    .p-sm-0 {\n        padding: 0 !important\n    }\n    .pt-sm-0,\n    .py-sm-0 {\n        padding-top: 0 !important\n    }\n    .pr-sm-0,\n    .px-sm-0 {\n        padding-right: 0 !important\n    }\n    .pb-sm-0,\n    .py-sm-0 {\n        padding-bottom: 0 !important\n    }\n    .pl-sm-0,\n    .px-sm-0 {\n        padding-left: 0 !important\n    }\n    .p-sm-1 {\n        padding: .25rem !important\n    }\n    .pt-sm-1,\n    .py-sm-1 {\n        padding-top: .25rem !important\n    }\n    .pr-sm-1,\n    .px-sm-1 {\n        padding-right: .25rem !important\n    }\n    .pb-sm-1,\n    .py-sm-1 {\n        padding-bottom: .25rem !important\n    }\n    .pl-sm-1,\n    .px-sm-1 {\n        padding-left: .25rem !important\n    }\n    .p-sm-2 {\n        padding: .5rem !important\n    }\n    .pt-sm-2,\n    .py-sm-2 {\n        padding-top: .5rem !important\n    }\n    .pr-sm-2,\n    .px-sm-2 {\n        padding-right: .5rem !important\n    }\n    .pb-sm-2,\n    .py-sm-2 {\n        padding-bottom: .5rem !important\n    }\n    .pl-sm-2,\n    .px-sm-2 {\n        padding-left: .5rem !important\n    }\n    .p-sm-3 {\n        padding: 1rem !important\n    }\n    .pt-sm-3,\n    .py-sm-3 {\n        padding-top: 1rem !important\n    }\n    .pr-sm-3,\n    .px-sm-3 {\n        padding-right: 1rem !important\n    }\n    .pb-sm-3,\n    .py-sm-3 {\n        padding-bottom: 1rem !important\n    }\n    .pl-sm-3,\n    .px-sm-3 {\n        padding-left: 1rem !important\n    }\n    .p-sm-4 {\n        padding: 1.5rem !important\n    }\n    .pt-sm-4,\n    .py-sm-4 {\n        padding-top: 1.5rem !important\n    }\n    .pr-sm-4,\n    .px-sm-4 {\n        padding-right: 1.5rem !important\n    }\n    .pb-sm-4,\n    .py-sm-4 {\n        padding-bottom: 1.5rem !important\n    }\n    .pl-sm-4,\n    .px-sm-4 {\n        padding-left: 1.5rem !important\n    }\n    .p-sm-5 {\n        padding: 3rem !important\n    }\n    .pt-sm-5,\n    .py-sm-5 {\n        padding-top: 3rem !important\n    }\n    .pr-sm-5,\n    .px-sm-5 {\n        padding-right: 3rem !important\n    }\n    .pb-sm-5,\n    .py-sm-5 {\n        padding-bottom: 3rem !important\n    }\n    .pl-sm-5,\n    .px-sm-5 {\n        padding-left: 3rem !important\n    }\n    .m-sm-auto {\n        margin: auto !important\n    }\n    .mt-sm-auto,\n    .my-sm-auto {\n        margin-top: auto !important\n    }\n    .mr-sm-auto,\n    .mx-sm-auto {\n        margin-right: auto !important\n    }\n    .mb-sm-auto,\n    .my-sm-auto {\n        margin-bottom: auto !important\n    }\n    .ml-sm-auto,\n    .mx-sm-auto {\n        margin-left: auto !important\n    }\n}\n\n@media (min-width:768px) {\n    .m-md-0 {\n        margin: 0 !important\n    }\n    .mt-md-0,\n    .my-md-0 {\n        margin-top: 0 !important\n    }\n    .mr-md-0,\n    .mx-md-0 {\n        margin-right: 0 !important\n    }\n    .mb-md-0,\n    .my-md-0 {\n        margin-bottom: 0 !important\n    }\n    .ml-md-0,\n    .mx-md-0 {\n        margin-left: 0 !important\n    }\n    .m-md-1 {\n        margin: .25rem !important\n    }\n    .mt-md-1,\n    .my-md-1 {\n        margin-top: .25rem !important\n    }\n    .mr-md-1,\n    .mx-md-1 {\n        margin-right: .25rem !important\n    }\n    .mb-md-1,\n    .my-md-1 {\n        margin-bottom: .25rem !important\n    }\n    .ml-md-1,\n    .mx-md-1 {\n        margin-left: .25rem !important\n    }\n    .m-md-2 {\n        margin: .5rem !important\n    }\n    .mt-md-2,\n    .my-md-2 {\n        margin-top: .5rem !important\n    }\n    .mr-md-2,\n    .mx-md-2 {\n        margin-right: .5rem !important\n    }\n    .mb-md-2,\n    .my-md-2 {\n        margin-bottom: .5rem !important\n    }\n    .ml-md-2,\n    .mx-md-2 {\n        margin-left: .5rem !important\n    }\n    .m-md-3 {\n        margin: 1rem !important\n    }\n    .mt-md-3,\n    .my-md-3 {\n        margin-top: 1rem !important\n    }\n    .mr-md-3,\n    .mx-md-3 {\n        margin-right: 1rem !important\n    }\n    .mb-md-3,\n    .my-md-3 {\n        margin-bottom: 1rem !important\n    }\n    .ml-md-3,\n    .mx-md-3 {\n        margin-left: 1rem !important\n    }\n    .m-md-4 {\n        margin: 1.5rem !important\n    }\n    .mt-md-4,\n    .my-md-4 {\n        margin-top: 1.5rem !important\n    }\n    .mr-md-4,\n    .mx-md-4 {\n        margin-right: 1.5rem !important\n    }\n    .mb-md-4,\n    .my-md-4 {\n        margin-bottom: 1.5rem !important\n    }\n    .ml-md-4,\n    .mx-md-4 {\n        margin-left: 1.5rem !important\n    }\n    .m-md-5 {\n        margin: 3rem !important\n    }\n    .mt-md-5,\n    .my-md-5 {\n        margin-top: 3rem !important\n    }\n    .mr-md-5,\n    .mx-md-5 {\n        margin-right: 3rem !important\n    }\n    .mb-md-5,\n    .my-md-5 {\n        margin-bottom: 3rem !important\n    }\n    .ml-md-5,\n    .mx-md-5 {\n        margin-left: 3rem !important\n    }\n    .p-md-0 {\n        padding: 0 !important\n    }\n    .pt-md-0,\n    .py-md-0 {\n        padding-top: 0 !important\n    }\n    .pr-md-0,\n    .px-md-0 {\n        padding-right: 0 !important\n    }\n    .pb-md-0,\n    .py-md-0 {\n        padding-bottom: 0 !important\n    }\n    .pl-md-0,\n    .px-md-0 {\n        padding-left: 0 !important\n    }\n    .p-md-1 {\n        padding: .25rem !important\n    }\n    .pt-md-1,\n    .py-md-1 {\n        padding-top: .25rem !important\n    }\n    .pr-md-1,\n    .px-md-1 {\n        padding-right: .25rem !important\n    }\n    .pb-md-1,\n    .py-md-1 {\n        padding-bottom: .25rem !important\n    }\n    .pl-md-1,\n    .px-md-1 {\n        padding-left: .25rem !important\n    }\n    .p-md-2 {\n        padding: .5rem !important\n    }\n    .pt-md-2,\n    .py-md-2 {\n        padding-top: .5rem !important\n    }\n    .pr-md-2,\n    .px-md-2 {\n        padding-right: .5rem !important\n    }\n    .pb-md-2,\n    .py-md-2 {\n        padding-bottom: .5rem !important\n    }\n    .pl-md-2,\n    .px-md-2 {\n        padding-left: .5rem !important\n    }\n    .p-md-3 {\n        padding: 1rem !important\n    }\n    .pt-md-3,\n    .py-md-3 {\n        padding-top: 1rem !important\n    }\n    .pr-md-3,\n    .px-md-3 {\n        padding-right: 1rem !important\n    }\n    .pb-md-3,\n    .py-md-3 {\n        padding-bottom: 1rem !important\n    }\n    .pl-md-3,\n    .px-md-3 {\n        padding-left: 1rem !important\n    }\n    .p-md-4 {\n        padding: 1.5rem !important\n    }\n    .pt-md-4,\n    .py-md-4 {\n        padding-top: 1.5rem !important\n    }\n    .pr-md-4,\n    .px-md-4 {\n        padding-right: 1.5rem !important\n    }\n    .pb-md-4,\n    .py-md-4 {\n        padding-bottom: 1.5rem !important\n    }\n    .pl-md-4,\n    .px-md-4 {\n        padding-left: 1.5rem !important\n    }\n    .p-md-5 {\n        padding: 3rem !important\n    }\n    .pt-md-5,\n    .py-md-5 {\n        padding-top: 3rem !important\n    }\n    .pr-md-5,\n    .px-md-5 {\n        padding-right: 3rem !important\n    }\n    .pb-md-5,\n    .py-md-5 {\n        padding-bottom: 3rem !important\n    }\n    .pl-md-5,\n    .px-md-5 {\n        padding-left: 3rem !important\n    }\n    .m-md-auto {\n        margin: auto !important\n    }\n    .mt-md-auto,\n    .my-md-auto {\n        margin-top: auto !important\n    }\n    .mr-md-auto,\n    .mx-md-auto {\n        margin-right: auto !important\n    }\n    .mb-md-auto,\n    .my-md-auto {\n        margin-bottom: auto !important\n    }\n    .ml-md-auto,\n    .mx-md-auto {\n        margin-left: auto !important\n    }\n}\n\n@media (min-width:992px) {\n    .m-lg-0 {\n        margin: 0 !important\n    }\n    .mt-lg-0,\n    .my-lg-0 {\n        margin-top: 0 !important\n    }\n    .mr-lg-0,\n    .mx-lg-0 {\n        margin-right: 0 !important\n    }\n    .mb-lg-0,\n    .my-lg-0 {\n        margin-bottom: 0 !important\n    }\n    .ml-lg-0,\n    .mx-lg-0 {\n        margin-left: 0 !important\n    }\n    .m-lg-1 {\n        margin: .25rem !important\n    }\n    .mt-lg-1,\n    .my-lg-1 {\n        margin-top: .25rem !important\n    }\n    .mr-lg-1,\n    .mx-lg-1 {\n        margin-right: .25rem !important\n    }\n    .mb-lg-1,\n    .my-lg-1 {\n        margin-bottom: .25rem !important\n    }\n    .ml-lg-1,\n    .mx-lg-1 {\n        margin-left: .25rem !important\n    }\n    .m-lg-2 {\n        margin: .5rem !important\n    }\n    .mt-lg-2,\n    .my-lg-2 {\n        margin-top: .5rem !important\n    }\n    .mr-lg-2,\n    .mx-lg-2 {\n        margin-right: .5rem !important\n    }\n    .mb-lg-2,\n    .my-lg-2 {\n        margin-bottom: .5rem !important\n    }\n    .ml-lg-2,\n    .mx-lg-2 {\n        margin-left: .5rem !important\n    }\n    .m-lg-3 {\n        margin: 1rem !important\n    }\n    .mt-lg-3,\n    .my-lg-3 {\n        margin-top: 1rem !important\n    }\n    .mr-lg-3,\n    .mx-lg-3 {\n        margin-right: 1rem !important\n    }\n    .mb-lg-3,\n    .my-lg-3 {\n        margin-bottom: 1rem !important\n    }\n    .ml-lg-3,\n    .mx-lg-3 {\n        margin-left: 1rem !important\n    }\n    .m-lg-4 {\n        margin: 1.5rem !important\n    }\n    .mt-lg-4,\n    .my-lg-4 {\n        margin-top: 1.5rem !important\n    }\n    .mr-lg-4,\n    .mx-lg-4 {\n        margin-right: 1.5rem !important\n    }\n    .mb-lg-4,\n    .my-lg-4 {\n        margin-bottom: 1.5rem !important\n    }\n    .ml-lg-4,\n    .mx-lg-4 {\n        margin-left: 1.5rem !important\n    }\n    .m-lg-5 {\n        margin: 3rem !important\n    }\n    .mt-lg-5,\n    .my-lg-5 {\n        margin-top: 3rem !important\n    }\n    .mr-lg-5,\n    .mx-lg-5 {\n        margin-right: 3rem !important\n    }\n    .mb-lg-5,\n    .my-lg-5 {\n        margin-bottom: 3rem !important\n    }\n    .ml-lg-5,\n    .mx-lg-5 {\n        margin-left: 3rem !important\n    }\n    .p-lg-0 {\n        padding: 0 !important\n    }\n    .pt-lg-0,\n    .py-lg-0 {\n        padding-top: 0 !important\n    }\n    .pr-lg-0,\n    .px-lg-0 {\n        padding-right: 0 !important\n    }\n    .pb-lg-0,\n    .py-lg-0 {\n        padding-bottom: 0 !important\n    }\n    .pl-lg-0,\n    .px-lg-0 {\n        padding-left: 0 !important\n    }\n    .p-lg-1 {\n        padding: .25rem !important\n    }\n    .pt-lg-1,\n    .py-lg-1 {\n        padding-top: .25rem !important\n    }\n    .pr-lg-1,\n    .px-lg-1 {\n        padding-right: .25rem !important\n    }\n    .pb-lg-1,\n    .py-lg-1 {\n        padding-bottom: .25rem !important\n    }\n    .pl-lg-1,\n    .px-lg-1 {\n        padding-left: .25rem !important\n    }\n    .p-lg-2 {\n        padding: .5rem !important\n    }\n    .pt-lg-2,\n    .py-lg-2 {\n        padding-top: .5rem !important\n    }\n    .pr-lg-2,\n    .px-lg-2 {\n        padding-right: .5rem !important\n    }\n    .pb-lg-2,\n    .py-lg-2 {\n        padding-bottom: .5rem !important\n    }\n    .pl-lg-2,\n    .px-lg-2 {\n        padding-left: .5rem !important\n    }\n    .p-lg-3 {\n        padding: 1rem !important\n    }\n    .pt-lg-3,\n    .py-lg-3 {\n        padding-top: 1rem !important\n    }\n    .pr-lg-3,\n    .px-lg-3 {\n        padding-right: 1rem !important\n    }\n    .pb-lg-3,\n    .py-lg-3 {\n        padding-bottom: 1rem !important\n    }\n    .pl-lg-3,\n    .px-lg-3 {\n        padding-left: 1rem !important\n    }\n    .p-lg-4 {\n        padding: 1.5rem !important\n    }\n    .pt-lg-4,\n    .py-lg-4 {\n        padding-top: 1.5rem !important\n    }\n    .pr-lg-4,\n    .px-lg-4 {\n        padding-right: 1.5rem !important\n    }\n    .pb-lg-4,\n    .py-lg-4 {\n        padding-bottom: 1.5rem !important\n    }\n    .pl-lg-4,\n    .px-lg-4 {\n        padding-left: 1.5rem !important\n    }\n    .p-lg-5 {\n        padding: 3rem !important\n    }\n    .pt-lg-5,\n    .py-lg-5 {\n        padding-top: 3rem !important\n    }\n    .pr-lg-5,\n    .px-lg-5 {\n        padding-right: 3rem !important\n    }\n    .pb-lg-5,\n    .py-lg-5 {\n        padding-bottom: 3rem !important\n    }\n    .pl-lg-5,\n    .px-lg-5 {\n        padding-left: 3rem !important\n    }\n    .m-lg-auto {\n        margin: auto !important\n    }\n    .mt-lg-auto,\n    .my-lg-auto {\n        margin-top: auto !important\n    }\n    .mr-lg-auto,\n    .mx-lg-auto {\n        margin-right: auto !important\n    }\n    .mb-lg-auto,\n    .my-lg-auto {\n        margin-bottom: auto !important\n    }\n    .ml-lg-auto,\n    .mx-lg-auto {\n        margin-left: auto !important\n    }\n}\n\n@media (min-width:1200px) {\n    .m-xl-0 {\n        margin: 0 !important\n    }\n    .mt-xl-0,\n    .my-xl-0 {\n        margin-top: 0 !important\n    }\n    .mr-xl-0,\n    .mx-xl-0 {\n        margin-right: 0 !important\n    }\n    .mb-xl-0,\n    .my-xl-0 {\n        margin-bottom: 0 !important\n    }\n    .ml-xl-0,\n    .mx-xl-0 {\n        margin-left: 0 !important\n    }\n    .m-xl-1 {\n        margin: .25rem !important\n    }\n    .mt-xl-1,\n    .my-xl-1 {\n        margin-top: .25rem !important\n    }\n    .mr-xl-1,\n    .mx-xl-1 {\n        margin-right: .25rem !important\n    }\n    .mb-xl-1,\n    .my-xl-1 {\n        margin-bottom: .25rem !important\n    }\n    .ml-xl-1,\n    .mx-xl-1 {\n        margin-left: .25rem !important\n    }\n    .m-xl-2 {\n        margin: .5rem !important\n    }\n    .mt-xl-2,\n    .my-xl-2 {\n        margin-top: .5rem !important\n    }\n    .mr-xl-2,\n    .mx-xl-2 {\n        margin-right: .5rem !important\n    }\n    .mb-xl-2,\n    .my-xl-2 {\n        margin-bottom: .5rem !important\n    }\n    .ml-xl-2,\n    .mx-xl-2 {\n        margin-left: .5rem !important\n    }\n    .m-xl-3 {\n        margin: 1rem !important\n    }\n    .mt-xl-3,\n    .my-xl-3 {\n        margin-top: 1rem !important\n    }\n    .mr-xl-3,\n    .mx-xl-3 {\n        margin-right: 1rem !important\n    }\n    .mb-xl-3,\n    .my-xl-3 {\n        margin-bottom: 1rem !important\n    }\n    .ml-xl-3,\n    .mx-xl-3 {\n        margin-left: 1rem !important\n    }\n    .m-xl-4 {\n        margin: 1.5rem !important\n    }\n    .mt-xl-4,\n    .my-xl-4 {\n        margin-top: 1.5rem !important\n    }\n    .mr-xl-4,\n    .mx-xl-4 {\n        margin-right: 1.5rem !important\n    }\n    .mb-xl-4,\n    .my-xl-4 {\n        margin-bottom: 1.5rem !important\n    }\n    .ml-xl-4,\n    .mx-xl-4 {\n        margin-left: 1.5rem !important\n    }\n    .m-xl-5 {\n        margin: 3rem !important\n    }\n    .mt-xl-5,\n    .my-xl-5 {\n        margin-top: 3rem !important\n    }\n    .mr-xl-5,\n    .mx-xl-5 {\n        margin-right: 3rem !important\n    }\n    .mb-xl-5,\n    .my-xl-5 {\n        margin-bottom: 3rem !important\n    }\n    .ml-xl-5,\n    .mx-xl-5 {\n        margin-left: 3rem !important\n    }\n    .p-xl-0 {\n        padding: 0 !important\n    }\n    .pt-xl-0,\n    .py-xl-0 {\n        padding-top: 0 !important\n    }\n    .pr-xl-0,\n    .px-xl-0 {\n        padding-right: 0 !important\n    }\n    .pb-xl-0,\n    .py-xl-0 {\n        padding-bottom: 0 !important\n    }\n    .pl-xl-0,\n    .px-xl-0 {\n        padding-left: 0 !important\n    }\n    .p-xl-1 {\n        padding: .25rem !important\n    }\n    .pt-xl-1,\n    .py-xl-1 {\n        padding-top: .25rem !important\n    }\n    .pr-xl-1,\n    .px-xl-1 {\n        padding-right: .25rem !important\n    }\n    .pb-xl-1,\n    .py-xl-1 {\n        padding-bottom: .25rem !important\n    }\n    .pl-xl-1,\n    .px-xl-1 {\n        padding-left: .25rem !important\n    }\n    .p-xl-2 {\n        padding: .5rem !important\n    }\n    .pt-xl-2,\n    .py-xl-2 {\n        padding-top: .5rem !important\n    }\n    .pr-xl-2,\n    .px-xl-2 {\n        padding-right: .5rem !important\n    }\n    .pb-xl-2,\n    .py-xl-2 {\n        padding-bottom: .5rem !important\n    }\n    .pl-xl-2,\n    .px-xl-2 {\n        padding-left: .5rem !important\n    }\n    .p-xl-3 {\n        padding: 1rem !important\n    }\n    .pt-xl-3,\n    .py-xl-3 {\n        padding-top: 1rem !important\n    }\n    .pr-xl-3,\n    .px-xl-3 {\n        padding-right: 1rem !important\n    }\n    .pb-xl-3,\n    .py-xl-3 {\n        padding-bottom: 1rem !important\n    }\n    .pl-xl-3,\n    .px-xl-3 {\n        padding-left: 1rem !important\n    }\n    .p-xl-4 {\n        padding: 1.5rem !important\n    }\n    .pt-xl-4,\n    .py-xl-4 {\n        padding-top: 1.5rem !important\n    }\n    .pr-xl-4,\n    .px-xl-4 {\n        padding-right: 1.5rem !important\n    }\n    .pb-xl-4,\n    .py-xl-4 {\n        padding-bottom: 1.5rem !important\n    }\n    .pl-xl-4,\n    .px-xl-4 {\n        padding-left: 1.5rem !important\n    }\n    .p-xl-5 {\n        padding: 3rem !important\n    }\n    .pt-xl-5,\n    .py-xl-5 {\n        padding-top: 3rem !important\n    }\n    .pr-xl-5,\n    .px-xl-5 {\n        padding-right: 3rem !important\n    }\n    .pb-xl-5,\n    .py-xl-5 {\n        padding-bottom: 3rem !important\n    }\n    .pl-xl-5,\n    .px-xl-5 {\n        padding-left: 3rem !important\n    }\n    .m-xl-auto {\n        margin: auto !important\n    }\n    .mt-xl-auto,\n    .my-xl-auto {\n        margin-top: auto !important\n    }\n    .mr-xl-auto,\n    .mx-xl-auto {\n        margin-right: auto !important\n    }\n    .mb-xl-auto,\n    .my-xl-auto {\n        margin-bottom: auto !important\n    }\n    .ml-xl-auto,\n    .mx-xl-auto {\n        margin-left: auto !important\n    }\n}\n\n.text-monospace {\n    font-family: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace\n}\n\n.text-justify {\n    text-align: justify !important\n}\n\n.text-nowrap {\n    white-space: nowrap !important\n}\n\n.text-truncate {\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap\n}\n\n.text-left {\n    text-align: left !important\n}\n\n.text-right {\n    text-align: right !important\n}\n\n.text-center {\n    text-align: center !important\n}\n\n@media (min-width:576px) {\n    .text-sm-left {\n        text-align: left !important\n    }\n    .text-sm-right {\n        text-align: right !important\n    }\n    .text-sm-center {\n        text-align: center !important\n    }\n}\n\n@media (min-width:768px) {\n    .text-md-left {\n        text-align: left !important\n    }\n    .text-md-right {\n        text-align: right !important\n    }\n    .text-md-center {\n        text-align: center !important\n    }\n}\n\n@media (min-width:992px) {\n    .text-lg-left {\n        text-align: left !important\n    }\n    .text-lg-right {\n        text-align: right !important\n    }\n    .text-lg-center {\n        text-align: center !important\n    }\n}\n\n@media (min-width:1200px) {\n    .text-xl-left {\n        text-align: left !important\n    }\n    .text-xl-right {\n        text-align: right !important\n    }\n    .text-xl-center {\n        text-align: center !important\n    }\n}\n\n.text-lowercase {\n    text-transform: lowercase !important\n}\n\n.text-uppercase {\n    text-transform: uppercase !important\n}\n\n.text-capitalize {\n    text-transform: capitalize !important\n}\n\n.font-weight-light {\n    font-weight: 300 !important\n}\n\n.font-weight-normal {\n    font-weight: 400 !important\n}\n\n.font-weight-bold {\n    font-weight: 700 !important\n}\n\n.font-italic {\n    font-style: italic !important\n}\n\n.text-white {\n    color: #fff !important\n}\n\n.text-primary {\n    color: #007bff !important\n}\n\na.text-primary:focus,\na.text-primary:hover {\n    color: #0062cc !important\n}\n\n.text-secondary {\n    color: #6c757d !important\n}\n\na.text-secondary:focus,\na.text-secondary:hover {\n    color: #545b62 !important\n}\n\n.text-success {\n    color: #28a745 !important\n}\n\na.text-success:focus,\na.text-success:hover {\n    color: #1e7e34 !important\n}\n\n.text-info {\n    color: #17a2b8 !important\n}\n\na.text-info:focus,\na.text-info:hover {\n    color: #117a8b !important\n}\n\n.text-warning {\n    color: #ffc107 !important\n}\n\na.text-warning:focus,\na.text-warning:hover {\n    color: #d39e00 !important\n}\n\n.text-danger {\n    color: #dc3545 !important\n}\n\na.text-danger:focus,\na.text-danger:hover {\n    color: #bd2130 !important\n}\n\n.text-light {\n    color: #f8f9fa !important\n}\n\na.text-light:focus,\na.text-light:hover {\n    color: #dae0e5 !important\n}\n\n.text-dark {\n    color: #343a40 !important\n}\n\na.text-dark:focus,\na.text-dark:hover {\n    color: #1d2124 !important\n}\n\n.text-body {\n    color: #212529 !important\n}\n\n.text-muted {\n    color: #6c757d !important\n}\n\n.text-black-50 {\n    color: rgba(0, 0, 0, .5) !important\n}\n\n.text-white-50 {\n    color: rgba(255, 255, 255, .5) !important\n}\n\n.text-hide {\n    font: 0/0 a;\n    color: transparent;\n    text-shadow: none;\n    background-color: transparent;\n    border: 0\n}\n\n.visible {\n    visibility: visible !important\n}\n\n.invisible {\n    visibility: hidden !important\n}\n\n@media print {\n    *,\n    ::after,\n    ::before {\n        text-shadow: none !important;\n        box-shadow: none !important\n    }\n    a:not(.btn) {\n        text-decoration: underline\n    }\n    abbr[title]::after {\n        content: \" (\" attr(title) \")\"\n    }\n    pre {\n        white-space: pre-wrap !important\n    }\n    blockquote,\n    pre {\n        border: 1px solid #adb5bd;\n        page-break-inside: avoid\n    }\n    thead {\n        display: table-header-group\n    }\n    img,\n    tr {\n        page-break-inside: avoid\n    }\n    h2,\n    h3,\n    p {\n        orphans: 3;\n        widows: 3\n    }\n    h2,\n    h3 {\n        page-break-after: avoid\n    }\n    @page {\n        size: a3\n    }\n    body {\n        min-width: 992px !important\n    }\n    .container {\n        min-width: 992px !important\n    }\n    .navbar {\n        display: none\n    }\n    .badge {\n        border: 1px solid #000\n    }\n    .table {\n        border-collapse: collapse !important\n    }\n    .table td,\n    .table th {\n        background-color: #fff !important\n    }\n    .table-bordered td,\n    .table-bordered th {\n        border: 1px solid #dee2e6 !important\n    }\n    .table-dark {\n        color: inherit\n    }\n    .table-dark tbody+tbody,\n    .table-dark td,\n    .table-dark th,\n    .table-dark thead th {\n        border-color: #dee2e6\n    }\n    .table .thead-dark th {\n        color: inherit;\n        border-color: #dee2e6\n    }\n}\n\n/*# sourceMappingURL=bootstrap.min.css.map */"
  },
  {
    "path": "public/profile/css/breadcrumb.css",
    "content": "\n/*# sourceMappingURL=breadcrumb.css.map */"
  },
  {
    "path": "public/profile/css/responsive.css",
    "content": "@media (max-width:1619px){\n\t/* Main Menu Area css\n\t============================================================================================ */\n   .header_area .navbar .search {\n\t\tmargin-left: 40px;\n\t}\n\t/* End Main Menu Area css\n\t============================================================================================ */\n\t.banner_area .box_1620 {\n\t\tborder-radius: 0px;\n\t}\n}\n@media (max-width:1300px){\n\t.testimonials_area .owl-prev, .testimonials_area .owl-next {\n\t\tright: auto;\n\t\tleft: 50%;\n\t\ttransform: translateX(-50%);\n\t\tbottom: 25px;\n\t\ttop: auto;\n\t}\n\t.testimonials_area .owl-prev{\n\t\ttransform: rotate(90deg);\n\t}\n\t.testimonials_area .owl-next{\n\t\ttransform: rotate(90deg);\n\t\tmargin-left: -40px;\n\t}\n}\n@media (max-width:1199px){\n\t/* Main Menu Area css\n\t============================================================================================ */\n\t.header_area .navbar .nav .nav-item {\n\t\tmargin-right: 28px;\n\t}\n\t/* End Main Menu Area css\n\t============================================================================================ */\n\t/* Home Banner Area css\n\t============================================================================================ */\n\t.home_banner_area {\n\t\tmin-height: 728px;\n\t\tmargin-bottom: 120px;\n\t}\n\t.home_banner_area .banner_inner {\n\t\tmin-height: 650px;\n\t}\n\t.header_area .navbar .nav .nav-item.submenu ul {\n\t\tleft: auto;\n\t\tright: 0px;\n\t}\n\t/* End Home Banner Area css\n\t============================================================================================ */\n\t.banner_content .media{\n\t\tdisplay: block;\n\t}\n\t.home_banner_area .banner_content{\n\t\tmax-width: 500px;\n\t\tmargin: auto;\n\t}\n\t.home_banner_area .banner_inner .banner_content .media .d-flex {\n\t\tpadding-right: 0px;\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t}\n\t.home_banner_area .banner_inner .banner_content .media .d-flex img {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t}\n\t.home_banner_area .banner_inner .banner_content .media .media-body {\n\t\tmargin-top: 30px;\n\t}\n\t.home_banner_area .box_1620 {\n\t\tbottom: -130px;\n\t}\n\t.profile_inner .personal_text {\n\t\tpadding-left: 0px;\n\t}\n\t.home_banner_area.blog_banner .banner_inner{\n\t\tmin-height: 728px;\n\t}\n\t.home_banner_area.blog_banner {\n\t\tmargin-bottom: 0px;\n\t}\n}\n\n@media (max-width:991px){\n\t/* Main Menu Area css\n\t============================================================================================ */\n    .navbar-toggler {\n        border: none;\n        border-radius: 0px;\n        padding: 0px;\n        cursor: pointer;\n        margin-top: 27px;\n        margin-bottom: 23px;\n    }\n\t.header_area .navbar {\n\t\tbackground: #000;\n\t}\n    .navbar-toggler[aria-expanded=\"false\"] span:nth-child(2) {\n\t\topacity: 1;\n\t}\n\t.navbar-toggler[aria-expanded=\"true\"] span:nth-child(2) {\n\t\topacity: 0;\n\t}\n\t.navbar-toggler[aria-expanded=\"true\"] span:first-child {\n\t\ttransform: rotate(-45deg);\n\t\tposition: relative;\n\t\ttop: 7.5px;\n\t}\n\t.navbar-toggler[aria-expanded=\"true\"] span:last-child {\n\t\ttransform: rotate(45deg);\n\t\tbottom: 6px;\n\t\tposition: relative;\n\t}\n\t.navbar-toggler span{\n\t\tdisplay: block;\n\t\twidth: 25px;\n\t\theight: 3px;\n\t\tbackground: #fff;\n\t\tmargin: auto;\n\t\tmargin-bottom: 4px;\n\t\ttransition: all 400ms linear;\n\t\tcursor: pointer;\n\t}\n    .navbar .container{\n        padding-left: 15px;\n        padding-right: 15px;\n    }\n    .nav{\n        padding: 0px 0px;\n    }\n\t.header_area + section, .header_area + row, .header_area + div {\n\t\tmargin-top: 117px;\n\t}\n    .header_top .nav{\n        padding: 0px;\n    }\n    .header_area .navbar .nav .nav-item .nav-link{\n        line-height: 40px;\n        margin-right: 0px;\n        display: block;\n\t\tborder-bottom: 1px solid #ededed33;\n\t\tborder-radius: 0px;\n    }\n\t.header_area.navbar_fixed .main_menu .navbar .nav .nav-item .nav-link {\n\t\tline-height: 40px;\n\t}\n    .header_area .navbar .search{\n        margin-left: 0px;\n    }\n\t.header_area .navbar-collapse{\n\t\tmax-height: 340px;\n\t\toverflow-y: scroll;\n\t}\n\t.header_area .navbar .nav .nav-item.submenu ul .nav-item .nav-link {\n\t\tpadding: 0px 15px;\n\t}\n\t.header_area .navbar .nav .nav-item {\n\t\tmargin-right: 0px;\n\t}\n\t.header_area + section, .header_area + row, .header_area + div {\n\t\tmargin-top: 0px;\n\t}\n\t/* End Main Menu Area css\n\t============================================================================================ */\n\t/* Blog page Area css\n\t============================================================================================ */\n\t.categories_post img{\n        width: 100%;\n    }\n\t.categories_post {\n\t\tmax-width: 360px;\n\t\tmargin: 0 auto;\n\t}\n\t.blog_categorie_area .col-lg-4{\n        margin-top: 30px;\n    }\n    .blog_area{\n        padding-bottom: 80px;\n    }\n    .single-post-area .blog_right_sidebar{\n        margin-top: 30px;\n    }\n\t/* End Blog page Area css\n\t============================================================================================ */\n\t\n\t/* Contact Page Area css\n\t============================================================================================ */\n\t.contact_info{\n\t\tmargin-bottom: 50px;\n\t}\n\t.c_details_list{\n\t\tmargin-top: 30px;\n\t}\n\t/* End Contact page Area css\n\t============================================================================================ */\n\t.home_banner_area .donation_inner{\n\t\tmargin-bottom: -30px;\n\t}\n\t.home_banner_area .dontation_item{\n\t\tmax-width: 350px;\n\t\tmargin: auto;\n\t}\n\t/* Footer Area css\n\t============================================================================================ */\n\t.footer-area .col-sm-6{\n\t\tmargin-bottom: 30px;\n\t}\n\t.footer_area .f_widget{\n\t\tmargin-bottom: 30px;\n\t}\n\t.footer_area .footer_inner{\n\t\tmargin-bottom: -30px;\n\t}\n\t/* End End Footer Area css\n\t============================================================================================ */\n\t.welcome_text{\n\t\tmargin-bottom: 30px;\n\t}\n\t.banner_area .box_1620 {\n\t\tbottom: -71px;\n\t}\n\t.banner_area {\n\t\tmargin-bottom: 71px;\n\t}\n\t.profile_inner .personal_text {\n\t\tpadding-top: 30px;\n\t}\n}\n@media (max-width:767px){\n\t.home_banner_area {\n\t\tmin-height: 570px;\n\t\tmargin-bottom: 120px;\n\t}\n\t.home_banner_area .banner_inner {\n\t\tmin-height: 500px;\n\t}\n\t.home_banner_area .box_1620 {\n\t\tmin-height: 500px;\n\t}\n\t.home_banner_area .banner_inner .banner_content {\n\t\tmargin-top: 0px;\n\t}\n\t/* Blog Page Area css\n\t============================================================================================ */\n    .blog_banner .banner_inner .blog_b_text h2 {\n\t\tfont-size: 40px;\n\t\tline-height: 50px;\n\t}\n\t.blog_info.text-right{\n\t\ttext-align: left !important;\n\t\tmargin-bottom: 10px;\n\t}\n\t/* End Blog Page Area css\n\t============================================================================================ */\n\t.home_banner_area .banner_inner .banner_content h3 {\n\t\tfont-size: 45px;\n\t\tline-height: 55px;\n\t}\n\t.home_banner_area .banner_inner .banner_content p br {\n\t\tdisplay: none;\n\t}\n\t.home_banner_area .banner_inner .banner_content h3 span {\n\t\tline-height: 45px;\n\t\tpadding-bottom: 0px;\n\t\tpadding-top: 0px;\n\t}\n\t/* Footer Area css\n\t============================================================================================ */\n\t.footer-bottom{\n\t\ttext-align: center;\n\t}\n\t.footer-bottom .footer-social {\n\t\ttext-align: center;\n\t\tmargin-top: 15px;\n\t}\n\t/* End End Footer Area css\n\t============================================================================================ */\n\t.service_inner .col-lg-3 {\n\t\tmargin-bottom: 0px;\n\t}\n\t.service_img{\n\t\tmax-width: 405px;\n\t\tmargin: auto;\n\t}\n\t.service_inner .service_text {\n\t\tpadding-top: 30px;\n\t\tpadding-bottom: 30px;\n\t\tmax-width: 405px;\n\t\tmargin: 0px auto 0px;\n\t}\n\t.instagram_image a {\n\t\tflex: 0 0 33.33%;\n\t\tmax-width: 33.33%;\n\t}\n\t.wel_item {\n\t\tmargin-bottom: 30px;\n\t}\n}\n@media (max-width:600px){\n\t\n}\n@media (max-width:575px){\n\t.top_menu {\n\t\tdisplay: none;\n\t}\n\t.header_area + section, .header_area + row, .header_area + div {\n\t\tmargin-top: 0px;\n\t}\n    /* Home Banner Area css\n\t============================================================================================ */\n\t.home_banner_area .banner_inner .banner_content h2 {\n\t\tfont-size: 28px;\n\t}\n\t.home_banner_area {\n\t\tmin-height: 570px;\n\t}\n\t.home_banner_area .banner_inner {\n\t\tmin-height: 500px;\n\t}\n\t.blog_banner .banner_inner .blog_b_text {\n\t\tmargin-top: 0px;\n\t}\n\t.home_banner_area .banner_inner .banner_content h5 {\n\t\tmargin-top: 0px;\n\t}\n\t/* End Home Banner Area css\n\t============================================================================================ */\n\t.p_120 {\n\t\tpadding-top: 70px;\n\t\tpadding-bottom: 70px;\n\t}\n\t.main_title h2 {\n\t\tfont-size: 25px;\n\t}\n\t/* Elements Area css\n\t============================================================================================ */\n\t.sample-text-area {\n\t\tpadding: 70px 0 70px 0;\n\t}\n\t.generic-blockquote {\n\t\tpadding: 30px 15px 30px 30px;\n\t}\n\t/* End Elements Area css\n\t============================================================================================ */\n\t\n\t/* Blog Page Area css\n\t============================================================================================ */\n\t.blog_details h2 {\n\t\tfont-size: 20px;\n\t\tline-height: 30px;\n\t}\n\t.blog_banner .banner_inner .blog_b_text h2 {\n\t\tfont-size: 28px;\n\t\tline-height: 38px;\n\t}\n\t/* End Blog Page Area css\n\t============================================================================================ */\n\t/* Footer Area css\n\t============================================================================================ */\n\t.footer-area {\n\t\tpadding: 70px 0px;\n\t}\n\t/* End End Footer Area css\n\t============================================================================================ */\n\t.pad_top {\n\t\tpadding-top: 70px;\n\t}\n\t.pad_bt {\n\t\tpadding-bottom: 70px;\n\t}\n\t.home_banner_area .box_1620 {\n\t\tbottom: -71px;\n\t\tborder-radius: 0px;\n\t}\n\t.home_banner_area {\n\t\tmargin-bottom: 71px;\n\t}\n\t.tabs_inner .nav.nav-tabs li a {\n\t\tline-height: 42px;\n\t\tpadding: 0px 18px;\n\t}\n\t.gallery_f_inner{\n\t\tmax-width: 340px;\n\t\tmargin: 0px auto -45px;\n\t}\n\t.blog_categorie_area {\n\t\tpadding-top: 70px;\n\t\tpadding-bottom: 70px;\n\t}\n}\n\n@media (max-width:480px){\n\t/* Main Menu Area css\n\t============================================================================================ */\n\t.header_area .navbar-collapse{\n\t\tmax-height: 250px;\n\t}\n\t/* End Main Menu Area css\n\t============================================================================================ */\n\t\n\t/* Home Banner Area css\n\t============================================================================================ */\n    .home_banner_area .banner_inner .banner_content {\n\t\tpadding: 30px 15px;\n\t\tmargin-top: 0px;\n\t}\n\t.banner_content .white_btn {\n\t\tdisplay: block;\n\t}\n\t/* End Home Banner Area css\n\t============================================================================================ */\n\t.banner_area .banner_inner .banner_content h2 {\n\t\tfont-size: 32px;\n\t}\n\t/* Blog Page Area css\n\t============================================================================================ */\n\t.comments-area .thumb {\n\t\tmargin-right: 10px;\n\t}\n\t/* End Blog Page Area css\n\t============================================================================================ */\n\t.tabs_inner .tab-content .tab-pane .list::before {\n\t\tdisplay: none;\n\t}\n\t.tabs_inner .tab-content .tab-pane .list li .media .d-flex {\n\t\tpadding-right: 0px;\n\t\tpadding-bottom: 18px;\n\t}\n\t.tabs_inner .tab-content .tab-pane .list li .media {\n\t\tdisplay: block;\n\t}\n\t.tabs_inner .tab-content .tab-pane .list li span {\n\t\tdisplay: none;\n\t}\n\t.tabs_inner .nav.nav-tabs {\n\t\tmargin-bottom: 0px;\n\t}\n\t.isotope_fillter .gallery_filter li {\n\t\tmargin-right: 17px;\n\t}\n}"
  },
  {
    "path": "public/profile/css/style.css",
    "content": "/*----------------------------------------------------\n@File: Default Styles\n@Author: Rocky Ahmed\n@URL: http://wethemez.com\nAuthor E-mail: rockybd1995@gmail.com\n\nThis file contains the styling for the actual theme, this\nis the file you need to edit to change the look of the\ntheme.\n---------------------------------------------------- */\n/*=====================================================================\n@Template Name: Builder Construction\n@Author: Rocky Ahmed\n@Developed By: Rocky Ahmed\n@Developer URL: http://rocky.wethemez.com\nAuthor E-mail: rockybd1995@gmail.com\n\n@Default Styles\n\nTable of Content:\n01/ Variables\n02/ predefin\n03/ header\n04/ button\n05/ banner\n06/ breadcrumb\n07/ about\n08/ team\n09/ project\n10/ price\n11/ team\n12/ blog\n13/ video\n14/ features\n15/ career\n16/ contact\n17/ footer\n\n=====================================================================*/\n/*----------------------------------------------------*/\n/*font Variables*/\n/*Color Variables*/\n/*=================== fonts ====================*/\n@import url(\"https://fonts.googleapis.com/css?family=Heebo:300,400,700,900|Roboto:300,400,500,700\");\n/*---------------------------------------------------- */\n/*----------------------------------------------------*/\n.list {\n  list-style: none;\n  margin: 0px;\n  padding: 0px; }\n\na {\n  text-decoration: none;\n  transition: all 0.3s ease-in-out; }\n  a:hover, a:focus {\n    text-decoration: none;\n    outline: none; }\n\n.row.m0 {\n  margin: 0px; }\n\nbody {\n  line-height: 26px;\n  font-size: 16px;\n  font-family: \"Roboto\", sans-serif;\n  font-weight: normal;\n  color: #777777; }\n\nh1, h2, h3, h4, h5, h6 {\n  font-family: \"Heebo\", sans-serif;\n  font-weight: bold; }\n\nbutton:focus {\n  outline: none;\n  box-shadow: none; }\n\n.p0 {\n  padding-left: 0px;\n  padding-right: 0px; }\n\n.p_120 {\n  padding-top: 120px;\n  padding-bottom: 120px; }\n\n.p_100 {\n  padding-top: 100px;\n  padding-bottom: 100px; }\n\n.pad_top {\n  padding-top: 120px; }\n\n.pad_bt {\n  padding-bottom: 120px; }\n\n.mt-25 {\n  margin-top: 25px; }\n\n@media (min-width: 1200px) {\n  .container {\n    max-width: 1170px; } }\n\n@media (min-width: 1620px) {\n  .box_1620 {\n    max-width: 1620px;\n    margin: auto;\n    width: 100%;\n    padding-left: 0px;\n    padding-right: 0px; } }\n/* Main Title Area css\n============================================================================================ */\n.main_title {\n  text-align: center;\n  max-width: 670px;\n  margin: 0px auto 75px; }\n  .main_title h2 {\n    font-family: \"Heebo\", sans-serif;\n    font-size: 36px;\n    color: #222222;\n    margin-bottom: 15px;\n    text-transform: uppercase; }\n  .main_title p {\n    font-size: 16px;\n    font-family: \"Roboto\", sans-serif;\n    font-weight: normal;\n    line-height: 26px;\n    color: #777777;\n    margin-bottom: 0px; }\n\n/* End Main Title Area css\n============================================================================================ */\n/*---------------------------------------------------- */\n/*----------------------------------------------------*/\n.header_area {\n  position: absolute;\n  width: 100%;\n  top: 0;\n  left: 0;\n  z-index: 99;\n  transition: background 0.4s, all 0.3s linear; }\n  .header_area .navbar {\n    background: transparent;\n    padding: 0px;\n    border: 0px;\n    border-radius: 0px; }\n    .header_area .navbar .nav .nav-item {\n      margin-right: 45px; }\n      .header_area .navbar .nav .nav-item .nav-link {\n        font: 500 12px/120px \"Roboto\", sans-serif;\n        text-transform: uppercase;\n        color: #fff;\n        padding: 0px;\n        display: inline-block; }\n        .header_area .navbar .nav .nav-item .nav-link:after {\n          display: none; }\n      .header_area .navbar .nav .nav-item:hover .nav-link, .header_area .navbar .nav .nav-item.active .nav-link {\n        color: #fff; }\n      .header_area .navbar .nav .nav-item.submenu {\n        position: relative; }\n        .header_area .navbar .nav .nav-item.submenu ul {\n          border: none;\n          padding: 0px;\n          border-radius: 0px;\n          box-shadow: none;\n          margin: 0px;\n          background: #fff;\n          box-shadow: 0px 3px 16px 0px rgba(0, 0, 0, 0.1); }\n          @media (min-width: 992px) {\n            .header_area .navbar .nav .nav-item.submenu ul {\n              position: absolute;\n              top: 120%;\n              left: 0px;\n              min-width: 200px;\n              text-align: left;\n              opacity: 0;\n              transition: all 300ms ease-in;\n              visibility: hidden;\n              display: block;\n              border: none;\n              padding: 0px;\n              border-radius: 0px; } }\n          .header_area .navbar .nav .nav-item.submenu ul:before {\n            content: \"\";\n            width: 0;\n            height: 0;\n            border-style: solid;\n            border-width: 10px 10px 0 10px;\n            border-color: #eeeeee transparent transparent transparent;\n            position: absolute;\n            right: 24px;\n            top: 45px;\n            z-index: 3;\n            opacity: 0;\n            transition: all 400ms linear; }\n          .header_area .navbar .nav .nav-item.submenu ul .nav-item {\n            display: block;\n            float: none;\n            margin-right: 0px;\n            border-bottom: 1px solid #ededed;\n            margin-left: 0px;\n            transition: all 0.4s linear; }\n            .header_area .navbar .nav .nav-item.submenu ul .nav-item .nav-link {\n              line-height: 45px;\n              color: #222222;\n              padding: 0px 30px;\n              transition: all 150ms linear;\n              display: block;\n              margin-right: 0px; }\n            .header_area .navbar .nav .nav-item.submenu ul .nav-item:last-child {\n              border-bottom: none; }\n            .header_area .navbar .nav .nav-item.submenu ul .nav-item:hover .nav-link {\n              background: #766dff;\n              color: #fff; }\n        @media (min-width: 992px) {\n          .header_area .navbar .nav .nav-item.submenu:hover ul {\n            visibility: visible;\n            opacity: 1;\n            top: 100%; } }\n        .header_area .navbar .nav .nav-item.submenu:hover ul .nav-item {\n          margin-top: 0px; }\n      .header_area .navbar .nav .nav-item:last-child {\n        margin-right: 0px; }\n    .header_area .navbar .search {\n      font-size: 12px;\n      line-height: 60px;\n      display: inline-block;\n      color: #222222;\n      margin-left: 80px; }\n      .header_area .navbar .search i {\n        font-weight: 600; }\n  .header_area.navbar_fixed .main_menu {\n    position: fixed;\n    width: 100%;\n    top: -70px;\n    left: 0;\n    right: 0;\n    background: #000;\n    transform: translateY(70px);\n    transition: transform 500ms ease, background 500ms ease;\n    -webkit-transition: transform 500ms ease, background 500ms ease;\n    box-shadow: 0px 3px 16px 0px rgba(0, 0, 0, 0.1); }\n    .header_area.navbar_fixed .main_menu .navbar .nav .nav-item .nav-link {\n      line-height: 70px; }\n\n.top_menu {\n  background: #f9f9ff; }\n  .top_menu .header_social li {\n    display: inline-block;\n    margin-right: 15px; }\n    .top_menu .header_social li a {\n      font-size: 14px;\n      color: #777777;\n      display: inline-block;\n      line-height: 42px;\n      transition: all 300ms linear 0s; }\n    .top_menu .header_social li:last-child {\n      margin-right: 0px; }\n    .top_menu .header_social li:hover a {\n      color: #766dff; }\n  .top_menu .dn_btn {\n    line-height: 42px;\n    display: inline-block;\n    font-size: 12px;\n    margin-right: 30px;\n    font-family: \"Roboto\", sans-serif;\n    font-weight: normal;\n    color: #777777;\n    transition: all 300ms linear 0s; }\n    .top_menu .dn_btn:hover {\n      color: #766dff; }\n    .top_menu .dn_btn:last-child {\n      margin-right: 0px; }\n  .top_menu .lan_pack {\n    height: 30px;\n    border: 1px solid #eeeeee;\n    border-radius: 3px;\n    line-height: 28px;\n    font-size: 12px;\n    font-family: \"Roboto\", sans-serif;\n    font-weight: 500;\n    padding-left: 19px;\n    padding-right: 36px;\n    color: #777777;\n    background: #f9f9ff;\n    margin-right: 5px;\n    margin-top: 8px; }\n    .top_menu .lan_pack .current {\n      color: #777777; }\n    .top_menu .lan_pack:after {\n      content: \"\\f0d7\";\n      border: none !important;\n      font: normal normal normal 12px/1 FontAwesome;\n      transform: rotate(0deg);\n      height: auto;\n      margin-top: -6px;\n      right: 20px; }\n\n/*---------------------------------------------------- */\n/*----------------------------------------------------*/\n/* Home Banner Area css\n============================================================================================ */\n.home_banner_area {\n  position: relative;\n  z-index: 1;\n  background-image: -moz-linear-gradient(0deg, #766dff 0%, #88f3ff 100%);\n  background-image: -webkit-linear-gradient(0deg, #766dff 0%, #88f3ff 100%);\n  background-image: -ms-linear-gradient(0deg, #766dff 0%, #88f3ff 100%);\n  margin-bottom: 0px; }\n  .home_banner_area .box_1620 {\n    min-height: 500px;\n    border-radius: 12px;\n    position: relative;\n    bottom: -70px;\n    background: #fff;\n    padding: 30px;\n    box-shadow: 0px 20px 80px 0px rgba(153, 153, 153, 0.3); }\n  .home_banner_area .banner_inner {\n    position: relative;\n    width: 100%;\n    min-height: 500px;\n    display: flex; }\n    .home_banner_area .banner_inner .banner_content {\n      color: #222222;\n      vertical-align: middle;\n      align-self: center;\n      text-align: left; }\n      .home_banner_area .banner_inner .banner_content .media .d-flex {\n        padding-right: 75px; }\n      .home_banner_area .banner_inner .banner_content .media .media-body {\n        vertical-align: middle;\n        align-self: center; }\n\n.blog_banner {\n  min-height: 780px;\n  position: relative;\n  z-index: 1;\n  overflow: hidden;\n  margin-bottom: 0px; }\n  .blog_banner .banner_inner {\n    background: #04091e;\n    position: relative;\n    overflow: hidden;\n    width: 100%;\n    min-height: 780px;\n    z-index: 1; }\n    .blog_banner .banner_inner .overlay {\n      background: url(../img/banner/banner-2.jpg) no-repeat scroll center center;\n      opacity: .5;\n      height: 125%;\n      position: absolute;\n      left: 0px;\n      top: 0px;\n      width: 100%;\n      z-index: -1; }\n    .blog_banner .banner_inner .blog_b_text {\n      max-width: 700px;\n      margin: auto;\n      color: #fff; }\n      .blog_banner .banner_inner .blog_b_text h2 {\n        font-size: 60px;\n        font-weight: bold;\n        font-family: \"Heebo\", sans-serif;\n        line-height: 66px;\n        margin-bottom: 15px;\n        text-transform: uppercase; }\n      .blog_banner .banner_inner .blog_b_text p {\n        font-size: 16px;\n        margin-bottom: 35px; }\n      .blog_banner .banner_inner .blog_b_text .white_bg_btn {\n        line-height: 42px;\n        padding: 0px 45px;\n        border-radius: 5px; }\n\n.banner_box {\n  max-width: 1620px;\n  margin: auto; }\n\n.banner_area {\n  position: relative;\n  z-index: 1;\n  min-height: 350px;\n  background-image: -moz-linear-gradient(0deg, #766dff 0%, #88f3ff 100%);\n  background-image: -webkit-linear-gradient(0deg, #766dff 0%, #88f3ff 100%);\n  background-image: -ms-linear-gradient(0deg, #766dff 0%, #88f3ff 100%);\n  margin-bottom: 120px; }\n  .banner_area .box_1620 {\n    background: #fff;\n    min-height: 360px;\n    border-radius: 12px;\n    position: relative;\n    bottom: -120px;\n    box-shadow: 0px 20px 80px 0px rgba(153, 153, 153, 0.3); }\n  .banner_area .banner_inner {\n    position: relative;\n    overflow: hidden;\n    width: 100%;\n    min-height: 360px;\n    z-index: 1; }\n    .banner_area .banner_inner .banner_content h2 {\n      color: #222222;\n      font-size: 48px;\n      font-family: \"Heebo\", sans-serif;\n      margin-bottom: 0px;\n      font-weight: bold; }\n    .banner_area .banner_inner .banner_content .page_link a {\n      font-size: 14px;\n      color: #222222;\n      font-family: \"Roboto\", sans-serif;\n      margin-right: 32px;\n      position: relative; }\n      .banner_area .banner_inner .banner_content .page_link a:before {\n        content: \"\\e87a\";\n        font-family: 'Linearicons-Free';\n        position: absolute;\n        right: -25px;\n        top: 50%;\n        transform: translateY(-50%); }\n      .banner_area .banner_inner .banner_content .page_link a:last-child {\n        margin-right: 0px; }\n        .banner_area .banner_inner .banner_content .page_link a:last-child:before {\n          display: none; }\n      .banner_area .banner_inner .banner_content .page_link a:hover {\n        color: #766dff; }\n\n/* End Home Banner Area css\n============================================================================================ */\n/*---------------------------------------------------- */\n/*----------------------------------------------------*/\n/* Latest Blog Area css\n============================================================================================ */\n.latest_blog_inner {\n  margin-bottom: -30px; }\n\n.l_blog_item {\n  margin-bottom: 30px; }\n  .l_blog_item .date {\n    font-size: 13px;\n    font-family: \"Roboto\", sans-serif;\n    font-weight: normal;\n    color: #777777;\n    margin-top: 20px;\n    display: block;\n    margin-bottom: 15px; }\n  .l_blog_item h4 {\n    font-size: 18px;\n    line-height: 24px;\n    color: #222222;\n    border-bottom: 1px solid #eeeeee;\n    padding-bottom: 20px;\n    margin-bottom: 20px;\n    transition: all 300ms linear 0s; }\n  .l_blog_item p {\n    margin-bottom: 0px; }\n  .l_blog_item:hover h4 {\n    color: #766dff; }\n\n/* End Latest Blog Area css\n============================================================================================ */\n/*================= latest_blog_area css =============*/\n.single-recent-blog-post {\n  margin-bottom: 30px; }\n  .single-recent-blog-post .thumb {\n    overflow: hidden; }\n    .single-recent-blog-post .thumb img {\n      transition: all 0.7s linear; }\n  .single-recent-blog-post .details {\n    padding-top: 30px; }\n    .single-recent-blog-post .details .sec_h4 {\n      line-height: 24px;\n      padding: 10px 0px 13px;\n      transition: all 0.3s linear; }\n      .single-recent-blog-post .details .sec_h4:hover {\n        color: #777777; }\n  .single-recent-blog-post .date {\n    font-size: 14px;\n    line-height: 24px;\n    font-weight: 400; }\n  .single-recent-blog-post:hover img {\n    transform: scale(1.23) rotate(10deg); }\n\n.tags .tag_btn {\n  font-size: 12px;\n  font-weight: 500;\n  line-height: 20px;\n  border: 1px solid #eeeeee;\n  display: inline-block;\n  padding: 1px 18px;\n  text-align: center;\n  color: #222222; }\n  .tags .tag_btn:before {\n    background: #766dff; }\n  .tags .tag_btn + .tag_btn {\n    margin-left: 2px; }\n\n/*========= blog_categorie_area css ===========*/\n.blog_categorie_area {\n  padding-top: 80px;\n  padding-bottom: 80px; }\n\n.categories_post {\n  position: relative;\n  text-align: center;\n  cursor: pointer; }\n  .categories_post img {\n    max-width: 100%; }\n  .categories_post .categories_details {\n    position: absolute;\n    top: 20px;\n    left: 20px;\n    right: 20px;\n    bottom: 20px;\n    background: rgba(34, 34, 34, 0.8);\n    color: #fff;\n    transition: all 0.3s linear;\n    display: flex;\n    align-items: center;\n    justify-content: center; }\n    .categories_post .categories_details h5 {\n      margin-bottom: 0px;\n      font-size: 18px;\n      line-height: 26px;\n      text-transform: uppercase;\n      color: #fff;\n      position: relative; }\n    .categories_post .categories_details p {\n      font-weight: 300;\n      font-size: 14px;\n      line-height: 26px;\n      margin-bottom: 0px; }\n    .categories_post .categories_details .border_line {\n      margin: 10px 0px;\n      background: #fff;\n      width: 100%;\n      height: 1px; }\n  .categories_post:hover .categories_details {\n    background-image: -moz-linear-gradient(0deg, #766dff 0%, #88f3ff 100%);\n    background-image: -webkit-linear-gradient(0deg, #766dff 0%, #88f3ff 100%);\n    background-image: -ms-linear-gradient(0deg, #766dff 0%, #88f3ff 100%);\n    opacity: 0.851; }\n\n/*============ blog_left_sidebar css ==============*/\n.blog_item {\n  margin-bottom: 40px; }\n\n.blog_info {\n  padding-top: 30px; }\n  .blog_info .post_tag {\n    padding-bottom: 20px; }\n    .blog_info .post_tag a {\n      font: 300 14px/21px \"Roboto\", sans-serif;\n      color: #222222; }\n      .blog_info .post_tag a:hover {\n        color: #777777; }\n      .blog_info .post_tag a.active {\n        color: #766dff; }\n  .blog_info .blog_meta li a {\n    font: 300 14px/20px \"Roboto\", sans-serif;\n    color: #777777;\n    vertical-align: middle;\n    padding-bottom: 12px;\n    display: inline-block; }\n    .blog_info .blog_meta li a i {\n      color: #222222;\n      font-size: 16px;\n      font-weight: 600;\n      padding-left: 15px;\n      line-height: 20px;\n      vertical-align: middle; }\n    .blog_info .blog_meta li a:hover {\n      color: #766dff; }\n\n.blog_post img {\n  max-width: 100%; }\n\n.blog_details {\n  padding-top: 20px; }\n  .blog_details h2 {\n    font-size: 24px;\n    line-height: 36px;\n    color: #222222;\n    font-weight: 600;\n    transition: all 0.3s linear; }\n    .blog_details h2:hover {\n      color: #766dff; }\n  .blog_details p {\n    margin-bottom: 26px; }\n\n.view_btn {\n  font-size: 14px;\n  line-height: 36px;\n  display: inline-block;\n  color: #222222;\n  font-weight: 500;\n  padding: 0px 30px;\n  background: #fff; }\n\n.blog_right_sidebar {\n  border: 1px solid #eeeeee;\n  background: #fafaff;\n  padding: 30px; }\n  .blog_right_sidebar .widget_title {\n    font-size: 18px;\n    line-height: 25px;\n    background: #766dff;\n    text-align: center;\n    color: #fff;\n    padding: 8px 0px;\n    margin-bottom: 30px; }\n  .blog_right_sidebar .search_widget .input-group .form-control {\n    font-size: 14px;\n    line-height: 29px;\n    border: 0px;\n    width: 100%;\n    font-weight: 300;\n    color: #fff;\n    padding-left: 20px;\n    border-radius: 45px;\n    z-index: 0;\n    background: #766dff; }\n    .blog_right_sidebar .search_widget .input-group .form-control.placeholder {\n      color: #fff; }\n    .blog_right_sidebar .search_widget .input-group .form-control:-moz-placeholder {\n      color: #fff; }\n    .blog_right_sidebar .search_widget .input-group .form-control::-moz-placeholder {\n      color: #fff; }\n    .blog_right_sidebar .search_widget .input-group .form-control::-webkit-input-placeholder {\n      color: #fff; }\n    .blog_right_sidebar .search_widget .input-group .form-control:focus {\n      box-shadow: none; }\n  .blog_right_sidebar .search_widget .input-group .btn-default {\n    position: absolute;\n    right: 20px;\n    background: transparent;\n    border: 0px;\n    box-shadow: none;\n    font-size: 14px;\n    color: #fff;\n    padding: 0px;\n    top: 50%;\n    transform: translateY(-50%);\n    z-index: 1; }\n  .blog_right_sidebar .author_widget {\n    text-align: center; }\n    .blog_right_sidebar .author_widget h4 {\n      font-size: 18px;\n      line-height: 20px;\n      color: #222222;\n      margin-bottom: 5px;\n      margin-top: 30px; }\n    .blog_right_sidebar .author_widget p {\n      margin-bottom: 0px; }\n    .blog_right_sidebar .author_widget .social_icon {\n      padding: 7px 0px 15px; }\n      .blog_right_sidebar .author_widget .social_icon a {\n        font-size: 14px;\n        color: #222222;\n        transition: all 0.2s linear; }\n        .blog_right_sidebar .author_widget .social_icon a + a {\n          margin-left: 20px; }\n        .blog_right_sidebar .author_widget .social_icon a:hover {\n          color: #766dff; }\n  .blog_right_sidebar .popular_post_widget .post_item .media-body {\n    justify-content: center;\n    align-self: center;\n    padding-left: 20px; }\n    .blog_right_sidebar .popular_post_widget .post_item .media-body h3 {\n      font-size: 14px;\n      line-height: 20px;\n      color: #222222;\n      margin-bottom: 4px;\n      transition: all 0.3s linear; }\n      .blog_right_sidebar .popular_post_widget .post_item .media-body h3:hover {\n        color: #766dff; }\n    .blog_right_sidebar .popular_post_widget .post_item .media-body p {\n      font-size: 12px;\n      line-height: 21px;\n      margin-bottom: 0px; }\n  .blog_right_sidebar .popular_post_widget .post_item + .post_item {\n    margin-top: 20px; }\n  .blog_right_sidebar .post_category_widget .cat-list li {\n    border-bottom: 2px dotted #eee;\n    transition: all 0.3s ease 0s;\n    padding-bottom: 12px; }\n    .blog_right_sidebar .post_category_widget .cat-list li a {\n      font-size: 14px;\n      line-height: 20px;\n      color: #777; }\n      .blog_right_sidebar .post_category_widget .cat-list li a p {\n        margin-bottom: 0px; }\n    .blog_right_sidebar .post_category_widget .cat-list li + li {\n      padding-top: 15px; }\n    .blog_right_sidebar .post_category_widget .cat-list li:hover {\n      border-color: #766dff; }\n      .blog_right_sidebar .post_category_widget .cat-list li:hover a {\n        color: #766dff; }\n  .blog_right_sidebar .newsletter_widget {\n    text-align: center; }\n    .blog_right_sidebar .newsletter_widget .form-group {\n      margin-bottom: 8px; }\n    .blog_right_sidebar .newsletter_widget .input-group-prepend {\n      margin-right: -1px; }\n    .blog_right_sidebar .newsletter_widget .input-group-text {\n      background: #fff;\n      border-radius: 0px;\n      vertical-align: top;\n      font-size: 12px;\n      line-height: 36px;\n      padding: 0px 0px 0px 15px;\n      border: 1px solid #eeeeee;\n      border-right: 0px; }\n    .blog_right_sidebar .newsletter_widget .form-control {\n      font-size: 12px;\n      line-height: 24px;\n      color: #cccccc;\n      border: 1px solid #eeeeee;\n      border-left: 0px;\n      border-radius: 0px; }\n      .blog_right_sidebar .newsletter_widget .form-control.placeholder {\n        color: #cccccc; }\n      .blog_right_sidebar .newsletter_widget .form-control:-moz-placeholder {\n        color: #cccccc; }\n      .blog_right_sidebar .newsletter_widget .form-control::-moz-placeholder {\n        color: #cccccc; }\n      .blog_right_sidebar .newsletter_widget .form-control::-webkit-input-placeholder {\n        color: #cccccc; }\n      .blog_right_sidebar .newsletter_widget .form-control:focus {\n        outline: none;\n        box-shadow: none; }\n    .blog_right_sidebar .newsletter_widget .bbtns {\n      background: #766dff;\n      color: #fff;\n      font-size: 12px;\n      line-height: 38px;\n      display: inline-block;\n      font-weight: 500;\n      padding: 0px 24px 0px 24px;\n      border-radius: 0; }\n    .blog_right_sidebar .newsletter_widget .text-bottom {\n      font-size: 12px; }\n  .blog_right_sidebar .tag_cloud_widget ul li {\n    display: inline-block; }\n    .blog_right_sidebar .tag_cloud_widget ul li a {\n      display: inline-block;\n      border: 1px solid #eee;\n      background: #fff;\n      padding: 0px 13px;\n      margin-bottom: 8px;\n      transition: all 0.3s ease 0s;\n      color: #222222;\n      font-size: 12px; }\n      .blog_right_sidebar .tag_cloud_widget ul li a:hover {\n        background-image: -moz-linear-gradient(0deg, #766dff 0%, #88f3ff 100%);\n        background-image: -webkit-linear-gradient(0deg, #766dff 0%, #88f3ff 100%);\n        background-image: -ms-linear-gradient(0deg, #766dff 0%, #88f3ff 100%);\n        color: #fff; }\n  .blog_right_sidebar .br {\n    width: 100%;\n    height: 1px;\n    background: #eeeeee;\n    margin: 30px 0px; }\n\n.blog-pagination {\n  padding-top: 25px;\n  padding-bottom: 95px; }\n  .blog-pagination .page-link {\n    border-radius: 0; }\n  .blog-pagination .page-item {\n    border: none; }\n\n.page-link {\n  background: transparent;\n  font-weight: 400; }\n\n.blog-pagination .page-item.active .page-link {\n  background-color: #766dff;\n  border-color: transparent;\n  color: #fff; }\n\n.blog-pagination .page-link {\n  position: relative;\n  display: block;\n  padding: 0.5rem 0.75rem;\n  margin-left: -1px;\n  line-height: 1.25;\n  color: #8a8a8a;\n  border: none; }\n\n.blog-pagination .page-link .lnr {\n  font-weight: 600; }\n\n.blog-pagination .page-item:last-child .page-link,\n.blog-pagination .page-item:first-child .page-link {\n  border-radius: 0; }\n\n.blog-pagination .page-link:hover {\n  color: #fff;\n  text-decoration: none;\n  background-color: #766dff;\n  border-color: #eee; }\n\n/*============ Start Blog Single Styles  =============*/\n.single-post-area .social-links {\n  padding-top: 10px; }\n  .single-post-area .social-links li {\n    display: inline-block;\n    margin-bottom: 10px; }\n    .single-post-area .social-links li a {\n      color: #cccccc;\n      padding: 7px;\n      font-size: 14px;\n      transition: all 0.2s linear; }\n      .single-post-area .social-links li a:hover {\n        color: #222222; }\n.single-post-area .blog_details {\n  padding-top: 26px; }\n  .single-post-area .blog_details p {\n    margin-bottom: 10px; }\n.single-post-area .quotes {\n  margin-top: 20px;\n  margin-bottom: 30px;\n  padding: 24px 35px 24px 30px;\n  background-color: white;\n  box-shadow: -20.84px 21.58px 30px 0px rgba(176, 176, 176, 0.1);\n  font-size: 14px;\n  line-height: 24px;\n  color: #777;\n  font-style: italic; }\n.single-post-area .arrow {\n  position: absolute; }\n  .single-post-area .arrow .lnr {\n    font-size: 20px;\n    font-weight: 600; }\n.single-post-area .thumb .overlay-bg {\n  background: rgba(0, 0, 0, 0.8); }\n.single-post-area .navigation-area {\n  border-top: 1px solid #eee;\n  padding-top: 30px;\n  margin-top: 60px; }\n  .single-post-area .navigation-area p {\n    margin-bottom: 0px; }\n  .single-post-area .navigation-area h4 {\n    font-size: 18px;\n    line-height: 25px;\n    color: #222222; }\n  .single-post-area .navigation-area .nav-left {\n    text-align: left; }\n    .single-post-area .navigation-area .nav-left .thumb {\n      margin-right: 20px;\n      background: #000; }\n      .single-post-area .navigation-area .nav-left .thumb img {\n        transition: all 300ms linear 0s; }\n    .single-post-area .navigation-area .nav-left .lnr {\n      margin-left: 20px;\n      opacity: 0;\n      transition: all 300ms linear 0s; }\n    .single-post-area .navigation-area .nav-left:hover .lnr {\n      opacity: 1; }\n    .single-post-area .navigation-area .nav-left:hover .thumb img {\n      opacity: .5; }\n    @media (max-width: 767px) {\n      .single-post-area .navigation-area .nav-left {\n        margin-bottom: 30px; } }\n  .single-post-area .navigation-area .nav-right {\n    text-align: right; }\n    .single-post-area .navigation-area .nav-right .thumb {\n      margin-left: 20px;\n      background: #000; }\n      .single-post-area .navigation-area .nav-right .thumb img {\n        transition: all 300ms linear 0s; }\n    .single-post-area .navigation-area .nav-right .lnr {\n      margin-right: 20px;\n      opacity: 0;\n      transition: all 300ms linear 0s; }\n    .single-post-area .navigation-area .nav-right:hover .lnr {\n      opacity: 1; }\n    .single-post-area .navigation-area .nav-right:hover .thumb img {\n      opacity: .5; }\n@media (max-width: 991px) {\n  .single-post-area .sidebar-widgets {\n    padding-bottom: 0px; } }\n\n.comments-area {\n  background: #fafaff;\n  border: 1px solid #eee;\n  padding: 50px 30px;\n  margin-top: 50px; }\n  @media (max-width: 414px) {\n    .comments-area {\n      padding: 50px 8px; } }\n  .comments-area h4 {\n    text-align: center;\n    margin-bottom: 50px;\n    color: #222222;\n    font-size: 18px; }\n  .comments-area h5 {\n    font-size: 16px;\n    margin-bottom: 0px; }\n  .comments-area a {\n    color: #222222; }\n  .comments-area .comment-list {\n    padding-bottom: 48px; }\n    .comments-area .comment-list:last-child {\n      padding-bottom: 0px; }\n    .comments-area .comment-list.left-padding {\n      padding-left: 25px; }\n    @media (max-width: 413px) {\n      .comments-area .comment-list .single-comment h5 {\n        font-size: 12px; }\n      .comments-area .comment-list .single-comment .date {\n        font-size: 11px; }\n      .comments-area .comment-list .single-comment .comment {\n        font-size: 10px; } }\n  .comments-area .thumb {\n    margin-right: 20px; }\n  .comments-area .date {\n    font-size: 13px;\n    color: #cccccc;\n    margin-bottom: 13px; }\n  .comments-area .comment {\n    color: #777777;\n    margin-bottom: 0px; }\n  .comments-area .btn-reply {\n    background-color: #fff;\n    color: #222222;\n    border: 1px solid #eee;\n    padding: 2px 18px;\n    font-size: 12px;\n    display: block;\n    font-weight: 600;\n    transition: all 300ms linear 0s; }\n    .comments-area .btn-reply:hover {\n      background-color: #766dff;\n      color: #fff; }\n\n.comment-form {\n  background: #fafaff;\n  text-align: center;\n  border: 1px solid #eee;\n  padding: 47px 30px 43px;\n  margin-top: 50px;\n  margin-bottom: 0px; }\n  .comment-form h4 {\n    text-align: center;\n    margin-bottom: 50px;\n    font-size: 18px;\n    line-height: 22px;\n    color: #222222; }\n  .comment-form .name {\n    padding-left: 0px; }\n    @media (max-width: 767px) {\n      .comment-form .name {\n        padding-right: 0px;\n        margin-bottom: 1rem; } }\n  .comment-form .email {\n    padding-right: 0px; }\n    @media (max-width: 991px) {\n      .comment-form .email {\n        padding-left: 0px; } }\n  .comment-form .form-control {\n    padding: 8px 20px;\n    background: #fff;\n    border: none;\n    border-radius: 0px;\n    width: 100%;\n    font-size: 14px;\n    color: #777777;\n    border: 1px solid transparent; }\n    .comment-form .form-control:focus {\n      box-shadow: none;\n      border: 1px solid #eee; }\n  .comment-form textarea.form-control {\n    height: 140px;\n    resize: none; }\n  .comment-form ::-webkit-input-placeholder {\n    /* Chrome/Opera/Safari */\n    font-size: 13px;\n    color: #777; }\n  .comment-form ::-moz-placeholder {\n    /* Firefox 19+ */\n    font-size: 13px;\n    color: #777; }\n  .comment-form :-ms-input-placeholder {\n    /* IE 10+ */\n    font-size: 13px;\n    color: #777; }\n  .comment-form :-moz-placeholder {\n    /* Firefox 18- */\n    font-size: 13px;\n    color: #777; }\n\n/*============ End Blog Single Styles  =============*/\n/*---------------------------------------------------- */\n/*----------------------------------------------------*/\n/* Reservation Form Area css\n============================================================================================ */\n.reservation_form_area .res_form_inner {\n  max-width: 555px;\n  margin: auto;\n  box-shadow: 0px 10px 30px 0px rgba(153, 153, 153, 0.1);\n  padding: 75px 50px;\n  position: relative; }\n  .reservation_form_area .res_form_inner:before {\n    content: \"\";\n    background: url(../img/contact-shap-1.png);\n    position: absolute;\n    left: -125px;\n    height: 421px;\n    width: 98px;\n    top: 50%;\n    transform: translateY(-50%); }\n  .reservation_form_area .res_form_inner:after {\n    content: \"\";\n    background: url(../img/contact-shap-2.png);\n    position: absolute;\n    right: -125px;\n    height: 421px;\n    width: 98px;\n    top: 50%;\n    transform: translateY(-50%); }\n\n.reservation_form .form-group input {\n  height: 40px;\n  border-radius: 0px;\n  border: 1px solid #eeeeee;\n  outline: none;\n  box-shadow: none;\n  padding: 0px 15px;\n  font-size: 13px;\n  font-family: \"Roboto\", sans-serif;\n  font-weight: 300;\n  color: #999999; }\n  .reservation_form .form-group input.placeholder {\n    font-size: 13px;\n    font-family: \"Roboto\", sans-serif;\n    font-weight: 300;\n    color: #999999; }\n  .reservation_form .form-group input:-moz-placeholder {\n    font-size: 13px;\n    font-family: \"Roboto\", sans-serif;\n    font-weight: 300;\n    color: #999999; }\n  .reservation_form .form-group input::-moz-placeholder {\n    font-size: 13px;\n    font-family: \"Roboto\", sans-serif;\n    font-weight: 300;\n    color: #999999; }\n  .reservation_form .form-group input::-webkit-input-placeholder {\n    font-size: 13px;\n    font-family: \"Roboto\", sans-serif;\n    font-weight: 300;\n    color: #999999; }\n.reservation_form .form-group .res_select {\n  height: 40px;\n  border: 1px solid #eeeeee;\n  border-radius: 0px;\n  width: 100%;\n  padding: 0px 15px;\n  line-height: 36px; }\n  .reservation_form .form-group .res_select .current {\n    font-size: 13px;\n    font-family: \"Roboto\", sans-serif;\n    font-weight: 300;\n    color: #999999; }\n  .reservation_form .form-group .res_select:after {\n    content: \"\\e874\";\n    font-family: 'Linearicons-Free';\n    color: #cccccc;\n    transform: rotate(0deg);\n    border: none;\n    margin-top: -17px;\n    font-size: 13px;\n    right: 22px; }\n.reservation_form .form-group:last-child {\n  text-align: center; }\n\n/* End Reservation Form Area css\n============================================================================================ */\n/*============== contact_area css ================*/\n.mapBox {\n  height: 420px;\n  margin-bottom: 80px; }\n\n.contact_info .info_item {\n  position: relative;\n  padding-left: 45px; }\n  .contact_info .info_item i {\n    position: absolute;\n    left: 0;\n    top: 0;\n    font-size: 20px;\n    line-height: 24px;\n    color: #766dff;\n    font-weight: 600; }\n  .contact_info .info_item h6 {\n    font-size: 16px;\n    line-height: 24px;\n    color: \"Roboto\", sans-serif;\n    font-weight: bold;\n    margin-bottom: 0px;\n    color: #222222; }\n    .contact_info .info_item h6 a {\n      color: #222222; }\n  .contact_info .info_item p {\n    font-size: 14px;\n    line-height: 24px;\n    padding: 2px 0px; }\n\n.contact_form .form-group {\n  margin-bottom: 10px; }\n  .contact_form .form-group .form-control {\n    font-size: 13px;\n    line-height: 26px;\n    color: #999;\n    border: 1px solid #eeeeee;\n    font-family: \"Roboto\", sans-serif;\n    border-radius: 0px;\n    padding-left: 20px; }\n    .contact_form .form-group .form-control:focus {\n      box-shadow: none;\n      outline: none; }\n    .contact_form .form-group .form-control.placeholder {\n      color: #999; }\n    .contact_form .form-group .form-control:-moz-placeholder {\n      color: #999; }\n    .contact_form .form-group .form-control::-moz-placeholder {\n      color: #999; }\n    .contact_form .form-group .form-control::-webkit-input-placeholder {\n      color: #999; }\n  .contact_form .form-group textarea {\n    resize: none; }\n    .contact_form .form-group textarea.form-control {\n      height: 140px; }\n.contact_form .submit_btn {\n  margin-top: 20px;\n  cursor: pointer; }\n\n/* Contact Success and error Area css\n============================================================================================ */\n.modal-message .modal-dialog {\n  position: absolute;\n  top: 36%;\n  left: 50%;\n  transform: translateX(-50%) translateY(-50%) !important;\n  margin: 0px;\n  max-width: 500px;\n  width: 100%; }\n  .modal-message .modal-dialog .modal-content .modal-header {\n    text-align: center;\n    display: block;\n    border-bottom: none;\n    padding-top: 50px;\n    padding-bottom: 50px; }\n    .modal-message .modal-dialog .modal-content .modal-header .close {\n      position: absolute;\n      right: -15px;\n      top: -15px;\n      padding: 0px;\n      color: #fff;\n      opacity: 1;\n      cursor: pointer; }\n    .modal-message .modal-dialog .modal-content .modal-header h2 {\n      display: block;\n      text-align: center;\n      color: #766dff;\n      padding-bottom: 10px;\n      font-family: \"Roboto\", sans-serif; }\n    .modal-message .modal-dialog .modal-content .modal-header p {\n      display: block; }\n\n/* End Contact Success and error Area css\n============================================================================================ */\n/*---------------------------------------------------- */\n/*----------------------------------------------------*/\n/*============== Elements Area css ================*/\n.mb-20 {\n  margin-bottom: 20px; }\n\n.mb-30 {\n  margin-bottom: 30px; }\n\n.sample-text-area {\n  padding: 100px 0px; }\n  .sample-text-area .title_color {\n    margin-bottom: 30px; }\n  .sample-text-area p {\n    line-height: 26px; }\n    .sample-text-area p b {\n      font-weight: bold;\n      color: #766dff; }\n    .sample-text-area p i {\n      color: #766dff;\n      font-style: italic; }\n    .sample-text-area p sup {\n      color: #766dff;\n      font-style: italic; }\n    .sample-text-area p sub {\n      color: #766dff;\n      font-style: italic; }\n    .sample-text-area p del {\n      color: #766dff; }\n    .sample-text-area p u {\n      color: #766dff; }\n\n/*============== End Elements Area css ================*/\n/*==============Elements Button Area css ================*/\n.elements_button .title_color {\n  margin-bottom: 30px;\n  color: #222222; }\n\n.title_color {\n  color: #222222; }\n\n.button-group-area {\n  margin-top: 15px; }\n  .button-group-area:nth-child(odd) {\n    margin-top: 40px; }\n  .button-group-area:first-child {\n    margin-top: 0px; }\n  .button-group-area .theme_btn {\n    margin-right: 10px; }\n  .button-group-area .white_btn {\n    margin-right: 10px; }\n  .button-group-area .link {\n    text-decoration: underline;\n    color: #222222;\n    background: transparent; }\n    .button-group-area .link:hover {\n      color: #fff; }\n  .button-group-area .disable {\n    background: transparent;\n    color: #007bff;\n    cursor: not-allowed; }\n    .button-group-area .disable:before {\n      display: none; }\n\n.primary {\n  background: #52c5fd; }\n  .primary:before {\n    background: #2faae6; }\n\n.success {\n  background: #4cd3e3; }\n  .success:before {\n    background: #2ebccd; }\n\n.info {\n  background: #38a4ff; }\n  .info:before {\n    background: #298cdf; }\n\n.warning {\n  background: #f4e700; }\n  .warning:before {\n    background: #e1d608; }\n\n.danger {\n  background: #f54940; }\n  .danger:before {\n    background: #e13b33; }\n\n.primary-border {\n  background: transparent;\n  border: 1px solid #52c5fd;\n  color: #52c5fd; }\n  .primary-border:before {\n    background: #52c5fd; }\n\n.success-border {\n  background: transparent;\n  border: 1px solid #4cd3e3;\n  color: #4cd3e3; }\n  .success-border:before {\n    background: #4cd3e3; }\n\n.info-border {\n  background: transparent;\n  border: 1px solid #38a4ff;\n  color: #38a4ff; }\n  .info-border:before {\n    background: #38a4ff; }\n\n.warning-border {\n  background: #fff;\n  border: 1px solid #f4e700;\n  color: #f4e700; }\n  .warning-border:before {\n    background: #f4e700; }\n\n.danger-border {\n  background: transparent;\n  border: 1px solid #f54940;\n  color: #f54940; }\n  .danger-border:before {\n    background: #f54940; }\n\n.link-border {\n  background: transparent;\n  border: 1px solid #766dff;\n  color: #766dff; }\n  .link-border:before {\n    background: #766dff; }\n\n.radius {\n  border-radius: 3px; }\n\n.circle {\n  border-radius: 20px; }\n\n.arrow span {\n  padding-left: 5px; }\n\n.e-large {\n  line-height: 50px;\n  padding-top: 0px;\n  padding-bottom: 0px; }\n\n.large {\n  line-height: 45px;\n  padding-top: 0px;\n  padding-bottom: 0px; }\n\n.medium {\n  line-height: 30px;\n  padding-top: 0px;\n  padding-bottom: 0px; }\n\n.small {\n  line-height: 25px;\n  padding-top: 0px;\n  padding-bottom: 0px; }\n\n.general {\n  line-height: 38px;\n  padding-top: 0px;\n  padding-bottom: 0px; }\n\n/*==============End Elements Button Area css ================*/\n/* =================================== */\n/*  Elements Page Styles\n/* =================================== */\n/*---------- Start Elements Page -------------*/\n.generic-banner {\n  margin-top: 60px;\n  text-align: center; }\n\n.generic-banner .height {\n  height: 600px; }\n\n@media (max-width: 767.98px) {\n  .generic-banner .height {\n    height: 400px; } }\n.generic-banner .generic-banner-content h2 {\n  line-height: 1.2em;\n  margin-bottom: 20px; }\n\n@media (max-width: 991.98px) {\n  .generic-banner .generic-banner-content h2 br {\n    display: none; } }\n.generic-banner .generic-banner-content p {\n  text-align: center;\n  font-size: 16px; }\n\n@media (max-width: 991.98px) {\n  .generic-banner .generic-banner-content p br {\n    display: none; } }\n.generic-content h1 {\n  font-weight: 600; }\n\n.about-generic-area {\n  background: #fff; }\n\n.about-generic-area p {\n  margin-bottom: 20px; }\n\n.white-bg {\n  background: #fff; }\n\n.section-top-border {\n  padding: 50px 0;\n  border-top: 1px dotted #eee; }\n\n.switch-wrap {\n  margin-bottom: 10px; }\n\n.switch-wrap p {\n  margin: 0; }\n\n/*---------- End Elements Page -------------*/\n.sample-text-area {\n  padding: 100px 0 70px 0; }\n\n.sample-text {\n  margin-bottom: 0; }\n\n.text-heading {\n  margin-bottom: 30px;\n  font-size: 24px; }\n\n.typo-list {\n  margin-bottom: 10px; }\n\n@media (max-width: 767px) {\n  .typo-sec {\n    margin-bottom: 30px; } }\n@media (max-width: 767px) {\n  .element-wrap {\n    margin-top: 30px; } }\nb, sup, sub, u, del {\n  color: #f8b600; }\n\nh1 {\n  font-size: 36px; }\n\nh2 {\n  font-size: 30px; }\n\nh3 {\n  font-size: 24px; }\n\nh4 {\n  font-size: 18px; }\n\nh5 {\n  font-size: 16px; }\n\nh6 {\n  font-size: 14px; }\n\n.typography h1, .typography h2, .typography h3, .typography h4, .typography h5, .typography h6 {\n  color: #777777; }\n\n.button-area .border-top-generic {\n  padding: 70px 15px;\n  border-top: 1px dotted #eee; }\n\n.button-group-area .genric-btn {\n  margin-right: 10px;\n  margin-top: 10px; }\n\n.button-group-area .genric-btn:last-child {\n  margin-right: 0; }\n\n.circle {\n  border-radius: 20px; }\n\n.genric-btn {\n  display: inline-block;\n  outline: none;\n  line-height: 40px;\n  padding: 0 30px;\n  font-size: .8em;\n  text-align: center;\n  text-decoration: none;\n  font-weight: 500;\n  cursor: pointer;\n  -webkit-transition: all 0.3s ease 0s;\n  -moz-transition: all 0.3s ease 0s;\n  -o-transition: all 0.3s ease 0s;\n  transition: all 0.3s ease 0s; }\n\n.genric-btn:focus {\n  outline: none; }\n\n.genric-btn.e-large {\n  padding: 0 40px;\n  line-height: 50px; }\n\n.genric-btn.large {\n  line-height: 45px; }\n\n.genric-btn.medium {\n  line-height: 30px; }\n\n.genric-btn.small {\n  line-height: 25px; }\n\n.genric-btn.radius {\n  border-radius: 3px; }\n\n.genric-btn.circle {\n  border-radius: 20px; }\n\n.genric-btn.arrow {\n  display: -webkit-inline-box;\n  display: -ms-inline-flexbox;\n  display: inline-flex;\n  -webkit-box-align: center;\n  -ms-flex-align: center;\n  align-items: center; }\n\n.genric-btn.arrow span {\n  margin-left: 10px; }\n\n.genric-btn.default {\n  color: #222222;\n  background: #f9f9ff;\n  border: 1px solid transparent; }\n\n.genric-btn.default:hover {\n  border: 1px solid #f9f9ff;\n  background: #fff; }\n\n.genric-btn.default-border {\n  border: 1px solid #f9f9ff;\n  background: #fff; }\n\n.genric-btn.default-border:hover {\n  color: #222222;\n  background: #f9f9ff;\n  border: 1px solid transparent; }\n\n.genric-btn.primary {\n  color: #fff;\n  background: #f8b600;\n  border: 1px solid transparent; }\n\n.genric-btn.primary:hover {\n  color: #f8b600;\n  border: 1px solid #f8b600;\n  background: #fff; }\n\n.genric-btn.primary-border {\n  color: #f8b600;\n  border: 1px solid #f8b600;\n  background: #fff; }\n\n.genric-btn.primary-border:hover {\n  color: #fff;\n  background: #f8b600;\n  border: 1px solid transparent; }\n\n.genric-btn.success {\n  color: #fff;\n  background: #4cd3e3;\n  border: 1px solid transparent; }\n\n.genric-btn.success:hover {\n  color: #4cd3e3;\n  border: 1px solid #4cd3e3;\n  background: #fff; }\n\n.genric-btn.success-border {\n  color: #4cd3e3;\n  border: 1px solid #4cd3e3;\n  background: #fff; }\n\n.genric-btn.success-border:hover {\n  color: #fff;\n  background: #4cd3e3;\n  border: 1px solid transparent; }\n\n.genric-btn.info {\n  color: #fff;\n  background: #38a4ff;\n  border: 1px solid transparent; }\n\n.genric-btn.info:hover {\n  color: #38a4ff;\n  border: 1px solid #38a4ff;\n  background: #fff; }\n\n.genric-btn.info-border {\n  color: #38a4ff;\n  border: 1px solid #38a4ff;\n  background: #fff; }\n\n.genric-btn.info-border:hover {\n  color: #fff;\n  background: #38a4ff;\n  border: 1px solid transparent; }\n\n.genric-btn.warning {\n  color: #fff;\n  background: #f4e700;\n  border: 1px solid transparent; }\n\n.genric-btn.warning:hover {\n  color: #f4e700;\n  border: 1px solid #f4e700;\n  background: #fff; }\n\n.genric-btn.warning-border {\n  color: #f4e700;\n  border: 1px solid #f4e700;\n  background: #fff; }\n\n.genric-btn.warning-border:hover {\n  color: #fff;\n  background: #f4e700;\n  border: 1px solid transparent; }\n\n.genric-btn.danger {\n  color: #fff;\n  background: #f44a40;\n  border: 1px solid transparent; }\n\n.genric-btn.danger:hover {\n  color: #f44a40;\n  border: 1px solid #f44a40;\n  background: #fff; }\n\n.genric-btn.danger-border {\n  color: #f44a40;\n  border: 1px solid #f44a40;\n  background: #fff; }\n\n.genric-btn.danger-border:hover {\n  color: #fff;\n  background: #f44a40;\n  border: 1px solid transparent; }\n\n.genric-btn.link {\n  color: #222222;\n  background: #f9f9ff;\n  text-decoration: underline;\n  border: 1px solid transparent; }\n\n.genric-btn.link:hover {\n  color: #222222;\n  border: 1px solid #f9f9ff;\n  background: #fff; }\n\n.genric-btn.link-border {\n  color: #222222;\n  border: 1px solid #f9f9ff;\n  background: #fff;\n  text-decoration: underline; }\n\n.genric-btn.link-border:hover {\n  color: #222222;\n  background: #f9f9ff;\n  border: 1px solid transparent; }\n\n.genric-btn.disable {\n  color: #222222, 0.3;\n  background: #f9f9ff;\n  border: 1px solid transparent;\n  cursor: not-allowed; }\n\n.generic-blockquote {\n  padding: 30px 50px 30px 30px;\n  background: #fff;\n  border-left: 2px solid #f8b600; }\n\n@media (max-width: 991px) {\n  .progress-table-wrap {\n    overflow-x: scroll; } }\n.progress-table {\n  background: #fff;\n  padding: 15px 0px 30px 0px;\n  min-width: 800px; }\n\n.progress-table .serial {\n  width: 11.83%;\n  padding-left: 30px; }\n\n.progress-table .country {\n  width: 28.07%; }\n\n.progress-table .visit {\n  width: 19.74%; }\n\n.progress-table .percentage {\n  width: 40.36%;\n  padding-right: 50px; }\n\n.progress-table .table-head {\n  display: flex; }\n\n.progress-table .table-head .serial, .progress-table .table-head .country, .progress-table .table-head .visit, .progress-table .table-head .percentage {\n  color: #222222;\n  line-height: 40px;\n  text-transform: uppercase;\n  font-weight: 500; }\n\n.progress-table .table-row {\n  padding: 15px 0;\n  border-top: 1px solid #edf3fd;\n  display: flex; }\n\n.progress-table .table-row .serial, .progress-table .table-row .country, .progress-table .table-row .visit, .progress-table .table-row .percentage {\n  display: flex;\n  align-items: center; }\n\n.progress-table .table-row .country img {\n  margin-right: 15px; }\n\n.progress-table .table-row .percentage .progress {\n  width: 80%;\n  border-radius: 0px;\n  background: transparent; }\n\n.progress-table .table-row .percentage .progress .progress-bar {\n  height: 5px;\n  line-height: 5px; }\n\n.progress-table .table-row .percentage .progress .progress-bar.color-1 {\n  background-color: #6382e6; }\n\n.progress-table .table-row .percentage .progress .progress-bar.color-2 {\n  background-color: #e66686; }\n\n.progress-table .table-row .percentage .progress .progress-bar.color-3 {\n  background-color: #f09359; }\n\n.progress-table .table-row .percentage .progress .progress-bar.color-4 {\n  background-color: #73fbaf; }\n\n.progress-table .table-row .percentage .progress .progress-bar.color-5 {\n  background-color: #73fbaf; }\n\n.progress-table .table-row .percentage .progress .progress-bar.color-6 {\n  background-color: #6382e6; }\n\n.progress-table .table-row .percentage .progress .progress-bar.color-7 {\n  background-color: #a367e7; }\n\n.progress-table .table-row .percentage .progress .progress-bar.color-8 {\n  background-color: #e66686; }\n\n.single-gallery-image {\n  margin-top: 30px;\n  background-repeat: no-repeat !important;\n  background-position: center center !important;\n  background-size: cover !important;\n  height: 200px;\n  -webkit-transition: all 0.3s ease 0s;\n  -moz-transition: all 0.3s ease 0s;\n  -o-transition: all 0.3s ease 0s;\n  transition: all 0.3s ease 0s; }\n\n.single-gallery-image:hover {\n  opacity: .8; }\n\n.list-style {\n  width: 14px;\n  height: 14px; }\n\n.unordered-list li {\n  position: relative;\n  padding-left: 30px;\n  line-height: 1.82em !important; }\n\n.unordered-list li:before {\n  content: \"\";\n  position: absolute;\n  width: 14px;\n  height: 14px;\n  border: 3px solid #f8b600;\n  background: #fff;\n  top: 4px;\n  left: 0;\n  border-radius: 50%; }\n\n.ordered-list {\n  margin-left: 30px; }\n\n.ordered-list li {\n  list-style-type: decimal-leading-zero;\n  color: #f8b600;\n  font-weight: 500;\n  line-height: 1.82em !important; }\n\n.ordered-list li span {\n  font-weight: 300;\n  color: #777777; }\n\n.ordered-list-alpha li {\n  margin-left: 30px;\n  list-style-type: lower-alpha;\n  color: #f8b600;\n  font-weight: 500;\n  line-height: 1.82em !important; }\n\n.ordered-list-alpha li span {\n  font-weight: 300;\n  color: #777777; }\n\n.ordered-list-roman li {\n  margin-left: 30px;\n  list-style-type: lower-roman;\n  color: #f8b600;\n  font-weight: 500;\n  line-height: 1.82em !important; }\n\n.ordered-list-roman li span {\n  font-weight: 300;\n  color: #777777; }\n\n.single-input {\n  display: block;\n  width: 100%;\n  line-height: 40px;\n  border: none;\n  outline: none;\n  background: #f9f9ff;\n  padding: 0 20px; }\n\n.single-input:focus {\n  outline: none; }\n\n.input-group-icon {\n  position: relative; }\n\n.input-group-icon .icon {\n  position: absolute;\n  left: 20px;\n  top: 0;\n  line-height: 40px;\n  z-index: 3; }\n\n.input-group-icon .icon i {\n  color: #797979; }\n\n.input-group-icon .single-input {\n  padding-left: 45px; }\n\n.single-textarea {\n  display: block;\n  width: 100%;\n  line-height: 40px;\n  border: none;\n  outline: none;\n  background: #f9f9ff;\n  padding: 0 20px;\n  height: 100px;\n  resize: none; }\n\n.single-textarea:focus {\n  outline: none; }\n\n.single-input-primary {\n  display: block;\n  width: 100%;\n  line-height: 40px;\n  border: 1px solid transparent;\n  outline: none;\n  background: #f9f9ff;\n  padding: 0 20px; }\n\n.single-input-primary:focus {\n  outline: none;\n  border: 1px solid #f8b600; }\n\n.single-input-accent {\n  display: block;\n  width: 100%;\n  line-height: 40px;\n  border: 1px solid transparent;\n  outline: none;\n  background: #f9f9ff;\n  padding: 0 20px; }\n\n.single-input-accent:focus {\n  outline: none;\n  border: 1px solid #eb6b55; }\n\n.single-input-secondary {\n  display: block;\n  width: 100%;\n  line-height: 40px;\n  border: 1px solid transparent;\n  outline: none;\n  background: #f9f9ff;\n  padding: 0 20px; }\n\n.single-input-secondary:focus {\n  outline: none;\n  border: 1px solid #f09359; }\n\n.default-switch {\n  width: 35px;\n  height: 17px;\n  border-radius: 8.5px;\n  background: #fff;\n  position: relative;\n  cursor: pointer; }\n\n.default-switch input {\n  position: absolute;\n  left: 0;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  width: 100%;\n  height: 100%;\n  opacity: 0;\n  cursor: pointer; }\n\n.default-switch input + label {\n  position: absolute;\n  top: 1px;\n  left: 1px;\n  width: 15px;\n  height: 15px;\n  border-radius: 50%;\n  background: #f8b600;\n  -webkit-transition: all 0.2s;\n  -moz-transition: all 0.2s;\n  -o-transition: all 0.2s;\n  transition: all 0.2s;\n  box-shadow: 0px 4px 5px 0px rgba(0, 0, 0, 0.2);\n  cursor: pointer; }\n\n.default-switch input:checked + label {\n  left: 19px; }\n\n.single-element-widget {\n  margin-bottom: 30px; }\n\n.primary-switch {\n  width: 35px;\n  height: 17px;\n  border-radius: 8.5px;\n  background: #fff;\n  position: relative;\n  cursor: pointer; }\n\n.primary-switch input {\n  position: absolute;\n  left: 0;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  width: 100%;\n  height: 100%;\n  opacity: 0; }\n\n.primary-switch input + label {\n  position: absolute;\n  left: 0;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  width: 100%;\n  height: 100%; }\n\n.primary-switch input + label:before {\n  content: \"\";\n  position: absolute;\n  left: 0;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  width: 100%;\n  height: 100%;\n  background: transparent;\n  border-radius: 8.5px;\n  cursor: pointer;\n  -webkit-transition: all 0.2s;\n  -moz-transition: all 0.2s;\n  -o-transition: all 0.2s;\n  transition: all 0.2s; }\n\n.primary-switch input + label:after {\n  content: \"\";\n  position: absolute;\n  top: 1px;\n  left: 1px;\n  width: 15px;\n  height: 15px;\n  border-radius: 50%;\n  background: #fff;\n  -webkit-transition: all 0.2s;\n  -moz-transition: all 0.2s;\n  -o-transition: all 0.2s;\n  transition: all 0.2s;\n  box-shadow: 0px 4px 5px 0px rgba(0, 0, 0, 0.2);\n  cursor: pointer; }\n\n.primary-switch input:checked + label:after {\n  left: 19px; }\n\n.primary-switch input:checked + label:before {\n  background: #f8b600; }\n\n.confirm-switch {\n  width: 35px;\n  height: 17px;\n  border-radius: 8.5px;\n  background: #fff;\n  position: relative;\n  cursor: pointer; }\n\n.confirm-switch input {\n  position: absolute;\n  left: 0;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  width: 100%;\n  height: 100%;\n  opacity: 0; }\n\n.confirm-switch input + label {\n  position: absolute;\n  left: 0;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  width: 100%;\n  height: 100%; }\n\n.confirm-switch input + label:before {\n  content: \"\";\n  position: absolute;\n  left: 0;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  width: 100%;\n  height: 100%;\n  background: transparent;\n  border-radius: 8.5px;\n  -webkit-transition: all 0.2s;\n  -moz-transition: all 0.2s;\n  -o-transition: all 0.2s;\n  transition: all 0.2s;\n  cursor: pointer; }\n\n.confirm-switch input + label:after {\n  content: \"\";\n  position: absolute;\n  top: 1px;\n  left: 1px;\n  width: 15px;\n  height: 15px;\n  border-radius: 50%;\n  background: #fff;\n  -webkit-transition: all 0.2s;\n  -moz-transition: all 0.2s;\n  -o-transition: all 0.2s;\n  transition: all 0.2s;\n  box-shadow: 0px 4px 5px 0px rgba(0, 0, 0, 0.2);\n  cursor: pointer; }\n\n.confirm-switch input:checked + label:after {\n  left: 19px; }\n\n.confirm-switch input:checked + label:before {\n  background: #4cd3e3; }\n\n.primary-checkbox {\n  width: 16px;\n  height: 16px;\n  border-radius: 3px;\n  background: #fff;\n  position: relative;\n  cursor: pointer; }\n\n.primary-checkbox input {\n  position: absolute;\n  left: 0;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  width: 100%;\n  height: 100%;\n  opacity: 0; }\n\n.primary-checkbox input + label {\n  position: absolute;\n  left: 0;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  width: 100%;\n  height: 100%;\n  border-radius: 3px;\n  cursor: pointer;\n  border: 1px solid #f1f1f1; }\n\n.single-defination h4 {\n  color: #222222; }\n\n.primary-checkbox input:checked + label {\n  background: url(../img/elements/primary-check.png) no-repeat center center/cover;\n  border: none; }\n\n.confirm-checkbox {\n  width: 16px;\n  height: 16px;\n  border-radius: 3px;\n  background: #fff;\n  position: relative;\n  cursor: pointer; }\n\n.confirm-checkbox input {\n  position: absolute;\n  left: 0;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  width: 100%;\n  height: 100%;\n  opacity: 0; }\n\n.confirm-checkbox input + label {\n  position: absolute;\n  left: 0;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  width: 100%;\n  height: 100%;\n  border-radius: 3px;\n  cursor: pointer;\n  border: 1px solid #f1f1f1; }\n\n.confirm-checkbox input:checked + label {\n  background: url(../img/elements/success-check.png) no-repeat center center/cover;\n  border: none; }\n\n.disabled-checkbox {\n  width: 16px;\n  height: 16px;\n  border-radius: 3px;\n  background: #fff;\n  position: relative;\n  cursor: pointer; }\n\n.disabled-checkbox input {\n  position: absolute;\n  left: 0;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  width: 100%;\n  height: 100%;\n  opacity: 0; }\n\n.disabled-checkbox input + label {\n  position: absolute;\n  left: 0;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  width: 100%;\n  height: 100%;\n  border-radius: 3px;\n  cursor: pointer;\n  border: 1px solid #f1f1f1; }\n\n.disabled-checkbox input:disabled {\n  cursor: not-allowed;\n  z-index: 3; }\n\n.disabled-checkbox input:checked + label {\n  background: url(../img/elements/disabled-check.png) no-repeat center center/cover;\n  border: none; }\n\n.primary-radio {\n  width: 16px;\n  height: 16px;\n  border-radius: 8px;\n  background: #fff;\n  position: relative;\n  cursor: pointer; }\n\n.primary-radio input {\n  position: absolute;\n  left: 0;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  width: 100%;\n  height: 100%;\n  opacity: 0; }\n\n.primary-radio input + label {\n  position: absolute;\n  left: 0;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  width: 100%;\n  height: 100%;\n  border-radius: 8px;\n  cursor: pointer;\n  border: 1px solid #f1f1f1; }\n\n.primary-radio input:checked + label {\n  background: url(../img/elements/primary-radio.png) no-repeat center center/cover;\n  border: none; }\n\n.confirm-radio {\n  width: 16px;\n  height: 16px;\n  border-radius: 8px;\n  background: #fff;\n  position: relative;\n  cursor: pointer; }\n\n.confirm-radio input {\n  position: absolute;\n  left: 0;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  width: 100%;\n  height: 100%;\n  opacity: 0; }\n\n.confirm-radio input + label {\n  position: absolute;\n  left: 0;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  width: 100%;\n  height: 100%;\n  border-radius: 8px;\n  cursor: pointer;\n  border: 1px solid #f1f1f1; }\n\n.confirm-radio input:checked + label {\n  background: url(../img/elements/success-radio.png) no-repeat center center/cover;\n  border: none; }\n\n.disabled-radio {\n  width: 16px;\n  height: 16px;\n  border-radius: 8px;\n  background: #fff;\n  position: relative;\n  cursor: pointer; }\n\n.disabled-radio input {\n  position: absolute;\n  left: 0;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  width: 100%;\n  height: 100%;\n  opacity: 0; }\n\n.disabled-radio input + label {\n  position: absolute;\n  left: 0;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  width: 100%;\n  height: 100%;\n  border-radius: 8px;\n  cursor: pointer;\n  border: 1px solid #f1f1f1; }\n\n.disabled-radio input:disabled {\n  cursor: not-allowed;\n  z-index: 3; }\n\n.unordered-list {\n  list-style: none;\n  padding: 0px;\n  margin: 0px; }\n\n.ordered-list {\n  list-style: none;\n  padding: 0px; }\n\n.disabled-radio input:checked + label {\n  background: url(../img/elements/disabled-radio.png) no-repeat center center/cover;\n  border: none; }\n\n.default-select {\n  height: 40px; }\n\n.default-select .nice-select {\n  border: none;\n  border-radius: 0px;\n  height: 40px;\n  background: #fff;\n  padding-left: 20px;\n  padding-right: 40px; }\n\n.default-select .nice-select .list {\n  margin-top: 0;\n  border: none;\n  border-radius: 0px;\n  box-shadow: none;\n  width: 100%;\n  padding: 10px 0 10px 0px; }\n\n.default-select .nice-select .list .option {\n  font-weight: 300;\n  -webkit-transition: all 0.3s ease 0s;\n  -moz-transition: all 0.3s ease 0s;\n  -o-transition: all 0.3s ease 0s;\n  transition: all 0.3s ease 0s;\n  line-height: 28px;\n  min-height: 28px;\n  font-size: 12px;\n  padding-left: 20px; }\n\n.default-select .nice-select .list .option.selected {\n  color: #f8b600;\n  background: transparent; }\n\n.default-select .nice-select .list .option:hover {\n  color: #f8b600;\n  background: transparent; }\n\n.default-select .current {\n  margin-right: 50px;\n  font-weight: 300; }\n\n.default-select .nice-select::after {\n  right: 20px; }\n\n@media (max-width: 991px) {\n  .left-align-p p {\n    margin-top: 20px; } }\n.form-select {\n  height: 40px;\n  width: 100%; }\n\n.form-select .nice-select {\n  border: none;\n  border-radius: 0px;\n  height: 40px;\n  background: #f9f9ff !important;\n  padding-left: 45px;\n  padding-right: 40px;\n  width: 100%; }\n\n.form-select .nice-select .list {\n  margin-top: 0;\n  border: none;\n  border-radius: 0px;\n  box-shadow: none;\n  width: 100%;\n  padding: 10px 0 10px 0px; }\n\n.mt-10 {\n  margin-top: 10px; }\n\n.form-select .nice-select .list .option {\n  font-weight: 300;\n  -webkit-transition: all 0.3s ease 0s;\n  -moz-transition: all 0.3s ease 0s;\n  -o-transition: all 0.3s ease 0s;\n  transition: all 0.3s ease 0s;\n  line-height: 28px;\n  min-height: 28px;\n  font-size: 12px;\n  padding-left: 45px; }\n\n.form-select .nice-select .list .option.selected {\n  color: #f8b600;\n  background: transparent; }\n\n.form-select .nice-select .list .option:hover {\n  color: #f8b600;\n  background: transparent; }\n\n.form-select .current {\n  margin-right: 50px;\n  font-weight: 300; }\n\n.form-select .nice-select::after {\n  right: 20px; }\n\n/*---------------------------------------------------- */\n/*----------------------------------------------------*/\n/* Main Button Area css\n============================================================================================ */\n.main_btn {\n  display: inline-block;\n  background-image: linear-gradient(to right, #766dff 0%, #86e8ff 48%, #766dff 100%);\n  background-size: 200% auto;\n  padding: 0px 40px;\n  color: #fff;\n  font-family: \"Roboto\", sans-serif;\n  font-size: 13px;\n  font-weight: 500;\n  line-height: 48px;\n  border-radius: 0px;\n  outline: none !important;\n  box-shadow: none !important;\n  text-align: center;\n  cursor: pointer;\n  border-radius: 5px;\n  transition: all 300ms linear 0s; }\n  .main_btn:hover {\n    background-position: right center;\n    color: #fff; }\n\n.main_btn2 {\n  display: inline-block;\n  background: #f9f9ff;\n  padding: 0px 45px;\n  color: #222222;\n  font-family: \"Roboto\", sans-serif;\n  font-size: 13px;\n  font-weight: 500;\n  line-height: 48px;\n  border-radius: 5px;\n  outline: none !important;\n  box-shadow: none !important;\n  text-align: center;\n  border: 1px solid #eeeeee;\n  cursor: pointer;\n  transition: all 300ms linear 0s; }\n  .main_btn2:hover {\n    background: #766dff;\n    color: #fff;\n    border-color: #766dff;\n    box-shadow: 0px 10px 20px 0px rgba(250, 51, 63, 0.25); }\n\n.submit_btn {\n  width: auto;\n  display: inline-block;\n  background: #766dff;\n  padding: 0px 50px;\n  color: #fff;\n  font-family: \"Roboto\", sans-serif;\n  font-size: 13px;\n  font-weight: 500;\n  line-height: 50px;\n  border-radius: 5px;\n  outline: none !important;\n  box-shadow: none !important;\n  text-align: center;\n  border: 1px solid #766dff;\n  cursor: pointer;\n  transition: all 300ms linear 0s; }\n  .submit_btn:hover {\n    background: transparent;\n    color: #766dff; }\n\n.white_bg_btn {\n  display: inline-block;\n  background: #f9f9ff;\n  padding: 0px 35px;\n  color: #222222;\n  font-family: \"Roboto\", sans-serif;\n  font-size: 13px;\n  font-weight: 500;\n  line-height: 34px;\n  border-radius: 0px;\n  outline: none !important;\n  box-shadow: none !important;\n  text-align: center;\n  cursor: pointer;\n  transition: all 300ms linear 0s; }\n  .white_bg_btn:hover {\n    background-image: -moz-linear-gradient(0deg, #766dff 0%, #88f3ff 100%);\n    background-image: -webkit-linear-gradient(0deg, #766dff 0%, #88f3ff 100%);\n    background-image: -ms-linear-gradient(0deg, #766dff 0%, #88f3ff 100%);\n    color: #fff;\n    border: none; }\n\n.black_btn {\n  padding: 0px 44px;\n  line-height: 50px;\n  background: #222222;\n  color: #766dff;\n  display: inline-block;\n  border-radius: 5px;\n  font-size: 13px;\n  font-family: \"Roboto\", sans-serif;\n  font-weight: 500;\n  transition: all 300ms linear 0s; }\n  .black_btn:hover {\n    background: #766dff;\n    color: #222222; }\n\n/* End Main Button Area css\n============================================================================================ */\n/*---------------------------------------------------- */\n/*----------------------------------------------------*/\n/* Welcome Area css\n============================================================================================ */\n.welcome_inner .welcome_img {\n  background: #eeeeee;\n  margin-left: 40px;\n  padding-left: 30px;\n  padding-right: 30px;\n  padding-bottom: 30px; }\n  .welcome_inner .welcome_img img {\n    margin-top: -30px; }\n\n.welcome_text h4 {\n  color: #222222;\n  font-family: \"Heebo\", sans-serif;\n  font-size: 36px;\n  margin-bottom: 18px;\n  text-transform: uppercase; }\n.welcome_text p {\n  max-width: 495px;\n  font-family: \"Roboto\", sans-serif;\n  margin-bottom: 40px; }\n\n.wel_item {\n  border: 1px solid #eeeeee;\n  padding: 20px 20px;\n  border-radius: 5px; }\n  .wel_item i {\n    font-size: 24px;\n    background: linear-gradient(to right, #766dff 0%, #86e7ff 70%);\n    -webkit-background-clip: text;\n    -webkit-text-fill-color: transparent; }\n  .wel_item h4 {\n    font-size: 24px;\n    font-family: \"Heebo\", sans-serif;\n    font-weight: bold;\n    color: #222222;\n    margin-bottom: 5px;\n    margin-top: 10px; }\n  .wel_item p {\n    font-size: 16px;\n    font-family: \"Roboto\", sans-serif;\n    color: #777777;\n    margin-bottom: 0px; }\n\n.tools_expert {\n  padding: 20px 0px 0px 0px; }\n  .tools_expert .skill_main .skill_item {\n    margin-bottom: 18px; }\n    .tools_expert .skill_main .skill_item:last-child {\n      margin-bottom: 0px; }\n    .tools_expert .skill_main .skill_item h4 {\n      text-align: none;\n      font-size: 14px;\n      font-family: \"Roboto\", sans-serif;\n      font-weight: 500;\n      color: #222222;\n      margin-bottom: 15px; }\n    .tools_expert .skill_main .skill_item .progress_br {\n      border: 1px solid #eeeeee;\n      padding: 5px;\n      border-radius: 10px; }\n    .tools_expert .skill_main .skill_item .progress {\n      height: 10px;\n      border-radius: 10px;\n      background: #e8e8e8; }\n      .tools_expert .skill_main .skill_item .progress .progress-bar {\n        width: 0%;\n        transition: width .6s ease;\n        height: 10px;\n        border-radius: 5px;\n        vertical-align: middle;\n        align-self: center;\n        background-image: -moz-linear-gradient(0deg, #766dff 0%, #88f3ff 100%);\n        background-image: -webkit-linear-gradient(0deg, #766dff 0%, #88f3ff 100%);\n        background-image: -ms-linear-gradient(0deg, #766dff 0%, #88f3ff 100%); }\n\n/* End Welcome Area css\n============================================================================================ */\n/* My Tabs Area css\n============================================================================================ */\n.mytabs_area {\n  background-image: -moz-linear-gradient(0deg, #766dff 0%, #88f3ff 100%);\n  background-image: -webkit-linear-gradient(0deg, #766dff 0%, #88f3ff 100%);\n  background-image: -ms-linear-gradient(0deg, #766dff 0%, #88f3ff 100%); }\n\n.tabs_inner .nav.nav-tabs {\n  display: block;\n  text-align: center;\n  border: none;\n  margin-bottom: 120px; }\n  .tabs_inner .nav.nav-tabs li {\n    display: inline-block;\n    margin-right: 8px; }\n    .tabs_inner .nav.nav-tabs li a {\n      margin: 0px;\n      line-height: 50px;\n      border-radius: 5px;\n      padding: 0px 40px;\n      font-size: 13px;\n      font-weight: 500;\n      color: #fff;\n      font-family: \"Roboto\", sans-serif;\n      border: 1px solid #9ab5f5;\n      background: rgba(255, 255, 255, 0.1); }\n      .tabs_inner .nav.nav-tabs li a.active {\n        background: #fff;\n        color: #222222; }\n.tabs_inner .tab-content .tab-pane .list {\n  max-width: 460px;\n  margin: auto;\n  position: relative;\n  padding-top: 40px;\n  padding-bottom: 60px; }\n  .tabs_inner .tab-content .tab-pane .list:before {\n    content: \"\";\n    height: 100%;\n    width: 5px;\n    background: rgba(255, 255, 255, 0.2);\n    position: absolute;\n    left: 46%;\n    transform: translateX(-50%);\n    top: -5px; }\n  .tabs_inner .tab-content .tab-pane .list li {\n    margin-bottom: 60px;\n    position: relative; }\n    .tabs_inner .tab-content .tab-pane .list li span {\n      height: 15px;\n      width: 15px;\n      border-radius: 50%;\n      display: block;\n      background: rgba(255, 255, 255, 0.2);\n      position: absolute;\n      left: 46%;\n      top: 30px;\n      transform: translateX(-50%); }\n      .tabs_inner .tab-content .tab-pane .list li span:before {\n        content: '';\n        height: 7px;\n        width: 7px;\n        background: #fff;\n        border-radius: 50%;\n        position: absolute;\n        left: 52%;\n        top: 4px;\n        transform: translateX(-50%); }\n    .tabs_inner .tab-content .tab-pane .list li:last-child {\n      margin-bottom: 0px; }\n    .tabs_inner .tab-content .tab-pane .list li .media .d-flex {\n      padding-right: 100px; }\n      .tabs_inner .tab-content .tab-pane .list li .media .d-flex p {\n        color: rgba(255, 255, 255, 0.75);\n        margin-bottom: 0px;\n        padding-top: 20px; }\n    .tabs_inner .tab-content .tab-pane .list li .media .media-body h4 {\n      color: #fff;\n      font-size: 21px;\n      text-transform: uppercase;\n      margin-bottom: 20px; }\n    .tabs_inner .tab-content .tab-pane .list li .media .media-body p {\n      color: rgba(255, 255, 255, 0.75);\n      margin-bottom: 0px; }\n\n/* End My Tabs Area css\n============================================================================================ */\n/* Feature Area css\n============================================================================================ */\n.feature_area {\n  background: #f9f9ff; }\n  .feature_area.feature_tow {\n    background: #fff; }\n    .feature_area.feature_tow .feature_item {\n      background: #f9f9ff; }\n      .feature_area.feature_tow .feature_item:hover {\n        background: #fff; }\n  .feature_area.white_feature {\n    background: #fff; }\n    .feature_area.white_feature .feature_item {\n      background: #f9f9ff; }\n      .feature_area.white_feature .feature_item:hover {\n        background: #fff; }\n\n.feature_inner {\n  margin-bottom: -30px; }\n\n.feature_item {\n  padding: 50px 35px;\n  border-radius: 10px;\n  transition: all 300ms linear 0s;\n  background: #fff;\n  margin-bottom: 30px; }\n  .feature_item i {\n    margin-bottom: 35px;\n    display: block; }\n    .feature_item i:before {\n      margin-left: 0px;\n      font-size: 60px;\n      color: #e1e1e1;\n      line-height: 60px; }\n  .feature_item h4 {\n    color: #222222;\n    font-size: 21px;\n    font-family: \"Heebo\", sans-serif;\n    font-weight: bold;\n    margin-bottom: 20px;\n    text-transform: uppercase; }\n  .feature_item p {\n    margin-bottom: 0px; }\n  .feature_item .main_btn {\n    padding: 0px 30px;\n    line-height: 38px; }\n  .feature_item:hover {\n    box-shadow: 0px 10px 30px 0px rgba(0, 0, 0, 0.08);\n    border-color: #fff;\n    background: #fff; }\n    .feature_item:hover i:before {\n      background: linear-gradient(to right, #8490ff 0%, #62bdfc 70%);\n      -webkit-background-clip: text;\n      -webkit-text-fill-color: transparent; }\n\n/* End Feature Area css\n============================================================================================ */\n/* Personal Profile Area css\n============================================================================================ */\n.profile_area .col-lg-7 {\n  vertical-align: middle;\n  align-self: center; }\n\n.profile_inner {\n  border-bottom: 1px solid #eeeeee; }\n  .profile_inner .personal_text {\n    padding-left: 95px; }\n\n.personal_text h6 {\n  font-size: 14px;\n  font-family: \"Roboto\", sans-serif;\n  text-transform: uppercase;\n  letter-spacing: 2.1px;\n  font-weight: normal;\n  margin-bottom: 12px;\n  color: #222222; }\n.personal_text h4 {\n  font-size: 16px;\n  font-weight: 500;\n  font-family: \"Roboto\", sans-serif;\n  text-transform: uppercase;\n  margin-bottom: 20px;\n  color: #222222; }\n.personal_text h3 {\n  font-size: 48px;\n  text-transform: uppercase;\n  margin-bottom: 15px;\n  color: #222222; }\n.personal_text p {\n  font-family: \"Roboto\", sans-serif;\n  max-width: 540px;\n  color: #777777;\n  margin-bottom: 40px; }\n.personal_text .basic_info li {\n  margin-bottom: 15px; }\n  .personal_text .basic_info li a {\n    position: relative;\n    padding-left: 40px;\n    font-size: 16px;\n    color: #777777; }\n    .personal_text .basic_info li a i {\n      position: absolute;\n      left: 0px;\n      top: 50%;\n      transform: translateY(-50%);\n      font-size: 20px;\n      color: #766dff; }\n  .personal_text .basic_info li:last-child {\n    margin-bottom: 0px; }\n.personal_text .personal_social {\n  margin-top: 45px; }\n  .personal_text .personal_social li {\n    display: inline-block;\n    margin-right: 7px; }\n    .personal_text .personal_social li:last-child {\n      margin-right: 0px; }\n    .personal_text .personal_social li a {\n      line-height: 40px;\n      width: 40px;\n      background: #e8e8e8;\n      border-radius: 5px;\n      display: inline-block;\n      text-align: center;\n      color: #fff;\n      font-size: 16px; }\n    .personal_text .personal_social li:hover a {\n      background-image: -moz-linear-gradient(0deg, #766dff 0%, #88f3ff 100%);\n      background-image: -webkit-linear-gradient(0deg, #766dff 0%, #88f3ff 100%);\n      background-image: -ms-linear-gradient(0deg, #766dff 0%, #88f3ff 100%); }\n\n/* End Personal Profile Area css\n============================================================================================ */\n/*---------------------------------------------------- */\n/*----------------------------------------------------*/\n/* Gallery Area css\n============================================================================================ */\n.isotope_fillter {\n  margin-bottom: 50px; }\n  .isotope_fillter .gallery_filter {\n    text-align: center; }\n    .isotope_fillter .gallery_filter li {\n      display: inline-block;\n      margin-right: 45px; }\n      .isotope_fillter .gallery_filter li:last-child {\n        margin-right: 0px; }\n      .isotope_fillter .gallery_filter li a {\n        font-size: 12px;\n        font-family: \"Roboto\", sans-serif;\n        font-weight: 500;\n        color: #222222;\n        transition: all 300ms linear 0s;\n        text-transform: uppercase; }\n      .isotope_fillter .gallery_filter li:hover a, .isotope_fillter .gallery_filter li.active a {\n        color: #766dff; }\n\n.gallery_f_inner {\n  margin-bottom: -45px; }\n\n.h_gallery_item {\n  display: inline-block;\n  margin-bottom: 45px; }\n  .h_gallery_item .g_img_item {\n    position: relative;\n    text-align: center;\n    overflow: hidden;\n    border-radius: 5px; }\n    .h_gallery_item .g_img_item:before {\n      content: \"\";\n      width: 100%;\n      height: 100%;\n      left: 0px;\n      top: 0px;\n      background-image: -moz-linear-gradient(0deg, #766dff 0%, #88f3ff 100%);\n      background-image: -webkit-linear-gradient(0deg, #766dff 0%, #88f3ff 100%);\n      background-image: -ms-linear-gradient(0deg, #766dff 0%, #88f3ff 100%);\n      position: absolute;\n      opacity: 0;\n      transition: all 300ms ease; }\n    .h_gallery_item .g_img_item .light {\n      position: absolute;\n      left: 0px;\n      top: 50%;\n      transform: translateY(-50%);\n      width: 100%;\n      text-align: center;\n      opacity: 0; }\n  .h_gallery_item .g_item_text {\n    text-align: center; }\n    .h_gallery_item .g_item_text h4 {\n      color: #222222;\n      font-size: 21px;\n      margin-top: 22px;\n      transition: all 300ms linear 0s; }\n    .h_gallery_item .g_item_text p {\n      margin-bottom: 0px; }\n  .h_gallery_item:hover .g_img_item:before {\n    opacity: .85; }\n  .h_gallery_item:hover .g_img_item .light {\n    opacity: 1; }\n  .h_gallery_item:hover .g_item_text h4:hover {\n    color: #766dff; }\n\n.more_btn {\n  text-align: center;\n  margin-top: 80px; }\n\n/* End Gallery Area css\n============================================================================================ */\n/*---------------------------------------------------- */\n/*----------------------------------------------------*/\n/* Testimonials Area css\n============================================================================================ */\n.testimonials_area {\n  background: #f9f9ff; }\n  .testimonials_area.testi_two {\n    background: #fff; }\n    .testimonials_area.testi_two .testi_inner {\n      margin-top: -20px;\n      margin-bottom: -20px; }\n    .testimonials_area.testi_two .owl-item {\n      padding: 20px 0px; }\n    .testimonials_area.testi_two .testi_item {\n      background: #f9f9ff;\n      border-color: #f9f9ff;\n      transition: all 300ms linear 0s; }\n      .testimonials_area.testi_two .testi_item:hover {\n        background: #fff;\n        border-color: #fff;\n        box-shadow: 0px 10px 30px 0px rgba(153, 153, 153, 0.1); }\n\n.testi_inner .col-lg-3 {\n  vertical-align: middle;\n  align-self: center; }\n\n.test_title h2 {\n  color: #222222;\n  font-size: 36px;\n  font-family: \"Roboto\", sans-serif;\n  font-weight: bold;\n  margin-bottom: 12px; }\n.test_title p {\n  margin-bottom: 0px; }\n\n.testi_item {\n  border: 1px solid #eeeeee;\n  border-radius: 10px;\n  background: #fff;\n  padding: 40px 28px; }\n  .testi_item p {\n    font-style: italic; }\n  .testi_item h4 {\n    color: #222222;\n    font-size: 18px;\n    text-transform: uppercase; }\n  .testi_item a {\n    color: #ffc000; }\n\n/* End Testimonials Area css\n============================================================================================ */\n/*---------------------------------------------------- */\n/*----------------------------------------------------*/\n/* Footer Area css\n============================================================================================ */\n.footer_area {\n  background: #000; }\n\n.f_title {\n  margin-bottom: 35px; }\n  .f_title h3 {\n    color: #fff;\n    font-size: 18px;\n    font-weight: bold;\n    font-family: \"Heebo\", sans-serif;\n    margin-bottom: 0px; }\n\n.ab_widget p {\n  font-size: 14px;\n  line-height: 24px;\n  font-family: \"Roboto\", sans-serif;\n  color: #777777;\n  margin-bottom: 30px; }\n  .ab_widget p a {\n    color: #766dff; }\n  .ab_widget p + p {\n    margin-bottom: 0px; }\n\n.news_widget {\n  padding-right: 15px; }\n  .news_widget p {\n    font-size: 14px;\n    line-height: 24px;\n    font-family: \"Roboto\", sans-serif;\n    color: #777777;\n    margin-bottom: 15px; }\n  .news_widget .input-group input {\n    height: 40px;\n    background: transparent;\n    border-radius: 0px;\n    width: 80%;\n    border: none;\n    padding: 0px 15px;\n    border: 1px solid #1e233b;\n    font-size: 14px;\n    font-family: \"Roboto\", sans-serif;\n    color: #cccccc;\n    outline: none;\n    box-shadow: none; }\n    .news_widget .input-group input.placeholder {\n      font-size: 14px;\n      font-family: \"Roboto\", sans-serif;\n      font-weight: normal;\n      color: #cccccc; }\n    .news_widget .input-group input:-moz-placeholder {\n      font-size: 14px;\n      font-family: \"Roboto\", sans-serif;\n      font-weight: normal;\n      color: #cccccc; }\n    .news_widget .input-group input::-moz-placeholder {\n      font-size: 14px;\n      font-family: \"Roboto\", sans-serif;\n      font-weight: normal;\n      color: #cccccc; }\n    .news_widget .input-group input::-webkit-input-placeholder {\n      font-size: 14px;\n      font-family: \"Roboto\", sans-serif;\n      font-weight: normal;\n      color: #cccccc; }\n  .news_widget .input-group .sub-btn {\n    border-radius: 0px;\n    background-image: -moz-linear-gradient(0deg, #766dff 0%, #88f3ff 100%);\n    background-image: -webkit-linear-gradient(0deg, #766dff 0%, #88f3ff 100%);\n    background-image: -ms-linear-gradient(0deg, #766dff 0%, #88f3ff 100%);\n    outline: none !important;\n    box-shadow: none !important;\n    padding: 0px;\n    border: none;\n    width: 42px;\n    cursor: pointer;\n    color: #fff; }\n\n.social_widget p {\n  font-size: 14px;\n  line-height: 24px;\n  font-family: \"Roboto\", sans-serif;\n  color: #777777;\n  margin-bottom: 10px; }\n.social_widget .list li {\n  margin-right: 17px;\n  display: inline-block; }\n  .social_widget .list li a {\n    color: #cccccc;\n    font-size: 14px;\n    transition: all 300ms linear 0s; }\n  .social_widget .list li:last-child {\n    margin-right: 0px; }\n  .social_widget .list li:hover a {\n    color: #766dff; }\n\n.copy_right_text {\n  text-align: center;\n  margin-top: 60px; }\n  .copy_right_text p a {\n    color: #766dff; }\n\n/* End Footer Area css\n============================================================================================ */\n/*---------------------------------------------------- */\n\n/*# sourceMappingURL=style.css.map */\n"
  },
  {
    "path": "public/profile/js/contact.js",
    "content": "$(document).ready(function(){\n    \n    (function($) {\n        \"use strict\";\n\n    \n    jQuery.validator.addMethod('answercheck', function (value, element) {\n        return this.optional(element) || /^\\bcat\\b$/.test(value)\n    }, \"type the correct answer -_-\");\n\n    // validate contactForm form\n    $(function() {\n        $('#contactForm').validate({\n            rules: {\n                name: {\n                    required: true,\n                    minlength: 2\n                },\n                subject: {\n                    required: true,\n                    minlength: 4\n                },\n                number: {\n                    required: true,\n                    minlength: 5\n                },\n                email: {\n                    required: true,\n                    email: true\n                },\n                message: {\n                    required: true,\n                    minlength: 20\n                }\n            },\n            messages: {\n                name: {\n                    required: \"come on, you have a name, don't you?\",\n                    minlength: \"your name must consist of at least 2 characters\"\n                },\n                subject: {\n                    required: \"come on, you have a subject, don't you?\",\n                    minlength: \"your subject must consist of at least 4 characters\"\n                },\n                number: {\n                    required: \"come on, you have a number, don't you?\",\n                    minlength: \"your Number must consist of at least 5 characters\"\n                },\n                email: {\n                    required: \"no email, no message\"\n                },\n                message: {\n                    required: \"um...yea, you have to write something to send this form.\",\n                    minlength: \"thats all? really?\"\n                }\n            },\n            submitHandler: function(form) {\n                $(form).ajaxSubmit({\n                    type:\"POST\",\n                    data: $(form).serialize(),\n                    url:\"contact_process.php\",\n                    success: function() {\n                        $('#contactForm :input').attr('disabled', 'disabled');\n                        $('#contactForm').fadeTo( \"slow\", 1, function() {\n                            $(this).find(':input').attr('disabled', 'disabled');\n                            $(this).find('label').css('cursor','default');\n                            $('#success').fadeIn()\n                            $('.modal').modal('hide');\n\t\t                \t$('#success').modal('show');\n                        })\n                    },\n                    error: function() {\n                        $('#contactForm').fadeTo( \"slow\", 1, function() {\n                            $('#error').fadeIn()\n                            $('.modal').modal('hide');\n\t\t                \t$('#error').modal('show');\n                        })\n                    }\n                })\n            }\n        })\n    })\n        \n })(jQuery)\n})"
  },
  {
    "path": "public/profile/js/custom.js",
    "content": ";(function($){\n    \"use strict\"\n    var nav_offset_top = $('.header_area').height()+50; \n    /*-------------------------------------------------------------------------------\n\t  Navbar \n\t-------------------------------------------------------------------------------*/\n\n\t//* Navbar Fixed  \n    function navbarFixed(){\n        if ( $('.header_area').length ){ \n            $(window).scroll(function() {\n                var scroll = $(window).scrollTop();   \n                if (scroll >= nav_offset_top ) {\n                    $(\".header_area\").addClass(\"navbar_fixed\");\n                } else {\n                    $(\".header_area\").removeClass(\"navbar_fixed\");\n                }\n            });\n        };\n    };\n    navbarFixed();\n    \n    function testimonialSlider(){\n        if ( $('.testimonial_slider').length ){\n            $('.testimonial_slider').owlCarousel({\n                loop:true,\n                margin: 30,\n                items: 2,\n                nav:false,\n                autoplay: true,\n                dots: true,\n                smartSpeed: 1500,\n                responsiveClass: true,\n                responsive: {\n                    0: {\n                        items: 1,\n                    },\n                    768: {\n                        items: 2,\n                    },\n                }\n            })\n        }\n    }\n    testimonialSlider();\n    \n    //------- Mailchimp js --------//  \n\n    function mailChimp(){\n        $('#mc_embed_signup').find('form').ajaxChimp();\n    }\n    mailChimp();\n    \n    /* ===== Parallax Effect===== */\n\t\n\tfunction parallaxEffect() {\n    \t$('.bg-parallax').parallax();\n\t}\n\tparallaxEffect();\n    \n    \n    $('select').niceSelect();\n    $('#datetimepicker11,#datetimepicker1').datetimepicker({\n        daysOfWeekDisabled: [0, 6]\n    });\n    \n     /*---------gallery isotope js-----------*/\n    function galleryMasonry(){\n        if ( $('#gallery').length ){\n            $('#gallery').imagesLoaded( function() {\n              // images have loaded\n                // Activate isotope in container\n                $(\"#gallery\").isotope({\n                    itemSelector: \".gallery_item\",\n                    layoutMode: 'masonry',\n                    animationOptions: {\n                        duration: 750,\n                        easing: 'linear'\n                    }\n                });\n            })\n        }\n    }\n    galleryMasonry();\n\t\n\t/*----------------------------------------------------*/\n    /*  Simple LightBox js\n    /*----------------------------------------------------*/\n    $('.imageGallery1 .light').simpleLightbox();\n    \n    /*----------------------------------------------------*/\n    /*  Google map js\n    /*----------------------------------------------------*/\n    \n    if ( $('#mapBox').length ){\n        var $lat = $('#mapBox').data('lat');\n        var $lon = $('#mapBox').data('lon');\n        var $zoom = $('#mapBox').data('zoom');\n        var $marker = $('#mapBox').data('marker');\n        var $info = $('#mapBox').data('info');\n        var $markerLat = $('#mapBox').data('mlat');\n        var $markerLon = $('#mapBox').data('mlon');\n        var map = new GMaps({\n        el: '#mapBox',\n        lat: $lat,\n        lng: $lon,\n        scrollwheel: false,\n        scaleControl: true,\n        streetViewControl: false,\n        panControl: true,\n        disableDoubleClickZoom: true,\n        mapTypeControl: false,\n        zoom: $zoom,\n            styles: [\n                {\n                    \"featureType\": \"water\",\n                    \"elementType\": \"geometry.fill\",\n                    \"stylers\": [\n                        {\n                            \"color\": \"#dcdfe6\"\n                        }\n                    ]\n                },\n                {\n                    \"featureType\": \"transit\",\n                    \"stylers\": [\n                        {\n                            \"color\": \"#808080\"\n                        },\n                        {\n                            \"visibility\": \"off\"\n                        }\n                    ]\n                },\n                {\n                    \"featureType\": \"road.highway\",\n                    \"elementType\": \"geometry.stroke\",\n                    \"stylers\": [\n                        {\n                            \"visibility\": \"on\"\n                        },\n                        {\n                            \"color\": \"#dcdfe6\"\n                        }\n                    ]\n                },\n                {\n                    \"featureType\": \"road.highway\",\n                    \"elementType\": \"geometry.fill\",\n                    \"stylers\": [\n                        {\n                            \"color\": \"#ffffff\"\n                        }\n                    ]\n                },\n                {\n                    \"featureType\": \"road.local\",\n                    \"elementType\": \"geometry.fill\",\n                    \"stylers\": [\n                        {\n                            \"visibility\": \"on\"\n                        },\n                        {\n                            \"color\": \"#ffffff\"\n                        },\n                        {\n                            \"weight\": 1.8\n                        }\n                    ]\n                },\n                {\n                    \"featureType\": \"road.local\",\n                    \"elementType\": \"geometry.stroke\",\n                    \"stylers\": [\n                        {\n                            \"color\": \"#d7d7d7\"\n                        }\n                    ]\n                },\n                {\n                    \"featureType\": \"poi\",\n                    \"elementType\": \"geometry.fill\",\n                    \"stylers\": [\n                        {\n                            \"visibility\": \"on\"\n                        },\n                        {\n                            \"color\": \"#ebebeb\"\n                        }\n                    ]\n                },\n                {\n                    \"featureType\": \"administrative\",\n                    \"elementType\": \"geometry\",\n                    \"stylers\": [\n                        {\n                            \"color\": \"#a7a7a7\"\n                        }\n                    ]\n                },\n                {\n                    \"featureType\": \"road.arterial\",\n                    \"elementType\": \"geometry.fill\",\n                    \"stylers\": [\n                        {\n                            \"color\": \"#ffffff\"\n                        }\n                    ]\n                },\n                {\n                    \"featureType\": \"road.arterial\",\n                    \"elementType\": \"geometry.fill\",\n                    \"stylers\": [\n                        {\n                            \"color\": \"#ffffff\"\n                        }\n                    ]\n                },\n                {\n                    \"featureType\": \"landscape\",\n                    \"elementType\": \"geometry.fill\",\n                    \"stylers\": [\n                        {\n                            \"visibility\": \"on\"\n                        },\n                        {\n                            \"color\": \"#efefef\"\n                        }\n                    ]\n                },\n                {\n                    \"featureType\": \"road\",\n                    \"elementType\": \"labels.text.fill\",\n                    \"stylers\": [\n                        {\n                            \"color\": \"#696969\"\n                        }\n                    ]\n                },\n                {\n                    \"featureType\": \"administrative\",\n                    \"elementType\": \"labels.text.fill\",\n                    \"stylers\": [\n                        {\n                            \"visibility\": \"on\"\n                        },\n                        {\n                            \"color\": \"#737373\"\n                        }\n                    ]\n                },\n                {\n                    \"featureType\": \"poi\",\n                    \"elementType\": \"labels.icon\",\n                    \"stylers\": [\n                        {\n                            \"visibility\": \"off\"\n                        }\n                    ]\n                },\n                {\n                    \"featureType\": \"poi\",\n                    \"elementType\": \"labels\",\n                    \"stylers\": [\n                        {\n                            \"visibility\": \"off\"\n                        }\n                    ]\n                },\n                {\n                    \"featureType\": \"road.arterial\",\n                    \"elementType\": \"geometry.stroke\",\n                    \"stylers\": [\n                        {\n                            \"color\": \"#d6d6d6\"\n                        }\n                    ]\n                },\n                {\n                    \"featureType\": \"road\",\n                    \"elementType\": \"labels.icon\",\n                    \"stylers\": [\n                        {\n                            \"visibility\": \"off\"\n                        }\n                    ]\n                },\n                {},\n                {\n                    \"featureType\": \"poi\",\n                    \"elementType\": \"geometry.fill\",\n                    \"stylers\": [\n                        {\n                            \"color\": \"#dadada\"\n                        }\n                    ]\n                }\n            ]\n        });\n    }\n\n})(jQuery)"
  },
  {
    "path": "public/profile/js/jquery.form.js",
    "content": "/*!\n * jQuery Form Plugin\n * version: 3.32.0-2013.04.09\n * @requires jQuery v1.5 or later\n * Copyright (c) 2013 M. Alsup\n * Examples and documentation at: http://malsup.com/jquery/form/\n * Project repository: https://github.com/malsup/form\n * Dual licensed under the MIT and GPL licenses.\n * https://github.com/malsup/form#copyright-and-license\n */\n/*global ActiveXObject */\n;(function($) {\n\"use strict\";\n\n/*\n    Usage Note:\n    -----------\n    Do not use both ajaxSubmit and ajaxForm on the same form.  These\n    functions are mutually exclusive.  Use ajaxSubmit if you want\n    to bind your own submit handler to the form.  For example,\n\n    $(document).ready(function() {\n        $('#myForm').on('submit', function(e) {\n            e.preventDefault(); // <-- important\n            $(this).ajaxSubmit({\n                target: '#output'\n            });\n        });\n    });\n\n    Use ajaxForm when you want the plugin to manage all the event binding\n    for you.  For example,\n\n    $(document).ready(function() {\n        $('#myForm').ajaxForm({\n            target: '#output'\n        });\n    });\n\n    You can also use ajaxForm with delegation (requires jQuery v1.7+), so the\n    form does not have to exist when you invoke ajaxForm:\n\n    $('#myForm').ajaxForm({\n        delegation: true,\n        target: '#output'\n    });\n\n    When using ajaxForm, the ajaxSubmit function will be invoked for you\n    at the appropriate time.\n*/\n\n/**\n * Feature detection\n */\nvar feature = {};\nfeature.fileapi = $(\"<input type='file'/>\").get(0).files !== undefined;\nfeature.formdata = window.FormData !== undefined;\n\nvar hasProp = !!$.fn.prop;\n\n// attr2 uses prop when it can but checks the return type for\n// an expected string.  this accounts for the case where a form \n// contains inputs with names like \"action\" or \"method\"; in those\n// cases \"prop\" returns the element\n$.fn.attr2 = function() {\n    if ( ! hasProp )\n        return this.attr.apply(this, arguments);\n    var val = this.prop.apply(this, arguments);\n    if ( ( val && val.jquery ) || typeof val === 'string' )\n        return val;\n    return this.attr.apply(this, arguments);\n};\n\n/**\n * ajaxSubmit() provides a mechanism for immediately submitting\n * an HTML form using AJAX.\n */\n$.fn.ajaxSubmit = function(options) {\n    /*jshint scripturl:true */\n\n    // fast fail if nothing selected (http://dev.jquery.com/ticket/2752)\n    if (!this.length) {\n        log('ajaxSubmit: skipping submit process - no element selected');\n        return this;\n    }\n\n    var method, action, url, $form = this;\n\n    if (typeof options == 'function') {\n        options = { success: options };\n    }\n\n    method = this.attr2('method');\n    action = this.attr2('action');\n\n    url = (typeof action === 'string') ? $.trim(action) : '';\n    url = url || window.location.href || '';\n    if (url) {\n        // clean url (don't include hash vaue)\n        url = (url.match(/^([^#]+)/)||[])[1];\n    }\n\n    options = $.extend(true, {\n        url:  url,\n        success: $.ajaxSettings.success,\n        type: method || 'GET',\n        iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank'\n    }, options);\n\n    // hook for manipulating the form data before it is extracted;\n    // convenient for use with rich editors like tinyMCE or FCKEditor\n    var veto = {};\n    this.trigger('form-pre-serialize', [this, options, veto]);\n    if (veto.veto) {\n        log('ajaxSubmit: submit vetoed via form-pre-serialize trigger');\n        return this;\n    }\n\n    // provide opportunity to alter form data before it is serialized\n    if (options.beforeSerialize && options.beforeSerialize(this, options) === false) {\n        log('ajaxSubmit: submit aborted via beforeSerialize callback');\n        return this;\n    }\n\n    var traditional = options.traditional;\n    if ( traditional === undefined ) {\n        traditional = $.ajaxSettings.traditional;\n    }\n\n    var elements = [];\n    var qx, a = this.formToArray(options.semantic, elements);\n    if (options.data) {\n        options.extraData = options.data;\n        qx = $.param(options.data, traditional);\n    }\n\n    // give pre-submit callback an opportunity to abort the submit\n    if (options.beforeSubmit && options.beforeSubmit(a, this, options) === false) {\n        log('ajaxSubmit: submit aborted via beforeSubmit callback');\n        return this;\n    }\n\n    // fire vetoable 'validate' event\n    this.trigger('form-submit-validate', [a, this, options, veto]);\n    if (veto.veto) {\n        log('ajaxSubmit: submit vetoed via form-submit-validate trigger');\n        return this;\n    }\n\n    var q = $.param(a, traditional);\n    if (qx) {\n        q = ( q ? (q + '&' + qx) : qx );\n    }\n    if (options.type.toUpperCase() == 'GET') {\n        options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q;\n        options.data = null;  // data is null for 'get'\n    }\n    else {\n        options.data = q; // data is the query string for 'post'\n    }\n\n    var callbacks = [];\n    if (options.resetForm) {\n        callbacks.push(function() { $form.resetForm(); });\n    }\n    if (options.clearForm) {\n        callbacks.push(function() { $form.clearForm(options.includeHidden); });\n    }\n\n    // perform a load on the target only if dataType is not provided\n    if (!options.dataType && options.target) {\n        var oldSuccess = options.success || function(){};\n        callbacks.push(function(data) {\n            var fn = options.replaceTarget ? 'replaceWith' : 'html';\n            $(options.target)[fn](data).each(oldSuccess, arguments);\n        });\n    }\n    else if (options.success) {\n        callbacks.push(options.success);\n    }\n\n    options.success = function(data, status, xhr) { // jQuery 1.4+ passes xhr as 3rd arg\n        var context = options.context || this ;    // jQuery 1.4+ supports scope context\n        for (var i=0, max=callbacks.length; i < max; i++) {\n            callbacks[i].apply(context, [data, status, xhr || $form, $form]);\n        }\n    };\n\n    // are there files to upload?\n\n    // [value] (issue #113), also see comment:\n    // https://github.com/malsup/form/commit/588306aedba1de01388032d5f42a60159eea9228#commitcomment-2180219\n    var fileInputs = $('input[type=file]:enabled[value!=\"\"]', this);\n\n    var hasFileInputs = fileInputs.length > 0;\n    var mp = 'multipart/form-data';\n    var multipart = ($form.attr('enctype') == mp || $form.attr('encoding') == mp);\n\n    var fileAPI = feature.fileapi && feature.formdata;\n    log(\"fileAPI :\" + fileAPI);\n    var shouldUseFrame = (hasFileInputs || multipart) && !fileAPI;\n\n    var jqxhr;\n\n    // options.iframe allows user to force iframe mode\n    // 06-NOV-09: now defaulting to iframe mode if file input is detected\n    if (options.iframe !== false && (options.iframe || shouldUseFrame)) {\n        // hack to fix Safari hang (thanks to Tim Molendijk for this)\n        // see:  http://groups.google.com/group/jquery-dev/browse_thread/thread/36395b7ab510dd5d\n        if (options.closeKeepAlive) {\n            $.get(options.closeKeepAlive, function() {\n                jqxhr = fileUploadIframe(a);\n            });\n        }\n        else {\n            jqxhr = fileUploadIframe(a);\n        }\n    }\n    else if ((hasFileInputs || multipart) && fileAPI) {\n        jqxhr = fileUploadXhr(a);\n    }\n    else {\n        jqxhr = $.ajax(options);\n    }\n\n    $form.removeData('jqxhr').data('jqxhr', jqxhr);\n\n    // clear element array\n    for (var k=0; k < elements.length; k++)\n        elements[k] = null;\n\n    // fire 'notify' event\n    this.trigger('form-submit-notify', [this, options]);\n    return this;\n\n    // utility fn for deep serialization\n    function deepSerialize(extraData){\n        var serialized = $.param(extraData).split('&');\n        var len = serialized.length;\n        var result = [];\n        var i, part;\n        for (i=0; i < len; i++) {\n            // #252; undo param space replacement\n            serialized[i] = serialized[i].replace(/\\+/g,' ');\n            part = serialized[i].split('=');\n            // #278; use array instead of object storage, favoring array serializations\n            result.push([decodeURIComponent(part[0]), decodeURIComponent(part[1])]);\n        }\n        return result;\n    }\n\n     // XMLHttpRequest Level 2 file uploads (big hat tip to francois2metz)\n    function fileUploadXhr(a) {\n        var formdata = new FormData();\n\n        for (var i=0; i < a.length; i++) {\n            formdata.append(a[i].name, a[i].value);\n        }\n\n        if (options.extraData) {\n            var serializedData = deepSerialize(options.extraData);\n            for (i=0; i < serializedData.length; i++)\n                if (serializedData[i])\n                    formdata.append(serializedData[i][0], serializedData[i][1]);\n        }\n\n        options.data = null;\n\n        var s = $.extend(true, {}, $.ajaxSettings, options, {\n            contentType: false,\n            processData: false,\n            cache: false,\n            type: method || 'POST'\n        });\n\n        if (options.uploadProgress) {\n            // workaround because jqXHR does not expose upload property\n            s.xhr = function() {\n                var xhr = jQuery.ajaxSettings.xhr();\n                if (xhr.upload) {\n                    xhr.upload.addEventListener('progress', function(event) {\n                        var percent = 0;\n                        var position = event.loaded || event.position; /*event.position is deprecated*/\n                        var total = event.total;\n                        if (event.lengthComputable) {\n                            percent = Math.ceil(position / total * 100);\n                        }\n                        options.uploadProgress(event, position, total, percent);\n                    }, false);\n                }\n                return xhr;\n            };\n        }\n\n        s.data = null;\n            var beforeSend = s.beforeSend;\n            s.beforeSend = function(xhr, o) {\n                o.data = formdata;\n                if(beforeSend)\n                    beforeSend.call(this, xhr, o);\n        };\n        return $.ajax(s);\n    }\n\n    // private function for handling file uploads (hat tip to YAHOO!)\n    function fileUploadIframe(a) {\n        var form = $form[0], el, i, s, g, id, $io, io, xhr, sub, n, timedOut, timeoutHandle;\n        var deferred = $.Deferred();\n\n        if (a) {\n            // ensure that every serialized input is still enabled\n            for (i=0; i < elements.length; i++) {\n                el = $(elements[i]);\n                if ( hasProp )\n                    el.prop('disabled', false);\n                else\n                    el.removeAttr('disabled');\n            }\n        }\n\n        s = $.extend(true, {}, $.ajaxSettings, options);\n        s.context = s.context || s;\n        id = 'jqFormIO' + (new Date().getTime());\n        if (s.iframeTarget) {\n            $io = $(s.iframeTarget);\n            n = $io.attr2('name');\n            if (!n)\n                 $io.attr2('name', id);\n            else\n                id = n;\n        }\n        else {\n            $io = $('<iframe name=\"' + id + '\" src=\"'+ s.iframeSrc +'\" />');\n            $io.css({ position: 'absolute', top: '-1000px', left: '-1000px' });\n        }\n        io = $io[0];\n\n\n        xhr = { // mock object\n            aborted: 0,\n            responseText: null,\n            responseXML: null,\n            status: 0,\n            statusText: 'n/a',\n            getAllResponseHeaders: function() {},\n            getResponseHeader: function() {},\n            setRequestHeader: function() {},\n            abort: function(status) {\n                var e = (status === 'timeout' ? 'timeout' : 'aborted');\n                log('aborting upload... ' + e);\n                this.aborted = 1;\n\n                try { // #214, #257\n                    if (io.contentWindow.document.execCommand) {\n                        io.contentWindow.document.execCommand('Stop');\n                    }\n                }\n                catch(ignore) {}\n\n                $io.attr('src', s.iframeSrc); // abort op in progress\n                xhr.error = e;\n                if (s.error)\n                    s.error.call(s.context, xhr, e, status);\n                if (g)\n                    $.event.trigger(\"ajaxError\", [xhr, s, e]);\n                if (s.complete)\n                    s.complete.call(s.context, xhr, e);\n            }\n        };\n\n        g = s.global;\n        // trigger ajax global events so that activity/block indicators work like normal\n        if (g && 0 === $.active++) {\n            $.event.trigger(\"ajaxStart\");\n        }\n        if (g) {\n            $.event.trigger(\"ajaxSend\", [xhr, s]);\n        }\n\n        if (s.beforeSend && s.beforeSend.call(s.context, xhr, s) === false) {\n            if (s.global) {\n                $.active--;\n            }\n            deferred.reject();\n            return deferred;\n        }\n        if (xhr.aborted) {\n            deferred.reject();\n            return deferred;\n        }\n\n        // add submitting element to data if we know it\n        sub = form.clk;\n        if (sub) {\n            n = sub.name;\n            if (n && !sub.disabled) {\n                s.extraData = s.extraData || {};\n                s.extraData[n] = sub.value;\n                if (sub.type == \"image\") {\n                    s.extraData[n+'.x'] = form.clk_x;\n                    s.extraData[n+'.y'] = form.clk_y;\n                }\n            }\n        }\n\n        var CLIENT_TIMEOUT_ABORT = 1;\n        var SERVER_ABORT = 2;\n                \n        function getDoc(frame) {\n            /* it looks like contentWindow or contentDocument do not\n             * carry the protocol property in ie8, when running under ssl\n             * frame.document is the only valid response document, since\n             * the protocol is know but not on the other two objects. strange?\n             * \"Same origin policy\" http://en.wikipedia.org/wiki/Same_origin_policy\n             */\n            \n            var doc = null;\n            \n            // IE8 cascading access check\n            try {\n                if (frame.contentWindow) {\n                    doc = frame.contentWindow.document;\n                }\n            } catch(err) {\n                // IE8 access denied under ssl & missing protocol\n                log('cannot get iframe.contentWindow document: ' + err);\n            }\n\n            if (doc) { // successful getting content\n                return doc;\n            }\n\n            try { // simply checking may throw in ie8 under ssl or mismatched protocol\n                doc = frame.contentDocument ? frame.contentDocument : frame.document;\n            } catch(err) {\n                // last attempt\n                log('cannot get iframe.contentDocument: ' + err);\n                doc = frame.document;\n            }\n            return doc;\n        }\n\n        // Rails CSRF hack (thanks to Yvan Barthelemy)\n        var csrf_token = $('meta[name=csrf-token]').attr('content');\n        var csrf_param = $('meta[name=csrf-param]').attr('content');\n        if (csrf_param && csrf_token) {\n            s.extraData = s.extraData || {};\n            s.extraData[csrf_param] = csrf_token;\n        }\n\n        // take a breath so that pending repaints get some cpu time before the upload starts\n        function doSubmit() {\n            // make sure form attrs are set\n            var t = $form.attr2('target'), a = $form.attr2('action');\n\n            // update form attrs in IE friendly way\n            form.setAttribute('target',id);\n            if (!method) {\n                form.setAttribute('method', 'POST');\n            }\n            if (a != s.url) {\n                form.setAttribute('action', s.url);\n            }\n\n            // ie borks in some cases when setting encoding\n            if (! s.skipEncodingOverride && (!method || /post/i.test(method))) {\n                $form.attr({\n                    encoding: 'multipart/form-data',\n                    enctype:  'multipart/form-data'\n                });\n            }\n\n            // support timout\n            if (s.timeout) {\n                timeoutHandle = setTimeout(function() { timedOut = true; cb(CLIENT_TIMEOUT_ABORT); }, s.timeout);\n            }\n\n            // look for server aborts\n            function checkState() {\n                try {\n                    var state = getDoc(io).readyState;\n                    log('state = ' + state);\n                    if (state && state.toLowerCase() == 'uninitialized')\n                        setTimeout(checkState,50);\n                }\n                catch(e) {\n                    log('Server abort: ' , e, ' (', e.name, ')');\n                    cb(SERVER_ABORT);\n                    if (timeoutHandle)\n                        clearTimeout(timeoutHandle);\n                    timeoutHandle = undefined;\n                }\n            }\n\n            // add \"extra\" data to form if provided in options\n            var extraInputs = [];\n            try {\n                if (s.extraData) {\n                    for (var n in s.extraData) {\n                        if (s.extraData.hasOwnProperty(n)) {\n                           // if using the $.param format that allows for multiple values with the same name\n                           if($.isPlainObject(s.extraData[n]) && s.extraData[n].hasOwnProperty('name') && s.extraData[n].hasOwnProperty('value')) {\n                               extraInputs.push(\n                               $('<input type=\"hidden\" name=\"'+s.extraData[n].name+'\">').val(s.extraData[n].value)\n                                   .appendTo(form)[0]);\n                           } else {\n                               extraInputs.push(\n                               $('<input type=\"hidden\" name=\"'+n+'\">').val(s.extraData[n])\n                                   .appendTo(form)[0]);\n                           }\n                        }\n                    }\n                }\n\n                if (!s.iframeTarget) {\n                    // add iframe to doc and submit the form\n                    $io.appendTo('body');\n                    if (io.attachEvent)\n                        io.attachEvent('onload', cb);\n                    else\n                        io.addEventListener('load', cb, false);\n                }\n                setTimeout(checkState,15);\n\n                try {\n                    form.submit();\n                } catch(err) {\n                    // just in case form has element with name/id of 'submit'\n                    var submitFn = document.createElement('form').submit;\n                    submitFn.apply(form);\n                }\n            }\n            finally {\n                // reset attrs and remove \"extra\" input elements\n                form.setAttribute('action',a);\n                if(t) {\n                    form.setAttribute('target', t);\n                } else {\n                    $form.removeAttr('target');\n                }\n                $(extraInputs).remove();\n            }\n        }\n\n        if (s.forceSync) {\n            doSubmit();\n        }\n        else {\n            setTimeout(doSubmit, 10); // this lets dom updates render\n        }\n\n        var data, doc, domCheckCount = 50, callbackProcessed;\n\n        function cb(e) {\n            if (xhr.aborted || callbackProcessed) {\n                return;\n            }\n            \n            doc = getDoc(io);\n            if(!doc) {\n                log('cannot access response document');\n                e = SERVER_ABORT;\n            }\n            if (e === CLIENT_TIMEOUT_ABORT && xhr) {\n                xhr.abort('timeout');\n                deferred.reject(xhr, 'timeout');\n                return;\n            }\n            else if (e == SERVER_ABORT && xhr) {\n                xhr.abort('server abort');\n                deferred.reject(xhr, 'error', 'server abort');\n                return;\n            }\n\n            if (!doc || doc.location.href == s.iframeSrc) {\n                // response not received yet\n                if (!timedOut)\n                    return;\n            }\n            if (io.detachEvent)\n                io.detachEvent('onload', cb);\n            else\n                io.removeEventListener('load', cb, false);\n\n            var status = 'success', errMsg;\n            try {\n                if (timedOut) {\n                    throw 'timeout';\n                }\n\n                var isXml = s.dataType == 'xml' || doc.XMLDocument || $.isXMLDoc(doc);\n                log('isXml='+isXml);\n                if (!isXml && window.opera && (doc.body === null || !doc.body.innerHTML)) {\n                    if (--domCheckCount) {\n                        // in some browsers (Opera) the iframe DOM is not always traversable when\n                        // the onload callback fires, so we loop a bit to accommodate\n                        log('requeing onLoad callback, DOM not available');\n                        setTimeout(cb, 250);\n                        return;\n                    }\n                    // let this fall through because server response could be an empty document\n                    //log('Could not access iframe DOM after mutiple tries.');\n                    //throw 'DOMException: not available';\n                }\n\n                //log('response detected');\n                var docRoot = doc.body ? doc.body : doc.documentElement;\n                xhr.responseText = docRoot ? docRoot.innerHTML : null;\n                xhr.responseXML = doc.XMLDocument ? doc.XMLDocument : doc;\n                if (isXml)\n                    s.dataType = 'xml';\n                xhr.getResponseHeader = function(header){\n                    var headers = {'content-type': s.dataType};\n                    return headers[header];\n                };\n                // support for XHR 'status' & 'statusText' emulation :\n                if (docRoot) {\n                    xhr.status = Number( docRoot.getAttribute('status') ) || xhr.status;\n                    xhr.statusText = docRoot.getAttribute('statusText') || xhr.statusText;\n                }\n\n                var dt = (s.dataType || '').toLowerCase();\n                var scr = /(json|script|text)/.test(dt);\n                if (scr || s.textarea) {\n                    // see if user embedded response in textarea\n                    var ta = doc.getElementsByTagName('textarea')[0];\n                    if (ta) {\n                        xhr.responseText = ta.value;\n                        // support for XHR 'status' & 'statusText' emulation :\n                        xhr.status = Number( ta.getAttribute('status') ) || xhr.status;\n                        xhr.statusText = ta.getAttribute('statusText') || xhr.statusText;\n                    }\n                    else if (scr) {\n                        // account for browsers injecting pre around json response\n                        var pre = doc.getElementsByTagName('pre')[0];\n                        var b = doc.getElementsByTagName('body')[0];\n                        if (pre) {\n                            xhr.responseText = pre.textContent ? pre.textContent : pre.innerText;\n                        }\n                        else if (b) {\n                            xhr.responseText = b.textContent ? b.textContent : b.innerText;\n                        }\n                    }\n                }\n                else if (dt == 'xml' && !xhr.responseXML && xhr.responseText) {\n                    xhr.responseXML = toXml(xhr.responseText);\n                }\n\n                try {\n                    data = httpData(xhr, dt, s);\n                }\n                catch (err) {\n                    status = 'parsererror';\n                    xhr.error = errMsg = (err || status);\n                }\n            }\n            catch (err) {\n                log('error caught: ',err);\n                status = 'error';\n                xhr.error = errMsg = (err || status);\n            }\n\n            if (xhr.aborted) {\n                log('upload aborted');\n                status = null;\n            }\n\n            if (xhr.status) { // we've set xhr.status\n                status = (xhr.status >= 200 && xhr.status < 300 || xhr.status === 304) ? 'success' : 'error';\n            }\n\n            // ordering of these callbacks/triggers is odd, but that's how $.ajax does it\n            if (status === 'success') {\n                if (s.success)\n                    s.success.call(s.context, data, 'success', xhr);\n                deferred.resolve(xhr.responseText, 'success', xhr);\n                if (g)\n                    $.event.trigger(\"ajaxSuccess\", [xhr, s]);\n            }\n            else if (status) {\n                if (errMsg === undefined)\n                    errMsg = xhr.statusText;\n                if (s.error)\n                    s.error.call(s.context, xhr, status, errMsg);\n                deferred.reject(xhr, 'error', errMsg);\n                if (g)\n                    $.event.trigger(\"ajaxError\", [xhr, s, errMsg]);\n            }\n\n            if (g)\n                $.event.trigger(\"ajaxComplete\", [xhr, s]);\n\n            if (g && ! --$.active) {\n                $.event.trigger(\"ajaxStop\");\n            }\n\n            if (s.complete)\n                s.complete.call(s.context, xhr, status);\n\n            callbackProcessed = true;\n            if (s.timeout)\n                clearTimeout(timeoutHandle);\n\n            // clean up\n            setTimeout(function() {\n                if (!s.iframeTarget)\n                    $io.remove();\n                xhr.responseXML = null;\n            }, 100);\n        }\n\n        var toXml = $.parseXML || function(s, doc) { // use parseXML if available (jQuery 1.5+)\n            if (window.ActiveXObject) {\n                doc = new ActiveXObject('Microsoft.XMLDOM');\n                doc.async = 'false';\n                doc.loadXML(s);\n            }\n            else {\n                doc = (new DOMParser()).parseFromString(s, 'text/xml');\n            }\n            return (doc && doc.documentElement && doc.documentElement.nodeName != 'parsererror') ? doc : null;\n        };\n        var parseJSON = $.parseJSON || function(s) {\n            /*jslint evil:true */\n            return window['eval']('(' + s + ')');\n        };\n\n        var httpData = function( xhr, type, s ) { // mostly lifted from jq1.4.4\n\n            var ct = xhr.getResponseHeader('content-type') || '',\n                xml = type === 'xml' || !type && ct.indexOf('xml') >= 0,\n                data = xml ? xhr.responseXML : xhr.responseText;\n\n            if (xml && data.documentElement.nodeName === 'parsererror') {\n                if ($.error)\n                    $.error('parsererror');\n            }\n            if (s && s.dataFilter) {\n                data = s.dataFilter(data, type);\n            }\n            if (typeof data === 'string') {\n                if (type === 'json' || !type && ct.indexOf('json') >= 0) {\n                    data = parseJSON(data);\n                } else if (type === \"script\" || !type && ct.indexOf(\"javascript\") >= 0) {\n                    $.globalEval(data);\n                }\n            }\n            return data;\n        };\n\n        return deferred;\n    }\n};\n\n/**\n * ajaxForm() provides a mechanism for fully automating form submission.\n *\n * The advantages of using this method instead of ajaxSubmit() are:\n *\n * 1: This method will include coordinates for <input type=\"image\" /> elements (if the element\n *    is used to submit the form).\n * 2. This method will include the submit element's name/value data (for the element that was\n *    used to submit the form).\n * 3. This method binds the submit() method to the form for you.\n *\n * The options argument for ajaxForm works exactly as it does for ajaxSubmit.  ajaxForm merely\n * passes the options argument along after properly binding events for submit elements and\n * the form itself.\n */\n$.fn.ajaxForm = function(options) {\n    options = options || {};\n    options.delegation = options.delegation && $.isFunction($.fn.on);\n\n    // in jQuery 1.3+ we can fix mistakes with the ready state\n    if (!options.delegation && this.length === 0) {\n        var o = { s: this.selector, c: this.context };\n        if (!$.isReady && o.s) {\n            log('DOM not ready, queuing ajaxForm');\n            $(function() {\n                $(o.s,o.c).ajaxForm(options);\n            });\n            return this;\n        }\n        // is your DOM ready?  http://docs.jquery.com/Tutorials:Introducing_$(document).ready()\n        log('terminating; zero elements found by selector' + ($.isReady ? '' : ' (DOM not ready)'));\n        return this;\n    }\n\n    if ( options.delegation ) {\n        $(document)\n            .off('submit.form-plugin', this.selector, doAjaxSubmit)\n            .off('click.form-plugin', this.selector, captureSubmittingElement)\n            .on('submit.form-plugin', this.selector, options, doAjaxSubmit)\n            .on('click.form-plugin', this.selector, options, captureSubmittingElement);\n        return this;\n    }\n\n    return this.ajaxFormUnbind()\n        .bind('submit.form-plugin', options, doAjaxSubmit)\n        .bind('click.form-plugin', options, captureSubmittingElement);\n};\n\n// private event handlers\nfunction doAjaxSubmit(e) {\n    /*jshint validthis:true */\n    var options = e.data;\n    if (!e.isDefaultPrevented()) { // if event has been canceled, don't proceed\n        e.preventDefault();\n        $(this).ajaxSubmit(options);\n    }\n}\n\nfunction captureSubmittingElement(e) {\n    /*jshint validthis:true */\n    var target = e.target;\n    var $el = $(target);\n    if (!($el.is(\"[type=submit],[type=image]\"))) {\n        // is this a child element of the submit el?  (ex: a span within a button)\n        var t = $el.closest('[type=submit]');\n        if (t.length === 0) {\n            return;\n        }\n        target = t[0];\n    }\n    var form = this;\n    form.clk = target;\n    if (target.type == 'image') {\n        if (e.offsetX !== undefined) {\n            form.clk_x = e.offsetX;\n            form.clk_y = e.offsetY;\n        } else if (typeof $.fn.offset == 'function') {\n            var offset = $el.offset();\n            form.clk_x = e.pageX - offset.left;\n            form.clk_y = e.pageY - offset.top;\n        } else {\n            form.clk_x = e.pageX - target.offsetLeft;\n            form.clk_y = e.pageY - target.offsetTop;\n        }\n    }\n    // clear form vars\n    setTimeout(function() { form.clk = form.clk_x = form.clk_y = null; }, 100);\n}\n\n\n// ajaxFormUnbind unbinds the event handlers that were bound by ajaxForm\n$.fn.ajaxFormUnbind = function() {\n    return this.unbind('submit.form-plugin click.form-plugin');\n};\n\n/**\n * formToArray() gathers form element data into an array of objects that can\n * be passed to any of the following ajax functions: $.get, $.post, or load.\n * Each object in the array has both a 'name' and 'value' property.  An example of\n * an array for a simple login form might be:\n *\n * [ { name: 'username', value: 'jresig' }, { name: 'password', value: 'secret' } ]\n *\n * It is this array that is passed to pre-submit callback functions provided to the\n * ajaxSubmit() and ajaxForm() methods.\n */\n$.fn.formToArray = function(semantic, elements) {\n    var a = [];\n    if (this.length === 0) {\n        return a;\n    }\n\n    var form = this[0];\n    var els = semantic ? form.getElementsByTagName('*') : form.elements;\n    if (!els) {\n        return a;\n    }\n\n    var i,j,n,v,el,max,jmax;\n    for(i=0, max=els.length; i < max; i++) {\n        el = els[i];\n        n = el.name;\n        if (!n || el.disabled) {\n            continue;\n        }\n\n        if (semantic && form.clk && el.type == \"image\") {\n            // handle image inputs on the fly when semantic == true\n            if(form.clk == el) {\n                a.push({name: n, value: $(el).val(), type: el.type });\n                a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y});\n            }\n            continue;\n        }\n\n        v = $.fieldValue(el, true);\n        if (v && v.constructor == Array) {\n            if (elements)\n                elements.push(el);\n            for(j=0, jmax=v.length; j < jmax; j++) {\n                a.push({name: n, value: v[j]});\n            }\n        }\n        else if (feature.fileapi && el.type == 'file') {\n            if (elements)\n                elements.push(el);\n            var files = el.files;\n            if (files.length) {\n                for (j=0; j < files.length; j++) {\n                    a.push({name: n, value: files[j], type: el.type});\n                }\n            }\n            else {\n                // #180\n                a.push({ name: n, value: '', type: el.type });\n            }\n        }\n        else if (v !== null && typeof v != 'undefined') {\n            if (elements)\n                elements.push(el);\n            a.push({name: n, value: v, type: el.type, required: el.required});\n        }\n    }\n\n    if (!semantic && form.clk) {\n        // input type=='image' are not found in elements array! handle it here\n        var $input = $(form.clk), input = $input[0];\n        n = input.name;\n        if (n && !input.disabled && input.type == 'image') {\n            a.push({name: n, value: $input.val()});\n            a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y});\n        }\n    }\n    return a;\n};\n\n/**\n * Serializes form data into a 'submittable' string. This method will return a string\n * in the format: name1=value1&amp;name2=value2\n */\n$.fn.formSerialize = function(semantic) {\n    //hand off to jQuery.param for proper encoding\n    return $.param(this.formToArray(semantic));\n};\n\n/**\n * Serializes all field elements in the jQuery object into a query string.\n * This method will return a string in the format: name1=value1&amp;name2=value2\n */\n$.fn.fieldSerialize = function(successful) {\n    var a = [];\n    this.each(function() {\n        var n = this.name;\n        if (!n) {\n            return;\n        }\n        var v = $.fieldValue(this, successful);\n        if (v && v.constructor == Array) {\n            for (var i=0,max=v.length; i < max; i++) {\n                a.push({name: n, value: v[i]});\n            }\n        }\n        else if (v !== null && typeof v != 'undefined') {\n            a.push({name: this.name, value: v});\n        }\n    });\n    //hand off to jQuery.param for proper encoding\n    return $.param(a);\n};\n\n/**\n * Returns the value(s) of the element in the matched set.  For example, consider the following form:\n *\n *  <form><fieldset>\n *      <input name=\"A\" type=\"text\" />\n *      <input name=\"A\" type=\"text\" />\n *      <input name=\"B\" type=\"checkbox\" value=\"B1\" />\n *      <input name=\"B\" type=\"checkbox\" value=\"B2\"/>\n *      <input name=\"C\" type=\"radio\" value=\"C1\" />\n *      <input name=\"C\" type=\"radio\" value=\"C2\" />\n *  </fieldset></form>\n *\n *  var v = $('input[type=text]').fieldValue();\n *  // if no values are entered into the text inputs\n *  v == ['','']\n *  // if values entered into the text inputs are 'foo' and 'bar'\n *  v == ['foo','bar']\n *\n *  var v = $('input[type=checkbox]').fieldValue();\n *  // if neither checkbox is checked\n *  v === undefined\n *  // if both checkboxes are checked\n *  v == ['B1', 'B2']\n *\n *  var v = $('input[type=radio]').fieldValue();\n *  // if neither radio is checked\n *  v === undefined\n *  // if first radio is checked\n *  v == ['C1']\n *\n * The successful argument controls whether or not the field element must be 'successful'\n * (per http://www.w3.org/TR/html4/interact/forms.html#successful-controls).\n * The default value of the successful argument is true.  If this value is false the value(s)\n * for each element is returned.\n *\n * Note: This method *always* returns an array.  If no valid value can be determined the\n *    array will be empty, otherwise it will contain one or more values.\n */\n$.fn.fieldValue = function(successful) {\n    for (var val=[], i=0, max=this.length; i < max; i++) {\n        var el = this[i];\n        var v = $.fieldValue(el, successful);\n        if (v === null || typeof v == 'undefined' || (v.constructor == Array && !v.length)) {\n            continue;\n        }\n        if (v.constructor == Array)\n            $.merge(val, v);\n        else\n            val.push(v);\n    }\n    return val;\n};\n\n/**\n * Returns the value of the field element.\n */\n$.fieldValue = function(el, successful) {\n    var n = el.name, t = el.type, tag = el.tagName.toLowerCase();\n    if (successful === undefined) {\n        successful = true;\n    }\n\n    if (successful && (!n || el.disabled || t == 'reset' || t == 'button' ||\n        (t == 'checkbox' || t == 'radio') && !el.checked ||\n        (t == 'submit' || t == 'image') && el.form && el.form.clk != el ||\n        tag == 'select' && el.selectedIndex == -1)) {\n            return null;\n    }\n\n    if (tag == 'select') {\n        var index = el.selectedIndex;\n        if (index < 0) {\n            return null;\n        }\n        var a = [], ops = el.options;\n        var one = (t == 'select-one');\n        var max = (one ? index+1 : ops.length);\n        for(var i=(one ? index : 0); i < max; i++) {\n            var op = ops[i];\n            if (op.selected) {\n                var v = op.value;\n                if (!v) { // extra pain for IE...\n                    v = (op.attributes && op.attributes['value'] && !(op.attributes['value'].specified)) ? op.text : op.value;\n                }\n                if (one) {\n                    return v;\n                }\n                a.push(v);\n            }\n        }\n        return a;\n    }\n    return $(el).val();\n};\n\n/**\n * Clears the form data.  Takes the following actions on the form's input fields:\n *  - input text fields will have their 'value' property set to the empty string\n *  - select elements will have their 'selectedIndex' property set to -1\n *  - checkbox and radio inputs will have their 'checked' property set to false\n *  - inputs of type submit, button, reset, and hidden will *not* be effected\n *  - button elements will *not* be effected\n */\n$.fn.clearForm = function(includeHidden) {\n    return this.each(function() {\n        $('input,select,textarea', this).clearFields(includeHidden);\n    });\n};\n\n/**\n * Clears the selected form elements.\n */\n$.fn.clearFields = $.fn.clearInputs = function(includeHidden) {\n    var re = /^(?:color|date|datetime|email|month|number|password|range|search|tel|text|time|url|week)$/i; // 'hidden' is not in this list\n    return this.each(function() {\n        var t = this.type, tag = this.tagName.toLowerCase();\n        if (re.test(t) || tag == 'textarea') {\n            this.value = '';\n        }\n        else if (t == 'checkbox' || t == 'radio') {\n            this.checked = false;\n        }\n        else if (tag == 'select') {\n            this.selectedIndex = -1;\n        }\n\t\telse if (t == \"file\") {\n\t\t\tif (/MSIE/.test(navigator.userAgent)) {\n\t\t\t\t$(this).replaceWith($(this).clone(true));\n\t\t\t} else {\n\t\t\t\t$(this).val('');\n\t\t\t}\n\t\t}\n        else if (includeHidden) {\n            // includeHidden can be the value true, or it can be a selector string\n            // indicating a special test; for example:\n            //  $('#myForm').clearForm('.special:hidden')\n            // the above would clean hidden inputs that have the class of 'special'\n            if ( (includeHidden === true && /hidden/.test(t)) ||\n                 (typeof includeHidden == 'string' && $(this).is(includeHidden)) )\n                this.value = '';\n        }\n    });\n};\n\n/**\n * Resets the form data.  Causes all form elements to be reset to their original value.\n */\n$.fn.resetForm = function() {\n    return this.each(function() {\n        // guard against an input with the name of 'reset'\n        // note that IE reports the reset function as an 'object'\n        if (typeof this.reset == 'function' || (typeof this.reset == 'object' && !this.reset.nodeType)) {\n            this.reset();\n        }\n    });\n};\n\n/**\n * Enables or disables any matching elements.\n */\n$.fn.enable = function(b) {\n    if (b === undefined) {\n        b = true;\n    }\n    return this.each(function() {\n        this.disabled = !b;\n    });\n};\n\n/**\n * Checks/unchecks any matching checkboxes or radio buttons and\n * selects/deselects and matching option elements.\n */\n$.fn.selected = function(select) {\n    if (select === undefined) {\n        select = true;\n    }\n    return this.each(function() {\n        var t = this.type;\n        if (t == 'checkbox' || t == 'radio') {\n            this.checked = select;\n        }\n        else if (this.tagName.toLowerCase() == 'option') {\n            var $sel = $(this).parent('select');\n            if (select && $sel[0] && $sel[0].type == 'select-one') {\n                // deselect all other options\n                $sel.find('option').selected(false);\n            }\n            this.selected = select;\n        }\n    });\n};\n\n// expose debug var\n$.fn.ajaxSubmit.debug = false;\n\n// helper fn for console logging\nfunction log() {\n    if (!$.fn.ajaxSubmit.debug)\n        return;\n    var msg = '[jquery.form] ' + Array.prototype.join.call(arguments,'');\n    if (window.console && window.console.log) {\n        window.console.log(msg);\n    }\n    else if (window.opera && window.opera.postError) {\n        window.opera.postError(msg);\n    }\n}\n\n})(jQuery);\n"
  },
  {
    "path": "public/profile/js/mail-script.js",
    "content": "    // -------   Mail Send ajax\n\n     $(document).ready(function() {\n        var form = $('#myForm'); // contact form\n        var submit = $('.submit-btn'); // submit button\n        var alert = $('.alert-msg'); // alert div for show alert message\n\n        // form submit event\n        form.on('submit', function(e) {\n            e.preventDefault(); // prevent default form submit\n\n            $.ajax({\n                url: 'mail.php', // form action url\n                type: 'POST', // form submit method get/post\n                dataType: 'html', // request type html/json/xml\n                data: form.serialize(), // serialize form data\n                beforeSend: function() {\n                    alert.fadeOut();\n                    submit.html('Sending....'); // change submit button text\n                },\n                success: function(data) {\n                    alert.html(data).fadeIn(); // fade in response data\n                    form.trigger('reset'); // reset form\n                    submit.attr(\"style\", \"display: none !important\");; // reset submit button text\n                },\n                error: function(e) {\n                    console.log(e)\n                }\n            });\n        });\n    });"
  },
  {
    "path": "public/profile/js/popper.js",
    "content": "/*\n Copyright (C) Federico Zivolo 2017\n Distributed under the MIT License (license terms are at http://opensource.org/licenses/MIT).\n */(function(e,t){'object'==typeof exports&&'undefined'!=typeof module?module.exports=t():'function'==typeof define&&define.amd?define(t):e.Popper=t()})(this,function(){'use strict';function e(e){return e&&'[object Function]'==={}.toString.call(e)}function t(e,t){if(1!==e.nodeType)return[];var o=window.getComputedStyle(e,null);return t?o[t]:o}function o(e){return'HTML'===e.nodeName?e:e.parentNode||e.host}function n(e){if(!e||-1!==['HTML','BODY','#document'].indexOf(e.nodeName))return window.document.body;var i=t(e),r=i.overflow,p=i.overflowX,s=i.overflowY;return /(auto|scroll)/.test(r+s+p)?e:n(o(e))}function r(e){var o=e&&e.offsetParent,i=o&&o.nodeName;return i&&'BODY'!==i&&'HTML'!==i?-1!==['TD','TABLE'].indexOf(o.nodeName)&&'static'===t(o,'position')?r(o):o:window.document.documentElement}function p(e){var t=e.nodeName;return'BODY'!==t&&('HTML'===t||r(e.firstElementChild)===e)}function s(e){return null===e.parentNode?e:s(e.parentNode)}function d(e,t){if(!e||!e.nodeType||!t||!t.nodeType)return window.document.documentElement;var o=e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_FOLLOWING,i=o?e:t,n=o?t:e,a=document.createRange();a.setStart(i,0),a.setEnd(n,0);var l=a.commonAncestorContainer;if(e!==l&&t!==l||i.contains(n))return p(l)?l:r(l);var f=s(e);return f.host?d(f.host,t):d(e,s(t).host)}function a(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:'top',o='top'===t?'scrollTop':'scrollLeft',i=e.nodeName;if('BODY'===i||'HTML'===i){var n=window.document.documentElement,r=window.document.scrollingElement||n;return r[o]}return e[o]}function l(e,t){var o=2<arguments.length&&void 0!==arguments[2]&&arguments[2],i=a(t,'top'),n=a(t,'left'),r=o?-1:1;return e.top+=i*r,e.bottom+=i*r,e.left+=n*r,e.right+=n*r,e}function f(e,t){var o='x'===t?'Left':'Top',i='Left'==o?'Right':'Bottom';return+e['border'+o+'Width'].split('px')[0]+ +e['border'+i+'Width'].split('px')[0]}function m(e,t,o,i){return X(t['offset'+e],t['scroll'+e],o['client'+e],o['offset'+e],o['scroll'+e],ne()?o['offset'+e]+i['margin'+('Height'===e?'Top':'Left')]+i['margin'+('Height'===e?'Bottom':'Right')]:0)}function c(){var e=window.document.body,t=window.document.documentElement,o=ne()&&window.getComputedStyle(t);return{height:m('Height',e,t,o),width:m('Width',e,t,o)}}function h(e){return de({},e,{right:e.left+e.width,bottom:e.top+e.height})}function g(e){var o={};if(ne())try{o=e.getBoundingClientRect();var i=a(e,'top'),n=a(e,'left');o.top+=i,o.left+=n,o.bottom+=i,o.right+=n}catch(e){}else o=e.getBoundingClientRect();var r={left:o.left,top:o.top,width:o.right-o.left,height:o.bottom-o.top},p='HTML'===e.nodeName?c():{},s=p.width||e.clientWidth||r.right-r.left,d=p.height||e.clientHeight||r.bottom-r.top,l=e.offsetWidth-s,m=e.offsetHeight-d;if(l||m){var g=t(e);l-=f(g,'x'),m-=f(g,'y'),r.width-=l,r.height-=m}return h(r)}function u(e,o){var i=ne(),r='HTML'===o.nodeName,p=g(e),s=g(o),d=n(e),a=t(o),f=+a.borderTopWidth.split('px')[0],m=+a.borderLeftWidth.split('px')[0],c=h({top:p.top-s.top-f,left:p.left-s.left-m,width:p.width,height:p.height});if(c.marginTop=0,c.marginLeft=0,!i&&r){var u=+a.marginTop.split('px')[0],b=+a.marginLeft.split('px')[0];c.top-=f-u,c.bottom-=f-u,c.left-=m-b,c.right-=m-b,c.marginTop=u,c.marginLeft=b}return(i?o.contains(d):o===d&&'BODY'!==d.nodeName)&&(c=l(c,o)),c}function b(e){var t=window.document.documentElement,o=u(e,t),i=X(t.clientWidth,window.innerWidth||0),n=X(t.clientHeight,window.innerHeight||0),r=a(t),p=a(t,'left'),s={top:r-o.top+o.marginTop,left:p-o.left+o.marginLeft,width:i,height:n};return h(s)}function y(e){var i=e.nodeName;return'BODY'===i||'HTML'===i?!1:'fixed'===t(e,'position')||y(o(e))}function w(e,t,i,r){var p={top:0,left:0},s=d(e,t);if('viewport'===r)p=b(s);else{var a;'scrollParent'===r?(a=n(o(e)),'BODY'===a.nodeName&&(a=window.document.documentElement)):'window'===r?a=window.document.documentElement:a=r;var l=u(a,s);if('HTML'===a.nodeName&&!y(s)){var f=c(),m=f.height,h=f.width;p.top+=l.top-l.marginTop,p.bottom=m+l.top,p.left+=l.left-l.marginLeft,p.right=h+l.left}else p=l}return p.left+=i,p.top+=i,p.right-=i,p.bottom-=i,p}function E(e){var t=e.width,o=e.height;return t*o}function v(e,t,o,i,n){var r=5<arguments.length&&void 0!==arguments[5]?arguments[5]:0;if(-1===e.indexOf('auto'))return e;var p=w(o,i,r,n),s={top:{width:p.width,height:t.top-p.top},right:{width:p.right-t.right,height:p.height},bottom:{width:p.width,height:p.bottom-t.bottom},left:{width:t.left-p.left,height:p.height}},d=Object.keys(s).map(function(e){return de({key:e},s[e],{area:E(s[e])})}).sort(function(e,t){return t.area-e.area}),a=d.filter(function(e){var t=e.width,i=e.height;return t>=o.clientWidth&&i>=o.clientHeight}),l=0<a.length?a[0].key:d[0].key,f=e.split('-')[1];return l+(f?'-'+f:'')}function x(e,t,o){var i=d(t,o);return u(o,i)}function O(e){var t=window.getComputedStyle(e),o=parseFloat(t.marginTop)+parseFloat(t.marginBottom),i=parseFloat(t.marginLeft)+parseFloat(t.marginRight),n={width:e.offsetWidth+i,height:e.offsetHeight+o};return n}function L(e){var t={left:'right',right:'left',bottom:'top',top:'bottom'};return e.replace(/left|right|bottom|top/g,function(e){return t[e]})}function S(e,t,o){o=o.split('-')[0];var i=O(e),n={width:i.width,height:i.height},r=-1!==['right','left'].indexOf(o),p=r?'top':'left',s=r?'left':'top',d=r?'height':'width',a=r?'width':'height';return n[p]=t[p]+t[d]/2-i[d]/2,n[s]=o===s?t[s]-i[a]:t[L(s)],n}function T(e,t){return Array.prototype.find?e.find(t):e.filter(t)[0]}function C(e,t,o){if(Array.prototype.findIndex)return e.findIndex(function(e){return e[t]===o});var i=T(e,function(e){return e[t]===o});return e.indexOf(i)}function N(t,o,i){var n=void 0===i?t:t.slice(0,C(t,'name',i));return n.forEach(function(t){t.function&&console.warn('`modifier.function` is deprecated, use `modifier.fn`!');var i=t.function||t.fn;t.enabled&&e(i)&&(o.offsets.popper=h(o.offsets.popper),o.offsets.reference=h(o.offsets.reference),o=i(o,t))}),o}function k(){if(!this.state.isDestroyed){var e={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};e.offsets.reference=x(this.state,this.popper,this.reference),e.placement=v(this.options.placement,e.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),e.originalPlacement=e.placement,e.offsets.popper=S(this.popper,e.offsets.reference,e.placement),e.offsets.popper.position='absolute',e=N(this.modifiers,e),this.state.isCreated?this.options.onUpdate(e):(this.state.isCreated=!0,this.options.onCreate(e))}}function W(e,t){return e.some(function(e){var o=e.name,i=e.enabled;return i&&o===t})}function B(e){for(var t=[!1,'ms','Webkit','Moz','O'],o=e.charAt(0).toUpperCase()+e.slice(1),n=0;n<t.length-1;n++){var i=t[n],r=i?''+i+o:e;if('undefined'!=typeof window.document.body.style[r])return r}return null}function P(){return this.state.isDestroyed=!0,W(this.modifiers,'applyStyle')&&(this.popper.removeAttribute('x-placement'),this.popper.style.left='',this.popper.style.position='',this.popper.style.top='',this.popper.style[B('transform')]=''),this.disableEventListeners(),this.options.removeOnDestroy&&this.popper.parentNode.removeChild(this.popper),this}function D(e,t,o,i){var r='BODY'===e.nodeName,p=r?window:e;p.addEventListener(t,o,{passive:!0}),r||D(n(p.parentNode),t,o,i),i.push(p)}function H(e,t,o,i){o.updateBound=i,window.addEventListener('resize',o.updateBound,{passive:!0});var r=n(e);return D(r,'scroll',o.updateBound,o.scrollParents),o.scrollElement=r,o.eventsEnabled=!0,o}function A(){this.state.eventsEnabled||(this.state=H(this.reference,this.options,this.state,this.scheduleUpdate))}function M(e,t){return window.removeEventListener('resize',t.updateBound),t.scrollParents.forEach(function(e){e.removeEventListener('scroll',t.updateBound)}),t.updateBound=null,t.scrollParents=[],t.scrollElement=null,t.eventsEnabled=!1,t}function I(){this.state.eventsEnabled&&(window.cancelAnimationFrame(this.scheduleUpdate),this.state=M(this.reference,this.state))}function R(e){return''!==e&&!isNaN(parseFloat(e))&&isFinite(e)}function U(e,t){Object.keys(t).forEach(function(o){var i='';-1!==['width','height','top','right','bottom','left'].indexOf(o)&&R(t[o])&&(i='px'),e.style[o]=t[o]+i})}function Y(e,t){Object.keys(t).forEach(function(o){var i=t[o];!1===i?e.removeAttribute(o):e.setAttribute(o,t[o])})}function F(e,t,o){var i=T(e,function(e){var o=e.name;return o===t}),n=!!i&&e.some(function(e){return e.name===o&&e.enabled&&e.order<i.order});if(!n){var r='`'+t+'`';console.warn('`'+o+'`'+' modifier is required by '+r+' modifier in order to work, be sure to include it before '+r+'!')}return n}function j(e){return'end'===e?'start':'start'===e?'end':e}function K(e){var t=1<arguments.length&&void 0!==arguments[1]&&arguments[1],o=le.indexOf(e),i=le.slice(o+1).concat(le.slice(0,o));return t?i.reverse():i}function q(e,t,o,i){var n=e.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/),r=+n[1],p=n[2];if(!r)return e;if(0===p.indexOf('%')){var s;switch(p){case'%p':s=o;break;case'%':case'%r':default:s=i;}var d=h(s);return d[t]/100*r}if('vh'===p||'vw'===p){var a;return a='vh'===p?X(document.documentElement.clientHeight,window.innerHeight||0):X(document.documentElement.clientWidth,window.innerWidth||0),a/100*r}return r}function G(e,t,o,i){var n=[0,0],r=-1!==['right','left'].indexOf(i),p=e.split(/(\\+|\\-)/).map(function(e){return e.trim()}),s=p.indexOf(T(p,function(e){return-1!==e.search(/,|\\s/)}));p[s]&&-1===p[s].indexOf(',')&&console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');var d=/\\s*,\\s*|\\s+/,a=-1===s?[p]:[p.slice(0,s).concat([p[s].split(d)[0]]),[p[s].split(d)[1]].concat(p.slice(s+1))];return a=a.map(function(e,i){var n=(1===i?!r:r)?'height':'width',p=!1;return e.reduce(function(e,t){return''===e[e.length-1]&&-1!==['+','-'].indexOf(t)?(e[e.length-1]=t,p=!0,e):p?(e[e.length-1]+=t,p=!1,e):e.concat(t)},[]).map(function(e){return q(e,n,t,o)})}),a.forEach(function(e,t){e.forEach(function(o,i){R(o)&&(n[t]+=o*('-'===e[i-1]?-1:1))})}),n}function z(e,t){var o,i=t.offset,n=e.placement,r=e.offsets,p=r.popper,s=r.reference,d=n.split('-')[0];return o=R(+i)?[+i,0]:G(i,p,s,d),'left'===d?(p.top+=o[0],p.left-=o[1]):'right'===d?(p.top+=o[0],p.left+=o[1]):'top'===d?(p.left+=o[0],p.top-=o[1]):'bottom'===d&&(p.left+=o[0],p.top+=o[1]),e.popper=p,e}for(var V=Math.min,_=Math.floor,X=Math.max,Q=['native code','[object MutationObserverConstructor]'],J=function(e){return Q.some(function(t){return-1<(e||'').toString().indexOf(t)})},Z='undefined'!=typeof window,$=['Edge','Trident','Firefox'],ee=0,te=0;te<$.length;te+=1)if(Z&&0<=navigator.userAgent.indexOf($[te])){ee=1;break}var i,oe=Z&&J(window.MutationObserver),ie=oe?function(e){var t=!1,o=0,i=document.createElement('span'),n=new MutationObserver(function(){e(),t=!1});return n.observe(i,{attributes:!0}),function(){t||(t=!0,i.setAttribute('x-index',o),++o)}}:function(e){var t=!1;return function(){t||(t=!0,setTimeout(function(){t=!1,e()},ee))}},ne=function(){return void 0==i&&(i=-1!==navigator.appVersion.indexOf('MSIE 10')),i},re=function(e,t){if(!(e instanceof t))throw new TypeError('Cannot call a class as a function')},pe=function(){function e(e,t){for(var o,n=0;n<t.length;n++)o=t[n],o.enumerable=o.enumerable||!1,o.configurable=!0,'value'in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}return function(t,o,i){return o&&e(t.prototype,o),i&&e(t,i),t}}(),se=function(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e},de=Object.assign||function(e){for(var t,o=1;o<arguments.length;o++)for(var i in t=arguments[o],t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},ae=['auto-start','auto','auto-end','top-start','top','top-end','right-start','right','right-end','bottom-end','bottom','bottom-start','left-end','left','left-start'],le=ae.slice(3),fe={FLIP:'flip',CLOCKWISE:'clockwise',COUNTERCLOCKWISE:'counterclockwise'},me=function(){function t(o,i){var n=this,r=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};re(this,t),this.scheduleUpdate=function(){return requestAnimationFrame(n.update)},this.update=ie(this.update.bind(this)),this.options=de({},t.Defaults,r),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=o.jquery?o[0]:o,this.popper=i.jquery?i[0]:i,this.options.modifiers={},Object.keys(de({},t.Defaults.modifiers,r.modifiers)).forEach(function(e){n.options.modifiers[e]=de({},t.Defaults.modifiers[e]||{},r.modifiers?r.modifiers[e]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(e){return de({name:e},n.options.modifiers[e])}).sort(function(e,t){return e.order-t.order}),this.modifiers.forEach(function(t){t.enabled&&e(t.onLoad)&&t.onLoad(n.reference,n.popper,n.options,t,n.state)}),this.update();var p=this.options.eventsEnabled;p&&this.enableEventListeners(),this.state.eventsEnabled=p}return pe(t,[{key:'update',value:function(){return k.call(this)}},{key:'destroy',value:function(){return P.call(this)}},{key:'enableEventListeners',value:function(){return A.call(this)}},{key:'disableEventListeners',value:function(){return I.call(this)}}]),t}();return me.Utils=('undefined'==typeof window?global:window).PopperUtils,me.placements=ae,me.Defaults={placement:'bottom',eventsEnabled:!0,removeOnDestroy:!1,onCreate:function(){},onUpdate:function(){},modifiers:{shift:{order:100,enabled:!0,fn:function(e){var t=e.placement,o=t.split('-')[0],i=t.split('-')[1];if(i){var n=e.offsets,r=n.reference,p=n.popper,s=-1!==['bottom','top'].indexOf(o),d=s?'left':'top',a=s?'width':'height',l={start:se({},d,r[d]),end:se({},d,r[d]+r[a]-p[a])};e.offsets.popper=de({},p,l[i])}return e}},offset:{order:200,enabled:!0,fn:z,offset:0},preventOverflow:{order:300,enabled:!0,fn:function(e,t){var o=t.boundariesElement||r(e.instance.popper);e.instance.reference===o&&(o=r(o));var i=w(e.instance.popper,e.instance.reference,t.padding,o);t.boundaries=i;var n=t.priority,p=e.offsets.popper,s={primary:function(e){var o=p[e];return p[e]<i[e]&&!t.escapeWithReference&&(o=X(p[e],i[e])),se({},e,o)},secondary:function(e){var o='right'===e?'left':'top',n=p[o];return p[e]>i[e]&&!t.escapeWithReference&&(n=V(p[o],i[e]-('right'===e?p.width:p.height))),se({},o,n)}};return n.forEach(function(e){var t=-1===['left','top'].indexOf(e)?'secondary':'primary';p=de({},p,s[t](e))}),e.offsets.popper=p,e},priority:['left','right','top','bottom'],padding:5,boundariesElement:'scrollParent'},keepTogether:{order:400,enabled:!0,fn:function(e){var t=e.offsets,o=t.popper,i=t.reference,n=e.placement.split('-')[0],r=_,p=-1!==['top','bottom'].indexOf(n),s=p?'right':'bottom',d=p?'left':'top',a=p?'width':'height';return o[s]<r(i[d])&&(e.offsets.popper[d]=r(i[d])-o[a]),o[d]>r(i[s])&&(e.offsets.popper[d]=r(i[s])),e}},arrow:{order:500,enabled:!0,fn:function(e,o){if(!F(e.instance.modifiers,'arrow','keepTogether'))return e;var i=o.element;if('string'==typeof i){if(i=e.instance.popper.querySelector(i),!i)return e;}else if(!e.instance.popper.contains(i))return console.warn('WARNING: `arrow.element` must be child of its popper element!'),e;var n=e.placement.split('-')[0],r=e.offsets,p=r.popper,s=r.reference,d=-1!==['left','right'].indexOf(n),a=d?'height':'width',l=d?'Top':'Left',f=l.toLowerCase(),m=d?'left':'top',c=d?'bottom':'right',g=O(i)[a];s[c]-g<p[f]&&(e.offsets.popper[f]-=p[f]-(s[c]-g)),s[f]+g>p[c]&&(e.offsets.popper[f]+=s[f]+g-p[c]);var u=s[f]+s[a]/2-g/2,b=t(e.instance.popper,'margin'+l).replace('px',''),y=u-h(e.offsets.popper)[f]-b;return y=X(V(p[a]-g,y),0),e.arrowElement=i,e.offsets.arrow={},e.offsets.arrow[f]=Math.round(y),e.offsets.arrow[m]='',e},element:'[x-arrow]'},flip:{order:600,enabled:!0,fn:function(e,t){if(W(e.instance.modifiers,'inner'))return e;if(e.flipped&&e.placement===e.originalPlacement)return e;var o=w(e.instance.popper,e.instance.reference,t.padding,t.boundariesElement),i=e.placement.split('-')[0],n=L(i),r=e.placement.split('-')[1]||'',p=[];switch(t.behavior){case fe.FLIP:p=[i,n];break;case fe.CLOCKWISE:p=K(i);break;case fe.COUNTERCLOCKWISE:p=K(i,!0);break;default:p=t.behavior;}return p.forEach(function(s,d){if(i!==s||p.length===d+1)return e;i=e.placement.split('-')[0],n=L(i);var a=e.offsets.popper,l=e.offsets.reference,f=_,m='left'===i&&f(a.right)>f(l.left)||'right'===i&&f(a.left)<f(l.right)||'top'===i&&f(a.bottom)>f(l.top)||'bottom'===i&&f(a.top)<f(l.bottom),c=f(a.left)<f(o.left),h=f(a.right)>f(o.right),g=f(a.top)<f(o.top),u=f(a.bottom)>f(o.bottom),b='left'===i&&c||'right'===i&&h||'top'===i&&g||'bottom'===i&&u,y=-1!==['top','bottom'].indexOf(i),w=!!t.flipVariations&&(y&&'start'===r&&c||y&&'end'===r&&h||!y&&'start'===r&&g||!y&&'end'===r&&u);(m||b||w)&&(e.flipped=!0,(m||b)&&(i=p[d+1]),w&&(r=j(r)),e.placement=i+(r?'-'+r:''),e.offsets.popper=de({},e.offsets.popper,S(e.instance.popper,e.offsets.reference,e.placement)),e=N(e.instance.modifiers,e,'flip'))}),e},behavior:'flip',padding:5,boundariesElement:'viewport'},inner:{order:700,enabled:!1,fn:function(e){var t=e.placement,o=t.split('-')[0],i=e.offsets,n=i.popper,r=i.reference,p=-1!==['left','right'].indexOf(o),s=-1===['top','left'].indexOf(o);return n[p?'left':'top']=r[o]-(s?n[p?'width':'height']:0),e.placement=L(t),e.offsets.popper=h(n),e}},hide:{order:800,enabled:!0,fn:function(e){if(!F(e.instance.modifiers,'hide','preventOverflow'))return e;var t=e.offsets.reference,o=T(e.instance.modifiers,function(e){return'preventOverflow'===e.name}).boundaries;if(t.bottom<o.top||t.left>o.right||t.top>o.bottom||t.right<o.left){if(!0===e.hide)return e;e.hide=!0,e.attributes['x-out-of-boundaries']=''}else{if(!1===e.hide)return e;e.hide=!1,e.attributes['x-out-of-boundaries']=!1}return e}},computeStyle:{order:850,enabled:!0,fn:function(e,t){var o=t.x,i=t.y,n=e.offsets.popper,p=T(e.instance.modifiers,function(e){return'applyStyle'===e.name}).gpuAcceleration;void 0!==p&&console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');var s,d,a=void 0===p?t.gpuAcceleration:p,l=r(e.instance.popper),f=g(l),m={position:n.position},c={left:_(n.left),top:_(n.top),bottom:_(n.bottom),right:_(n.right)},h='bottom'===o?'top':'bottom',u='right'===i?'left':'right',b=B('transform');if(d='bottom'==h?-f.height+c.bottom:c.top,s='right'==u?-f.width+c.right:c.left,a&&b)m[b]='translate3d('+s+'px, '+d+'px, 0)',m[h]=0,m[u]=0,m.willChange='transform';else{var y='bottom'==h?-1:1,w='right'==u?-1:1;m[h]=d*y,m[u]=s*w,m.willChange=h+', '+u}var E={\"x-placement\":e.placement};return e.attributes=de({},E,e.attributes),e.styles=de({},m,e.styles),e.arrowStyles=de({},e.offsets.arrow,e.arrowStyles),e},gpuAcceleration:!0,x:'bottom',y:'right'},applyStyle:{order:900,enabled:!0,fn:function(e){return U(e.instance.popper,e.styles),Y(e.instance.popper,e.attributes),e.arrowElement&&Object.keys(e.arrowStyles).length&&U(e.arrowElement,e.arrowStyles),e},onLoad:function(e,t,o,i,n){var r=x(n,t,e),p=v(o.placement,r,t,e,o.modifiers.flip.boundariesElement,o.modifiers.flip.padding);return t.setAttribute('x-placement',p),U(t,{position:'absolute'}),o},gpuAcceleration:void 0}}},me});\n//# sourceMappingURL=popper.min.js.map"
  },
  {
    "path": "public/profile/js/stellar.js",
    "content": "/*! Stellar.js v0.6.2 | Copyright 2013, Mark Dalgleish | http://markdalgleish.com/projects/stellar.js | http://markdalgleish.mit-license.org */\n(function(e,t,n,r){function d(t,n){this.element=t,this.options=e.extend({},s,n),this._defaults=s,this._name=i,this.init()}var i=\"stellar\",s={scrollProperty:\"scroll\",positionProperty:\"position\",horizontalScrolling:!0,verticalScrolling:!0,horizontalOffset:0,verticalOffset:0,responsive:!1,parallaxBackgrounds:!0,parallaxElements:!0,hideDistantElements:!0,hideElement:function(e){e.hide()},showElement:function(e){e.show()}},o={scroll:{getLeft:function(e){return e.scrollLeft()},setLeft:function(e,t){e.scrollLeft(t)},getTop:function(e){return e.scrollTop()},setTop:function(e,t){e.scrollTop(t)}},position:{getLeft:function(e){return parseInt(e.css(\"left\"),10)*-1},getTop:function(e){return parseInt(e.css(\"top\"),10)*-1}},margin:{getLeft:function(e){return parseInt(e.css(\"margin-left\"),10)*-1},getTop:function(e){return parseInt(e.css(\"margin-top\"),10)*-1}},transform:{getLeft:function(e){var t=getComputedStyle(e[0])[f];return t!==\"none\"?parseInt(t.match(/(-?[0-9]+)/g)[4],10)*-1:0},getTop:function(e){var t=getComputedStyle(e[0])[f];return t!==\"none\"?parseInt(t.match(/(-?[0-9]+)/g)[5],10)*-1:0}}},u={position:{setLeft:function(e,t){e.css(\"left\",t)},setTop:function(e,t){e.css(\"top\",t)}},transform:{setPosition:function(e,t,n,r,i){e[0].style[f]=\"translate3d(\"+(t-n)+\"px, \"+(r-i)+\"px, 0)\"}}},a=function(){var t=/^(Moz|Webkit|Khtml|O|ms|Icab)(?=[A-Z])/,n=e(\"script\")[0].style,r=\"\",i;for(i in n)if(t.test(i)){r=i.match(t)[0];break}return\"WebkitOpacity\"in n&&(r=\"Webkit\"),\"KhtmlOpacity\"in n&&(r=\"Khtml\"),function(e){return r+(r.length>0?e.charAt(0).toUpperCase()+e.slice(1):e)}}(),f=a(\"transform\"),l=e(\"<div />\",{style:\"background:#fff\"}).css(\"background-position-x\")!==r,c=l?function(e,t,n){e.css({\"background-position-x\":t,\"background-position-y\":n})}:function(e,t,n){e.css(\"background-position\",t+\" \"+n)},h=l?function(e){return[e.css(\"background-position-x\"),e.css(\"background-position-y\")]}:function(e){return e.css(\"background-position\").split(\" \")},p=t.requestAnimationFrame||t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||t.oRequestAnimationFrame||t.msRequestAnimationFrame||function(e){setTimeout(e,1e3/60)};d.prototype={init:function(){this.options.name=i+\"_\"+Math.floor(Math.random()*1e9),this._defineElements(),this._defineGetters(),this._defineSetters(),this._handleWindowLoadAndResize(),this._detectViewport(),this.refresh({firstLoad:!0}),this.options.scrollProperty===\"scroll\"?this._handleScrollEvent():this._startAnimationLoop()},_defineElements:function(){this.element===n.body&&(this.element=t),this.$scrollElement=e(this.element),this.$element=this.element===t?e(\"body\"):this.$scrollElement,this.$viewportElement=this.options.viewportElement!==r?e(this.options.viewportElement):this.$scrollElement[0]===t||this.options.scrollProperty===\"scroll\"?this.$scrollElement:this.$scrollElement.parent()},_defineGetters:function(){var e=this,t=o[e.options.scrollProperty];this._getScrollLeft=function(){return t.getLeft(e.$scrollElement)},this._getScrollTop=function(){return t.getTop(e.$scrollElement)}},_defineSetters:function(){var t=this,n=o[t.options.scrollProperty],r=u[t.options.positionProperty],i=n.setLeft,s=n.setTop;this._setScrollLeft=typeof i==\"function\"?function(e){i(t.$scrollElement,e)}:e.noop,this._setScrollTop=typeof s==\"function\"?function(e){s(t.$scrollElement,e)}:e.noop,this._setPosition=r.setPosition||function(e,n,i,s,o){t.options.horizontalScrolling&&r.setLeft(e,n,i),t.options.verticalScrolling&&r.setTop(e,s,o)}},_handleWindowLoadAndResize:function(){var n=this,r=e(t);n.options.responsive&&r.bind(\"load.\"+this.name,function(){n.refresh()}),r.bind(\"resize.\"+this.name,function(){n._detectViewport(),n.options.responsive&&n.refresh()})},refresh:function(n){var r=this,i=r._getScrollLeft(),s=r._getScrollTop();(!n||!n.firstLoad)&&this._reset(),this._setScrollLeft(0),this._setScrollTop(0),this._setOffsets(),this._findParticles(),this._findBackgrounds(),n&&n.firstLoad&&/WebKit/.test(navigator.userAgent)&&e(t).load(function(){var e=r._getScrollLeft(),t=r._getScrollTop();r._setScrollLeft(e+1),r._setScrollTop(t+1),r._setScrollLeft(e),r._setScrollTop(t)}),this._setScrollLeft(i),this._setScrollTop(s)},_detectViewport:function(){var e=this.$viewportElement.offset(),t=e!==null&&e!==r;this.viewportWidth=this.$viewportElement.width(),this.viewportHeight=this.$viewportElement.height(),this.viewportOffsetTop=t?e.top:0,this.viewportOffsetLeft=t?e.left:0},_findParticles:function(){var t=this,n=this._getScrollLeft(),i=this._getScrollTop();if(this.particles!==r)for(var s=this.particles.length-1;s>=0;s--)this.particles[s].$element.data(\"stellar-elementIsActive\",r);this.particles=[];if(!this.options.parallaxElements)return;this.$element.find(\"[data-stellar-ratio]\").each(function(n){var i=e(this),s,o,u,a,f,l,c,h,p,d=0,v=0,m=0,g=0;if(!i.data(\"stellar-elementIsActive\"))i.data(\"stellar-elementIsActive\",this);else if(i.data(\"stellar-elementIsActive\")!==this)return;t.options.showElement(i),i.data(\"stellar-startingLeft\")?(i.css(\"left\",i.data(\"stellar-startingLeft\")),i.css(\"top\",i.data(\"stellar-startingTop\"))):(i.data(\"stellar-startingLeft\",i.css(\"left\")),i.data(\"stellar-startingTop\",i.css(\"top\"))),u=i.position().left,a=i.position().top,f=i.css(\"margin-left\")===\"auto\"?0:parseInt(i.css(\"margin-left\"),10),l=i.css(\"margin-top\")===\"auto\"?0:parseInt(i.css(\"margin-top\"),10),h=i.offset().left-f,p=i.offset().top-l,i.parents().each(function(){var t=e(this);if(t.data(\"stellar-offset-parent\")===!0)return d=m,v=g,c=t,!1;m+=t.position().left,g+=t.position().top}),s=i.data(\"stellar-horizontal-offset\")!==r?i.data(\"stellar-horizontal-offset\"):c!==r&&c.data(\"stellar-horizontal-offset\")!==r?c.data(\"stellar-horizontal-offset\"):t.horizontalOffset,o=i.data(\"stellar-vertical-offset\")!==r?i.data(\"stellar-vertical-offset\"):c!==r&&c.data(\"stellar-vertical-offset\")!==r?c.data(\"stellar-vertical-offset\"):t.verticalOffset,t.particles.push({$element:i,$offsetParent:c,isFixed:i.css(\"position\")===\"fixed\",horizontalOffset:s,verticalOffset:o,startingPositionLeft:u,startingPositionTop:a,startingOffsetLeft:h,startingOffsetTop:p,parentOffsetLeft:d,parentOffsetTop:v,stellarRatio:i.data(\"stellar-ratio\")!==r?i.data(\"stellar-ratio\"):1,width:i.outerWidth(!0),height:i.outerHeight(!0),isHidden:!1})})},_findBackgrounds:function(){var t=this,n=this._getScrollLeft(),i=this._getScrollTop(),s;this.backgrounds=[];if(!this.options.parallaxBackgrounds)return;s=this.$element.find(\"[data-stellar-background-ratio]\"),this.$element.data(\"stellar-background-ratio\")&&(s=s.add(this.$element)),s.each(function(){var s=e(this),o=h(s),u,a,f,l,p,d,v,m,g,y=0,b=0,w=0,E=0;if(!s.data(\"stellar-backgroundIsActive\"))s.data(\"stellar-backgroundIsActive\",this);else if(s.data(\"stellar-backgroundIsActive\")!==this)return;s.data(\"stellar-backgroundStartingLeft\")?c(s,s.data(\"stellar-backgroundStartingLeft\"),s.data(\"stellar-backgroundStartingTop\")):(s.data(\"stellar-backgroundStartingLeft\",o[0]),s.data(\"stellar-backgroundStartingTop\",o[1])),p=s.css(\"margin-left\")===\"auto\"?0:parseInt(s.css(\"margin-left\"),10),d=s.css(\"margin-top\")===\"auto\"?0:parseInt(s.css(\"margin-top\"),10),v=s.offset().left-p-n,m=s.offset().top-d-i,s.parents().each(function(){var t=e(this);if(t.data(\"stellar-offset-parent\")===!0)return y=w,b=E,g=t,!1;w+=t.position().left,E+=t.position().top}),u=s.data(\"stellar-horizontal-offset\")!==r?s.data(\"stellar-horizontal-offset\"):g!==r&&g.data(\"stellar-horizontal-offset\")!==r?g.data(\"stellar-horizontal-offset\"):t.horizontalOffset,a=s.data(\"stellar-vertical-offset\")!==r?s.data(\"stellar-vertical-offset\"):g!==r&&g.data(\"stellar-vertical-offset\")!==r?g.data(\"stellar-vertical-offset\"):t.verticalOffset,t.backgrounds.push({$element:s,$offsetParent:g,isFixed:s.css(\"background-attachment\")===\"fixed\",horizontalOffset:u,verticalOffset:a,startingValueLeft:o[0],startingValueTop:o[1],startingBackgroundPositionLeft:isNaN(parseInt(o[0],10))?0:parseInt(o[0],10),startingBackgroundPositionTop:isNaN(parseInt(o[1],10))?0:parseInt(o[1],10),startingPositionLeft:s.position().left,startingPositionTop:s.position().top,startingOffsetLeft:v,startingOffsetTop:m,parentOffsetLeft:y,parentOffsetTop:b,stellarRatio:s.data(\"stellar-background-ratio\")===r?1:s.data(\"stellar-background-ratio\")})})},_reset:function(){var e,t,n,r,i;for(i=this.particles.length-1;i>=0;i--)e=this.particles[i],t=e.$element.data(\"stellar-startingLeft\"),n=e.$element.data(\"stellar-startingTop\"),this._setPosition(e.$element,t,t,n,n),this.options.showElement(e.$element),e.$element.data(\"stellar-startingLeft\",null).data(\"stellar-elementIsActive\",null).data(\"stellar-backgroundIsActive\",null);for(i=this.backgrounds.length-1;i>=0;i--)r=this.backgrounds[i],r.$element.data(\"stellar-backgroundStartingLeft\",null).data(\"stellar-backgroundStartingTop\",null),c(r.$element,r.startingValueLeft,r.startingValueTop)},destroy:function(){this._reset(),this.$scrollElement.unbind(\"resize.\"+this.name).unbind(\"scroll.\"+this.name),this._animationLoop=e.noop,e(t).unbind(\"load.\"+this.name).unbind(\"resize.\"+this.name)},_setOffsets:function(){var n=this,r=e(t);r.unbind(\"resize.horizontal-\"+this.name).unbind(\"resize.vertical-\"+this.name),typeof this.options.horizontalOffset==\"function\"?(this.horizontalOffset=this.options.horizontalOffset(),r.bind(\"resize.horizontal-\"+this.name,function(){n.horizontalOffset=n.options.horizontalOffset()})):this.horizontalOffset=this.options.horizontalOffset,typeof this.options.verticalOffset==\"function\"?(this.verticalOffset=this.options.verticalOffset(),r.bind(\"resize.vertical-\"+this.name,function(){n.verticalOffset=n.options.verticalOffset()})):this.verticalOffset=this.options.verticalOffset},_repositionElements:function(){var e=this._getScrollLeft(),t=this._getScrollTop(),n,r,i,s,o,u,a,f=!0,l=!0,h,p,d,v,m;if(this.currentScrollLeft===e&&this.currentScrollTop===t&&this.currentWidth===this.viewportWidth&&this.currentHeight===this.viewportHeight)return;this.currentScrollLeft=e,this.currentScrollTop=t,this.currentWidth=this.viewportWidth,this.currentHeight=this.viewportHeight;for(m=this.particles.length-1;m>=0;m--)i=this.particles[m],s=i.isFixed?1:0,this.options.horizontalScrolling?(h=(e+i.horizontalOffset+this.viewportOffsetLeft+i.startingPositionLeft-i.startingOffsetLeft+i.parentOffsetLeft)*-(i.stellarRatio+s-1)+i.startingPositionLeft,d=h-i.startingPositionLeft+i.startingOffsetLeft):(h=i.startingPositionLeft,d=i.startingOffsetLeft),this.options.verticalScrolling?(p=(t+i.verticalOffset+this.viewportOffsetTop+i.startingPositionTop-i.startingOffsetTop+i.parentOffsetTop)*-(i.stellarRatio+s-1)+i.startingPositionTop,v=p-i.startingPositionTop+i.startingOffsetTop):(p=i.startingPositionTop,v=i.startingOffsetTop),this.options.hideDistantElements&&(l=!this.options.horizontalScrolling||d+i.width>(i.isFixed?0:e)&&d<(i.isFixed?0:e)+this.viewportWidth+this.viewportOffsetLeft,f=!this.options.verticalScrolling||v+i.height>(i.isFixed?0:t)&&v<(i.isFixed?0:t)+this.viewportHeight+this.viewportOffsetTop),l&&f?(i.isHidden&&(this.options.showElement(i.$element),i.isHidden=!1),this._setPosition(i.$element,h,i.startingPositionLeft,p,i.startingPositionTop)):i.isHidden||(this.options.hideElement(i.$element),i.isHidden=!0);for(m=this.backgrounds.length-1;m>=0;m--)o=this.backgrounds[m],s=o.isFixed?0:1,u=this.options.horizontalScrolling?(e+o.horizontalOffset-this.viewportOffsetLeft-o.startingOffsetLeft+o.parentOffsetLeft-o.startingBackgroundPositionLeft)*(s-o.stellarRatio)+\"px\":o.startingValueLeft,a=this.options.verticalScrolling?(t+o.verticalOffset-this.viewportOffsetTop-o.startingOffsetTop+o.parentOffsetTop-o.startingBackgroundPositionTop)*(s-o.stellarRatio)+\"px\":o.startingValueTop,c(o.$element,u,a)},_handleScrollEvent:function(){var e=this,t=!1,n=function(){e._repositionElements(),t=!1},r=function(){t||(p(n),t=!0)};this.$scrollElement.bind(\"scroll.\"+this.name,r),r()},_startAnimationLoop:function(){var e=this;this._animationLoop=function(){p(e._animationLoop),e._repositionElements()},this._animationLoop()}},e.fn[i]=function(t){var n=arguments;if(t===r||typeof t==\"object\")return this.each(function(){e.data(this,\"plugin_\"+i)||e.data(this,\"plugin_\"+i,new d(this,t))});if(typeof t==\"string\"&&t[0]!==\"_\"&&t!==\"init\")return this.each(function(){var r=e.data(this,\"plugin_\"+i);r instanceof d&&typeof r[t]==\"function\"&&r[t].apply(r,Array.prototype.slice.call(n,1)),t===\"destroy\"&&e.data(this,\"plugin_\"+i,null)})},e[i]=function(n){var r=e(t);return r.stellar.apply(r,Array.prototype.slice.call(arguments,0))},e[i].scrollProperty=o,e[i].positionProperty=u,t.Stellar=d})(jQuery,this,document);\n\n\n/**!\n * @author odahcam\n * @see The boilerplate used here was https://github.com/odahcam/jQueryPlugin-Boilerplate\n * @external https://github.com/odahcam/jquery.parallax/\n */\n\n/**\n * @param {object} $\n * @param {object} window\n * @param {object} document\n * @param {undefined} undefined\n * @return\n */\n(function(d,f,g,b){if(!d){console.error(\"jQuery nÃ£o encontrado, seu plugin jQuery nÃ£o irÃ¡ funcionar.\");return false}(function(){var k=0,l=[\"ms\",\"moz\",\"webkit\",\"o\"];for(var j=0;j<l.length&&!f.requestAnimationFrame;++j){f.requestAnimationFrame=f[l[j]+\"RequestAnimationFrame\"];f.cancelAnimationFrame=f[l[j]+\"CancelAnimationFrame\"]||f[l[j]+\"CancelRequestAnimationFrame\"]}if(!f.requestAnimationFrame){f.requestAnimationFrame=function(q,n){var m=new Date().getTime();var o=Math.max(0,16-(m-k));var p=f.setTimeout(function(){q(m+o)},o);k=m+o;return p}}if(!f.cancelAnimationFrame){f.cancelAnimationFrame=function(m){clearTimeout(m)}}})();var e=\"parallax\",c={on:\"scroll\",listenTo:f,sceneMode:false},a=d(f),i=0;function h(k,j){this._name=e;this._instance_id=++i;this.el=k;this.$el=d(k);this.settings=d.extend(false,{},c,j,this.$el.data());this.$triggerOrigin=d(this.settings.listenTo);this.init()}d.extend(h.prototype,{init:function(){var j=this;this.$triggerOrigin.on(j.settings.on+\".\"+j._name,function(){j.parallaxTranslate()});j.parallaxTranslate()},parallaxTranslate:function(){var j=this;if(j.inScreen()){f.requestAnimationFrame(function(){var k=a.scrollTop()-j.$el.offset().top;j.$el.css(\"transform\",\"translateY(\"+k/2+\"px)\")})}console.groupEnd()},destroy:function(){this.$el.removeData();d(this.settings.listenTo).off(\".\"+e)},somePublicMethod:function(k,j){privateMethod.call(this)},inScreen:function(l){var o;if(typeof l!==\"boolean\"&&l!==b){o=d(l);l=arguments[1]||false}else{o=this.$el;l=l||false}var k=a.scrollTop(),n=k+a.height(),j=o.offset().top,m=j+o.height();if(l===true){return k<=j&&n>=m}return !(k>m||n<j)}});d.fn[e]=function(k){var j=arguments;if(k===b||typeof k===\"object\"){return this.each(function(){if(!d.data(this,\"plugin_\"+e)){d.data(this,\"plugin_\"+e,new h(this,k))}})}else{if(typeof k===\"string\"&&k!==\"init\"){return this.each(function(){var l=d.data(this,\"plugin_\"+e);if(l instanceof h&&typeof l[k]===\"function\"){l[k].apply(l,Array.prototype.slice.call(j,1))}})}}}})(window.jQuery||false,window,document);"
  },
  {
    "path": "public/profile/js/theme.js",
    "content": ";(function($){\n    \"use strict\"\n\t\n\t\n\tvar nav_offset_top = $('header').height() + 50; \n    /*-------------------------------------------------------------------------------\n\t  Navbar \n\t-------------------------------------------------------------------------------*/\n\n\t//* Navbar Fixed  \n    function navbarFixed(){\n        if ( $('.header_area').length ){ \n            $(window).scroll(function() {\n                var scroll = $(window).scrollTop();   \n                if (scroll >= nav_offset_top ) {\n                    $(\".header_area\").addClass(\"navbar_fixed\");\n                } else {\n                    $(\".header_area\").removeClass(\"navbar_fixed\");\n                }\n            });\n        };\n    };\n    navbarFixed();\n\t\n\t\n\t/*----------------------------------------------------*/\n    /*  Parallax Effect js\n    /*----------------------------------------------------*/\n\tfunction parallaxEffect() {\n    \t$('.bg-parallax').parallax();\n\t}\n\tparallaxEffect();\n\t\n\t\n//\t$('.courses_area').imagesLoaded(function(){\n//        $('.courses_inner').isotope({ \n//            layoutMode: 'masonry',\n//\t\t\tpercentPosition: true,\n//\t\t\tmasonry: {\n//\t\t\t\tcolumnWidth: 1,\n//\t\t\t}\n//        })\n//    });\n\t\n\t\n\t\n\t\n\t/*----------------------------------------------------*/\n    /*  portfolio_isotope\n    /*----------------------------------------------------*/\n   \n//\t$('.courses_inner').imagesLoaded(function(){\n//        $('.courses_inner').isotope({ \n//            layoutMode: 'masonry',\n//            percentPosition:true,\n//            masonry: {\n//                columnWidth: 1,\n//            }            \n//        })\n//    });\n\t\n\t\n\t/*----------------------------------------------------*/\n    /*  Clients Slider\n    /*----------------------------------------------------*/\n//    function clients_slider(){\n//        if ( $('.clients_slider').length ){\n//            $('.clients_slider').owlCarousel({\n//                loop:true,\n//                margin: 30,\n//                items: 5,\n//                nav: false,\n//                autoplay: false,\n//                smartSpeed: 1500,\n//                dots:false, \n//                responsiveClass: true,\n//                responsive: {\n//                    0: {\n//                        items: 1,\n//                    },\n//                    400: {\n//                        items: 2,\n//                    },\n//                    575: {\n//                        items: 3,\n//                    },\n//                    768: {\n//                        items: 4,\n//                    },\n//                    992: {\n//                        items: 5,\n//                    }\n//                }\n//            })\n//        }\n//    }\n//    clients_slider();\n\t/*----------------------------------------------------*/\n    /*  MailChimp Slider\n    /*----------------------------------------------------*/\n    function mailChimp(){\n        $('#mc_embed_signup').find('form').ajaxChimp();\n    }\n    mailChimp();\n\t\n\t$('select').niceSelect();\n\t\n\t/*----------------------------------------------------*/\n    /*  Simple LightBox js\n    /*----------------------------------------------------*/\n    $('.imageGallery1 .light').simpleLightbox();\n\t\n\t$('.counter').counterUp({\n\t\tdelay: 10,\n\t\ttime: 1000\n\t});\n\t\n\t\n\t$(\".skill_main\").each(function() {\n        $(this).waypoint(function() {\n            var progressBar = $(\".progress-bar\");\n            progressBar.each(function(indx){\n                $(this).css(\"width\", $(this).attr(\"aria-valuenow\") + \"%\")\n            })\n        }, {\n            triggerOnce: true,\n            offset: 'bottom-in-view'\n\n        });\n    });\n\t\n\t/*----------------------------------------------------*/\n    /*  Isotope Fillter js\n    /*----------------------------------------------------*/\n\tfunction gallery_isotope(){\n        if ( $('.gallery_f_inner').length ){\n            // Activate isotope in container\n\t\t\t$(\".gallery_f_inner\").imagesLoaded( function() {\n                $(\".gallery_f_inner\").isotope({\n                    layoutMode: 'fitRows',\n                    animationOptions: {\n                        duration: 750,\n                        easing: 'linear'\n                    }\n                }); \n            });\n\t\t\t\n            // Add isotope click function\n            $(\".gallery_filter li\").on('click',function(){\n                $(\".gallery_filter li\").removeClass(\"active\");\n                $(this).addClass(\"active\");\n\n                var selector = $(this).attr(\"data-filter\");\n                $(\".gallery_f_inner\").isotope({\n                    filter: selector,\n                    animationOptions: {\n                        duration: 450,\n                        easing: \"linear\",\n                        queue: false,\n                    }\n                });\n                return false;\n            });\n        }\n    }\n    gallery_isotope();\n\t\n\t/*----------------------------------------------------*/\n    /*  Testimonials Slider\n    /*----------------------------------------------------*/\n    function testimonials_slider(){\n        if ( $('.testi_slider').length ){\n            $('.testi_slider').owlCarousel({\n                loop:true,\n                margin: 30,\n                items: 3,\n                nav: false,\n                autoplay: true,\n                smartSpeed: 1500,\n                dots:true, \n                responsiveClass: true,\n                responsive: {\n                    0: {\n                        items: 1,\n                    },\n                    768: {\n                        items: 3,\n                    },\n                }\n            })\n        }\n    }\n    testimonials_slider();\n\t\n\t$(document).ready(function() {\n\t\t$('.popup-youtube, .popup-vimeo, .popup-gmaps').magnificPopup({\n\t\t\tdisableOn: 700,\n\t\t\ttype: 'iframe',\n\t\t\tmainClass: 'mfp-fade',\n\t\t\tremovalDelay: 160,\n\t\t\tpreloader: false,\n\n\t\t\tfixedContentPos: false\n\t\t});\n\t}); \n\t\n\t/*----------------------------------------------------*/\n    /*  Google map js\n    /*----------------------------------------------------*/\n     \n    if ( $('#mapBox').length ){\n        var $lat = $('#mapBox').data('lat');\n        var $lon = $('#mapBox').data('lon');\n        var $zoom = $('#mapBox').data('zoom');\n        var $marker = $('#mapBox').data('marker');\n        var $info = $('#mapBox').data('info');\n        var $markerLat = $('#mapBox').data('mlat');\n        var $markerLon = $('#mapBox').data('mlon');\n        var map = new GMaps({\n        el: '#mapBox',\n        lat: $lat,\n        lng: $lon,\n        scrollwheel: false,\n        scaleControl: true,\n        streetViewControl: false,\n        panControl: true,\n        disableDoubleClickZoom: true,\n        mapTypeControl: false,\n        zoom: $zoom,\n            styles: [\n                {\n                    \"featureType\": \"water\",\n                    \"elementType\": \"geometry.fill\",\n                    \"stylers\": [\n                        {\n                            \"color\": \"#dcdfe6\"\n                        }\n                    ]\n                },\n                {\n                    \"featureType\": \"transit\",\n                    \"stylers\": [\n                        {\n                            \"color\": \"#808080\"\n                        },\n                        {\n                            \"visibility\": \"off\"\n                        }\n                    ]\n                },\n                {\n                    \"featureType\": \"road.highway\",\n                    \"elementType\": \"geometry.stroke\",\n                    \"stylers\": [\n                        {\n                            \"visibility\": \"on\"\n                        },\n                        {\n                            \"color\": \"#dcdfe6\"\n                        }\n                    ]\n                },\n                {\n                    \"featureType\": \"road.highway\",\n                    \"elementType\": \"geometry.fill\",\n                    \"stylers\": [\n                        {\n                            \"color\": \"#ffffff\"\n                        }\n                    ]\n                },\n                {\n                    \"featureType\": \"road.local\",\n                    \"elementType\": \"geometry.fill\",\n                    \"stylers\": [\n                        {\n                            \"visibility\": \"on\"\n                        },\n                        {\n                            \"color\": \"#ffffff\"\n                        },\n                        {\n                            \"weight\": 1.8\n                        }\n                    ]\n                },\n                {\n                    \"featureType\": \"road.local\",\n                    \"elementType\": \"geometry.stroke\",\n                    \"stylers\": [\n                        {\n                            \"color\": \"#d7d7d7\"\n                        }\n                    ]\n                },\n                {\n                    \"featureType\": \"poi\",\n                    \"elementType\": \"geometry.fill\",\n                    \"stylers\": [\n                        {\n                            \"visibility\": \"on\"\n                        },\n                        {\n                            \"color\": \"#ebebeb\"\n                        }\n                    ]\n                },\n                {\n                    \"featureType\": \"administrative\",\n                    \"elementType\": \"geometry\",\n                    \"stylers\": [\n                        {\n                            \"color\": \"#a7a7a7\"\n                        }\n                    ]\n                },\n                {\n                    \"featureType\": \"road.arterial\",\n                    \"elementType\": \"geometry.fill\",\n                    \"stylers\": [\n                        {\n                            \"color\": \"#ffffff\"\n                        }\n                    ]\n                },\n                {\n                    \"featureType\": \"road.arterial\",\n                    \"elementType\": \"geometry.fill\",\n                    \"stylers\": [\n                        {\n                            \"color\": \"#ffffff\"\n                        }\n                    ]\n                },\n                {\n                    \"featureType\": \"landscape\",\n                    \"elementType\": \"geometry.fill\",\n                    \"stylers\": [\n                        {\n                            \"visibility\": \"on\"\n                        },\n                        {\n                            \"color\": \"#efefef\"\n                        }\n                    ]\n                },\n                {\n                    \"featureType\": \"road\",\n                    \"elementType\": \"labels.text.fill\",\n                    \"stylers\": [\n                        {\n                            \"color\": \"#696969\"\n                        }\n                    ]\n                },\n                {\n                    \"featureType\": \"administrative\",\n                    \"elementType\": \"labels.text.fill\",\n                    \"stylers\": [\n                        {\n                            \"visibility\": \"on\"\n                        },\n                        {\n                            \"color\": \"#737373\"\n                        }\n                    ]\n                },\n                {\n                    \"featureType\": \"poi\",\n                    \"elementType\": \"labels.icon\",\n                    \"stylers\": [\n                        {\n                            \"visibility\": \"off\"\n                        }\n                    ]\n                },\n                {\n                    \"featureType\": \"poi\",\n                    \"elementType\": \"labels\",\n                    \"stylers\": [\n                        {\n                            \"visibility\": \"off\"\n                        }\n                    ]\n                },\n                {\n                    \"featureType\": \"road.arterial\",\n                    \"elementType\": \"geometry.stroke\",\n                    \"stylers\": [\n                        {\n                            \"color\": \"#d6d6d6\"\n                        }\n                    ]\n                },\n                {\n                    \"featureType\": \"road\",\n                    \"elementType\": \"labels.icon\",\n                    \"stylers\": [\n                        {\n                            \"visibility\": \"off\"\n                        }\n                    ]\n                },\n                {},\n                {\n                    \"featureType\": \"poi\",\n                    \"elementType\": \"geometry.fill\",\n                    \"stylers\": [\n                        {\n                            \"color\": \"#dadada\"\n                        }\n                    ]\n                }\n            ]\n        });\n    }\n\t\n\n})(jQuery)"
  },
  {
    "path": "public/profile/scss/_blog.scss",
    "content": "/* Latest Blog Area css\n============================================================================================ */\n.latest_blog_area{\n\t\n}\n.latest_blog_inner{\n\tmargin-bottom: -30px;\n}\n.l_blog_item{\n\tmargin-bottom: 30px;\n\t.date{\n\t\tfont-size: 13px;\n\t\tfont-family: $rob;\n\t\tfont-weight: normal;\n\t\tcolor: $pfont;\n\t\tmargin-top: 20px;\n\t\tdisplay: block;\n\t\tmargin-bottom: 15px;\n\t}\n\th4{\n\t\tfont-size: 18px;\n\t\tline-height: 24px;\n\t\tcolor: $dip;\n\t\tborder-bottom: 1px solid #eeeeee;\n\t\tpadding-bottom: 20px;\n\t\tmargin-bottom: 20px;\n\t\t@include transition;\n\t}\n\tp{\n\t\tmargin-bottom: 0px;\n\t}\n\t&:hover{\n\t\th4{\n\t\t\tcolor: $baseColor;\n\t\t}\n\t}\n}\n/* End Latest Blog Area css\n============================================================================================ */\n\n\n\n/*================= latest_blog_area css =============*/\n.single-recent-blog-post{\n    margin-bottom: 30px;\n    .thumb{\n        overflow: hidden;\n        img{\n            transition: all 0.7s linear;\n        }\n    }\n    .details{\n        padding-top: 30px;\n        .sec_h4{\n            line-height: 24px;\n            padding: 10px 0px 13px;\n            transition: all 0.3s linear;\n            &:hover{\n                color: $pfont;\n            }\n        }\n    }\n    .date{\n        font-size: 14px;\n        line-height: 24px;\n        font-weight: 400;\n    }\n    &:hover{\n        img{\n            transform: scale(1.23) rotate(10deg);\n        }\n    }\n}\n.tags{\n    .tag_btn{\n        font-size: 12px;\n        font-weight: 500;\n        line-height: 20px;\n        border: 1px solid #eeeeee;\n        display: inline-block;\n        padding: 1px 18px;\n        text-align: center;\n        color: $dip;\n        &:before{\n            background: $baseColor;\n        }\n        & + .tag_btn{\n            margin-left: 2px;\n        }\n    }\n}\n\n/*========= blog_categorie_area css ===========*/\n.blog_categorie_area{\n    padding-top: 80px;\n\tpadding-bottom: 80px;\n}\n.categories_post{\n    position: relative;\n    text-align: center;\n    cursor: pointer;\n    img{\n        max-width: 100%;\n    }\n    .categories_details{\n        position: absolute;\n        top: 20px;\n        left: 20px;\n        right: 20px;\n        bottom: 20px;\n        background: rgba(34, 34, 34, 0.80);\n        color: #fff;\n        transition: all 0.3s linear;\n        display: flex;\n        align-items: center;\n        justify-content: center;\n        h5{\n            margin-bottom: 0px;\n            font-size: 18px;\n            line-height: 26px;\n            text-transform: uppercase;\n            color: #fff;\n\t\t\tposition: relative;\n//\t\t\t&:before{\n//\t\t\t\tcontent: \"\";\n//\t\t\t\theight: 1px;\n//\t\t\t\twidth: 100%;\n//\t\t\t\tbackground: #fff;\n//\t\t\t\tposition: absolute;\n//\t\t\t\tbottom: 0px;\n//\t\t\t\tleft: 0px;\n//\t\t\t}\n        }\n        p{\n            font-weight: 300;\n            font-size: 14px;\n            line-height: 26px;\n            margin-bottom: 0px;\n        }\n        .border_line{\n            margin: 10px 0px;\n            background: #fff;\n\t\t\twidth: 100%;\n    \t\theight: 1px;\n        }\n    }\n    &:hover{\n        .categories_details{\n\t\t\tbackground-image: -moz-linear-gradient( 0deg, rgb(118,109,255) 0%, rgb(136,243,255) 100%);\n\t\t\tbackground-image: -webkit-linear-gradient( 0deg, rgb(118,109,255) 0%, rgb(136,243,255) 100%);\n\t\t\tbackground-image: -ms-linear-gradient( 0deg, rgb(118,109,255) 0%, rgb(136,243,255) 100%);\n\t\t\topacity: 0.851;\n        }\n    }\n}\n\n\n\n/*============ blog_left_sidebar css ==============*/\n.blog_area{\n}\n.blog_left_sidebar{\n    \n}\n.blog_item{\n    margin-bottom: 40px;\n}\n.blog_info{\n    padding-top: 30px;\n    .post_tag{\n        padding-bottom: 20px;\n        a{\n            font: 300 14px/21px $rob;\n            color: $dip;\n            &:hover{\n                color: $pfont;\n            }\n\t\t\t&.active{\n\t\t\t\tcolor: $baseColor;\n\t\t\t}\n        }\n    }\n    .blog_meta{\n        li{\n            a{\n                font: 300 14px/20px $rob;\n                color: #777777;\n                vertical-align: middle;\n                padding-bottom: 12px;\n                display: inline-block;\n                i{\n                    color: $dip;\n                    font-size: 16px;\n                    font-weight: 600;\n                    padding-left: 15px;\n                    line-height: 20px;\n                    vertical-align: middle;\n                }\n                &:hover{\n                    color: $baseColor;\n                }\n            }\n        }\n    }\n}\n.blog_post{\n    img{\n        max-width: 100%;\n    }\n}\n.blog_details{\n    padding-top: 20px;\n    h2{\n        font-size: 24px;\n        line-height: 36px;\n        color: $dip;\n        font-weight: 600;\n        transition: all 0.3s linear;\n        &:hover{\n            color: $baseColor;\n        }\n    }\n    p{\n        margin-bottom: 26px;\n    }\n}\n.view_btn{\n    font-size: 14px;\n    line-height: 36px;\n    display: inline-block;\n    color: $dip;\n    font-weight: 500;\n    padding: 0px 30px;\n    background: #fff;\n}\n\n.blog_right_sidebar{\n    border: 1px solid #eeeeee;\n\tbackground: #fafaff;\n    padding: 30px;\n    .widget_title{\n        font-size: 18px;\n        line-height: 25px;\n        background: $baseColor;\n        text-align: center;\n        color: #fff;\n        padding: 8px 0px;\n        margin-bottom: 30px;\n    }\n    .search_widget{\n        .input-group{\n            .form-control{\n                font-size: 14px;\n                line-height: 29px;\n                border: 0px;\n                width: 100%;\n                font-weight: 300;\n                color: #fff;\n                padding-left: 20px;\n                border-radius: 45px;\n                z-index: 0;\n                background: $baseColor;\n                @include placeholder{\n                    color: #fff;\n                }\n                &:focus{\n                    box-shadow: none;\n                }\n            }\n            .btn-default{\n                position: absolute;\n                right: 20px;;\n                background: transparent;\n                border: 0px;\n                box-shadow: none;\n                font-size: 14px;\n                color: #fff;\n                padding: 0px;\n                top: 50%;\n                transform: translateY(-50%);\n                z-index: 1;\n            }\n        }\n    }\n    .author_widget{\n        text-align: center;\n        h4{\n            font-size: 18px;\n            line-height: 20px;\n            color: $dip;\n            margin-bottom: 5px;\n\t\t\tmargin-top: 30px;\n        }\n        p{\n            margin-bottom: 0px;\n        }\n        .social_icon{\n            padding: 7px 0px 15px;\n            a{\n                font-size: 14px;\n                color: $dip;\n                transition: all 0.2s linear;\n                & + a{\n                    margin-left: 20px;\n                }\n                &:hover{\n                    color: $baseColor;\n                }\n            }\n        }\n    }\n    .popular_post_widget{\n        .post_item{\n            .media-body{\n                justify-content: center;\n                align-self: center;\n                padding-left: 20px;\n                h3{\n                    font-size: 14px;\n                    line-height: 20px;\n                    color: $dip;\n                    margin-bottom: 4px;\n                    transition: all 0.3s linear;\n                    &:hover{\n                        color: $baseColor;\n                    }\n                }\n                p{\n                    font-size:12px;\n                    line-height: 21px;\n                    margin-bottom: 0px;\n                }\n            }\n            & + .post_item{\n                margin-top: 20px;\n            }\n        }   \n    }\n    .post_category_widget{\n        .cat-list{\n            li{\n                border-bottom: 2px dotted #eee;\n                transition: all 0.3s ease 0s;\n                padding-bottom: 12px;\n                a{\n                    font-size: 14px;\n                    line-height: 20px;\n                    color: #777;\n                    p{\n                        margin-bottom: 0px; \n                    }\n                }\n                & + li{\n                    padding-top: 15px;\n                }\n                &:hover{\n                    border-color: $baseColor;\n                    a{\n                        color: $baseColor;\n                    }\n                }\n            }\n        }\n    }\n    .newsletter_widget{\n        text-align: center;\n        p{\n            \n        }\n        .form-group{\n            margin-bottom: 8px;\n        }\n        .input-group-prepend {\n            margin-right: -1px;\n        }\n        .input-group-text {\n            background: #fff;\n            border-radius: 0px;\n            vertical-align: top;\n            font-size: 12px;\n            line-height: 36px;\n            padding: 0px 0px 0px 15px;\n            border: 1px solid #eeeeee;\n            border-right: 0px;\n        }\n        .form-control{\n            font-size: 12px;\n            line-height: 24px;\n            color: #cccccc;\n            border: 1px solid #eeeeee;\n            border-left: 0px;\n\t\t\tborder-radius: 0px;\n            @include placeholder{\n                color: #cccccc;\n            }\n            &:focus{\n                outline: none;\n                box-shadow: none;\n            }\n        }\n        .bbtns{\n            background: $baseColor;\n            color: #fff;\n            font-size: 12px;\n            line-height: 38px;\n            display: inline-block;\n            font-weight: 500;\n            padding: 0px 24px 0px 24px;\n            border-radius: 0;\n        }\n        .text-bottom{\n            font-size: 12px;\n        }\n    }\n    .tag_cloud_widget{\n        ul{\n            li{\n                display: inline-block;\n                a{\n                    display: inline-block;\n                    border: 1px solid #eee;\n                    background: #fff;\n                    padding: 0px 13px;\n                    margin-bottom: 8px;\n                    transition: all 0.3s ease 0s;\n                    color: $dip;\n                    font-size: 12px;\n                    &:hover{\n\t\t\t\t\t\tbackground-image: -moz-linear-gradient( 0deg, rgb(118,109,255) 0%, rgb(136,243,255) 100%);\n\t\t\t\t\t\tbackground-image: -webkit-linear-gradient( 0deg, rgb(118,109,255) 0%, rgb(136,243,255) 100%);\n\t\t\t\t\t\tbackground-image: -ms-linear-gradient( 0deg, rgb(118,109,255) 0%, rgb(136,243,255) 100%);\n                        color: #fff;\n                    }\n                }\n            }\n        }\n    }\n    .br{\n        width: 100%;\n        height: 1px;\n        background: rgb(238, 238, 238);\n        margin: 30px 0px;\n    }\n}\n\n.blog-pagination {\n    padding-top: 25px;\n    padding-bottom: 95px;\n    .page-link {\n        border-radius: 0;\n    }\n    .page-item {\n        border: none;\n    }\n}\n\n.page-link {\n    background: transparent;\n    font-weight: 400;\n}\n\n.blog-pagination .page-item.active .page-link {\n    background-color: $baseColor;\n    border-color: transparent;\n    color:#fff;\n}\n\n.blog-pagination .page-link {\n    position: relative;\n    display: block;\n    padding: 0.5rem 0.75rem;\n    margin-left: -1px;\n    line-height: 1.25;\n    color: #8a8a8a;\n    border: none;\n}\n\n.blog-pagination .page-link .lnr {\n    font-weight: 600;\n}\n\n.blog-pagination .page-item:last-child .page-link,\n.blog-pagination .page-item:first-child .page-link {\n    border-radius: 0;\n}\n\n.blog-pagination .page-link:hover {\n    color: #fff;\n    text-decoration: none;\n    background-color: $baseColor;\n    border-color: #eee;\n}\n\n\n\n/*============ Start Blog Single Styles  =============*/\n\n.single-post-area {\n    .social-links {\n        padding-top: 10px;\n        li {\n            display: inline-block;\n            margin-bottom: 10px;\n            a {\n                color: #cccccc;\n                padding: 7px;\n                font-size: 14px;\n                transition: all 0.2s linear;\n                &:hover {\n                    color: $dip;\n                }\n            }\n        }\n    }\n    .blog_details{\n        padding-top: 26px;\n        p{\n            margin-bottom: 10px;\n        }\n    }\n    .quotes {\n        margin-top: 20px;\n        margin-bottom: 30px;\n        padding: 24px 35px 24px 30px;\n        background-color: rgb(255, 255, 255);\n        box-shadow: -20.84px 21.58px 30px 0px rgba(176, 176, 176, 0.1);\n        font-size: 14px;\n        line-height: 24px;\n        color: #777;\n        font-style: italic;\n    }\n    .arrow {\n        position: absolute;\n        .lnr {\n            font-size: 20px;\n            font-weight: 600;\n        }\n    }\n    .thumb {\n        .overlay-bg {\n            background: rgba(#000, .8);\n        }\n    }\n    .navigation-area {\n        border-top: 1px solid #eee;\n        padding-top: 30px;\n        margin-top: 60px;\n        p{\n            margin-bottom: 0px;\n        }\n        h4{\n            font-size: 18px;\n            line-height: 25px;\n            color: $dip;\n        }\n        .nav-left {\n            text-align: left;\n            .thumb {\n                margin-right: 20px;\n                background: #000;\n                img {\n                    @include transition();\n                }\n            }\n            .lnr {\n                margin-left: 20px;\n                opacity: 0;\n                @include transition();\n            }\n            &:hover {\n                .lnr {\n                    opacity: 1;\n                }\n                .thumb {\n                    img {\n                        opacity: .5;\n                    }\n                }\n            }\n            @media(max-width:767px) {\n                margin-bottom: 30px;\n            }\n        }\n        .nav-right {\n            text-align: right;\n            .thumb {\n                margin-left: 20px;\n                background: #000;\n                img {\n                    @include transition();\n                }\n            }\n            .lnr {\n                margin-right: 20px;\n                opacity: 0;\n                @include transition();\n            }\n            &:hover {\n                .lnr {\n                    opacity: 1;\n                }\n                .thumb {\n                    img {\n                        opacity: .5;\n                    }\n                }\n            }\n        }\n    }\n\n    .sidebar-widgets{\n        @media(max-width:991px){\n            padding-bottom:0px;\n        }\n    }\n}\n\n.comments-area {\n    background:#fafaff;\n    border: 1px solid #eee;\n    padding: 50px 30px;\n    margin-top: 50px;\n    @media(max-width: 414px) {\n        padding: 50px 8px;\n    }\n    h4 {\n        text-align: center;\n        margin-bottom: 50px;\n        color: $dip;\n        font-size: 18px;\n    }\n    h5 {\n        font-size: 16px;\n        margin-bottom: 0px;\n    }\n    a {\n        color: $dip;\n    }\n    .comment-list {\n        padding-bottom: 48px;\n        &:last-child {\n            padding-bottom: 0px;\n        }\n        &.left-padding {\n            padding-left: 25px;\n        }\n        @media(max-width:413px) {\n            .single-comment {\n                h5 {\n                    font-size: 12px;\n                }\n                .date {\n                    font-size: 11px;\n                }\n                .comment {\n                    font-size: 10px;\n                }\n            }\n        }\n    }\n    .thumb {\n        margin-right: 20px;\n    }\n    .date {\n        font-size: 13px;\n        color: #cccccc;\n        margin-bottom: 13px;\n    }\n    .comment {\n        color: #777777;\n        margin-bottom: 0px;\n    }\n    .btn-reply {\n        background-color: #fff;\n        color: $dip;\n        border:1px solid #eee;\n        padding: 2px 18px;\n        font-size: 12px;\n        display: block;\n        font-weight:600;\n        @include transition();\n        &:hover {\n            background-color: $baseColor;\n            color: #fff;\n        }\n    }\n}\n\n.comment-form {\n    background:#fafaff;\n    text-align: center;\n    border: 1px solid #eee;\n    padding: 47px 30px 43px;\n    margin-top: 50px;\n    margin-bottom: 0px;\n    h4 {\n        text-align: center;\n        margin-bottom: 50px;\n        font-size: 18px;\n        line-height: 22px;\n        color: $dip;\n    }\n    .name {\n        padding-left: 0px;\n        @media(max-width: 767px) {\n            padding-right: 0px;\n            margin-bottom: 1rem;\n        }\n    }\n    .email {\n        padding-right: 0px;\n        @media(max-width: 991px) {\n            padding-left: 0px;\n        }\n    }\n    .form-control {\n        padding: 8px 20px;\n        background: #fff;\n        border: none;\n        border-radius: 0px;\n        width: 100%;\n        font-size: 14px;\n        color: #777777;\n        border: 1px solid transparent;\n        &:focus {\n            box-shadow: none;\n            border: 1px solid #eee;\n        }\n    }\n    textarea{\n        &.form-control{\n            height: 140px;\n\t\t\tresize: none;\n        }\n    }\n    ::-webkit-input-placeholder {\n        /* Chrome/Opera/Safari */\n        font-size: 13px;\n        color: #777;\n    }\n    ::-moz-placeholder {\n        /* Firefox 19+ */\n        font-size: 13px;\n        color: #777;\n    }\n    :-ms-input-placeholder {\n        /* IE 10+ */\n        font-size: 13px;\n        color: #777;\n    }\n    :-moz-placeholder {\n        /* Firefox 18- */\n        font-size: 13px;\n        color: #777;\n    }\n}\n\n\n/*============ End Blog Single Styles  =============*/"
  },
  {
    "path": "public/profile/scss/_button.scss",
    "content": "/* Main Button Area css\n============================================================================================ */\n.main_btn{\n\tdisplay: inline-block;\n\tbackground-image: linear-gradient(to right, #766dff 0%, #86e8ff 48%, #766dff 100%);\n    background-size: 200% auto;\n\tpadding: 0px 40px;\n\tcolor: #fff;\n\tfont-family: $rob;\n\tfont-size: 13px;\n\tfont-weight: 500;\n\tline-height: 48px;\n\tborder-radius: 0px;\n\toutline: none !important;\n\tbox-shadow: none !important;\n\ttext-align: center;\n\tcursor: pointer;\n\tborder-radius: 5px;\n\t@include transition;\n\t&:hover{\n\t\tbackground-position: right center;\n        color: #fff;\n\t}\n}\n.main_btn2{\n\tdisplay: inline-block;\n\tbackground: #f9f9ff;\n\tpadding: 0px 45px;\n\tcolor: $dip;\n\tfont-family: $rob;\n\tfont-size: 13px;\n\tfont-weight: 500;\n\tline-height: 48px;\n\tborder-radius: 5px;\n\toutline: none !important;\n\tbox-shadow: none !important;\n\ttext-align: center;\n\tborder: 1px solid #eeeeee;\n\tcursor: pointer;\n\t@include transition;\n\t&:hover{\n\t\tbackground: $baseColor;\n\t\tcolor: #fff;\n\t\tborder-color: $baseColor;\n\t\tbox-shadow: 0px 10px 20px 0px rgba(250, 51, 63, 0.25);\n\t}\n}\n.submit_btn{\n\twidth: auto;\n\tdisplay: inline-block;\n\tbackground: $baseColor;\n\tpadding: 0px 50px;\n\tcolor: #fff;\n\tfont-family: $rob;\n\tfont-size: 13px;\n\tfont-weight: 500;\n\tline-height: 50px;\n\tborder-radius: 5px;\n\toutline: none !important;\n\tbox-shadow: none !important;\n\ttext-align: center;\n\tborder: 1px solid $baseColor;\n\tcursor: pointer;\n\t@include transition;\n\t&:hover{\n\t\tbackground: transparent;\n\t\tcolor: $baseColor;\n\t}\n}\n\n.white_bg_btn{\n\tdisplay: inline-block;\n\tbackground: #f9f9ff;\n\tpadding: 0px 35px;\n\tcolor: $dip;\n\tfont-family: $rob;\n\tfont-size: 13px;\n\tfont-weight: 500;\n\tline-height: 34px;\n\tborder-radius: 0px;\n\toutline: none !important;\n\tbox-shadow: none !important;\n\ttext-align: center;\n\tcursor: pointer;\n\t@include transition;\n\t&:hover{\n\t\tbackground-image: -moz-linear-gradient( 0deg, rgb(118,109,255) 0%, rgb(136,243,255) 100%);\n\t\tbackground-image: -webkit-linear-gradient( 0deg, rgb(118,109,255) 0%, rgb(136,243,255) 100%);\n\t\tbackground-image: -ms-linear-gradient( 0deg, rgb(118,109,255) 0%, rgb(136,243,255) 100%);\n\t\tcolor: #fff;\n\t\tborder: none;\n\t}\n}\n.black_btn{\n\tpadding: 0px 44px;\n\tline-height: 50px;\n\tbackground: $dip;\n\tcolor: $baseColor;\n\tdisplay: inline-block;\n\tborder-radius: 5px;\n\tfont-size: 13px;\n\tfont-family: $rob;\n\tfont-weight: 500;\n\t@include transition;\n\t&:hover{\n\t\tbackground: $baseColor;\n\t\tcolor: $dip;\n\t}\n}\n/* End Main Button Area css\n============================================================================================ */"
  },
  {
    "path": "public/profile/scss/_contact.scss",
    "content": "/* Reservation Form Area css\n============================================================================================ */\n.reservation_form_area{\n\t.res_form_inner{\n\t\tmax-width: 555px;\n\t\tmargin: auto;\n\t\tbox-shadow: 0px 10px 30px 0px rgba(153, 153, 153, 0.1);\n\t\tpadding: 75px 50px;\n\t\tposition: relative;\n\t\t&:before{\n\t\t\tcontent: \"\";\n\t\t\tbackground: url(../img/contact-shap-1.png);\n\t\t\tposition: absolute;\n\t\t\tleft: -125px;\n\t\t\theight: 421px;\n\t\t\twidth: 98px;\n\t\t\ttop: 50%;\n\t\t\ttransform: translateY(-50%);\n\t\t}\n\t\t&:after{\n\t\t\tcontent: \"\";\n\t\t\tbackground: url(../img/contact-shap-2.png);\n\t\t\tposition: absolute;\n\t\t\tright: -125px;\n\t\t\theight: 421px;\n\t\t\twidth: 98px;\n\t\t\ttop: 50%;\n\t\t\ttransform: translateY(-50%);\n\t\t}\n\t}\n}\n.reservation_form{\n\t.form-group{\n\t\tinput{\n\t\t\theight: 40px;\n\t\t\tborder-radius: 0px;\n\t\t\tborder: 1px solid #eeeeee;\n\t\t\toutline: none;\n\t\t\tbox-shadow: none;\n\t\t\tpadding: 0px 15px;\n\t\t\tfont-size: 13px;\n\t\t\tfont-family: $rob;\n\t\t\tfont-weight: 300;\n\t\t\tcolor: #999999;\n\t\t\t@include placeholder{\n\t\t\t\tfont-size: 13px;\n\t\t\t\tfont-family: $rob;\n\t\t\t\tfont-weight: 300;\n\t\t\t\tcolor: #999999;\n\t\t\t}\n\t\t}\n\t\t.res_select{\n\t\t\theight: 40px;\n\t\t\tborder: 1px solid #eeeeee;\n\t\t\tborder-radius: 0px;\n\t\t\twidth: 100%;\n\t\t\tpadding: 0px 15px;\n\t\t\tline-height: 36px;\n\t\t\t.current{\n\t\t\t\tfont-size: 13px;\n\t\t\t\tfont-family: $rob;\n\t\t\t\tfont-weight: 300;\n\t\t\t\tcolor: #999999;\n\t\t\t}\n\t\t\t&:after{\n\t\t\t\tcontent: \"\\e874\";\n\t\t\t\tfont-family: 'Linearicons-Free';\n\t\t\t\tcolor: #cccccc;\n\t\t\t\ttransform: rotate(0deg);\n\t\t\t\tborder: none;\n\t\t\t\tmargin-top: -17px;\n\t\t\t\tfont-size: 13px;\n\t\t\t\tright: 22px;\n\t\t\t}\n\t\t}\n\t\t&:last-child{\n\t\t\ttext-align: center;\n\t\t}\n\t}\n}\n/* End Reservation Form Area css\n============================================================================================ */\n\n\n/*============== contact_area css ================*/\n.contact_area{}\n.mapBox{\n    height: 420px;\n    margin-bottom: 80px;\n}\n.contact_info{\n    .info_item{\n        position: relative;\n        padding-left: 45px;\n        i{\n            position: absolute;\n            left: 0;\n            top: 0;\n            font-size: 20px;\n            line-height: 24px;\n            color: $baseColor;\n            font-weight: 600;\n        }\n        h6{\n            font-size: 16px;\n            line-height: 24px;\n            color: $rob;\n            font-weight: bold;\n            margin-bottom: 0px;\n\t\t\tcolor: $dip;\n            a{\n                color: $dip;\n            }\n        }\n        p{\n            font-size: 14px;\n            line-height: 24px;\n            padding: 2px 0px;\n        }\n    }\n}\n.contact_form{\n    .form-group{\n        margin-bottom: 10px;\n        .form-control{\n            font-size: 13px;\n            line-height: 26px;\n            color: #999;\n            border: 1px solid #eeeeee;\n            font-family: $rob;\n            border-radius: 0px;\n            padding-left: 20px;\n            &:focus{\n                box-shadow: none;\n                outline: none;\n            }\n            @include placeholder{\n                color: #999;\n            }\n        }\n        textarea{\n\t\t\tresize: none;\n            &.form-control{\n                height: 140px;\n            }\n        }\n    }\n    .submit_btn{\n        margin-top: 20px;\n        cursor: pointer;\n    }\n}\n\n\n/* Contact Success and error Area css\n============================================================================================ */\n.modal-message{\n    .modal-dialog{\n        position: absolute;\n        top: 36%;\n        left: 50%;\n        transform: translateX(-50%) translateY(-50%) !important; \n        margin: 0px;\n        max-width: 500px;\n        width: 100%;\n        .modal-content{\n            .modal-header{\n                text-align: center;\n                display: block;\n                border-bottom: none;\n                padding-top: 50px;\n                padding-bottom: 50px; \n                .close{\n                    position: absolute;\n                    right: -15px;\n                    top: -15px;\n                    padding: 0px;\n                    color: #fff;\n                    opacity: 1;\n                    cursor: pointer;\n                }\n                h2{\n                    display: block;\n                    text-align: center;\n                    color: $baseColor;\n                    padding-bottom: 10px;\n\t\t\t\t\tfont-family: $rob;\n                }\n                p{\n                    display: block;\n                }\n            }\n        }\n    }\n}\n/* End Contact Success and error Area css\n============================================================================================ */"
  },
  {
    "path": "public/profile/scss/_elements.scss",
    "content": "/*============== Elements Area css ================*/\n\n.mb-20{\n\tmargin-bottom: 20px;\n}\n.mb-30{\n\tmargin-bottom: 30px;\n}\n\n.sample-text-area{\n\tpadding: 100px 0px;\n\t.title_color{\n\t\tmargin-bottom: 30px;\n\t}\n\tp{\n\t\tline-height: 26px;\n\t\tb{\n\t\t\tfont-weight: bold;\n\t\t\tcolor: $baseColor;\n\t\t}\n\t\ti{\n\t\t\tcolor: $baseColor;\n\t\t\tfont-style: italic;\n\t\t}\n\t\tsup{\n\t\t\tcolor: $baseColor;\n\t\t\tfont-style: italic;\n\t\t}\n\t\tsub{\n\t\t\tcolor: $baseColor;\n\t\t\tfont-style: italic;\n\t\t}\n\t\tdel{\n\t\t\tcolor: $baseColor;\n\t\t}\n\t\tu{\n\t\t\tcolor: $baseColor;\n\t\t}\n\t}\n}\n\n/*============== End Elements Area css ================*/\n\n/*==============Elements Button Area css ================*/\n.elements_button{\n\t.title_color{\n\t\tmargin-bottom: 30px;\n\t\tcolor: $dip;\n\t}\n}\n.title_color{\n\tcolor: $dip;\n}\n.button-group-area{\n\tmargin-top: 15px;\n\t&:nth-child(odd){\n\t\tmargin-top: 40px;\n\t}\n\t&:first-child{\n\t\tmargin-top: 0px;\n\t}\n\t.theme_btn{\n\t\tmargin-right: 10px;\n\t}\n\t.white_btn{\n\t\tmargin-right: 10px;\n\t}\n\t.link{\n\t\ttext-decoration: underline;\n\t\tcolor: $dip;\n\t\tbackground: transparent;\n\t\t&:hover{\n\t\t\tcolor: #fff;\n\t\t}\n\t}\n\t.disable{\n\t\tbackground: transparent;\n\t\tcolor: #007bff;\n\t\tcursor: not-allowed;\n\t\t&:before{\n\t\t\tdisplay: none;\n\t\t}\n\t}\n}\n.primary{\n\tbackground: #52c5fd;\n\t&:before{\n\t\tbackground: #2faae6;\n\t}\n}\n.success{\n\tbackground: #4cd3e3;\n\t&:before{\n\t\tbackground: #2ebccd;\n\t}\n}\n.info{\n\tbackground: #38a4ff;\n\t&:before{\n\t\tbackground: #298cdf;\n\t}\n}\n.warning{\n\tbackground: #f4e700;\n\t&:before{\n\t\tbackground: #e1d608;\n\t}\n}\n.danger{\n\tbackground: #f54940;\n\t&:before{\n\t\tbackground: #e13b33;\n\t}\n}\n.border_btn{\n\t\n}\n.primary-border{\n\tbackground: transparent;\n\tborder: 1px solid #52c5fd;\n\tcolor: #52c5fd;\n\t&:before{\n\t\tbackground: #52c5fd;\n\t}\n}\n.success-border{\n\tbackground: transparent;\n\tborder: 1px solid #4cd3e3;\n\tcolor: #4cd3e3;\n\t&:before{\n\t\tbackground: #4cd3e3;\n\t}\n}\n.info-border{\n\tbackground: transparent;\n\tborder: 1px solid #38a4ff;\n\tcolor: #38a4ff;\n\t&:before{\n\t\tbackground: #38a4ff;\n\t}\n}\n.warning-border{\n\tbackground: #fff;\n\tborder: 1px solid #f4e700;\n\tcolor: #f4e700;\n\t&:before{\n\t\tbackground: #f4e700;\n\t}\n}\n.danger-border{\n\tbackground: transparent;\n\tborder: 1px solid #f54940;\n\tcolor: #f54940;\n\t&:before{\n\t\tbackground: #f54940;\n\t}\n}\n.link-border{\n\tbackground: transparent;\n\tborder: 1px solid $baseColor;\n\tcolor: $baseColor;\n\t&:before{\n\t\tbackground: $baseColor;\n\t}\n}\n.radius{\n\tborder-radius: 3px;\n}\n.circle{\n\tborder-radius: 20px;\n}\n.arrow{\n\tspan{\n\t\tpadding-left: 5px;\n\t}\n}\n.e-large{\n\tline-height: 50px;\n\tpadding-top: 0px;\n\tpadding-bottom: 0px;\n}\n.large{\n\tline-height: 45px;\n\tpadding-top: 0px;\n\tpadding-bottom: 0px;\n}\n.medium{\n\tline-height: 30px;\n\tpadding-top: 0px;\n\tpadding-bottom: 0px;\n}\n.small{\n\tline-height: 25px;\n\tpadding-top: 0px;\n\tpadding-bottom: 0px;\n}\n.general{\n\tline-height: 38px;\n\tpadding-top: 0px;\n\tpadding-bottom: 0px;\n}\n/*==============End Elements Button Area css ================*/\n\n\n\n\n/* =================================== */\n/*  Elements Page Styles\n/* =================================== */\n/*---------- Start Elements Page -------------*/\n.whole-wrap {\n}\n\n.generic-banner {\n  margin-top: 60px;\n  text-align: center;\n}\n\n.generic-banner .height {\n  height: 600px;\n}\n\n@media (max-width: 767.98px) {\n  .generic-banner .height {\n    height: 400px;\n  }\n}\n\n.generic-banner .generic-banner-content h2 {\n  line-height: 1.2em;\n  margin-bottom: 20px;\n}\n\n@media (max-width: 991.98px) {\n  .generic-banner .generic-banner-content h2 br {\n    display: none;\n  }\n}\n\n.generic-banner .generic-banner-content p {\n  text-align: center;\n  font-size: 16px;\n}\n\n@media (max-width: 991.98px) {\n  .generic-banner .generic-banner-content p br {\n    display: none;\n  }\n}\n\n.generic-content h1 {\n  font-weight: 600;\n}\n\n.about-generic-area {\n  background: #fff;\n}\n\n.about-generic-area p {\n  margin-bottom: 20px;\n}\n\n.white-bg {\n  background: #fff;\n}\n\n.section-top-border {\n  padding: 50px 0;\n  border-top: 1px dotted #eee;\n}\n\n.switch-wrap {\n  margin-bottom: 10px;\n}\n\n.switch-wrap p {\n  margin: 0;\n}\n\n/*---------- End Elements Page -------------*/\n\n\n.sample-text-area {\n  padding: 100px 0 70px 0;\n}\n\n.sample-text {\n  margin-bottom: 0;\n}\n\n.text-heading {\n  margin-bottom: 30px;\n  font-size: 24px;\n}\n\n.typo-list {\n  margin-bottom: 10px;\n}\n\n@media (max-width: 767px) {\n  .typo-sec {\n    margin-bottom: 30px;\n  }\n}\n\n@media (max-width: 767px) {\n  .element-wrap {\n    margin-top: 30px;\n  }\n}\n\nb, sup, sub, u, del {\n  color: #f8b600;\n}\n\nh1 {\n  font-size: 36px;\n}\n\nh2 {\n  font-size: 30px;\n}\n\nh3 {\n  font-size: 24px;\n}\n\nh4 {\n  font-size: 18px;\n}\n\nh5 {\n  font-size: 16px;\n}\n\nh6 {\n  font-size: 14px;\n}\n\n\n\n.typography h1, .typography h2, .typography h3, .typography h4, .typography h5, .typography h6 {\n  color: #777777;\n}\n\n.button-area {\n}\n\n.button-area .border-top-generic {\n  padding: 70px 15px;\n  border-top: 1px dotted #eee;\n}\n\n.button-group-area .genric-btn {\n  margin-right: 10px;\n  margin-top: 10px;\n}\n\n.button-group-area .genric-btn:last-child {\n  margin-right: 0;\n}\n\n.circle {\n  border-radius: 20px;\n}\n\n.genric-btn {\n  display: inline-block;\n  outline: none;\n  line-height: 40px;\n  padding: 0 30px;\n  font-size: .8em;\n  text-align: center;\n  text-decoration: none;\n  font-weight: 500;\n  cursor: pointer;\n  -webkit-transition: all 0.3s ease 0s;\n  -moz-transition: all 0.3s ease 0s;\n  -o-transition: all 0.3s ease 0s;\n  transition: all 0.3s ease 0s;\n}\n\n.genric-btn:focus {\n  outline: none;\n}\n\n.genric-btn.e-large {\n  padding: 0 40px;\n  line-height: 50px;\n}\n\n.genric-btn.large {\n  line-height: 45px;\n}\n\n.genric-btn.medium {\n  line-height: 30px;\n}\n\n.genric-btn.small {\n  line-height: 25px;\n}\n\n.genric-btn.radius {\n  border-radius: 3px;\n}\n\n.genric-btn.circle {\n  border-radius: 20px;\n}\n\n.genric-btn.arrow {\n  display: -webkit-inline-box;\n  display: -ms-inline-flexbox;\n  display: inline-flex;\n  -webkit-box-align: center;\n  -ms-flex-align: center;\n  align-items: center;\n}\n\n.genric-btn.arrow span {\n  margin-left: 10px;\n}\n\n.genric-btn.default {\n  color: #222222;\n  background: #f9f9ff;\n  border: 1px solid transparent;\n}\n\n.genric-btn.default:hover {\n  border: 1px solid #f9f9ff;\n  background: #fff;\n}\n\n.genric-btn.default-border {\n  border: 1px solid #f9f9ff;\n  background: #fff;\n}\n\n.genric-btn.default-border:hover {\n  color: #222222;\n  background: #f9f9ff;\n  border: 1px solid transparent;\n}\n\n.genric-btn.primary {\n  color: #fff;\n  background: #f8b600;\n  border: 1px solid transparent;\n}\n\n.genric-btn.primary:hover {\n  color: #f8b600;\n  border: 1px solid #f8b600;\n  background: #fff;\n}\n\n.genric-btn.primary-border {\n  color: #f8b600;\n  border: 1px solid #f8b600;\n  background: #fff;\n}\n\n.genric-btn.primary-border:hover {\n  color: #fff;\n  background: #f8b600;\n  border: 1px solid transparent;\n}\n\n.genric-btn.success {\n  color: #fff;\n  background: #4cd3e3;\n  border: 1px solid transparent;\n}\n\n.genric-btn.success:hover {\n  color: #4cd3e3;\n  border: 1px solid #4cd3e3;\n  background: #fff;\n}\n\n.genric-btn.success-border {\n  color: #4cd3e3;\n  border: 1px solid #4cd3e3;\n  background: #fff;\n}\n\n.genric-btn.success-border:hover {\n  color: #fff;\n  background: #4cd3e3;\n  border: 1px solid transparent;\n}\n\n.genric-btn.info {\n  color: #fff;\n  background: #38a4ff;\n  border: 1px solid transparent;\n}\n\n.genric-btn.info:hover {\n  color: #38a4ff;\n  border: 1px solid #38a4ff;\n  background: #fff;\n}\n\n.genric-btn.info-border {\n  color: #38a4ff;\n  border: 1px solid #38a4ff;\n  background: #fff;\n}\n\n.genric-btn.info-border:hover {\n  color: #fff;\n  background: #38a4ff;\n  border: 1px solid transparent;\n}\n\n.genric-btn.warning {\n  color: #fff;\n  background: #f4e700;\n  border: 1px solid transparent;\n}\n\n.genric-btn.warning:hover {\n  color: #f4e700;\n  border: 1px solid #f4e700;\n  background: #fff;\n}\n\n.genric-btn.warning-border {\n  color: #f4e700;\n  border: 1px solid #f4e700;\n  background: #fff;\n}\n\n.genric-btn.warning-border:hover {\n  color: #fff;\n  background: #f4e700;\n  border: 1px solid transparent;\n}\n\n.genric-btn.danger {\n  color: #fff;\n  background: #f44a40;\n  border: 1px solid transparent;\n}\n\n.genric-btn.danger:hover {\n  color: #f44a40;\n  border: 1px solid #f44a40;\n  background: #fff;\n}\n\n.genric-btn.danger-border {\n  color: #f44a40;\n  border: 1px solid #f44a40;\n  background: #fff;\n}\n\n.genric-btn.danger-border:hover {\n  color: #fff;\n  background: #f44a40;\n  border: 1px solid transparent;\n}\n\n.genric-btn.link {\n  color: #222222;\n  background: #f9f9ff;\n  text-decoration: underline;\n  border: 1px solid transparent;\n}\n\n.genric-btn.link:hover {\n  color: #222222;\n  border: 1px solid #f9f9ff;\n  background: #fff;\n}\n\n.genric-btn.link-border {\n  color: #222222;\n  border: 1px solid #f9f9ff;\n  background: #fff;\n  text-decoration: underline;\n}\n\n.genric-btn.link-border:hover {\n  color: #222222;\n  background: #f9f9ff;\n  border: 1px solid transparent;\n}\n\n.genric-btn.disable {\n  color: #222222, 0.3;\n  background: #f9f9ff;\n  border: 1px solid transparent;\n  cursor: not-allowed;\n}\n\n.generic-blockquote {\n  padding: 30px 50px 30px 30px;\n  background: #fff;\n  border-left: 2px solid #f8b600;\n}\n\n@media (max-width: 991px) {\n  .progress-table-wrap {\n    overflow-x: scroll;\n  }\n}\n\n.progress-table {\n  background: #fff;\n  padding: 15px 0px 30px 0px;\n  min-width: 800px;\n}\n\n.progress-table .serial {\n  width: 11.83%;\n  padding-left: 30px;\n}\n\n.progress-table .country {\n  width: 28.07%;\n}\n\n.progress-table .visit {\n  width: 19.74%;\n}\n\n.progress-table .percentage {\n  width: 40.36%;\n  padding-right: 50px;\n}\n\n.progress-table .table-head {\n  display: flex;\n}\n\n.progress-table .table-head .serial, .progress-table .table-head .country, .progress-table .table-head .visit, .progress-table .table-head .percentage {\n  color: #222222;\n  line-height: 40px;\n  text-transform: uppercase;\n  font-weight: 500;\n}\n\n.progress-table .table-row {\n  padding: 15px 0;\n  border-top: 1px solid #edf3fd;\n  display: flex;\n}\n\n.progress-table .table-row .serial, .progress-table .table-row .country, .progress-table .table-row .visit, .progress-table .table-row .percentage {\n  display: flex;\n  align-items: center;\n}\n\n.progress-table .table-row .country img {\n  margin-right: 15px;\n}\n\n.progress-table .table-row .percentage .progress {\n  width: 80%;\n  border-radius: 0px;\n  background: transparent;\n}\n\n.progress-table .table-row .percentage .progress .progress-bar {\n  height: 5px;\n  line-height: 5px;\n}\n\n.progress-table .table-row .percentage .progress .progress-bar.color-1 {\n  background-color: #6382e6;\n}\n\n.progress-table .table-row .percentage .progress .progress-bar.color-2 {\n  background-color: #e66686;\n}\n\n.progress-table .table-row .percentage .progress .progress-bar.color-3 {\n  background-color: #f09359;\n}\n\n.progress-table .table-row .percentage .progress .progress-bar.color-4 {\n  background-color: #73fbaf;\n}\n\n.progress-table .table-row .percentage .progress .progress-bar.color-5 {\n  background-color: #73fbaf;\n}\n\n.progress-table .table-row .percentage .progress .progress-bar.color-6 {\n  background-color: #6382e6;\n}\n\n.progress-table .table-row .percentage .progress .progress-bar.color-7 {\n  background-color: #a367e7;\n}\n\n.progress-table .table-row .percentage .progress .progress-bar.color-8 {\n  background-color: #e66686;\n}\n\n.single-gallery-image {\n  margin-top: 30px;\n  background-repeat: no-repeat !important;\n  background-position: center center !important;\n  background-size: cover !important;\n  height: 200px;\n  -webkit-transition: all 0.3s ease 0s;\n  -moz-transition: all 0.3s ease 0s;\n  -o-transition: all 0.3s ease 0s;\n  transition: all 0.3s ease 0s;\n}\n\n.single-gallery-image:hover {\n  opacity: .8;\n}\n\n.list-style {\n  width: 14px;\n  height: 14px;\n}\n\n.unordered-list li {\n  position: relative;\n  padding-left: 30px;\n  line-height: 1.82em !important;\n}\n\n.unordered-list li:before {\n  content: \"\";\n  position: absolute;\n  width: 14px;\n  height: 14px;\n  border: 3px solid #f8b600;\n  background: #fff;\n  top: 4px;\n  left: 0;\n  border-radius: 50%;\n}\n\n.ordered-list {\n  margin-left: 30px;\n}\n\n.ordered-list li {\n  list-style-type: decimal-leading-zero;\n  color: #f8b600;\n  font-weight: 500;\n  line-height: 1.82em !important;\n}\n\n.ordered-list li span {\n  font-weight: 300;\n  color: #777777;\n}\n\n.ordered-list-alpha li {\n  margin-left: 30px;\n  list-style-type: lower-alpha;\n  color: #f8b600;\n  font-weight: 500;\n  line-height: 1.82em !important;\n}\n\n.ordered-list-alpha li span {\n  font-weight: 300;\n  color: #777777;\n}\n\n.ordered-list-roman li {\n  margin-left: 30px;\n  list-style-type: lower-roman;\n  color: #f8b600;\n  font-weight: 500;\n  line-height: 1.82em !important;\n}\n\n.ordered-list-roman li span {\n  font-weight: 300;\n  color: #777777;\n}\n\n.single-input {\n  display: block;\n  width: 100%;\n  line-height: 40px;\n  border: none;\n  outline: none;\n  background: #f9f9ff;\n  padding: 0 20px;\n}\n\n.single-input:focus {\n  outline: none;\n}\n\n.input-group-icon {\n  position: relative;\n}\n\n.input-group-icon .icon {\n  position: absolute;\n  left: 20px;\n  top: 0;\n  line-height: 40px;\n  z-index: 3;\n}\n\n.input-group-icon .icon i {\n  color: #797979;\n}\n\n.input-group-icon .single-input {\n  padding-left: 45px;\n}\n\n.single-textarea {\n  display: block;\n  width: 100%;\n  line-height: 40px;\n  border: none;\n  outline: none;\n  background: #f9f9ff;\n  padding: 0 20px;\n  height: 100px;\n  resize: none;\n}\n\n.single-textarea:focus {\n  outline: none;\n}\n\n.single-input-primary {\n  display: block;\n  width: 100%;\n  line-height: 40px;\n  border: 1px solid transparent;\n  outline: none;\n  background: #f9f9ff;\n  padding: 0 20px;\n}\n\n.single-input-primary:focus {\n  outline: none;\n  border: 1px solid #f8b600;\n}\n\n.single-input-accent {\n  display: block;\n  width: 100%;\n  line-height: 40px;\n  border: 1px solid transparent;\n  outline: none;\n  background: #f9f9ff;\n  padding: 0 20px;\n}\n\n.single-input-accent:focus {\n  outline: none;\n  border: 1px solid #eb6b55;\n}\n\n.single-input-secondary {\n  display: block;\n  width: 100%;\n  line-height: 40px;\n  border: 1px solid transparent;\n  outline: none;\n  background: #f9f9ff;\n  padding: 0 20px;\n}\n\n.single-input-secondary:focus {\n  outline: none;\n  border: 1px solid #f09359;\n}\n\n.default-switch {\n  width: 35px;\n  height: 17px;\n  border-radius: 8.5px;\n  background: #fff;\n  position: relative;\n  cursor: pointer;\n}\n\n.default-switch input {\n  position: absolute;\n  left: 0;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  width: 100%;\n  height: 100%;\n  opacity: 0;\n  cursor: pointer;\n}\n\n.default-switch input + label {\n  position: absolute;\n  top: 1px;\n  left: 1px;\n  width: 15px;\n  height: 15px;\n  border-radius: 50%;\n  background: #f8b600;\n  -webkit-transition: all 0.2s;\n  -moz-transition: all 0.2s;\n  -o-transition: all 0.2s;\n  transition: all 0.2s;\n  box-shadow: 0px 4px 5px 0px rgba(0, 0, 0, 0.2);\n  cursor: pointer;\n}\n\n.default-switch input:checked + label {\n  left: 19px;\n}\n\n.single-element-widget {\n  margin-bottom: 30px;\n}\n\n.primary-switch {\n  width: 35px;\n  height: 17px;\n  border-radius: 8.5px;\n  background: #fff;\n  position: relative;\n  cursor: pointer;\n}\n\n.primary-switch input {\n  position: absolute;\n  left: 0;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  width: 100%;\n  height: 100%;\n  opacity: 0;\n}\n\n.primary-switch input + label {\n  position: absolute;\n  left: 0;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  width: 100%;\n  height: 100%;\n}\n\n.primary-switch input + label:before {\n  content: \"\";\n  position: absolute;\n  left: 0;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  width: 100%;\n  height: 100%;\n  background: transparent;\n  border-radius: 8.5px;\n  cursor: pointer;\n  -webkit-transition: all 0.2s;\n  -moz-transition: all 0.2s;\n  -o-transition: all 0.2s;\n  transition: all 0.2s;\n}\n\n.primary-switch input + label:after {\n  content: \"\";\n  position: absolute;\n  top: 1px;\n  left: 1px;\n  width: 15px;\n  height: 15px;\n  border-radius: 50%;\n  background: #fff;\n  -webkit-transition: all 0.2s;\n  -moz-transition: all 0.2s;\n  -o-transition: all 0.2s;\n  transition: all 0.2s;\n  box-shadow: 0px 4px 5px 0px rgba(0, 0, 0, 0.2);\n  cursor: pointer;\n}\n\n.primary-switch input:checked + label:after {\n  left: 19px;\n}\n\n.primary-switch input:checked + label:before {\n  background: #f8b600;\n}\n\n.confirm-switch {\n  width: 35px;\n  height: 17px;\n  border-radius: 8.5px;\n  background: #fff;\n  position: relative;\n  cursor: pointer;\n}\n\n.confirm-switch input {\n  position: absolute;\n  left: 0;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  width: 100%;\n  height: 100%;\n  opacity: 0;\n}\n\n.confirm-switch input + label {\n  position: absolute;\n  left: 0;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  width: 100%;\n  height: 100%;\n}\n\n.confirm-switch input + label:before {\n  content: \"\";\n  position: absolute;\n  left: 0;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  width: 100%;\n  height: 100%;\n  background: transparent;\n  border-radius: 8.5px;\n  -webkit-transition: all 0.2s;\n  -moz-transition: all 0.2s;\n  -o-transition: all 0.2s;\n  transition: all 0.2s;\n  cursor: pointer;\n}\n\n.confirm-switch input + label:after {\n  content: \"\";\n  position: absolute;\n  top: 1px;\n  left: 1px;\n  width: 15px;\n  height: 15px;\n  border-radius: 50%;\n  background: #fff;\n  -webkit-transition: all 0.2s;\n  -moz-transition: all 0.2s;\n  -o-transition: all 0.2s;\n  transition: all 0.2s;\n  box-shadow: 0px 4px 5px 0px rgba(0, 0, 0, 0.2);\n  cursor: pointer;\n}\n\n.confirm-switch input:checked + label:after {\n  left: 19px;\n}\n\n.confirm-switch input:checked + label:before {\n  background: #4cd3e3;\n}\n\n.primary-checkbox {\n  width: 16px;\n  height: 16px;\n  border-radius: 3px;\n  background: #fff;\n  position: relative;\n  cursor: pointer;\n}\n\n.primary-checkbox input {\n  position: absolute;\n  left: 0;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  width: 100%;\n  height: 100%;\n  opacity: 0;\n}\n\n.primary-checkbox input + label {\n  position: absolute;\n  left: 0;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  width: 100%;\n  height: 100%;\n  border-radius: 3px;\n  cursor: pointer;\n  border: 1px solid #f1f1f1;\n}\n.single-defination{\n\th4{\n\t\tcolor: $dip;\n\t}\n}\n\n.primary-checkbox input:checked + label {\n  background: url(../img/elements/primary-check.png) no-repeat center center/cover;\n  border: none;\n}\n\n.confirm-checkbox {\n  width: 16px;\n  height: 16px;\n  border-radius: 3px;\n  background: #fff;\n  position: relative;\n  cursor: pointer;\n}\n\n.confirm-checkbox input {\n  position: absolute;\n  left: 0;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  width: 100%;\n  height: 100%;\n  opacity: 0;\n}\n\n.confirm-checkbox input + label {\n  position: absolute;\n  left: 0;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  width: 100%;\n  height: 100%;\n  border-radius: 3px;\n  cursor: pointer;\n  border: 1px solid #f1f1f1;\n}\n\n.confirm-checkbox input:checked + label {\n  background: url(../img/elements/success-check.png) no-repeat center center/cover;\n  border: none;\n}\n\n.disabled-checkbox {\n  width: 16px;\n  height: 16px;\n  border-radius: 3px;\n  background: #fff;\n  position: relative;\n  cursor: pointer;\n}\n\n.disabled-checkbox input {\n  position: absolute;\n  left: 0;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  width: 100%;\n  height: 100%;\n  opacity: 0;\n}\n\n.disabled-checkbox input + label {\n  position: absolute;\n  left: 0;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  width: 100%;\n  height: 100%;\n  border-radius: 3px;\n  cursor: pointer;\n  border: 1px solid #f1f1f1;\n}\n\n.disabled-checkbox input:disabled {\n  cursor: not-allowed;\n  z-index: 3;\n}\n\n.disabled-checkbox input:checked + label {\n  background: url(../img/elements/disabled-check.png) no-repeat center center/cover;\n  border: none;\n}\n\n.primary-radio {\n  width: 16px;\n  height: 16px;\n  border-radius: 8px;\n  background: #fff;\n  position: relative;\n  cursor: pointer;\n}\n\n.primary-radio input {\n  position: absolute;\n  left: 0;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  width: 100%;\n  height: 100%;\n  opacity: 0;\n}\n\n.primary-radio input + label {\n  position: absolute;\n  left: 0;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  width: 100%;\n  height: 100%;\n  border-radius: 8px;\n  cursor: pointer;\n  border: 1px solid #f1f1f1;\n}\n\n.primary-radio input:checked + label {\n  background: url(../img/elements/primary-radio.png) no-repeat center center/cover;\n  border: none;\n}\n\n.confirm-radio {\n  width: 16px;\n  height: 16px;\n  border-radius: 8px;\n  background: #fff;\n  position: relative;\n  cursor: pointer;\n}\n\n.confirm-radio input {\n  position: absolute;\n  left: 0;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  width: 100%;\n  height: 100%;\n  opacity: 0;\n}\n\n.confirm-radio input + label {\n  position: absolute;\n  left: 0;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  width: 100%;\n  height: 100%;\n  border-radius: 8px;\n  cursor: pointer;\n  border: 1px solid #f1f1f1;\n}\n\n.confirm-radio input:checked + label {\n  background: url(../img/elements/success-radio.png) no-repeat center center/cover;\n  border: none;\n}\n\n.disabled-radio {\n  width: 16px;\n  height: 16px;\n  border-radius: 8px;\n  background: #fff;\n  position: relative;\n  cursor: pointer;\n}\n\n.disabled-radio input {\n  position: absolute;\n  left: 0;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  width: 100%;\n  height: 100%;\n  opacity: 0;\n}\n\n.disabled-radio input + label {\n  position: absolute;\n  left: 0;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  width: 100%;\n  height: 100%;\n  border-radius: 8px;\n  cursor: pointer;\n  border: 1px solid #f1f1f1;\n}\n\n.disabled-radio input:disabled {\n  cursor: not-allowed;\n  z-index: 3;\n}\n.unordered-list{\n\tlist-style: none;\n\tpadding: 0px;\n\tmargin: 0px;\n}\n.ordered-list{\n\tlist-style: none;\n\tpadding: 0px;\n}\n.disabled-radio input:checked + label {\n  background: url(../img/elements/disabled-radio.png) no-repeat center center/cover;\n  border: none;\n}\n\n.default-select {\n  height: 40px;\n}\n\n.default-select .nice-select {\n  border: none;\n  border-radius: 0px;\n  height: 40px;\n  background: #fff;\n  padding-left: 20px;\n  padding-right: 40px;\n}\n\n.default-select .nice-select .list {\n  margin-top: 0;\n  border: none;\n  border-radius: 0px;\n  box-shadow: none;\n  width: 100%;\n  padding: 10px 0 10px 0px;\n}\n\n.default-select .nice-select .list .option {\n  font-weight: 300;\n  -webkit-transition: all 0.3s ease 0s;\n  -moz-transition: all 0.3s ease 0s;\n  -o-transition: all 0.3s ease 0s;\n  transition: all 0.3s ease 0s;\n  line-height: 28px;\n  min-height: 28px;\n  font-size: 12px;\n  padding-left: 20px;\n}\n\n.default-select .nice-select .list .option.selected {\n  color: #f8b600;\n  background: transparent;\n}\n\n.default-select .nice-select .list .option:hover {\n  color: #f8b600;\n  background: transparent;\n}\n\n.default-select .current {\n  margin-right: 50px;\n  font-weight: 300;\n}\n\n.default-select .nice-select::after {\n  right: 20px;\n}\n\n@media (max-width: 991px) {\n  .left-align-p p {\n    margin-top: 20px;\n  }\n}\n\n.form-select {\n  height: 40px;\n  width: 100%;\n}\n\n.form-select .nice-select {\n  border: none;\n  border-radius: 0px;\n  height: 40px;\n  background: #f9f9ff !important;\n  padding-left: 45px;\n  padding-right: 40px;\n  width: 100%;\n}\n\n.form-select .nice-select .list {\n  margin-top: 0;\n  border: none;\n  border-radius: 0px;\n  box-shadow: none;\n  width: 100%;\n  padding: 10px 0 10px 0px;\n}\n.mt-10{\n\tmargin-top: 10px;\n}\n.form-select .nice-select .list .option {\n  font-weight: 300;\n  -webkit-transition: all 0.3s ease 0s;\n  -moz-transition: all 0.3s ease 0s;\n  -o-transition: all 0.3s ease 0s;\n  transition: all 0.3s ease 0s;\n  line-height: 28px;\n  min-height: 28px;\n  font-size: 12px;\n  padding-left: 45px;\n}\n\n.form-select .nice-select .list .option.selected {\n  color: #f8b600;\n  background: transparent;\n}\n\n.form-select .nice-select .list .option:hover {\n  color: #f8b600;\n  background: transparent;\n}\n\n.form-select .current {\n  margin-right: 50px;\n  font-weight: 300;\n}\n\n.form-select .nice-select::after {\n  right: 20px;\n}\n\n\n\n\n"
  },
  {
    "path": "public/profile/scss/_feature.scss",
    "content": "/* Welcome Area css\n============================================================================================ */\n.welcome_area{\n}\n.welcome_inner{\n\t.welcome_img{\n\t\tbackground: #eeeeee;\n\t\tmargin-left: 40px;\n\t\tpadding-left: 30px;\n\t\tpadding-right: 30px;\n\t\tpadding-bottom: 30px;\n\t\timg{\n\t\t\tmargin-top: -30px;\n\t\t}\n\t}\n}\n.welcome_text{\n\th4{\n\t\tcolor: $dip;\n\t\tfont-family: $hee;\n\t\tfont-size: 36px;\n\t\tmargin-bottom: 18px;\n\t\ttext-transform: uppercase;\n\t}\n\tp{\n\t\tmax-width: 495px;\n\t\tfont-family: $rob;\n\t\tmargin-bottom: 40px;\n\t}\n}\n.wel_item{\n\tborder: 1px solid #eeeeee;\n\tpadding: 20px 20px;\n\tborder-radius: 5px;\n\ti{\n\t\tfont-size: 24px;\n\t\tbackground: linear-gradient(to right, #766dff 0%, #86e7ff 70%);\n\t\t-webkit-background-clip: text;\n\t\t-webkit-text-fill-color: transparent;\n\t}\n\th4{\n\t\tfont-size: 24px;\n\t\tfont-family: $hee;\n\t\tfont-weight: bold;\n\t\tcolor: $dip;\n\t\tmargin-bottom: 5px;\n\t\tmargin-top: 10px;\n\t}\n\tp{\n\t\tfont-size: 16px;\n\t\tfont-family: $rob;\n\t\tcolor: $pfont;\n\t\tmargin-bottom: 0px;\n\t}\n}\n\n.tools_expert{\n\tpadding: 20px 0px 0px 0px;\n\t.skill_main{\n\t\t.skill_item{\n\t\t\tmargin-bottom: 18px;\n\t\t\t&:last-child{\n\t\t\t\tmargin-bottom: 0px;\n\t\t\t}\n\t\t\th4{\n\t\t\t\ttext-align: none;\n\t\t\t\tfont-size: 14px;\n\t\t\t\tfont-family: $rob;\n\t\t\t\tfont-weight: 500;\n\t\t\t\tcolor: $dip;\n\t\t\t\tmargin-bottom: 15px;\n\t\t\t}\n\t\t\t.progress_br{\n\t\t\t\tborder: 1px solid #eeeeee;\n\t\t\t\tpadding: 5px;\n\t\t\t\tborder-radius: 10px;\n\t\t\t}\n\t\t\t.progress{\n\t\t\t\theight: 10px;\n\t\t\t\tborder-radius: 10px;\n\t\t\t\tbackground: #e8e8e8;\n\t\t\t\t.progress-bar{\n\t\t\t\t\twidth: 0%;\n\t\t\t\t\ttransition: width .6s ease;\n\t\t\t\t\theight: 10px;\n\t\t\t\t\tborder-radius: 5px;\n\t\t\t\t\tvertical-align: middle;\n\t\t\t\t\talign-self: center;\n\t\t\t\t\tbackground-image: -moz-linear-gradient( 0deg, rgb(118,109,255) 0%, rgb(136,243,255) 100%);\n\t\t\t\t\tbackground-image: -webkit-linear-gradient( 0deg, rgb(118,109,255) 0%, rgb(136,243,255) 100%);\n\t\t\t\t\tbackground-image: -ms-linear-gradient( 0deg, rgb(118,109,255) 0%, rgb(136,243,255) 100%);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n/* End Welcome Area css\n============================================================================================ */\n\n/* My Tabs Area css\n============================================================================================ */\n.mytabs_area{\n\tbackground-image: -moz-linear-gradient( 0deg, rgb(118,109,255) 0%, rgb(136,243,255) 100%);\n\tbackground-image: -webkit-linear-gradient( 0deg, rgb(118,109,255) 0%, rgb(136,243,255) 100%);\n\tbackground-image: -ms-linear-gradient( 0deg, rgb(118,109,255) 0%, rgb(136,243,255) 100%);\n}\n.tabs_inner{\n\t.nav.nav-tabs{\n\t\tdisplay: block;\n\t\ttext-align: center;\n\t\tborder: none;\n\t\tmargin-bottom: 120px;\n\t\tli{\n\t\t\tdisplay: inline-block;\n\t\t\tmargin-right: 8px;\n\t\t\ta{\n\t\t\t\tmargin: 0px;\n\t\t\t\tline-height: 50px;\n\t\t\t\tborder-radius: 5px;\n\t\t\t\tpadding: 0px 40px;\n\t\t\t\tfont-size: 13px;\n\t\t\t\tfont-weight: 500;\n\t\t\t\tcolor: #fff;\n\t\t\t\tfont-family: $rob;\n\t\t\t\tborder: 1px solid #9ab5f5;\n\t\t\t\tbackground: rgba(255, 255, 255, .1);\n\t\t\t\t&.active{\n\t\t\t\t\tbackground: #fff;\n\t\t\t\t\tcolor: $dip;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t.tab-content{\n\t\t.tab-pane{\n\t\t\t.list{\n\t\t\t\tmax-width: 460px;\n\t\t\t\tmargin: auto;\n\t\t\t\tposition: relative;\n\t\t\t\tpadding-top: 40px;\n\t\t\t\tpadding-bottom: 60px;\n\t\t\t\t&:before{\n\t\t\t\t\tcontent: \"\";\n\t\t\t\t\theight: 100%;\n\t\t\t\t\twidth: 5px;\n\t\t\t\t\tbackground: rgba(255, 255, 255, .20);\n\t\t\t\t\tposition: absolute;\n\t\t\t\t\tleft: 46%;\n\t\t\t\t\ttransform: translateX(-50%);\n\t\t\t\t\ttop: -5px;\n\t\t\t\t}\n\t\t\t\tli{\n\t\t\t\t\tmargin-bottom: 60px;\n\t\t\t\t\tposition: relative;\n\t\t\t\t\tspan{\n\t\t\t\t\t\theight: 15px;\n\t\t\t\t\t\twidth: 15px;\n\t\t\t\t\t\tborder-radius: 50%;\n\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\tbackground: rgba(255, 255, 255, .2);\n\t\t\t\t\t\tposition: absolute;\n\t\t\t\t\t\tleft: 46%;\n\t\t\t\t\t\ttop: 30px;\n\t\t\t\t\t\ttransform: translateX(-50%);\n\t\t\t\t\t\t&:before{\n\t\t\t\t\t\t\tcontent: '';\n\t\t\t\t\t\t\theight: 7px;\n\t\t\t\t\t\t\twidth: 7px;\n\t\t\t\t\t\t\tbackground: #fff;\n\t\t\t\t\t\t\tborder-radius: 50%;\n\t\t\t\t\t\t\tposition: absolute;\n\t\t\t\t\t\t\tleft: 52%;\n\t\t\t\t\t\t\ttop: 4px;\n\t\t\t\t\t\t\ttransform: translateX(-50%);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t&:last-child{\n\t\t\t\t\t\tmargin-bottom: 0px;\n\t\t\t\t\t}\n\t\t\t\t\t.media{\n\t\t\t\t\t\t.d-flex{\n\t\t\t\t\t\t\tpadding-right: 100px;\n\t\t\t\t\t\t\tp{\n\t\t\t\t\t\t\t\tcolor: rgba(255, 255, 255, .75);\n\t\t\t\t\t\t\t\tmargin-bottom: 0px;\n\t\t\t\t\t\t\t\tpadding-top: 20px;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t.media-body{\n\t\t\t\t\t\t\th4{\n\t\t\t\t\t\t\t\tcolor: #fff;\n\t\t\t\t\t\t\t\tfont-size: 21px;\n\t\t\t\t\t\t\t\ttext-transform: uppercase;\n\t\t\t\t\t\t\t\tmargin-bottom: 20px;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tp{\n\t\t\t\t\t\t\t\tcolor: rgba(255, 255, 255, .75);\n\t\t\t\t\t\t\t\tmargin-bottom: 0px;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n/* End My Tabs Area css\n============================================================================================ */\n\n/* Feature Area css\n============================================================================================ */\n.feature_area{\n\tbackground: #f9f9ff;\n\t&.feature_tow{\n\t\tbackground: #fff;\n\t\t.feature_item{\n\t\t\tbackground: #f9f9ff;\n\t\t\t&:hover{\n\t\t\t\tbackground: #fff;\n\t\t\t}\n\t\t}\n\t}\n\t&.white_feature{\n\t\tbackground: #fff;\n\t\t.feature_item{\n\t\t\tbackground: #f9f9ff;\n\t\t\t&:hover{\n\t\t\t\tbackground: #fff;\n\t\t\t}\n\t\t}\n\t}\n}\n.feature_inner{\n\tmargin-bottom: -30px;\n}\n.feature_item{\n\tpadding: 50px 35px;\n\tborder-radius: 10px;\n\t@include transition;\n\tbackground: #fff;\n\tmargin-bottom: 30px;\n\ti{\n\t\tmargin-bottom: 35px;\n\t\tdisplay: block;\n\t\t&:before{\n\t\t\tmargin-left: 0px;\n\t\t\tfont-size: 60px;\n\t\t\tcolor: #e1e1e1;\n\t\t\tline-height: 60px;\n\t\t}\n\t}\n\th4{\n\t\tcolor: $dip;\n\t\tfont-size: 21px;\n\t\tfont-family: $hee;\n\t\tfont-weight: bold;\n\t\tmargin-bottom: 20px;\n\t\ttext-transform: uppercase;\n\t}\n\tp{\n\t\tmargin-bottom: 0px;\n\t}\n\t.main_btn{\n\t\tpadding: 0px 30px;\n\t\tline-height: 38px;\n\t}\n\t&:hover{\n\t\tbox-shadow: 0px 10px 30px 0px rgba(0, 0, 0, 0.08);\n\t\tborder-color: #fff;\n\t\tbackground: #fff;\n\t\ti{\n\t\t\t&:before{\n\t\t\t\tbackground: linear-gradient(to right, #8490ff 0%, #62bdfc 70%);\n\t\t\t\t-webkit-background-clip: text;\n\t\t\t\t-webkit-text-fill-color: transparent;\n\t\t\t}\n\t\t}\n\t}\n}\n/* End Feature Area css\n============================================================================================ */\n\n/* Personal Profile Area css\n============================================================================================ */\n.profile_area{\n\t.col-lg-7{\n\t\tvertical-align: middle;\n\t\talign-self: center;\n\t}\n\t\n}\n.profile_inner{\n\tborder-bottom: 1px solid #eeeeee;\n\t.personal_text{\n\t\tpadding-left: 95px;\n\t}\n}\n\n.personal_text{\n\th6{\n\t\tfont-size: 14px;\n\t\tfont-family: $rob;\n\t\ttext-transform: uppercase;\n\t\tletter-spacing: 2.1px;\n\t\tfont-weight: normal;\n\t\tmargin-bottom: 12px;\n\t\tcolor: $dip;\n\t}\n\th4{\n\t\tfont-size: 16px;\n\t\tfont-weight: 500;\n\t\tfont-family: $rob;\n\t\ttext-transform: uppercase;\n\t\tmargin-bottom: 20px;\n\t\tcolor: $dip;\n\t}\n\th3{\n\t\tfont-size: 48px;\n\t\ttext-transform: uppercase;\n\t\tmargin-bottom: 15px;\n\t\tcolor: $dip;\n\t}\n\tp{\n\t\tfont-family: $rob;\n\t\tmax-width: 540px;\n\t\tcolor: $pfont;\n\t\tmargin-bottom: 40px;\n\t}\n\t.basic_info{\n\t\tli{\n\t\t\tmargin-bottom: 15px;\n\t\t\ta{\n\t\t\t\tposition: relative;\n\t\t\t\tpadding-left: 40px;\n\t\t\t\tfont-size: 16px;\n\t\t\t\tcolor: $pfont;\n\t\t\t\ti{\n\t\t\t\t\tposition: absolute;\n\t\t\t\t\tleft: 0px;\n\t\t\t\t\ttop: 50%;\n\t\t\t\t\ttransform: translateY(-50%);\n\t\t\t\t\tfont-size: 20px;\n\t\t\t\t\tcolor: $baseColor;\n\t\t\t\t}\n\t\t\t}\n\t\t\t&:last-child{\n\t\t\t\tmargin-bottom: 0px;\n\t\t\t}\n\t\t}\n\t}\n\t.personal_social{\n\t\tmargin-top: 45px;\n\t\tli{\n\t\t\tdisplay: inline-block;\n\t\t\tmargin-right: 7px;\n\t\t\t&:last-child{\n\t\t\t\tmargin-right: 0px;\n\t\t\t}\n\t\t\ta{\n\t\t\t\tline-height: 40px;\n\t\t\t\twidth: 40px;\n\t\t\t\tbackground: #e8e8e8;\n\t\t\t\tborder-radius: 5px;\n\t\t\t\tdisplay: inline-block;\n\t\t\t\ttext-align: center;\n\t\t\t\tcolor: #fff;\n\t\t\t\tfont-size: 16px;\n\t\t\t}\n\t\t\t&:hover{\n\t\t\t\ta{\n\t\t\t\t\tbackground-image: -moz-linear-gradient( 0deg, rgb(118,109,255) 0%, rgb(136,243,255) 100%);\n\t\t\t\t\tbackground-image: -webkit-linear-gradient( 0deg, rgb(118,109,255) 0%, rgb(136,243,255) 100%);\n\t\t\t\t\tbackground-image: -ms-linear-gradient( 0deg, rgb(118,109,255) 0%, rgb(136,243,255) 100%);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n\n/* End Personal Profile Area css\n============================================================================================ */"
  },
  {
    "path": "public/profile/scss/_footer.scss",
    "content": "/* Footer Area css\n============================================================================================ */\n.footer_area{\n\tbackground: #000;\n}\n.footer_inner{\n\t\n}\n.f_widget{}\n.f_title{\n\tmargin-bottom: 35px;\n\th3{\n\t\tcolor: #fff;\n\t\tfont-size: 18px;\n\t\tfont-weight: bold;\n\t\tfont-family: $hee;\n\t\tmargin-bottom: 0px;\n\t}\n}\n.ab_widget{\n\tp{\n\t\tfont-size: 14px;\n\t\tline-height: 24px;\n\t\tfont-family: $rob;\n\t\tcolor: $pfont;\n\t\tmargin-bottom: 30px;\n\t\ta{\n\t\t\tcolor: $baseColor;\n\t\t}\n\t\t& + p{\n\t\t\tmargin-bottom: 0px;\n\t\t}\n\t}\n}\n.news_widget{\n\tpadding-right: 15px;\n\tp{\n\t\tfont-size: 14px;\n\t\tline-height: 24px;\n\t\tfont-family: $rob;\n\t\tcolor: $pfont;\n\t\tmargin-bottom: 15px;\n\t}\n\t.input-group{\n\t\tinput{\n\t\t\theight: 40px;\n\t\t\tbackground: transparent;\n\t\t\tborder-radius: 0px;\n\t\t\twidth: 80%;\n\t\t\tborder: none;\n\t\t\tpadding: 0px 15px;\n\t\t\tborder: 1px solid #1e233b;\n\t\t\tfont-size: 14px;\n\t\t\tfont-family: $rob;\n\t\t\tcolor: #cccccc;\n\t\t\toutline: none;\n\t\t\tbox-shadow: none;\n\t\t\t@include placeholder{\n\t\t\t\tfont-size: 14px;\n\t\t\t\tfont-family: $rob;\n\t\t\t\tfont-weight: normal;\n\t\t\t\tcolor: #cccccc;\n\t\t\t}\n\t\t}\n\t\t.sub-btn{\n\t\t\tborder-radius: 0px;\n\t\t\tbackground-image: -moz-linear-gradient( 0deg, rgb(118,109,255) 0%, rgb(136,243,255) 100%);\n\t\t\tbackground-image: -webkit-linear-gradient( 0deg, rgb(118,109,255) 0%, rgb(136,243,255) 100%);\n\t\t\tbackground-image: -ms-linear-gradient( 0deg, rgb(118,109,255) 0%, rgb(136,243,255) 100%);\n\t\t\toutline: none !important;\n\t\t\tbox-shadow: none !important;\n\t\t\tpadding: 0px;\n\t\t\tborder: none;\n\t\t\twidth: 42px;\n\t\t\tcursor: pointer;\n\t\t\tcolor: #fff;\n\t\t}\n\t}\n}\n.social_widget{\n\tp{\n\t\tfont-size: 14px;\n\t\tline-height: 24px;\n\t\tfont-family: $rob;\n\t\tcolor: $pfont;\n\t\tmargin-bottom: 10px;\n\t}\n\t.list{\n\t\tli{\n\t\t\tmargin-right: 17px;\n\t\t\tdisplay: inline-block;\n\t\t\ta{\n\t\t\t\tcolor: #cccccc;\n\t\t\t\tfont-size: 14px;\n\t\t\t\t@include transition;\n\t\t\t}\n\t\t\t&:last-child{\n\t\t\t\tmargin-right: 0px;\n\t\t\t}\n\t\t\t&:hover{\n\t\t\t\ta{\n\t\t\t\t\tcolor: $baseColor;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n.copy_right_text{\n\ttext-align: center;\n\tmargin-top: 60px;\n\tp{\n\t\ta{\n\t\t\tcolor: $baseColor;\n\t\t}\n\t}\n}\n\n/* End Footer Area css\n============================================================================================ */"
  },
  {
    "path": "public/profile/scss/_gallery.scss",
    "content": "/* Gallery Area css\n============================================================================================ */\n.home_gallery_area{\n\t\n}\n.isotope_fillter{\n\tmargin-bottom: 50px;\n\t.gallery_filter{\n\t\ttext-align: center;\n\t\tli{\n\t\t\tdisplay: inline-block;\n\t\t\tmargin-right: 45px;\n\t\t\t&:last-child{\n\t\t\t\tmargin-right: 0px;\n\t\t\t}\n\t\t\ta{\n\t\t\t\tfont-size: 12px;\n\t\t\t\tfont-family: $rob;\n\t\t\t\tfont-weight: 500;\n\t\t\t\tcolor: $dip;\n\t\t\t\t@include transition;\n\t\t\t\ttext-transform: uppercase;\n\t\t\t}\n\t\t\t&:hover, &.active{\n\t\t\t\ta{\n\t\t\t\t\tcolor: $baseColor;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n.gallery_f_inner{\n\tmargin-bottom: -45px;\n}\n.h_gallery_item{\n\tdisplay: inline-block;\n\tmargin-bottom: 45px;\n\t.g_img_item{\n\t\tposition: relative;\n\t\ttext-align: center;\n\t\toverflow: hidden;\n\t\tborder-radius: 5px;\n\t\t&:before{\n\t\t\tcontent: \"\";\n\t\t\twidth: 100%;\n\t\t\theight: 100%;\n\t\t\tleft: 0px;\n\t\t\ttop: 0px;\n\t\t\tbackground-image: -moz-linear-gradient( 0deg, rgb(118,109,255) 0%, rgb(136,243,255) 100%);\n\t\t\tbackground-image: -webkit-linear-gradient( 0deg, rgb(118,109,255) 0%, rgb(136,243,255) 100%);\n\t\t\tbackground-image: -ms-linear-gradient( 0deg, rgb(118,109,255) 0%, rgb(136,243,255) 100%);\n\t\t\tposition: absolute;\n\t\t\topacity: 0;\n\t\t\ttransition: all 300ms ease;\n\t\t}\n\t\t.light{\n\t\t\tposition: absolute;\n\t\t\tleft: 0px;\n\t\t\ttop: 50%;\n\t\t\ttransform: translateY(-50%);\n\t\t\twidth: 100%;\n\t\t\ttext-align: center;\n\t\t\topacity: 0;\n\t\t}\n\t}\n\t.g_item_text{\n\t\ttext-align: center;\n\t\th4{\n\t\t\tcolor: $dip;\n\t\t\tfont-size: 21px;\n\t\t\tmargin-top: 22px;\n\t\t\t@include transition;\n\t\t}\n\t\tp{\n\t\t\tmargin-bottom: 0px;\n\t\t}\n\t}\n\t&:hover{\n\t\t.g_img_item{\n\t\t\t&:before{\n\t\t\t\topacity: .85;\n\t\t\t}\n\t\t\t.light{\n\t\t\t\topacity: 1;\n\t\t\t}\n\t\t}\n\t\t.g_item_text{\n\t\t\th4{\n\t\t\t\t&:hover{\n\t\t\t\t\tcolor: $baseColor;\n\t\t\t\t}\n\t\t\t}\t\n\t\t}\n\t}\n}\n.more_btn{\n\ttext-align: center;\n\tmargin-top: 80px;\n}\n/* End Gallery Area css\n============================================================================================ */\n\n"
  },
  {
    "path": "public/profile/scss/_header.scss",
    "content": "//header_area css\n.header_area{\n    position: absolute;\n    width: 100%;\n    top: 0;\n    left:0;\n    z-index: 99;\n    transition: background 0.4s, all 0.3s linear;\n    .navbar{\n        background: transparent;\n        padding: 0px;\n        border: 0px;\n        border-radius: 0px;\n        .nav{\n            .nav-item{\n\t\t\t\tmargin-right: 45px;\n                .nav-link{\n                    font: 500 12px/120px $rob;\n                    text-transform: uppercase;\n                    color: #fff;\n                    padding: 0px;\n                    display: inline-block;\n                    &:after{\n                        display: none;\n                    }\n                }\n                &:hover, &.active{\n                    .nav-link{\n                        color: #fff;\n                    }\n                }\n                &.submenu{\n                    position: relative;\n                    ul{\n                        border: none;\n                        padding: 0px;\n                        border-radius: 0px;\n                        box-shadow: none;\n                        margin: 0px;\n                        background: #fff;\n\t\t\t\t\t\tbox-shadow: 0px 3px 16px 0px rgba(0, 0, 0, 0.1);\n                        @media (min-width: 992px){\n                            position: absolute;\n                            top: 120%;\n                            left: 0px;\n                            min-width: 200px;\n                            text-align: left;\n                            opacity: 0;\n                            transition: all 300ms ease-in;\n                            visibility: hidden;\n                            display: block;\n                            border: none;\n                            padding: 0px;\n                            border-radius: 0px;\n                        }\n                        &:before{\n                            content: \"\";\n                            width: 0;\n                            height: 0;\n                            border-style: solid;\n                            border-width: 10px 10px 0 10px;\n                            border-color: #eeeeee transparent transparent transparent;\n                            position: absolute;\n                            right: 24px;\n                            top: 45px;\n                            z-index: 3;\n                            opacity: 0;\n                            transition: all 400ms linear;\n                        }\n                        .nav-item{\n                            display: block;\n                            float: none;\n                            margin-right: 0px;\n                            border-bottom: 1px solid #ededed;\n                            margin-left: 0px;\n                            transition: all 0.4s linear;\n                            .nav-link{\n                                line-height: 45px;\n                                color: $dip;\n                                padding: 0px 30px;\n                                transition: all 150ms linear;\n                                display: block;\n                                margin-right: 0px;\n                            }\n                            &:last-child{\n                                border-bottom: none;\n                            }\n                            &:hover{\n                                .nav-link{\n                                    background: $baseColor;\n                                    color: #fff;\n                                }\n                            }    \n                        }\n                    }\n                    &:hover{\n                        ul{\n                            @media (min-width: 992px){\n                                visibility: visible;\n                                opacity: 1;\n                                top: 100%;\n                            }\n                            .nav-item{\n                                margin-top: 0px;\n                            }\n                        }\n                    }\n                }\n\t\t\t\t&:last-child{\n\t\t\t\t\tmargin-right: 0px;\n\t\t\t\t}\n            }\n        }\n        .search{\n            font-size: 12px;\n            line-height: 60px;\n            display: inline-block;\n            color: $dip;\n            margin-left: 80px;\n            i{\n                font-weight: 600;\n            }\n        }\n    }\n//\t& + section, & + row, & + div{\n//\t\tmargin-top: 120px;\n//\t}\n\t&.navbar_fixed{\n\t\t.main_menu{\n\t\t\tposition: fixed;\n\t\t\twidth: 100%;\n\t\t\ttop: -70px;\n\t\t\tleft: 0;\n\t\t\tright: 0;\n\t\t\tbackground: #000;  \n\t\t\ttransform: translateY(70px);\n\t\t\ttransition: transform 500ms ease, background 500ms ease;\n\t\t\t-webkit-transition: transform 500ms ease, background 500ms ease;\n\t\t\tbox-shadow: 0px 3px 16px 0px rgba(0, 0, 0, 0.1);\n\t\t\t.navbar{\n\t\t\t\t.nav{\n\t\t\t\t\t.nav-item{\n\t\t\t\t\t\t.nav-link{\n\t\t\t\t\t\t\tline-height: 70px;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n.top_menu{\n\tbackground: #f9f9ff;\n\t.header_social{\n\t\tli{\n\t\t\tdisplay: inline-block;\n\t\t\tmargin-right: 15px; \n\t\t\ta{\n\t\t\t\tfont-size: 14px;\n\t\t\t\tcolor: $pfont;\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tline-height: 42px;\n\t\t\t\t@include transition;\n\t\t\t}\n\t\t\t&:last-child{\n\t\t\t\tmargin-right: 0px;\n\t\t\t}\n\t\t\t&:hover{\n\t\t\t\ta{\n\t\t\t\t\tcolor: $baseColor;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t.dn_btn{\n\t\tline-height: 42px;\n\t\tdisplay: inline-block;\n\t\tfont-size: 12px;\n\t\tmargin-right: 30px;\n\t\tfont-family: $rob;\n\t\tfont-weight: normal;\n\t\tcolor: $pfont;\n\t\t@include transition;\n\t\t&:hover{\n\t\t\tcolor: $baseColor;\n\t\t}\n\t\t&:last-child{\n\t\t\tmargin-right: 0px;\n\t\t}\n\t}\n\t.lan_pack{\n\t\theight: 30px;\n\t\tborder: 1px solid #eeeeee;\n\t\tborder-radius: 3px;\n\t\tline-height: 28px;\n\t\tfont-size: 12px;\n\t\tfont-family: $rob;\n\t\tfont-weight: 500;\n\t\tpadding-left: 19px;\n\t\tpadding-right: 36px; \n\t\tcolor: $pfont; \n\t\tbackground: #f9f9ff;\n\t\tmargin-right: 5px;\n\t\tmargin-top: 8px;\n\t\t.current{\n\t\t\tcolor: $pfont;\n\t\t}\n\t\t&:after{\n\t\t\tcontent: \"\\f0d7\";\n\t\t\tborder: none !important;\n\t\t\tfont: normal normal normal 12px/1 FontAwesome;\n\t\t\ttransform: rotate(0deg);\n\t\t\theight: auto;\n\t\t\tmargin-top: -6px;\n\t\t\tright: 20px;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "public/profile/scss/_predefine.scss",
    "content": ".list{\n    list-style: none;\n    margin: 0px;\n    padding: 0px;\n}\n\na{\n    text-decoration:none;\n    transition: all 0.3s ease-in-out;\n    &:hover, &:focus{\n       text-decoration:none;\n       outline: none;\n    }\n}\n.row.m0{\n    margin: 0px;\n}\n\nbody{\n    line-height: 26px;\n    font-size: 16px;\n    font-family: $rob;\n    font-weight: normal;\n    color: $pfont;\n}\nh1, h2, h3, h4, h5, h6{ \n    font-family: $hee; \n    font-weight: bold;\n}\n\nbutton:focus{\n    outline: none;\n\tbox-shadow: none;\n}\n.p0{\n\tpadding-left: 0px;\n\tpadding-right: 0px;\n}\n.p_120{\n\tpadding-top: 120px;\n\tpadding-bottom: 120px;\n}\n.p_100{\n\tpadding-top: 100px;\n\tpadding-bottom: 100px;\n}\n.pad_top{\n\tpadding-top: 120px;\n}\n.pad_bt{\n\tpadding-bottom: 120px;\n}\n.mt-25{\n\tmargin-top: 25px;\n}\n.container{\n    @media(min-width:1200px){\n        max-width: 1170px;\n    }\n}\n@media(min-width: 1620px){\n\t.box_1620{\n\t\tmax-width: 1620px;\n\t\tmargin: auto;\n\t\twidth: 100%;\n\t\tpadding-left: 0px;\n\t\tpadding-right: 0px;\n\t}\n}\n\n\n/* Main Title Area css\n============================================================================================ */\n.main_title{\n\ttext-align: center;\n\tmax-width: 670px;\n\tmargin: 0px auto 75px;\n\th2{\n\t\tfont-family: $hee;\n\t\tfont-size: 36px;\n\t\tcolor: $dip;\n\t\tmargin-bottom: 15px;\n\t\ttext-transform: uppercase;\n\t}\n\tp{\n\t\tfont-size: 16px;\n\t\tfont-family: $rob;\n\t\tfont-weight: normal;\n\t\tline-height: 26px;\n\t\tcolor: $pfont;\n\t\tmargin-bottom: 0px;\n\t}\n}\n\n/* End Main Title Area css\n============================================================================================ */\n\n\n\n"
  },
  {
    "path": "public/profile/scss/_testimonials.scss",
    "content": "/* Testimonials Area css\n============================================================================================ */\n.testimonials_area{\n\tbackground: #f9f9ff;\n\t&.testi_two{\n\t\tbackground: #fff;\n\t\t.testi_inner{\n\t\t\tmargin-top: -20px;\n\t\t\tmargin-bottom: -20px;\n\t\t}\n\t\t.owl-item {\n\t\t\tpadding: 20px 0px; \n\t\t}\n\t\t.testi_item{\n\t\t\tbackground: #f9f9ff;\n\t\t\tborder-color: #f9f9ff;\n\t\t\t@include transition;\n\t\t\t&:hover{\n\t\t\t\tbackground: #fff;\n\t\t\t\tborder-color: #fff;\n\t\t\t\tbox-shadow: 0px 10px 30px 0px rgba(153, 153, 153, 0.1);\n\t\t\t}\n\t\t}\n\t}\n}\n.testi_inner{\n\t.col-lg-3{\n\t\tvertical-align: middle;\n\t\talign-self: center;\n\t}\n}\n.test_title{\n\th2{\n\t\tcolor: $dip;\n\t\tfont-size: 36px;\n\t\tfont-family: $rob;\n\t\tfont-weight: bold;\n\t\tmargin-bottom: 12px;\n\t}\n\tp{\n\t\tmargin-bottom: 0px;\n\t}\n}\n.testi_item{\n\tborder: 1px solid #eeeeee;\n\tborder-radius: 10px;\n\tbackground: #fff;\n\tpadding: 40px 28px;\n\tp{\n\t\tfont-style: italic;\n\t}\n\th4{\n\t\tcolor: $dip;\n\t\tfont-size: 18px;\n\t\ttext-transform: uppercase;\n\t}\n\ta{\n\t\tcolor: #ffc000;\n\t}\n}\n/* End Testimonials Area css\n============================================================================================ */"
  },
  {
    "path": "public/profile/scss/_variables.scss",
    "content": "/*font Variables*/\n$rob: 'Roboto', sans-serif;\n$hee: 'Heebo', sans-serif;\n\n\n/*Color Variables*/\n$baseColor: #766dff;\n$dip: #222222;\n$pfont: #777777; \n\n\n/*=================== fonts ====================*/\n@import url('https://fonts.googleapis.com/css?family=Heebo:300,400,700,900|Roboto:300,400,500,700');\n\n// Mixins\n@mixin transition($property: all, $duration: 300ms, $animate: linear, $delay:0s){\n    transition: $property $duration $animate $delay; \n}\n\n// Placeholder Mixins\n\n@mixin placeholder {\n  &.placeholder { @content; }\n  &:-moz-placeholder { @content; }\n  &::-moz-placeholder { @content; }\n  &::-webkit-input-placeholder { @content; }\n}\n\n\n\n\n"
  },
  {
    "path": "public/profile/scss/breadcrumb.scss",
    "content": "/* Home Banner Area css\n============================================================================================ */\n.home_banner_area{\n\tposition: relative;\n\tz-index: 1;\n\tbackground-image: -moz-linear-gradient( 0deg, rgb(118,109,255) 0%, rgb(136,243,255) 100%);\n\tbackground-image: -webkit-linear-gradient( 0deg, rgb(118,109,255) 0%, rgb(136,243,255) 100%);\n\tbackground-image: -ms-linear-gradient( 0deg, rgb(118,109,255) 0%, rgb(136,243,255) 100%);\n\tmargin-bottom: 200px;\n\t.box_1620{\n\t\tmin-height: 700px;\n\t\tborder-radius: 12px;\n\t\tposition: relative;\n\t\tbottom: -200px;\n\t\tbackground: #fff;\n\t\tpadding: 30px;\n\t\tbox-shadow: 0px 20px 80px 0px rgba(153, 153, 153, 0.3);\n\t}\n\t.banner_inner{\n\t\tposition: relative;\n\t\twidth: 100%;\n\t\tmin-height: 700px;\n\t\tdisplay: flex;\n//\t\t.overlay{\n//\t\t\tbackground: url(../img/banner/home-banner.jpg) no-repeat scroll center center;\n//\t\t\tposition: absolute;\n//\t\t\tleft: 0;\n//\t\t\tright: 0;\n//\t\t\ttop: 0;\n//\t\t\theight: 121%;\n//\t\t\tbottom: 0;\n//\t\t\tz-index: -1;\n//\t\t}\n\t\t.banner_content{\n\t\t\tcolor: $dip;\n\t\t\tvertical-align: middle;\n\t\t\talign-self: center;\n\t\t\ttext-align: left;\n\t\t\t.media{\n\t\t\t\t.d-flex{\n\t\t\t\t\tpadding-right: 125px;\n\t\t\t\t}\n\t\t\t\t.media-body{\n\t\t\t\t\tvertical-align: middle;\n\t\t\t\t\talign-self: center;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\t\n\t\n}\n\n.blog_banner{\n\tmin-height: 780px;\n\tposition: relative;\n\tz-index: 1;\n\toverflow: hidden;\n\tmargin-bottom: 0px;\n\t.banner_inner{\n\t\tbackground: #04091e;\n\t\tposition: relative; \n\t\toverflow: hidden;\n\t\twidth: 100%;\n\t\tmin-height: 780px;\n\t\tz-index: 1;\n\t\t.overlay{\n\t\t\tbackground: url(../img/banner/banner-2.jpg) no-repeat scroll center center;\n\t\t\topacity: .5;\n\t\t\theight: 125%;\n\t\t\tposition: absolute;\n\t\t\tleft: 0px;\n\t\t\ttop: 0px;\n\t\t\twidth: 100%;\n\t\t\tz-index: -1;\n\t\t}\n\t\t.blog_b_text{\n\t\t\tmax-width: 700px;\n\t\t\tmargin: auto;\n\t\t\tcolor: #fff;\n\t\t\th2{\n\t\t\t\tfont-size: 60px;\n\t\t\t\tfont-weight: bold;\n\t\t\t\tfont-family: $hee;\n\t\t\t\tline-height: 66px; \n\t\t\t\tmargin-bottom: 15px;\n\t\t\t\ttext-transform: uppercase;\n\t\t\t}\n\t\t\tp{\n\t\t\t\tfont-size: 16px;\n\t\t\t\tmargin-bottom: 35px;\n\t\t\t}\n\t\t\t.white_bg_btn{\n\t\t\t\tline-height: 42px;\n\t\t\t\tpadding: 0px 45px;\n\t\t\t\tborder-radius: 5px;\n\t\t\t}\n\t\t}\n\t}\n}\n\n.banner_box{\n\tmax-width: 1620px;\n\tmargin: auto;\n}\n.banner_area{\n\tposition: relative;\n\tz-index: 1;\n\tmin-height: 350px;\n\tbackground-image: -moz-linear-gradient( 0deg, rgb(118,109,255) 0%, rgb(136,243,255) 100%);\n\tbackground-image: -webkit-linear-gradient( 0deg, rgb(118,109,255) 0%, rgb(136,243,255) 100%);\n\tbackground-image: -ms-linear-gradient( 0deg, rgb(118,109,255) 0%, rgb(136,243,255) 100%);\n\tmargin-bottom: 120px;\n\t.box_1620{\n\t\tbackground: #fff;\n\t\tmin-height: 360px;\n\t\tborder-radius: 12px;\n\t\tposition: relative;\n\t\tbottom: -120px;\n\t\tbox-shadow: 0px 20px 80px 0px rgba(153, 153, 153, 0.3);\n\t}\n\t.banner_inner{\n\t\tposition: relative;\n\t\toverflow: hidden;\n\t\twidth: 100%;\n\t\tmin-height: 360px;\n\t\tz-index: 1;\n//\t\t.overlay{\n//\t\t\tbackground: url(../img/banner/banner.jpg) no-repeat scroll center center;\n//\t\t\tposition: absolute;\n//\t\t\tleft: 0;\n//\t\t\tright: 0;\n//\t\t\ttop: 0;\n//\t\t\theight: 125%;\n//\t\t\tbottom: 0;\n//\t\t\tz-index: -1;\n//\t\t\topacity: .6;\n//\t\t}\n\t\t.banner_content{\n\t\t\th2{\n\t\t\t\tcolor: $dip;\n\t\t\t\tfont-size: 48px;\n\t\t\t\tfont-family: $hee;\n\t\t\t\tmargin-bottom: 0px;\n\t\t\t\tfont-weight: bold;\n\t\t\t}\n\t\t\t.page_link{\n\t\t\t\ta{\n\t\t\t\t\tfont-size: 14px;\n\t\t\t\t\tcolor: $dip;\n\t\t\t\t\tfont-family: $rob;\n\t\t\t\t\tmargin-right: 32px;\n\t\t\t\t\tposition: relative;\n\t\t\t\t\t&:before{\n\t\t\t\t\t\tcontent: \"\\e87a\";\n\t\t\t\t\t\tfont-family: 'Linearicons-Free';\n\t\t\t\t\t\tposition: absolute;\n\t\t\t\t\t\tright: -25px;\n\t\t\t\t\t\ttop: 50%;\n\t\t\t\t\t\ttransform: translateY(-50%);\n\t\t\t\t\t}\n\t\t\t\t\t&:last-child{\n\t\t\t\t\t\tmargin-right: 0px;\n\t\t\t\t\t\t&:before{\n\t\t\t\t\t\t\tdisplay: none;\n\t\t\t\t\t\t}\t\n\t\t\t\t\t}\n\t\t\t\t\t&:hover{\n\t\t\t\t\t\tcolor: $baseColor;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n/* End Home Banner Area css\n============================================================================================ */"
  },
  {
    "path": "public/profile/scss/style.scss",
    "content": "/*----------------------------------------------------\n@File: Default Styles\n@Author: Rocky Ahmed\n@URL: http://wethemez.com\nAuthor E-mail: rockybd1995@gmail.com\n\nThis file contains the styling for the actual theme, this\nis the file you need to edit to change the look of the\ntheme.\n---------------------------------------------------- */\n\n/*=====================================================================\n@Template Name: Builder Construction \n@Author: Rocky Ahmed\n@Developed By: Rocky Ahmed\n@Developer URL: http://rocky.wethemez.com\nAuthor E-mail: rockybd1995@gmail.com\n\n@Default Styles\n\nTable of Content:\n01/ Variables\n02/ predefin\n03/ header\n04/ button\n05/ banner\n06/ breadcrumb\n07/ about\n08/ team\n09/ project \n10/ price \n11/ team \n12/ blog \n13/ video  \n14/ features  \n15/ career  \n16/ contact \n17/ footer\n\n=====================================================================*/ \n\n/*----------------------------------------------------*/\n@import \"variables\";\n/*---------------------------------------------------- */ \n\n/*----------------------------------------------------*/\n@import \"predefine\";\n/*---------------------------------------------------- */\n\n/*----------------------------------------------------*/\n@import \"header\";\n/*---------------------------------------------------- */\n\n/*----------------------------------------------------*/\n@import \"breadcrumb\";\n/*---------------------------------------------------- */\n\n/*----------------------------------------------------*/\n@import \"blog\";\n/*---------------------------------------------------- */\n\n/*----------------------------------------------------*/\n@import \"contact\";\n/*---------------------------------------------------- */ \n\n/*----------------------------------------------------*/\n@import \"elements\";\n/*---------------------------------------------------- */\n\n/*----------------------------------------------------*/\n@import \"button\";\n/*---------------------------------------------------- */\n\n/*----------------------------------------------------*/\n@import \"feature\";\n/*---------------------------------------------------- */\n\n/*----------------------------------------------------*/\n@import \"gallery\";\n/*---------------------------------------------------- */\n\n/*----------------------------------------------------*/\n@import \"testimonials\";\n/*---------------------------------------------------- */\n\n/*----------------------------------------------------*/\n@import \"footer\";\n/*---------------------------------------------------- */\n\n\n\n\n\n"
  },
  {
    "path": "public/profile/vendors/animate-css/animate.css",
    "content": "@charset \"UTF-8\";\n\n/*!\n * animate.css -http://daneden.me/animate\n * Version - 3.5.1\n * Licensed under the MIT license - http://opensource.org/licenses/MIT\n *\n * Copyright (c) 2016 Daniel Eden\n */\n\n.animated {\n  -webkit-animation-duration: 1s;\n  animation-duration: 1s;\n  -webkit-animation-fill-mode: both;\n  animation-fill-mode: both;\n}\n\n.animated.infinite {\n  -webkit-animation-iteration-count: infinite;\n  animation-iteration-count: infinite;\n}\n\n.animated.hinge {\n  -webkit-animation-duration: 2s;\n  animation-duration: 2s;\n}\n\n.animated.flipOutX,\n.animated.flipOutY,\n.animated.bounceIn,\n.animated.bounceOut {\n  -webkit-animation-duration: .75s;\n  animation-duration: .75s;\n}\n\n@-webkit-keyframes bounce {\n  from, 20%, 53%, 80%, to {\n    -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n    animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n    -webkit-transform: translate3d(0,0,0);\n    transform: translate3d(0,0,0);\n  }\n\n  40%, 43% {\n    -webkit-animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);\n    animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);\n    -webkit-transform: translate3d(0, -30px, 0);\n    transform: translate3d(0, -30px, 0);\n  }\n\n  70% {\n    -webkit-animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);\n    animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);\n    -webkit-transform: translate3d(0, -15px, 0);\n    transform: translate3d(0, -15px, 0);\n  }\n\n  90% {\n    -webkit-transform: translate3d(0,-4px,0);\n    transform: translate3d(0,-4px,0);\n  }\n}\n\n@keyframes bounce {\n  from, 20%, 53%, 80%, to {\n    -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n    animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n    -webkit-transform: translate3d(0,0,0);\n    transform: translate3d(0,0,0);\n  }\n\n  40%, 43% {\n    -webkit-animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);\n    animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);\n    -webkit-transform: translate3d(0, -30px, 0);\n    transform: translate3d(0, -30px, 0);\n  }\n\n  70% {\n    -webkit-animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);\n    animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);\n    -webkit-transform: translate3d(0, -15px, 0);\n    transform: translate3d(0, -15px, 0);\n  }\n\n  90% {\n    -webkit-transform: translate3d(0,-4px,0);\n    transform: translate3d(0,-4px,0);\n  }\n}\n\n.bounce {\n  -webkit-animation-name: bounce;\n  animation-name: bounce;\n  -webkit-transform-origin: center bottom;\n  transform-origin: center bottom;\n}\n\n@-webkit-keyframes flash {\n  from, 50%, to {\n    opacity: 1;\n  }\n\n  25%, 75% {\n    opacity: 0;\n  }\n}\n\n@keyframes flash {\n  from, 50%, to {\n    opacity: 1;\n  }\n\n  25%, 75% {\n    opacity: 0;\n  }\n}\n\n.flash {\n  -webkit-animation-name: flash;\n  animation-name: flash;\n}\n\n/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */\n\n@-webkit-keyframes pulse {\n  from {\n    -webkit-transform: scale3d(1, 1, 1);\n    transform: scale3d(1, 1, 1);\n  }\n\n  50% {\n    -webkit-transform: scale3d(1.05, 1.05, 1.05);\n    transform: scale3d(1.05, 1.05, 1.05);\n  }\n\n  to {\n    -webkit-transform: scale3d(1, 1, 1);\n    transform: scale3d(1, 1, 1);\n  }\n}\n\n@keyframes pulse {\n  from {\n    -webkit-transform: scale3d(1, 1, 1);\n    transform: scale3d(1, 1, 1);\n  }\n\n  50% {\n    -webkit-transform: scale3d(1.05, 1.05, 1.05);\n    transform: scale3d(1.05, 1.05, 1.05);\n  }\n\n  to {\n    -webkit-transform: scale3d(1, 1, 1);\n    transform: scale3d(1, 1, 1);\n  }\n}\n\n.pulse {\n  -webkit-animation-name: pulse;\n  animation-name: pulse;\n}\n\n@-webkit-keyframes rubberBand {\n  from {\n    -webkit-transform: scale3d(1, 1, 1);\n    transform: scale3d(1, 1, 1);\n  }\n\n  30% {\n    -webkit-transform: scale3d(1.25, 0.75, 1);\n    transform: scale3d(1.25, 0.75, 1);\n  }\n\n  40% {\n    -webkit-transform: scale3d(0.75, 1.25, 1);\n    transform: scale3d(0.75, 1.25, 1);\n  }\n\n  50% {\n    -webkit-transform: scale3d(1.15, 0.85, 1);\n    transform: scale3d(1.15, 0.85, 1);\n  }\n\n  65% {\n    -webkit-transform: scale3d(.95, 1.05, 1);\n    transform: scale3d(.95, 1.05, 1);\n  }\n\n  75% {\n    -webkit-transform: scale3d(1.05, .95, 1);\n    transform: scale3d(1.05, .95, 1);\n  }\n\n  to {\n    -webkit-transform: scale3d(1, 1, 1);\n    transform: scale3d(1, 1, 1);\n  }\n}\n\n@keyframes rubberBand {\n  from {\n    -webkit-transform: scale3d(1, 1, 1);\n    transform: scale3d(1, 1, 1);\n  }\n\n  30% {\n    -webkit-transform: scale3d(1.25, 0.75, 1);\n    transform: scale3d(1.25, 0.75, 1);\n  }\n\n  40% {\n    -webkit-transform: scale3d(0.75, 1.25, 1);\n    transform: scale3d(0.75, 1.25, 1);\n  }\n\n  50% {\n    -webkit-transform: scale3d(1.15, 0.85, 1);\n    transform: scale3d(1.15, 0.85, 1);\n  }\n\n  65% {\n    -webkit-transform: scale3d(.95, 1.05, 1);\n    transform: scale3d(.95, 1.05, 1);\n  }\n\n  75% {\n    -webkit-transform: scale3d(1.05, .95, 1);\n    transform: scale3d(1.05, .95, 1);\n  }\n\n  to {\n    -webkit-transform: scale3d(1, 1, 1);\n    transform: scale3d(1, 1, 1);\n  }\n}\n\n.rubberBand {\n  -webkit-animation-name: rubberBand;\n  animation-name: rubberBand;\n}\n\n@-webkit-keyframes shake {\n  from, to {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n\n  10%, 30%, 50%, 70%, 90% {\n    -webkit-transform: translate3d(-10px, 0, 0);\n    transform: translate3d(-10px, 0, 0);\n  }\n\n  20%, 40%, 60%, 80% {\n    -webkit-transform: translate3d(10px, 0, 0);\n    transform: translate3d(10px, 0, 0);\n  }\n}\n\n@keyframes shake {\n  from, to {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n\n  10%, 30%, 50%, 70%, 90% {\n    -webkit-transform: translate3d(-10px, 0, 0);\n    transform: translate3d(-10px, 0, 0);\n  }\n\n  20%, 40%, 60%, 80% {\n    -webkit-transform: translate3d(10px, 0, 0);\n    transform: translate3d(10px, 0, 0);\n  }\n}\n\n.shake {\n  -webkit-animation-name: shake;\n  animation-name: shake;\n}\n\n@-webkit-keyframes headShake {\n  0% {\n    -webkit-transform: translateX(0);\n    transform: translateX(0);\n  }\n\n  6.5% {\n    -webkit-transform: translateX(-6px) rotateY(-9deg);\n    transform: translateX(-6px) rotateY(-9deg);\n  }\n\n  18.5% {\n    -webkit-transform: translateX(5px) rotateY(7deg);\n    transform: translateX(5px) rotateY(7deg);\n  }\n\n  31.5% {\n    -webkit-transform: translateX(-3px) rotateY(-5deg);\n    transform: translateX(-3px) rotateY(-5deg);\n  }\n\n  43.5% {\n    -webkit-transform: translateX(2px) rotateY(3deg);\n    transform: translateX(2px) rotateY(3deg);\n  }\n\n  50% {\n    -webkit-transform: translateX(0);\n    transform: translateX(0);\n  }\n}\n\n@keyframes headShake {\n  0% {\n    -webkit-transform: translateX(0);\n    transform: translateX(0);\n  }\n\n  6.5% {\n    -webkit-transform: translateX(-6px) rotateY(-9deg);\n    transform: translateX(-6px) rotateY(-9deg);\n  }\n\n  18.5% {\n    -webkit-transform: translateX(5px) rotateY(7deg);\n    transform: translateX(5px) rotateY(7deg);\n  }\n\n  31.5% {\n    -webkit-transform: translateX(-3px) rotateY(-5deg);\n    transform: translateX(-3px) rotateY(-5deg);\n  }\n\n  43.5% {\n    -webkit-transform: translateX(2px) rotateY(3deg);\n    transform: translateX(2px) rotateY(3deg);\n  }\n\n  50% {\n    -webkit-transform: translateX(0);\n    transform: translateX(0);\n  }\n}\n\n.headShake {\n  -webkit-animation-timing-function: ease-in-out;\n  animation-timing-function: ease-in-out;\n  -webkit-animation-name: headShake;\n  animation-name: headShake;\n}\n\n@-webkit-keyframes swing {\n  20% {\n    -webkit-transform: rotate3d(0, 0, 1, 15deg);\n    transform: rotate3d(0, 0, 1, 15deg);\n  }\n\n  40% {\n    -webkit-transform: rotate3d(0, 0, 1, -10deg);\n    transform: rotate3d(0, 0, 1, -10deg);\n  }\n\n  60% {\n    -webkit-transform: rotate3d(0, 0, 1, 5deg);\n    transform: rotate3d(0, 0, 1, 5deg);\n  }\n\n  80% {\n    -webkit-transform: rotate3d(0, 0, 1, -5deg);\n    transform: rotate3d(0, 0, 1, -5deg);\n  }\n\n  to {\n    -webkit-transform: rotate3d(0, 0, 1, 0deg);\n    transform: rotate3d(0, 0, 1, 0deg);\n  }\n}\n\n@keyframes swing {\n  20% {\n    -webkit-transform: rotate3d(0, 0, 1, 15deg);\n    transform: rotate3d(0, 0, 1, 15deg);\n  }\n\n  40% {\n    -webkit-transform: rotate3d(0, 0, 1, -10deg);\n    transform: rotate3d(0, 0, 1, -10deg);\n  }\n\n  60% {\n    -webkit-transform: rotate3d(0, 0, 1, 5deg);\n    transform: rotate3d(0, 0, 1, 5deg);\n  }\n\n  80% {\n    -webkit-transform: rotate3d(0, 0, 1, -5deg);\n    transform: rotate3d(0, 0, 1, -5deg);\n  }\n\n  to {\n    -webkit-transform: rotate3d(0, 0, 1, 0deg);\n    transform: rotate3d(0, 0, 1, 0deg);\n  }\n}\n\n.swing {\n  -webkit-transform-origin: top center;\n  transform-origin: top center;\n  -webkit-animation-name: swing;\n  animation-name: swing;\n}\n\n@-webkit-keyframes tada {\n  from {\n    -webkit-transform: scale3d(1, 1, 1);\n    transform: scale3d(1, 1, 1);\n  }\n\n  10%, 20% {\n    -webkit-transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg);\n    transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg);\n  }\n\n  30%, 50%, 70%, 90% {\n    -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);\n    transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);\n  }\n\n  40%, 60%, 80% {\n    -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);\n    transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);\n  }\n\n  to {\n    -webkit-transform: scale3d(1, 1, 1);\n    transform: scale3d(1, 1, 1);\n  }\n}\n\n@keyframes tada {\n  from {\n    -webkit-transform: scale3d(1, 1, 1);\n    transform: scale3d(1, 1, 1);\n  }\n\n  10%, 20% {\n    -webkit-transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg);\n    transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg);\n  }\n\n  30%, 50%, 70%, 90% {\n    -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);\n    transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);\n  }\n\n  40%, 60%, 80% {\n    -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);\n    transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);\n  }\n\n  to {\n    -webkit-transform: scale3d(1, 1, 1);\n    transform: scale3d(1, 1, 1);\n  }\n}\n\n.tada {\n  -webkit-animation-name: tada;\n  animation-name: tada;\n}\n\n/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */\n\n@-webkit-keyframes wobble {\n  from {\n    -webkit-transform: none;\n    transform: none;\n  }\n\n  15% {\n    -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);\n    transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);\n  }\n\n  30% {\n    -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);\n    transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);\n  }\n\n  45% {\n    -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);\n    transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);\n  }\n\n  60% {\n    -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);\n    transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);\n  }\n\n  75% {\n    -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);\n    transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);\n  }\n\n  to {\n    -webkit-transform: none;\n    transform: none;\n  }\n}\n\n@keyframes wobble {\n  from {\n    -webkit-transform: none;\n    transform: none;\n  }\n\n  15% {\n    -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);\n    transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);\n  }\n\n  30% {\n    -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);\n    transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);\n  }\n\n  45% {\n    -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);\n    transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);\n  }\n\n  60% {\n    -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);\n    transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);\n  }\n\n  75% {\n    -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);\n    transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);\n  }\n\n  to {\n    -webkit-transform: none;\n    transform: none;\n  }\n}\n\n.wobble {\n  -webkit-animation-name: wobble;\n  animation-name: wobble;\n}\n\n@-webkit-keyframes jello {\n  from, 11.1%, to {\n    -webkit-transform: none;\n    transform: none;\n  }\n\n  22.2% {\n    -webkit-transform: skewX(-12.5deg) skewY(-12.5deg);\n    transform: skewX(-12.5deg) skewY(-12.5deg);\n  }\n\n  33.3% {\n    -webkit-transform: skewX(6.25deg) skewY(6.25deg);\n    transform: skewX(6.25deg) skewY(6.25deg);\n  }\n\n  44.4% {\n    -webkit-transform: skewX(-3.125deg) skewY(-3.125deg);\n    transform: skewX(-3.125deg) skewY(-3.125deg);\n  }\n\n  55.5% {\n    -webkit-transform: skewX(1.5625deg) skewY(1.5625deg);\n    transform: skewX(1.5625deg) skewY(1.5625deg);\n  }\n\n  66.6% {\n    -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg);\n    transform: skewX(-0.78125deg) skewY(-0.78125deg);\n  }\n\n  77.7% {\n    -webkit-transform: skewX(0.390625deg) skewY(0.390625deg);\n    transform: skewX(0.390625deg) skewY(0.390625deg);\n  }\n\n  88.8% {\n    -webkit-transform: skewX(-0.1953125deg) skewY(-0.1953125deg);\n    transform: skewX(-0.1953125deg) skewY(-0.1953125deg);\n  }\n}\n\n@keyframes jello {\n  from, 11.1%, to {\n    -webkit-transform: none;\n    transform: none;\n  }\n\n  22.2% {\n    -webkit-transform: skewX(-12.5deg) skewY(-12.5deg);\n    transform: skewX(-12.5deg) skewY(-12.5deg);\n  }\n\n  33.3% {\n    -webkit-transform: skewX(6.25deg) skewY(6.25deg);\n    transform: skewX(6.25deg) skewY(6.25deg);\n  }\n\n  44.4% {\n    -webkit-transform: skewX(-3.125deg) skewY(-3.125deg);\n    transform: skewX(-3.125deg) skewY(-3.125deg);\n  }\n\n  55.5% {\n    -webkit-transform: skewX(1.5625deg) skewY(1.5625deg);\n    transform: skewX(1.5625deg) skewY(1.5625deg);\n  }\n\n  66.6% {\n    -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg);\n    transform: skewX(-0.78125deg) skewY(-0.78125deg);\n  }\n\n  77.7% {\n    -webkit-transform: skewX(0.390625deg) skewY(0.390625deg);\n    transform: skewX(0.390625deg) skewY(0.390625deg);\n  }\n\n  88.8% {\n    -webkit-transform: skewX(-0.1953125deg) skewY(-0.1953125deg);\n    transform: skewX(-0.1953125deg) skewY(-0.1953125deg);\n  }\n}\n\n.jello {\n  -webkit-animation-name: jello;\n  animation-name: jello;\n  -webkit-transform-origin: center;\n  transform-origin: center;\n}\n\n@-webkit-keyframes bounceIn {\n  from, 20%, 40%, 60%, 80%, to {\n    -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n    animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n  }\n\n  0% {\n    opacity: 0;\n    -webkit-transform: scale3d(.3, .3, .3);\n    transform: scale3d(.3, .3, .3);\n  }\n\n  20% {\n    -webkit-transform: scale3d(1.1, 1.1, 1.1);\n    transform: scale3d(1.1, 1.1, 1.1);\n  }\n\n  40% {\n    -webkit-transform: scale3d(.9, .9, .9);\n    transform: scale3d(.9, .9, .9);\n  }\n\n  60% {\n    opacity: 1;\n    -webkit-transform: scale3d(1.03, 1.03, 1.03);\n    transform: scale3d(1.03, 1.03, 1.03);\n  }\n\n  80% {\n    -webkit-transform: scale3d(.97, .97, .97);\n    transform: scale3d(.97, .97, .97);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: scale3d(1, 1, 1);\n    transform: scale3d(1, 1, 1);\n  }\n}\n\n@keyframes bounceIn {\n  from, 20%, 40%, 60%, 80%, to {\n    -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n    animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n  }\n\n  0% {\n    opacity: 0;\n    -webkit-transform: scale3d(.3, .3, .3);\n    transform: scale3d(.3, .3, .3);\n  }\n\n  20% {\n    -webkit-transform: scale3d(1.1, 1.1, 1.1);\n    transform: scale3d(1.1, 1.1, 1.1);\n  }\n\n  40% {\n    -webkit-transform: scale3d(.9, .9, .9);\n    transform: scale3d(.9, .9, .9);\n  }\n\n  60% {\n    opacity: 1;\n    -webkit-transform: scale3d(1.03, 1.03, 1.03);\n    transform: scale3d(1.03, 1.03, 1.03);\n  }\n\n  80% {\n    -webkit-transform: scale3d(.97, .97, .97);\n    transform: scale3d(.97, .97, .97);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: scale3d(1, 1, 1);\n    transform: scale3d(1, 1, 1);\n  }\n}\n\n.bounceIn {\n  -webkit-animation-name: bounceIn;\n  animation-name: bounceIn;\n}\n\n@-webkit-keyframes bounceInDown {\n  from, 60%, 75%, 90%, to {\n    -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n    animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n  }\n\n  0% {\n    opacity: 0;\n    -webkit-transform: translate3d(0, -3000px, 0);\n    transform: translate3d(0, -3000px, 0);\n  }\n\n  60% {\n    opacity: 1;\n    -webkit-transform: translate3d(0, 25px, 0);\n    transform: translate3d(0, 25px, 0);\n  }\n\n  75% {\n    -webkit-transform: translate3d(0, -10px, 0);\n    transform: translate3d(0, -10px, 0);\n  }\n\n  90% {\n    -webkit-transform: translate3d(0, 5px, 0);\n    transform: translate3d(0, 5px, 0);\n  }\n\n  to {\n    -webkit-transform: none;\n    transform: none;\n  }\n}\n\n@keyframes bounceInDown {\n  from, 60%, 75%, 90%, to {\n    -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n    animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n  }\n\n  0% {\n    opacity: 0;\n    -webkit-transform: translate3d(0, -3000px, 0);\n    transform: translate3d(0, -3000px, 0);\n  }\n\n  60% {\n    opacity: 1;\n    -webkit-transform: translate3d(0, 25px, 0);\n    transform: translate3d(0, 25px, 0);\n  }\n\n  75% {\n    -webkit-transform: translate3d(0, -10px, 0);\n    transform: translate3d(0, -10px, 0);\n  }\n\n  90% {\n    -webkit-transform: translate3d(0, 5px, 0);\n    transform: translate3d(0, 5px, 0);\n  }\n\n  to {\n    -webkit-transform: none;\n    transform: none;\n  }\n}\n\n.bounceInDown {\n  -webkit-animation-name: bounceInDown;\n  animation-name: bounceInDown;\n}\n\n@-webkit-keyframes bounceInLeft {\n  from, 60%, 75%, 90%, to {\n    -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n    animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n  }\n\n  0% {\n    opacity: 0;\n    -webkit-transform: translate3d(-3000px, 0, 0);\n    transform: translate3d(-3000px, 0, 0);\n  }\n\n  60% {\n    opacity: 1;\n    -webkit-transform: translate3d(25px, 0, 0);\n    transform: translate3d(25px, 0, 0);\n  }\n\n  75% {\n    -webkit-transform: translate3d(-10px, 0, 0);\n    transform: translate3d(-10px, 0, 0);\n  }\n\n  90% {\n    -webkit-transform: translate3d(5px, 0, 0);\n    transform: translate3d(5px, 0, 0);\n  }\n\n  to {\n    -webkit-transform: none;\n    transform: none;\n  }\n}\n\n@keyframes bounceInLeft {\n  from, 60%, 75%, 90%, to {\n    -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n    animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n  }\n\n  0% {\n    opacity: 0;\n    -webkit-transform: translate3d(-3000px, 0, 0);\n    transform: translate3d(-3000px, 0, 0);\n  }\n\n  60% {\n    opacity: 1;\n    -webkit-transform: translate3d(25px, 0, 0);\n    transform: translate3d(25px, 0, 0);\n  }\n\n  75% {\n    -webkit-transform: translate3d(-10px, 0, 0);\n    transform: translate3d(-10px, 0, 0);\n  }\n\n  90% {\n    -webkit-transform: translate3d(5px, 0, 0);\n    transform: translate3d(5px, 0, 0);\n  }\n\n  to {\n    -webkit-transform: none;\n    transform: none;\n  }\n}\n\n.bounceInLeft {\n  -webkit-animation-name: bounceInLeft;\n  animation-name: bounceInLeft;\n}\n\n@-webkit-keyframes bounceInRight {\n  from, 60%, 75%, 90%, to {\n    -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n    animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n  }\n\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(3000px, 0, 0);\n    transform: translate3d(3000px, 0, 0);\n  }\n\n  60% {\n    opacity: 1;\n    -webkit-transform: translate3d(-25px, 0, 0);\n    transform: translate3d(-25px, 0, 0);\n  }\n\n  75% {\n    -webkit-transform: translate3d(10px, 0, 0);\n    transform: translate3d(10px, 0, 0);\n  }\n\n  90% {\n    -webkit-transform: translate3d(-5px, 0, 0);\n    transform: translate3d(-5px, 0, 0);\n  }\n\n  to {\n    -webkit-transform: none;\n    transform: none;\n  }\n}\n\n@keyframes bounceInRight {\n  from, 60%, 75%, 90%, to {\n    -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n    animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n  }\n\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(3000px, 0, 0);\n    transform: translate3d(3000px, 0, 0);\n  }\n\n  60% {\n    opacity: 1;\n    -webkit-transform: translate3d(-25px, 0, 0);\n    transform: translate3d(-25px, 0, 0);\n  }\n\n  75% {\n    -webkit-transform: translate3d(10px, 0, 0);\n    transform: translate3d(10px, 0, 0);\n  }\n\n  90% {\n    -webkit-transform: translate3d(-5px, 0, 0);\n    transform: translate3d(-5px, 0, 0);\n  }\n\n  to {\n    -webkit-transform: none;\n    transform: none;\n  }\n}\n\n.bounceInRight {\n  -webkit-animation-name: bounceInRight;\n  animation-name: bounceInRight;\n}\n\n@-webkit-keyframes bounceInUp {\n  from, 60%, 75%, 90%, to {\n    -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n    animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n  }\n\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(0, 3000px, 0);\n    transform: translate3d(0, 3000px, 0);\n  }\n\n  60% {\n    opacity: 1;\n    -webkit-transform: translate3d(0, -20px, 0);\n    transform: translate3d(0, -20px, 0);\n  }\n\n  75% {\n    -webkit-transform: translate3d(0, 10px, 0);\n    transform: translate3d(0, 10px, 0);\n  }\n\n  90% {\n    -webkit-transform: translate3d(0, -5px, 0);\n    transform: translate3d(0, -5px, 0);\n  }\n\n  to {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n}\n\n@keyframes bounceInUp {\n  from, 60%, 75%, 90%, to {\n    -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n    animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);\n  }\n\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(0, 3000px, 0);\n    transform: translate3d(0, 3000px, 0);\n  }\n\n  60% {\n    opacity: 1;\n    -webkit-transform: translate3d(0, -20px, 0);\n    transform: translate3d(0, -20px, 0);\n  }\n\n  75% {\n    -webkit-transform: translate3d(0, 10px, 0);\n    transform: translate3d(0, 10px, 0);\n  }\n\n  90% {\n    -webkit-transform: translate3d(0, -5px, 0);\n    transform: translate3d(0, -5px, 0);\n  }\n\n  to {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n}\n\n.bounceInUp {\n  -webkit-animation-name: bounceInUp;\n  animation-name: bounceInUp;\n}\n\n@-webkit-keyframes bounceOut {\n  20% {\n    -webkit-transform: scale3d(.9, .9, .9);\n    transform: scale3d(.9, .9, .9);\n  }\n\n  50%, 55% {\n    opacity: 1;\n    -webkit-transform: scale3d(1.1, 1.1, 1.1);\n    transform: scale3d(1.1, 1.1, 1.1);\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: scale3d(.3, .3, .3);\n    transform: scale3d(.3, .3, .3);\n  }\n}\n\n@keyframes bounceOut {\n  20% {\n    -webkit-transform: scale3d(.9, .9, .9);\n    transform: scale3d(.9, .9, .9);\n  }\n\n  50%, 55% {\n    opacity: 1;\n    -webkit-transform: scale3d(1.1, 1.1, 1.1);\n    transform: scale3d(1.1, 1.1, 1.1);\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: scale3d(.3, .3, .3);\n    transform: scale3d(.3, .3, .3);\n  }\n}\n\n.bounceOut {\n  -webkit-animation-name: bounceOut;\n  animation-name: bounceOut;\n}\n\n@-webkit-keyframes bounceOutDown {\n  20% {\n    -webkit-transform: translate3d(0, 10px, 0);\n    transform: translate3d(0, 10px, 0);\n  }\n\n  40%, 45% {\n    opacity: 1;\n    -webkit-transform: translate3d(0, -20px, 0);\n    transform: translate3d(0, -20px, 0);\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(0, 2000px, 0);\n    transform: translate3d(0, 2000px, 0);\n  }\n}\n\n@keyframes bounceOutDown {\n  20% {\n    -webkit-transform: translate3d(0, 10px, 0);\n    transform: translate3d(0, 10px, 0);\n  }\n\n  40%, 45% {\n    opacity: 1;\n    -webkit-transform: translate3d(0, -20px, 0);\n    transform: translate3d(0, -20px, 0);\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(0, 2000px, 0);\n    transform: translate3d(0, 2000px, 0);\n  }\n}\n\n.bounceOutDown {\n  -webkit-animation-name: bounceOutDown;\n  animation-name: bounceOutDown;\n}\n\n@-webkit-keyframes bounceOutLeft {\n  20% {\n    opacity: 1;\n    -webkit-transform: translate3d(20px, 0, 0);\n    transform: translate3d(20px, 0, 0);\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(-2000px, 0, 0);\n    transform: translate3d(-2000px, 0, 0);\n  }\n}\n\n@keyframes bounceOutLeft {\n  20% {\n    opacity: 1;\n    -webkit-transform: translate3d(20px, 0, 0);\n    transform: translate3d(20px, 0, 0);\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(-2000px, 0, 0);\n    transform: translate3d(-2000px, 0, 0);\n  }\n}\n\n.bounceOutLeft {\n  -webkit-animation-name: bounceOutLeft;\n  animation-name: bounceOutLeft;\n}\n\n@-webkit-keyframes bounceOutRight {\n  20% {\n    opacity: 1;\n    -webkit-transform: translate3d(-20px, 0, 0);\n    transform: translate3d(-20px, 0, 0);\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(2000px, 0, 0);\n    transform: translate3d(2000px, 0, 0);\n  }\n}\n\n@keyframes bounceOutRight {\n  20% {\n    opacity: 1;\n    -webkit-transform: translate3d(-20px, 0, 0);\n    transform: translate3d(-20px, 0, 0);\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(2000px, 0, 0);\n    transform: translate3d(2000px, 0, 0);\n  }\n}\n\n.bounceOutRight {\n  -webkit-animation-name: bounceOutRight;\n  animation-name: bounceOutRight;\n}\n\n@-webkit-keyframes bounceOutUp {\n  20% {\n    -webkit-transform: translate3d(0, -10px, 0);\n    transform: translate3d(0, -10px, 0);\n  }\n\n  40%, 45% {\n    opacity: 1;\n    -webkit-transform: translate3d(0, 20px, 0);\n    transform: translate3d(0, 20px, 0);\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(0, -2000px, 0);\n    transform: translate3d(0, -2000px, 0);\n  }\n}\n\n@keyframes bounceOutUp {\n  20% {\n    -webkit-transform: translate3d(0, -10px, 0);\n    transform: translate3d(0, -10px, 0);\n  }\n\n  40%, 45% {\n    opacity: 1;\n    -webkit-transform: translate3d(0, 20px, 0);\n    transform: translate3d(0, 20px, 0);\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(0, -2000px, 0);\n    transform: translate3d(0, -2000px, 0);\n  }\n}\n\n.bounceOutUp {\n  -webkit-animation-name: bounceOutUp;\n  animation-name: bounceOutUp;\n}\n\n@-webkit-keyframes fadeIn {\n  from {\n    opacity: 0;\n  }\n\n  to {\n    opacity: 1;\n  }\n}\n\n@keyframes fadeIn {\n  from {\n    opacity: 0;\n  }\n\n  to {\n    opacity: 1;\n  }\n}\n\n.fadeIn {\n  -webkit-animation-name: fadeIn;\n  animation-name: fadeIn;\n}\n\n@-webkit-keyframes fadeInDown {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(0, -100%, 0);\n    transform: translate3d(0, -100%, 0);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: none;\n    transform: none;\n  }\n}\n\n@keyframes fadeInDown {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(0, -100%, 0);\n    transform: translate3d(0, -100%, 0);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: none;\n    transform: none;\n  }\n}\n\n.fadeInDown {\n  -webkit-animation-name: fadeInDown;\n  animation-name: fadeInDown;\n}\n\n@-webkit-keyframes fadeInDownBig {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(0, -2000px, 0);\n    transform: translate3d(0, -2000px, 0);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: none;\n    transform: none;\n  }\n}\n\n@keyframes fadeInDownBig {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(0, -2000px, 0);\n    transform: translate3d(0, -2000px, 0);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: none;\n    transform: none;\n  }\n}\n\n.fadeInDownBig {\n  -webkit-animation-name: fadeInDownBig;\n  animation-name: fadeInDownBig;\n}\n\n@-webkit-keyframes fadeInLeft {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(-100%, 0, 0);\n    transform: translate3d(-100%, 0, 0);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: none;\n    transform: none;\n  }\n}\n\n@keyframes fadeInLeft {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(-100%, 0, 0);\n    transform: translate3d(-100%, 0, 0);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: none;\n    transform: none;\n  }\n}\n\n.fadeInLeft {\n  -webkit-animation-name: fadeInLeft;\n  animation-name: fadeInLeft;\n}\n\n@-webkit-keyframes fadeInLeftBig {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(-2000px, 0, 0);\n    transform: translate3d(-2000px, 0, 0);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: none;\n    transform: none;\n  }\n}\n\n@keyframes fadeInLeftBig {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(-2000px, 0, 0);\n    transform: translate3d(-2000px, 0, 0);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: none;\n    transform: none;\n  }\n}\n\n.fadeInLeftBig {\n  -webkit-animation-name: fadeInLeftBig;\n  animation-name: fadeInLeftBig;\n}\n\n@-webkit-keyframes fadeInRight {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(100%, 0, 0);\n    transform: translate3d(100%, 0, 0);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: none;\n    transform: none;\n  }\n}\n\n@keyframes fadeInRight {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(100%, 0, 0);\n    transform: translate3d(100%, 0, 0);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: none;\n    transform: none;\n  }\n}\n\n.fadeInRight {\n  -webkit-animation-name: fadeInRight;\n  animation-name: fadeInRight;\n}\n\n@-webkit-keyframes fadeInRightBig {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(2000px, 0, 0);\n    transform: translate3d(2000px, 0, 0);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: none;\n    transform: none;\n  }\n}\n\n@keyframes fadeInRightBig {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(2000px, 0, 0);\n    transform: translate3d(2000px, 0, 0);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: none;\n    transform: none;\n  }\n}\n\n.fadeInRightBig {\n  -webkit-animation-name: fadeInRightBig;\n  animation-name: fadeInRightBig;\n}\n\n@-webkit-keyframes fadeInUp {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(0, 100%, 0);\n    transform: translate3d(0, 100%, 0);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: none;\n    transform: none;\n  }\n}\n\n@keyframes fadeInUp {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(0, 100%, 0);\n    transform: translate3d(0, 100%, 0);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: none;\n    transform: none;\n  }\n}\n\n.fadeInUp {\n  -webkit-animation-name: fadeInUp;\n  animation-name: fadeInUp;\n}\n\n@-webkit-keyframes fadeInUpBig {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(0, 2000px, 0);\n    transform: translate3d(0, 2000px, 0);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: none;\n    transform: none;\n  }\n}\n\n@keyframes fadeInUpBig {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(0, 2000px, 0);\n    transform: translate3d(0, 2000px, 0);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: none;\n    transform: none;\n  }\n}\n\n.fadeInUpBig {\n  -webkit-animation-name: fadeInUpBig;\n  animation-name: fadeInUpBig;\n}\n\n@-webkit-keyframes fadeOut {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n  }\n}\n\n@keyframes fadeOut {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n  }\n}\n\n.fadeOut {\n  -webkit-animation-name: fadeOut;\n  animation-name: fadeOut;\n}\n\n@-webkit-keyframes fadeOutDown {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(0, 100%, 0);\n    transform: translate3d(0, 100%, 0);\n  }\n}\n\n@keyframes fadeOutDown {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(0, 100%, 0);\n    transform: translate3d(0, 100%, 0);\n  }\n}\n\n.fadeOutDown {\n  -webkit-animation-name: fadeOutDown;\n  animation-name: fadeOutDown;\n}\n\n@-webkit-keyframes fadeOutDownBig {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(0, 2000px, 0);\n    transform: translate3d(0, 2000px, 0);\n  }\n}\n\n@keyframes fadeOutDownBig {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(0, 2000px, 0);\n    transform: translate3d(0, 2000px, 0);\n  }\n}\n\n.fadeOutDownBig {\n  -webkit-animation-name: fadeOutDownBig;\n  animation-name: fadeOutDownBig;\n}\n\n@-webkit-keyframes fadeOutLeft {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(-100%, 0, 0);\n    transform: translate3d(-100%, 0, 0);\n  }\n}\n\n@keyframes fadeOutLeft {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(-100%, 0, 0);\n    transform: translate3d(-100%, 0, 0);\n  }\n}\n\n.fadeOutLeft {\n  -webkit-animation-name: fadeOutLeft;\n  animation-name: fadeOutLeft;\n}\n\n@-webkit-keyframes fadeOutLeftBig {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(-2000px, 0, 0);\n    transform: translate3d(-2000px, 0, 0);\n  }\n}\n\n@keyframes fadeOutLeftBig {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(-2000px, 0, 0);\n    transform: translate3d(-2000px, 0, 0);\n  }\n}\n\n.fadeOutLeftBig {\n  -webkit-animation-name: fadeOutLeftBig;\n  animation-name: fadeOutLeftBig;\n}\n\n@-webkit-keyframes fadeOutRight {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(100%, 0, 0);\n    transform: translate3d(100%, 0, 0);\n  }\n}\n\n@keyframes fadeOutRight {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(100%, 0, 0);\n    transform: translate3d(100%, 0, 0);\n  }\n}\n\n.fadeOutRight {\n  -webkit-animation-name: fadeOutRight;\n  animation-name: fadeOutRight;\n}\n\n@-webkit-keyframes fadeOutRightBig {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(2000px, 0, 0);\n    transform: translate3d(2000px, 0, 0);\n  }\n}\n\n@keyframes fadeOutRightBig {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(2000px, 0, 0);\n    transform: translate3d(2000px, 0, 0);\n  }\n}\n\n.fadeOutRightBig {\n  -webkit-animation-name: fadeOutRightBig;\n  animation-name: fadeOutRightBig;\n}\n\n@-webkit-keyframes fadeOutUp {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(0, -100%, 0);\n    transform: translate3d(0, -100%, 0);\n  }\n}\n\n@keyframes fadeOutUp {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(0, -100%, 0);\n    transform: translate3d(0, -100%, 0);\n  }\n}\n\n.fadeOutUp {\n  -webkit-animation-name: fadeOutUp;\n  animation-name: fadeOutUp;\n}\n\n@-webkit-keyframes fadeOutUpBig {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(0, -2000px, 0);\n    transform: translate3d(0, -2000px, 0);\n  }\n}\n\n@keyframes fadeOutUpBig {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(0, -2000px, 0);\n    transform: translate3d(0, -2000px, 0);\n  }\n}\n\n.fadeOutUpBig {\n  -webkit-animation-name: fadeOutUpBig;\n  animation-name: fadeOutUpBig;\n}\n\n@-webkit-keyframes flip {\n  from {\n    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg);\n    transform: perspective(400px) rotate3d(0, 1, 0, -360deg);\n    -webkit-animation-timing-function: ease-out;\n    animation-timing-function: ease-out;\n  }\n\n  40% {\n    -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);\n    transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);\n    -webkit-animation-timing-function: ease-out;\n    animation-timing-function: ease-out;\n  }\n\n  50% {\n    -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);\n    transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);\n    -webkit-animation-timing-function: ease-in;\n    animation-timing-function: ease-in;\n  }\n\n  80% {\n    -webkit-transform: perspective(400px) scale3d(.95, .95, .95);\n    transform: perspective(400px) scale3d(.95, .95, .95);\n    -webkit-animation-timing-function: ease-in;\n    animation-timing-function: ease-in;\n  }\n\n  to {\n    -webkit-transform: perspective(400px);\n    transform: perspective(400px);\n    -webkit-animation-timing-function: ease-in;\n    animation-timing-function: ease-in;\n  }\n}\n\n@keyframes flip {\n  from {\n    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg);\n    transform: perspective(400px) rotate3d(0, 1, 0, -360deg);\n    -webkit-animation-timing-function: ease-out;\n    animation-timing-function: ease-out;\n  }\n\n  40% {\n    -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);\n    transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);\n    -webkit-animation-timing-function: ease-out;\n    animation-timing-function: ease-out;\n  }\n\n  50% {\n    -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);\n    transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);\n    -webkit-animation-timing-function: ease-in;\n    animation-timing-function: ease-in;\n  }\n\n  80% {\n    -webkit-transform: perspective(400px) scale3d(.95, .95, .95);\n    transform: perspective(400px) scale3d(.95, .95, .95);\n    -webkit-animation-timing-function: ease-in;\n    animation-timing-function: ease-in;\n  }\n\n  to {\n    -webkit-transform: perspective(400px);\n    transform: perspective(400px);\n    -webkit-animation-timing-function: ease-in;\n    animation-timing-function: ease-in;\n  }\n}\n\n.animated.flip {\n  -webkit-backface-visibility: visible;\n  backface-visibility: visible;\n  -webkit-animation-name: flip;\n  animation-name: flip;\n}\n\n@-webkit-keyframes flipInX {\n  from {\n    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n    transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n    -webkit-animation-timing-function: ease-in;\n    animation-timing-function: ease-in;\n    opacity: 0;\n  }\n\n  40% {\n    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n    transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n    -webkit-animation-timing-function: ease-in;\n    animation-timing-function: ease-in;\n  }\n\n  60% {\n    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\n    transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\n    opacity: 1;\n  }\n\n  80% {\n    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg);\n    transform: perspective(400px) rotate3d(1, 0, 0, -5deg);\n  }\n\n  to {\n    -webkit-transform: perspective(400px);\n    transform: perspective(400px);\n  }\n}\n\n@keyframes flipInX {\n  from {\n    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n    transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n    -webkit-animation-timing-function: ease-in;\n    animation-timing-function: ease-in;\n    opacity: 0;\n  }\n\n  40% {\n    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n    transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n    -webkit-animation-timing-function: ease-in;\n    animation-timing-function: ease-in;\n  }\n\n  60% {\n    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\n    transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\n    opacity: 1;\n  }\n\n  80% {\n    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg);\n    transform: perspective(400px) rotate3d(1, 0, 0, -5deg);\n  }\n\n  to {\n    -webkit-transform: perspective(400px);\n    transform: perspective(400px);\n  }\n}\n\n.flipInX {\n  -webkit-backface-visibility: visible !important;\n  backface-visibility: visible !important;\n  -webkit-animation-name: flipInX;\n  animation-name: flipInX;\n}\n\n@-webkit-keyframes flipInY {\n  from {\n    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n    transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n    -webkit-animation-timing-function: ease-in;\n    animation-timing-function: ease-in;\n    opacity: 0;\n  }\n\n  40% {\n    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg);\n    transform: perspective(400px) rotate3d(0, 1, 0, -20deg);\n    -webkit-animation-timing-function: ease-in;\n    animation-timing-function: ease-in;\n  }\n\n  60% {\n    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg);\n    transform: perspective(400px) rotate3d(0, 1, 0, 10deg);\n    opacity: 1;\n  }\n\n  80% {\n    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg);\n    transform: perspective(400px) rotate3d(0, 1, 0, -5deg);\n  }\n\n  to {\n    -webkit-transform: perspective(400px);\n    transform: perspective(400px);\n  }\n}\n\n@keyframes flipInY {\n  from {\n    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n    transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n    -webkit-animation-timing-function: ease-in;\n    animation-timing-function: ease-in;\n    opacity: 0;\n  }\n\n  40% {\n    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg);\n    transform: perspective(400px) rotate3d(0, 1, 0, -20deg);\n    -webkit-animation-timing-function: ease-in;\n    animation-timing-function: ease-in;\n  }\n\n  60% {\n    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg);\n    transform: perspective(400px) rotate3d(0, 1, 0, 10deg);\n    opacity: 1;\n  }\n\n  80% {\n    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg);\n    transform: perspective(400px) rotate3d(0, 1, 0, -5deg);\n  }\n\n  to {\n    -webkit-transform: perspective(400px);\n    transform: perspective(400px);\n  }\n}\n\n.flipInY {\n  -webkit-backface-visibility: visible !important;\n  backface-visibility: visible !important;\n  -webkit-animation-name: flipInY;\n  animation-name: flipInY;\n}\n\n@-webkit-keyframes flipOutX {\n  from {\n    -webkit-transform: perspective(400px);\n    transform: perspective(400px);\n  }\n\n  30% {\n    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n    transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n    opacity: 1;\n  }\n\n  to {\n    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n    transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n    opacity: 0;\n  }\n}\n\n@keyframes flipOutX {\n  from {\n    -webkit-transform: perspective(400px);\n    transform: perspective(400px);\n  }\n\n  30% {\n    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n    transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n    opacity: 1;\n  }\n\n  to {\n    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n    transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n    opacity: 0;\n  }\n}\n\n.flipOutX {\n  -webkit-animation-name: flipOutX;\n  animation-name: flipOutX;\n  -webkit-backface-visibility: visible !important;\n  backface-visibility: visible !important;\n}\n\n@-webkit-keyframes flipOutY {\n  from {\n    -webkit-transform: perspective(400px);\n    transform: perspective(400px);\n  }\n\n  30% {\n    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg);\n    transform: perspective(400px) rotate3d(0, 1, 0, -15deg);\n    opacity: 1;\n  }\n\n  to {\n    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n    transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n    opacity: 0;\n  }\n}\n\n@keyframes flipOutY {\n  from {\n    -webkit-transform: perspective(400px);\n    transform: perspective(400px);\n  }\n\n  30% {\n    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg);\n    transform: perspective(400px) rotate3d(0, 1, 0, -15deg);\n    opacity: 1;\n  }\n\n  to {\n    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n    transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n    opacity: 0;\n  }\n}\n\n.flipOutY {\n  -webkit-backface-visibility: visible !important;\n  backface-visibility: visible !important;\n  -webkit-animation-name: flipOutY;\n  animation-name: flipOutY;\n}\n\n@-webkit-keyframes lightSpeedIn {\n  from {\n    -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg);\n    transform: translate3d(100%, 0, 0) skewX(-30deg);\n    opacity: 0;\n  }\n\n  60% {\n    -webkit-transform: skewX(20deg);\n    transform: skewX(20deg);\n    opacity: 1;\n  }\n\n  80% {\n    -webkit-transform: skewX(-5deg);\n    transform: skewX(-5deg);\n    opacity: 1;\n  }\n\n  to {\n    -webkit-transform: none;\n    transform: none;\n    opacity: 1;\n  }\n}\n\n@keyframes lightSpeedIn {\n  from {\n    -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg);\n    transform: translate3d(100%, 0, 0) skewX(-30deg);\n    opacity: 0;\n  }\n\n  60% {\n    -webkit-transform: skewX(20deg);\n    transform: skewX(20deg);\n    opacity: 1;\n  }\n\n  80% {\n    -webkit-transform: skewX(-5deg);\n    transform: skewX(-5deg);\n    opacity: 1;\n  }\n\n  to {\n    -webkit-transform: none;\n    transform: none;\n    opacity: 1;\n  }\n}\n\n.lightSpeedIn {\n  -webkit-animation-name: lightSpeedIn;\n  animation-name: lightSpeedIn;\n  -webkit-animation-timing-function: ease-out;\n  animation-timing-function: ease-out;\n}\n\n@-webkit-keyframes lightSpeedOut {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    -webkit-transform: translate3d(100%, 0, 0) skewX(30deg);\n    transform: translate3d(100%, 0, 0) skewX(30deg);\n    opacity: 0;\n  }\n}\n\n@keyframes lightSpeedOut {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    -webkit-transform: translate3d(100%, 0, 0) skewX(30deg);\n    transform: translate3d(100%, 0, 0) skewX(30deg);\n    opacity: 0;\n  }\n}\n\n.lightSpeedOut {\n  -webkit-animation-name: lightSpeedOut;\n  animation-name: lightSpeedOut;\n  -webkit-animation-timing-function: ease-in;\n  animation-timing-function: ease-in;\n}\n\n@-webkit-keyframes rotateIn {\n  from {\n    -webkit-transform-origin: center;\n    transform-origin: center;\n    -webkit-transform: rotate3d(0, 0, 1, -200deg);\n    transform: rotate3d(0, 0, 1, -200deg);\n    opacity: 0;\n  }\n\n  to {\n    -webkit-transform-origin: center;\n    transform-origin: center;\n    -webkit-transform: none;\n    transform: none;\n    opacity: 1;\n  }\n}\n\n@keyframes rotateIn {\n  from {\n    -webkit-transform-origin: center;\n    transform-origin: center;\n    -webkit-transform: rotate3d(0, 0, 1, -200deg);\n    transform: rotate3d(0, 0, 1, -200deg);\n    opacity: 0;\n  }\n\n  to {\n    -webkit-transform-origin: center;\n    transform-origin: center;\n    -webkit-transform: none;\n    transform: none;\n    opacity: 1;\n  }\n}\n\n.rotateIn {\n  -webkit-animation-name: rotateIn;\n  animation-name: rotateIn;\n}\n\n@-webkit-keyframes rotateInDownLeft {\n  from {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    -webkit-transform: rotate3d(0, 0, 1, -45deg);\n    transform: rotate3d(0, 0, 1, -45deg);\n    opacity: 0;\n  }\n\n  to {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    -webkit-transform: none;\n    transform: none;\n    opacity: 1;\n  }\n}\n\n@keyframes rotateInDownLeft {\n  from {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    -webkit-transform: rotate3d(0, 0, 1, -45deg);\n    transform: rotate3d(0, 0, 1, -45deg);\n    opacity: 0;\n  }\n\n  to {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    -webkit-transform: none;\n    transform: none;\n    opacity: 1;\n  }\n}\n\n.rotateInDownLeft {\n  -webkit-animation-name: rotateInDownLeft;\n  animation-name: rotateInDownLeft;\n}\n\n@-webkit-keyframes rotateInDownRight {\n  from {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    -webkit-transform: rotate3d(0, 0, 1, 45deg);\n    transform: rotate3d(0, 0, 1, 45deg);\n    opacity: 0;\n  }\n\n  to {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    -webkit-transform: none;\n    transform: none;\n    opacity: 1;\n  }\n}\n\n@keyframes rotateInDownRight {\n  from {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    -webkit-transform: rotate3d(0, 0, 1, 45deg);\n    transform: rotate3d(0, 0, 1, 45deg);\n    opacity: 0;\n  }\n\n  to {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    -webkit-transform: none;\n    transform: none;\n    opacity: 1;\n  }\n}\n\n.rotateInDownRight {\n  -webkit-animation-name: rotateInDownRight;\n  animation-name: rotateInDownRight;\n}\n\n@-webkit-keyframes rotateInUpLeft {\n  from {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    -webkit-transform: rotate3d(0, 0, 1, 45deg);\n    transform: rotate3d(0, 0, 1, 45deg);\n    opacity: 0;\n  }\n\n  to {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    -webkit-transform: none;\n    transform: none;\n    opacity: 1;\n  }\n}\n\n@keyframes rotateInUpLeft {\n  from {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    -webkit-transform: rotate3d(0, 0, 1, 45deg);\n    transform: rotate3d(0, 0, 1, 45deg);\n    opacity: 0;\n  }\n\n  to {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    -webkit-transform: none;\n    transform: none;\n    opacity: 1;\n  }\n}\n\n.rotateInUpLeft {\n  -webkit-animation-name: rotateInUpLeft;\n  animation-name: rotateInUpLeft;\n}\n\n@-webkit-keyframes rotateInUpRight {\n  from {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    -webkit-transform: rotate3d(0, 0, 1, -90deg);\n    transform: rotate3d(0, 0, 1, -90deg);\n    opacity: 0;\n  }\n\n  to {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    -webkit-transform: none;\n    transform: none;\n    opacity: 1;\n  }\n}\n\n@keyframes rotateInUpRight {\n  from {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    -webkit-transform: rotate3d(0, 0, 1, -90deg);\n    transform: rotate3d(0, 0, 1, -90deg);\n    opacity: 0;\n  }\n\n  to {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    -webkit-transform: none;\n    transform: none;\n    opacity: 1;\n  }\n}\n\n.rotateInUpRight {\n  -webkit-animation-name: rotateInUpRight;\n  animation-name: rotateInUpRight;\n}\n\n@-webkit-keyframes rotateOut {\n  from {\n    -webkit-transform-origin: center;\n    transform-origin: center;\n    opacity: 1;\n  }\n\n  to {\n    -webkit-transform-origin: center;\n    transform-origin: center;\n    -webkit-transform: rotate3d(0, 0, 1, 200deg);\n    transform: rotate3d(0, 0, 1, 200deg);\n    opacity: 0;\n  }\n}\n\n@keyframes rotateOut {\n  from {\n    -webkit-transform-origin: center;\n    transform-origin: center;\n    opacity: 1;\n  }\n\n  to {\n    -webkit-transform-origin: center;\n    transform-origin: center;\n    -webkit-transform: rotate3d(0, 0, 1, 200deg);\n    transform: rotate3d(0, 0, 1, 200deg);\n    opacity: 0;\n  }\n}\n\n.rotateOut {\n  -webkit-animation-name: rotateOut;\n  animation-name: rotateOut;\n}\n\n@-webkit-keyframes rotateOutDownLeft {\n  from {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    opacity: 1;\n  }\n\n  to {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    -webkit-transform: rotate3d(0, 0, 1, 45deg);\n    transform: rotate3d(0, 0, 1, 45deg);\n    opacity: 0;\n  }\n}\n\n@keyframes rotateOutDownLeft {\n  from {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    opacity: 1;\n  }\n\n  to {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    -webkit-transform: rotate3d(0, 0, 1, 45deg);\n    transform: rotate3d(0, 0, 1, 45deg);\n    opacity: 0;\n  }\n}\n\n.rotateOutDownLeft {\n  -webkit-animation-name: rotateOutDownLeft;\n  animation-name: rotateOutDownLeft;\n}\n\n@-webkit-keyframes rotateOutDownRight {\n  from {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    opacity: 1;\n  }\n\n  to {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    -webkit-transform: rotate3d(0, 0, 1, -45deg);\n    transform: rotate3d(0, 0, 1, -45deg);\n    opacity: 0;\n  }\n}\n\n@keyframes rotateOutDownRight {\n  from {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    opacity: 1;\n  }\n\n  to {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    -webkit-transform: rotate3d(0, 0, 1, -45deg);\n    transform: rotate3d(0, 0, 1, -45deg);\n    opacity: 0;\n  }\n}\n\n.rotateOutDownRight {\n  -webkit-animation-name: rotateOutDownRight;\n  animation-name: rotateOutDownRight;\n}\n\n@-webkit-keyframes rotateOutUpLeft {\n  from {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    opacity: 1;\n  }\n\n  to {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    -webkit-transform: rotate3d(0, 0, 1, -45deg);\n    transform: rotate3d(0, 0, 1, -45deg);\n    opacity: 0;\n  }\n}\n\n@keyframes rotateOutUpLeft {\n  from {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    opacity: 1;\n  }\n\n  to {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    -webkit-transform: rotate3d(0, 0, 1, -45deg);\n    transform: rotate3d(0, 0, 1, -45deg);\n    opacity: 0;\n  }\n}\n\n.rotateOutUpLeft {\n  -webkit-animation-name: rotateOutUpLeft;\n  animation-name: rotateOutUpLeft;\n}\n\n@-webkit-keyframes rotateOutUpRight {\n  from {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    opacity: 1;\n  }\n\n  to {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    -webkit-transform: rotate3d(0, 0, 1, 90deg);\n    transform: rotate3d(0, 0, 1, 90deg);\n    opacity: 0;\n  }\n}\n\n@keyframes rotateOutUpRight {\n  from {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    opacity: 1;\n  }\n\n  to {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    -webkit-transform: rotate3d(0, 0, 1, 90deg);\n    transform: rotate3d(0, 0, 1, 90deg);\n    opacity: 0;\n  }\n}\n\n.rotateOutUpRight {\n  -webkit-animation-name: rotateOutUpRight;\n  animation-name: rotateOutUpRight;\n}\n\n@-webkit-keyframes hinge {\n  0% {\n    -webkit-transform-origin: top left;\n    transform-origin: top left;\n    -webkit-animation-timing-function: ease-in-out;\n    animation-timing-function: ease-in-out;\n  }\n\n  20%, 60% {\n    -webkit-transform: rotate3d(0, 0, 1, 80deg);\n    transform: rotate3d(0, 0, 1, 80deg);\n    -webkit-transform-origin: top left;\n    transform-origin: top left;\n    -webkit-animation-timing-function: ease-in-out;\n    animation-timing-function: ease-in-out;\n  }\n\n  40%, 80% {\n    -webkit-transform: rotate3d(0, 0, 1, 60deg);\n    transform: rotate3d(0, 0, 1, 60deg);\n    -webkit-transform-origin: top left;\n    transform-origin: top left;\n    -webkit-animation-timing-function: ease-in-out;\n    animation-timing-function: ease-in-out;\n    opacity: 1;\n  }\n\n  to {\n    -webkit-transform: translate3d(0, 700px, 0);\n    transform: translate3d(0, 700px, 0);\n    opacity: 0;\n  }\n}\n\n@keyframes hinge {\n  0% {\n    -webkit-transform-origin: top left;\n    transform-origin: top left;\n    -webkit-animation-timing-function: ease-in-out;\n    animation-timing-function: ease-in-out;\n  }\n\n  20%, 60% {\n    -webkit-transform: rotate3d(0, 0, 1, 80deg);\n    transform: rotate3d(0, 0, 1, 80deg);\n    -webkit-transform-origin: top left;\n    transform-origin: top left;\n    -webkit-animation-timing-function: ease-in-out;\n    animation-timing-function: ease-in-out;\n  }\n\n  40%, 80% {\n    -webkit-transform: rotate3d(0, 0, 1, 60deg);\n    transform: rotate3d(0, 0, 1, 60deg);\n    -webkit-transform-origin: top left;\n    transform-origin: top left;\n    -webkit-animation-timing-function: ease-in-out;\n    animation-timing-function: ease-in-out;\n    opacity: 1;\n  }\n\n  to {\n    -webkit-transform: translate3d(0, 700px, 0);\n    transform: translate3d(0, 700px, 0);\n    opacity: 0;\n  }\n}\n\n.hinge {\n  -webkit-animation-name: hinge;\n  animation-name: hinge;\n}\n\n/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */\n\n@-webkit-keyframes rollIn {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);\n    transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: none;\n    transform: none;\n  }\n}\n\n@keyframes rollIn {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);\n    transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: none;\n    transform: none;\n  }\n}\n\n.rollIn {\n  -webkit-animation-name: rollIn;\n  animation-name: rollIn;\n}\n\n/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */\n\n@-webkit-keyframes rollOut {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);\n    transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);\n  }\n}\n\n@keyframes rollOut {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);\n    transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);\n  }\n}\n\n.rollOut {\n  -webkit-animation-name: rollOut;\n  animation-name: rollOut;\n}\n\n@-webkit-keyframes zoomIn {\n  from {\n    opacity: 0;\n    -webkit-transform: scale3d(.3, .3, .3);\n    transform: scale3d(.3, .3, .3);\n  }\n\n  50% {\n    opacity: 1;\n  }\n}\n\n@keyframes zoomIn {\n  from {\n    opacity: 0;\n    -webkit-transform: scale3d(.3, .3, .3);\n    transform: scale3d(.3, .3, .3);\n  }\n\n  50% {\n    opacity: 1;\n  }\n}\n\n.zoomIn {\n  -webkit-animation-name: zoomIn;\n  animation-name: zoomIn;\n}\n\n@-webkit-keyframes zoomInDown {\n  from {\n    opacity: 0;\n    -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0);\n    transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n    animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n  }\n\n  60% {\n    opacity: 1;\n    -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);\n    transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n    animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n  }\n}\n\n@keyframes zoomInDown {\n  from {\n    opacity: 0;\n    -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0);\n    transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n    animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n  }\n\n  60% {\n    opacity: 1;\n    -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);\n    transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n    animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n  }\n}\n\n.zoomInDown {\n  -webkit-animation-name: zoomInDown;\n  animation-name: zoomInDown;\n}\n\n@-webkit-keyframes zoomInLeft {\n  from {\n    opacity: 0;\n    -webkit-transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0);\n    transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n    animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n  }\n\n  60% {\n    opacity: 1;\n    -webkit-transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0);\n    transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n    animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n  }\n}\n\n@keyframes zoomInLeft {\n  from {\n    opacity: 0;\n    -webkit-transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0);\n    transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n    animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n  }\n\n  60% {\n    opacity: 1;\n    -webkit-transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0);\n    transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n    animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n  }\n}\n\n.zoomInLeft {\n  -webkit-animation-name: zoomInLeft;\n  animation-name: zoomInLeft;\n}\n\n@-webkit-keyframes zoomInRight {\n  from {\n    opacity: 0;\n    -webkit-transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0);\n    transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n    animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n  }\n\n  60% {\n    opacity: 1;\n    -webkit-transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0);\n    transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n    animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n  }\n}\n\n@keyframes zoomInRight {\n  from {\n    opacity: 0;\n    -webkit-transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0);\n    transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n    animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n  }\n\n  60% {\n    opacity: 1;\n    -webkit-transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0);\n    transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n    animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n  }\n}\n\n.zoomInRight {\n  -webkit-animation-name: zoomInRight;\n  animation-name: zoomInRight;\n}\n\n@-webkit-keyframes zoomInUp {\n  from {\n    opacity: 0;\n    -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0);\n    transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n    animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n  }\n\n  60% {\n    opacity: 1;\n    -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);\n    transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n    animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n  }\n}\n\n@keyframes zoomInUp {\n  from {\n    opacity: 0;\n    -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0);\n    transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n    animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n  }\n\n  60% {\n    opacity: 1;\n    -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);\n    transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n    animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n  }\n}\n\n.zoomInUp {\n  -webkit-animation-name: zoomInUp;\n  animation-name: zoomInUp;\n}\n\n@-webkit-keyframes zoomOut {\n  from {\n    opacity: 1;\n  }\n\n  50% {\n    opacity: 0;\n    -webkit-transform: scale3d(.3, .3, .3);\n    transform: scale3d(.3, .3, .3);\n  }\n\n  to {\n    opacity: 0;\n  }\n}\n\n@keyframes zoomOut {\n  from {\n    opacity: 1;\n  }\n\n  50% {\n    opacity: 0;\n    -webkit-transform: scale3d(.3, .3, .3);\n    transform: scale3d(.3, .3, .3);\n  }\n\n  to {\n    opacity: 0;\n  }\n}\n\n.zoomOut {\n  -webkit-animation-name: zoomOut;\n  animation-name: zoomOut;\n}\n\n@-webkit-keyframes zoomOutDown {\n  40% {\n    opacity: 1;\n    -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);\n    transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n    animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0);\n    transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0);\n    -webkit-transform-origin: center bottom;\n    transform-origin: center bottom;\n    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n    animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n  }\n}\n\n@keyframes zoomOutDown {\n  40% {\n    opacity: 1;\n    -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);\n    transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n    animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0);\n    transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0);\n    -webkit-transform-origin: center bottom;\n    transform-origin: center bottom;\n    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n    animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n  }\n}\n\n.zoomOutDown {\n  -webkit-animation-name: zoomOutDown;\n  animation-name: zoomOutDown;\n}\n\n@-webkit-keyframes zoomOutLeft {\n  40% {\n    opacity: 1;\n    -webkit-transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0);\n    transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0);\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: scale(.1) translate3d(-2000px, 0, 0);\n    transform: scale(.1) translate3d(-2000px, 0, 0);\n    -webkit-transform-origin: left center;\n    transform-origin: left center;\n  }\n}\n\n@keyframes zoomOutLeft {\n  40% {\n    opacity: 1;\n    -webkit-transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0);\n    transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0);\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: scale(.1) translate3d(-2000px, 0, 0);\n    transform: scale(.1) translate3d(-2000px, 0, 0);\n    -webkit-transform-origin: left center;\n    transform-origin: left center;\n  }\n}\n\n.zoomOutLeft {\n  -webkit-animation-name: zoomOutLeft;\n  animation-name: zoomOutLeft;\n}\n\n@-webkit-keyframes zoomOutRight {\n  40% {\n    opacity: 1;\n    -webkit-transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0);\n    transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0);\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: scale(.1) translate3d(2000px, 0, 0);\n    transform: scale(.1) translate3d(2000px, 0, 0);\n    -webkit-transform-origin: right center;\n    transform-origin: right center;\n  }\n}\n\n@keyframes zoomOutRight {\n  40% {\n    opacity: 1;\n    -webkit-transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0);\n    transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0);\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: scale(.1) translate3d(2000px, 0, 0);\n    transform: scale(.1) translate3d(2000px, 0, 0);\n    -webkit-transform-origin: right center;\n    transform-origin: right center;\n  }\n}\n\n.zoomOutRight {\n  -webkit-animation-name: zoomOutRight;\n  animation-name: zoomOutRight;\n}\n\n@-webkit-keyframes zoomOutUp {\n  40% {\n    opacity: 1;\n    -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);\n    transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n    animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0);\n    transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0);\n    -webkit-transform-origin: center bottom;\n    transform-origin: center bottom;\n    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n    animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n  }\n}\n\n@keyframes zoomOutUp {\n  40% {\n    opacity: 1;\n    -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);\n    transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n    animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0);\n    transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0);\n    -webkit-transform-origin: center bottom;\n    transform-origin: center bottom;\n    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n    animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);\n  }\n}\n\n.zoomOutUp {\n  -webkit-animation-name: zoomOutUp;\n  animation-name: zoomOutUp;\n}\n\n@-webkit-keyframes slideInDown {\n  from {\n    -webkit-transform: translate3d(0, -100%, 0);\n    transform: translate3d(0, -100%, 0);\n    visibility: visible;\n  }\n\n  to {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n}\n\n@keyframes slideInDown {\n  from {\n    -webkit-transform: translate3d(0, -100%, 0);\n    transform: translate3d(0, -100%, 0);\n    visibility: visible;\n  }\n\n  to {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n}\n\n.slideInDown {\n  -webkit-animation-name: slideInDown;\n  animation-name: slideInDown;\n}\n\n@-webkit-keyframes slideInLeft {\n  from {\n    -webkit-transform: translate3d(-100%, 0, 0);\n    transform: translate3d(-100%, 0, 0);\n    visibility: visible;\n  }\n\n  to {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n}\n\n@keyframes slideInLeft {\n  from {\n    -webkit-transform: translate3d(-100%, 0, 0);\n    transform: translate3d(-100%, 0, 0);\n    visibility: visible;\n  }\n\n  to {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n}\n\n.slideInLeft {\n  -webkit-animation-name: slideInLeft;\n  animation-name: slideInLeft;\n}\n\n@-webkit-keyframes slideInRight {\n  from {\n    -webkit-transform: translate3d(100%, 0, 0);\n    transform: translate3d(100%, 0, 0);\n    visibility: visible;\n  }\n\n  to {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n}\n\n@keyframes slideInRight {\n  from {\n    -webkit-transform: translate3d(100%, 0, 0);\n    transform: translate3d(100%, 0, 0);\n    visibility: visible;\n  }\n\n  to {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n}\n\n.slideInRight {\n  -webkit-animation-name: slideInRight;\n  animation-name: slideInRight;\n}\n\n@-webkit-keyframes slideInUp {\n  from {\n    -webkit-transform: translate3d(0, 100%, 0);\n    transform: translate3d(0, 100%, 0);\n    visibility: visible;\n  }\n\n  to {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n}\n\n@keyframes slideInUp {\n  from {\n    -webkit-transform: translate3d(0, 100%, 0);\n    transform: translate3d(0, 100%, 0);\n    visibility: visible;\n  }\n\n  to {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n}\n\n.slideInUp {\n  -webkit-animation-name: slideInUp;\n  animation-name: slideInUp;\n}\n\n@-webkit-keyframes slideOutDown {\n  from {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n\n  to {\n    visibility: hidden;\n    -webkit-transform: translate3d(0, 100%, 0);\n    transform: translate3d(0, 100%, 0);\n  }\n}\n\n@keyframes slideOutDown {\n  from {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n\n  to {\n    visibility: hidden;\n    -webkit-transform: translate3d(0, 100%, 0);\n    transform: translate3d(0, 100%, 0);\n  }\n}\n\n.slideOutDown {\n  -webkit-animation-name: slideOutDown;\n  animation-name: slideOutDown;\n}\n\n@-webkit-keyframes slideOutLeft {\n  from {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n\n  to {\n    visibility: hidden;\n    -webkit-transform: translate3d(-100%, 0, 0);\n    transform: translate3d(-100%, 0, 0);\n  }\n}\n\n@keyframes slideOutLeft {\n  from {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n\n  to {\n    visibility: hidden;\n    -webkit-transform: translate3d(-100%, 0, 0);\n    transform: translate3d(-100%, 0, 0);\n  }\n}\n\n.slideOutLeft {\n  -webkit-animation-name: slideOutLeft;\n  animation-name: slideOutLeft;\n}\n\n@-webkit-keyframes slideOutRight {\n  from {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n\n  to {\n    visibility: hidden;\n    -webkit-transform: translate3d(100%, 0, 0);\n    transform: translate3d(100%, 0, 0);\n  }\n}\n\n@keyframes slideOutRight {\n  from {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n\n  to {\n    visibility: hidden;\n    -webkit-transform: translate3d(100%, 0, 0);\n    transform: translate3d(100%, 0, 0);\n  }\n}\n\n.slideOutRight {\n  -webkit-animation-name: slideOutRight;\n  animation-name: slideOutRight;\n}\n\n@-webkit-keyframes slideOutUp {\n  from {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n\n  to {\n    visibility: hidden;\n    -webkit-transform: translate3d(0, -100%, 0);\n    transform: translate3d(0, -100%, 0);\n  }\n}\n\n@keyframes slideOutUp {\n  from {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n\n  to {\n    visibility: hidden;\n    -webkit-transform: translate3d(0, -100%, 0);\n    transform: translate3d(0, -100%, 0);\n  }\n}\n\n.slideOutUp {\n  -webkit-animation-name: slideOutUp;\n  animation-name: slideOutUp;\n}\n"
  },
  {
    "path": "public/profile/vendors/bootstrap-datepicker/bootstrap-select.css",
    "content": "select {\n  display: none; }\n\n.nice-select {\n  -webkit-tap-highlight-color: transparent;\n  background-color: #fff;\n  border-radius: 5px;\n  border: solid 1px #e8e8e8;\n  box-sizing: border-box;\n  clear: both;\n  cursor: pointer;\n  display: block;\n  float: left;\n  font-family: inherit;\n  font-size: 14px;\n  font-weight: normal;\n  height: 42px;\n  line-height: 40px;\n  outline: none;\n  padding-left: 18px;\n  padding-right: 30px;\n  position: relative;\n  text-align: left !important;\n  transition: all 0.2s ease-in-out;\n  -webkit-user-select: none;\n     -moz-user-select: none;\n      -ms-user-select: none;\n          user-select: none;\n  white-space: nowrap;\n  width: auto; }\n.nice-select:hover {\n  border-color: #dbdbdb; }\n.nice-select:active, .nice-select.open, .nice-select:focus {\n  border-color: #999; }\n.nice-select:after {\n  border-bottom: 2px solid #999;\n  border-right: 2px solid #999;\n  content: '';\n  display: block;\n  height: 5px;\n  margin-top: -4px;\n  pointer-events: none;\n  position: absolute;\n  right: 12px;\n  top: 50%;\n  -webkit-transform-origin: 66% 66%;\n          transform-origin: 66% 66%;\n  -webkit-transform: rotate(45deg);\n          transform: rotate(45deg);\n  transition: all 0.15s ease-in-out;\n  width: 5px; }\n.nice-select.open:after {\n  -webkit-transform: rotate(-135deg);\n          transform: rotate(-135deg); }\n.nice-select.open .list {\n  opacity: 1;\n  pointer-events: auto;\n  -webkit-transform: scale(1) translateY(0);\n          transform: scale(1) translateY(0); }\n.nice-select.disabled {\n  border-color: #ededed;\n  color: #999;\n  pointer-events: none; }\n.nice-select.disabled:after {\n  border-color: #cccccc; }\n.nice-select.wide {\n  width: 100%; }\n.nice-select.wide .list {\n  left: 0 !important;\n  right: 0 !important; }\n.nice-select.right {\n  float: right; }\n.nice-select.right .list {\n  left: auto;\n  right: 0; }\n.nice-select.small {\n  font-size: 12px;\n  height: 36px;\n  line-height: 34px; }\n.nice-select.small:after {\n  height: 4px;\n  width: 4px; }\n.nice-select.small .option {\n  line-height: 34px;\n  min-height: 34px; }\n.nice-select .list {\n  background-color: #fff;\n  border-radius: 5px;\n  box-shadow: 0 0 0 1px rgba(68, 68, 68, 0.11);\n  box-sizing: border-box;\n  margin-top: 4px;\n  opacity: 0;\n  overflow: hidden;\n  padding: 0;\n  pointer-events: none;\n  position: absolute;\n  top: 100%;\n  left: 0;\n  -webkit-transform-origin: 50% 0;\n          transform-origin: 50% 0;\n  -webkit-transform: scale(0.75) translateY(-21px);\n          transform: scale(0.75) translateY(-21px);\n  transition: all 0.2s cubic-bezier(0.5, 0, 0, 1.25), opacity 0.15s ease-out;\n  z-index: 9; }\n.nice-select .list:hover .option:not(:hover) {\n  background-color: transparent !important; }\n.nice-select .option {\n  cursor: pointer;\n  font-weight: 400;\n  line-height: 40px;\n  list-style: none;\n  min-height: 40px;\n  outline: none;\n  padding-left: 18px;\n  padding-right: 29px;\n  text-align: left;\n  transition: all 0.2s; }\n.nice-select .option:hover, .nice-select .option.focus, .nice-select .option.selected.focus {\n  background-color: #f6f6f6; }\n.nice-select .option.selected {\n  font-weight: bold; }"
  },
  {
    "path": "public/profile/vendors/bootstrap-datepicker/bootstrap-select.js",
    "content": "/*!\n * Bootstrap-select v1.12.4 (http://silviomoreto.github.io/bootstrap-select)\n *\n * Copyright 2013-2017 bootstrap-select\n * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)\n */\n!function(a,b){\"function\"==typeof define&&define.amd?define([\"jquery\"],function(a){return b(a)}):\"object\"==typeof module&&module.exports?module.exports=b(require(\"jquery\")):b(a.jQuery)}(this,function(a){!function(a){\"use strict\";function b(b){var c=[{re:/[\\xC0-\\xC6]/g,ch:\"A\"},{re:/[\\xE0-\\xE6]/g,ch:\"a\"},{re:/[\\xC8-\\xCB]/g,ch:\"E\"},{re:/[\\xE8-\\xEB]/g,ch:\"e\"},{re:/[\\xCC-\\xCF]/g,ch:\"I\"},{re:/[\\xEC-\\xEF]/g,ch:\"i\"},{re:/[\\xD2-\\xD6]/g,ch:\"O\"},{re:/[\\xF2-\\xF6]/g,ch:\"o\"},{re:/[\\xD9-\\xDC]/g,ch:\"U\"},{re:/[\\xF9-\\xFC]/g,ch:\"u\"},{re:/[\\xC7-\\xE7]/g,ch:\"c\"},{re:/[\\xD1]/g,ch:\"N\"},{re:/[\\xF1]/g,ch:\"n\"}];return a.each(c,function(){b=b?b.replace(this.re,this.ch):\"\"}),b}function c(b){var c=arguments,d=b;[].shift.apply(c);var e,f=this.each(function(){var b=a(this);if(b.is(\"select\")){var f=b.data(\"selectpicker\"),g=\"object\"==typeof d&&d;if(f){if(g)for(var h in g)g.hasOwnProperty(h)&&(f.options[h]=g[h])}else{var i=a.extend({},l.DEFAULTS,a.fn.selectpicker.defaults||{},b.data(),g);i.template=a.extend({},l.DEFAULTS.template,a.fn.selectpicker.defaults?a.fn.selectpicker.defaults.template:{},b.data().template,g.template),b.data(\"selectpicker\",f=new l(this,i))}\"string\"==typeof d&&(e=f[d]instanceof Function?f[d].apply(f,c):f.options[d])}});return\"undefined\"!=typeof e?e:f}String.prototype.includes||!function(){var a={}.toString,b=function(){try{var a={},b=Object.defineProperty,c=b(a,a,a)&&b}catch(a){}return c}(),c=\"\".indexOf,d=function(b){if(null==this)throw new TypeError;var d=String(this);if(b&&\"[object RegExp]\"==a.call(b))throw new TypeError;var e=d.length,f=String(b),g=f.length,h=arguments.length>1?arguments[1]:void 0,i=h?Number(h):0;i!=i&&(i=0);var j=Math.min(Math.max(i,0),e);return!(g+j>e)&&c.call(d,f,i)!=-1};b?b(String.prototype,\"includes\",{value:d,configurable:!0,writable:!0}):String.prototype.includes=d}(),String.prototype.startsWith||!function(){var a=function(){try{var a={},b=Object.defineProperty,c=b(a,a,a)&&b}catch(a){}return c}(),b={}.toString,c=function(a){if(null==this)throw new TypeError;var c=String(this);if(a&&\"[object RegExp]\"==b.call(a))throw new TypeError;var d=c.length,e=String(a),f=e.length,g=arguments.length>1?arguments[1]:void 0,h=g?Number(g):0;h!=h&&(h=0);var i=Math.min(Math.max(h,0),d);if(f+i>d)return!1;for(var j=-1;++j<f;)if(c.charCodeAt(i+j)!=e.charCodeAt(j))return!1;return!0};a?a(String.prototype,\"startsWith\",{value:c,configurable:!0,writable:!0}):String.prototype.startsWith=c}(),Object.keys||(Object.keys=function(a,b,c){c=[];for(b in a)c.hasOwnProperty.call(a,b)&&c.push(b);return c});var d={useDefault:!1,_set:a.valHooks.select.set};a.valHooks.select.set=function(b,c){return c&&!d.useDefault&&a(b).data(\"selected\",!0),d._set.apply(this,arguments)};var e=null,f=function(){try{return new Event(\"change\"),!0}catch(a){return!1}}();a.fn.triggerNative=function(a){var b,c=this[0];c.dispatchEvent?(f?b=new Event(a,{bubbles:!0}):(b=document.createEvent(\"Event\"),b.initEvent(a,!0,!1)),c.dispatchEvent(b)):c.fireEvent?(b=document.createEventObject(),b.eventType=a,c.fireEvent(\"on\"+a,b)):this.trigger(a)},a.expr.pseudos.icontains=function(b,c,d){var e=a(b).find(\"a\"),f=(e.data(\"tokens\")||e.text()).toString().toUpperCase();return f.includes(d[3].toUpperCase())},a.expr.pseudos.ibegins=function(b,c,d){var e=a(b).find(\"a\"),f=(e.data(\"tokens\")||e.text()).toString().toUpperCase();return f.startsWith(d[3].toUpperCase())},a.expr.pseudos.aicontains=function(b,c,d){var e=a(b).find(\"a\"),f=(e.data(\"tokens\")||e.data(\"normalizedText\")||e.text()).toString().toUpperCase();return f.includes(d[3].toUpperCase())},a.expr.pseudos.aibegins=function(b,c,d){var e=a(b).find(\"a\"),f=(e.data(\"tokens\")||e.data(\"normalizedText\")||e.text()).toString().toUpperCase();return f.startsWith(d[3].toUpperCase())};var g={\"&\":\"&amp;\",\"<\":\"&lt;\",\">\":\"&gt;\",'\"':\"&quot;\",\"'\":\"&#x27;\",\"`\":\"&#x60;\"},h={\"&amp;\":\"&\",\"&lt;\":\"<\",\"&gt;\":\">\",\"&quot;\":'\"',\"&#x27;\":\"'\",\"&#x60;\":\"`\"},i=function(a){var b=function(b){return a[b]},c=\"(?:\"+Object.keys(a).join(\"|\")+\")\",d=RegExp(c),e=RegExp(c,\"g\");return function(a){return a=null==a?\"\":\"\"+a,d.test(a)?a.replace(e,b):a}},j=i(g),k=i(h),l=function(b,c){d.useDefault||(a.valHooks.select.set=d._set,d.useDefault=!0),this.$element=a(b),this.$newElement=null,this.$button=null,this.$menu=null,this.$lis=null,this.options=c,null===this.options.title&&(this.options.title=this.$element.attr(\"title\"));var e=this.options.windowPadding;\"number\"==typeof e&&(this.options.windowPadding=[e,e,e,e]),this.val=l.prototype.val,this.render=l.prototype.render,this.refresh=l.prototype.refresh,this.setStyle=l.prototype.setStyle,this.selectAll=l.prototype.selectAll,this.deselectAll=l.prototype.deselectAll,this.destroy=l.prototype.destroy,this.remove=l.prototype.remove,this.show=l.prototype.show,this.hide=l.prototype.hide,this.init()};l.VERSION=\"1.12.4\",l.DEFAULTS={noneSelectedText:\"Nothing selected\",noneResultsText:\"No results matched {0}\",countSelectedText:function(a,b){return 1==a?\"{0} item selected\":\"{0} items selected\"},maxOptionsText:function(a,b){return[1==a?\"Limit reached ({n} item max)\":\"Limit reached ({n} items max)\",1==b?\"Group limit reached ({n} item max)\":\"Group limit reached ({n} items max)\"]},selectAllText:\"Select All\",deselectAllText:\"Deselect All\",doneButton:!1,doneButtonText:\"Close\",multipleSeparator:\", \",styleBase:\"btn\",style:\"btn-default\",size:\"auto\",title:null,selectedTextFormat:\"values\",width:!1,container:!1,hideDisabled:!1,showSubtext:!1,showIcon:!0,showContent:!0,dropupAuto:!0,header:!1,liveSearch:!1,liveSearchPlaceholder:null,liveSearchNormalize:!1,liveSearchStyle:\"contains\",actionsBox:!1,iconBase:\"glyphicon\",tickIcon:\"glyphicon-ok\",showTick:!1,template:{caret:'<span class=\"caret\"></span>'},maxOptions:!1,mobile:!1,selectOnTab:!1,dropdownAlignRight:!1,windowPadding:0},l.prototype={constructor:l,init:function(){var b=this,c=this.$element.attr(\"id\");this.$element.addClass(\"bs-select-hidden\"),this.liObj={},this.multiple=this.$element.prop(\"multiple\"),this.autofocus=this.$element.prop(\"autofocus\"),this.$newElement=this.createView(),this.$element.after(this.$newElement).appendTo(this.$newElement),this.$button=this.$newElement.children(\"button\"),this.$menu=this.$newElement.children(\".dropdown-menu\"),this.$menuInner=this.$menu.children(\".inner\"),this.$searchbox=this.$menu.find(\"input\"),this.$element.removeClass(\"bs-select-hidden\"),this.options.dropdownAlignRight===!0&&this.$menu.addClass(\"dropdown-menu-right\"),\"undefined\"!=typeof c&&(this.$button.attr(\"data-id\",c),a('label[for=\"'+c+'\"]').click(function(a){a.preventDefault(),b.$button.focus()})),this.checkDisabled(),this.clickListener(),this.options.liveSearch&&this.liveSearchListener(),this.render(),this.setStyle(),this.setWidth(),this.options.container&&this.selectPosition(),this.$menu.data(\"this\",this),this.$newElement.data(\"this\",this),this.options.mobile&&this.mobile(),this.$newElement.on({\"hide.bs.dropdown\":function(a){b.$menuInner.attr(\"aria-expanded\",!1),b.$element.trigger(\"hide.bs.select\",a)},\"hidden.bs.dropdown\":function(a){b.$element.trigger(\"hidden.bs.select\",a)},\"show.bs.dropdown\":function(a){b.$menuInner.attr(\"aria-expanded\",!0),b.$element.trigger(\"show.bs.select\",a)},\"shown.bs.dropdown\":function(a){b.$element.trigger(\"shown.bs.select\",a)}}),b.$element[0].hasAttribute(\"required\")&&this.$element.on(\"invalid\",function(){b.$button.addClass(\"bs-invalid\"),b.$element.on({\"focus.bs.select\":function(){b.$button.focus(),b.$element.off(\"focus.bs.select\")},\"shown.bs.select\":function(){b.$element.val(b.$element.val()).off(\"shown.bs.select\")},\"rendered.bs.select\":function(){this.validity.valid&&b.$button.removeClass(\"bs-invalid\"),b.$element.off(\"rendered.bs.select\")}}),b.$button.on(\"blur.bs.select\",function(){b.$element.focus().blur(),b.$button.off(\"blur.bs.select\")})}),setTimeout(function(){b.$element.trigger(\"loaded.bs.select\")})},createDropdown:function(){var b=this.multiple||this.options.showTick?\" show-tick\":\"\",c=this.$element.parent().hasClass(\"input-group\")?\" input-group-btn\":\"\",d=this.autofocus?\" autofocus\":\"\",e=this.options.header?'<div class=\"popover-title\"><button type=\"button\" class=\"close\" aria-hidden=\"true\">&times;</button>'+this.options.header+\"</div>\":\"\",f=this.options.liveSearch?'<div class=\"bs-searchbox\"><input type=\"text\" class=\"form-control\" autocomplete=\"off\"'+(null===this.options.liveSearchPlaceholder?\"\":' placeholder=\"'+j(this.options.liveSearchPlaceholder)+'\"')+' role=\"textbox\" aria-label=\"Search\"></div>':\"\",g=this.multiple&&this.options.actionsBox?'<div class=\"bs-actionsbox\"><div class=\"btn-group btn-group-sm btn-block\"><button type=\"button\" class=\"actions-btn bs-select-all btn btn-default\">'+this.options.selectAllText+'</button><button type=\"button\" class=\"actions-btn bs-deselect-all btn btn-default\">'+this.options.deselectAllText+\"</button></div></div>\":\"\",h=this.multiple&&this.options.doneButton?'<div class=\"bs-donebutton\"><div class=\"btn-group btn-block\"><button type=\"button\" class=\"btn btn-sm btn-default\">'+this.options.doneButtonText+\"</button></div></div>\":\"\",i='<div class=\"btn-group bootstrap-select'+b+c+'\"><button type=\"button\" class=\"'+this.options.styleBase+' dropdown-toggle\" data-toggle=\"dropdown\"'+d+' role=\"button\"><span class=\"filter-option pull-left\"></span>&nbsp;<span class=\"bs-caret\">'+this.options.template.caret+'</span></button><div class=\"dropdown-menu open\" role=\"combobox\">'+e+f+g+'<ul class=\"dropdown-menu inner\" role=\"listbox\" aria-expanded=\"false\"></ul>'+h+\"</div></div>\";return a(i)},createView:function(){var a=this.createDropdown(),b=this.createLi();return a.find(\"ul\")[0].innerHTML=b,a},reloadLi:function(){var a=this.createLi();this.$menuInner[0].innerHTML=a},createLi:function(){var c=this,d=[],e=0,f=document.createElement(\"option\"),g=-1,h=function(a,b,c,d){return\"<li\"+(\"undefined\"!=typeof c&&\"\"!==c?' class=\"'+c+'\"':\"\")+(\"undefined\"!=typeof b&&null!==b?' data-original-index=\"'+b+'\"':\"\")+(\"undefined\"!=typeof d&&null!==d?'data-optgroup=\"'+d+'\"':\"\")+\">\"+a+\"</li>\"},i=function(d,e,f,g){return'<a tabindex=\"0\"'+(\"undefined\"!=typeof e?' class=\"'+e+'\"':\"\")+(f?' style=\"'+f+'\"':\"\")+(c.options.liveSearchNormalize?' data-normalized-text=\"'+b(j(a(d).html()))+'\"':\"\")+(\"undefined\"!=typeof g||null!==g?' data-tokens=\"'+g+'\"':\"\")+' role=\"option\">'+d+'<span class=\"'+c.options.iconBase+\" \"+c.options.tickIcon+' check-mark\"></span></a>'};if(this.options.title&&!this.multiple&&(g--,!this.$element.find(\".bs-title-option\").length)){var k=this.$element[0];f.className=\"bs-title-option\",f.innerHTML=this.options.title,f.value=\"\",k.insertBefore(f,k.firstChild);var l=a(k.options[k.selectedIndex]);void 0===l.attr(\"selected\")&&void 0===this.$element.data(\"selected\")&&(f.selected=!0)}var m=this.$element.find(\"option\");return m.each(function(b){var f=a(this);if(g++,!f.hasClass(\"bs-title-option\")){var k,l=this.className||\"\",n=j(this.style.cssText),o=f.data(\"content\")?f.data(\"content\"):f.html(),p=f.data(\"tokens\")?f.data(\"tokens\"):null,q=\"undefined\"!=typeof f.data(\"subtext\")?'<small class=\"text-muted\">'+f.data(\"subtext\")+\"</small>\":\"\",r=\"undefined\"!=typeof f.data(\"icon\")?'<span class=\"'+c.options.iconBase+\" \"+f.data(\"icon\")+'\"></span> ':\"\",s=f.parent(),t=\"OPTGROUP\"===s[0].tagName,u=t&&s[0].disabled,v=this.disabled||u;if(\"\"!==r&&v&&(r=\"<span>\"+r+\"</span>\"),c.options.hideDisabled&&(v&&!t||u))return k=f.data(\"prevHiddenIndex\"),f.next().data(\"prevHiddenIndex\",void 0!==k?k:b),void g--;if(f.data(\"content\")||(o=r+'<span class=\"text\">'+o+q+\"</span>\"),t&&f.data(\"divider\")!==!0){if(c.options.hideDisabled&&v){if(void 0===s.data(\"allOptionsDisabled\")){var w=s.children();s.data(\"allOptionsDisabled\",w.filter(\":disabled\").length===w.length)}if(s.data(\"allOptionsDisabled\"))return void g--}var x=\" \"+s[0].className||\"\";if(0===f.index()){e+=1;var y=s[0].label,z=\"undefined\"!=typeof s.data(\"subtext\")?'<small class=\"text-muted\">'+s.data(\"subtext\")+\"</small>\":\"\",A=s.data(\"icon\")?'<span class=\"'+c.options.iconBase+\" \"+s.data(\"icon\")+'\"></span> ':\"\";y=A+'<span class=\"text\">'+j(y)+z+\"</span>\",0!==b&&d.length>0&&(g++,d.push(h(\"\",null,\"divider\",e+\"div\"))),g++,d.push(h(y,null,\"dropdown-header\"+x,e))}if(c.options.hideDisabled&&v)return void g--;d.push(h(i(o,\"opt \"+l+x,n,p),b,\"\",e))}else if(f.data(\"divider\")===!0)d.push(h(\"\",b,\"divider\"));else if(f.data(\"hidden\")===!0)k=f.data(\"prevHiddenIndex\"),f.next().data(\"prevHiddenIndex\",void 0!==k?k:b),d.push(h(i(o,l,n,p),b,\"hidden is-hidden\"));else{var B=this.previousElementSibling&&\"OPTGROUP\"===this.previousElementSibling.tagName;if(!B&&c.options.hideDisabled&&(k=f.data(\"prevHiddenIndex\"),void 0!==k)){var C=m.eq(k)[0].previousElementSibling;C&&\"OPTGROUP\"===C.tagName&&!C.disabled&&(B=!0)}B&&(g++,d.push(h(\"\",null,\"divider\",e+\"div\"))),d.push(h(i(o,l,n,p),b))}c.liObj[b]=g}}),this.multiple||0!==this.$element.find(\"option:selected\").length||this.options.title||this.$element.find(\"option\").eq(0).prop(\"selected\",!0).attr(\"selected\",\"selected\"),d.join(\"\")},findLis:function(){return null==this.$lis&&(this.$lis=this.$menu.find(\"li\")),this.$lis},render:function(b){var c,d=this,e=this.$element.find(\"option\");b!==!1&&e.each(function(a){var b=d.findLis().eq(d.liObj[a]);d.setDisabled(a,this.disabled||\"OPTGROUP\"===this.parentNode.tagName&&this.parentNode.disabled,b),d.setSelected(a,this.selected,b)}),this.togglePlaceholder(),this.tabIndex();var f=e.map(function(){if(this.selected){if(d.options.hideDisabled&&(this.disabled||\"OPTGROUP\"===this.parentNode.tagName&&this.parentNode.disabled))return;var b,c=a(this),e=c.data(\"icon\")&&d.options.showIcon?'<i class=\"'+d.options.iconBase+\" \"+c.data(\"icon\")+'\"></i> ':\"\";return b=d.options.showSubtext&&c.data(\"subtext\")&&!d.multiple?' <small class=\"text-muted\">'+c.data(\"subtext\")+\"</small>\":\"\",\"undefined\"!=typeof c.attr(\"title\")?c.attr(\"title\"):c.data(\"content\")&&d.options.showContent?c.data(\"content\").toString():e+c.html()+b}}).toArray(),g=this.multiple?f.join(this.options.multipleSeparator):f[0];if(this.multiple&&this.options.selectedTextFormat.indexOf(\"count\")>-1){var h=this.options.selectedTextFormat.split(\">\");if(h.length>1&&f.length>h[1]||1==h.length&&f.length>=2){c=this.options.hideDisabled?\", [disabled]\":\"\";var i=e.not('[data-divider=\"true\"], [data-hidden=\"true\"]'+c).length,j=\"function\"==typeof this.options.countSelectedText?this.options.countSelectedText(f.length,i):this.options.countSelectedText;g=j.replace(\"{0}\",f.length.toString()).replace(\"{1}\",i.toString())}}void 0==this.options.title&&(this.options.title=this.$element.attr(\"title\")),\"static\"==this.options.selectedTextFormat&&(g=this.options.title),g||(g=\"undefined\"!=typeof this.options.title?this.options.title:this.options.noneSelectedText),this.$button.attr(\"title\",k(a.trim(g.replace(/<[^>]*>?/g,\"\")))),this.$button.children(\".filter-option\").html(g),this.$element.trigger(\"rendered.bs.select\")},setStyle:function(a,b){this.$element.attr(\"class\")&&this.$newElement.addClass(this.$element.attr(\"class\").replace(/selectpicker|mobile-device|bs-select-hidden|validate\\[.*\\]/gi,\"\"));var c=a?a:this.options.style;\"add\"==b?this.$button.addClass(c):\"remove\"==b?this.$button.removeClass(c):(this.$button.removeClass(this.options.style),this.$button.addClass(c))},liHeight:function(b){if(b||this.options.size!==!1&&!this.sizeInfo){var c=document.createElement(\"div\"),d=document.createElement(\"div\"),e=document.createElement(\"ul\"),f=document.createElement(\"li\"),g=document.createElement(\"li\"),h=document.createElement(\"a\"),i=document.createElement(\"span\"),j=this.options.header&&this.$menu.find(\".popover-title\").length>0?this.$menu.find(\".popover-title\")[0].cloneNode(!0):null,k=this.options.liveSearch?document.createElement(\"div\"):null,l=this.options.actionsBox&&this.multiple&&this.$menu.find(\".bs-actionsbox\").length>0?this.$menu.find(\".bs-actionsbox\")[0].cloneNode(!0):null,m=this.options.doneButton&&this.multiple&&this.$menu.find(\".bs-donebutton\").length>0?this.$menu.find(\".bs-donebutton\")[0].cloneNode(!0):null;if(i.className=\"text\",c.className=this.$menu[0].parentNode.className+\" open\",d.className=\"dropdown-menu open\",e.className=\"dropdown-menu inner\",f.className=\"divider\",i.appendChild(document.createTextNode(\"Inner text\")),h.appendChild(i),g.appendChild(h),e.appendChild(g),e.appendChild(f),j&&d.appendChild(j),k){var n=document.createElement(\"input\");k.className=\"bs-searchbox\",n.className=\"form-control\",k.appendChild(n),d.appendChild(k)}l&&d.appendChild(l),d.appendChild(e),m&&d.appendChild(m),c.appendChild(d),document.body.appendChild(c);var o=h.offsetHeight,p=j?j.offsetHeight:0,q=k?k.offsetHeight:0,r=l?l.offsetHeight:0,s=m?m.offsetHeight:0,t=a(f).outerHeight(!0),u=\"function\"==typeof getComputedStyle&&getComputedStyle(d),v=u?null:a(d),w={vert:parseInt(u?u.paddingTop:v.css(\"paddingTop\"))+parseInt(u?u.paddingBottom:v.css(\"paddingBottom\"))+parseInt(u?u.borderTopWidth:v.css(\"borderTopWidth\"))+parseInt(u?u.borderBottomWidth:v.css(\"borderBottomWidth\")),horiz:parseInt(u?u.paddingLeft:v.css(\"paddingLeft\"))+parseInt(u?u.paddingRight:v.css(\"paddingRight\"))+parseInt(u?u.borderLeftWidth:v.css(\"borderLeftWidth\"))+parseInt(u?u.borderRightWidth:v.css(\"borderRightWidth\"))},x={vert:w.vert+parseInt(u?u.marginTop:v.css(\"marginTop\"))+parseInt(u?u.marginBottom:v.css(\"marginBottom\"))+2,horiz:w.horiz+parseInt(u?u.marginLeft:v.css(\"marginLeft\"))+parseInt(u?u.marginRight:v.css(\"marginRight\"))+2};document.body.removeChild(c),this.sizeInfo={liHeight:o,headerHeight:p,searchHeight:q,actionsHeight:r,doneButtonHeight:s,dividerHeight:t,menuPadding:w,menuExtras:x}}},setSize:function(){if(this.findLis(),this.liHeight(),this.options.header&&this.$menu.css(\"padding-top\",0),this.options.size!==!1){var b,c,d,e,f,g,h,i,j=this,k=this.$menu,l=this.$menuInner,m=a(window),n=this.$newElement[0].offsetHeight,o=this.$newElement[0].offsetWidth,p=this.sizeInfo.liHeight,q=this.sizeInfo.headerHeight,r=this.sizeInfo.searchHeight,s=this.sizeInfo.actionsHeight,t=this.sizeInfo.doneButtonHeight,u=this.sizeInfo.dividerHeight,v=this.sizeInfo.menuPadding,w=this.sizeInfo.menuExtras,x=this.options.hideDisabled?\".disabled\":\"\",y=function(){var b,c=j.$newElement.offset(),d=a(j.options.container);j.options.container&&!d.is(\"body\")?(b=d.offset(),b.top+=parseInt(d.css(\"borderTopWidth\")),b.left+=parseInt(d.css(\"borderLeftWidth\"))):b={top:0,left:0};var e=j.options.windowPadding;f=c.top-b.top-m.scrollTop(),g=m.height()-f-n-b.top-e[2],h=c.left-b.left-m.scrollLeft(),i=m.width()-h-o-b.left-e[1],f-=e[0],h-=e[3]};if(y(),\"auto\"===this.options.size){var z=function(){var m,n=function(b,c){return function(d){return c?d.classList?d.classList.contains(b):a(d).hasClass(b):!(d.classList?d.classList.contains(b):a(d).hasClass(b))}},u=j.$menuInner[0].getElementsByTagName(\"li\"),x=Array.prototype.filter?Array.prototype.filter.call(u,n(\"hidden\",!1)):j.$lis.not(\".hidden\"),z=Array.prototype.filter?Array.prototype.filter.call(x,n(\"dropdown-header\",!0)):x.filter(\".dropdown-header\");y(),b=g-w.vert,c=i-w.horiz,j.options.container?(k.data(\"height\")||k.data(\"height\",k.height()),d=k.data(\"height\"),k.data(\"width\")||k.data(\"width\",k.width()),e=k.data(\"width\")):(d=k.height(),e=k.width()),j.options.dropupAuto&&j.$newElement.toggleClass(\"dropup\",f>g&&b-w.vert<d),j.$newElement.hasClass(\"dropup\")&&(b=f-w.vert),\"auto\"===j.options.dropdownAlignRight&&k.toggleClass(\"dropdown-menu-right\",h>i&&c-w.horiz<e-o),m=x.length+z.length>3?3*p+w.vert-2:0,k.css({\"max-height\":b+\"px\",overflow:\"hidden\",\"min-height\":m+q+r+s+t+\"px\"}),l.css({\"max-height\":b-q-r-s-t-v.vert+\"px\",\"overflow-y\":\"auto\",\"min-height\":Math.max(m-v.vert,0)+\"px\"})};z(),this.$searchbox.off(\"input.getSize propertychange.getSize\").on(\"input.getSize propertychange.getSize\",z),m.off(\"resize.getSize scroll.getSize\").on(\"resize.getSize scroll.getSize\",z)}else if(this.options.size&&\"auto\"!=this.options.size&&this.$lis.not(x).length>this.options.size){var A=this.$lis.not(\".divider\").not(x).children().slice(0,this.options.size).last().parent().index(),B=this.$lis.slice(0,A+1).filter(\".divider\").length;b=p*this.options.size+B*u+v.vert,j.options.container?(k.data(\"height\")||k.data(\"height\",k.height()),d=k.data(\"height\")):d=k.height(),j.options.dropupAuto&&this.$newElement.toggleClass(\"dropup\",f>g&&b-w.vert<d),k.css({\"max-height\":b+q+r+s+t+\"px\",overflow:\"hidden\",\"min-height\":\"\"}),l.css({\"max-height\":b-v.vert+\"px\",\"overflow-y\":\"auto\",\"min-height\":\"\"})}}},setWidth:function(){if(\"auto\"===this.options.width){this.$menu.css(\"min-width\",\"0\");var a=this.$menu.parent().clone().appendTo(\"body\"),b=this.options.container?this.$newElement.clone().appendTo(\"body\"):a,c=a.children(\".dropdown-menu\").outerWidth(),d=b.css(\"width\",\"auto\").children(\"button\").outerWidth();a.remove(),b.remove(),this.$newElement.css(\"width\",Math.max(c,d)+\"px\")}else\"fit\"===this.options.width?(this.$menu.css(\"min-width\",\"\"),this.$newElement.css(\"width\",\"\").addClass(\"fit-width\")):this.options.width?(this.$menu.css(\"min-width\",\"\"),this.$newElement.css(\"width\",this.options.width)):(this.$menu.css(\"min-width\",\"\"),this.$newElement.css(\"width\",\"\"));this.$newElement.hasClass(\"fit-width\")&&\"fit\"!==this.options.width&&this.$newElement.removeClass(\"fit-width\")},selectPosition:function(){this.$bsContainer=a('<div class=\"bs-container\" />');var b,c,d,e=this,f=a(this.options.container),g=function(a){e.$bsContainer.addClass(a.attr(\"class\").replace(/form-control|fit-width/gi,\"\")).toggleClass(\"dropup\",a.hasClass(\"dropup\")),b=a.offset(),f.is(\"body\")?c={top:0,left:0}:(c=f.offset(),c.top+=parseInt(f.css(\"borderTopWidth\"))-f.scrollTop(),c.left+=parseInt(f.css(\"borderLeftWidth\"))-f.scrollLeft()),d=a.hasClass(\"dropup\")?0:a[0].offsetHeight,e.$bsContainer.css({top:b.top-c.top+d,left:b.left-c.left,width:a[0].offsetWidth})};this.$button.on(\"click\",function(){var b=a(this);e.isDisabled()||(g(e.$newElement),e.$bsContainer.appendTo(e.options.container).toggleClass(\"open\",!b.hasClass(\"open\")).append(e.$menu))}),a(window).on(\"resize scroll\",function(){g(e.$newElement)}),this.$element.on(\"hide.bs.select\",function(){e.$menu.data(\"height\",e.$menu.height()),e.$bsContainer.detach()})},setSelected:function(a,b,c){c||(this.togglePlaceholder(),c=this.findLis().eq(this.liObj[a])),c.toggleClass(\"selected\",b).find(\"a\").attr(\"aria-selected\",b)},setDisabled:function(a,b,c){c||(c=this.findLis().eq(this.liObj[a])),b?c.addClass(\"disabled\").children(\"a\").attr(\"href\",\"#\").attr(\"tabindex\",-1).attr(\"aria-disabled\",!0):c.removeClass(\"disabled\").children(\"a\").removeAttr(\"href\").attr(\"tabindex\",0).attr(\"aria-disabled\",!1)},isDisabled:function(){return this.$element[0].disabled},checkDisabled:function(){var a=this;this.isDisabled()?(this.$newElement.addClass(\"disabled\"),this.$button.addClass(\"disabled\").attr(\"tabindex\",-1).attr(\"aria-disabled\",!0)):(this.$button.hasClass(\"disabled\")&&(this.$newElement.removeClass(\"disabled\"),this.$button.removeClass(\"disabled\").attr(\"aria-disabled\",!1)),this.$button.attr(\"tabindex\")!=-1||this.$element.data(\"tabindex\")||this.$button.removeAttr(\"tabindex\")),this.$button.click(function(){return!a.isDisabled()})},togglePlaceholder:function(){var a=this.$element.val();this.$button.toggleClass(\"bs-placeholder\",null===a||\"\"===a||a.constructor===Array&&0===a.length)},tabIndex:function(){this.$element.data(\"tabindex\")!==this.$element.attr(\"tabindex\")&&this.$element.attr(\"tabindex\")!==-98&&\"-98\"!==this.$element.attr(\"tabindex\")&&(this.$element.data(\"tabindex\",this.$element.attr(\"tabindex\")),this.$button.attr(\"tabindex\",this.$element.data(\"tabindex\"))),this.$element.attr(\"tabindex\",-98)},clickListener:function(){var b=this,c=a(document);c.data(\"spaceSelect\",!1),this.$button.on(\"keyup\",function(a){/(32)/.test(a.keyCode.toString(10))&&c.data(\"spaceSelect\")&&(a.preventDefault(),c.data(\"spaceSelect\",!1))}),this.$button.on(\"click\",function(){b.setSize()}),this.$element.on(\"shown.bs.select\",function(){if(b.options.liveSearch||b.multiple){if(!b.multiple){var a=b.liObj[b.$element[0].selectedIndex];if(\"number\"!=typeof a||b.options.size===!1)return;var c=b.$lis.eq(a)[0].offsetTop-b.$menuInner[0].offsetTop;c=c-b.$menuInner[0].offsetHeight/2+b.sizeInfo.liHeight/2,b.$menuInner[0].scrollTop=c}}else b.$menuInner.find(\".selected a\").focus()}),this.$menuInner.on(\"click\",\"li a\",function(c){var d=a(this),f=d.parent().data(\"originalIndex\"),g=b.$element.val(),h=b.$element.prop(\"selectedIndex\"),i=!0;if(b.multiple&&1!==b.options.maxOptions&&c.stopPropagation(),c.preventDefault(),!b.isDisabled()&&!d.parent().hasClass(\"disabled\")){var j=b.$element.find(\"option\"),k=j.eq(f),l=k.prop(\"selected\"),m=k.parent(\"optgroup\"),n=b.options.maxOptions,o=m.data(\"maxOptions\")||!1;if(b.multiple){if(k.prop(\"selected\",!l),b.setSelected(f,!l),d.blur(),n!==!1||o!==!1){var p=n<j.filter(\":selected\").length,q=o<m.find(\"option:selected\").length;if(n&&p||o&&q)if(n&&1==n)j.prop(\"selected\",!1),k.prop(\"selected\",!0),b.$menuInner.find(\".selected\").removeClass(\"selected\"),b.setSelected(f,!0);else if(o&&1==o){m.find(\"option:selected\").prop(\"selected\",!1),k.prop(\"selected\",!0);var r=d.parent().data(\"optgroup\");b.$menuInner.find('[data-optgroup=\"'+r+'\"]').removeClass(\"selected\"),b.setSelected(f,!0)}else{var s=\"string\"==typeof b.options.maxOptionsText?[b.options.maxOptionsText,b.options.maxOptionsText]:b.options.maxOptionsText,t=\"function\"==typeof s?s(n,o):s,u=t[0].replace(\"{n}\",n),v=t[1].replace(\"{n}\",o),w=a('<div class=\"notify\"></div>');t[2]&&(u=u.replace(\"{var}\",t[2][n>1?0:1]),v=v.replace(\"{var}\",t[2][o>1?0:1])),k.prop(\"selected\",!1),b.$menu.append(w),n&&p&&(w.append(a(\"<div>\"+u+\"</div>\")),i=!1,b.$element.trigger(\"maxReached.bs.select\")),o&&q&&(w.append(a(\"<div>\"+v+\"</div>\")),i=!1,b.$element.trigger(\"maxReachedGrp.bs.select\")),setTimeout(function(){b.setSelected(f,!1)},10),w.delay(750).fadeOut(300,function(){a(this).remove()})}}}else j.prop(\"selected\",!1),k.prop(\"selected\",!0),b.$menuInner.find(\".selected\").removeClass(\"selected\").find(\"a\").attr(\"aria-selected\",!1),b.setSelected(f,!0);!b.multiple||b.multiple&&1===b.options.maxOptions?b.$button.focus():b.options.liveSearch&&b.$searchbox.focus(),i&&(g!=b.$element.val()&&b.multiple||h!=b.$element.prop(\"selectedIndex\")&&!b.multiple)&&(e=[f,k.prop(\"selected\"),l],b.$element.triggerNative(\"change\"))}}),this.$menu.on(\"click\",\"li.disabled a, .popover-title, .popover-title :not(.close)\",function(c){c.currentTarget==this&&(c.preventDefault(),c.stopPropagation(),b.options.liveSearch&&!a(c.target).hasClass(\"close\")?b.$searchbox.focus():b.$button.focus())}),this.$menuInner.on(\"click\",\".divider, .dropdown-header\",function(a){a.preventDefault(),a.stopPropagation(),b.options.liveSearch?b.$searchbox.focus():b.$button.focus()}),this.$menu.on(\"click\",\".popover-title .close\",function(){b.$button.click()}),this.$searchbox.on(\"click\",function(a){a.stopPropagation()}),this.$menu.on(\"click\",\".actions-btn\",function(c){b.options.liveSearch?b.$searchbox.focus():b.$button.focus(),c.preventDefault(),c.stopPropagation(),a(this).hasClass(\"bs-select-all\")?b.selectAll():b.deselectAll()}),this.$element.change(function(){b.render(!1),b.$element.trigger(\"changed.bs.select\",e),e=null})},liveSearchListener:function(){var c=this,d=a('<li class=\"no-results\"></li>');this.$button.on(\"click.dropdown.data-api\",function(){c.$menuInner.find(\".active\").removeClass(\"active\"),c.$searchbox.val()&&(c.$searchbox.val(\"\"),c.$lis.not(\".is-hidden\").removeClass(\"hidden\"),d.parent().length&&d.remove()),c.multiple||c.$menuInner.find(\".selected\").addClass(\"active\"),setTimeout(function(){c.$searchbox.focus()},10)}),this.$searchbox.on(\"click.dropdown.data-api focus.dropdown.data-api touchend.dropdown.data-api\",function(a){a.stopPropagation()}),this.$searchbox.on(\"input propertychange\",function(){if(c.$lis.not(\".is-hidden\").removeClass(\"hidden\"),c.$lis.filter(\".active\").removeClass(\"active\"),d.remove(),c.$searchbox.val()){var e,f=c.$lis.not(\".is-hidden, .divider, .dropdown-header\");if(e=c.options.liveSearchNormalize?f.not(\":a\"+c._searchStyle()+'(\"'+b(c.$searchbox.val())+'\")'):f.not(\":\"+c._searchStyle()+'(\"'+c.$searchbox.val()+'\")'),e.length===f.length)d.html(c.options.noneResultsText.replace(\"{0}\",'\"'+j(c.$searchbox.val())+'\"')),c.$menuInner.append(d),c.$lis.addClass(\"hidden\");else{e.addClass(\"hidden\");var g,h=c.$lis.not(\".hidden\");h.each(function(b){var c=a(this);c.hasClass(\"divider\")?void 0===g?c.addClass(\"hidden\"):(g&&g.addClass(\"hidden\"),g=c):c.hasClass(\"dropdown-header\")&&h.eq(b+1).data(\"optgroup\")!==c.data(\"optgroup\")?c.addClass(\"hidden\"):g=null}),g&&g.addClass(\"hidden\"),f.not(\".hidden\").first().addClass(\"active\"),c.$menuInner.scrollTop(0)}}})},_searchStyle:function(){var a={begins:\"ibegins\",startsWith:\"ibegins\"};return a[this.options.liveSearchStyle]||\"icontains\"},val:function(a){return\"undefined\"!=typeof a?(this.$element.val(a),this.render(),this.$element):this.$element.val()},changeAll:function(b){if(this.multiple){\"undefined\"==typeof b&&(b=!0),this.findLis();var c=this.$element.find(\"option\"),d=this.$lis.not(\".divider, .dropdown-header, .disabled, .hidden\"),e=d.length,f=[];if(b){if(d.filter(\".selected\").length===d.length)return}else if(0===d.filter(\".selected\").length)return;d.toggleClass(\"selected\",b);for(var g=0;g<e;g++){var h=d[g].getAttribute(\"data-original-index\");f[f.length]=c.eq(h)[0]}a(f).prop(\"selected\",b),this.render(!1),this.togglePlaceholder(),this.$element.triggerNative(\"change\")}},selectAll:function(){return this.changeAll(!0)},deselectAll:function(){return this.changeAll(!1)},toggle:function(a){a=a||window.event,a&&a.stopPropagation(),this.$button.trigger(\"click\")},keydown:function(b){var c,d,e,f,g=a(this),h=g.is(\"input\")?g.parent().parent():g.parent(),i=h.data(\"this\"),j=\":not(.disabled, .hidden, .dropdown-header, .divider)\",k={32:\" \",48:\"0\",49:\"1\",50:\"2\",51:\"3\",52:\"4\",53:\"5\",54:\"6\",55:\"7\",56:\"8\",57:\"9\",59:\";\",65:\"a\",66:\"b\",67:\"c\",68:\"d\",69:\"e\",70:\"f\",71:\"g\",72:\"h\",73:\"i\",74:\"j\",75:\"k\",76:\"l\",77:\"m\",78:\"n\",79:\"o\",80:\"p\",81:\"q\",82:\"r\",83:\"s\",84:\"t\",85:\"u\",86:\"v\",87:\"w\",88:\"x\",89:\"y\",90:\"z\",96:\"0\",97:\"1\",98:\"2\",99:\"3\",100:\"4\",101:\"5\",102:\"6\",103:\"7\",104:\"8\",105:\"9\"};if(f=i.$newElement.hasClass(\"open\"),!f&&(b.keyCode>=48&&b.keyCode<=57||b.keyCode>=96&&b.keyCode<=105||b.keyCode>=65&&b.keyCode<=90))return i.options.container?i.$button.trigger(\"click\"):(i.setSize(),i.$menu.parent().addClass(\"open\"),f=!0),void i.$searchbox.focus();if(i.options.liveSearch&&/(^9$|27)/.test(b.keyCode.toString(10))&&f&&(b.preventDefault(),b.stopPropagation(),i.$menuInner.click(),i.$button.focus()),/(38|40)/.test(b.keyCode.toString(10))){if(c=i.$lis.filter(j),!c.length)return;d=i.options.liveSearch?c.index(c.filter(\".active\")):c.index(c.find(\"a\").filter(\":focus\").parent()),e=i.$menuInner.data(\"prevIndex\"),38==b.keyCode?(!i.options.liveSearch&&d!=e||d==-1||d--,d<0&&(d+=c.length)):40==b.keyCode&&((i.options.liveSearch||d==e)&&d++,d%=c.length),i.$menuInner.data(\"prevIndex\",d),i.options.liveSearch?(b.preventDefault(),g.hasClass(\"dropdown-toggle\")||(c.removeClass(\"active\").eq(d).addClass(\"active\").children(\"a\").focus(),g.focus())):c.eq(d).children(\"a\").focus()}else if(!g.is(\"input\")){var l,m,n=[];c=i.$lis.filter(j),c.each(function(c){a.trim(a(this).children(\"a\").text().toLowerCase()).substring(0,1)==k[b.keyCode]&&n.push(c)}),l=a(document).data(\"keycount\"),l++,a(document).data(\"keycount\",l),m=a.trim(a(\":focus\").text().toLowerCase()).substring(0,1),m!=k[b.keyCode]?(l=1,a(document).data(\"keycount\",l)):l>=n.length&&(a(document).data(\"keycount\",0),l>n.length&&(l=1)),c.eq(n[l-1]).children(\"a\").focus()}if((/(13|32)/.test(b.keyCode.toString(10))||/(^9$)/.test(b.keyCode.toString(10))&&i.options.selectOnTab)&&f){if(/(32)/.test(b.keyCode.toString(10))||b.preventDefault(),i.options.liveSearch)/(32)/.test(b.keyCode.toString(10))||(i.$menuInner.find(\".active a\").click(),g.focus());else{var o=a(\":focus\");o.click(),o.focus(),b.preventDefault(),a(document).data(\"spaceSelect\",!0)}a(document).data(\"keycount\",0)}(/(^9$|27)/.test(b.keyCode.toString(10))&&f&&(i.multiple||i.options.liveSearch)||/(27)/.test(b.keyCode.toString(10))&&!f)&&(i.$menu.parent().removeClass(\"open\"),i.options.container&&i.$newElement.removeClass(\"open\"),i.$button.focus())},mobile:function(){this.$element.addClass(\"mobile-device\")},refresh:function(){this.$lis=null,this.liObj={},this.reloadLi(),this.render(),this.checkDisabled(),this.liHeight(!0),this.setStyle(),\nthis.setWidth(),this.$lis&&this.$searchbox.trigger(\"propertychange\"),this.$element.trigger(\"refreshed.bs.select\")},hide:function(){this.$newElement.hide()},show:function(){this.$newElement.show()},remove:function(){this.$newElement.remove(),this.$element.remove()},destroy:function(){this.$newElement.before(this.$element).remove(),this.$bsContainer?this.$bsContainer.remove():this.$menu.remove(),this.$element.off(\".bs.select\").removeData(\"selectpicker\").removeClass(\"bs-select-hidden selectpicker\")}};var m=a.fn.selectpicker;a.fn.selectpicker=c,a.fn.selectpicker.Constructor=l,a.fn.selectpicker.noConflict=function(){return a.fn.selectpicker=m,this},a(document).data(\"keycount\",0).on(\"keydown.bs.select\",'.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role=\"listbox\"], .bs-searchbox input',l.prototype.keydown).on(\"focusin.modal\",'.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role=\"listbox\"], .bs-searchbox input',function(a){a.stopPropagation()}),a(window).on(\"load.bs.select.data-api\",function(){a(\".selectpicker\").each(function(){var b=a(this);c.call(b,b.data())})})}(a)});\n//# sourceMappingURL=bootstrap-select.js.map"
  },
  {
    "path": "public/profile/vendors/flaticon/_flaticon.css",
    "content": "/*\n    Flaticon icon font: Flaticon\n    Creation date: 26/06/2018 17:19\n    */\n@font-face {\n  font-family: \"Flaticon\";\n  src: url(\"./Flaticon.eot\");\n  src: url(\"./Flaticon.eot?#iefix\") format(\"embedded-opentype\"), url(\"./Flaticon.woff\") format(\"woff\"), url(\"./Flaticon.ttf\") format(\"truetype\"), url(\"./Flaticon.svg#Flaticon\") format(\"svg\");\n  font-weight: normal;\n  font-style: normal;\n}\n\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n  @font-face {\n    font-family: \"Flaticon\";\n    src: url(\"./Flaticon.svg#Flaticon\") format(\"svg\");\n  }\n}\n\n.fi:before {\n  display: inline-block;\n  font-family: \"Flaticon\";\n  font-style: normal;\n  font-weight: normal;\n  font-variant: normal;\n  line-height: 1;\n  text-decoration: inherit;\n  text-rendering: optimizeLegibility;\n  text-transform: none;\n  -moz-osx-font-smoothing: grayscale;\n  -webkit-font-smoothing: antialiased;\n  font-smoothing: antialiased;\n}\n\n.flaticon-skyline:before {\n  content: \"\\f100\";\n}\n\n.flaticon-sketch:before {\n  content: \"\\f101\";\n}\n\n.flaticon-city:before {\n  content: \"\\f102\";\n}\n\n/*# sourceMappingURL=_flaticon.css.map */"
  },
  {
    "path": "public/profile/vendors/flaticon/_flaticon.scss",
    "content": "    /*\n    Flaticon icon font: Flaticon\n    Creation date: 26/06/2018 17:19\n    */\n\n    @font-face {\n  font-family: \"Flaticon\";\n  src: url(\"./Flaticon.eot\");\n  src: url(\"./Flaticon.eot?#iefix\") format(\"embedded-opentype\"),\n       url(\"./Flaticon.woff\") format(\"woff\"),\n       url(\"./Flaticon.ttf\") format(\"truetype\"),\n       url(\"./Flaticon.svg#Flaticon\") format(\"svg\");\n  font-weight: normal;\n  font-style: normal;\n}\n\n@media screen and (-webkit-min-device-pixel-ratio:0) {\n  @font-face {\n    font-family: \"Flaticon\";\n    src: url(\"./Flaticon.svg#Flaticon\") format(\"svg\");\n  }\n}\n\n    .fi:before{\n        display: inline-block;\n  font-family: \"Flaticon\";\n  font-style: normal;\n  font-weight: normal;\n  font-variant: normal;\n  line-height: 1;\n  text-decoration: inherit;\n  text-rendering: optimizeLegibility;\n  text-transform: none;\n  -moz-osx-font-smoothing: grayscale;\n  -webkit-font-smoothing: antialiased;\n  font-smoothing: antialiased;\n    }\n\n    .flaticon-skyline:before { content: \"\\f100\"; }\n.flaticon-sketch:before { content: \"\\f101\"; }\n.flaticon-city:before { content: \"\\f102\"; }\n    \n    $font-Flaticon-skyline: \"\\f100\";\n    $font-Flaticon-sketch: \"\\f101\";\n    $font-Flaticon-city: \"\\f102\";"
  },
  {
    "path": "public/profile/vendors/flaticon/flaticon.css",
    "content": "\t/*\n  \tFlaticon icon font: Flaticon\n  \tCreation date: 26/06/2018 17:19\n  \t*/\n\n@font-face {\n  font-family: \"Flaticon\";\n  src: url(\"./Flaticon.eot\");\n  src: url(\"./Flaticon.eot?#iefix\") format(\"embedded-opentype\"),\n       url(\"./Flaticon.woff\") format(\"woff\"),\n       url(\"./Flaticon.ttf\") format(\"truetype\"),\n       url(\"./Flaticon.svg#Flaticon\") format(\"svg\");\n  font-weight: normal;\n  font-style: normal;\n}\n\n@media screen and (-webkit-min-device-pixel-ratio:0) {\n  @font-face {\n    font-family: \"Flaticon\";\n    src: url(\"./Flaticon.svg#Flaticon\") format(\"svg\");\n  }\n}\n\n[class^=\"flaticon-\"]:before, [class*=\" flaticon-\"]:before,\n[class^=\"flaticon-\"]:after, [class*=\" flaticon-\"]:after {   \n  font-family: Flaticon;\n        font-size: 20px;\nfont-style: normal;\nmargin-left: 20px;\n}\n\n.flaticon-skyline:before { content: \"\\f100\"; }\n.flaticon-sketch:before { content: \"\\f101\"; }\n.flaticon-city:before { content: \"\\f102\"; }"
  },
  {
    "path": "public/profile/vendors/jquery-ui/jquery-ui.css",
    "content": "/*! jQuery UI - v1.12.1 - 2016-09-14\n* http://jqueryui.com\n* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css\n* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Arial%2CHelvetica%2Csans-serif&fsDefault=1em&fwDefault=normal&cornerRadius=3px&bgColorHeader=e9e9e9&bgTextureHeader=flat&borderColorHeader=dddddd&fcHeader=333333&iconColorHeader=444444&bgColorContent=ffffff&bgTextureContent=flat&borderColorContent=dddddd&fcContent=333333&iconColorContent=444444&bgColorDefault=f6f6f6&bgTextureDefault=flat&borderColorDefault=c5c5c5&fcDefault=454545&iconColorDefault=777777&bgColorHover=ededed&bgTextureHover=flat&borderColorHover=cccccc&fcHover=2b2b2b&iconColorHover=555555&bgColorActive=007fff&bgTextureActive=flat&borderColorActive=003eff&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=fffa90&bgTextureHighlight=flat&borderColorHighlight=dad55e&fcHighlight=777620&iconColorHighlight=777620&bgColorError=fddfdf&bgTextureError=flat&borderColorError=f1a899&fcError=5f3f3f&iconColorError=cc0000&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=666666&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=5px&offsetTopShadow=0px&offsetLeftShadow=0px&cornerRadiusShadow=8px\n* Copyright jQuery Foundation and other contributors; Licensed MIT */\n\n/* Layout helpers\n----------------------------------*/\n.ui-helper-hidden {\n\tdisplay: none;\n}\n.ui-helper-hidden-accessible {\n\tborder: 0;\n\tclip: rect(0 0 0 0);\n\theight: 1px;\n\tmargin: -1px;\n\toverflow: hidden;\n\tpadding: 0;\n\tposition: absolute;\n\twidth: 1px;\n}\n.ui-helper-reset {\n\tmargin: 0;\n\tpadding: 0;\n\tborder: 0;\n\toutline: 0;\n\tline-height: 1.3;\n\ttext-decoration: none;\n\tfont-size: 100%;\n\tlist-style: none;\n}\n.ui-helper-clearfix:before,\n.ui-helper-clearfix:after {\n\tcontent: \"\";\n\tdisplay: table;\n\tborder-collapse: collapse;\n}\n.ui-helper-clearfix:after {\n\tclear: both;\n}\n.ui-helper-zfix {\n\twidth: 100%;\n\theight: 100%;\n\ttop: 0;\n\tleft: 0;\n\tposition: absolute;\n\topacity: 0;\n\tfilter:Alpha(Opacity=0); /* support: IE8 */\n}\n\n.ui-front {\n\tz-index: 100;\n}\n\n\n/* Interaction Cues\n----------------------------------*/\n.ui-state-disabled {\n\tcursor: default !important;\n\tpointer-events: none;\n}\n\n\n/* Icons\n----------------------------------*/\n.ui-icon {\n\tdisplay: inline-block;\n\tvertical-align: middle;\n\tmargin-top: -.25em;\n\tposition: relative;\n\ttext-indent: -99999px;\n\toverflow: hidden;\n\tbackground-repeat: no-repeat;\n}\n\n.ui-widget-icon-block {\n\tleft: 50%;\n\tmargin-left: -8px;\n\tdisplay: block;\n}\n\n/* Misc visuals\n----------------------------------*/\n\n/* Overlays */\n.ui-widget-overlay {\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n\theight: 100%;\n}\n.ui-accordion .ui-accordion-header {\n\tdisplay: block;\n\tcursor: pointer;\n\tposition: relative;\n\tmargin: 2px 0 0 0;\n\tpadding: .5em .5em .5em .7em;\n\tfont-size: 100%;\n}\n.ui-accordion .ui-accordion-content {\n\tpadding: 1em 2.2em;\n\tborder-top: 0;\n\toverflow: auto;\n}\n.ui-autocomplete {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tcursor: default;\n}\n.ui-menu {\n\tlist-style: none;\n\tpadding: 0;\n\tmargin: 0;\n\tdisplay: block;\n\toutline: 0;\n}\n.ui-menu .ui-menu {\n\tposition: absolute;\n}\n.ui-menu .ui-menu-item {\n\tmargin: 0;\n\tcursor: pointer;\n\t/* support: IE10, see #8844 */\n\tlist-style-image: url(\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\");\n}\n.ui-menu .ui-menu-item-wrapper {\n\tposition: relative;\n\tpadding: 3px 1em 3px .4em;\n}\n.ui-menu .ui-menu-divider {\n\tmargin: 5px 0;\n\theight: 0;\n\tfont-size: 0;\n\tline-height: 0;\n\tborder-width: 1px 0 0 0;\n}\n.ui-menu .ui-state-focus,\n.ui-menu .ui-state-active {\n\tmargin: -1px;\n}\n\n/* icon support */\n.ui-menu-icons {\n\tposition: relative;\n}\n.ui-menu-icons .ui-menu-item-wrapper {\n\tpadding-left: 2em;\n}\n\n/* left-aligned */\n.ui-menu .ui-icon {\n\tposition: absolute;\n\ttop: 0;\n\tbottom: 0;\n\tleft: .2em;\n\tmargin: auto 0;\n}\n\n/* right-aligned */\n.ui-menu .ui-menu-icon {\n\tleft: auto;\n\tright: 0;\n}\n.ui-button {\n\tpadding: .4em 1em;\n\tdisplay: inline-block;\n\tposition: relative;\n\tline-height: normal;\n\tmargin-right: .1em;\n\tcursor: pointer;\n\tvertical-align: middle;\n\ttext-align: center;\n\t-webkit-user-select: none;\n\t-moz-user-select: none;\n\t-ms-user-select: none;\n\tuser-select: none;\n\n\t/* Support: IE <= 11 */\n\toverflow: visible;\n}\n\n.ui-button,\n.ui-button:link,\n.ui-button:visited,\n.ui-button:hover,\n.ui-button:active {\n\ttext-decoration: none;\n}\n\n/* to make room for the icon, a width needs to be set here */\n.ui-button-icon-only {\n\twidth: 2em;\n\tbox-sizing: border-box;\n\ttext-indent: -9999px;\n\twhite-space: nowrap;\n}\n\n/* no icon support for input elements */\ninput.ui-button.ui-button-icon-only {\n\ttext-indent: 0;\n}\n\n/* button icon element(s) */\n.ui-button-icon-only .ui-icon {\n\tposition: absolute;\n\ttop: 50%;\n\tleft: 50%;\n\tmargin-top: -8px;\n\tmargin-left: -8px;\n}\n\n.ui-button.ui-icon-notext .ui-icon {\n\tpadding: 0;\n\twidth: 2.1em;\n\theight: 2.1em;\n\ttext-indent: -9999px;\n\twhite-space: nowrap;\n\n}\n\ninput.ui-button.ui-icon-notext .ui-icon {\n\twidth: auto;\n\theight: auto;\n\ttext-indent: 0;\n\twhite-space: normal;\n\tpadding: .4em 1em;\n}\n\n/* workarounds */\n/* Support: Firefox 5 - 40 */\ninput.ui-button::-moz-focus-inner,\nbutton.ui-button::-moz-focus-inner {\n\tborder: 0;\n\tpadding: 0;\n}\n.ui-controlgroup {\n\tvertical-align: middle;\n\tdisplay: inline-block;\n}\n.ui-controlgroup > .ui-controlgroup-item {\n\tfloat: left;\n\tmargin-left: 0;\n\tmargin-right: 0;\n}\n.ui-controlgroup > .ui-controlgroup-item:focus,\n.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus {\n\tz-index: 9999;\n}\n.ui-controlgroup-vertical > .ui-controlgroup-item {\n\tdisplay: block;\n\tfloat: none;\n\twidth: 100%;\n\tmargin-top: 0;\n\tmargin-bottom: 0;\n\ttext-align: left;\n}\n.ui-controlgroup-vertical .ui-controlgroup-item {\n\tbox-sizing: border-box;\n}\n.ui-controlgroup .ui-controlgroup-label {\n\tpadding: .4em 1em;\n}\n.ui-controlgroup .ui-controlgroup-label span {\n\tfont-size: 80%;\n}\n.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item {\n\tborder-left: none;\n}\n.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item {\n\tborder-top: none;\n}\n.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content {\n\tborder-right: none;\n}\n.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content {\n\tborder-bottom: none;\n}\n\n/* Spinner specific style fixes */\n.ui-controlgroup-vertical .ui-spinner-input {\n\n\t/* Support: IE8 only, Android < 4.4 only */\n\twidth: 75%;\n\twidth: calc( 100% - 2.4em );\n}\n.ui-controlgroup-vertical .ui-spinner .ui-spinner-up {\n\tborder-top-style: solid;\n}\n\n.ui-checkboxradio-label .ui-icon-background {\n\tbox-shadow: inset 1px 1px 1px #ccc;\n\tborder-radius: .12em;\n\tborder: none;\n}\n.ui-checkboxradio-radio-label .ui-icon-background {\n\twidth: 16px;\n\theight: 16px;\n\tborder-radius: 1em;\n\toverflow: visible;\n\tborder: none;\n}\n.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,\n.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon {\n\tbackground-image: none;\n\twidth: 8px;\n\theight: 8px;\n\tborder-width: 4px;\n\tborder-style: solid;\n}\n.ui-checkboxradio-disabled {\n\tpointer-events: none;\n}\n.ui-datepicker {\n\twidth: 17em;\n\tpadding: .2em .2em 0;\n\tdisplay: none;\n}\n.ui-datepicker .ui-datepicker-header {\n\tposition: relative;\n\tpadding: .2em 0;\n}\n.ui-datepicker .ui-datepicker-prev,\n.ui-datepicker .ui-datepicker-next {\n\tposition: absolute;\n\ttop: 2px;\n\twidth: 1.8em;\n\theight: 1.8em;\n}\n.ui-datepicker .ui-datepicker-prev-hover,\n.ui-datepicker .ui-datepicker-next-hover {\n\ttop: 1px;\n}\n.ui-datepicker .ui-datepicker-prev {\n\tleft: 2px;\n}\n.ui-datepicker .ui-datepicker-next {\n\tright: 2px;\n}\n.ui-datepicker .ui-datepicker-prev-hover {\n\tleft: 1px;\n}\n.ui-datepicker .ui-datepicker-next-hover {\n\tright: 1px;\n}\n.ui-datepicker .ui-datepicker-prev span,\n.ui-datepicker .ui-datepicker-next span {\n\tdisplay: block;\n\tposition: absolute;\n\tleft: 50%;\n\tmargin-left: -8px;\n\ttop: 50%;\n\tmargin-top: -8px;\n}\n.ui-datepicker .ui-datepicker-title {\n\tmargin: 0 2.3em;\n\tline-height: 1.8em;\n\ttext-align: center;\n}\n.ui-datepicker .ui-datepicker-title select {\n\tfont-size: 1em;\n\tmargin: 1px 0;\n}\n.ui-datepicker select.ui-datepicker-month,\n.ui-datepicker select.ui-datepicker-year {\n\twidth: 45%;\n}\n.ui-datepicker table {\n\twidth: 100%;\n\tfont-size: .9em;\n\tborder-collapse: collapse;\n\tmargin: 0 0 .4em;\n}\n.ui-datepicker th {\n\tpadding: .7em .3em;\n\ttext-align: center;\n\tfont-weight: bold;\n\tborder: 0;\n}\n.ui-datepicker td {\n\tborder: 0;\n\tpadding: 1px;\n}\n.ui-datepicker td span,\n.ui-datepicker td a {\n\tdisplay: block;\n\tpadding: .2em;\n\ttext-align: right;\n\ttext-decoration: none;\n}\n.ui-datepicker .ui-datepicker-buttonpane {\n\tbackground-image: none;\n\tmargin: .7em 0 0 0;\n\tpadding: 0 .2em;\n\tborder-left: 0;\n\tborder-right: 0;\n\tborder-bottom: 0;\n}\n.ui-datepicker .ui-datepicker-buttonpane button {\n\tfloat: right;\n\tmargin: .5em .2em .4em;\n\tcursor: pointer;\n\tpadding: .2em .6em .3em .6em;\n\twidth: auto;\n\toverflow: visible;\n}\n.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {\n\tfloat: left;\n}\n\n/* with multiple calendars */\n.ui-datepicker.ui-datepicker-multi {\n\twidth: auto;\n}\n.ui-datepicker-multi .ui-datepicker-group {\n\tfloat: left;\n}\n.ui-datepicker-multi .ui-datepicker-group table {\n\twidth: 95%;\n\tmargin: 0 auto .4em;\n}\n.ui-datepicker-multi-2 .ui-datepicker-group {\n\twidth: 50%;\n}\n.ui-datepicker-multi-3 .ui-datepicker-group {\n\twidth: 33.3%;\n}\n.ui-datepicker-multi-4 .ui-datepicker-group {\n\twidth: 25%;\n}\n.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,\n.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {\n\tborder-left-width: 0;\n}\n.ui-datepicker-multi .ui-datepicker-buttonpane {\n\tclear: left;\n}\n.ui-datepicker-row-break {\n\tclear: both;\n\twidth: 100%;\n\tfont-size: 0;\n}\n\n/* RTL support */\n.ui-datepicker-rtl {\n\tdirection: rtl;\n}\n.ui-datepicker-rtl .ui-datepicker-prev {\n\tright: 2px;\n\tleft: auto;\n}\n.ui-datepicker-rtl .ui-datepicker-next {\n\tleft: 2px;\n\tright: auto;\n}\n.ui-datepicker-rtl .ui-datepicker-prev:hover {\n\tright: 1px;\n\tleft: auto;\n}\n.ui-datepicker-rtl .ui-datepicker-next:hover {\n\tleft: 1px;\n\tright: auto;\n}\n.ui-datepicker-rtl .ui-datepicker-buttonpane {\n\tclear: right;\n}\n.ui-datepicker-rtl .ui-datepicker-buttonpane button {\n\tfloat: left;\n}\n.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,\n.ui-datepicker-rtl .ui-datepicker-group {\n\tfloat: right;\n}\n.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,\n.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {\n\tborder-right-width: 0;\n\tborder-left-width: 1px;\n}\n\n/* Icons */\n.ui-datepicker .ui-icon {\n\tdisplay: block;\n\ttext-indent: -99999px;\n\toverflow: hidden;\n\tbackground-repeat: no-repeat;\n\tleft: .5em;\n\ttop: .3em;\n}\n.ui-dialog {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tpadding: .2em;\n\toutline: 0;\n}\n.ui-dialog .ui-dialog-titlebar {\n\tpadding: .4em 1em;\n\tposition: relative;\n}\n.ui-dialog .ui-dialog-title {\n\tfloat: left;\n\tmargin: .1em 0;\n\twhite-space: nowrap;\n\twidth: 90%;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n}\n.ui-dialog .ui-dialog-titlebar-close {\n\tposition: absolute;\n\tright: .3em;\n\ttop: 50%;\n\twidth: 20px;\n\tmargin: -10px 0 0 0;\n\tpadding: 1px;\n\theight: 20px;\n}\n.ui-dialog .ui-dialog-content {\n\tposition: relative;\n\tborder: 0;\n\tpadding: .5em 1em;\n\tbackground: none;\n\toverflow: auto;\n}\n.ui-dialog .ui-dialog-buttonpane {\n\ttext-align: left;\n\tborder-width: 1px 0 0 0;\n\tbackground-image: none;\n\tmargin-top: .5em;\n\tpadding: .3em 1em .5em .4em;\n}\n.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {\n\tfloat: right;\n}\n.ui-dialog .ui-dialog-buttonpane button {\n\tmargin: .5em .4em .5em 0;\n\tcursor: pointer;\n}\n.ui-dialog .ui-resizable-n {\n\theight: 2px;\n\ttop: 0;\n}\n.ui-dialog .ui-resizable-e {\n\twidth: 2px;\n\tright: 0;\n}\n.ui-dialog .ui-resizable-s {\n\theight: 2px;\n\tbottom: 0;\n}\n.ui-dialog .ui-resizable-w {\n\twidth: 2px;\n\tleft: 0;\n}\n.ui-dialog .ui-resizable-se,\n.ui-dialog .ui-resizable-sw,\n.ui-dialog .ui-resizable-ne,\n.ui-dialog .ui-resizable-nw {\n\twidth: 7px;\n\theight: 7px;\n}\n.ui-dialog .ui-resizable-se {\n\tright: 0;\n\tbottom: 0;\n}\n.ui-dialog .ui-resizable-sw {\n\tleft: 0;\n\tbottom: 0;\n}\n.ui-dialog .ui-resizable-ne {\n\tright: 0;\n\ttop: 0;\n}\n.ui-dialog .ui-resizable-nw {\n\tleft: 0;\n\ttop: 0;\n}\n.ui-draggable .ui-dialog-titlebar {\n\tcursor: move;\n}\n.ui-draggable-handle {\n\t-ms-touch-action: none;\n\ttouch-action: none;\n}\n.ui-resizable {\n\tposition: relative;\n}\n.ui-resizable-handle {\n\tposition: absolute;\n\tfont-size: 0.1px;\n\tdisplay: block;\n\t-ms-touch-action: none;\n\ttouch-action: none;\n}\n.ui-resizable-disabled .ui-resizable-handle,\n.ui-resizable-autohide .ui-resizable-handle {\n\tdisplay: none;\n}\n.ui-resizable-n {\n\tcursor: n-resize;\n\theight: 7px;\n\twidth: 100%;\n\ttop: -5px;\n\tleft: 0;\n}\n.ui-resizable-s {\n\tcursor: s-resize;\n\theight: 7px;\n\twidth: 100%;\n\tbottom: -5px;\n\tleft: 0;\n}\n.ui-resizable-e {\n\tcursor: e-resize;\n\twidth: 7px;\n\tright: -5px;\n\ttop: 0;\n\theight: 100%;\n}\n.ui-resizable-w {\n\tcursor: w-resize;\n\twidth: 7px;\n\tleft: -5px;\n\ttop: 0;\n\theight: 100%;\n}\n.ui-resizable-se {\n\tcursor: se-resize;\n\twidth: 12px;\n\theight: 12px;\n\tright: 1px;\n\tbottom: 1px;\n}\n.ui-resizable-sw {\n\tcursor: sw-resize;\n\twidth: 9px;\n\theight: 9px;\n\tleft: -5px;\n\tbottom: -5px;\n}\n.ui-resizable-nw {\n\tcursor: nw-resize;\n\twidth: 9px;\n\theight: 9px;\n\tleft: -5px;\n\ttop: -5px;\n}\n.ui-resizable-ne {\n\tcursor: ne-resize;\n\twidth: 9px;\n\theight: 9px;\n\tright: -5px;\n\ttop: -5px;\n}\n.ui-progressbar {\n\theight: 2em;\n\ttext-align: left;\n\toverflow: hidden;\n}\n.ui-progressbar .ui-progressbar-value {\n\tmargin: -1px;\n\theight: 100%;\n}\n.ui-progressbar .ui-progressbar-overlay {\n\tbackground: url(\"data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==\");\n\theight: 100%;\n\tfilter: alpha(opacity=25); /* support: IE8 */\n\topacity: 0.25;\n}\n.ui-progressbar-indeterminate .ui-progressbar-value {\n\tbackground-image: none;\n}\n.ui-selectable {\n\t-ms-touch-action: none;\n\ttouch-action: none;\n}\n.ui-selectable-helper {\n\tposition: absolute;\n\tz-index: 100;\n\tborder: 1px dotted black;\n}\n.ui-selectmenu-menu {\n\tpadding: 0;\n\tmargin: 0;\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tdisplay: none;\n}\n.ui-selectmenu-menu .ui-menu {\n\toverflow: auto;\n\toverflow-x: hidden;\n\tpadding-bottom: 1px;\n}\n.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup {\n\tfont-size: 1em;\n\tfont-weight: bold;\n\tline-height: 1.5;\n\tpadding: 2px 0.4em;\n\tmargin: 0.5em 0 0 0;\n\theight: auto;\n\tborder: 0;\n}\n.ui-selectmenu-open {\n\tdisplay: block;\n}\n.ui-selectmenu-text {\n\tdisplay: block;\n\tmargin-right: 20px;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n}\n.ui-selectmenu-button.ui-button {\n\ttext-align: left;\n\twhite-space: nowrap;\n\twidth: 14em;\n}\n.ui-selectmenu-icon.ui-icon {\n\tfloat: right;\n\tmargin-top: 0;\n}\n.ui-slider {\n\tposition: relative;\n\ttext-align: left;\n}\n.ui-slider .ui-slider-handle {\n\tposition: absolute;\n\tz-index: 2;\n\twidth: 1.2em;\n\theight: 1.2em;\n\tcursor: default;\n\t-ms-touch-action: none;\n\ttouch-action: none;\n}\n.ui-slider .ui-slider-range {\n\tposition: absolute;\n\tz-index: 1;\n\tfont-size: .7em;\n\tdisplay: block;\n\tborder: 0;\n\tbackground-position: 0 0;\n}\n\n/* support: IE8 - See #6727 */\n.ui-slider.ui-state-disabled .ui-slider-handle,\n.ui-slider.ui-state-disabled .ui-slider-range {\n\tfilter: inherit;\n}\n\n.ui-slider-horizontal {\n\theight: .8em;\n}\n.ui-slider-horizontal .ui-slider-handle {\n\ttop: -.3em;\n\tmargin-left: -.6em;\n}\n.ui-slider-horizontal .ui-slider-range {\n\ttop: 0;\n\theight: 100%;\n}\n.ui-slider-horizontal .ui-slider-range-min {\n\tleft: 0;\n}\n.ui-slider-horizontal .ui-slider-range-max {\n\tright: 0;\n}\n\n.ui-slider-vertical {\n\twidth: .8em;\n\theight: 100px;\n}\n.ui-slider-vertical .ui-slider-handle {\n\tleft: -.3em;\n\tmargin-left: 0;\n\tmargin-bottom: -.6em;\n}\n.ui-slider-vertical .ui-slider-range {\n\tleft: 0;\n\twidth: 100%;\n}\n.ui-slider-vertical .ui-slider-range-min {\n\tbottom: 0;\n}\n.ui-slider-vertical .ui-slider-range-max {\n\ttop: 0;\n}\n.ui-sortable-handle {\n\t-ms-touch-action: none;\n\ttouch-action: none;\n}\n.ui-spinner {\n\tposition: relative;\n\tdisplay: inline-block;\n\toverflow: hidden;\n\tpadding: 0;\n\tvertical-align: middle;\n}\n.ui-spinner-input {\n\tborder: none;\n\tbackground: none;\n\tcolor: inherit;\n\tpadding: .222em 0;\n\tmargin: .2em 0;\n\tvertical-align: middle;\n\tmargin-left: .4em;\n\tmargin-right: 2em;\n}\n.ui-spinner-button {\n\twidth: 1.6em;\n\theight: 50%;\n\tfont-size: .5em;\n\tpadding: 0;\n\tmargin: 0;\n\ttext-align: center;\n\tposition: absolute;\n\tcursor: default;\n\tdisplay: block;\n\toverflow: hidden;\n\tright: 0;\n}\n/* more specificity required here to override default borders */\n.ui-spinner a.ui-spinner-button {\n\tborder-top-style: none;\n\tborder-bottom-style: none;\n\tborder-right-style: none;\n}\n.ui-spinner-up {\n\ttop: 0;\n}\n.ui-spinner-down {\n\tbottom: 0;\n}\n.ui-tabs {\n\tposition: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as \"fixed\") */\n\tpadding: .2em;\n}\n.ui-tabs .ui-tabs-nav {\n\tmargin: 0;\n\tpadding: .2em .2em 0;\n}\n.ui-tabs .ui-tabs-nav li {\n\tlist-style: none;\n\tfloat: left;\n\tposition: relative;\n\ttop: 0;\n\tmargin: 1px .2em 0 0;\n\tborder-bottom-width: 0;\n\tpadding: 0;\n\twhite-space: nowrap;\n}\n.ui-tabs .ui-tabs-nav .ui-tabs-anchor {\n\tfloat: left;\n\tpadding: .5em 1em;\n\ttext-decoration: none;\n}\n.ui-tabs .ui-tabs-nav li.ui-tabs-active {\n\tmargin-bottom: -1px;\n\tpadding-bottom: 1px;\n}\n.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,\n.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,\n.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {\n\tcursor: text;\n}\n.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {\n\tcursor: pointer;\n}\n.ui-tabs .ui-tabs-panel {\n\tdisplay: block;\n\tborder-width: 0;\n\tpadding: 1em 1.4em;\n\tbackground: none;\n}\n.ui-tooltip {\n\tpadding: 8px;\n\tposition: absolute;\n\tz-index: 9999;\n\tmax-width: 300px;\n}\nbody .ui-tooltip {\n\tborder-width: 2px;\n}\n/* Component containers\n----------------------------------*/\n.ui-widget {\n\tfont-family: Arial,Helvetica,sans-serif;\n\tfont-size: 1em;\n}\n.ui-widget .ui-widget {\n\tfont-size: 1em;\n}\n.ui-widget input,\n.ui-widget select,\n.ui-widget textarea,\n.ui-widget button {\n\tfont-family: Arial,Helvetica,sans-serif;\n\tfont-size: 1em;\n}\n.ui-widget.ui-widget-content {\n\tborder: 1px solid #c5c5c5;\n}\n.ui-widget-content {\n\tborder: 1px solid #dddddd;\n\tbackground: #ffffff;\n\tcolor: #333333;\n}\n.ui-widget-content a {\n\tcolor: #333333;\n}\n.ui-widget-header {\n\tborder: 1px solid #dddddd;\n\tbackground: #e9e9e9;\n\tcolor: #333333;\n\tfont-weight: bold;\n}\n.ui-widget-header a {\n\tcolor: #333333;\n}\n\n/* Interaction states\n----------------------------------*/\n.ui-state-default,\n.ui-widget-content .ui-state-default,\n.ui-widget-header .ui-state-default,\n.ui-button,\n\n/* We use html here because we need a greater specificity to make sure disabled\nworks properly when clicked or hovered */\nhtml .ui-button.ui-state-disabled:hover,\nhtml .ui-button.ui-state-disabled:active {\n\tborder: 1px solid #c5c5c5;\n\tbackground: #f6f6f6;\n\tfont-weight: normal;\n\tcolor: #454545;\n}\n.ui-state-default a,\n.ui-state-default a:link,\n.ui-state-default a:visited,\na.ui-button,\na:link.ui-button,\na:visited.ui-button,\n.ui-button {\n\tcolor: #454545;\n\ttext-decoration: none;\n}\n.ui-state-hover,\n.ui-widget-content .ui-state-hover,\n.ui-widget-header .ui-state-hover,\n.ui-state-focus,\n.ui-widget-content .ui-state-focus,\n.ui-widget-header .ui-state-focus,\n.ui-button:hover,\n.ui-button:focus {\n\tborder: 1px solid #cccccc;\n\tbackground: #ededed;\n\tfont-weight: normal;\n\tcolor: #2b2b2b;\n}\n.ui-state-hover a,\n.ui-state-hover a:hover,\n.ui-state-hover a:link,\n.ui-state-hover a:visited,\n.ui-state-focus a,\n.ui-state-focus a:hover,\n.ui-state-focus a:link,\n.ui-state-focus a:visited,\na.ui-button:hover,\na.ui-button:focus {\n\tcolor: #2b2b2b;\n\ttext-decoration: none;\n}\n\n.ui-visual-focus {\n\tbox-shadow: 0 0 3px 1px rgb(94, 158, 214);\n}\n.ui-state-active,\n.ui-widget-content .ui-state-active,\n.ui-widget-header .ui-state-active,\na.ui-button:active,\n.ui-button:active,\n.ui-button.ui-state-active:hover {\n\tborder: 1px solid #003eff;\n\tbackground: #007fff;\n\tfont-weight: normal;\n\tcolor: #ffffff;\n}\n.ui-icon-background,\n.ui-state-active .ui-icon-background {\n\tborder: #003eff;\n\tbackground-color: #ffffff;\n}\n.ui-state-active a,\n.ui-state-active a:link,\n.ui-state-active a:visited {\n\tcolor: #ffffff;\n\ttext-decoration: none;\n}\n\n/* Interaction Cues\n----------------------------------*/\n.ui-state-highlight,\n.ui-widget-content .ui-state-highlight,\n.ui-widget-header .ui-state-highlight {\n\tborder: 1px solid #dad55e;\n\tbackground: #fffa90;\n\tcolor: #777620;\n}\n.ui-state-checked {\n\tborder: 1px solid #dad55e;\n\tbackground: #fffa90;\n}\n.ui-state-highlight a,\n.ui-widget-content .ui-state-highlight a,\n.ui-widget-header .ui-state-highlight a {\n\tcolor: #777620;\n}\n.ui-state-error,\n.ui-widget-content .ui-state-error,\n.ui-widget-header .ui-state-error {\n\tborder: 1px solid #f1a899;\n\tbackground: #fddfdf;\n\tcolor: #5f3f3f;\n}\n.ui-state-error a,\n.ui-widget-content .ui-state-error a,\n.ui-widget-header .ui-state-error a {\n\tcolor: #5f3f3f;\n}\n.ui-state-error-text,\n.ui-widget-content .ui-state-error-text,\n.ui-widget-header .ui-state-error-text {\n\tcolor: #5f3f3f;\n}\n.ui-priority-primary,\n.ui-widget-content .ui-priority-primary,\n.ui-widget-header .ui-priority-primary {\n\tfont-weight: bold;\n}\n.ui-priority-secondary,\n.ui-widget-content .ui-priority-secondary,\n.ui-widget-header .ui-priority-secondary {\n\topacity: .7;\n\tfilter:Alpha(Opacity=70); /* support: IE8 */\n\tfont-weight: normal;\n}\n.ui-state-disabled,\n.ui-widget-content .ui-state-disabled,\n.ui-widget-header .ui-state-disabled {\n\topacity: .35;\n\tfilter:Alpha(Opacity=35); /* support: IE8 */\n\tbackground-image: none;\n}\n.ui-state-disabled .ui-icon {\n\tfilter:Alpha(Opacity=35); /* support: IE8 - See #6059 */\n}\n\n/* Icons\n----------------------------------*/\n\n/* states and images */\n.ui-icon {\n\twidth: 16px;\n\theight: 16px;\n}\n.ui-icon,\n.ui-widget-content .ui-icon {\n\tbackground-image: url(\"images/ui-icons_444444_256x240.png\");\n}\n.ui-widget-header .ui-icon {\n\tbackground-image: url(\"images/ui-icons_444444_256x240.png\");\n}\n.ui-state-hover .ui-icon,\n.ui-state-focus .ui-icon,\n.ui-button:hover .ui-icon,\n.ui-button:focus .ui-icon {\n\tbackground-image: url(\"images/ui-icons_555555_256x240.png\");\n}\n.ui-state-active .ui-icon,\n.ui-button:active .ui-icon {\n\tbackground-image: url(\"images/ui-icons_ffffff_256x240.png\");\n}\n.ui-state-highlight .ui-icon,\n.ui-button .ui-state-highlight.ui-icon {\n\tbackground-image: url(\"images/ui-icons_777620_256x240.png\");\n}\n.ui-state-error .ui-icon,\n.ui-state-error-text .ui-icon {\n\tbackground-image: url(\"images/ui-icons_cc0000_256x240.png\");\n}\n.ui-button .ui-icon {\n\tbackground-image: url(\"images/ui-icons_777777_256x240.png\");\n}\n\n/* positioning */\n.ui-icon-blank { background-position: 16px 16px; }\n.ui-icon-caret-1-n { background-position: 0 0; }\n.ui-icon-caret-1-ne { background-position: -16px 0; }\n.ui-icon-caret-1-e { background-position: -32px 0; }\n.ui-icon-caret-1-se { background-position: -48px 0; }\n.ui-icon-caret-1-s { background-position: -65px 0; }\n.ui-icon-caret-1-sw { background-position: -80px 0; }\n.ui-icon-caret-1-w { background-position: -96px 0; }\n.ui-icon-caret-1-nw { background-position: -112px 0; }\n.ui-icon-caret-2-n-s { background-position: -128px 0; }\n.ui-icon-caret-2-e-w { background-position: -144px 0; }\n.ui-icon-triangle-1-n { background-position: 0 -16px; }\n.ui-icon-triangle-1-ne { background-position: -16px -16px; }\n.ui-icon-triangle-1-e { background-position: -32px -16px; }\n.ui-icon-triangle-1-se { background-position: -48px -16px; }\n.ui-icon-triangle-1-s { background-position: -65px -16px; }\n.ui-icon-triangle-1-sw { background-position: -80px -16px; }\n.ui-icon-triangle-1-w { background-position: -96px -16px; }\n.ui-icon-triangle-1-nw { background-position: -112px -16px; }\n.ui-icon-triangle-2-n-s { background-position: -128px -16px; }\n.ui-icon-triangle-2-e-w { background-position: -144px -16px; }\n.ui-icon-arrow-1-n { background-position: 0 -32px; }\n.ui-icon-arrow-1-ne { background-position: -16px -32px; }\n.ui-icon-arrow-1-e { background-position: -32px -32px; }\n.ui-icon-arrow-1-se { background-position: -48px -32px; }\n.ui-icon-arrow-1-s { background-position: -65px -32px; }\n.ui-icon-arrow-1-sw { background-position: -80px -32px; }\n.ui-icon-arrow-1-w { background-position: -96px -32px; }\n.ui-icon-arrow-1-nw { background-position: -112px -32px; }\n.ui-icon-arrow-2-n-s { background-position: -128px -32px; }\n.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }\n.ui-icon-arrow-2-e-w { background-position: -160px -32px; }\n.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }\n.ui-icon-arrowstop-1-n { background-position: -192px -32px; }\n.ui-icon-arrowstop-1-e { background-position: -208px -32px; }\n.ui-icon-arrowstop-1-s { background-position: -224px -32px; }\n.ui-icon-arrowstop-1-w { background-position: -240px -32px; }\n.ui-icon-arrowthick-1-n { background-position: 1px -48px; }\n.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }\n.ui-icon-arrowthick-1-e { background-position: -32px -48px; }\n.ui-icon-arrowthick-1-se { background-position: -48px -48px; }\n.ui-icon-arrowthick-1-s { background-position: -64px -48px; }\n.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }\n.ui-icon-arrowthick-1-w { background-position: -96px -48px; }\n.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }\n.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }\n.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }\n.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }\n.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }\n.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }\n.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }\n.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }\n.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }\n.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }\n.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }\n.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }\n.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }\n.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }\n.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }\n.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }\n.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }\n.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }\n.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }\n.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }\n.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }\n.ui-icon-arrow-4 { background-position: 0 -80px; }\n.ui-icon-arrow-4-diag { background-position: -16px -80px; }\n.ui-icon-extlink { background-position: -32px -80px; }\n.ui-icon-newwin { background-position: -48px -80px; }\n.ui-icon-refresh { background-position: -64px -80px; }\n.ui-icon-shuffle { background-position: -80px -80px; }\n.ui-icon-transfer-e-w { background-position: -96px -80px; }\n.ui-icon-transferthick-e-w { background-position: -112px -80px; }\n.ui-icon-folder-collapsed { background-position: 0 -96px; }\n.ui-icon-folder-open { background-position: -16px -96px; }\n.ui-icon-document { background-position: -32px -96px; }\n.ui-icon-document-b { background-position: -48px -96px; }\n.ui-icon-note { background-position: -64px -96px; }\n.ui-icon-mail-closed { background-position: -80px -96px; }\n.ui-icon-mail-open { background-position: -96px -96px; }\n.ui-icon-suitcase { background-position: -112px -96px; }\n.ui-icon-comment { background-position: -128px -96px; }\n.ui-icon-person { background-position: -144px -96px; }\n.ui-icon-print { background-position: -160px -96px; }\n.ui-icon-trash { background-position: -176px -96px; }\n.ui-icon-locked { background-position: -192px -96px; }\n.ui-icon-unlocked { background-position: -208px -96px; }\n.ui-icon-bookmark { background-position: -224px -96px; }\n.ui-icon-tag { background-position: -240px -96px; }\n.ui-icon-home { background-position: 0 -112px; }\n.ui-icon-flag { background-position: -16px -112px; }\n.ui-icon-calendar { background-position: -32px -112px; }\n.ui-icon-cart { background-position: -48px -112px; }\n.ui-icon-pencil { background-position: -64px -112px; }\n.ui-icon-clock { background-position: -80px -112px; }\n.ui-icon-disk { background-position: -96px -112px; }\n.ui-icon-calculator { background-position: -112px -112px; }\n.ui-icon-zoomin { background-position: -128px -112px; }\n.ui-icon-zoomout { background-position: -144px -112px; }\n.ui-icon-search { background-position: -160px -112px; }\n.ui-icon-wrench { background-position: -176px -112px; }\n.ui-icon-gear { background-position: -192px -112px; }\n.ui-icon-heart { background-position: -208px -112px; }\n.ui-icon-star { background-position: -224px -112px; }\n.ui-icon-link { background-position: -240px -112px; }\n.ui-icon-cancel { background-position: 0 -128px; }\n.ui-icon-plus { background-position: -16px -128px; }\n.ui-icon-plusthick { background-position: -32px -128px; }\n.ui-icon-minus { background-position: -48px -128px; }\n.ui-icon-minusthick { background-position: -64px -128px; }\n.ui-icon-close { background-position: -80px -128px; }\n.ui-icon-closethick { background-position: -96px -128px; }\n.ui-icon-key { background-position: -112px -128px; }\n.ui-icon-lightbulb { background-position: -128px -128px; }\n.ui-icon-scissors { background-position: -144px -128px; }\n.ui-icon-clipboard { background-position: -160px -128px; }\n.ui-icon-copy { background-position: -176px -128px; }\n.ui-icon-contact { background-position: -192px -128px; }\n.ui-icon-image { background-position: -208px -128px; }\n.ui-icon-video { background-position: -224px -128px; }\n.ui-icon-script { background-position: -240px -128px; }\n.ui-icon-alert { background-position: 0 -144px; }\n.ui-icon-info { background-position: -16px -144px; }\n.ui-icon-notice { background-position: -32px -144px; }\n.ui-icon-help { background-position: -48px -144px; }\n.ui-icon-check { background-position: -64px -144px; }\n.ui-icon-bullet { background-position: -80px -144px; }\n.ui-icon-radio-on { background-position: -96px -144px; }\n.ui-icon-radio-off { background-position: -112px -144px; }\n.ui-icon-pin-w { background-position: -128px -144px; }\n.ui-icon-pin-s { background-position: -144px -144px; }\n.ui-icon-play { background-position: 0 -160px; }\n.ui-icon-pause { background-position: -16px -160px; }\n.ui-icon-seek-next { background-position: -32px -160px; }\n.ui-icon-seek-prev { background-position: -48px -160px; }\n.ui-icon-seek-end { background-position: -64px -160px; }\n.ui-icon-seek-start { background-position: -80px -160px; }\n/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */\n.ui-icon-seek-first { background-position: -80px -160px; }\n.ui-icon-stop { background-position: -96px -160px; }\n.ui-icon-eject { background-position: -112px -160px; }\n.ui-icon-volume-off { background-position: -128px -160px; }\n.ui-icon-volume-on { background-position: -144px -160px; }\n.ui-icon-power { background-position: 0 -176px; }\n.ui-icon-signal-diag { background-position: -16px -176px; }\n.ui-icon-signal { background-position: -32px -176px; }\n.ui-icon-battery-0 { background-position: -48px -176px; }\n.ui-icon-battery-1 { background-position: -64px -176px; }\n.ui-icon-battery-2 { background-position: -80px -176px; }\n.ui-icon-battery-3 { background-position: -96px -176px; }\n.ui-icon-circle-plus { background-position: 0 -192px; }\n.ui-icon-circle-minus { background-position: -16px -192px; }\n.ui-icon-circle-close { background-position: -32px -192px; }\n.ui-icon-circle-triangle-e { background-position: -48px -192px; }\n.ui-icon-circle-triangle-s { background-position: -64px -192px; }\n.ui-icon-circle-triangle-w { background-position: -80px -192px; }\n.ui-icon-circle-triangle-n { background-position: -96px -192px; }\n.ui-icon-circle-arrow-e { background-position: -112px -192px; }\n.ui-icon-circle-arrow-s { background-position: -128px -192px; }\n.ui-icon-circle-arrow-w { background-position: -144px -192px; }\n.ui-icon-circle-arrow-n { background-position: -160px -192px; }\n.ui-icon-circle-zoomin { background-position: -176px -192px; }\n.ui-icon-circle-zoomout { background-position: -192px -192px; }\n.ui-icon-circle-check { background-position: -208px -192px; }\n.ui-icon-circlesmall-plus { background-position: 0 -208px; }\n.ui-icon-circlesmall-minus { background-position: -16px -208px; }\n.ui-icon-circlesmall-close { background-position: -32px -208px; }\n.ui-icon-squaresmall-plus { background-position: -48px -208px; }\n.ui-icon-squaresmall-minus { background-position: -64px -208px; }\n.ui-icon-squaresmall-close { background-position: -80px -208px; }\n.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }\n.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }\n.ui-icon-grip-solid-vertical { background-position: -32px -224px; }\n.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }\n.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }\n.ui-icon-grip-diagonal-se { background-position: -80px -224px; }\n\n\n/* Misc visuals\n----------------------------------*/\n\n/* Corner radius */\n.ui-corner-all,\n.ui-corner-top,\n.ui-corner-left,\n.ui-corner-tl {\n\tborder-top-left-radius: 3px;\n}\n.ui-corner-all,\n.ui-corner-top,\n.ui-corner-right,\n.ui-corner-tr {\n\tborder-top-right-radius: 3px;\n}\n.ui-corner-all,\n.ui-corner-bottom,\n.ui-corner-left,\n.ui-corner-bl {\n\tborder-bottom-left-radius: 3px;\n}\n.ui-corner-all,\n.ui-corner-bottom,\n.ui-corner-right,\n.ui-corner-br {\n\tborder-bottom-right-radius: 3px;\n}\n\n/* Overlays */\n.ui-widget-overlay {\n\tbackground: #aaaaaa;\n\topacity: .3;\n\tfilter: Alpha(Opacity=30); /* support: IE8 */\n}\n.ui-widget-shadow {\n\t-webkit-box-shadow: 0px 0px 5px #666666;\n\tbox-shadow: 0px 0px 5px #666666;\n}\n"
  },
  {
    "path": "public/profile/vendors/jquery-ui/jquery-ui.js",
    "content": "/*! jQuery UI - v1.12.1 - 2016-09-14\n* http://jqueryui.com\n* Includes: widget.js, position.js, data.js, disable-selection.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js, focusable.js, form-reset-mixin.js, jquery-1-7.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/draggable.js, widgets/droppable.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, widgets/resizable.js, widgets/selectable.js, widgets/selectmenu.js, widgets/slider.js, widgets/sortable.js, widgets/spinner.js, widgets/tabs.js, widgets/tooltip.js\n* Copyright jQuery Foundation and other contributors; Licensed MIT */\n\n(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine([ \"jquery\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n$.ui = $.ui || {};\n\nvar version = $.ui.version = \"1.12.1\";\n\n\n/*!\n * jQuery UI Widget 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Widget\n//>>group: Core\n//>>description: Provides a factory for creating stateful widgets with a common API.\n//>>docs: http://api.jqueryui.com/jQuery.widget/\n//>>demos: http://jqueryui.com/widget/\n\n\n\nvar widgetUuid = 0;\nvar widgetSlice = Array.prototype.slice;\n\n$.cleanData = ( function( orig ) {\n\treturn function( elems ) {\n\t\tvar events, elem, i;\n\t\tfor ( i = 0; ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\ttry {\n\n\t\t\t\t// Only trigger remove when necessary to save time\n\t\t\t\tevents = $._data( elem, \"events\" );\n\t\t\t\tif ( events && events.remove ) {\n\t\t\t\t\t$( elem ).triggerHandler( \"remove\" );\n\t\t\t\t}\n\n\t\t\t// Http://bugs.jquery.com/ticket/8235\n\t\t\t} catch ( e ) {}\n\t\t}\n\t\torig( elems );\n\t};\n} )( $.cleanData );\n\n$.widget = function( name, base, prototype ) {\n\tvar existingConstructor, constructor, basePrototype;\n\n\t// ProxiedPrototype allows the provided prototype to remain unmodified\n\t// so that it can be used as a mixin for multiple widgets (#8876)\n\tvar proxiedPrototype = {};\n\n\tvar namespace = name.split( \".\" )[ 0 ];\n\tname = name.split( \".\" )[ 1 ];\n\tvar fullName = namespace + \"-\" + name;\n\n\tif ( !prototype ) {\n\t\tprototype = base;\n\t\tbase = $.Widget;\n\t}\n\n\tif ( $.isArray( prototype ) ) {\n\t\tprototype = $.extend.apply( null, [ {} ].concat( prototype ) );\n\t}\n\n\t// Create selector for plugin\n\t$.expr[ \":\" ][ fullName.toLowerCase() ] = function( elem ) {\n\t\treturn !!$.data( elem, fullName );\n\t};\n\n\t$[ namespace ] = $[ namespace ] || {};\n\texistingConstructor = $[ namespace ][ name ];\n\tconstructor = $[ namespace ][ name ] = function( options, element ) {\n\n\t\t// Allow instantiation without \"new\" keyword\n\t\tif ( !this._createWidget ) {\n\t\t\treturn new constructor( options, element );\n\t\t}\n\n\t\t// Allow instantiation without initializing for simple inheritance\n\t\t// must use \"new\" keyword (the code above always passes args)\n\t\tif ( arguments.length ) {\n\t\t\tthis._createWidget( options, element );\n\t\t}\n\t};\n\n\t// Extend with the existing constructor to carry over any static properties\n\t$.extend( constructor, existingConstructor, {\n\t\tversion: prototype.version,\n\n\t\t// Copy the object used to create the prototype in case we need to\n\t\t// redefine the widget later\n\t\t_proto: $.extend( {}, prototype ),\n\n\t\t// Track widgets that inherit from this widget in case this widget is\n\t\t// redefined after a widget inherits from it\n\t\t_childConstructors: []\n\t} );\n\n\tbasePrototype = new base();\n\n\t// We need to make the options hash a property directly on the new instance\n\t// otherwise we'll modify the options hash on the prototype that we're\n\t// inheriting from\n\tbasePrototype.options = $.widget.extend( {}, basePrototype.options );\n\t$.each( prototype, function( prop, value ) {\n\t\tif ( !$.isFunction( value ) ) {\n\t\t\tproxiedPrototype[ prop ] = value;\n\t\t\treturn;\n\t\t}\n\t\tproxiedPrototype[ prop ] = ( function() {\n\t\t\tfunction _super() {\n\t\t\t\treturn base.prototype[ prop ].apply( this, arguments );\n\t\t\t}\n\n\t\t\tfunction _superApply( args ) {\n\t\t\t\treturn base.prototype[ prop ].apply( this, args );\n\t\t\t}\n\n\t\t\treturn function() {\n\t\t\t\tvar __super = this._super;\n\t\t\t\tvar __superApply = this._superApply;\n\t\t\t\tvar returnValue;\n\n\t\t\t\tthis._super = _super;\n\t\t\t\tthis._superApply = _superApply;\n\n\t\t\t\treturnValue = value.apply( this, arguments );\n\n\t\t\t\tthis._super = __super;\n\t\t\t\tthis._superApply = __superApply;\n\n\t\t\t\treturn returnValue;\n\t\t\t};\n\t\t} )();\n\t} );\n\tconstructor.prototype = $.widget.extend( basePrototype, {\n\n\t\t// TODO: remove support for widgetEventPrefix\n\t\t// always use the name + a colon as the prefix, e.g., draggable:start\n\t\t// don't prefix for widgets that aren't DOM-based\n\t\twidgetEventPrefix: existingConstructor ? ( basePrototype.widgetEventPrefix || name ) : name\n\t}, proxiedPrototype, {\n\t\tconstructor: constructor,\n\t\tnamespace: namespace,\n\t\twidgetName: name,\n\t\twidgetFullName: fullName\n\t} );\n\n\t// If this widget is being redefined then we need to find all widgets that\n\t// are inheriting from it and redefine all of them so that they inherit from\n\t// the new version of this widget. We're essentially trying to replace one\n\t// level in the prototype chain.\n\tif ( existingConstructor ) {\n\t\t$.each( existingConstructor._childConstructors, function( i, child ) {\n\t\t\tvar childPrototype = child.prototype;\n\n\t\t\t// Redefine the child widget using the same prototype that was\n\t\t\t// originally used, but inherit from the new version of the base\n\t\t\t$.widget( childPrototype.namespace + \".\" + childPrototype.widgetName, constructor,\n\t\t\t\tchild._proto );\n\t\t} );\n\n\t\t// Remove the list of existing child constructors from the old constructor\n\t\t// so the old child constructors can be garbage collected\n\t\tdelete existingConstructor._childConstructors;\n\t} else {\n\t\tbase._childConstructors.push( constructor );\n\t}\n\n\t$.widget.bridge( name, constructor );\n\n\treturn constructor;\n};\n\n$.widget.extend = function( target ) {\n\tvar input = widgetSlice.call( arguments, 1 );\n\tvar inputIndex = 0;\n\tvar inputLength = input.length;\n\tvar key;\n\tvar value;\n\n\tfor ( ; inputIndex < inputLength; inputIndex++ ) {\n\t\tfor ( key in input[ inputIndex ] ) {\n\t\t\tvalue = input[ inputIndex ][ key ];\n\t\t\tif ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) {\n\n\t\t\t\t// Clone objects\n\t\t\t\tif ( $.isPlainObject( value ) ) {\n\t\t\t\t\ttarget[ key ] = $.isPlainObject( target[ key ] ) ?\n\t\t\t\t\t\t$.widget.extend( {}, target[ key ], value ) :\n\n\t\t\t\t\t\t// Don't extend strings, arrays, etc. with objects\n\t\t\t\t\t\t$.widget.extend( {}, value );\n\n\t\t\t\t// Copy everything else by reference\n\t\t\t\t} else {\n\t\t\t\t\ttarget[ key ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn target;\n};\n\n$.widget.bridge = function( name, object ) {\n\tvar fullName = object.prototype.widgetFullName || name;\n\t$.fn[ name ] = function( options ) {\n\t\tvar isMethodCall = typeof options === \"string\";\n\t\tvar args = widgetSlice.call( arguments, 1 );\n\t\tvar returnValue = this;\n\n\t\tif ( isMethodCall ) {\n\n\t\t\t// If this is an empty collection, we need to have the instance method\n\t\t\t// return undefined instead of the jQuery instance\n\t\t\tif ( !this.length && options === \"instance\" ) {\n\t\t\t\treturnValue = undefined;\n\t\t\t} else {\n\t\t\t\tthis.each( function() {\n\t\t\t\t\tvar methodValue;\n\t\t\t\t\tvar instance = $.data( this, fullName );\n\n\t\t\t\t\tif ( options === \"instance\" ) {\n\t\t\t\t\t\treturnValue = instance;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !instance ) {\n\t\t\t\t\t\treturn $.error( \"cannot call methods on \" + name +\n\t\t\t\t\t\t\t\" prior to initialization; \" +\n\t\t\t\t\t\t\t\"attempted to call method '\" + options + \"'\" );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !$.isFunction( instance[ options ] ) || options.charAt( 0 ) === \"_\" ) {\n\t\t\t\t\t\treturn $.error( \"no such method '\" + options + \"' for \" + name +\n\t\t\t\t\t\t\t\" widget instance\" );\n\t\t\t\t\t}\n\n\t\t\t\t\tmethodValue = instance[ options ].apply( instance, args );\n\n\t\t\t\t\tif ( methodValue !== instance && methodValue !== undefined ) {\n\t\t\t\t\t\treturnValue = methodValue && methodValue.jquery ?\n\t\t\t\t\t\t\treturnValue.pushStack( methodValue.get() ) :\n\t\t\t\t\t\t\tmethodValue;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t} else {\n\n\t\t\t// Allow multiple hashes to be passed on init\n\t\t\tif ( args.length ) {\n\t\t\t\toptions = $.widget.extend.apply( null, [ options ].concat( args ) );\n\t\t\t}\n\n\t\t\tthis.each( function() {\n\t\t\t\tvar instance = $.data( this, fullName );\n\t\t\t\tif ( instance ) {\n\t\t\t\t\tinstance.option( options || {} );\n\t\t\t\t\tif ( instance._init ) {\n\t\t\t\t\t\tinstance._init();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t$.data( this, fullName, new object( options, this ) );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn returnValue;\n\t};\n};\n\n$.Widget = function( /* options, element */ ) {};\n$.Widget._childConstructors = [];\n\n$.Widget.prototype = {\n\twidgetName: \"widget\",\n\twidgetEventPrefix: \"\",\n\tdefaultElement: \"<div>\",\n\n\toptions: {\n\t\tclasses: {},\n\t\tdisabled: false,\n\n\t\t// Callbacks\n\t\tcreate: null\n\t},\n\n\t_createWidget: function( options, element ) {\n\t\telement = $( element || this.defaultElement || this )[ 0 ];\n\t\tthis.element = $( element );\n\t\tthis.uuid = widgetUuid++;\n\t\tthis.eventNamespace = \".\" + this.widgetName + this.uuid;\n\n\t\tthis.bindings = $();\n\t\tthis.hoverable = $();\n\t\tthis.focusable = $();\n\t\tthis.classesElementLookup = {};\n\n\t\tif ( element !== this ) {\n\t\t\t$.data( element, this.widgetFullName, this );\n\t\t\tthis._on( true, this.element, {\n\t\t\t\tremove: function( event ) {\n\t\t\t\t\tif ( event.target === element ) {\n\t\t\t\t\t\tthis.destroy();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t\tthis.document = $( element.style ?\n\n\t\t\t\t// Element within the document\n\t\t\t\telement.ownerDocument :\n\n\t\t\t\t// Element is window or document\n\t\t\t\telement.document || element );\n\t\t\tthis.window = $( this.document[ 0 ].defaultView || this.document[ 0 ].parentWindow );\n\t\t}\n\n\t\tthis.options = $.widget.extend( {},\n\t\t\tthis.options,\n\t\t\tthis._getCreateOptions(),\n\t\t\toptions );\n\n\t\tthis._create();\n\n\t\tif ( this.options.disabled ) {\n\t\t\tthis._setOptionDisabled( this.options.disabled );\n\t\t}\n\n\t\tthis._trigger( \"create\", null, this._getCreateEventData() );\n\t\tthis._init();\n\t},\n\n\t_getCreateOptions: function() {\n\t\treturn {};\n\t},\n\n\t_getCreateEventData: $.noop,\n\n\t_create: $.noop,\n\n\t_init: $.noop,\n\n\tdestroy: function() {\n\t\tvar that = this;\n\n\t\tthis._destroy();\n\t\t$.each( this.classesElementLookup, function( key, value ) {\n\t\t\tthat._removeClass( value, key );\n\t\t} );\n\n\t\t// We can probably remove the unbind calls in 2.0\n\t\t// all event bindings should go through this._on()\n\t\tthis.element\n\t\t\t.off( this.eventNamespace )\n\t\t\t.removeData( this.widgetFullName );\n\t\tthis.widget()\n\t\t\t.off( this.eventNamespace )\n\t\t\t.removeAttr( \"aria-disabled\" );\n\n\t\t// Clean up events and states\n\t\tthis.bindings.off( this.eventNamespace );\n\t},\n\n\t_destroy: $.noop,\n\n\twidget: function() {\n\t\treturn this.element;\n\t},\n\n\toption: function( key, value ) {\n\t\tvar options = key;\n\t\tvar parts;\n\t\tvar curOption;\n\t\tvar i;\n\n\t\tif ( arguments.length === 0 ) {\n\n\t\t\t// Don't return a reference to the internal hash\n\t\t\treturn $.widget.extend( {}, this.options );\n\t\t}\n\n\t\tif ( typeof key === \"string\" ) {\n\n\t\t\t// Handle nested keys, e.g., \"foo.bar\" => { foo: { bar: ___ } }\n\t\t\toptions = {};\n\t\t\tparts = key.split( \".\" );\n\t\t\tkey = parts.shift();\n\t\t\tif ( parts.length ) {\n\t\t\t\tcurOption = options[ key ] = $.widget.extend( {}, this.options[ key ] );\n\t\t\t\tfor ( i = 0; i < parts.length - 1; i++ ) {\n\t\t\t\t\tcurOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {};\n\t\t\t\t\tcurOption = curOption[ parts[ i ] ];\n\t\t\t\t}\n\t\t\t\tkey = parts.pop();\n\t\t\t\tif ( arguments.length === 1 ) {\n\t\t\t\t\treturn curOption[ key ] === undefined ? null : curOption[ key ];\n\t\t\t\t}\n\t\t\t\tcurOption[ key ] = value;\n\t\t\t} else {\n\t\t\t\tif ( arguments.length === 1 ) {\n\t\t\t\t\treturn this.options[ key ] === undefined ? null : this.options[ key ];\n\t\t\t\t}\n\t\t\t\toptions[ key ] = value;\n\t\t\t}\n\t\t}\n\n\t\tthis._setOptions( options );\n\n\t\treturn this;\n\t},\n\n\t_setOptions: function( options ) {\n\t\tvar key;\n\n\t\tfor ( key in options ) {\n\t\t\tthis._setOption( key, options[ key ] );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"classes\" ) {\n\t\t\tthis._setOptionClasses( value );\n\t\t}\n\n\t\tthis.options[ key ] = value;\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis._setOptionDisabled( value );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t_setOptionClasses: function( value ) {\n\t\tvar classKey, elements, currentElements;\n\n\t\tfor ( classKey in value ) {\n\t\t\tcurrentElements = this.classesElementLookup[ classKey ];\n\t\t\tif ( value[ classKey ] === this.options.classes[ classKey ] ||\n\t\t\t\t\t!currentElements ||\n\t\t\t\t\t!currentElements.length ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// We are doing this to create a new jQuery object because the _removeClass() call\n\t\t\t// on the next line is going to destroy the reference to the current elements being\n\t\t\t// tracked. We need to save a copy of this collection so that we can add the new classes\n\t\t\t// below.\n\t\t\telements = $( currentElements.get() );\n\t\t\tthis._removeClass( currentElements, classKey );\n\n\t\t\t// We don't use _addClass() here, because that uses this.options.classes\n\t\t\t// for generating the string of classes. We want to use the value passed in from\n\t\t\t// _setOption(), this is the new value of the classes option which was passed to\n\t\t\t// _setOption(). We pass this value directly to _classes().\n\t\t\telements.addClass( this._classes( {\n\t\t\t\telement: elements,\n\t\t\t\tkeys: classKey,\n\t\t\t\tclasses: value,\n\t\t\t\tadd: true\n\t\t\t} ) );\n\t\t}\n\t},\n\n\t_setOptionDisabled: function( value ) {\n\t\tthis._toggleClass( this.widget(), this.widgetFullName + \"-disabled\", null, !!value );\n\n\t\t// If the widget is becoming disabled, then nothing is interactive\n\t\tif ( value ) {\n\t\t\tthis._removeClass( this.hoverable, null, \"ui-state-hover\" );\n\t\t\tthis._removeClass( this.focusable, null, \"ui-state-focus\" );\n\t\t}\n\t},\n\n\tenable: function() {\n\t\treturn this._setOptions( { disabled: false } );\n\t},\n\n\tdisable: function() {\n\t\treturn this._setOptions( { disabled: true } );\n\t},\n\n\t_classes: function( options ) {\n\t\tvar full = [];\n\t\tvar that = this;\n\n\t\toptions = $.extend( {\n\t\t\telement: this.element,\n\t\t\tclasses: this.options.classes || {}\n\t\t}, options );\n\n\t\tfunction processClassString( classes, checkOption ) {\n\t\t\tvar current, i;\n\t\t\tfor ( i = 0; i < classes.length; i++ ) {\n\t\t\t\tcurrent = that.classesElementLookup[ classes[ i ] ] || $();\n\t\t\t\tif ( options.add ) {\n\t\t\t\t\tcurrent = $( $.unique( current.get().concat( options.element.get() ) ) );\n\t\t\t\t} else {\n\t\t\t\t\tcurrent = $( current.not( options.element ).get() );\n\t\t\t\t}\n\t\t\t\tthat.classesElementLookup[ classes[ i ] ] = current;\n\t\t\t\tfull.push( classes[ i ] );\n\t\t\t\tif ( checkOption && options.classes[ classes[ i ] ] ) {\n\t\t\t\t\tfull.push( options.classes[ classes[ i ] ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis._on( options.element, {\n\t\t\t\"remove\": \"_untrackClassesElement\"\n\t\t} );\n\n\t\tif ( options.keys ) {\n\t\t\tprocessClassString( options.keys.match( /\\S+/g ) || [], true );\n\t\t}\n\t\tif ( options.extra ) {\n\t\t\tprocessClassString( options.extra.match( /\\S+/g ) || [] );\n\t\t}\n\n\t\treturn full.join( \" \" );\n\t},\n\n\t_untrackClassesElement: function( event ) {\n\t\tvar that = this;\n\t\t$.each( that.classesElementLookup, function( key, value ) {\n\t\t\tif ( $.inArray( event.target, value ) !== -1 ) {\n\t\t\t\tthat.classesElementLookup[ key ] = $( value.not( event.target ).get() );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_removeClass: function( element, keys, extra ) {\n\t\treturn this._toggleClass( element, keys, extra, false );\n\t},\n\n\t_addClass: function( element, keys, extra ) {\n\t\treturn this._toggleClass( element, keys, extra, true );\n\t},\n\n\t_toggleClass: function( element, keys, extra, add ) {\n\t\tadd = ( typeof add === \"boolean\" ) ? add : extra;\n\t\tvar shift = ( typeof element === \"string\" || element === null ),\n\t\t\toptions = {\n\t\t\t\textra: shift ? keys : extra,\n\t\t\t\tkeys: shift ? element : keys,\n\t\t\t\telement: shift ? this.element : element,\n\t\t\t\tadd: add\n\t\t\t};\n\t\toptions.element.toggleClass( this._classes( options ), add );\n\t\treturn this;\n\t},\n\n\t_on: function( suppressDisabledCheck, element, handlers ) {\n\t\tvar delegateElement;\n\t\tvar instance = this;\n\n\t\t// No suppressDisabledCheck flag, shuffle arguments\n\t\tif ( typeof suppressDisabledCheck !== \"boolean\" ) {\n\t\t\thandlers = element;\n\t\t\telement = suppressDisabledCheck;\n\t\t\tsuppressDisabledCheck = false;\n\t\t}\n\n\t\t// No element argument, shuffle and use this.element\n\t\tif ( !handlers ) {\n\t\t\thandlers = element;\n\t\t\telement = this.element;\n\t\t\tdelegateElement = this.widget();\n\t\t} else {\n\t\t\telement = delegateElement = $( element );\n\t\t\tthis.bindings = this.bindings.add( element );\n\t\t}\n\n\t\t$.each( handlers, function( event, handler ) {\n\t\t\tfunction handlerProxy() {\n\n\t\t\t\t// Allow widgets to customize the disabled handling\n\t\t\t\t// - disabled as an array instead of boolean\n\t\t\t\t// - disabled class as method for disabling individual parts\n\t\t\t\tif ( !suppressDisabledCheck &&\n\t\t\t\t\t\t( instance.options.disabled === true ||\n\t\t\t\t\t\t$( this ).hasClass( \"ui-state-disabled\" ) ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\treturn ( typeof handler === \"string\" ? instance[ handler ] : handler )\n\t\t\t\t\t.apply( instance, arguments );\n\t\t\t}\n\n\t\t\t// Copy the guid so direct unbinding works\n\t\t\tif ( typeof handler !== \"string\" ) {\n\t\t\t\thandlerProxy.guid = handler.guid =\n\t\t\t\t\thandler.guid || handlerProxy.guid || $.guid++;\n\t\t\t}\n\n\t\t\tvar match = event.match( /^([\\w:-]*)\\s*(.*)$/ );\n\t\t\tvar eventName = match[ 1 ] + instance.eventNamespace;\n\t\t\tvar selector = match[ 2 ];\n\n\t\t\tif ( selector ) {\n\t\t\t\tdelegateElement.on( eventName, selector, handlerProxy );\n\t\t\t} else {\n\t\t\t\telement.on( eventName, handlerProxy );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_off: function( element, eventName ) {\n\t\teventName = ( eventName || \"\" ).split( \" \" ).join( this.eventNamespace + \" \" ) +\n\t\t\tthis.eventNamespace;\n\t\telement.off( eventName ).off( eventName );\n\n\t\t// Clear the stack to avoid memory leaks (#10056)\n\t\tthis.bindings = $( this.bindings.not( element ).get() );\n\t\tthis.focusable = $( this.focusable.not( element ).get() );\n\t\tthis.hoverable = $( this.hoverable.not( element ).get() );\n\t},\n\n\t_delay: function( handler, delay ) {\n\t\tfunction handlerProxy() {\n\t\t\treturn ( typeof handler === \"string\" ? instance[ handler ] : handler )\n\t\t\t\t.apply( instance, arguments );\n\t\t}\n\t\tvar instance = this;\n\t\treturn setTimeout( handlerProxy, delay || 0 );\n\t},\n\n\t_hoverable: function( element ) {\n\t\tthis.hoverable = this.hoverable.add( element );\n\t\tthis._on( element, {\n\t\t\tmouseenter: function( event ) {\n\t\t\t\tthis._addClass( $( event.currentTarget ), null, \"ui-state-hover\" );\n\t\t\t},\n\t\t\tmouseleave: function( event ) {\n\t\t\t\tthis._removeClass( $( event.currentTarget ), null, \"ui-state-hover\" );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_focusable: function( element ) {\n\t\tthis.focusable = this.focusable.add( element );\n\t\tthis._on( element, {\n\t\t\tfocusin: function( event ) {\n\t\t\t\tthis._addClass( $( event.currentTarget ), null, \"ui-state-focus\" );\n\t\t\t},\n\t\t\tfocusout: function( event ) {\n\t\t\t\tthis._removeClass( $( event.currentTarget ), null, \"ui-state-focus\" );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_trigger: function( type, event, data ) {\n\t\tvar prop, orig;\n\t\tvar callback = this.options[ type ];\n\n\t\tdata = data || {};\n\t\tevent = $.Event( event );\n\t\tevent.type = ( type === this.widgetEventPrefix ?\n\t\t\ttype :\n\t\t\tthis.widgetEventPrefix + type ).toLowerCase();\n\n\t\t// The original event may come from any element\n\t\t// so we need to reset the target on the new event\n\t\tevent.target = this.element[ 0 ];\n\n\t\t// Copy original event properties over to the new event\n\t\torig = event.originalEvent;\n\t\tif ( orig ) {\n\t\t\tfor ( prop in orig ) {\n\t\t\t\tif ( !( prop in event ) ) {\n\t\t\t\t\tevent[ prop ] = orig[ prop ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.element.trigger( event, data );\n\t\treturn !( $.isFunction( callback ) &&\n\t\t\tcallback.apply( this.element[ 0 ], [ event ].concat( data ) ) === false ||\n\t\t\tevent.isDefaultPrevented() );\n\t}\n};\n\n$.each( { show: \"fadeIn\", hide: \"fadeOut\" }, function( method, defaultEffect ) {\n\t$.Widget.prototype[ \"_\" + method ] = function( element, options, callback ) {\n\t\tif ( typeof options === \"string\" ) {\n\t\t\toptions = { effect: options };\n\t\t}\n\n\t\tvar hasOptions;\n\t\tvar effectName = !options ?\n\t\t\tmethod :\n\t\t\toptions === true || typeof options === \"number\" ?\n\t\t\t\tdefaultEffect :\n\t\t\t\toptions.effect || defaultEffect;\n\n\t\toptions = options || {};\n\t\tif ( typeof options === \"number\" ) {\n\t\t\toptions = { duration: options };\n\t\t}\n\n\t\thasOptions = !$.isEmptyObject( options );\n\t\toptions.complete = callback;\n\n\t\tif ( options.delay ) {\n\t\t\telement.delay( options.delay );\n\t\t}\n\n\t\tif ( hasOptions && $.effects && $.effects.effect[ effectName ] ) {\n\t\t\telement[ method ]( options );\n\t\t} else if ( effectName !== method && element[ effectName ] ) {\n\t\t\telement[ effectName ]( options.duration, options.easing, callback );\n\t\t} else {\n\t\t\telement.queue( function( next ) {\n\t\t\t\t$( this )[ method ]();\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback.call( element[ 0 ] );\n\t\t\t\t}\n\t\t\t\tnext();\n\t\t\t} );\n\t\t}\n\t};\n} );\n\nvar widget = $.widget;\n\n\n/*!\n * jQuery UI Position 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/position/\n */\n\n//>>label: Position\n//>>group: Core\n//>>description: Positions elements relative to other elements.\n//>>docs: http://api.jqueryui.com/position/\n//>>demos: http://jqueryui.com/position/\n\n\n( function() {\nvar cachedScrollbarWidth,\n\tmax = Math.max,\n\tabs = Math.abs,\n\trhorizontal = /left|center|right/,\n\trvertical = /top|center|bottom/,\n\troffset = /[\\+\\-]\\d+(\\.[\\d]+)?%?/,\n\trposition = /^\\w+/,\n\trpercent = /%$/,\n\t_position = $.fn.position;\n\nfunction getOffsets( offsets, width, height ) {\n\treturn [\n\t\tparseFloat( offsets[ 0 ] ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ),\n\t\tparseFloat( offsets[ 1 ] ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 )\n\t];\n}\n\nfunction parseCss( element, property ) {\n\treturn parseInt( $.css( element, property ), 10 ) || 0;\n}\n\nfunction getDimensions( elem ) {\n\tvar raw = elem[ 0 ];\n\tif ( raw.nodeType === 9 ) {\n\t\treturn {\n\t\t\twidth: elem.width(),\n\t\t\theight: elem.height(),\n\t\t\toffset: { top: 0, left: 0 }\n\t\t};\n\t}\n\tif ( $.isWindow( raw ) ) {\n\t\treturn {\n\t\t\twidth: elem.width(),\n\t\t\theight: elem.height(),\n\t\t\toffset: { top: elem.scrollTop(), left: elem.scrollLeft() }\n\t\t};\n\t}\n\tif ( raw.preventDefault ) {\n\t\treturn {\n\t\t\twidth: 0,\n\t\t\theight: 0,\n\t\t\toffset: { top: raw.pageY, left: raw.pageX }\n\t\t};\n\t}\n\treturn {\n\t\twidth: elem.outerWidth(),\n\t\theight: elem.outerHeight(),\n\t\toffset: elem.offset()\n\t};\n}\n\n$.position = {\n\tscrollbarWidth: function() {\n\t\tif ( cachedScrollbarWidth !== undefined ) {\n\t\t\treturn cachedScrollbarWidth;\n\t\t}\n\t\tvar w1, w2,\n\t\t\tdiv = $( \"<div \" +\n\t\t\t\t\"style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'>\" +\n\t\t\t\t\"<div style='height:100px;width:auto;'></div></div>\" ),\n\t\t\tinnerDiv = div.children()[ 0 ];\n\n\t\t$( \"body\" ).append( div );\n\t\tw1 = innerDiv.offsetWidth;\n\t\tdiv.css( \"overflow\", \"scroll\" );\n\n\t\tw2 = innerDiv.offsetWidth;\n\n\t\tif ( w1 === w2 ) {\n\t\t\tw2 = div[ 0 ].clientWidth;\n\t\t}\n\n\t\tdiv.remove();\n\n\t\treturn ( cachedScrollbarWidth = w1 - w2 );\n\t},\n\tgetScrollInfo: function( within ) {\n\t\tvar overflowX = within.isWindow || within.isDocument ? \"\" :\n\t\t\t\twithin.element.css( \"overflow-x\" ),\n\t\t\toverflowY = within.isWindow || within.isDocument ? \"\" :\n\t\t\t\twithin.element.css( \"overflow-y\" ),\n\t\t\thasOverflowX = overflowX === \"scroll\" ||\n\t\t\t\t( overflowX === \"auto\" && within.width < within.element[ 0 ].scrollWidth ),\n\t\t\thasOverflowY = overflowY === \"scroll\" ||\n\t\t\t\t( overflowY === \"auto\" && within.height < within.element[ 0 ].scrollHeight );\n\t\treturn {\n\t\t\twidth: hasOverflowY ? $.position.scrollbarWidth() : 0,\n\t\t\theight: hasOverflowX ? $.position.scrollbarWidth() : 0\n\t\t};\n\t},\n\tgetWithinInfo: function( element ) {\n\t\tvar withinElement = $( element || window ),\n\t\t\tisWindow = $.isWindow( withinElement[ 0 ] ),\n\t\t\tisDocument = !!withinElement[ 0 ] && withinElement[ 0 ].nodeType === 9,\n\t\t\thasOffset = !isWindow && !isDocument;\n\t\treturn {\n\t\t\telement: withinElement,\n\t\t\tisWindow: isWindow,\n\t\t\tisDocument: isDocument,\n\t\t\toffset: hasOffset ? $( element ).offset() : { left: 0, top: 0 },\n\t\t\tscrollLeft: withinElement.scrollLeft(),\n\t\t\tscrollTop: withinElement.scrollTop(),\n\t\t\twidth: withinElement.outerWidth(),\n\t\t\theight: withinElement.outerHeight()\n\t\t};\n\t}\n};\n\n$.fn.position = function( options ) {\n\tif ( !options || !options.of ) {\n\t\treturn _position.apply( this, arguments );\n\t}\n\n\t// Make a copy, we don't want to modify arguments\n\toptions = $.extend( {}, options );\n\n\tvar atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions,\n\t\ttarget = $( options.of ),\n\t\twithin = $.position.getWithinInfo( options.within ),\n\t\tscrollInfo = $.position.getScrollInfo( within ),\n\t\tcollision = ( options.collision || \"flip\" ).split( \" \" ),\n\t\toffsets = {};\n\n\tdimensions = getDimensions( target );\n\tif ( target[ 0 ].preventDefault ) {\n\n\t\t// Force left top to allow flipping\n\t\toptions.at = \"left top\";\n\t}\n\ttargetWidth = dimensions.width;\n\ttargetHeight = dimensions.height;\n\ttargetOffset = dimensions.offset;\n\n\t// Clone to reuse original targetOffset later\n\tbasePosition = $.extend( {}, targetOffset );\n\n\t// Force my and at to have valid horizontal and vertical positions\n\t// if a value is missing or invalid, it will be converted to center\n\t$.each( [ \"my\", \"at\" ], function() {\n\t\tvar pos = ( options[ this ] || \"\" ).split( \" \" ),\n\t\t\thorizontalOffset,\n\t\t\tverticalOffset;\n\n\t\tif ( pos.length === 1 ) {\n\t\t\tpos = rhorizontal.test( pos[ 0 ] ) ?\n\t\t\t\tpos.concat( [ \"center\" ] ) :\n\t\t\t\trvertical.test( pos[ 0 ] ) ?\n\t\t\t\t\t[ \"center\" ].concat( pos ) :\n\t\t\t\t\t[ \"center\", \"center\" ];\n\t\t}\n\t\tpos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : \"center\";\n\t\tpos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : \"center\";\n\n\t\t// Calculate offsets\n\t\thorizontalOffset = roffset.exec( pos[ 0 ] );\n\t\tverticalOffset = roffset.exec( pos[ 1 ] );\n\t\toffsets[ this ] = [\n\t\t\thorizontalOffset ? horizontalOffset[ 0 ] : 0,\n\t\t\tverticalOffset ? verticalOffset[ 0 ] : 0\n\t\t];\n\n\t\t// Reduce to just the positions without the offsets\n\t\toptions[ this ] = [\n\t\t\trposition.exec( pos[ 0 ] )[ 0 ],\n\t\t\trposition.exec( pos[ 1 ] )[ 0 ]\n\t\t];\n\t} );\n\n\t// Normalize collision option\n\tif ( collision.length === 1 ) {\n\t\tcollision[ 1 ] = collision[ 0 ];\n\t}\n\n\tif ( options.at[ 0 ] === \"right\" ) {\n\t\tbasePosition.left += targetWidth;\n\t} else if ( options.at[ 0 ] === \"center\" ) {\n\t\tbasePosition.left += targetWidth / 2;\n\t}\n\n\tif ( options.at[ 1 ] === \"bottom\" ) {\n\t\tbasePosition.top += targetHeight;\n\t} else if ( options.at[ 1 ] === \"center\" ) {\n\t\tbasePosition.top += targetHeight / 2;\n\t}\n\n\tatOffset = getOffsets( offsets.at, targetWidth, targetHeight );\n\tbasePosition.left += atOffset[ 0 ];\n\tbasePosition.top += atOffset[ 1 ];\n\n\treturn this.each( function() {\n\t\tvar collisionPosition, using,\n\t\t\telem = $( this ),\n\t\t\telemWidth = elem.outerWidth(),\n\t\t\telemHeight = elem.outerHeight(),\n\t\t\tmarginLeft = parseCss( this, \"marginLeft\" ),\n\t\t\tmarginTop = parseCss( this, \"marginTop\" ),\n\t\t\tcollisionWidth = elemWidth + marginLeft + parseCss( this, \"marginRight\" ) +\n\t\t\t\tscrollInfo.width,\n\t\t\tcollisionHeight = elemHeight + marginTop + parseCss( this, \"marginBottom\" ) +\n\t\t\t\tscrollInfo.height,\n\t\t\tposition = $.extend( {}, basePosition ),\n\t\t\tmyOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() );\n\n\t\tif ( options.my[ 0 ] === \"right\" ) {\n\t\t\tposition.left -= elemWidth;\n\t\t} else if ( options.my[ 0 ] === \"center\" ) {\n\t\t\tposition.left -= elemWidth / 2;\n\t\t}\n\n\t\tif ( options.my[ 1 ] === \"bottom\" ) {\n\t\t\tposition.top -= elemHeight;\n\t\t} else if ( options.my[ 1 ] === \"center\" ) {\n\t\t\tposition.top -= elemHeight / 2;\n\t\t}\n\n\t\tposition.left += myOffset[ 0 ];\n\t\tposition.top += myOffset[ 1 ];\n\n\t\tcollisionPosition = {\n\t\t\tmarginLeft: marginLeft,\n\t\t\tmarginTop: marginTop\n\t\t};\n\n\t\t$.each( [ \"left\", \"top\" ], function( i, dir ) {\n\t\t\tif ( $.ui.position[ collision[ i ] ] ) {\n\t\t\t\t$.ui.position[ collision[ i ] ][ dir ]( position, {\n\t\t\t\t\ttargetWidth: targetWidth,\n\t\t\t\t\ttargetHeight: targetHeight,\n\t\t\t\t\telemWidth: elemWidth,\n\t\t\t\t\telemHeight: elemHeight,\n\t\t\t\t\tcollisionPosition: collisionPosition,\n\t\t\t\t\tcollisionWidth: collisionWidth,\n\t\t\t\t\tcollisionHeight: collisionHeight,\n\t\t\t\t\toffset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ],\n\t\t\t\t\tmy: options.my,\n\t\t\t\t\tat: options.at,\n\t\t\t\t\twithin: within,\n\t\t\t\t\telem: elem\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\n\t\tif ( options.using ) {\n\n\t\t\t// Adds feedback as second argument to using callback, if present\n\t\t\tusing = function( props ) {\n\t\t\t\tvar left = targetOffset.left - position.left,\n\t\t\t\t\tright = left + targetWidth - elemWidth,\n\t\t\t\t\ttop = targetOffset.top - position.top,\n\t\t\t\t\tbottom = top + targetHeight - elemHeight,\n\t\t\t\t\tfeedback = {\n\t\t\t\t\t\ttarget: {\n\t\t\t\t\t\t\telement: target,\n\t\t\t\t\t\t\tleft: targetOffset.left,\n\t\t\t\t\t\t\ttop: targetOffset.top,\n\t\t\t\t\t\t\twidth: targetWidth,\n\t\t\t\t\t\t\theight: targetHeight\n\t\t\t\t\t\t},\n\t\t\t\t\t\telement: {\n\t\t\t\t\t\t\telement: elem,\n\t\t\t\t\t\t\tleft: position.left,\n\t\t\t\t\t\t\ttop: position.top,\n\t\t\t\t\t\t\twidth: elemWidth,\n\t\t\t\t\t\t\theight: elemHeight\n\t\t\t\t\t\t},\n\t\t\t\t\t\thorizontal: right < 0 ? \"left\" : left > 0 ? \"right\" : \"center\",\n\t\t\t\t\t\tvertical: bottom < 0 ? \"top\" : top > 0 ? \"bottom\" : \"middle\"\n\t\t\t\t\t};\n\t\t\t\tif ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) {\n\t\t\t\t\tfeedback.horizontal = \"center\";\n\t\t\t\t}\n\t\t\t\tif ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) {\n\t\t\t\t\tfeedback.vertical = \"middle\";\n\t\t\t\t}\n\t\t\t\tif ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) {\n\t\t\t\t\tfeedback.important = \"horizontal\";\n\t\t\t\t} else {\n\t\t\t\t\tfeedback.important = \"vertical\";\n\t\t\t\t}\n\t\t\t\toptions.using.call( this, props, feedback );\n\t\t\t};\n\t\t}\n\n\t\telem.offset( $.extend( position, { using: using } ) );\n\t} );\n};\n\n$.ui.position = {\n\tfit: {\n\t\tleft: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.isWindow ? within.scrollLeft : within.offset.left,\n\t\t\t\touterWidth = within.width,\n\t\t\t\tcollisionPosLeft = position.left - data.collisionPosition.marginLeft,\n\t\t\t\toverLeft = withinOffset - collisionPosLeft,\n\t\t\t\toverRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset,\n\t\t\t\tnewOverRight;\n\n\t\t\t// Element is wider than within\n\t\t\tif ( data.collisionWidth > outerWidth ) {\n\n\t\t\t\t// Element is initially over the left side of within\n\t\t\t\tif ( overLeft > 0 && overRight <= 0 ) {\n\t\t\t\t\tnewOverRight = position.left + overLeft + data.collisionWidth - outerWidth -\n\t\t\t\t\t\twithinOffset;\n\t\t\t\t\tposition.left += overLeft - newOverRight;\n\n\t\t\t\t// Element is initially over right side of within\n\t\t\t\t} else if ( overRight > 0 && overLeft <= 0 ) {\n\t\t\t\t\tposition.left = withinOffset;\n\n\t\t\t\t// Element is initially over both left and right sides of within\n\t\t\t\t} else {\n\t\t\t\t\tif ( overLeft > overRight ) {\n\t\t\t\t\t\tposition.left = withinOffset + outerWidth - data.collisionWidth;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tposition.left = withinOffset;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Too far left -> align with left edge\n\t\t\t} else if ( overLeft > 0 ) {\n\t\t\t\tposition.left += overLeft;\n\n\t\t\t// Too far right -> align with right edge\n\t\t\t} else if ( overRight > 0 ) {\n\t\t\t\tposition.left -= overRight;\n\n\t\t\t// Adjust based on position and margin\n\t\t\t} else {\n\t\t\t\tposition.left = max( position.left - collisionPosLeft, position.left );\n\t\t\t}\n\t\t},\n\t\ttop: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.isWindow ? within.scrollTop : within.offset.top,\n\t\t\t\touterHeight = data.within.height,\n\t\t\t\tcollisionPosTop = position.top - data.collisionPosition.marginTop,\n\t\t\t\toverTop = withinOffset - collisionPosTop,\n\t\t\t\toverBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset,\n\t\t\t\tnewOverBottom;\n\n\t\t\t// Element is taller than within\n\t\t\tif ( data.collisionHeight > outerHeight ) {\n\n\t\t\t\t// Element is initially over the top of within\n\t\t\t\tif ( overTop > 0 && overBottom <= 0 ) {\n\t\t\t\t\tnewOverBottom = position.top + overTop + data.collisionHeight - outerHeight -\n\t\t\t\t\t\twithinOffset;\n\t\t\t\t\tposition.top += overTop - newOverBottom;\n\n\t\t\t\t// Element is initially over bottom of within\n\t\t\t\t} else if ( overBottom > 0 && overTop <= 0 ) {\n\t\t\t\t\tposition.top = withinOffset;\n\n\t\t\t\t// Element is initially over both top and bottom of within\n\t\t\t\t} else {\n\t\t\t\t\tif ( overTop > overBottom ) {\n\t\t\t\t\t\tposition.top = withinOffset + outerHeight - data.collisionHeight;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tposition.top = withinOffset;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Too far up -> align with top\n\t\t\t} else if ( overTop > 0 ) {\n\t\t\t\tposition.top += overTop;\n\n\t\t\t// Too far down -> align with bottom edge\n\t\t\t} else if ( overBottom > 0 ) {\n\t\t\t\tposition.top -= overBottom;\n\n\t\t\t// Adjust based on position and margin\n\t\t\t} else {\n\t\t\t\tposition.top = max( position.top - collisionPosTop, position.top );\n\t\t\t}\n\t\t}\n\t},\n\tflip: {\n\t\tleft: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.offset.left + within.scrollLeft,\n\t\t\t\touterWidth = within.width,\n\t\t\t\toffsetLeft = within.isWindow ? within.scrollLeft : within.offset.left,\n\t\t\t\tcollisionPosLeft = position.left - data.collisionPosition.marginLeft,\n\t\t\t\toverLeft = collisionPosLeft - offsetLeft,\n\t\t\t\toverRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft,\n\t\t\t\tmyOffset = data.my[ 0 ] === \"left\" ?\n\t\t\t\t\t-data.elemWidth :\n\t\t\t\t\tdata.my[ 0 ] === \"right\" ?\n\t\t\t\t\t\tdata.elemWidth :\n\t\t\t\t\t\t0,\n\t\t\t\tatOffset = data.at[ 0 ] === \"left\" ?\n\t\t\t\t\tdata.targetWidth :\n\t\t\t\t\tdata.at[ 0 ] === \"right\" ?\n\t\t\t\t\t\t-data.targetWidth :\n\t\t\t\t\t\t0,\n\t\t\t\toffset = -2 * data.offset[ 0 ],\n\t\t\t\tnewOverRight,\n\t\t\t\tnewOverLeft;\n\n\t\t\tif ( overLeft < 0 ) {\n\t\t\t\tnewOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth -\n\t\t\t\t\touterWidth - withinOffset;\n\t\t\t\tif ( newOverRight < 0 || newOverRight < abs( overLeft ) ) {\n\t\t\t\t\tposition.left += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t} else if ( overRight > 0 ) {\n\t\t\t\tnewOverLeft = position.left - data.collisionPosition.marginLeft + myOffset +\n\t\t\t\t\tatOffset + offset - offsetLeft;\n\t\t\t\tif ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) {\n\t\t\t\t\tposition.left += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\ttop: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.offset.top + within.scrollTop,\n\t\t\t\touterHeight = within.height,\n\t\t\t\toffsetTop = within.isWindow ? within.scrollTop : within.offset.top,\n\t\t\t\tcollisionPosTop = position.top - data.collisionPosition.marginTop,\n\t\t\t\toverTop = collisionPosTop - offsetTop,\n\t\t\t\toverBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop,\n\t\t\t\ttop = data.my[ 1 ] === \"top\",\n\t\t\t\tmyOffset = top ?\n\t\t\t\t\t-data.elemHeight :\n\t\t\t\t\tdata.my[ 1 ] === \"bottom\" ?\n\t\t\t\t\t\tdata.elemHeight :\n\t\t\t\t\t\t0,\n\t\t\t\tatOffset = data.at[ 1 ] === \"top\" ?\n\t\t\t\t\tdata.targetHeight :\n\t\t\t\t\tdata.at[ 1 ] === \"bottom\" ?\n\t\t\t\t\t\t-data.targetHeight :\n\t\t\t\t\t\t0,\n\t\t\t\toffset = -2 * data.offset[ 1 ],\n\t\t\t\tnewOverTop,\n\t\t\t\tnewOverBottom;\n\t\t\tif ( overTop < 0 ) {\n\t\t\t\tnewOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight -\n\t\t\t\t\touterHeight - withinOffset;\n\t\t\t\tif ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) {\n\t\t\t\t\tposition.top += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t} else if ( overBottom > 0 ) {\n\t\t\t\tnewOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset +\n\t\t\t\t\toffset - offsetTop;\n\t\t\t\tif ( newOverTop > 0 || abs( newOverTop ) < overBottom ) {\n\t\t\t\t\tposition.top += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tflipfit: {\n\t\tleft: function() {\n\t\t\t$.ui.position.flip.left.apply( this, arguments );\n\t\t\t$.ui.position.fit.left.apply( this, arguments );\n\t\t},\n\t\ttop: function() {\n\t\t\t$.ui.position.flip.top.apply( this, arguments );\n\t\t\t$.ui.position.fit.top.apply( this, arguments );\n\t\t}\n\t}\n};\n\n} )();\n\nvar position = $.ui.position;\n\n\n/*!\n * jQuery UI :data 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: :data Selector\n//>>group: Core\n//>>description: Selects elements which have data stored under the specified key.\n//>>docs: http://api.jqueryui.com/data-selector/\n\n\nvar data = $.extend( $.expr[ \":\" ], {\n\tdata: $.expr.createPseudo ?\n\t\t$.expr.createPseudo( function( dataName ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn !!$.data( elem, dataName );\n\t\t\t};\n\t\t} ) :\n\n\t\t// Support: jQuery <1.8\n\t\tfunction( elem, i, match ) {\n\t\t\treturn !!$.data( elem, match[ 3 ] );\n\t\t}\n} );\n\n/*!\n * jQuery UI Disable Selection 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: disableSelection\n//>>group: Core\n//>>description: Disable selection of text content within the set of matched elements.\n//>>docs: http://api.jqueryui.com/disableSelection/\n\n// This file is deprecated\n\n\nvar disableSelection = $.fn.extend( {\n\tdisableSelection: ( function() {\n\t\tvar eventType = \"onselectstart\" in document.createElement( \"div\" ) ?\n\t\t\t\"selectstart\" :\n\t\t\t\"mousedown\";\n\n\t\treturn function() {\n\t\t\treturn this.on( eventType + \".ui-disableSelection\", function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t} );\n\t\t};\n\t} )(),\n\n\tenableSelection: function() {\n\t\treturn this.off( \".ui-disableSelection\" );\n\t}\n} );\n\n\n/*!\n * jQuery UI Effects 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Effects Core\n//>>group: Effects\n// jscs:disable maximumLineLength\n//>>description: Extends the internal jQuery effects. Includes morphing and easing. Required by all other effects.\n// jscs:enable maximumLineLength\n//>>docs: http://api.jqueryui.com/category/effects-core/\n//>>demos: http://jqueryui.com/effect/\n\n\n\nvar dataSpace = \"ui-effects-\",\n\tdataSpaceStyle = \"ui-effects-style\",\n\tdataSpaceAnimated = \"ui-effects-animated\",\n\n\t// Create a local jQuery because jQuery Color relies on it and the\n\t// global may not exist with AMD and a custom build (#10199)\n\tjQuery = $;\n\n$.effects = {\n\teffect: {}\n};\n\n/*!\n * jQuery Color Animations v2.1.2\n * https://github.com/jquery/jquery-color\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * Date: Wed Jan 16 08:47:09 2013 -0600\n */\n( function( jQuery, undefined ) {\n\n\tvar stepHooks = \"backgroundColor borderBottomColor borderLeftColor borderRightColor \" +\n\t\t\"borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor\",\n\n\t// Plusequals test for += 100 -= 100\n\trplusequals = /^([\\-+])=\\s*(\\d+\\.?\\d*)/,\n\n\t// A set of RE's that can match strings and generate color tuples.\n\tstringParsers = [ {\n\t\t\tre: /rgba?\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*(?:,\\s*(\\d?(?:\\.\\d+)?)\\s*)?\\)/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\texecResult[ 1 ],\n\t\t\t\t\texecResult[ 2 ],\n\t\t\t\t\texecResult[ 3 ],\n\t\t\t\t\texecResult[ 4 ]\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\t\t\tre: /rgba?\\(\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*(?:,\\s*(\\d?(?:\\.\\d+)?)\\s*)?\\)/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\texecResult[ 1 ] * 2.55,\n\t\t\t\t\texecResult[ 2 ] * 2.55,\n\t\t\t\t\texecResult[ 3 ] * 2.55,\n\t\t\t\t\texecResult[ 4 ]\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\n\t\t\t// This regex ignores A-F because it's compared against an already lowercased string\n\t\t\tre: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\tparseInt( execResult[ 1 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 2 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 3 ], 16 )\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\n\t\t\t// This regex ignores A-F because it's compared against an already lowercased string\n\t\t\tre: /#([a-f0-9])([a-f0-9])([a-f0-9])/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\tparseInt( execResult[ 1 ] + execResult[ 1 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 2 ] + execResult[ 2 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 3 ] + execResult[ 3 ], 16 )\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\t\t\tre: /hsla?\\(\\s*(\\d+(?:\\.\\d+)?)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*(?:,\\s*(\\d?(?:\\.\\d+)?)\\s*)?\\)/,\n\t\t\tspace: \"hsla\",\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\texecResult[ 1 ],\n\t\t\t\t\texecResult[ 2 ] / 100,\n\t\t\t\t\texecResult[ 3 ] / 100,\n\t\t\t\t\texecResult[ 4 ]\n\t\t\t\t];\n\t\t\t}\n\t\t} ],\n\n\t// JQuery.Color( )\n\tcolor = jQuery.Color = function( color, green, blue, alpha ) {\n\t\treturn new jQuery.Color.fn.parse( color, green, blue, alpha );\n\t},\n\tspaces = {\n\t\trgba: {\n\t\t\tprops: {\n\t\t\t\tred: {\n\t\t\t\t\tidx: 0,\n\t\t\t\t\ttype: \"byte\"\n\t\t\t\t},\n\t\t\t\tgreen: {\n\t\t\t\t\tidx: 1,\n\t\t\t\t\ttype: \"byte\"\n\t\t\t\t},\n\t\t\t\tblue: {\n\t\t\t\t\tidx: 2,\n\t\t\t\t\ttype: \"byte\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\thsla: {\n\t\t\tprops: {\n\t\t\t\thue: {\n\t\t\t\t\tidx: 0,\n\t\t\t\t\ttype: \"degrees\"\n\t\t\t\t},\n\t\t\t\tsaturation: {\n\t\t\t\t\tidx: 1,\n\t\t\t\t\ttype: \"percent\"\n\t\t\t\t},\n\t\t\t\tlightness: {\n\t\t\t\t\tidx: 2,\n\t\t\t\t\ttype: \"percent\"\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tpropTypes = {\n\t\t\"byte\": {\n\t\t\tfloor: true,\n\t\t\tmax: 255\n\t\t},\n\t\t\"percent\": {\n\t\t\tmax: 1\n\t\t},\n\t\t\"degrees\": {\n\t\t\tmod: 360,\n\t\t\tfloor: true\n\t\t}\n\t},\n\tsupport = color.support = {},\n\n\t// Element for support tests\n\tsupportElem = jQuery( \"<p>\" )[ 0 ],\n\n\t// Colors = jQuery.Color.names\n\tcolors,\n\n\t// Local aliases of functions called often\n\teach = jQuery.each;\n\n// Determine rgba support immediately\nsupportElem.style.cssText = \"background-color:rgba(1,1,1,.5)\";\nsupport.rgba = supportElem.style.backgroundColor.indexOf( \"rgba\" ) > -1;\n\n// Define cache name and alpha properties\n// for rgba and hsla spaces\neach( spaces, function( spaceName, space ) {\n\tspace.cache = \"_\" + spaceName;\n\tspace.props.alpha = {\n\t\tidx: 3,\n\t\ttype: \"percent\",\n\t\tdef: 1\n\t};\n} );\n\nfunction clamp( value, prop, allowEmpty ) {\n\tvar type = propTypes[ prop.type ] || {};\n\n\tif ( value == null ) {\n\t\treturn ( allowEmpty || !prop.def ) ? null : prop.def;\n\t}\n\n\t// ~~ is an short way of doing floor for positive numbers\n\tvalue = type.floor ? ~~value : parseFloat( value );\n\n\t// IE will pass in empty strings as value for alpha,\n\t// which will hit this case\n\tif ( isNaN( value ) ) {\n\t\treturn prop.def;\n\t}\n\n\tif ( type.mod ) {\n\n\t\t// We add mod before modding to make sure that negatives values\n\t\t// get converted properly: -10 -> 350\n\t\treturn ( value + type.mod ) % type.mod;\n\t}\n\n\t// For now all property types without mod have min and max\n\treturn 0 > value ? 0 : type.max < value ? type.max : value;\n}\n\nfunction stringParse( string ) {\n\tvar inst = color(),\n\t\trgba = inst._rgba = [];\n\n\tstring = string.toLowerCase();\n\n\teach( stringParsers, function( i, parser ) {\n\t\tvar parsed,\n\t\t\tmatch = parser.re.exec( string ),\n\t\t\tvalues = match && parser.parse( match ),\n\t\t\tspaceName = parser.space || \"rgba\";\n\n\t\tif ( values ) {\n\t\t\tparsed = inst[ spaceName ]( values );\n\n\t\t\t// If this was an rgba parse the assignment might happen twice\n\t\t\t// oh well....\n\t\t\tinst[ spaces[ spaceName ].cache ] = parsed[ spaces[ spaceName ].cache ];\n\t\t\trgba = inst._rgba = parsed._rgba;\n\n\t\t\t// Exit each( stringParsers ) here because we matched\n\t\t\treturn false;\n\t\t}\n\t} );\n\n\t// Found a stringParser that handled it\n\tif ( rgba.length ) {\n\n\t\t// If this came from a parsed string, force \"transparent\" when alpha is 0\n\t\t// chrome, (and maybe others) return \"transparent\" as rgba(0,0,0,0)\n\t\tif ( rgba.join() === \"0,0,0,0\" ) {\n\t\t\tjQuery.extend( rgba, colors.transparent );\n\t\t}\n\t\treturn inst;\n\t}\n\n\t// Named colors\n\treturn colors[ string ];\n}\n\ncolor.fn = jQuery.extend( color.prototype, {\n\tparse: function( red, green, blue, alpha ) {\n\t\tif ( red === undefined ) {\n\t\t\tthis._rgba = [ null, null, null, null ];\n\t\t\treturn this;\n\t\t}\n\t\tif ( red.jquery || red.nodeType ) {\n\t\t\tred = jQuery( red ).css( green );\n\t\t\tgreen = undefined;\n\t\t}\n\n\t\tvar inst = this,\n\t\t\ttype = jQuery.type( red ),\n\t\t\trgba = this._rgba = [];\n\n\t\t// More than 1 argument specified - assume ( red, green, blue, alpha )\n\t\tif ( green !== undefined ) {\n\t\t\tred = [ red, green, blue, alpha ];\n\t\t\ttype = \"array\";\n\t\t}\n\n\t\tif ( type === \"string\" ) {\n\t\t\treturn this.parse( stringParse( red ) || colors._default );\n\t\t}\n\n\t\tif ( type === \"array\" ) {\n\t\t\teach( spaces.rgba.props, function( key, prop ) {\n\t\t\t\trgba[ prop.idx ] = clamp( red[ prop.idx ], prop );\n\t\t\t} );\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( type === \"object\" ) {\n\t\t\tif ( red instanceof color ) {\n\t\t\t\teach( spaces, function( spaceName, space ) {\n\t\t\t\t\tif ( red[ space.cache ] ) {\n\t\t\t\t\t\tinst[ space.cache ] = red[ space.cache ].slice();\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} else {\n\t\t\t\teach( spaces, function( spaceName, space ) {\n\t\t\t\t\tvar cache = space.cache;\n\t\t\t\t\teach( space.props, function( key, prop ) {\n\n\t\t\t\t\t\t// If the cache doesn't exist, and we know how to convert\n\t\t\t\t\t\tif ( !inst[ cache ] && space.to ) {\n\n\t\t\t\t\t\t\t// If the value was null, we don't need to copy it\n\t\t\t\t\t\t\t// if the key was alpha, we don't need to copy it either\n\t\t\t\t\t\t\tif ( key === \"alpha\" || red[ key ] == null ) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tinst[ cache ] = space.to( inst._rgba );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// This is the only case where we allow nulls for ALL properties.\n\t\t\t\t\t\t// call clamp with alwaysAllowEmpty\n\t\t\t\t\t\tinst[ cache ][ prop.idx ] = clamp( red[ key ], prop, true );\n\t\t\t\t\t} );\n\n\t\t\t\t\t// Everything defined but alpha?\n\t\t\t\t\tif ( inst[ cache ] &&\n\t\t\t\t\t\t\tjQuery.inArray( null, inst[ cache ].slice( 0, 3 ) ) < 0 ) {\n\n\t\t\t\t\t\t// Use the default of 1\n\t\t\t\t\t\tinst[ cache ][ 3 ] = 1;\n\t\t\t\t\t\tif ( space.from ) {\n\t\t\t\t\t\t\tinst._rgba = space.from( inst[ cache ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t},\n\tis: function( compare ) {\n\t\tvar is = color( compare ),\n\t\t\tsame = true,\n\t\t\tinst = this;\n\n\t\teach( spaces, function( _, space ) {\n\t\t\tvar localCache,\n\t\t\t\tisCache = is[ space.cache ];\n\t\t\tif ( isCache ) {\n\t\t\t\tlocalCache = inst[ space.cache ] || space.to && space.to( inst._rgba ) || [];\n\t\t\t\teach( space.props, function( _, prop ) {\n\t\t\t\t\tif ( isCache[ prop.idx ] != null ) {\n\t\t\t\t\t\tsame = ( isCache[ prop.idx ] === localCache[ prop.idx ] );\n\t\t\t\t\t\treturn same;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn same;\n\t\t} );\n\t\treturn same;\n\t},\n\t_space: function() {\n\t\tvar used = [],\n\t\t\tinst = this;\n\t\teach( spaces, function( spaceName, space ) {\n\t\t\tif ( inst[ space.cache ] ) {\n\t\t\t\tused.push( spaceName );\n\t\t\t}\n\t\t} );\n\t\treturn used.pop();\n\t},\n\ttransition: function( other, distance ) {\n\t\tvar end = color( other ),\n\t\t\tspaceName = end._space(),\n\t\t\tspace = spaces[ spaceName ],\n\t\t\tstartColor = this.alpha() === 0 ? color( \"transparent\" ) : this,\n\t\t\tstart = startColor[ space.cache ] || space.to( startColor._rgba ),\n\t\t\tresult = start.slice();\n\n\t\tend = end[ space.cache ];\n\t\teach( space.props, function( key, prop ) {\n\t\t\tvar index = prop.idx,\n\t\t\t\tstartValue = start[ index ],\n\t\t\t\tendValue = end[ index ],\n\t\t\t\ttype = propTypes[ prop.type ] || {};\n\n\t\t\t// If null, don't override start value\n\t\t\tif ( endValue === null ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If null - use end\n\t\t\tif ( startValue === null ) {\n\t\t\t\tresult[ index ] = endValue;\n\t\t\t} else {\n\t\t\t\tif ( type.mod ) {\n\t\t\t\t\tif ( endValue - startValue > type.mod / 2 ) {\n\t\t\t\t\t\tstartValue += type.mod;\n\t\t\t\t\t} else if ( startValue - endValue > type.mod / 2 ) {\n\t\t\t\t\t\tstartValue -= type.mod;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tresult[ index ] = clamp( ( endValue - startValue ) * distance + startValue, prop );\n\t\t\t}\n\t\t} );\n\t\treturn this[ spaceName ]( result );\n\t},\n\tblend: function( opaque ) {\n\n\t\t// If we are already opaque - return ourself\n\t\tif ( this._rgba[ 3 ] === 1 ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tvar rgb = this._rgba.slice(),\n\t\t\ta = rgb.pop(),\n\t\t\tblend = color( opaque )._rgba;\n\n\t\treturn color( jQuery.map( rgb, function( v, i ) {\n\t\t\treturn ( 1 - a ) * blend[ i ] + a * v;\n\t\t} ) );\n\t},\n\ttoRgbaString: function() {\n\t\tvar prefix = \"rgba(\",\n\t\t\trgba = jQuery.map( this._rgba, function( v, i ) {\n\t\t\t\treturn v == null ? ( i > 2 ? 1 : 0 ) : v;\n\t\t\t} );\n\n\t\tif ( rgba[ 3 ] === 1 ) {\n\t\t\trgba.pop();\n\t\t\tprefix = \"rgb(\";\n\t\t}\n\n\t\treturn prefix + rgba.join() + \")\";\n\t},\n\ttoHslaString: function() {\n\t\tvar prefix = \"hsla(\",\n\t\t\thsla = jQuery.map( this.hsla(), function( v, i ) {\n\t\t\t\tif ( v == null ) {\n\t\t\t\t\tv = i > 2 ? 1 : 0;\n\t\t\t\t}\n\n\t\t\t\t// Catch 1 and 2\n\t\t\t\tif ( i && i < 3 ) {\n\t\t\t\t\tv = Math.round( v * 100 ) + \"%\";\n\t\t\t\t}\n\t\t\t\treturn v;\n\t\t\t} );\n\n\t\tif ( hsla[ 3 ] === 1 ) {\n\t\t\thsla.pop();\n\t\t\tprefix = \"hsl(\";\n\t\t}\n\t\treturn prefix + hsla.join() + \")\";\n\t},\n\ttoHexString: function( includeAlpha ) {\n\t\tvar rgba = this._rgba.slice(),\n\t\t\talpha = rgba.pop();\n\n\t\tif ( includeAlpha ) {\n\t\t\trgba.push( ~~( alpha * 255 ) );\n\t\t}\n\n\t\treturn \"#\" + jQuery.map( rgba, function( v ) {\n\n\t\t\t// Default to 0 when nulls exist\n\t\t\tv = ( v || 0 ).toString( 16 );\n\t\t\treturn v.length === 1 ? \"0\" + v : v;\n\t\t} ).join( \"\" );\n\t},\n\ttoString: function() {\n\t\treturn this._rgba[ 3 ] === 0 ? \"transparent\" : this.toRgbaString();\n\t}\n} );\ncolor.fn.parse.prototype = color.fn;\n\n// Hsla conversions adapted from:\n// https://code.google.com/p/maashaack/source/browse/packages/graphics/trunk/src/graphics/colors/HUE2RGB.as?r=5021\n\nfunction hue2rgb( p, q, h ) {\n\th = ( h + 1 ) % 1;\n\tif ( h * 6 < 1 ) {\n\t\treturn p + ( q - p ) * h * 6;\n\t}\n\tif ( h * 2 < 1 ) {\n\t\treturn q;\n\t}\n\tif ( h * 3 < 2 ) {\n\t\treturn p + ( q - p ) * ( ( 2 / 3 ) - h ) * 6;\n\t}\n\treturn p;\n}\n\nspaces.hsla.to = function( rgba ) {\n\tif ( rgba[ 0 ] == null || rgba[ 1 ] == null || rgba[ 2 ] == null ) {\n\t\treturn [ null, null, null, rgba[ 3 ] ];\n\t}\n\tvar r = rgba[ 0 ] / 255,\n\t\tg = rgba[ 1 ] / 255,\n\t\tb = rgba[ 2 ] / 255,\n\t\ta = rgba[ 3 ],\n\t\tmax = Math.max( r, g, b ),\n\t\tmin = Math.min( r, g, b ),\n\t\tdiff = max - min,\n\t\tadd = max + min,\n\t\tl = add * 0.5,\n\t\th, s;\n\n\tif ( min === max ) {\n\t\th = 0;\n\t} else if ( r === max ) {\n\t\th = ( 60 * ( g - b ) / diff ) + 360;\n\t} else if ( g === max ) {\n\t\th = ( 60 * ( b - r ) / diff ) + 120;\n\t} else {\n\t\th = ( 60 * ( r - g ) / diff ) + 240;\n\t}\n\n\t// Chroma (diff) == 0 means greyscale which, by definition, saturation = 0%\n\t// otherwise, saturation is based on the ratio of chroma (diff) to lightness (add)\n\tif ( diff === 0 ) {\n\t\ts = 0;\n\t} else if ( l <= 0.5 ) {\n\t\ts = diff / add;\n\t} else {\n\t\ts = diff / ( 2 - add );\n\t}\n\treturn [ Math.round( h ) % 360, s, l, a == null ? 1 : a ];\n};\n\nspaces.hsla.from = function( hsla ) {\n\tif ( hsla[ 0 ] == null || hsla[ 1 ] == null || hsla[ 2 ] == null ) {\n\t\treturn [ null, null, null, hsla[ 3 ] ];\n\t}\n\tvar h = hsla[ 0 ] / 360,\n\t\ts = hsla[ 1 ],\n\t\tl = hsla[ 2 ],\n\t\ta = hsla[ 3 ],\n\t\tq = l <= 0.5 ? l * ( 1 + s ) : l + s - l * s,\n\t\tp = 2 * l - q;\n\n\treturn [\n\t\tMath.round( hue2rgb( p, q, h + ( 1 / 3 ) ) * 255 ),\n\t\tMath.round( hue2rgb( p, q, h ) * 255 ),\n\t\tMath.round( hue2rgb( p, q, h - ( 1 / 3 ) ) * 255 ),\n\t\ta\n\t];\n};\n\neach( spaces, function( spaceName, space ) {\n\tvar props = space.props,\n\t\tcache = space.cache,\n\t\tto = space.to,\n\t\tfrom = space.from;\n\n\t// Makes rgba() and hsla()\n\tcolor.fn[ spaceName ] = function( value ) {\n\n\t\t// Generate a cache for this space if it doesn't exist\n\t\tif ( to && !this[ cache ] ) {\n\t\t\tthis[ cache ] = to( this._rgba );\n\t\t}\n\t\tif ( value === undefined ) {\n\t\t\treturn this[ cache ].slice();\n\t\t}\n\n\t\tvar ret,\n\t\t\ttype = jQuery.type( value ),\n\t\t\tarr = ( type === \"array\" || type === \"object\" ) ? value : arguments,\n\t\t\tlocal = this[ cache ].slice();\n\n\t\teach( props, function( key, prop ) {\n\t\t\tvar val = arr[ type === \"object\" ? key : prop.idx ];\n\t\t\tif ( val == null ) {\n\t\t\t\tval = local[ prop.idx ];\n\t\t\t}\n\t\t\tlocal[ prop.idx ] = clamp( val, prop );\n\t\t} );\n\n\t\tif ( from ) {\n\t\t\tret = color( from( local ) );\n\t\t\tret[ cache ] = local;\n\t\t\treturn ret;\n\t\t} else {\n\t\t\treturn color( local );\n\t\t}\n\t};\n\n\t// Makes red() green() blue() alpha() hue() saturation() lightness()\n\teach( props, function( key, prop ) {\n\n\t\t// Alpha is included in more than one space\n\t\tif ( color.fn[ key ] ) {\n\t\t\treturn;\n\t\t}\n\t\tcolor.fn[ key ] = function( value ) {\n\t\t\tvar vtype = jQuery.type( value ),\n\t\t\t\tfn = ( key === \"alpha\" ? ( this._hsla ? \"hsla\" : \"rgba\" ) : spaceName ),\n\t\t\t\tlocal = this[ fn ](),\n\t\t\t\tcur = local[ prop.idx ],\n\t\t\t\tmatch;\n\n\t\t\tif ( vtype === \"undefined\" ) {\n\t\t\t\treturn cur;\n\t\t\t}\n\n\t\t\tif ( vtype === \"function\" ) {\n\t\t\t\tvalue = value.call( this, cur );\n\t\t\t\tvtype = jQuery.type( value );\n\t\t\t}\n\t\t\tif ( value == null && prop.empty ) {\n\t\t\t\treturn this;\n\t\t\t}\n\t\t\tif ( vtype === \"string\" ) {\n\t\t\t\tmatch = rplusequals.exec( value );\n\t\t\t\tif ( match ) {\n\t\t\t\t\tvalue = cur + parseFloat( match[ 2 ] ) * ( match[ 1 ] === \"+\" ? 1 : -1 );\n\t\t\t\t}\n\t\t\t}\n\t\t\tlocal[ prop.idx ] = value;\n\t\t\treturn this[ fn ]( local );\n\t\t};\n\t} );\n} );\n\n// Add cssHook and .fx.step function for each named hook.\n// accept a space separated string of properties\ncolor.hook = function( hook ) {\n\tvar hooks = hook.split( \" \" );\n\teach( hooks, function( i, hook ) {\n\t\tjQuery.cssHooks[ hook ] = {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar parsed, curElem,\n\t\t\t\t\tbackgroundColor = \"\";\n\n\t\t\t\tif ( value !== \"transparent\" && ( jQuery.type( value ) !== \"string\" ||\n\t\t\t\t\t\t( parsed = stringParse( value ) ) ) ) {\n\t\t\t\t\tvalue = color( parsed || value );\n\t\t\t\t\tif ( !support.rgba && value._rgba[ 3 ] !== 1 ) {\n\t\t\t\t\t\tcurElem = hook === \"backgroundColor\" ? elem.parentNode : elem;\n\t\t\t\t\t\twhile (\n\t\t\t\t\t\t\t( backgroundColor === \"\" || backgroundColor === \"transparent\" ) &&\n\t\t\t\t\t\t\tcurElem && curElem.style\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tbackgroundColor = jQuery.css( curElem, \"backgroundColor\" );\n\t\t\t\t\t\t\t\tcurElem = curElem.parentNode;\n\t\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvalue = value.blend( backgroundColor && backgroundColor !== \"transparent\" ?\n\t\t\t\t\t\t\tbackgroundColor :\n\t\t\t\t\t\t\t\"_default\" );\n\t\t\t\t\t}\n\n\t\t\t\t\tvalue = value.toRgbaString();\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\telem.style[ hook ] = value;\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// Wrapped to prevent IE from throwing errors on \"invalid\" values like\n\t\t\t\t\t// 'auto' or 'inherit'\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tjQuery.fx.step[ hook ] = function( fx ) {\n\t\t\tif ( !fx.colorInit ) {\n\t\t\t\tfx.start = color( fx.elem, hook );\n\t\t\t\tfx.end = color( fx.end );\n\t\t\t\tfx.colorInit = true;\n\t\t\t}\n\t\t\tjQuery.cssHooks[ hook ].set( fx.elem, fx.start.transition( fx.end, fx.pos ) );\n\t\t};\n\t} );\n\n};\n\ncolor.hook( stepHooks );\n\njQuery.cssHooks.borderColor = {\n\texpand: function( value ) {\n\t\tvar expanded = {};\n\n\t\teach( [ \"Top\", \"Right\", \"Bottom\", \"Left\" ], function( i, part ) {\n\t\t\texpanded[ \"border\" + part + \"Color\" ] = value;\n\t\t} );\n\t\treturn expanded;\n\t}\n};\n\n// Basic color names only.\n// Usage of any of the other color names requires adding yourself or including\n// jquery.color.svg-names.js.\ncolors = jQuery.Color.names = {\n\n\t// 4.1. Basic color keywords\n\taqua: \"#00ffff\",\n\tblack: \"#000000\",\n\tblue: \"#0000ff\",\n\tfuchsia: \"#ff00ff\",\n\tgray: \"#808080\",\n\tgreen: \"#008000\",\n\tlime: \"#00ff00\",\n\tmaroon: \"#800000\",\n\tnavy: \"#000080\",\n\tolive: \"#808000\",\n\tpurple: \"#800080\",\n\tred: \"#ff0000\",\n\tsilver: \"#c0c0c0\",\n\tteal: \"#008080\",\n\twhite: \"#ffffff\",\n\tyellow: \"#ffff00\",\n\n\t// 4.2.3. \"transparent\" color keyword\n\ttransparent: [ null, null, null, 0 ],\n\n\t_default: \"#ffffff\"\n};\n\n} )( jQuery );\n\n/******************************************************************************/\n/****************************** CLASS ANIMATIONS ******************************/\n/******************************************************************************/\n( function() {\n\nvar classAnimationActions = [ \"add\", \"remove\", \"toggle\" ],\n\tshorthandStyles = {\n\t\tborder: 1,\n\t\tborderBottom: 1,\n\t\tborderColor: 1,\n\t\tborderLeft: 1,\n\t\tborderRight: 1,\n\t\tborderTop: 1,\n\t\tborderWidth: 1,\n\t\tmargin: 1,\n\t\tpadding: 1\n\t};\n\n$.each(\n\t[ \"borderLeftStyle\", \"borderRightStyle\", \"borderBottomStyle\", \"borderTopStyle\" ],\n\tfunction( _, prop ) {\n\t\t$.fx.step[ prop ] = function( fx ) {\n\t\t\tif ( fx.end !== \"none\" && !fx.setAttr || fx.pos === 1 && !fx.setAttr ) {\n\t\t\t\tjQuery.style( fx.elem, prop, fx.end );\n\t\t\t\tfx.setAttr = true;\n\t\t\t}\n\t\t};\n\t}\n);\n\nfunction getElementStyles( elem ) {\n\tvar key, len,\n\t\tstyle = elem.ownerDocument.defaultView ?\n\t\t\telem.ownerDocument.defaultView.getComputedStyle( elem, null ) :\n\t\t\telem.currentStyle,\n\t\tstyles = {};\n\n\tif ( style && style.length && style[ 0 ] && style[ style[ 0 ] ] ) {\n\t\tlen = style.length;\n\t\twhile ( len-- ) {\n\t\t\tkey = style[ len ];\n\t\t\tif ( typeof style[ key ] === \"string\" ) {\n\t\t\t\tstyles[ $.camelCase( key ) ] = style[ key ];\n\t\t\t}\n\t\t}\n\n\t// Support: Opera, IE <9\n\t} else {\n\t\tfor ( key in style ) {\n\t\t\tif ( typeof style[ key ] === \"string\" ) {\n\t\t\t\tstyles[ key ] = style[ key ];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn styles;\n}\n\nfunction styleDifference( oldStyle, newStyle ) {\n\tvar diff = {},\n\t\tname, value;\n\n\tfor ( name in newStyle ) {\n\t\tvalue = newStyle[ name ];\n\t\tif ( oldStyle[ name ] !== value ) {\n\t\t\tif ( !shorthandStyles[ name ] ) {\n\t\t\t\tif ( $.fx.step[ name ] || !isNaN( parseFloat( value ) ) ) {\n\t\t\t\t\tdiff[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn diff;\n}\n\n// Support: jQuery <1.8\nif ( !$.fn.addBack ) {\n\t$.fn.addBack = function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t};\n}\n\n$.effects.animateClass = function( value, duration, easing, callback ) {\n\tvar o = $.speed( duration, easing, callback );\n\n\treturn this.queue( function() {\n\t\tvar animated = $( this ),\n\t\t\tbaseClass = animated.attr( \"class\" ) || \"\",\n\t\t\tapplyClassChange,\n\t\t\tallAnimations = o.children ? animated.find( \"*\" ).addBack() : animated;\n\n\t\t// Map the animated objects to store the original styles.\n\t\tallAnimations = allAnimations.map( function() {\n\t\t\tvar el = $( this );\n\t\t\treturn {\n\t\t\t\tel: el,\n\t\t\t\tstart: getElementStyles( this )\n\t\t\t};\n\t\t} );\n\n\t\t// Apply class change\n\t\tapplyClassChange = function() {\n\t\t\t$.each( classAnimationActions, function( i, action ) {\n\t\t\t\tif ( value[ action ] ) {\n\t\t\t\t\tanimated[ action + \"Class\" ]( value[ action ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t};\n\t\tapplyClassChange();\n\n\t\t// Map all animated objects again - calculate new styles and diff\n\t\tallAnimations = allAnimations.map( function() {\n\t\t\tthis.end = getElementStyles( this.el[ 0 ] );\n\t\t\tthis.diff = styleDifference( this.start, this.end );\n\t\t\treturn this;\n\t\t} );\n\n\t\t// Apply original class\n\t\tanimated.attr( \"class\", baseClass );\n\n\t\t// Map all animated objects again - this time collecting a promise\n\t\tallAnimations = allAnimations.map( function() {\n\t\t\tvar styleInfo = this,\n\t\t\t\tdfd = $.Deferred(),\n\t\t\t\topts = $.extend( {}, o, {\n\t\t\t\t\tqueue: false,\n\t\t\t\t\tcomplete: function() {\n\t\t\t\t\t\tdfd.resolve( styleInfo );\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\tthis.el.animate( this.diff, opts );\n\t\t\treturn dfd.promise();\n\t\t} );\n\n\t\t// Once all animations have completed:\n\t\t$.when.apply( $, allAnimations.get() ).done( function() {\n\n\t\t\t// Set the final class\n\t\t\tapplyClassChange();\n\n\t\t\t// For each animated element,\n\t\t\t// clear all css properties that were animated\n\t\t\t$.each( arguments, function() {\n\t\t\t\tvar el = this.el;\n\t\t\t\t$.each( this.diff, function( key ) {\n\t\t\t\t\tel.css( key, \"\" );\n\t\t\t\t} );\n\t\t\t} );\n\n\t\t\t// This is guarnteed to be there if you use jQuery.speed()\n\t\t\t// it also handles dequeuing the next anim...\n\t\t\to.complete.call( animated[ 0 ] );\n\t\t} );\n\t} );\n};\n\n$.fn.extend( {\n\taddClass: ( function( orig ) {\n\t\treturn function( classNames, speed, easing, callback ) {\n\t\t\treturn speed ?\n\t\t\t\t$.effects.animateClass.call( this,\n\t\t\t\t\t{ add: classNames }, speed, easing, callback ) :\n\t\t\t\torig.apply( this, arguments );\n\t\t};\n\t} )( $.fn.addClass ),\n\n\tremoveClass: ( function( orig ) {\n\t\treturn function( classNames, speed, easing, callback ) {\n\t\t\treturn arguments.length > 1 ?\n\t\t\t\t$.effects.animateClass.call( this,\n\t\t\t\t\t{ remove: classNames }, speed, easing, callback ) :\n\t\t\t\torig.apply( this, arguments );\n\t\t};\n\t} )( $.fn.removeClass ),\n\n\ttoggleClass: ( function( orig ) {\n\t\treturn function( classNames, force, speed, easing, callback ) {\n\t\t\tif ( typeof force === \"boolean\" || force === undefined ) {\n\t\t\t\tif ( !speed ) {\n\n\t\t\t\t\t// Without speed parameter\n\t\t\t\t\treturn orig.apply( this, arguments );\n\t\t\t\t} else {\n\t\t\t\t\treturn $.effects.animateClass.call( this,\n\t\t\t\t\t\t( force ? { add: classNames } : { remove: classNames } ),\n\t\t\t\t\t\tspeed, easing, callback );\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Without force parameter\n\t\t\t\treturn $.effects.animateClass.call( this,\n\t\t\t\t\t{ toggle: classNames }, force, speed, easing );\n\t\t\t}\n\t\t};\n\t} )( $.fn.toggleClass ),\n\n\tswitchClass: function( remove, add, speed, easing, callback ) {\n\t\treturn $.effects.animateClass.call( this, {\n\t\t\tadd: add,\n\t\t\tremove: remove\n\t\t}, speed, easing, callback );\n\t}\n} );\n\n} )();\n\n/******************************************************************************/\n/*********************************** EFFECTS **********************************/\n/******************************************************************************/\n\n( function() {\n\nif ( $.expr && $.expr.filters && $.expr.filters.animated ) {\n\t$.expr.filters.animated = ( function( orig ) {\n\t\treturn function( elem ) {\n\t\t\treturn !!$( elem ).data( dataSpaceAnimated ) || orig( elem );\n\t\t};\n\t} )( $.expr.filters.animated );\n}\n\nif ( $.uiBackCompat !== false ) {\n\t$.extend( $.effects, {\n\n\t\t// Saves a set of properties in a data storage\n\t\tsave: function( element, set ) {\n\t\t\tvar i = 0, length = set.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( set[ i ] !== null ) {\n\t\t\t\t\telement.data( dataSpace + set[ i ], element[ 0 ].style[ set[ i ] ] );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Restores a set of previously saved properties from a data storage\n\t\trestore: function( element, set ) {\n\t\t\tvar val, i = 0, length = set.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( set[ i ] !== null ) {\n\t\t\t\t\tval = element.data( dataSpace + set[ i ] );\n\t\t\t\t\telement.css( set[ i ], val );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tsetMode: function( el, mode ) {\n\t\t\tif ( mode === \"toggle\" ) {\n\t\t\t\tmode = el.is( \":hidden\" ) ? \"show\" : \"hide\";\n\t\t\t}\n\t\t\treturn mode;\n\t\t},\n\n\t\t// Wraps the element around a wrapper that copies position properties\n\t\tcreateWrapper: function( element ) {\n\n\t\t\t// If the element is already wrapped, return it\n\t\t\tif ( element.parent().is( \".ui-effects-wrapper\" ) ) {\n\t\t\t\treturn element.parent();\n\t\t\t}\n\n\t\t\t// Wrap the element\n\t\t\tvar props = {\n\t\t\t\t\twidth: element.outerWidth( true ),\n\t\t\t\t\theight: element.outerHeight( true ),\n\t\t\t\t\t\"float\": element.css( \"float\" )\n\t\t\t\t},\n\t\t\t\twrapper = $( \"<div></div>\" )\n\t\t\t\t\t.addClass( \"ui-effects-wrapper\" )\n\t\t\t\t\t.css( {\n\t\t\t\t\t\tfontSize: \"100%\",\n\t\t\t\t\t\tbackground: \"transparent\",\n\t\t\t\t\t\tborder: \"none\",\n\t\t\t\t\t\tmargin: 0,\n\t\t\t\t\t\tpadding: 0\n\t\t\t\t\t} ),\n\n\t\t\t\t// Store the size in case width/height are defined in % - Fixes #5245\n\t\t\t\tsize = {\n\t\t\t\t\twidth: element.width(),\n\t\t\t\t\theight: element.height()\n\t\t\t\t},\n\t\t\t\tactive = document.activeElement;\n\n\t\t\t// Support: Firefox\n\t\t\t// Firefox incorrectly exposes anonymous content\n\t\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=561664\n\t\t\ttry {\n\t\t\t\tactive.id;\n\t\t\t} catch ( e ) {\n\t\t\t\tactive = document.body;\n\t\t\t}\n\n\t\t\telement.wrap( wrapper );\n\n\t\t\t// Fixes #7595 - Elements lose focus when wrapped.\n\t\t\tif ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {\n\t\t\t\t$( active ).trigger( \"focus\" );\n\t\t\t}\n\n\t\t\t// Hotfix for jQuery 1.4 since some change in wrap() seems to actually\n\t\t\t// lose the reference to the wrapped element\n\t\t\twrapper = element.parent();\n\n\t\t\t// Transfer positioning properties to the wrapper\n\t\t\tif ( element.css( \"position\" ) === \"static\" ) {\n\t\t\t\twrapper.css( { position: \"relative\" } );\n\t\t\t\telement.css( { position: \"relative\" } );\n\t\t\t} else {\n\t\t\t\t$.extend( props, {\n\t\t\t\t\tposition: element.css( \"position\" ),\n\t\t\t\t\tzIndex: element.css( \"z-index\" )\n\t\t\t\t} );\n\t\t\t\t$.each( [ \"top\", \"left\", \"bottom\", \"right\" ], function( i, pos ) {\n\t\t\t\t\tprops[ pos ] = element.css( pos );\n\t\t\t\t\tif ( isNaN( parseInt( props[ pos ], 10 ) ) ) {\n\t\t\t\t\t\tprops[ pos ] = \"auto\";\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\telement.css( {\n\t\t\t\t\tposition: \"relative\",\n\t\t\t\t\ttop: 0,\n\t\t\t\t\tleft: 0,\n\t\t\t\t\tright: \"auto\",\n\t\t\t\t\tbottom: \"auto\"\n\t\t\t\t} );\n\t\t\t}\n\t\t\telement.css( size );\n\n\t\t\treturn wrapper.css( props ).show();\n\t\t},\n\n\t\tremoveWrapper: function( element ) {\n\t\t\tvar active = document.activeElement;\n\n\t\t\tif ( element.parent().is( \".ui-effects-wrapper\" ) ) {\n\t\t\t\telement.parent().replaceWith( element );\n\n\t\t\t\t// Fixes #7595 - Elements lose focus when wrapped.\n\t\t\t\tif ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {\n\t\t\t\t\t$( active ).trigger( \"focus\" );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn element;\n\t\t}\n\t} );\n}\n\n$.extend( $.effects, {\n\tversion: \"1.12.1\",\n\n\tdefine: function( name, mode, effect ) {\n\t\tif ( !effect ) {\n\t\t\teffect = mode;\n\t\t\tmode = \"effect\";\n\t\t}\n\n\t\t$.effects.effect[ name ] = effect;\n\t\t$.effects.effect[ name ].mode = mode;\n\n\t\treturn effect;\n\t},\n\n\tscaledDimensions: function( element, percent, direction ) {\n\t\tif ( percent === 0 ) {\n\t\t\treturn {\n\t\t\t\theight: 0,\n\t\t\t\twidth: 0,\n\t\t\t\touterHeight: 0,\n\t\t\t\touterWidth: 0\n\t\t\t};\n\t\t}\n\n\t\tvar x = direction !== \"horizontal\" ? ( ( percent || 100 ) / 100 ) : 1,\n\t\t\ty = direction !== \"vertical\" ? ( ( percent || 100 ) / 100 ) : 1;\n\n\t\treturn {\n\t\t\theight: element.height() * y,\n\t\t\twidth: element.width() * x,\n\t\t\touterHeight: element.outerHeight() * y,\n\t\t\touterWidth: element.outerWidth() * x\n\t\t};\n\n\t},\n\n\tclipToBox: function( animation ) {\n\t\treturn {\n\t\t\twidth: animation.clip.right - animation.clip.left,\n\t\t\theight: animation.clip.bottom - animation.clip.top,\n\t\t\tleft: animation.clip.left,\n\t\t\ttop: animation.clip.top\n\t\t};\n\t},\n\n\t// Injects recently queued functions to be first in line (after \"inprogress\")\n\tunshift: function( element, queueLength, count ) {\n\t\tvar queue = element.queue();\n\n\t\tif ( queueLength > 1 ) {\n\t\t\tqueue.splice.apply( queue,\n\t\t\t\t[ 1, 0 ].concat( queue.splice( queueLength, count ) ) );\n\t\t}\n\t\telement.dequeue();\n\t},\n\n\tsaveStyle: function( element ) {\n\t\telement.data( dataSpaceStyle, element[ 0 ].style.cssText );\n\t},\n\n\trestoreStyle: function( element ) {\n\t\telement[ 0 ].style.cssText = element.data( dataSpaceStyle ) || \"\";\n\t\telement.removeData( dataSpaceStyle );\n\t},\n\n\tmode: function( element, mode ) {\n\t\tvar hidden = element.is( \":hidden\" );\n\n\t\tif ( mode === \"toggle\" ) {\n\t\t\tmode = hidden ? \"show\" : \"hide\";\n\t\t}\n\t\tif ( hidden ? mode === \"hide\" : mode === \"show\" ) {\n\t\t\tmode = \"none\";\n\t\t}\n\t\treturn mode;\n\t},\n\n\t// Translates a [top,left] array into a baseline value\n\tgetBaseline: function( origin, original ) {\n\t\tvar y, x;\n\n\t\tswitch ( origin[ 0 ] ) {\n\t\tcase \"top\":\n\t\t\ty = 0;\n\t\t\tbreak;\n\t\tcase \"middle\":\n\t\t\ty = 0.5;\n\t\t\tbreak;\n\t\tcase \"bottom\":\n\t\t\ty = 1;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\ty = origin[ 0 ] / original.height;\n\t\t}\n\n\t\tswitch ( origin[ 1 ] ) {\n\t\tcase \"left\":\n\t\t\tx = 0;\n\t\t\tbreak;\n\t\tcase \"center\":\n\t\t\tx = 0.5;\n\t\t\tbreak;\n\t\tcase \"right\":\n\t\t\tx = 1;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tx = origin[ 1 ] / original.width;\n\t\t}\n\n\t\treturn {\n\t\t\tx: x,\n\t\t\ty: y\n\t\t};\n\t},\n\n\t// Creates a placeholder element so that the original element can be made absolute\n\tcreatePlaceholder: function( element ) {\n\t\tvar placeholder,\n\t\t\tcssPosition = element.css( \"position\" ),\n\t\t\tposition = element.position();\n\n\t\t// Lock in margins first to account for form elements, which\n\t\t// will change margin if you explicitly set height\n\t\t// see: http://jsfiddle.net/JZSMt/3/ https://bugs.webkit.org/show_bug.cgi?id=107380\n\t\t// Support: Safari\n\t\telement.css( {\n\t\t\tmarginTop: element.css( \"marginTop\" ),\n\t\t\tmarginBottom: element.css( \"marginBottom\" ),\n\t\t\tmarginLeft: element.css( \"marginLeft\" ),\n\t\t\tmarginRight: element.css( \"marginRight\" )\n\t\t} )\n\t\t.outerWidth( element.outerWidth() )\n\t\t.outerHeight( element.outerHeight() );\n\n\t\tif ( /^(static|relative)/.test( cssPosition ) ) {\n\t\t\tcssPosition = \"absolute\";\n\n\t\t\tplaceholder = $( \"<\" + element[ 0 ].nodeName + \">\" ).insertAfter( element ).css( {\n\n\t\t\t\t// Convert inline to inline block to account for inline elements\n\t\t\t\t// that turn to inline block based on content (like img)\n\t\t\t\tdisplay: /^(inline|ruby)/.test( element.css( \"display\" ) ) ?\n\t\t\t\t\t\"inline-block\" :\n\t\t\t\t\t\"block\",\n\t\t\t\tvisibility: \"hidden\",\n\n\t\t\t\t// Margins need to be set to account for margin collapse\n\t\t\t\tmarginTop: element.css( \"marginTop\" ),\n\t\t\t\tmarginBottom: element.css( \"marginBottom\" ),\n\t\t\t\tmarginLeft: element.css( \"marginLeft\" ),\n\t\t\t\tmarginRight: element.css( \"marginRight\" ),\n\t\t\t\t\"float\": element.css( \"float\" )\n\t\t\t} )\n\t\t\t.outerWidth( element.outerWidth() )\n\t\t\t.outerHeight( element.outerHeight() )\n\t\t\t.addClass( \"ui-effects-placeholder\" );\n\n\t\t\telement.data( dataSpace + \"placeholder\", placeholder );\n\t\t}\n\n\t\telement.css( {\n\t\t\tposition: cssPosition,\n\t\t\tleft: position.left,\n\t\t\ttop: position.top\n\t\t} );\n\n\t\treturn placeholder;\n\t},\n\n\tremovePlaceholder: function( element ) {\n\t\tvar dataKey = dataSpace + \"placeholder\",\n\t\t\t\tplaceholder = element.data( dataKey );\n\n\t\tif ( placeholder ) {\n\t\t\tplaceholder.remove();\n\t\t\telement.removeData( dataKey );\n\t\t}\n\t},\n\n\t// Removes a placeholder if it exists and restores\n\t// properties that were modified during placeholder creation\n\tcleanUp: function( element ) {\n\t\t$.effects.restoreStyle( element );\n\t\t$.effects.removePlaceholder( element );\n\t},\n\n\tsetTransition: function( element, list, factor, value ) {\n\t\tvalue = value || {};\n\t\t$.each( list, function( i, x ) {\n\t\t\tvar unit = element.cssUnit( x );\n\t\t\tif ( unit[ 0 ] > 0 ) {\n\t\t\t\tvalue[ x ] = unit[ 0 ] * factor + unit[ 1 ];\n\t\t\t}\n\t\t} );\n\t\treturn value;\n\t}\n} );\n\n// Return an effect options object for the given parameters:\nfunction _normalizeArguments( effect, options, speed, callback ) {\n\n\t// Allow passing all options as the first parameter\n\tif ( $.isPlainObject( effect ) ) {\n\t\toptions = effect;\n\t\teffect = effect.effect;\n\t}\n\n\t// Convert to an object\n\teffect = { effect: effect };\n\n\t// Catch (effect, null, ...)\n\tif ( options == null ) {\n\t\toptions = {};\n\t}\n\n\t// Catch (effect, callback)\n\tif ( $.isFunction( options ) ) {\n\t\tcallback = options;\n\t\tspeed = null;\n\t\toptions = {};\n\t}\n\n\t// Catch (effect, speed, ?)\n\tif ( typeof options === \"number\" || $.fx.speeds[ options ] ) {\n\t\tcallback = speed;\n\t\tspeed = options;\n\t\toptions = {};\n\t}\n\n\t// Catch (effect, options, callback)\n\tif ( $.isFunction( speed ) ) {\n\t\tcallback = speed;\n\t\tspeed = null;\n\t}\n\n\t// Add options to effect\n\tif ( options ) {\n\t\t$.extend( effect, options );\n\t}\n\n\tspeed = speed || options.duration;\n\teffect.duration = $.fx.off ? 0 :\n\t\ttypeof speed === \"number\" ? speed :\n\t\tspeed in $.fx.speeds ? $.fx.speeds[ speed ] :\n\t\t$.fx.speeds._default;\n\n\teffect.complete = callback || options.complete;\n\n\treturn effect;\n}\n\nfunction standardAnimationOption( option ) {\n\n\t// Valid standard speeds (nothing, number, named speed)\n\tif ( !option || typeof option === \"number\" || $.fx.speeds[ option ] ) {\n\t\treturn true;\n\t}\n\n\t// Invalid strings - treat as \"normal\" speed\n\tif ( typeof option === \"string\" && !$.effects.effect[ option ] ) {\n\t\treturn true;\n\t}\n\n\t// Complete callback\n\tif ( $.isFunction( option ) ) {\n\t\treturn true;\n\t}\n\n\t// Options hash (but not naming an effect)\n\tif ( typeof option === \"object\" && !option.effect ) {\n\t\treturn true;\n\t}\n\n\t// Didn't match any standard API\n\treturn false;\n}\n\n$.fn.extend( {\n\teffect: function( /* effect, options, speed, callback */ ) {\n\t\tvar args = _normalizeArguments.apply( this, arguments ),\n\t\t\teffectMethod = $.effects.effect[ args.effect ],\n\t\t\tdefaultMode = effectMethod.mode,\n\t\t\tqueue = args.queue,\n\t\t\tqueueName = queue || \"fx\",\n\t\t\tcomplete = args.complete,\n\t\t\tmode = args.mode,\n\t\t\tmodes = [],\n\t\t\tprefilter = function( next ) {\n\t\t\t\tvar el = $( this ),\n\t\t\t\t\tnormalizedMode = $.effects.mode( el, mode ) || defaultMode;\n\n\t\t\t\t// Sentinel for duck-punching the :animated psuedo-selector\n\t\t\t\tel.data( dataSpaceAnimated, true );\n\n\t\t\t\t// Save effect mode for later use,\n\t\t\t\t// we can't just call $.effects.mode again later,\n\t\t\t\t// as the .show() below destroys the initial state\n\t\t\t\tmodes.push( normalizedMode );\n\n\t\t\t\t// See $.uiBackCompat inside of run() for removal of defaultMode in 1.13\n\t\t\t\tif ( defaultMode && ( normalizedMode === \"show\" ||\n\t\t\t\t\t\t( normalizedMode === defaultMode && normalizedMode === \"hide\" ) ) ) {\n\t\t\t\t\tel.show();\n\t\t\t\t}\n\n\t\t\t\tif ( !defaultMode || normalizedMode !== \"none\" ) {\n\t\t\t\t\t$.effects.saveStyle( el );\n\t\t\t\t}\n\n\t\t\t\tif ( $.isFunction( next ) ) {\n\t\t\t\t\tnext();\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( $.fx.off || !effectMethod ) {\n\n\t\t\t// Delegate to the original method (e.g., .show()) if possible\n\t\t\tif ( mode ) {\n\t\t\t\treturn this[ mode ]( args.duration, complete );\n\t\t\t} else {\n\t\t\t\treturn this.each( function() {\n\t\t\t\t\tif ( complete ) {\n\t\t\t\t\t\tcomplete.call( this );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\n\t\tfunction run( next ) {\n\t\t\tvar elem = $( this );\n\n\t\t\tfunction cleanup() {\n\t\t\t\telem.removeData( dataSpaceAnimated );\n\n\t\t\t\t$.effects.cleanUp( elem );\n\n\t\t\t\tif ( args.mode === \"hide\" ) {\n\t\t\t\t\telem.hide();\n\t\t\t\t}\n\n\t\t\t\tdone();\n\t\t\t}\n\n\t\t\tfunction done() {\n\t\t\t\tif ( $.isFunction( complete ) ) {\n\t\t\t\t\tcomplete.call( elem[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\tif ( $.isFunction( next ) ) {\n\t\t\t\t\tnext();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override mode option on a per element basis,\n\t\t\t// as toggle can be either show or hide depending on element state\n\t\t\targs.mode = modes.shift();\n\n\t\t\tif ( $.uiBackCompat !== false && !defaultMode ) {\n\t\t\t\tif ( elem.is( \":hidden\" ) ? mode === \"hide\" : mode === \"show\" ) {\n\n\t\t\t\t\t// Call the core method to track \"olddisplay\" properly\n\t\t\t\t\telem[ mode ]();\n\t\t\t\t\tdone();\n\t\t\t\t} else {\n\t\t\t\t\teffectMethod.call( elem[ 0 ], args, done );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ( args.mode === \"none\" ) {\n\n\t\t\t\t\t// Call the core method to track \"olddisplay\" properly\n\t\t\t\t\telem[ mode ]();\n\t\t\t\t\tdone();\n\t\t\t\t} else {\n\t\t\t\t\teffectMethod.call( elem[ 0 ], args, cleanup );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Run prefilter on all elements first to ensure that\n\t\t// any showing or hiding happens before placeholder creation,\n\t\t// which ensures that any layout changes are correctly captured.\n\t\treturn queue === false ?\n\t\t\tthis.each( prefilter ).each( run ) :\n\t\t\tthis.queue( queueName, prefilter ).queue( queueName, run );\n\t},\n\n\tshow: ( function( orig ) {\n\t\treturn function( option ) {\n\t\t\tif ( standardAnimationOption( option ) ) {\n\t\t\t\treturn orig.apply( this, arguments );\n\t\t\t} else {\n\t\t\t\tvar args = _normalizeArguments.apply( this, arguments );\n\t\t\t\targs.mode = \"show\";\n\t\t\t\treturn this.effect.call( this, args );\n\t\t\t}\n\t\t};\n\t} )( $.fn.show ),\n\n\thide: ( function( orig ) {\n\t\treturn function( option ) {\n\t\t\tif ( standardAnimationOption( option ) ) {\n\t\t\t\treturn orig.apply( this, arguments );\n\t\t\t} else {\n\t\t\t\tvar args = _normalizeArguments.apply( this, arguments );\n\t\t\t\targs.mode = \"hide\";\n\t\t\t\treturn this.effect.call( this, args );\n\t\t\t}\n\t\t};\n\t} )( $.fn.hide ),\n\n\ttoggle: ( function( orig ) {\n\t\treturn function( option ) {\n\t\t\tif ( standardAnimationOption( option ) || typeof option === \"boolean\" ) {\n\t\t\t\treturn orig.apply( this, arguments );\n\t\t\t} else {\n\t\t\t\tvar args = _normalizeArguments.apply( this, arguments );\n\t\t\t\targs.mode = \"toggle\";\n\t\t\t\treturn this.effect.call( this, args );\n\t\t\t}\n\t\t};\n\t} )( $.fn.toggle ),\n\n\tcssUnit: function( key ) {\n\t\tvar style = this.css( key ),\n\t\t\tval = [];\n\n\t\t$.each( [ \"em\", \"px\", \"%\", \"pt\" ], function( i, unit ) {\n\t\t\tif ( style.indexOf( unit ) > 0 ) {\n\t\t\t\tval = [ parseFloat( style ), unit ];\n\t\t\t}\n\t\t} );\n\t\treturn val;\n\t},\n\n\tcssClip: function( clipObj ) {\n\t\tif ( clipObj ) {\n\t\t\treturn this.css( \"clip\", \"rect(\" + clipObj.top + \"px \" + clipObj.right + \"px \" +\n\t\t\t\tclipObj.bottom + \"px \" + clipObj.left + \"px)\" );\n\t\t}\n\t\treturn parseClip( this.css( \"clip\" ), this );\n\t},\n\n\ttransfer: function( options, done ) {\n\t\tvar element = $( this ),\n\t\t\ttarget = $( options.to ),\n\t\t\ttargetFixed = target.css( \"position\" ) === \"fixed\",\n\t\t\tbody = $( \"body\" ),\n\t\t\tfixTop = targetFixed ? body.scrollTop() : 0,\n\t\t\tfixLeft = targetFixed ? body.scrollLeft() : 0,\n\t\t\tendPosition = target.offset(),\n\t\t\tanimation = {\n\t\t\t\ttop: endPosition.top - fixTop,\n\t\t\t\tleft: endPosition.left - fixLeft,\n\t\t\t\theight: target.innerHeight(),\n\t\t\t\twidth: target.innerWidth()\n\t\t\t},\n\t\t\tstartPosition = element.offset(),\n\t\t\ttransfer = $( \"<div class='ui-effects-transfer'></div>\" )\n\t\t\t\t.appendTo( \"body\" )\n\t\t\t\t.addClass( options.className )\n\t\t\t\t.css( {\n\t\t\t\t\ttop: startPosition.top - fixTop,\n\t\t\t\t\tleft: startPosition.left - fixLeft,\n\t\t\t\t\theight: element.innerHeight(),\n\t\t\t\t\twidth: element.innerWidth(),\n\t\t\t\t\tposition: targetFixed ? \"fixed\" : \"absolute\"\n\t\t\t\t} )\n\t\t\t\t.animate( animation, options.duration, options.easing, function() {\n\t\t\t\t\ttransfer.remove();\n\t\t\t\t\tif ( $.isFunction( done ) ) {\n\t\t\t\t\t\tdone();\n\t\t\t\t\t}\n\t\t\t\t} );\n\t}\n} );\n\nfunction parseClip( str, element ) {\n\t\tvar outerWidth = element.outerWidth(),\n\t\t\touterHeight = element.outerHeight(),\n\t\t\tclipRegex = /^rect\\((-?\\d*\\.?\\d*px|-?\\d+%|auto),?\\s*(-?\\d*\\.?\\d*px|-?\\d+%|auto),?\\s*(-?\\d*\\.?\\d*px|-?\\d+%|auto),?\\s*(-?\\d*\\.?\\d*px|-?\\d+%|auto)\\)$/,\n\t\t\tvalues = clipRegex.exec( str ) || [ \"\", 0, outerWidth, outerHeight, 0 ];\n\n\t\treturn {\n\t\t\ttop: parseFloat( values[ 1 ] ) || 0,\n\t\t\tright: values[ 2 ] === \"auto\" ? outerWidth : parseFloat( values[ 2 ] ),\n\t\t\tbottom: values[ 3 ] === \"auto\" ? outerHeight : parseFloat( values[ 3 ] ),\n\t\t\tleft: parseFloat( values[ 4 ] ) || 0\n\t\t};\n}\n\n$.fx.step.clip = function( fx ) {\n\tif ( !fx.clipInit ) {\n\t\tfx.start = $( fx.elem ).cssClip();\n\t\tif ( typeof fx.end === \"string\" ) {\n\t\t\tfx.end = parseClip( fx.end, fx.elem );\n\t\t}\n\t\tfx.clipInit = true;\n\t}\n\n\t$( fx.elem ).cssClip( {\n\t\ttop: fx.pos * ( fx.end.top - fx.start.top ) + fx.start.top,\n\t\tright: fx.pos * ( fx.end.right - fx.start.right ) + fx.start.right,\n\t\tbottom: fx.pos * ( fx.end.bottom - fx.start.bottom ) + fx.start.bottom,\n\t\tleft: fx.pos * ( fx.end.left - fx.start.left ) + fx.start.left\n\t} );\n};\n\n} )();\n\n/******************************************************************************/\n/*********************************** EASING ***********************************/\n/******************************************************************************/\n\n( function() {\n\n// Based on easing equations from Robert Penner (http://www.robertpenner.com/easing)\n\nvar baseEasings = {};\n\n$.each( [ \"Quad\", \"Cubic\", \"Quart\", \"Quint\", \"Expo\" ], function( i, name ) {\n\tbaseEasings[ name ] = function( p ) {\n\t\treturn Math.pow( p, i + 2 );\n\t};\n} );\n\n$.extend( baseEasings, {\n\tSine: function( p ) {\n\t\treturn 1 - Math.cos( p * Math.PI / 2 );\n\t},\n\tCirc: function( p ) {\n\t\treturn 1 - Math.sqrt( 1 - p * p );\n\t},\n\tElastic: function( p ) {\n\t\treturn p === 0 || p === 1 ? p :\n\t\t\t-Math.pow( 2, 8 * ( p - 1 ) ) * Math.sin( ( ( p - 1 ) * 80 - 7.5 ) * Math.PI / 15 );\n\t},\n\tBack: function( p ) {\n\t\treturn p * p * ( 3 * p - 2 );\n\t},\n\tBounce: function( p ) {\n\t\tvar pow2,\n\t\t\tbounce = 4;\n\n\t\twhile ( p < ( ( pow2 = Math.pow( 2, --bounce ) ) - 1 ) / 11 ) {}\n\t\treturn 1 / Math.pow( 4, 3 - bounce ) - 7.5625 * Math.pow( ( pow2 * 3 - 2 ) / 22 - p, 2 );\n\t}\n} );\n\n$.each( baseEasings, function( name, easeIn ) {\n\t$.easing[ \"easeIn\" + name ] = easeIn;\n\t$.easing[ \"easeOut\" + name ] = function( p ) {\n\t\treturn 1 - easeIn( 1 - p );\n\t};\n\t$.easing[ \"easeInOut\" + name ] = function( p ) {\n\t\treturn p < 0.5 ?\n\t\t\teaseIn( p * 2 ) / 2 :\n\t\t\t1 - easeIn( p * -2 + 2 ) / 2;\n\t};\n} );\n\n} )();\n\nvar effect = $.effects;\n\n\n/*!\n * jQuery UI Effects Blind 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Blind Effect\n//>>group: Effects\n//>>description: Blinds the element.\n//>>docs: http://api.jqueryui.com/blind-effect/\n//>>demos: http://jqueryui.com/effect/\n\n\n\nvar effectsEffectBlind = $.effects.define( \"blind\", \"hide\", function( options, done ) {\n\tvar map = {\n\t\t\tup: [ \"bottom\", \"top\" ],\n\t\t\tvertical: [ \"bottom\", \"top\" ],\n\t\t\tdown: [ \"top\", \"bottom\" ],\n\t\t\tleft: [ \"right\", \"left\" ],\n\t\t\thorizontal: [ \"right\", \"left\" ],\n\t\t\tright: [ \"left\", \"right\" ]\n\t\t},\n\t\telement = $( this ),\n\t\tdirection = options.direction || \"up\",\n\t\tstart = element.cssClip(),\n\t\tanimate = { clip: $.extend( {}, start ) },\n\t\tplaceholder = $.effects.createPlaceholder( element );\n\n\tanimate.clip[ map[ direction ][ 0 ] ] = animate.clip[ map[ direction ][ 1 ] ];\n\n\tif ( options.mode === \"show\" ) {\n\t\telement.cssClip( animate.clip );\n\t\tif ( placeholder ) {\n\t\t\tplaceholder.css( $.effects.clipToBox( animate ) );\n\t\t}\n\n\t\tanimate.clip = start;\n\t}\n\n\tif ( placeholder ) {\n\t\tplaceholder.animate( $.effects.clipToBox( animate ), options.duration, options.easing );\n\t}\n\n\telement.animate( animate, {\n\t\tqueue: false,\n\t\tduration: options.duration,\n\t\teasing: options.easing,\n\t\tcomplete: done\n\t} );\n} );\n\n\n/*!\n * jQuery UI Effects Bounce 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Bounce Effect\n//>>group: Effects\n//>>description: Bounces an element horizontally or vertically n times.\n//>>docs: http://api.jqueryui.com/bounce-effect/\n//>>demos: http://jqueryui.com/effect/\n\n\n\nvar effectsEffectBounce = $.effects.define( \"bounce\", function( options, done ) {\n\tvar upAnim, downAnim, refValue,\n\t\telement = $( this ),\n\n\t\t// Defaults:\n\t\tmode = options.mode,\n\t\thide = mode === \"hide\",\n\t\tshow = mode === \"show\",\n\t\tdirection = options.direction || \"up\",\n\t\tdistance = options.distance,\n\t\ttimes = options.times || 5,\n\n\t\t// Number of internal animations\n\t\tanims = times * 2 + ( show || hide ? 1 : 0 ),\n\t\tspeed = options.duration / anims,\n\t\teasing = options.easing,\n\n\t\t// Utility:\n\t\tref = ( direction === \"up\" || direction === \"down\" ) ? \"top\" : \"left\",\n\t\tmotion = ( direction === \"up\" || direction === \"left\" ),\n\t\ti = 0,\n\n\t\tqueuelen = element.queue().length;\n\n\t$.effects.createPlaceholder( element );\n\n\trefValue = element.css( ref );\n\n\t// Default distance for the BIGGEST bounce is the outer Distance / 3\n\tif ( !distance ) {\n\t\tdistance = element[ ref === \"top\" ? \"outerHeight\" : \"outerWidth\" ]() / 3;\n\t}\n\n\tif ( show ) {\n\t\tdownAnim = { opacity: 1 };\n\t\tdownAnim[ ref ] = refValue;\n\n\t\t// If we are showing, force opacity 0 and set the initial position\n\t\t// then do the \"first\" animation\n\t\telement\n\t\t\t.css( \"opacity\", 0 )\n\t\t\t.css( ref, motion ? -distance * 2 : distance * 2 )\n\t\t\t.animate( downAnim, speed, easing );\n\t}\n\n\t// Start at the smallest distance if we are hiding\n\tif ( hide ) {\n\t\tdistance = distance / Math.pow( 2, times - 1 );\n\t}\n\n\tdownAnim = {};\n\tdownAnim[ ref ] = refValue;\n\n\t// Bounces up/down/left/right then back to 0 -- times * 2 animations happen here\n\tfor ( ; i < times; i++ ) {\n\t\tupAnim = {};\n\t\tupAnim[ ref ] = ( motion ? \"-=\" : \"+=\" ) + distance;\n\n\t\telement\n\t\t\t.animate( upAnim, speed, easing )\n\t\t\t.animate( downAnim, speed, easing );\n\n\t\tdistance = hide ? distance * 2 : distance / 2;\n\t}\n\n\t// Last Bounce when Hiding\n\tif ( hide ) {\n\t\tupAnim = { opacity: 0 };\n\t\tupAnim[ ref ] = ( motion ? \"-=\" : \"+=\" ) + distance;\n\n\t\telement.animate( upAnim, speed, easing );\n\t}\n\n\telement.queue( done );\n\n\t$.effects.unshift( element, queuelen, anims + 1 );\n} );\n\n\n/*!\n * jQuery UI Effects Clip 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Clip Effect\n//>>group: Effects\n//>>description: Clips the element on and off like an old TV.\n//>>docs: http://api.jqueryui.com/clip-effect/\n//>>demos: http://jqueryui.com/effect/\n\n\n\nvar effectsEffectClip = $.effects.define( \"clip\", \"hide\", function( options, done ) {\n\tvar start,\n\t\tanimate = {},\n\t\telement = $( this ),\n\t\tdirection = options.direction || \"vertical\",\n\t\tboth = direction === \"both\",\n\t\thorizontal = both || direction === \"horizontal\",\n\t\tvertical = both || direction === \"vertical\";\n\n\tstart = element.cssClip();\n\tanimate.clip = {\n\t\ttop: vertical ? ( start.bottom - start.top ) / 2 : start.top,\n\t\tright: horizontal ? ( start.right - start.left ) / 2 : start.right,\n\t\tbottom: vertical ? ( start.bottom - start.top ) / 2 : start.bottom,\n\t\tleft: horizontal ? ( start.right - start.left ) / 2 : start.left\n\t};\n\n\t$.effects.createPlaceholder( element );\n\n\tif ( options.mode === \"show\" ) {\n\t\telement.cssClip( animate.clip );\n\t\tanimate.clip = start;\n\t}\n\n\telement.animate( animate, {\n\t\tqueue: false,\n\t\tduration: options.duration,\n\t\teasing: options.easing,\n\t\tcomplete: done\n\t} );\n\n} );\n\n\n/*!\n * jQuery UI Effects Drop 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Drop Effect\n//>>group: Effects\n//>>description: Moves an element in one direction and hides it at the same time.\n//>>docs: http://api.jqueryui.com/drop-effect/\n//>>demos: http://jqueryui.com/effect/\n\n\n\nvar effectsEffectDrop = $.effects.define( \"drop\", \"hide\", function( options, done ) {\n\n\tvar distance,\n\t\telement = $( this ),\n\t\tmode = options.mode,\n\t\tshow = mode === \"show\",\n\t\tdirection = options.direction || \"left\",\n\t\tref = ( direction === \"up\" || direction === \"down\" ) ? \"top\" : \"left\",\n\t\tmotion = ( direction === \"up\" || direction === \"left\" ) ? \"-=\" : \"+=\",\n\t\toppositeMotion = ( motion === \"+=\" ) ? \"-=\" : \"+=\",\n\t\tanimation = {\n\t\t\topacity: 0\n\t\t};\n\n\t$.effects.createPlaceholder( element );\n\n\tdistance = options.distance ||\n\t\telement[ ref === \"top\" ? \"outerHeight\" : \"outerWidth\" ]( true ) / 2;\n\n\tanimation[ ref ] = motion + distance;\n\n\tif ( show ) {\n\t\telement.css( animation );\n\n\t\tanimation[ ref ] = oppositeMotion + distance;\n\t\tanimation.opacity = 1;\n\t}\n\n\t// Animate\n\telement.animate( animation, {\n\t\tqueue: false,\n\t\tduration: options.duration,\n\t\teasing: options.easing,\n\t\tcomplete: done\n\t} );\n} );\n\n\n/*!\n * jQuery UI Effects Explode 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Explode Effect\n//>>group: Effects\n// jscs:disable maximumLineLength\n//>>description: Explodes an element in all directions into n pieces. Implodes an element to its original wholeness.\n// jscs:enable maximumLineLength\n//>>docs: http://api.jqueryui.com/explode-effect/\n//>>demos: http://jqueryui.com/effect/\n\n\n\nvar effectsEffectExplode = $.effects.define( \"explode\", \"hide\", function( options, done ) {\n\n\tvar i, j, left, top, mx, my,\n\t\trows = options.pieces ? Math.round( Math.sqrt( options.pieces ) ) : 3,\n\t\tcells = rows,\n\t\telement = $( this ),\n\t\tmode = options.mode,\n\t\tshow = mode === \"show\",\n\n\t\t// Show and then visibility:hidden the element before calculating offset\n\t\toffset = element.show().css( \"visibility\", \"hidden\" ).offset(),\n\n\t\t// Width and height of a piece\n\t\twidth = Math.ceil( element.outerWidth() / cells ),\n\t\theight = Math.ceil( element.outerHeight() / rows ),\n\t\tpieces = [];\n\n\t// Children animate complete:\n\tfunction childComplete() {\n\t\tpieces.push( this );\n\t\tif ( pieces.length === rows * cells ) {\n\t\t\tanimComplete();\n\t\t}\n\t}\n\n\t// Clone the element for each row and cell.\n\tfor ( i = 0; i < rows; i++ ) { // ===>\n\t\ttop = offset.top + i * height;\n\t\tmy = i - ( rows - 1 ) / 2;\n\n\t\tfor ( j = 0; j < cells; j++ ) { // |||\n\t\t\tleft = offset.left + j * width;\n\t\t\tmx = j - ( cells - 1 ) / 2;\n\n\t\t\t// Create a clone of the now hidden main element that will be absolute positioned\n\t\t\t// within a wrapper div off the -left and -top equal to size of our pieces\n\t\t\telement\n\t\t\t\t.clone()\n\t\t\t\t.appendTo( \"body\" )\n\t\t\t\t.wrap( \"<div></div>\" )\n\t\t\t\t.css( {\n\t\t\t\t\tposition: \"absolute\",\n\t\t\t\t\tvisibility: \"visible\",\n\t\t\t\t\tleft: -j * width,\n\t\t\t\t\ttop: -i * height\n\t\t\t\t} )\n\n\t\t\t\t// Select the wrapper - make it overflow: hidden and absolute positioned based on\n\t\t\t\t// where the original was located +left and +top equal to the size of pieces\n\t\t\t\t.parent()\n\t\t\t\t\t.addClass( \"ui-effects-explode\" )\n\t\t\t\t\t.css( {\n\t\t\t\t\t\tposition: \"absolute\",\n\t\t\t\t\t\toverflow: \"hidden\",\n\t\t\t\t\t\twidth: width,\n\t\t\t\t\t\theight: height,\n\t\t\t\t\t\tleft: left + ( show ? mx * width : 0 ),\n\t\t\t\t\t\ttop: top + ( show ? my * height : 0 ),\n\t\t\t\t\t\topacity: show ? 0 : 1\n\t\t\t\t\t} )\n\t\t\t\t\t.animate( {\n\t\t\t\t\t\tleft: left + ( show ? 0 : mx * width ),\n\t\t\t\t\t\ttop: top + ( show ? 0 : my * height ),\n\t\t\t\t\t\topacity: show ? 1 : 0\n\t\t\t\t\t}, options.duration || 500, options.easing, childComplete );\n\t\t}\n\t}\n\n\tfunction animComplete() {\n\t\telement.css( {\n\t\t\tvisibility: \"visible\"\n\t\t} );\n\t\t$( pieces ).remove();\n\t\tdone();\n\t}\n} );\n\n\n/*!\n * jQuery UI Effects Fade 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Fade Effect\n//>>group: Effects\n//>>description: Fades the element.\n//>>docs: http://api.jqueryui.com/fade-effect/\n//>>demos: http://jqueryui.com/effect/\n\n\n\nvar effectsEffectFade = $.effects.define( \"fade\", \"toggle\", function( options, done ) {\n\tvar show = options.mode === \"show\";\n\n\t$( this )\n\t\t.css( \"opacity\", show ? 0 : 1 )\n\t\t.animate( {\n\t\t\topacity: show ? 1 : 0\n\t\t}, {\n\t\t\tqueue: false,\n\t\t\tduration: options.duration,\n\t\t\teasing: options.easing,\n\t\t\tcomplete: done\n\t\t} );\n} );\n\n\n/*!\n * jQuery UI Effects Fold 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Fold Effect\n//>>group: Effects\n//>>description: Folds an element first horizontally and then vertically.\n//>>docs: http://api.jqueryui.com/fold-effect/\n//>>demos: http://jqueryui.com/effect/\n\n\n\nvar effectsEffectFold = $.effects.define( \"fold\", \"hide\", function( options, done ) {\n\n\t// Create element\n\tvar element = $( this ),\n\t\tmode = options.mode,\n\t\tshow = mode === \"show\",\n\t\thide = mode === \"hide\",\n\t\tsize = options.size || 15,\n\t\tpercent = /([0-9]+)%/.exec( size ),\n\t\thorizFirst = !!options.horizFirst,\n\t\tref = horizFirst ? [ \"right\", \"bottom\" ] : [ \"bottom\", \"right\" ],\n\t\tduration = options.duration / 2,\n\n\t\tplaceholder = $.effects.createPlaceholder( element ),\n\n\t\tstart = element.cssClip(),\n\t\tanimation1 = { clip: $.extend( {}, start ) },\n\t\tanimation2 = { clip: $.extend( {}, start ) },\n\n\t\tdistance = [ start[ ref[ 0 ] ], start[ ref[ 1 ] ] ],\n\n\t\tqueuelen = element.queue().length;\n\n\tif ( percent ) {\n\t\tsize = parseInt( percent[ 1 ], 10 ) / 100 * distance[ hide ? 0 : 1 ];\n\t}\n\tanimation1.clip[ ref[ 0 ] ] = size;\n\tanimation2.clip[ ref[ 0 ] ] = size;\n\tanimation2.clip[ ref[ 1 ] ] = 0;\n\n\tif ( show ) {\n\t\telement.cssClip( animation2.clip );\n\t\tif ( placeholder ) {\n\t\t\tplaceholder.css( $.effects.clipToBox( animation2 ) );\n\t\t}\n\n\t\tanimation2.clip = start;\n\t}\n\n\t// Animate\n\telement\n\t\t.queue( function( next ) {\n\t\t\tif ( placeholder ) {\n\t\t\t\tplaceholder\n\t\t\t\t\t.animate( $.effects.clipToBox( animation1 ), duration, options.easing )\n\t\t\t\t\t.animate( $.effects.clipToBox( animation2 ), duration, options.easing );\n\t\t\t}\n\n\t\t\tnext();\n\t\t} )\n\t\t.animate( animation1, duration, options.easing )\n\t\t.animate( animation2, duration, options.easing )\n\t\t.queue( done );\n\n\t$.effects.unshift( element, queuelen, 4 );\n} );\n\n\n/*!\n * jQuery UI Effects Highlight 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Highlight Effect\n//>>group: Effects\n//>>description: Highlights the background of an element in a defined color for a custom duration.\n//>>docs: http://api.jqueryui.com/highlight-effect/\n//>>demos: http://jqueryui.com/effect/\n\n\n\nvar effectsEffectHighlight = $.effects.define( \"highlight\", \"show\", function( options, done ) {\n\tvar element = $( this ),\n\t\tanimation = {\n\t\t\tbackgroundColor: element.css( \"backgroundColor\" )\n\t\t};\n\n\tif ( options.mode === \"hide\" ) {\n\t\tanimation.opacity = 0;\n\t}\n\n\t$.effects.saveStyle( element );\n\n\telement\n\t\t.css( {\n\t\t\tbackgroundImage: \"none\",\n\t\t\tbackgroundColor: options.color || \"#ffff99\"\n\t\t} )\n\t\t.animate( animation, {\n\t\t\tqueue: false,\n\t\t\tduration: options.duration,\n\t\t\teasing: options.easing,\n\t\t\tcomplete: done\n\t\t} );\n} );\n\n\n/*!\n * jQuery UI Effects Size 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Size Effect\n//>>group: Effects\n//>>description: Resize an element to a specified width and height.\n//>>docs: http://api.jqueryui.com/size-effect/\n//>>demos: http://jqueryui.com/effect/\n\n\n\nvar effectsEffectSize = $.effects.define( \"size\", function( options, done ) {\n\n\t// Create element\n\tvar baseline, factor, temp,\n\t\telement = $( this ),\n\n\t\t// Copy for children\n\t\tcProps = [ \"fontSize\" ],\n\t\tvProps = [ \"borderTopWidth\", \"borderBottomWidth\", \"paddingTop\", \"paddingBottom\" ],\n\t\thProps = [ \"borderLeftWidth\", \"borderRightWidth\", \"paddingLeft\", \"paddingRight\" ],\n\n\t\t// Set options\n\t\tmode = options.mode,\n\t\trestore = mode !== \"effect\",\n\t\tscale = options.scale || \"both\",\n\t\torigin = options.origin || [ \"middle\", \"center\" ],\n\t\tposition = element.css( \"position\" ),\n\t\tpos = element.position(),\n\t\toriginal = $.effects.scaledDimensions( element ),\n\t\tfrom = options.from || original,\n\t\tto = options.to || $.effects.scaledDimensions( element, 0 );\n\n\t$.effects.createPlaceholder( element );\n\n\tif ( mode === \"show\" ) {\n\t\ttemp = from;\n\t\tfrom = to;\n\t\tto = temp;\n\t}\n\n\t// Set scaling factor\n\tfactor = {\n\t\tfrom: {\n\t\t\ty: from.height / original.height,\n\t\t\tx: from.width / original.width\n\t\t},\n\t\tto: {\n\t\t\ty: to.height / original.height,\n\t\t\tx: to.width / original.width\n\t\t}\n\t};\n\n\t// Scale the css box\n\tif ( scale === \"box\" || scale === \"both\" ) {\n\n\t\t// Vertical props scaling\n\t\tif ( factor.from.y !== factor.to.y ) {\n\t\t\tfrom = $.effects.setTransition( element, vProps, factor.from.y, from );\n\t\t\tto = $.effects.setTransition( element, vProps, factor.to.y, to );\n\t\t}\n\n\t\t// Horizontal props scaling\n\t\tif ( factor.from.x !== factor.to.x ) {\n\t\t\tfrom = $.effects.setTransition( element, hProps, factor.from.x, from );\n\t\t\tto = $.effects.setTransition( element, hProps, factor.to.x, to );\n\t\t}\n\t}\n\n\t// Scale the content\n\tif ( scale === \"content\" || scale === \"both\" ) {\n\n\t\t// Vertical props scaling\n\t\tif ( factor.from.y !== factor.to.y ) {\n\t\t\tfrom = $.effects.setTransition( element, cProps, factor.from.y, from );\n\t\t\tto = $.effects.setTransition( element, cProps, factor.to.y, to );\n\t\t}\n\t}\n\n\t// Adjust the position properties based on the provided origin points\n\tif ( origin ) {\n\t\tbaseline = $.effects.getBaseline( origin, original );\n\t\tfrom.top = ( original.outerHeight - from.outerHeight ) * baseline.y + pos.top;\n\t\tfrom.left = ( original.outerWidth - from.outerWidth ) * baseline.x + pos.left;\n\t\tto.top = ( original.outerHeight - to.outerHeight ) * baseline.y + pos.top;\n\t\tto.left = ( original.outerWidth - to.outerWidth ) * baseline.x + pos.left;\n\t}\n\telement.css( from );\n\n\t// Animate the children if desired\n\tif ( scale === \"content\" || scale === \"both\" ) {\n\n\t\tvProps = vProps.concat( [ \"marginTop\", \"marginBottom\" ] ).concat( cProps );\n\t\thProps = hProps.concat( [ \"marginLeft\", \"marginRight\" ] );\n\n\t\t// Only animate children with width attributes specified\n\t\t// TODO: is this right? should we include anything with css width specified as well\n\t\telement.find( \"*[width]\" ).each( function() {\n\t\t\tvar child = $( this ),\n\t\t\t\tchildOriginal = $.effects.scaledDimensions( child ),\n\t\t\t\tchildFrom = {\n\t\t\t\t\theight: childOriginal.height * factor.from.y,\n\t\t\t\t\twidth: childOriginal.width * factor.from.x,\n\t\t\t\t\touterHeight: childOriginal.outerHeight * factor.from.y,\n\t\t\t\t\touterWidth: childOriginal.outerWidth * factor.from.x\n\t\t\t\t},\n\t\t\t\tchildTo = {\n\t\t\t\t\theight: childOriginal.height * factor.to.y,\n\t\t\t\t\twidth: childOriginal.width * factor.to.x,\n\t\t\t\t\touterHeight: childOriginal.height * factor.to.y,\n\t\t\t\t\touterWidth: childOriginal.width * factor.to.x\n\t\t\t\t};\n\n\t\t\t// Vertical props scaling\n\t\t\tif ( factor.from.y !== factor.to.y ) {\n\t\t\t\tchildFrom = $.effects.setTransition( child, vProps, factor.from.y, childFrom );\n\t\t\t\tchildTo = $.effects.setTransition( child, vProps, factor.to.y, childTo );\n\t\t\t}\n\n\t\t\t// Horizontal props scaling\n\t\t\tif ( factor.from.x !== factor.to.x ) {\n\t\t\t\tchildFrom = $.effects.setTransition( child, hProps, factor.from.x, childFrom );\n\t\t\t\tchildTo = $.effects.setTransition( child, hProps, factor.to.x, childTo );\n\t\t\t}\n\n\t\t\tif ( restore ) {\n\t\t\t\t$.effects.saveStyle( child );\n\t\t\t}\n\n\t\t\t// Animate children\n\t\t\tchild.css( childFrom );\n\t\t\tchild.animate( childTo, options.duration, options.easing, function() {\n\n\t\t\t\t// Restore children\n\t\t\t\tif ( restore ) {\n\t\t\t\t\t$.effects.restoreStyle( child );\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Animate\n\telement.animate( to, {\n\t\tqueue: false,\n\t\tduration: options.duration,\n\t\teasing: options.easing,\n\t\tcomplete: function() {\n\n\t\t\tvar offset = element.offset();\n\n\t\t\tif ( to.opacity === 0 ) {\n\t\t\t\telement.css( \"opacity\", from.opacity );\n\t\t\t}\n\n\t\t\tif ( !restore ) {\n\t\t\t\telement\n\t\t\t\t\t.css( \"position\", position === \"static\" ? \"relative\" : position )\n\t\t\t\t\t.offset( offset );\n\n\t\t\t\t// Need to save style here so that automatic style restoration\n\t\t\t\t// doesn't restore to the original styles from before the animation.\n\t\t\t\t$.effects.saveStyle( element );\n\t\t\t}\n\n\t\t\tdone();\n\t\t}\n\t} );\n\n} );\n\n\n/*!\n * jQuery UI Effects Scale 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Scale Effect\n//>>group: Effects\n//>>description: Grows or shrinks an element and its content.\n//>>docs: http://api.jqueryui.com/scale-effect/\n//>>demos: http://jqueryui.com/effect/\n\n\n\nvar effectsEffectScale = $.effects.define( \"scale\", function( options, done ) {\n\n\t// Create element\n\tvar el = $( this ),\n\t\tmode = options.mode,\n\t\tpercent = parseInt( options.percent, 10 ) ||\n\t\t\t( parseInt( options.percent, 10 ) === 0 ? 0 : ( mode !== \"effect\" ? 0 : 100 ) ),\n\n\t\tnewOptions = $.extend( true, {\n\t\t\tfrom: $.effects.scaledDimensions( el ),\n\t\t\tto: $.effects.scaledDimensions( el, percent, options.direction || \"both\" ),\n\t\t\torigin: options.origin || [ \"middle\", \"center\" ]\n\t\t}, options );\n\n\t// Fade option to support puff\n\tif ( options.fade ) {\n\t\tnewOptions.from.opacity = 1;\n\t\tnewOptions.to.opacity = 0;\n\t}\n\n\t$.effects.effect.size.call( this, newOptions, done );\n} );\n\n\n/*!\n * jQuery UI Effects Puff 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Puff Effect\n//>>group: Effects\n//>>description: Creates a puff effect by scaling the element up and hiding it at the same time.\n//>>docs: http://api.jqueryui.com/puff-effect/\n//>>demos: http://jqueryui.com/effect/\n\n\n\nvar effectsEffectPuff = $.effects.define( \"puff\", \"hide\", function( options, done ) {\n\tvar newOptions = $.extend( true, {}, options, {\n\t\tfade: true,\n\t\tpercent: parseInt( options.percent, 10 ) || 150\n\t} );\n\n\t$.effects.effect.scale.call( this, newOptions, done );\n} );\n\n\n/*!\n * jQuery UI Effects Pulsate 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Pulsate Effect\n//>>group: Effects\n//>>description: Pulsates an element n times by changing the opacity to zero and back.\n//>>docs: http://api.jqueryui.com/pulsate-effect/\n//>>demos: http://jqueryui.com/effect/\n\n\n\nvar effectsEffectPulsate = $.effects.define( \"pulsate\", \"show\", function( options, done ) {\n\tvar element = $( this ),\n\t\tmode = options.mode,\n\t\tshow = mode === \"show\",\n\t\thide = mode === \"hide\",\n\t\tshowhide = show || hide,\n\n\t\t// Showing or hiding leaves off the \"last\" animation\n\t\tanims = ( ( options.times || 5 ) * 2 ) + ( showhide ? 1 : 0 ),\n\t\tduration = options.duration / anims,\n\t\tanimateTo = 0,\n\t\ti = 1,\n\t\tqueuelen = element.queue().length;\n\n\tif ( show || !element.is( \":visible\" ) ) {\n\t\telement.css( \"opacity\", 0 ).show();\n\t\tanimateTo = 1;\n\t}\n\n\t// Anims - 1 opacity \"toggles\"\n\tfor ( ; i < anims; i++ ) {\n\t\telement.animate( { opacity: animateTo }, duration, options.easing );\n\t\tanimateTo = 1 - animateTo;\n\t}\n\n\telement.animate( { opacity: animateTo }, duration, options.easing );\n\n\telement.queue( done );\n\n\t$.effects.unshift( element, queuelen, anims + 1 );\n} );\n\n\n/*!\n * jQuery UI Effects Shake 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Shake Effect\n//>>group: Effects\n//>>description: Shakes an element horizontally or vertically n times.\n//>>docs: http://api.jqueryui.com/shake-effect/\n//>>demos: http://jqueryui.com/effect/\n\n\n\nvar effectsEffectShake = $.effects.define( \"shake\", function( options, done ) {\n\n\tvar i = 1,\n\t\telement = $( this ),\n\t\tdirection = options.direction || \"left\",\n\t\tdistance = options.distance || 20,\n\t\ttimes = options.times || 3,\n\t\tanims = times * 2 + 1,\n\t\tspeed = Math.round( options.duration / anims ),\n\t\tref = ( direction === \"up\" || direction === \"down\" ) ? \"top\" : \"left\",\n\t\tpositiveMotion = ( direction === \"up\" || direction === \"left\" ),\n\t\tanimation = {},\n\t\tanimation1 = {},\n\t\tanimation2 = {},\n\n\t\tqueuelen = element.queue().length;\n\n\t$.effects.createPlaceholder( element );\n\n\t// Animation\n\tanimation[ ref ] = ( positiveMotion ? \"-=\" : \"+=\" ) + distance;\n\tanimation1[ ref ] = ( positiveMotion ? \"+=\" : \"-=\" ) + distance * 2;\n\tanimation2[ ref ] = ( positiveMotion ? \"-=\" : \"+=\" ) + distance * 2;\n\n\t// Animate\n\telement.animate( animation, speed, options.easing );\n\n\t// Shakes\n\tfor ( ; i < times; i++ ) {\n\t\telement\n\t\t\t.animate( animation1, speed, options.easing )\n\t\t\t.animate( animation2, speed, options.easing );\n\t}\n\n\telement\n\t\t.animate( animation1, speed, options.easing )\n\t\t.animate( animation, speed / 2, options.easing )\n\t\t.queue( done );\n\n\t$.effects.unshift( element, queuelen, anims + 1 );\n} );\n\n\n/*!\n * jQuery UI Effects Slide 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Slide Effect\n//>>group: Effects\n//>>description: Slides an element in and out of the viewport.\n//>>docs: http://api.jqueryui.com/slide-effect/\n//>>demos: http://jqueryui.com/effect/\n\n\n\nvar effectsEffectSlide = $.effects.define( \"slide\", \"show\", function( options, done ) {\n\tvar startClip, startRef,\n\t\telement = $( this ),\n\t\tmap = {\n\t\t\tup: [ \"bottom\", \"top\" ],\n\t\t\tdown: [ \"top\", \"bottom\" ],\n\t\t\tleft: [ \"right\", \"left\" ],\n\t\t\tright: [ \"left\", \"right\" ]\n\t\t},\n\t\tmode = options.mode,\n\t\tdirection = options.direction || \"left\",\n\t\tref = ( direction === \"up\" || direction === \"down\" ) ? \"top\" : \"left\",\n\t\tpositiveMotion = ( direction === \"up\" || direction === \"left\" ),\n\t\tdistance = options.distance ||\n\t\t\telement[ ref === \"top\" ? \"outerHeight\" : \"outerWidth\" ]( true ),\n\t\tanimation = {};\n\n\t$.effects.createPlaceholder( element );\n\n\tstartClip = element.cssClip();\n\tstartRef = element.position()[ ref ];\n\n\t// Define hide animation\n\tanimation[ ref ] = ( positiveMotion ? -1 : 1 ) * distance + startRef;\n\tanimation.clip = element.cssClip();\n\tanimation.clip[ map[ direction ][ 1 ] ] = animation.clip[ map[ direction ][ 0 ] ];\n\n\t// Reverse the animation if we're showing\n\tif ( mode === \"show\" ) {\n\t\telement.cssClip( animation.clip );\n\t\telement.css( ref, animation[ ref ] );\n\t\tanimation.clip = startClip;\n\t\tanimation[ ref ] = startRef;\n\t}\n\n\t// Actually animate\n\telement.animate( animation, {\n\t\tqueue: false,\n\t\tduration: options.duration,\n\t\teasing: options.easing,\n\t\tcomplete: done\n\t} );\n} );\n\n\n/*!\n * jQuery UI Effects Transfer 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Transfer Effect\n//>>group: Effects\n//>>description: Displays a transfer effect from one element to another.\n//>>docs: http://api.jqueryui.com/transfer-effect/\n//>>demos: http://jqueryui.com/effect/\n\n\n\nvar effect;\nif ( $.uiBackCompat !== false ) {\n\teffect = $.effects.define( \"transfer\", function( options, done ) {\n\t\t$( this ).transfer( options, done );\n\t} );\n}\nvar effectsEffectTransfer = effect;\n\n\n/*!\n * jQuery UI Focusable 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: :focusable Selector\n//>>group: Core\n//>>description: Selects elements which can be focused.\n//>>docs: http://api.jqueryui.com/focusable-selector/\n\n\n\n// Selectors\n$.ui.focusable = function( element, hasTabindex ) {\n\tvar map, mapName, img, focusableIfVisible, fieldset,\n\t\tnodeName = element.nodeName.toLowerCase();\n\n\tif ( \"area\" === nodeName ) {\n\t\tmap = element.parentNode;\n\t\tmapName = map.name;\n\t\tif ( !element.href || !mapName || map.nodeName.toLowerCase() !== \"map\" ) {\n\t\t\treturn false;\n\t\t}\n\t\timg = $( \"img[usemap='#\" + mapName + \"']\" );\n\t\treturn img.length > 0 && img.is( \":visible\" );\n\t}\n\n\tif ( /^(input|select|textarea|button|object)$/.test( nodeName ) ) {\n\t\tfocusableIfVisible = !element.disabled;\n\n\t\tif ( focusableIfVisible ) {\n\n\t\t\t// Form controls within a disabled fieldset are disabled.\n\t\t\t// However, controls within the fieldset's legend do not get disabled.\n\t\t\t// Since controls generally aren't placed inside legends, we skip\n\t\t\t// this portion of the check.\n\t\t\tfieldset = $( element ).closest( \"fieldset\" )[ 0 ];\n\t\t\tif ( fieldset ) {\n\t\t\t\tfocusableIfVisible = !fieldset.disabled;\n\t\t\t}\n\t\t}\n\t} else if ( \"a\" === nodeName ) {\n\t\tfocusableIfVisible = element.href || hasTabindex;\n\t} else {\n\t\tfocusableIfVisible = hasTabindex;\n\t}\n\n\treturn focusableIfVisible && $( element ).is( \":visible\" ) && visible( $( element ) );\n};\n\n// Support: IE 8 only\n// IE 8 doesn't resolve inherit to visible/hidden for computed values\nfunction visible( element ) {\n\tvar visibility = element.css( \"visibility\" );\n\twhile ( visibility === \"inherit\" ) {\n\t\telement = element.parent();\n\t\tvisibility = element.css( \"visibility\" );\n\t}\n\treturn visibility !== \"hidden\";\n}\n\n$.extend( $.expr[ \":\" ], {\n\tfocusable: function( element ) {\n\t\treturn $.ui.focusable( element, $.attr( element, \"tabindex\" ) != null );\n\t}\n} );\n\nvar focusable = $.ui.focusable;\n\n\n\n\n// Support: IE8 Only\n// IE8 does not support the form attribute and when it is supplied. It overwrites the form prop\n// with a string, so we need to find the proper form.\nvar form = $.fn.form = function() {\n\treturn typeof this[ 0 ].form === \"string\" ? this.closest( \"form\" ) : $( this[ 0 ].form );\n};\n\n\n/*!\n * jQuery UI Form Reset Mixin 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Form Reset Mixin\n//>>group: Core\n//>>description: Refresh input widgets when their form is reset\n//>>docs: http://api.jqueryui.com/form-reset-mixin/\n\n\n\nvar formResetMixin = $.ui.formResetMixin = {\n\t_formResetHandler: function() {\n\t\tvar form = $( this );\n\n\t\t// Wait for the form reset to actually happen before refreshing\n\t\tsetTimeout( function() {\n\t\t\tvar instances = form.data( \"ui-form-reset-instances\" );\n\t\t\t$.each( instances, function() {\n\t\t\t\tthis.refresh();\n\t\t\t} );\n\t\t} );\n\t},\n\n\t_bindFormResetHandler: function() {\n\t\tthis.form = this.element.form();\n\t\tif ( !this.form.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar instances = this.form.data( \"ui-form-reset-instances\" ) || [];\n\t\tif ( !instances.length ) {\n\n\t\t\t// We don't use _on() here because we use a single event handler per form\n\t\t\tthis.form.on( \"reset.ui-form-reset\", this._formResetHandler );\n\t\t}\n\t\tinstances.push( this );\n\t\tthis.form.data( \"ui-form-reset-instances\", instances );\n\t},\n\n\t_unbindFormResetHandler: function() {\n\t\tif ( !this.form.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar instances = this.form.data( \"ui-form-reset-instances\" );\n\t\tinstances.splice( $.inArray( this, instances ), 1 );\n\t\tif ( instances.length ) {\n\t\t\tthis.form.data( \"ui-form-reset-instances\", instances );\n\t\t} else {\n\t\t\tthis.form\n\t\t\t\t.removeData( \"ui-form-reset-instances\" )\n\t\t\t\t.off( \"reset.ui-form-reset\" );\n\t\t}\n\t}\n};\n\n\n/*!\n * jQuery UI Support for jQuery core 1.7.x 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n */\n\n//>>label: jQuery 1.7 Support\n//>>group: Core\n//>>description: Support version 1.7.x of jQuery core\n\n\n\n// Support: jQuery 1.7 only\n// Not a great way to check versions, but since we only support 1.7+ and only\n// need to detect <1.8, this is a simple check that should suffice. Checking\n// for \"1.7.\" would be a bit safer, but the version string is 1.7, not 1.7.0\n// and we'll never reach 1.70.0 (if we do, we certainly won't be supporting\n// 1.7 anymore). See #11197 for why we're not using feature detection.\nif ( $.fn.jquery.substring( 0, 3 ) === \"1.7\" ) {\n\n\t// Setters for .innerWidth(), .innerHeight(), .outerWidth(), .outerHeight()\n\t// Unlike jQuery Core 1.8+, these only support numeric values to set the\n\t// dimensions in pixels\n\t$.each( [ \"Width\", \"Height\" ], function( i, name ) {\n\t\tvar side = name === \"Width\" ? [ \"Left\", \"Right\" ] : [ \"Top\", \"Bottom\" ],\n\t\t\ttype = name.toLowerCase(),\n\t\t\torig = {\n\t\t\t\tinnerWidth: $.fn.innerWidth,\n\t\t\t\tinnerHeight: $.fn.innerHeight,\n\t\t\t\touterWidth: $.fn.outerWidth,\n\t\t\t\touterHeight: $.fn.outerHeight\n\t\t\t};\n\n\t\tfunction reduce( elem, size, border, margin ) {\n\t\t\t$.each( side, function() {\n\t\t\t\tsize -= parseFloat( $.css( elem, \"padding\" + this ) ) || 0;\n\t\t\t\tif ( border ) {\n\t\t\t\t\tsize -= parseFloat( $.css( elem, \"border\" + this + \"Width\" ) ) || 0;\n\t\t\t\t}\n\t\t\t\tif ( margin ) {\n\t\t\t\t\tsize -= parseFloat( $.css( elem, \"margin\" + this ) ) || 0;\n\t\t\t\t}\n\t\t\t} );\n\t\t\treturn size;\n\t\t}\n\n\t\t$.fn[ \"inner\" + name ] = function( size ) {\n\t\t\tif ( size === undefined ) {\n\t\t\t\treturn orig[ \"inner\" + name ].call( this );\n\t\t\t}\n\n\t\t\treturn this.each( function() {\n\t\t\t\t$( this ).css( type, reduce( this, size ) + \"px\" );\n\t\t\t} );\n\t\t};\n\n\t\t$.fn[ \"outer\" + name ] = function( size, margin ) {\n\t\t\tif ( typeof size !== \"number\" ) {\n\t\t\t\treturn orig[ \"outer\" + name ].call( this, size );\n\t\t\t}\n\n\t\t\treturn this.each( function() {\n\t\t\t\t$( this ).css( type, reduce( this, size, true, margin ) + \"px\" );\n\t\t\t} );\n\t\t};\n\t} );\n\n\t$.fn.addBack = function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t};\n}\n\n;\n/*!\n * jQuery UI Keycode 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Keycode\n//>>group: Core\n//>>description: Provide keycodes as keynames\n//>>docs: http://api.jqueryui.com/jQuery.ui.keyCode/\n\n\nvar keycode = $.ui.keyCode = {\n\tBACKSPACE: 8,\n\tCOMMA: 188,\n\tDELETE: 46,\n\tDOWN: 40,\n\tEND: 35,\n\tENTER: 13,\n\tESCAPE: 27,\n\tHOME: 36,\n\tLEFT: 37,\n\tPAGE_DOWN: 34,\n\tPAGE_UP: 33,\n\tPERIOD: 190,\n\tRIGHT: 39,\n\tSPACE: 32,\n\tTAB: 9,\n\tUP: 38\n};\n\n\n\n\n// Internal use only\nvar escapeSelector = $.ui.escapeSelector = ( function() {\n\tvar selectorEscape = /([!\"#$%&'()*+,./:;<=>?@[\\]^`{|}~])/g;\n\treturn function( selector ) {\n\t\treturn selector.replace( selectorEscape, \"\\\\$1\" );\n\t};\n} )();\n\n\n/*!\n * jQuery UI Labels 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: labels\n//>>group: Core\n//>>description: Find all the labels associated with a given input\n//>>docs: http://api.jqueryui.com/labels/\n\n\n\nvar labels = $.fn.labels = function() {\n\tvar ancestor, selector, id, labels, ancestors;\n\n\t// Check control.labels first\n\tif ( this[ 0 ].labels && this[ 0 ].labels.length ) {\n\t\treturn this.pushStack( this[ 0 ].labels );\n\t}\n\n\t// Support: IE <= 11, FF <= 37, Android <= 2.3 only\n\t// Above browsers do not support control.labels. Everything below is to support them\n\t// as well as document fragments. control.labels does not work on document fragments\n\tlabels = this.eq( 0 ).parents( \"label\" );\n\n\t// Look for the label based on the id\n\tid = this.attr( \"id\" );\n\tif ( id ) {\n\n\t\t// We don't search against the document in case the element\n\t\t// is disconnected from the DOM\n\t\tancestor = this.eq( 0 ).parents().last();\n\n\t\t// Get a full set of top level ancestors\n\t\tancestors = ancestor.add( ancestor.length ? ancestor.siblings() : this.siblings() );\n\n\t\t// Create a selector for the label based on the id\n\t\tselector = \"label[for='\" + $.ui.escapeSelector( id ) + \"']\";\n\n\t\tlabels = labels.add( ancestors.find( selector ).addBack( selector ) );\n\n\t}\n\n\t// Return whatever we have found for labels\n\treturn this.pushStack( labels );\n};\n\n\n/*!\n * jQuery UI Scroll Parent 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: scrollParent\n//>>group: Core\n//>>description: Get the closest ancestor element that is scrollable.\n//>>docs: http://api.jqueryui.com/scrollParent/\n\n\n\nvar scrollParent = $.fn.scrollParent = function( includeHidden ) {\n\tvar position = this.css( \"position\" ),\n\t\texcludeStaticParent = position === \"absolute\",\n\t\toverflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/,\n\t\tscrollParent = this.parents().filter( function() {\n\t\t\tvar parent = $( this );\n\t\t\tif ( excludeStaticParent && parent.css( \"position\" ) === \"static\" ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn overflowRegex.test( parent.css( \"overflow\" ) + parent.css( \"overflow-y\" ) +\n\t\t\t\tparent.css( \"overflow-x\" ) );\n\t\t} ).eq( 0 );\n\n\treturn position === \"fixed\" || !scrollParent.length ?\n\t\t$( this[ 0 ].ownerDocument || document ) :\n\t\tscrollParent;\n};\n\n\n/*!\n * jQuery UI Tabbable 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: :tabbable Selector\n//>>group: Core\n//>>description: Selects elements which can be tabbed to.\n//>>docs: http://api.jqueryui.com/tabbable-selector/\n\n\n\nvar tabbable = $.extend( $.expr[ \":\" ], {\n\ttabbable: function( element ) {\n\t\tvar tabIndex = $.attr( element, \"tabindex\" ),\n\t\t\thasTabindex = tabIndex != null;\n\t\treturn ( !hasTabindex || tabIndex >= 0 ) && $.ui.focusable( element, hasTabindex );\n\t}\n} );\n\n\n/*!\n * jQuery UI Unique ID 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: uniqueId\n//>>group: Core\n//>>description: Functions to generate and remove uniqueId's\n//>>docs: http://api.jqueryui.com/uniqueId/\n\n\n\nvar uniqueId = $.fn.extend( {\n\tuniqueId: ( function() {\n\t\tvar uuid = 0;\n\n\t\treturn function() {\n\t\t\treturn this.each( function() {\n\t\t\t\tif ( !this.id ) {\n\t\t\t\t\tthis.id = \"ui-id-\" + ( ++uuid );\n\t\t\t\t}\n\t\t\t} );\n\t\t};\n\t} )(),\n\n\tremoveUniqueId: function() {\n\t\treturn this.each( function() {\n\t\t\tif ( /^ui-id-\\d+$/.test( this.id ) ) {\n\t\t\t\t$( this ).removeAttr( \"id\" );\n\t\t\t}\n\t\t} );\n\t}\n} );\n\n\n/*!\n * jQuery UI Accordion 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Accordion\n//>>group: Widgets\n// jscs:disable maximumLineLength\n//>>description: Displays collapsible content panels for presenting information in a limited amount of space.\n// jscs:enable maximumLineLength\n//>>docs: http://api.jqueryui.com/accordion/\n//>>demos: http://jqueryui.com/accordion/\n//>>css.structure: ../../themes/base/core.css\n//>>css.structure: ../../themes/base/accordion.css\n//>>css.theme: ../../themes/base/theme.css\n\n\n\nvar widgetsAccordion = $.widget( \"ui.accordion\", {\n\tversion: \"1.12.1\",\n\toptions: {\n\t\tactive: 0,\n\t\tanimate: {},\n\t\tclasses: {\n\t\t\t\"ui-accordion-header\": \"ui-corner-top\",\n\t\t\t\"ui-accordion-header-collapsed\": \"ui-corner-all\",\n\t\t\t\"ui-accordion-content\": \"ui-corner-bottom\"\n\t\t},\n\t\tcollapsible: false,\n\t\tevent: \"click\",\n\t\theader: \"> li > :first-child, > :not(li):even\",\n\t\theightStyle: \"auto\",\n\t\ticons: {\n\t\t\tactiveHeader: \"ui-icon-triangle-1-s\",\n\t\t\theader: \"ui-icon-triangle-1-e\"\n\t\t},\n\n\t\t// Callbacks\n\t\tactivate: null,\n\t\tbeforeActivate: null\n\t},\n\n\thideProps: {\n\t\tborderTopWidth: \"hide\",\n\t\tborderBottomWidth: \"hide\",\n\t\tpaddingTop: \"hide\",\n\t\tpaddingBottom: \"hide\",\n\t\theight: \"hide\"\n\t},\n\n\tshowProps: {\n\t\tborderTopWidth: \"show\",\n\t\tborderBottomWidth: \"show\",\n\t\tpaddingTop: \"show\",\n\t\tpaddingBottom: \"show\",\n\t\theight: \"show\"\n\t},\n\n\t_create: function() {\n\t\tvar options = this.options;\n\n\t\tthis.prevShow = this.prevHide = $();\n\t\tthis._addClass( \"ui-accordion\", \"ui-widget ui-helper-reset\" );\n\t\tthis.element.attr( \"role\", \"tablist\" );\n\n\t\t// Don't allow collapsible: false and active: false / null\n\t\tif ( !options.collapsible && ( options.active === false || options.active == null ) ) {\n\t\t\toptions.active = 0;\n\t\t}\n\n\t\tthis._processPanels();\n\n\t\t// handle negative values\n\t\tif ( options.active < 0 ) {\n\t\t\toptions.active += this.headers.length;\n\t\t}\n\t\tthis._refresh();\n\t},\n\n\t_getCreateEventData: function() {\n\t\treturn {\n\t\t\theader: this.active,\n\t\t\tpanel: !this.active.length ? $() : this.active.next()\n\t\t};\n\t},\n\n\t_createIcons: function() {\n\t\tvar icon, children,\n\t\t\ticons = this.options.icons;\n\n\t\tif ( icons ) {\n\t\t\ticon = $( \"<span>\" );\n\t\t\tthis._addClass( icon, \"ui-accordion-header-icon\", \"ui-icon \" + icons.header );\n\t\t\ticon.prependTo( this.headers );\n\t\t\tchildren = this.active.children( \".ui-accordion-header-icon\" );\n\t\t\tthis._removeClass( children, icons.header )\n\t\t\t\t._addClass( children, null, icons.activeHeader )\n\t\t\t\t._addClass( this.headers, \"ui-accordion-icons\" );\n\t\t}\n\t},\n\n\t_destroyIcons: function() {\n\t\tthis._removeClass( this.headers, \"ui-accordion-icons\" );\n\t\tthis.headers.children( \".ui-accordion-header-icon\" ).remove();\n\t},\n\n\t_destroy: function() {\n\t\tvar contents;\n\n\t\t// Clean up main element\n\t\tthis.element.removeAttr( \"role\" );\n\n\t\t// Clean up headers\n\t\tthis.headers\n\t\t\t.removeAttr( \"role aria-expanded aria-selected aria-controls tabIndex\" )\n\t\t\t.removeUniqueId();\n\n\t\tthis._destroyIcons();\n\n\t\t// Clean up content panels\n\t\tcontents = this.headers.next()\n\t\t\t.css( \"display\", \"\" )\n\t\t\t.removeAttr( \"role aria-hidden aria-labelledby\" )\n\t\t\t.removeUniqueId();\n\n\t\tif ( this.options.heightStyle !== \"content\" ) {\n\t\t\tcontents.css( \"height\", \"\" );\n\t\t}\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"active\" ) {\n\n\t\t\t// _activate() will handle invalid values and update this.options\n\t\t\tthis._activate( value );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key === \"event\" ) {\n\t\t\tif ( this.options.event ) {\n\t\t\t\tthis._off( this.headers, this.options.event );\n\t\t\t}\n\t\t\tthis._setupEvents( value );\n\t\t}\n\n\t\tthis._super( key, value );\n\n\t\t// Setting collapsible: false while collapsed; open first panel\n\t\tif ( key === \"collapsible\" && !value && this.options.active === false ) {\n\t\t\tthis._activate( 0 );\n\t\t}\n\n\t\tif ( key === \"icons\" ) {\n\t\t\tthis._destroyIcons();\n\t\t\tif ( value ) {\n\t\t\t\tthis._createIcons();\n\t\t\t}\n\t\t}\n\t},\n\n\t_setOptionDisabled: function( value ) {\n\t\tthis._super( value );\n\n\t\tthis.element.attr( \"aria-disabled\", value );\n\n\t\t// Support: IE8 Only\n\t\t// #5332 / #6059 - opacity doesn't cascade to positioned elements in IE\n\t\t// so we need to add the disabled class to the headers and panels\n\t\tthis._toggleClass( null, \"ui-state-disabled\", !!value );\n\t\tthis._toggleClass( this.headers.add( this.headers.next() ), null, \"ui-state-disabled\",\n\t\t\t!!value );\n\t},\n\n\t_keydown: function( event ) {\n\t\tif ( event.altKey || event.ctrlKey ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar keyCode = $.ui.keyCode,\n\t\t\tlength = this.headers.length,\n\t\t\tcurrentIndex = this.headers.index( event.target ),\n\t\t\ttoFocus = false;\n\n\t\tswitch ( event.keyCode ) {\n\t\tcase keyCode.RIGHT:\n\t\tcase keyCode.DOWN:\n\t\t\ttoFocus = this.headers[ ( currentIndex + 1 ) % length ];\n\t\t\tbreak;\n\t\tcase keyCode.LEFT:\n\t\tcase keyCode.UP:\n\t\t\ttoFocus = this.headers[ ( currentIndex - 1 + length ) % length ];\n\t\t\tbreak;\n\t\tcase keyCode.SPACE:\n\t\tcase keyCode.ENTER:\n\t\t\tthis._eventHandler( event );\n\t\t\tbreak;\n\t\tcase keyCode.HOME:\n\t\t\ttoFocus = this.headers[ 0 ];\n\t\t\tbreak;\n\t\tcase keyCode.END:\n\t\t\ttoFocus = this.headers[ length - 1 ];\n\t\t\tbreak;\n\t\t}\n\n\t\tif ( toFocus ) {\n\t\t\t$( event.target ).attr( \"tabIndex\", -1 );\n\t\t\t$( toFocus ).attr( \"tabIndex\", 0 );\n\t\t\t$( toFocus ).trigger( \"focus\" );\n\t\t\tevent.preventDefault();\n\t\t}\n\t},\n\n\t_panelKeyDown: function( event ) {\n\t\tif ( event.keyCode === $.ui.keyCode.UP && event.ctrlKey ) {\n\t\t\t$( event.currentTarget ).prev().trigger( \"focus\" );\n\t\t}\n\t},\n\n\trefresh: function() {\n\t\tvar options = this.options;\n\t\tthis._processPanels();\n\n\t\t// Was collapsed or no panel\n\t\tif ( ( options.active === false && options.collapsible === true ) ||\n\t\t\t\t!this.headers.length ) {\n\t\t\toptions.active = false;\n\t\t\tthis.active = $();\n\n\t\t// active false only when collapsible is true\n\t\t} else if ( options.active === false ) {\n\t\t\tthis._activate( 0 );\n\n\t\t// was active, but active panel is gone\n\t\t} else if ( this.active.length && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) {\n\n\t\t\t// all remaining panel are disabled\n\t\t\tif ( this.headers.length === this.headers.find( \".ui-state-disabled\" ).length ) {\n\t\t\t\toptions.active = false;\n\t\t\t\tthis.active = $();\n\n\t\t\t// activate previous panel\n\t\t\t} else {\n\t\t\t\tthis._activate( Math.max( 0, options.active - 1 ) );\n\t\t\t}\n\n\t\t// was active, active panel still exists\n\t\t} else {\n\n\t\t\t// make sure active index is correct\n\t\t\toptions.active = this.headers.index( this.active );\n\t\t}\n\n\t\tthis._destroyIcons();\n\n\t\tthis._refresh();\n\t},\n\n\t_processPanels: function() {\n\t\tvar prevHeaders = this.headers,\n\t\t\tprevPanels = this.panels;\n\n\t\tthis.headers = this.element.find( this.options.header );\n\t\tthis._addClass( this.headers, \"ui-accordion-header ui-accordion-header-collapsed\",\n\t\t\t\"ui-state-default\" );\n\n\t\tthis.panels = this.headers.next().filter( \":not(.ui-accordion-content-active)\" ).hide();\n\t\tthis._addClass( this.panels, \"ui-accordion-content\", \"ui-helper-reset ui-widget-content\" );\n\n\t\t// Avoid memory leaks (#10056)\n\t\tif ( prevPanels ) {\n\t\t\tthis._off( prevHeaders.not( this.headers ) );\n\t\t\tthis._off( prevPanels.not( this.panels ) );\n\t\t}\n\t},\n\n\t_refresh: function() {\n\t\tvar maxHeight,\n\t\t\toptions = this.options,\n\t\t\theightStyle = options.heightStyle,\n\t\t\tparent = this.element.parent();\n\n\t\tthis.active = this._findActive( options.active );\n\t\tthis._addClass( this.active, \"ui-accordion-header-active\", \"ui-state-active\" )\n\t\t\t._removeClass( this.active, \"ui-accordion-header-collapsed\" );\n\t\tthis._addClass( this.active.next(), \"ui-accordion-content-active\" );\n\t\tthis.active.next().show();\n\n\t\tthis.headers\n\t\t\t.attr( \"role\", \"tab\" )\n\t\t\t.each( function() {\n\t\t\t\tvar header = $( this ),\n\t\t\t\t\theaderId = header.uniqueId().attr( \"id\" ),\n\t\t\t\t\tpanel = header.next(),\n\t\t\t\t\tpanelId = panel.uniqueId().attr( \"id\" );\n\t\t\t\theader.attr( \"aria-controls\", panelId );\n\t\t\t\tpanel.attr( \"aria-labelledby\", headerId );\n\t\t\t} )\n\t\t\t.next()\n\t\t\t\t.attr( \"role\", \"tabpanel\" );\n\n\t\tthis.headers\n\t\t\t.not( this.active )\n\t\t\t\t.attr( {\n\t\t\t\t\t\"aria-selected\": \"false\",\n\t\t\t\t\t\"aria-expanded\": \"false\",\n\t\t\t\t\ttabIndex: -1\n\t\t\t\t} )\n\t\t\t\t.next()\n\t\t\t\t\t.attr( {\n\t\t\t\t\t\t\"aria-hidden\": \"true\"\n\t\t\t\t\t} )\n\t\t\t\t\t.hide();\n\n\t\t// Make sure at least one header is in the tab order\n\t\tif ( !this.active.length ) {\n\t\t\tthis.headers.eq( 0 ).attr( \"tabIndex\", 0 );\n\t\t} else {\n\t\t\tthis.active.attr( {\n\t\t\t\t\"aria-selected\": \"true\",\n\t\t\t\t\"aria-expanded\": \"true\",\n\t\t\t\ttabIndex: 0\n\t\t\t} )\n\t\t\t\t.next()\n\t\t\t\t\t.attr( {\n\t\t\t\t\t\t\"aria-hidden\": \"false\"\n\t\t\t\t\t} );\n\t\t}\n\n\t\tthis._createIcons();\n\n\t\tthis._setupEvents( options.event );\n\n\t\tif ( heightStyle === \"fill\" ) {\n\t\t\tmaxHeight = parent.height();\n\t\t\tthis.element.siblings( \":visible\" ).each( function() {\n\t\t\t\tvar elem = $( this ),\n\t\t\t\t\tposition = elem.css( \"position\" );\n\n\t\t\t\tif ( position === \"absolute\" || position === \"fixed\" ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tmaxHeight -= elem.outerHeight( true );\n\t\t\t} );\n\n\t\t\tthis.headers.each( function() {\n\t\t\t\tmaxHeight -= $( this ).outerHeight( true );\n\t\t\t} );\n\n\t\t\tthis.headers.next()\n\t\t\t\t.each( function() {\n\t\t\t\t\t$( this ).height( Math.max( 0, maxHeight -\n\t\t\t\t\t\t$( this ).innerHeight() + $( this ).height() ) );\n\t\t\t\t} )\n\t\t\t\t.css( \"overflow\", \"auto\" );\n\t\t} else if ( heightStyle === \"auto\" ) {\n\t\t\tmaxHeight = 0;\n\t\t\tthis.headers.next()\n\t\t\t\t.each( function() {\n\t\t\t\t\tvar isVisible = $( this ).is( \":visible\" );\n\t\t\t\t\tif ( !isVisible ) {\n\t\t\t\t\t\t$( this ).show();\n\t\t\t\t\t}\n\t\t\t\t\tmaxHeight = Math.max( maxHeight, $( this ).css( \"height\", \"\" ).height() );\n\t\t\t\t\tif ( !isVisible ) {\n\t\t\t\t\t\t$( this ).hide();\n\t\t\t\t\t}\n\t\t\t\t} )\n\t\t\t\t.height( maxHeight );\n\t\t}\n\t},\n\n\t_activate: function( index ) {\n\t\tvar active = this._findActive( index )[ 0 ];\n\n\t\t// Trying to activate the already active panel\n\t\tif ( active === this.active[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Trying to collapse, simulate a click on the currently active header\n\t\tactive = active || this.active[ 0 ];\n\n\t\tthis._eventHandler( {\n\t\t\ttarget: active,\n\t\t\tcurrentTarget: active,\n\t\t\tpreventDefault: $.noop\n\t\t} );\n\t},\n\n\t_findActive: function( selector ) {\n\t\treturn typeof selector === \"number\" ? this.headers.eq( selector ) : $();\n\t},\n\n\t_setupEvents: function( event ) {\n\t\tvar events = {\n\t\t\tkeydown: \"_keydown\"\n\t\t};\n\t\tif ( event ) {\n\t\t\t$.each( event.split( \" \" ), function( index, eventName ) {\n\t\t\t\tevents[ eventName ] = \"_eventHandler\";\n\t\t\t} );\n\t\t}\n\n\t\tthis._off( this.headers.add( this.headers.next() ) );\n\t\tthis._on( this.headers, events );\n\t\tthis._on( this.headers.next(), { keydown: \"_panelKeyDown\" } );\n\t\tthis._hoverable( this.headers );\n\t\tthis._focusable( this.headers );\n\t},\n\n\t_eventHandler: function( event ) {\n\t\tvar activeChildren, clickedChildren,\n\t\t\toptions = this.options,\n\t\t\tactive = this.active,\n\t\t\tclicked = $( event.currentTarget ),\n\t\t\tclickedIsActive = clicked[ 0 ] === active[ 0 ],\n\t\t\tcollapsing = clickedIsActive && options.collapsible,\n\t\t\ttoShow = collapsing ? $() : clicked.next(),\n\t\t\ttoHide = active.next(),\n\t\t\teventData = {\n\t\t\t\toldHeader: active,\n\t\t\t\toldPanel: toHide,\n\t\t\t\tnewHeader: collapsing ? $() : clicked,\n\t\t\t\tnewPanel: toShow\n\t\t\t};\n\n\t\tevent.preventDefault();\n\n\t\tif (\n\n\t\t\t\t// click on active header, but not collapsible\n\t\t\t\t( clickedIsActive && !options.collapsible ) ||\n\n\t\t\t\t// allow canceling activation\n\t\t\t\t( this._trigger( \"beforeActivate\", event, eventData ) === false ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\toptions.active = collapsing ? false : this.headers.index( clicked );\n\n\t\t// When the call to ._toggle() comes after the class changes\n\t\t// it causes a very odd bug in IE 8 (see #6720)\n\t\tthis.active = clickedIsActive ? $() : clicked;\n\t\tthis._toggle( eventData );\n\n\t\t// Switch classes\n\t\t// corner classes on the previously active header stay after the animation\n\t\tthis._removeClass( active, \"ui-accordion-header-active\", \"ui-state-active\" );\n\t\tif ( options.icons ) {\n\t\t\tactiveChildren = active.children( \".ui-accordion-header-icon\" );\n\t\t\tthis._removeClass( activeChildren, null, options.icons.activeHeader )\n\t\t\t\t._addClass( activeChildren, null, options.icons.header );\n\t\t}\n\n\t\tif ( !clickedIsActive ) {\n\t\t\tthis._removeClass( clicked, \"ui-accordion-header-collapsed\" )\n\t\t\t\t._addClass( clicked, \"ui-accordion-header-active\", \"ui-state-active\" );\n\t\t\tif ( options.icons ) {\n\t\t\t\tclickedChildren = clicked.children( \".ui-accordion-header-icon\" );\n\t\t\t\tthis._removeClass( clickedChildren, null, options.icons.header )\n\t\t\t\t\t._addClass( clickedChildren, null, options.icons.activeHeader );\n\t\t\t}\n\n\t\t\tthis._addClass( clicked.next(), \"ui-accordion-content-active\" );\n\t\t}\n\t},\n\n\t_toggle: function( data ) {\n\t\tvar toShow = data.newPanel,\n\t\t\ttoHide = this.prevShow.length ? this.prevShow : data.oldPanel;\n\n\t\t// Handle activating a panel during the animation for another activation\n\t\tthis.prevShow.add( this.prevHide ).stop( true, true );\n\t\tthis.prevShow = toShow;\n\t\tthis.prevHide = toHide;\n\n\t\tif ( this.options.animate ) {\n\t\t\tthis._animate( toShow, toHide, data );\n\t\t} else {\n\t\t\ttoHide.hide();\n\t\t\ttoShow.show();\n\t\t\tthis._toggleComplete( data );\n\t\t}\n\n\t\ttoHide.attr( {\n\t\t\t\"aria-hidden\": \"true\"\n\t\t} );\n\t\ttoHide.prev().attr( {\n\t\t\t\"aria-selected\": \"false\",\n\t\t\t\"aria-expanded\": \"false\"\n\t\t} );\n\n\t\t// if we're switching panels, remove the old header from the tab order\n\t\t// if we're opening from collapsed state, remove the previous header from the tab order\n\t\t// if we're collapsing, then keep the collapsing header in the tab order\n\t\tif ( toShow.length && toHide.length ) {\n\t\t\ttoHide.prev().attr( {\n\t\t\t\t\"tabIndex\": -1,\n\t\t\t\t\"aria-expanded\": \"false\"\n\t\t\t} );\n\t\t} else if ( toShow.length ) {\n\t\t\tthis.headers.filter( function() {\n\t\t\t\treturn parseInt( $( this ).attr( \"tabIndex\" ), 10 ) === 0;\n\t\t\t} )\n\t\t\t\t.attr( \"tabIndex\", -1 );\n\t\t}\n\n\t\ttoShow\n\t\t\t.attr( \"aria-hidden\", \"false\" )\n\t\t\t.prev()\n\t\t\t\t.attr( {\n\t\t\t\t\t\"aria-selected\": \"true\",\n\t\t\t\t\t\"aria-expanded\": \"true\",\n\t\t\t\t\ttabIndex: 0\n\t\t\t\t} );\n\t},\n\n\t_animate: function( toShow, toHide, data ) {\n\t\tvar total, easing, duration,\n\t\t\tthat = this,\n\t\t\tadjust = 0,\n\t\t\tboxSizing = toShow.css( \"box-sizing\" ),\n\t\t\tdown = toShow.length &&\n\t\t\t\t( !toHide.length || ( toShow.index() < toHide.index() ) ),\n\t\t\tanimate = this.options.animate || {},\n\t\t\toptions = down && animate.down || animate,\n\t\t\tcomplete = function() {\n\t\t\t\tthat._toggleComplete( data );\n\t\t\t};\n\n\t\tif ( typeof options === \"number\" ) {\n\t\t\tduration = options;\n\t\t}\n\t\tif ( typeof options === \"string\" ) {\n\t\t\teasing = options;\n\t\t}\n\n\t\t// fall back from options to animation in case of partial down settings\n\t\teasing = easing || options.easing || animate.easing;\n\t\tduration = duration || options.duration || animate.duration;\n\n\t\tif ( !toHide.length ) {\n\t\t\treturn toShow.animate( this.showProps, duration, easing, complete );\n\t\t}\n\t\tif ( !toShow.length ) {\n\t\t\treturn toHide.animate( this.hideProps, duration, easing, complete );\n\t\t}\n\n\t\ttotal = toShow.show().outerHeight();\n\t\ttoHide.animate( this.hideProps, {\n\t\t\tduration: duration,\n\t\t\teasing: easing,\n\t\t\tstep: function( now, fx ) {\n\t\t\t\tfx.now = Math.round( now );\n\t\t\t}\n\t\t} );\n\t\ttoShow\n\t\t\t.hide()\n\t\t\t.animate( this.showProps, {\n\t\t\t\tduration: duration,\n\t\t\t\teasing: easing,\n\t\t\t\tcomplete: complete,\n\t\t\t\tstep: function( now, fx ) {\n\t\t\t\t\tfx.now = Math.round( now );\n\t\t\t\t\tif ( fx.prop !== \"height\" ) {\n\t\t\t\t\t\tif ( boxSizing === \"content-box\" ) {\n\t\t\t\t\t\t\tadjust += fx.now;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if ( that.options.heightStyle !== \"content\" ) {\n\t\t\t\t\t\tfx.now = Math.round( total - toHide.outerHeight() - adjust );\n\t\t\t\t\t\tadjust = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t},\n\n\t_toggleComplete: function( data ) {\n\t\tvar toHide = data.oldPanel,\n\t\t\tprev = toHide.prev();\n\n\t\tthis._removeClass( toHide, \"ui-accordion-content-active\" );\n\t\tthis._removeClass( prev, \"ui-accordion-header-active\" )\n\t\t\t._addClass( prev, \"ui-accordion-header-collapsed\" );\n\n\t\t// Work around for rendering bug in IE (#5421)\n\t\tif ( toHide.length ) {\n\t\t\ttoHide.parent()[ 0 ].className = toHide.parent()[ 0 ].className;\n\t\t}\n\t\tthis._trigger( \"activate\", null, data );\n\t}\n} );\n\n\n\nvar safeActiveElement = $.ui.safeActiveElement = function( document ) {\n\tvar activeElement;\n\n\t// Support: IE 9 only\n\t// IE9 throws an \"Unspecified error\" accessing document.activeElement from an <iframe>\n\ttry {\n\t\tactiveElement = document.activeElement;\n\t} catch ( error ) {\n\t\tactiveElement = document.body;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE may return null instead of an element\n\t// Interestingly, this only seems to occur when NOT in an iframe\n\tif ( !activeElement ) {\n\t\tactiveElement = document.body;\n\t}\n\n\t// Support: IE 11 only\n\t// IE11 returns a seemingly empty object in some cases when accessing\n\t// document.activeElement from an <iframe>\n\tif ( !activeElement.nodeName ) {\n\t\tactiveElement = document.body;\n\t}\n\n\treturn activeElement;\n};\n\n\n/*!\n * jQuery UI Menu 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Menu\n//>>group: Widgets\n//>>description: Creates nestable menus.\n//>>docs: http://api.jqueryui.com/menu/\n//>>demos: http://jqueryui.com/menu/\n//>>css.structure: ../../themes/base/core.css\n//>>css.structure: ../../themes/base/menu.css\n//>>css.theme: ../../themes/base/theme.css\n\n\n\nvar widgetsMenu = $.widget( \"ui.menu\", {\n\tversion: \"1.12.1\",\n\tdefaultElement: \"<ul>\",\n\tdelay: 300,\n\toptions: {\n\t\ticons: {\n\t\t\tsubmenu: \"ui-icon-caret-1-e\"\n\t\t},\n\t\titems: \"> *\",\n\t\tmenus: \"ul\",\n\t\tposition: {\n\t\t\tmy: \"left top\",\n\t\t\tat: \"right top\"\n\t\t},\n\t\trole: \"menu\",\n\n\t\t// Callbacks\n\t\tblur: null,\n\t\tfocus: null,\n\t\tselect: null\n\t},\n\n\t_create: function() {\n\t\tthis.activeMenu = this.element;\n\n\t\t// Flag used to prevent firing of the click handler\n\t\t// as the event bubbles up through nested menus\n\t\tthis.mouseHandled = false;\n\t\tthis.element\n\t\t\t.uniqueId()\n\t\t\t.attr( {\n\t\t\t\trole: this.options.role,\n\t\t\t\ttabIndex: 0\n\t\t\t} );\n\n\t\tthis._addClass( \"ui-menu\", \"ui-widget ui-widget-content\" );\n\t\tthis._on( {\n\n\t\t\t// Prevent focus from sticking to links inside menu after clicking\n\t\t\t// them (focus should always stay on UL during navigation).\n\t\t\t\"mousedown .ui-menu-item\": function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t},\n\t\t\t\"click .ui-menu-item\": function( event ) {\n\t\t\t\tvar target = $( event.target );\n\t\t\t\tvar active = $( $.ui.safeActiveElement( this.document[ 0 ] ) );\n\t\t\t\tif ( !this.mouseHandled && target.not( \".ui-state-disabled\" ).length ) {\n\t\t\t\t\tthis.select( event );\n\n\t\t\t\t\t// Only set the mouseHandled flag if the event will bubble, see #9469.\n\t\t\t\t\tif ( !event.isPropagationStopped() ) {\n\t\t\t\t\t\tthis.mouseHandled = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Open submenu on click\n\t\t\t\t\tif ( target.has( \".ui-menu\" ).length ) {\n\t\t\t\t\t\tthis.expand( event );\n\t\t\t\t\t} else if ( !this.element.is( \":focus\" ) &&\n\t\t\t\t\t\t\tactive.closest( \".ui-menu\" ).length ) {\n\n\t\t\t\t\t\t// Redirect focus to the menu\n\t\t\t\t\t\tthis.element.trigger( \"focus\", [ true ] );\n\n\t\t\t\t\t\t// If the active item is on the top level, let it stay active.\n\t\t\t\t\t\t// Otherwise, blur the active item since it is no longer visible.\n\t\t\t\t\t\tif ( this.active && this.active.parents( \".ui-menu\" ).length === 1 ) {\n\t\t\t\t\t\t\tclearTimeout( this.timer );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"mouseenter .ui-menu-item\": function( event ) {\n\n\t\t\t\t// Ignore mouse events while typeahead is active, see #10458.\n\t\t\t\t// Prevents focusing the wrong item when typeahead causes a scroll while the mouse\n\t\t\t\t// is over an item in the menu\n\t\t\t\tif ( this.previousFilter ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar actualTarget = $( event.target ).closest( \".ui-menu-item\" ),\n\t\t\t\t\ttarget = $( event.currentTarget );\n\n\t\t\t\t// Ignore bubbled events on parent items, see #11641\n\t\t\t\tif ( actualTarget[ 0 ] !== target[ 0 ] ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Remove ui-state-active class from siblings of the newly focused menu item\n\t\t\t\t// to avoid a jump caused by adjacent elements both having a class with a border\n\t\t\t\tthis._removeClass( target.siblings().children( \".ui-state-active\" ),\n\t\t\t\t\tnull, \"ui-state-active\" );\n\t\t\t\tthis.focus( event, target );\n\t\t\t},\n\t\t\tmouseleave: \"collapseAll\",\n\t\t\t\"mouseleave .ui-menu\": \"collapseAll\",\n\t\t\tfocus: function( event, keepActiveItem ) {\n\n\t\t\t\t// If there's already an active item, keep it active\n\t\t\t\t// If not, activate the first item\n\t\t\t\tvar item = this.active || this.element.find( this.options.items ).eq( 0 );\n\n\t\t\t\tif ( !keepActiveItem ) {\n\t\t\t\t\tthis.focus( event, item );\n\t\t\t\t}\n\t\t\t},\n\t\t\tblur: function( event ) {\n\t\t\t\tthis._delay( function() {\n\t\t\t\t\tvar notContained = !$.contains(\n\t\t\t\t\t\tthis.element[ 0 ],\n\t\t\t\t\t\t$.ui.safeActiveElement( this.document[ 0 ] )\n\t\t\t\t\t);\n\t\t\t\t\tif ( notContained ) {\n\t\t\t\t\t\tthis.collapseAll( event );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t},\n\t\t\tkeydown: \"_keydown\"\n\t\t} );\n\n\t\tthis.refresh();\n\n\t\t// Clicks outside of a menu collapse any open menus\n\t\tthis._on( this.document, {\n\t\t\tclick: function( event ) {\n\t\t\t\tif ( this._closeOnDocumentClick( event ) ) {\n\t\t\t\t\tthis.collapseAll( event );\n\t\t\t\t}\n\n\t\t\t\t// Reset the mouseHandled flag\n\t\t\t\tthis.mouseHandled = false;\n\t\t\t}\n\t\t} );\n\t},\n\n\t_destroy: function() {\n\t\tvar items = this.element.find( \".ui-menu-item\" )\n\t\t\t\t.removeAttr( \"role aria-disabled\" ),\n\t\t\tsubmenus = items.children( \".ui-menu-item-wrapper\" )\n\t\t\t\t.removeUniqueId()\n\t\t\t\t.removeAttr( \"tabIndex role aria-haspopup\" );\n\n\t\t// Destroy (sub)menus\n\t\tthis.element\n\t\t\t.removeAttr( \"aria-activedescendant\" )\n\t\t\t.find( \".ui-menu\" ).addBack()\n\t\t\t\t.removeAttr( \"role aria-labelledby aria-expanded aria-hidden aria-disabled \" +\n\t\t\t\t\t\"tabIndex\" )\n\t\t\t\t.removeUniqueId()\n\t\t\t\t.show();\n\n\t\tsubmenus.children().each( function() {\n\t\t\tvar elem = $( this );\n\t\t\tif ( elem.data( \"ui-menu-submenu-caret\" ) ) {\n\t\t\t\telem.remove();\n\t\t\t}\n\t\t} );\n\t},\n\n\t_keydown: function( event ) {\n\t\tvar match, prev, character, skip,\n\t\t\tpreventDefault = true;\n\n\t\tswitch ( event.keyCode ) {\n\t\tcase $.ui.keyCode.PAGE_UP:\n\t\t\tthis.previousPage( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.PAGE_DOWN:\n\t\t\tthis.nextPage( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.HOME:\n\t\t\tthis._move( \"first\", \"first\", event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.END:\n\t\t\tthis._move( \"last\", \"last\", event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.UP:\n\t\t\tthis.previous( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.DOWN:\n\t\t\tthis.next( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.LEFT:\n\t\t\tthis.collapse( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.RIGHT:\n\t\t\tif ( this.active && !this.active.is( \".ui-state-disabled\" ) ) {\n\t\t\t\tthis.expand( event );\n\t\t\t}\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.ENTER:\n\t\tcase $.ui.keyCode.SPACE:\n\t\t\tthis._activate( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.ESCAPE:\n\t\t\tthis.collapse( event );\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tpreventDefault = false;\n\t\t\tprev = this.previousFilter || \"\";\n\t\t\tskip = false;\n\n\t\t\t// Support number pad values\n\t\t\tcharacter = event.keyCode >= 96 && event.keyCode <= 105 ?\n\t\t\t\t( event.keyCode - 96 ).toString() : String.fromCharCode( event.keyCode );\n\n\t\t\tclearTimeout( this.filterTimer );\n\n\t\t\tif ( character === prev ) {\n\t\t\t\tskip = true;\n\t\t\t} else {\n\t\t\t\tcharacter = prev + character;\n\t\t\t}\n\n\t\t\tmatch = this._filterMenuItems( character );\n\t\t\tmatch = skip && match.index( this.active.next() ) !== -1 ?\n\t\t\t\tthis.active.nextAll( \".ui-menu-item\" ) :\n\t\t\t\tmatch;\n\n\t\t\t// If no matches on the current filter, reset to the last character pressed\n\t\t\t// to move down the menu to the first item that starts with that character\n\t\t\tif ( !match.length ) {\n\t\t\t\tcharacter = String.fromCharCode( event.keyCode );\n\t\t\t\tmatch = this._filterMenuItems( character );\n\t\t\t}\n\n\t\t\tif ( match.length ) {\n\t\t\t\tthis.focus( event, match );\n\t\t\t\tthis.previousFilter = character;\n\t\t\t\tthis.filterTimer = this._delay( function() {\n\t\t\t\t\tdelete this.previousFilter;\n\t\t\t\t}, 1000 );\n\t\t\t} else {\n\t\t\t\tdelete this.previousFilter;\n\t\t\t}\n\t\t}\n\n\t\tif ( preventDefault ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t},\n\n\t_activate: function( event ) {\n\t\tif ( this.active && !this.active.is( \".ui-state-disabled\" ) ) {\n\t\t\tif ( this.active.children( \"[aria-haspopup='true']\" ).length ) {\n\t\t\t\tthis.expand( event );\n\t\t\t} else {\n\t\t\t\tthis.select( event );\n\t\t\t}\n\t\t}\n\t},\n\n\trefresh: function() {\n\t\tvar menus, items, newSubmenus, newItems, newWrappers,\n\t\t\tthat = this,\n\t\t\ticon = this.options.icons.submenu,\n\t\t\tsubmenus = this.element.find( this.options.menus );\n\n\t\tthis._toggleClass( \"ui-menu-icons\", null, !!this.element.find( \".ui-icon\" ).length );\n\n\t\t// Initialize nested menus\n\t\tnewSubmenus = submenus.filter( \":not(.ui-menu)\" )\n\t\t\t.hide()\n\t\t\t.attr( {\n\t\t\t\trole: this.options.role,\n\t\t\t\t\"aria-hidden\": \"true\",\n\t\t\t\t\"aria-expanded\": \"false\"\n\t\t\t} )\n\t\t\t.each( function() {\n\t\t\t\tvar menu = $( this ),\n\t\t\t\t\titem = menu.prev(),\n\t\t\t\t\tsubmenuCaret = $( \"<span>\" ).data( \"ui-menu-submenu-caret\", true );\n\n\t\t\t\tthat._addClass( submenuCaret, \"ui-menu-icon\", \"ui-icon \" + icon );\n\t\t\t\titem\n\t\t\t\t\t.attr( \"aria-haspopup\", \"true\" )\n\t\t\t\t\t.prepend( submenuCaret );\n\t\t\t\tmenu.attr( \"aria-labelledby\", item.attr( \"id\" ) );\n\t\t\t} );\n\n\t\tthis._addClass( newSubmenus, \"ui-menu\", \"ui-widget ui-widget-content ui-front\" );\n\n\t\tmenus = submenus.add( this.element );\n\t\titems = menus.find( this.options.items );\n\n\t\t// Initialize menu-items containing spaces and/or dashes only as dividers\n\t\titems.not( \".ui-menu-item\" ).each( function() {\n\t\t\tvar item = $( this );\n\t\t\tif ( that._isDivider( item ) ) {\n\t\t\t\tthat._addClass( item, \"ui-menu-divider\", \"ui-widget-content\" );\n\t\t\t}\n\t\t} );\n\n\t\t// Don't refresh list items that are already adapted\n\t\tnewItems = items.not( \".ui-menu-item, .ui-menu-divider\" );\n\t\tnewWrappers = newItems.children()\n\t\t\t.not( \".ui-menu\" )\n\t\t\t\t.uniqueId()\n\t\t\t\t.attr( {\n\t\t\t\t\ttabIndex: -1,\n\t\t\t\t\trole: this._itemRole()\n\t\t\t\t} );\n\t\tthis._addClass( newItems, \"ui-menu-item\" )\n\t\t\t._addClass( newWrappers, \"ui-menu-item-wrapper\" );\n\n\t\t// Add aria-disabled attribute to any disabled menu item\n\t\titems.filter( \".ui-state-disabled\" ).attr( \"aria-disabled\", \"true\" );\n\n\t\t// If the active item has been removed, blur the menu\n\t\tif ( this.active && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) {\n\t\t\tthis.blur();\n\t\t}\n\t},\n\n\t_itemRole: function() {\n\t\treturn {\n\t\t\tmenu: \"menuitem\",\n\t\t\tlistbox: \"option\"\n\t\t}[ this.options.role ];\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"icons\" ) {\n\t\t\tvar icons = this.element.find( \".ui-menu-icon\" );\n\t\t\tthis._removeClass( icons, null, this.options.icons.submenu )\n\t\t\t\t._addClass( icons, null, value.submenu );\n\t\t}\n\t\tthis._super( key, value );\n\t},\n\n\t_setOptionDisabled: function( value ) {\n\t\tthis._super( value );\n\n\t\tthis.element.attr( \"aria-disabled\", String( value ) );\n\t\tthis._toggleClass( null, \"ui-state-disabled\", !!value );\n\t},\n\n\tfocus: function( event, item ) {\n\t\tvar nested, focused, activeParent;\n\t\tthis.blur( event, event && event.type === \"focus\" );\n\n\t\tthis._scrollIntoView( item );\n\n\t\tthis.active = item.first();\n\n\t\tfocused = this.active.children( \".ui-menu-item-wrapper\" );\n\t\tthis._addClass( focused, null, \"ui-state-active\" );\n\n\t\t// Only update aria-activedescendant if there's a role\n\t\t// otherwise we assume focus is managed elsewhere\n\t\tif ( this.options.role ) {\n\t\t\tthis.element.attr( \"aria-activedescendant\", focused.attr( \"id\" ) );\n\t\t}\n\n\t\t// Highlight active parent menu item, if any\n\t\tactiveParent = this.active\n\t\t\t.parent()\n\t\t\t\t.closest( \".ui-menu-item\" )\n\t\t\t\t\t.children( \".ui-menu-item-wrapper\" );\n\t\tthis._addClass( activeParent, null, \"ui-state-active\" );\n\n\t\tif ( event && event.type === \"keydown\" ) {\n\t\t\tthis._close();\n\t\t} else {\n\t\t\tthis.timer = this._delay( function() {\n\t\t\t\tthis._close();\n\t\t\t}, this.delay );\n\t\t}\n\n\t\tnested = item.children( \".ui-menu\" );\n\t\tif ( nested.length && event && ( /^mouse/.test( event.type ) ) ) {\n\t\t\tthis._startOpening( nested );\n\t\t}\n\t\tthis.activeMenu = item.parent();\n\n\t\tthis._trigger( \"focus\", event, { item: item } );\n\t},\n\n\t_scrollIntoView: function( item ) {\n\t\tvar borderTop, paddingTop, offset, scroll, elementHeight, itemHeight;\n\t\tif ( this._hasScroll() ) {\n\t\t\tborderTop = parseFloat( $.css( this.activeMenu[ 0 ], \"borderTopWidth\" ) ) || 0;\n\t\t\tpaddingTop = parseFloat( $.css( this.activeMenu[ 0 ], \"paddingTop\" ) ) || 0;\n\t\t\toffset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop;\n\t\t\tscroll = this.activeMenu.scrollTop();\n\t\t\telementHeight = this.activeMenu.height();\n\t\t\titemHeight = item.outerHeight();\n\n\t\t\tif ( offset < 0 ) {\n\t\t\t\tthis.activeMenu.scrollTop( scroll + offset );\n\t\t\t} else if ( offset + itemHeight > elementHeight ) {\n\t\t\t\tthis.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight );\n\t\t\t}\n\t\t}\n\t},\n\n\tblur: function( event, fromFocus ) {\n\t\tif ( !fromFocus ) {\n\t\t\tclearTimeout( this.timer );\n\t\t}\n\n\t\tif ( !this.active ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._removeClass( this.active.children( \".ui-menu-item-wrapper\" ),\n\t\t\tnull, \"ui-state-active\" );\n\n\t\tthis._trigger( \"blur\", event, { item: this.active } );\n\t\tthis.active = null;\n\t},\n\n\t_startOpening: function( submenu ) {\n\t\tclearTimeout( this.timer );\n\n\t\t// Don't open if already open fixes a Firefox bug that caused a .5 pixel\n\t\t// shift in the submenu position when mousing over the caret icon\n\t\tif ( submenu.attr( \"aria-hidden\" ) !== \"true\" ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.timer = this._delay( function() {\n\t\t\tthis._close();\n\t\t\tthis._open( submenu );\n\t\t}, this.delay );\n\t},\n\n\t_open: function( submenu ) {\n\t\tvar position = $.extend( {\n\t\t\tof: this.active\n\t\t}, this.options.position );\n\n\t\tclearTimeout( this.timer );\n\t\tthis.element.find( \".ui-menu\" ).not( submenu.parents( \".ui-menu\" ) )\n\t\t\t.hide()\n\t\t\t.attr( \"aria-hidden\", \"true\" );\n\n\t\tsubmenu\n\t\t\t.show()\n\t\t\t.removeAttr( \"aria-hidden\" )\n\t\t\t.attr( \"aria-expanded\", \"true\" )\n\t\t\t.position( position );\n\t},\n\n\tcollapseAll: function( event, all ) {\n\t\tclearTimeout( this.timer );\n\t\tthis.timer = this._delay( function() {\n\n\t\t\t// If we were passed an event, look for the submenu that contains the event\n\t\t\tvar currentMenu = all ? this.element :\n\t\t\t\t$( event && event.target ).closest( this.element.find( \".ui-menu\" ) );\n\n\t\t\t// If we found no valid submenu ancestor, use the main menu to close all\n\t\t\t// sub menus anyway\n\t\t\tif ( !currentMenu.length ) {\n\t\t\t\tcurrentMenu = this.element;\n\t\t\t}\n\n\t\t\tthis._close( currentMenu );\n\n\t\t\tthis.blur( event );\n\n\t\t\t// Work around active item staying active after menu is blurred\n\t\t\tthis._removeClass( currentMenu.find( \".ui-state-active\" ), null, \"ui-state-active\" );\n\n\t\t\tthis.activeMenu = currentMenu;\n\t\t}, this.delay );\n\t},\n\n\t// With no arguments, closes the currently active menu - if nothing is active\n\t// it closes all menus.  If passed an argument, it will search for menus BELOW\n\t_close: function( startMenu ) {\n\t\tif ( !startMenu ) {\n\t\t\tstartMenu = this.active ? this.active.parent() : this.element;\n\t\t}\n\n\t\tstartMenu.find( \".ui-menu\" )\n\t\t\t.hide()\n\t\t\t.attr( \"aria-hidden\", \"true\" )\n\t\t\t.attr( \"aria-expanded\", \"false\" );\n\t},\n\n\t_closeOnDocumentClick: function( event ) {\n\t\treturn !$( event.target ).closest( \".ui-menu\" ).length;\n\t},\n\n\t_isDivider: function( item ) {\n\n\t\t// Match hyphen, em dash, en dash\n\t\treturn !/[^\\-\\u2014\\u2013\\s]/.test( item.text() );\n\t},\n\n\tcollapse: function( event ) {\n\t\tvar newItem = this.active &&\n\t\t\tthis.active.parent().closest( \".ui-menu-item\", this.element );\n\t\tif ( newItem && newItem.length ) {\n\t\t\tthis._close();\n\t\t\tthis.focus( event, newItem );\n\t\t}\n\t},\n\n\texpand: function( event ) {\n\t\tvar newItem = this.active &&\n\t\t\tthis.active\n\t\t\t\t.children( \".ui-menu \" )\n\t\t\t\t\t.find( this.options.items )\n\t\t\t\t\t\t.first();\n\n\t\tif ( newItem && newItem.length ) {\n\t\t\tthis._open( newItem.parent() );\n\n\t\t\t// Delay so Firefox will not hide activedescendant change in expanding submenu from AT\n\t\t\tthis._delay( function() {\n\t\t\t\tthis.focus( event, newItem );\n\t\t\t} );\n\t\t}\n\t},\n\n\tnext: function( event ) {\n\t\tthis._move( \"next\", \"first\", event );\n\t},\n\n\tprevious: function( event ) {\n\t\tthis._move( \"prev\", \"last\", event );\n\t},\n\n\tisFirstItem: function() {\n\t\treturn this.active && !this.active.prevAll( \".ui-menu-item\" ).length;\n\t},\n\n\tisLastItem: function() {\n\t\treturn this.active && !this.active.nextAll( \".ui-menu-item\" ).length;\n\t},\n\n\t_move: function( direction, filter, event ) {\n\t\tvar next;\n\t\tif ( this.active ) {\n\t\t\tif ( direction === \"first\" || direction === \"last\" ) {\n\t\t\t\tnext = this.active\n\t\t\t\t\t[ direction === \"first\" ? \"prevAll\" : \"nextAll\" ]( \".ui-menu-item\" )\n\t\t\t\t\t.eq( -1 );\n\t\t\t} else {\n\t\t\t\tnext = this.active\n\t\t\t\t\t[ direction + \"All\" ]( \".ui-menu-item\" )\n\t\t\t\t\t.eq( 0 );\n\t\t\t}\n\t\t}\n\t\tif ( !next || !next.length || !this.active ) {\n\t\t\tnext = this.activeMenu.find( this.options.items )[ filter ]();\n\t\t}\n\n\t\tthis.focus( event, next );\n\t},\n\n\tnextPage: function( event ) {\n\t\tvar item, base, height;\n\n\t\tif ( !this.active ) {\n\t\t\tthis.next( event );\n\t\t\treturn;\n\t\t}\n\t\tif ( this.isLastItem() ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( this._hasScroll() ) {\n\t\t\tbase = this.active.offset().top;\n\t\t\theight = this.element.height();\n\t\t\tthis.active.nextAll( \".ui-menu-item\" ).each( function() {\n\t\t\t\titem = $( this );\n\t\t\t\treturn item.offset().top - base - height < 0;\n\t\t\t} );\n\n\t\t\tthis.focus( event, item );\n\t\t} else {\n\t\t\tthis.focus( event, this.activeMenu.find( this.options.items )\n\t\t\t\t[ !this.active ? \"first\" : \"last\" ]() );\n\t\t}\n\t},\n\n\tpreviousPage: function( event ) {\n\t\tvar item, base, height;\n\t\tif ( !this.active ) {\n\t\t\tthis.next( event );\n\t\t\treturn;\n\t\t}\n\t\tif ( this.isFirstItem() ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( this._hasScroll() ) {\n\t\t\tbase = this.active.offset().top;\n\t\t\theight = this.element.height();\n\t\t\tthis.active.prevAll( \".ui-menu-item\" ).each( function() {\n\t\t\t\titem = $( this );\n\t\t\t\treturn item.offset().top - base + height > 0;\n\t\t\t} );\n\n\t\t\tthis.focus( event, item );\n\t\t} else {\n\t\t\tthis.focus( event, this.activeMenu.find( this.options.items ).first() );\n\t\t}\n\t},\n\n\t_hasScroll: function() {\n\t\treturn this.element.outerHeight() < this.element.prop( \"scrollHeight\" );\n\t},\n\n\tselect: function( event ) {\n\n\t\t// TODO: It should never be possible to not have an active item at this\n\t\t// point, but the tests don't trigger mouseenter before click.\n\t\tthis.active = this.active || $( event.target ).closest( \".ui-menu-item\" );\n\t\tvar ui = { item: this.active };\n\t\tif ( !this.active.has( \".ui-menu\" ).length ) {\n\t\t\tthis.collapseAll( event, true );\n\t\t}\n\t\tthis._trigger( \"select\", event, ui );\n\t},\n\n\t_filterMenuItems: function( character ) {\n\t\tvar escapedCharacter = character.replace( /[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\" ),\n\t\t\tregex = new RegExp( \"^\" + escapedCharacter, \"i\" );\n\n\t\treturn this.activeMenu\n\t\t\t.find( this.options.items )\n\n\t\t\t\t// Only match on items, not dividers or other content (#10571)\n\t\t\t\t.filter( \".ui-menu-item\" )\n\t\t\t\t\t.filter( function() {\n\t\t\t\t\t\treturn regex.test(\n\t\t\t\t\t\t\t$.trim( $( this ).children( \".ui-menu-item-wrapper\" ).text() ) );\n\t\t\t\t\t} );\n\t}\n} );\n\n\n/*!\n * jQuery UI Autocomplete 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Autocomplete\n//>>group: Widgets\n//>>description: Lists suggested words as the user is typing.\n//>>docs: http://api.jqueryui.com/autocomplete/\n//>>demos: http://jqueryui.com/autocomplete/\n//>>css.structure: ../../themes/base/core.css\n//>>css.structure: ../../themes/base/autocomplete.css\n//>>css.theme: ../../themes/base/theme.css\n\n\n\n$.widget( \"ui.autocomplete\", {\n\tversion: \"1.12.1\",\n\tdefaultElement: \"<input>\",\n\toptions: {\n\t\tappendTo: null,\n\t\tautoFocus: false,\n\t\tdelay: 300,\n\t\tminLength: 1,\n\t\tposition: {\n\t\t\tmy: \"left top\",\n\t\t\tat: \"left bottom\",\n\t\t\tcollision: \"none\"\n\t\t},\n\t\tsource: null,\n\n\t\t// Callbacks\n\t\tchange: null,\n\t\tclose: null,\n\t\tfocus: null,\n\t\topen: null,\n\t\tresponse: null,\n\t\tsearch: null,\n\t\tselect: null\n\t},\n\n\trequestIndex: 0,\n\tpending: 0,\n\n\t_create: function() {\n\n\t\t// Some browsers only repeat keydown events, not keypress events,\n\t\t// so we use the suppressKeyPress flag to determine if we've already\n\t\t// handled the keydown event. #7269\n\t\t// Unfortunately the code for & in keypress is the same as the up arrow,\n\t\t// so we use the suppressKeyPressRepeat flag to avoid handling keypress\n\t\t// events when we know the keydown event was used to modify the\n\t\t// search term. #7799\n\t\tvar suppressKeyPress, suppressKeyPressRepeat, suppressInput,\n\t\t\tnodeName = this.element[ 0 ].nodeName.toLowerCase(),\n\t\t\tisTextarea = nodeName === \"textarea\",\n\t\t\tisInput = nodeName === \"input\";\n\n\t\t// Textareas are always multi-line\n\t\t// Inputs are always single-line, even if inside a contentEditable element\n\t\t// IE also treats inputs as contentEditable\n\t\t// All other element types are determined by whether or not they're contentEditable\n\t\tthis.isMultiLine = isTextarea || !isInput && this._isContentEditable( this.element );\n\n\t\tthis.valueMethod = this.element[ isTextarea || isInput ? \"val\" : \"text\" ];\n\t\tthis.isNewMenu = true;\n\n\t\tthis._addClass( \"ui-autocomplete-input\" );\n\t\tthis.element.attr( \"autocomplete\", \"off\" );\n\n\t\tthis._on( this.element, {\n\t\t\tkeydown: function( event ) {\n\t\t\t\tif ( this.element.prop( \"readOnly\" ) ) {\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tsuppressInput = true;\n\t\t\t\t\tsuppressKeyPressRepeat = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tsuppressKeyPress = false;\n\t\t\t\tsuppressInput = false;\n\t\t\t\tsuppressKeyPressRepeat = false;\n\t\t\t\tvar keyCode = $.ui.keyCode;\n\t\t\t\tswitch ( event.keyCode ) {\n\t\t\t\tcase keyCode.PAGE_UP:\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tthis._move( \"previousPage\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.PAGE_DOWN:\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tthis._move( \"nextPage\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.UP:\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tthis._keyEvent( \"previous\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.DOWN:\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tthis._keyEvent( \"next\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.ENTER:\n\n\t\t\t\t\t// when menu is open and has focus\n\t\t\t\t\tif ( this.menu.active ) {\n\n\t\t\t\t\t\t// #6055 - Opera still allows the keypress to occur\n\t\t\t\t\t\t// which causes forms to submit\n\t\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tthis.menu.select( event );\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.TAB:\n\t\t\t\t\tif ( this.menu.active ) {\n\t\t\t\t\t\tthis.menu.select( event );\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.ESCAPE:\n\t\t\t\t\tif ( this.menu.element.is( \":visible\" ) ) {\n\t\t\t\t\t\tif ( !this.isMultiLine ) {\n\t\t\t\t\t\t\tthis._value( this.term );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.close( event );\n\n\t\t\t\t\t\t// Different browsers have different default behavior for escape\n\t\t\t\t\t\t// Single press can mean undo or clear\n\t\t\t\t\t\t// Double press in IE means clear the whole form\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tsuppressKeyPressRepeat = true;\n\n\t\t\t\t\t// search timeout should be triggered before the input value is changed\n\t\t\t\t\tthis._searchTimeout( event );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t},\n\t\t\tkeypress: function( event ) {\n\t\t\t\tif ( suppressKeyPress ) {\n\t\t\t\t\tsuppressKeyPress = false;\n\t\t\t\t\tif ( !this.isMultiLine || this.menu.element.is( \":visible\" ) ) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif ( suppressKeyPressRepeat ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Replicate some key handlers to allow them to repeat in Firefox and Opera\n\t\t\t\tvar keyCode = $.ui.keyCode;\n\t\t\t\tswitch ( event.keyCode ) {\n\t\t\t\tcase keyCode.PAGE_UP:\n\t\t\t\t\tthis._move( \"previousPage\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.PAGE_DOWN:\n\t\t\t\t\tthis._move( \"nextPage\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.UP:\n\t\t\t\t\tthis._keyEvent( \"previous\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.DOWN:\n\t\t\t\t\tthis._keyEvent( \"next\", event );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t},\n\t\t\tinput: function( event ) {\n\t\t\t\tif ( suppressInput ) {\n\t\t\t\t\tsuppressInput = false;\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._searchTimeout( event );\n\t\t\t},\n\t\t\tfocus: function() {\n\t\t\t\tthis.selectedItem = null;\n\t\t\t\tthis.previous = this._value();\n\t\t\t},\n\t\t\tblur: function( event ) {\n\t\t\t\tif ( this.cancelBlur ) {\n\t\t\t\t\tdelete this.cancelBlur;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tclearTimeout( this.searching );\n\t\t\t\tthis.close( event );\n\t\t\t\tthis._change( event );\n\t\t\t}\n\t\t} );\n\n\t\tthis._initSource();\n\t\tthis.menu = $( \"<ul>\" )\n\t\t\t.appendTo( this._appendTo() )\n\t\t\t.menu( {\n\n\t\t\t\t// disable ARIA support, the live region takes care of that\n\t\t\t\trole: null\n\t\t\t} )\n\t\t\t.hide()\n\t\t\t.menu( \"instance\" );\n\n\t\tthis._addClass( this.menu.element, \"ui-autocomplete\", \"ui-front\" );\n\t\tthis._on( this.menu.element, {\n\t\t\tmousedown: function( event ) {\n\n\t\t\t\t// prevent moving focus out of the text field\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\t// IE doesn't prevent moving focus even with event.preventDefault()\n\t\t\t\t// so we set a flag to know when we should ignore the blur event\n\t\t\t\tthis.cancelBlur = true;\n\t\t\t\tthis._delay( function() {\n\t\t\t\t\tdelete this.cancelBlur;\n\n\t\t\t\t\t// Support: IE 8 only\n\t\t\t\t\t// Right clicking a menu item or selecting text from the menu items will\n\t\t\t\t\t// result in focus moving out of the input. However, we've already received\n\t\t\t\t\t// and ignored the blur event because of the cancelBlur flag set above. So\n\t\t\t\t\t// we restore focus to ensure that the menu closes properly based on the user's\n\t\t\t\t\t// next actions.\n\t\t\t\t\tif ( this.element[ 0 ] !== $.ui.safeActiveElement( this.document[ 0 ] ) ) {\n\t\t\t\t\t\tthis.element.trigger( \"focus\" );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t},\n\t\t\tmenufocus: function( event, ui ) {\n\t\t\t\tvar label, item;\n\n\t\t\t\t// support: Firefox\n\t\t\t\t// Prevent accidental activation of menu items in Firefox (#7024 #9118)\n\t\t\t\tif ( this.isNewMenu ) {\n\t\t\t\t\tthis.isNewMenu = false;\n\t\t\t\t\tif ( event.originalEvent && /^mouse/.test( event.originalEvent.type ) ) {\n\t\t\t\t\t\tthis.menu.blur();\n\n\t\t\t\t\t\tthis.document.one( \"mousemove\", function() {\n\t\t\t\t\t\t\t$( event.target ).trigger( event.originalEvent );\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\titem = ui.item.data( \"ui-autocomplete-item\" );\n\t\t\t\tif ( false !== this._trigger( \"focus\", event, { item: item } ) ) {\n\n\t\t\t\t\t// use value to match what will end up in the input, if it was a key event\n\t\t\t\t\tif ( event.originalEvent && /^key/.test( event.originalEvent.type ) ) {\n\t\t\t\t\t\tthis._value( item.value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Announce the value in the liveRegion\n\t\t\t\tlabel = ui.item.attr( \"aria-label\" ) || item.value;\n\t\t\t\tif ( label && $.trim( label ).length ) {\n\t\t\t\t\tthis.liveRegion.children().hide();\n\t\t\t\t\t$( \"<div>\" ).text( label ).appendTo( this.liveRegion );\n\t\t\t\t}\n\t\t\t},\n\t\t\tmenuselect: function( event, ui ) {\n\t\t\t\tvar item = ui.item.data( \"ui-autocomplete-item\" ),\n\t\t\t\t\tprevious = this.previous;\n\n\t\t\t\t// Only trigger when focus was lost (click on menu)\n\t\t\t\tif ( this.element[ 0 ] !== $.ui.safeActiveElement( this.document[ 0 ] ) ) {\n\t\t\t\t\tthis.element.trigger( \"focus\" );\n\t\t\t\t\tthis.previous = previous;\n\n\t\t\t\t\t// #6109 - IE triggers two focus events and the second\n\t\t\t\t\t// is asynchronous, so we need to reset the previous\n\t\t\t\t\t// term synchronously and asynchronously :-(\n\t\t\t\t\tthis._delay( function() {\n\t\t\t\t\t\tthis.previous = previous;\n\t\t\t\t\t\tthis.selectedItem = item;\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\tif ( false !== this._trigger( \"select\", event, { item: item } ) ) {\n\t\t\t\t\tthis._value( item.value );\n\t\t\t\t}\n\n\t\t\t\t// reset the term after the select event\n\t\t\t\t// this allows custom select handling to work properly\n\t\t\t\tthis.term = this._value();\n\n\t\t\t\tthis.close( event );\n\t\t\t\tthis.selectedItem = item;\n\t\t\t}\n\t\t} );\n\n\t\tthis.liveRegion = $( \"<div>\", {\n\t\t\trole: \"status\",\n\t\t\t\"aria-live\": \"assertive\",\n\t\t\t\"aria-relevant\": \"additions\"\n\t\t} )\n\t\t\t.appendTo( this.document[ 0 ].body );\n\n\t\tthis._addClass( this.liveRegion, null, \"ui-helper-hidden-accessible\" );\n\n\t\t// Turning off autocomplete prevents the browser from remembering the\n\t\t// value when navigating through history, so we re-enable autocomplete\n\t\t// if the page is unloaded before the widget is destroyed. #7790\n\t\tthis._on( this.window, {\n\t\t\tbeforeunload: function() {\n\t\t\t\tthis.element.removeAttr( \"autocomplete\" );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_destroy: function() {\n\t\tclearTimeout( this.searching );\n\t\tthis.element.removeAttr( \"autocomplete\" );\n\t\tthis.menu.element.remove();\n\t\tthis.liveRegion.remove();\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tthis._super( key, value );\n\t\tif ( key === \"source\" ) {\n\t\t\tthis._initSource();\n\t\t}\n\t\tif ( key === \"appendTo\" ) {\n\t\t\tthis.menu.element.appendTo( this._appendTo() );\n\t\t}\n\t\tif ( key === \"disabled\" && value && this.xhr ) {\n\t\t\tthis.xhr.abort();\n\t\t}\n\t},\n\n\t_isEventTargetInWidget: function( event ) {\n\t\tvar menuElement = this.menu.element[ 0 ];\n\n\t\treturn event.target === this.element[ 0 ] ||\n\t\t\tevent.target === menuElement ||\n\t\t\t$.contains( menuElement, event.target );\n\t},\n\n\t_closeOnClickOutside: function( event ) {\n\t\tif ( !this._isEventTargetInWidget( event ) ) {\n\t\t\tthis.close();\n\t\t}\n\t},\n\n\t_appendTo: function() {\n\t\tvar element = this.options.appendTo;\n\n\t\tif ( element ) {\n\t\t\telement = element.jquery || element.nodeType ?\n\t\t\t\t$( element ) :\n\t\t\t\tthis.document.find( element ).eq( 0 );\n\t\t}\n\n\t\tif ( !element || !element[ 0 ] ) {\n\t\t\telement = this.element.closest( \".ui-front, dialog\" );\n\t\t}\n\n\t\tif ( !element.length ) {\n\t\t\telement = this.document[ 0 ].body;\n\t\t}\n\n\t\treturn element;\n\t},\n\n\t_initSource: function() {\n\t\tvar array, url,\n\t\t\tthat = this;\n\t\tif ( $.isArray( this.options.source ) ) {\n\t\t\tarray = this.options.source;\n\t\t\tthis.source = function( request, response ) {\n\t\t\t\tresponse( $.ui.autocomplete.filter( array, request.term ) );\n\t\t\t};\n\t\t} else if ( typeof this.options.source === \"string\" ) {\n\t\t\turl = this.options.source;\n\t\t\tthis.source = function( request, response ) {\n\t\t\t\tif ( that.xhr ) {\n\t\t\t\t\tthat.xhr.abort();\n\t\t\t\t}\n\t\t\t\tthat.xhr = $.ajax( {\n\t\t\t\t\turl: url,\n\t\t\t\t\tdata: request,\n\t\t\t\t\tdataType: \"json\",\n\t\t\t\t\tsuccess: function( data ) {\n\t\t\t\t\t\tresponse( data );\n\t\t\t\t\t},\n\t\t\t\t\terror: function() {\n\t\t\t\t\t\tresponse( [] );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t};\n\t\t} else {\n\t\t\tthis.source = this.options.source;\n\t\t}\n\t},\n\n\t_searchTimeout: function( event ) {\n\t\tclearTimeout( this.searching );\n\t\tthis.searching = this._delay( function() {\n\n\t\t\t// Search if the value has changed, or if the user retypes the same value (see #7434)\n\t\t\tvar equalValues = this.term === this._value(),\n\t\t\t\tmenuVisible = this.menu.element.is( \":visible\" ),\n\t\t\t\tmodifierKey = event.altKey || event.ctrlKey || event.metaKey || event.shiftKey;\n\n\t\t\tif ( !equalValues || ( equalValues && !menuVisible && !modifierKey ) ) {\n\t\t\t\tthis.selectedItem = null;\n\t\t\t\tthis.search( null, event );\n\t\t\t}\n\t\t}, this.options.delay );\n\t},\n\n\tsearch: function( value, event ) {\n\t\tvalue = value != null ? value : this._value();\n\n\t\t// Always save the actual value, not the one passed as an argument\n\t\tthis.term = this._value();\n\n\t\tif ( value.length < this.options.minLength ) {\n\t\t\treturn this.close( event );\n\t\t}\n\n\t\tif ( this._trigger( \"search\", event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn this._search( value );\n\t},\n\n\t_search: function( value ) {\n\t\tthis.pending++;\n\t\tthis._addClass( \"ui-autocomplete-loading\" );\n\t\tthis.cancelSearch = false;\n\n\t\tthis.source( { term: value }, this._response() );\n\t},\n\n\t_response: function() {\n\t\tvar index = ++this.requestIndex;\n\n\t\treturn $.proxy( function( content ) {\n\t\t\tif ( index === this.requestIndex ) {\n\t\t\t\tthis.__response( content );\n\t\t\t}\n\n\t\t\tthis.pending--;\n\t\t\tif ( !this.pending ) {\n\t\t\t\tthis._removeClass( \"ui-autocomplete-loading\" );\n\t\t\t}\n\t\t}, this );\n\t},\n\n\t__response: function( content ) {\n\t\tif ( content ) {\n\t\t\tcontent = this._normalize( content );\n\t\t}\n\t\tthis._trigger( \"response\", null, { content: content } );\n\t\tif ( !this.options.disabled && content && content.length && !this.cancelSearch ) {\n\t\t\tthis._suggest( content );\n\t\t\tthis._trigger( \"open\" );\n\t\t} else {\n\n\t\t\t// use ._close() instead of .close() so we don't cancel future searches\n\t\t\tthis._close();\n\t\t}\n\t},\n\n\tclose: function( event ) {\n\t\tthis.cancelSearch = true;\n\t\tthis._close( event );\n\t},\n\n\t_close: function( event ) {\n\n\t\t// Remove the handler that closes the menu on outside clicks\n\t\tthis._off( this.document, \"mousedown\" );\n\n\t\tif ( this.menu.element.is( \":visible\" ) ) {\n\t\t\tthis.menu.element.hide();\n\t\t\tthis.menu.blur();\n\t\t\tthis.isNewMenu = true;\n\t\t\tthis._trigger( \"close\", event );\n\t\t}\n\t},\n\n\t_change: function( event ) {\n\t\tif ( this.previous !== this._value() ) {\n\t\t\tthis._trigger( \"change\", event, { item: this.selectedItem } );\n\t\t}\n\t},\n\n\t_normalize: function( items ) {\n\n\t\t// assume all items have the right format when the first item is complete\n\t\tif ( items.length && items[ 0 ].label && items[ 0 ].value ) {\n\t\t\treturn items;\n\t\t}\n\t\treturn $.map( items, function( item ) {\n\t\t\tif ( typeof item === \"string\" ) {\n\t\t\t\treturn {\n\t\t\t\t\tlabel: item,\n\t\t\t\t\tvalue: item\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn $.extend( {}, item, {\n\t\t\t\tlabel: item.label || item.value,\n\t\t\t\tvalue: item.value || item.label\n\t\t\t} );\n\t\t} );\n\t},\n\n\t_suggest: function( items ) {\n\t\tvar ul = this.menu.element.empty();\n\t\tthis._renderMenu( ul, items );\n\t\tthis.isNewMenu = true;\n\t\tthis.menu.refresh();\n\n\t\t// Size and position menu\n\t\tul.show();\n\t\tthis._resizeMenu();\n\t\tul.position( $.extend( {\n\t\t\tof: this.element\n\t\t}, this.options.position ) );\n\n\t\tif ( this.options.autoFocus ) {\n\t\t\tthis.menu.next();\n\t\t}\n\n\t\t// Listen for interactions outside of the widget (#6642)\n\t\tthis._on( this.document, {\n\t\t\tmousedown: \"_closeOnClickOutside\"\n\t\t} );\n\t},\n\n\t_resizeMenu: function() {\n\t\tvar ul = this.menu.element;\n\t\tul.outerWidth( Math.max(\n\n\t\t\t// Firefox wraps long text (possibly a rounding bug)\n\t\t\t// so we add 1px to avoid the wrapping (#7513)\n\t\t\tul.width( \"\" ).outerWidth() + 1,\n\t\t\tthis.element.outerWidth()\n\t\t) );\n\t},\n\n\t_renderMenu: function( ul, items ) {\n\t\tvar that = this;\n\t\t$.each( items, function( index, item ) {\n\t\t\tthat._renderItemData( ul, item );\n\t\t} );\n\t},\n\n\t_renderItemData: function( ul, item ) {\n\t\treturn this._renderItem( ul, item ).data( \"ui-autocomplete-item\", item );\n\t},\n\n\t_renderItem: function( ul, item ) {\n\t\treturn $( \"<li>\" )\n\t\t\t.append( $( \"<div>\" ).text( item.label ) )\n\t\t\t.appendTo( ul );\n\t},\n\n\t_move: function( direction, event ) {\n\t\tif ( !this.menu.element.is( \":visible\" ) ) {\n\t\t\tthis.search( null, event );\n\t\t\treturn;\n\t\t}\n\t\tif ( this.menu.isFirstItem() && /^previous/.test( direction ) ||\n\t\t\t\tthis.menu.isLastItem() && /^next/.test( direction ) ) {\n\n\t\t\tif ( !this.isMultiLine ) {\n\t\t\t\tthis._value( this.term );\n\t\t\t}\n\n\t\t\tthis.menu.blur();\n\t\t\treturn;\n\t\t}\n\t\tthis.menu[ direction ]( event );\n\t},\n\n\twidget: function() {\n\t\treturn this.menu.element;\n\t},\n\n\t_value: function() {\n\t\treturn this.valueMethod.apply( this.element, arguments );\n\t},\n\n\t_keyEvent: function( keyEvent, event ) {\n\t\tif ( !this.isMultiLine || this.menu.element.is( \":visible\" ) ) {\n\t\t\tthis._move( keyEvent, event );\n\n\t\t\t// Prevents moving cursor to beginning/end of the text field in some browsers\n\t\t\tevent.preventDefault();\n\t\t}\n\t},\n\n\t// Support: Chrome <=50\n\t// We should be able to just use this.element.prop( \"isContentEditable\" )\n\t// but hidden elements always report false in Chrome.\n\t// https://code.google.com/p/chromium/issues/detail?id=313082\n\t_isContentEditable: function( element ) {\n\t\tif ( !element.length ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar editable = element.prop( \"contentEditable\" );\n\n\t\tif ( editable === \"inherit\" ) {\n\t\t  return this._isContentEditable( element.parent() );\n\t\t}\n\n\t\treturn editable === \"true\";\n\t}\n} );\n\n$.extend( $.ui.autocomplete, {\n\tescapeRegex: function( value ) {\n\t\treturn value.replace( /[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\" );\n\t},\n\tfilter: function( array, term ) {\n\t\tvar matcher = new RegExp( $.ui.autocomplete.escapeRegex( term ), \"i\" );\n\t\treturn $.grep( array, function( value ) {\n\t\t\treturn matcher.test( value.label || value.value || value );\n\t\t} );\n\t}\n} );\n\n// Live region extension, adding a `messages` option\n// NOTE: This is an experimental API. We are still investigating\n// a full solution for string manipulation and internationalization.\n$.widget( \"ui.autocomplete\", $.ui.autocomplete, {\n\toptions: {\n\t\tmessages: {\n\t\t\tnoResults: \"No search results.\",\n\t\t\tresults: function( amount ) {\n\t\t\t\treturn amount + ( amount > 1 ? \" results are\" : \" result is\" ) +\n\t\t\t\t\t\" available, use up and down arrow keys to navigate.\";\n\t\t\t}\n\t\t}\n\t},\n\n\t__response: function( content ) {\n\t\tvar message;\n\t\tthis._superApply( arguments );\n\t\tif ( this.options.disabled || this.cancelSearch ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( content && content.length ) {\n\t\t\tmessage = this.options.messages.results( content.length );\n\t\t} else {\n\t\t\tmessage = this.options.messages.noResults;\n\t\t}\n\t\tthis.liveRegion.children().hide();\n\t\t$( \"<div>\" ).text( message ).appendTo( this.liveRegion );\n\t}\n} );\n\nvar widgetsAutocomplete = $.ui.autocomplete;\n\n\n/*!\n * jQuery UI Controlgroup 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Controlgroup\n//>>group: Widgets\n//>>description: Visually groups form control widgets\n//>>docs: http://api.jqueryui.com/controlgroup/\n//>>demos: http://jqueryui.com/controlgroup/\n//>>css.structure: ../../themes/base/core.css\n//>>css.structure: ../../themes/base/controlgroup.css\n//>>css.theme: ../../themes/base/theme.css\n\n\nvar controlgroupCornerRegex = /ui-corner-([a-z]){2,6}/g;\n\nvar widgetsControlgroup = $.widget( \"ui.controlgroup\", {\n\tversion: \"1.12.1\",\n\tdefaultElement: \"<div>\",\n\toptions: {\n\t\tdirection: \"horizontal\",\n\t\tdisabled: null,\n\t\tonlyVisible: true,\n\t\titems: {\n\t\t\t\"button\": \"input[type=button], input[type=submit], input[type=reset], button, a\",\n\t\t\t\"controlgroupLabel\": \".ui-controlgroup-label\",\n\t\t\t\"checkboxradio\": \"input[type='checkbox'], input[type='radio']\",\n\t\t\t\"selectmenu\": \"select\",\n\t\t\t\"spinner\": \".ui-spinner-input\"\n\t\t}\n\t},\n\n\t_create: function() {\n\t\tthis._enhance();\n\t},\n\n\t// To support the enhanced option in jQuery Mobile, we isolate DOM manipulation\n\t_enhance: function() {\n\t\tthis.element.attr( \"role\", \"toolbar\" );\n\t\tthis.refresh();\n\t},\n\n\t_destroy: function() {\n\t\tthis._callChildMethod( \"destroy\" );\n\t\tthis.childWidgets.removeData( \"ui-controlgroup-data\" );\n\t\tthis.element.removeAttr( \"role\" );\n\t\tif ( this.options.items.controlgroupLabel ) {\n\t\t\tthis.element\n\t\t\t\t.find( this.options.items.controlgroupLabel )\n\t\t\t\t.find( \".ui-controlgroup-label-contents\" )\n\t\t\t\t.contents().unwrap();\n\t\t}\n\t},\n\n\t_initWidgets: function() {\n\t\tvar that = this,\n\t\t\tchildWidgets = [];\n\n\t\t// First we iterate over each of the items options\n\t\t$.each( this.options.items, function( widget, selector ) {\n\t\t\tvar labels;\n\t\t\tvar options = {};\n\n\t\t\t// Make sure the widget has a selector set\n\t\t\tif ( !selector ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( widget === \"controlgroupLabel\" ) {\n\t\t\t\tlabels = that.element.find( selector );\n\t\t\t\tlabels.each( function() {\n\t\t\t\t\tvar element = $( this );\n\n\t\t\t\t\tif ( element.children( \".ui-controlgroup-label-contents\" ).length ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\telement.contents()\n\t\t\t\t\t\t.wrapAll( \"<span class='ui-controlgroup-label-contents'></span>\" );\n\t\t\t\t} );\n\t\t\t\tthat._addClass( labels, null, \"ui-widget ui-widget-content ui-state-default\" );\n\t\t\t\tchildWidgets = childWidgets.concat( labels.get() );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Make sure the widget actually exists\n\t\t\tif ( !$.fn[ widget ] ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// We assume everything is in the middle to start because we can't determine\n\t\t\t// first / last elements until all enhancments are done.\n\t\t\tif ( that[ \"_\" + widget + \"Options\" ] ) {\n\t\t\t\toptions = that[ \"_\" + widget + \"Options\" ]( \"middle\" );\n\t\t\t} else {\n\t\t\t\toptions = { classes: {} };\n\t\t\t}\n\n\t\t\t// Find instances of this widget inside controlgroup and init them\n\t\t\tthat.element\n\t\t\t\t.find( selector )\n\t\t\t\t.each( function() {\n\t\t\t\t\tvar element = $( this );\n\t\t\t\t\tvar instance = element[ widget ]( \"instance\" );\n\n\t\t\t\t\t// We need to clone the default options for this type of widget to avoid\n\t\t\t\t\t// polluting the variable options which has a wider scope than a single widget.\n\t\t\t\t\tvar instanceOptions = $.widget.extend( {}, options );\n\n\t\t\t\t\t// If the button is the child of a spinner ignore it\n\t\t\t\t\t// TODO: Find a more generic solution\n\t\t\t\t\tif ( widget === \"button\" && element.parent( \".ui-spinner\" ).length ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Create the widget if it doesn't exist\n\t\t\t\t\tif ( !instance ) {\n\t\t\t\t\t\tinstance = element[ widget ]()[ widget ]( \"instance\" );\n\t\t\t\t\t}\n\t\t\t\t\tif ( instance ) {\n\t\t\t\t\t\tinstanceOptions.classes =\n\t\t\t\t\t\t\tthat._resolveClassesValues( instanceOptions.classes, instance );\n\t\t\t\t\t}\n\t\t\t\t\telement[ widget ]( instanceOptions );\n\n\t\t\t\t\t// Store an instance of the controlgroup to be able to reference\n\t\t\t\t\t// from the outermost element for changing options and refresh\n\t\t\t\t\tvar widgetElement = element[ widget ]( \"widget\" );\n\t\t\t\t\t$.data( widgetElement[ 0 ], \"ui-controlgroup-data\",\n\t\t\t\t\t\tinstance ? instance : element[ widget ]( \"instance\" ) );\n\n\t\t\t\t\tchildWidgets.push( widgetElement[ 0 ] );\n\t\t\t\t} );\n\t\t} );\n\n\t\tthis.childWidgets = $( $.unique( childWidgets ) );\n\t\tthis._addClass( this.childWidgets, \"ui-controlgroup-item\" );\n\t},\n\n\t_callChildMethod: function( method ) {\n\t\tthis.childWidgets.each( function() {\n\t\t\tvar element = $( this ),\n\t\t\t\tdata = element.data( \"ui-controlgroup-data\" );\n\t\t\tif ( data && data[ method ] ) {\n\t\t\t\tdata[ method ]();\n\t\t\t}\n\t\t} );\n\t},\n\n\t_updateCornerClass: function( element, position ) {\n\t\tvar remove = \"ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all\";\n\t\tvar add = this._buildSimpleOptions( position, \"label\" ).classes.label;\n\n\t\tthis._removeClass( element, null, remove );\n\t\tthis._addClass( element, null, add );\n\t},\n\n\t_buildSimpleOptions: function( position, key ) {\n\t\tvar direction = this.options.direction === \"vertical\";\n\t\tvar result = {\n\t\t\tclasses: {}\n\t\t};\n\t\tresult.classes[ key ] = {\n\t\t\t\"middle\": \"\",\n\t\t\t\"first\": \"ui-corner-\" + ( direction ? \"top\" : \"left\" ),\n\t\t\t\"last\": \"ui-corner-\" + ( direction ? \"bottom\" : \"right\" ),\n\t\t\t\"only\": \"ui-corner-all\"\n\t\t}[ position ];\n\n\t\treturn result;\n\t},\n\n\t_spinnerOptions: function( position ) {\n\t\tvar options = this._buildSimpleOptions( position, \"ui-spinner\" );\n\n\t\toptions.classes[ \"ui-spinner-up\" ] = \"\";\n\t\toptions.classes[ \"ui-spinner-down\" ] = \"\";\n\n\t\treturn options;\n\t},\n\n\t_buttonOptions: function( position ) {\n\t\treturn this._buildSimpleOptions( position, \"ui-button\" );\n\t},\n\n\t_checkboxradioOptions: function( position ) {\n\t\treturn this._buildSimpleOptions( position, \"ui-checkboxradio-label\" );\n\t},\n\n\t_selectmenuOptions: function( position ) {\n\t\tvar direction = this.options.direction === \"vertical\";\n\t\treturn {\n\t\t\twidth: direction ? \"auto\" : false,\n\t\t\tclasses: {\n\t\t\t\tmiddle: {\n\t\t\t\t\t\"ui-selectmenu-button-open\": \"\",\n\t\t\t\t\t\"ui-selectmenu-button-closed\": \"\"\n\t\t\t\t},\n\t\t\t\tfirst: {\n\t\t\t\t\t\"ui-selectmenu-button-open\": \"ui-corner-\" + ( direction ? \"top\" : \"tl\" ),\n\t\t\t\t\t\"ui-selectmenu-button-closed\": \"ui-corner-\" + ( direction ? \"top\" : \"left\" )\n\t\t\t\t},\n\t\t\t\tlast: {\n\t\t\t\t\t\"ui-selectmenu-button-open\": direction ? \"\" : \"ui-corner-tr\",\n\t\t\t\t\t\"ui-selectmenu-button-closed\": \"ui-corner-\" + ( direction ? \"bottom\" : \"right\" )\n\t\t\t\t},\n\t\t\t\tonly: {\n\t\t\t\t\t\"ui-selectmenu-button-open\": \"ui-corner-top\",\n\t\t\t\t\t\"ui-selectmenu-button-closed\": \"ui-corner-all\"\n\t\t\t\t}\n\n\t\t\t}[ position ]\n\t\t};\n\t},\n\n\t_resolveClassesValues: function( classes, instance ) {\n\t\tvar result = {};\n\t\t$.each( classes, function( key ) {\n\t\t\tvar current = instance.options.classes[ key ] || \"\";\n\t\t\tcurrent = $.trim( current.replace( controlgroupCornerRegex, \"\" ) );\n\t\t\tresult[ key ] = ( current + \" \" + classes[ key ] ).replace( /\\s+/g, \" \" );\n\t\t} );\n\t\treturn result;\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"direction\" ) {\n\t\t\tthis._removeClass( \"ui-controlgroup-\" + this.options.direction );\n\t\t}\n\n\t\tthis._super( key, value );\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis._callChildMethod( value ? \"disable\" : \"enable\" );\n\t\t\treturn;\n\t\t}\n\n\t\tthis.refresh();\n\t},\n\n\trefresh: function() {\n\t\tvar children,\n\t\t\tthat = this;\n\n\t\tthis._addClass( \"ui-controlgroup ui-controlgroup-\" + this.options.direction );\n\n\t\tif ( this.options.direction === \"horizontal\" ) {\n\t\t\tthis._addClass( null, \"ui-helper-clearfix\" );\n\t\t}\n\t\tthis._initWidgets();\n\n\t\tchildren = this.childWidgets;\n\n\t\t// We filter here because we need to track all childWidgets not just the visible ones\n\t\tif ( this.options.onlyVisible ) {\n\t\t\tchildren = children.filter( \":visible\" );\n\t\t}\n\n\t\tif ( children.length ) {\n\n\t\t\t// We do this last because we need to make sure all enhancment is done\n\t\t\t// before determining first and last\n\t\t\t$.each( [ \"first\", \"last\" ], function( index, value ) {\n\t\t\t\tvar instance = children[ value ]().data( \"ui-controlgroup-data\" );\n\n\t\t\t\tif ( instance && that[ \"_\" + instance.widgetName + \"Options\" ] ) {\n\t\t\t\t\tvar options = that[ \"_\" + instance.widgetName + \"Options\" ](\n\t\t\t\t\t\tchildren.length === 1 ? \"only\" : value\n\t\t\t\t\t);\n\t\t\t\t\toptions.classes = that._resolveClassesValues( options.classes, instance );\n\t\t\t\t\tinstance.element[ instance.widgetName ]( options );\n\t\t\t\t} else {\n\t\t\t\t\tthat._updateCornerClass( children[ value ](), value );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t// Finally call the refresh method on each of the child widgets.\n\t\t\tthis._callChildMethod( \"refresh\" );\n\t\t}\n\t}\n} );\n\n/*!\n * jQuery UI Checkboxradio 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Checkboxradio\n//>>group: Widgets\n//>>description: Enhances a form with multiple themeable checkboxes or radio buttons.\n//>>docs: http://api.jqueryui.com/checkboxradio/\n//>>demos: http://jqueryui.com/checkboxradio/\n//>>css.structure: ../../themes/base/core.css\n//>>css.structure: ../../themes/base/button.css\n//>>css.structure: ../../themes/base/checkboxradio.css\n//>>css.theme: ../../themes/base/theme.css\n\n\n\n$.widget( \"ui.checkboxradio\", [ $.ui.formResetMixin, {\n\tversion: \"1.12.1\",\n\toptions: {\n\t\tdisabled: null,\n\t\tlabel: null,\n\t\ticon: true,\n\t\tclasses: {\n\t\t\t\"ui-checkboxradio-label\": \"ui-corner-all\",\n\t\t\t\"ui-checkboxradio-icon\": \"ui-corner-all\"\n\t\t}\n\t},\n\n\t_getCreateOptions: function() {\n\t\tvar disabled, labels;\n\t\tvar that = this;\n\t\tvar options = this._super() || {};\n\n\t\t// We read the type here, because it makes more sense to throw a element type error first,\n\t\t// rather then the error for lack of a label. Often if its the wrong type, it\n\t\t// won't have a label (e.g. calling on a div, btn, etc)\n\t\tthis._readType();\n\n\t\tlabels = this.element.labels();\n\n\t\t// If there are multiple labels, use the last one\n\t\tthis.label = $( labels[ labels.length - 1 ] );\n\t\tif ( !this.label.length ) {\n\t\t\t$.error( \"No label found for checkboxradio widget\" );\n\t\t}\n\n\t\tthis.originalLabel = \"\";\n\n\t\t// We need to get the label text but this may also need to make sure it does not contain the\n\t\t// input itself.\n\t\tthis.label.contents().not( this.element[ 0 ] ).each( function() {\n\n\t\t\t// The label contents could be text, html, or a mix. We concat each element to get a\n\t\t\t// string representation of the label, without the input as part of it.\n\t\t\tthat.originalLabel += this.nodeType === 3 ? $( this ).text() : this.outerHTML;\n\t\t} );\n\n\t\t// Set the label option if we found label text\n\t\tif ( this.originalLabel ) {\n\t\t\toptions.label = this.originalLabel;\n\t\t}\n\n\t\tdisabled = this.element[ 0 ].disabled;\n\t\tif ( disabled != null ) {\n\t\t\toptions.disabled = disabled;\n\t\t}\n\t\treturn options;\n\t},\n\n\t_create: function() {\n\t\tvar checked = this.element[ 0 ].checked;\n\n\t\tthis._bindFormResetHandler();\n\n\t\tif ( this.options.disabled == null ) {\n\t\t\tthis.options.disabled = this.element[ 0 ].disabled;\n\t\t}\n\n\t\tthis._setOption( \"disabled\", this.options.disabled );\n\t\tthis._addClass( \"ui-checkboxradio\", \"ui-helper-hidden-accessible\" );\n\t\tthis._addClass( this.label, \"ui-checkboxradio-label\", \"ui-button ui-widget\" );\n\n\t\tif ( this.type === \"radio\" ) {\n\t\t\tthis._addClass( this.label, \"ui-checkboxradio-radio-label\" );\n\t\t}\n\n\t\tif ( this.options.label && this.options.label !== this.originalLabel ) {\n\t\t\tthis._updateLabel();\n\t\t} else if ( this.originalLabel ) {\n\t\t\tthis.options.label = this.originalLabel;\n\t\t}\n\n\t\tthis._enhance();\n\n\t\tif ( checked ) {\n\t\t\tthis._addClass( this.label, \"ui-checkboxradio-checked\", \"ui-state-active\" );\n\t\t\tif ( this.icon ) {\n\t\t\t\tthis._addClass( this.icon, null, \"ui-state-hover\" );\n\t\t\t}\n\t\t}\n\n\t\tthis._on( {\n\t\t\tchange: \"_toggleClasses\",\n\t\t\tfocus: function() {\n\t\t\t\tthis._addClass( this.label, null, \"ui-state-focus ui-visual-focus\" );\n\t\t\t},\n\t\t\tblur: function() {\n\t\t\t\tthis._removeClass( this.label, null, \"ui-state-focus ui-visual-focus\" );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_readType: function() {\n\t\tvar nodeName = this.element[ 0 ].nodeName.toLowerCase();\n\t\tthis.type = this.element[ 0 ].type;\n\t\tif ( nodeName !== \"input\" || !/radio|checkbox/.test( this.type ) ) {\n\t\t\t$.error( \"Can't create checkboxradio on element.nodeName=\" + nodeName +\n\t\t\t\t\" and element.type=\" + this.type );\n\t\t}\n\t},\n\n\t// Support jQuery Mobile enhanced option\n\t_enhance: function() {\n\t\tthis._updateIcon( this.element[ 0 ].checked );\n\t},\n\n\twidget: function() {\n\t\treturn this.label;\n\t},\n\n\t_getRadioGroup: function() {\n\t\tvar group;\n\t\tvar name = this.element[ 0 ].name;\n\t\tvar nameSelector = \"input[name='\" + $.ui.escapeSelector( name ) + \"']\";\n\n\t\tif ( !name ) {\n\t\t\treturn $( [] );\n\t\t}\n\n\t\tif ( this.form.length ) {\n\t\t\tgroup = $( this.form[ 0 ].elements ).filter( nameSelector );\n\t\t} else {\n\n\t\t\t// Not inside a form, check all inputs that also are not inside a form\n\t\t\tgroup = $( nameSelector ).filter( function() {\n\t\t\t\treturn $( this ).form().length === 0;\n\t\t\t} );\n\t\t}\n\n\t\treturn group.not( this.element );\n\t},\n\n\t_toggleClasses: function() {\n\t\tvar checked = this.element[ 0 ].checked;\n\t\tthis._toggleClass( this.label, \"ui-checkboxradio-checked\", \"ui-state-active\", checked );\n\n\t\tif ( this.options.icon && this.type === \"checkbox\" ) {\n\t\t\tthis._toggleClass( this.icon, null, \"ui-icon-check ui-state-checked\", checked )\n\t\t\t\t._toggleClass( this.icon, null, \"ui-icon-blank\", !checked );\n\t\t}\n\n\t\tif ( this.type === \"radio\" ) {\n\t\t\tthis._getRadioGroup()\n\t\t\t\t.each( function() {\n\t\t\t\t\tvar instance = $( this ).checkboxradio( \"instance\" );\n\n\t\t\t\t\tif ( instance ) {\n\t\t\t\t\t\tinstance._removeClass( instance.label,\n\t\t\t\t\t\t\t\"ui-checkboxradio-checked\", \"ui-state-active\" );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}\n\t},\n\n\t_destroy: function() {\n\t\tthis._unbindFormResetHandler();\n\n\t\tif ( this.icon ) {\n\t\t\tthis.icon.remove();\n\t\t\tthis.iconSpace.remove();\n\t\t}\n\t},\n\n\t_setOption: function( key, value ) {\n\n\t\t// We don't allow the value to be set to nothing\n\t\tif ( key === \"label\" && !value ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._super( key, value );\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis._toggleClass( this.label, null, \"ui-state-disabled\", value );\n\t\t\tthis.element[ 0 ].disabled = value;\n\n\t\t\t// Don't refresh when setting disabled\n\t\t\treturn;\n\t\t}\n\t\tthis.refresh();\n\t},\n\n\t_updateIcon: function( checked ) {\n\t\tvar toAdd = \"ui-icon ui-icon-background \";\n\n\t\tif ( this.options.icon ) {\n\t\t\tif ( !this.icon ) {\n\t\t\t\tthis.icon = $( \"<span>\" );\n\t\t\t\tthis.iconSpace = $( \"<span> </span>\" );\n\t\t\t\tthis._addClass( this.iconSpace, \"ui-checkboxradio-icon-space\" );\n\t\t\t}\n\n\t\t\tif ( this.type === \"checkbox\" ) {\n\t\t\t\ttoAdd += checked ? \"ui-icon-check ui-state-checked\" : \"ui-icon-blank\";\n\t\t\t\tthis._removeClass( this.icon, null, checked ? \"ui-icon-blank\" : \"ui-icon-check\" );\n\t\t\t} else {\n\t\t\t\ttoAdd += \"ui-icon-blank\";\n\t\t\t}\n\t\t\tthis._addClass( this.icon, \"ui-checkboxradio-icon\", toAdd );\n\t\t\tif ( !checked ) {\n\t\t\t\tthis._removeClass( this.icon, null, \"ui-icon-check ui-state-checked\" );\n\t\t\t}\n\t\t\tthis.icon.prependTo( this.label ).after( this.iconSpace );\n\t\t} else if ( this.icon !== undefined ) {\n\t\t\tthis.icon.remove();\n\t\t\tthis.iconSpace.remove();\n\t\t\tdelete this.icon;\n\t\t}\n\t},\n\n\t_updateLabel: function() {\n\n\t\t// Remove the contents of the label ( minus the icon, icon space, and input )\n\t\tvar contents = this.label.contents().not( this.element[ 0 ] );\n\t\tif ( this.icon ) {\n\t\t\tcontents = contents.not( this.icon[ 0 ] );\n\t\t}\n\t\tif ( this.iconSpace ) {\n\t\t\tcontents = contents.not( this.iconSpace[ 0 ] );\n\t\t}\n\t\tcontents.remove();\n\n\t\tthis.label.append( this.options.label );\n\t},\n\n\trefresh: function() {\n\t\tvar checked = this.element[ 0 ].checked,\n\t\t\tisDisabled = this.element[ 0 ].disabled;\n\n\t\tthis._updateIcon( checked );\n\t\tthis._toggleClass( this.label, \"ui-checkboxradio-checked\", \"ui-state-active\", checked );\n\t\tif ( this.options.label !== null ) {\n\t\t\tthis._updateLabel();\n\t\t}\n\n\t\tif ( isDisabled !== this.options.disabled ) {\n\t\t\tthis._setOptions( { \"disabled\": isDisabled } );\n\t\t}\n\t}\n\n} ] );\n\nvar widgetsCheckboxradio = $.ui.checkboxradio;\n\n\n/*!\n * jQuery UI Button 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Button\n//>>group: Widgets\n//>>description: Enhances a form with themeable buttons.\n//>>docs: http://api.jqueryui.com/button/\n//>>demos: http://jqueryui.com/button/\n//>>css.structure: ../../themes/base/core.css\n//>>css.structure: ../../themes/base/button.css\n//>>css.theme: ../../themes/base/theme.css\n\n\n\n$.widget( \"ui.button\", {\n\tversion: \"1.12.1\",\n\tdefaultElement: \"<button>\",\n\toptions: {\n\t\tclasses: {\n\t\t\t\"ui-button\": \"ui-corner-all\"\n\t\t},\n\t\tdisabled: null,\n\t\ticon: null,\n\t\ticonPosition: \"beginning\",\n\t\tlabel: null,\n\t\tshowLabel: true\n\t},\n\n\t_getCreateOptions: function() {\n\t\tvar disabled,\n\n\t\t\t// This is to support cases like in jQuery Mobile where the base widget does have\n\t\t\t// an implementation of _getCreateOptions\n\t\t\toptions = this._super() || {};\n\n\t\tthis.isInput = this.element.is( \"input\" );\n\n\t\tdisabled = this.element[ 0 ].disabled;\n\t\tif ( disabled != null ) {\n\t\t\toptions.disabled = disabled;\n\t\t}\n\n\t\tthis.originalLabel = this.isInput ? this.element.val() : this.element.html();\n\t\tif ( this.originalLabel ) {\n\t\t\toptions.label = this.originalLabel;\n\t\t}\n\n\t\treturn options;\n\t},\n\n\t_create: function() {\n\t\tif ( !this.option.showLabel & !this.options.icon ) {\n\t\t\tthis.options.showLabel = true;\n\t\t}\n\n\t\t// We have to check the option again here even though we did in _getCreateOptions,\n\t\t// because null may have been passed on init which would override what was set in\n\t\t// _getCreateOptions\n\t\tif ( this.options.disabled == null ) {\n\t\t\tthis.options.disabled = this.element[ 0 ].disabled || false;\n\t\t}\n\n\t\tthis.hasTitle = !!this.element.attr( \"title\" );\n\n\t\t// Check to see if the label needs to be set or if its already correct\n\t\tif ( this.options.label && this.options.label !== this.originalLabel ) {\n\t\t\tif ( this.isInput ) {\n\t\t\t\tthis.element.val( this.options.label );\n\t\t\t} else {\n\t\t\t\tthis.element.html( this.options.label );\n\t\t\t}\n\t\t}\n\t\tthis._addClass( \"ui-button\", \"ui-widget\" );\n\t\tthis._setOption( \"disabled\", this.options.disabled );\n\t\tthis._enhance();\n\n\t\tif ( this.element.is( \"a\" ) ) {\n\t\t\tthis._on( {\n\t\t\t\t\"keyup\": function( event ) {\n\t\t\t\t\tif ( event.keyCode === $.ui.keyCode.SPACE ) {\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t// Support: PhantomJS <= 1.9, IE 8 Only\n\t\t\t\t\t\t// If a native click is available use it so we actually cause navigation\n\t\t\t\t\t\t// otherwise just trigger a click event\n\t\t\t\t\t\tif ( this.element[ 0 ].click ) {\n\t\t\t\t\t\t\tthis.element[ 0 ].click();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.element.trigger( \"click\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t},\n\n\t_enhance: function() {\n\t\tif ( !this.element.is( \"button\" ) ) {\n\t\t\tthis.element.attr( \"role\", \"button\" );\n\t\t}\n\n\t\tif ( this.options.icon ) {\n\t\t\tthis._updateIcon( \"icon\", this.options.icon );\n\t\t\tthis._updateTooltip();\n\t\t}\n\t},\n\n\t_updateTooltip: function() {\n\t\tthis.title = this.element.attr( \"title\" );\n\n\t\tif ( !this.options.showLabel && !this.title ) {\n\t\t\tthis.element.attr( \"title\", this.options.label );\n\t\t}\n\t},\n\n\t_updateIcon: function( option, value ) {\n\t\tvar icon = option !== \"iconPosition\",\n\t\t\tposition = icon ? this.options.iconPosition : value,\n\t\t\tdisplayBlock = position === \"top\" || position === \"bottom\";\n\n\t\t// Create icon\n\t\tif ( !this.icon ) {\n\t\t\tthis.icon = $( \"<span>\" );\n\n\t\t\tthis._addClass( this.icon, \"ui-button-icon\", \"ui-icon\" );\n\n\t\t\tif ( !this.options.showLabel ) {\n\t\t\t\tthis._addClass( \"ui-button-icon-only\" );\n\t\t\t}\n\t\t} else if ( icon ) {\n\n\t\t\t// If we are updating the icon remove the old icon class\n\t\t\tthis._removeClass( this.icon, null, this.options.icon );\n\t\t}\n\n\t\t// If we are updating the icon add the new icon class\n\t\tif ( icon ) {\n\t\t\tthis._addClass( this.icon, null, value );\n\t\t}\n\n\t\tthis._attachIcon( position );\n\n\t\t// If the icon is on top or bottom we need to add the ui-widget-icon-block class and remove\n\t\t// the iconSpace if there is one.\n\t\tif ( displayBlock ) {\n\t\t\tthis._addClass( this.icon, null, \"ui-widget-icon-block\" );\n\t\t\tif ( this.iconSpace ) {\n\t\t\t\tthis.iconSpace.remove();\n\t\t\t}\n\t\t} else {\n\n\t\t\t// Position is beginning or end so remove the ui-widget-icon-block class and add the\n\t\t\t// space if it does not exist\n\t\t\tif ( !this.iconSpace ) {\n\t\t\t\tthis.iconSpace = $( \"<span> </span>\" );\n\t\t\t\tthis._addClass( this.iconSpace, \"ui-button-icon-space\" );\n\t\t\t}\n\t\t\tthis._removeClass( this.icon, null, \"ui-wiget-icon-block\" );\n\t\t\tthis._attachIconSpace( position );\n\t\t}\n\t},\n\n\t_destroy: function() {\n\t\tthis.element.removeAttr( \"role\" );\n\n\t\tif ( this.icon ) {\n\t\t\tthis.icon.remove();\n\t\t}\n\t\tif ( this.iconSpace ) {\n\t\t\tthis.iconSpace.remove();\n\t\t}\n\t\tif ( !this.hasTitle ) {\n\t\t\tthis.element.removeAttr( \"title\" );\n\t\t}\n\t},\n\n\t_attachIconSpace: function( iconPosition ) {\n\t\tthis.icon[ /^(?:end|bottom)/.test( iconPosition ) ? \"before\" : \"after\" ]( this.iconSpace );\n\t},\n\n\t_attachIcon: function( iconPosition ) {\n\t\tthis.element[ /^(?:end|bottom)/.test( iconPosition ) ? \"append\" : \"prepend\" ]( this.icon );\n\t},\n\n\t_setOptions: function( options ) {\n\t\tvar newShowLabel = options.showLabel === undefined ?\n\t\t\t\tthis.options.showLabel :\n\t\t\t\toptions.showLabel,\n\t\t\tnewIcon = options.icon === undefined ? this.options.icon : options.icon;\n\n\t\tif ( !newShowLabel && !newIcon ) {\n\t\t\toptions.showLabel = true;\n\t\t}\n\t\tthis._super( options );\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"icon\" ) {\n\t\t\tif ( value ) {\n\t\t\t\tthis._updateIcon( key, value );\n\t\t\t} else if ( this.icon ) {\n\t\t\t\tthis.icon.remove();\n\t\t\t\tif ( this.iconSpace ) {\n\t\t\t\t\tthis.iconSpace.remove();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( key === \"iconPosition\" ) {\n\t\t\tthis._updateIcon( key, value );\n\t\t}\n\n\t\t// Make sure we can't end up with a button that has neither text nor icon\n\t\tif ( key === \"showLabel\" ) {\n\t\t\t\tthis._toggleClass( \"ui-button-icon-only\", null, !value );\n\t\t\t\tthis._updateTooltip();\n\t\t}\n\n\t\tif ( key === \"label\" ) {\n\t\t\tif ( this.isInput ) {\n\t\t\t\tthis.element.val( value );\n\t\t\t} else {\n\n\t\t\t\t// If there is an icon, append it, else nothing then append the value\n\t\t\t\t// this avoids removal of the icon when setting label text\n\t\t\t\tthis.element.html( value );\n\t\t\t\tif ( this.icon ) {\n\t\t\t\t\tthis._attachIcon( this.options.iconPosition );\n\t\t\t\t\tthis._attachIconSpace( this.options.iconPosition );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis._super( key, value );\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis._toggleClass( null, \"ui-state-disabled\", value );\n\t\t\tthis.element[ 0 ].disabled = value;\n\t\t\tif ( value ) {\n\t\t\t\tthis.element.blur();\n\t\t\t}\n\t\t}\n\t},\n\n\trefresh: function() {\n\n\t\t// Make sure to only check disabled if its an element that supports this otherwise\n\t\t// check for the disabled class to determine state\n\t\tvar isDisabled = this.element.is( \"input, button\" ) ?\n\t\t\tthis.element[ 0 ].disabled : this.element.hasClass( \"ui-button-disabled\" );\n\n\t\tif ( isDisabled !== this.options.disabled ) {\n\t\t\tthis._setOptions( { disabled: isDisabled } );\n\t\t}\n\n\t\tthis._updateTooltip();\n\t}\n} );\n\n// DEPRECATED\nif ( $.uiBackCompat !== false ) {\n\n\t// Text and Icons options\n\t$.widget( \"ui.button\", $.ui.button, {\n\t\toptions: {\n\t\t\ttext: true,\n\t\t\ticons: {\n\t\t\t\tprimary: null,\n\t\t\t\tsecondary: null\n\t\t\t}\n\t\t},\n\n\t\t_create: function() {\n\t\t\tif ( this.options.showLabel && !this.options.text ) {\n\t\t\t\tthis.options.showLabel = this.options.text;\n\t\t\t}\n\t\t\tif ( !this.options.showLabel && this.options.text ) {\n\t\t\t\tthis.options.text = this.options.showLabel;\n\t\t\t}\n\t\t\tif ( !this.options.icon && ( this.options.icons.primary ||\n\t\t\t\t\tthis.options.icons.secondary ) ) {\n\t\t\t\tif ( this.options.icons.primary ) {\n\t\t\t\t\tthis.options.icon = this.options.icons.primary;\n\t\t\t\t} else {\n\t\t\t\t\tthis.options.icon = this.options.icons.secondary;\n\t\t\t\t\tthis.options.iconPosition = \"end\";\n\t\t\t\t}\n\t\t\t} else if ( this.options.icon ) {\n\t\t\t\tthis.options.icons.primary = this.options.icon;\n\t\t\t}\n\t\t\tthis._super();\n\t\t},\n\n\t\t_setOption: function( key, value ) {\n\t\t\tif ( key === \"text\" ) {\n\t\t\t\tthis._super( \"showLabel\", value );\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( key === \"showLabel\" ) {\n\t\t\t\tthis.options.text = value;\n\t\t\t}\n\t\t\tif ( key === \"icon\" ) {\n\t\t\t\tthis.options.icons.primary = value;\n\t\t\t}\n\t\t\tif ( key === \"icons\" ) {\n\t\t\t\tif ( value.primary ) {\n\t\t\t\t\tthis._super( \"icon\", value.primary );\n\t\t\t\t\tthis._super( \"iconPosition\", \"beginning\" );\n\t\t\t\t} else if ( value.secondary ) {\n\t\t\t\t\tthis._super( \"icon\", value.secondary );\n\t\t\t\t\tthis._super( \"iconPosition\", \"end\" );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._superApply( arguments );\n\t\t}\n\t} );\n\n\t$.fn.button = ( function( orig ) {\n\t\treturn function() {\n\t\t\tif ( !this.length || ( this.length && this[ 0 ].tagName !== \"INPUT\" ) ||\n\t\t\t\t\t( this.length && this[ 0 ].tagName === \"INPUT\" && (\n\t\t\t\t\t\tthis.attr( \"type\" ) !== \"checkbox\" && this.attr( \"type\" ) !== \"radio\"\n\t\t\t\t\t) ) ) {\n\t\t\t\treturn orig.apply( this, arguments );\n\t\t\t}\n\t\t\tif ( !$.ui.checkboxradio ) {\n\t\t\t\t$.error( \"Checkboxradio widget missing\" );\n\t\t\t}\n\t\t\tif ( arguments.length === 0 ) {\n\t\t\t\treturn this.checkboxradio( {\n\t\t\t\t\t\"icon\": false\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn this.checkboxradio.apply( this, arguments );\n\t\t};\n\t} )( $.fn.button );\n\n\t$.fn.buttonset = function() {\n\t\tif ( !$.ui.controlgroup ) {\n\t\t\t$.error( \"Controlgroup widget missing\" );\n\t\t}\n\t\tif ( arguments[ 0 ] === \"option\" && arguments[ 1 ] === \"items\" && arguments[ 2 ] ) {\n\t\t\treturn this.controlgroup.apply( this,\n\t\t\t\t[ arguments[ 0 ], \"items.button\", arguments[ 2 ] ] );\n\t\t}\n\t\tif ( arguments[ 0 ] === \"option\" && arguments[ 1 ] === \"items\" ) {\n\t\t\treturn this.controlgroup.apply( this, [ arguments[ 0 ], \"items.button\" ] );\n\t\t}\n\t\tif ( typeof arguments[ 0 ] === \"object\" && arguments[ 0 ].items ) {\n\t\t\targuments[ 0 ].items = {\n\t\t\t\tbutton: arguments[ 0 ].items\n\t\t\t};\n\t\t}\n\t\treturn this.controlgroup.apply( this, arguments );\n\t};\n}\n\nvar widgetsButton = $.ui.button;\n\n\n// jscs:disable maximumLineLength\n/* jscs:disable requireCamelCaseOrUpperCaseIdentifiers */\n/*!\n * jQuery UI Datepicker 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Datepicker\n//>>group: Widgets\n//>>description: Displays a calendar from an input or inline for selecting dates.\n//>>docs: http://api.jqueryui.com/datepicker/\n//>>demos: http://jqueryui.com/datepicker/\n//>>css.structure: ../../themes/base/core.css\n//>>css.structure: ../../themes/base/datepicker.css\n//>>css.theme: ../../themes/base/theme.css\n\n\n\n$.extend( $.ui, { datepicker: { version: \"1.12.1\" } } );\n\nvar datepicker_instActive;\n\nfunction datepicker_getZindex( elem ) {\n\tvar position, value;\n\twhile ( elem.length && elem[ 0 ] !== document ) {\n\n\t\t// Ignore z-index if position is set to a value where z-index is ignored by the browser\n\t\t// This makes behavior of this function consistent across browsers\n\t\t// WebKit always returns auto if the element is positioned\n\t\tposition = elem.css( \"position\" );\n\t\tif ( position === \"absolute\" || position === \"relative\" || position === \"fixed\" ) {\n\n\t\t\t// IE returns 0 when zIndex is not specified\n\t\t\t// other browsers return a string\n\t\t\t// we ignore the case of nested elements with an explicit value of 0\n\t\t\t// <div style=\"z-index: -10;\"><div style=\"z-index: 0;\"></div></div>\n\t\t\tvalue = parseInt( elem.css( \"zIndex\" ), 10 );\n\t\t\tif ( !isNaN( value ) && value !== 0 ) {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t\telem = elem.parent();\n\t}\n\n\treturn 0;\n}\n/* Date picker manager.\n   Use the singleton instance of this class, $.datepicker, to interact with the date picker.\n   Settings for (groups of) date pickers are maintained in an instance object,\n   allowing multiple different settings on the same page. */\n\nfunction Datepicker() {\n\tthis._curInst = null; // The current instance in use\n\tthis._keyEvent = false; // If the last event was a key event\n\tthis._disabledInputs = []; // List of date picker inputs that have been disabled\n\tthis._datepickerShowing = false; // True if the popup picker is showing , false if not\n\tthis._inDialog = false; // True if showing within a \"dialog\", false if not\n\tthis._mainDivId = \"ui-datepicker-div\"; // The ID of the main datepicker division\n\tthis._inlineClass = \"ui-datepicker-inline\"; // The name of the inline marker class\n\tthis._appendClass = \"ui-datepicker-append\"; // The name of the append marker class\n\tthis._triggerClass = \"ui-datepicker-trigger\"; // The name of the trigger marker class\n\tthis._dialogClass = \"ui-datepicker-dialog\"; // The name of the dialog marker class\n\tthis._disableClass = \"ui-datepicker-disabled\"; // The name of the disabled covering marker class\n\tthis._unselectableClass = \"ui-datepicker-unselectable\"; // The name of the unselectable cell marker class\n\tthis._currentClass = \"ui-datepicker-current-day\"; // The name of the current day marker class\n\tthis._dayOverClass = \"ui-datepicker-days-cell-over\"; // The name of the day hover marker class\n\tthis.regional = []; // Available regional settings, indexed by language code\n\tthis.regional[ \"\" ] = { // Default regional settings\n\t\tcloseText: \"Done\", // Display text for close link\n\t\tprevText: \"Prev\", // Display text for previous month link\n\t\tnextText: \"Next\", // Display text for next month link\n\t\tcurrentText: \"Today\", // Display text for current month link\n\t\tmonthNames: [ \"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\n\t\t\t\"July\",\"August\",\"September\",\"October\",\"November\",\"December\" ], // Names of months for drop-down and formatting\n\t\tmonthNamesShort: [ \"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\" ], // For formatting\n\t\tdayNames: [ \"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\" ], // For formatting\n\t\tdayNamesShort: [ \"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\" ], // For formatting\n\t\tdayNamesMin: [ \"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\" ], // Column headings for days starting at Sunday\n\t\tweekHeader: \"Wk\", // Column header for week of the year\n\t\tdateFormat: \"mm/dd/yy\", // See format options on parseDate\n\t\tfirstDay: 0, // The first day of the week, Sun = 0, Mon = 1, ...\n\t\tisRTL: false, // True if right-to-left language, false if left-to-right\n\t\tshowMonthAfterYear: false, // True if the year select precedes month, false for month then year\n\t\tyearSuffix: \"\" // Additional text to append to the year in the month headers\n\t};\n\tthis._defaults = { // Global defaults for all the date picker instances\n\t\tshowOn: \"focus\", // \"focus\" for popup on focus,\n\t\t\t// \"button\" for trigger button, or \"both\" for either\n\t\tshowAnim: \"fadeIn\", // Name of jQuery animation for popup\n\t\tshowOptions: {}, // Options for enhanced animations\n\t\tdefaultDate: null, // Used when field is blank: actual date,\n\t\t\t// +/-number for offset from today, null for today\n\t\tappendText: \"\", // Display text following the input box, e.g. showing the format\n\t\tbuttonText: \"...\", // Text for trigger button\n\t\tbuttonImage: \"\", // URL for trigger button image\n\t\tbuttonImageOnly: false, // True if the image appears alone, false if it appears on a button\n\t\thideIfNoPrevNext: false, // True to hide next/previous month links\n\t\t\t// if not applicable, false to just disable them\n\t\tnavigationAsDateFormat: false, // True if date formatting applied to prev/today/next links\n\t\tgotoCurrent: false, // True if today link goes back to current selection instead\n\t\tchangeMonth: false, // True if month can be selected directly, false if only prev/next\n\t\tchangeYear: false, // True if year can be selected directly, false if only prev/next\n\t\tyearRange: \"c-10:c+10\", // Range of years to display in drop-down,\n\t\t\t// either relative to today's year (-nn:+nn), relative to currently displayed year\n\t\t\t// (c-nn:c+nn), absolute (nnnn:nnnn), or a combination of the above (nnnn:-n)\n\t\tshowOtherMonths: false, // True to show dates in other months, false to leave blank\n\t\tselectOtherMonths: false, // True to allow selection of dates in other months, false for unselectable\n\t\tshowWeek: false, // True to show week of the year, false to not show it\n\t\tcalculateWeek: this.iso8601Week, // How to calculate the week of the year,\n\t\t\t// takes a Date and returns the number of the week for it\n\t\tshortYearCutoff: \"+10\", // Short year values < this are in the current century,\n\t\t\t// > this are in the previous century,\n\t\t\t// string value starting with \"+\" for current year + value\n\t\tminDate: null, // The earliest selectable date, or null for no limit\n\t\tmaxDate: null, // The latest selectable date, or null for no limit\n\t\tduration: \"fast\", // Duration of display/closure\n\t\tbeforeShowDay: null, // Function that takes a date and returns an array with\n\t\t\t// [0] = true if selectable, false if not, [1] = custom CSS class name(s) or \"\",\n\t\t\t// [2] = cell title (optional), e.g. $.datepicker.noWeekends\n\t\tbeforeShow: null, // Function that takes an input field and\n\t\t\t// returns a set of custom settings for the date picker\n\t\tonSelect: null, // Define a callback function when a date is selected\n\t\tonChangeMonthYear: null, // Define a callback function when the month or year is changed\n\t\tonClose: null, // Define a callback function when the datepicker is closed\n\t\tnumberOfMonths: 1, // Number of months to show at a time\n\t\tshowCurrentAtPos: 0, // The position in multipe months at which to show the current month (starting at 0)\n\t\tstepMonths: 1, // Number of months to step back/forward\n\t\tstepBigMonths: 12, // Number of months to step back/forward for the big links\n\t\taltField: \"\", // Selector for an alternate field to store selected dates into\n\t\taltFormat: \"\", // The date format to use for the alternate field\n\t\tconstrainInput: true, // The input is constrained by the current date format\n\t\tshowButtonPanel: false, // True to show button panel, false to not show it\n\t\tautoSize: false, // True to size the input for the date format, false to leave as is\n\t\tdisabled: false // The initial disabled state\n\t};\n\t$.extend( this._defaults, this.regional[ \"\" ] );\n\tthis.regional.en = $.extend( true, {}, this.regional[ \"\" ] );\n\tthis.regional[ \"en-US\" ] = $.extend( true, {}, this.regional.en );\n\tthis.dpDiv = datepicker_bindHover( $( \"<div id='\" + this._mainDivId + \"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>\" ) );\n}\n\n$.extend( Datepicker.prototype, {\n\t/* Class name added to elements to indicate already configured with a date picker. */\n\tmarkerClassName: \"hasDatepicker\",\n\n\t//Keep track of the maximum number of rows displayed (see #7043)\n\tmaxRows: 4,\n\n\t// TODO rename to \"widget\" when switching to widget factory\n\t_widgetDatepicker: function() {\n\t\treturn this.dpDiv;\n\t},\n\n\t/* Override the default settings for all instances of the date picker.\n\t * @param  settings  object - the new settings to use as defaults (anonymous object)\n\t * @return the manager object\n\t */\n\tsetDefaults: function( settings ) {\n\t\tdatepicker_extendRemove( this._defaults, settings || {} );\n\t\treturn this;\n\t},\n\n\t/* Attach the date picker to a jQuery selection.\n\t * @param  target\telement - the target input field or division or span\n\t * @param  settings  object - the new settings to use for this date picker instance (anonymous)\n\t */\n\t_attachDatepicker: function( target, settings ) {\n\t\tvar nodeName, inline, inst;\n\t\tnodeName = target.nodeName.toLowerCase();\n\t\tinline = ( nodeName === \"div\" || nodeName === \"span\" );\n\t\tif ( !target.id ) {\n\t\t\tthis.uuid += 1;\n\t\t\ttarget.id = \"dp\" + this.uuid;\n\t\t}\n\t\tinst = this._newInst( $( target ), inline );\n\t\tinst.settings = $.extend( {}, settings || {} );\n\t\tif ( nodeName === \"input\" ) {\n\t\t\tthis._connectDatepicker( target, inst );\n\t\t} else if ( inline ) {\n\t\t\tthis._inlineDatepicker( target, inst );\n\t\t}\n\t},\n\n\t/* Create a new instance object. */\n\t_newInst: function( target, inline ) {\n\t\tvar id = target[ 0 ].id.replace( /([^A-Za-z0-9_\\-])/g, \"\\\\\\\\$1\" ); // escape jQuery meta chars\n\t\treturn { id: id, input: target, // associated target\n\t\t\tselectedDay: 0, selectedMonth: 0, selectedYear: 0, // current selection\n\t\t\tdrawMonth: 0, drawYear: 0, // month being drawn\n\t\t\tinline: inline, // is datepicker inline or not\n\t\t\tdpDiv: ( !inline ? this.dpDiv : // presentation div\n\t\t\tdatepicker_bindHover( $( \"<div class='\" + this._inlineClass + \" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>\" ) ) ) };\n\t},\n\n\t/* Attach the date picker to an input field. */\n\t_connectDatepicker: function( target, inst ) {\n\t\tvar input = $( target );\n\t\tinst.append = $( [] );\n\t\tinst.trigger = $( [] );\n\t\tif ( input.hasClass( this.markerClassName ) ) {\n\t\t\treturn;\n\t\t}\n\t\tthis._attachments( input, inst );\n\t\tinput.addClass( this.markerClassName ).on( \"keydown\", this._doKeyDown ).\n\t\t\ton( \"keypress\", this._doKeyPress ).on( \"keyup\", this._doKeyUp );\n\t\tthis._autoSize( inst );\n\t\t$.data( target, \"datepicker\", inst );\n\n\t\t//If disabled option is true, disable the datepicker once it has been attached to the input (see ticket #5665)\n\t\tif ( inst.settings.disabled ) {\n\t\t\tthis._disableDatepicker( target );\n\t\t}\n\t},\n\n\t/* Make attachments based on settings. */\n\t_attachments: function( input, inst ) {\n\t\tvar showOn, buttonText, buttonImage,\n\t\t\tappendText = this._get( inst, \"appendText\" ),\n\t\t\tisRTL = this._get( inst, \"isRTL\" );\n\n\t\tif ( inst.append ) {\n\t\t\tinst.append.remove();\n\t\t}\n\t\tif ( appendText ) {\n\t\t\tinst.append = $( \"<span class='\" + this._appendClass + \"'>\" + appendText + \"</span>\" );\n\t\t\tinput[ isRTL ? \"before\" : \"after\" ]( inst.append );\n\t\t}\n\n\t\tinput.off( \"focus\", this._showDatepicker );\n\n\t\tif ( inst.trigger ) {\n\t\t\tinst.trigger.remove();\n\t\t}\n\n\t\tshowOn = this._get( inst, \"showOn\" );\n\t\tif ( showOn === \"focus\" || showOn === \"both\" ) { // pop-up date picker when in the marked field\n\t\t\tinput.on( \"focus\", this._showDatepicker );\n\t\t}\n\t\tif ( showOn === \"button\" || showOn === \"both\" ) { // pop-up date picker when button clicked\n\t\t\tbuttonText = this._get( inst, \"buttonText\" );\n\t\t\tbuttonImage = this._get( inst, \"buttonImage\" );\n\t\t\tinst.trigger = $( this._get( inst, \"buttonImageOnly\" ) ?\n\t\t\t\t$( \"<img/>\" ).addClass( this._triggerClass ).\n\t\t\t\t\tattr( { src: buttonImage, alt: buttonText, title: buttonText } ) :\n\t\t\t\t$( \"<button type='button'></button>\" ).addClass( this._triggerClass ).\n\t\t\t\t\thtml( !buttonImage ? buttonText : $( \"<img/>\" ).attr(\n\t\t\t\t\t{ src:buttonImage, alt:buttonText, title:buttonText } ) ) );\n\t\t\tinput[ isRTL ? \"before\" : \"after\" ]( inst.trigger );\n\t\t\tinst.trigger.on( \"click\", function() {\n\t\t\t\tif ( $.datepicker._datepickerShowing && $.datepicker._lastInput === input[ 0 ] ) {\n\t\t\t\t\t$.datepicker._hideDatepicker();\n\t\t\t\t} else if ( $.datepicker._datepickerShowing && $.datepicker._lastInput !== input[ 0 ] ) {\n\t\t\t\t\t$.datepicker._hideDatepicker();\n\t\t\t\t\t$.datepicker._showDatepicker( input[ 0 ] );\n\t\t\t\t} else {\n\t\t\t\t\t$.datepicker._showDatepicker( input[ 0 ] );\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t} );\n\t\t}\n\t},\n\n\t/* Apply the maximum length for the date format. */\n\t_autoSize: function( inst ) {\n\t\tif ( this._get( inst, \"autoSize\" ) && !inst.inline ) {\n\t\t\tvar findMax, max, maxI, i,\n\t\t\t\tdate = new Date( 2009, 12 - 1, 20 ), // Ensure double digits\n\t\t\t\tdateFormat = this._get( inst, \"dateFormat\" );\n\n\t\t\tif ( dateFormat.match( /[DM]/ ) ) {\n\t\t\t\tfindMax = function( names ) {\n\t\t\t\t\tmax = 0;\n\t\t\t\t\tmaxI = 0;\n\t\t\t\t\tfor ( i = 0; i < names.length; i++ ) {\n\t\t\t\t\t\tif ( names[ i ].length > max ) {\n\t\t\t\t\t\t\tmax = names[ i ].length;\n\t\t\t\t\t\t\tmaxI = i;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn maxI;\n\t\t\t\t};\n\t\t\t\tdate.setMonth( findMax( this._get( inst, ( dateFormat.match( /MM/ ) ?\n\t\t\t\t\t\"monthNames\" : \"monthNamesShort\" ) ) ) );\n\t\t\t\tdate.setDate( findMax( this._get( inst, ( dateFormat.match( /DD/ ) ?\n\t\t\t\t\t\"dayNames\" : \"dayNamesShort\" ) ) ) + 20 - date.getDay() );\n\t\t\t}\n\t\t\tinst.input.attr( \"size\", this._formatDate( inst, date ).length );\n\t\t}\n\t},\n\n\t/* Attach an inline date picker to a div. */\n\t_inlineDatepicker: function( target, inst ) {\n\t\tvar divSpan = $( target );\n\t\tif ( divSpan.hasClass( this.markerClassName ) ) {\n\t\t\treturn;\n\t\t}\n\t\tdivSpan.addClass( this.markerClassName ).append( inst.dpDiv );\n\t\t$.data( target, \"datepicker\", inst );\n\t\tthis._setDate( inst, this._getDefaultDate( inst ), true );\n\t\tthis._updateDatepicker( inst );\n\t\tthis._updateAlternate( inst );\n\n\t\t//If disabled option is true, disable the datepicker before showing it (see ticket #5665)\n\t\tif ( inst.settings.disabled ) {\n\t\t\tthis._disableDatepicker( target );\n\t\t}\n\n\t\t// Set display:block in place of inst.dpDiv.show() which won't work on disconnected elements\n\t\t// http://bugs.jqueryui.com/ticket/7552 - A Datepicker created on a detached div has zero height\n\t\tinst.dpDiv.css( \"display\", \"block\" );\n\t},\n\n\t/* Pop-up the date picker in a \"dialog\" box.\n\t * @param  input element - ignored\n\t * @param  date\tstring or Date - the initial date to display\n\t * @param  onSelect  function - the function to call when a date is selected\n\t * @param  settings  object - update the dialog date picker instance's settings (anonymous object)\n\t * @param  pos int[2] - coordinates for the dialog's position within the screen or\n\t *\t\t\t\t\tevent - with x/y coordinates or\n\t *\t\t\t\t\tleave empty for default (screen centre)\n\t * @return the manager object\n\t */\n\t_dialogDatepicker: function( input, date, onSelect, settings, pos ) {\n\t\tvar id, browserWidth, browserHeight, scrollX, scrollY,\n\t\t\tinst = this._dialogInst; // internal instance\n\n\t\tif ( !inst ) {\n\t\t\tthis.uuid += 1;\n\t\t\tid = \"dp\" + this.uuid;\n\t\t\tthis._dialogInput = $( \"<input type='text' id='\" + id +\n\t\t\t\t\"' style='position: absolute; top: -100px; width: 0px;'/>\" );\n\t\t\tthis._dialogInput.on( \"keydown\", this._doKeyDown );\n\t\t\t$( \"body\" ).append( this._dialogInput );\n\t\t\tinst = this._dialogInst = this._newInst( this._dialogInput, false );\n\t\t\tinst.settings = {};\n\t\t\t$.data( this._dialogInput[ 0 ], \"datepicker\", inst );\n\t\t}\n\t\tdatepicker_extendRemove( inst.settings, settings || {} );\n\t\tdate = ( date && date.constructor === Date ? this._formatDate( inst, date ) : date );\n\t\tthis._dialogInput.val( date );\n\n\t\tthis._pos = ( pos ? ( pos.length ? pos : [ pos.pageX, pos.pageY ] ) : null );\n\t\tif ( !this._pos ) {\n\t\t\tbrowserWidth = document.documentElement.clientWidth;\n\t\t\tbrowserHeight = document.documentElement.clientHeight;\n\t\t\tscrollX = document.documentElement.scrollLeft || document.body.scrollLeft;\n\t\t\tscrollY = document.documentElement.scrollTop || document.body.scrollTop;\n\t\t\tthis._pos = // should use actual width/height below\n\t\t\t\t[ ( browserWidth / 2 ) - 100 + scrollX, ( browserHeight / 2 ) - 150 + scrollY ];\n\t\t}\n\n\t\t// Move input on screen for focus, but hidden behind dialog\n\t\tthis._dialogInput.css( \"left\", ( this._pos[ 0 ] + 20 ) + \"px\" ).css( \"top\", this._pos[ 1 ] + \"px\" );\n\t\tinst.settings.onSelect = onSelect;\n\t\tthis._inDialog = true;\n\t\tthis.dpDiv.addClass( this._dialogClass );\n\t\tthis._showDatepicker( this._dialogInput[ 0 ] );\n\t\tif ( $.blockUI ) {\n\t\t\t$.blockUI( this.dpDiv );\n\t\t}\n\t\t$.data( this._dialogInput[ 0 ], \"datepicker\", inst );\n\t\treturn this;\n\t},\n\n\t/* Detach a datepicker from its control.\n\t * @param  target\telement - the target input field or division or span\n\t */\n\t_destroyDatepicker: function( target ) {\n\t\tvar nodeName,\n\t\t\t$target = $( target ),\n\t\t\tinst = $.data( target, \"datepicker\" );\n\n\t\tif ( !$target.hasClass( this.markerClassName ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tnodeName = target.nodeName.toLowerCase();\n\t\t$.removeData( target, \"datepicker\" );\n\t\tif ( nodeName === \"input\" ) {\n\t\t\tinst.append.remove();\n\t\t\tinst.trigger.remove();\n\t\t\t$target.removeClass( this.markerClassName ).\n\t\t\t\toff( \"focus\", this._showDatepicker ).\n\t\t\t\toff( \"keydown\", this._doKeyDown ).\n\t\t\t\toff( \"keypress\", this._doKeyPress ).\n\t\t\t\toff( \"keyup\", this._doKeyUp );\n\t\t} else if ( nodeName === \"div\" || nodeName === \"span\" ) {\n\t\t\t$target.removeClass( this.markerClassName ).empty();\n\t\t}\n\n\t\tif ( datepicker_instActive === inst ) {\n\t\t\tdatepicker_instActive = null;\n\t\t}\n\t},\n\n\t/* Enable the date picker to a jQuery selection.\n\t * @param  target\telement - the target input field or division or span\n\t */\n\t_enableDatepicker: function( target ) {\n\t\tvar nodeName, inline,\n\t\t\t$target = $( target ),\n\t\t\tinst = $.data( target, \"datepicker\" );\n\n\t\tif ( !$target.hasClass( this.markerClassName ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tnodeName = target.nodeName.toLowerCase();\n\t\tif ( nodeName === \"input\" ) {\n\t\t\ttarget.disabled = false;\n\t\t\tinst.trigger.filter( \"button\" ).\n\t\t\t\teach( function() { this.disabled = false; } ).end().\n\t\t\t\tfilter( \"img\" ).css( { opacity: \"1.0\", cursor: \"\" } );\n\t\t} else if ( nodeName === \"div\" || nodeName === \"span\" ) {\n\t\t\tinline = $target.children( \".\" + this._inlineClass );\n\t\t\tinline.children().removeClass( \"ui-state-disabled\" );\n\t\t\tinline.find( \"select.ui-datepicker-month, select.ui-datepicker-year\" ).\n\t\t\t\tprop( \"disabled\", false );\n\t\t}\n\t\tthis._disabledInputs = $.map( this._disabledInputs,\n\t\t\tfunction( value ) { return ( value === target ? null : value ); } ); // delete entry\n\t},\n\n\t/* Disable the date picker to a jQuery selection.\n\t * @param  target\telement - the target input field or division or span\n\t */\n\t_disableDatepicker: function( target ) {\n\t\tvar nodeName, inline,\n\t\t\t$target = $( target ),\n\t\t\tinst = $.data( target, \"datepicker\" );\n\n\t\tif ( !$target.hasClass( this.markerClassName ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tnodeName = target.nodeName.toLowerCase();\n\t\tif ( nodeName === \"input\" ) {\n\t\t\ttarget.disabled = true;\n\t\t\tinst.trigger.filter( \"button\" ).\n\t\t\t\teach( function() { this.disabled = true; } ).end().\n\t\t\t\tfilter( \"img\" ).css( { opacity: \"0.5\", cursor: \"default\" } );\n\t\t} else if ( nodeName === \"div\" || nodeName === \"span\" ) {\n\t\t\tinline = $target.children( \".\" + this._inlineClass );\n\t\t\tinline.children().addClass( \"ui-state-disabled\" );\n\t\t\tinline.find( \"select.ui-datepicker-month, select.ui-datepicker-year\" ).\n\t\t\t\tprop( \"disabled\", true );\n\t\t}\n\t\tthis._disabledInputs = $.map( this._disabledInputs,\n\t\t\tfunction( value ) { return ( value === target ? null : value ); } ); // delete entry\n\t\tthis._disabledInputs[ this._disabledInputs.length ] = target;\n\t},\n\n\t/* Is the first field in a jQuery collection disabled as a datepicker?\n\t * @param  target\telement - the target input field or division or span\n\t * @return boolean - true if disabled, false if enabled\n\t */\n\t_isDisabledDatepicker: function( target ) {\n\t\tif ( !target ) {\n\t\t\treturn false;\n\t\t}\n\t\tfor ( var i = 0; i < this._disabledInputs.length; i++ ) {\n\t\t\tif ( this._disabledInputs[ i ] === target ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t},\n\n\t/* Retrieve the instance data for the target control.\n\t * @param  target  element - the target input field or division or span\n\t * @return  object - the associated instance data\n\t * @throws  error if a jQuery problem getting data\n\t */\n\t_getInst: function( target ) {\n\t\ttry {\n\t\t\treturn $.data( target, \"datepicker\" );\n\t\t}\n\t\tcatch ( err ) {\n\t\t\tthrow \"Missing instance data for this datepicker\";\n\t\t}\n\t},\n\n\t/* Update or retrieve the settings for a date picker attached to an input field or division.\n\t * @param  target  element - the target input field or division or span\n\t * @param  name\tobject - the new settings to update or\n\t *\t\t\t\tstring - the name of the setting to change or retrieve,\n\t *\t\t\t\twhen retrieving also \"all\" for all instance settings or\n\t *\t\t\t\t\"defaults\" for all global defaults\n\t * @param  value   any - the new value for the setting\n\t *\t\t\t\t(omit if above is an object or to retrieve a value)\n\t */\n\t_optionDatepicker: function( target, name, value ) {\n\t\tvar settings, date, minDate, maxDate,\n\t\t\tinst = this._getInst( target );\n\n\t\tif ( arguments.length === 2 && typeof name === \"string\" ) {\n\t\t\treturn ( name === \"defaults\" ? $.extend( {}, $.datepicker._defaults ) :\n\t\t\t\t( inst ? ( name === \"all\" ? $.extend( {}, inst.settings ) :\n\t\t\t\tthis._get( inst, name ) ) : null ) );\n\t\t}\n\n\t\tsettings = name || {};\n\t\tif ( typeof name === \"string\" ) {\n\t\t\tsettings = {};\n\t\t\tsettings[ name ] = value;\n\t\t}\n\n\t\tif ( inst ) {\n\t\t\tif ( this._curInst === inst ) {\n\t\t\t\tthis._hideDatepicker();\n\t\t\t}\n\n\t\t\tdate = this._getDateDatepicker( target, true );\n\t\t\tminDate = this._getMinMaxDate( inst, \"min\" );\n\t\t\tmaxDate = this._getMinMaxDate( inst, \"max\" );\n\t\t\tdatepicker_extendRemove( inst.settings, settings );\n\n\t\t\t// reformat the old minDate/maxDate values if dateFormat changes and a new minDate/maxDate isn't provided\n\t\t\tif ( minDate !== null && settings.dateFormat !== undefined && settings.minDate === undefined ) {\n\t\t\t\tinst.settings.minDate = this._formatDate( inst, minDate );\n\t\t\t}\n\t\t\tif ( maxDate !== null && settings.dateFormat !== undefined && settings.maxDate === undefined ) {\n\t\t\t\tinst.settings.maxDate = this._formatDate( inst, maxDate );\n\t\t\t}\n\t\t\tif ( \"disabled\" in settings ) {\n\t\t\t\tif ( settings.disabled ) {\n\t\t\t\t\tthis._disableDatepicker( target );\n\t\t\t\t} else {\n\t\t\t\t\tthis._enableDatepicker( target );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._attachments( $( target ), inst );\n\t\t\tthis._autoSize( inst );\n\t\t\tthis._setDate( inst, date );\n\t\t\tthis._updateAlternate( inst );\n\t\t\tthis._updateDatepicker( inst );\n\t\t}\n\t},\n\n\t// Change method deprecated\n\t_changeDatepicker: function( target, name, value ) {\n\t\tthis._optionDatepicker( target, name, value );\n\t},\n\n\t/* Redraw the date picker attached to an input field or division.\n\t * @param  target  element - the target input field or division or span\n\t */\n\t_refreshDatepicker: function( target ) {\n\t\tvar inst = this._getInst( target );\n\t\tif ( inst ) {\n\t\t\tthis._updateDatepicker( inst );\n\t\t}\n\t},\n\n\t/* Set the dates for a jQuery selection.\n\t * @param  target element - the target input field or division or span\n\t * @param  date\tDate - the new date\n\t */\n\t_setDateDatepicker: function( target, date ) {\n\t\tvar inst = this._getInst( target );\n\t\tif ( inst ) {\n\t\t\tthis._setDate( inst, date );\n\t\t\tthis._updateDatepicker( inst );\n\t\t\tthis._updateAlternate( inst );\n\t\t}\n\t},\n\n\t/* Get the date(s) for the first entry in a jQuery selection.\n\t * @param  target element - the target input field or division or span\n\t * @param  noDefault boolean - true if no default date is to be used\n\t * @return Date - the current date\n\t */\n\t_getDateDatepicker: function( target, noDefault ) {\n\t\tvar inst = this._getInst( target );\n\t\tif ( inst && !inst.inline ) {\n\t\t\tthis._setDateFromField( inst, noDefault );\n\t\t}\n\t\treturn ( inst ? this._getDate( inst ) : null );\n\t},\n\n\t/* Handle keystrokes. */\n\t_doKeyDown: function( event ) {\n\t\tvar onSelect, dateStr, sel,\n\t\t\tinst = $.datepicker._getInst( event.target ),\n\t\t\thandled = true,\n\t\t\tisRTL = inst.dpDiv.is( \".ui-datepicker-rtl\" );\n\n\t\tinst._keyEvent = true;\n\t\tif ( $.datepicker._datepickerShowing ) {\n\t\t\tswitch ( event.keyCode ) {\n\t\t\t\tcase 9: $.datepicker._hideDatepicker();\n\t\t\t\t\t\thandled = false;\n\t\t\t\t\t\tbreak; // hide on tab out\n\t\t\t\tcase 13: sel = $( \"td.\" + $.datepicker._dayOverClass + \":not(.\" +\n\t\t\t\t\t\t\t\t\t$.datepicker._currentClass + \")\", inst.dpDiv );\n\t\t\t\t\t\tif ( sel[ 0 ] ) {\n\t\t\t\t\t\t\t$.datepicker._selectDay( event.target, inst.selectedMonth, inst.selectedYear, sel[ 0 ] );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tonSelect = $.datepicker._get( inst, \"onSelect\" );\n\t\t\t\t\t\tif ( onSelect ) {\n\t\t\t\t\t\t\tdateStr = $.datepicker._formatDate( inst );\n\n\t\t\t\t\t\t\t// Trigger custom callback\n\t\t\t\t\t\t\tonSelect.apply( ( inst.input ? inst.input[ 0 ] : null ), [ dateStr, inst ] );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t$.datepicker._hideDatepicker();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn false; // don't submit the form\n\t\t\t\tcase 27: $.datepicker._hideDatepicker();\n\t\t\t\t\t\tbreak; // hide on escape\n\t\t\t\tcase 33: $.datepicker._adjustDate( event.target, ( event.ctrlKey ?\n\t\t\t\t\t\t\t-$.datepicker._get( inst, \"stepBigMonths\" ) :\n\t\t\t\t\t\t\t-$.datepicker._get( inst, \"stepMonths\" ) ), \"M\" );\n\t\t\t\t\t\tbreak; // previous month/year on page up/+ ctrl\n\t\t\t\tcase 34: $.datepicker._adjustDate( event.target, ( event.ctrlKey ?\n\t\t\t\t\t\t\t+$.datepicker._get( inst, \"stepBigMonths\" ) :\n\t\t\t\t\t\t\t+$.datepicker._get( inst, \"stepMonths\" ) ), \"M\" );\n\t\t\t\t\t\tbreak; // next month/year on page down/+ ctrl\n\t\t\t\tcase 35: if ( event.ctrlKey || event.metaKey ) {\n\t\t\t\t\t\t\t$.datepicker._clearDate( event.target );\n\t\t\t\t\t\t}\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\tbreak; // clear on ctrl or command +end\n\t\t\t\tcase 36: if ( event.ctrlKey || event.metaKey ) {\n\t\t\t\t\t\t\t$.datepicker._gotoToday( event.target );\n\t\t\t\t\t\t}\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\tbreak; // current on ctrl or command +home\n\t\t\t\tcase 37: if ( event.ctrlKey || event.metaKey ) {\n\t\t\t\t\t\t\t$.datepicker._adjustDate( event.target, ( isRTL ? +1 : -1 ), \"D\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\n\t\t\t\t\t\t// -1 day on ctrl or command +left\n\t\t\t\t\t\tif ( event.originalEvent.altKey ) {\n\t\t\t\t\t\t\t$.datepicker._adjustDate( event.target, ( event.ctrlKey ?\n\t\t\t\t\t\t\t\t-$.datepicker._get( inst, \"stepBigMonths\" ) :\n\t\t\t\t\t\t\t\t-$.datepicker._get( inst, \"stepMonths\" ) ), \"M\" );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// next month/year on alt +left on Mac\n\t\t\t\t\t\tbreak;\n\t\t\t\tcase 38: if ( event.ctrlKey || event.metaKey ) {\n\t\t\t\t\t\t\t$.datepicker._adjustDate( event.target, -7, \"D\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\tbreak; // -1 week on ctrl or command +up\n\t\t\t\tcase 39: if ( event.ctrlKey || event.metaKey ) {\n\t\t\t\t\t\t\t$.datepicker._adjustDate( event.target, ( isRTL ? -1 : +1 ), \"D\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\n\t\t\t\t\t\t// +1 day on ctrl or command +right\n\t\t\t\t\t\tif ( event.originalEvent.altKey ) {\n\t\t\t\t\t\t\t$.datepicker._adjustDate( event.target, ( event.ctrlKey ?\n\t\t\t\t\t\t\t\t+$.datepicker._get( inst, \"stepBigMonths\" ) :\n\t\t\t\t\t\t\t\t+$.datepicker._get( inst, \"stepMonths\" ) ), \"M\" );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// next month/year on alt +right\n\t\t\t\t\t\tbreak;\n\t\t\t\tcase 40: if ( event.ctrlKey || event.metaKey ) {\n\t\t\t\t\t\t\t$.datepicker._adjustDate( event.target, +7, \"D\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\tbreak; // +1 week on ctrl or command +down\n\t\t\t\tdefault: handled = false;\n\t\t\t}\n\t\t} else if ( event.keyCode === 36 && event.ctrlKey ) { // display the date picker on ctrl+home\n\t\t\t$.datepicker._showDatepicker( this );\n\t\t} else {\n\t\t\thandled = false;\n\t\t}\n\n\t\tif ( handled ) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t}\n\t},\n\n\t/* Filter entered characters - based on date format. */\n\t_doKeyPress: function( event ) {\n\t\tvar chars, chr,\n\t\t\tinst = $.datepicker._getInst( event.target );\n\n\t\tif ( $.datepicker._get( inst, \"constrainInput\" ) ) {\n\t\t\tchars = $.datepicker._possibleChars( $.datepicker._get( inst, \"dateFormat\" ) );\n\t\t\tchr = String.fromCharCode( event.charCode == null ? event.keyCode : event.charCode );\n\t\t\treturn event.ctrlKey || event.metaKey || ( chr < \" \" || !chars || chars.indexOf( chr ) > -1 );\n\t\t}\n\t},\n\n\t/* Synchronise manual entry and field/alternate field. */\n\t_doKeyUp: function( event ) {\n\t\tvar date,\n\t\t\tinst = $.datepicker._getInst( event.target );\n\n\t\tif ( inst.input.val() !== inst.lastVal ) {\n\t\t\ttry {\n\t\t\t\tdate = $.datepicker.parseDate( $.datepicker._get( inst, \"dateFormat\" ),\n\t\t\t\t\t( inst.input ? inst.input.val() : null ),\n\t\t\t\t\t$.datepicker._getFormatConfig( inst ) );\n\n\t\t\t\tif ( date ) { // only if valid\n\t\t\t\t\t$.datepicker._setDateFromField( inst );\n\t\t\t\t\t$.datepicker._updateAlternate( inst );\n\t\t\t\t\t$.datepicker._updateDatepicker( inst );\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch ( err ) {\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t},\n\n\t/* Pop-up the date picker for a given input field.\n\t * If false returned from beforeShow event handler do not show.\n\t * @param  input  element - the input field attached to the date picker or\n\t *\t\t\t\t\tevent - if triggered by focus\n\t */\n\t_showDatepicker: function( input ) {\n\t\tinput = input.target || input;\n\t\tif ( input.nodeName.toLowerCase() !== \"input\" ) { // find from button/image trigger\n\t\t\tinput = $( \"input\", input.parentNode )[ 0 ];\n\t\t}\n\n\t\tif ( $.datepicker._isDisabledDatepicker( input ) || $.datepicker._lastInput === input ) { // already here\n\t\t\treturn;\n\t\t}\n\n\t\tvar inst, beforeShow, beforeShowSettings, isFixed,\n\t\t\toffset, showAnim, duration;\n\n\t\tinst = $.datepicker._getInst( input );\n\t\tif ( $.datepicker._curInst && $.datepicker._curInst !== inst ) {\n\t\t\t$.datepicker._curInst.dpDiv.stop( true, true );\n\t\t\tif ( inst && $.datepicker._datepickerShowing ) {\n\t\t\t\t$.datepicker._hideDatepicker( $.datepicker._curInst.input[ 0 ] );\n\t\t\t}\n\t\t}\n\n\t\tbeforeShow = $.datepicker._get( inst, \"beforeShow\" );\n\t\tbeforeShowSettings = beforeShow ? beforeShow.apply( input, [ input, inst ] ) : {};\n\t\tif ( beforeShowSettings === false ) {\n\t\t\treturn;\n\t\t}\n\t\tdatepicker_extendRemove( inst.settings, beforeShowSettings );\n\n\t\tinst.lastVal = null;\n\t\t$.datepicker._lastInput = input;\n\t\t$.datepicker._setDateFromField( inst );\n\n\t\tif ( $.datepicker._inDialog ) { // hide cursor\n\t\t\tinput.value = \"\";\n\t\t}\n\t\tif ( !$.datepicker._pos ) { // position below input\n\t\t\t$.datepicker._pos = $.datepicker._findPos( input );\n\t\t\t$.datepicker._pos[ 1 ] += input.offsetHeight; // add the height\n\t\t}\n\n\t\tisFixed = false;\n\t\t$( input ).parents().each( function() {\n\t\t\tisFixed |= $( this ).css( \"position\" ) === \"fixed\";\n\t\t\treturn !isFixed;\n\t\t} );\n\n\t\toffset = { left: $.datepicker._pos[ 0 ], top: $.datepicker._pos[ 1 ] };\n\t\t$.datepicker._pos = null;\n\n\t\t//to avoid flashes on Firefox\n\t\tinst.dpDiv.empty();\n\n\t\t// determine sizing offscreen\n\t\tinst.dpDiv.css( { position: \"absolute\", display: \"block\", top: \"-1000px\" } );\n\t\t$.datepicker._updateDatepicker( inst );\n\n\t\t// fix width for dynamic number of date pickers\n\t\t// and adjust position before showing\n\t\toffset = $.datepicker._checkOffset( inst, offset, isFixed );\n\t\tinst.dpDiv.css( { position: ( $.datepicker._inDialog && $.blockUI ?\n\t\t\t\"static\" : ( isFixed ? \"fixed\" : \"absolute\" ) ), display: \"none\",\n\t\t\tleft: offset.left + \"px\", top: offset.top + \"px\" } );\n\n\t\tif ( !inst.inline ) {\n\t\t\tshowAnim = $.datepicker._get( inst, \"showAnim\" );\n\t\t\tduration = $.datepicker._get( inst, \"duration\" );\n\t\t\tinst.dpDiv.css( \"z-index\", datepicker_getZindex( $( input ) ) + 1 );\n\t\t\t$.datepicker._datepickerShowing = true;\n\n\t\t\tif ( $.effects && $.effects.effect[ showAnim ] ) {\n\t\t\t\tinst.dpDiv.show( showAnim, $.datepicker._get( inst, \"showOptions\" ), duration );\n\t\t\t} else {\n\t\t\t\tinst.dpDiv[ showAnim || \"show\" ]( showAnim ? duration : null );\n\t\t\t}\n\n\t\t\tif ( $.datepicker._shouldFocusInput( inst ) ) {\n\t\t\t\tinst.input.trigger( \"focus\" );\n\t\t\t}\n\n\t\t\t$.datepicker._curInst = inst;\n\t\t}\n\t},\n\n\t/* Generate the date picker content. */\n\t_updateDatepicker: function( inst ) {\n\t\tthis.maxRows = 4; //Reset the max number of rows being displayed (see #7043)\n\t\tdatepicker_instActive = inst; // for delegate hover events\n\t\tinst.dpDiv.empty().append( this._generateHTML( inst ) );\n\t\tthis._attachHandlers( inst );\n\n\t\tvar origyearshtml,\n\t\t\tnumMonths = this._getNumberOfMonths( inst ),\n\t\t\tcols = numMonths[ 1 ],\n\t\t\twidth = 17,\n\t\t\tactiveCell = inst.dpDiv.find( \".\" + this._dayOverClass + \" a\" );\n\n\t\tif ( activeCell.length > 0 ) {\n\t\t\tdatepicker_handleMouseover.apply( activeCell.get( 0 ) );\n\t\t}\n\n\t\tinst.dpDiv.removeClass( \"ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4\" ).width( \"\" );\n\t\tif ( cols > 1 ) {\n\t\t\tinst.dpDiv.addClass( \"ui-datepicker-multi-\" + cols ).css( \"width\", ( width * cols ) + \"em\" );\n\t\t}\n\t\tinst.dpDiv[ ( numMonths[ 0 ] !== 1 || numMonths[ 1 ] !== 1 ? \"add\" : \"remove\" ) +\n\t\t\t\"Class\" ]( \"ui-datepicker-multi\" );\n\t\tinst.dpDiv[ ( this._get( inst, \"isRTL\" ) ? \"add\" : \"remove\" ) +\n\t\t\t\"Class\" ]( \"ui-datepicker-rtl\" );\n\n\t\tif ( inst === $.datepicker._curInst && $.datepicker._datepickerShowing && $.datepicker._shouldFocusInput( inst ) ) {\n\t\t\tinst.input.trigger( \"focus\" );\n\t\t}\n\n\t\t// Deffered render of the years select (to avoid flashes on Firefox)\n\t\tif ( inst.yearshtml ) {\n\t\t\torigyearshtml = inst.yearshtml;\n\t\t\tsetTimeout( function() {\n\n\t\t\t\t//assure that inst.yearshtml didn't change.\n\t\t\t\tif ( origyearshtml === inst.yearshtml && inst.yearshtml ) {\n\t\t\t\t\tinst.dpDiv.find( \"select.ui-datepicker-year:first\" ).replaceWith( inst.yearshtml );\n\t\t\t\t}\n\t\t\t\torigyearshtml = inst.yearshtml = null;\n\t\t\t}, 0 );\n\t\t}\n\t},\n\n\t// #6694 - don't focus the input if it's already focused\n\t// this breaks the change event in IE\n\t// Support: IE and jQuery <1.9\n\t_shouldFocusInput: function( inst ) {\n\t\treturn inst.input && inst.input.is( \":visible\" ) && !inst.input.is( \":disabled\" ) && !inst.input.is( \":focus\" );\n\t},\n\n\t/* Check positioning to remain on screen. */\n\t_checkOffset: function( inst, offset, isFixed ) {\n\t\tvar dpWidth = inst.dpDiv.outerWidth(),\n\t\t\tdpHeight = inst.dpDiv.outerHeight(),\n\t\t\tinputWidth = inst.input ? inst.input.outerWidth() : 0,\n\t\t\tinputHeight = inst.input ? inst.input.outerHeight() : 0,\n\t\t\tviewWidth = document.documentElement.clientWidth + ( isFixed ? 0 : $( document ).scrollLeft() ),\n\t\t\tviewHeight = document.documentElement.clientHeight + ( isFixed ? 0 : $( document ).scrollTop() );\n\n\t\toffset.left -= ( this._get( inst, \"isRTL\" ) ? ( dpWidth - inputWidth ) : 0 );\n\t\toffset.left -= ( isFixed && offset.left === inst.input.offset().left ) ? $( document ).scrollLeft() : 0;\n\t\toffset.top -= ( isFixed && offset.top === ( inst.input.offset().top + inputHeight ) ) ? $( document ).scrollTop() : 0;\n\n\t\t// Now check if datepicker is showing outside window viewport - move to a better place if so.\n\t\toffset.left -= Math.min( offset.left, ( offset.left + dpWidth > viewWidth && viewWidth > dpWidth ) ?\n\t\t\tMath.abs( offset.left + dpWidth - viewWidth ) : 0 );\n\t\toffset.top -= Math.min( offset.top, ( offset.top + dpHeight > viewHeight && viewHeight > dpHeight ) ?\n\t\t\tMath.abs( dpHeight + inputHeight ) : 0 );\n\n\t\treturn offset;\n\t},\n\n\t/* Find an object's position on the screen. */\n\t_findPos: function( obj ) {\n\t\tvar position,\n\t\t\tinst = this._getInst( obj ),\n\t\t\tisRTL = this._get( inst, \"isRTL\" );\n\n\t\twhile ( obj && ( obj.type === \"hidden\" || obj.nodeType !== 1 || $.expr.filters.hidden( obj ) ) ) {\n\t\t\tobj = obj[ isRTL ? \"previousSibling\" : \"nextSibling\" ];\n\t\t}\n\n\t\tposition = $( obj ).offset();\n\t\treturn [ position.left, position.top ];\n\t},\n\n\t/* Hide the date picker from view.\n\t * @param  input  element - the input field attached to the date picker\n\t */\n\t_hideDatepicker: function( input ) {\n\t\tvar showAnim, duration, postProcess, onClose,\n\t\t\tinst = this._curInst;\n\n\t\tif ( !inst || ( input && inst !== $.data( input, \"datepicker\" ) ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( this._datepickerShowing ) {\n\t\t\tshowAnim = this._get( inst, \"showAnim\" );\n\t\t\tduration = this._get( inst, \"duration\" );\n\t\t\tpostProcess = function() {\n\t\t\t\t$.datepicker._tidyDialog( inst );\n\t\t\t};\n\n\t\t\t// DEPRECATED: after BC for 1.8.x $.effects[ showAnim ] is not needed\n\t\t\tif ( $.effects && ( $.effects.effect[ showAnim ] || $.effects[ showAnim ] ) ) {\n\t\t\t\tinst.dpDiv.hide( showAnim, $.datepicker._get( inst, \"showOptions\" ), duration, postProcess );\n\t\t\t} else {\n\t\t\t\tinst.dpDiv[ ( showAnim === \"slideDown\" ? \"slideUp\" :\n\t\t\t\t\t( showAnim === \"fadeIn\" ? \"fadeOut\" : \"hide\" ) ) ]( ( showAnim ? duration : null ), postProcess );\n\t\t\t}\n\n\t\t\tif ( !showAnim ) {\n\t\t\t\tpostProcess();\n\t\t\t}\n\t\t\tthis._datepickerShowing = false;\n\n\t\t\tonClose = this._get( inst, \"onClose\" );\n\t\t\tif ( onClose ) {\n\t\t\t\tonClose.apply( ( inst.input ? inst.input[ 0 ] : null ), [ ( inst.input ? inst.input.val() : \"\" ), inst ] );\n\t\t\t}\n\n\t\t\tthis._lastInput = null;\n\t\t\tif ( this._inDialog ) {\n\t\t\t\tthis._dialogInput.css( { position: \"absolute\", left: \"0\", top: \"-100px\" } );\n\t\t\t\tif ( $.blockUI ) {\n\t\t\t\t\t$.unblockUI();\n\t\t\t\t\t$( \"body\" ).append( this.dpDiv );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._inDialog = false;\n\t\t}\n\t},\n\n\t/* Tidy up after a dialog display. */\n\t_tidyDialog: function( inst ) {\n\t\tinst.dpDiv.removeClass( this._dialogClass ).off( \".ui-datepicker-calendar\" );\n\t},\n\n\t/* Close date picker if clicked elsewhere. */\n\t_checkExternalClick: function( event ) {\n\t\tif ( !$.datepicker._curInst ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar $target = $( event.target ),\n\t\t\tinst = $.datepicker._getInst( $target[ 0 ] );\n\n\t\tif ( ( ( $target[ 0 ].id !== $.datepicker._mainDivId &&\n\t\t\t\t$target.parents( \"#\" + $.datepicker._mainDivId ).length === 0 &&\n\t\t\t\t!$target.hasClass( $.datepicker.markerClassName ) &&\n\t\t\t\t!$target.closest( \".\" + $.datepicker._triggerClass ).length &&\n\t\t\t\t$.datepicker._datepickerShowing && !( $.datepicker._inDialog && $.blockUI ) ) ) ||\n\t\t\t( $target.hasClass( $.datepicker.markerClassName ) && $.datepicker._curInst !== inst ) ) {\n\t\t\t\t$.datepicker._hideDatepicker();\n\t\t}\n\t},\n\n\t/* Adjust one of the date sub-fields. */\n\t_adjustDate: function( id, offset, period ) {\n\t\tvar target = $( id ),\n\t\t\tinst = this._getInst( target[ 0 ] );\n\n\t\tif ( this._isDisabledDatepicker( target[ 0 ] ) ) {\n\t\t\treturn;\n\t\t}\n\t\tthis._adjustInstDate( inst, offset +\n\t\t\t( period === \"M\" ? this._get( inst, \"showCurrentAtPos\" ) : 0 ), // undo positioning\n\t\t\tperiod );\n\t\tthis._updateDatepicker( inst );\n\t},\n\n\t/* Action for current link. */\n\t_gotoToday: function( id ) {\n\t\tvar date,\n\t\t\ttarget = $( id ),\n\t\t\tinst = this._getInst( target[ 0 ] );\n\n\t\tif ( this._get( inst, \"gotoCurrent\" ) && inst.currentDay ) {\n\t\t\tinst.selectedDay = inst.currentDay;\n\t\t\tinst.drawMonth = inst.selectedMonth = inst.currentMonth;\n\t\t\tinst.drawYear = inst.selectedYear = inst.currentYear;\n\t\t} else {\n\t\t\tdate = new Date();\n\t\t\tinst.selectedDay = date.getDate();\n\t\t\tinst.drawMonth = inst.selectedMonth = date.getMonth();\n\t\t\tinst.drawYear = inst.selectedYear = date.getFullYear();\n\t\t}\n\t\tthis._notifyChange( inst );\n\t\tthis._adjustDate( target );\n\t},\n\n\t/* Action for selecting a new month/year. */\n\t_selectMonthYear: function( id, select, period ) {\n\t\tvar target = $( id ),\n\t\t\tinst = this._getInst( target[ 0 ] );\n\n\t\tinst[ \"selected\" + ( period === \"M\" ? \"Month\" : \"Year\" ) ] =\n\t\tinst[ \"draw\" + ( period === \"M\" ? \"Month\" : \"Year\" ) ] =\n\t\t\tparseInt( select.options[ select.selectedIndex ].value, 10 );\n\n\t\tthis._notifyChange( inst );\n\t\tthis._adjustDate( target );\n\t},\n\n\t/* Action for selecting a day. */\n\t_selectDay: function( id, month, year, td ) {\n\t\tvar inst,\n\t\t\ttarget = $( id );\n\n\t\tif ( $( td ).hasClass( this._unselectableClass ) || this._isDisabledDatepicker( target[ 0 ] ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tinst = this._getInst( target[ 0 ] );\n\t\tinst.selectedDay = inst.currentDay = $( \"a\", td ).html();\n\t\tinst.selectedMonth = inst.currentMonth = month;\n\t\tinst.selectedYear = inst.currentYear = year;\n\t\tthis._selectDate( id, this._formatDate( inst,\n\t\t\tinst.currentDay, inst.currentMonth, inst.currentYear ) );\n\t},\n\n\t/* Erase the input field and hide the date picker. */\n\t_clearDate: function( id ) {\n\t\tvar target = $( id );\n\t\tthis._selectDate( target, \"\" );\n\t},\n\n\t/* Update the input field with the selected date. */\n\t_selectDate: function( id, dateStr ) {\n\t\tvar onSelect,\n\t\t\ttarget = $( id ),\n\t\t\tinst = this._getInst( target[ 0 ] );\n\n\t\tdateStr = ( dateStr != null ? dateStr : this._formatDate( inst ) );\n\t\tif ( inst.input ) {\n\t\t\tinst.input.val( dateStr );\n\t\t}\n\t\tthis._updateAlternate( inst );\n\n\t\tonSelect = this._get( inst, \"onSelect\" );\n\t\tif ( onSelect ) {\n\t\t\tonSelect.apply( ( inst.input ? inst.input[ 0 ] : null ), [ dateStr, inst ] );  // trigger custom callback\n\t\t} else if ( inst.input ) {\n\t\t\tinst.input.trigger( \"change\" ); // fire the change event\n\t\t}\n\n\t\tif ( inst.inline ) {\n\t\t\tthis._updateDatepicker( inst );\n\t\t} else {\n\t\t\tthis._hideDatepicker();\n\t\t\tthis._lastInput = inst.input[ 0 ];\n\t\t\tif ( typeof( inst.input[ 0 ] ) !== \"object\" ) {\n\t\t\t\tinst.input.trigger( \"focus\" ); // restore focus\n\t\t\t}\n\t\t\tthis._lastInput = null;\n\t\t}\n\t},\n\n\t/* Update any alternate field to synchronise with the main field. */\n\t_updateAlternate: function( inst ) {\n\t\tvar altFormat, date, dateStr,\n\t\t\taltField = this._get( inst, \"altField\" );\n\n\t\tif ( altField ) { // update alternate field too\n\t\t\taltFormat = this._get( inst, \"altFormat\" ) || this._get( inst, \"dateFormat\" );\n\t\t\tdate = this._getDate( inst );\n\t\t\tdateStr = this.formatDate( altFormat, date, this._getFormatConfig( inst ) );\n\t\t\t$( altField ).val( dateStr );\n\t\t}\n\t},\n\n\t/* Set as beforeShowDay function to prevent selection of weekends.\n\t * @param  date  Date - the date to customise\n\t * @return [boolean, string] - is this date selectable?, what is its CSS class?\n\t */\n\tnoWeekends: function( date ) {\n\t\tvar day = date.getDay();\n\t\treturn [ ( day > 0 && day < 6 ), \"\" ];\n\t},\n\n\t/* Set as calculateWeek to determine the week of the year based on the ISO 8601 definition.\n\t * @param  date  Date - the date to get the week for\n\t * @return  number - the number of the week within the year that contains this date\n\t */\n\tiso8601Week: function( date ) {\n\t\tvar time,\n\t\t\tcheckDate = new Date( date.getTime() );\n\n\t\t// Find Thursday of this week starting on Monday\n\t\tcheckDate.setDate( checkDate.getDate() + 4 - ( checkDate.getDay() || 7 ) );\n\n\t\ttime = checkDate.getTime();\n\t\tcheckDate.setMonth( 0 ); // Compare with Jan 1\n\t\tcheckDate.setDate( 1 );\n\t\treturn Math.floor( Math.round( ( time - checkDate ) / 86400000 ) / 7 ) + 1;\n\t},\n\n\t/* Parse a string value into a date object.\n\t * See formatDate below for the possible formats.\n\t *\n\t * @param  format string - the expected format of the date\n\t * @param  value string - the date in the above format\n\t * @param  settings Object - attributes include:\n\t *\t\t\t\t\tshortYearCutoff  number - the cutoff year for determining the century (optional)\n\t *\t\t\t\t\tdayNamesShort\tstring[7] - abbreviated names of the days from Sunday (optional)\n\t *\t\t\t\t\tdayNames\t\tstring[7] - names of the days from Sunday (optional)\n\t *\t\t\t\t\tmonthNamesShort string[12] - abbreviated names of the months (optional)\n\t *\t\t\t\t\tmonthNames\t\tstring[12] - names of the months (optional)\n\t * @return  Date - the extracted date value or null if value is blank\n\t */\n\tparseDate: function( format, value, settings ) {\n\t\tif ( format == null || value == null ) {\n\t\t\tthrow \"Invalid arguments\";\n\t\t}\n\n\t\tvalue = ( typeof value === \"object\" ? value.toString() : value + \"\" );\n\t\tif ( value === \"\" ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tvar iFormat, dim, extra,\n\t\t\tiValue = 0,\n\t\t\tshortYearCutoffTemp = ( settings ? settings.shortYearCutoff : null ) || this._defaults.shortYearCutoff,\n\t\t\tshortYearCutoff = ( typeof shortYearCutoffTemp !== \"string\" ? shortYearCutoffTemp :\n\t\t\t\tnew Date().getFullYear() % 100 + parseInt( shortYearCutoffTemp, 10 ) ),\n\t\t\tdayNamesShort = ( settings ? settings.dayNamesShort : null ) || this._defaults.dayNamesShort,\n\t\t\tdayNames = ( settings ? settings.dayNames : null ) || this._defaults.dayNames,\n\t\t\tmonthNamesShort = ( settings ? settings.monthNamesShort : null ) || this._defaults.monthNamesShort,\n\t\t\tmonthNames = ( settings ? settings.monthNames : null ) || this._defaults.monthNames,\n\t\t\tyear = -1,\n\t\t\tmonth = -1,\n\t\t\tday = -1,\n\t\t\tdoy = -1,\n\t\t\tliteral = false,\n\t\t\tdate,\n\n\t\t\t// Check whether a format character is doubled\n\t\t\tlookAhead = function( match ) {\n\t\t\t\tvar matches = ( iFormat + 1 < format.length && format.charAt( iFormat + 1 ) === match );\n\t\t\t\tif ( matches ) {\n\t\t\t\t\tiFormat++;\n\t\t\t\t}\n\t\t\t\treturn matches;\n\t\t\t},\n\n\t\t\t// Extract a number from the string value\n\t\t\tgetNumber = function( match ) {\n\t\t\t\tvar isDoubled = lookAhead( match ),\n\t\t\t\t\tsize = ( match === \"@\" ? 14 : ( match === \"!\" ? 20 :\n\t\t\t\t\t( match === \"y\" && isDoubled ? 4 : ( match === \"o\" ? 3 : 2 ) ) ) ),\n\t\t\t\t\tminSize = ( match === \"y\" ? size : 1 ),\n\t\t\t\t\tdigits = new RegExp( \"^\\\\d{\" + minSize + \",\" + size + \"}\" ),\n\t\t\t\t\tnum = value.substring( iValue ).match( digits );\n\t\t\t\tif ( !num ) {\n\t\t\t\t\tthrow \"Missing number at position \" + iValue;\n\t\t\t\t}\n\t\t\t\tiValue += num[ 0 ].length;\n\t\t\t\treturn parseInt( num[ 0 ], 10 );\n\t\t\t},\n\n\t\t\t// Extract a name from the string value and convert to an index\n\t\t\tgetName = function( match, shortNames, longNames ) {\n\t\t\t\tvar index = -1,\n\t\t\t\t\tnames = $.map( lookAhead( match ) ? longNames : shortNames, function( v, k ) {\n\t\t\t\t\t\treturn [ [ k, v ] ];\n\t\t\t\t\t} ).sort( function( a, b ) {\n\t\t\t\t\t\treturn -( a[ 1 ].length - b[ 1 ].length );\n\t\t\t\t\t} );\n\n\t\t\t\t$.each( names, function( i, pair ) {\n\t\t\t\t\tvar name = pair[ 1 ];\n\t\t\t\t\tif ( value.substr( iValue, name.length ).toLowerCase() === name.toLowerCase() ) {\n\t\t\t\t\t\tindex = pair[ 0 ];\n\t\t\t\t\t\tiValue += name.length;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\tif ( index !== -1 ) {\n\t\t\t\t\treturn index + 1;\n\t\t\t\t} else {\n\t\t\t\t\tthrow \"Unknown name at position \" + iValue;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// Confirm that a literal character matches the string value\n\t\t\tcheckLiteral = function() {\n\t\t\t\tif ( value.charAt( iValue ) !== format.charAt( iFormat ) ) {\n\t\t\t\t\tthrow \"Unexpected literal at position \" + iValue;\n\t\t\t\t}\n\t\t\t\tiValue++;\n\t\t\t};\n\n\t\tfor ( iFormat = 0; iFormat < format.length; iFormat++ ) {\n\t\t\tif ( literal ) {\n\t\t\t\tif ( format.charAt( iFormat ) === \"'\" && !lookAhead( \"'\" ) ) {\n\t\t\t\t\tliteral = false;\n\t\t\t\t} else {\n\t\t\t\t\tcheckLiteral();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tswitch ( format.charAt( iFormat ) ) {\n\t\t\t\t\tcase \"d\":\n\t\t\t\t\t\tday = getNumber( \"d\" );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"D\":\n\t\t\t\t\t\tgetName( \"D\", dayNamesShort, dayNames );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"o\":\n\t\t\t\t\t\tdoy = getNumber( \"o\" );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"m\":\n\t\t\t\t\t\tmonth = getNumber( \"m\" );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"M\":\n\t\t\t\t\t\tmonth = getName( \"M\", monthNamesShort, monthNames );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"y\":\n\t\t\t\t\t\tyear = getNumber( \"y\" );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"@\":\n\t\t\t\t\t\tdate = new Date( getNumber( \"@\" ) );\n\t\t\t\t\t\tyear = date.getFullYear();\n\t\t\t\t\t\tmonth = date.getMonth() + 1;\n\t\t\t\t\t\tday = date.getDate();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"!\":\n\t\t\t\t\t\tdate = new Date( ( getNumber( \"!\" ) - this._ticksTo1970 ) / 10000 );\n\t\t\t\t\t\tyear = date.getFullYear();\n\t\t\t\t\t\tmonth = date.getMonth() + 1;\n\t\t\t\t\t\tday = date.getDate();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"'\":\n\t\t\t\t\t\tif ( lookAhead( \"'\" ) ) {\n\t\t\t\t\t\t\tcheckLiteral();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tliteral = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcheckLiteral();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( iValue < value.length ) {\n\t\t\textra = value.substr( iValue );\n\t\t\tif ( !/^\\s+/.test( extra ) ) {\n\t\t\t\tthrow \"Extra/unparsed characters found in date: \" + extra;\n\t\t\t}\n\t\t}\n\n\t\tif ( year === -1 ) {\n\t\t\tyear = new Date().getFullYear();\n\t\t} else if ( year < 100 ) {\n\t\t\tyear += new Date().getFullYear() - new Date().getFullYear() % 100 +\n\t\t\t\t( year <= shortYearCutoff ? 0 : -100 );\n\t\t}\n\n\t\tif ( doy > -1 ) {\n\t\t\tmonth = 1;\n\t\t\tday = doy;\n\t\t\tdo {\n\t\t\t\tdim = this._getDaysInMonth( year, month - 1 );\n\t\t\t\tif ( day <= dim ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tmonth++;\n\t\t\t\tday -= dim;\n\t\t\t} while ( true );\n\t\t}\n\n\t\tdate = this._daylightSavingAdjust( new Date( year, month - 1, day ) );\n\t\tif ( date.getFullYear() !== year || date.getMonth() + 1 !== month || date.getDate() !== day ) {\n\t\t\tthrow \"Invalid date\"; // E.g. 31/02/00\n\t\t}\n\t\treturn date;\n\t},\n\n\t/* Standard date formats. */\n\tATOM: \"yy-mm-dd\", // RFC 3339 (ISO 8601)\n\tCOOKIE: \"D, dd M yy\",\n\tISO_8601: \"yy-mm-dd\",\n\tRFC_822: \"D, d M y\",\n\tRFC_850: \"DD, dd-M-y\",\n\tRFC_1036: \"D, d M y\",\n\tRFC_1123: \"D, d M yy\",\n\tRFC_2822: \"D, d M yy\",\n\tRSS: \"D, d M y\", // RFC 822\n\tTICKS: \"!\",\n\tTIMESTAMP: \"@\",\n\tW3C: \"yy-mm-dd\", // ISO 8601\n\n\t_ticksTo1970: ( ( ( 1970 - 1 ) * 365 + Math.floor( 1970 / 4 ) - Math.floor( 1970 / 100 ) +\n\t\tMath.floor( 1970 / 400 ) ) * 24 * 60 * 60 * 10000000 ),\n\n\t/* Format a date object into a string value.\n\t * The format can be combinations of the following:\n\t * d  - day of month (no leading zero)\n\t * dd - day of month (two digit)\n\t * o  - day of year (no leading zeros)\n\t * oo - day of year (three digit)\n\t * D  - day name short\n\t * DD - day name long\n\t * m  - month of year (no leading zero)\n\t * mm - month of year (two digit)\n\t * M  - month name short\n\t * MM - month name long\n\t * y  - year (two digit)\n\t * yy - year (four digit)\n\t * @ - Unix timestamp (ms since 01/01/1970)\n\t * ! - Windows ticks (100ns since 01/01/0001)\n\t * \"...\" - literal text\n\t * '' - single quote\n\t *\n\t * @param  format string - the desired format of the date\n\t * @param  date Date - the date value to format\n\t * @param  settings Object - attributes include:\n\t *\t\t\t\t\tdayNamesShort\tstring[7] - abbreviated names of the days from Sunday (optional)\n\t *\t\t\t\t\tdayNames\t\tstring[7] - names of the days from Sunday (optional)\n\t *\t\t\t\t\tmonthNamesShort string[12] - abbreviated names of the months (optional)\n\t *\t\t\t\t\tmonthNames\t\tstring[12] - names of the months (optional)\n\t * @return  string - the date in the above format\n\t */\n\tformatDate: function( format, date, settings ) {\n\t\tif ( !date ) {\n\t\t\treturn \"\";\n\t\t}\n\n\t\tvar iFormat,\n\t\t\tdayNamesShort = ( settings ? settings.dayNamesShort : null ) || this._defaults.dayNamesShort,\n\t\t\tdayNames = ( settings ? settings.dayNames : null ) || this._defaults.dayNames,\n\t\t\tmonthNamesShort = ( settings ? settings.monthNamesShort : null ) || this._defaults.monthNamesShort,\n\t\t\tmonthNames = ( settings ? settings.monthNames : null ) || this._defaults.monthNames,\n\n\t\t\t// Check whether a format character is doubled\n\t\t\tlookAhead = function( match ) {\n\t\t\t\tvar matches = ( iFormat + 1 < format.length && format.charAt( iFormat + 1 ) === match );\n\t\t\t\tif ( matches ) {\n\t\t\t\t\tiFormat++;\n\t\t\t\t}\n\t\t\t\treturn matches;\n\t\t\t},\n\n\t\t\t// Format a number, with leading zero if necessary\n\t\t\tformatNumber = function( match, value, len ) {\n\t\t\t\tvar num = \"\" + value;\n\t\t\t\tif ( lookAhead( match ) ) {\n\t\t\t\t\twhile ( num.length < len ) {\n\t\t\t\t\t\tnum = \"0\" + num;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn num;\n\t\t\t},\n\n\t\t\t// Format a name, short or long as requested\n\t\t\tformatName = function( match, value, shortNames, longNames ) {\n\t\t\t\treturn ( lookAhead( match ) ? longNames[ value ] : shortNames[ value ] );\n\t\t\t},\n\t\t\toutput = \"\",\n\t\t\tliteral = false;\n\n\t\tif ( date ) {\n\t\t\tfor ( iFormat = 0; iFormat < format.length; iFormat++ ) {\n\t\t\t\tif ( literal ) {\n\t\t\t\t\tif ( format.charAt( iFormat ) === \"'\" && !lookAhead( \"'\" ) ) {\n\t\t\t\t\t\tliteral = false;\n\t\t\t\t\t} else {\n\t\t\t\t\t\toutput += format.charAt( iFormat );\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tswitch ( format.charAt( iFormat ) ) {\n\t\t\t\t\t\tcase \"d\":\n\t\t\t\t\t\t\toutput += formatNumber( \"d\", date.getDate(), 2 );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"D\":\n\t\t\t\t\t\t\toutput += formatName( \"D\", date.getDay(), dayNamesShort, dayNames );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"o\":\n\t\t\t\t\t\t\toutput += formatNumber( \"o\",\n\t\t\t\t\t\t\t\tMath.round( ( new Date( date.getFullYear(), date.getMonth(), date.getDate() ).getTime() - new Date( date.getFullYear(), 0, 0 ).getTime() ) / 86400000 ), 3 );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"m\":\n\t\t\t\t\t\t\toutput += formatNumber( \"m\", date.getMonth() + 1, 2 );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"M\":\n\t\t\t\t\t\t\toutput += formatName( \"M\", date.getMonth(), monthNamesShort, monthNames );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"y\":\n\t\t\t\t\t\t\toutput += ( lookAhead( \"y\" ) ? date.getFullYear() :\n\t\t\t\t\t\t\t\t( date.getFullYear() % 100 < 10 ? \"0\" : \"\" ) + date.getFullYear() % 100 );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"@\":\n\t\t\t\t\t\t\toutput += date.getTime();\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"!\":\n\t\t\t\t\t\t\toutput += date.getTime() * 10000 + this._ticksTo1970;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"'\":\n\t\t\t\t\t\t\tif ( lookAhead( \"'\" ) ) {\n\t\t\t\t\t\t\t\toutput += \"'\";\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tliteral = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\toutput += format.charAt( iFormat );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t},\n\n\t/* Extract all possible characters from the date format. */\n\t_possibleChars: function( format ) {\n\t\tvar iFormat,\n\t\t\tchars = \"\",\n\t\t\tliteral = false,\n\n\t\t\t// Check whether a format character is doubled\n\t\t\tlookAhead = function( match ) {\n\t\t\t\tvar matches = ( iFormat + 1 < format.length && format.charAt( iFormat + 1 ) === match );\n\t\t\t\tif ( matches ) {\n\t\t\t\t\tiFormat++;\n\t\t\t\t}\n\t\t\t\treturn matches;\n\t\t\t};\n\n\t\tfor ( iFormat = 0; iFormat < format.length; iFormat++ ) {\n\t\t\tif ( literal ) {\n\t\t\t\tif ( format.charAt( iFormat ) === \"'\" && !lookAhead( \"'\" ) ) {\n\t\t\t\t\tliteral = false;\n\t\t\t\t} else {\n\t\t\t\t\tchars += format.charAt( iFormat );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tswitch ( format.charAt( iFormat ) ) {\n\t\t\t\t\tcase \"d\": case \"m\": case \"y\": case \"@\":\n\t\t\t\t\t\tchars += \"0123456789\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"D\": case \"M\":\n\t\t\t\t\t\treturn null; // Accept anything\n\t\t\t\t\tcase \"'\":\n\t\t\t\t\t\tif ( lookAhead( \"'\" ) ) {\n\t\t\t\t\t\t\tchars += \"'\";\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tliteral = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tchars += format.charAt( iFormat );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn chars;\n\t},\n\n\t/* Get a setting value, defaulting if necessary. */\n\t_get: function( inst, name ) {\n\t\treturn inst.settings[ name ] !== undefined ?\n\t\t\tinst.settings[ name ] : this._defaults[ name ];\n\t},\n\n\t/* Parse existing date and initialise date picker. */\n\t_setDateFromField: function( inst, noDefault ) {\n\t\tif ( inst.input.val() === inst.lastVal ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar dateFormat = this._get( inst, \"dateFormat\" ),\n\t\t\tdates = inst.lastVal = inst.input ? inst.input.val() : null,\n\t\t\tdefaultDate = this._getDefaultDate( inst ),\n\t\t\tdate = defaultDate,\n\t\t\tsettings = this._getFormatConfig( inst );\n\n\t\ttry {\n\t\t\tdate = this.parseDate( dateFormat, dates, settings ) || defaultDate;\n\t\t} catch ( event ) {\n\t\t\tdates = ( noDefault ? \"\" : dates );\n\t\t}\n\t\tinst.selectedDay = date.getDate();\n\t\tinst.drawMonth = inst.selectedMonth = date.getMonth();\n\t\tinst.drawYear = inst.selectedYear = date.getFullYear();\n\t\tinst.currentDay = ( dates ? date.getDate() : 0 );\n\t\tinst.currentMonth = ( dates ? date.getMonth() : 0 );\n\t\tinst.currentYear = ( dates ? date.getFullYear() : 0 );\n\t\tthis._adjustInstDate( inst );\n\t},\n\n\t/* Retrieve the default date shown on opening. */\n\t_getDefaultDate: function( inst ) {\n\t\treturn this._restrictMinMax( inst,\n\t\t\tthis._determineDate( inst, this._get( inst, \"defaultDate\" ), new Date() ) );\n\t},\n\n\t/* A date may be specified as an exact value or a relative one. */\n\t_determineDate: function( inst, date, defaultDate ) {\n\t\tvar offsetNumeric = function( offset ) {\n\t\t\t\tvar date = new Date();\n\t\t\t\tdate.setDate( date.getDate() + offset );\n\t\t\t\treturn date;\n\t\t\t},\n\t\t\toffsetString = function( offset ) {\n\t\t\t\ttry {\n\t\t\t\t\treturn $.datepicker.parseDate( $.datepicker._get( inst, \"dateFormat\" ),\n\t\t\t\t\t\toffset, $.datepicker._getFormatConfig( inst ) );\n\t\t\t\t}\n\t\t\t\tcatch ( e ) {\n\n\t\t\t\t\t// Ignore\n\t\t\t\t}\n\n\t\t\t\tvar date = ( offset.toLowerCase().match( /^c/ ) ?\n\t\t\t\t\t$.datepicker._getDate( inst ) : null ) || new Date(),\n\t\t\t\t\tyear = date.getFullYear(),\n\t\t\t\t\tmonth = date.getMonth(),\n\t\t\t\t\tday = date.getDate(),\n\t\t\t\t\tpattern = /([+\\-]?[0-9]+)\\s*(d|D|w|W|m|M|y|Y)?/g,\n\t\t\t\t\tmatches = pattern.exec( offset );\n\n\t\t\t\twhile ( matches ) {\n\t\t\t\t\tswitch ( matches[ 2 ] || \"d\" ) {\n\t\t\t\t\t\tcase \"d\" : case \"D\" :\n\t\t\t\t\t\t\tday += parseInt( matches[ 1 ], 10 ); break;\n\t\t\t\t\t\tcase \"w\" : case \"W\" :\n\t\t\t\t\t\t\tday += parseInt( matches[ 1 ], 10 ) * 7; break;\n\t\t\t\t\t\tcase \"m\" : case \"M\" :\n\t\t\t\t\t\t\tmonth += parseInt( matches[ 1 ], 10 );\n\t\t\t\t\t\t\tday = Math.min( day, $.datepicker._getDaysInMonth( year, month ) );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"y\": case \"Y\" :\n\t\t\t\t\t\t\tyear += parseInt( matches[ 1 ], 10 );\n\t\t\t\t\t\t\tday = Math.min( day, $.datepicker._getDaysInMonth( year, month ) );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tmatches = pattern.exec( offset );\n\t\t\t\t}\n\t\t\t\treturn new Date( year, month, day );\n\t\t\t},\n\t\t\tnewDate = ( date == null || date === \"\" ? defaultDate : ( typeof date === \"string\" ? offsetString( date ) :\n\t\t\t\t( typeof date === \"number\" ? ( isNaN( date ) ? defaultDate : offsetNumeric( date ) ) : new Date( date.getTime() ) ) ) );\n\n\t\tnewDate = ( newDate && newDate.toString() === \"Invalid Date\" ? defaultDate : newDate );\n\t\tif ( newDate ) {\n\t\t\tnewDate.setHours( 0 );\n\t\t\tnewDate.setMinutes( 0 );\n\t\t\tnewDate.setSeconds( 0 );\n\t\t\tnewDate.setMilliseconds( 0 );\n\t\t}\n\t\treturn this._daylightSavingAdjust( newDate );\n\t},\n\n\t/* Handle switch to/from daylight saving.\n\t * Hours may be non-zero on daylight saving cut-over:\n\t * > 12 when midnight changeover, but then cannot generate\n\t * midnight datetime, so jump to 1AM, otherwise reset.\n\t * @param  date  (Date) the date to check\n\t * @return  (Date) the corrected date\n\t */\n\t_daylightSavingAdjust: function( date ) {\n\t\tif ( !date ) {\n\t\t\treturn null;\n\t\t}\n\t\tdate.setHours( date.getHours() > 12 ? date.getHours() + 2 : 0 );\n\t\treturn date;\n\t},\n\n\t/* Set the date(s) directly. */\n\t_setDate: function( inst, date, noChange ) {\n\t\tvar clear = !date,\n\t\t\torigMonth = inst.selectedMonth,\n\t\t\torigYear = inst.selectedYear,\n\t\t\tnewDate = this._restrictMinMax( inst, this._determineDate( inst, date, new Date() ) );\n\n\t\tinst.selectedDay = inst.currentDay = newDate.getDate();\n\t\tinst.drawMonth = inst.selectedMonth = inst.currentMonth = newDate.getMonth();\n\t\tinst.drawYear = inst.selectedYear = inst.currentYear = newDate.getFullYear();\n\t\tif ( ( origMonth !== inst.selectedMonth || origYear !== inst.selectedYear ) && !noChange ) {\n\t\t\tthis._notifyChange( inst );\n\t\t}\n\t\tthis._adjustInstDate( inst );\n\t\tif ( inst.input ) {\n\t\t\tinst.input.val( clear ? \"\" : this._formatDate( inst ) );\n\t\t}\n\t},\n\n\t/* Retrieve the date(s) directly. */\n\t_getDate: function( inst ) {\n\t\tvar startDate = ( !inst.currentYear || ( inst.input && inst.input.val() === \"\" ) ? null :\n\t\t\tthis._daylightSavingAdjust( new Date(\n\t\t\tinst.currentYear, inst.currentMonth, inst.currentDay ) ) );\n\t\t\treturn startDate;\n\t},\n\n\t/* Attach the onxxx handlers.  These are declared statically so\n\t * they work with static code transformers like Caja.\n\t */\n\t_attachHandlers: function( inst ) {\n\t\tvar stepMonths = this._get( inst, \"stepMonths\" ),\n\t\t\tid = \"#\" + inst.id.replace( /\\\\\\\\/g, \"\\\\\" );\n\t\tinst.dpDiv.find( \"[data-handler]\" ).map( function() {\n\t\t\tvar handler = {\n\t\t\t\tprev: function() {\n\t\t\t\t\t$.datepicker._adjustDate( id, -stepMonths, \"M\" );\n\t\t\t\t},\n\t\t\t\tnext: function() {\n\t\t\t\t\t$.datepicker._adjustDate( id, +stepMonths, \"M\" );\n\t\t\t\t},\n\t\t\t\thide: function() {\n\t\t\t\t\t$.datepicker._hideDatepicker();\n\t\t\t\t},\n\t\t\t\ttoday: function() {\n\t\t\t\t\t$.datepicker._gotoToday( id );\n\t\t\t\t},\n\t\t\t\tselectDay: function() {\n\t\t\t\t\t$.datepicker._selectDay( id, +this.getAttribute( \"data-month\" ), +this.getAttribute( \"data-year\" ), this );\n\t\t\t\t\treturn false;\n\t\t\t\t},\n\t\t\t\tselectMonth: function() {\n\t\t\t\t\t$.datepicker._selectMonthYear( id, this, \"M\" );\n\t\t\t\t\treturn false;\n\t\t\t\t},\n\t\t\t\tselectYear: function() {\n\t\t\t\t\t$.datepicker._selectMonthYear( id, this, \"Y\" );\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t};\n\t\t\t$( this ).on( this.getAttribute( \"data-event\" ), handler[ this.getAttribute( \"data-handler\" ) ] );\n\t\t} );\n\t},\n\n\t/* Generate the HTML for the current state of the date picker. */\n\t_generateHTML: function( inst ) {\n\t\tvar maxDraw, prevText, prev, nextText, next, currentText, gotoDate,\n\t\t\tcontrols, buttonPanel, firstDay, showWeek, dayNames, dayNamesMin,\n\t\t\tmonthNames, monthNamesShort, beforeShowDay, showOtherMonths,\n\t\t\tselectOtherMonths, defaultDate, html, dow, row, group, col, selectedDate,\n\t\t\tcornerClass, calender, thead, day, daysInMonth, leadDays, curRows, numRows,\n\t\t\tprintDate, dRow, tbody, daySettings, otherMonth, unselectable,\n\t\t\ttempDate = new Date(),\n\t\t\ttoday = this._daylightSavingAdjust(\n\t\t\t\tnew Date( tempDate.getFullYear(), tempDate.getMonth(), tempDate.getDate() ) ), // clear time\n\t\t\tisRTL = this._get( inst, \"isRTL\" ),\n\t\t\tshowButtonPanel = this._get( inst, \"showButtonPanel\" ),\n\t\t\thideIfNoPrevNext = this._get( inst, \"hideIfNoPrevNext\" ),\n\t\t\tnavigationAsDateFormat = this._get( inst, \"navigationAsDateFormat\" ),\n\t\t\tnumMonths = this._getNumberOfMonths( inst ),\n\t\t\tshowCurrentAtPos = this._get( inst, \"showCurrentAtPos\" ),\n\t\t\tstepMonths = this._get( inst, \"stepMonths\" ),\n\t\t\tisMultiMonth = ( numMonths[ 0 ] !== 1 || numMonths[ 1 ] !== 1 ),\n\t\t\tcurrentDate = this._daylightSavingAdjust( ( !inst.currentDay ? new Date( 9999, 9, 9 ) :\n\t\t\t\tnew Date( inst.currentYear, inst.currentMonth, inst.currentDay ) ) ),\n\t\t\tminDate = this._getMinMaxDate( inst, \"min\" ),\n\t\t\tmaxDate = this._getMinMaxDate( inst, \"max\" ),\n\t\t\tdrawMonth = inst.drawMonth - showCurrentAtPos,\n\t\t\tdrawYear = inst.drawYear;\n\n\t\tif ( drawMonth < 0 ) {\n\t\t\tdrawMonth += 12;\n\t\t\tdrawYear--;\n\t\t}\n\t\tif ( maxDate ) {\n\t\t\tmaxDraw = this._daylightSavingAdjust( new Date( maxDate.getFullYear(),\n\t\t\t\tmaxDate.getMonth() - ( numMonths[ 0 ] * numMonths[ 1 ] ) + 1, maxDate.getDate() ) );\n\t\t\tmaxDraw = ( minDate && maxDraw < minDate ? minDate : maxDraw );\n\t\t\twhile ( this._daylightSavingAdjust( new Date( drawYear, drawMonth, 1 ) ) > maxDraw ) {\n\t\t\t\tdrawMonth--;\n\t\t\t\tif ( drawMonth < 0 ) {\n\t\t\t\t\tdrawMonth = 11;\n\t\t\t\t\tdrawYear--;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tinst.drawMonth = drawMonth;\n\t\tinst.drawYear = drawYear;\n\n\t\tprevText = this._get( inst, \"prevText\" );\n\t\tprevText = ( !navigationAsDateFormat ? prevText : this.formatDate( prevText,\n\t\t\tthis._daylightSavingAdjust( new Date( drawYear, drawMonth - stepMonths, 1 ) ),\n\t\t\tthis._getFormatConfig( inst ) ) );\n\n\t\tprev = ( this._canAdjustMonth( inst, -1, drawYear, drawMonth ) ?\n\t\t\t\"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click'\" +\n\t\t\t\" title='\" + prevText + \"'><span class='ui-icon ui-icon-circle-triangle-\" + ( isRTL ? \"e\" : \"w\" ) + \"'>\" + prevText + \"</span></a>\" :\n\t\t\t( hideIfNoPrevNext ? \"\" : \"<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='\" + prevText + \"'><span class='ui-icon ui-icon-circle-triangle-\" + ( isRTL ? \"e\" : \"w\" ) + \"'>\" + prevText + \"</span></a>\" ) );\n\n\t\tnextText = this._get( inst, \"nextText\" );\n\t\tnextText = ( !navigationAsDateFormat ? nextText : this.formatDate( nextText,\n\t\t\tthis._daylightSavingAdjust( new Date( drawYear, drawMonth + stepMonths, 1 ) ),\n\t\t\tthis._getFormatConfig( inst ) ) );\n\n\t\tnext = ( this._canAdjustMonth( inst, +1, drawYear, drawMonth ) ?\n\t\t\t\"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click'\" +\n\t\t\t\" title='\" + nextText + \"'><span class='ui-icon ui-icon-circle-triangle-\" + ( isRTL ? \"w\" : \"e\" ) + \"'>\" + nextText + \"</span></a>\" :\n\t\t\t( hideIfNoPrevNext ? \"\" : \"<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='\" + nextText + \"'><span class='ui-icon ui-icon-circle-triangle-\" + ( isRTL ? \"w\" : \"e\" ) + \"'>\" + nextText + \"</span></a>\" ) );\n\n\t\tcurrentText = this._get( inst, \"currentText\" );\n\t\tgotoDate = ( this._get( inst, \"gotoCurrent\" ) && inst.currentDay ? currentDate : today );\n\t\tcurrentText = ( !navigationAsDateFormat ? currentText :\n\t\t\tthis.formatDate( currentText, gotoDate, this._getFormatConfig( inst ) ) );\n\n\t\tcontrols = ( !inst.inline ? \"<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>\" +\n\t\t\tthis._get( inst, \"closeText\" ) + \"</button>\" : \"\" );\n\n\t\tbuttonPanel = ( showButtonPanel ) ? \"<div class='ui-datepicker-buttonpane ui-widget-content'>\" + ( isRTL ? controls : \"\" ) +\n\t\t\t( this._isInRange( inst, gotoDate ) ? \"<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'\" +\n\t\t\t\">\" + currentText + \"</button>\" : \"\" ) + ( isRTL ? \"\" : controls ) + \"</div>\" : \"\";\n\n\t\tfirstDay = parseInt( this._get( inst, \"firstDay\" ), 10 );\n\t\tfirstDay = ( isNaN( firstDay ) ? 0 : firstDay );\n\n\t\tshowWeek = this._get( inst, \"showWeek\" );\n\t\tdayNames = this._get( inst, \"dayNames\" );\n\t\tdayNamesMin = this._get( inst, \"dayNamesMin\" );\n\t\tmonthNames = this._get( inst, \"monthNames\" );\n\t\tmonthNamesShort = this._get( inst, \"monthNamesShort\" );\n\t\tbeforeShowDay = this._get( inst, \"beforeShowDay\" );\n\t\tshowOtherMonths = this._get( inst, \"showOtherMonths\" );\n\t\tselectOtherMonths = this._get( inst, \"selectOtherMonths\" );\n\t\tdefaultDate = this._getDefaultDate( inst );\n\t\thtml = \"\";\n\n\t\tfor ( row = 0; row < numMonths[ 0 ]; row++ ) {\n\t\t\tgroup = \"\";\n\t\t\tthis.maxRows = 4;\n\t\t\tfor ( col = 0; col < numMonths[ 1 ]; col++ ) {\n\t\t\t\tselectedDate = this._daylightSavingAdjust( new Date( drawYear, drawMonth, inst.selectedDay ) );\n\t\t\t\tcornerClass = \" ui-corner-all\";\n\t\t\t\tcalender = \"\";\n\t\t\t\tif ( isMultiMonth ) {\n\t\t\t\t\tcalender += \"<div class='ui-datepicker-group\";\n\t\t\t\t\tif ( numMonths[ 1 ] > 1 ) {\n\t\t\t\t\t\tswitch ( col ) {\n\t\t\t\t\t\t\tcase 0: calender += \" ui-datepicker-group-first\";\n\t\t\t\t\t\t\t\tcornerClass = \" ui-corner-\" + ( isRTL ? \"right\" : \"left\" ); break;\n\t\t\t\t\t\t\tcase numMonths[ 1 ] - 1: calender += \" ui-datepicker-group-last\";\n\t\t\t\t\t\t\t\tcornerClass = \" ui-corner-\" + ( isRTL ? \"left\" : \"right\" ); break;\n\t\t\t\t\t\t\tdefault: calender += \" ui-datepicker-group-middle\"; cornerClass = \"\"; break;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcalender += \"'>\";\n\t\t\t\t}\n\t\t\t\tcalender += \"<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix\" + cornerClass + \"'>\" +\n\t\t\t\t\t( /all|left/.test( cornerClass ) && row === 0 ? ( isRTL ? next : prev ) : \"\" ) +\n\t\t\t\t\t( /all|right/.test( cornerClass ) && row === 0 ? ( isRTL ? prev : next ) : \"\" ) +\n\t\t\t\t\tthis._generateMonthYearHeader( inst, drawMonth, drawYear, minDate, maxDate,\n\t\t\t\t\trow > 0 || col > 0, monthNames, monthNamesShort ) + // draw month headers\n\t\t\t\t\t\"</div><table class='ui-datepicker-calendar'><thead>\" +\n\t\t\t\t\t\"<tr>\";\n\t\t\t\tthead = ( showWeek ? \"<th class='ui-datepicker-week-col'>\" + this._get( inst, \"weekHeader\" ) + \"</th>\" : \"\" );\n\t\t\t\tfor ( dow = 0; dow < 7; dow++ ) { // days of the week\n\t\t\t\t\tday = ( dow + firstDay ) % 7;\n\t\t\t\t\tthead += \"<th scope='col'\" + ( ( dow + firstDay + 6 ) % 7 >= 5 ? \" class='ui-datepicker-week-end'\" : \"\" ) + \">\" +\n\t\t\t\t\t\t\"<span title='\" + dayNames[ day ] + \"'>\" + dayNamesMin[ day ] + \"</span></th>\";\n\t\t\t\t}\n\t\t\t\tcalender += thead + \"</tr></thead><tbody>\";\n\t\t\t\tdaysInMonth = this._getDaysInMonth( drawYear, drawMonth );\n\t\t\t\tif ( drawYear === inst.selectedYear && drawMonth === inst.selectedMonth ) {\n\t\t\t\t\tinst.selectedDay = Math.min( inst.selectedDay, daysInMonth );\n\t\t\t\t}\n\t\t\t\tleadDays = ( this._getFirstDayOfMonth( drawYear, drawMonth ) - firstDay + 7 ) % 7;\n\t\t\t\tcurRows = Math.ceil( ( leadDays + daysInMonth ) / 7 ); // calculate the number of rows to generate\n\t\t\t\tnumRows = ( isMultiMonth ? this.maxRows > curRows ? this.maxRows : curRows : curRows ); //If multiple months, use the higher number of rows (see #7043)\n\t\t\t\tthis.maxRows = numRows;\n\t\t\t\tprintDate = this._daylightSavingAdjust( new Date( drawYear, drawMonth, 1 - leadDays ) );\n\t\t\t\tfor ( dRow = 0; dRow < numRows; dRow++ ) { // create date picker rows\n\t\t\t\t\tcalender += \"<tr>\";\n\t\t\t\t\ttbody = ( !showWeek ? \"\" : \"<td class='ui-datepicker-week-col'>\" +\n\t\t\t\t\t\tthis._get( inst, \"calculateWeek\" )( printDate ) + \"</td>\" );\n\t\t\t\t\tfor ( dow = 0; dow < 7; dow++ ) { // create date picker days\n\t\t\t\t\t\tdaySettings = ( beforeShowDay ?\n\t\t\t\t\t\t\tbeforeShowDay.apply( ( inst.input ? inst.input[ 0 ] : null ), [ printDate ] ) : [ true, \"\" ] );\n\t\t\t\t\t\totherMonth = ( printDate.getMonth() !== drawMonth );\n\t\t\t\t\t\tunselectable = ( otherMonth && !selectOtherMonths ) || !daySettings[ 0 ] ||\n\t\t\t\t\t\t\t( minDate && printDate < minDate ) || ( maxDate && printDate > maxDate );\n\t\t\t\t\t\ttbody += \"<td class='\" +\n\t\t\t\t\t\t\t( ( dow + firstDay + 6 ) % 7 >= 5 ? \" ui-datepicker-week-end\" : \"\" ) + // highlight weekends\n\t\t\t\t\t\t\t( otherMonth ? \" ui-datepicker-other-month\" : \"\" ) + // highlight days from other months\n\t\t\t\t\t\t\t( ( printDate.getTime() === selectedDate.getTime() && drawMonth === inst.selectedMonth && inst._keyEvent ) || // user pressed key\n\t\t\t\t\t\t\t( defaultDate.getTime() === printDate.getTime() && defaultDate.getTime() === selectedDate.getTime() ) ?\n\n\t\t\t\t\t\t\t// or defaultDate is current printedDate and defaultDate is selectedDate\n\t\t\t\t\t\t\t\" \" + this._dayOverClass : \"\" ) + // highlight selected day\n\t\t\t\t\t\t\t( unselectable ? \" \" + this._unselectableClass + \" ui-state-disabled\" : \"\" ) +  // highlight unselectable days\n\t\t\t\t\t\t\t( otherMonth && !showOtherMonths ? \"\" : \" \" + daySettings[ 1 ] + // highlight custom dates\n\t\t\t\t\t\t\t( printDate.getTime() === currentDate.getTime() ? \" \" + this._currentClass : \"\" ) + // highlight selected day\n\t\t\t\t\t\t\t( printDate.getTime() === today.getTime() ? \" ui-datepicker-today\" : \"\" ) ) + \"'\" + // highlight today (if different)\n\t\t\t\t\t\t\t( ( !otherMonth || showOtherMonths ) && daySettings[ 2 ] ? \" title='\" + daySettings[ 2 ].replace( /'/g, \"&#39;\" ) + \"'\" : \"\" ) + // cell title\n\t\t\t\t\t\t\t( unselectable ? \"\" : \" data-handler='selectDay' data-event='click' data-month='\" + printDate.getMonth() + \"' data-year='\" + printDate.getFullYear() + \"'\" ) + \">\" + // actions\n\t\t\t\t\t\t\t( otherMonth && !showOtherMonths ? \"&#xa0;\" : // display for other months\n\t\t\t\t\t\t\t( unselectable ? \"<span class='ui-state-default'>\" + printDate.getDate() + \"</span>\" : \"<a class='ui-state-default\" +\n\t\t\t\t\t\t\t( printDate.getTime() === today.getTime() ? \" ui-state-highlight\" : \"\" ) +\n\t\t\t\t\t\t\t( printDate.getTime() === currentDate.getTime() ? \" ui-state-active\" : \"\" ) + // highlight selected day\n\t\t\t\t\t\t\t( otherMonth ? \" ui-priority-secondary\" : \"\" ) + // distinguish dates from other months\n\t\t\t\t\t\t\t\"' href='#'>\" + printDate.getDate() + \"</a>\" ) ) + \"</td>\"; // display selectable date\n\t\t\t\t\t\tprintDate.setDate( printDate.getDate() + 1 );\n\t\t\t\t\t\tprintDate = this._daylightSavingAdjust( printDate );\n\t\t\t\t\t}\n\t\t\t\t\tcalender += tbody + \"</tr>\";\n\t\t\t\t}\n\t\t\t\tdrawMonth++;\n\t\t\t\tif ( drawMonth > 11 ) {\n\t\t\t\t\tdrawMonth = 0;\n\t\t\t\t\tdrawYear++;\n\t\t\t\t}\n\t\t\t\tcalender += \"</tbody></table>\" + ( isMultiMonth ? \"</div>\" +\n\t\t\t\t\t\t\t( ( numMonths[ 0 ] > 0 && col === numMonths[ 1 ] - 1 ) ? \"<div class='ui-datepicker-row-break'></div>\" : \"\" ) : \"\" );\n\t\t\t\tgroup += calender;\n\t\t\t}\n\t\t\thtml += group;\n\t\t}\n\t\thtml += buttonPanel;\n\t\tinst._keyEvent = false;\n\t\treturn html;\n\t},\n\n\t/* Generate the month and year header. */\n\t_generateMonthYearHeader: function( inst, drawMonth, drawYear, minDate, maxDate,\n\t\t\tsecondary, monthNames, monthNamesShort ) {\n\n\t\tvar inMinYear, inMaxYear, month, years, thisYear, determineYear, year, endYear,\n\t\t\tchangeMonth = this._get( inst, \"changeMonth\" ),\n\t\t\tchangeYear = this._get( inst, \"changeYear\" ),\n\t\t\tshowMonthAfterYear = this._get( inst, \"showMonthAfterYear\" ),\n\t\t\thtml = \"<div class='ui-datepicker-title'>\",\n\t\t\tmonthHtml = \"\";\n\n\t\t// Month selection\n\t\tif ( secondary || !changeMonth ) {\n\t\t\tmonthHtml += \"<span class='ui-datepicker-month'>\" + monthNames[ drawMonth ] + \"</span>\";\n\t\t} else {\n\t\t\tinMinYear = ( minDate && minDate.getFullYear() === drawYear );\n\t\t\tinMaxYear = ( maxDate && maxDate.getFullYear() === drawYear );\n\t\t\tmonthHtml += \"<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>\";\n\t\t\tfor ( month = 0; month < 12; month++ ) {\n\t\t\t\tif ( ( !inMinYear || month >= minDate.getMonth() ) && ( !inMaxYear || month <= maxDate.getMonth() ) ) {\n\t\t\t\t\tmonthHtml += \"<option value='\" + month + \"'\" +\n\t\t\t\t\t\t( month === drawMonth ? \" selected='selected'\" : \"\" ) +\n\t\t\t\t\t\t\">\" + monthNamesShort[ month ] + \"</option>\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tmonthHtml += \"</select>\";\n\t\t}\n\n\t\tif ( !showMonthAfterYear ) {\n\t\t\thtml += monthHtml + ( secondary || !( changeMonth && changeYear ) ? \"&#xa0;\" : \"\" );\n\t\t}\n\n\t\t// Year selection\n\t\tif ( !inst.yearshtml ) {\n\t\t\tinst.yearshtml = \"\";\n\t\t\tif ( secondary || !changeYear ) {\n\t\t\t\thtml += \"<span class='ui-datepicker-year'>\" + drawYear + \"</span>\";\n\t\t\t} else {\n\n\t\t\t\t// determine range of years to display\n\t\t\t\tyears = this._get( inst, \"yearRange\" ).split( \":\" );\n\t\t\t\tthisYear = new Date().getFullYear();\n\t\t\t\tdetermineYear = function( value ) {\n\t\t\t\t\tvar year = ( value.match( /c[+\\-].*/ ) ? drawYear + parseInt( value.substring( 1 ), 10 ) :\n\t\t\t\t\t\t( value.match( /[+\\-].*/ ) ? thisYear + parseInt( value, 10 ) :\n\t\t\t\t\t\tparseInt( value, 10 ) ) );\n\t\t\t\t\treturn ( isNaN( year ) ? thisYear : year );\n\t\t\t\t};\n\t\t\t\tyear = determineYear( years[ 0 ] );\n\t\t\t\tendYear = Math.max( year, determineYear( years[ 1 ] || \"\" ) );\n\t\t\t\tyear = ( minDate ? Math.max( year, minDate.getFullYear() ) : year );\n\t\t\t\tendYear = ( maxDate ? Math.min( endYear, maxDate.getFullYear() ) : endYear );\n\t\t\t\tinst.yearshtml += \"<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>\";\n\t\t\t\tfor ( ; year <= endYear; year++ ) {\n\t\t\t\t\tinst.yearshtml += \"<option value='\" + year + \"'\" +\n\t\t\t\t\t\t( year === drawYear ? \" selected='selected'\" : \"\" ) +\n\t\t\t\t\t\t\">\" + year + \"</option>\";\n\t\t\t\t}\n\t\t\t\tinst.yearshtml += \"</select>\";\n\n\t\t\t\thtml += inst.yearshtml;\n\t\t\t\tinst.yearshtml = null;\n\t\t\t}\n\t\t}\n\n\t\thtml += this._get( inst, \"yearSuffix\" );\n\t\tif ( showMonthAfterYear ) {\n\t\t\thtml += ( secondary || !( changeMonth && changeYear ) ? \"&#xa0;\" : \"\" ) + monthHtml;\n\t\t}\n\t\thtml += \"</div>\"; // Close datepicker_header\n\t\treturn html;\n\t},\n\n\t/* Adjust one of the date sub-fields. */\n\t_adjustInstDate: function( inst, offset, period ) {\n\t\tvar year = inst.selectedYear + ( period === \"Y\" ? offset : 0 ),\n\t\t\tmonth = inst.selectedMonth + ( period === \"M\" ? offset : 0 ),\n\t\t\tday = Math.min( inst.selectedDay, this._getDaysInMonth( year, month ) ) + ( period === \"D\" ? offset : 0 ),\n\t\t\tdate = this._restrictMinMax( inst, this._daylightSavingAdjust( new Date( year, month, day ) ) );\n\n\t\tinst.selectedDay = date.getDate();\n\t\tinst.drawMonth = inst.selectedMonth = date.getMonth();\n\t\tinst.drawYear = inst.selectedYear = date.getFullYear();\n\t\tif ( period === \"M\" || period === \"Y\" ) {\n\t\t\tthis._notifyChange( inst );\n\t\t}\n\t},\n\n\t/* Ensure a date is within any min/max bounds. */\n\t_restrictMinMax: function( inst, date ) {\n\t\tvar minDate = this._getMinMaxDate( inst, \"min\" ),\n\t\t\tmaxDate = this._getMinMaxDate( inst, \"max\" ),\n\t\t\tnewDate = ( minDate && date < minDate ? minDate : date );\n\t\treturn ( maxDate && newDate > maxDate ? maxDate : newDate );\n\t},\n\n\t/* Notify change of month/year. */\n\t_notifyChange: function( inst ) {\n\t\tvar onChange = this._get( inst, \"onChangeMonthYear\" );\n\t\tif ( onChange ) {\n\t\t\tonChange.apply( ( inst.input ? inst.input[ 0 ] : null ),\n\t\t\t\t[ inst.selectedYear, inst.selectedMonth + 1, inst ] );\n\t\t}\n\t},\n\n\t/* Determine the number of months to show. */\n\t_getNumberOfMonths: function( inst ) {\n\t\tvar numMonths = this._get( inst, \"numberOfMonths\" );\n\t\treturn ( numMonths == null ? [ 1, 1 ] : ( typeof numMonths === \"number\" ? [ 1, numMonths ] : numMonths ) );\n\t},\n\n\t/* Determine the current maximum date - ensure no time components are set. */\n\t_getMinMaxDate: function( inst, minMax ) {\n\t\treturn this._determineDate( inst, this._get( inst, minMax + \"Date\" ), null );\n\t},\n\n\t/* Find the number of days in a given month. */\n\t_getDaysInMonth: function( year, month ) {\n\t\treturn 32 - this._daylightSavingAdjust( new Date( year, month, 32 ) ).getDate();\n\t},\n\n\t/* Find the day of the week of the first of a month. */\n\t_getFirstDayOfMonth: function( year, month ) {\n\t\treturn new Date( year, month, 1 ).getDay();\n\t},\n\n\t/* Determines if we should allow a \"next/prev\" month display change. */\n\t_canAdjustMonth: function( inst, offset, curYear, curMonth ) {\n\t\tvar numMonths = this._getNumberOfMonths( inst ),\n\t\t\tdate = this._daylightSavingAdjust( new Date( curYear,\n\t\t\tcurMonth + ( offset < 0 ? offset : numMonths[ 0 ] * numMonths[ 1 ] ), 1 ) );\n\n\t\tif ( offset < 0 ) {\n\t\t\tdate.setDate( this._getDaysInMonth( date.getFullYear(), date.getMonth() ) );\n\t\t}\n\t\treturn this._isInRange( inst, date );\n\t},\n\n\t/* Is the given date in the accepted range? */\n\t_isInRange: function( inst, date ) {\n\t\tvar yearSplit, currentYear,\n\t\t\tminDate = this._getMinMaxDate( inst, \"min\" ),\n\t\t\tmaxDate = this._getMinMaxDate( inst, \"max\" ),\n\t\t\tminYear = null,\n\t\t\tmaxYear = null,\n\t\t\tyears = this._get( inst, \"yearRange\" );\n\t\t\tif ( years ) {\n\t\t\t\tyearSplit = years.split( \":\" );\n\t\t\t\tcurrentYear = new Date().getFullYear();\n\t\t\t\tminYear = parseInt( yearSplit[ 0 ], 10 );\n\t\t\t\tmaxYear = parseInt( yearSplit[ 1 ], 10 );\n\t\t\t\tif ( yearSplit[ 0 ].match( /[+\\-].*/ ) ) {\n\t\t\t\t\tminYear += currentYear;\n\t\t\t\t}\n\t\t\t\tif ( yearSplit[ 1 ].match( /[+\\-].*/ ) ) {\n\t\t\t\t\tmaxYear += currentYear;\n\t\t\t\t}\n\t\t\t}\n\n\t\treturn ( ( !minDate || date.getTime() >= minDate.getTime() ) &&\n\t\t\t( !maxDate || date.getTime() <= maxDate.getTime() ) &&\n\t\t\t( !minYear || date.getFullYear() >= minYear ) &&\n\t\t\t( !maxYear || date.getFullYear() <= maxYear ) );\n\t},\n\n\t/* Provide the configuration settings for formatting/parsing. */\n\t_getFormatConfig: function( inst ) {\n\t\tvar shortYearCutoff = this._get( inst, \"shortYearCutoff\" );\n\t\tshortYearCutoff = ( typeof shortYearCutoff !== \"string\" ? shortYearCutoff :\n\t\t\tnew Date().getFullYear() % 100 + parseInt( shortYearCutoff, 10 ) );\n\t\treturn { shortYearCutoff: shortYearCutoff,\n\t\t\tdayNamesShort: this._get( inst, \"dayNamesShort\" ), dayNames: this._get( inst, \"dayNames\" ),\n\t\t\tmonthNamesShort: this._get( inst, \"monthNamesShort\" ), monthNames: this._get( inst, \"monthNames\" ) };\n\t},\n\n\t/* Format the given date for display. */\n\t_formatDate: function( inst, day, month, year ) {\n\t\tif ( !day ) {\n\t\t\tinst.currentDay = inst.selectedDay;\n\t\t\tinst.currentMonth = inst.selectedMonth;\n\t\t\tinst.currentYear = inst.selectedYear;\n\t\t}\n\t\tvar date = ( day ? ( typeof day === \"object\" ? day :\n\t\t\tthis._daylightSavingAdjust( new Date( year, month, day ) ) ) :\n\t\t\tthis._daylightSavingAdjust( new Date( inst.currentYear, inst.currentMonth, inst.currentDay ) ) );\n\t\treturn this.formatDate( this._get( inst, \"dateFormat\" ), date, this._getFormatConfig( inst ) );\n\t}\n} );\n\n/*\n * Bind hover events for datepicker elements.\n * Done via delegate so the binding only occurs once in the lifetime of the parent div.\n * Global datepicker_instActive, set by _updateDatepicker allows the handlers to find their way back to the active picker.\n */\nfunction datepicker_bindHover( dpDiv ) {\n\tvar selector = \"button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a\";\n\treturn dpDiv.on( \"mouseout\", selector, function() {\n\t\t\t$( this ).removeClass( \"ui-state-hover\" );\n\t\t\tif ( this.className.indexOf( \"ui-datepicker-prev\" ) !== -1 ) {\n\t\t\t\t$( this ).removeClass( \"ui-datepicker-prev-hover\" );\n\t\t\t}\n\t\t\tif ( this.className.indexOf( \"ui-datepicker-next\" ) !== -1 ) {\n\t\t\t\t$( this ).removeClass( \"ui-datepicker-next-hover\" );\n\t\t\t}\n\t\t} )\n\t\t.on( \"mouseover\", selector, datepicker_handleMouseover );\n}\n\nfunction datepicker_handleMouseover() {\n\tif ( !$.datepicker._isDisabledDatepicker( datepicker_instActive.inline ? datepicker_instActive.dpDiv.parent()[ 0 ] : datepicker_instActive.input[ 0 ] ) ) {\n\t\t$( this ).parents( \".ui-datepicker-calendar\" ).find( \"a\" ).removeClass( \"ui-state-hover\" );\n\t\t$( this ).addClass( \"ui-state-hover\" );\n\t\tif ( this.className.indexOf( \"ui-datepicker-prev\" ) !== -1 ) {\n\t\t\t$( this ).addClass( \"ui-datepicker-prev-hover\" );\n\t\t}\n\t\tif ( this.className.indexOf( \"ui-datepicker-next\" ) !== -1 ) {\n\t\t\t$( this ).addClass( \"ui-datepicker-next-hover\" );\n\t\t}\n\t}\n}\n\n/* jQuery extend now ignores nulls! */\nfunction datepicker_extendRemove( target, props ) {\n\t$.extend( target, props );\n\tfor ( var name in props ) {\n\t\tif ( props[ name ] == null ) {\n\t\t\ttarget[ name ] = props[ name ];\n\t\t}\n\t}\n\treturn target;\n}\n\n/* Invoke the datepicker functionality.\n   @param  options  string - a command, optionally followed by additional parameters or\n\t\t\t\t\tObject - settings for attaching new datepicker functionality\n   @return  jQuery object */\n$.fn.datepicker = function( options ) {\n\n\t/* Verify an empty collection wasn't passed - Fixes #6976 */\n\tif ( !this.length ) {\n\t\treturn this;\n\t}\n\n\t/* Initialise the date picker. */\n\tif ( !$.datepicker.initialized ) {\n\t\t$( document ).on( \"mousedown\", $.datepicker._checkExternalClick );\n\t\t$.datepicker.initialized = true;\n\t}\n\n\t/* Append datepicker main container to body if not exist. */\n\tif ( $( \"#\" + $.datepicker._mainDivId ).length === 0 ) {\n\t\t$( \"body\" ).append( $.datepicker.dpDiv );\n\t}\n\n\tvar otherArgs = Array.prototype.slice.call( arguments, 1 );\n\tif ( typeof options === \"string\" && ( options === \"isDisabled\" || options === \"getDate\" || options === \"widget\" ) ) {\n\t\treturn $.datepicker[ \"_\" + options + \"Datepicker\" ].\n\t\t\tapply( $.datepicker, [ this[ 0 ] ].concat( otherArgs ) );\n\t}\n\tif ( options === \"option\" && arguments.length === 2 && typeof arguments[ 1 ] === \"string\" ) {\n\t\treturn $.datepicker[ \"_\" + options + \"Datepicker\" ].\n\t\t\tapply( $.datepicker, [ this[ 0 ] ].concat( otherArgs ) );\n\t}\n\treturn this.each( function() {\n\t\ttypeof options === \"string\" ?\n\t\t\t$.datepicker[ \"_\" + options + \"Datepicker\" ].\n\t\t\t\tapply( $.datepicker, [ this ].concat( otherArgs ) ) :\n\t\t\t$.datepicker._attachDatepicker( this, options );\n\t} );\n};\n\n$.datepicker = new Datepicker(); // singleton instance\n$.datepicker.initialized = false;\n$.datepicker.uuid = new Date().getTime();\n$.datepicker.version = \"1.12.1\";\n\nvar widgetsDatepicker = $.datepicker;\n\n\n\n\n// This file is deprecated\nvar ie = $.ui.ie = !!/msie [\\w.]+/.exec( navigator.userAgent.toLowerCase() );\n\n/*!\n * jQuery UI Mouse 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Mouse\n//>>group: Widgets\n//>>description: Abstracts mouse-based interactions to assist in creating certain widgets.\n//>>docs: http://api.jqueryui.com/mouse/\n\n\n\nvar mouseHandled = false;\n$( document ).on( \"mouseup\", function() {\n\tmouseHandled = false;\n} );\n\nvar widgetsMouse = $.widget( \"ui.mouse\", {\n\tversion: \"1.12.1\",\n\toptions: {\n\t\tcancel: \"input, textarea, button, select, option\",\n\t\tdistance: 1,\n\t\tdelay: 0\n\t},\n\t_mouseInit: function() {\n\t\tvar that = this;\n\n\t\tthis.element\n\t\t\t.on( \"mousedown.\" + this.widgetName, function( event ) {\n\t\t\t\treturn that._mouseDown( event );\n\t\t\t} )\n\t\t\t.on( \"click.\" + this.widgetName, function( event ) {\n\t\t\t\tif ( true === $.data( event.target, that.widgetName + \".preventClickEvent\" ) ) {\n\t\t\t\t\t$.removeData( event.target, that.widgetName + \".preventClickEvent\" );\n\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} );\n\n\t\tthis.started = false;\n\t},\n\n\t// TODO: make sure destroying one instance of mouse doesn't mess with\n\t// other instances of mouse\n\t_mouseDestroy: function() {\n\t\tthis.element.off( \".\" + this.widgetName );\n\t\tif ( this._mouseMoveDelegate ) {\n\t\t\tthis.document\n\t\t\t\t.off( \"mousemove.\" + this.widgetName, this._mouseMoveDelegate )\n\t\t\t\t.off( \"mouseup.\" + this.widgetName, this._mouseUpDelegate );\n\t\t}\n\t},\n\n\t_mouseDown: function( event ) {\n\n\t\t// don't let more than one widget handle mouseStart\n\t\tif ( mouseHandled ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._mouseMoved = false;\n\n\t\t// We may have missed mouseup (out of window)\n\t\t( this._mouseStarted && this._mouseUp( event ) );\n\n\t\tthis._mouseDownEvent = event;\n\n\t\tvar that = this,\n\t\t\tbtnIsLeft = ( event.which === 1 ),\n\n\t\t\t// event.target.nodeName works around a bug in IE 8 with\n\t\t\t// disabled inputs (#7620)\n\t\t\telIsCancel = ( typeof this.options.cancel === \"string\" && event.target.nodeName ?\n\t\t\t\t$( event.target ).closest( this.options.cancel ).length : false );\n\t\tif ( !btnIsLeft || elIsCancel || !this._mouseCapture( event ) ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tthis.mouseDelayMet = !this.options.delay;\n\t\tif ( !this.mouseDelayMet ) {\n\t\t\tthis._mouseDelayTimer = setTimeout( function() {\n\t\t\t\tthat.mouseDelayMet = true;\n\t\t\t}, this.options.delay );\n\t\t}\n\n\t\tif ( this._mouseDistanceMet( event ) && this._mouseDelayMet( event ) ) {\n\t\t\tthis._mouseStarted = ( this._mouseStart( event ) !== false );\n\t\t\tif ( !this._mouseStarted ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\t// Click event may never have fired (Gecko & Opera)\n\t\tif ( true === $.data( event.target, this.widgetName + \".preventClickEvent\" ) ) {\n\t\t\t$.removeData( event.target, this.widgetName + \".preventClickEvent\" );\n\t\t}\n\n\t\t// These delegates are required to keep context\n\t\tthis._mouseMoveDelegate = function( event ) {\n\t\t\treturn that._mouseMove( event );\n\t\t};\n\t\tthis._mouseUpDelegate = function( event ) {\n\t\t\treturn that._mouseUp( event );\n\t\t};\n\n\t\tthis.document\n\t\t\t.on( \"mousemove.\" + this.widgetName, this._mouseMoveDelegate )\n\t\t\t.on( \"mouseup.\" + this.widgetName, this._mouseUpDelegate );\n\n\t\tevent.preventDefault();\n\n\t\tmouseHandled = true;\n\t\treturn true;\n\t},\n\n\t_mouseMove: function( event ) {\n\n\t\t// Only check for mouseups outside the document if you've moved inside the document\n\t\t// at least once. This prevents the firing of mouseup in the case of IE<9, which will\n\t\t// fire a mousemove event if content is placed under the cursor. See #7778\n\t\t// Support: IE <9\n\t\tif ( this._mouseMoved ) {\n\n\t\t\t// IE mouseup check - mouseup happened when mouse was out of window\n\t\t\tif ( $.ui.ie && ( !document.documentMode || document.documentMode < 9 ) &&\n\t\t\t\t\t!event.button ) {\n\t\t\t\treturn this._mouseUp( event );\n\n\t\t\t// Iframe mouseup check - mouseup occurred in another document\n\t\t\t} else if ( !event.which ) {\n\n\t\t\t\t// Support: Safari <=8 - 9\n\t\t\t\t// Safari sets which to 0 if you press any of the following keys\n\t\t\t\t// during a drag (#14461)\n\t\t\t\tif ( event.originalEvent.altKey || event.originalEvent.ctrlKey ||\n\t\t\t\t\t\tevent.originalEvent.metaKey || event.originalEvent.shiftKey ) {\n\t\t\t\t\tthis.ignoreMissingWhich = true;\n\t\t\t\t} else if ( !this.ignoreMissingWhich ) {\n\t\t\t\t\treturn this._mouseUp( event );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( event.which || event.button ) {\n\t\t\tthis._mouseMoved = true;\n\t\t}\n\n\t\tif ( this._mouseStarted ) {\n\t\t\tthis._mouseDrag( event );\n\t\t\treturn event.preventDefault();\n\t\t}\n\n\t\tif ( this._mouseDistanceMet( event ) && this._mouseDelayMet( event ) ) {\n\t\t\tthis._mouseStarted =\n\t\t\t\t( this._mouseStart( this._mouseDownEvent, event ) !== false );\n\t\t\t( this._mouseStarted ? this._mouseDrag( event ) : this._mouseUp( event ) );\n\t\t}\n\n\t\treturn !this._mouseStarted;\n\t},\n\n\t_mouseUp: function( event ) {\n\t\tthis.document\n\t\t\t.off( \"mousemove.\" + this.widgetName, this._mouseMoveDelegate )\n\t\t\t.off( \"mouseup.\" + this.widgetName, this._mouseUpDelegate );\n\n\t\tif ( this._mouseStarted ) {\n\t\t\tthis._mouseStarted = false;\n\n\t\t\tif ( event.target === this._mouseDownEvent.target ) {\n\t\t\t\t$.data( event.target, this.widgetName + \".preventClickEvent\", true );\n\t\t\t}\n\n\t\t\tthis._mouseStop( event );\n\t\t}\n\n\t\tif ( this._mouseDelayTimer ) {\n\t\t\tclearTimeout( this._mouseDelayTimer );\n\t\t\tdelete this._mouseDelayTimer;\n\t\t}\n\n\t\tthis.ignoreMissingWhich = false;\n\t\tmouseHandled = false;\n\t\tevent.preventDefault();\n\t},\n\n\t_mouseDistanceMet: function( event ) {\n\t\treturn ( Math.max(\n\t\t\t\tMath.abs( this._mouseDownEvent.pageX - event.pageX ),\n\t\t\t\tMath.abs( this._mouseDownEvent.pageY - event.pageY )\n\t\t\t) >= this.options.distance\n\t\t);\n\t},\n\n\t_mouseDelayMet: function( /* event */ ) {\n\t\treturn this.mouseDelayMet;\n\t},\n\n\t// These are placeholder methods, to be overriden by extending plugin\n\t_mouseStart: function( /* event */ ) {},\n\t_mouseDrag: function( /* event */ ) {},\n\t_mouseStop: function( /* event */ ) {},\n\t_mouseCapture: function( /* event */ ) { return true; }\n} );\n\n\n\n\n// $.ui.plugin is deprecated. Use $.widget() extensions instead.\nvar plugin = $.ui.plugin = {\n\tadd: function( module, option, set ) {\n\t\tvar i,\n\t\t\tproto = $.ui[ module ].prototype;\n\t\tfor ( i in set ) {\n\t\t\tproto.plugins[ i ] = proto.plugins[ i ] || [];\n\t\t\tproto.plugins[ i ].push( [ option, set[ i ] ] );\n\t\t}\n\t},\n\tcall: function( instance, name, args, allowDisconnected ) {\n\t\tvar i,\n\t\t\tset = instance.plugins[ name ];\n\n\t\tif ( !set ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !allowDisconnected && ( !instance.element[ 0 ].parentNode ||\n\t\t\t\tinstance.element[ 0 ].parentNode.nodeType === 11 ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tfor ( i = 0; i < set.length; i++ ) {\n\t\t\tif ( instance.options[ set[ i ][ 0 ] ] ) {\n\t\t\t\tset[ i ][ 1 ].apply( instance.element, args );\n\t\t\t}\n\t\t}\n\t}\n};\n\n\n\nvar safeBlur = $.ui.safeBlur = function( element ) {\n\n\t// Support: IE9 - 10 only\n\t// If the <body> is blurred, IE will switch windows, see #9420\n\tif ( element && element.nodeName.toLowerCase() !== \"body\" ) {\n\t\t$( element ).trigger( \"blur\" );\n\t}\n};\n\n\n/*!\n * jQuery UI Draggable 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Draggable\n//>>group: Interactions\n//>>description: Enables dragging functionality for any element.\n//>>docs: http://api.jqueryui.com/draggable/\n//>>demos: http://jqueryui.com/draggable/\n//>>css.structure: ../../themes/base/draggable.css\n\n\n\n$.widget( \"ui.draggable\", $.ui.mouse, {\n\tversion: \"1.12.1\",\n\twidgetEventPrefix: \"drag\",\n\toptions: {\n\t\taddClasses: true,\n\t\tappendTo: \"parent\",\n\t\taxis: false,\n\t\tconnectToSortable: false,\n\t\tcontainment: false,\n\t\tcursor: \"auto\",\n\t\tcursorAt: false,\n\t\tgrid: false,\n\t\thandle: false,\n\t\thelper: \"original\",\n\t\tiframeFix: false,\n\t\topacity: false,\n\t\trefreshPositions: false,\n\t\trevert: false,\n\t\trevertDuration: 500,\n\t\tscope: \"default\",\n\t\tscroll: true,\n\t\tscrollSensitivity: 20,\n\t\tscrollSpeed: 20,\n\t\tsnap: false,\n\t\tsnapMode: \"both\",\n\t\tsnapTolerance: 20,\n\t\tstack: false,\n\t\tzIndex: false,\n\n\t\t// Callbacks\n\t\tdrag: null,\n\t\tstart: null,\n\t\tstop: null\n\t},\n\t_create: function() {\n\n\t\tif ( this.options.helper === \"original\" ) {\n\t\t\tthis._setPositionRelative();\n\t\t}\n\t\tif ( this.options.addClasses ) {\n\t\t\tthis._addClass( \"ui-draggable\" );\n\t\t}\n\t\tthis._setHandleClassName();\n\n\t\tthis._mouseInit();\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tthis._super( key, value );\n\t\tif ( key === \"handle\" ) {\n\t\t\tthis._removeHandleClassName();\n\t\t\tthis._setHandleClassName();\n\t\t}\n\t},\n\n\t_destroy: function() {\n\t\tif ( ( this.helper || this.element ).is( \".ui-draggable-dragging\" ) ) {\n\t\t\tthis.destroyOnClear = true;\n\t\t\treturn;\n\t\t}\n\t\tthis._removeHandleClassName();\n\t\tthis._mouseDestroy();\n\t},\n\n\t_mouseCapture: function( event ) {\n\t\tvar o = this.options;\n\n\t\t// Among others, prevent a drag on a resizable-handle\n\t\tif ( this.helper || o.disabled ||\n\t\t\t\t$( event.target ).closest( \".ui-resizable-handle\" ).length > 0 ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t//Quit if we're not on a valid handle\n\t\tthis.handle = this._getHandle( event );\n\t\tif ( !this.handle ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tthis._blurActiveElement( event );\n\n\t\tthis._blockFrames( o.iframeFix === true ? \"iframe\" : o.iframeFix );\n\n\t\treturn true;\n\n\t},\n\n\t_blockFrames: function( selector ) {\n\t\tthis.iframeBlocks = this.document.find( selector ).map( function() {\n\t\t\tvar iframe = $( this );\n\n\t\t\treturn $( \"<div>\" )\n\t\t\t\t.css( \"position\", \"absolute\" )\n\t\t\t\t.appendTo( iframe.parent() )\n\t\t\t\t.outerWidth( iframe.outerWidth() )\n\t\t\t\t.outerHeight( iframe.outerHeight() )\n\t\t\t\t.offset( iframe.offset() )[ 0 ];\n\t\t} );\n\t},\n\n\t_unblockFrames: function() {\n\t\tif ( this.iframeBlocks ) {\n\t\t\tthis.iframeBlocks.remove();\n\t\t\tdelete this.iframeBlocks;\n\t\t}\n\t},\n\n\t_blurActiveElement: function( event ) {\n\t\tvar activeElement = $.ui.safeActiveElement( this.document[ 0 ] ),\n\t\t\ttarget = $( event.target );\n\n\t\t// Don't blur if the event occurred on an element that is within\n\t\t// the currently focused element\n\t\t// See #10527, #12472\n\t\tif ( target.closest( activeElement ).length ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Blur any element that currently has focus, see #4261\n\t\t$.ui.safeBlur( activeElement );\n\t},\n\n\t_mouseStart: function( event ) {\n\n\t\tvar o = this.options;\n\n\t\t//Create and append the visible helper\n\t\tthis.helper = this._createHelper( event );\n\n\t\tthis._addClass( this.helper, \"ui-draggable-dragging\" );\n\n\t\t//Cache the helper size\n\t\tthis._cacheHelperProportions();\n\n\t\t//If ddmanager is used for droppables, set the global draggable\n\t\tif ( $.ui.ddmanager ) {\n\t\t\t$.ui.ddmanager.current = this;\n\t\t}\n\n\t\t/*\n\t\t * - Position generation -\n\t\t * This block generates everything position related - it's the core of draggables.\n\t\t */\n\n\t\t//Cache the margins of the original element\n\t\tthis._cacheMargins();\n\n\t\t//Store the helper's css position\n\t\tthis.cssPosition = this.helper.css( \"position\" );\n\t\tthis.scrollParent = this.helper.scrollParent( true );\n\t\tthis.offsetParent = this.helper.offsetParent();\n\t\tthis.hasFixedAncestor = this.helper.parents().filter( function() {\n\t\t\t\treturn $( this ).css( \"position\" ) === \"fixed\";\n\t\t\t} ).length > 0;\n\n\t\t//The element's absolute position on the page minus margins\n\t\tthis.positionAbs = this.element.offset();\n\t\tthis._refreshOffsets( event );\n\n\t\t//Generate the original position\n\t\tthis.originalPosition = this.position = this._generatePosition( event, false );\n\t\tthis.originalPageX = event.pageX;\n\t\tthis.originalPageY = event.pageY;\n\n\t\t//Adjust the mouse offset relative to the helper if \"cursorAt\" is supplied\n\t\t( o.cursorAt && this._adjustOffsetFromHelper( o.cursorAt ) );\n\n\t\t//Set a containment if given in the options\n\t\tthis._setContainment();\n\n\t\t//Trigger event + callbacks\n\t\tif ( this._trigger( \"start\", event ) === false ) {\n\t\t\tthis._clear();\n\t\t\treturn false;\n\t\t}\n\n\t\t//Recache the helper size\n\t\tthis._cacheHelperProportions();\n\n\t\t//Prepare the droppable offsets\n\t\tif ( $.ui.ddmanager && !o.dropBehaviour ) {\n\t\t\t$.ui.ddmanager.prepareOffsets( this, event );\n\t\t}\n\n\t\t// Execute the drag once - this causes the helper not to be visible before getting its\n\t\t// correct position\n\t\tthis._mouseDrag( event, true );\n\n\t\t// If the ddmanager is used for droppables, inform the manager that dragging has started\n\t\t// (see #5003)\n\t\tif ( $.ui.ddmanager ) {\n\t\t\t$.ui.ddmanager.dragStart( this, event );\n\t\t}\n\n\t\treturn true;\n\t},\n\n\t_refreshOffsets: function( event ) {\n\t\tthis.offset = {\n\t\t\ttop: this.positionAbs.top - this.margins.top,\n\t\t\tleft: this.positionAbs.left - this.margins.left,\n\t\t\tscroll: false,\n\t\t\tparent: this._getParentOffset(),\n\t\t\trelative: this._getRelativeOffset()\n\t\t};\n\n\t\tthis.offset.click = {\n\t\t\tleft: event.pageX - this.offset.left,\n\t\t\ttop: event.pageY - this.offset.top\n\t\t};\n\t},\n\n\t_mouseDrag: function( event, noPropagation ) {\n\n\t\t// reset any necessary cached properties (see #5009)\n\t\tif ( this.hasFixedAncestor ) {\n\t\t\tthis.offset.parent = this._getParentOffset();\n\t\t}\n\n\t\t//Compute the helpers position\n\t\tthis.position = this._generatePosition( event, true );\n\t\tthis.positionAbs = this._convertPositionTo( \"absolute\" );\n\n\t\t//Call plugins and callbacks and use the resulting position if something is returned\n\t\tif ( !noPropagation ) {\n\t\t\tvar ui = this._uiHash();\n\t\t\tif ( this._trigger( \"drag\", event, ui ) === false ) {\n\t\t\t\tthis._mouseUp( new $.Event( \"mouseup\", event ) );\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis.position = ui.position;\n\t\t}\n\n\t\tthis.helper[ 0 ].style.left = this.position.left + \"px\";\n\t\tthis.helper[ 0 ].style.top = this.position.top + \"px\";\n\n\t\tif ( $.ui.ddmanager ) {\n\t\t\t$.ui.ddmanager.drag( this, event );\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_mouseStop: function( event ) {\n\n\t\t//If we are using droppables, inform the manager about the drop\n\t\tvar that = this,\n\t\t\tdropped = false;\n\t\tif ( $.ui.ddmanager && !this.options.dropBehaviour ) {\n\t\t\tdropped = $.ui.ddmanager.drop( this, event );\n\t\t}\n\n\t\t//if a drop comes from outside (a sortable)\n\t\tif ( this.dropped ) {\n\t\t\tdropped = this.dropped;\n\t\t\tthis.dropped = false;\n\t\t}\n\n\t\tif ( ( this.options.revert === \"invalid\" && !dropped ) ||\n\t\t\t\t( this.options.revert === \"valid\" && dropped ) ||\n\t\t\t\tthis.options.revert === true || ( $.isFunction( this.options.revert ) &&\n\t\t\t\tthis.options.revert.call( this.element, dropped ) )\n\t\t) {\n\t\t\t$( this.helper ).animate(\n\t\t\t\tthis.originalPosition,\n\t\t\t\tparseInt( this.options.revertDuration, 10 ),\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( that._trigger( \"stop\", event ) !== false ) {\n\t\t\t\t\t\tthat._clear();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t} else {\n\t\t\tif ( this._trigger( \"stop\", event ) !== false ) {\n\t\t\t\tthis._clear();\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_mouseUp: function( event ) {\n\t\tthis._unblockFrames();\n\n\t\t// If the ddmanager is used for droppables, inform the manager that dragging has stopped\n\t\t// (see #5003)\n\t\tif ( $.ui.ddmanager ) {\n\t\t\t$.ui.ddmanager.dragStop( this, event );\n\t\t}\n\n\t\t// Only need to focus if the event occurred on the draggable itself, see #10527\n\t\tif ( this.handleElement.is( event.target ) ) {\n\n\t\t\t// The interaction is over; whether or not the click resulted in a drag,\n\t\t\t// focus the element\n\t\t\tthis.element.trigger( \"focus\" );\n\t\t}\n\n\t\treturn $.ui.mouse.prototype._mouseUp.call( this, event );\n\t},\n\n\tcancel: function() {\n\n\t\tif ( this.helper.is( \".ui-draggable-dragging\" ) ) {\n\t\t\tthis._mouseUp( new $.Event( \"mouseup\", { target: this.element[ 0 ] } ) );\n\t\t} else {\n\t\t\tthis._clear();\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t_getHandle: function( event ) {\n\t\treturn this.options.handle ?\n\t\t\t!!$( event.target ).closest( this.element.find( this.options.handle ) ).length :\n\t\t\ttrue;\n\t},\n\n\t_setHandleClassName: function() {\n\t\tthis.handleElement = this.options.handle ?\n\t\t\tthis.element.find( this.options.handle ) : this.element;\n\t\tthis._addClass( this.handleElement, \"ui-draggable-handle\" );\n\t},\n\n\t_removeHandleClassName: function() {\n\t\tthis._removeClass( this.handleElement, \"ui-draggable-handle\" );\n\t},\n\n\t_createHelper: function( event ) {\n\n\t\tvar o = this.options,\n\t\t\thelperIsFunction = $.isFunction( o.helper ),\n\t\t\thelper = helperIsFunction ?\n\t\t\t\t$( o.helper.apply( this.element[ 0 ], [ event ] ) ) :\n\t\t\t\t( o.helper === \"clone\" ?\n\t\t\t\t\tthis.element.clone().removeAttr( \"id\" ) :\n\t\t\t\t\tthis.element );\n\n\t\tif ( !helper.parents( \"body\" ).length ) {\n\t\t\thelper.appendTo( ( o.appendTo === \"parent\" ?\n\t\t\t\tthis.element[ 0 ].parentNode :\n\t\t\t\to.appendTo ) );\n\t\t}\n\n\t\t// Http://bugs.jqueryui.com/ticket/9446\n\t\t// a helper function can return the original element\n\t\t// which wouldn't have been set to relative in _create\n\t\tif ( helperIsFunction && helper[ 0 ] === this.element[ 0 ] ) {\n\t\t\tthis._setPositionRelative();\n\t\t}\n\n\t\tif ( helper[ 0 ] !== this.element[ 0 ] &&\n\t\t\t\t!( /(fixed|absolute)/ ).test( helper.css( \"position\" ) ) ) {\n\t\t\thelper.css( \"position\", \"absolute\" );\n\t\t}\n\n\t\treturn helper;\n\n\t},\n\n\t_setPositionRelative: function() {\n\t\tif ( !( /^(?:r|a|f)/ ).test( this.element.css( \"position\" ) ) ) {\n\t\t\tthis.element[ 0 ].style.position = \"relative\";\n\t\t}\n\t},\n\n\t_adjustOffsetFromHelper: function( obj ) {\n\t\tif ( typeof obj === \"string\" ) {\n\t\t\tobj = obj.split( \" \" );\n\t\t}\n\t\tif ( $.isArray( obj ) ) {\n\t\t\tobj = { left: +obj[ 0 ], top: +obj[ 1 ] || 0 };\n\t\t}\n\t\tif ( \"left\" in obj ) {\n\t\t\tthis.offset.click.left = obj.left + this.margins.left;\n\t\t}\n\t\tif ( \"right\" in obj ) {\n\t\t\tthis.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;\n\t\t}\n\t\tif ( \"top\" in obj ) {\n\t\t\tthis.offset.click.top = obj.top + this.margins.top;\n\t\t}\n\t\tif ( \"bottom\" in obj ) {\n\t\t\tthis.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;\n\t\t}\n\t},\n\n\t_isRootNode: function( element ) {\n\t\treturn ( /(html|body)/i ).test( element.tagName ) || element === this.document[ 0 ];\n\t},\n\n\t_getParentOffset: function() {\n\n\t\t//Get the offsetParent and cache its position\n\t\tvar po = this.offsetParent.offset(),\n\t\t\tdocument = this.document[ 0 ];\n\n\t\t// This is a special case where we need to modify a offset calculated on start, since the\n\t\t// following happened:\n\t\t// 1. The position of the helper is absolute, so it's position is calculated based on the\n\t\t// next positioned parent\n\t\t// 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't\n\t\t// the document, which means that the scroll is included in the initial calculation of the\n\t\t// offset of the parent, and never recalculated upon drag\n\t\tif ( this.cssPosition === \"absolute\" && this.scrollParent[ 0 ] !== document &&\n\t\t\t\t$.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) {\n\t\t\tpo.left += this.scrollParent.scrollLeft();\n\t\t\tpo.top += this.scrollParent.scrollTop();\n\t\t}\n\n\t\tif ( this._isRootNode( this.offsetParent[ 0 ] ) ) {\n\t\t\tpo = { top: 0, left: 0 };\n\t\t}\n\n\t\treturn {\n\t\t\ttop: po.top + ( parseInt( this.offsetParent.css( \"borderTopWidth\" ), 10 ) || 0 ),\n\t\t\tleft: po.left + ( parseInt( this.offsetParent.css( \"borderLeftWidth\" ), 10 ) || 0 )\n\t\t};\n\n\t},\n\n\t_getRelativeOffset: function() {\n\t\tif ( this.cssPosition !== \"relative\" ) {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t\tvar p = this.element.position(),\n\t\t\tscrollIsRootNode = this._isRootNode( this.scrollParent[ 0 ] );\n\n\t\treturn {\n\t\t\ttop: p.top - ( parseInt( this.helper.css( \"top\" ), 10 ) || 0 ) +\n\t\t\t\t( !scrollIsRootNode ? this.scrollParent.scrollTop() : 0 ),\n\t\t\tleft: p.left - ( parseInt( this.helper.css( \"left\" ), 10 ) || 0 ) +\n\t\t\t\t( !scrollIsRootNode ? this.scrollParent.scrollLeft() : 0 )\n\t\t};\n\n\t},\n\n\t_cacheMargins: function() {\n\t\tthis.margins = {\n\t\t\tleft: ( parseInt( this.element.css( \"marginLeft\" ), 10 ) || 0 ),\n\t\t\ttop: ( parseInt( this.element.css( \"marginTop\" ), 10 ) || 0 ),\n\t\t\tright: ( parseInt( this.element.css( \"marginRight\" ), 10 ) || 0 ),\n\t\t\tbottom: ( parseInt( this.element.css( \"marginBottom\" ), 10 ) || 0 )\n\t\t};\n\t},\n\n\t_cacheHelperProportions: function() {\n\t\tthis.helperProportions = {\n\t\t\twidth: this.helper.outerWidth(),\n\t\t\theight: this.helper.outerHeight()\n\t\t};\n\t},\n\n\t_setContainment: function() {\n\n\t\tvar isUserScrollable, c, ce,\n\t\t\to = this.options,\n\t\t\tdocument = this.document[ 0 ];\n\n\t\tthis.relativeContainer = null;\n\n\t\tif ( !o.containment ) {\n\t\t\tthis.containment = null;\n\t\t\treturn;\n\t\t}\n\n\t\tif ( o.containment === \"window\" ) {\n\t\t\tthis.containment = [\n\t\t\t\t$( window ).scrollLeft() - this.offset.relative.left - this.offset.parent.left,\n\t\t\t\t$( window ).scrollTop() - this.offset.relative.top - this.offset.parent.top,\n\t\t\t\t$( window ).scrollLeft() + $( window ).width() -\n\t\t\t\t\tthis.helperProportions.width - this.margins.left,\n\t\t\t\t$( window ).scrollTop() +\n\t\t\t\t\t( $( window ).height() || document.body.parentNode.scrollHeight ) -\n\t\t\t\t\tthis.helperProportions.height - this.margins.top\n\t\t\t];\n\t\t\treturn;\n\t\t}\n\n\t\tif ( o.containment === \"document\" ) {\n\t\t\tthis.containment = [\n\t\t\t\t0,\n\t\t\t\t0,\n\t\t\t\t$( document ).width() - this.helperProportions.width - this.margins.left,\n\t\t\t\t( $( document ).height() || document.body.parentNode.scrollHeight ) -\n\t\t\t\t\tthis.helperProportions.height - this.margins.top\n\t\t\t];\n\t\t\treturn;\n\t\t}\n\n\t\tif ( o.containment.constructor === Array ) {\n\t\t\tthis.containment = o.containment;\n\t\t\treturn;\n\t\t}\n\n\t\tif ( o.containment === \"parent\" ) {\n\t\t\to.containment = this.helper[ 0 ].parentNode;\n\t\t}\n\n\t\tc = $( o.containment );\n\t\tce = c[ 0 ];\n\n\t\tif ( !ce ) {\n\t\t\treturn;\n\t\t}\n\n\t\tisUserScrollable = /(scroll|auto)/.test( c.css( \"overflow\" ) );\n\n\t\tthis.containment = [\n\t\t\t( parseInt( c.css( \"borderLeftWidth\" ), 10 ) || 0 ) +\n\t\t\t\t( parseInt( c.css( \"paddingLeft\" ), 10 ) || 0 ),\n\t\t\t( parseInt( c.css( \"borderTopWidth\" ), 10 ) || 0 ) +\n\t\t\t\t( parseInt( c.css( \"paddingTop\" ), 10 ) || 0 ),\n\t\t\t( isUserScrollable ? Math.max( ce.scrollWidth, ce.offsetWidth ) : ce.offsetWidth ) -\n\t\t\t\t( parseInt( c.css( \"borderRightWidth\" ), 10 ) || 0 ) -\n\t\t\t\t( parseInt( c.css( \"paddingRight\" ), 10 ) || 0 ) -\n\t\t\t\tthis.helperProportions.width -\n\t\t\t\tthis.margins.left -\n\t\t\t\tthis.margins.right,\n\t\t\t( isUserScrollable ? Math.max( ce.scrollHeight, ce.offsetHeight ) : ce.offsetHeight ) -\n\t\t\t\t( parseInt( c.css( \"borderBottomWidth\" ), 10 ) || 0 ) -\n\t\t\t\t( parseInt( c.css( \"paddingBottom\" ), 10 ) || 0 ) -\n\t\t\t\tthis.helperProportions.height -\n\t\t\t\tthis.margins.top -\n\t\t\t\tthis.margins.bottom\n\t\t];\n\t\tthis.relativeContainer = c;\n\t},\n\n\t_convertPositionTo: function( d, pos ) {\n\n\t\tif ( !pos ) {\n\t\t\tpos = this.position;\n\t\t}\n\n\t\tvar mod = d === \"absolute\" ? 1 : -1,\n\t\t\tscrollIsRootNode = this._isRootNode( this.scrollParent[ 0 ] );\n\n\t\treturn {\n\t\t\ttop: (\n\n\t\t\t\t// The absolute mouse position\n\t\t\t\tpos.top\t+\n\n\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.relative.top * mod +\n\n\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\tthis.offset.parent.top * mod -\n\t\t\t\t( ( this.cssPosition === \"fixed\" ?\n\t\t\t\t\t-this.offset.scroll.top :\n\t\t\t\t\t( scrollIsRootNode ? 0 : this.offset.scroll.top ) ) * mod )\n\t\t\t),\n\t\t\tleft: (\n\n\t\t\t\t// The absolute mouse position\n\t\t\t\tpos.left +\n\n\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.relative.left * mod +\n\n\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\tthis.offset.parent.left * mod\t-\n\t\t\t\t( ( this.cssPosition === \"fixed\" ?\n\t\t\t\t\t-this.offset.scroll.left :\n\t\t\t\t\t( scrollIsRootNode ? 0 : this.offset.scroll.left ) ) * mod )\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_generatePosition: function( event, constrainPosition ) {\n\n\t\tvar containment, co, top, left,\n\t\t\to = this.options,\n\t\t\tscrollIsRootNode = this._isRootNode( this.scrollParent[ 0 ] ),\n\t\t\tpageX = event.pageX,\n\t\t\tpageY = event.pageY;\n\n\t\t// Cache the scroll\n\t\tif ( !scrollIsRootNode || !this.offset.scroll ) {\n\t\t\tthis.offset.scroll = {\n\t\t\t\ttop: this.scrollParent.scrollTop(),\n\t\t\t\tleft: this.scrollParent.scrollLeft()\n\t\t\t};\n\t\t}\n\n\t\t/*\n\t\t * - Position constraining -\n\t\t * Constrain the position to a mix of grid, containment.\n\t\t */\n\n\t\t// If we are not dragging yet, we won't check for options\n\t\tif ( constrainPosition ) {\n\t\t\tif ( this.containment ) {\n\t\t\t\tif ( this.relativeContainer ) {\n\t\t\t\t\tco = this.relativeContainer.offset();\n\t\t\t\t\tcontainment = [\n\t\t\t\t\t\tthis.containment[ 0 ] + co.left,\n\t\t\t\t\t\tthis.containment[ 1 ] + co.top,\n\t\t\t\t\t\tthis.containment[ 2 ] + co.left,\n\t\t\t\t\t\tthis.containment[ 3 ] + co.top\n\t\t\t\t\t];\n\t\t\t\t} else {\n\t\t\t\t\tcontainment = this.containment;\n\t\t\t\t}\n\n\t\t\t\tif ( event.pageX - this.offset.click.left < containment[ 0 ] ) {\n\t\t\t\t\tpageX = containment[ 0 ] + this.offset.click.left;\n\t\t\t\t}\n\t\t\t\tif ( event.pageY - this.offset.click.top < containment[ 1 ] ) {\n\t\t\t\t\tpageY = containment[ 1 ] + this.offset.click.top;\n\t\t\t\t}\n\t\t\t\tif ( event.pageX - this.offset.click.left > containment[ 2 ] ) {\n\t\t\t\t\tpageX = containment[ 2 ] + this.offset.click.left;\n\t\t\t\t}\n\t\t\t\tif ( event.pageY - this.offset.click.top > containment[ 3 ] ) {\n\t\t\t\t\tpageY = containment[ 3 ] + this.offset.click.top;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( o.grid ) {\n\n\t\t\t\t//Check for grid elements set to 0 to prevent divide by 0 error causing invalid\n\t\t\t\t// argument errors in IE (see ticket #6950)\n\t\t\t\ttop = o.grid[ 1 ] ? this.originalPageY + Math.round( ( pageY -\n\t\t\t\t\tthis.originalPageY ) / o.grid[ 1 ] ) * o.grid[ 1 ] : this.originalPageY;\n\t\t\t\tpageY = containment ? ( ( top - this.offset.click.top >= containment[ 1 ] ||\n\t\t\t\t\ttop - this.offset.click.top > containment[ 3 ] ) ?\n\t\t\t\t\t\ttop :\n\t\t\t\t\t\t( ( top - this.offset.click.top >= containment[ 1 ] ) ?\n\t\t\t\t\t\t\ttop - o.grid[ 1 ] : top + o.grid[ 1 ] ) ) : top;\n\n\t\t\t\tleft = o.grid[ 0 ] ? this.originalPageX +\n\t\t\t\t\tMath.round( ( pageX - this.originalPageX ) / o.grid[ 0 ] ) * o.grid[ 0 ] :\n\t\t\t\t\tthis.originalPageX;\n\t\t\t\tpageX = containment ? ( ( left - this.offset.click.left >= containment[ 0 ] ||\n\t\t\t\t\tleft - this.offset.click.left > containment[ 2 ] ) ?\n\t\t\t\t\t\tleft :\n\t\t\t\t\t\t( ( left - this.offset.click.left >= containment[ 0 ] ) ?\n\t\t\t\t\t\t\tleft - o.grid[ 0 ] : left + o.grid[ 0 ] ) ) : left;\n\t\t\t}\n\n\t\t\tif ( o.axis === \"y\" ) {\n\t\t\t\tpageX = this.originalPageX;\n\t\t\t}\n\n\t\t\tif ( o.axis === \"x\" ) {\n\t\t\t\tpageY = this.originalPageY;\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\ttop: (\n\n\t\t\t\t// The absolute mouse position\n\t\t\t\tpageY -\n\n\t\t\t\t// Click offset (relative to the element)\n\t\t\t\tthis.offset.click.top -\n\n\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.relative.top -\n\n\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\tthis.offset.parent.top +\n\t\t\t\t( this.cssPosition === \"fixed\" ?\n\t\t\t\t\t-this.offset.scroll.top :\n\t\t\t\t\t( scrollIsRootNode ? 0 : this.offset.scroll.top ) )\n\t\t\t),\n\t\t\tleft: (\n\n\t\t\t\t// The absolute mouse position\n\t\t\t\tpageX -\n\n\t\t\t\t// Click offset (relative to the element)\n\t\t\t\tthis.offset.click.left -\n\n\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.relative.left -\n\n\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\tthis.offset.parent.left +\n\t\t\t\t( this.cssPosition === \"fixed\" ?\n\t\t\t\t\t-this.offset.scroll.left :\n\t\t\t\t\t( scrollIsRootNode ? 0 : this.offset.scroll.left ) )\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_clear: function() {\n\t\tthis._removeClass( this.helper, \"ui-draggable-dragging\" );\n\t\tif ( this.helper[ 0 ] !== this.element[ 0 ] && !this.cancelHelperRemoval ) {\n\t\t\tthis.helper.remove();\n\t\t}\n\t\tthis.helper = null;\n\t\tthis.cancelHelperRemoval = false;\n\t\tif ( this.destroyOnClear ) {\n\t\t\tthis.destroy();\n\t\t}\n\t},\n\n\t// From now on bulk stuff - mainly helpers\n\n\t_trigger: function( type, event, ui ) {\n\t\tui = ui || this._uiHash();\n\t\t$.ui.plugin.call( this, type, [ event, ui, this ], true );\n\n\t\t// Absolute position and offset (see #6884 ) have to be recalculated after plugins\n\t\tif ( /^(drag|start|stop)/.test( type ) ) {\n\t\t\tthis.positionAbs = this._convertPositionTo( \"absolute\" );\n\t\t\tui.offset = this.positionAbs;\n\t\t}\n\t\treturn $.Widget.prototype._trigger.call( this, type, event, ui );\n\t},\n\n\tplugins: {},\n\n\t_uiHash: function() {\n\t\treturn {\n\t\t\thelper: this.helper,\n\t\t\tposition: this.position,\n\t\t\toriginalPosition: this.originalPosition,\n\t\t\toffset: this.positionAbs\n\t\t};\n\t}\n\n} );\n\n$.ui.plugin.add( \"draggable\", \"connectToSortable\", {\n\tstart: function( event, ui, draggable ) {\n\t\tvar uiSortable = $.extend( {}, ui, {\n\t\t\titem: draggable.element\n\t\t} );\n\n\t\tdraggable.sortables = [];\n\t\t$( draggable.options.connectToSortable ).each( function() {\n\t\t\tvar sortable = $( this ).sortable( \"instance\" );\n\n\t\t\tif ( sortable && !sortable.options.disabled ) {\n\t\t\t\tdraggable.sortables.push( sortable );\n\n\t\t\t\t// RefreshPositions is called at drag start to refresh the containerCache\n\t\t\t\t// which is used in drag. This ensures it's initialized and synchronized\n\t\t\t\t// with any changes that might have happened on the page since initialization.\n\t\t\t\tsortable.refreshPositions();\n\t\t\t\tsortable._trigger( \"activate\", event, uiSortable );\n\t\t\t}\n\t\t} );\n\t},\n\tstop: function( event, ui, draggable ) {\n\t\tvar uiSortable = $.extend( {}, ui, {\n\t\t\titem: draggable.element\n\t\t} );\n\n\t\tdraggable.cancelHelperRemoval = false;\n\n\t\t$.each( draggable.sortables, function() {\n\t\t\tvar sortable = this;\n\n\t\t\tif ( sortable.isOver ) {\n\t\t\t\tsortable.isOver = 0;\n\n\t\t\t\t// Allow this sortable to handle removing the helper\n\t\t\t\tdraggable.cancelHelperRemoval = true;\n\t\t\t\tsortable.cancelHelperRemoval = false;\n\n\t\t\t\t// Use _storedCSS To restore properties in the sortable,\n\t\t\t\t// as this also handles revert (#9675) since the draggable\n\t\t\t\t// may have modified them in unexpected ways (#8809)\n\t\t\t\tsortable._storedCSS = {\n\t\t\t\t\tposition: sortable.placeholder.css( \"position\" ),\n\t\t\t\t\ttop: sortable.placeholder.css( \"top\" ),\n\t\t\t\t\tleft: sortable.placeholder.css( \"left\" )\n\t\t\t\t};\n\n\t\t\t\tsortable._mouseStop( event );\n\n\t\t\t\t// Once drag has ended, the sortable should return to using\n\t\t\t\t// its original helper, not the shared helper from draggable\n\t\t\t\tsortable.options.helper = sortable.options._helper;\n\t\t\t} else {\n\n\t\t\t\t// Prevent this Sortable from removing the helper.\n\t\t\t\t// However, don't set the draggable to remove the helper\n\t\t\t\t// either as another connected Sortable may yet handle the removal.\n\t\t\t\tsortable.cancelHelperRemoval = true;\n\n\t\t\t\tsortable._trigger( \"deactivate\", event, uiSortable );\n\t\t\t}\n\t\t} );\n\t},\n\tdrag: function( event, ui, draggable ) {\n\t\t$.each( draggable.sortables, function() {\n\t\t\tvar innermostIntersecting = false,\n\t\t\t\tsortable = this;\n\n\t\t\t// Copy over variables that sortable's _intersectsWith uses\n\t\t\tsortable.positionAbs = draggable.positionAbs;\n\t\t\tsortable.helperProportions = draggable.helperProportions;\n\t\t\tsortable.offset.click = draggable.offset.click;\n\n\t\t\tif ( sortable._intersectsWith( sortable.containerCache ) ) {\n\t\t\t\tinnermostIntersecting = true;\n\n\t\t\t\t$.each( draggable.sortables, function() {\n\n\t\t\t\t\t// Copy over variables that sortable's _intersectsWith uses\n\t\t\t\t\tthis.positionAbs = draggable.positionAbs;\n\t\t\t\t\tthis.helperProportions = draggable.helperProportions;\n\t\t\t\t\tthis.offset.click = draggable.offset.click;\n\n\t\t\t\t\tif ( this !== sortable &&\n\t\t\t\t\t\t\tthis._intersectsWith( this.containerCache ) &&\n\t\t\t\t\t\t\t$.contains( sortable.element[ 0 ], this.element[ 0 ] ) ) {\n\t\t\t\t\t\tinnermostIntersecting = false;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn innermostIntersecting;\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tif ( innermostIntersecting ) {\n\n\t\t\t\t// If it intersects, we use a little isOver variable and set it once,\n\t\t\t\t// so that the move-in stuff gets fired only once.\n\t\t\t\tif ( !sortable.isOver ) {\n\t\t\t\t\tsortable.isOver = 1;\n\n\t\t\t\t\t// Store draggable's parent in case we need to reappend to it later.\n\t\t\t\t\tdraggable._parent = ui.helper.parent();\n\n\t\t\t\t\tsortable.currentItem = ui.helper\n\t\t\t\t\t\t.appendTo( sortable.element )\n\t\t\t\t\t\t.data( \"ui-sortable-item\", true );\n\n\t\t\t\t\t// Store helper option to later restore it\n\t\t\t\t\tsortable.options._helper = sortable.options.helper;\n\n\t\t\t\t\tsortable.options.helper = function() {\n\t\t\t\t\t\treturn ui.helper[ 0 ];\n\t\t\t\t\t};\n\n\t\t\t\t\t// Fire the start events of the sortable with our passed browser event,\n\t\t\t\t\t// and our own helper (so it doesn't create a new one)\n\t\t\t\t\tevent.target = sortable.currentItem[ 0 ];\n\t\t\t\t\tsortable._mouseCapture( event, true );\n\t\t\t\t\tsortable._mouseStart( event, true, true );\n\n\t\t\t\t\t// Because the browser event is way off the new appended portlet,\n\t\t\t\t\t// modify necessary variables to reflect the changes\n\t\t\t\t\tsortable.offset.click.top = draggable.offset.click.top;\n\t\t\t\t\tsortable.offset.click.left = draggable.offset.click.left;\n\t\t\t\t\tsortable.offset.parent.left -= draggable.offset.parent.left -\n\t\t\t\t\t\tsortable.offset.parent.left;\n\t\t\t\t\tsortable.offset.parent.top -= draggable.offset.parent.top -\n\t\t\t\t\t\tsortable.offset.parent.top;\n\n\t\t\t\t\tdraggable._trigger( \"toSortable\", event );\n\n\t\t\t\t\t// Inform draggable that the helper is in a valid drop zone,\n\t\t\t\t\t// used solely in the revert option to handle \"valid/invalid\".\n\t\t\t\t\tdraggable.dropped = sortable.element;\n\n\t\t\t\t\t// Need to refreshPositions of all sortables in the case that\n\t\t\t\t\t// adding to one sortable changes the location of the other sortables (#9675)\n\t\t\t\t\t$.each( draggable.sortables, function() {\n\t\t\t\t\t\tthis.refreshPositions();\n\t\t\t\t\t} );\n\n\t\t\t\t\t// Hack so receive/update callbacks work (mostly)\n\t\t\t\t\tdraggable.currentItem = draggable.element;\n\t\t\t\t\tsortable.fromOutside = draggable;\n\t\t\t\t}\n\n\t\t\t\tif ( sortable.currentItem ) {\n\t\t\t\t\tsortable._mouseDrag( event );\n\n\t\t\t\t\t// Copy the sortable's position because the draggable's can potentially reflect\n\t\t\t\t\t// a relative position, while sortable is always absolute, which the dragged\n\t\t\t\t\t// element has now become. (#8809)\n\t\t\t\t\tui.position = sortable.position;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// If it doesn't intersect with the sortable, and it intersected before,\n\t\t\t\t// we fake the drag stop of the sortable, but make sure it doesn't remove\n\t\t\t\t// the helper by using cancelHelperRemoval.\n\t\t\t\tif ( sortable.isOver ) {\n\n\t\t\t\t\tsortable.isOver = 0;\n\t\t\t\t\tsortable.cancelHelperRemoval = true;\n\n\t\t\t\t\t// Calling sortable's mouseStop would trigger a revert,\n\t\t\t\t\t// so revert must be temporarily false until after mouseStop is called.\n\t\t\t\t\tsortable.options._revert = sortable.options.revert;\n\t\t\t\t\tsortable.options.revert = false;\n\n\t\t\t\t\tsortable._trigger( \"out\", event, sortable._uiHash( sortable ) );\n\t\t\t\t\tsortable._mouseStop( event, true );\n\n\t\t\t\t\t// Restore sortable behaviors that were modfied\n\t\t\t\t\t// when the draggable entered the sortable area (#9481)\n\t\t\t\t\tsortable.options.revert = sortable.options._revert;\n\t\t\t\t\tsortable.options.helper = sortable.options._helper;\n\n\t\t\t\t\tif ( sortable.placeholder ) {\n\t\t\t\t\t\tsortable.placeholder.remove();\n\t\t\t\t\t}\n\n\t\t\t\t\t// Restore and recalculate the draggable's offset considering the sortable\n\t\t\t\t\t// may have modified them in unexpected ways. (#8809, #10669)\n\t\t\t\t\tui.helper.appendTo( draggable._parent );\n\t\t\t\t\tdraggable._refreshOffsets( event );\n\t\t\t\t\tui.position = draggable._generatePosition( event, true );\n\n\t\t\t\t\tdraggable._trigger( \"fromSortable\", event );\n\n\t\t\t\t\t// Inform draggable that the helper is no longer in a valid drop zone\n\t\t\t\t\tdraggable.dropped = false;\n\n\t\t\t\t\t// Need to refreshPositions of all sortables just in case removing\n\t\t\t\t\t// from one sortable changes the location of other sortables (#9675)\n\t\t\t\t\t$.each( draggable.sortables, function() {\n\t\t\t\t\t\tthis.refreshPositions();\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t}\n} );\n\n$.ui.plugin.add( \"draggable\", \"cursor\", {\n\tstart: function( event, ui, instance ) {\n\t\tvar t = $( \"body\" ),\n\t\t\to = instance.options;\n\n\t\tif ( t.css( \"cursor\" ) ) {\n\t\t\to._cursor = t.css( \"cursor\" );\n\t\t}\n\t\tt.css( \"cursor\", o.cursor );\n\t},\n\tstop: function( event, ui, instance ) {\n\t\tvar o = instance.options;\n\t\tif ( o._cursor ) {\n\t\t\t$( \"body\" ).css( \"cursor\", o._cursor );\n\t\t}\n\t}\n} );\n\n$.ui.plugin.add( \"draggable\", \"opacity\", {\n\tstart: function( event, ui, instance ) {\n\t\tvar t = $( ui.helper ),\n\t\t\to = instance.options;\n\t\tif ( t.css( \"opacity\" ) ) {\n\t\t\to._opacity = t.css( \"opacity\" );\n\t\t}\n\t\tt.css( \"opacity\", o.opacity );\n\t},\n\tstop: function( event, ui, instance ) {\n\t\tvar o = instance.options;\n\t\tif ( o._opacity ) {\n\t\t\t$( ui.helper ).css( \"opacity\", o._opacity );\n\t\t}\n\t}\n} );\n\n$.ui.plugin.add( \"draggable\", \"scroll\", {\n\tstart: function( event, ui, i ) {\n\t\tif ( !i.scrollParentNotHidden ) {\n\t\t\ti.scrollParentNotHidden = i.helper.scrollParent( false );\n\t\t}\n\n\t\tif ( i.scrollParentNotHidden[ 0 ] !== i.document[ 0 ] &&\n\t\t\t\ti.scrollParentNotHidden[ 0 ].tagName !== \"HTML\" ) {\n\t\t\ti.overflowOffset = i.scrollParentNotHidden.offset();\n\t\t}\n\t},\n\tdrag: function( event, ui, i  ) {\n\n\t\tvar o = i.options,\n\t\t\tscrolled = false,\n\t\t\tscrollParent = i.scrollParentNotHidden[ 0 ],\n\t\t\tdocument = i.document[ 0 ];\n\n\t\tif ( scrollParent !== document && scrollParent.tagName !== \"HTML\" ) {\n\t\t\tif ( !o.axis || o.axis !== \"x\" ) {\n\t\t\t\tif ( ( i.overflowOffset.top + scrollParent.offsetHeight ) - event.pageY <\n\t\t\t\t\t\to.scrollSensitivity ) {\n\t\t\t\t\tscrollParent.scrollTop = scrolled = scrollParent.scrollTop + o.scrollSpeed;\n\t\t\t\t} else if ( event.pageY - i.overflowOffset.top < o.scrollSensitivity ) {\n\t\t\t\t\tscrollParent.scrollTop = scrolled = scrollParent.scrollTop - o.scrollSpeed;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( !o.axis || o.axis !== \"y\" ) {\n\t\t\t\tif ( ( i.overflowOffset.left + scrollParent.offsetWidth ) - event.pageX <\n\t\t\t\t\t\to.scrollSensitivity ) {\n\t\t\t\t\tscrollParent.scrollLeft = scrolled = scrollParent.scrollLeft + o.scrollSpeed;\n\t\t\t\t} else if ( event.pageX - i.overflowOffset.left < o.scrollSensitivity ) {\n\t\t\t\t\tscrollParent.scrollLeft = scrolled = scrollParent.scrollLeft - o.scrollSpeed;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( !o.axis || o.axis !== \"x\" ) {\n\t\t\t\tif ( event.pageY - $( document ).scrollTop() < o.scrollSensitivity ) {\n\t\t\t\t\tscrolled = $( document ).scrollTop( $( document ).scrollTop() - o.scrollSpeed );\n\t\t\t\t} else if ( $( window ).height() - ( event.pageY - $( document ).scrollTop() ) <\n\t\t\t\t\t\to.scrollSensitivity ) {\n\t\t\t\t\tscrolled = $( document ).scrollTop( $( document ).scrollTop() + o.scrollSpeed );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( !o.axis || o.axis !== \"y\" ) {\n\t\t\t\tif ( event.pageX - $( document ).scrollLeft() < o.scrollSensitivity ) {\n\t\t\t\t\tscrolled = $( document ).scrollLeft(\n\t\t\t\t\t\t$( document ).scrollLeft() - o.scrollSpeed\n\t\t\t\t\t);\n\t\t\t\t} else if ( $( window ).width() - ( event.pageX - $( document ).scrollLeft() ) <\n\t\t\t\t\t\to.scrollSensitivity ) {\n\t\t\t\t\tscrolled = $( document ).scrollLeft(\n\t\t\t\t\t\t$( document ).scrollLeft() + o.scrollSpeed\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\tif ( scrolled !== false && $.ui.ddmanager && !o.dropBehaviour ) {\n\t\t\t$.ui.ddmanager.prepareOffsets( i, event );\n\t\t}\n\n\t}\n} );\n\n$.ui.plugin.add( \"draggable\", \"snap\", {\n\tstart: function( event, ui, i ) {\n\n\t\tvar o = i.options;\n\n\t\ti.snapElements = [];\n\n\t\t$( o.snap.constructor !== String ? ( o.snap.items || \":data(ui-draggable)\" ) : o.snap )\n\t\t\t.each( function() {\n\t\t\t\tvar $t = $( this ),\n\t\t\t\t\t$o = $t.offset();\n\t\t\t\tif ( this !== i.element[ 0 ] ) {\n\t\t\t\t\ti.snapElements.push( {\n\t\t\t\t\t\titem: this,\n\t\t\t\t\t\twidth: $t.outerWidth(), height: $t.outerHeight(),\n\t\t\t\t\t\ttop: $o.top, left: $o.left\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t} );\n\n\t},\n\tdrag: function( event, ui, inst ) {\n\n\t\tvar ts, bs, ls, rs, l, r, t, b, i, first,\n\t\t\to = inst.options,\n\t\t\td = o.snapTolerance,\n\t\t\tx1 = ui.offset.left, x2 = x1 + inst.helperProportions.width,\n\t\t\ty1 = ui.offset.top, y2 = y1 + inst.helperProportions.height;\n\n\t\tfor ( i = inst.snapElements.length - 1; i >= 0; i-- ) {\n\n\t\t\tl = inst.snapElements[ i ].left - inst.margins.left;\n\t\t\tr = l + inst.snapElements[ i ].width;\n\t\t\tt = inst.snapElements[ i ].top - inst.margins.top;\n\t\t\tb = t + inst.snapElements[ i ].height;\n\n\t\t\tif ( x2 < l - d || x1 > r + d || y2 < t - d || y1 > b + d ||\n\t\t\t\t\t!$.contains( inst.snapElements[ i ].item.ownerDocument,\n\t\t\t\t\tinst.snapElements[ i ].item ) ) {\n\t\t\t\tif ( inst.snapElements[ i ].snapping ) {\n\t\t\t\t\t( inst.options.snap.release &&\n\t\t\t\t\t\tinst.options.snap.release.call(\n\t\t\t\t\t\t\tinst.element,\n\t\t\t\t\t\t\tevent,\n\t\t\t\t\t\t\t$.extend( inst._uiHash(), { snapItem: inst.snapElements[ i ].item } )\n\t\t\t\t\t\t) );\n\t\t\t\t}\n\t\t\t\tinst.snapElements[ i ].snapping = false;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( o.snapMode !== \"inner\" ) {\n\t\t\t\tts = Math.abs( t - y2 ) <= d;\n\t\t\t\tbs = Math.abs( b - y1 ) <= d;\n\t\t\t\tls = Math.abs( l - x2 ) <= d;\n\t\t\t\trs = Math.abs( r - x1 ) <= d;\n\t\t\t\tif ( ts ) {\n\t\t\t\t\tui.position.top = inst._convertPositionTo( \"relative\", {\n\t\t\t\t\t\ttop: t - inst.helperProportions.height,\n\t\t\t\t\t\tleft: 0\n\t\t\t\t\t} ).top;\n\t\t\t\t}\n\t\t\t\tif ( bs ) {\n\t\t\t\t\tui.position.top = inst._convertPositionTo( \"relative\", {\n\t\t\t\t\t\ttop: b,\n\t\t\t\t\t\tleft: 0\n\t\t\t\t\t} ).top;\n\t\t\t\t}\n\t\t\t\tif ( ls ) {\n\t\t\t\t\tui.position.left = inst._convertPositionTo( \"relative\", {\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\tleft: l - inst.helperProportions.width\n\t\t\t\t\t} ).left;\n\t\t\t\t}\n\t\t\t\tif ( rs ) {\n\t\t\t\t\tui.position.left = inst._convertPositionTo( \"relative\", {\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\tleft: r\n\t\t\t\t\t} ).left;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfirst = ( ts || bs || ls || rs );\n\n\t\t\tif ( o.snapMode !== \"outer\" ) {\n\t\t\t\tts = Math.abs( t - y1 ) <= d;\n\t\t\t\tbs = Math.abs( b - y2 ) <= d;\n\t\t\t\tls = Math.abs( l - x1 ) <= d;\n\t\t\t\trs = Math.abs( r - x2 ) <= d;\n\t\t\t\tif ( ts ) {\n\t\t\t\t\tui.position.top = inst._convertPositionTo( \"relative\", {\n\t\t\t\t\t\ttop: t,\n\t\t\t\t\t\tleft: 0\n\t\t\t\t\t} ).top;\n\t\t\t\t}\n\t\t\t\tif ( bs ) {\n\t\t\t\t\tui.position.top = inst._convertPositionTo( \"relative\", {\n\t\t\t\t\t\ttop: b - inst.helperProportions.height,\n\t\t\t\t\t\tleft: 0\n\t\t\t\t\t} ).top;\n\t\t\t\t}\n\t\t\t\tif ( ls ) {\n\t\t\t\t\tui.position.left = inst._convertPositionTo( \"relative\", {\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\tleft: l\n\t\t\t\t\t} ).left;\n\t\t\t\t}\n\t\t\t\tif ( rs ) {\n\t\t\t\t\tui.position.left = inst._convertPositionTo( \"relative\", {\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\tleft: r - inst.helperProportions.width\n\t\t\t\t\t} ).left;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( !inst.snapElements[ i ].snapping && ( ts || bs || ls || rs || first ) ) {\n\t\t\t\t( inst.options.snap.snap &&\n\t\t\t\t\tinst.options.snap.snap.call(\n\t\t\t\t\t\tinst.element,\n\t\t\t\t\t\tevent,\n\t\t\t\t\t\t$.extend( inst._uiHash(), {\n\t\t\t\t\t\t\tsnapItem: inst.snapElements[ i ].item\n\t\t\t\t\t\t} ) ) );\n\t\t\t}\n\t\t\tinst.snapElements[ i ].snapping = ( ts || bs || ls || rs || first );\n\n\t\t}\n\n\t}\n} );\n\n$.ui.plugin.add( \"draggable\", \"stack\", {\n\tstart: function( event, ui, instance ) {\n\t\tvar min,\n\t\t\to = instance.options,\n\t\t\tgroup = $.makeArray( $( o.stack ) ).sort( function( a, b ) {\n\t\t\t\treturn ( parseInt( $( a ).css( \"zIndex\" ), 10 ) || 0 ) -\n\t\t\t\t\t( parseInt( $( b ).css( \"zIndex\" ), 10 ) || 0 );\n\t\t\t} );\n\n\t\tif ( !group.length ) { return; }\n\n\t\tmin = parseInt( $( group[ 0 ] ).css( \"zIndex\" ), 10 ) || 0;\n\t\t$( group ).each( function( i ) {\n\t\t\t$( this ).css( \"zIndex\", min + i );\n\t\t} );\n\t\tthis.css( \"zIndex\", ( min + group.length ) );\n\t}\n} );\n\n$.ui.plugin.add( \"draggable\", \"zIndex\", {\n\tstart: function( event, ui, instance ) {\n\t\tvar t = $( ui.helper ),\n\t\t\to = instance.options;\n\n\t\tif ( t.css( \"zIndex\" ) ) {\n\t\t\to._zIndex = t.css( \"zIndex\" );\n\t\t}\n\t\tt.css( \"zIndex\", o.zIndex );\n\t},\n\tstop: function( event, ui, instance ) {\n\t\tvar o = instance.options;\n\n\t\tif ( o._zIndex ) {\n\t\t\t$( ui.helper ).css( \"zIndex\", o._zIndex );\n\t\t}\n\t}\n} );\n\nvar widgetsDraggable = $.ui.draggable;\n\n\n/*!\n * jQuery UI Resizable 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Resizable\n//>>group: Interactions\n//>>description: Enables resize functionality for any element.\n//>>docs: http://api.jqueryui.com/resizable/\n//>>demos: http://jqueryui.com/resizable/\n//>>css.structure: ../../themes/base/core.css\n//>>css.structure: ../../themes/base/resizable.css\n//>>css.theme: ../../themes/base/theme.css\n\n\n\n$.widget( \"ui.resizable\", $.ui.mouse, {\n\tversion: \"1.12.1\",\n\twidgetEventPrefix: \"resize\",\n\toptions: {\n\t\talsoResize: false,\n\t\tanimate: false,\n\t\tanimateDuration: \"slow\",\n\t\tanimateEasing: \"swing\",\n\t\taspectRatio: false,\n\t\tautoHide: false,\n\t\tclasses: {\n\t\t\t\"ui-resizable-se\": \"ui-icon ui-icon-gripsmall-diagonal-se\"\n\t\t},\n\t\tcontainment: false,\n\t\tghost: false,\n\t\tgrid: false,\n\t\thandles: \"e,s,se\",\n\t\thelper: false,\n\t\tmaxHeight: null,\n\t\tmaxWidth: null,\n\t\tminHeight: 10,\n\t\tminWidth: 10,\n\n\t\t// See #7960\n\t\tzIndex: 90,\n\n\t\t// Callbacks\n\t\tresize: null,\n\t\tstart: null,\n\t\tstop: null\n\t},\n\n\t_num: function( value ) {\n\t\treturn parseFloat( value ) || 0;\n\t},\n\n\t_isNumber: function( value ) {\n\t\treturn !isNaN( parseFloat( value ) );\n\t},\n\n\t_hasScroll: function( el, a ) {\n\n\t\tif ( $( el ).css( \"overflow\" ) === \"hidden\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar scroll = ( a && a === \"left\" ) ? \"scrollLeft\" : \"scrollTop\",\n\t\t\thas = false;\n\n\t\tif ( el[ scroll ] > 0 ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// TODO: determine which cases actually cause this to happen\n\t\t// if the element doesn't have the scroll set, see if it's possible to\n\t\t// set the scroll\n\t\tel[ scroll ] = 1;\n\t\thas = ( el[ scroll ] > 0 );\n\t\tel[ scroll ] = 0;\n\t\treturn has;\n\t},\n\n\t_create: function() {\n\n\t\tvar margins,\n\t\t\to = this.options,\n\t\t\tthat = this;\n\t\tthis._addClass( \"ui-resizable\" );\n\n\t\t$.extend( this, {\n\t\t\t_aspectRatio: !!( o.aspectRatio ),\n\t\t\taspectRatio: o.aspectRatio,\n\t\t\toriginalElement: this.element,\n\t\t\t_proportionallyResizeElements: [],\n\t\t\t_helper: o.helper || o.ghost || o.animate ? o.helper || \"ui-resizable-helper\" : null\n\t\t} );\n\n\t\t// Wrap the element if it cannot hold child nodes\n\t\tif ( this.element[ 0 ].nodeName.match( /^(canvas|textarea|input|select|button|img)$/i ) ) {\n\n\t\t\tthis.element.wrap(\n\t\t\t\t$( \"<div class='ui-wrapper' style='overflow: hidden;'></div>\" ).css( {\n\t\t\t\t\tposition: this.element.css( \"position\" ),\n\t\t\t\t\twidth: this.element.outerWidth(),\n\t\t\t\t\theight: this.element.outerHeight(),\n\t\t\t\t\ttop: this.element.css( \"top\" ),\n\t\t\t\t\tleft: this.element.css( \"left\" )\n\t\t\t\t} )\n\t\t\t);\n\n\t\t\tthis.element = this.element.parent().data(\n\t\t\t\t\"ui-resizable\", this.element.resizable( \"instance\" )\n\t\t\t);\n\n\t\t\tthis.elementIsWrapper = true;\n\n\t\t\tmargins = {\n\t\t\t\tmarginTop: this.originalElement.css( \"marginTop\" ),\n\t\t\t\tmarginRight: this.originalElement.css( \"marginRight\" ),\n\t\t\t\tmarginBottom: this.originalElement.css( \"marginBottom\" ),\n\t\t\t\tmarginLeft: this.originalElement.css( \"marginLeft\" )\n\t\t\t};\n\n\t\t\tthis.element.css( margins );\n\t\t\tthis.originalElement.css( \"margin\", 0 );\n\n\t\t\t// support: Safari\n\t\t\t// Prevent Safari textarea resize\n\t\t\tthis.originalResizeStyle = this.originalElement.css( \"resize\" );\n\t\t\tthis.originalElement.css( \"resize\", \"none\" );\n\n\t\t\tthis._proportionallyResizeElements.push( this.originalElement.css( {\n\t\t\t\tposition: \"static\",\n\t\t\t\tzoom: 1,\n\t\t\t\tdisplay: \"block\"\n\t\t\t} ) );\n\n\t\t\t// Support: IE9\n\t\t\t// avoid IE jump (hard set the margin)\n\t\t\tthis.originalElement.css( margins );\n\n\t\t\tthis._proportionallyResize();\n\t\t}\n\n\t\tthis._setupHandles();\n\n\t\tif ( o.autoHide ) {\n\t\t\t$( this.element )\n\t\t\t\t.on( \"mouseenter\", function() {\n\t\t\t\t\tif ( o.disabled ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tthat._removeClass( \"ui-resizable-autohide\" );\n\t\t\t\t\tthat._handles.show();\n\t\t\t\t} )\n\t\t\t\t.on( \"mouseleave\", function() {\n\t\t\t\t\tif ( o.disabled ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tif ( !that.resizing ) {\n\t\t\t\t\t\tthat._addClass( \"ui-resizable-autohide\" );\n\t\t\t\t\t\tthat._handles.hide();\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}\n\n\t\tthis._mouseInit();\n\t},\n\n\t_destroy: function() {\n\n\t\tthis._mouseDestroy();\n\n\t\tvar wrapper,\n\t\t\t_destroy = function( exp ) {\n\t\t\t\t$( exp )\n\t\t\t\t\t.removeData( \"resizable\" )\n\t\t\t\t\t.removeData( \"ui-resizable\" )\n\t\t\t\t\t.off( \".resizable\" )\n\t\t\t\t\t.find( \".ui-resizable-handle\" )\n\t\t\t\t\t\t.remove();\n\t\t\t};\n\n\t\t// TODO: Unwrap at same DOM position\n\t\tif ( this.elementIsWrapper ) {\n\t\t\t_destroy( this.element );\n\t\t\twrapper = this.element;\n\t\t\tthis.originalElement.css( {\n\t\t\t\tposition: wrapper.css( \"position\" ),\n\t\t\t\twidth: wrapper.outerWidth(),\n\t\t\t\theight: wrapper.outerHeight(),\n\t\t\t\ttop: wrapper.css( \"top\" ),\n\t\t\t\tleft: wrapper.css( \"left\" )\n\t\t\t} ).insertAfter( wrapper );\n\t\t\twrapper.remove();\n\t\t}\n\n\t\tthis.originalElement.css( \"resize\", this.originalResizeStyle );\n\t\t_destroy( this.originalElement );\n\n\t\treturn this;\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tthis._super( key, value );\n\n\t\tswitch ( key ) {\n\t\tcase \"handles\":\n\t\t\tthis._removeHandles();\n\t\t\tthis._setupHandles();\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbreak;\n\t\t}\n\t},\n\n\t_setupHandles: function() {\n\t\tvar o = this.options, handle, i, n, hname, axis, that = this;\n\t\tthis.handles = o.handles ||\n\t\t\t( !$( \".ui-resizable-handle\", this.element ).length ?\n\t\t\t\t\"e,s,se\" : {\n\t\t\t\t\tn: \".ui-resizable-n\",\n\t\t\t\t\te: \".ui-resizable-e\",\n\t\t\t\t\ts: \".ui-resizable-s\",\n\t\t\t\t\tw: \".ui-resizable-w\",\n\t\t\t\t\tse: \".ui-resizable-se\",\n\t\t\t\t\tsw: \".ui-resizable-sw\",\n\t\t\t\t\tne: \".ui-resizable-ne\",\n\t\t\t\t\tnw: \".ui-resizable-nw\"\n\t\t\t\t} );\n\n\t\tthis._handles = $();\n\t\tif ( this.handles.constructor === String ) {\n\n\t\t\tif ( this.handles === \"all\" ) {\n\t\t\t\tthis.handles = \"n,e,s,w,se,sw,ne,nw\";\n\t\t\t}\n\n\t\t\tn = this.handles.split( \",\" );\n\t\t\tthis.handles = {};\n\n\t\t\tfor ( i = 0; i < n.length; i++ ) {\n\n\t\t\t\thandle = $.trim( n[ i ] );\n\t\t\t\thname = \"ui-resizable-\" + handle;\n\t\t\t\taxis = $( \"<div>\" );\n\t\t\t\tthis._addClass( axis, \"ui-resizable-handle \" + hname );\n\n\t\t\t\taxis.css( { zIndex: o.zIndex } );\n\n\t\t\t\tthis.handles[ handle ] = \".ui-resizable-\" + handle;\n\t\t\t\tthis.element.append( axis );\n\t\t\t}\n\n\t\t}\n\n\t\tthis._renderAxis = function( target ) {\n\n\t\t\tvar i, axis, padPos, padWrapper;\n\n\t\t\ttarget = target || this.element;\n\n\t\t\tfor ( i in this.handles ) {\n\n\t\t\t\tif ( this.handles[ i ].constructor === String ) {\n\t\t\t\t\tthis.handles[ i ] = this.element.children( this.handles[ i ] ).first().show();\n\t\t\t\t} else if ( this.handles[ i ].jquery || this.handles[ i ].nodeType ) {\n\t\t\t\t\tthis.handles[ i ] = $( this.handles[ i ] );\n\t\t\t\t\tthis._on( this.handles[ i ], { \"mousedown\": that._mouseDown } );\n\t\t\t\t}\n\n\t\t\t\tif ( this.elementIsWrapper &&\n\t\t\t\t\t\tthis.originalElement[ 0 ]\n\t\t\t\t\t\t\t.nodeName\n\t\t\t\t\t\t\t.match( /^(textarea|input|select|button)$/i ) ) {\n\t\t\t\t\taxis = $( this.handles[ i ], this.element );\n\n\t\t\t\t\tpadWrapper = /sw|ne|nw|se|n|s/.test( i ) ?\n\t\t\t\t\t\taxis.outerHeight() :\n\t\t\t\t\t\taxis.outerWidth();\n\n\t\t\t\t\tpadPos = [ \"padding\",\n\t\t\t\t\t\t/ne|nw|n/.test( i ) ? \"Top\" :\n\t\t\t\t\t\t/se|sw|s/.test( i ) ? \"Bottom\" :\n\t\t\t\t\t\t/^e$/.test( i ) ? \"Right\" : \"Left\" ].join( \"\" );\n\n\t\t\t\t\ttarget.css( padPos, padWrapper );\n\n\t\t\t\t\tthis._proportionallyResize();\n\t\t\t\t}\n\n\t\t\t\tthis._handles = this._handles.add( this.handles[ i ] );\n\t\t\t}\n\t\t};\n\n\t\t// TODO: make renderAxis a prototype function\n\t\tthis._renderAxis( this.element );\n\n\t\tthis._handles = this._handles.add( this.element.find( \".ui-resizable-handle\" ) );\n\t\tthis._handles.disableSelection();\n\n\t\tthis._handles.on( \"mouseover\", function() {\n\t\t\tif ( !that.resizing ) {\n\t\t\t\tif ( this.className ) {\n\t\t\t\t\taxis = this.className.match( /ui-resizable-(se|sw|ne|nw|n|e|s|w)/i );\n\t\t\t\t}\n\t\t\t\tthat.axis = axis && axis[ 1 ] ? axis[ 1 ] : \"se\";\n\t\t\t}\n\t\t} );\n\n\t\tif ( o.autoHide ) {\n\t\t\tthis._handles.hide();\n\t\t\tthis._addClass( \"ui-resizable-autohide\" );\n\t\t}\n\t},\n\n\t_removeHandles: function() {\n\t\tthis._handles.remove();\n\t},\n\n\t_mouseCapture: function( event ) {\n\t\tvar i, handle,\n\t\t\tcapture = false;\n\n\t\tfor ( i in this.handles ) {\n\t\t\thandle = $( this.handles[ i ] )[ 0 ];\n\t\t\tif ( handle === event.target || $.contains( handle, event.target ) ) {\n\t\t\t\tcapture = true;\n\t\t\t}\n\t\t}\n\n\t\treturn !this.options.disabled && capture;\n\t},\n\n\t_mouseStart: function( event ) {\n\n\t\tvar curleft, curtop, cursor,\n\t\t\to = this.options,\n\t\t\tel = this.element;\n\n\t\tthis.resizing = true;\n\n\t\tthis._renderProxy();\n\n\t\tcurleft = this._num( this.helper.css( \"left\" ) );\n\t\tcurtop = this._num( this.helper.css( \"top\" ) );\n\n\t\tif ( o.containment ) {\n\t\t\tcurleft += $( o.containment ).scrollLeft() || 0;\n\t\t\tcurtop += $( o.containment ).scrollTop() || 0;\n\t\t}\n\n\t\tthis.offset = this.helper.offset();\n\t\tthis.position = { left: curleft, top: curtop };\n\n\t\tthis.size = this._helper ? {\n\t\t\t\twidth: this.helper.width(),\n\t\t\t\theight: this.helper.height()\n\t\t\t} : {\n\t\t\t\twidth: el.width(),\n\t\t\t\theight: el.height()\n\t\t\t};\n\n\t\tthis.originalSize = this._helper ? {\n\t\t\t\twidth: el.outerWidth(),\n\t\t\t\theight: el.outerHeight()\n\t\t\t} : {\n\t\t\t\twidth: el.width(),\n\t\t\t\theight: el.height()\n\t\t\t};\n\n\t\tthis.sizeDiff = {\n\t\t\twidth: el.outerWidth() - el.width(),\n\t\t\theight: el.outerHeight() - el.height()\n\t\t};\n\n\t\tthis.originalPosition = { left: curleft, top: curtop };\n\t\tthis.originalMousePosition = { left: event.pageX, top: event.pageY };\n\n\t\tthis.aspectRatio = ( typeof o.aspectRatio === \"number\" ) ?\n\t\t\to.aspectRatio :\n\t\t\t( ( this.originalSize.width / this.originalSize.height ) || 1 );\n\n\t\tcursor = $( \".ui-resizable-\" + this.axis ).css( \"cursor\" );\n\t\t$( \"body\" ).css( \"cursor\", cursor === \"auto\" ? this.axis + \"-resize\" : cursor );\n\n\t\tthis._addClass( \"ui-resizable-resizing\" );\n\t\tthis._propagate( \"start\", event );\n\t\treturn true;\n\t},\n\n\t_mouseDrag: function( event ) {\n\n\t\tvar data, props,\n\t\t\tsmp = this.originalMousePosition,\n\t\t\ta = this.axis,\n\t\t\tdx = ( event.pageX - smp.left ) || 0,\n\t\t\tdy = ( event.pageY - smp.top ) || 0,\n\t\t\ttrigger = this._change[ a ];\n\n\t\tthis._updatePrevProperties();\n\n\t\tif ( !trigger ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tdata = trigger.apply( this, [ event, dx, dy ] );\n\n\t\tthis._updateVirtualBoundaries( event.shiftKey );\n\t\tif ( this._aspectRatio || event.shiftKey ) {\n\t\t\tdata = this._updateRatio( data, event );\n\t\t}\n\n\t\tdata = this._respectSize( data, event );\n\n\t\tthis._updateCache( data );\n\n\t\tthis._propagate( \"resize\", event );\n\n\t\tprops = this._applyChanges();\n\n\t\tif ( !this._helper && this._proportionallyResizeElements.length ) {\n\t\t\tthis._proportionallyResize();\n\t\t}\n\n\t\tif ( !$.isEmptyObject( props ) ) {\n\t\t\tthis._updatePrevProperties();\n\t\t\tthis._trigger( \"resize\", event, this.ui() );\n\t\t\tthis._applyChanges();\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_mouseStop: function( event ) {\n\n\t\tthis.resizing = false;\n\t\tvar pr, ista, soffseth, soffsetw, s, left, top,\n\t\t\to = this.options, that = this;\n\n\t\tif ( this._helper ) {\n\n\t\t\tpr = this._proportionallyResizeElements;\n\t\t\tista = pr.length && ( /textarea/i ).test( pr[ 0 ].nodeName );\n\t\t\tsoffseth = ista && this._hasScroll( pr[ 0 ], \"left\" ) ? 0 : that.sizeDiff.height;\n\t\t\tsoffsetw = ista ? 0 : that.sizeDiff.width;\n\n\t\t\ts = {\n\t\t\t\twidth: ( that.helper.width()  - soffsetw ),\n\t\t\t\theight: ( that.helper.height() - soffseth )\n\t\t\t};\n\t\t\tleft = ( parseFloat( that.element.css( \"left\" ) ) +\n\t\t\t\t( that.position.left - that.originalPosition.left ) ) || null;\n\t\t\ttop = ( parseFloat( that.element.css( \"top\" ) ) +\n\t\t\t\t( that.position.top - that.originalPosition.top ) ) || null;\n\n\t\t\tif ( !o.animate ) {\n\t\t\t\tthis.element.css( $.extend( s, { top: top, left: left } ) );\n\t\t\t}\n\n\t\t\tthat.helper.height( that.size.height );\n\t\t\tthat.helper.width( that.size.width );\n\n\t\t\tif ( this._helper && !o.animate ) {\n\t\t\t\tthis._proportionallyResize();\n\t\t\t}\n\t\t}\n\n\t\t$( \"body\" ).css( \"cursor\", \"auto\" );\n\n\t\tthis._removeClass( \"ui-resizable-resizing\" );\n\n\t\tthis._propagate( \"stop\", event );\n\n\t\tif ( this._helper ) {\n\t\t\tthis.helper.remove();\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\t_updatePrevProperties: function() {\n\t\tthis.prevPosition = {\n\t\t\ttop: this.position.top,\n\t\t\tleft: this.position.left\n\t\t};\n\t\tthis.prevSize = {\n\t\t\twidth: this.size.width,\n\t\t\theight: this.size.height\n\t\t};\n\t},\n\n\t_applyChanges: function() {\n\t\tvar props = {};\n\n\t\tif ( this.position.top !== this.prevPosition.top ) {\n\t\t\tprops.top = this.position.top + \"px\";\n\t\t}\n\t\tif ( this.position.left !== this.prevPosition.left ) {\n\t\t\tprops.left = this.position.left + \"px\";\n\t\t}\n\t\tif ( this.size.width !== this.prevSize.width ) {\n\t\t\tprops.width = this.size.width + \"px\";\n\t\t}\n\t\tif ( this.size.height !== this.prevSize.height ) {\n\t\t\tprops.height = this.size.height + \"px\";\n\t\t}\n\n\t\tthis.helper.css( props );\n\n\t\treturn props;\n\t},\n\n\t_updateVirtualBoundaries: function( forceAspectRatio ) {\n\t\tvar pMinWidth, pMaxWidth, pMinHeight, pMaxHeight, b,\n\t\t\to = this.options;\n\n\t\tb = {\n\t\t\tminWidth: this._isNumber( o.minWidth ) ? o.minWidth : 0,\n\t\t\tmaxWidth: this._isNumber( o.maxWidth ) ? o.maxWidth : Infinity,\n\t\t\tminHeight: this._isNumber( o.minHeight ) ? o.minHeight : 0,\n\t\t\tmaxHeight: this._isNumber( o.maxHeight ) ? o.maxHeight : Infinity\n\t\t};\n\n\t\tif ( this._aspectRatio || forceAspectRatio ) {\n\t\t\tpMinWidth = b.minHeight * this.aspectRatio;\n\t\t\tpMinHeight = b.minWidth / this.aspectRatio;\n\t\t\tpMaxWidth = b.maxHeight * this.aspectRatio;\n\t\t\tpMaxHeight = b.maxWidth / this.aspectRatio;\n\n\t\t\tif ( pMinWidth > b.minWidth ) {\n\t\t\t\tb.minWidth = pMinWidth;\n\t\t\t}\n\t\t\tif ( pMinHeight > b.minHeight ) {\n\t\t\t\tb.minHeight = pMinHeight;\n\t\t\t}\n\t\t\tif ( pMaxWidth < b.maxWidth ) {\n\t\t\t\tb.maxWidth = pMaxWidth;\n\t\t\t}\n\t\t\tif ( pMaxHeight < b.maxHeight ) {\n\t\t\t\tb.maxHeight = pMaxHeight;\n\t\t\t}\n\t\t}\n\t\tthis._vBoundaries = b;\n\t},\n\n\t_updateCache: function( data ) {\n\t\tthis.offset = this.helper.offset();\n\t\tif ( this._isNumber( data.left ) ) {\n\t\t\tthis.position.left = data.left;\n\t\t}\n\t\tif ( this._isNumber( data.top ) ) {\n\t\t\tthis.position.top = data.top;\n\t\t}\n\t\tif ( this._isNumber( data.height ) ) {\n\t\t\tthis.size.height = data.height;\n\t\t}\n\t\tif ( this._isNumber( data.width ) ) {\n\t\t\tthis.size.width = data.width;\n\t\t}\n\t},\n\n\t_updateRatio: function( data ) {\n\n\t\tvar cpos = this.position,\n\t\t\tcsize = this.size,\n\t\t\ta = this.axis;\n\n\t\tif ( this._isNumber( data.height ) ) {\n\t\t\tdata.width = ( data.height * this.aspectRatio );\n\t\t} else if ( this._isNumber( data.width ) ) {\n\t\t\tdata.height = ( data.width / this.aspectRatio );\n\t\t}\n\n\t\tif ( a === \"sw\" ) {\n\t\t\tdata.left = cpos.left + ( csize.width - data.width );\n\t\t\tdata.top = null;\n\t\t}\n\t\tif ( a === \"nw\" ) {\n\t\t\tdata.top = cpos.top + ( csize.height - data.height );\n\t\t\tdata.left = cpos.left + ( csize.width - data.width );\n\t\t}\n\n\t\treturn data;\n\t},\n\n\t_respectSize: function( data ) {\n\n\t\tvar o = this._vBoundaries,\n\t\t\ta = this.axis,\n\t\t\tismaxw = this._isNumber( data.width ) && o.maxWidth && ( o.maxWidth < data.width ),\n\t\t\tismaxh = this._isNumber( data.height ) && o.maxHeight && ( o.maxHeight < data.height ),\n\t\t\tisminw = this._isNumber( data.width ) && o.minWidth && ( o.minWidth > data.width ),\n\t\t\tisminh = this._isNumber( data.height ) && o.minHeight && ( o.minHeight > data.height ),\n\t\t\tdw = this.originalPosition.left + this.originalSize.width,\n\t\t\tdh = this.originalPosition.top + this.originalSize.height,\n\t\t\tcw = /sw|nw|w/.test( a ), ch = /nw|ne|n/.test( a );\n\t\tif ( isminw ) {\n\t\t\tdata.width = o.minWidth;\n\t\t}\n\t\tif ( isminh ) {\n\t\t\tdata.height = o.minHeight;\n\t\t}\n\t\tif ( ismaxw ) {\n\t\t\tdata.width = o.maxWidth;\n\t\t}\n\t\tif ( ismaxh ) {\n\t\t\tdata.height = o.maxHeight;\n\t\t}\n\n\t\tif ( isminw && cw ) {\n\t\t\tdata.left = dw - o.minWidth;\n\t\t}\n\t\tif ( ismaxw && cw ) {\n\t\t\tdata.left = dw - o.maxWidth;\n\t\t}\n\t\tif ( isminh && ch ) {\n\t\t\tdata.top = dh - o.minHeight;\n\t\t}\n\t\tif ( ismaxh && ch ) {\n\t\t\tdata.top = dh - o.maxHeight;\n\t\t}\n\n\t\t// Fixing jump error on top/left - bug #2330\n\t\tif ( !data.width && !data.height && !data.left && data.top ) {\n\t\t\tdata.top = null;\n\t\t} else if ( !data.width && !data.height && !data.top && data.left ) {\n\t\t\tdata.left = null;\n\t\t}\n\n\t\treturn data;\n\t},\n\n\t_getPaddingPlusBorderDimensions: function( element ) {\n\t\tvar i = 0,\n\t\t\twidths = [],\n\t\t\tborders = [\n\t\t\t\telement.css( \"borderTopWidth\" ),\n\t\t\t\telement.css( \"borderRightWidth\" ),\n\t\t\t\telement.css( \"borderBottomWidth\" ),\n\t\t\t\telement.css( \"borderLeftWidth\" )\n\t\t\t],\n\t\t\tpaddings = [\n\t\t\t\telement.css( \"paddingTop\" ),\n\t\t\t\telement.css( \"paddingRight\" ),\n\t\t\t\telement.css( \"paddingBottom\" ),\n\t\t\t\telement.css( \"paddingLeft\" )\n\t\t\t];\n\n\t\tfor ( ; i < 4; i++ ) {\n\t\t\twidths[ i ] = ( parseFloat( borders[ i ] ) || 0 );\n\t\t\twidths[ i ] += ( parseFloat( paddings[ i ] ) || 0 );\n\t\t}\n\n\t\treturn {\n\t\t\theight: widths[ 0 ] + widths[ 2 ],\n\t\t\twidth: widths[ 1 ] + widths[ 3 ]\n\t\t};\n\t},\n\n\t_proportionallyResize: function() {\n\n\t\tif ( !this._proportionallyResizeElements.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar prel,\n\t\t\ti = 0,\n\t\t\telement = this.helper || this.element;\n\n\t\tfor ( ; i < this._proportionallyResizeElements.length; i++ ) {\n\n\t\t\tprel = this._proportionallyResizeElements[ i ];\n\n\t\t\t// TODO: Seems like a bug to cache this.outerDimensions\n\t\t\t// considering that we are in a loop.\n\t\t\tif ( !this.outerDimensions ) {\n\t\t\t\tthis.outerDimensions = this._getPaddingPlusBorderDimensions( prel );\n\t\t\t}\n\n\t\t\tprel.css( {\n\t\t\t\theight: ( element.height() - this.outerDimensions.height ) || 0,\n\t\t\t\twidth: ( element.width() - this.outerDimensions.width ) || 0\n\t\t\t} );\n\n\t\t}\n\n\t},\n\n\t_renderProxy: function() {\n\n\t\tvar el = this.element, o = this.options;\n\t\tthis.elementOffset = el.offset();\n\n\t\tif ( this._helper ) {\n\n\t\t\tthis.helper = this.helper || $( \"<div style='overflow:hidden;'></div>\" );\n\n\t\t\tthis._addClass( this.helper, this._helper );\n\t\t\tthis.helper.css( {\n\t\t\t\twidth: this.element.outerWidth(),\n\t\t\t\theight: this.element.outerHeight(),\n\t\t\t\tposition: \"absolute\",\n\t\t\t\tleft: this.elementOffset.left + \"px\",\n\t\t\t\ttop: this.elementOffset.top + \"px\",\n\t\t\t\tzIndex: ++o.zIndex //TODO: Don't modify option\n\t\t\t} );\n\n\t\t\tthis.helper\n\t\t\t\t.appendTo( \"body\" )\n\t\t\t\t.disableSelection();\n\n\t\t} else {\n\t\t\tthis.helper = this.element;\n\t\t}\n\n\t},\n\n\t_change: {\n\t\te: function( event, dx ) {\n\t\t\treturn { width: this.originalSize.width + dx };\n\t\t},\n\t\tw: function( event, dx ) {\n\t\t\tvar cs = this.originalSize, sp = this.originalPosition;\n\t\t\treturn { left: sp.left + dx, width: cs.width - dx };\n\t\t},\n\t\tn: function( event, dx, dy ) {\n\t\t\tvar cs = this.originalSize, sp = this.originalPosition;\n\t\t\treturn { top: sp.top + dy, height: cs.height - dy };\n\t\t},\n\t\ts: function( event, dx, dy ) {\n\t\t\treturn { height: this.originalSize.height + dy };\n\t\t},\n\t\tse: function( event, dx, dy ) {\n\t\t\treturn $.extend( this._change.s.apply( this, arguments ),\n\t\t\t\tthis._change.e.apply( this, [ event, dx, dy ] ) );\n\t\t},\n\t\tsw: function( event, dx, dy ) {\n\t\t\treturn $.extend( this._change.s.apply( this, arguments ),\n\t\t\t\tthis._change.w.apply( this, [ event, dx, dy ] ) );\n\t\t},\n\t\tne: function( event, dx, dy ) {\n\t\t\treturn $.extend( this._change.n.apply( this, arguments ),\n\t\t\t\tthis._change.e.apply( this, [ event, dx, dy ] ) );\n\t\t},\n\t\tnw: function( event, dx, dy ) {\n\t\t\treturn $.extend( this._change.n.apply( this, arguments ),\n\t\t\t\tthis._change.w.apply( this, [ event, dx, dy ] ) );\n\t\t}\n\t},\n\n\t_propagate: function( n, event ) {\n\t\t$.ui.plugin.call( this, n, [ event, this.ui() ] );\n\t\t( n !== \"resize\" && this._trigger( n, event, this.ui() ) );\n\t},\n\n\tplugins: {},\n\n\tui: function() {\n\t\treturn {\n\t\t\toriginalElement: this.originalElement,\n\t\t\telement: this.element,\n\t\t\thelper: this.helper,\n\t\t\tposition: this.position,\n\t\t\tsize: this.size,\n\t\t\toriginalSize: this.originalSize,\n\t\t\toriginalPosition: this.originalPosition\n\t\t};\n\t}\n\n} );\n\n/*\n * Resizable Extensions\n */\n\n$.ui.plugin.add( \"resizable\", \"animate\", {\n\n\tstop: function( event ) {\n\t\tvar that = $( this ).resizable( \"instance\" ),\n\t\t\to = that.options,\n\t\t\tpr = that._proportionallyResizeElements,\n\t\t\tista = pr.length && ( /textarea/i ).test( pr[ 0 ].nodeName ),\n\t\t\tsoffseth = ista && that._hasScroll( pr[ 0 ], \"left\" ) ? 0 : that.sizeDiff.height,\n\t\t\tsoffsetw = ista ? 0 : that.sizeDiff.width,\n\t\t\tstyle = {\n\t\t\t\twidth: ( that.size.width - soffsetw ),\n\t\t\t\theight: ( that.size.height - soffseth )\n\t\t\t},\n\t\t\tleft = ( parseFloat( that.element.css( \"left\" ) ) +\n\t\t\t\t( that.position.left - that.originalPosition.left ) ) || null,\n\t\t\ttop = ( parseFloat( that.element.css( \"top\" ) ) +\n\t\t\t\t( that.position.top - that.originalPosition.top ) ) || null;\n\n\t\tthat.element.animate(\n\t\t\t$.extend( style, top && left ? { top: top, left: left } : {} ), {\n\t\t\t\tduration: o.animateDuration,\n\t\t\t\teasing: o.animateEasing,\n\t\t\t\tstep: function() {\n\n\t\t\t\t\tvar data = {\n\t\t\t\t\t\twidth: parseFloat( that.element.css( \"width\" ) ),\n\t\t\t\t\t\theight: parseFloat( that.element.css( \"height\" ) ),\n\t\t\t\t\t\ttop: parseFloat( that.element.css( \"top\" ) ),\n\t\t\t\t\t\tleft: parseFloat( that.element.css( \"left\" ) )\n\t\t\t\t\t};\n\n\t\t\t\t\tif ( pr && pr.length ) {\n\t\t\t\t\t\t$( pr[ 0 ] ).css( { width: data.width, height: data.height } );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Propagating resize, and updating values for each animation step\n\t\t\t\t\tthat._updateCache( data );\n\t\t\t\t\tthat._propagate( \"resize\", event );\n\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\n} );\n\n$.ui.plugin.add( \"resizable\", \"containment\", {\n\n\tstart: function() {\n\t\tvar element, p, co, ch, cw, width, height,\n\t\t\tthat = $( this ).resizable( \"instance\" ),\n\t\t\to = that.options,\n\t\t\tel = that.element,\n\t\t\toc = o.containment,\n\t\t\tce = ( oc instanceof $ ) ?\n\t\t\t\toc.get( 0 ) :\n\t\t\t\t( /parent/.test( oc ) ) ? el.parent().get( 0 ) : oc;\n\n\t\tif ( !ce ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthat.containerElement = $( ce );\n\n\t\tif ( /document/.test( oc ) || oc === document ) {\n\t\t\tthat.containerOffset = {\n\t\t\t\tleft: 0,\n\t\t\t\ttop: 0\n\t\t\t};\n\t\t\tthat.containerPosition = {\n\t\t\t\tleft: 0,\n\t\t\t\ttop: 0\n\t\t\t};\n\n\t\t\tthat.parentData = {\n\t\t\t\telement: $( document ),\n\t\t\t\tleft: 0,\n\t\t\t\ttop: 0,\n\t\t\t\twidth: $( document ).width(),\n\t\t\t\theight: $( document ).height() || document.body.parentNode.scrollHeight\n\t\t\t};\n\t\t} else {\n\t\t\telement = $( ce );\n\t\t\tp = [];\n\t\t\t$( [ \"Top\", \"Right\", \"Left\", \"Bottom\" ] ).each( function( i, name ) {\n\t\t\t\tp[ i ] = that._num( element.css( \"padding\" + name ) );\n\t\t\t} );\n\n\t\t\tthat.containerOffset = element.offset();\n\t\t\tthat.containerPosition = element.position();\n\t\t\tthat.containerSize = {\n\t\t\t\theight: ( element.innerHeight() - p[ 3 ] ),\n\t\t\t\twidth: ( element.innerWidth() - p[ 1 ] )\n\t\t\t};\n\n\t\t\tco = that.containerOffset;\n\t\t\tch = that.containerSize.height;\n\t\t\tcw = that.containerSize.width;\n\t\t\twidth = ( that._hasScroll ( ce, \"left\" ) ? ce.scrollWidth : cw );\n\t\t\theight = ( that._hasScroll ( ce ) ? ce.scrollHeight : ch ) ;\n\n\t\t\tthat.parentData = {\n\t\t\t\telement: ce,\n\t\t\t\tleft: co.left,\n\t\t\t\ttop: co.top,\n\t\t\t\twidth: width,\n\t\t\t\theight: height\n\t\t\t};\n\t\t}\n\t},\n\n\tresize: function( event ) {\n\t\tvar woset, hoset, isParent, isOffsetRelative,\n\t\t\tthat = $( this ).resizable( \"instance\" ),\n\t\t\to = that.options,\n\t\t\tco = that.containerOffset,\n\t\t\tcp = that.position,\n\t\t\tpRatio = that._aspectRatio || event.shiftKey,\n\t\t\tcop = {\n\t\t\t\ttop: 0,\n\t\t\t\tleft: 0\n\t\t\t},\n\t\t\tce = that.containerElement,\n\t\t\tcontinueResize = true;\n\n\t\tif ( ce[ 0 ] !== document && ( /static/ ).test( ce.css( \"position\" ) ) ) {\n\t\t\tcop = co;\n\t\t}\n\n\t\tif ( cp.left < ( that._helper ? co.left : 0 ) ) {\n\t\t\tthat.size.width = that.size.width +\n\t\t\t\t( that._helper ?\n\t\t\t\t\t( that.position.left - co.left ) :\n\t\t\t\t\t( that.position.left - cop.left ) );\n\n\t\t\tif ( pRatio ) {\n\t\t\t\tthat.size.height = that.size.width / that.aspectRatio;\n\t\t\t\tcontinueResize = false;\n\t\t\t}\n\t\t\tthat.position.left = o.helper ? co.left : 0;\n\t\t}\n\n\t\tif ( cp.top < ( that._helper ? co.top : 0 ) ) {\n\t\t\tthat.size.height = that.size.height +\n\t\t\t\t( that._helper ?\n\t\t\t\t\t( that.position.top - co.top ) :\n\t\t\t\t\tthat.position.top );\n\n\t\t\tif ( pRatio ) {\n\t\t\t\tthat.size.width = that.size.height * that.aspectRatio;\n\t\t\t\tcontinueResize = false;\n\t\t\t}\n\t\t\tthat.position.top = that._helper ? co.top : 0;\n\t\t}\n\n\t\tisParent = that.containerElement.get( 0 ) === that.element.parent().get( 0 );\n\t\tisOffsetRelative = /relative|absolute/.test( that.containerElement.css( \"position\" ) );\n\n\t\tif ( isParent && isOffsetRelative ) {\n\t\t\tthat.offset.left = that.parentData.left + that.position.left;\n\t\t\tthat.offset.top = that.parentData.top + that.position.top;\n\t\t} else {\n\t\t\tthat.offset.left = that.element.offset().left;\n\t\t\tthat.offset.top = that.element.offset().top;\n\t\t}\n\n\t\twoset = Math.abs( that.sizeDiff.width +\n\t\t\t( that._helper ?\n\t\t\t\tthat.offset.left - cop.left :\n\t\t\t\t( that.offset.left - co.left ) ) );\n\n\t\thoset = Math.abs( that.sizeDiff.height +\n\t\t\t( that._helper ?\n\t\t\t\tthat.offset.top - cop.top :\n\t\t\t\t( that.offset.top - co.top ) ) );\n\n\t\tif ( woset + that.size.width >= that.parentData.width ) {\n\t\t\tthat.size.width = that.parentData.width - woset;\n\t\t\tif ( pRatio ) {\n\t\t\t\tthat.size.height = that.size.width / that.aspectRatio;\n\t\t\t\tcontinueResize = false;\n\t\t\t}\n\t\t}\n\n\t\tif ( hoset + that.size.height >= that.parentData.height ) {\n\t\t\tthat.size.height = that.parentData.height - hoset;\n\t\t\tif ( pRatio ) {\n\t\t\t\tthat.size.width = that.size.height * that.aspectRatio;\n\t\t\t\tcontinueResize = false;\n\t\t\t}\n\t\t}\n\n\t\tif ( !continueResize ) {\n\t\t\tthat.position.left = that.prevPosition.left;\n\t\t\tthat.position.top = that.prevPosition.top;\n\t\t\tthat.size.width = that.prevSize.width;\n\t\t\tthat.size.height = that.prevSize.height;\n\t\t}\n\t},\n\n\tstop: function() {\n\t\tvar that = $( this ).resizable( \"instance\" ),\n\t\t\to = that.options,\n\t\t\tco = that.containerOffset,\n\t\t\tcop = that.containerPosition,\n\t\t\tce = that.containerElement,\n\t\t\thelper = $( that.helper ),\n\t\t\tho = helper.offset(),\n\t\t\tw = helper.outerWidth() - that.sizeDiff.width,\n\t\t\th = helper.outerHeight() - that.sizeDiff.height;\n\n\t\tif ( that._helper && !o.animate && ( /relative/ ).test( ce.css( \"position\" ) ) ) {\n\t\t\t$( this ).css( {\n\t\t\t\tleft: ho.left - cop.left - co.left,\n\t\t\t\twidth: w,\n\t\t\t\theight: h\n\t\t\t} );\n\t\t}\n\n\t\tif ( that._helper && !o.animate && ( /static/ ).test( ce.css( \"position\" ) ) ) {\n\t\t\t$( this ).css( {\n\t\t\t\tleft: ho.left - cop.left - co.left,\n\t\t\t\twidth: w,\n\t\t\t\theight: h\n\t\t\t} );\n\t\t}\n\t}\n} );\n\n$.ui.plugin.add( \"resizable\", \"alsoResize\", {\n\n\tstart: function() {\n\t\tvar that = $( this ).resizable( \"instance\" ),\n\t\t\to = that.options;\n\n\t\t$( o.alsoResize ).each( function() {\n\t\t\tvar el = $( this );\n\t\t\tel.data( \"ui-resizable-alsoresize\", {\n\t\t\t\twidth: parseFloat( el.width() ), height: parseFloat( el.height() ),\n\t\t\t\tleft: parseFloat( el.css( \"left\" ) ), top: parseFloat( el.css( \"top\" ) )\n\t\t\t} );\n\t\t} );\n\t},\n\n\tresize: function( event, ui ) {\n\t\tvar that = $( this ).resizable( \"instance\" ),\n\t\t\to = that.options,\n\t\t\tos = that.originalSize,\n\t\t\top = that.originalPosition,\n\t\t\tdelta = {\n\t\t\t\theight: ( that.size.height - os.height ) || 0,\n\t\t\t\twidth: ( that.size.width - os.width ) || 0,\n\t\t\t\ttop: ( that.position.top - op.top ) || 0,\n\t\t\t\tleft: ( that.position.left - op.left ) || 0\n\t\t\t};\n\n\t\t\t$( o.alsoResize ).each( function() {\n\t\t\t\tvar el = $( this ), start = $( this ).data( \"ui-resizable-alsoresize\" ), style = {},\n\t\t\t\t\tcss = el.parents( ui.originalElement[ 0 ] ).length ?\n\t\t\t\t\t\t\t[ \"width\", \"height\" ] :\n\t\t\t\t\t\t\t[ \"width\", \"height\", \"top\", \"left\" ];\n\n\t\t\t\t$.each( css, function( i, prop ) {\n\t\t\t\t\tvar sum = ( start[ prop ] || 0 ) + ( delta[ prop ] || 0 );\n\t\t\t\t\tif ( sum && sum >= 0 ) {\n\t\t\t\t\t\tstyle[ prop ] = sum || null;\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\tel.css( style );\n\t\t\t} );\n\t},\n\n\tstop: function() {\n\t\t$( this ).removeData( \"ui-resizable-alsoresize\" );\n\t}\n} );\n\n$.ui.plugin.add( \"resizable\", \"ghost\", {\n\n\tstart: function() {\n\n\t\tvar that = $( this ).resizable( \"instance\" ), cs = that.size;\n\n\t\tthat.ghost = that.originalElement.clone();\n\t\tthat.ghost.css( {\n\t\t\topacity: 0.25,\n\t\t\tdisplay: \"block\",\n\t\t\tposition: \"relative\",\n\t\t\theight: cs.height,\n\t\t\twidth: cs.width,\n\t\t\tmargin: 0,\n\t\t\tleft: 0,\n\t\t\ttop: 0\n\t\t} );\n\n\t\tthat._addClass( that.ghost, \"ui-resizable-ghost\" );\n\n\t\t// DEPRECATED\n\t\t// TODO: remove after 1.12\n\t\tif ( $.uiBackCompat !== false && typeof that.options.ghost === \"string\" ) {\n\n\t\t\t// Ghost option\n\t\t\tthat.ghost.addClass( this.options.ghost );\n\t\t}\n\n\t\tthat.ghost.appendTo( that.helper );\n\n\t},\n\n\tresize: function() {\n\t\tvar that = $( this ).resizable( \"instance\" );\n\t\tif ( that.ghost ) {\n\t\t\tthat.ghost.css( {\n\t\t\t\tposition: \"relative\",\n\t\t\t\theight: that.size.height,\n\t\t\t\twidth: that.size.width\n\t\t\t} );\n\t\t}\n\t},\n\n\tstop: function() {\n\t\tvar that = $( this ).resizable( \"instance\" );\n\t\tif ( that.ghost && that.helper ) {\n\t\t\tthat.helper.get( 0 ).removeChild( that.ghost.get( 0 ) );\n\t\t}\n\t}\n\n} );\n\n$.ui.plugin.add( \"resizable\", \"grid\", {\n\n\tresize: function() {\n\t\tvar outerDimensions,\n\t\t\tthat = $( this ).resizable( \"instance\" ),\n\t\t\to = that.options,\n\t\t\tcs = that.size,\n\t\t\tos = that.originalSize,\n\t\t\top = that.originalPosition,\n\t\t\ta = that.axis,\n\t\t\tgrid = typeof o.grid === \"number\" ? [ o.grid, o.grid ] : o.grid,\n\t\t\tgridX = ( grid[ 0 ] || 1 ),\n\t\t\tgridY = ( grid[ 1 ] || 1 ),\n\t\t\tox = Math.round( ( cs.width - os.width ) / gridX ) * gridX,\n\t\t\toy = Math.round( ( cs.height - os.height ) / gridY ) * gridY,\n\t\t\tnewWidth = os.width + ox,\n\t\t\tnewHeight = os.height + oy,\n\t\t\tisMaxWidth = o.maxWidth && ( o.maxWidth < newWidth ),\n\t\t\tisMaxHeight = o.maxHeight && ( o.maxHeight < newHeight ),\n\t\t\tisMinWidth = o.minWidth && ( o.minWidth > newWidth ),\n\t\t\tisMinHeight = o.minHeight && ( o.minHeight > newHeight );\n\n\t\to.grid = grid;\n\n\t\tif ( isMinWidth ) {\n\t\t\tnewWidth += gridX;\n\t\t}\n\t\tif ( isMinHeight ) {\n\t\t\tnewHeight += gridY;\n\t\t}\n\t\tif ( isMaxWidth ) {\n\t\t\tnewWidth -= gridX;\n\t\t}\n\t\tif ( isMaxHeight ) {\n\t\t\tnewHeight -= gridY;\n\t\t}\n\n\t\tif ( /^(se|s|e)$/.test( a ) ) {\n\t\t\tthat.size.width = newWidth;\n\t\t\tthat.size.height = newHeight;\n\t\t} else if ( /^(ne)$/.test( a ) ) {\n\t\t\tthat.size.width = newWidth;\n\t\t\tthat.size.height = newHeight;\n\t\t\tthat.position.top = op.top - oy;\n\t\t} else if ( /^(sw)$/.test( a ) ) {\n\t\t\tthat.size.width = newWidth;\n\t\t\tthat.size.height = newHeight;\n\t\t\tthat.position.left = op.left - ox;\n\t\t} else {\n\t\t\tif ( newHeight - gridY <= 0 || newWidth - gridX <= 0 ) {\n\t\t\t\touterDimensions = that._getPaddingPlusBorderDimensions( this );\n\t\t\t}\n\n\t\t\tif ( newHeight - gridY > 0 ) {\n\t\t\t\tthat.size.height = newHeight;\n\t\t\t\tthat.position.top = op.top - oy;\n\t\t\t} else {\n\t\t\t\tnewHeight = gridY - outerDimensions.height;\n\t\t\t\tthat.size.height = newHeight;\n\t\t\t\tthat.position.top = op.top + os.height - newHeight;\n\t\t\t}\n\t\t\tif ( newWidth - gridX > 0 ) {\n\t\t\t\tthat.size.width = newWidth;\n\t\t\t\tthat.position.left = op.left - ox;\n\t\t\t} else {\n\t\t\t\tnewWidth = gridX - outerDimensions.width;\n\t\t\t\tthat.size.width = newWidth;\n\t\t\t\tthat.position.left = op.left + os.width - newWidth;\n\t\t\t}\n\t\t}\n\t}\n\n} );\n\nvar widgetsResizable = $.ui.resizable;\n\n\n/*!\n * jQuery UI Dialog 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Dialog\n//>>group: Widgets\n//>>description: Displays customizable dialog windows.\n//>>docs: http://api.jqueryui.com/dialog/\n//>>demos: http://jqueryui.com/dialog/\n//>>css.structure: ../../themes/base/core.css\n//>>css.structure: ../../themes/base/dialog.css\n//>>css.theme: ../../themes/base/theme.css\n\n\n\n$.widget( \"ui.dialog\", {\n\tversion: \"1.12.1\",\n\toptions: {\n\t\tappendTo: \"body\",\n\t\tautoOpen: true,\n\t\tbuttons: [],\n\t\tclasses: {\n\t\t\t\"ui-dialog\": \"ui-corner-all\",\n\t\t\t\"ui-dialog-titlebar\": \"ui-corner-all\"\n\t\t},\n\t\tcloseOnEscape: true,\n\t\tcloseText: \"Close\",\n\t\tdraggable: true,\n\t\thide: null,\n\t\theight: \"auto\",\n\t\tmaxHeight: null,\n\t\tmaxWidth: null,\n\t\tminHeight: 150,\n\t\tminWidth: 150,\n\t\tmodal: false,\n\t\tposition: {\n\t\t\tmy: \"center\",\n\t\t\tat: \"center\",\n\t\t\tof: window,\n\t\t\tcollision: \"fit\",\n\n\t\t\t// Ensure the titlebar is always visible\n\t\t\tusing: function( pos ) {\n\t\t\t\tvar topOffset = $( this ).css( pos ).offset().top;\n\t\t\t\tif ( topOffset < 0 ) {\n\t\t\t\t\t$( this ).css( \"top\", pos.top - topOffset );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tresizable: true,\n\t\tshow: null,\n\t\ttitle: null,\n\t\twidth: 300,\n\n\t\t// Callbacks\n\t\tbeforeClose: null,\n\t\tclose: null,\n\t\tdrag: null,\n\t\tdragStart: null,\n\t\tdragStop: null,\n\t\tfocus: null,\n\t\topen: null,\n\t\tresize: null,\n\t\tresizeStart: null,\n\t\tresizeStop: null\n\t},\n\n\tsizeRelatedOptions: {\n\t\tbuttons: true,\n\t\theight: true,\n\t\tmaxHeight: true,\n\t\tmaxWidth: true,\n\t\tminHeight: true,\n\t\tminWidth: true,\n\t\twidth: true\n\t},\n\n\tresizableRelatedOptions: {\n\t\tmaxHeight: true,\n\t\tmaxWidth: true,\n\t\tminHeight: true,\n\t\tminWidth: true\n\t},\n\n\t_create: function() {\n\t\tthis.originalCss = {\n\t\t\tdisplay: this.element[ 0 ].style.display,\n\t\t\twidth: this.element[ 0 ].style.width,\n\t\t\tminHeight: this.element[ 0 ].style.minHeight,\n\t\t\tmaxHeight: this.element[ 0 ].style.maxHeight,\n\t\t\theight: this.element[ 0 ].style.height\n\t\t};\n\t\tthis.originalPosition = {\n\t\t\tparent: this.element.parent(),\n\t\t\tindex: this.element.parent().children().index( this.element )\n\t\t};\n\t\tthis.originalTitle = this.element.attr( \"title\" );\n\t\tif ( this.options.title == null && this.originalTitle != null ) {\n\t\t\tthis.options.title = this.originalTitle;\n\t\t}\n\n\t\t// Dialogs can't be disabled\n\t\tif ( this.options.disabled ) {\n\t\t\tthis.options.disabled = false;\n\t\t}\n\n\t\tthis._createWrapper();\n\n\t\tthis.element\n\t\t\t.show()\n\t\t\t.removeAttr( \"title\" )\n\t\t\t.appendTo( this.uiDialog );\n\n\t\tthis._addClass( \"ui-dialog-content\", \"ui-widget-content\" );\n\n\t\tthis._createTitlebar();\n\t\tthis._createButtonPane();\n\n\t\tif ( this.options.draggable && $.fn.draggable ) {\n\t\t\tthis._makeDraggable();\n\t\t}\n\t\tif ( this.options.resizable && $.fn.resizable ) {\n\t\t\tthis._makeResizable();\n\t\t}\n\n\t\tthis._isOpen = false;\n\n\t\tthis._trackFocus();\n\t},\n\n\t_init: function() {\n\t\tif ( this.options.autoOpen ) {\n\t\t\tthis.open();\n\t\t}\n\t},\n\n\t_appendTo: function() {\n\t\tvar element = this.options.appendTo;\n\t\tif ( element && ( element.jquery || element.nodeType ) ) {\n\t\t\treturn $( element );\n\t\t}\n\t\treturn this.document.find( element || \"body\" ).eq( 0 );\n\t},\n\n\t_destroy: function() {\n\t\tvar next,\n\t\t\toriginalPosition = this.originalPosition;\n\n\t\tthis._untrackInstance();\n\t\tthis._destroyOverlay();\n\n\t\tthis.element\n\t\t\t.removeUniqueId()\n\t\t\t.css( this.originalCss )\n\n\t\t\t// Without detaching first, the following becomes really slow\n\t\t\t.detach();\n\n\t\tthis.uiDialog.remove();\n\n\t\tif ( this.originalTitle ) {\n\t\t\tthis.element.attr( \"title\", this.originalTitle );\n\t\t}\n\n\t\tnext = originalPosition.parent.children().eq( originalPosition.index );\n\n\t\t// Don't try to place the dialog next to itself (#8613)\n\t\tif ( next.length && next[ 0 ] !== this.element[ 0 ] ) {\n\t\t\tnext.before( this.element );\n\t\t} else {\n\t\t\toriginalPosition.parent.append( this.element );\n\t\t}\n\t},\n\n\twidget: function() {\n\t\treturn this.uiDialog;\n\t},\n\n\tdisable: $.noop,\n\tenable: $.noop,\n\n\tclose: function( event ) {\n\t\tvar that = this;\n\n\t\tif ( !this._isOpen || this._trigger( \"beforeClose\", event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._isOpen = false;\n\t\tthis._focusedElement = null;\n\t\tthis._destroyOverlay();\n\t\tthis._untrackInstance();\n\n\t\tif ( !this.opener.filter( \":focusable\" ).trigger( \"focus\" ).length ) {\n\n\t\t\t// Hiding a focused element doesn't trigger blur in WebKit\n\t\t\t// so in case we have nothing to focus on, explicitly blur the active element\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=47182\n\t\t\t$.ui.safeBlur( $.ui.safeActiveElement( this.document[ 0 ] ) );\n\t\t}\n\n\t\tthis._hide( this.uiDialog, this.options.hide, function() {\n\t\t\tthat._trigger( \"close\", event );\n\t\t} );\n\t},\n\n\tisOpen: function() {\n\t\treturn this._isOpen;\n\t},\n\n\tmoveToTop: function() {\n\t\tthis._moveToTop();\n\t},\n\n\t_moveToTop: function( event, silent ) {\n\t\tvar moved = false,\n\t\t\tzIndices = this.uiDialog.siblings( \".ui-front:visible\" ).map( function() {\n\t\t\t\treturn +$( this ).css( \"z-index\" );\n\t\t\t} ).get(),\n\t\t\tzIndexMax = Math.max.apply( null, zIndices );\n\n\t\tif ( zIndexMax >= +this.uiDialog.css( \"z-index\" ) ) {\n\t\t\tthis.uiDialog.css( \"z-index\", zIndexMax + 1 );\n\t\t\tmoved = true;\n\t\t}\n\n\t\tif ( moved && !silent ) {\n\t\t\tthis._trigger( \"focus\", event );\n\t\t}\n\t\treturn moved;\n\t},\n\n\topen: function() {\n\t\tvar that = this;\n\t\tif ( this._isOpen ) {\n\t\t\tif ( this._moveToTop() ) {\n\t\t\t\tthis._focusTabbable();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tthis._isOpen = true;\n\t\tthis.opener = $( $.ui.safeActiveElement( this.document[ 0 ] ) );\n\n\t\tthis._size();\n\t\tthis._position();\n\t\tthis._createOverlay();\n\t\tthis._moveToTop( null, true );\n\n\t\t// Ensure the overlay is moved to the top with the dialog, but only when\n\t\t// opening. The overlay shouldn't move after the dialog is open so that\n\t\t// modeless dialogs opened after the modal dialog stack properly.\n\t\tif ( this.overlay ) {\n\t\t\tthis.overlay.css( \"z-index\", this.uiDialog.css( \"z-index\" ) - 1 );\n\t\t}\n\n\t\tthis._show( this.uiDialog, this.options.show, function() {\n\t\t\tthat._focusTabbable();\n\t\t\tthat._trigger( \"focus\" );\n\t\t} );\n\n\t\t// Track the dialog immediately upon openening in case a focus event\n\t\t// somehow occurs outside of the dialog before an element inside the\n\t\t// dialog is focused (#10152)\n\t\tthis._makeFocusTarget();\n\n\t\tthis._trigger( \"open\" );\n\t},\n\n\t_focusTabbable: function() {\n\n\t\t// Set focus to the first match:\n\t\t// 1. An element that was focused previously\n\t\t// 2. First element inside the dialog matching [autofocus]\n\t\t// 3. Tabbable element inside the content element\n\t\t// 4. Tabbable element inside the buttonpane\n\t\t// 5. The close button\n\t\t// 6. The dialog itself\n\t\tvar hasFocus = this._focusedElement;\n\t\tif ( !hasFocus ) {\n\t\t\thasFocus = this.element.find( \"[autofocus]\" );\n\t\t}\n\t\tif ( !hasFocus.length ) {\n\t\t\thasFocus = this.element.find( \":tabbable\" );\n\t\t}\n\t\tif ( !hasFocus.length ) {\n\t\t\thasFocus = this.uiDialogButtonPane.find( \":tabbable\" );\n\t\t}\n\t\tif ( !hasFocus.length ) {\n\t\t\thasFocus = this.uiDialogTitlebarClose.filter( \":tabbable\" );\n\t\t}\n\t\tif ( !hasFocus.length ) {\n\t\t\thasFocus = this.uiDialog;\n\t\t}\n\t\thasFocus.eq( 0 ).trigger( \"focus\" );\n\t},\n\n\t_keepFocus: function( event ) {\n\t\tfunction checkFocus() {\n\t\t\tvar activeElement = $.ui.safeActiveElement( this.document[ 0 ] ),\n\t\t\t\tisActive = this.uiDialog[ 0 ] === activeElement ||\n\t\t\t\t\t$.contains( this.uiDialog[ 0 ], activeElement );\n\t\t\tif ( !isActive ) {\n\t\t\t\tthis._focusTabbable();\n\t\t\t}\n\t\t}\n\t\tevent.preventDefault();\n\t\tcheckFocus.call( this );\n\n\t\t// support: IE\n\t\t// IE <= 8 doesn't prevent moving focus even with event.preventDefault()\n\t\t// so we check again later\n\t\tthis._delay( checkFocus );\n\t},\n\n\t_createWrapper: function() {\n\t\tthis.uiDialog = $( \"<div>\" )\n\t\t\t.hide()\n\t\t\t.attr( {\n\n\t\t\t\t// Setting tabIndex makes the div focusable\n\t\t\t\ttabIndex: -1,\n\t\t\t\trole: \"dialog\"\n\t\t\t} )\n\t\t\t.appendTo( this._appendTo() );\n\n\t\tthis._addClass( this.uiDialog, \"ui-dialog\", \"ui-widget ui-widget-content ui-front\" );\n\t\tthis._on( this.uiDialog, {\n\t\t\tkeydown: function( event ) {\n\t\t\t\tif ( this.options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode &&\n\t\t\t\t\t\tevent.keyCode === $.ui.keyCode.ESCAPE ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tthis.close( event );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Prevent tabbing out of dialogs\n\t\t\t\tif ( event.keyCode !== $.ui.keyCode.TAB || event.isDefaultPrevented() ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tvar tabbables = this.uiDialog.find( \":tabbable\" ),\n\t\t\t\t\tfirst = tabbables.filter( \":first\" ),\n\t\t\t\t\tlast = tabbables.filter( \":last\" );\n\n\t\t\t\tif ( ( event.target === last[ 0 ] || event.target === this.uiDialog[ 0 ] ) &&\n\t\t\t\t\t\t!event.shiftKey ) {\n\t\t\t\t\tthis._delay( function() {\n\t\t\t\t\t\tfirst.trigger( \"focus\" );\n\t\t\t\t\t} );\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t} else if ( ( event.target === first[ 0 ] ||\n\t\t\t\t\t\tevent.target === this.uiDialog[ 0 ] ) && event.shiftKey ) {\n\t\t\t\t\tthis._delay( function() {\n\t\t\t\t\t\tlast.trigger( \"focus\" );\n\t\t\t\t\t} );\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t},\n\t\t\tmousedown: function( event ) {\n\t\t\t\tif ( this._moveToTop( event ) ) {\n\t\t\t\t\tthis._focusTabbable();\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\t// We assume that any existing aria-describedby attribute means\n\t\t// that the dialog content is marked up properly\n\t\t// otherwise we brute force the content as the description\n\t\tif ( !this.element.find( \"[aria-describedby]\" ).length ) {\n\t\t\tthis.uiDialog.attr( {\n\t\t\t\t\"aria-describedby\": this.element.uniqueId().attr( \"id\" )\n\t\t\t} );\n\t\t}\n\t},\n\n\t_createTitlebar: function() {\n\t\tvar uiDialogTitle;\n\n\t\tthis.uiDialogTitlebar = $( \"<div>\" );\n\t\tthis._addClass( this.uiDialogTitlebar,\n\t\t\t\"ui-dialog-titlebar\", \"ui-widget-header ui-helper-clearfix\" );\n\t\tthis._on( this.uiDialogTitlebar, {\n\t\t\tmousedown: function( event ) {\n\n\t\t\t\t// Don't prevent click on close button (#8838)\n\t\t\t\t// Focusing a dialog that is partially scrolled out of view\n\t\t\t\t// causes the browser to scroll it into view, preventing the click event\n\t\t\t\tif ( !$( event.target ).closest( \".ui-dialog-titlebar-close\" ) ) {\n\n\t\t\t\t\t// Dialog isn't getting focus when dragging (#8063)\n\t\t\t\t\tthis.uiDialog.trigger( \"focus\" );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\t// Support: IE\n\t\t// Use type=\"button\" to prevent enter keypresses in textboxes from closing the\n\t\t// dialog in IE (#9312)\n\t\tthis.uiDialogTitlebarClose = $( \"<button type='button'></button>\" )\n\t\t\t.button( {\n\t\t\t\tlabel: $( \"<a>\" ).text( this.options.closeText ).html(),\n\t\t\t\ticon: \"ui-icon-closethick\",\n\t\t\t\tshowLabel: false\n\t\t\t} )\n\t\t\t.appendTo( this.uiDialogTitlebar );\n\n\t\tthis._addClass( this.uiDialogTitlebarClose, \"ui-dialog-titlebar-close\" );\n\t\tthis._on( this.uiDialogTitlebarClose, {\n\t\t\tclick: function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tthis.close( event );\n\t\t\t}\n\t\t} );\n\n\t\tuiDialogTitle = $( \"<span>\" ).uniqueId().prependTo( this.uiDialogTitlebar );\n\t\tthis._addClass( uiDialogTitle, \"ui-dialog-title\" );\n\t\tthis._title( uiDialogTitle );\n\n\t\tthis.uiDialogTitlebar.prependTo( this.uiDialog );\n\n\t\tthis.uiDialog.attr( {\n\t\t\t\"aria-labelledby\": uiDialogTitle.attr( \"id\" )\n\t\t} );\n\t},\n\n\t_title: function( title ) {\n\t\tif ( this.options.title ) {\n\t\t\ttitle.text( this.options.title );\n\t\t} else {\n\t\t\ttitle.html( \"&#160;\" );\n\t\t}\n\t},\n\n\t_createButtonPane: function() {\n\t\tthis.uiDialogButtonPane = $( \"<div>\" );\n\t\tthis._addClass( this.uiDialogButtonPane, \"ui-dialog-buttonpane\",\n\t\t\t\"ui-widget-content ui-helper-clearfix\" );\n\n\t\tthis.uiButtonSet = $( \"<div>\" )\n\t\t\t.appendTo( this.uiDialogButtonPane );\n\t\tthis._addClass( this.uiButtonSet, \"ui-dialog-buttonset\" );\n\n\t\tthis._createButtons();\n\t},\n\n\t_createButtons: function() {\n\t\tvar that = this,\n\t\t\tbuttons = this.options.buttons;\n\n\t\t// If we already have a button pane, remove it\n\t\tthis.uiDialogButtonPane.remove();\n\t\tthis.uiButtonSet.empty();\n\n\t\tif ( $.isEmptyObject( buttons ) || ( $.isArray( buttons ) && !buttons.length ) ) {\n\t\t\tthis._removeClass( this.uiDialog, \"ui-dialog-buttons\" );\n\t\t\treturn;\n\t\t}\n\n\t\t$.each( buttons, function( name, props ) {\n\t\t\tvar click, buttonOptions;\n\t\t\tprops = $.isFunction( props ) ?\n\t\t\t\t{ click: props, text: name } :\n\t\t\t\tprops;\n\n\t\t\t// Default to a non-submitting button\n\t\t\tprops = $.extend( { type: \"button\" }, props );\n\n\t\t\t// Change the context for the click callback to be the main element\n\t\t\tclick = props.click;\n\t\t\tbuttonOptions = {\n\t\t\t\ticon: props.icon,\n\t\t\t\ticonPosition: props.iconPosition,\n\t\t\t\tshowLabel: props.showLabel,\n\n\t\t\t\t// Deprecated options\n\t\t\t\ticons: props.icons,\n\t\t\t\ttext: props.text\n\t\t\t};\n\n\t\t\tdelete props.click;\n\t\t\tdelete props.icon;\n\t\t\tdelete props.iconPosition;\n\t\t\tdelete props.showLabel;\n\n\t\t\t// Deprecated options\n\t\t\tdelete props.icons;\n\t\t\tif ( typeof props.text === \"boolean\" ) {\n\t\t\t\tdelete props.text;\n\t\t\t}\n\n\t\t\t$( \"<button></button>\", props )\n\t\t\t\t.button( buttonOptions )\n\t\t\t\t.appendTo( that.uiButtonSet )\n\t\t\t\t.on( \"click\", function() {\n\t\t\t\t\tclick.apply( that.element[ 0 ], arguments );\n\t\t\t\t} );\n\t\t} );\n\t\tthis._addClass( this.uiDialog, \"ui-dialog-buttons\" );\n\t\tthis.uiDialogButtonPane.appendTo( this.uiDialog );\n\t},\n\n\t_makeDraggable: function() {\n\t\tvar that = this,\n\t\t\toptions = this.options;\n\n\t\tfunction filteredUi( ui ) {\n\t\t\treturn {\n\t\t\t\tposition: ui.position,\n\t\t\t\toffset: ui.offset\n\t\t\t};\n\t\t}\n\n\t\tthis.uiDialog.draggable( {\n\t\t\tcancel: \".ui-dialog-content, .ui-dialog-titlebar-close\",\n\t\t\thandle: \".ui-dialog-titlebar\",\n\t\t\tcontainment: \"document\",\n\t\t\tstart: function( event, ui ) {\n\t\t\t\tthat._addClass( $( this ), \"ui-dialog-dragging\" );\n\t\t\t\tthat._blockFrames();\n\t\t\t\tthat._trigger( \"dragStart\", event, filteredUi( ui ) );\n\t\t\t},\n\t\t\tdrag: function( event, ui ) {\n\t\t\t\tthat._trigger( \"drag\", event, filteredUi( ui ) );\n\t\t\t},\n\t\t\tstop: function( event, ui ) {\n\t\t\t\tvar left = ui.offset.left - that.document.scrollLeft(),\n\t\t\t\t\ttop = ui.offset.top - that.document.scrollTop();\n\n\t\t\t\toptions.position = {\n\t\t\t\t\tmy: \"left top\",\n\t\t\t\t\tat: \"left\" + ( left >= 0 ? \"+\" : \"\" ) + left + \" \" +\n\t\t\t\t\t\t\"top\" + ( top >= 0 ? \"+\" : \"\" ) + top,\n\t\t\t\t\tof: that.window\n\t\t\t\t};\n\t\t\t\tthat._removeClass( $( this ), \"ui-dialog-dragging\" );\n\t\t\t\tthat._unblockFrames();\n\t\t\t\tthat._trigger( \"dragStop\", event, filteredUi( ui ) );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_makeResizable: function() {\n\t\tvar that = this,\n\t\t\toptions = this.options,\n\t\t\thandles = options.resizable,\n\n\t\t\t// .ui-resizable has position: relative defined in the stylesheet\n\t\t\t// but dialogs have to use absolute or fixed positioning\n\t\t\tposition = this.uiDialog.css( \"position\" ),\n\t\t\tresizeHandles = typeof handles === \"string\" ?\n\t\t\t\thandles :\n\t\t\t\t\"n,e,s,w,se,sw,ne,nw\";\n\n\t\tfunction filteredUi( ui ) {\n\t\t\treturn {\n\t\t\t\toriginalPosition: ui.originalPosition,\n\t\t\t\toriginalSize: ui.originalSize,\n\t\t\t\tposition: ui.position,\n\t\t\t\tsize: ui.size\n\t\t\t};\n\t\t}\n\n\t\tthis.uiDialog.resizable( {\n\t\t\tcancel: \".ui-dialog-content\",\n\t\t\tcontainment: \"document\",\n\t\t\talsoResize: this.element,\n\t\t\tmaxWidth: options.maxWidth,\n\t\t\tmaxHeight: options.maxHeight,\n\t\t\tminWidth: options.minWidth,\n\t\t\tminHeight: this._minHeight(),\n\t\t\thandles: resizeHandles,\n\t\t\tstart: function( event, ui ) {\n\t\t\t\tthat._addClass( $( this ), \"ui-dialog-resizing\" );\n\t\t\t\tthat._blockFrames();\n\t\t\t\tthat._trigger( \"resizeStart\", event, filteredUi( ui ) );\n\t\t\t},\n\t\t\tresize: function( event, ui ) {\n\t\t\t\tthat._trigger( \"resize\", event, filteredUi( ui ) );\n\t\t\t},\n\t\t\tstop: function( event, ui ) {\n\t\t\t\tvar offset = that.uiDialog.offset(),\n\t\t\t\t\tleft = offset.left - that.document.scrollLeft(),\n\t\t\t\t\ttop = offset.top - that.document.scrollTop();\n\n\t\t\t\toptions.height = that.uiDialog.height();\n\t\t\t\toptions.width = that.uiDialog.width();\n\t\t\t\toptions.position = {\n\t\t\t\t\tmy: \"left top\",\n\t\t\t\t\tat: \"left\" + ( left >= 0 ? \"+\" : \"\" ) + left + \" \" +\n\t\t\t\t\t\t\"top\" + ( top >= 0 ? \"+\" : \"\" ) + top,\n\t\t\t\t\tof: that.window\n\t\t\t\t};\n\t\t\t\tthat._removeClass( $( this ), \"ui-dialog-resizing\" );\n\t\t\t\tthat._unblockFrames();\n\t\t\t\tthat._trigger( \"resizeStop\", event, filteredUi( ui ) );\n\t\t\t}\n\t\t} )\n\t\t\t.css( \"position\", position );\n\t},\n\n\t_trackFocus: function() {\n\t\tthis._on( this.widget(), {\n\t\t\tfocusin: function( event ) {\n\t\t\t\tthis._makeFocusTarget();\n\t\t\t\tthis._focusedElement = $( event.target );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_makeFocusTarget: function() {\n\t\tthis._untrackInstance();\n\t\tthis._trackingInstances().unshift( this );\n\t},\n\n\t_untrackInstance: function() {\n\t\tvar instances = this._trackingInstances(),\n\t\t\texists = $.inArray( this, instances );\n\t\tif ( exists !== -1 ) {\n\t\t\tinstances.splice( exists, 1 );\n\t\t}\n\t},\n\n\t_trackingInstances: function() {\n\t\tvar instances = this.document.data( \"ui-dialog-instances\" );\n\t\tif ( !instances ) {\n\t\t\tinstances = [];\n\t\t\tthis.document.data( \"ui-dialog-instances\", instances );\n\t\t}\n\t\treturn instances;\n\t},\n\n\t_minHeight: function() {\n\t\tvar options = this.options;\n\n\t\treturn options.height === \"auto\" ?\n\t\t\toptions.minHeight :\n\t\t\tMath.min( options.minHeight, options.height );\n\t},\n\n\t_position: function() {\n\n\t\t// Need to show the dialog to get the actual offset in the position plugin\n\t\tvar isVisible = this.uiDialog.is( \":visible\" );\n\t\tif ( !isVisible ) {\n\t\t\tthis.uiDialog.show();\n\t\t}\n\t\tthis.uiDialog.position( this.options.position );\n\t\tif ( !isVisible ) {\n\t\t\tthis.uiDialog.hide();\n\t\t}\n\t},\n\n\t_setOptions: function( options ) {\n\t\tvar that = this,\n\t\t\tresize = false,\n\t\t\tresizableOptions = {};\n\n\t\t$.each( options, function( key, value ) {\n\t\t\tthat._setOption( key, value );\n\n\t\t\tif ( key in that.sizeRelatedOptions ) {\n\t\t\t\tresize = true;\n\t\t\t}\n\t\t\tif ( key in that.resizableRelatedOptions ) {\n\t\t\t\tresizableOptions[ key ] = value;\n\t\t\t}\n\t\t} );\n\n\t\tif ( resize ) {\n\t\t\tthis._size();\n\t\t\tthis._position();\n\t\t}\n\t\tif ( this.uiDialog.is( \":data(ui-resizable)\" ) ) {\n\t\t\tthis.uiDialog.resizable( \"option\", resizableOptions );\n\t\t}\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tvar isDraggable, isResizable,\n\t\t\tuiDialog = this.uiDialog;\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._super( key, value );\n\n\t\tif ( key === \"appendTo\" ) {\n\t\t\tthis.uiDialog.appendTo( this._appendTo() );\n\t\t}\n\n\t\tif ( key === \"buttons\" ) {\n\t\t\tthis._createButtons();\n\t\t}\n\n\t\tif ( key === \"closeText\" ) {\n\t\t\tthis.uiDialogTitlebarClose.button( {\n\n\t\t\t\t// Ensure that we always pass a string\n\t\t\t\tlabel: $( \"<a>\" ).text( \"\" + this.options.closeText ).html()\n\t\t\t} );\n\t\t}\n\n\t\tif ( key === \"draggable\" ) {\n\t\t\tisDraggable = uiDialog.is( \":data(ui-draggable)\" );\n\t\t\tif ( isDraggable && !value ) {\n\t\t\t\tuiDialog.draggable( \"destroy\" );\n\t\t\t}\n\n\t\t\tif ( !isDraggable && value ) {\n\t\t\t\tthis._makeDraggable();\n\t\t\t}\n\t\t}\n\n\t\tif ( key === \"position\" ) {\n\t\t\tthis._position();\n\t\t}\n\n\t\tif ( key === \"resizable\" ) {\n\n\t\t\t// currently resizable, becoming non-resizable\n\t\t\tisResizable = uiDialog.is( \":data(ui-resizable)\" );\n\t\t\tif ( isResizable && !value ) {\n\t\t\t\tuiDialog.resizable( \"destroy\" );\n\t\t\t}\n\n\t\t\t// Currently resizable, changing handles\n\t\t\tif ( isResizable && typeof value === \"string\" ) {\n\t\t\t\tuiDialog.resizable( \"option\", \"handles\", value );\n\t\t\t}\n\n\t\t\t// Currently non-resizable, becoming resizable\n\t\t\tif ( !isResizable && value !== false ) {\n\t\t\t\tthis._makeResizable();\n\t\t\t}\n\t\t}\n\n\t\tif ( key === \"title\" ) {\n\t\t\tthis._title( this.uiDialogTitlebar.find( \".ui-dialog-title\" ) );\n\t\t}\n\t},\n\n\t_size: function() {\n\n\t\t// If the user has resized the dialog, the .ui-dialog and .ui-dialog-content\n\t\t// divs will both have width and height set, so we need to reset them\n\t\tvar nonContentHeight, minContentHeight, maxContentHeight,\n\t\t\toptions = this.options;\n\n\t\t// Reset content sizing\n\t\tthis.element.show().css( {\n\t\t\twidth: \"auto\",\n\t\t\tminHeight: 0,\n\t\t\tmaxHeight: \"none\",\n\t\t\theight: 0\n\t\t} );\n\n\t\tif ( options.minWidth > options.width ) {\n\t\t\toptions.width = options.minWidth;\n\t\t}\n\n\t\t// Reset wrapper sizing\n\t\t// determine the height of all the non-content elements\n\t\tnonContentHeight = this.uiDialog.css( {\n\t\t\theight: \"auto\",\n\t\t\twidth: options.width\n\t\t} )\n\t\t\t.outerHeight();\n\t\tminContentHeight = Math.max( 0, options.minHeight - nonContentHeight );\n\t\tmaxContentHeight = typeof options.maxHeight === \"number\" ?\n\t\t\tMath.max( 0, options.maxHeight - nonContentHeight ) :\n\t\t\t\"none\";\n\n\t\tif ( options.height === \"auto\" ) {\n\t\t\tthis.element.css( {\n\t\t\t\tminHeight: minContentHeight,\n\t\t\t\tmaxHeight: maxContentHeight,\n\t\t\t\theight: \"auto\"\n\t\t\t} );\n\t\t} else {\n\t\t\tthis.element.height( Math.max( 0, options.height - nonContentHeight ) );\n\t\t}\n\n\t\tif ( this.uiDialog.is( \":data(ui-resizable)\" ) ) {\n\t\t\tthis.uiDialog.resizable( \"option\", \"minHeight\", this._minHeight() );\n\t\t}\n\t},\n\n\t_blockFrames: function() {\n\t\tthis.iframeBlocks = this.document.find( \"iframe\" ).map( function() {\n\t\t\tvar iframe = $( this );\n\n\t\t\treturn $( \"<div>\" )\n\t\t\t\t.css( {\n\t\t\t\t\tposition: \"absolute\",\n\t\t\t\t\twidth: iframe.outerWidth(),\n\t\t\t\t\theight: iframe.outerHeight()\n\t\t\t\t} )\n\t\t\t\t.appendTo( iframe.parent() )\n\t\t\t\t.offset( iframe.offset() )[ 0 ];\n\t\t} );\n\t},\n\n\t_unblockFrames: function() {\n\t\tif ( this.iframeBlocks ) {\n\t\t\tthis.iframeBlocks.remove();\n\t\t\tdelete this.iframeBlocks;\n\t\t}\n\t},\n\n\t_allowInteraction: function( event ) {\n\t\tif ( $( event.target ).closest( \".ui-dialog\" ).length ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// TODO: Remove hack when datepicker implements\n\t\t// the .ui-front logic (#8989)\n\t\treturn !!$( event.target ).closest( \".ui-datepicker\" ).length;\n\t},\n\n\t_createOverlay: function() {\n\t\tif ( !this.options.modal ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// We use a delay in case the overlay is created from an\n\t\t// event that we're going to be cancelling (#2804)\n\t\tvar isOpening = true;\n\t\tthis._delay( function() {\n\t\t\tisOpening = false;\n\t\t} );\n\n\t\tif ( !this.document.data( \"ui-dialog-overlays\" ) ) {\n\n\t\t\t// Prevent use of anchors and inputs\n\t\t\t// Using _on() for an event handler shared across many instances is\n\t\t\t// safe because the dialogs stack and must be closed in reverse order\n\t\t\tthis._on( this.document, {\n\t\t\t\tfocusin: function( event ) {\n\t\t\t\t\tif ( isOpening ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !this._allowInteraction( event ) ) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tthis._trackingInstances()[ 0 ]._focusTabbable();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\tthis.overlay = $( \"<div>\" )\n\t\t\t.appendTo( this._appendTo() );\n\n\t\tthis._addClass( this.overlay, null, \"ui-widget-overlay ui-front\" );\n\t\tthis._on( this.overlay, {\n\t\t\tmousedown: \"_keepFocus\"\n\t\t} );\n\t\tthis.document.data( \"ui-dialog-overlays\",\n\t\t\t( this.document.data( \"ui-dialog-overlays\" ) || 0 ) + 1 );\n\t},\n\n\t_destroyOverlay: function() {\n\t\tif ( !this.options.modal ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( this.overlay ) {\n\t\t\tvar overlays = this.document.data( \"ui-dialog-overlays\" ) - 1;\n\n\t\t\tif ( !overlays ) {\n\t\t\t\tthis._off( this.document, \"focusin\" );\n\t\t\t\tthis.document.removeData( \"ui-dialog-overlays\" );\n\t\t\t} else {\n\t\t\t\tthis.document.data( \"ui-dialog-overlays\", overlays );\n\t\t\t}\n\n\t\t\tthis.overlay.remove();\n\t\t\tthis.overlay = null;\n\t\t}\n\t}\n} );\n\n// DEPRECATED\n// TODO: switch return back to widget declaration at top of file when this is removed\nif ( $.uiBackCompat !== false ) {\n\n\t// Backcompat for dialogClass option\n\t$.widget( \"ui.dialog\", $.ui.dialog, {\n\t\toptions: {\n\t\t\tdialogClass: \"\"\n\t\t},\n\t\t_createWrapper: function() {\n\t\t\tthis._super();\n\t\t\tthis.uiDialog.addClass( this.options.dialogClass );\n\t\t},\n\t\t_setOption: function( key, value ) {\n\t\t\tif ( key === \"dialogClass\" ) {\n\t\t\t\tthis.uiDialog\n\t\t\t\t\t.removeClass( this.options.dialogClass )\n\t\t\t\t\t.addClass( value );\n\t\t\t}\n\t\t\tthis._superApply( arguments );\n\t\t}\n\t} );\n}\n\nvar widgetsDialog = $.ui.dialog;\n\n\n/*!\n * jQuery UI Droppable 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Droppable\n//>>group: Interactions\n//>>description: Enables drop targets for draggable elements.\n//>>docs: http://api.jqueryui.com/droppable/\n//>>demos: http://jqueryui.com/droppable/\n\n\n\n$.widget( \"ui.droppable\", {\n\tversion: \"1.12.1\",\n\twidgetEventPrefix: \"drop\",\n\toptions: {\n\t\taccept: \"*\",\n\t\taddClasses: true,\n\t\tgreedy: false,\n\t\tscope: \"default\",\n\t\ttolerance: \"intersect\",\n\n\t\t// Callbacks\n\t\tactivate: null,\n\t\tdeactivate: null,\n\t\tdrop: null,\n\t\tout: null,\n\t\tover: null\n\t},\n\t_create: function() {\n\n\t\tvar proportions,\n\t\t\to = this.options,\n\t\t\taccept = o.accept;\n\n\t\tthis.isover = false;\n\t\tthis.isout = true;\n\n\t\tthis.accept = $.isFunction( accept ) ? accept : function( d ) {\n\t\t\treturn d.is( accept );\n\t\t};\n\n\t\tthis.proportions = function( /* valueToWrite */ ) {\n\t\t\tif ( arguments.length ) {\n\n\t\t\t\t// Store the droppable's proportions\n\t\t\t\tproportions = arguments[ 0 ];\n\t\t\t} else {\n\n\t\t\t\t// Retrieve or derive the droppable's proportions\n\t\t\t\treturn proportions ?\n\t\t\t\t\tproportions :\n\t\t\t\t\tproportions = {\n\t\t\t\t\t\twidth: this.element[ 0 ].offsetWidth,\n\t\t\t\t\t\theight: this.element[ 0 ].offsetHeight\n\t\t\t\t\t};\n\t\t\t}\n\t\t};\n\n\t\tthis._addToManager( o.scope );\n\n\t\to.addClasses && this._addClass( \"ui-droppable\" );\n\n\t},\n\n\t_addToManager: function( scope ) {\n\n\t\t// Add the reference and positions to the manager\n\t\t$.ui.ddmanager.droppables[ scope ] = $.ui.ddmanager.droppables[ scope ] || [];\n\t\t$.ui.ddmanager.droppables[ scope ].push( this );\n\t},\n\n\t_splice: function( drop ) {\n\t\tvar i = 0;\n\t\tfor ( ; i < drop.length; i++ ) {\n\t\t\tif ( drop[ i ] === this ) {\n\t\t\t\tdrop.splice( i, 1 );\n\t\t\t}\n\t\t}\n\t},\n\n\t_destroy: function() {\n\t\tvar drop = $.ui.ddmanager.droppables[ this.options.scope ];\n\n\t\tthis._splice( drop );\n\t},\n\n\t_setOption: function( key, value ) {\n\n\t\tif ( key === \"accept\" ) {\n\t\t\tthis.accept = $.isFunction( value ) ? value : function( d ) {\n\t\t\t\treturn d.is( value );\n\t\t\t};\n\t\t} else if ( key === \"scope\" ) {\n\t\t\tvar drop = $.ui.ddmanager.droppables[ this.options.scope ];\n\n\t\t\tthis._splice( drop );\n\t\t\tthis._addToManager( value );\n\t\t}\n\n\t\tthis._super( key, value );\n\t},\n\n\t_activate: function( event ) {\n\t\tvar draggable = $.ui.ddmanager.current;\n\n\t\tthis._addActiveClass();\n\t\tif ( draggable ) {\n\t\t\tthis._trigger( \"activate\", event, this.ui( draggable ) );\n\t\t}\n\t},\n\n\t_deactivate: function( event ) {\n\t\tvar draggable = $.ui.ddmanager.current;\n\n\t\tthis._removeActiveClass();\n\t\tif ( draggable ) {\n\t\t\tthis._trigger( \"deactivate\", event, this.ui( draggable ) );\n\t\t}\n\t},\n\n\t_over: function( event ) {\n\n\t\tvar draggable = $.ui.ddmanager.current;\n\n\t\t// Bail if draggable and droppable are same element\n\t\tif ( !draggable || ( draggable.currentItem ||\n\t\t\t\tdraggable.element )[ 0 ] === this.element[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( this.accept.call( this.element[ 0 ], ( draggable.currentItem ||\n\t\t\t\tdraggable.element ) ) ) {\n\t\t\tthis._addHoverClass();\n\t\t\tthis._trigger( \"over\", event, this.ui( draggable ) );\n\t\t}\n\n\t},\n\n\t_out: function( event ) {\n\n\t\tvar draggable = $.ui.ddmanager.current;\n\n\t\t// Bail if draggable and droppable are same element\n\t\tif ( !draggable || ( draggable.currentItem ||\n\t\t\t\tdraggable.element )[ 0 ] === this.element[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( this.accept.call( this.element[ 0 ], ( draggable.currentItem ||\n\t\t\t\tdraggable.element ) ) ) {\n\t\t\tthis._removeHoverClass();\n\t\t\tthis._trigger( \"out\", event, this.ui( draggable ) );\n\t\t}\n\n\t},\n\n\t_drop: function( event, custom ) {\n\n\t\tvar draggable = custom || $.ui.ddmanager.current,\n\t\t\tchildrenIntersection = false;\n\n\t\t// Bail if draggable and droppable are same element\n\t\tif ( !draggable || ( draggable.currentItem ||\n\t\t\t\tdraggable.element )[ 0 ] === this.element[ 0 ] ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.element\n\t\t\t.find( \":data(ui-droppable)\" )\n\t\t\t.not( \".ui-draggable-dragging\" )\n\t\t\t.each( function() {\n\t\t\t\tvar inst = $( this ).droppable( \"instance\" );\n\t\t\t\tif (\n\t\t\t\t\tinst.options.greedy &&\n\t\t\t\t\t!inst.options.disabled &&\n\t\t\t\t\tinst.options.scope === draggable.options.scope &&\n\t\t\t\t\tinst.accept.call(\n\t\t\t\t\t\tinst.element[ 0 ], ( draggable.currentItem || draggable.element )\n\t\t\t\t\t) &&\n\t\t\t\t\tintersect(\n\t\t\t\t\t\tdraggable,\n\t\t\t\t\t\t$.extend( inst, { offset: inst.element.offset() } ),\n\t\t\t\t\t\tinst.options.tolerance, event\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\tchildrenIntersection = true;\n\t\t\t\t\treturn false; }\n\t\t\t} );\n\t\tif ( childrenIntersection ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( this.accept.call( this.element[ 0 ],\n\t\t\t\t( draggable.currentItem || draggable.element ) ) ) {\n\t\t\tthis._removeActiveClass();\n\t\t\tthis._removeHoverClass();\n\n\t\t\tthis._trigger( \"drop\", event, this.ui( draggable ) );\n\t\t\treturn this.element;\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\tui: function( c ) {\n\t\treturn {\n\t\t\tdraggable: ( c.currentItem || c.element ),\n\t\t\thelper: c.helper,\n\t\t\tposition: c.position,\n\t\t\toffset: c.positionAbs\n\t\t};\n\t},\n\n\t// Extension points just to make backcompat sane and avoid duplicating logic\n\t// TODO: Remove in 1.13 along with call to it below\n\t_addHoverClass: function() {\n\t\tthis._addClass( \"ui-droppable-hover\" );\n\t},\n\n\t_removeHoverClass: function() {\n\t\tthis._removeClass( \"ui-droppable-hover\" );\n\t},\n\n\t_addActiveClass: function() {\n\t\tthis._addClass( \"ui-droppable-active\" );\n\t},\n\n\t_removeActiveClass: function() {\n\t\tthis._removeClass( \"ui-droppable-active\" );\n\t}\n} );\n\nvar intersect = $.ui.intersect = ( function() {\n\tfunction isOverAxis( x, reference, size ) {\n\t\treturn ( x >= reference ) && ( x < ( reference + size ) );\n\t}\n\n\treturn function( draggable, droppable, toleranceMode, event ) {\n\n\t\tif ( !droppable.offset ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar x1 = ( draggable.positionAbs ||\n\t\t\t\tdraggable.position.absolute ).left + draggable.margins.left,\n\t\t\ty1 = ( draggable.positionAbs ||\n\t\t\t\tdraggable.position.absolute ).top + draggable.margins.top,\n\t\t\tx2 = x1 + draggable.helperProportions.width,\n\t\t\ty2 = y1 + draggable.helperProportions.height,\n\t\t\tl = droppable.offset.left,\n\t\t\tt = droppable.offset.top,\n\t\t\tr = l + droppable.proportions().width,\n\t\t\tb = t + droppable.proportions().height;\n\n\t\tswitch ( toleranceMode ) {\n\t\tcase \"fit\":\n\t\t\treturn ( l <= x1 && x2 <= r && t <= y1 && y2 <= b );\n\t\tcase \"intersect\":\n\t\t\treturn ( l < x1 + ( draggable.helperProportions.width / 2 ) && // Right Half\n\t\t\t\tx2 - ( draggable.helperProportions.width / 2 ) < r && // Left Half\n\t\t\t\tt < y1 + ( draggable.helperProportions.height / 2 ) && // Bottom Half\n\t\t\t\ty2 - ( draggable.helperProportions.height / 2 ) < b ); // Top Half\n\t\tcase \"pointer\":\n\t\t\treturn isOverAxis( event.pageY, t, droppable.proportions().height ) &&\n\t\t\t\tisOverAxis( event.pageX, l, droppable.proportions().width );\n\t\tcase \"touch\":\n\t\t\treturn (\n\t\t\t\t( y1 >= t && y1 <= b ) || // Top edge touching\n\t\t\t\t( y2 >= t && y2 <= b ) || // Bottom edge touching\n\t\t\t\t( y1 < t && y2 > b ) // Surrounded vertically\n\t\t\t) && (\n\t\t\t\t( x1 >= l && x1 <= r ) || // Left edge touching\n\t\t\t\t( x2 >= l && x2 <= r ) || // Right edge touching\n\t\t\t\t( x1 < l && x2 > r ) // Surrounded horizontally\n\t\t\t);\n\t\tdefault:\n\t\t\treturn false;\n\t\t}\n\t};\n} )();\n\n/*\n\tThis manager tracks offsets of draggables and droppables\n*/\n$.ui.ddmanager = {\n\tcurrent: null,\n\tdroppables: { \"default\": [] },\n\tprepareOffsets: function( t, event ) {\n\n\t\tvar i, j,\n\t\t\tm = $.ui.ddmanager.droppables[ t.options.scope ] || [],\n\t\t\ttype = event ? event.type : null, // workaround for #2317\n\t\t\tlist = ( t.currentItem || t.element ).find( \":data(ui-droppable)\" ).addBack();\n\n\t\tdroppablesLoop: for ( i = 0; i < m.length; i++ ) {\n\n\t\t\t// No disabled and non-accepted\n\t\t\tif ( m[ i ].options.disabled || ( t && !m[ i ].accept.call( m[ i ].element[ 0 ],\n\t\t\t\t\t( t.currentItem || t.element ) ) ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Filter out elements in the current dragged item\n\t\t\tfor ( j = 0; j < list.length; j++ ) {\n\t\t\t\tif ( list[ j ] === m[ i ].element[ 0 ] ) {\n\t\t\t\t\tm[ i ].proportions().height = 0;\n\t\t\t\t\tcontinue droppablesLoop;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tm[ i ].visible = m[ i ].element.css( \"display\" ) !== \"none\";\n\t\t\tif ( !m[ i ].visible ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Activate the droppable if used directly from draggables\n\t\t\tif ( type === \"mousedown\" ) {\n\t\t\t\tm[ i ]._activate.call( m[ i ], event );\n\t\t\t}\n\n\t\t\tm[ i ].offset = m[ i ].element.offset();\n\t\t\tm[ i ].proportions( {\n\t\t\t\twidth: m[ i ].element[ 0 ].offsetWidth,\n\t\t\t\theight: m[ i ].element[ 0 ].offsetHeight\n\t\t\t} );\n\n\t\t}\n\n\t},\n\tdrop: function( draggable, event ) {\n\n\t\tvar dropped = false;\n\n\t\t// Create a copy of the droppables in case the list changes during the drop (#9116)\n\t\t$.each( ( $.ui.ddmanager.droppables[ draggable.options.scope ] || [] ).slice(), function() {\n\n\t\t\tif ( !this.options ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( !this.options.disabled && this.visible &&\n\t\t\t\t\tintersect( draggable, this, this.options.tolerance, event ) ) {\n\t\t\t\tdropped = this._drop.call( this, event ) || dropped;\n\t\t\t}\n\n\t\t\tif ( !this.options.disabled && this.visible && this.accept.call( this.element[ 0 ],\n\t\t\t\t\t( draggable.currentItem || draggable.element ) ) ) {\n\t\t\t\tthis.isout = true;\n\t\t\t\tthis.isover = false;\n\t\t\t\tthis._deactivate.call( this, event );\n\t\t\t}\n\n\t\t} );\n\t\treturn dropped;\n\n\t},\n\tdragStart: function( draggable, event ) {\n\n\t\t// Listen for scrolling so that if the dragging causes scrolling the position of the\n\t\t// droppables can be recalculated (see #5003)\n\t\tdraggable.element.parentsUntil( \"body\" ).on( \"scroll.droppable\", function() {\n\t\t\tif ( !draggable.options.refreshPositions ) {\n\t\t\t\t$.ui.ddmanager.prepareOffsets( draggable, event );\n\t\t\t}\n\t\t} );\n\t},\n\tdrag: function( draggable, event ) {\n\n\t\t// If you have a highly dynamic page, you might try this option. It renders positions\n\t\t// every time you move the mouse.\n\t\tif ( draggable.options.refreshPositions ) {\n\t\t\t$.ui.ddmanager.prepareOffsets( draggable, event );\n\t\t}\n\n\t\t// Run through all droppables and check their positions based on specific tolerance options\n\t\t$.each( $.ui.ddmanager.droppables[ draggable.options.scope ] || [], function() {\n\n\t\t\tif ( this.options.disabled || this.greedyChild || !this.visible ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar parentInstance, scope, parent,\n\t\t\t\tintersects = intersect( draggable, this, this.options.tolerance, event ),\n\t\t\t\tc = !intersects && this.isover ?\n\t\t\t\t\t\"isout\" :\n\t\t\t\t\t( intersects && !this.isover ? \"isover\" : null );\n\t\t\tif ( !c ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( this.options.greedy ) {\n\n\t\t\t\t// find droppable parents with same scope\n\t\t\t\tscope = this.options.scope;\n\t\t\t\tparent = this.element.parents( \":data(ui-droppable)\" ).filter( function() {\n\t\t\t\t\treturn $( this ).droppable( \"instance\" ).options.scope === scope;\n\t\t\t\t} );\n\n\t\t\t\tif ( parent.length ) {\n\t\t\t\t\tparentInstance = $( parent[ 0 ] ).droppable( \"instance\" );\n\t\t\t\t\tparentInstance.greedyChild = ( c === \"isover\" );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// We just moved into a greedy child\n\t\t\tif ( parentInstance && c === \"isover\" ) {\n\t\t\t\tparentInstance.isover = false;\n\t\t\t\tparentInstance.isout = true;\n\t\t\t\tparentInstance._out.call( parentInstance, event );\n\t\t\t}\n\n\t\t\tthis[ c ] = true;\n\t\t\tthis[ c === \"isout\" ? \"isover\" : \"isout\" ] = false;\n\t\t\tthis[ c === \"isover\" ? \"_over\" : \"_out\" ].call( this, event );\n\n\t\t\t// We just moved out of a greedy child\n\t\t\tif ( parentInstance && c === \"isout\" ) {\n\t\t\t\tparentInstance.isout = false;\n\t\t\t\tparentInstance.isover = true;\n\t\t\t\tparentInstance._over.call( parentInstance, event );\n\t\t\t}\n\t\t} );\n\n\t},\n\tdragStop: function( draggable, event ) {\n\t\tdraggable.element.parentsUntil( \"body\" ).off( \"scroll.droppable\" );\n\n\t\t// Call prepareOffsets one final time since IE does not fire return scroll events when\n\t\t// overflow was caused by drag (see #5003)\n\t\tif ( !draggable.options.refreshPositions ) {\n\t\t\t$.ui.ddmanager.prepareOffsets( draggable, event );\n\t\t}\n\t}\n};\n\n// DEPRECATED\n// TODO: switch return back to widget declaration at top of file when this is removed\nif ( $.uiBackCompat !== false ) {\n\n\t// Backcompat for activeClass and hoverClass options\n\t$.widget( \"ui.droppable\", $.ui.droppable, {\n\t\toptions: {\n\t\t\thoverClass: false,\n\t\t\tactiveClass: false\n\t\t},\n\t\t_addActiveClass: function() {\n\t\t\tthis._super();\n\t\t\tif ( this.options.activeClass ) {\n\t\t\t\tthis.element.addClass( this.options.activeClass );\n\t\t\t}\n\t\t},\n\t\t_removeActiveClass: function() {\n\t\t\tthis._super();\n\t\t\tif ( this.options.activeClass ) {\n\t\t\t\tthis.element.removeClass( this.options.activeClass );\n\t\t\t}\n\t\t},\n\t\t_addHoverClass: function() {\n\t\t\tthis._super();\n\t\t\tif ( this.options.hoverClass ) {\n\t\t\t\tthis.element.addClass( this.options.hoverClass );\n\t\t\t}\n\t\t},\n\t\t_removeHoverClass: function() {\n\t\t\tthis._super();\n\t\t\tif ( this.options.hoverClass ) {\n\t\t\t\tthis.element.removeClass( this.options.hoverClass );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nvar widgetsDroppable = $.ui.droppable;\n\n\n/*!\n * jQuery UI Progressbar 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Progressbar\n//>>group: Widgets\n// jscs:disable maximumLineLength\n//>>description: Displays a status indicator for loading state, standard percentage, and other progress indicators.\n// jscs:enable maximumLineLength\n//>>docs: http://api.jqueryui.com/progressbar/\n//>>demos: http://jqueryui.com/progressbar/\n//>>css.structure: ../../themes/base/core.css\n//>>css.structure: ../../themes/base/progressbar.css\n//>>css.theme: ../../themes/base/theme.css\n\n\n\nvar widgetsProgressbar = $.widget( \"ui.progressbar\", {\n\tversion: \"1.12.1\",\n\toptions: {\n\t\tclasses: {\n\t\t\t\"ui-progressbar\": \"ui-corner-all\",\n\t\t\t\"ui-progressbar-value\": \"ui-corner-left\",\n\t\t\t\"ui-progressbar-complete\": \"ui-corner-right\"\n\t\t},\n\t\tmax: 100,\n\t\tvalue: 0,\n\n\t\tchange: null,\n\t\tcomplete: null\n\t},\n\n\tmin: 0,\n\n\t_create: function() {\n\n\t\t// Constrain initial value\n\t\tthis.oldValue = this.options.value = this._constrainedValue();\n\n\t\tthis.element.attr( {\n\n\t\t\t// Only set static values; aria-valuenow and aria-valuemax are\n\t\t\t// set inside _refreshValue()\n\t\t\trole: \"progressbar\",\n\t\t\t\"aria-valuemin\": this.min\n\t\t} );\n\t\tthis._addClass( \"ui-progressbar\", \"ui-widget ui-widget-content\" );\n\n\t\tthis.valueDiv = $( \"<div>\" ).appendTo( this.element );\n\t\tthis._addClass( this.valueDiv, \"ui-progressbar-value\", \"ui-widget-header\" );\n\t\tthis._refreshValue();\n\t},\n\n\t_destroy: function() {\n\t\tthis.element.removeAttr( \"role aria-valuemin aria-valuemax aria-valuenow\" );\n\n\t\tthis.valueDiv.remove();\n\t},\n\n\tvalue: function( newValue ) {\n\t\tif ( newValue === undefined ) {\n\t\t\treturn this.options.value;\n\t\t}\n\n\t\tthis.options.value = this._constrainedValue( newValue );\n\t\tthis._refreshValue();\n\t},\n\n\t_constrainedValue: function( newValue ) {\n\t\tif ( newValue === undefined ) {\n\t\t\tnewValue = this.options.value;\n\t\t}\n\n\t\tthis.indeterminate = newValue === false;\n\n\t\t// Sanitize value\n\t\tif ( typeof newValue !== \"number\" ) {\n\t\t\tnewValue = 0;\n\t\t}\n\n\t\treturn this.indeterminate ? false :\n\t\t\tMath.min( this.options.max, Math.max( this.min, newValue ) );\n\t},\n\n\t_setOptions: function( options ) {\n\n\t\t// Ensure \"value\" option is set after other values (like max)\n\t\tvar value = options.value;\n\t\tdelete options.value;\n\n\t\tthis._super( options );\n\n\t\tthis.options.value = this._constrainedValue( value );\n\t\tthis._refreshValue();\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"max\" ) {\n\n\t\t\t// Don't allow a max less than min\n\t\t\tvalue = Math.max( this.min, value );\n\t\t}\n\t\tthis._super( key, value );\n\t},\n\n\t_setOptionDisabled: function( value ) {\n\t\tthis._super( value );\n\n\t\tthis.element.attr( \"aria-disabled\", value );\n\t\tthis._toggleClass( null, \"ui-state-disabled\", !!value );\n\t},\n\n\t_percentage: function() {\n\t\treturn this.indeterminate ?\n\t\t\t100 :\n\t\t\t100 * ( this.options.value - this.min ) / ( this.options.max - this.min );\n\t},\n\n\t_refreshValue: function() {\n\t\tvar value = this.options.value,\n\t\t\tpercentage = this._percentage();\n\n\t\tthis.valueDiv\n\t\t\t.toggle( this.indeterminate || value > this.min )\n\t\t\t.width( percentage.toFixed( 0 ) + \"%\" );\n\n\t\tthis\n\t\t\t._toggleClass( this.valueDiv, \"ui-progressbar-complete\", null,\n\t\t\t\tvalue === this.options.max )\n\t\t\t._toggleClass( \"ui-progressbar-indeterminate\", null, this.indeterminate );\n\n\t\tif ( this.indeterminate ) {\n\t\t\tthis.element.removeAttr( \"aria-valuenow\" );\n\t\t\tif ( !this.overlayDiv ) {\n\t\t\t\tthis.overlayDiv = $( \"<div>\" ).appendTo( this.valueDiv );\n\t\t\t\tthis._addClass( this.overlayDiv, \"ui-progressbar-overlay\" );\n\t\t\t}\n\t\t} else {\n\t\t\tthis.element.attr( {\n\t\t\t\t\"aria-valuemax\": this.options.max,\n\t\t\t\t\"aria-valuenow\": value\n\t\t\t} );\n\t\t\tif ( this.overlayDiv ) {\n\t\t\t\tthis.overlayDiv.remove();\n\t\t\t\tthis.overlayDiv = null;\n\t\t\t}\n\t\t}\n\n\t\tif ( this.oldValue !== value ) {\n\t\t\tthis.oldValue = value;\n\t\t\tthis._trigger( \"change\" );\n\t\t}\n\t\tif ( value === this.options.max ) {\n\t\t\tthis._trigger( \"complete\" );\n\t\t}\n\t}\n} );\n\n\n/*!\n * jQuery UI Selectable 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Selectable\n//>>group: Interactions\n//>>description: Allows groups of elements to be selected with the mouse.\n//>>docs: http://api.jqueryui.com/selectable/\n//>>demos: http://jqueryui.com/selectable/\n//>>css.structure: ../../themes/base/selectable.css\n\n\n\nvar widgetsSelectable = $.widget( \"ui.selectable\", $.ui.mouse, {\n\tversion: \"1.12.1\",\n\toptions: {\n\t\tappendTo: \"body\",\n\t\tautoRefresh: true,\n\t\tdistance: 0,\n\t\tfilter: \"*\",\n\t\ttolerance: \"touch\",\n\n\t\t// Callbacks\n\t\tselected: null,\n\t\tselecting: null,\n\t\tstart: null,\n\t\tstop: null,\n\t\tunselected: null,\n\t\tunselecting: null\n\t},\n\t_create: function() {\n\t\tvar that = this;\n\n\t\tthis._addClass( \"ui-selectable\" );\n\n\t\tthis.dragged = false;\n\n\t\t// Cache selectee children based on filter\n\t\tthis.refresh = function() {\n\t\t\tthat.elementPos = $( that.element[ 0 ] ).offset();\n\t\t\tthat.selectees = $( that.options.filter, that.element[ 0 ] );\n\t\t\tthat._addClass( that.selectees, \"ui-selectee\" );\n\t\t\tthat.selectees.each( function() {\n\t\t\t\tvar $this = $( this ),\n\t\t\t\t\tselecteeOffset = $this.offset(),\n\t\t\t\t\tpos = {\n\t\t\t\t\t\tleft: selecteeOffset.left - that.elementPos.left,\n\t\t\t\t\t\ttop: selecteeOffset.top - that.elementPos.top\n\t\t\t\t\t};\n\t\t\t\t$.data( this, \"selectable-item\", {\n\t\t\t\t\telement: this,\n\t\t\t\t\t$element: $this,\n\t\t\t\t\tleft: pos.left,\n\t\t\t\t\ttop: pos.top,\n\t\t\t\t\tright: pos.left + $this.outerWidth(),\n\t\t\t\t\tbottom: pos.top + $this.outerHeight(),\n\t\t\t\t\tstartselected: false,\n\t\t\t\t\tselected: $this.hasClass( \"ui-selected\" ),\n\t\t\t\t\tselecting: $this.hasClass( \"ui-selecting\" ),\n\t\t\t\t\tunselecting: $this.hasClass( \"ui-unselecting\" )\n\t\t\t\t} );\n\t\t\t} );\n\t\t};\n\t\tthis.refresh();\n\n\t\tthis._mouseInit();\n\n\t\tthis.helper = $( \"<div>\" );\n\t\tthis._addClass( this.helper, \"ui-selectable-helper\" );\n\t},\n\n\t_destroy: function() {\n\t\tthis.selectees.removeData( \"selectable-item\" );\n\t\tthis._mouseDestroy();\n\t},\n\n\t_mouseStart: function( event ) {\n\t\tvar that = this,\n\t\t\toptions = this.options;\n\n\t\tthis.opos = [ event.pageX, event.pageY ];\n\t\tthis.elementPos = $( this.element[ 0 ] ).offset();\n\n\t\tif ( this.options.disabled ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.selectees = $( options.filter, this.element[ 0 ] );\n\n\t\tthis._trigger( \"start\", event );\n\n\t\t$( options.appendTo ).append( this.helper );\n\n\t\t// position helper (lasso)\n\t\tthis.helper.css( {\n\t\t\t\"left\": event.pageX,\n\t\t\t\"top\": event.pageY,\n\t\t\t\"width\": 0,\n\t\t\t\"height\": 0\n\t\t} );\n\n\t\tif ( options.autoRefresh ) {\n\t\t\tthis.refresh();\n\t\t}\n\n\t\tthis.selectees.filter( \".ui-selected\" ).each( function() {\n\t\t\tvar selectee = $.data( this, \"selectable-item\" );\n\t\t\tselectee.startselected = true;\n\t\t\tif ( !event.metaKey && !event.ctrlKey ) {\n\t\t\t\tthat._removeClass( selectee.$element, \"ui-selected\" );\n\t\t\t\tselectee.selected = false;\n\t\t\t\tthat._addClass( selectee.$element, \"ui-unselecting\" );\n\t\t\t\tselectee.unselecting = true;\n\n\t\t\t\t// selectable UNSELECTING callback\n\t\t\t\tthat._trigger( \"unselecting\", event, {\n\t\t\t\t\tunselecting: selectee.element\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\n\t\t$( event.target ).parents().addBack().each( function() {\n\t\t\tvar doSelect,\n\t\t\t\tselectee = $.data( this, \"selectable-item\" );\n\t\t\tif ( selectee ) {\n\t\t\t\tdoSelect = ( !event.metaKey && !event.ctrlKey ) ||\n\t\t\t\t\t!selectee.$element.hasClass( \"ui-selected\" );\n\t\t\t\tthat._removeClass( selectee.$element, doSelect ? \"ui-unselecting\" : \"ui-selected\" )\n\t\t\t\t\t._addClass( selectee.$element, doSelect ? \"ui-selecting\" : \"ui-unselecting\" );\n\t\t\t\tselectee.unselecting = !doSelect;\n\t\t\t\tselectee.selecting = doSelect;\n\t\t\t\tselectee.selected = doSelect;\n\n\t\t\t\t// selectable (UN)SELECTING callback\n\t\t\t\tif ( doSelect ) {\n\t\t\t\t\tthat._trigger( \"selecting\", event, {\n\t\t\t\t\t\tselecting: selectee.element\n\t\t\t\t\t} );\n\t\t\t\t} else {\n\t\t\t\t\tthat._trigger( \"unselecting\", event, {\n\t\t\t\t\t\tunselecting: selectee.element\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} );\n\n\t},\n\n\t_mouseDrag: function( event ) {\n\n\t\tthis.dragged = true;\n\n\t\tif ( this.options.disabled ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar tmp,\n\t\t\tthat = this,\n\t\t\toptions = this.options,\n\t\t\tx1 = this.opos[ 0 ],\n\t\t\ty1 = this.opos[ 1 ],\n\t\t\tx2 = event.pageX,\n\t\t\ty2 = event.pageY;\n\n\t\tif ( x1 > x2 ) { tmp = x2; x2 = x1; x1 = tmp; }\n\t\tif ( y1 > y2 ) { tmp = y2; y2 = y1; y1 = tmp; }\n\t\tthis.helper.css( { left: x1, top: y1, width: x2 - x1, height: y2 - y1 } );\n\n\t\tthis.selectees.each( function() {\n\t\t\tvar selectee = $.data( this, \"selectable-item\" ),\n\t\t\t\thit = false,\n\t\t\t\toffset = {};\n\n\t\t\t//prevent helper from being selected if appendTo: selectable\n\t\t\tif ( !selectee || selectee.element === that.element[ 0 ] ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\toffset.left   = selectee.left   + that.elementPos.left;\n\t\t\toffset.right  = selectee.right  + that.elementPos.left;\n\t\t\toffset.top    = selectee.top    + that.elementPos.top;\n\t\t\toffset.bottom = selectee.bottom + that.elementPos.top;\n\n\t\t\tif ( options.tolerance === \"touch\" ) {\n\t\t\t\thit = ( !( offset.left > x2 || offset.right < x1 || offset.top > y2 ||\n                    offset.bottom < y1 ) );\n\t\t\t} else if ( options.tolerance === \"fit\" ) {\n\t\t\t\thit = ( offset.left > x1 && offset.right < x2 && offset.top > y1 &&\n                    offset.bottom < y2 );\n\t\t\t}\n\n\t\t\tif ( hit ) {\n\n\t\t\t\t// SELECT\n\t\t\t\tif ( selectee.selected ) {\n\t\t\t\t\tthat._removeClass( selectee.$element, \"ui-selected\" );\n\t\t\t\t\tselectee.selected = false;\n\t\t\t\t}\n\t\t\t\tif ( selectee.unselecting ) {\n\t\t\t\t\tthat._removeClass( selectee.$element, \"ui-unselecting\" );\n\t\t\t\t\tselectee.unselecting = false;\n\t\t\t\t}\n\t\t\t\tif ( !selectee.selecting ) {\n\t\t\t\t\tthat._addClass( selectee.$element, \"ui-selecting\" );\n\t\t\t\t\tselectee.selecting = true;\n\n\t\t\t\t\t// selectable SELECTING callback\n\t\t\t\t\tthat._trigger( \"selecting\", event, {\n\t\t\t\t\t\tselecting: selectee.element\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// UNSELECT\n\t\t\t\tif ( selectee.selecting ) {\n\t\t\t\t\tif ( ( event.metaKey || event.ctrlKey ) && selectee.startselected ) {\n\t\t\t\t\t\tthat._removeClass( selectee.$element, \"ui-selecting\" );\n\t\t\t\t\t\tselectee.selecting = false;\n\t\t\t\t\t\tthat._addClass( selectee.$element, \"ui-selected\" );\n\t\t\t\t\t\tselectee.selected = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthat._removeClass( selectee.$element, \"ui-selecting\" );\n\t\t\t\t\t\tselectee.selecting = false;\n\t\t\t\t\t\tif ( selectee.startselected ) {\n\t\t\t\t\t\t\tthat._addClass( selectee.$element, \"ui-unselecting\" );\n\t\t\t\t\t\t\tselectee.unselecting = true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// selectable UNSELECTING callback\n\t\t\t\t\t\tthat._trigger( \"unselecting\", event, {\n\t\t\t\t\t\t\tunselecting: selectee.element\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif ( selectee.selected ) {\n\t\t\t\t\tif ( !event.metaKey && !event.ctrlKey && !selectee.startselected ) {\n\t\t\t\t\t\tthat._removeClass( selectee.$element, \"ui-selected\" );\n\t\t\t\t\t\tselectee.selected = false;\n\n\t\t\t\t\t\tthat._addClass( selectee.$element, \"ui-unselecting\" );\n\t\t\t\t\t\tselectee.unselecting = true;\n\n\t\t\t\t\t\t// selectable UNSELECTING callback\n\t\t\t\t\t\tthat._trigger( \"unselecting\", event, {\n\t\t\t\t\t\t\tunselecting: selectee.element\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\treturn false;\n\t},\n\n\t_mouseStop: function( event ) {\n\t\tvar that = this;\n\n\t\tthis.dragged = false;\n\n\t\t$( \".ui-unselecting\", this.element[ 0 ] ).each( function() {\n\t\t\tvar selectee = $.data( this, \"selectable-item\" );\n\t\t\tthat._removeClass( selectee.$element, \"ui-unselecting\" );\n\t\t\tselectee.unselecting = false;\n\t\t\tselectee.startselected = false;\n\t\t\tthat._trigger( \"unselected\", event, {\n\t\t\t\tunselected: selectee.element\n\t\t\t} );\n\t\t} );\n\t\t$( \".ui-selecting\", this.element[ 0 ] ).each( function() {\n\t\t\tvar selectee = $.data( this, \"selectable-item\" );\n\t\t\tthat._removeClass( selectee.$element, \"ui-selecting\" )\n\t\t\t\t._addClass( selectee.$element, \"ui-selected\" );\n\t\t\tselectee.selecting = false;\n\t\t\tselectee.selected = true;\n\t\t\tselectee.startselected = true;\n\t\t\tthat._trigger( \"selected\", event, {\n\t\t\t\tselected: selectee.element\n\t\t\t} );\n\t\t} );\n\t\tthis._trigger( \"stop\", event );\n\n\t\tthis.helper.remove();\n\n\t\treturn false;\n\t}\n\n} );\n\n\n/*!\n * jQuery UI Selectmenu 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Selectmenu\n//>>group: Widgets\n// jscs:disable maximumLineLength\n//>>description: Duplicates and extends the functionality of a native HTML select element, allowing it to be customizable in behavior and appearance far beyond the limitations of a native select.\n// jscs:enable maximumLineLength\n//>>docs: http://api.jqueryui.com/selectmenu/\n//>>demos: http://jqueryui.com/selectmenu/\n//>>css.structure: ../../themes/base/core.css\n//>>css.structure: ../../themes/base/selectmenu.css, ../../themes/base/button.css\n//>>css.theme: ../../themes/base/theme.css\n\n\n\nvar widgetsSelectmenu = $.widget( \"ui.selectmenu\", [ $.ui.formResetMixin, {\n\tversion: \"1.12.1\",\n\tdefaultElement: \"<select>\",\n\toptions: {\n\t\tappendTo: null,\n\t\tclasses: {\n\t\t\t\"ui-selectmenu-button-open\": \"ui-corner-top\",\n\t\t\t\"ui-selectmenu-button-closed\": \"ui-corner-all\"\n\t\t},\n\t\tdisabled: null,\n\t\ticons: {\n\t\t\tbutton: \"ui-icon-triangle-1-s\"\n\t\t},\n\t\tposition: {\n\t\t\tmy: \"left top\",\n\t\t\tat: \"left bottom\",\n\t\t\tcollision: \"none\"\n\t\t},\n\t\twidth: false,\n\n\t\t// Callbacks\n\t\tchange: null,\n\t\tclose: null,\n\t\tfocus: null,\n\t\topen: null,\n\t\tselect: null\n\t},\n\n\t_create: function() {\n\t\tvar selectmenuId = this.element.uniqueId().attr( \"id\" );\n\t\tthis.ids = {\n\t\t\telement: selectmenuId,\n\t\t\tbutton: selectmenuId + \"-button\",\n\t\t\tmenu: selectmenuId + \"-menu\"\n\t\t};\n\n\t\tthis._drawButton();\n\t\tthis._drawMenu();\n\t\tthis._bindFormResetHandler();\n\n\t\tthis._rendered = false;\n\t\tthis.menuItems = $();\n\t},\n\n\t_drawButton: function() {\n\t\tvar icon,\n\t\t\tthat = this,\n\t\t\titem = this._parseOption(\n\t\t\t\tthis.element.find( \"option:selected\" ),\n\t\t\t\tthis.element[ 0 ].selectedIndex\n\t\t\t);\n\n\t\t// Associate existing label with the new button\n\t\tthis.labels = this.element.labels().attr( \"for\", this.ids.button );\n\t\tthis._on( this.labels, {\n\t\t\tclick: function( event ) {\n\t\t\t\tthis.button.focus();\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t} );\n\n\t\t// Hide original select element\n\t\tthis.element.hide();\n\n\t\t// Create button\n\t\tthis.button = $( \"<span>\", {\n\t\t\ttabindex: this.options.disabled ? -1 : 0,\n\t\t\tid: this.ids.button,\n\t\t\trole: \"combobox\",\n\t\t\t\"aria-expanded\": \"false\",\n\t\t\t\"aria-autocomplete\": \"list\",\n\t\t\t\"aria-owns\": this.ids.menu,\n\t\t\t\"aria-haspopup\": \"true\",\n\t\t\ttitle: this.element.attr( \"title\" )\n\t\t} )\n\t\t\t.insertAfter( this.element );\n\n\t\tthis._addClass( this.button, \"ui-selectmenu-button ui-selectmenu-button-closed\",\n\t\t\t\"ui-button ui-widget\" );\n\n\t\ticon = $( \"<span>\" ).appendTo( this.button );\n\t\tthis._addClass( icon, \"ui-selectmenu-icon\", \"ui-icon \" + this.options.icons.button );\n\t\tthis.buttonItem = this._renderButtonItem( item )\n\t\t\t.appendTo( this.button );\n\n\t\tif ( this.options.width !== false ) {\n\t\t\tthis._resizeButton();\n\t\t}\n\n\t\tthis._on( this.button, this._buttonEvents );\n\t\tthis.button.one( \"focusin\", function() {\n\n\t\t\t// Delay rendering the menu items until the button receives focus.\n\t\t\t// The menu may have already been rendered via a programmatic open.\n\t\t\tif ( !that._rendered ) {\n\t\t\t\tthat._refreshMenu();\n\t\t\t}\n\t\t} );\n\t},\n\n\t_drawMenu: function() {\n\t\tvar that = this;\n\n\t\t// Create menu\n\t\tthis.menu = $( \"<ul>\", {\n\t\t\t\"aria-hidden\": \"true\",\n\t\t\t\"aria-labelledby\": this.ids.button,\n\t\t\tid: this.ids.menu\n\t\t} );\n\n\t\t// Wrap menu\n\t\tthis.menuWrap = $( \"<div>\" ).append( this.menu );\n\t\tthis._addClass( this.menuWrap, \"ui-selectmenu-menu\", \"ui-front\" );\n\t\tthis.menuWrap.appendTo( this._appendTo() );\n\n\t\t// Initialize menu widget\n\t\tthis.menuInstance = this.menu\n\t\t\t.menu( {\n\t\t\t\tclasses: {\n\t\t\t\t\t\"ui-menu\": \"ui-corner-bottom\"\n\t\t\t\t},\n\t\t\t\trole: \"listbox\",\n\t\t\t\tselect: function( event, ui ) {\n\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t// Support: IE8\n\t\t\t\t\t// If the item was selected via a click, the text selection\n\t\t\t\t\t// will be destroyed in IE\n\t\t\t\t\tthat._setSelection();\n\n\t\t\t\t\tthat._select( ui.item.data( \"ui-selectmenu-item\" ), event );\n\t\t\t\t},\n\t\t\t\tfocus: function( event, ui ) {\n\t\t\t\t\tvar item = ui.item.data( \"ui-selectmenu-item\" );\n\n\t\t\t\t\t// Prevent inital focus from firing and check if its a newly focused item\n\t\t\t\t\tif ( that.focusIndex != null && item.index !== that.focusIndex ) {\n\t\t\t\t\t\tthat._trigger( \"focus\", event, { item: item } );\n\t\t\t\t\t\tif ( !that.isOpen ) {\n\t\t\t\t\t\t\tthat._select( item, event );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthat.focusIndex = item.index;\n\n\t\t\t\t\tthat.button.attr( \"aria-activedescendant\",\n\t\t\t\t\t\tthat.menuItems.eq( item.index ).attr( \"id\" ) );\n\t\t\t\t}\n\t\t\t} )\n\t\t\t.menu( \"instance\" );\n\n\t\t// Don't close the menu on mouseleave\n\t\tthis.menuInstance._off( this.menu, \"mouseleave\" );\n\n\t\t// Cancel the menu's collapseAll on document click\n\t\tthis.menuInstance._closeOnDocumentClick = function() {\n\t\t\treturn false;\n\t\t};\n\n\t\t// Selects often contain empty items, but never contain dividers\n\t\tthis.menuInstance._isDivider = function() {\n\t\t\treturn false;\n\t\t};\n\t},\n\n\trefresh: function() {\n\t\tthis._refreshMenu();\n\t\tthis.buttonItem.replaceWith(\n\t\t\tthis.buttonItem = this._renderButtonItem(\n\n\t\t\t\t// Fall back to an empty object in case there are no options\n\t\t\t\tthis._getSelectedItem().data( \"ui-selectmenu-item\" ) || {}\n\t\t\t)\n\t\t);\n\t\tif ( this.options.width === null ) {\n\t\t\tthis._resizeButton();\n\t\t}\n\t},\n\n\t_refreshMenu: function() {\n\t\tvar item,\n\t\t\toptions = this.element.find( \"option\" );\n\n\t\tthis.menu.empty();\n\n\t\tthis._parseOptions( options );\n\t\tthis._renderMenu( this.menu, this.items );\n\n\t\tthis.menuInstance.refresh();\n\t\tthis.menuItems = this.menu.find( \"li\" )\n\t\t\t.not( \".ui-selectmenu-optgroup\" )\n\t\t\t\t.find( \".ui-menu-item-wrapper\" );\n\n\t\tthis._rendered = true;\n\n\t\tif ( !options.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\titem = this._getSelectedItem();\n\n\t\t// Update the menu to have the correct item focused\n\t\tthis.menuInstance.focus( null, item );\n\t\tthis._setAria( item.data( \"ui-selectmenu-item\" ) );\n\n\t\t// Set disabled state\n\t\tthis._setOption( \"disabled\", this.element.prop( \"disabled\" ) );\n\t},\n\n\topen: function( event ) {\n\t\tif ( this.options.disabled ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If this is the first time the menu is being opened, render the items\n\t\tif ( !this._rendered ) {\n\t\t\tthis._refreshMenu();\n\t\t} else {\n\n\t\t\t// Menu clears focus on close, reset focus to selected item\n\t\t\tthis._removeClass( this.menu.find( \".ui-state-active\" ), null, \"ui-state-active\" );\n\t\t\tthis.menuInstance.focus( null, this._getSelectedItem() );\n\t\t}\n\n\t\t// If there are no options, don't open the menu\n\t\tif ( !this.menuItems.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.isOpen = true;\n\t\tthis._toggleAttr();\n\t\tthis._resizeMenu();\n\t\tthis._position();\n\n\t\tthis._on( this.document, this._documentClick );\n\n\t\tthis._trigger( \"open\", event );\n\t},\n\n\t_position: function() {\n\t\tthis.menuWrap.position( $.extend( { of: this.button }, this.options.position ) );\n\t},\n\n\tclose: function( event ) {\n\t\tif ( !this.isOpen ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.isOpen = false;\n\t\tthis._toggleAttr();\n\n\t\tthis.range = null;\n\t\tthis._off( this.document );\n\n\t\tthis._trigger( \"close\", event );\n\t},\n\n\twidget: function() {\n\t\treturn this.button;\n\t},\n\n\tmenuWidget: function() {\n\t\treturn this.menu;\n\t},\n\n\t_renderButtonItem: function( item ) {\n\t\tvar buttonItem = $( \"<span>\" );\n\n\t\tthis._setText( buttonItem, item.label );\n\t\tthis._addClass( buttonItem, \"ui-selectmenu-text\" );\n\n\t\treturn buttonItem;\n\t},\n\n\t_renderMenu: function( ul, items ) {\n\t\tvar that = this,\n\t\t\tcurrentOptgroup = \"\";\n\n\t\t$.each( items, function( index, item ) {\n\t\t\tvar li;\n\n\t\t\tif ( item.optgroup !== currentOptgroup ) {\n\t\t\t\tli = $( \"<li>\", {\n\t\t\t\t\ttext: item.optgroup\n\t\t\t\t} );\n\t\t\t\tthat._addClass( li, \"ui-selectmenu-optgroup\", \"ui-menu-divider\" +\n\t\t\t\t\t( item.element.parent( \"optgroup\" ).prop( \"disabled\" ) ?\n\t\t\t\t\t\t\" ui-state-disabled\" :\n\t\t\t\t\t\t\"\" ) );\n\n\t\t\t\tli.appendTo( ul );\n\n\t\t\t\tcurrentOptgroup = item.optgroup;\n\t\t\t}\n\n\t\t\tthat._renderItemData( ul, item );\n\t\t} );\n\t},\n\n\t_renderItemData: function( ul, item ) {\n\t\treturn this._renderItem( ul, item ).data( \"ui-selectmenu-item\", item );\n\t},\n\n\t_renderItem: function( ul, item ) {\n\t\tvar li = $( \"<li>\" ),\n\t\t\twrapper = $( \"<div>\", {\n\t\t\t\ttitle: item.element.attr( \"title\" )\n\t\t\t} );\n\n\t\tif ( item.disabled ) {\n\t\t\tthis._addClass( li, null, \"ui-state-disabled\" );\n\t\t}\n\t\tthis._setText( wrapper, item.label );\n\n\t\treturn li.append( wrapper ).appendTo( ul );\n\t},\n\n\t_setText: function( element, value ) {\n\t\tif ( value ) {\n\t\t\telement.text( value );\n\t\t} else {\n\t\t\telement.html( \"&#160;\" );\n\t\t}\n\t},\n\n\t_move: function( direction, event ) {\n\t\tvar item, next,\n\t\t\tfilter = \".ui-menu-item\";\n\n\t\tif ( this.isOpen ) {\n\t\t\titem = this.menuItems.eq( this.focusIndex ).parent( \"li\" );\n\t\t} else {\n\t\t\titem = this.menuItems.eq( this.element[ 0 ].selectedIndex ).parent( \"li\" );\n\t\t\tfilter += \":not(.ui-state-disabled)\";\n\t\t}\n\n\t\tif ( direction === \"first\" || direction === \"last\" ) {\n\t\t\tnext = item[ direction === \"first\" ? \"prevAll\" : \"nextAll\" ]( filter ).eq( -1 );\n\t\t} else {\n\t\t\tnext = item[ direction + \"All\" ]( filter ).eq( 0 );\n\t\t}\n\n\t\tif ( next.length ) {\n\t\t\tthis.menuInstance.focus( event, next );\n\t\t}\n\t},\n\n\t_getSelectedItem: function() {\n\t\treturn this.menuItems.eq( this.element[ 0 ].selectedIndex ).parent( \"li\" );\n\t},\n\n\t_toggle: function( event ) {\n\t\tthis[ this.isOpen ? \"close\" : \"open\" ]( event );\n\t},\n\n\t_setSelection: function() {\n\t\tvar selection;\n\n\t\tif ( !this.range ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( window.getSelection ) {\n\t\t\tselection = window.getSelection();\n\t\t\tselection.removeAllRanges();\n\t\t\tselection.addRange( this.range );\n\n\t\t// Support: IE8\n\t\t} else {\n\t\t\tthis.range.select();\n\t\t}\n\n\t\t// Support: IE\n\t\t// Setting the text selection kills the button focus in IE, but\n\t\t// restoring the focus doesn't kill the selection.\n\t\tthis.button.focus();\n\t},\n\n\t_documentClick: {\n\t\tmousedown: function( event ) {\n\t\t\tif ( !this.isOpen ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( !$( event.target ).closest( \".ui-selectmenu-menu, #\" +\n\t\t\t\t\t$.ui.escapeSelector( this.ids.button ) ).length ) {\n\t\t\t\tthis.close( event );\n\t\t\t}\n\t\t}\n\t},\n\n\t_buttonEvents: {\n\n\t\t// Prevent text selection from being reset when interacting with the selectmenu (#10144)\n\t\tmousedown: function() {\n\t\t\tvar selection;\n\n\t\t\tif ( window.getSelection ) {\n\t\t\t\tselection = window.getSelection();\n\t\t\t\tif ( selection.rangeCount ) {\n\t\t\t\t\tthis.range = selection.getRangeAt( 0 );\n\t\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t} else {\n\t\t\t\tthis.range = document.selection.createRange();\n\t\t\t}\n\t\t},\n\n\t\tclick: function( event ) {\n\t\t\tthis._setSelection();\n\t\t\tthis._toggle( event );\n\t\t},\n\n\t\tkeydown: function( event ) {\n\t\t\tvar preventDefault = true;\n\t\t\tswitch ( event.keyCode ) {\n\t\t\tcase $.ui.keyCode.TAB:\n\t\t\tcase $.ui.keyCode.ESCAPE:\n\t\t\t\tthis.close( event );\n\t\t\t\tpreventDefault = false;\n\t\t\t\tbreak;\n\t\t\tcase $.ui.keyCode.ENTER:\n\t\t\t\tif ( this.isOpen ) {\n\t\t\t\t\tthis._selectFocusedItem( event );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase $.ui.keyCode.UP:\n\t\t\t\tif ( event.altKey ) {\n\t\t\t\t\tthis._toggle( event );\n\t\t\t\t} else {\n\t\t\t\t\tthis._move( \"prev\", event );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase $.ui.keyCode.DOWN:\n\t\t\t\tif ( event.altKey ) {\n\t\t\t\t\tthis._toggle( event );\n\t\t\t\t} else {\n\t\t\t\t\tthis._move( \"next\", event );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase $.ui.keyCode.SPACE:\n\t\t\t\tif ( this.isOpen ) {\n\t\t\t\t\tthis._selectFocusedItem( event );\n\t\t\t\t} else {\n\t\t\t\t\tthis._toggle( event );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase $.ui.keyCode.LEFT:\n\t\t\t\tthis._move( \"prev\", event );\n\t\t\t\tbreak;\n\t\t\tcase $.ui.keyCode.RIGHT:\n\t\t\t\tthis._move( \"next\", event );\n\t\t\t\tbreak;\n\t\t\tcase $.ui.keyCode.HOME:\n\t\t\tcase $.ui.keyCode.PAGE_UP:\n\t\t\t\tthis._move( \"first\", event );\n\t\t\t\tbreak;\n\t\t\tcase $.ui.keyCode.END:\n\t\t\tcase $.ui.keyCode.PAGE_DOWN:\n\t\t\t\tthis._move( \"last\", event );\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthis.menu.trigger( event );\n\t\t\t\tpreventDefault = false;\n\t\t\t}\n\n\t\t\tif ( preventDefault ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t}\n\t},\n\n\t_selectFocusedItem: function( event ) {\n\t\tvar item = this.menuItems.eq( this.focusIndex ).parent( \"li\" );\n\t\tif ( !item.hasClass( \"ui-state-disabled\" ) ) {\n\t\t\tthis._select( item.data( \"ui-selectmenu-item\" ), event );\n\t\t}\n\t},\n\n\t_select: function( item, event ) {\n\t\tvar oldIndex = this.element[ 0 ].selectedIndex;\n\n\t\t// Change native select element\n\t\tthis.element[ 0 ].selectedIndex = item.index;\n\t\tthis.buttonItem.replaceWith( this.buttonItem = this._renderButtonItem( item ) );\n\t\tthis._setAria( item );\n\t\tthis._trigger( \"select\", event, { item: item } );\n\n\t\tif ( item.index !== oldIndex ) {\n\t\t\tthis._trigger( \"change\", event, { item: item } );\n\t\t}\n\n\t\tthis.close( event );\n\t},\n\n\t_setAria: function( item ) {\n\t\tvar id = this.menuItems.eq( item.index ).attr( \"id\" );\n\n\t\tthis.button.attr( {\n\t\t\t\"aria-labelledby\": id,\n\t\t\t\"aria-activedescendant\": id\n\t\t} );\n\t\tthis.menu.attr( \"aria-activedescendant\", id );\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"icons\" ) {\n\t\t\tvar icon = this.button.find( \"span.ui-icon\" );\n\t\t\tthis._removeClass( icon, null, this.options.icons.button )\n\t\t\t\t._addClass( icon, null, value.button );\n\t\t}\n\n\t\tthis._super( key, value );\n\n\t\tif ( key === \"appendTo\" ) {\n\t\t\tthis.menuWrap.appendTo( this._appendTo() );\n\t\t}\n\n\t\tif ( key === \"width\" ) {\n\t\t\tthis._resizeButton();\n\t\t}\n\t},\n\n\t_setOptionDisabled: function( value ) {\n\t\tthis._super( value );\n\n\t\tthis.menuInstance.option( \"disabled\", value );\n\t\tthis.button.attr( \"aria-disabled\", value );\n\t\tthis._toggleClass( this.button, null, \"ui-state-disabled\", value );\n\n\t\tthis.element.prop( \"disabled\", value );\n\t\tif ( value ) {\n\t\t\tthis.button.attr( \"tabindex\", -1 );\n\t\t\tthis.close();\n\t\t} else {\n\t\t\tthis.button.attr( \"tabindex\", 0 );\n\t\t}\n\t},\n\n\t_appendTo: function() {\n\t\tvar element = this.options.appendTo;\n\n\t\tif ( element ) {\n\t\t\telement = element.jquery || element.nodeType ?\n\t\t\t\t$( element ) :\n\t\t\t\tthis.document.find( element ).eq( 0 );\n\t\t}\n\n\t\tif ( !element || !element[ 0 ] ) {\n\t\t\telement = this.element.closest( \".ui-front, dialog\" );\n\t\t}\n\n\t\tif ( !element.length ) {\n\t\t\telement = this.document[ 0 ].body;\n\t\t}\n\n\t\treturn element;\n\t},\n\n\t_toggleAttr: function() {\n\t\tthis.button.attr( \"aria-expanded\", this.isOpen );\n\n\t\t// We can't use two _toggleClass() calls here, because we need to make sure\n\t\t// we always remove classes first and add them second, otherwise if both classes have the\n\t\t// same theme class, it will be removed after we add it.\n\t\tthis._removeClass( this.button, \"ui-selectmenu-button-\" +\n\t\t\t( this.isOpen ? \"closed\" : \"open\" ) )\n\t\t\t._addClass( this.button, \"ui-selectmenu-button-\" +\n\t\t\t\t( this.isOpen ? \"open\" : \"closed\" ) )\n\t\t\t._toggleClass( this.menuWrap, \"ui-selectmenu-open\", null, this.isOpen );\n\n\t\tthis.menu.attr( \"aria-hidden\", !this.isOpen );\n\t},\n\n\t_resizeButton: function() {\n\t\tvar width = this.options.width;\n\n\t\t// For `width: false`, just remove inline style and stop\n\t\tif ( width === false ) {\n\t\t\tthis.button.css( \"width\", \"\" );\n\t\t\treturn;\n\t\t}\n\n\t\t// For `width: null`, match the width of the original element\n\t\tif ( width === null ) {\n\t\t\twidth = this.element.show().outerWidth();\n\t\t\tthis.element.hide();\n\t\t}\n\n\t\tthis.button.outerWidth( width );\n\t},\n\n\t_resizeMenu: function() {\n\t\tthis.menu.outerWidth( Math.max(\n\t\t\tthis.button.outerWidth(),\n\n\t\t\t// Support: IE10\n\t\t\t// IE10 wraps long text (possibly a rounding bug)\n\t\t\t// so we add 1px to avoid the wrapping\n\t\t\tthis.menu.width( \"\" ).outerWidth() + 1\n\t\t) );\n\t},\n\n\t_getCreateOptions: function() {\n\t\tvar options = this._super();\n\n\t\toptions.disabled = this.element.prop( \"disabled\" );\n\n\t\treturn options;\n\t},\n\n\t_parseOptions: function( options ) {\n\t\tvar that = this,\n\t\t\tdata = [];\n\t\toptions.each( function( index, item ) {\n\t\t\tdata.push( that._parseOption( $( item ), index ) );\n\t\t} );\n\t\tthis.items = data;\n\t},\n\n\t_parseOption: function( option, index ) {\n\t\tvar optgroup = option.parent( \"optgroup\" );\n\n\t\treturn {\n\t\t\telement: option,\n\t\t\tindex: index,\n\t\t\tvalue: option.val(),\n\t\t\tlabel: option.text(),\n\t\t\toptgroup: optgroup.attr( \"label\" ) || \"\",\n\t\t\tdisabled: optgroup.prop( \"disabled\" ) || option.prop( \"disabled\" )\n\t\t};\n\t},\n\n\t_destroy: function() {\n\t\tthis._unbindFormResetHandler();\n\t\tthis.menuWrap.remove();\n\t\tthis.button.remove();\n\t\tthis.element.show();\n\t\tthis.element.removeUniqueId();\n\t\tthis.labels.attr( \"for\", this.ids.element );\n\t}\n} ] );\n\n\n/*!\n * jQuery UI Slider 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Slider\n//>>group: Widgets\n//>>description: Displays a flexible slider with ranges and accessibility via keyboard.\n//>>docs: http://api.jqueryui.com/slider/\n//>>demos: http://jqueryui.com/slider/\n//>>css.structure: ../../themes/base/core.css\n//>>css.structure: ../../themes/base/slider.css\n//>>css.theme: ../../themes/base/theme.css\n\n\n\nvar widgetsSlider = $.widget( \"ui.slider\", $.ui.mouse, {\n\tversion: \"1.12.1\",\n\twidgetEventPrefix: \"slide\",\n\n\toptions: {\n\t\tanimate: false,\n\t\tclasses: {\n\t\t\t\"ui-slider\": \"ui-corner-all\",\n\t\t\t\"ui-slider-handle\": \"ui-corner-all\",\n\n\t\t\t// Note: ui-widget-header isn't the most fittingly semantic framework class for this\n\t\t\t// element, but worked best visually with a variety of themes\n\t\t\t\"ui-slider-range\": \"ui-corner-all ui-widget-header\"\n\t\t},\n\t\tdistance: 0,\n\t\tmax: 100,\n\t\tmin: 0,\n\t\torientation: \"horizontal\",\n\t\trange: false,\n\t\tstep: 1,\n\t\tvalue: 0,\n\t\tvalues: null,\n\n\t\t// Callbacks\n\t\tchange: null,\n\t\tslide: null,\n\t\tstart: null,\n\t\tstop: null\n\t},\n\n\t// Number of pages in a slider\n\t// (how many times can you page up/down to go through the whole range)\n\tnumPages: 5,\n\n\t_create: function() {\n\t\tthis._keySliding = false;\n\t\tthis._mouseSliding = false;\n\t\tthis._animateOff = true;\n\t\tthis._handleIndex = null;\n\t\tthis._detectOrientation();\n\t\tthis._mouseInit();\n\t\tthis._calculateNewMax();\n\n\t\tthis._addClass( \"ui-slider ui-slider-\" + this.orientation,\n\t\t\t\"ui-widget ui-widget-content\" );\n\n\t\tthis._refresh();\n\n\t\tthis._animateOff = false;\n\t},\n\n\t_refresh: function() {\n\t\tthis._createRange();\n\t\tthis._createHandles();\n\t\tthis._setupEvents();\n\t\tthis._refreshValue();\n\t},\n\n\t_createHandles: function() {\n\t\tvar i, handleCount,\n\t\t\toptions = this.options,\n\t\t\texistingHandles = this.element.find( \".ui-slider-handle\" ),\n\t\t\thandle = \"<span tabindex='0'></span>\",\n\t\t\thandles = [];\n\n\t\thandleCount = ( options.values && options.values.length ) || 1;\n\n\t\tif ( existingHandles.length > handleCount ) {\n\t\t\texistingHandles.slice( handleCount ).remove();\n\t\t\texistingHandles = existingHandles.slice( 0, handleCount );\n\t\t}\n\n\t\tfor ( i = existingHandles.length; i < handleCount; i++ ) {\n\t\t\thandles.push( handle );\n\t\t}\n\n\t\tthis.handles = existingHandles.add( $( handles.join( \"\" ) ).appendTo( this.element ) );\n\n\t\tthis._addClass( this.handles, \"ui-slider-handle\", \"ui-state-default\" );\n\n\t\tthis.handle = this.handles.eq( 0 );\n\n\t\tthis.handles.each( function( i ) {\n\t\t\t$( this )\n\t\t\t\t.data( \"ui-slider-handle-index\", i )\n\t\t\t\t.attr( \"tabIndex\", 0 );\n\t\t} );\n\t},\n\n\t_createRange: function() {\n\t\tvar options = this.options;\n\n\t\tif ( options.range ) {\n\t\t\tif ( options.range === true ) {\n\t\t\t\tif ( !options.values ) {\n\t\t\t\t\toptions.values = [ this._valueMin(), this._valueMin() ];\n\t\t\t\t} else if ( options.values.length && options.values.length !== 2 ) {\n\t\t\t\t\toptions.values = [ options.values[ 0 ], options.values[ 0 ] ];\n\t\t\t\t} else if ( $.isArray( options.values ) ) {\n\t\t\t\t\toptions.values = options.values.slice( 0 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( !this.range || !this.range.length ) {\n\t\t\t\tthis.range = $( \"<div>\" )\n\t\t\t\t\t.appendTo( this.element );\n\n\t\t\t\tthis._addClass( this.range, \"ui-slider-range\" );\n\t\t\t} else {\n\t\t\t\tthis._removeClass( this.range, \"ui-slider-range-min ui-slider-range-max\" );\n\n\t\t\t\t// Handle range switching from true to min/max\n\t\t\t\tthis.range.css( {\n\t\t\t\t\t\"left\": \"\",\n\t\t\t\t\t\"bottom\": \"\"\n\t\t\t\t} );\n\t\t\t}\n\t\t\tif ( options.range === \"min\" || options.range === \"max\" ) {\n\t\t\t\tthis._addClass( this.range, \"ui-slider-range-\" + options.range );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( this.range ) {\n\t\t\t\tthis.range.remove();\n\t\t\t}\n\t\t\tthis.range = null;\n\t\t}\n\t},\n\n\t_setupEvents: function() {\n\t\tthis._off( this.handles );\n\t\tthis._on( this.handles, this._handleEvents );\n\t\tthis._hoverable( this.handles );\n\t\tthis._focusable( this.handles );\n\t},\n\n\t_destroy: function() {\n\t\tthis.handles.remove();\n\t\tif ( this.range ) {\n\t\t\tthis.range.remove();\n\t\t}\n\n\t\tthis._mouseDestroy();\n\t},\n\n\t_mouseCapture: function( event ) {\n\t\tvar position, normValue, distance, closestHandle, index, allowed, offset, mouseOverHandle,\n\t\t\tthat = this,\n\t\t\to = this.options;\n\n\t\tif ( o.disabled ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.elementSize = {\n\t\t\twidth: this.element.outerWidth(),\n\t\t\theight: this.element.outerHeight()\n\t\t};\n\t\tthis.elementOffset = this.element.offset();\n\n\t\tposition = { x: event.pageX, y: event.pageY };\n\t\tnormValue = this._normValueFromMouse( position );\n\t\tdistance = this._valueMax() - this._valueMin() + 1;\n\t\tthis.handles.each( function( i ) {\n\t\t\tvar thisDistance = Math.abs( normValue - that.values( i ) );\n\t\t\tif ( ( distance > thisDistance ) ||\n\t\t\t\t( distance === thisDistance &&\n\t\t\t\t\t( i === that._lastChangedValue || that.values( i ) === o.min ) ) ) {\n\t\t\t\tdistance = thisDistance;\n\t\t\t\tclosestHandle = $( this );\n\t\t\t\tindex = i;\n\t\t\t}\n\t\t} );\n\n\t\tallowed = this._start( event, index );\n\t\tif ( allowed === false ) {\n\t\t\treturn false;\n\t\t}\n\t\tthis._mouseSliding = true;\n\n\t\tthis._handleIndex = index;\n\n\t\tthis._addClass( closestHandle, null, \"ui-state-active\" );\n\t\tclosestHandle.trigger( \"focus\" );\n\n\t\toffset = closestHandle.offset();\n\t\tmouseOverHandle = !$( event.target ).parents().addBack().is( \".ui-slider-handle\" );\n\t\tthis._clickOffset = mouseOverHandle ? { left: 0, top: 0 } : {\n\t\t\tleft: event.pageX - offset.left - ( closestHandle.width() / 2 ),\n\t\t\ttop: event.pageY - offset.top -\n\t\t\t\t( closestHandle.height() / 2 ) -\n\t\t\t\t( parseInt( closestHandle.css( \"borderTopWidth\" ), 10 ) || 0 ) -\n\t\t\t\t( parseInt( closestHandle.css( \"borderBottomWidth\" ), 10 ) || 0 ) +\n\t\t\t\t( parseInt( closestHandle.css( \"marginTop\" ), 10 ) || 0 )\n\t\t};\n\n\t\tif ( !this.handles.hasClass( \"ui-state-hover\" ) ) {\n\t\t\tthis._slide( event, index, normValue );\n\t\t}\n\t\tthis._animateOff = true;\n\t\treturn true;\n\t},\n\n\t_mouseStart: function() {\n\t\treturn true;\n\t},\n\n\t_mouseDrag: function( event ) {\n\t\tvar position = { x: event.pageX, y: event.pageY },\n\t\t\tnormValue = this._normValueFromMouse( position );\n\n\t\tthis._slide( event, this._handleIndex, normValue );\n\n\t\treturn false;\n\t},\n\n\t_mouseStop: function( event ) {\n\t\tthis._removeClass( this.handles, null, \"ui-state-active\" );\n\t\tthis._mouseSliding = false;\n\n\t\tthis._stop( event, this._handleIndex );\n\t\tthis._change( event, this._handleIndex );\n\n\t\tthis._handleIndex = null;\n\t\tthis._clickOffset = null;\n\t\tthis._animateOff = false;\n\n\t\treturn false;\n\t},\n\n\t_detectOrientation: function() {\n\t\tthis.orientation = ( this.options.orientation === \"vertical\" ) ? \"vertical\" : \"horizontal\";\n\t},\n\n\t_normValueFromMouse: function( position ) {\n\t\tvar pixelTotal,\n\t\t\tpixelMouse,\n\t\t\tpercentMouse,\n\t\t\tvalueTotal,\n\t\t\tvalueMouse;\n\n\t\tif ( this.orientation === \"horizontal\" ) {\n\t\t\tpixelTotal = this.elementSize.width;\n\t\t\tpixelMouse = position.x - this.elementOffset.left -\n\t\t\t\t( this._clickOffset ? this._clickOffset.left : 0 );\n\t\t} else {\n\t\t\tpixelTotal = this.elementSize.height;\n\t\t\tpixelMouse = position.y - this.elementOffset.top -\n\t\t\t\t( this._clickOffset ? this._clickOffset.top : 0 );\n\t\t}\n\n\t\tpercentMouse = ( pixelMouse / pixelTotal );\n\t\tif ( percentMouse > 1 ) {\n\t\t\tpercentMouse = 1;\n\t\t}\n\t\tif ( percentMouse < 0 ) {\n\t\t\tpercentMouse = 0;\n\t\t}\n\t\tif ( this.orientation === \"vertical\" ) {\n\t\t\tpercentMouse = 1 - percentMouse;\n\t\t}\n\n\t\tvalueTotal = this._valueMax() - this._valueMin();\n\t\tvalueMouse = this._valueMin() + percentMouse * valueTotal;\n\n\t\treturn this._trimAlignValue( valueMouse );\n\t},\n\n\t_uiHash: function( index, value, values ) {\n\t\tvar uiHash = {\n\t\t\thandle: this.handles[ index ],\n\t\t\thandleIndex: index,\n\t\t\tvalue: value !== undefined ? value : this.value()\n\t\t};\n\n\t\tif ( this._hasMultipleValues() ) {\n\t\t\tuiHash.value = value !== undefined ? value : this.values( index );\n\t\t\tuiHash.values = values || this.values();\n\t\t}\n\n\t\treturn uiHash;\n\t},\n\n\t_hasMultipleValues: function() {\n\t\treturn this.options.values && this.options.values.length;\n\t},\n\n\t_start: function( event, index ) {\n\t\treturn this._trigger( \"start\", event, this._uiHash( index ) );\n\t},\n\n\t_slide: function( event, index, newVal ) {\n\t\tvar allowed, otherVal,\n\t\t\tcurrentValue = this.value(),\n\t\t\tnewValues = this.values();\n\n\t\tif ( this._hasMultipleValues() ) {\n\t\t\totherVal = this.values( index ? 0 : 1 );\n\t\t\tcurrentValue = this.values( index );\n\n\t\t\tif ( this.options.values.length === 2 && this.options.range === true ) {\n\t\t\t\tnewVal =  index === 0 ? Math.min( otherVal, newVal ) : Math.max( otherVal, newVal );\n\t\t\t}\n\n\t\t\tnewValues[ index ] = newVal;\n\t\t}\n\n\t\tif ( newVal === currentValue ) {\n\t\t\treturn;\n\t\t}\n\n\t\tallowed = this._trigger( \"slide\", event, this._uiHash( index, newVal, newValues ) );\n\n\t\t// A slide can be canceled by returning false from the slide callback\n\t\tif ( allowed === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( this._hasMultipleValues() ) {\n\t\t\tthis.values( index, newVal );\n\t\t} else {\n\t\t\tthis.value( newVal );\n\t\t}\n\t},\n\n\t_stop: function( event, index ) {\n\t\tthis._trigger( \"stop\", event, this._uiHash( index ) );\n\t},\n\n\t_change: function( event, index ) {\n\t\tif ( !this._keySliding && !this._mouseSliding ) {\n\n\t\t\t//store the last changed value index for reference when handles overlap\n\t\t\tthis._lastChangedValue = index;\n\t\t\tthis._trigger( \"change\", event, this._uiHash( index ) );\n\t\t}\n\t},\n\n\tvalue: function( newValue ) {\n\t\tif ( arguments.length ) {\n\t\t\tthis.options.value = this._trimAlignValue( newValue );\n\t\t\tthis._refreshValue();\n\t\t\tthis._change( null, 0 );\n\t\t\treturn;\n\t\t}\n\n\t\treturn this._value();\n\t},\n\n\tvalues: function( index, newValue ) {\n\t\tvar vals,\n\t\t\tnewValues,\n\t\t\ti;\n\n\t\tif ( arguments.length > 1 ) {\n\t\t\tthis.options.values[ index ] = this._trimAlignValue( newValue );\n\t\t\tthis._refreshValue();\n\t\t\tthis._change( null, index );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( arguments.length ) {\n\t\t\tif ( $.isArray( arguments[ 0 ] ) ) {\n\t\t\t\tvals = this.options.values;\n\t\t\t\tnewValues = arguments[ 0 ];\n\t\t\t\tfor ( i = 0; i < vals.length; i += 1 ) {\n\t\t\t\t\tvals[ i ] = this._trimAlignValue( newValues[ i ] );\n\t\t\t\t\tthis._change( null, i );\n\t\t\t\t}\n\t\t\t\tthis._refreshValue();\n\t\t\t} else {\n\t\t\t\tif ( this._hasMultipleValues() ) {\n\t\t\t\t\treturn this._values( index );\n\t\t\t\t} else {\n\t\t\t\t\treturn this.value();\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\treturn this._values();\n\t\t}\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tvar i,\n\t\t\tvalsLength = 0;\n\n\t\tif ( key === \"range\" && this.options.range === true ) {\n\t\t\tif ( value === \"min\" ) {\n\t\t\t\tthis.options.value = this._values( 0 );\n\t\t\t\tthis.options.values = null;\n\t\t\t} else if ( value === \"max\" ) {\n\t\t\t\tthis.options.value = this._values( this.options.values.length - 1 );\n\t\t\t\tthis.options.values = null;\n\t\t\t}\n\t\t}\n\n\t\tif ( $.isArray( this.options.values ) ) {\n\t\t\tvalsLength = this.options.values.length;\n\t\t}\n\n\t\tthis._super( key, value );\n\n\t\tswitch ( key ) {\n\t\t\tcase \"orientation\":\n\t\t\t\tthis._detectOrientation();\n\t\t\t\tthis._removeClass( \"ui-slider-horizontal ui-slider-vertical\" )\n\t\t\t\t\t._addClass( \"ui-slider-\" + this.orientation );\n\t\t\t\tthis._refreshValue();\n\t\t\t\tif ( this.options.range ) {\n\t\t\t\t\tthis._refreshRange( value );\n\t\t\t\t}\n\n\t\t\t\t// Reset positioning from previous orientation\n\t\t\t\tthis.handles.css( value === \"horizontal\" ? \"bottom\" : \"left\", \"\" );\n\t\t\t\tbreak;\n\t\t\tcase \"value\":\n\t\t\t\tthis._animateOff = true;\n\t\t\t\tthis._refreshValue();\n\t\t\t\tthis._change( null, 0 );\n\t\t\t\tthis._animateOff = false;\n\t\t\t\tbreak;\n\t\t\tcase \"values\":\n\t\t\t\tthis._animateOff = true;\n\t\t\t\tthis._refreshValue();\n\n\t\t\t\t// Start from the last handle to prevent unreachable handles (#9046)\n\t\t\t\tfor ( i = valsLength - 1; i >= 0; i-- ) {\n\t\t\t\t\tthis._change( null, i );\n\t\t\t\t}\n\t\t\t\tthis._animateOff = false;\n\t\t\t\tbreak;\n\t\t\tcase \"step\":\n\t\t\tcase \"min\":\n\t\t\tcase \"max\":\n\t\t\t\tthis._animateOff = true;\n\t\t\t\tthis._calculateNewMax();\n\t\t\t\tthis._refreshValue();\n\t\t\t\tthis._animateOff = false;\n\t\t\t\tbreak;\n\t\t\tcase \"range\":\n\t\t\t\tthis._animateOff = true;\n\t\t\t\tthis._refresh();\n\t\t\t\tthis._animateOff = false;\n\t\t\t\tbreak;\n\t\t}\n\t},\n\n\t_setOptionDisabled: function( value ) {\n\t\tthis._super( value );\n\n\t\tthis._toggleClass( null, \"ui-state-disabled\", !!value );\n\t},\n\n\t//internal value getter\n\t// _value() returns value trimmed by min and max, aligned by step\n\t_value: function() {\n\t\tvar val = this.options.value;\n\t\tval = this._trimAlignValue( val );\n\n\t\treturn val;\n\t},\n\n\t//internal values getter\n\t// _values() returns array of values trimmed by min and max, aligned by step\n\t// _values( index ) returns single value trimmed by min and max, aligned by step\n\t_values: function( index ) {\n\t\tvar val,\n\t\t\tvals,\n\t\t\ti;\n\n\t\tif ( arguments.length ) {\n\t\t\tval = this.options.values[ index ];\n\t\t\tval = this._trimAlignValue( val );\n\n\t\t\treturn val;\n\t\t} else if ( this._hasMultipleValues() ) {\n\n\t\t\t// .slice() creates a copy of the array\n\t\t\t// this copy gets trimmed by min and max and then returned\n\t\t\tvals = this.options.values.slice();\n\t\t\tfor ( i = 0; i < vals.length; i += 1 ) {\n\t\t\t\tvals[ i ] = this._trimAlignValue( vals[ i ] );\n\t\t\t}\n\n\t\t\treturn vals;\n\t\t} else {\n\t\t\treturn [];\n\t\t}\n\t},\n\n\t// Returns the step-aligned value that val is closest to, between (inclusive) min and max\n\t_trimAlignValue: function( val ) {\n\t\tif ( val <= this._valueMin() ) {\n\t\t\treturn this._valueMin();\n\t\t}\n\t\tif ( val >= this._valueMax() ) {\n\t\t\treturn this._valueMax();\n\t\t}\n\t\tvar step = ( this.options.step > 0 ) ? this.options.step : 1,\n\t\t\tvalModStep = ( val - this._valueMin() ) % step,\n\t\t\talignValue = val - valModStep;\n\n\t\tif ( Math.abs( valModStep ) * 2 >= step ) {\n\t\t\talignValue += ( valModStep > 0 ) ? step : ( -step );\n\t\t}\n\n\t\t// Since JavaScript has problems with large floats, round\n\t\t// the final value to 5 digits after the decimal point (see #4124)\n\t\treturn parseFloat( alignValue.toFixed( 5 ) );\n\t},\n\n\t_calculateNewMax: function() {\n\t\tvar max = this.options.max,\n\t\t\tmin = this._valueMin(),\n\t\t\tstep = this.options.step,\n\t\t\taboveMin = Math.round( ( max - min ) / step ) * step;\n\t\tmax = aboveMin + min;\n\t\tif ( max > this.options.max ) {\n\n\t\t\t//If max is not divisible by step, rounding off may increase its value\n\t\t\tmax -= step;\n\t\t}\n\t\tthis.max = parseFloat( max.toFixed( this._precision() ) );\n\t},\n\n\t_precision: function() {\n\t\tvar precision = this._precisionOf( this.options.step );\n\t\tif ( this.options.min !== null ) {\n\t\t\tprecision = Math.max( precision, this._precisionOf( this.options.min ) );\n\t\t}\n\t\treturn precision;\n\t},\n\n\t_precisionOf: function( num ) {\n\t\tvar str = num.toString(),\n\t\t\tdecimal = str.indexOf( \".\" );\n\t\treturn decimal === -1 ? 0 : str.length - decimal - 1;\n\t},\n\n\t_valueMin: function() {\n\t\treturn this.options.min;\n\t},\n\n\t_valueMax: function() {\n\t\treturn this.max;\n\t},\n\n\t_refreshRange: function( orientation ) {\n\t\tif ( orientation === \"vertical\" ) {\n\t\t\tthis.range.css( { \"width\": \"\", \"left\": \"\" } );\n\t\t}\n\t\tif ( orientation === \"horizontal\" ) {\n\t\t\tthis.range.css( { \"height\": \"\", \"bottom\": \"\" } );\n\t\t}\n\t},\n\n\t_refreshValue: function() {\n\t\tvar lastValPercent, valPercent, value, valueMin, valueMax,\n\t\t\toRange = this.options.range,\n\t\t\to = this.options,\n\t\t\tthat = this,\n\t\t\tanimate = ( !this._animateOff ) ? o.animate : false,\n\t\t\t_set = {};\n\n\t\tif ( this._hasMultipleValues() ) {\n\t\t\tthis.handles.each( function( i ) {\n\t\t\t\tvalPercent = ( that.values( i ) - that._valueMin() ) / ( that._valueMax() -\n\t\t\t\t\tthat._valueMin() ) * 100;\n\t\t\t\t_set[ that.orientation === \"horizontal\" ? \"left\" : \"bottom\" ] = valPercent + \"%\";\n\t\t\t\t$( this ).stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( _set, o.animate );\n\t\t\t\tif ( that.options.range === true ) {\n\t\t\t\t\tif ( that.orientation === \"horizontal\" ) {\n\t\t\t\t\t\tif ( i === 0 ) {\n\t\t\t\t\t\t\tthat.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( {\n\t\t\t\t\t\t\t\tleft: valPercent + \"%\"\n\t\t\t\t\t\t\t}, o.animate );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( i === 1 ) {\n\t\t\t\t\t\t\tthat.range[ animate ? \"animate\" : \"css\" ]( {\n\t\t\t\t\t\t\t\twidth: ( valPercent - lastValPercent ) + \"%\"\n\t\t\t\t\t\t\t}, {\n\t\t\t\t\t\t\t\tqueue: false,\n\t\t\t\t\t\t\t\tduration: o.animate\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif ( i === 0 ) {\n\t\t\t\t\t\t\tthat.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( {\n\t\t\t\t\t\t\t\tbottom: ( valPercent ) + \"%\"\n\t\t\t\t\t\t\t}, o.animate );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( i === 1 ) {\n\t\t\t\t\t\t\tthat.range[ animate ? \"animate\" : \"css\" ]( {\n\t\t\t\t\t\t\t\theight: ( valPercent - lastValPercent ) + \"%\"\n\t\t\t\t\t\t\t}, {\n\t\t\t\t\t\t\t\tqueue: false,\n\t\t\t\t\t\t\t\tduration: o.animate\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tlastValPercent = valPercent;\n\t\t\t} );\n\t\t} else {\n\t\t\tvalue = this.value();\n\t\t\tvalueMin = this._valueMin();\n\t\t\tvalueMax = this._valueMax();\n\t\t\tvalPercent = ( valueMax !== valueMin ) ?\n\t\t\t\t\t( value - valueMin ) / ( valueMax - valueMin ) * 100 :\n\t\t\t\t\t0;\n\t\t\t_set[ this.orientation === \"horizontal\" ? \"left\" : \"bottom\" ] = valPercent + \"%\";\n\t\t\tthis.handle.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( _set, o.animate );\n\n\t\t\tif ( oRange === \"min\" && this.orientation === \"horizontal\" ) {\n\t\t\t\tthis.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( {\n\t\t\t\t\twidth: valPercent + \"%\"\n\t\t\t\t}, o.animate );\n\t\t\t}\n\t\t\tif ( oRange === \"max\" && this.orientation === \"horizontal\" ) {\n\t\t\t\tthis.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( {\n\t\t\t\t\twidth: ( 100 - valPercent ) + \"%\"\n\t\t\t\t}, o.animate );\n\t\t\t}\n\t\t\tif ( oRange === \"min\" && this.orientation === \"vertical\" ) {\n\t\t\t\tthis.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( {\n\t\t\t\t\theight: valPercent + \"%\"\n\t\t\t\t}, o.animate );\n\t\t\t}\n\t\t\tif ( oRange === \"max\" && this.orientation === \"vertical\" ) {\n\t\t\t\tthis.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( {\n\t\t\t\t\theight: ( 100 - valPercent ) + \"%\"\n\t\t\t\t}, o.animate );\n\t\t\t}\n\t\t}\n\t},\n\n\t_handleEvents: {\n\t\tkeydown: function( event ) {\n\t\t\tvar allowed, curVal, newVal, step,\n\t\t\t\tindex = $( event.target ).data( \"ui-slider-handle-index\" );\n\n\t\t\tswitch ( event.keyCode ) {\n\t\t\t\tcase $.ui.keyCode.HOME:\n\t\t\t\tcase $.ui.keyCode.END:\n\t\t\t\tcase $.ui.keyCode.PAGE_UP:\n\t\t\t\tcase $.ui.keyCode.PAGE_DOWN:\n\t\t\t\tcase $.ui.keyCode.UP:\n\t\t\t\tcase $.ui.keyCode.RIGHT:\n\t\t\t\tcase $.ui.keyCode.DOWN:\n\t\t\t\tcase $.ui.keyCode.LEFT:\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tif ( !this._keySliding ) {\n\t\t\t\t\t\tthis._keySliding = true;\n\t\t\t\t\t\tthis._addClass( $( event.target ), null, \"ui-state-active\" );\n\t\t\t\t\t\tallowed = this._start( event, index );\n\t\t\t\t\t\tif ( allowed === false ) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tstep = this.options.step;\n\t\t\tif ( this._hasMultipleValues() ) {\n\t\t\t\tcurVal = newVal = this.values( index );\n\t\t\t} else {\n\t\t\t\tcurVal = newVal = this.value();\n\t\t\t}\n\n\t\t\tswitch ( event.keyCode ) {\n\t\t\t\tcase $.ui.keyCode.HOME:\n\t\t\t\t\tnewVal = this._valueMin();\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.END:\n\t\t\t\t\tnewVal = this._valueMax();\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.PAGE_UP:\n\t\t\t\t\tnewVal = this._trimAlignValue(\n\t\t\t\t\t\tcurVal + ( ( this._valueMax() - this._valueMin() ) / this.numPages )\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.PAGE_DOWN:\n\t\t\t\t\tnewVal = this._trimAlignValue(\n\t\t\t\t\t\tcurVal - ( ( this._valueMax() - this._valueMin() ) / this.numPages ) );\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.UP:\n\t\t\t\tcase $.ui.keyCode.RIGHT:\n\t\t\t\t\tif ( curVal === this._valueMax() ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tnewVal = this._trimAlignValue( curVal + step );\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.DOWN:\n\t\t\t\tcase $.ui.keyCode.LEFT:\n\t\t\t\t\tif ( curVal === this._valueMin() ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tnewVal = this._trimAlignValue( curVal - step );\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tthis._slide( event, index, newVal );\n\t\t},\n\t\tkeyup: function( event ) {\n\t\t\tvar index = $( event.target ).data( \"ui-slider-handle-index\" );\n\n\t\t\tif ( this._keySliding ) {\n\t\t\t\tthis._keySliding = false;\n\t\t\t\tthis._stop( event, index );\n\t\t\t\tthis._change( event, index );\n\t\t\t\tthis._removeClass( $( event.target ), null, \"ui-state-active\" );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n\n/*!\n * jQuery UI Sortable 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Sortable\n//>>group: Interactions\n//>>description: Enables items in a list to be sorted using the mouse.\n//>>docs: http://api.jqueryui.com/sortable/\n//>>demos: http://jqueryui.com/sortable/\n//>>css.structure: ../../themes/base/sortable.css\n\n\n\nvar widgetsSortable = $.widget( \"ui.sortable\", $.ui.mouse, {\n\tversion: \"1.12.1\",\n\twidgetEventPrefix: \"sort\",\n\tready: false,\n\toptions: {\n\t\tappendTo: \"parent\",\n\t\taxis: false,\n\t\tconnectWith: false,\n\t\tcontainment: false,\n\t\tcursor: \"auto\",\n\t\tcursorAt: false,\n\t\tdropOnEmpty: true,\n\t\tforcePlaceholderSize: false,\n\t\tforceHelperSize: false,\n\t\tgrid: false,\n\t\thandle: false,\n\t\thelper: \"original\",\n\t\titems: \"> *\",\n\t\topacity: false,\n\t\tplaceholder: false,\n\t\trevert: false,\n\t\tscroll: true,\n\t\tscrollSensitivity: 20,\n\t\tscrollSpeed: 20,\n\t\tscope: \"default\",\n\t\ttolerance: \"intersect\",\n\t\tzIndex: 1000,\n\n\t\t// Callbacks\n\t\tactivate: null,\n\t\tbeforeStop: null,\n\t\tchange: null,\n\t\tdeactivate: null,\n\t\tout: null,\n\t\tover: null,\n\t\treceive: null,\n\t\tremove: null,\n\t\tsort: null,\n\t\tstart: null,\n\t\tstop: null,\n\t\tupdate: null\n\t},\n\n\t_isOverAxis: function( x, reference, size ) {\n\t\treturn ( x >= reference ) && ( x < ( reference + size ) );\n\t},\n\n\t_isFloating: function( item ) {\n\t\treturn ( /left|right/ ).test( item.css( \"float\" ) ) ||\n\t\t\t( /inline|table-cell/ ).test( item.css( \"display\" ) );\n\t},\n\n\t_create: function() {\n\t\tthis.containerCache = {};\n\t\tthis._addClass( \"ui-sortable\" );\n\n\t\t//Get the items\n\t\tthis.refresh();\n\n\t\t//Let's determine the parent's offset\n\t\tthis.offset = this.element.offset();\n\n\t\t//Initialize mouse events for interaction\n\t\tthis._mouseInit();\n\n\t\tthis._setHandleClassName();\n\n\t\t//We're ready to go\n\t\tthis.ready = true;\n\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tthis._super( key, value );\n\n\t\tif ( key === \"handle\" ) {\n\t\t\tthis._setHandleClassName();\n\t\t}\n\t},\n\n\t_setHandleClassName: function() {\n\t\tvar that = this;\n\t\tthis._removeClass( this.element.find( \".ui-sortable-handle\" ), \"ui-sortable-handle\" );\n\t\t$.each( this.items, function() {\n\t\t\tthat._addClass(\n\t\t\t\tthis.instance.options.handle ?\n\t\t\t\t\tthis.item.find( this.instance.options.handle ) :\n\t\t\t\t\tthis.item,\n\t\t\t\t\"ui-sortable-handle\"\n\t\t\t);\n\t\t} );\n\t},\n\n\t_destroy: function() {\n\t\tthis._mouseDestroy();\n\n\t\tfor ( var i = this.items.length - 1; i >= 0; i-- ) {\n\t\t\tthis.items[ i ].item.removeData( this.widgetName + \"-item\" );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t_mouseCapture: function( event, overrideHandle ) {\n\t\tvar currentItem = null,\n\t\t\tvalidHandle = false,\n\t\t\tthat = this;\n\n\t\tif ( this.reverting ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( this.options.disabled || this.options.type === \"static\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t//We have to refresh the items data once first\n\t\tthis._refreshItems( event );\n\n\t\t//Find out if the clicked node (or one of its parents) is a actual item in this.items\n\t\t$( event.target ).parents().each( function() {\n\t\t\tif ( $.data( this, that.widgetName + \"-item\" ) === that ) {\n\t\t\t\tcurrentItem = $( this );\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} );\n\t\tif ( $.data( event.target, that.widgetName + \"-item\" ) === that ) {\n\t\t\tcurrentItem = $( event.target );\n\t\t}\n\n\t\tif ( !currentItem ) {\n\t\t\treturn false;\n\t\t}\n\t\tif ( this.options.handle && !overrideHandle ) {\n\t\t\t$( this.options.handle, currentItem ).find( \"*\" ).addBack().each( function() {\n\t\t\t\tif ( this === event.target ) {\n\t\t\t\t\tvalidHandle = true;\n\t\t\t\t}\n\t\t\t} );\n\t\t\tif ( !validHandle ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tthis.currentItem = currentItem;\n\t\tthis._removeCurrentsFromItems();\n\t\treturn true;\n\n\t},\n\n\t_mouseStart: function( event, overrideHandle, noActivation ) {\n\n\t\tvar i, body,\n\t\t\to = this.options;\n\n\t\tthis.currentContainer = this;\n\n\t\t//We only need to call refreshPositions, because the refreshItems call has been moved to\n\t\t// mouseCapture\n\t\tthis.refreshPositions();\n\n\t\t//Create and append the visible helper\n\t\tthis.helper = this._createHelper( event );\n\n\t\t//Cache the helper size\n\t\tthis._cacheHelperProportions();\n\n\t\t/*\n\t\t * - Position generation -\n\t\t * This block generates everything position related - it's the core of draggables.\n\t\t */\n\n\t\t//Cache the margins of the original element\n\t\tthis._cacheMargins();\n\n\t\t//Get the next scrolling parent\n\t\tthis.scrollParent = this.helper.scrollParent();\n\n\t\t//The element's absolute position on the page minus margins\n\t\tthis.offset = this.currentItem.offset();\n\t\tthis.offset = {\n\t\t\ttop: this.offset.top - this.margins.top,\n\t\t\tleft: this.offset.left - this.margins.left\n\t\t};\n\n\t\t$.extend( this.offset, {\n\t\t\tclick: { //Where the click happened, relative to the element\n\t\t\t\tleft: event.pageX - this.offset.left,\n\t\t\t\ttop: event.pageY - this.offset.top\n\t\t\t},\n\t\t\tparent: this._getParentOffset(),\n\n\t\t\t// This is a relative to absolute position minus the actual position calculation -\n\t\t\t// only used for relative positioned helper\n\t\t\trelative: this._getRelativeOffset()\n\t\t} );\n\n\t\t// Only after we got the offset, we can change the helper's position to absolute\n\t\t// TODO: Still need to figure out a way to make relative sorting possible\n\t\tthis.helper.css( \"position\", \"absolute\" );\n\t\tthis.cssPosition = this.helper.css( \"position\" );\n\n\t\t//Generate the original position\n\t\tthis.originalPosition = this._generatePosition( event );\n\t\tthis.originalPageX = event.pageX;\n\t\tthis.originalPageY = event.pageY;\n\n\t\t//Adjust the mouse offset relative to the helper if \"cursorAt\" is supplied\n\t\t( o.cursorAt && this._adjustOffsetFromHelper( o.cursorAt ) );\n\n\t\t//Cache the former DOM position\n\t\tthis.domPosition = {\n\t\t\tprev: this.currentItem.prev()[ 0 ],\n\t\t\tparent: this.currentItem.parent()[ 0 ]\n\t\t};\n\n\t\t// If the helper is not the original, hide the original so it's not playing any role during\n\t\t// the drag, won't cause anything bad this way\n\t\tif ( this.helper[ 0 ] !== this.currentItem[ 0 ] ) {\n\t\t\tthis.currentItem.hide();\n\t\t}\n\n\t\t//Create the placeholder\n\t\tthis._createPlaceholder();\n\n\t\t//Set a containment if given in the options\n\t\tif ( o.containment ) {\n\t\t\tthis._setContainment();\n\t\t}\n\n\t\tif ( o.cursor && o.cursor !== \"auto\" ) { // cursor option\n\t\t\tbody = this.document.find( \"body\" );\n\n\t\t\t// Support: IE\n\t\t\tthis.storedCursor = body.css( \"cursor\" );\n\t\t\tbody.css( \"cursor\", o.cursor );\n\n\t\t\tthis.storedStylesheet =\n\t\t\t\t$( \"<style>*{ cursor: \" + o.cursor + \" !important; }</style>\" ).appendTo( body );\n\t\t}\n\n\t\tif ( o.opacity ) { // opacity option\n\t\t\tif ( this.helper.css( \"opacity\" ) ) {\n\t\t\t\tthis._storedOpacity = this.helper.css( \"opacity\" );\n\t\t\t}\n\t\t\tthis.helper.css( \"opacity\", o.opacity );\n\t\t}\n\n\t\tif ( o.zIndex ) { // zIndex option\n\t\t\tif ( this.helper.css( \"zIndex\" ) ) {\n\t\t\t\tthis._storedZIndex = this.helper.css( \"zIndex\" );\n\t\t\t}\n\t\t\tthis.helper.css( \"zIndex\", o.zIndex );\n\t\t}\n\n\t\t//Prepare scrolling\n\t\tif ( this.scrollParent[ 0 ] !== this.document[ 0 ] &&\n\t\t\t\tthis.scrollParent[ 0 ].tagName !== \"HTML\" ) {\n\t\t\tthis.overflowOffset = this.scrollParent.offset();\n\t\t}\n\n\t\t//Call callbacks\n\t\tthis._trigger( \"start\", event, this._uiHash() );\n\n\t\t//Recache the helper size\n\t\tif ( !this._preserveHelperProportions ) {\n\t\t\tthis._cacheHelperProportions();\n\t\t}\n\n\t\t//Post \"activate\" events to possible containers\n\t\tif ( !noActivation ) {\n\t\t\tfor ( i = this.containers.length - 1; i >= 0; i-- ) {\n\t\t\t\tthis.containers[ i ]._trigger( \"activate\", event, this._uiHash( this ) );\n\t\t\t}\n\t\t}\n\n\t\t//Prepare possible droppables\n\t\tif ( $.ui.ddmanager ) {\n\t\t\t$.ui.ddmanager.current = this;\n\t\t}\n\n\t\tif ( $.ui.ddmanager && !o.dropBehaviour ) {\n\t\t\t$.ui.ddmanager.prepareOffsets( this, event );\n\t\t}\n\n\t\tthis.dragging = true;\n\n\t\tthis._addClass( this.helper, \"ui-sortable-helper\" );\n\n\t\t// Execute the drag once - this causes the helper not to be visiblebefore getting its\n\t\t// correct position\n\t\tthis._mouseDrag( event );\n\t\treturn true;\n\n\t},\n\n\t_mouseDrag: function( event ) {\n\t\tvar i, item, itemElement, intersection,\n\t\t\to = this.options,\n\t\t\tscrolled = false;\n\n\t\t//Compute the helpers position\n\t\tthis.position = this._generatePosition( event );\n\t\tthis.positionAbs = this._convertPositionTo( \"absolute\" );\n\n\t\tif ( !this.lastPositionAbs ) {\n\t\t\tthis.lastPositionAbs = this.positionAbs;\n\t\t}\n\n\t\t//Do scrolling\n\t\tif ( this.options.scroll ) {\n\t\t\tif ( this.scrollParent[ 0 ] !== this.document[ 0 ] &&\n\t\t\t\t\tthis.scrollParent[ 0 ].tagName !== \"HTML\" ) {\n\n\t\t\t\tif ( ( this.overflowOffset.top + this.scrollParent[ 0 ].offsetHeight ) -\n\t\t\t\t\t\tevent.pageY < o.scrollSensitivity ) {\n\t\t\t\t\tthis.scrollParent[ 0 ].scrollTop =\n\t\t\t\t\t\tscrolled = this.scrollParent[ 0 ].scrollTop + o.scrollSpeed;\n\t\t\t\t} else if ( event.pageY - this.overflowOffset.top < o.scrollSensitivity ) {\n\t\t\t\t\tthis.scrollParent[ 0 ].scrollTop =\n\t\t\t\t\t\tscrolled = this.scrollParent[ 0 ].scrollTop - o.scrollSpeed;\n\t\t\t\t}\n\n\t\t\t\tif ( ( this.overflowOffset.left + this.scrollParent[ 0 ].offsetWidth ) -\n\t\t\t\t\t\tevent.pageX < o.scrollSensitivity ) {\n\t\t\t\t\tthis.scrollParent[ 0 ].scrollLeft = scrolled =\n\t\t\t\t\t\tthis.scrollParent[ 0 ].scrollLeft + o.scrollSpeed;\n\t\t\t\t} else if ( event.pageX - this.overflowOffset.left < o.scrollSensitivity ) {\n\t\t\t\t\tthis.scrollParent[ 0 ].scrollLeft = scrolled =\n\t\t\t\t\t\tthis.scrollParent[ 0 ].scrollLeft - o.scrollSpeed;\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( event.pageY - this.document.scrollTop() < o.scrollSensitivity ) {\n\t\t\t\t\tscrolled = this.document.scrollTop( this.document.scrollTop() - o.scrollSpeed );\n\t\t\t\t} else if ( this.window.height() - ( event.pageY - this.document.scrollTop() ) <\n\t\t\t\t\t\to.scrollSensitivity ) {\n\t\t\t\t\tscrolled = this.document.scrollTop( this.document.scrollTop() + o.scrollSpeed );\n\t\t\t\t}\n\n\t\t\t\tif ( event.pageX - this.document.scrollLeft() < o.scrollSensitivity ) {\n\t\t\t\t\tscrolled = this.document.scrollLeft(\n\t\t\t\t\t\tthis.document.scrollLeft() - o.scrollSpeed\n\t\t\t\t\t);\n\t\t\t\t} else if ( this.window.width() - ( event.pageX - this.document.scrollLeft() ) <\n\t\t\t\t\t\to.scrollSensitivity ) {\n\t\t\t\t\tscrolled = this.document.scrollLeft(\n\t\t\t\t\t\tthis.document.scrollLeft() + o.scrollSpeed\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( scrolled !== false && $.ui.ddmanager && !o.dropBehaviour ) {\n\t\t\t\t$.ui.ddmanager.prepareOffsets( this, event );\n\t\t\t}\n\t\t}\n\n\t\t//Regenerate the absolute position used for position checks\n\t\tthis.positionAbs = this._convertPositionTo( \"absolute\" );\n\n\t\t//Set the helper position\n\t\tif ( !this.options.axis || this.options.axis !== \"y\" ) {\n\t\t\tthis.helper[ 0 ].style.left = this.position.left + \"px\";\n\t\t}\n\t\tif ( !this.options.axis || this.options.axis !== \"x\" ) {\n\t\t\tthis.helper[ 0 ].style.top = this.position.top + \"px\";\n\t\t}\n\n\t\t//Rearrange\n\t\tfor ( i = this.items.length - 1; i >= 0; i-- ) {\n\n\t\t\t//Cache variables and intersection, continue if no intersection\n\t\t\titem = this.items[ i ];\n\t\t\titemElement = item.item[ 0 ];\n\t\t\tintersection = this._intersectsWithPointer( item );\n\t\t\tif ( !intersection ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Only put the placeholder inside the current Container, skip all\n\t\t\t// items from other containers. This works because when moving\n\t\t\t// an item from one container to another the\n\t\t\t// currentContainer is switched before the placeholder is moved.\n\t\t\t//\n\t\t\t// Without this, moving items in \"sub-sortables\" can cause\n\t\t\t// the placeholder to jitter between the outer and inner container.\n\t\t\tif ( item.instance !== this.currentContainer ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Cannot intersect with itself\n\t\t\t// no useless actions that have been done before\n\t\t\t// no action if the item moved is the parent of the item checked\n\t\t\tif ( itemElement !== this.currentItem[ 0 ] &&\n\t\t\t\tthis.placeholder[ intersection === 1 ? \"next\" : \"prev\" ]()[ 0 ] !== itemElement &&\n\t\t\t\t!$.contains( this.placeholder[ 0 ], itemElement ) &&\n\t\t\t\t( this.options.type === \"semi-dynamic\" ?\n\t\t\t\t\t!$.contains( this.element[ 0 ], itemElement ) :\n\t\t\t\t\ttrue\n\t\t\t\t)\n\t\t\t) {\n\n\t\t\t\tthis.direction = intersection === 1 ? \"down\" : \"up\";\n\n\t\t\t\tif ( this.options.tolerance === \"pointer\" || this._intersectsWithSides( item ) ) {\n\t\t\t\t\tthis._rearrange( event, item );\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tthis._trigger( \"change\", event, this._uiHash() );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t//Post events to containers\n\t\tthis._contactContainers( event );\n\n\t\t//Interconnect with droppables\n\t\tif ( $.ui.ddmanager ) {\n\t\t\t$.ui.ddmanager.drag( this, event );\n\t\t}\n\n\t\t//Call callbacks\n\t\tthis._trigger( \"sort\", event, this._uiHash() );\n\n\t\tthis.lastPositionAbs = this.positionAbs;\n\t\treturn false;\n\n\t},\n\n\t_mouseStop: function( event, noPropagation ) {\n\n\t\tif ( !event ) {\n\t\t\treturn;\n\t\t}\n\n\t\t//If we are using droppables, inform the manager about the drop\n\t\tif ( $.ui.ddmanager && !this.options.dropBehaviour ) {\n\t\t\t$.ui.ddmanager.drop( this, event );\n\t\t}\n\n\t\tif ( this.options.revert ) {\n\t\t\tvar that = this,\n\t\t\t\tcur = this.placeholder.offset(),\n\t\t\t\taxis = this.options.axis,\n\t\t\t\tanimation = {};\n\n\t\t\tif ( !axis || axis === \"x\" ) {\n\t\t\t\tanimation.left = cur.left - this.offset.parent.left - this.margins.left +\n\t\t\t\t\t( this.offsetParent[ 0 ] === this.document[ 0 ].body ?\n\t\t\t\t\t\t0 :\n\t\t\t\t\t\tthis.offsetParent[ 0 ].scrollLeft\n\t\t\t\t\t);\n\t\t\t}\n\t\t\tif ( !axis || axis === \"y\" ) {\n\t\t\t\tanimation.top = cur.top - this.offset.parent.top - this.margins.top +\n\t\t\t\t\t( this.offsetParent[ 0 ] === this.document[ 0 ].body ?\n\t\t\t\t\t\t0 :\n\t\t\t\t\t\tthis.offsetParent[ 0 ].scrollTop\n\t\t\t\t\t);\n\t\t\t}\n\t\t\tthis.reverting = true;\n\t\t\t$( this.helper ).animate(\n\t\t\t\tanimation,\n\t\t\t\tparseInt( this.options.revert, 10 ) || 500,\n\t\t\t\tfunction() {\n\t\t\t\t\tthat._clear( event );\n\t\t\t\t}\n\t\t\t);\n\t\t} else {\n\t\t\tthis._clear( event, noPropagation );\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\tcancel: function() {\n\n\t\tif ( this.dragging ) {\n\n\t\t\tthis._mouseUp( new $.Event( \"mouseup\", { target: null } ) );\n\n\t\t\tif ( this.options.helper === \"original\" ) {\n\t\t\t\tthis.currentItem.css( this._storedCSS );\n\t\t\t\tthis._removeClass( this.currentItem, \"ui-sortable-helper\" );\n\t\t\t} else {\n\t\t\t\tthis.currentItem.show();\n\t\t\t}\n\n\t\t\t//Post deactivating events to containers\n\t\t\tfor ( var i = this.containers.length - 1; i >= 0; i-- ) {\n\t\t\t\tthis.containers[ i ]._trigger( \"deactivate\", null, this._uiHash( this ) );\n\t\t\t\tif ( this.containers[ i ].containerCache.over ) {\n\t\t\t\t\tthis.containers[ i ]._trigger( \"out\", null, this._uiHash( this ) );\n\t\t\t\t\tthis.containers[ i ].containerCache.over = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.placeholder ) {\n\n\t\t\t//$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately,\n\t\t\t// it unbinds ALL events from the original node!\n\t\t\tif ( this.placeholder[ 0 ].parentNode ) {\n\t\t\t\tthis.placeholder[ 0 ].parentNode.removeChild( this.placeholder[ 0 ] );\n\t\t\t}\n\t\t\tif ( this.options.helper !== \"original\" && this.helper &&\n\t\t\t\t\tthis.helper[ 0 ].parentNode ) {\n\t\t\t\tthis.helper.remove();\n\t\t\t}\n\n\t\t\t$.extend( this, {\n\t\t\t\thelper: null,\n\t\t\t\tdragging: false,\n\t\t\t\treverting: false,\n\t\t\t\t_noFinalSort: null\n\t\t\t} );\n\n\t\t\tif ( this.domPosition.prev ) {\n\t\t\t\t$( this.domPosition.prev ).after( this.currentItem );\n\t\t\t} else {\n\t\t\t\t$( this.domPosition.parent ).prepend( this.currentItem );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tserialize: function( o ) {\n\n\t\tvar items = this._getItemsAsjQuery( o && o.connected ),\n\t\t\tstr = [];\n\t\to = o || {};\n\n\t\t$( items ).each( function() {\n\t\t\tvar res = ( $( o.item || this ).attr( o.attribute || \"id\" ) || \"\" )\n\t\t\t\t.match( o.expression || ( /(.+)[\\-=_](.+)/ ) );\n\t\t\tif ( res ) {\n\t\t\t\tstr.push(\n\t\t\t\t\t( o.key || res[ 1 ] + \"[]\" ) +\n\t\t\t\t\t\"=\" + ( o.key && o.expression ? res[ 1 ] : res[ 2 ] ) );\n\t\t\t}\n\t\t} );\n\n\t\tif ( !str.length && o.key ) {\n\t\t\tstr.push( o.key + \"=\" );\n\t\t}\n\n\t\treturn str.join( \"&\" );\n\n\t},\n\n\ttoArray: function( o ) {\n\n\t\tvar items = this._getItemsAsjQuery( o && o.connected ),\n\t\t\tret = [];\n\n\t\to = o || {};\n\n\t\titems.each( function() {\n\t\t\tret.push( $( o.item || this ).attr( o.attribute || \"id\" ) || \"\" );\n\t\t} );\n\t\treturn ret;\n\n\t},\n\n\t/* Be careful with the following core functions */\n\t_intersectsWith: function( item ) {\n\n\t\tvar x1 = this.positionAbs.left,\n\t\t\tx2 = x1 + this.helperProportions.width,\n\t\t\ty1 = this.positionAbs.top,\n\t\t\ty2 = y1 + this.helperProportions.height,\n\t\t\tl = item.left,\n\t\t\tr = l + item.width,\n\t\t\tt = item.top,\n\t\t\tb = t + item.height,\n\t\t\tdyClick = this.offset.click.top,\n\t\t\tdxClick = this.offset.click.left,\n\t\t\tisOverElementHeight = ( this.options.axis === \"x\" ) || ( ( y1 + dyClick ) > t &&\n\t\t\t\t( y1 + dyClick ) < b ),\n\t\t\tisOverElementWidth = ( this.options.axis === \"y\" ) || ( ( x1 + dxClick ) > l &&\n\t\t\t\t( x1 + dxClick ) < r ),\n\t\t\tisOverElement = isOverElementHeight && isOverElementWidth;\n\n\t\tif ( this.options.tolerance === \"pointer\" ||\n\t\t\tthis.options.forcePointerForContainers ||\n\t\t\t( this.options.tolerance !== \"pointer\" &&\n\t\t\t\tthis.helperProportions[ this.floating ? \"width\" : \"height\" ] >\n\t\t\t\titem[ this.floating ? \"width\" : \"height\" ] )\n\t\t) {\n\t\t\treturn isOverElement;\n\t\t} else {\n\n\t\t\treturn ( l < x1 + ( this.helperProportions.width / 2 ) && // Right Half\n\t\t\t\tx2 - ( this.helperProportions.width / 2 ) < r && // Left Half\n\t\t\t\tt < y1 + ( this.helperProportions.height / 2 ) && // Bottom Half\n\t\t\t\ty2 - ( this.helperProportions.height / 2 ) < b ); // Top Half\n\n\t\t}\n\t},\n\n\t_intersectsWithPointer: function( item ) {\n\t\tvar verticalDirection, horizontalDirection,\n\t\t\tisOverElementHeight = ( this.options.axis === \"x\" ) ||\n\t\t\t\tthis._isOverAxis(\n\t\t\t\t\tthis.positionAbs.top + this.offset.click.top, item.top, item.height ),\n\t\t\tisOverElementWidth = ( this.options.axis === \"y\" ) ||\n\t\t\t\tthis._isOverAxis(\n\t\t\t\t\tthis.positionAbs.left + this.offset.click.left, item.left, item.width ),\n\t\t\tisOverElement = isOverElementHeight && isOverElementWidth;\n\n\t\tif ( !isOverElement ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tverticalDirection = this._getDragVerticalDirection();\n\t\thorizontalDirection = this._getDragHorizontalDirection();\n\n\t\treturn this.floating ?\n\t\t\t( ( horizontalDirection === \"right\" || verticalDirection === \"down\" ) ? 2 : 1 )\n\t\t\t: ( verticalDirection && ( verticalDirection === \"down\" ? 2 : 1 ) );\n\n\t},\n\n\t_intersectsWithSides: function( item ) {\n\n\t\tvar isOverBottomHalf = this._isOverAxis( this.positionAbs.top +\n\t\t\t\tthis.offset.click.top, item.top + ( item.height / 2 ), item.height ),\n\t\t\tisOverRightHalf = this._isOverAxis( this.positionAbs.left +\n\t\t\t\tthis.offset.click.left, item.left + ( item.width / 2 ), item.width ),\n\t\t\tverticalDirection = this._getDragVerticalDirection(),\n\t\t\thorizontalDirection = this._getDragHorizontalDirection();\n\n\t\tif ( this.floating && horizontalDirection ) {\n\t\t\treturn ( ( horizontalDirection === \"right\" && isOverRightHalf ) ||\n\t\t\t\t( horizontalDirection === \"left\" && !isOverRightHalf ) );\n\t\t} else {\n\t\t\treturn verticalDirection && ( ( verticalDirection === \"down\" && isOverBottomHalf ) ||\n\t\t\t\t( verticalDirection === \"up\" && !isOverBottomHalf ) );\n\t\t}\n\n\t},\n\n\t_getDragVerticalDirection: function() {\n\t\tvar delta = this.positionAbs.top - this.lastPositionAbs.top;\n\t\treturn delta !== 0 && ( delta > 0 ? \"down\" : \"up\" );\n\t},\n\n\t_getDragHorizontalDirection: function() {\n\t\tvar delta = this.positionAbs.left - this.lastPositionAbs.left;\n\t\treturn delta !== 0 && ( delta > 0 ? \"right\" : \"left\" );\n\t},\n\n\trefresh: function( event ) {\n\t\tthis._refreshItems( event );\n\t\tthis._setHandleClassName();\n\t\tthis.refreshPositions();\n\t\treturn this;\n\t},\n\n\t_connectWith: function() {\n\t\tvar options = this.options;\n\t\treturn options.connectWith.constructor === String ?\n\t\t\t[ options.connectWith ] :\n\t\t\toptions.connectWith;\n\t},\n\n\t_getItemsAsjQuery: function( connected ) {\n\n\t\tvar i, j, cur, inst,\n\t\t\titems = [],\n\t\t\tqueries = [],\n\t\t\tconnectWith = this._connectWith();\n\n\t\tif ( connectWith && connected ) {\n\t\t\tfor ( i = connectWith.length - 1; i >= 0; i-- ) {\n\t\t\t\tcur = $( connectWith[ i ], this.document[ 0 ] );\n\t\t\t\tfor ( j = cur.length - 1; j >= 0; j-- ) {\n\t\t\t\t\tinst = $.data( cur[ j ], this.widgetFullName );\n\t\t\t\t\tif ( inst && inst !== this && !inst.options.disabled ) {\n\t\t\t\t\t\tqueries.push( [ $.isFunction( inst.options.items ) ?\n\t\t\t\t\t\t\tinst.options.items.call( inst.element ) :\n\t\t\t\t\t\t\t$( inst.options.items, inst.element )\n\t\t\t\t\t\t\t\t.not( \".ui-sortable-helper\" )\n\t\t\t\t\t\t\t\t.not( \".ui-sortable-placeholder\" ), inst ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tqueries.push( [ $.isFunction( this.options.items ) ?\n\t\t\tthis.options.items\n\t\t\t\t.call( this.element, null, { options: this.options, item: this.currentItem } ) :\n\t\t\t$( this.options.items, this.element )\n\t\t\t\t.not( \".ui-sortable-helper\" )\n\t\t\t\t.not( \".ui-sortable-placeholder\" ), this ] );\n\n\t\tfunction addItems() {\n\t\t\titems.push( this );\n\t\t}\n\t\tfor ( i = queries.length - 1; i >= 0; i-- ) {\n\t\t\tqueries[ i ][ 0 ].each( addItems );\n\t\t}\n\n\t\treturn $( items );\n\n\t},\n\n\t_removeCurrentsFromItems: function() {\n\n\t\tvar list = this.currentItem.find( \":data(\" + this.widgetName + \"-item)\" );\n\n\t\tthis.items = $.grep( this.items, function( item ) {\n\t\t\tfor ( var j = 0; j < list.length; j++ ) {\n\t\t\t\tif ( list[ j ] === item.item[ 0 ] ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} );\n\n\t},\n\n\t_refreshItems: function( event ) {\n\n\t\tthis.items = [];\n\t\tthis.containers = [ this ];\n\n\t\tvar i, j, cur, inst, targetData, _queries, item, queriesLength,\n\t\t\titems = this.items,\n\t\t\tqueries = [ [ $.isFunction( this.options.items ) ?\n\t\t\t\tthis.options.items.call( this.element[ 0 ], event, { item: this.currentItem } ) :\n\t\t\t\t$( this.options.items, this.element ), this ] ],\n\t\t\tconnectWith = this._connectWith();\n\n\t\t//Shouldn't be run the first time through due to massive slow-down\n\t\tif ( connectWith && this.ready ) {\n\t\t\tfor ( i = connectWith.length - 1; i >= 0; i-- ) {\n\t\t\t\tcur = $( connectWith[ i ], this.document[ 0 ] );\n\t\t\t\tfor ( j = cur.length - 1; j >= 0; j-- ) {\n\t\t\t\t\tinst = $.data( cur[ j ], this.widgetFullName );\n\t\t\t\t\tif ( inst && inst !== this && !inst.options.disabled ) {\n\t\t\t\t\t\tqueries.push( [ $.isFunction( inst.options.items ) ?\n\t\t\t\t\t\t\tinst.options.items\n\t\t\t\t\t\t\t\t.call( inst.element[ 0 ], event, { item: this.currentItem } ) :\n\t\t\t\t\t\t\t$( inst.options.items, inst.element ), inst ] );\n\t\t\t\t\t\tthis.containers.push( inst );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor ( i = queries.length - 1; i >= 0; i-- ) {\n\t\t\ttargetData = queries[ i ][ 1 ];\n\t\t\t_queries = queries[ i ][ 0 ];\n\n\t\t\tfor ( j = 0, queriesLength = _queries.length; j < queriesLength; j++ ) {\n\t\t\t\titem = $( _queries[ j ] );\n\n\t\t\t\t// Data for target checking (mouse manager)\n\t\t\t\titem.data( this.widgetName + \"-item\", targetData );\n\n\t\t\t\titems.push( {\n\t\t\t\t\titem: item,\n\t\t\t\t\tinstance: targetData,\n\t\t\t\t\twidth: 0, height: 0,\n\t\t\t\t\tleft: 0, top: 0\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\n\t},\n\n\trefreshPositions: function( fast ) {\n\n\t\t// Determine whether items are being displayed horizontally\n\t\tthis.floating = this.items.length ?\n\t\t\tthis.options.axis === \"x\" || this._isFloating( this.items[ 0 ].item ) :\n\t\t\tfalse;\n\n\t\t//This has to be redone because due to the item being moved out/into the offsetParent,\n\t\t// the offsetParent's position will change\n\t\tif ( this.offsetParent && this.helper ) {\n\t\t\tthis.offset.parent = this._getParentOffset();\n\t\t}\n\n\t\tvar i, item, t, p;\n\n\t\tfor ( i = this.items.length - 1; i >= 0; i-- ) {\n\t\t\titem = this.items[ i ];\n\n\t\t\t//We ignore calculating positions of all connected containers when we're not over them\n\t\t\tif ( item.instance !== this.currentContainer && this.currentContainer &&\n\t\t\t\t\titem.item[ 0 ] !== this.currentItem[ 0 ] ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tt = this.options.toleranceElement ?\n\t\t\t\t$( this.options.toleranceElement, item.item ) :\n\t\t\t\titem.item;\n\n\t\t\tif ( !fast ) {\n\t\t\t\titem.width = t.outerWidth();\n\t\t\t\titem.height = t.outerHeight();\n\t\t\t}\n\n\t\t\tp = t.offset();\n\t\t\titem.left = p.left;\n\t\t\titem.top = p.top;\n\t\t}\n\n\t\tif ( this.options.custom && this.options.custom.refreshContainers ) {\n\t\t\tthis.options.custom.refreshContainers.call( this );\n\t\t} else {\n\t\t\tfor ( i = this.containers.length - 1; i >= 0; i-- ) {\n\t\t\t\tp = this.containers[ i ].element.offset();\n\t\t\t\tthis.containers[ i ].containerCache.left = p.left;\n\t\t\t\tthis.containers[ i ].containerCache.top = p.top;\n\t\t\t\tthis.containers[ i ].containerCache.width =\n\t\t\t\t\tthis.containers[ i ].element.outerWidth();\n\t\t\t\tthis.containers[ i ].containerCache.height =\n\t\t\t\t\tthis.containers[ i ].element.outerHeight();\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t_createPlaceholder: function( that ) {\n\t\tthat = that || this;\n\t\tvar className,\n\t\t\to = that.options;\n\n\t\tif ( !o.placeholder || o.placeholder.constructor === String ) {\n\t\t\tclassName = o.placeholder;\n\t\t\to.placeholder = {\n\t\t\t\telement: function() {\n\n\t\t\t\t\tvar nodeName = that.currentItem[ 0 ].nodeName.toLowerCase(),\n\t\t\t\t\t\telement = $( \"<\" + nodeName + \">\", that.document[ 0 ] );\n\n\t\t\t\t\t\tthat._addClass( element, \"ui-sortable-placeholder\",\n\t\t\t\t\t\t\t\tclassName || that.currentItem[ 0 ].className )\n\t\t\t\t\t\t\t._removeClass( element, \"ui-sortable-helper\" );\n\n\t\t\t\t\tif ( nodeName === \"tbody\" ) {\n\t\t\t\t\t\tthat._createTrPlaceholder(\n\t\t\t\t\t\t\tthat.currentItem.find( \"tr\" ).eq( 0 ),\n\t\t\t\t\t\t\t$( \"<tr>\", that.document[ 0 ] ).appendTo( element )\n\t\t\t\t\t\t);\n\t\t\t\t\t} else if ( nodeName === \"tr\" ) {\n\t\t\t\t\t\tthat._createTrPlaceholder( that.currentItem, element );\n\t\t\t\t\t} else if ( nodeName === \"img\" ) {\n\t\t\t\t\t\telement.attr( \"src\", that.currentItem.attr( \"src\" ) );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !className ) {\n\t\t\t\t\t\telement.css( \"visibility\", \"hidden\" );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn element;\n\t\t\t\t},\n\t\t\t\tupdate: function( container, p ) {\n\n\t\t\t\t\t// 1. If a className is set as 'placeholder option, we don't force sizes -\n\t\t\t\t\t// the class is responsible for that\n\t\t\t\t\t// 2. The option 'forcePlaceholderSize can be enabled to force it even if a\n\t\t\t\t\t// class name is specified\n\t\t\t\t\tif ( className && !o.forcePlaceholderSize ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t//If the element doesn't have a actual height by itself (without styles coming\n\t\t\t\t\t// from a stylesheet), it receives the inline height from the dragged item\n\t\t\t\t\tif ( !p.height() ) {\n\t\t\t\t\t\tp.height(\n\t\t\t\t\t\t\tthat.currentItem.innerHeight() -\n\t\t\t\t\t\t\tparseInt( that.currentItem.css( \"paddingTop\" ) || 0, 10 ) -\n\t\t\t\t\t\t\tparseInt( that.currentItem.css( \"paddingBottom\" ) || 0, 10 ) );\n\t\t\t\t\t}\n\t\t\t\t\tif ( !p.width() ) {\n\t\t\t\t\t\tp.width(\n\t\t\t\t\t\t\tthat.currentItem.innerWidth() -\n\t\t\t\t\t\t\tparseInt( that.currentItem.css( \"paddingLeft\" ) || 0, 10 ) -\n\t\t\t\t\t\t\tparseInt( that.currentItem.css( \"paddingRight\" ) || 0, 10 ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\t//Create the placeholder\n\t\tthat.placeholder = $( o.placeholder.element.call( that.element, that.currentItem ) );\n\n\t\t//Append it after the actual current item\n\t\tthat.currentItem.after( that.placeholder );\n\n\t\t//Update the size of the placeholder (TODO: Logic to fuzzy, see line 316/317)\n\t\to.placeholder.update( that, that.placeholder );\n\n\t},\n\n\t_createTrPlaceholder: function( sourceTr, targetTr ) {\n\t\tvar that = this;\n\n\t\tsourceTr.children().each( function() {\n\t\t\t$( \"<td>&#160;</td>\", that.document[ 0 ] )\n\t\t\t\t.attr( \"colspan\", $( this ).attr( \"colspan\" ) || 1 )\n\t\t\t\t.appendTo( targetTr );\n\t\t} );\n\t},\n\n\t_contactContainers: function( event ) {\n\t\tvar i, j, dist, itemWithLeastDistance, posProperty, sizeProperty, cur, nearBottom,\n\t\t\tfloating, axis,\n\t\t\tinnermostContainer = null,\n\t\t\tinnermostIndex = null;\n\n\t\t// Get innermost container that intersects with item\n\t\tfor ( i = this.containers.length - 1; i >= 0; i-- ) {\n\n\t\t\t// Never consider a container that's located within the item itself\n\t\t\tif ( $.contains( this.currentItem[ 0 ], this.containers[ i ].element[ 0 ] ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( this._intersectsWith( this.containers[ i ].containerCache ) ) {\n\n\t\t\t\t// If we've already found a container and it's more \"inner\" than this, then continue\n\t\t\t\tif ( innermostContainer &&\n\t\t\t\t\t\t$.contains(\n\t\t\t\t\t\t\tthis.containers[ i ].element[ 0 ],\n\t\t\t\t\t\t\tinnermostContainer.element[ 0 ] ) ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tinnermostContainer = this.containers[ i ];\n\t\t\t\tinnermostIndex = i;\n\n\t\t\t} else {\n\n\t\t\t\t// container doesn't intersect. trigger \"out\" event if necessary\n\t\t\t\tif ( this.containers[ i ].containerCache.over ) {\n\t\t\t\t\tthis.containers[ i ]._trigger( \"out\", event, this._uiHash( this ) );\n\t\t\t\t\tthis.containers[ i ].containerCache.over = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\t// If no intersecting containers found, return\n\t\tif ( !innermostContainer ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Move the item into the container if it's not there already\n\t\tif ( this.containers.length === 1 ) {\n\t\t\tif ( !this.containers[ innermostIndex ].containerCache.over ) {\n\t\t\t\tthis.containers[ innermostIndex ]._trigger( \"over\", event, this._uiHash( this ) );\n\t\t\t\tthis.containers[ innermostIndex ].containerCache.over = 1;\n\t\t\t}\n\t\t} else {\n\n\t\t\t// When entering a new container, we will find the item with the least distance and\n\t\t\t// append our item near it\n\t\t\tdist = 10000;\n\t\t\titemWithLeastDistance = null;\n\t\t\tfloating = innermostContainer.floating || this._isFloating( this.currentItem );\n\t\t\tposProperty = floating ? \"left\" : \"top\";\n\t\t\tsizeProperty = floating ? \"width\" : \"height\";\n\t\t\taxis = floating ? \"pageX\" : \"pageY\";\n\n\t\t\tfor ( j = this.items.length - 1; j >= 0; j-- ) {\n\t\t\t\tif ( !$.contains(\n\t\t\t\t\t\tthis.containers[ innermostIndex ].element[ 0 ], this.items[ j ].item[ 0 ] )\n\t\t\t\t) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif ( this.items[ j ].item[ 0 ] === this.currentItem[ 0 ] ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tcur = this.items[ j ].item.offset()[ posProperty ];\n\t\t\t\tnearBottom = false;\n\t\t\t\tif ( event[ axis ] - cur > this.items[ j ][ sizeProperty ] / 2 ) {\n\t\t\t\t\tnearBottom = true;\n\t\t\t\t}\n\n\t\t\t\tif ( Math.abs( event[ axis ] - cur ) < dist ) {\n\t\t\t\t\tdist = Math.abs( event[ axis ] - cur );\n\t\t\t\t\titemWithLeastDistance = this.items[ j ];\n\t\t\t\t\tthis.direction = nearBottom ? \"up\" : \"down\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//Check if dropOnEmpty is enabled\n\t\t\tif ( !itemWithLeastDistance && !this.options.dropOnEmpty ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( this.currentContainer === this.containers[ innermostIndex ] ) {\n\t\t\t\tif ( !this.currentContainer.containerCache.over ) {\n\t\t\t\t\tthis.containers[ innermostIndex ]._trigger( \"over\", event, this._uiHash() );\n\t\t\t\t\tthis.currentContainer.containerCache.over = 1;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\titemWithLeastDistance ?\n\t\t\t\tthis._rearrange( event, itemWithLeastDistance, null, true ) :\n\t\t\t\tthis._rearrange( event, null, this.containers[ innermostIndex ].element, true );\n\t\t\tthis._trigger( \"change\", event, this._uiHash() );\n\t\t\tthis.containers[ innermostIndex ]._trigger( \"change\", event, this._uiHash( this ) );\n\t\t\tthis.currentContainer = this.containers[ innermostIndex ];\n\n\t\t\t//Update the placeholder\n\t\t\tthis.options.placeholder.update( this.currentContainer, this.placeholder );\n\n\t\t\tthis.containers[ innermostIndex ]._trigger( \"over\", event, this._uiHash( this ) );\n\t\t\tthis.containers[ innermostIndex ].containerCache.over = 1;\n\t\t}\n\n\t},\n\n\t_createHelper: function( event ) {\n\n\t\tvar o = this.options,\n\t\t\thelper = $.isFunction( o.helper ) ?\n\t\t\t\t$( o.helper.apply( this.element[ 0 ], [ event, this.currentItem ] ) ) :\n\t\t\t\t( o.helper === \"clone\" ? this.currentItem.clone() : this.currentItem );\n\n\t\t//Add the helper to the DOM if that didn't happen already\n\t\tif ( !helper.parents( \"body\" ).length ) {\n\t\t\t$( o.appendTo !== \"parent\" ?\n\t\t\t\to.appendTo :\n\t\t\t\tthis.currentItem[ 0 ].parentNode )[ 0 ].appendChild( helper[ 0 ] );\n\t\t}\n\n\t\tif ( helper[ 0 ] === this.currentItem[ 0 ] ) {\n\t\t\tthis._storedCSS = {\n\t\t\t\twidth: this.currentItem[ 0 ].style.width,\n\t\t\t\theight: this.currentItem[ 0 ].style.height,\n\t\t\t\tposition: this.currentItem.css( \"position\" ),\n\t\t\t\ttop: this.currentItem.css( \"top\" ),\n\t\t\t\tleft: this.currentItem.css( \"left\" )\n\t\t\t};\n\t\t}\n\n\t\tif ( !helper[ 0 ].style.width || o.forceHelperSize ) {\n\t\t\thelper.width( this.currentItem.width() );\n\t\t}\n\t\tif ( !helper[ 0 ].style.height || o.forceHelperSize ) {\n\t\t\thelper.height( this.currentItem.height() );\n\t\t}\n\n\t\treturn helper;\n\n\t},\n\n\t_adjustOffsetFromHelper: function( obj ) {\n\t\tif ( typeof obj === \"string\" ) {\n\t\t\tobj = obj.split( \" \" );\n\t\t}\n\t\tif ( $.isArray( obj ) ) {\n\t\t\tobj = { left: +obj[ 0 ], top: +obj[ 1 ] || 0 };\n\t\t}\n\t\tif ( \"left\" in obj ) {\n\t\t\tthis.offset.click.left = obj.left + this.margins.left;\n\t\t}\n\t\tif ( \"right\" in obj ) {\n\t\t\tthis.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;\n\t\t}\n\t\tif ( \"top\" in obj ) {\n\t\t\tthis.offset.click.top = obj.top + this.margins.top;\n\t\t}\n\t\tif ( \"bottom\" in obj ) {\n\t\t\tthis.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;\n\t\t}\n\t},\n\n\t_getParentOffset: function() {\n\n\t\t//Get the offsetParent and cache its position\n\t\tthis.offsetParent = this.helper.offsetParent();\n\t\tvar po = this.offsetParent.offset();\n\n\t\t// This is a special case where we need to modify a offset calculated on start, since the\n\t\t// following happened:\n\t\t// 1. The position of the helper is absolute, so it's position is calculated based on the\n\t\t// next positioned parent\n\t\t// 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't\n\t\t// the document, which means that the scroll is included in the initial calculation of the\n\t\t// offset of the parent, and never recalculated upon drag\n\t\tif ( this.cssPosition === \"absolute\" && this.scrollParent[ 0 ] !== this.document[ 0 ] &&\n\t\t\t\t$.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) {\n\t\t\tpo.left += this.scrollParent.scrollLeft();\n\t\t\tpo.top += this.scrollParent.scrollTop();\n\t\t}\n\n\t\t// This needs to be actually done for all browsers, since pageX/pageY includes this\n\t\t// information with an ugly IE fix\n\t\tif ( this.offsetParent[ 0 ] === this.document[ 0 ].body ||\n\t\t\t\t( this.offsetParent[ 0 ].tagName &&\n\t\t\t\tthis.offsetParent[ 0 ].tagName.toLowerCase() === \"html\" && $.ui.ie ) ) {\n\t\t\tpo = { top: 0, left: 0 };\n\t\t}\n\n\t\treturn {\n\t\t\ttop: po.top + ( parseInt( this.offsetParent.css( \"borderTopWidth\" ), 10 ) || 0 ),\n\t\t\tleft: po.left + ( parseInt( this.offsetParent.css( \"borderLeftWidth\" ), 10 ) || 0 )\n\t\t};\n\n\t},\n\n\t_getRelativeOffset: function() {\n\n\t\tif ( this.cssPosition === \"relative\" ) {\n\t\t\tvar p = this.currentItem.position();\n\t\t\treturn {\n\t\t\t\ttop: p.top - ( parseInt( this.helper.css( \"top\" ), 10 ) || 0 ) +\n\t\t\t\t\tthis.scrollParent.scrollTop(),\n\t\t\t\tleft: p.left - ( parseInt( this.helper.css( \"left\" ), 10 ) || 0 ) +\n\t\t\t\t\tthis.scrollParent.scrollLeft()\n\t\t\t};\n\t\t} else {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t},\n\n\t_cacheMargins: function() {\n\t\tthis.margins = {\n\t\t\tleft: ( parseInt( this.currentItem.css( \"marginLeft\" ), 10 ) || 0 ),\n\t\t\ttop: ( parseInt( this.currentItem.css( \"marginTop\" ), 10 ) || 0 )\n\t\t};\n\t},\n\n\t_cacheHelperProportions: function() {\n\t\tthis.helperProportions = {\n\t\t\twidth: this.helper.outerWidth(),\n\t\t\theight: this.helper.outerHeight()\n\t\t};\n\t},\n\n\t_setContainment: function() {\n\n\t\tvar ce, co, over,\n\t\t\to = this.options;\n\t\tif ( o.containment === \"parent\" ) {\n\t\t\to.containment = this.helper[ 0 ].parentNode;\n\t\t}\n\t\tif ( o.containment === \"document\" || o.containment === \"window\" ) {\n\t\t\tthis.containment = [\n\t\t\t\t0 - this.offset.relative.left - this.offset.parent.left,\n\t\t\t\t0 - this.offset.relative.top - this.offset.parent.top,\n\t\t\t\to.containment === \"document\" ?\n\t\t\t\t\tthis.document.width() :\n\t\t\t\t\tthis.window.width() - this.helperProportions.width - this.margins.left,\n\t\t\t\t( o.containment === \"document\" ?\n\t\t\t\t\t( this.document.height() || document.body.parentNode.scrollHeight ) :\n\t\t\t\t\tthis.window.height() || this.document[ 0 ].body.parentNode.scrollHeight\n\t\t\t\t) - this.helperProportions.height - this.margins.top\n\t\t\t];\n\t\t}\n\n\t\tif ( !( /^(document|window|parent)$/ ).test( o.containment ) ) {\n\t\t\tce = $( o.containment )[ 0 ];\n\t\t\tco = $( o.containment ).offset();\n\t\t\tover = ( $( ce ).css( \"overflow\" ) !== \"hidden\" );\n\n\t\t\tthis.containment = [\n\t\t\t\tco.left + ( parseInt( $( ce ).css( \"borderLeftWidth\" ), 10 ) || 0 ) +\n\t\t\t\t\t( parseInt( $( ce ).css( \"paddingLeft\" ), 10 ) || 0 ) - this.margins.left,\n\t\t\t\tco.top + ( parseInt( $( ce ).css( \"borderTopWidth\" ), 10 ) || 0 ) +\n\t\t\t\t\t( parseInt( $( ce ).css( \"paddingTop\" ), 10 ) || 0 ) - this.margins.top,\n\t\t\t\tco.left + ( over ? Math.max( ce.scrollWidth, ce.offsetWidth ) : ce.offsetWidth ) -\n\t\t\t\t\t( parseInt( $( ce ).css( \"borderLeftWidth\" ), 10 ) || 0 ) -\n\t\t\t\t\t( parseInt( $( ce ).css( \"paddingRight\" ), 10 ) || 0 ) -\n\t\t\t\t\tthis.helperProportions.width - this.margins.left,\n\t\t\t\tco.top + ( over ? Math.max( ce.scrollHeight, ce.offsetHeight ) : ce.offsetHeight ) -\n\t\t\t\t\t( parseInt( $( ce ).css( \"borderTopWidth\" ), 10 ) || 0 ) -\n\t\t\t\t\t( parseInt( $( ce ).css( \"paddingBottom\" ), 10 ) || 0 ) -\n\t\t\t\t\tthis.helperProportions.height - this.margins.top\n\t\t\t];\n\t\t}\n\n\t},\n\n\t_convertPositionTo: function( d, pos ) {\n\n\t\tif ( !pos ) {\n\t\t\tpos = this.position;\n\t\t}\n\t\tvar mod = d === \"absolute\" ? 1 : -1,\n\t\t\tscroll = this.cssPosition === \"absolute\" &&\n\t\t\t\t!( this.scrollParent[ 0 ] !== this.document[ 0 ] &&\n\t\t\t\t$.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) ?\n\t\t\t\t\tthis.offsetParent :\n\t\t\t\t\tthis.scrollParent,\n\t\t\tscrollIsRootNode = ( /(html|body)/i ).test( scroll[ 0 ].tagName );\n\n\t\treturn {\n\t\t\ttop: (\n\n\t\t\t\t// The absolute mouse position\n\t\t\t\tpos.top\t+\n\n\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.relative.top * mod +\n\n\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\tthis.offset.parent.top * mod -\n\t\t\t\t( ( this.cssPosition === \"fixed\" ?\n\t\t\t\t\t-this.scrollParent.scrollTop() :\n\t\t\t\t\t( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod )\n\t\t\t),\n\t\t\tleft: (\n\n\t\t\t\t// The absolute mouse position\n\t\t\t\tpos.left +\n\n\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.relative.left * mod +\n\n\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\tthis.offset.parent.left * mod\t-\n\t\t\t\t( ( this.cssPosition === \"fixed\" ?\n\t\t\t\t\t-this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 :\n\t\t\t\t\tscroll.scrollLeft() ) * mod )\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_generatePosition: function( event ) {\n\n\t\tvar top, left,\n\t\t\to = this.options,\n\t\t\tpageX = event.pageX,\n\t\t\tpageY = event.pageY,\n\t\t\tscroll = this.cssPosition === \"absolute\" &&\n\t\t\t\t!( this.scrollParent[ 0 ] !== this.document[ 0 ] &&\n\t\t\t\t$.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) ?\n\t\t\t\t\tthis.offsetParent :\n\t\t\t\t\tthis.scrollParent,\n\t\t\t\tscrollIsRootNode = ( /(html|body)/i ).test( scroll[ 0 ].tagName );\n\n\t\t// This is another very weird special case that only happens for relative elements:\n\t\t// 1. If the css position is relative\n\t\t// 2. and the scroll parent is the document or similar to the offset parent\n\t\t// we have to refresh the relative offset during the scroll so there are no jumps\n\t\tif ( this.cssPosition === \"relative\" && !( this.scrollParent[ 0 ] !== this.document[ 0 ] &&\n\t\t\t\tthis.scrollParent[ 0 ] !== this.offsetParent[ 0 ] ) ) {\n\t\t\tthis.offset.relative = this._getRelativeOffset();\n\t\t}\n\n\t\t/*\n\t\t * - Position constraining -\n\t\t * Constrain the position to a mix of grid, containment.\n\t\t */\n\n\t\tif ( this.originalPosition ) { //If we are not dragging yet, we won't check for options\n\n\t\t\tif ( this.containment ) {\n\t\t\t\tif ( event.pageX - this.offset.click.left < this.containment[ 0 ] ) {\n\t\t\t\t\tpageX = this.containment[ 0 ] + this.offset.click.left;\n\t\t\t\t}\n\t\t\t\tif ( event.pageY - this.offset.click.top < this.containment[ 1 ] ) {\n\t\t\t\t\tpageY = this.containment[ 1 ] + this.offset.click.top;\n\t\t\t\t}\n\t\t\t\tif ( event.pageX - this.offset.click.left > this.containment[ 2 ] ) {\n\t\t\t\t\tpageX = this.containment[ 2 ] + this.offset.click.left;\n\t\t\t\t}\n\t\t\t\tif ( event.pageY - this.offset.click.top > this.containment[ 3 ] ) {\n\t\t\t\t\tpageY = this.containment[ 3 ] + this.offset.click.top;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( o.grid ) {\n\t\t\t\ttop = this.originalPageY + Math.round( ( pageY - this.originalPageY ) /\n\t\t\t\t\to.grid[ 1 ] ) * o.grid[ 1 ];\n\t\t\t\tpageY = this.containment ?\n\t\t\t\t\t( ( top - this.offset.click.top >= this.containment[ 1 ] &&\n\t\t\t\t\t\ttop - this.offset.click.top <= this.containment[ 3 ] ) ?\n\t\t\t\t\t\t\ttop :\n\t\t\t\t\t\t\t( ( top - this.offset.click.top >= this.containment[ 1 ] ) ?\n\t\t\t\t\t\t\t\ttop - o.grid[ 1 ] : top + o.grid[ 1 ] ) ) :\n\t\t\t\t\t\t\t\ttop;\n\n\t\t\t\tleft = this.originalPageX + Math.round( ( pageX - this.originalPageX ) /\n\t\t\t\t\to.grid[ 0 ] ) * o.grid[ 0 ];\n\t\t\t\tpageX = this.containment ?\n\t\t\t\t\t( ( left - this.offset.click.left >= this.containment[ 0 ] &&\n\t\t\t\t\t\tleft - this.offset.click.left <= this.containment[ 2 ] ) ?\n\t\t\t\t\t\t\tleft :\n\t\t\t\t\t\t\t( ( left - this.offset.click.left >= this.containment[ 0 ] ) ?\n\t\t\t\t\t\t\t\tleft - o.grid[ 0 ] : left + o.grid[ 0 ] ) ) :\n\t\t\t\t\t\t\t\tleft;\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttop: (\n\n\t\t\t\t// The absolute mouse position\n\t\t\t\tpageY -\n\n\t\t\t\t// Click offset (relative to the element)\n\t\t\t\tthis.offset.click.top -\n\n\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.relative.top -\n\n\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\tthis.offset.parent.top +\n\t\t\t\t( ( this.cssPosition === \"fixed\" ?\n\t\t\t\t\t-this.scrollParent.scrollTop() :\n\t\t\t\t\t( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) )\n\t\t\t),\n\t\t\tleft: (\n\n\t\t\t\t// The absolute mouse position\n\t\t\t\tpageX -\n\n\t\t\t\t// Click offset (relative to the element)\n\t\t\t\tthis.offset.click.left -\n\n\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.relative.left -\n\n\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\tthis.offset.parent.left +\n\t\t\t\t( ( this.cssPosition === \"fixed\" ?\n\t\t\t\t\t-this.scrollParent.scrollLeft() :\n\t\t\t\t\tscrollIsRootNode ? 0 : scroll.scrollLeft() ) )\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_rearrange: function( event, i, a, hardRefresh ) {\n\n\t\ta ? a[ 0 ].appendChild( this.placeholder[ 0 ] ) :\n\t\t\ti.item[ 0 ].parentNode.insertBefore( this.placeholder[ 0 ],\n\t\t\t\t( this.direction === \"down\" ? i.item[ 0 ] : i.item[ 0 ].nextSibling ) );\n\n\t\t//Various things done here to improve the performance:\n\t\t// 1. we create a setTimeout, that calls refreshPositions\n\t\t// 2. on the instance, we have a counter variable, that get's higher after every append\n\t\t// 3. on the local scope, we copy the counter variable, and check in the timeout,\n\t\t// if it's still the same\n\t\t// 4. this lets only the last addition to the timeout stack through\n\t\tthis.counter = this.counter ? ++this.counter : 1;\n\t\tvar counter = this.counter;\n\n\t\tthis._delay( function() {\n\t\t\tif ( counter === this.counter ) {\n\n\t\t\t\t//Precompute after each DOM insertion, NOT on mousemove\n\t\t\t\tthis.refreshPositions( !hardRefresh );\n\t\t\t}\n\t\t} );\n\n\t},\n\n\t_clear: function( event, noPropagation ) {\n\n\t\tthis.reverting = false;\n\n\t\t// We delay all events that have to be triggered to after the point where the placeholder\n\t\t// has been removed and everything else normalized again\n\t\tvar i,\n\t\t\tdelayedTriggers = [];\n\n\t\t// We first have to update the dom position of the actual currentItem\n\t\t// Note: don't do it if the current item is already removed (by a user), or it gets\n\t\t// reappended (see #4088)\n\t\tif ( !this._noFinalSort && this.currentItem.parent().length ) {\n\t\t\tthis.placeholder.before( this.currentItem );\n\t\t}\n\t\tthis._noFinalSort = null;\n\n\t\tif ( this.helper[ 0 ] === this.currentItem[ 0 ] ) {\n\t\t\tfor ( i in this._storedCSS ) {\n\t\t\t\tif ( this._storedCSS[ i ] === \"auto\" || this._storedCSS[ i ] === \"static\" ) {\n\t\t\t\t\tthis._storedCSS[ i ] = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.currentItem.css( this._storedCSS );\n\t\t\tthis._removeClass( this.currentItem, \"ui-sortable-helper\" );\n\t\t} else {\n\t\t\tthis.currentItem.show();\n\t\t}\n\n\t\tif ( this.fromOutside && !noPropagation ) {\n\t\t\tdelayedTriggers.push( function( event ) {\n\t\t\t\tthis._trigger( \"receive\", event, this._uiHash( this.fromOutside ) );\n\t\t\t} );\n\t\t}\n\t\tif ( ( this.fromOutside ||\n\t\t\t\tthis.domPosition.prev !==\n\t\t\t\tthis.currentItem.prev().not( \".ui-sortable-helper\" )[ 0 ] ||\n\t\t\t\tthis.domPosition.parent !== this.currentItem.parent()[ 0 ] ) && !noPropagation ) {\n\n\t\t\t// Trigger update callback if the DOM position has changed\n\t\t\tdelayedTriggers.push( function( event ) {\n\t\t\t\tthis._trigger( \"update\", event, this._uiHash() );\n\t\t\t} );\n\t\t}\n\n\t\t// Check if the items Container has Changed and trigger appropriate\n\t\t// events.\n\t\tif ( this !== this.currentContainer ) {\n\t\t\tif ( !noPropagation ) {\n\t\t\t\tdelayedTriggers.push( function( event ) {\n\t\t\t\t\tthis._trigger( \"remove\", event, this._uiHash() );\n\t\t\t\t} );\n\t\t\t\tdelayedTriggers.push( ( function( c ) {\n\t\t\t\t\treturn function( event ) {\n\t\t\t\t\t\tc._trigger( \"receive\", event, this._uiHash( this ) );\n\t\t\t\t\t};\n\t\t\t\t} ).call( this, this.currentContainer ) );\n\t\t\t\tdelayedTriggers.push( ( function( c ) {\n\t\t\t\t\treturn function( event ) {\n\t\t\t\t\t\tc._trigger( \"update\", event, this._uiHash( this ) );\n\t\t\t\t\t};\n\t\t\t\t} ).call( this, this.currentContainer ) );\n\t\t\t}\n\t\t}\n\n\t\t//Post events to containers\n\t\tfunction delayEvent( type, instance, container ) {\n\t\t\treturn function( event ) {\n\t\t\t\tcontainer._trigger( type, event, instance._uiHash( instance ) );\n\t\t\t};\n\t\t}\n\t\tfor ( i = this.containers.length - 1; i >= 0; i-- ) {\n\t\t\tif ( !noPropagation ) {\n\t\t\t\tdelayedTriggers.push( delayEvent( \"deactivate\", this, this.containers[ i ] ) );\n\t\t\t}\n\t\t\tif ( this.containers[ i ].containerCache.over ) {\n\t\t\t\tdelayedTriggers.push( delayEvent( \"out\", this, this.containers[ i ] ) );\n\t\t\t\tthis.containers[ i ].containerCache.over = 0;\n\t\t\t}\n\t\t}\n\n\t\t//Do what was originally in plugins\n\t\tif ( this.storedCursor ) {\n\t\t\tthis.document.find( \"body\" ).css( \"cursor\", this.storedCursor );\n\t\t\tthis.storedStylesheet.remove();\n\t\t}\n\t\tif ( this._storedOpacity ) {\n\t\t\tthis.helper.css( \"opacity\", this._storedOpacity );\n\t\t}\n\t\tif ( this._storedZIndex ) {\n\t\t\tthis.helper.css( \"zIndex\", this._storedZIndex === \"auto\" ? \"\" : this._storedZIndex );\n\t\t}\n\n\t\tthis.dragging = false;\n\n\t\tif ( !noPropagation ) {\n\t\t\tthis._trigger( \"beforeStop\", event, this._uiHash() );\n\t\t}\n\n\t\t//$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately,\n\t\t// it unbinds ALL events from the original node!\n\t\tthis.placeholder[ 0 ].parentNode.removeChild( this.placeholder[ 0 ] );\n\n\t\tif ( !this.cancelHelperRemoval ) {\n\t\t\tif ( this.helper[ 0 ] !== this.currentItem[ 0 ] ) {\n\t\t\t\tthis.helper.remove();\n\t\t\t}\n\t\t\tthis.helper = null;\n\t\t}\n\n\t\tif ( !noPropagation ) {\n\t\t\tfor ( i = 0; i < delayedTriggers.length; i++ ) {\n\n\t\t\t\t// Trigger all delayed events\n\t\t\t\tdelayedTriggers[ i ].call( this, event );\n\t\t\t}\n\t\t\tthis._trigger( \"stop\", event, this._uiHash() );\n\t\t}\n\n\t\tthis.fromOutside = false;\n\t\treturn !this.cancelHelperRemoval;\n\n\t},\n\n\t_trigger: function() {\n\t\tif ( $.Widget.prototype._trigger.apply( this, arguments ) === false ) {\n\t\t\tthis.cancel();\n\t\t}\n\t},\n\n\t_uiHash: function( _inst ) {\n\t\tvar inst = _inst || this;\n\t\treturn {\n\t\t\thelper: inst.helper,\n\t\t\tplaceholder: inst.placeholder || $( [] ),\n\t\t\tposition: inst.position,\n\t\t\toriginalPosition: inst.originalPosition,\n\t\t\toffset: inst.positionAbs,\n\t\t\titem: inst.currentItem,\n\t\t\tsender: _inst ? _inst.element : null\n\t\t};\n\t}\n\n} );\n\n\n/*!\n * jQuery UI Spinner 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Spinner\n//>>group: Widgets\n//>>description: Displays buttons to easily input numbers via the keyboard or mouse.\n//>>docs: http://api.jqueryui.com/spinner/\n//>>demos: http://jqueryui.com/spinner/\n//>>css.structure: ../../themes/base/core.css\n//>>css.structure: ../../themes/base/spinner.css\n//>>css.theme: ../../themes/base/theme.css\n\n\n\nfunction spinnerModifer( fn ) {\n\treturn function() {\n\t\tvar previous = this.element.val();\n\t\tfn.apply( this, arguments );\n\t\tthis._refresh();\n\t\tif ( previous !== this.element.val() ) {\n\t\t\tthis._trigger( \"change\" );\n\t\t}\n\t};\n}\n\n$.widget( \"ui.spinner\", {\n\tversion: \"1.12.1\",\n\tdefaultElement: \"<input>\",\n\twidgetEventPrefix: \"spin\",\n\toptions: {\n\t\tclasses: {\n\t\t\t\"ui-spinner\": \"ui-corner-all\",\n\t\t\t\"ui-spinner-down\": \"ui-corner-br\",\n\t\t\t\"ui-spinner-up\": \"ui-corner-tr\"\n\t\t},\n\t\tculture: null,\n\t\ticons: {\n\t\t\tdown: \"ui-icon-triangle-1-s\",\n\t\t\tup: \"ui-icon-triangle-1-n\"\n\t\t},\n\t\tincremental: true,\n\t\tmax: null,\n\t\tmin: null,\n\t\tnumberFormat: null,\n\t\tpage: 10,\n\t\tstep: 1,\n\n\t\tchange: null,\n\t\tspin: null,\n\t\tstart: null,\n\t\tstop: null\n\t},\n\n\t_create: function() {\n\n\t\t// handle string values that need to be parsed\n\t\tthis._setOption( \"max\", this.options.max );\n\t\tthis._setOption( \"min\", this.options.min );\n\t\tthis._setOption( \"step\", this.options.step );\n\n\t\t// Only format if there is a value, prevents the field from being marked\n\t\t// as invalid in Firefox, see #9573.\n\t\tif ( this.value() !== \"\" ) {\n\n\t\t\t// Format the value, but don't constrain.\n\t\t\tthis._value( this.element.val(), true );\n\t\t}\n\n\t\tthis._draw();\n\t\tthis._on( this._events );\n\t\tthis._refresh();\n\n\t\t// Turning off autocomplete prevents the browser from remembering the\n\t\t// value when navigating through history, so we re-enable autocomplete\n\t\t// if the page is unloaded before the widget is destroyed. #7790\n\t\tthis._on( this.window, {\n\t\t\tbeforeunload: function() {\n\t\t\t\tthis.element.removeAttr( \"autocomplete\" );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_getCreateOptions: function() {\n\t\tvar options = this._super();\n\t\tvar element = this.element;\n\n\t\t$.each( [ \"min\", \"max\", \"step\" ], function( i, option ) {\n\t\t\tvar value = element.attr( option );\n\t\t\tif ( value != null && value.length ) {\n\t\t\t\toptions[ option ] = value;\n\t\t\t}\n\t\t} );\n\n\t\treturn options;\n\t},\n\n\t_events: {\n\t\tkeydown: function( event ) {\n\t\t\tif ( this._start( event ) && this._keydown( event ) ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t},\n\t\tkeyup: \"_stop\",\n\t\tfocus: function() {\n\t\t\tthis.previous = this.element.val();\n\t\t},\n\t\tblur: function( event ) {\n\t\t\tif ( this.cancelBlur ) {\n\t\t\t\tdelete this.cancelBlur;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._stop();\n\t\t\tthis._refresh();\n\t\t\tif ( this.previous !== this.element.val() ) {\n\t\t\t\tthis._trigger( \"change\", event );\n\t\t\t}\n\t\t},\n\t\tmousewheel: function( event, delta ) {\n\t\t\tif ( !delta ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( !this.spinning && !this._start( event ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tthis._spin( ( delta > 0 ? 1 : -1 ) * this.options.step, event );\n\t\t\tclearTimeout( this.mousewheelTimer );\n\t\t\tthis.mousewheelTimer = this._delay( function() {\n\t\t\t\tif ( this.spinning ) {\n\t\t\t\t\tthis._stop( event );\n\t\t\t\t}\n\t\t\t}, 100 );\n\t\t\tevent.preventDefault();\n\t\t},\n\t\t\"mousedown .ui-spinner-button\": function( event ) {\n\t\t\tvar previous;\n\n\t\t\t// We never want the buttons to have focus; whenever the user is\n\t\t\t// interacting with the spinner, the focus should be on the input.\n\t\t\t// If the input is focused then this.previous is properly set from\n\t\t\t// when the input first received focus. If the input is not focused\n\t\t\t// then we need to set this.previous based on the value before spinning.\n\t\t\tprevious = this.element[ 0 ] === $.ui.safeActiveElement( this.document[ 0 ] ) ?\n\t\t\t\tthis.previous : this.element.val();\n\t\t\tfunction checkFocus() {\n\t\t\t\tvar isActive = this.element[ 0 ] === $.ui.safeActiveElement( this.document[ 0 ] );\n\t\t\t\tif ( !isActive ) {\n\t\t\t\t\tthis.element.trigger( \"focus\" );\n\t\t\t\t\tthis.previous = previous;\n\n\t\t\t\t\t// support: IE\n\t\t\t\t\t// IE sets focus asynchronously, so we need to check if focus\n\t\t\t\t\t// moved off of the input because the user clicked on the button.\n\t\t\t\t\tthis._delay( function() {\n\t\t\t\t\t\tthis.previous = previous;\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Ensure focus is on (or stays on) the text field\n\t\t\tevent.preventDefault();\n\t\t\tcheckFocus.call( this );\n\n\t\t\t// Support: IE\n\t\t\t// IE doesn't prevent moving focus even with event.preventDefault()\n\t\t\t// so we set a flag to know when we should ignore the blur event\n\t\t\t// and check (again) if focus moved off of the input.\n\t\t\tthis.cancelBlur = true;\n\t\t\tthis._delay( function() {\n\t\t\t\tdelete this.cancelBlur;\n\t\t\t\tcheckFocus.call( this );\n\t\t\t} );\n\n\t\t\tif ( this._start( event ) === false ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._repeat( null, $( event.currentTarget )\n\t\t\t\t.hasClass( \"ui-spinner-up\" ) ? 1 : -1, event );\n\t\t},\n\t\t\"mouseup .ui-spinner-button\": \"_stop\",\n\t\t\"mouseenter .ui-spinner-button\": function( event ) {\n\n\t\t\t// button will add ui-state-active if mouse was down while mouseleave and kept down\n\t\t\tif ( !$( event.currentTarget ).hasClass( \"ui-state-active\" ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( this._start( event ) === false ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis._repeat( null, $( event.currentTarget )\n\t\t\t\t.hasClass( \"ui-spinner-up\" ) ? 1 : -1, event );\n\t\t},\n\n\t\t// TODO: do we really want to consider this a stop?\n\t\t// shouldn't we just stop the repeater and wait until mouseup before\n\t\t// we trigger the stop event?\n\t\t\"mouseleave .ui-spinner-button\": \"_stop\"\n\t},\n\n\t// Support mobile enhanced option and make backcompat more sane\n\t_enhance: function() {\n\t\tthis.uiSpinner = this.element\n\t\t\t.attr( \"autocomplete\", \"off\" )\n\t\t\t.wrap( \"<span>\" )\n\t\t\t.parent()\n\n\t\t\t\t// Add buttons\n\t\t\t\t.append(\n\t\t\t\t\t\"<a></a><a></a>\"\n\t\t\t\t);\n\t},\n\n\t_draw: function() {\n\t\tthis._enhance();\n\n\t\tthis._addClass( this.uiSpinner, \"ui-spinner\", \"ui-widget ui-widget-content\" );\n\t\tthis._addClass( \"ui-spinner-input\" );\n\n\t\tthis.element.attr( \"role\", \"spinbutton\" );\n\n\t\t// Button bindings\n\t\tthis.buttons = this.uiSpinner.children( \"a\" )\n\t\t\t.attr( \"tabIndex\", -1 )\n\t\t\t.attr( \"aria-hidden\", true )\n\t\t\t.button( {\n\t\t\t\tclasses: {\n\t\t\t\t\t\"ui-button\": \"\"\n\t\t\t\t}\n\t\t\t} );\n\n\t\t// TODO: Right now button does not support classes this is already updated in button PR\n\t\tthis._removeClass( this.buttons, \"ui-corner-all\" );\n\n\t\tthis._addClass( this.buttons.first(), \"ui-spinner-button ui-spinner-up\" );\n\t\tthis._addClass( this.buttons.last(), \"ui-spinner-button ui-spinner-down\" );\n\t\tthis.buttons.first().button( {\n\t\t\t\"icon\": this.options.icons.up,\n\t\t\t\"showLabel\": false\n\t\t} );\n\t\tthis.buttons.last().button( {\n\t\t\t\"icon\": this.options.icons.down,\n\t\t\t\"showLabel\": false\n\t\t} );\n\n\t\t// IE 6 doesn't understand height: 50% for the buttons\n\t\t// unless the wrapper has an explicit height\n\t\tif ( this.buttons.height() > Math.ceil( this.uiSpinner.height() * 0.5 ) &&\n\t\t\t\tthis.uiSpinner.height() > 0 ) {\n\t\t\tthis.uiSpinner.height( this.uiSpinner.height() );\n\t\t}\n\t},\n\n\t_keydown: function( event ) {\n\t\tvar options = this.options,\n\t\t\tkeyCode = $.ui.keyCode;\n\n\t\tswitch ( event.keyCode ) {\n\t\tcase keyCode.UP:\n\t\t\tthis._repeat( null, 1, event );\n\t\t\treturn true;\n\t\tcase keyCode.DOWN:\n\t\t\tthis._repeat( null, -1, event );\n\t\t\treturn true;\n\t\tcase keyCode.PAGE_UP:\n\t\t\tthis._repeat( null, options.page, event );\n\t\t\treturn true;\n\t\tcase keyCode.PAGE_DOWN:\n\t\t\tthis._repeat( null, -options.page, event );\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_start: function( event ) {\n\t\tif ( !this.spinning && this._trigger( \"start\", event ) === false ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( !this.counter ) {\n\t\t\tthis.counter = 1;\n\t\t}\n\t\tthis.spinning = true;\n\t\treturn true;\n\t},\n\n\t_repeat: function( i, steps, event ) {\n\t\ti = i || 500;\n\n\t\tclearTimeout( this.timer );\n\t\tthis.timer = this._delay( function() {\n\t\t\tthis._repeat( 40, steps, event );\n\t\t}, i );\n\n\t\tthis._spin( steps * this.options.step, event );\n\t},\n\n\t_spin: function( step, event ) {\n\t\tvar value = this.value() || 0;\n\n\t\tif ( !this.counter ) {\n\t\t\tthis.counter = 1;\n\t\t}\n\n\t\tvalue = this._adjustValue( value + step * this._increment( this.counter ) );\n\n\t\tif ( !this.spinning || this._trigger( \"spin\", event, { value: value } ) !== false ) {\n\t\t\tthis._value( value );\n\t\t\tthis.counter++;\n\t\t}\n\t},\n\n\t_increment: function( i ) {\n\t\tvar incremental = this.options.incremental;\n\n\t\tif ( incremental ) {\n\t\t\treturn $.isFunction( incremental ) ?\n\t\t\t\tincremental( i ) :\n\t\t\t\tMath.floor( i * i * i / 50000 - i * i / 500 + 17 * i / 200 + 1 );\n\t\t}\n\n\t\treturn 1;\n\t},\n\n\t_precision: function() {\n\t\tvar precision = this._precisionOf( this.options.step );\n\t\tif ( this.options.min !== null ) {\n\t\t\tprecision = Math.max( precision, this._precisionOf( this.options.min ) );\n\t\t}\n\t\treturn precision;\n\t},\n\n\t_precisionOf: function( num ) {\n\t\tvar str = num.toString(),\n\t\t\tdecimal = str.indexOf( \".\" );\n\t\treturn decimal === -1 ? 0 : str.length - decimal - 1;\n\t},\n\n\t_adjustValue: function( value ) {\n\t\tvar base, aboveMin,\n\t\t\toptions = this.options;\n\n\t\t// Make sure we're at a valid step\n\t\t// - find out where we are relative to the base (min or 0)\n\t\tbase = options.min !== null ? options.min : 0;\n\t\taboveMin = value - base;\n\n\t\t// - round to the nearest step\n\t\taboveMin = Math.round( aboveMin / options.step ) * options.step;\n\n\t\t// - rounding is based on 0, so adjust back to our base\n\t\tvalue = base + aboveMin;\n\n\t\t// Fix precision from bad JS floating point math\n\t\tvalue = parseFloat( value.toFixed( this._precision() ) );\n\n\t\t// Clamp the value\n\t\tif ( options.max !== null && value > options.max ) {\n\t\t\treturn options.max;\n\t\t}\n\t\tif ( options.min !== null && value < options.min ) {\n\t\t\treturn options.min;\n\t\t}\n\n\t\treturn value;\n\t},\n\n\t_stop: function( event ) {\n\t\tif ( !this.spinning ) {\n\t\t\treturn;\n\t\t}\n\n\t\tclearTimeout( this.timer );\n\t\tclearTimeout( this.mousewheelTimer );\n\t\tthis.counter = 0;\n\t\tthis.spinning = false;\n\t\tthis._trigger( \"stop\", event );\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tvar prevValue, first, last;\n\n\t\tif ( key === \"culture\" || key === \"numberFormat\" ) {\n\t\t\tprevValue = this._parse( this.element.val() );\n\t\t\tthis.options[ key ] = value;\n\t\t\tthis.element.val( this._format( prevValue ) );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key === \"max\" || key === \"min\" || key === \"step\" ) {\n\t\t\tif ( typeof value === \"string\" ) {\n\t\t\t\tvalue = this._parse( value );\n\t\t\t}\n\t\t}\n\t\tif ( key === \"icons\" ) {\n\t\t\tfirst = this.buttons.first().find( \".ui-icon\" );\n\t\t\tthis._removeClass( first, null, this.options.icons.up );\n\t\t\tthis._addClass( first, null, value.up );\n\t\t\tlast = this.buttons.last().find( \".ui-icon\" );\n\t\t\tthis._removeClass( last, null, this.options.icons.down );\n\t\t\tthis._addClass( last, null, value.down );\n\t\t}\n\n\t\tthis._super( key, value );\n\t},\n\n\t_setOptionDisabled: function( value ) {\n\t\tthis._super( value );\n\n\t\tthis._toggleClass( this.uiSpinner, null, \"ui-state-disabled\", !!value );\n\t\tthis.element.prop( \"disabled\", !!value );\n\t\tthis.buttons.button( value ? \"disable\" : \"enable\" );\n\t},\n\n\t_setOptions: spinnerModifer( function( options ) {\n\t\tthis._super( options );\n\t} ),\n\n\t_parse: function( val ) {\n\t\tif ( typeof val === \"string\" && val !== \"\" ) {\n\t\t\tval = window.Globalize && this.options.numberFormat ?\n\t\t\t\tGlobalize.parseFloat( val, 10, this.options.culture ) : +val;\n\t\t}\n\t\treturn val === \"\" || isNaN( val ) ? null : val;\n\t},\n\n\t_format: function( value ) {\n\t\tif ( value === \"\" ) {\n\t\t\treturn \"\";\n\t\t}\n\t\treturn window.Globalize && this.options.numberFormat ?\n\t\t\tGlobalize.format( value, this.options.numberFormat, this.options.culture ) :\n\t\t\tvalue;\n\t},\n\n\t_refresh: function() {\n\t\tthis.element.attr( {\n\t\t\t\"aria-valuemin\": this.options.min,\n\t\t\t\"aria-valuemax\": this.options.max,\n\n\t\t\t// TODO: what should we do with values that can't be parsed?\n\t\t\t\"aria-valuenow\": this._parse( this.element.val() )\n\t\t} );\n\t},\n\n\tisValid: function() {\n\t\tvar value = this.value();\n\n\t\t// Null is invalid\n\t\tif ( value === null ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// If value gets adjusted, it's invalid\n\t\treturn value === this._adjustValue( value );\n\t},\n\n\t// Update the value without triggering change\n\t_value: function( value, allowAny ) {\n\t\tvar parsed;\n\t\tif ( value !== \"\" ) {\n\t\t\tparsed = this._parse( value );\n\t\t\tif ( parsed !== null ) {\n\t\t\t\tif ( !allowAny ) {\n\t\t\t\t\tparsed = this._adjustValue( parsed );\n\t\t\t\t}\n\t\t\t\tvalue = this._format( parsed );\n\t\t\t}\n\t\t}\n\t\tthis.element.val( value );\n\t\tthis._refresh();\n\t},\n\n\t_destroy: function() {\n\t\tthis.element\n\t\t\t.prop( \"disabled\", false )\n\t\t\t.removeAttr( \"autocomplete role aria-valuemin aria-valuemax aria-valuenow\" );\n\n\t\tthis.uiSpinner.replaceWith( this.element );\n\t},\n\n\tstepUp: spinnerModifer( function( steps ) {\n\t\tthis._stepUp( steps );\n\t} ),\n\t_stepUp: function( steps ) {\n\t\tif ( this._start() ) {\n\t\t\tthis._spin( ( steps || 1 ) * this.options.step );\n\t\t\tthis._stop();\n\t\t}\n\t},\n\n\tstepDown: spinnerModifer( function( steps ) {\n\t\tthis._stepDown( steps );\n\t} ),\n\t_stepDown: function( steps ) {\n\t\tif ( this._start() ) {\n\t\t\tthis._spin( ( steps || 1 ) * -this.options.step );\n\t\t\tthis._stop();\n\t\t}\n\t},\n\n\tpageUp: spinnerModifer( function( pages ) {\n\t\tthis._stepUp( ( pages || 1 ) * this.options.page );\n\t} ),\n\n\tpageDown: spinnerModifer( function( pages ) {\n\t\tthis._stepDown( ( pages || 1 ) * this.options.page );\n\t} ),\n\n\tvalue: function( newVal ) {\n\t\tif ( !arguments.length ) {\n\t\t\treturn this._parse( this.element.val() );\n\t\t}\n\t\tspinnerModifer( this._value ).call( this, newVal );\n\t},\n\n\twidget: function() {\n\t\treturn this.uiSpinner;\n\t}\n} );\n\n// DEPRECATED\n// TODO: switch return back to widget declaration at top of file when this is removed\nif ( $.uiBackCompat !== false ) {\n\n\t// Backcompat for spinner html extension points\n\t$.widget( \"ui.spinner\", $.ui.spinner, {\n\t\t_enhance: function() {\n\t\t\tthis.uiSpinner = this.element\n\t\t\t\t.attr( \"autocomplete\", \"off\" )\n\t\t\t\t.wrap( this._uiSpinnerHtml() )\n\t\t\t\t.parent()\n\n\t\t\t\t\t// Add buttons\n\t\t\t\t\t.append( this._buttonHtml() );\n\t\t},\n\t\t_uiSpinnerHtml: function() {\n\t\t\treturn \"<span>\";\n\t\t},\n\n\t\t_buttonHtml: function() {\n\t\t\treturn \"<a></a><a></a>\";\n\t\t}\n\t} );\n}\n\nvar widgetsSpinner = $.ui.spinner;\n\n\n/*!\n * jQuery UI Tabs 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Tabs\n//>>group: Widgets\n//>>description: Transforms a set of container elements into a tab structure.\n//>>docs: http://api.jqueryui.com/tabs/\n//>>demos: http://jqueryui.com/tabs/\n//>>css.structure: ../../themes/base/core.css\n//>>css.structure: ../../themes/base/tabs.css\n//>>css.theme: ../../themes/base/theme.css\n\n\n\n$.widget( \"ui.tabs\", {\n\tversion: \"1.12.1\",\n\tdelay: 300,\n\toptions: {\n\t\tactive: null,\n\t\tclasses: {\n\t\t\t\"ui-tabs\": \"ui-corner-all\",\n\t\t\t\"ui-tabs-nav\": \"ui-corner-all\",\n\t\t\t\"ui-tabs-panel\": \"ui-corner-bottom\",\n\t\t\t\"ui-tabs-tab\": \"ui-corner-top\"\n\t\t},\n\t\tcollapsible: false,\n\t\tevent: \"click\",\n\t\theightStyle: \"content\",\n\t\thide: null,\n\t\tshow: null,\n\n\t\t// Callbacks\n\t\tactivate: null,\n\t\tbeforeActivate: null,\n\t\tbeforeLoad: null,\n\t\tload: null\n\t},\n\n\t_isLocal: ( function() {\n\t\tvar rhash = /#.*$/;\n\n\t\treturn function( anchor ) {\n\t\t\tvar anchorUrl, locationUrl;\n\n\t\t\tanchorUrl = anchor.href.replace( rhash, \"\" );\n\t\t\tlocationUrl = location.href.replace( rhash, \"\" );\n\n\t\t\t// Decoding may throw an error if the URL isn't UTF-8 (#9518)\n\t\t\ttry {\n\t\t\t\tanchorUrl = decodeURIComponent( anchorUrl );\n\t\t\t} catch ( error ) {}\n\t\t\ttry {\n\t\t\t\tlocationUrl = decodeURIComponent( locationUrl );\n\t\t\t} catch ( error ) {}\n\n\t\t\treturn anchor.hash.length > 1 && anchorUrl === locationUrl;\n\t\t};\n\t} )(),\n\n\t_create: function() {\n\t\tvar that = this,\n\t\t\toptions = this.options;\n\n\t\tthis.running = false;\n\n\t\tthis._addClass( \"ui-tabs\", \"ui-widget ui-widget-content\" );\n\t\tthis._toggleClass( \"ui-tabs-collapsible\", null, options.collapsible );\n\n\t\tthis._processTabs();\n\t\toptions.active = this._initialActive();\n\n\t\t// Take disabling tabs via class attribute from HTML\n\t\t// into account and update option properly.\n\t\tif ( $.isArray( options.disabled ) ) {\n\t\t\toptions.disabled = $.unique( options.disabled.concat(\n\t\t\t\t$.map( this.tabs.filter( \".ui-state-disabled\" ), function( li ) {\n\t\t\t\t\treturn that.tabs.index( li );\n\t\t\t\t} )\n\t\t\t) ).sort();\n\t\t}\n\n\t\t// Check for length avoids error when initializing empty list\n\t\tif ( this.options.active !== false && this.anchors.length ) {\n\t\t\tthis.active = this._findActive( options.active );\n\t\t} else {\n\t\t\tthis.active = $();\n\t\t}\n\n\t\tthis._refresh();\n\n\t\tif ( this.active.length ) {\n\t\t\tthis.load( options.active );\n\t\t}\n\t},\n\n\t_initialActive: function() {\n\t\tvar active = this.options.active,\n\t\t\tcollapsible = this.options.collapsible,\n\t\t\tlocationHash = location.hash.substring( 1 );\n\n\t\tif ( active === null ) {\n\n\t\t\t// check the fragment identifier in the URL\n\t\t\tif ( locationHash ) {\n\t\t\t\tthis.tabs.each( function( i, tab ) {\n\t\t\t\t\tif ( $( tab ).attr( \"aria-controls\" ) === locationHash ) {\n\t\t\t\t\t\tactive = i;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\t// Check for a tab marked active via a class\n\t\t\tif ( active === null ) {\n\t\t\t\tactive = this.tabs.index( this.tabs.filter( \".ui-tabs-active\" ) );\n\t\t\t}\n\n\t\t\t// No active tab, set to false\n\t\t\tif ( active === null || active === -1 ) {\n\t\t\t\tactive = this.tabs.length ? 0 : false;\n\t\t\t}\n\t\t}\n\n\t\t// Handle numbers: negative, out of range\n\t\tif ( active !== false ) {\n\t\t\tactive = this.tabs.index( this.tabs.eq( active ) );\n\t\t\tif ( active === -1 ) {\n\t\t\t\tactive = collapsible ? false : 0;\n\t\t\t}\n\t\t}\n\n\t\t// Don't allow collapsible: false and active: false\n\t\tif ( !collapsible && active === false && this.anchors.length ) {\n\t\t\tactive = 0;\n\t\t}\n\n\t\treturn active;\n\t},\n\n\t_getCreateEventData: function() {\n\t\treturn {\n\t\t\ttab: this.active,\n\t\t\tpanel: !this.active.length ? $() : this._getPanelForTab( this.active )\n\t\t};\n\t},\n\n\t_tabKeydown: function( event ) {\n\t\tvar focusedTab = $( $.ui.safeActiveElement( this.document[ 0 ] ) ).closest( \"li\" ),\n\t\t\tselectedIndex = this.tabs.index( focusedTab ),\n\t\t\tgoingForward = true;\n\n\t\tif ( this._handlePageNav( event ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tswitch ( event.keyCode ) {\n\t\tcase $.ui.keyCode.RIGHT:\n\t\tcase $.ui.keyCode.DOWN:\n\t\t\tselectedIndex++;\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.UP:\n\t\tcase $.ui.keyCode.LEFT:\n\t\t\tgoingForward = false;\n\t\t\tselectedIndex--;\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.END:\n\t\t\tselectedIndex = this.anchors.length - 1;\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.HOME:\n\t\t\tselectedIndex = 0;\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.SPACE:\n\n\t\t\t// Activate only, no collapsing\n\t\t\tevent.preventDefault();\n\t\t\tclearTimeout( this.activating );\n\t\t\tthis._activate( selectedIndex );\n\t\t\treturn;\n\t\tcase $.ui.keyCode.ENTER:\n\n\t\t\t// Toggle (cancel delayed activation, allow collapsing)\n\t\t\tevent.preventDefault();\n\t\t\tclearTimeout( this.activating );\n\n\t\t\t// Determine if we should collapse or activate\n\t\t\tthis._activate( selectedIndex === this.options.active ? false : selectedIndex );\n\t\t\treturn;\n\t\tdefault:\n\t\t\treturn;\n\t\t}\n\n\t\t// Focus the appropriate tab, based on which key was pressed\n\t\tevent.preventDefault();\n\t\tclearTimeout( this.activating );\n\t\tselectedIndex = this._focusNextTab( selectedIndex, goingForward );\n\n\t\t// Navigating with control/command key will prevent automatic activation\n\t\tif ( !event.ctrlKey && !event.metaKey ) {\n\n\t\t\t// Update aria-selected immediately so that AT think the tab is already selected.\n\t\t\t// Otherwise AT may confuse the user by stating that they need to activate the tab,\n\t\t\t// but the tab will already be activated by the time the announcement finishes.\n\t\t\tfocusedTab.attr( \"aria-selected\", \"false\" );\n\t\t\tthis.tabs.eq( selectedIndex ).attr( \"aria-selected\", \"true\" );\n\n\t\t\tthis.activating = this._delay( function() {\n\t\t\t\tthis.option( \"active\", selectedIndex );\n\t\t\t}, this.delay );\n\t\t}\n\t},\n\n\t_panelKeydown: function( event ) {\n\t\tif ( this._handlePageNav( event ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Ctrl+up moves focus to the current tab\n\t\tif ( event.ctrlKey && event.keyCode === $.ui.keyCode.UP ) {\n\t\t\tevent.preventDefault();\n\t\t\tthis.active.trigger( \"focus\" );\n\t\t}\n\t},\n\n\t// Alt+page up/down moves focus to the previous/next tab (and activates)\n\t_handlePageNav: function( event ) {\n\t\tif ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_UP ) {\n\t\t\tthis._activate( this._focusNextTab( this.options.active - 1, false ) );\n\t\t\treturn true;\n\t\t}\n\t\tif ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_DOWN ) {\n\t\t\tthis._activate( this._focusNextTab( this.options.active + 1, true ) );\n\t\t\treturn true;\n\t\t}\n\t},\n\n\t_findNextTab: function( index, goingForward ) {\n\t\tvar lastTabIndex = this.tabs.length - 1;\n\n\t\tfunction constrain() {\n\t\t\tif ( index > lastTabIndex ) {\n\t\t\t\tindex = 0;\n\t\t\t}\n\t\t\tif ( index < 0 ) {\n\t\t\t\tindex = lastTabIndex;\n\t\t\t}\n\t\t\treturn index;\n\t\t}\n\n\t\twhile ( $.inArray( constrain(), this.options.disabled ) !== -1 ) {\n\t\t\tindex = goingForward ? index + 1 : index - 1;\n\t\t}\n\n\t\treturn index;\n\t},\n\n\t_focusNextTab: function( index, goingForward ) {\n\t\tindex = this._findNextTab( index, goingForward );\n\t\tthis.tabs.eq( index ).trigger( \"focus\" );\n\t\treturn index;\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"active\" ) {\n\n\t\t\t// _activate() will handle invalid values and update this.options\n\t\t\tthis._activate( value );\n\t\t\treturn;\n\t\t}\n\n\t\tthis._super( key, value );\n\n\t\tif ( key === \"collapsible\" ) {\n\t\t\tthis._toggleClass( \"ui-tabs-collapsible\", null, value );\n\n\t\t\t// Setting collapsible: false while collapsed; open first panel\n\t\t\tif ( !value && this.options.active === false ) {\n\t\t\t\tthis._activate( 0 );\n\t\t\t}\n\t\t}\n\n\t\tif ( key === \"event\" ) {\n\t\t\tthis._setupEvents( value );\n\t\t}\n\n\t\tif ( key === \"heightStyle\" ) {\n\t\t\tthis._setupHeightStyle( value );\n\t\t}\n\t},\n\n\t_sanitizeSelector: function( hash ) {\n\t\treturn hash ? hash.replace( /[!\"$%&'()*+,.\\/:;<=>?@\\[\\]\\^`{|}~]/g, \"\\\\$&\" ) : \"\";\n\t},\n\n\trefresh: function() {\n\t\tvar options = this.options,\n\t\t\tlis = this.tablist.children( \":has(a[href])\" );\n\n\t\t// Get disabled tabs from class attribute from HTML\n\t\t// this will get converted to a boolean if needed in _refresh()\n\t\toptions.disabled = $.map( lis.filter( \".ui-state-disabled\" ), function( tab ) {\n\t\t\treturn lis.index( tab );\n\t\t} );\n\n\t\tthis._processTabs();\n\n\t\t// Was collapsed or no tabs\n\t\tif ( options.active === false || !this.anchors.length ) {\n\t\t\toptions.active = false;\n\t\t\tthis.active = $();\n\n\t\t// was active, but active tab is gone\n\t\t} else if ( this.active.length && !$.contains( this.tablist[ 0 ], this.active[ 0 ] ) ) {\n\n\t\t\t// all remaining tabs are disabled\n\t\t\tif ( this.tabs.length === options.disabled.length ) {\n\t\t\t\toptions.active = false;\n\t\t\t\tthis.active = $();\n\n\t\t\t// activate previous tab\n\t\t\t} else {\n\t\t\t\tthis._activate( this._findNextTab( Math.max( 0, options.active - 1 ), false ) );\n\t\t\t}\n\n\t\t// was active, active tab still exists\n\t\t} else {\n\n\t\t\t// make sure active index is correct\n\t\t\toptions.active = this.tabs.index( this.active );\n\t\t}\n\n\t\tthis._refresh();\n\t},\n\n\t_refresh: function() {\n\t\tthis._setOptionDisabled( this.options.disabled );\n\t\tthis._setupEvents( this.options.event );\n\t\tthis._setupHeightStyle( this.options.heightStyle );\n\n\t\tthis.tabs.not( this.active ).attr( {\n\t\t\t\"aria-selected\": \"false\",\n\t\t\t\"aria-expanded\": \"false\",\n\t\t\ttabIndex: -1\n\t\t} );\n\t\tthis.panels.not( this._getPanelForTab( this.active ) )\n\t\t\t.hide()\n\t\t\t.attr( {\n\t\t\t\t\"aria-hidden\": \"true\"\n\t\t\t} );\n\n\t\t// Make sure one tab is in the tab order\n\t\tif ( !this.active.length ) {\n\t\t\tthis.tabs.eq( 0 ).attr( \"tabIndex\", 0 );\n\t\t} else {\n\t\t\tthis.active\n\t\t\t\t.attr( {\n\t\t\t\t\t\"aria-selected\": \"true\",\n\t\t\t\t\t\"aria-expanded\": \"true\",\n\t\t\t\t\ttabIndex: 0\n\t\t\t\t} );\n\t\t\tthis._addClass( this.active, \"ui-tabs-active\", \"ui-state-active\" );\n\t\t\tthis._getPanelForTab( this.active )\n\t\t\t\t.show()\n\t\t\t\t.attr( {\n\t\t\t\t\t\"aria-hidden\": \"false\"\n\t\t\t\t} );\n\t\t}\n\t},\n\n\t_processTabs: function() {\n\t\tvar that = this,\n\t\t\tprevTabs = this.tabs,\n\t\t\tprevAnchors = this.anchors,\n\t\t\tprevPanels = this.panels;\n\n\t\tthis.tablist = this._getList().attr( \"role\", \"tablist\" );\n\t\tthis._addClass( this.tablist, \"ui-tabs-nav\",\n\t\t\t\"ui-helper-reset ui-helper-clearfix ui-widget-header\" );\n\n\t\t// Prevent users from focusing disabled tabs via click\n\t\tthis.tablist\n\t\t\t.on( \"mousedown\" + this.eventNamespace, \"> li\", function( event ) {\n\t\t\t\tif ( $( this ).is( \".ui-state-disabled\" ) ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t} )\n\n\t\t\t// Support: IE <9\n\t\t\t// Preventing the default action in mousedown doesn't prevent IE\n\t\t\t// from focusing the element, so if the anchor gets focused, blur.\n\t\t\t// We don't have to worry about focusing the previously focused\n\t\t\t// element since clicking on a non-focusable element should focus\n\t\t\t// the body anyway.\n\t\t\t.on( \"focus\" + this.eventNamespace, \".ui-tabs-anchor\", function() {\n\t\t\t\tif ( $( this ).closest( \"li\" ).is( \".ui-state-disabled\" ) ) {\n\t\t\t\t\tthis.blur();\n\t\t\t\t}\n\t\t\t} );\n\n\t\tthis.tabs = this.tablist.find( \"> li:has(a[href])\" )\n\t\t\t.attr( {\n\t\t\t\trole: \"tab\",\n\t\t\t\ttabIndex: -1\n\t\t\t} );\n\t\tthis._addClass( this.tabs, \"ui-tabs-tab\", \"ui-state-default\" );\n\n\t\tthis.anchors = this.tabs.map( function() {\n\t\t\treturn $( \"a\", this )[ 0 ];\n\t\t} )\n\t\t\t.attr( {\n\t\t\t\trole: \"presentation\",\n\t\t\t\ttabIndex: -1\n\t\t\t} );\n\t\tthis._addClass( this.anchors, \"ui-tabs-anchor\" );\n\n\t\tthis.panels = $();\n\n\t\tthis.anchors.each( function( i, anchor ) {\n\t\t\tvar selector, panel, panelId,\n\t\t\t\tanchorId = $( anchor ).uniqueId().attr( \"id\" ),\n\t\t\t\ttab = $( anchor ).closest( \"li\" ),\n\t\t\t\toriginalAriaControls = tab.attr( \"aria-controls\" );\n\n\t\t\t// Inline tab\n\t\t\tif ( that._isLocal( anchor ) ) {\n\t\t\t\tselector = anchor.hash;\n\t\t\t\tpanelId = selector.substring( 1 );\n\t\t\t\tpanel = that.element.find( that._sanitizeSelector( selector ) );\n\n\t\t\t// remote tab\n\t\t\t} else {\n\n\t\t\t\t// If the tab doesn't already have aria-controls,\n\t\t\t\t// generate an id by using a throw-away element\n\t\t\t\tpanelId = tab.attr( \"aria-controls\" ) || $( {} ).uniqueId()[ 0 ].id;\n\t\t\t\tselector = \"#\" + panelId;\n\t\t\t\tpanel = that.element.find( selector );\n\t\t\t\tif ( !panel.length ) {\n\t\t\t\t\tpanel = that._createPanel( panelId );\n\t\t\t\t\tpanel.insertAfter( that.panels[ i - 1 ] || that.tablist );\n\t\t\t\t}\n\t\t\t\tpanel.attr( \"aria-live\", \"polite\" );\n\t\t\t}\n\n\t\t\tif ( panel.length ) {\n\t\t\t\tthat.panels = that.panels.add( panel );\n\t\t\t}\n\t\t\tif ( originalAriaControls ) {\n\t\t\t\ttab.data( \"ui-tabs-aria-controls\", originalAriaControls );\n\t\t\t}\n\t\t\ttab.attr( {\n\t\t\t\t\"aria-controls\": panelId,\n\t\t\t\t\"aria-labelledby\": anchorId\n\t\t\t} );\n\t\t\tpanel.attr( \"aria-labelledby\", anchorId );\n\t\t} );\n\n\t\tthis.panels.attr( \"role\", \"tabpanel\" );\n\t\tthis._addClass( this.panels, \"ui-tabs-panel\", \"ui-widget-content\" );\n\n\t\t// Avoid memory leaks (#10056)\n\t\tif ( prevTabs ) {\n\t\t\tthis._off( prevTabs.not( this.tabs ) );\n\t\t\tthis._off( prevAnchors.not( this.anchors ) );\n\t\t\tthis._off( prevPanels.not( this.panels ) );\n\t\t}\n\t},\n\n\t// Allow overriding how to find the list for rare usage scenarios (#7715)\n\t_getList: function() {\n\t\treturn this.tablist || this.element.find( \"ol, ul\" ).eq( 0 );\n\t},\n\n\t_createPanel: function( id ) {\n\t\treturn $( \"<div>\" )\n\t\t\t.attr( \"id\", id )\n\t\t\t.data( \"ui-tabs-destroy\", true );\n\t},\n\n\t_setOptionDisabled: function( disabled ) {\n\t\tvar currentItem, li, i;\n\n\t\tif ( $.isArray( disabled ) ) {\n\t\t\tif ( !disabled.length ) {\n\t\t\t\tdisabled = false;\n\t\t\t} else if ( disabled.length === this.anchors.length ) {\n\t\t\t\tdisabled = true;\n\t\t\t}\n\t\t}\n\n\t\t// Disable tabs\n\t\tfor ( i = 0; ( li = this.tabs[ i ] ); i++ ) {\n\t\t\tcurrentItem = $( li );\n\t\t\tif ( disabled === true || $.inArray( i, disabled ) !== -1 ) {\n\t\t\t\tcurrentItem.attr( \"aria-disabled\", \"true\" );\n\t\t\t\tthis._addClass( currentItem, null, \"ui-state-disabled\" );\n\t\t\t} else {\n\t\t\t\tcurrentItem.removeAttr( \"aria-disabled\" );\n\t\t\t\tthis._removeClass( currentItem, null, \"ui-state-disabled\" );\n\t\t\t}\n\t\t}\n\n\t\tthis.options.disabled = disabled;\n\n\t\tthis._toggleClass( this.widget(), this.widgetFullName + \"-disabled\", null,\n\t\t\tdisabled === true );\n\t},\n\n\t_setupEvents: function( event ) {\n\t\tvar events = {};\n\t\tif ( event ) {\n\t\t\t$.each( event.split( \" \" ), function( index, eventName ) {\n\t\t\t\tevents[ eventName ] = \"_eventHandler\";\n\t\t\t} );\n\t\t}\n\n\t\tthis._off( this.anchors.add( this.tabs ).add( this.panels ) );\n\n\t\t// Always prevent the default action, even when disabled\n\t\tthis._on( true, this.anchors, {\n\t\t\tclick: function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t} );\n\t\tthis._on( this.anchors, events );\n\t\tthis._on( this.tabs, { keydown: \"_tabKeydown\" } );\n\t\tthis._on( this.panels, { keydown: \"_panelKeydown\" } );\n\n\t\tthis._focusable( this.tabs );\n\t\tthis._hoverable( this.tabs );\n\t},\n\n\t_setupHeightStyle: function( heightStyle ) {\n\t\tvar maxHeight,\n\t\t\tparent = this.element.parent();\n\n\t\tif ( heightStyle === \"fill\" ) {\n\t\t\tmaxHeight = parent.height();\n\t\t\tmaxHeight -= this.element.outerHeight() - this.element.height();\n\n\t\t\tthis.element.siblings( \":visible\" ).each( function() {\n\t\t\t\tvar elem = $( this ),\n\t\t\t\t\tposition = elem.css( \"position\" );\n\n\t\t\t\tif ( position === \"absolute\" || position === \"fixed\" ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tmaxHeight -= elem.outerHeight( true );\n\t\t\t} );\n\n\t\t\tthis.element.children().not( this.panels ).each( function() {\n\t\t\t\tmaxHeight -= $( this ).outerHeight( true );\n\t\t\t} );\n\n\t\t\tthis.panels.each( function() {\n\t\t\t\t$( this ).height( Math.max( 0, maxHeight -\n\t\t\t\t\t$( this ).innerHeight() + $( this ).height() ) );\n\t\t\t} )\n\t\t\t\t.css( \"overflow\", \"auto\" );\n\t\t} else if ( heightStyle === \"auto\" ) {\n\t\t\tmaxHeight = 0;\n\t\t\tthis.panels.each( function() {\n\t\t\t\tmaxHeight = Math.max( maxHeight, $( this ).height( \"\" ).height() );\n\t\t\t} ).height( maxHeight );\n\t\t}\n\t},\n\n\t_eventHandler: function( event ) {\n\t\tvar options = this.options,\n\t\t\tactive = this.active,\n\t\t\tanchor = $( event.currentTarget ),\n\t\t\ttab = anchor.closest( \"li\" ),\n\t\t\tclickedIsActive = tab[ 0 ] === active[ 0 ],\n\t\t\tcollapsing = clickedIsActive && options.collapsible,\n\t\t\ttoShow = collapsing ? $() : this._getPanelForTab( tab ),\n\t\t\ttoHide = !active.length ? $() : this._getPanelForTab( active ),\n\t\t\teventData = {\n\t\t\t\toldTab: active,\n\t\t\t\toldPanel: toHide,\n\t\t\t\tnewTab: collapsing ? $() : tab,\n\t\t\t\tnewPanel: toShow\n\t\t\t};\n\n\t\tevent.preventDefault();\n\n\t\tif ( tab.hasClass( \"ui-state-disabled\" ) ||\n\n\t\t\t\t// tab is already loading\n\t\t\t\ttab.hasClass( \"ui-tabs-loading\" ) ||\n\n\t\t\t\t// can't switch durning an animation\n\t\t\t\tthis.running ||\n\n\t\t\t\t// click on active header, but not collapsible\n\t\t\t\t( clickedIsActive && !options.collapsible ) ||\n\n\t\t\t\t// allow canceling activation\n\t\t\t\t( this._trigger( \"beforeActivate\", event, eventData ) === false ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\toptions.active = collapsing ? false : this.tabs.index( tab );\n\n\t\tthis.active = clickedIsActive ? $() : tab;\n\t\tif ( this.xhr ) {\n\t\t\tthis.xhr.abort();\n\t\t}\n\n\t\tif ( !toHide.length && !toShow.length ) {\n\t\t\t$.error( \"jQuery UI Tabs: Mismatching fragment identifier.\" );\n\t\t}\n\n\t\tif ( toShow.length ) {\n\t\t\tthis.load( this.tabs.index( tab ), event );\n\t\t}\n\t\tthis._toggle( event, eventData );\n\t},\n\n\t// Handles show/hide for selecting tabs\n\t_toggle: function( event, eventData ) {\n\t\tvar that = this,\n\t\t\ttoShow = eventData.newPanel,\n\t\t\ttoHide = eventData.oldPanel;\n\n\t\tthis.running = true;\n\n\t\tfunction complete() {\n\t\t\tthat.running = false;\n\t\t\tthat._trigger( \"activate\", event, eventData );\n\t\t}\n\n\t\tfunction show() {\n\t\t\tthat._addClass( eventData.newTab.closest( \"li\" ), \"ui-tabs-active\", \"ui-state-active\" );\n\n\t\t\tif ( toShow.length && that.options.show ) {\n\t\t\t\tthat._show( toShow, that.options.show, complete );\n\t\t\t} else {\n\t\t\t\ttoShow.show();\n\t\t\t\tcomplete();\n\t\t\t}\n\t\t}\n\n\t\t// Start out by hiding, then showing, then completing\n\t\tif ( toHide.length && this.options.hide ) {\n\t\t\tthis._hide( toHide, this.options.hide, function() {\n\t\t\t\tthat._removeClass( eventData.oldTab.closest( \"li\" ),\n\t\t\t\t\t\"ui-tabs-active\", \"ui-state-active\" );\n\t\t\t\tshow();\n\t\t\t} );\n\t\t} else {\n\t\t\tthis._removeClass( eventData.oldTab.closest( \"li\" ),\n\t\t\t\t\"ui-tabs-active\", \"ui-state-active\" );\n\t\t\ttoHide.hide();\n\t\t\tshow();\n\t\t}\n\n\t\ttoHide.attr( \"aria-hidden\", \"true\" );\n\t\teventData.oldTab.attr( {\n\t\t\t\"aria-selected\": \"false\",\n\t\t\t\"aria-expanded\": \"false\"\n\t\t} );\n\n\t\t// If we're switching tabs, remove the old tab from the tab order.\n\t\t// If we're opening from collapsed state, remove the previous tab from the tab order.\n\t\t// If we're collapsing, then keep the collapsing tab in the tab order.\n\t\tif ( toShow.length && toHide.length ) {\n\t\t\teventData.oldTab.attr( \"tabIndex\", -1 );\n\t\t} else if ( toShow.length ) {\n\t\t\tthis.tabs.filter( function() {\n\t\t\t\treturn $( this ).attr( \"tabIndex\" ) === 0;\n\t\t\t} )\n\t\t\t\t.attr( \"tabIndex\", -1 );\n\t\t}\n\n\t\ttoShow.attr( \"aria-hidden\", \"false\" );\n\t\teventData.newTab.attr( {\n\t\t\t\"aria-selected\": \"true\",\n\t\t\t\"aria-expanded\": \"true\",\n\t\t\ttabIndex: 0\n\t\t} );\n\t},\n\n\t_activate: function( index ) {\n\t\tvar anchor,\n\t\t\tactive = this._findActive( index );\n\n\t\t// Trying to activate the already active panel\n\t\tif ( active[ 0 ] === this.active[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Trying to collapse, simulate a click on the current active header\n\t\tif ( !active.length ) {\n\t\t\tactive = this.active;\n\t\t}\n\n\t\tanchor = active.find( \".ui-tabs-anchor\" )[ 0 ];\n\t\tthis._eventHandler( {\n\t\t\ttarget: anchor,\n\t\t\tcurrentTarget: anchor,\n\t\t\tpreventDefault: $.noop\n\t\t} );\n\t},\n\n\t_findActive: function( index ) {\n\t\treturn index === false ? $() : this.tabs.eq( index );\n\t},\n\n\t_getIndex: function( index ) {\n\n\t\t// meta-function to give users option to provide a href string instead of a numerical index.\n\t\tif ( typeof index === \"string\" ) {\n\t\t\tindex = this.anchors.index( this.anchors.filter( \"[href$='\" +\n\t\t\t\t$.ui.escapeSelector( index ) + \"']\" ) );\n\t\t}\n\n\t\treturn index;\n\t},\n\n\t_destroy: function() {\n\t\tif ( this.xhr ) {\n\t\t\tthis.xhr.abort();\n\t\t}\n\n\t\tthis.tablist\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.off( this.eventNamespace );\n\n\t\tthis.anchors\n\t\t\t.removeAttr( \"role tabIndex\" )\n\t\t\t.removeUniqueId();\n\n\t\tthis.tabs.add( this.panels ).each( function() {\n\t\t\tif ( $.data( this, \"ui-tabs-destroy\" ) ) {\n\t\t\t\t$( this ).remove();\n\t\t\t} else {\n\t\t\t\t$( this ).removeAttr( \"role tabIndex \" +\n\t\t\t\t\t\"aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded\" );\n\t\t\t}\n\t\t} );\n\n\t\tthis.tabs.each( function() {\n\t\t\tvar li = $( this ),\n\t\t\t\tprev = li.data( \"ui-tabs-aria-controls\" );\n\t\t\tif ( prev ) {\n\t\t\t\tli\n\t\t\t\t\t.attr( \"aria-controls\", prev )\n\t\t\t\t\t.removeData( \"ui-tabs-aria-controls\" );\n\t\t\t} else {\n\t\t\t\tli.removeAttr( \"aria-controls\" );\n\t\t\t}\n\t\t} );\n\n\t\tthis.panels.show();\n\n\t\tif ( this.options.heightStyle !== \"content\" ) {\n\t\t\tthis.panels.css( \"height\", \"\" );\n\t\t}\n\t},\n\n\tenable: function( index ) {\n\t\tvar disabled = this.options.disabled;\n\t\tif ( disabled === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( index === undefined ) {\n\t\t\tdisabled = false;\n\t\t} else {\n\t\t\tindex = this._getIndex( index );\n\t\t\tif ( $.isArray( disabled ) ) {\n\t\t\t\tdisabled = $.map( disabled, function( num ) {\n\t\t\t\t\treturn num !== index ? num : null;\n\t\t\t\t} );\n\t\t\t} else {\n\t\t\t\tdisabled = $.map( this.tabs, function( li, num ) {\n\t\t\t\t\treturn num !== index ? num : null;\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t\tthis._setOptionDisabled( disabled );\n\t},\n\n\tdisable: function( index ) {\n\t\tvar disabled = this.options.disabled;\n\t\tif ( disabled === true ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( index === undefined ) {\n\t\t\tdisabled = true;\n\t\t} else {\n\t\t\tindex = this._getIndex( index );\n\t\t\tif ( $.inArray( index, disabled ) !== -1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( $.isArray( disabled ) ) {\n\t\t\t\tdisabled = $.merge( [ index ], disabled ).sort();\n\t\t\t} else {\n\t\t\t\tdisabled = [ index ];\n\t\t\t}\n\t\t}\n\t\tthis._setOptionDisabled( disabled );\n\t},\n\n\tload: function( index, event ) {\n\t\tindex = this._getIndex( index );\n\t\tvar that = this,\n\t\t\ttab = this.tabs.eq( index ),\n\t\t\tanchor = tab.find( \".ui-tabs-anchor\" ),\n\t\t\tpanel = this._getPanelForTab( tab ),\n\t\t\teventData = {\n\t\t\t\ttab: tab,\n\t\t\t\tpanel: panel\n\t\t\t},\n\t\t\tcomplete = function( jqXHR, status ) {\n\t\t\t\tif ( status === \"abort\" ) {\n\t\t\t\t\tthat.panels.stop( false, true );\n\t\t\t\t}\n\n\t\t\t\tthat._removeClass( tab, \"ui-tabs-loading\" );\n\t\t\t\tpanel.removeAttr( \"aria-busy\" );\n\n\t\t\t\tif ( jqXHR === that.xhr ) {\n\t\t\t\t\tdelete that.xhr;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Not remote\n\t\tif ( this._isLocal( anchor[ 0 ] ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.xhr = $.ajax( this._ajaxSettings( anchor, event, eventData ) );\n\n\t\t// Support: jQuery <1.8\n\t\t// jQuery <1.8 returns false if the request is canceled in beforeSend,\n\t\t// but as of 1.8, $.ajax() always returns a jqXHR object.\n\t\tif ( this.xhr && this.xhr.statusText !== \"canceled\" ) {\n\t\t\tthis._addClass( tab, \"ui-tabs-loading\" );\n\t\t\tpanel.attr( \"aria-busy\", \"true\" );\n\n\t\t\tthis.xhr\n\t\t\t\t.done( function( response, status, jqXHR ) {\n\n\t\t\t\t\t// support: jQuery <1.8\n\t\t\t\t\t// http://bugs.jquery.com/ticket/11778\n\t\t\t\t\tsetTimeout( function() {\n\t\t\t\t\t\tpanel.html( response );\n\t\t\t\t\t\tthat._trigger( \"load\", event, eventData );\n\n\t\t\t\t\t\tcomplete( jqXHR, status );\n\t\t\t\t\t}, 1 );\n\t\t\t\t} )\n\t\t\t\t.fail( function( jqXHR, status ) {\n\n\t\t\t\t\t// support: jQuery <1.8\n\t\t\t\t\t// http://bugs.jquery.com/ticket/11778\n\t\t\t\t\tsetTimeout( function() {\n\t\t\t\t\t\tcomplete( jqXHR, status );\n\t\t\t\t\t}, 1 );\n\t\t\t\t} );\n\t\t}\n\t},\n\n\t_ajaxSettings: function( anchor, event, eventData ) {\n\t\tvar that = this;\n\t\treturn {\n\n\t\t\t// Support: IE <11 only\n\t\t\t// Strip any hash that exists to prevent errors with the Ajax request\n\t\t\turl: anchor.attr( \"href\" ).replace( /#.*$/, \"\" ),\n\t\t\tbeforeSend: function( jqXHR, settings ) {\n\t\t\t\treturn that._trigger( \"beforeLoad\", event,\n\t\t\t\t\t$.extend( { jqXHR: jqXHR, ajaxSettings: settings }, eventData ) );\n\t\t\t}\n\t\t};\n\t},\n\n\t_getPanelForTab: function( tab ) {\n\t\tvar id = $( tab ).attr( \"aria-controls\" );\n\t\treturn this.element.find( this._sanitizeSelector( \"#\" + id ) );\n\t}\n} );\n\n// DEPRECATED\n// TODO: Switch return back to widget declaration at top of file when this is removed\nif ( $.uiBackCompat !== false ) {\n\n\t// Backcompat for ui-tab class (now ui-tabs-tab)\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\t_processTabs: function() {\n\t\t\tthis._superApply( arguments );\n\t\t\tthis._addClass( this.tabs, \"ui-tab\" );\n\t\t}\n\t} );\n}\n\nvar widgetsTabs = $.ui.tabs;\n\n\n/*!\n * jQuery UI Tooltip 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Tooltip\n//>>group: Widgets\n//>>description: Shows additional information for any element on hover or focus.\n//>>docs: http://api.jqueryui.com/tooltip/\n//>>demos: http://jqueryui.com/tooltip/\n//>>css.structure: ../../themes/base/core.css\n//>>css.structure: ../../themes/base/tooltip.css\n//>>css.theme: ../../themes/base/theme.css\n\n\n\n$.widget( \"ui.tooltip\", {\n\tversion: \"1.12.1\",\n\toptions: {\n\t\tclasses: {\n\t\t\t\"ui-tooltip\": \"ui-corner-all ui-widget-shadow\"\n\t\t},\n\t\tcontent: function() {\n\n\t\t\t// support: IE<9, Opera in jQuery <1.7\n\t\t\t// .text() can't accept undefined, so coerce to a string\n\t\t\tvar title = $( this ).attr( \"title\" ) || \"\";\n\n\t\t\t// Escape title, since we're going from an attribute to raw HTML\n\t\t\treturn $( \"<a>\" ).text( title ).html();\n\t\t},\n\t\thide: true,\n\n\t\t// Disabled elements have inconsistent behavior across browsers (#8661)\n\t\titems: \"[title]:not([disabled])\",\n\t\tposition: {\n\t\t\tmy: \"left top+15\",\n\t\t\tat: \"left bottom\",\n\t\t\tcollision: \"flipfit flip\"\n\t\t},\n\t\tshow: true,\n\t\ttrack: false,\n\n\t\t// Callbacks\n\t\tclose: null,\n\t\topen: null\n\t},\n\n\t_addDescribedBy: function( elem, id ) {\n\t\tvar describedby = ( elem.attr( \"aria-describedby\" ) || \"\" ).split( /\\s+/ );\n\t\tdescribedby.push( id );\n\t\telem\n\t\t\t.data( \"ui-tooltip-id\", id )\n\t\t\t.attr( \"aria-describedby\", $.trim( describedby.join( \" \" ) ) );\n\t},\n\n\t_removeDescribedBy: function( elem ) {\n\t\tvar id = elem.data( \"ui-tooltip-id\" ),\n\t\t\tdescribedby = ( elem.attr( \"aria-describedby\" ) || \"\" ).split( /\\s+/ ),\n\t\t\tindex = $.inArray( id, describedby );\n\n\t\tif ( index !== -1 ) {\n\t\t\tdescribedby.splice( index, 1 );\n\t\t}\n\n\t\telem.removeData( \"ui-tooltip-id\" );\n\t\tdescribedby = $.trim( describedby.join( \" \" ) );\n\t\tif ( describedby ) {\n\t\t\telem.attr( \"aria-describedby\", describedby );\n\t\t} else {\n\t\t\telem.removeAttr( \"aria-describedby\" );\n\t\t}\n\t},\n\n\t_create: function() {\n\t\tthis._on( {\n\t\t\tmouseover: \"open\",\n\t\t\tfocusin: \"open\"\n\t\t} );\n\n\t\t// IDs of generated tooltips, needed for destroy\n\t\tthis.tooltips = {};\n\n\t\t// IDs of parent tooltips where we removed the title attribute\n\t\tthis.parents = {};\n\n\t\t// Append the aria-live region so tooltips announce correctly\n\t\tthis.liveRegion = $( \"<div>\" )\n\t\t\t.attr( {\n\t\t\t\trole: \"log\",\n\t\t\t\t\"aria-live\": \"assertive\",\n\t\t\t\t\"aria-relevant\": \"additions\"\n\t\t\t} )\n\t\t\t.appendTo( this.document[ 0 ].body );\n\t\tthis._addClass( this.liveRegion, null, \"ui-helper-hidden-accessible\" );\n\n\t\tthis.disabledTitles = $( [] );\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tvar that = this;\n\n\t\tthis._super( key, value );\n\n\t\tif ( key === \"content\" ) {\n\t\t\t$.each( this.tooltips, function( id, tooltipData ) {\n\t\t\t\tthat._updateContent( tooltipData.element );\n\t\t\t} );\n\t\t}\n\t},\n\n\t_setOptionDisabled: function( value ) {\n\t\tthis[ value ? \"_disable\" : \"_enable\" ]();\n\t},\n\n\t_disable: function() {\n\t\tvar that = this;\n\n\t\t// Close open tooltips\n\t\t$.each( this.tooltips, function( id, tooltipData ) {\n\t\t\tvar event = $.Event( \"blur\" );\n\t\t\tevent.target = event.currentTarget = tooltipData.element[ 0 ];\n\t\t\tthat.close( event, true );\n\t\t} );\n\n\t\t// Remove title attributes to prevent native tooltips\n\t\tthis.disabledTitles = this.disabledTitles.add(\n\t\t\tthis.element.find( this.options.items ).addBack()\n\t\t\t\t.filter( function() {\n\t\t\t\t\tvar element = $( this );\n\t\t\t\t\tif ( element.is( \"[title]\" ) ) {\n\t\t\t\t\t\treturn element\n\t\t\t\t\t\t\t.data( \"ui-tooltip-title\", element.attr( \"title\" ) )\n\t\t\t\t\t\t\t.removeAttr( \"title\" );\n\t\t\t\t\t}\n\t\t\t\t} )\n\t\t);\n\t},\n\n\t_enable: function() {\n\n\t\t// restore title attributes\n\t\tthis.disabledTitles.each( function() {\n\t\t\tvar element = $( this );\n\t\t\tif ( element.data( \"ui-tooltip-title\" ) ) {\n\t\t\t\telement.attr( \"title\", element.data( \"ui-tooltip-title\" ) );\n\t\t\t}\n\t\t} );\n\t\tthis.disabledTitles = $( [] );\n\t},\n\n\topen: function( event ) {\n\t\tvar that = this,\n\t\t\ttarget = $( event ? event.target : this.element )\n\n\t\t\t\t// we need closest here due to mouseover bubbling,\n\t\t\t\t// but always pointing at the same event target\n\t\t\t\t.closest( this.options.items );\n\n\t\t// No element to show a tooltip for or the tooltip is already open\n\t\tif ( !target.length || target.data( \"ui-tooltip-id\" ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( target.attr( \"title\" ) ) {\n\t\t\ttarget.data( \"ui-tooltip-title\", target.attr( \"title\" ) );\n\t\t}\n\n\t\ttarget.data( \"ui-tooltip-open\", true );\n\n\t\t// Kill parent tooltips, custom or native, for hover\n\t\tif ( event && event.type === \"mouseover\" ) {\n\t\t\ttarget.parents().each( function() {\n\t\t\t\tvar parent = $( this ),\n\t\t\t\t\tblurEvent;\n\t\t\t\tif ( parent.data( \"ui-tooltip-open\" ) ) {\n\t\t\t\t\tblurEvent = $.Event( \"blur\" );\n\t\t\t\t\tblurEvent.target = blurEvent.currentTarget = this;\n\t\t\t\t\tthat.close( blurEvent, true );\n\t\t\t\t}\n\t\t\t\tif ( parent.attr( \"title\" ) ) {\n\t\t\t\t\tparent.uniqueId();\n\t\t\t\t\tthat.parents[ this.id ] = {\n\t\t\t\t\t\telement: this,\n\t\t\t\t\t\ttitle: parent.attr( \"title\" )\n\t\t\t\t\t};\n\t\t\t\t\tparent.attr( \"title\", \"\" );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\tthis._registerCloseHandlers( event, target );\n\t\tthis._updateContent( target, event );\n\t},\n\n\t_updateContent: function( target, event ) {\n\t\tvar content,\n\t\t\tcontentOption = this.options.content,\n\t\t\tthat = this,\n\t\t\teventType = event ? event.type : null;\n\n\t\tif ( typeof contentOption === \"string\" || contentOption.nodeType ||\n\t\t\t\tcontentOption.jquery ) {\n\t\t\treturn this._open( event, target, contentOption );\n\t\t}\n\n\t\tcontent = contentOption.call( target[ 0 ], function( response ) {\n\n\t\t\t// IE may instantly serve a cached response for ajax requests\n\t\t\t// delay this call to _open so the other call to _open runs first\n\t\t\tthat._delay( function() {\n\n\t\t\t\t// Ignore async response if tooltip was closed already\n\t\t\t\tif ( !target.data( \"ui-tooltip-open\" ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// JQuery creates a special event for focusin when it doesn't\n\t\t\t\t// exist natively. To improve performance, the native event\n\t\t\t\t// object is reused and the type is changed. Therefore, we can't\n\t\t\t\t// rely on the type being correct after the event finished\n\t\t\t\t// bubbling, so we set it back to the previous value. (#8740)\n\t\t\t\tif ( event ) {\n\t\t\t\t\tevent.type = eventType;\n\t\t\t\t}\n\t\t\t\tthis._open( event, target, response );\n\t\t\t} );\n\t\t} );\n\t\tif ( content ) {\n\t\t\tthis._open( event, target, content );\n\t\t}\n\t},\n\n\t_open: function( event, target, content ) {\n\t\tvar tooltipData, tooltip, delayedShow, a11yContent,\n\t\t\tpositionOption = $.extend( {}, this.options.position );\n\n\t\tif ( !content ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Content can be updated multiple times. If the tooltip already\n\t\t// exists, then just update the content and bail.\n\t\ttooltipData = this._find( target );\n\t\tif ( tooltipData ) {\n\t\t\ttooltipData.tooltip.find( \".ui-tooltip-content\" ).html( content );\n\t\t\treturn;\n\t\t}\n\n\t\t// If we have a title, clear it to prevent the native tooltip\n\t\t// we have to check first to avoid defining a title if none exists\n\t\t// (we don't want to cause an element to start matching [title])\n\t\t//\n\t\t// We use removeAttr only for key events, to allow IE to export the correct\n\t\t// accessible attributes. For mouse events, set to empty string to avoid\n\t\t// native tooltip showing up (happens only when removing inside mouseover).\n\t\tif ( target.is( \"[title]\" ) ) {\n\t\t\tif ( event && event.type === \"mouseover\" ) {\n\t\t\t\ttarget.attr( \"title\", \"\" );\n\t\t\t} else {\n\t\t\t\ttarget.removeAttr( \"title\" );\n\t\t\t}\n\t\t}\n\n\t\ttooltipData = this._tooltip( target );\n\t\ttooltip = tooltipData.tooltip;\n\t\tthis._addDescribedBy( target, tooltip.attr( \"id\" ) );\n\t\ttooltip.find( \".ui-tooltip-content\" ).html( content );\n\n\t\t// Support: Voiceover on OS X, JAWS on IE <= 9\n\t\t// JAWS announces deletions even when aria-relevant=\"additions\"\n\t\t// Voiceover will sometimes re-read the entire log region's contents from the beginning\n\t\tthis.liveRegion.children().hide();\n\t\ta11yContent = $( \"<div>\" ).html( tooltip.find( \".ui-tooltip-content\" ).html() );\n\t\ta11yContent.removeAttr( \"name\" ).find( \"[name]\" ).removeAttr( \"name\" );\n\t\ta11yContent.removeAttr( \"id\" ).find( \"[id]\" ).removeAttr( \"id\" );\n\t\ta11yContent.appendTo( this.liveRegion );\n\n\t\tfunction position( event ) {\n\t\t\tpositionOption.of = event;\n\t\t\tif ( tooltip.is( \":hidden\" ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ttooltip.position( positionOption );\n\t\t}\n\t\tif ( this.options.track && event && /^mouse/.test( event.type ) ) {\n\t\t\tthis._on( this.document, {\n\t\t\t\tmousemove: position\n\t\t\t} );\n\n\t\t\t// trigger once to override element-relative positioning\n\t\t\tposition( event );\n\t\t} else {\n\t\t\ttooltip.position( $.extend( {\n\t\t\t\tof: target\n\t\t\t}, this.options.position ) );\n\t\t}\n\n\t\ttooltip.hide();\n\n\t\tthis._show( tooltip, this.options.show );\n\n\t\t// Handle tracking tooltips that are shown with a delay (#8644). As soon\n\t\t// as the tooltip is visible, position the tooltip using the most recent\n\t\t// event.\n\t\t// Adds the check to add the timers only when both delay and track options are set (#14682)\n\t\tif ( this.options.track && this.options.show && this.options.show.delay ) {\n\t\t\tdelayedShow = this.delayedShow = setInterval( function() {\n\t\t\t\tif ( tooltip.is( \":visible\" ) ) {\n\t\t\t\t\tposition( positionOption.of );\n\t\t\t\t\tclearInterval( delayedShow );\n\t\t\t\t}\n\t\t\t}, $.fx.interval );\n\t\t}\n\n\t\tthis._trigger( \"open\", event, { tooltip: tooltip } );\n\t},\n\n\t_registerCloseHandlers: function( event, target ) {\n\t\tvar events = {\n\t\t\tkeyup: function( event ) {\n\t\t\t\tif ( event.keyCode === $.ui.keyCode.ESCAPE ) {\n\t\t\t\t\tvar fakeEvent = $.Event( event );\n\t\t\t\t\tfakeEvent.currentTarget = target[ 0 ];\n\t\t\t\t\tthis.close( fakeEvent, true );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t// Only bind remove handler for delegated targets. Non-delegated\n\t\t// tooltips will handle this in destroy.\n\t\tif ( target[ 0 ] !== this.element[ 0 ] ) {\n\t\t\tevents.remove = function() {\n\t\t\t\tthis._removeTooltip( this._find( target ).tooltip );\n\t\t\t};\n\t\t}\n\n\t\tif ( !event || event.type === \"mouseover\" ) {\n\t\t\tevents.mouseleave = \"close\";\n\t\t}\n\t\tif ( !event || event.type === \"focusin\" ) {\n\t\t\tevents.focusout = \"close\";\n\t\t}\n\t\tthis._on( true, target, events );\n\t},\n\n\tclose: function( event ) {\n\t\tvar tooltip,\n\t\t\tthat = this,\n\t\t\ttarget = $( event ? event.currentTarget : this.element ),\n\t\t\ttooltipData = this._find( target );\n\n\t\t// The tooltip may already be closed\n\t\tif ( !tooltipData ) {\n\n\t\t\t// We set ui-tooltip-open immediately upon open (in open()), but only set the\n\t\t\t// additional data once there's actually content to show (in _open()). So even if the\n\t\t\t// tooltip doesn't have full data, we always remove ui-tooltip-open in case we're in\n\t\t\t// the period between open() and _open().\n\t\t\ttarget.removeData( \"ui-tooltip-open\" );\n\t\t\treturn;\n\t\t}\n\n\t\ttooltip = tooltipData.tooltip;\n\n\t\t// Disabling closes the tooltip, so we need to track when we're closing\n\t\t// to avoid an infinite loop in case the tooltip becomes disabled on close\n\t\tif ( tooltipData.closing ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Clear the interval for delayed tracking tooltips\n\t\tclearInterval( this.delayedShow );\n\n\t\t// Only set title if we had one before (see comment in _open())\n\t\t// If the title attribute has changed since open(), don't restore\n\t\tif ( target.data( \"ui-tooltip-title\" ) && !target.attr( \"title\" ) ) {\n\t\t\ttarget.attr( \"title\", target.data( \"ui-tooltip-title\" ) );\n\t\t}\n\n\t\tthis._removeDescribedBy( target );\n\n\t\ttooltipData.hiding = true;\n\t\ttooltip.stop( true );\n\t\tthis._hide( tooltip, this.options.hide, function() {\n\t\t\tthat._removeTooltip( $( this ) );\n\t\t} );\n\n\t\ttarget.removeData( \"ui-tooltip-open\" );\n\t\tthis._off( target, \"mouseleave focusout keyup\" );\n\n\t\t// Remove 'remove' binding only on delegated targets\n\t\tif ( target[ 0 ] !== this.element[ 0 ] ) {\n\t\t\tthis._off( target, \"remove\" );\n\t\t}\n\t\tthis._off( this.document, \"mousemove\" );\n\n\t\tif ( event && event.type === \"mouseleave\" ) {\n\t\t\t$.each( this.parents, function( id, parent ) {\n\t\t\t\t$( parent.element ).attr( \"title\", parent.title );\n\t\t\t\tdelete that.parents[ id ];\n\t\t\t} );\n\t\t}\n\n\t\ttooltipData.closing = true;\n\t\tthis._trigger( \"close\", event, { tooltip: tooltip } );\n\t\tif ( !tooltipData.hiding ) {\n\t\t\ttooltipData.closing = false;\n\t\t}\n\t},\n\n\t_tooltip: function( element ) {\n\t\tvar tooltip = $( \"<div>\" ).attr( \"role\", \"tooltip\" ),\n\t\t\tcontent = $( \"<div>\" ).appendTo( tooltip ),\n\t\t\tid = tooltip.uniqueId().attr( \"id\" );\n\n\t\tthis._addClass( content, \"ui-tooltip-content\" );\n\t\tthis._addClass( tooltip, \"ui-tooltip\", \"ui-widget ui-widget-content\" );\n\n\t\ttooltip.appendTo( this._appendTo( element ) );\n\n\t\treturn this.tooltips[ id ] = {\n\t\t\telement: element,\n\t\t\ttooltip: tooltip\n\t\t};\n\t},\n\n\t_find: function( target ) {\n\t\tvar id = target.data( \"ui-tooltip-id\" );\n\t\treturn id ? this.tooltips[ id ] : null;\n\t},\n\n\t_removeTooltip: function( tooltip ) {\n\t\ttooltip.remove();\n\t\tdelete this.tooltips[ tooltip.attr( \"id\" ) ];\n\t},\n\n\t_appendTo: function( target ) {\n\t\tvar element = target.closest( \".ui-front, dialog\" );\n\n\t\tif ( !element.length ) {\n\t\t\telement = this.document[ 0 ].body;\n\t\t}\n\n\t\treturn element;\n\t},\n\n\t_destroy: function() {\n\t\tvar that = this;\n\n\t\t// Close open tooltips\n\t\t$.each( this.tooltips, function( id, tooltipData ) {\n\n\t\t\t// Delegate to close method to handle common cleanup\n\t\t\tvar event = $.Event( \"blur\" ),\n\t\t\t\telement = tooltipData.element;\n\t\t\tevent.target = event.currentTarget = element[ 0 ];\n\t\t\tthat.close( event, true );\n\n\t\t\t// Remove immediately; destroying an open tooltip doesn't use the\n\t\t\t// hide animation\n\t\t\t$( \"#\" + id ).remove();\n\n\t\t\t// Restore the title\n\t\t\tif ( element.data( \"ui-tooltip-title\" ) ) {\n\n\t\t\t\t// If the title attribute has changed since open(), don't restore\n\t\t\t\tif ( !element.attr( \"title\" ) ) {\n\t\t\t\t\telement.attr( \"title\", element.data( \"ui-tooltip-title\" ) );\n\t\t\t\t}\n\t\t\t\telement.removeData( \"ui-tooltip-title\" );\n\t\t\t}\n\t\t} );\n\t\tthis.liveRegion.remove();\n\t}\n} );\n\n// DEPRECATED\n// TODO: Switch return back to widget declaration at top of file when this is removed\nif ( $.uiBackCompat !== false ) {\n\n\t// Backcompat for tooltipClass option\n\t$.widget( \"ui.tooltip\", $.ui.tooltip, {\n\t\toptions: {\n\t\t\ttooltipClass: null\n\t\t},\n\t\t_tooltip: function() {\n\t\t\tvar tooltipData = this._superApply( arguments );\n\t\t\tif ( this.options.tooltipClass ) {\n\t\t\t\ttooltipData.tooltip.addClass( this.options.tooltipClass );\n\t\t\t}\n\t\t\treturn tooltipData;\n\t\t}\n\t} );\n}\n\nvar widgetsTooltip = $.ui.tooltip;\n\n\n\n\n}));"
  },
  {
    "path": "public/profile/vendors/lightbox/simpleLightbox.css",
    "content": ".slbOverlay, .slbWrapOuter, .slbWrap {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n}\n\n.slbOverlay {\n  overflow: hidden;\n  z-index: 2000;\n  background-color: #000;\n  opacity: 0.7;\n  filter: alpha(opacity=70);\n  -webkit-animation: slbOverlay 0.5s;\n  -moz-animation: slbOverlay 0.5s;\n  animation: slbOverlay 0.5s;\n}\n\n.slbWrapOuter {\n  overflow-x: hidden;\n  overflow-y: auto;\n  z-index: 2010;\n}\n\n.slbWrap {\n  position: absolute;\n  text-align: center;\n}\n\n.slbWrap:before {\n  content: \"\";\n  display: inline-block;\n  height: 100%;\n  vertical-align: middle;\n}\n\n.slbContentOuter {\n  display: inline-block;\n  vertical-align: middle;\n  margin: 0px auto;\n  padding: 0 1em;\n  box-sizing: border-box;\n  z-index: 2020;\n  text-align: left;\n  max-width: 100%;\n}\n\n.slbContentEl .slbContentOuter {\n  padding: 5em 1em;\n}\n\n.slbContent {\n  position: relative;\n}\n\n.slbContentEl .slbContent {\n  -webkit-animation: slbEnter 0.3s;\n  -moz-animation: slbEnter 0.3s;\n  animation: slbEnter 0.3s;\n  background-color: #fff;\n  box-shadow: 0 0.2em 1em rgba(0, 0, 0, 0.4);\n}\n\n.slbImageWrap {\n  -webkit-animation: slbEnter 0.3s;\n  -moz-animation: slbEnter 0.3s;\n  animation: slbEnter 0.3s;\n  position: relative;\n}\n\n.slbImageWrap:after {\n  content: \"\";\n  position: absolute;\n  left: 0;\n  right: 0;\n  top: 5em;\n  bottom: 5em;\n  display: block;\n  z-index: -1;\n  box-shadow: 0 0.2em 1em rgba(0, 0, 0, 0.6);\n  background-color: #FFF;\n}\n\n.slbImage {\n  width: auto;\n  max-width: 100%;\n  height: auto;\n  display: block;\n  line-height: 0;\n  box-sizing: border-box;\n  padding: 5em 0;\n  margin: 0 auto;\n}\n\n.slbCaption {\n  display: inline-block;\n  max-width: 100%;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n  word-wrap: normal;\n  font-size: 1.4em;\n  position: absolute;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  padding: 0.71429em 0;\n  color: #fff;\n  color: rgba(255, 255, 255, 0.7);\n  text-align: center;\n}\n\n.slbCloseBtn, .slbArrow {\n  margin: 0;\n  padding: 0;\n  border: 0;\n  cursor: pointer;\n  background: none;\n}\n\n.slbCloseBtn::-moz-focus-inner, .slbArrow::-moz-focus-inner {\n  padding: 0;\n  border: 0;\n}\n\n.slbCloseBtn:hover, .slbArrow:hover {\n  opacity: 0.5;\n}\n\n.slbCloseBtn:active, .slbArrow:active {\n  opacity: 0.8;\n}\n\n.slbCloseBtn {\n  -webkit-animation: slbEnter 0.3s;\n  -moz-animation: slbEnter 0.3s;\n  animation: slbEnter 0.3s;\n  font-size: 3em;\n  width: 1.66667em;\n  height: 1.66667em;\n  line-height: 1.66667em;\n  position: absolute;\n  right: -0.33333em;\n  top: 0;\n  color: #fff;\n  color: rgba(255, 255, 255, 0.7);\n  text-align: center;\n    outline: none;\n    box-shadow: none;\n}\n\n.slbLoading .slbCloseBtn {\n  display: none;\n}\n\n.slbLoadingText {\n  font-size: 1.4em;\n  color: #fff;\n  color: rgba(255, 255, 255, 0.9);\n}\n\n.slbArrows {\n  position: fixed;\n  top: 50%;\n  left: 0;\n  right: 0;\n}\n\n.slbLoading .slbArrows {\n  display: none;\n}\n\n.slbArrow {\n  position: absolute;\n  top: 50%;\n  margin-top: -5em;\n  width: 5em;\n  height: 10em;\n  opacity: 0.7;\n  text-indent: -999em;\n  overflow: hidden;\n    outline: none;\n    box-shadow: none;\n}\n\n.slbArrow:before {\n  content: \"\";\n  position: absolute;\n  top: 50%;\n  left: 50%;\n  margin: -0.8em 0 0 -0.8em;\n  border: 0.8em solid transparent;\n}\n\n.slbArrow.next {\n  right: 0;\n}\n\n.slbArrow.next:before {\n  border-left-color: #fff;\n}\n\n.slbArrow.prev {\n  left: 0;\n}\n\n.slbArrow.prev:before {\n  border-right-color: #fff;\n}\n\n.slbIframeCont {\n  width: 80em;\n  height: 0;\n  overflow: hidden;\n  padding-top: 56.25%;\n  margin: 5em 0;\n}\n\n.slbIframe {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  box-shadow: 0 0.2em 1em rgba(0, 0, 0, 0.6);\n  background: #000;\n}\n\n@-webkit-keyframes slbOverlay {\n  from {\n    opacity: 0;\n  }\n  to {\n    opacity: 0.7;\n  }\n}\n\n@-moz-keyframes slbOverlay {\n  from {\n    opacity: 0;\n  }\n  to {\n    opacity: 0.7;\n  }\n}\n\n@keyframes slbOverlay {\n  from {\n    opacity: 0;\n  }\n  to {\n    opacity: 0.7;\n  }\n}\n\n@-webkit-keyframes slbEnter {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(0, -1em, 0);\n  }\n  to {\n    opacity: 1;\n    -webkit-transform: translate3d(0, 0, 0);\n  }\n}\n\n@-moz-keyframes slbEnter {\n  from {\n    opacity: 0;\n    -moz-transform: translate3d(0, -1em, 0);\n  }\n  to {\n    opacity: 1;\n    -moz-transform: translate3d(0, 0, 0);\n  }\n}\n\n@keyframes slbEnter {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(0, -1em, 0);\n    -moz-transform: translate3d(0, -1em, 0);\n    -ms-transform: translate3d(0, -1em, 0);\n    -o-transform: translate3d(0, -1em, 0);\n    transform: translate3d(0, -1em, 0);\n  }\n  to {\n    opacity: 1;\n    -webkit-transform: translate3d(0, 0, 0);\n    -moz-transform: translate3d(0, 0, 0);\n    -ms-transform: translate3d(0, 0, 0);\n    -o-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n}\n"
  },
  {
    "path": "public/profile/vendors/linericon/style.css",
    "content": "@font-face {\n\tfont-family: 'Linearicons-Free';\n\tsrc:url('fonts/Linearicons-Free.eot?w118d');\n\tsrc:url('fonts/Linearicons-Free.eot?#iefixw118d') format('embedded-opentype'),\n\t\turl('fonts/Linearicons-Free.woff2?w118d') format('woff2'),\n\t\turl('fonts/Linearicons-Free.woff?w118d') format('woff'),\n\t\turl('fonts/Linearicons-Free.ttf?w118d') format('truetype'),\n\t\turl('fonts/Linearicons-Free.svg?w118d#Linearicons-Free') format('svg');\n\tfont-weight: normal;\n\tfont-style: normal;\n}\n\n.lnr {\n\tfont-family: 'Linearicons-Free';\n\tspeak: none;\n\tfont-style: normal;\n\tfont-weight: normal;\n\tfont-variant: normal;\n\ttext-transform: none;\n\tline-height: 1;\n\n\t/* Better Font Rendering =========== */\n\t-webkit-font-smoothing: antialiased;\n\t-moz-osx-font-smoothing: grayscale;\n}\n\n.lnr-home:before {\n\tcontent: \"\\e800\";\n}\n.lnr-apartment:before {\n\tcontent: \"\\e801\";\n}\n.lnr-pencil:before {\n\tcontent: \"\\e802\";\n}\n.lnr-magic-wand:before {\n\tcontent: \"\\e803\";\n}\n.lnr-drop:before {\n\tcontent: \"\\e804\";\n}\n.lnr-lighter:before {\n\tcontent: \"\\e805\";\n}\n.lnr-poop:before {\n\tcontent: \"\\e806\";\n}\n.lnr-sun:before {\n\tcontent: \"\\e807\";\n}\n.lnr-moon:before {\n\tcontent: \"\\e808\";\n}\n.lnr-cloud:before {\n\tcontent: \"\\e809\";\n}\n.lnr-cloud-upload:before {\n\tcontent: \"\\e80a\";\n}\n.lnr-cloud-download:before {\n\tcontent: \"\\e80b\";\n}\n.lnr-cloud-sync:before {\n\tcontent: \"\\e80c\";\n}\n.lnr-cloud-check:before {\n\tcontent: \"\\e80d\";\n}\n.lnr-database:before {\n\tcontent: \"\\e80e\";\n}\n.lnr-lock:before {\n\tcontent: \"\\e80f\";\n}\n.lnr-cog:before {\n\tcontent: \"\\e810\";\n}\n.lnr-trash:before {\n\tcontent: \"\\e811\";\n}\n.lnr-dice:before {\n\tcontent: \"\\e812\";\n}\n.lnr-heart:before {\n\tcontent: \"\\e813\";\n}\n.lnr-star:before {\n\tcontent: \"\\e814\";\n}\n.lnr-star-half:before {\n\tcontent: \"\\e815\";\n}\n.lnr-star-empty:before {\n\tcontent: \"\\e816\";\n}\n.lnr-flag:before {\n\tcontent: \"\\e817\";\n}\n.lnr-envelope:before {\n\tcontent: \"\\e818\";\n}\n.lnr-paperclip:before {\n\tcontent: \"\\e819\";\n}\n.lnr-inbox:before {\n\tcontent: \"\\e81a\";\n}\n.lnr-eye:before {\n\tcontent: \"\\e81b\";\n}\n.lnr-printer:before {\n\tcontent: \"\\e81c\";\n}\n.lnr-file-empty:before {\n\tcontent: \"\\e81d\";\n}\n.lnr-file-add:before {\n\tcontent: \"\\e81e\";\n}\n.lnr-enter:before {\n\tcontent: \"\\e81f\";\n}\n.lnr-exit:before {\n\tcontent: \"\\e820\";\n}\n.lnr-graduation-hat:before {\n\tcontent: \"\\e821\";\n}\n.lnr-license:before {\n\tcontent: \"\\e822\";\n}\n.lnr-music-note:before {\n\tcontent: \"\\e823\";\n}\n.lnr-film-play:before {\n\tcontent: \"\\e824\";\n}\n.lnr-camera-video:before {\n\tcontent: \"\\e825\";\n}\n.lnr-camera:before {\n\tcontent: \"\\e826\";\n}\n.lnr-picture:before {\n\tcontent: \"\\e827\";\n}\n.lnr-book:before {\n\tcontent: \"\\e828\";\n}\n.lnr-bookmark:before {\n\tcontent: \"\\e829\";\n}\n.lnr-user:before {\n\tcontent: \"\\e82a\";\n}\n.lnr-users:before {\n\tcontent: \"\\e82b\";\n}\n.lnr-shirt:before {\n\tcontent: \"\\e82c\";\n}\n.lnr-store:before {\n\tcontent: \"\\e82d\";\n}\n.lnr-cart:before {\n\tcontent: \"\\e82e\";\n}\n.lnr-tag:before {\n\tcontent: \"\\e82f\";\n}\n.lnr-phone-handset:before {\n\tcontent: \"\\e830\";\n}\n.lnr-phone:before {\n\tcontent: \"\\e831\";\n}\n.lnr-pushpin:before {\n\tcontent: \"\\e832\";\n}\n.lnr-map-marker:before {\n\tcontent: \"\\e833\";\n}\n.lnr-map:before {\n\tcontent: \"\\e834\";\n}\n.lnr-location:before {\n\tcontent: \"\\e835\";\n}\n.lnr-calendar-full:before {\n\tcontent: \"\\e836\";\n}\n.lnr-keyboard:before {\n\tcontent: \"\\e837\";\n}\n.lnr-spell-check:before {\n\tcontent: \"\\e838\";\n}\n.lnr-screen:before {\n\tcontent: \"\\e839\";\n}\n.lnr-smartphone:before {\n\tcontent: \"\\e83a\";\n}\n.lnr-tablet:before {\n\tcontent: \"\\e83b\";\n}\n.lnr-laptop:before {\n\tcontent: \"\\e83c\";\n}\n.lnr-laptop-phone:before {\n\tcontent: \"\\e83d\";\n}\n.lnr-power-switch:before {\n\tcontent: \"\\e83e\";\n}\n.lnr-bubble:before {\n\tcontent: \"\\e83f\";\n}\n.lnr-heart-pulse:before {\n\tcontent: \"\\e840\";\n}\n.lnr-construction:before {\n\tcontent: \"\\e841\";\n}\n.lnr-pie-chart:before {\n\tcontent: \"\\e842\";\n}\n.lnr-chart-bars:before {\n\tcontent: \"\\e843\";\n}\n.lnr-gift:before {\n\tcontent: \"\\e844\";\n}\n.lnr-diamond:before {\n\tcontent: \"\\e845\";\n}\n.lnr-linearicons:before {\n\tcontent: \"\\e846\";\n}\n.lnr-dinner:before {\n\tcontent: \"\\e847\";\n}\n.lnr-coffee-cup:before {\n\tcontent: \"\\e848\";\n}\n.lnr-leaf:before {\n\tcontent: \"\\e849\";\n}\n.lnr-paw:before {\n\tcontent: \"\\e84a\";\n}\n.lnr-rocket:before {\n\tcontent: \"\\e84b\";\n}\n.lnr-briefcase:before {\n\tcontent: \"\\e84c\";\n}\n.lnr-bus:before {\n\tcontent: \"\\e84d\";\n}\n.lnr-car:before {\n\tcontent: \"\\e84e\";\n}\n.lnr-train:before {\n\tcontent: \"\\e84f\";\n}\n.lnr-bicycle:before {\n\tcontent: \"\\e850\";\n}\n.lnr-wheelchair:before {\n\tcontent: \"\\e851\";\n}\n.lnr-select:before {\n\tcontent: \"\\e852\";\n}\n.lnr-earth:before {\n\tcontent: \"\\e853\";\n}\n.lnr-smile:before {\n\tcontent: \"\\e854\";\n}\n.lnr-sad:before {\n\tcontent: \"\\e855\";\n}\n.lnr-neutral:before {\n\tcontent: \"\\e856\";\n}\n.lnr-mustache:before {\n\tcontent: \"\\e857\";\n}\n.lnr-alarm:before {\n\tcontent: \"\\e858\";\n}\n.lnr-bullhorn:before {\n\tcontent: \"\\e859\";\n}\n.lnr-volume-high:before {\n\tcontent: \"\\e85a\";\n}\n.lnr-volume-medium:before {\n\tcontent: \"\\e85b\";\n}\n.lnr-volume-low:before {\n\tcontent: \"\\e85c\";\n}\n.lnr-volume:before {\n\tcontent: \"\\e85d\";\n}\n.lnr-mic:before {\n\tcontent: \"\\e85e\";\n}\n.lnr-hourglass:before {\n\tcontent: \"\\e85f\";\n}\n.lnr-undo:before {\n\tcontent: \"\\e860\";\n}\n.lnr-redo:before {\n\tcontent: \"\\e861\";\n}\n.lnr-sync:before {\n\tcontent: \"\\e862\";\n}\n.lnr-history:before {\n\tcontent: \"\\e863\";\n}\n.lnr-clock:before {\n\tcontent: \"\\e864\";\n}\n.lnr-download:before {\n\tcontent: \"\\e865\";\n}\n.lnr-upload:before {\n\tcontent: \"\\e866\";\n}\n.lnr-enter-down:before {\n\tcontent: \"\\e867\";\n}\n.lnr-exit-up:before {\n\tcontent: \"\\e868\";\n}\n.lnr-bug:before {\n\tcontent: \"\\e869\";\n}\n.lnr-code:before {\n\tcontent: \"\\e86a\";\n}\n.lnr-link:before {\n\tcontent: \"\\e86b\";\n}\n.lnr-unlink:before {\n\tcontent: \"\\e86c\";\n}\n.lnr-thumbs-up:before {\n\tcontent: \"\\e86d\";\n}\n.lnr-thumbs-down:before {\n\tcontent: \"\\e86e\";\n}\n.lnr-magnifier:before {\n\tcontent: \"\\e86f\";\n}\n.lnr-cross:before {\n\tcontent: \"\\e870\";\n}\n.lnr-menu:before {\n\tcontent: \"\\e871\";\n}\n.lnr-list:before {\n\tcontent: \"\\e872\";\n}\n.lnr-chevron-up:before {\n\tcontent: \"\\e873\";\n}\n.lnr-chevron-down:before {\n\tcontent: \"\\e874\";\n}\n.lnr-chevron-left:before {\n\tcontent: \"\\e875\";\n}\n.lnr-chevron-right:before {\n\tcontent: \"\\e876\";\n}\n.lnr-arrow-up:before {\n\tcontent: \"\\e877\";\n}\n.lnr-arrow-down:before {\n\tcontent: \"\\e878\";\n}\n.lnr-arrow-left:before {\n\tcontent: \"\\e879\";\n}\n.lnr-arrow-right:before {\n\tcontent: \"\\e87a\";\n}\n.lnr-move:before {\n\tcontent: \"\\e87b\";\n}\n.lnr-warning:before {\n\tcontent: \"\\e87c\";\n}\n.lnr-question-circle:before {\n\tcontent: \"\\e87d\";\n}\n.lnr-menu-circle:before {\n\tcontent: \"\\e87e\";\n}\n.lnr-checkmark-circle:before {\n\tcontent: \"\\e87f\";\n}\n.lnr-cross-circle:before {\n\tcontent: \"\\e880\";\n}\n.lnr-plus-circle:before {\n\tcontent: \"\\e881\";\n}\n.lnr-circle-minus:before {\n\tcontent: \"\\e882\";\n}\n.lnr-arrow-up-circle:before {\n\tcontent: \"\\e883\";\n}\n.lnr-arrow-down-circle:before {\n\tcontent: \"\\e884\";\n}\n.lnr-arrow-left-circle:before {\n\tcontent: \"\\e885\";\n}\n.lnr-arrow-right-circle:before {\n\tcontent: \"\\e886\";\n}\n.lnr-chevron-up-circle:before {\n\tcontent: \"\\e887\";\n}\n.lnr-chevron-down-circle:before {\n\tcontent: \"\\e888\";\n}\n.lnr-chevron-left-circle:before {\n\tcontent: \"\\e889\";\n}\n.lnr-chevron-right-circle:before {\n\tcontent: \"\\e88a\";\n}\n.lnr-crop:before {\n\tcontent: \"\\e88b\";\n}\n.lnr-frame-expand:before {\n\tcontent: \"\\e88c\";\n}\n.lnr-frame-contract:before {\n\tcontent: \"\\e88d\";\n}\n.lnr-layers:before {\n\tcontent: \"\\e88e\";\n}\n.lnr-funnel:before {\n\tcontent: \"\\e88f\";\n}\n.lnr-text-format:before {\n\tcontent: \"\\e890\";\n}\n.lnr-text-format-remove:before {\n\tcontent: \"\\e891\";\n}\n.lnr-text-size:before {\n\tcontent: \"\\e892\";\n}\n.lnr-bold:before {\n\tcontent: \"\\e893\";\n}\n.lnr-italic:before {\n\tcontent: \"\\e894\";\n}\n.lnr-underline:before {\n\tcontent: \"\\e895\";\n}\n.lnr-strikethrough:before {\n\tcontent: \"\\e896\";\n}\n.lnr-highlight:before {\n\tcontent: \"\\e897\";\n}\n.lnr-text-align-left:before {\n\tcontent: \"\\e898\";\n}\n.lnr-text-align-center:before {\n\tcontent: \"\\e899\";\n}\n.lnr-text-align-right:before {\n\tcontent: \"\\e89a\";\n}\n.lnr-text-align-justify:before {\n\tcontent: \"\\e89b\";\n}\n.lnr-line-spacing:before {\n\tcontent: \"\\e89c\";\n}\n.lnr-indent-increase:before {\n\tcontent: \"\\e89d\";\n}\n.lnr-indent-decrease:before {\n\tcontent: \"\\e89e\";\n}\n.lnr-pilcrow:before {\n\tcontent: \"\\e89f\";\n}\n.lnr-direction-ltr:before {\n\tcontent: \"\\e8a0\";\n}\n.lnr-direction-rtl:before {\n\tcontent: \"\\e8a1\";\n}\n.lnr-page-break:before {\n\tcontent: \"\\e8a2\";\n}\n.lnr-sort-alpha-asc:before {\n\tcontent: \"\\e8a3\";\n}\n.lnr-sort-amount-asc:before {\n\tcontent: \"\\e8a4\";\n}\n.lnr-hand:before {\n\tcontent: \"\\e8a5\";\n}\n.lnr-pointer-up:before {\n\tcontent: \"\\e8a6\";\n}\n.lnr-pointer-right:before {\n\tcontent: \"\\e8a7\";\n}\n.lnr-pointer-down:before {\n\tcontent: \"\\e8a8\";\n}\n.lnr-pointer-left:before {\n\tcontent: \"\\e8a9\";\n}\n"
  },
  {
    "path": "public/profile/vendors/nice-select/css/nice-select.css",
    "content": ".nice-select {\n  -webkit-tap-highlight-color: transparent;\n  background-color: #fff;\n  border-radius: 5px;\n  border: solid 1px #e8e8e8;\n  box-sizing: border-box;\n  clear: both;\n  cursor: pointer;\n  display: block;\n  float: left;\n  font-family: inherit;\n  font-size: 14px;\n  font-weight: normal;\n  height: 42px;\n  line-height: 40px;\n  outline: none;\n  padding-left: 18px;\n  padding-right: 30px;\n  position: relative;\n  text-align: left !important;\n  -webkit-transition: all 0.2s ease-in-out;\n  transition: all 0.2s ease-in-out;\n  -webkit-user-select: none;\n     -moz-user-select: none;\n      -ms-user-select: none;\n          user-select: none;\n  white-space: nowrap;\n  width: auto; }\n  .nice-select:hover {\n    border-color: #dbdbdb; }\n  .nice-select:active, .nice-select.open, .nice-select:focus {\n    border-color: #999; }\n  .nice-select:after {\n    border-bottom: 2px solid #999;\n    border-right: 2px solid #999;\n    content: '';\n    display: block;\n    height: 5px;\n    margin-top: -4px;\n    pointer-events: none;\n    position: absolute;\n    right: 12px;\n    top: 50%;\n    -webkit-transform-origin: 66% 66%;\n        -ms-transform-origin: 66% 66%;\n            transform-origin: 66% 66%;\n    -webkit-transform: rotate(45deg);\n        -ms-transform: rotate(45deg);\n            transform: rotate(45deg);\n    -webkit-transition: all 0.15s ease-in-out;\n    transition: all 0.15s ease-in-out;\n    width: 5px; }\n  .nice-select.open:after {\n    -webkit-transform: rotate(-135deg);\n        -ms-transform: rotate(-135deg);\n            transform: rotate(-135deg); }\n  .nice-select.open .list {\n    opacity: 1;\n    pointer-events: auto;\n    -webkit-transform: scale(1) translateY(0);\n        -ms-transform: scale(1) translateY(0);\n            transform: scale(1) translateY(0); }\n  .nice-select.disabled {\n    border-color: #ededed;\n    color: #999;\n    pointer-events: none; }\n    .nice-select.disabled:after {\n      border-color: #cccccc; }\n  .nice-select.wide {\n    width: 100%; }\n    .nice-select.wide .list {\n      left: 0 !important;\n      right: 0 !important; }\n  .nice-select.right {\n    float: right; }\n    .nice-select.right .list {\n      left: auto;\n      right: 0; }\n  .nice-select.small {\n    font-size: 12px;\n    height: 36px;\n    line-height: 34px; }\n    .nice-select.small:after {\n      height: 4px;\n      width: 4px; }\n    .nice-select.small .option {\n      line-height: 34px;\n      min-height: 34px; }\n  .nice-select .list {\n    background-color: #fff;\n    border-radius: 5px;\n    box-shadow: 0 0 0 1px rgba(68, 68, 68, 0.11);\n    box-sizing: border-box;\n    margin-top: 4px;\n    opacity: 0;\n    overflow: hidden;\n    padding: 0;\n    pointer-events: none;\n    position: absolute;\n    top: 100%;\n    left: 0;\n    -webkit-transform-origin: 50% 0;\n        -ms-transform-origin: 50% 0;\n            transform-origin: 50% 0;\n    -webkit-transform: scale(0.75) translateY(-21px);\n        -ms-transform: scale(0.75) translateY(-21px);\n            transform: scale(0.75) translateY(-21px);\n    -webkit-transition: all 0.2s cubic-bezier(0.5, 0, 0, 1.25), opacity 0.15s ease-out;\n    transition: all 0.2s cubic-bezier(0.5, 0, 0, 1.25), opacity 0.15s ease-out;\n    z-index: 9; }\n    .nice-select .list:hover .option:not(:hover) {\n      background-color: transparent !important; }\n  .nice-select .option {\n    cursor: pointer;\n    font-weight: 400;\n    line-height: 40px;\n    list-style: none;\n    min-height: 40px;\n    outline: none;\n    padding-left: 18px;\n    padding-right: 29px;\n    text-align: left;\n    -webkit-transition: all 0.2s;\n    transition: all 0.2s; }\n    .nice-select .option:hover, .nice-select .option.focus, .nice-select .option.selected.focus {\n      background-color: #f6f6f6; }\n    .nice-select .option.selected {\n      font-weight: bold; }\n    .nice-select .option.disabled {\n      background-color: transparent;\n      color: #999;\n      cursor: default; }\n\n.no-csspointerevents .nice-select .list {\n  display: none; }\n\n.no-csspointerevents .nice-select.open .list {\n  display: block; }\n"
  },
  {
    "path": "public/profile/vendors/nice-select/css/style.css",
    "content": ".nice-select {\n  -webkit-tap-highlight-color: transparent;\n  background-color: #fff;\n  border-radius: 5px;\n  border: solid 1px #e0e7ee;\n  box-sizing: border-box;\n  clear: both;\n  cursor: pointer;\n  display: block;\n  float: left;\n  font-family: inherit;\n  font-size: 14px;\n  font-weight: normal;\n  height: 42px;\n  line-height: 40px;\n  outline: none;\n  padding-left: 18px;\n  padding-right: 30px;\n  position: relative;\n  text-align: left !important;\n  -webkit-transition: all 0.2s ease-in-out;\n  transition: all 0.2s ease-in-out;\n  -webkit-user-select: none;\n     -moz-user-select: none;\n      -ms-user-select: none;\n          user-select: none;\n  white-space: nowrap;\n  width: auto; }\n  .nice-select:hover {\n    border-color: #d0dae5; }\n  .nice-select:active, .nice-select.open, .nice-select:focus {\n    border-color: #88bfff; }\n  .nice-select:after {\n    border-bottom: 2px solid #90a1b5;\n    border-right: 2px solid #90a1b5;\n    content: '';\n    display: block;\n    height: 5px;\n    margin-top: -4px;\n    pointer-events: none;\n    position: absolute;\n    right: 12px;\n    top: 50%;\n    -webkit-transform-origin: 66% 66%;\n        -ms-transform-origin: 66% 66%;\n            transform-origin: 66% 66%;\n    -webkit-transform: rotate(45deg);\n        -ms-transform: rotate(45deg);\n            transform: rotate(45deg);\n    -webkit-transition: all 0.15s ease-in-out;\n    transition: all 0.15s ease-in-out;\n    width: 5px; }\n  .nice-select.open:after {\n    -webkit-transform: rotate(-135deg);\n        -ms-transform: rotate(-135deg);\n            transform: rotate(-135deg); }\n  .nice-select.open .list {\n    opacity: 1;\n    pointer-events: auto;\n    -webkit-transform: scale(1) translateY(0);\n        -ms-transform: scale(1) translateY(0);\n            transform: scale(1) translateY(0); }\n  .nice-select.disabled {\n    border-color: #e7ecf2;\n    color: #90a1b5;\n    pointer-events: none; }\n    .nice-select.disabled:after {\n      border-color: #cdd5de; }\n  .nice-select.wide {\n    width: 100%; }\n    .nice-select.wide .list {\n      left: 0 !important;\n      right: 0 !important; }\n  .nice-select.right {\n    float: right; }\n    .nice-select.right .list {\n      left: auto;\n      right: 0; }\n  .nice-select.small {\n    font-size: 12px;\n    height: 36px;\n    line-height: 34px; }\n    .nice-select.small:after {\n      height: 4px;\n      width: 4px; }\n    .nice-select.small .option {\n      line-height: 34px;\n      min-height: 34px; }\n  .nice-select .list {\n    background-color: #fff;\n    border-radius: 5px;\n    box-shadow: 0 0 0 1px rgba(68, 88, 112, 0.11);\n    box-sizing: border-box;\n    margin-top: 4px;\n    opacity: 0;\n    overflow: hidden;\n    padding: 0;\n    pointer-events: none;\n    position: absolute;\n    top: 100%;\n    left: 0;\n    -webkit-transform-origin: 50% 0;\n        -ms-transform-origin: 50% 0;\n            transform-origin: 50% 0;\n    -webkit-transform: scale(0.75) translateY(-21px);\n        -ms-transform: scale(0.75) translateY(-21px);\n            transform: scale(0.75) translateY(-21px);\n    -webkit-transition: all 0.2s cubic-bezier(0.5, 0, 0, 1.25), opacity 0.15s ease-out;\n    transition: all 0.2s cubic-bezier(0.5, 0, 0, 1.25), opacity 0.15s ease-out;\n    z-index: 9; }\n    .nice-select .list:hover .option:not(:hover) {\n      background-color: transparent !important; }\n  .nice-select .option {\n    cursor: pointer;\n    font-weight: 400;\n    line-height: 40px;\n    list-style: none;\n    min-height: 40px;\n    outline: none;\n    padding-left: 18px;\n    padding-right: 29px;\n    text-align: left;\n    -webkit-transition: all 0.2s;\n    transition: all 0.2s; }\n    .nice-select .option:hover, .nice-select .option.focus, .nice-select .option.selected.focus {\n      background-color: #f6f7f9; }\n    .nice-select .option.selected {\n      font-weight: bold; }\n    .nice-select .option.disabled {\n      background-color: transparent;\n      color: #90a1b5;\n      cursor: default; }\n\n.no-csspointerevents .nice-select .list {\n  display: none; }\n\n.no-csspointerevents .nice-select.open .list {\n  display: block; }\n\ncode[class*=\"language-\"],\npre[class*=\"language-\"] {\n  border-radius: 2px;\n  color: #445870;\n  -webkit-hyphens: none;\n      -ms-hyphens: none;\n          hyphens: none;\n  line-height: 1.5;\n  -moz-tab-size: 4;\n    -o-tab-size: 4;\n       tab-size: 4;\n  text-align: left;\n  white-space: pre;\n  word-break: normal;\n  word-spacing: normal;\n  word-wrap: normal;\n  direction: ltr;\n  font-family: Inconsolata, monospace;\n  font-size: 13px;\n  letter-spacing: 0; }\n\n/* Code blocks */\npre[class*=\"language-\"] {\n  padding: 18px 24px;\n  margin: 0 0 24px;\n  overflow: auto; }\n\n:not(pre) > code[class*=\"language-\"],\npre[class*=\"language-\"] {\n  background: #f6f7f9; }\n\n/* Inline code */\n:not(pre) > code[class*=\"language-\"] {\n  padding: 0 2px 1px; }\n\n.token.comment,\n.token.prolog,\n.token.doctype,\n.token.cdata {\n  color: #90a1b5; }\n\n.token.punctuation {\n  color: #999; }\n\n.namespace {\n  opacity: .7; }\n\n.token.property,\n.token.tag,\n.token.boolean,\n.token.number,\n.token.constant,\n.token.symbol,\n.token.deleted {\n  color: #EC4444; }\n\n.token.selector,\n.token.attr-name,\n.token.string,\n.token.char,\n.token.builtin,\n.token.inserted {\n  color: #4ABF60; }\n\n.token.operator,\n.token.entity,\n.token.url,\n.language-css .token.string,\n.style .token.string {\n  color: #a67f59;\n  background: rgba(255, 255, 255, 0.5); }\n\n.token.atrule,\n.token.attr-value,\n.token.keyword {\n  color: #55a1fb; }\n\n.token.function {\n  color: #DD4A68; }\n\n.token.regex,\n.token.important,\n.token.variable {\n  color: #e90; }\n\n.token.important,\n.token.bold {\n  font-weight: bold; }\n\n.token.italic {\n  font-style: italic; }\n\n.token.entity {\n  cursor: help; }\n\nbody {\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n  color: #445870;\n  font-family: 'Work Sans', sans-serif;\n  font-size: 14px;\n  font-weight: normal;\n  letter-spacing: -0.25px;\n  margin: 0;\n  padding: 0 18px; }\n\np {\n  line-height: 1.6;\n  margin: 0 0 1.6em; }\n\nh1 {\n  font-size: 36px;\n  font-weight: 300;\n  letter-spacing: -2px;\n  margin: 0 0 24px; }\n\nh2 {\n  font-size: 22px;\n  font-weight: 400;\n  margin: 0 0 12px;\n  padding-top: 48px; }\n\nh3 {\n  font-size: 18px;\n  font-weight: 400;\n  margin: 0 0 12px;\n  padding-top: 12px; }\n\nul {\n  margin: 0;\n  padding-left: 16px; }\n\na:not(.button) {\n  color: #55a1fb;\n  outline: none;\n  text-decoration: none;\n  -webkit-transition: all 0.2s ease-in-out;\n  transition: all 0.2s ease-in-out;\n  border-bottom: 1px solid transparent; }\n  a:not(.button):hover, a:not(.button):focus {\n    border-bottom: 1px solid #88bfff; }\n\n::-moz-selection {\n  background: #f3f4f7; }\n\n::selection {\n  background: #f3f4f7; }\n\n.container {\n  margin: 96px auto 60px;\n  max-width: 40em; }\n\n.box {\n  background-color: #f6f7f9;\n  border-radius: 2px;\n  margin-bottom: 30px;\n  padding: 24px 30px; }\n  .box:before, .box:after {\n    content: \"\";\n    display: table; }\n  .box:after {\n    clear: both; }\n\nlabel {\n  color: #90a1b5;\n  font-size: 11px;\n  margin: 0 2px 4px;\n  text-transform: uppercase;\n  float: left; }\n  label.right {\n    float: right; }\n\n.button {\n  -webkit-tap-highlight-color: transparent;\n  background-color: #55a1fb;\n  border-radius: 5px;\n  border: none;\n  box-sizing: border-box;\n  color: #fff;\n  cursor: pointer;\n  display: inline-block;\n  font-weight: 600;\n  height: 42px;\n  line-height: 42px;\n  outline: none;\n  padding: 0 24px;\n  text-align: center;\n  text-decoration: none;\n  -webkit-transition: all 0.2s ease-in-out;\n  transition: all 0.2s ease-in-out;\n  white-space: nowrap;\n  width: auto; }\n  .button:hover, .button:focus {\n    background-color: #4196fb; }\n  .button:active, .button.nice-select.open {\n    background-color: #2d8bfa; }\n  .button.light {\n    background-color: #fff;\n    border: 1px solid #e0e7ee;\n    color: #55a1fb;\n    line-height: 40px;\n    margin-left: 24px; }\n    .button.light:hover {\n      border-color: #d0dae5; }\n    .button.light:active, .button.light.nice-select.open, .button.light:focus {\n      border-color: #88bfff; }\n  @media screen and (max-width: 360px) {\n    .button {\n      width: 100%; }\n      .button.light {\n        margin: 18px 0 0; } }\n\n.header {\n  text-align: center;\n  margin-bottom: 60px; }\n  @media screen and (min-width: 600px) {\n    .header {\n      padding: 0 18px; } }\n  .header p {\n    color: #90a1b5;\n    font-size: 18px;\n    margin-bottom: 36px; }\n\n.footer {\n  text-align: center; }\n  .footer p {\n    margin-bottom: 90px; }\n\n.credit {\n  color: #90a1b5;\n  clear: both;\n  font-size: 12px;\n  margin-top: 90px; }\n"
  },
  {
    "path": "public/profile/vendors/nice-select/js/jquery.nice-select.js",
    "content": "/*  jQuery Nice Select - v1.1.0\n    https://github.com/hernansartorio/jquery-nice-select\n    Made by Hernán Sartorio  */\n \n(function($) {\n\n  $.fn.niceSelect = function(method) {\n    \n    // Methods\n    if (typeof method == 'string') {      \n      if (method == 'update') {\n        this.each(function() {\n          var $select = $(this);\n          var $dropdown = $(this).next('.nice-select');\n          var open = $dropdown.hasClass('open');\n          \n          if ($dropdown.length) {\n            $dropdown.remove();\n            create_nice_select($select);\n            \n            if (open) {\n              $select.next().trigger('click');\n            }\n          }\n        });\n      } else if (method == 'destroy') {\n        this.each(function() {\n          var $select = $(this);\n          var $dropdown = $(this).next('.nice-select');\n          \n          if ($dropdown.length) {\n            $dropdown.remove();\n            $select.css('display', '');\n          }\n        });\n        if ($('.nice-select').length == 0) {\n          $(document).off('.nice_select');\n        }\n      } else {\n        console.log('Method \"' + method + '\" does not exist.')\n      }\n      return this;\n    }\n      \n    // Hide native select\n    this.hide();\n    \n    // Create custom markup\n    this.each(function() {\n      var $select = $(this);\n      \n      if (!$select.next().hasClass('nice-select')) {\n        create_nice_select($select);\n      }\n    });\n    \n    function create_nice_select($select) {\n      $select.after($('<div></div>')\n        .addClass('nice-select')\n        .addClass($select.attr('class') || '')\n        .addClass($select.attr('disabled') ? 'disabled' : '')\n        .attr('tabindex', $select.attr('disabled') ? null : '0')\n        .html('<span class=\"current\"></span><ul class=\"list\"></ul>')\n      );\n        \n      var $dropdown = $select.next();\n      var $options = $select.find('option');\n      var $selected = $select.find('option:selected');\n      \n      $dropdown.find('.current').html($selected.data('display') || $selected.text());\n      \n      $options.each(function(i) {\n        var $option = $(this);\n        var display = $option.data('display');\n\n        $dropdown.find('ul').append($('<li></li>')\n          .attr('data-value', $option.val())\n          .attr('data-display', (display || null))\n          .addClass('option' +\n            ($option.is(':selected') ? ' selected' : '') +\n            ($option.is(':disabled') ? ' disabled' : ''))\n          .html($option.text())\n        );\n      });\n    }\n    \n    /* Event listeners */\n    \n    // Unbind existing events in case that the plugin has been initialized before\n    $(document).off('.nice_select');\n    \n    // Open/close\n    $(document).on('click.nice_select', '.nice-select', function(event) {\n      var $dropdown = $(this);\n      \n      $('.nice-select').not($dropdown).removeClass('open');\n      $dropdown.toggleClass('open');\n      \n      if ($dropdown.hasClass('open')) {\n        $dropdown.find('.option');  \n        $dropdown.find('.focus').removeClass('focus');\n        $dropdown.find('.selected').addClass('focus');\n      } else {\n        $dropdown.focus();\n      }\n    });\n    \n    // Close when clicking outside\n    $(document).on('click.nice_select', function(event) {\n      if ($(event.target).closest('.nice-select').length === 0) {\n        $('.nice-select').removeClass('open').find('.option');  \n      }\n    });\n    \n    // Option click\n    $(document).on('click.nice_select', '.nice-select .option:not(.disabled)', function(event) {\n      var $option = $(this);\n      var $dropdown = $option.closest('.nice-select');\n      \n      $dropdown.find('.selected').removeClass('selected');\n      $option.addClass('selected');\n      \n      var text = $option.data('display') || $option.text();\n      $dropdown.find('.current').text(text);\n      \n      $dropdown.prev('select').val($option.data('value')).trigger('change');\n    });\n\n    // Keyboard events\n    $(document).on('keydown.nice_select', '.nice-select', function(event) {    \n      var $dropdown = $(this);\n      var $focused_option = $($dropdown.find('.focus') || $dropdown.find('.list .option.selected'));\n      \n      // Space or Enter\n      if (event.keyCode == 32 || event.keyCode == 13) {\n        if ($dropdown.hasClass('open')) {\n          $focused_option.trigger('click');\n        } else {\n          $dropdown.trigger('click');\n        }\n        return false;\n      // Down\n      } else if (event.keyCode == 40) {\n        if (!$dropdown.hasClass('open')) {\n          $dropdown.trigger('click');\n        } else {\n          var $next = $focused_option.nextAll('.option:not(.disabled)').first();\n          if ($next.length > 0) {\n            $dropdown.find('.focus').removeClass('focus');\n            $next.addClass('focus');\n          }\n        }\n        return false;\n      // Up\n      } else if (event.keyCode == 38) {\n        if (!$dropdown.hasClass('open')) {\n          $dropdown.trigger('click');\n        } else {\n          var $prev = $focused_option.prevAll('.option:not(.disabled)').first();\n          if ($prev.length > 0) {\n            $dropdown.find('.focus').removeClass('focus');\n            $prev.addClass('focus');\n          }\n        }\n        return false;\n      // Esc\n      } else if (event.keyCode == 27) {\n        if ($dropdown.hasClass('open')) {\n          $dropdown.trigger('click');\n        }\n      // Tab\n      } else if (event.keyCode == 9) {\n        if ($dropdown.hasClass('open')) {\n          return false;\n        }\n      }\n    });\n\n    // Detect CSS pointer-events support, for IE <= 10. From Modernizr.\n    var style = document.createElement('a').style;\n    style.cssText = 'pointer-events:auto';\n    if (style.pointerEvents !== 'auto') {\n      $('html').addClass('no-csspointerevents');\n    }\n    \n    return this;\n\n  };\n\n}(jQuery));"
  },
  {
    "path": "public/profile/vendors/owl-carousel/assets/animated.css",
    "content": "@charset \"UTF-8\";\n/*!\nAnimate.css - http://daneden.me/animate\nLicensed under the MIT license\n\nCopyright (c) 2013 Daniel Eden\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n*/\n\n.animated {\n    -webkit-animation-duration: 1s;\n    animation-duration: 1s;\n    -webkit-animation-fill-mode: both;\n    animation-fill-mode: both\n}\n.animated.hinge {\n    -webkit-animation-duration: 2s;\n    animation-duration: 2s\n}\n@-webkit-keyframes bounce {\n    0%, 100%, 20%, 50%, 80% {\n        -webkit-transform: translateY(0);\n        transform: translateY(0)\n    }\n    40% {\n        -webkit-transform: translateY(-30px);\n        transform: translateY(-30px)\n    }\n    60% {\n        -webkit-transform: translateY(-15px);\n        transform: translateY(-15px)\n    }\n}\n@keyframes bounce {\n    0%, 100%, 20%, 50%, 80% {\n        -webkit-transform: translateY(0);\n        -ms-transform: translateY(0);\n        transform: translateY(0)\n    }\n    40% {\n        -webkit-transform: translateY(-30px);\n        -ms-transform: translateY(-30px);\n        transform: translateY(-30px)\n    }\n    60% {\n        -webkit-transform: translateY(-15px);\n        -ms-transform: translateY(-15px);\n        transform: translateY(-15px)\n    }\n}\n.bounce {\n    -webkit-animation-name: bounce;\n    animation-name: bounce\n}\n@-webkit-keyframes flash {\n    0%, 100%, 50% {\n        opacity: 1\n    }\n    25%,\n    75% {\n        opacity: 0\n    }\n}\n@keyframes flash {\n    0%, 100%, 50% {\n        opacity: 1\n    }\n    25%,\n    75% {\n        opacity: 0\n    }\n}\n.flash {\n    -webkit-animation-name: flash;\n    animation-name: flash\n}\n@-webkit-keyframes pulse {\n    0% {\n        -webkit-transform: scale(1);\n        transform: scale(1)\n    }\n    50% {\n        -webkit-transform: scale(1.1);\n        transform: scale(1.1)\n    }\n    100% {\n        -webkit-transform: scale(1);\n        transform: scale(1)\n    }\n}\n@keyframes pulse {\n    0% {\n        -webkit-transform: scale(1);\n        -ms-transform: scale(1);\n        transform: scale(1)\n    }\n    50% {\n        -webkit-transform: scale(1.1);\n        -ms-transform: scale(1.1);\n        transform: scale(1.1)\n    }\n    100% {\n        -webkit-transform: scale(1);\n        -ms-transform: scale(1);\n        transform: scale(1)\n    }\n}\n.pulse {\n    -webkit-animation-name: pulse;\n    animation-name: pulse\n}\n\n@-webkit-keyframes slideOutDown {\n  from {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n\n  to {\n    visibility: hidden;\n    -webkit-transform: translate3d(0, 100%, 0);\n    transform: translate3d(0, 100%, 0);\n  }\n}\n\n@keyframes slideOutDown {\n  from {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n\n  to {\n    visibility: hidden;\n    -webkit-transform: translate3d(0, 100%, 0);\n    transform: translate3d(0, 100%, 0);\n  }\n}\n\n.slideOutDown {\n  -webkit-animation-name: slideOutDown;\n  animation-name: slideOutDown;\n}\n\n@-webkit-keyframes zoomIn {\n  from {\n    opacity: 0;\n    -webkit-transform: scale3d(.3, .3, .3);\n    transform: scale3d(.3, .3, .3);\n  }\n\n  50% {\n    opacity: 1;\n  }\n}\n\n@keyframes zoomIn {\n  from {\n    opacity: 0;\n    -webkit-transform: scale3d(.3, .3, .3);\n    transform: scale3d(.3, .3, .3);\n  }\n\n  50% {\n    opacity: 1;\n  }\n}\n\n.zoomIn {\n  -webkit-animation-name: zoomIn;\n  animation-name: zoomIn;\n}\n\n@-webkit-keyframes rubberBand {\n    0% {\n        -webkit-transform: scale(1);\n        transform: scale(1)\n    }\n    30% {\n        -webkit-transform: scaleX(1.25) scaleY(0.75);\n        transform: scaleX(1.25) scaleY(0.75)\n    }\n    40% {\n        -webkit-transform: scaleX(0.75) scaleY(1.25);\n        transform: scaleX(0.75) scaleY(1.25)\n    }\n    60% {\n        -webkit-transform: scaleX(1.15) scaleY(0.85);\n        transform: scaleX(1.15) scaleY(0.85)\n    }\n    100% {\n        -webkit-transform: scale(1);\n        transform: scale(1)\n    }\n}\n@keyframes rubberBand {\n    0% {\n        -webkit-transform: scale(1);\n        -ms-transform: scale(1);\n        transform: scale(1)\n    }\n    30% {\n        -webkit-transform: scaleX(1.25) scaleY(0.75);\n        -ms-transform: scaleX(1.25) scaleY(0.75);\n        transform: scaleX(1.25) scaleY(0.75)\n    }\n    40% {\n        -webkit-transform: scaleX(0.75) scaleY(1.25);\n        -ms-transform: scaleX(0.75) scaleY(1.25);\n        transform: scaleX(0.75) scaleY(1.25)\n    }\n    60% {\n        -webkit-transform: scaleX(1.15) scaleY(0.85);\n        -ms-transform: scaleX(1.15) scaleY(0.85);\n        transform: scaleX(1.15) scaleY(0.85)\n    }\n    100% {\n        -webkit-transform: scale(1);\n        -ms-transform: scale(1);\n        transform: scale(1)\n    }\n}\n.rubberBand {\n    -webkit-animation-name: rubberBand;\n    animation-name: rubberBand\n}\n@-webkit-keyframes shake {\n    0%, 100% {\n        -webkit-transform: translateX(0);\n        transform: translateX(0)\n    }\n    10%,\n    30%,\n    50%,\n    70%,\n    90% {\n        -webkit-transform: translateX(-10px);\n        transform: translateX(-10px)\n    }\n    20%,\n    40%,\n    60%,\n    80% {\n        -webkit-transform: translateX(10px);\n        transform: translateX(10px)\n    }\n}\n@keyframes shake {\n    0%, 100% {\n        -webkit-transform: translateX(0);\n        -ms-transform: translateX(0);\n        transform: translateX(0)\n    }\n    10%,\n    30%,\n    50%,\n    70%,\n    90% {\n        -webkit-transform: translateX(-10px);\n        -ms-transform: translateX(-10px);\n        transform: translateX(-10px)\n    }\n    20%,\n    40%,\n    60%,\n    80% {\n        -webkit-transform: translateX(10px);\n        -ms-transform: translateX(10px);\n        transform: translateX(10px)\n    }\n}\n.shake {\n    -webkit-animation-name: shake;\n    animation-name: shake\n}\n@-webkit-keyframes swing {\n    20% {\n        -webkit-transform: rotate(15deg);\n        transform: rotate(15deg)\n    }\n    40% {\n        -webkit-transform: rotate(-10deg);\n        transform: rotate(-10deg)\n    }\n    60% {\n        -webkit-transform: rotate(5deg);\n        transform: rotate(5deg)\n    }\n    80% {\n        -webkit-transform: rotate(-5deg);\n        transform: rotate(-5deg)\n    }\n    100% {\n        -webkit-transform: rotate(0deg);\n        transform: rotate(0deg)\n    }\n}\n@keyframes swing {\n    20% {\n        -webkit-transform: rotate(15deg);\n        -ms-transform: rotate(15deg);\n        transform: rotate(15deg)\n    }\n    40% {\n        -webkit-transform: rotate(-10deg);\n        -ms-transform: rotate(-10deg);\n        transform: rotate(-10deg)\n    }\n    60% {\n        -webkit-transform: rotate(5deg);\n        -ms-transform: rotate(5deg);\n        transform: rotate(5deg)\n    }\n    80% {\n        -webkit-transform: rotate(-5deg);\n        -ms-transform: rotate(-5deg);\n        transform: rotate(-5deg)\n    }\n    100% {\n        -webkit-transform: rotate(0deg);\n        -ms-transform: rotate(0deg);\n        transform: rotate(0deg)\n    }\n}\n.swing {\n    -webkit-transform-origin: top center;\n    -ms-transform-origin: top center;\n    transform-origin: top center;\n    -webkit-animation-name: swing;\n    animation-name: swing\n}\n@-webkit-keyframes tada {\n    0% {\n        -webkit-transform: scale(1);\n        transform: scale(1)\n    }\n    10%,\n    20% {\n        -webkit-transform: scale(0.9) rotate(-3deg);\n        transform: scale(0.9) rotate(-3deg)\n    }\n    30%,\n    50%,\n    70%,\n    90% {\n        -webkit-transform: scale(1.1) rotate(3deg);\n        transform: scale(1.1) rotate(3deg)\n    }\n    40%,\n    60%,\n    80% {\n        -webkit-transform: scale(1.1) rotate(-3deg);\n        transform: scale(1.1) rotate(-3deg)\n    }\n    100% {\n        -webkit-transform: scale(1) rotate(0);\n        transform: scale(1) rotate(0)\n    }\n}\n@keyframes tada {\n    0% {\n        -webkit-transform: scale(1);\n        -ms-transform: scale(1);\n        transform: scale(1)\n    }\n    10%,\n    20% {\n        -webkit-transform: scale(0.9) rotate(-3deg);\n        -ms-transform: scale(0.9) rotate(-3deg);\n        transform: scale(0.9) rotate(-3deg)\n    }\n    30%,\n    50%,\n    70%,\n    90% {\n        -webkit-transform: scale(1.1) rotate(3deg);\n        -ms-transform: scale(1.1) rotate(3deg);\n        transform: scale(1.1) rotate(3deg)\n    }\n    40%,\n    60%,\n    80% {\n        -webkit-transform: scale(1.1) rotate(-3deg);\n        -ms-transform: scale(1.1) rotate(-3deg);\n        transform: scale(1.1) rotate(-3deg)\n    }\n    100% {\n        -webkit-transform: scale(1) rotate(0);\n        -ms-transform: scale(1) rotate(0);\n        transform: scale(1) rotate(0)\n    }\n}\n.tada {\n    -webkit-animation-name: tada;\n    animation-name: tada\n}\n@-webkit-keyframes wobble {\n    0% {\n        -webkit-transform: translateX(0%);\n        transform: translateX(0%)\n    }\n    15% {\n        -webkit-transform: translateX(-25%) rotate(-5deg);\n        transform: translateX(-25%) rotate(-5deg)\n    }\n    30% {\n        -webkit-transform: translateX(20%) rotate(3deg);\n        transform: translateX(20%) rotate(3deg)\n    }\n    45% {\n        -webkit-transform: translateX(-15%) rotate(-3deg);\n        transform: translateX(-15%) rotate(-3deg)\n    }\n    60% {\n        -webkit-transform: translateX(10%) rotate(2deg);\n        transform: translateX(10%) rotate(2deg)\n    }\n    75% {\n        -webkit-transform: translateX(-5%) rotate(-1deg);\n        transform: translateX(-5%) rotate(-1deg)\n    }\n    100% {\n        -webkit-transform: translateX(0%);\n        transform: translateX(0%)\n    }\n}\n@keyframes wobble {\n    0% {\n        -webkit-transform: translateX(0%);\n        -ms-transform: translateX(0%);\n        transform: translateX(0%)\n    }\n    15% {\n        -webkit-transform: translateX(-25%) rotate(-5deg);\n        -ms-transform: translateX(-25%) rotate(-5deg);\n        transform: translateX(-25%) rotate(-5deg)\n    }\n    30% {\n        -webkit-transform: translateX(20%) rotate(3deg);\n        -ms-transform: translateX(20%) rotate(3deg);\n        transform: translateX(20%) rotate(3deg)\n    }\n    45% {\n        -webkit-transform: translateX(-15%) rotate(-3deg);\n        -ms-transform: translateX(-15%) rotate(-3deg);\n        transform: translateX(-15%) rotate(-3deg)\n    }\n    60% {\n        -webkit-transform: translateX(10%) rotate(2deg);\n        -ms-transform: translateX(10%) rotate(2deg);\n        transform: translateX(10%) rotate(2deg)\n    }\n    75% {\n        -webkit-transform: translateX(-5%) rotate(-1deg);\n        -ms-transform: translateX(-5%) rotate(-1deg);\n        transform: translateX(-5%) rotate(-1deg)\n    }\n    100% {\n        -webkit-transform: translateX(0%);\n        -ms-transform: translateX(0%);\n        transform: translateX(0%)\n    }\n}\n.wobble {\n    -webkit-animation-name: wobble;\n    animation-name: wobble\n}\n@-webkit-keyframes bounceIn {\n    0% {\n        opacity: 0;\n        -webkit-transform: scale(.3);\n        transform: scale(.3)\n    }\n    50% {\n        opacity: 1;\n        -webkit-transform: scale(1.05);\n        transform: scale(1.05)\n    }\n    70% {\n        -webkit-transform: scale(.9);\n        transform: scale(.9)\n    }\n    100% {\n        opacity: 1;\n        -webkit-transform: scale(1);\n        transform: scale(1)\n    }\n}\n@keyframes bounceIn {\n    0% {\n        opacity: 0;\n        -webkit-transform: scale(.3);\n        -ms-transform: scale(.3);\n        transform: scale(.3)\n    }\n    50% {\n        opacity: 1;\n        -webkit-transform: scale(1.05);\n        -ms-transform: scale(1.05);\n        transform: scale(1.05)\n    }\n    70% {\n        -webkit-transform: scale(.9);\n        -ms-transform: scale(.9);\n        transform: scale(.9)\n    }\n    100% {\n        opacity: 1;\n        -webkit-transform: scale(1);\n        -ms-transform: scale(1);\n        transform: scale(1)\n    }\n}\n.bounceIn {\n    -webkit-animation-name: bounceIn;\n    animation-name: bounceIn\n}\n@-webkit-keyframes bounceInDown {\n    0% {\n        opacity: 0;\n        -webkit-transform: translateY(-2000px);\n        transform: translateY(-2000px)\n    }\n    60% {\n        opacity: 1;\n        -webkit-transform: translateY(30px);\n        transform: translateY(30px)\n    }\n    80% {\n        -webkit-transform: translateY(-10px);\n        transform: translateY(-10px)\n    }\n    100% {\n        -webkit-transform: translateY(0);\n        transform: translateY(0)\n    }\n}\n@keyframes bounceInDown {\n    0% {\n        opacity: 0;\n        -webkit-transform: translateY(-2000px);\n        -ms-transform: translateY(-2000px);\n        transform: translateY(-2000px)\n    }\n    60% {\n        opacity: 1;\n        -webkit-transform: translateY(30px);\n        -ms-transform: translateY(30px);\n        transform: translateY(30px)\n    }\n    80% {\n        -webkit-transform: translateY(-10px);\n        -ms-transform: translateY(-10px);\n        transform: translateY(-10px)\n    }\n    100% {\n        -webkit-transform: translateY(0);\n        -ms-transform: translateY(0);\n        transform: translateY(0)\n    }\n}\n.bounceInDown {\n    -webkit-animation-name: bounceInDown;\n    animation-name: bounceInDown\n}\n@-webkit-keyframes bounceInLeft {\n    0% {\n        opacity: 0;\n        -webkit-transform: translateX(-2000px);\n        transform: translateX(-2000px)\n    }\n    60% {\n        opacity: 1;\n        -webkit-transform: translateX(30px);\n        transform: translateX(30px)\n    }\n    80% {\n        -webkit-transform: translateX(-10px);\n        transform: translateX(-10px)\n    }\n    100% {\n        -webkit-transform: translateX(0);\n        transform: translateX(0)\n    }\n}\n@keyframes bounceInLeft {\n    0% {\n        opacity: 0;\n        -webkit-transform: translateX(-2000px);\n        -ms-transform: translateX(-2000px);\n        transform: translateX(-2000px)\n    }\n    60% {\n        opacity: 1;\n        -webkit-transform: translateX(30px);\n        -ms-transform: translateX(30px);\n        transform: translateX(30px)\n    }\n    80% {\n        -webkit-transform: translateX(-10px);\n        -ms-transform: translateX(-10px);\n        transform: translateX(-10px)\n    }\n    100% {\n        -webkit-transform: translateX(0);\n        -ms-transform: translateX(0);\n        transform: translateX(0)\n    }\n}\n.bounceInLeft {\n    -webkit-animation-name: bounceInLeft;\n    animation-name: bounceInLeft\n}\n@-webkit-keyframes bounceInRight {\n    0% {\n        opacity: 0;\n        -webkit-transform: translateX(2000px);\n        transform: translateX(2000px)\n    }\n    60% {\n        opacity: 1;\n        -webkit-transform: translateX(-30px);\n        transform: translateX(-30px)\n    }\n    80% {\n        -webkit-transform: translateX(10px);\n        transform: translateX(10px)\n    }\n    100% {\n        -webkit-transform: translateX(0);\n        transform: translateX(0)\n    }\n}\n@keyframes bounceInRight {\n    0% {\n        opacity: 0;\n        -webkit-transform: translateX(2000px);\n        -ms-transform: translateX(2000px);\n        transform: translateX(2000px)\n    }\n    60% {\n        opacity: 1;\n        -webkit-transform: translateX(-30px);\n        -ms-transform: translateX(-30px);\n        transform: translateX(-30px)\n    }\n    80% {\n        -webkit-transform: translateX(10px);\n        -ms-transform: translateX(10px);\n        transform: translateX(10px)\n    }\n    100% {\n        -webkit-transform: translateX(0);\n        -ms-transform: translateX(0);\n        transform: translateX(0)\n    }\n}\n.bounceInRight {\n    -webkit-animation-name: bounceInRight;\n    animation-name: bounceInRight\n}\n@-webkit-keyframes bounceInUp {\n    0% {\n        opacity: 0;\n        -webkit-transform: translateY(2000px);\n        transform: translateY(2000px)\n    }\n    60% {\n        opacity: 1;\n        -webkit-transform: translateY(-30px);\n        transform: translateY(-30px)\n    }\n    80% {\n        -webkit-transform: translateY(10px);\n        transform: translateY(10px)\n    }\n    100% {\n        -webkit-transform: translateY(0);\n        transform: translateY(0)\n    }\n}\n@keyframes bounceInUp {\n    0% {\n        opacity: 0;\n        -webkit-transform: translateY(2000px);\n        -ms-transform: translateY(2000px);\n        transform: translateY(2000px)\n    }\n    60% {\n        opacity: 1;\n        -webkit-transform: translateY(-30px);\n        -ms-transform: translateY(-30px);\n        transform: translateY(-30px)\n    }\n    80% {\n        -webkit-transform: translateY(10px);\n        -ms-transform: translateY(10px);\n        transform: translateY(10px)\n    }\n    100% {\n        -webkit-transform: translateY(0);\n        -ms-transform: translateY(0);\n        transform: translateY(0)\n    }\n}\n.bounceInUp {\n    -webkit-animation-name: bounceInUp;\n    animation-name: bounceInUp\n}\n@-webkit-keyframes bounceOut {\n    0% {\n        -webkit-transform: scale(1);\n        transform: scale(1)\n    }\n    25% {\n        -webkit-transform: scale(.95);\n        transform: scale(.95)\n    }\n    50% {\n        opacity: 1;\n        -webkit-transform: scale(1.1);\n        transform: scale(1.1)\n    }\n    100% {\n        opacity: 0;\n        -webkit-transform: scale(.3);\n        transform: scale(.3)\n    }\n}\n@keyframes bounceOut {\n    0% {\n        -webkit-transform: scale(1);\n        -ms-transform: scale(1);\n        transform: scale(1)\n    }\n    25% {\n        -webkit-transform: scale(.95);\n        -ms-transform: scale(.95);\n        transform: scale(.95)\n    }\n    50% {\n        opacity: 1;\n        -webkit-transform: scale(1.1);\n        -ms-transform: scale(1.1);\n        transform: scale(1.1)\n    }\n    100% {\n        opacity: 0;\n        -webkit-transform: scale(.3);\n        -ms-transform: scale(.3);\n        transform: scale(.3)\n    }\n}\n.bounceOut {\n    -webkit-animation-name: bounceOut;\n    animation-name: bounceOut\n}\n@-webkit-keyframes bounceOutDown {\n    0% {\n        -webkit-transform: translateY(0);\n        transform: translateY(0)\n    }\n    20% {\n        opacity: 1;\n        -webkit-transform: translateY(-20px);\n        transform: translateY(-20px)\n    }\n    100% {\n        opacity: 0;\n        -webkit-transform: translateY(2000px);\n        transform: translateY(2000px)\n    }\n}\n@keyframes bounceOutDown {\n    0% {\n        -webkit-transform: translateY(0);\n        -ms-transform: translateY(0);\n        transform: translateY(0)\n    }\n    20% {\n        opacity: 1;\n        -webkit-transform: translateY(-20px);\n        -ms-transform: translateY(-20px);\n        transform: translateY(-20px)\n    }\n    100% {\n        opacity: 0;\n        -webkit-transform: translateY(2000px);\n        -ms-transform: translateY(2000px);\n        transform: translateY(2000px)\n    }\n}\n.bounceOutDown {\n    -webkit-animation-name: bounceOutDown;\n    animation-name: bounceOutDown\n}\n@-webkit-keyframes bounceOutLeft {\n    0% {\n        -webkit-transform: translateX(0);\n        transform: translateX(0)\n    }\n    20% {\n        opacity: 1;\n        -webkit-transform: translateX(20px);\n        transform: translateX(20px)\n    }\n    100% {\n        opacity: 0;\n        -webkit-transform: translateX(-2000px);\n        transform: translateX(-2000px)\n    }\n}\n@keyframes bounceOutLeft {\n    0% {\n        -webkit-transform: translateX(0);\n        -ms-transform: translateX(0);\n        transform: translateX(0)\n    }\n    20% {\n        opacity: 1;\n        -webkit-transform: translateX(20px);\n        -ms-transform: translateX(20px);\n        transform: translateX(20px)\n    }\n    100% {\n        opacity: 0;\n        -webkit-transform: translateX(-2000px);\n        -ms-transform: translateX(-2000px);\n        transform: translateX(-2000px)\n    }\n}\n.bounceOutLeft {\n    -webkit-animation-name: bounceOutLeft;\n    animation-name: bounceOutLeft\n}\n@-webkit-keyframes bounceOutRight {\n    0% {\n        -webkit-transform: translateX(0);\n        transform: translateX(0)\n    }\n    20% {\n        opacity: 1;\n        -webkit-transform: translateX(-20px);\n        transform: translateX(-20px)\n    }\n    100% {\n        opacity: 0;\n        -webkit-transform: translateX(2000px);\n        transform: translateX(2000px)\n    }\n}\n@keyframes bounceOutRight {\n    0% {\n        -webkit-transform: translateX(0);\n        -ms-transform: translateX(0);\n        transform: translateX(0)\n    }\n    20% {\n        opacity: 1;\n        -webkit-transform: translateX(-20px);\n        -ms-transform: translateX(-20px);\n        transform: translateX(-20px)\n    }\n    100% {\n        opacity: 0;\n        -webkit-transform: translateX(2000px);\n        -ms-transform: translateX(2000px);\n        transform: translateX(2000px)\n    }\n}\n.bounceOutRight {\n    -webkit-animation-name: bounceOutRight;\n    animation-name: bounceOutRight\n}\n@-webkit-keyframes bounceOutUp {\n    0% {\n        -webkit-transform: translateY(0);\n        transform: translateY(0)\n    }\n    20% {\n        opacity: 1;\n        -webkit-transform: translateY(20px);\n        transform: translateY(20px)\n    }\n    100% {\n        opacity: 0;\n        -webkit-transform: translateY(-2000px);\n        transform: translateY(-2000px)\n    }\n}\n@keyframes bounceOutUp {\n    0% {\n        -webkit-transform: translateY(0);\n        -ms-transform: translateY(0);\n        transform: translateY(0)\n    }\n    20% {\n        opacity: 1;\n        -webkit-transform: translateY(20px);\n        -ms-transform: translateY(20px);\n        transform: translateY(20px)\n    }\n    100% {\n        opacity: 0;\n        -webkit-transform: translateY(-2000px);\n        -ms-transform: translateY(-2000px);\n        transform: translateY(-2000px)\n    }\n}\n.bounceOutUp {\n    -webkit-animation-name: bounceOutUp;\n    animation-name: bounceOutUp\n}\n@-webkit-keyframes fadeIn {\n    0% {\n        opacity: 0\n    }\n    100% {\n        opacity: 1\n    }\n}\n@keyframes fadeIn {\n    0% {\n        opacity: 0\n    }\n    100% {\n        opacity: 1\n    }\n}\n.fadeIn {\n    -webkit-animation-name: fadeIn;\n    animation-name: fadeIn\n}\n@-webkit-keyframes fadeInDown {\n    0% {\n        opacity: 0;\n        -webkit-transform: translateY(-20px);\n        transform: translateY(-20px)\n    }\n    100% {\n        opacity: 1;\n        -webkit-transform: translateY(0);\n        transform: translateY(0)\n    }\n}\n@keyframes fadeInDown {\n    0% {\n        opacity: 0;\n        -webkit-transform: translateY(-20px);\n        -ms-transform: translateY(-20px);\n        transform: translateY(-20px)\n    }\n    100% {\n        opacity: 1;\n        -webkit-transform: translateY(0);\n        -ms-transform: translateY(0);\n        transform: translateY(0)\n    }\n}\n.fadeInDown {\n    -webkit-animation-name: fadeInDown;\n    animation-name: fadeInDown\n}\n@-webkit-keyframes fadeInDownBig {\n    0% {\n        opacity: 0;\n        -webkit-transform: translateY(-2000px);\n        transform: translateY(-2000px)\n    }\n    100% {\n        opacity: 1;\n        -webkit-transform: translateY(0);\n        transform: translateY(0)\n    }\n}\n@keyframes fadeInDownBig {\n    0% {\n        opacity: 0;\n        -webkit-transform: translateY(-2000px);\n        -ms-transform: translateY(-2000px);\n        transform: translateY(-2000px)\n    }\n    100% {\n        opacity: 1;\n        -webkit-transform: translateY(0);\n        -ms-transform: translateY(0);\n        transform: translateY(0)\n    }\n}\n.fadeInDownBig {\n    -webkit-animation-name: fadeInDownBig;\n    animation-name: fadeInDownBig\n}\n@-webkit-keyframes fadeInLeft {\n    0% {\n        opacity: 0;\n        -webkit-transform: translateX(-20px);\n        transform: translateX(-20px)\n    }\n    100% {\n        opacity: 1;\n        -webkit-transform: translateX(0);\n        transform: translateX(0)\n    }\n}\n@keyframes fadeInLeft {\n    0% {\n        opacity: 0;\n        -webkit-transform: translateX(-20px);\n        -ms-transform: translateX(-20px);\n        transform: translateX(-20px)\n    }\n    100% {\n        opacity: 1;\n        -webkit-transform: translateX(0);\n        -ms-transform: translateX(0);\n        transform: translateX(0)\n    }\n}\n.fadeInLeft {\n    -webkit-animation-name: fadeInLeft;\n    animation-name: fadeInLeft\n}\n@-webkit-keyframes fadeInLeftBig {\n    0% {\n        opacity: 0;\n        -webkit-transform: translateX(-2000px);\n        transform: translateX(-2000px)\n    }\n    100% {\n        opacity: 1;\n        -webkit-transform: translateX(0);\n        transform: translateX(0)\n    }\n}\n@keyframes fadeInLeftBig {\n    0% {\n        opacity: 0;\n        -webkit-transform: translateX(-2000px);\n        -ms-transform: translateX(-2000px);\n        transform: translateX(-2000px)\n    }\n    100% {\n        opacity: 1;\n        -webkit-transform: translateX(0);\n        -ms-transform: translateX(0);\n        transform: translateX(0)\n    }\n}\n.fadeInLeftBig {\n    -webkit-animation-name: fadeInLeftBig;\n    animation-name: fadeInLeftBig\n}\n@-webkit-keyframes fadeInRight {\n    0% {\n        opacity: 0;\n        -webkit-transform: translateX(20px);\n        transform: translateX(20px)\n    }\n    100% {\n        opacity: 1;\n        -webkit-transform: translateX(0);\n        transform: translateX(0)\n    }\n}\n@keyframes fadeInRight {\n    0% {\n        opacity: 0;\n        -webkit-transform: translateX(20px);\n        -ms-transform: translateX(20px);\n        transform: translateX(20px)\n    }\n    100% {\n        opacity: 1;\n        -webkit-transform: translateX(0);\n        -ms-transform: translateX(0);\n        transform: translateX(0)\n    }\n}\n.fadeInRight {\n    -webkit-animation-name: fadeInRight;\n    animation-name: fadeInRight\n}\n@-webkit-keyframes fadeInRightBig {\n    0% {\n        opacity: 0;\n        -webkit-transform: translateX(2000px);\n        transform: translateX(2000px)\n    }\n    100% {\n        opacity: 1;\n        -webkit-transform: translateX(0);\n        transform: translateX(0)\n    }\n}\n@keyframes fadeInRightBig {\n    0% {\n        opacity: 0;\n        -webkit-transform: translateX(2000px);\n        -ms-transform: translateX(2000px);\n        transform: translateX(2000px)\n    }\n    100% {\n        opacity: 1;\n        -webkit-transform: translateX(0);\n        -ms-transform: translateX(0);\n        transform: translateX(0)\n    }\n}\n.fadeInRightBig {\n    -webkit-animation-name: fadeInRightBig;\n    animation-name: fadeInRightBig\n}\n@-webkit-keyframes fadeInUp {\n    0% {\n        opacity: 0;\n        -webkit-transform: translateY(20px);\n        transform: translateY(20px)\n    }\n    100% {\n        opacity: 1;\n        -webkit-transform: translateY(0);\n        transform: translateY(0)\n    }\n}\n@keyframes fadeInUp {\n    0% {\n        opacity: 0;\n        -webkit-transform: translateY(20px);\n        -ms-transform: translateY(20px);\n        transform: translateY(20px)\n    }\n    100% {\n        opacity: 1;\n        -webkit-transform: translateY(0);\n        -ms-transform: translateY(0);\n        transform: translateY(0)\n    }\n}\n.fadeInUp {\n    -webkit-animation-name: fadeInUp;\n    animation-name: fadeInUp\n}\n@-webkit-keyframes fadeInUpBig {\n    0% {\n        opacity: 0;\n        -webkit-transform: translateY(2000px);\n        transform: translateY(2000px)\n    }\n    100% {\n        opacity: 1;\n        -webkit-transform: translateY(0);\n        transform: translateY(0)\n    }\n}\n@keyframes fadeInUpBig {\n    0% {\n        opacity: 0;\n        -webkit-transform: translateY(2000px);\n        -ms-transform: translateY(2000px);\n        transform: translateY(2000px)\n    }\n    100% {\n        opacity: 1;\n        -webkit-transform: translateY(0);\n        -ms-transform: translateY(0);\n        transform: translateY(0)\n    }\n}\n.fadeInUpBig {\n    -webkit-animation-name: fadeInUpBig;\n    animation-name: fadeInUpBig\n}\n@-webkit-keyframes fadeOut {\n    0% {\n        opacity: 1\n    }\n    100% {\n        opacity: 0\n    }\n}\n@keyframes fadeOut {\n    0% {\n        opacity: 1\n    }\n    100% {\n        opacity: 0\n    }\n}\n.fadeOut {\n    -webkit-animation-name: fadeOut;\n    animation-name: fadeOut\n}\n@-webkit-keyframes fadeOutDown {\n    0% {\n        opacity: 1;\n        -webkit-transform: translateY(0);\n        transform: translateY(0)\n    }\n    100% {\n        opacity: 0;\n        -webkit-transform: translateY(20px);\n        transform: translateY(20px)\n    }\n}\n@keyframes fadeOutDown {\n    0% {\n        opacity: 1;\n        -webkit-transform: translateY(0);\n        -ms-transform: translateY(0);\n        transform: translateY(0)\n    }\n    100% {\n        opacity: 0;\n        -webkit-transform: translateY(20px);\n        -ms-transform: translateY(20px);\n        transform: translateY(20px)\n    }\n}\n.fadeOutDown {\n    -webkit-animation-name: fadeOutDown;\n    animation-name: fadeOutDown\n}\n@-webkit-keyframes fadeOutDownBig {\n    0% {\n        opacity: 1;\n        -webkit-transform: translateY(0);\n        transform: translateY(0)\n    }\n    100% {\n        opacity: 0;\n        -webkit-transform: translateY(2000px);\n        transform: translateY(2000px)\n    }\n}\n@keyframes fadeOutDownBig {\n    0% {\n        opacity: 1;\n        -webkit-transform: translateY(0);\n        -ms-transform: translateY(0);\n        transform: translateY(0)\n    }\n    100% {\n        opacity: 0;\n        -webkit-transform: translateY(2000px);\n        -ms-transform: translateY(2000px);\n        transform: translateY(2000px)\n    }\n}\n.fadeOutDownBig {\n    -webkit-animation-name: fadeOutDownBig;\n    animation-name: fadeOutDownBig\n}\n@-webkit-keyframes fadeOutLeft {\n    0% {\n        opacity: 1;\n        -webkit-transform: translateX(0);\n        transform: translateX(0)\n    }\n    100% {\n        opacity: 0;\n        -webkit-transform: translateX(-20px);\n        transform: translateX(-20px)\n    }\n}\n@keyframes fadeOutLeft {\n    0% {\n        opacity: 1;\n        -webkit-transform: translateX(0);\n        -ms-transform: translateX(0);\n        transform: translateX(0)\n    }\n    100% {\n        opacity: 0;\n        -webkit-transform: translateX(-20px);\n        -ms-transform: translateX(-20px);\n        transform: translateX(-20px)\n    }\n}\n.fadeOutLeft {\n    -webkit-animation-name: fadeOutLeft;\n    animation-name: fadeOutLeft\n}\n@-webkit-keyframes fadeOutLeftBig {\n    0% {\n        opacity: 1;\n        -webkit-transform: translateX(0);\n        transform: translateX(0)\n    }\n    100% {\n        opacity: 0;\n        -webkit-transform: translateX(-2000px);\n        transform: translateX(-2000px)\n    }\n}\n@keyframes fadeOutLeftBig {\n    0% {\n        opacity: 1;\n        -webkit-transform: translateX(0);\n        -ms-transform: translateX(0);\n        transform: translateX(0)\n    }\n    100% {\n        opacity: 0;\n        -webkit-transform: translateX(-2000px);\n        -ms-transform: translateX(-2000px);\n        transform: translateX(-2000px)\n    }\n}\n.fadeOutLeftBig {\n    -webkit-animation-name: fadeOutLeftBig;\n    animation-name: fadeOutLeftBig\n}\n@-webkit-keyframes fadeOutRight {\n    0% {\n        opacity: 1;\n        -webkit-transform: translateX(0);\n        transform: translateX(0)\n    }\n    100% {\n        opacity: 0;\n        -webkit-transform: translateX(20px);\n        transform: translateX(20px)\n    }\n}\n@keyframes fadeOutRight {\n    0% {\n        opacity: 1;\n        -webkit-transform: translateX(0);\n        -ms-transform: translateX(0);\n        transform: translateX(0)\n    }\n    100% {\n        opacity: 0;\n        -webkit-transform: translateX(20px);\n        -ms-transform: translateX(20px);\n        transform: translateX(20px)\n    }\n}\n.fadeOutRight {\n    -webkit-animation-name: fadeOutRight;\n    animation-name: fadeOutRight\n}\n@-webkit-keyframes fadeOutRightBig {\n    0% {\n        opacity: 1;\n        -webkit-transform: translateX(0);\n        transform: translateX(0)\n    }\n    100% {\n        opacity: 0;\n        -webkit-transform: translateX(2000px);\n        transform: translateX(2000px)\n    }\n}\n@keyframes fadeOutRightBig {\n    0% {\n        opacity: 1;\n        -webkit-transform: translateX(0);\n        -ms-transform: translateX(0);\n        transform: translateX(0)\n    }\n    100% {\n        opacity: 0;\n        -webkit-transform: translateX(2000px);\n        -ms-transform: translateX(2000px);\n        transform: translateX(2000px)\n    }\n}\n.fadeOutRightBig {\n    -webkit-animation-name: fadeOutRightBig;\n    animation-name: fadeOutRightBig\n}\n@-webkit-keyframes fadeOutUp {\n    0% {\n        opacity: 1;\n        -webkit-transform: translateY(0);\n        transform: translateY(0)\n    }\n    100% {\n        opacity: 0;\n        -webkit-transform: translateY(-20px);\n        transform: translateY(-20px)\n    }\n}\n@keyframes fadeOutUp {\n    0% {\n        opacity: 1;\n        -webkit-transform: translateY(0);\n        -ms-transform: translateY(0);\n        transform: translateY(0)\n    }\n    100% {\n        opacity: 0;\n        -webkit-transform: translateY(-20px);\n        -ms-transform: translateY(-20px);\n        transform: translateY(-20px)\n    }\n}\n.fadeOutUp {\n    -webkit-animation-name: fadeOutUp;\n    animation-name: fadeOutUp\n}\n@-webkit-keyframes fadeOutUpBig {\n    0% {\n        opacity: 1;\n        -webkit-transform: translateY(0);\n        transform: translateY(0)\n    }\n    100% {\n        opacity: 0;\n        -webkit-transform: translateY(-2000px);\n        transform: translateY(-2000px)\n    }\n}\n@keyframes fadeOutUpBig {\n    0% {\n        opacity: 1;\n        -webkit-transform: translateY(0);\n        -ms-transform: translateY(0);\n        transform: translateY(0)\n    }\n    100% {\n        opacity: 0;\n        -webkit-transform: translateY(-2000px);\n        -ms-transform: translateY(-2000px);\n        transform: translateY(-2000px)\n    }\n}\n.fadeOutUpBig {\n    -webkit-animation-name: fadeOutUpBig;\n    animation-name: fadeOutUpBig\n}\n@-webkit-keyframes flip {\n    0% {\n        -webkit-transform: perspective(400px) translateZ(0) rotateY(0) scale(1);\n        transform: perspective(400px) translateZ(0) rotateY(0) scale(1);\n        -webkit-animation-timing-function: ease-out;\n        animation-timing-function: ease-out\n    }\n    40% {\n        -webkit-transform: perspective(400px) translateZ(150px) rotateY(170deg) scale(1);\n        transform: perspective(400px) translateZ(150px) rotateY(170deg) scale(1);\n        -webkit-animation-timing-function: ease-out;\n        animation-timing-function: ease-out\n    }\n    50% {\n        -webkit-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);\n        transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);\n        -webkit-animation-timing-function: ease-in;\n        animation-timing-function: ease-in\n    }\n    80% {\n        -webkit-transform: perspective(400px) translateZ(0) rotateY(360deg) scale(.95);\n        transform: perspective(400px) translateZ(0) rotateY(360deg) scale(.95);\n        -webkit-animation-timing-function: ease-in;\n        animation-timing-function: ease-in\n    }\n    100% {\n        -webkit-transform: perspective(400px) translateZ(0) rotateY(360deg) scale(1);\n        transform: perspective(400px) translateZ(0) rotateY(360deg) scale(1);\n        -webkit-animation-timing-function: ease-in;\n        animation-timing-function: ease-in\n    }\n}\n@keyframes flip {\n    0% {\n        -webkit-transform: perspective(400px) translateZ(0) rotateY(0) scale(1);\n        -ms-transform: perspective(400px) translateZ(0) rotateY(0) scale(1);\n        transform: perspective(400px) translateZ(0) rotateY(0) scale(1);\n        -webkit-animation-timing-function: ease-out;\n        animation-timing-function: ease-out\n    }\n    40% {\n        -webkit-transform: perspective(400px) translateZ(150px) rotateY(170deg) scale(1);\n        -ms-transform: perspective(400px) translateZ(150px) rotateY(170deg) scale(1);\n        transform: perspective(400px) translateZ(150px) rotateY(170deg) scale(1);\n        -webkit-animation-timing-function: ease-out;\n        animation-timing-function: ease-out\n    }\n    50% {\n        -webkit-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);\n        -ms-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);\n        transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);\n        -webkit-animation-timing-function: ease-in;\n        animation-timing-function: ease-in\n    }\n    80% {\n        -webkit-transform: perspective(400px) translateZ(0) rotateY(360deg) scale(.95);\n        -ms-transform: perspective(400px) translateZ(0) rotateY(360deg) scale(.95);\n        transform: perspective(400px) translateZ(0) rotateY(360deg) scale(.95);\n        -webkit-animation-timing-function: ease-in;\n        animation-timing-function: ease-in\n    }\n    100% {\n        -webkit-transform: perspective(400px) translateZ(0) rotateY(360deg) scale(1);\n        -ms-transform: perspective(400px) translateZ(0) rotateY(360deg) scale(1);\n        transform: perspective(400px) translateZ(0) rotateY(360deg) scale(1);\n        -webkit-animation-timing-function: ease-in;\n        animation-timing-function: ease-in\n    }\n}\n.animated.flip {\n    -webkit-backface-visibility: visible;\n    -ms-backface-visibility: visible;\n    backface-visibility: visible;\n    -webkit-animation-name: flip;\n    animation-name: flip\n}\n@-webkit-keyframes flipInX {\n    0% {\n        -webkit-transform: perspective(400px) rotateX(90deg);\n        transform: perspective(400px) rotateX(90deg);\n        opacity: 0\n    }\n    40% {\n        -webkit-transform: perspective(400px) rotateX(-10deg);\n        transform: perspective(400px) rotateX(-10deg)\n    }\n    70% {\n        -webkit-transform: perspective(400px) rotateX(10deg);\n        transform: perspective(400px) rotateX(10deg)\n    }\n    100% {\n        -webkit-transform: perspective(400px) rotateX(0deg);\n        transform: perspective(400px) rotateX(0deg);\n        opacity: 1\n    }\n}\n@keyframes flipInX {\n    0% {\n        -webkit-transform: perspective(400px) rotateX(90deg);\n        -ms-transform: perspective(400px) rotateX(90deg);\n        transform: perspective(400px) rotateX(90deg);\n        opacity: 0\n    }\n    40% {\n        -webkit-transform: perspective(400px) rotateX(-10deg);\n        -ms-transform: perspective(400px) rotateX(-10deg);\n        transform: perspective(400px) rotateX(-10deg)\n    }\n    70% {\n        -webkit-transform: perspective(400px) rotateX(10deg);\n        -ms-transform: perspective(400px) rotateX(10deg);\n        transform: perspective(400px) rotateX(10deg)\n    }\n    100% {\n        -webkit-transform: perspective(400px) rotateX(0deg);\n        -ms-transform: perspective(400px) rotateX(0deg);\n        transform: perspective(400px) rotateX(0deg);\n        opacity: 1\n    }\n}\n.flipInX {\n    -webkit-backface-visibility: visible!important;\n    -ms-backface-visibility: visible!important;\n    backface-visibility: visible!important;\n    -webkit-animation-name: flipInX;\n    animation-name: flipInX\n}\n@-webkit-keyframes flipInY {\n    0% {\n        -webkit-transform: perspective(400px) rotateY(90deg);\n        transform: perspective(400px) rotateY(90deg);\n        opacity: 0\n    }\n    40% {\n        -webkit-transform: perspective(400px) rotateY(-10deg);\n        transform: perspective(400px) rotateY(-10deg)\n    }\n    70% {\n        -webkit-transform: perspective(400px) rotateY(10deg);\n        transform: perspective(400px) rotateY(10deg)\n    }\n    100% {\n        -webkit-transform: perspective(400px) rotateY(0deg);\n        transform: perspective(400px) rotateY(0deg);\n        opacity: 1\n    }\n}\n@keyframes flipInY {\n    0% {\n        -webkit-transform: perspective(400px) rotateY(90deg);\n        -ms-transform: perspective(400px) rotateY(90deg);\n        transform: perspective(400px) rotateY(90deg);\n        opacity: 0\n    }\n    40% {\n        -webkit-transform: perspective(400px) rotateY(-10deg);\n        -ms-transform: perspective(400px) rotateY(-10deg);\n        transform: perspective(400px) rotateY(-10deg)\n    }\n    70% {\n        -webkit-transform: perspective(400px) rotateY(10deg);\n        -ms-transform: perspective(400px) rotateY(10deg);\n        transform: perspective(400px) rotateY(10deg)\n    }\n    100% {\n        -webkit-transform: perspective(400px) rotateY(0deg);\n        -ms-transform: perspective(400px) rotateY(0deg);\n        transform: perspective(400px) rotateY(0deg);\n        opacity: 1\n    }\n}\n.flipInY {\n    -webkit-backface-visibility: visible!important;\n    -ms-backface-visibility: visible!important;\n    backface-visibility: visible!important;\n    -webkit-animation-name: flipInY;\n    animation-name: flipInY\n}\n@-webkit-keyframes flipOutX {\n    0% {\n        -webkit-transform: perspective(400px) rotateX(0deg);\n        transform: perspective(400px) rotateX(0deg);\n        opacity: 1\n    }\n    100% {\n        -webkit-transform: perspective(400px) rotateX(90deg);\n        transform: perspective(400px) rotateX(90deg);\n        opacity: 0\n    }\n}\n@keyframes flipOutX {\n    0% {\n        -webkit-transform: perspective(400px) rotateX(0deg);\n        -ms-transform: perspective(400px) rotateX(0deg);\n        transform: perspective(400px) rotateX(0deg);\n        opacity: 1\n    }\n    100% {\n        -webkit-transform: perspective(400px) rotateX(90deg);\n        -ms-transform: perspective(400px) rotateX(90deg);\n        transform: perspective(400px) rotateX(90deg);\n        opacity: 0\n    }\n}\n.flipOutX {\n    -webkit-animation-name: flipOutX;\n    animation-name: flipOutX;\n    -webkit-backface-visibility: visible!important;\n    -ms-backface-visibility: visible!important;\n    backface-visibility: visible!important\n}\n@-webkit-keyframes flipOutY {\n    0% {\n        -webkit-transform: perspective(400px) rotateY(0deg);\n        transform: perspective(400px) rotateY(0deg);\n        opacity: 1\n    }\n    100% {\n        -webkit-transform: perspective(400px) rotateY(90deg);\n        transform: perspective(400px) rotateY(90deg);\n        opacity: 0\n    }\n}\n@keyframes flipOutY {\n    0% {\n        -webkit-transform: perspective(400px) rotateY(0deg);\n        -ms-transform: perspective(400px) rotateY(0deg);\n        transform: perspective(400px) rotateY(0deg);\n        opacity: 1\n    }\n    100% {\n        -webkit-transform: perspective(400px) rotateY(90deg);\n        -ms-transform: perspective(400px) rotateY(90deg);\n        transform: perspective(400px) rotateY(90deg);\n        opacity: 0\n    }\n}\n.flipOutY {\n    -webkit-backface-visibility: visible!important;\n    -ms-backface-visibility: visible!important;\n    backface-visibility: visible!important;\n    -webkit-animation-name: flipOutY;\n    animation-name: flipOutY\n}\n@-webkit-keyframes lightSpeedIn {\n    0% {\n        -webkit-transform: translateX(100%) skewX(-30deg);\n        transform: translateX(100%) skewX(-30deg);\n        opacity: 0\n    }\n    60% {\n        -webkit-transform: translateX(-20%) skewX(30deg);\n        transform: translateX(-20%) skewX(30deg);\n        opacity: 1\n    }\n    80% {\n        -webkit-transform: translateX(0%) skewX(-15deg);\n        transform: translateX(0%) skewX(-15deg);\n        opacity: 1\n    }\n    100% {\n        -webkit-transform: translateX(0%) skewX(0deg);\n        transform: translateX(0%) skewX(0deg);\n        opacity: 1\n    }\n}\n@keyframes lightSpeedIn {\n    0% {\n        -webkit-transform: translateX(100%) skewX(-30deg);\n        -ms-transform: translateX(100%) skewX(-30deg);\n        transform: translateX(100%) skewX(-30deg);\n        opacity: 0\n    }\n    60% {\n        -webkit-transform: translateX(-20%) skewX(30deg);\n        -ms-transform: translateX(-20%) skewX(30deg);\n        transform: translateX(-20%) skewX(30deg);\n        opacity: 1\n    }\n    80% {\n        -webkit-transform: translateX(0%) skewX(-15deg);\n        -ms-transform: translateX(0%) skewX(-15deg);\n        transform: translateX(0%) skewX(-15deg);\n        opacity: 1\n    }\n    100% {\n        -webkit-transform: translateX(0%) skewX(0deg);\n        -ms-transform: translateX(0%) skewX(0deg);\n        transform: translateX(0%) skewX(0deg);\n        opacity: 1\n    }\n}\n.lightSpeedIn {\n    -webkit-animation-name: lightSpeedIn;\n    animation-name: lightSpeedIn;\n    -webkit-animation-timing-function: ease-out;\n    animation-timing-function: ease-out\n}\n@-webkit-keyframes lightSpeedOut {\n    0% {\n        -webkit-transform: translateX(0%) skewX(0deg);\n        transform: translateX(0%) skewX(0deg);\n        opacity: 1\n    }\n    100% {\n        -webkit-transform: translateX(100%) skewX(-30deg);\n        transform: translateX(100%) skewX(-30deg);\n        opacity: 0\n    }\n}\n@keyframes lightSpeedOut {\n    0% {\n        -webkit-transform: translateX(0%) skewX(0deg);\n        -ms-transform: translateX(0%) skewX(0deg);\n        transform: translateX(0%) skewX(0deg);\n        opacity: 1\n    }\n    100% {\n        -webkit-transform: translateX(100%) skewX(-30deg);\n        -ms-transform: translateX(100%) skewX(-30deg);\n        transform: translateX(100%) skewX(-30deg);\n        opacity: 0\n    }\n}\n.lightSpeedOut {\n    -webkit-animation-name: lightSpeedOut;\n    animation-name: lightSpeedOut;\n    -webkit-animation-timing-function: ease-in;\n    animation-timing-function: ease-in\n}\n@-webkit-keyframes rotateIn {\n    0% {\n        -webkit-transform-origin: center center;\n        transform-origin: center center;\n        -webkit-transform: rotate(-200deg);\n        transform: rotate(-200deg);\n        opacity: 0\n    }\n    100% {\n        -webkit-transform-origin: center center;\n        transform-origin: center center;\n        -webkit-transform: rotate(0);\n        transform: rotate(0);\n        opacity: 1\n    }\n}\n@keyframes rotateIn {\n    0% {\n        -webkit-transform-origin: center center;\n        -ms-transform-origin: center center;\n        transform-origin: center center;\n        -webkit-transform: rotate(-200deg);\n        -ms-transform: rotate(-200deg);\n        transform: rotate(-200deg);\n        opacity: 0\n    }\n    100% {\n        -webkit-transform-origin: center center;\n        -ms-transform-origin: center center;\n        transform-origin: center center;\n        -webkit-transform: rotate(0);\n        -ms-transform: rotate(0);\n        transform: rotate(0);\n        opacity: 1\n    }\n}\n.rotateIn {\n    -webkit-animation-name: rotateIn;\n    animation-name: rotateIn\n}\n@-webkit-keyframes rotateInDownLeft {\n    0% {\n        -webkit-transform-origin: left bottom;\n        transform-origin: left bottom;\n        -webkit-transform: rotate(-90deg);\n        transform: rotate(-90deg);\n        opacity: 0\n    }\n    100% {\n        -webkit-transform-origin: left bottom;\n        transform-origin: left bottom;\n        -webkit-transform: rotate(0);\n        transform: rotate(0);\n        opacity: 1\n    }\n}\n@keyframes rotateInDownLeft {\n    0% {\n        -webkit-transform-origin: left bottom;\n        -ms-transform-origin: left bottom;\n        transform-origin: left bottom;\n        -webkit-transform: rotate(-90deg);\n        -ms-transform: rotate(-90deg);\n        transform: rotate(-90deg);\n        opacity: 0\n    }\n    100% {\n        -webkit-transform-origin: left bottom;\n        -ms-transform-origin: left bottom;\n        transform-origin: left bottom;\n        -webkit-transform: rotate(0);\n        -ms-transform: rotate(0);\n        transform: rotate(0);\n        opacity: 1\n    }\n}\n.rotateInDownLeft {\n    -webkit-animation-name: rotateInDownLeft;\n    animation-name: rotateInDownLeft\n}\n@-webkit-keyframes rotateInDownRight {\n    0% {\n        -webkit-transform-origin: right bottom;\n        transform-origin: right bottom;\n        -webkit-transform: rotate(90deg);\n        transform: rotate(90deg);\n        opacity: 0\n    }\n    100% {\n        -webkit-transform-origin: right bottom;\n        transform-origin: right bottom;\n        -webkit-transform: rotate(0);\n        transform: rotate(0);\n        opacity: 1\n    }\n}\n@keyframes rotateInDownRight {\n    0% {\n        -webkit-transform-origin: right bottom;\n        -ms-transform-origin: right bottom;\n        transform-origin: right bottom;\n        -webkit-transform: rotate(90deg);\n        -ms-transform: rotate(90deg);\n        transform: rotate(90deg);\n        opacity: 0\n    }\n    100% {\n        -webkit-transform-origin: right bottom;\n        -ms-transform-origin: right bottom;\n        transform-origin: right bottom;\n        -webkit-transform: rotate(0);\n        -ms-transform: rotate(0);\n        transform: rotate(0);\n        opacity: 1\n    }\n}\n.rotateInDownRight {\n    -webkit-animation-name: rotateInDownRight;\n    animation-name: rotateInDownRight\n}\n@-webkit-keyframes rotateInUpLeft {\n    0% {\n        -webkit-transform-origin: left bottom;\n        transform-origin: left bottom;\n        -webkit-transform: rotate(90deg);\n        transform: rotate(90deg);\n        opacity: 0\n    }\n    100% {\n        -webkit-transform-origin: left bottom;\n        transform-origin: left bottom;\n        -webkit-transform: rotate(0);\n        transform: rotate(0);\n        opacity: 1\n    }\n}\n@keyframes rotateInUpLeft {\n    0% {\n        -webkit-transform-origin: left bottom;\n        -ms-transform-origin: left bottom;\n        transform-origin: left bottom;\n        -webkit-transform: rotate(90deg);\n        -ms-transform: rotate(90deg);\n        transform: rotate(90deg);\n        opacity: 0\n    }\n    100% {\n        -webkit-transform-origin: left bottom;\n        -ms-transform-origin: left bottom;\n        transform-origin: left bottom;\n        -webkit-transform: rotate(0);\n        -ms-transform: rotate(0);\n        transform: rotate(0);\n        opacity: 1\n    }\n}\n.rotateInUpLeft {\n    -webkit-animation-name: rotateInUpLeft;\n    animation-name: rotateInUpLeft\n}\n@-webkit-keyframes rotateInUpRight {\n    0% {\n        -webkit-transform-origin: right bottom;\n        transform-origin: right bottom;\n        -webkit-transform: rotate(-90deg);\n        transform: rotate(-90deg);\n        opacity: 0\n    }\n    100% {\n        -webkit-transform-origin: right bottom;\n        transform-origin: right bottom;\n        -webkit-transform: rotate(0);\n        transform: rotate(0);\n        opacity: 1\n    }\n}\n@keyframes rotateInUpRight {\n    0% {\n        -webkit-transform-origin: right bottom;\n        -ms-transform-origin: right bottom;\n        transform-origin: right bottom;\n        -webkit-transform: rotate(-90deg);\n        -ms-transform: rotate(-90deg);\n        transform: rotate(-90deg);\n        opacity: 0\n    }\n    100% {\n        -webkit-transform-origin: right bottom;\n        -ms-transform-origin: right bottom;\n        transform-origin: right bottom;\n        -webkit-transform: rotate(0);\n        -ms-transform: rotate(0);\n        transform: rotate(0);\n        opacity: 1\n    }\n}\n.rotateInUpRight {\n    -webkit-animation-name: rotateInUpRight;\n    animation-name: rotateInUpRight\n}\n@-webkit-keyframes rotateOut {\n    0% {\n        -webkit-transform-origin: center center;\n        transform-origin: center center;\n        -webkit-transform: rotate(0);\n        transform: rotate(0);\n        opacity: 1\n    }\n    100% {\n        -webkit-transform-origin: center center;\n        transform-origin: center center;\n        -webkit-transform: rotate(200deg);\n        transform: rotate(200deg);\n        opacity: 0\n    }\n}\n@keyframes rotateOut {\n    0% {\n        -webkit-transform-origin: center center;\n        -ms-transform-origin: center center;\n        transform-origin: center center;\n        -webkit-transform: rotate(0);\n        -ms-transform: rotate(0);\n        transform: rotate(0);\n        opacity: 1\n    }\n    100% {\n        -webkit-transform-origin: center center;\n        -ms-transform-origin: center center;\n        transform-origin: center center;\n        -webkit-transform: rotate(200deg);\n        -ms-transform: rotate(200deg);\n        transform: rotate(200deg);\n        opacity: 0\n    }\n}\n.rotateOut {\n    -webkit-animation-name: rotateOut;\n    animation-name: rotateOut\n}\n@-webkit-keyframes rotateOutDownLeft {\n    0% {\n        -webkit-transform-origin: left bottom;\n        transform-origin: left bottom;\n        -webkit-transform: rotate(0);\n        transform: rotate(0);\n        opacity: 1\n    }\n    100% {\n        -webkit-transform-origin: left bottom;\n        transform-origin: left bottom;\n        -webkit-transform: rotate(90deg);\n        transform: rotate(90deg);\n        opacity: 0\n    }\n}\n@keyframes rotateOutDownLeft {\n    0% {\n        -webkit-transform-origin: left bottom;\n        -ms-transform-origin: left bottom;\n        transform-origin: left bottom;\n        -webkit-transform: rotate(0);\n        -ms-transform: rotate(0);\n        transform: rotate(0);\n        opacity: 1\n    }\n    100% {\n        -webkit-transform-origin: left bottom;\n        -ms-transform-origin: left bottom;\n        transform-origin: left bottom;\n        -webkit-transform: rotate(90deg);\n        -ms-transform: rotate(90deg);\n        transform: rotate(90deg);\n        opacity: 0\n    }\n}\n.rotateOutDownLeft {\n    -webkit-animation-name: rotateOutDownLeft;\n    animation-name: rotateOutDownLeft\n}\n@-webkit-keyframes rotateOutDownRight {\n    0% {\n        -webkit-transform-origin: right bottom;\n        transform-origin: right bottom;\n        -webkit-transform: rotate(0);\n        transform: rotate(0);\n        opacity: 1\n    }\n    100% {\n        -webkit-transform-origin: right bottom;\n        transform-origin: right bottom;\n        -webkit-transform: rotate(-90deg);\n        transform: rotate(-90deg);\n        opacity: 0\n    }\n}\n@keyframes rotateOutDownRight {\n    0% {\n        -webkit-transform-origin: right bottom;\n        -ms-transform-origin: right bottom;\n        transform-origin: right bottom;\n        -webkit-transform: rotate(0);\n        -ms-transform: rotate(0);\n        transform: rotate(0);\n        opacity: 1\n    }\n    100% {\n        -webkit-transform-origin: right bottom;\n        -ms-transform-origin: right bottom;\n        transform-origin: right bottom;\n        -webkit-transform: rotate(-90deg);\n        -ms-transform: rotate(-90deg);\n        transform: rotate(-90deg);\n        opacity: 0\n    }\n}\n.rotateOutDownRight {\n    -webkit-animation-name: rotateOutDownRight;\n    animation-name: rotateOutDownRight\n}\n@-webkit-keyframes rotateOutUpLeft {\n    0% {\n        -webkit-transform-origin: left bottom;\n        transform-origin: left bottom;\n        -webkit-transform: rotate(0);\n        transform: rotate(0);\n        opacity: 1\n    }\n    100% {\n        -webkit-transform-origin: left bottom;\n        transform-origin: left bottom;\n        -webkit-transform: rotate(-90deg);\n        transform: rotate(-90deg);\n        opacity: 0\n    }\n}\n@keyframes rotateOutUpLeft {\n    0% {\n        -webkit-transform-origin: left bottom;\n        -ms-transform-origin: left bottom;\n        transform-origin: left bottom;\n        -webkit-transform: rotate(0);\n        -ms-transform: rotate(0);\n        transform: rotate(0);\n        opacity: 1\n    }\n    100% {\n        -webkit-transform-origin: left bottom;\n        -ms-transform-origin: left bottom;\n        transform-origin: left bottom;\n        -webkit-transform: rotate(-90deg);\n        -ms-transform: rotate(-90deg);\n        transform: rotate(-90deg);\n        opacity: 0\n    }\n}\n.rotateOutUpLeft {\n    -webkit-animation-name: rotateOutUpLeft;\n    animation-name: rotateOutUpLeft\n}\n@-webkit-keyframes rotateOutUpRight {\n    0% {\n        -webkit-transform-origin: right bottom;\n        transform-origin: right bottom;\n        -webkit-transform: rotate(0);\n        transform: rotate(0);\n        opacity: 1\n    }\n    100% {\n        -webkit-transform-origin: right bottom;\n        transform-origin: right bottom;\n        -webkit-transform: rotate(90deg);\n        transform: rotate(90deg);\n        opacity: 0\n    }\n}\n@keyframes rotateOutUpRight {\n    0% {\n        -webkit-transform-origin: right bottom;\n        -ms-transform-origin: right bottom;\n        transform-origin: right bottom;\n        -webkit-transform: rotate(0);\n        -ms-transform: rotate(0);\n        transform: rotate(0);\n        opacity: 1\n    }\n    100% {\n        -webkit-transform-origin: right bottom;\n        -ms-transform-origin: right bottom;\n        transform-origin: right bottom;\n        -webkit-transform: rotate(90deg);\n        -ms-transform: rotate(90deg);\n        transform: rotate(90deg);\n        opacity: 0\n    }\n}\n.rotateOutUpRight {\n    -webkit-animation-name: rotateOutUpRight;\n    animation-name: rotateOutUpRight\n}\n@-webkit-keyframes slideInDown {\n    0% {\n        opacity: 0;\n        -webkit-transform: translateY(-2000px);\n        transform: translateY(-2000px)\n    }\n    100% {\n        -webkit-transform: translateY(0);\n        transform: translateY(0)\n    }\n}\n@keyframes slideInDown {\n    0% {\n        opacity: 0;\n        -webkit-transform: translateY(-2000px);\n        -ms-transform: translateY(-2000px);\n        transform: translateY(-2000px)\n    }\n    100% {\n        -webkit-transform: translateY(0);\n        -ms-transform: translateY(0);\n        transform: translateY(0)\n    }\n}\n.slideInDown {\n    -webkit-animation-name: slideInDown;\n    animation-name: slideInDown\n}\n@-webkit-keyframes slideInLeft {\n    0% {\n        opacity: 0;\n        -webkit-transform: translateX(-2000px);\n        transform: translateX(-2000px)\n    }\n    100% {\n        -webkit-transform: translateX(0);\n        transform: translateX(0)\n    }\n}\n@keyframes slideInLeft {\n    0% {\n        opacity: 0;\n        -webkit-transform: translateX(-2000px);\n        -ms-transform: translateX(-2000px);\n        transform: translateX(-2000px)\n    }\n    100% {\n        -webkit-transform: translateX(0);\n        -ms-transform: translateX(0);\n        transform: translateX(0)\n    }\n}\n.slideInLeft {\n    -webkit-animation-name: slideInLeft;\n    animation-name: slideInLeft\n}\n@-webkit-keyframes slideInRight {\n    0% {\n        opacity: 0;\n        -webkit-transform: translateX(2000px);\n        transform: translateX(2000px)\n    }\n    100% {\n        -webkit-transform: translateX(0);\n        transform: translateX(0)\n    }\n}\n@keyframes slideInRight {\n    0% {\n        opacity: 0;\n        -webkit-transform: translateX(2000px);\n        -ms-transform: translateX(2000px);\n        transform: translateX(2000px)\n    }\n    100% {\n        -webkit-transform: translateX(0);\n        -ms-transform: translateX(0);\n        transform: translateX(0)\n    }\n}\n.slideInRight {\n    -webkit-animation-name: slideInRight;\n    animation-name: slideInRight\n}\n@-webkit-keyframes slideOutLeft {\n    0% {\n        -webkit-transform: translateX(0);\n        transform: translateX(0)\n    }\n    100% {\n        opacity: 0;\n        -webkit-transform: translateX(-2000px);\n        transform: translateX(-2000px)\n    }\n}\n@keyframes slideOutLeft {\n    0% {\n        -webkit-transform: translateX(0);\n        -ms-transform: translateX(0);\n        transform: translateX(0)\n    }\n    100% {\n        opacity: 0;\n        -webkit-transform: translateX(-2000px);\n        -ms-transform: translateX(-2000px);\n        transform: translateX(-2000px)\n    }\n}\n.slideOutLeft {\n    -webkit-animation-name: slideOutLeft;\n    animation-name: slideOutLeft\n}\n@-webkit-keyframes slideOutRight {\n    0% {\n        -webkit-transform: translateX(0);\n        transform: translateX(0)\n    }\n    100% {\n        opacity: 0;\n        -webkit-transform: translateX(2000px);\n        transform: translateX(2000px)\n    }\n}\n@keyframes slideOutRight {\n    0% {\n        -webkit-transform: translateX(0);\n        -ms-transform: translateX(0);\n        transform: translateX(0)\n    }\n    100% {\n        opacity: 0;\n        -webkit-transform: translateX(2000px);\n        -ms-transform: translateX(2000px);\n        transform: translateX(2000px)\n    }\n}\n.slideOutRight {\n    -webkit-animation-name: slideOutRight;\n    animation-name: slideOutRight\n}\n@-webkit-keyframes slideOutUp {\n    0% {\n        -webkit-transform: translateY(0);\n        transform: translateY(0)\n    }\n    100% {\n        opacity: 0;\n        -webkit-transform: translateY(-2000px);\n        transform: translateY(-2000px)\n    }\n}\n@keyframes slideOutUp {\n    0% {\n        -webkit-transform: translateY(0);\n        -ms-transform: translateY(0);\n        transform: translateY(0)\n    }\n    100% {\n        opacity: 0;\n        -webkit-transform: translateY(-2000px);\n        -ms-transform: translateY(-2000px);\n        transform: translateY(-2000px)\n    }\n}\n.slideOutUp {\n    -webkit-animation-name: slideOutUp;\n    animation-name: slideOutUp\n}\n@-webkit-keyframes hinge {\n    0% {\n        -webkit-transform: rotate(0);\n        transform: rotate(0);\n        -webkit-transform-origin: top left;\n        transform-origin: top left;\n        -webkit-animation-timing-function: ease-in-out;\n        animation-timing-function: ease-in-out\n    }\n    20%,\n    60% {\n        -webkit-transform: rotate(80deg);\n        transform: rotate(80deg);\n        -webkit-transform-origin: top left;\n        transform-origin: top left;\n        -webkit-animation-timing-function: ease-in-out;\n        animation-timing-function: ease-in-out\n    }\n    40% {\n        -webkit-transform: rotate(60deg);\n        transform: rotate(60deg);\n        -webkit-transform-origin: top left;\n        transform-origin: top left;\n        -webkit-animation-timing-function: ease-in-out;\n        animation-timing-function: ease-in-out\n    }\n    80% {\n        -webkit-transform: rotate(60deg) translateY(0);\n        transform: rotate(60deg) translateY(0);\n        opacity: 1;\n        -webkit-transform-origin: top left;\n        transform-origin: top left;\n        -webkit-animation-timing-function: ease-in-out;\n        animation-timing-function: ease-in-out\n    }\n    100% {\n        -webkit-transform: translateY(700px);\n        transform: translateY(700px);\n        opacity: 0\n    }\n}\n@keyframes hinge {\n    0% {\n        -webkit-transform: rotate(0);\n        -ms-transform: rotate(0);\n        transform: rotate(0);\n        -webkit-transform-origin: top left;\n        -ms-transform-origin: top left;\n        transform-origin: top left;\n        -webkit-animation-timing-function: ease-in-out;\n        animation-timing-function: ease-in-out\n    }\n    20%,\n    60% {\n        -webkit-transform: rotate(80deg);\n        -ms-transform: rotate(80deg);\n        transform: rotate(80deg);\n        -webkit-transform-origin: top left;\n        -ms-transform-origin: top left;\n        transform-origin: top left;\n        -webkit-animation-timing-function: ease-in-out;\n        animation-timing-function: ease-in-out\n    }\n    40% {\n        -webkit-transform: rotate(60deg);\n        -ms-transform: rotate(60deg);\n        transform: rotate(60deg);\n        -webkit-transform-origin: top left;\n        -ms-transform-origin: top left;\n        transform-origin: top left;\n        -webkit-animation-timing-function: ease-in-out;\n        animation-timing-function: ease-in-out\n    }\n    80% {\n        -webkit-transform: rotate(60deg) translateY(0);\n        -ms-transform: rotate(60deg) translateY(0);\n        transform: rotate(60deg) translateY(0);\n        opacity: 1;\n        -webkit-transform-origin: top left;\n        -ms-transform-origin: top left;\n        transform-origin: top left;\n        -webkit-animation-timing-function: ease-in-out;\n        animation-timing-function: ease-in-out\n    }\n    100% {\n        -webkit-transform: translateY(700px);\n        -ms-transform: translateY(700px);\n        transform: translateY(700px);\n        opacity: 0\n    }\n}\n.hinge {\n    -webkit-animation-name: hinge;\n    animation-name: hinge\n}\n@-webkit-keyframes rollIn {\n    0% {\n        opacity: 0;\n        -webkit-transform: translateX(-100%) rotate(-120deg);\n        transform: translateX(-100%) rotate(-120deg)\n    }\n    100% {\n        opacity: 1;\n        -webkit-transform: translateX(0px) rotate(0deg);\n        transform: translateX(0px) rotate(0deg)\n    }\n}\n@keyframes rollIn {\n    0% {\n        opacity: 0;\n        -webkit-transform: translateX(-100%) rotate(-120deg);\n        -ms-transform: translateX(-100%) rotate(-120deg);\n        transform: translateX(-100%) rotate(-120deg)\n    }\n    100% {\n        opacity: 1;\n        -webkit-transform: translateX(0px) rotate(0deg);\n        -ms-transform: translateX(0px) rotate(0deg);\n        transform: translateX(0px) rotate(0deg)\n    }\n}\n.rollIn {\n    -webkit-animation-name: rollIn;\n    animation-name: rollIn\n}\n@-webkit-keyframes rollOut {\n    0% {\n        opacity: 1;\n        -webkit-transform: translateX(0px) rotate(0deg);\n        transform: translateX(0px) rotate(0deg)\n    }\n    100% {\n        opacity: 0;\n        -webkit-transform: translateX(100%) rotate(120deg);\n        transform: translateX(100%) rotate(120deg)\n    }\n}\n@keyframes rollOut {\n    0% {\n        opacity: 1;\n        -webkit-transform: translateX(0px) rotate(0deg);\n        -ms-transform: translateX(0px) rotate(0deg);\n        transform: translateX(0px) rotate(0deg)\n    }\n    100% {\n        opacity: 0;\n        -webkit-transform: translateX(100%) rotate(120deg);\n        -ms-transform: translateX(100%) rotate(120deg);\n        transform: translateX(100%) rotate(120deg)\n    }\n}\n.rollOut {\n    -webkit-animation-name: rollOut;\n    animation-name: rollOut\n}"
  },
  {
    "path": "public/profile/vendors/owl-carousel/assets/owl.carousel.css",
    "content": "/**\n * Owl Carousel v2.2.1\n * Copyright 2013-2017 David Deutsch\n * Licensed under  ()\n */\n/*\n *  Owl Carousel - Core\n */\n.owl-carousel {\n  display: none;\n  width: 100%;\n  -webkit-tap-highlight-color: transparent;\n  /* position relative and z-index fix webkit rendering fonts issue */\n  position: relative;\n  z-index: 1; }\n  .owl-carousel .owl-stage {\n    position: relative;\n    -ms-touch-action: pan-Y;\n    -moz-backface-visibility: hidden;\n    /* fix firefox animation glitch */ }\n  .owl-carousel .owl-stage:after {\n    content: \".\";\n    display: block;\n    clear: both;\n    visibility: hidden;\n    line-height: 0;\n    height: 0; }\n  .owl-carousel .owl-stage-outer {\n    position: relative;\n    overflow: hidden;\n    /* fix for flashing background */\n    -webkit-transform: translate3d(0px, 0px, 0px); }\n  .owl-carousel .owl-wrapper,\n  .owl-carousel .owl-item {\n    -webkit-backface-visibility: hidden;\n    -moz-backface-visibility: hidden;\n    -ms-backface-visibility: hidden;\n    -webkit-transform: translate3d(0, 0, 0);\n    -moz-transform: translate3d(0, 0, 0);\n    -ms-transform: translate3d(0, 0, 0); }\n  .owl-carousel .owl-item {\n    position: relative;\n    min-height: 1px;\n    float: left;\n    -webkit-backface-visibility: hidden;\n    -webkit-tap-highlight-color: transparent;\n    -webkit-touch-callout: none; }\n  .owl-carousel .owl-item img {\n    display: block;\n    width: 100%; }\n  .owl-carousel .owl-nav.disabled,\n  .owl-carousel .owl-dots.disabled {\n    display: none; }\n  .owl-carousel .owl-nav .owl-prev,\n  .owl-carousel .owl-nav .owl-next,\n  .owl-carousel .owl-dot {\n    cursor: pointer;\n    cursor: hand;\n    -webkit-user-select: none;\n    -khtml-user-select: none;\n    -moz-user-select: none;\n    -ms-user-select: none;\n    user-select: none; }\n  .owl-carousel.owl-loaded {\n    display: block; }\n  .owl-carousel.owl-loading {\n    opacity: 0;\n    display: block; }\n  .owl-carousel.owl-hidden {\n    opacity: 0; }\n  .owl-carousel.owl-refresh .owl-item {\n    visibility: hidden; }\n  .owl-carousel.owl-drag .owl-item {\n    -webkit-user-select: none;\n    -moz-user-select: none;\n    -ms-user-select: none;\n    user-select: none; }\n  .owl-carousel.owl-grab {\n    cursor: move;\n    cursor: grab; }\n  .owl-carousel.owl-rtl {\n    direction: rtl; }\n  .owl-carousel.owl-rtl .owl-item {\n    float: right; }\n\n/* No Js */\n.no-js .owl-carousel {\n  display: block; }\n\n/*\n *  Owl Carousel - Animate Plugin\n */\n.owl-carousel .animated {\n  animation-duration: 1000ms;\n  animation-fill-mode: both; }\n\n.owl-carousel .owl-animated-in {\n  z-index: 0; }\n\n.owl-carousel .owl-animated-out {\n  z-index: 1; }\n\n.owl-carousel .fadeOut {\n  animation-name: fadeOut; }\n\n@keyframes fadeOut {\n  0% {\n    opacity: 1; }\n  100% {\n    opacity: 0; } }\n\n/*\n * \tOwl Carousel - Auto Height Plugin\n */\n.owl-height {\n  transition: height 500ms ease-in-out; }\n\n/*\n * \tOwl Carousel - Lazy Load Plugin\n */\n.owl-carousel .owl-item .owl-lazy {\n  opacity: 0;\n  transition: opacity 400ms ease; }\n\n.owl-carousel .owl-item img.owl-lazy {\n  transform-style: preserve-3d; }\n\n/*\n * \tOwl Carousel - Video Plugin\n */\n.owl-carousel .owl-video-wrapper {\n  position: relative;\n  height: 100%;\n  background: #000; }\n\n.owl-carousel .owl-video-play-icon {\n  position: absolute;\n  height: 80px;\n  width: 80px;\n  left: 50%;\n  top: 50%;\n  margin-left: -40px;\n  margin-top: -40px;\n  background: url(\"owl.video.play.png\") no-repeat;\n  cursor: pointer;\n  z-index: 1;\n  -webkit-backface-visibility: hidden;\n  transition: transform 100ms ease; }\n\n.owl-carousel .owl-video-play-icon:hover {\n  -ms-transform: scale(1.3, 1.3);\n      transform: scale(1.3, 1.3); }\n\n.owl-carousel .owl-video-playing .owl-video-tn,\n.owl-carousel .owl-video-playing .owl-video-play-icon {\n  display: none; }\n\n.owl-carousel .owl-video-tn {\n  opacity: 0;\n  height: 100%;\n  background-position: center center;\n  background-repeat: no-repeat;\n  background-size: contain;\n  transition: opacity 400ms ease; }\n\n.owl-carousel .owl-video-frame {\n  position: relative;\n  z-index: 1;\n  height: 100%;\n  width: 100%; }\n"
  },
  {
    "path": "public/profile/vendors/popup/magnific-popup.css",
    "content": "/* Magnific Popup CSS */\n.mfp-bg {\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  z-index: 1042;\n  overflow: hidden;\n  position: fixed;\n  background: #0b0b0b;\n  opacity: 0.8; }\n\n.mfp-wrap {\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  z-index: 1043;\n  position: fixed;\n  outline: none !important;\n  -webkit-backface-visibility: hidden; }\n\n.mfp-container {\n  text-align: center;\n  position: absolute;\n  width: 100%;\n  height: 100%;\n  left: 0;\n  top: 0;\n  padding: 0 8px;\n  box-sizing: border-box; }\n\n.mfp-container:before {\n  content: '';\n  display: inline-block;\n  height: 100%;\n  vertical-align: middle; }\n\n.mfp-align-top .mfp-container:before {\n  display: none; }\n\n.mfp-content {\n  position: relative;\n  display: inline-block;\n  vertical-align: middle;\n  margin: 0 auto;\n  text-align: left;\n  z-index: 1045; }\n\n.mfp-inline-holder .mfp-content,\n.mfp-ajax-holder .mfp-content {\n  width: 100%;\n  cursor: auto; }\n\n.mfp-ajax-cur {\n  cursor: progress; }\n\n.mfp-zoom-out-cur, .mfp-zoom-out-cur .mfp-image-holder .mfp-close {\n  cursor: -moz-zoom-out;\n  cursor: -webkit-zoom-out;\n  cursor: zoom-out; }\n\n.mfp-zoom {\n  cursor: pointer;\n  cursor: -webkit-zoom-in;\n  cursor: -moz-zoom-in;\n  cursor: zoom-in; }\n\n.mfp-auto-cursor .mfp-content {\n  cursor: auto; }\n\n.mfp-close,\n.mfp-arrow,\n.mfp-preloader,\n.mfp-counter {\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  user-select: none; }\n\n.mfp-loading.mfp-figure {\n  display: none; }\n\n.mfp-hide {\n  display: none !important; }\n\n.mfp-preloader {\n  color: #CCC;\n  position: absolute;\n  top: 50%;\n  width: auto;\n  text-align: center;\n  margin-top: -0.8em;\n  left: 8px;\n  right: 8px;\n  z-index: 1044; }\n  .mfp-preloader a {\n    color: #CCC; }\n    .mfp-preloader a:hover {\n      color: #FFF; }\n\n.mfp-s-ready .mfp-preloader {\n  display: none; }\n\n.mfp-s-error .mfp-content {\n  display: none; }\n\nbutton.mfp-close,\nbutton.mfp-arrow {\n  overflow: visible;\n  cursor: pointer;\n  background: transparent;\n  border: 0;\n  -webkit-appearance: none;\n  display: block;\n  outline: none;\n  padding: 0;\n  z-index: 1046;\n  box-shadow: none;\n  touch-action: manipulation; }\n\nbutton::-moz-focus-inner {\n  padding: 0;\n  border: 0; }\n\n.mfp-close {\n  width: 44px;\n  height: 44px;\n  line-height: 44px;\n  position: absolute;\n  right: 0;\n  top: 0;\n  text-decoration: none;\n  text-align: center;\n  opacity: 0.65;\n  padding: 0 0 18px 10px;\n  color: #FFF;\n  font-style: normal;\n  font-size: 28px;\n  font-family: Arial, Baskerville, monospace; }\n  .mfp-close:hover,\n  .mfp-close:focus {\n    opacity: 1; }\n  .mfp-close:active {\n    top: 1px; }\n\n.mfp-close-btn-in .mfp-close {\n  color: #333; }\n\n.mfp-image-holder .mfp-close,\n.mfp-iframe-holder .mfp-close {\n  color: #FFF;\n  right: -6px;\n  text-align: right;\n  padding-right: 6px;\n  width: 100%; }\n\n.mfp-counter {\n  position: absolute;\n  top: 0;\n  right: 0;\n  color: #CCC;\n  font-size: 12px;\n  line-height: 18px;\n  white-space: nowrap; }\n\n.mfp-arrow {\n  position: absolute;\n  opacity: 0.65;\n  margin: 0;\n  top: 50%;\n  margin-top: -55px;\n  padding: 0;\n  width: 90px;\n  height: 110px;\n  -webkit-tap-highlight-color: transparent; }\n  .mfp-arrow:active {\n    margin-top: -54px; }\n  .mfp-arrow:hover,\n  .mfp-arrow:focus {\n    opacity: 1; }\n  .mfp-arrow:before,\n  .mfp-arrow:after {\n    content: '';\n    display: block;\n    width: 0;\n    height: 0;\n    position: absolute;\n    left: 0;\n    top: 0;\n    margin-top: 35px;\n    margin-left: 35px;\n    border: medium inset transparent; }\n  .mfp-arrow:after {\n    border-top-width: 13px;\n    border-bottom-width: 13px;\n    top: 8px; }\n  .mfp-arrow:before {\n    border-top-width: 21px;\n    border-bottom-width: 21px;\n    opacity: 0.7; }\n\n.mfp-arrow-left {\n  left: 0; }\n  .mfp-arrow-left:after {\n    border-right: 17px solid #FFF;\n    margin-left: 31px; }\n  .mfp-arrow-left:before {\n    margin-left: 25px;\n    border-right: 27px solid #3F3F3F; }\n\n.mfp-arrow-right {\n  right: 0; }\n  .mfp-arrow-right:after {\n    border-left: 17px solid #FFF;\n    margin-left: 39px; }\n  .mfp-arrow-right:before {\n    border-left: 27px solid #3F3F3F; }\n\n.mfp-iframe-holder {\n  padding-top: 40px;\n  padding-bottom: 40px; }\n  .mfp-iframe-holder .mfp-content {\n    line-height: 0;\n    width: 100%;\n    max-width: 900px; }\n  .mfp-iframe-holder .mfp-close {\n    top: -40px; }\n\n.mfp-iframe-scaler {\n  width: 100%;\n  height: 0;\n  overflow: hidden;\n  padding-top: 56.25%; }\n  .mfp-iframe-scaler iframe {\n    position: absolute;\n    display: block;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n    box-shadow: 0 0 8px rgba(0, 0, 0, 0.6);\n    background: #000; }\n\n/* Main image in popup */\nimg.mfp-img {\n  width: auto;\n  max-width: 100%;\n  height: auto;\n  display: block;\n  line-height: 0;\n  box-sizing: border-box;\n  padding: 40px 0 40px;\n  margin: 0 auto; }\n\n/* The shadow behind the image */\n.mfp-figure {\n  line-height: 0; }\n  .mfp-figure:after {\n    content: '';\n    position: absolute;\n    left: 0;\n    top: 40px;\n    bottom: 40px;\n    display: block;\n    right: 0;\n    width: auto;\n    height: auto;\n    z-index: -1;\n    box-shadow: 0 0 8px rgba(0, 0, 0, 0.6);\n    background: #444; }\n  .mfp-figure small {\n    color: #BDBDBD;\n    display: block;\n    font-size: 12px;\n    line-height: 14px; }\n  .mfp-figure figure {\n    margin: 0; }\n\n.mfp-bottom-bar {\n  margin-top: -36px;\n  position: absolute;\n  top: 100%;\n  left: 0;\n  width: 100%;\n  cursor: auto; }\n\n.mfp-title {\n  text-align: left;\n  line-height: 18px;\n  color: #F3F3F3;\n  word-wrap: break-word;\n  padding-right: 36px; }\n\n.mfp-image-holder .mfp-content {\n  max-width: 100%; }\n\n.mfp-gallery .mfp-image-holder .mfp-figure {\n  cursor: pointer; }\n\n@media screen and (max-width: 800px) and (orientation: landscape), screen and (max-height: 300px) {\n  /**\n       * Remove all paddings around the image on small screen\n       */\n  .mfp-img-mobile .mfp-image-holder {\n    padding-left: 0;\n    padding-right: 0; }\n  .mfp-img-mobile img.mfp-img {\n    padding: 0; }\n  .mfp-img-mobile .mfp-figure:after {\n    top: 0;\n    bottom: 0; }\n  .mfp-img-mobile .mfp-figure small {\n    display: inline;\n    margin-left: 5px; }\n  .mfp-img-mobile .mfp-bottom-bar {\n    background: rgba(0, 0, 0, 0.6);\n    bottom: 0;\n    margin: 0;\n    top: auto;\n    padding: 3px 5px;\n    position: fixed;\n    box-sizing: border-box; }\n    .mfp-img-mobile .mfp-bottom-bar:empty {\n      padding: 0; }\n  .mfp-img-mobile .mfp-counter {\n    right: 5px;\n    top: 3px; }\n  .mfp-img-mobile .mfp-close {\n    top: 0;\n    right: 0;\n    width: 35px;\n    height: 35px;\n    line-height: 35px;\n    background: rgba(0, 0, 0, 0.6);\n    position: fixed;\n    text-align: center;\n    padding: 0; } }\n\n@media all and (max-width: 900px) {\n  .mfp-arrow {\n    -webkit-transform: scale(0.75);\n    transform: scale(0.75); }\n  .mfp-arrow-left {\n    -webkit-transform-origin: 0;\n    transform-origin: 0; }\n  .mfp-arrow-right {\n    -webkit-transform-origin: 100%;\n    transform-origin: 100%; }\n  .mfp-container {\n    padding-left: 6px;\n    padding-right: 6px; } }\n"
  },
  {
    "path": "public/robots.txt",
    "content": "User-agent: *\nDisallow:\n"
  },
  {
    "path": "public/user/Source/sass/style.scss",
    "content": "/* =================================\n------------------------------------\n  Divisima | eCommerce Template\n  Version: 1.0\n ------------------------------------\n ====================================*/\n\n$color: #f51167;\n$sub_color: #50e550;\n\n/*----------------------------------------*/\n/* Template default CSS\n/*----------------------------------------*/\n\nhtml,\nbody {\n\theight: 100%;\n\tfont-family: 'Josefin Sans', sans-serif;\n\t-webkit-font-smoothing: antialiased;\n\tfont-smoothing: antialiased;\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n\tmargin: 0;\n\tcolor: #111111;\n\tfont-weight: 600;\n}\n\nh1 {\n\tfont-size: 70px;\n}\n\nh2 {\n\tfont-size: 36px;\n}\n\nh3 {\n\tfont-size: 30px;\n}\n\nh4 {\n\tfont-size: 24px;\n}\n\nh5 {\n\tfont-size: 18px;\n}\n\nh6 {\n\tfont-size: 16px;\n}\n\np {\n\tfont-size: 14px;\n\tcolor: #585858;\n\tline-height: 1.6;\n}\n\nimg {\n\tmax-width: 100%;\n}\n\ninput,\nselect,\nbutton,\ntextarea {\n\t&:focus {\n\t\toutline: none;\n\t}\n}\n\na:hover,\na:focus {\n\ttext-decoration: none;\n\toutline: none;\n}\n\nul,\nol {\n\tpadding: 0;\n\tmargin: 0;\n}\n\n/*---------------------\n  Helper CSS\n-----------------------*/\n\n.section-title {\n\ttext-align: center;\n\th2 {\n\t\tfont-size: 36px;\n\t}\n}\n\n.set-bg {\n\tbackground-repeat: no-repeat;\n\tbackground-size: cover;\n\tbackground-position: top center;\n}\n\n.spad {\n\tpadding-top: 105px;\n\tpadding-bottom: 105px;\n}\n\n.text-white {\n\th1,\n\th2,\n\th3,\n\th4,\n\th5,\n\th6,\n\tp,\n\tspan,\n\tli,\n\ta {\n\t\tcolor: #fff;\n\t}\n}\n\n/*---------------------\n  Commom elements\n-----------------------*/\n\n/* buttons */\n\n.site-btn {\n\tdisplay: inline-block;\n\tborder: none;\n\tfont-size: 14px;\n\tfont-weight: 600;\n\tmin-width: 167px;\n\tpadding: 18px 47px 14px;\n\tborder-radius: 50px;\n\ttext-transform: uppercase;\n\tbackground: $color;\n\tcolor: #fff;\n\tline-height: normal;\n\tcursor: pointer;\n\ttext-align: center;\n\t&:hover {\n\t\tcolor: #fff;\n\t}\n\t&.sb-white {\n\t\tbackground: #fff;\n\t\tcolor: #111111;\n\t}\n\t&.sb-line {\n\t\tbackground: transparent;\n\t\tcolor: #fff;\n\t\t-webkit-box-shadow: inset 0 0 0 1px #fff;\n\t\tbox-shadow: inset 0 0 0 1px #fff;\n\t}\n\t&.sb-dark {\n\t\tbackground: #413a3a;\n\t\t&.sb-line {\n\t\t\tbackground-color: transparent;\n\t\t\tcolor: #111111;\n\t\t\t-webkit-box-shadow: inset 0 0 0 1px #111111;\n\t\t\tbox-shadow: inset 0 0 0 1px #111111;\n\t\t}\n\t}\n}\n\n/* Preloder */\n\n#preloder {\n\tposition: fixed;\n\twidth: 100%;\n\theight: 100%;\n\ttop: 0;\n\tleft: 0;\n\tz-index: 999999;\n\tbackground: #000;\n}\n\n.loader {\n\twidth: 40px;\n\theight: 40px;\n\tposition: absolute;\n\ttop: 50%;\n\tleft: 50%;\n\tmargin-top: -13px;\n\tmargin-left: -13px;\n\tborder-radius: 60px;\n\tanimation: loader 0.8s linear infinite;\n\t-webkit-animation: loader 0.8s linear infinite;\n}\n\n@keyframes loader {\n\t0% {\n\t\t-webkit-transform: rotate(0deg);\n\t\ttransform: rotate(0deg);\n\t\tborder: 4px solid #f44336;\n\t\tborder-left-color: transparent;\n\t}\n\t50% {\n\t\t-webkit-transform: rotate(180deg);\n\t\ttransform: rotate(180deg);\n\t\tborder: 4px solid #673ab7;\n\t\tborder-left-color: transparent;\n\t}\n\t100% {\n\t\t-webkit-transform: rotate(360deg);\n\t\ttransform: rotate(360deg);\n\t\tborder: 4px solid #f44336;\n\t\tborder-left-color: transparent;\n\t}\n}\n\n@-webkit-keyframes loader {\n\t0% {\n\t\t-webkit-transform: rotate(0deg);\n\t\tborder: 4px solid #f44336;\n\t\tborder-left-color: transparent;\n\t}\n\t50% {\n\t\t-webkit-transform: rotate(180deg);\n\t\tborder: 4px solid #673ab7;\n\t\tborder-left-color: transparent;\n\t}\n\t100% {\n\t\t-webkit-transform: rotate(360deg);\n\t\tborder: 4px solid #f44336;\n\t\tborder-left-color: transparent;\n\t}\n}\n\n.elements-section {\n\tpadding-top: 100px;\n}\n\n.el-title {\n\tmargin-bottom: 75px;\n}\n\n.element {\n\tmargin-bottom: 100px;\n\t&:last-child {\n\t\tmargin-bottom: 0;\n\t}\n}\n\n/* Accordion */\n\n.accordion-area {\n\tmargin-top: 50px;\n\tborder-top: 2px solid #e1e1e1;\n}\n\n.accordion-area .panel {\n\tborder-bottom: 2px solid #e1e1e1;\n}\n\n.accordion-area .panel-link {\n\tbackground-image: url(\"../img/arrow-down.png\");\n\tbackground-repeat: no-repeat;\n\tbackground-position: right 10px top 30px;\n}\n\n.faq-accordion.accordion-area .panel-link,\n.faq-accordion.accordion-area .panel-link.active.collapsed {\n\tpadding: 17px 100px 17px 20px;\n}\n\n.faq-accordion.accordion-area .panel-link:after {\n\tright: 44px;\n}\n\n.accordion-area .panel-header .panel-link.collapsed {\n\tbackground-image: url(\"../img/arrow-down.png\");\n}\n\n.accordion-area .panel-link.active {\n\tbackground-image: url(\"../img/arrow-up.png\");\n}\n\n.accordion-area .panel-link.active {\n\tbackground-color: transparent;\n}\n\n.accordion-area .panel-link,\n.accordion-area .panel-link.active.collapsed {\n\ttext-align: left;\n\tposition: relative;\n\twidth: 100%;\n\tfont-size: 14px;\n\tfont-weight: 700;\n\tcolor: #414141;\n\tpadding: 0;\n\ttext-transform: uppercase;\n\tline-height: 1;\n\tcursor: pointer;\n\tborder: none;\n\tmin-height: 69px;\n\tbackground-color: transparent;\n\tborder-radius: 0;\n}\n\n.accordion-area .panel-body {\n\tpadding-top: 10px;\n\tp {\n\t\tcolor: #8f8f8f;\n\t\tmargin-bottom: 25px;\n\t\tline-height: 1.8;\n\t\tspan {\n\t\t\tfont-size: 12px;\n\t\t\tfont-weight: 700;\n\t\t\ttext-transform: uppercase;\n\t\t\tcolor: $color;\n\t\t}\n\t}\n\timg {\n\t\tmargin-bottom: 25px;\n\t}\n\th4 {\n\t\tfont-size: 18px;\n\t\tmargin-bottom: 20px;\n\t}\n}\n\n/*------------------\n  Header section\n---------------------*/\n\n.header-top {\n\tpadding: 18px 0 14px;\n}\n\n.site-logo {\n\tdisplay: inline-block;\n}\n\n.header-search-form {\n\twidth: 100%;\n\tposition: relative;\n\tpadding: 0 10px;\n\tinput {\n\t\twidth: 100%;\n\t\theight: 44px;\n\t\tfont-size: 14px;\n\t\tborder-radius: 50px;\n\t\tborder: none;\n\t\tpadding: 0 19px;\n\t\tbackground: #f0f0f0;\n\t}\n\tbutton {\n\t\tposition: absolute;\n\t\theight: 100%;\n\t\tright: 18px;\n\t\ttop: 0;\n\t\tfont-size: 26px;\n\t\tcolor: #000;\n\t\tborder: none;\n\t\tcursor: pointer;\n\t\tbackground-color: transparent;\n\t}\n}\n\n.user-panel {\n\t.up-item {\n\t\tdisplay: inline-block;\n\t\tfont-size: 14px;\n\t\ti {\n\t\t\tfont-size: 22px;\n\t\t}\n\t\ta {\n\t\t\tfont-size: 14px;\n\t\t\tcolor: #000;\n\t\t}\n\t\t&:first-child {\n\t\t\tmargin-right: 29px;\n\t\t}\n\t}\n}\n\n.shopping-card {\n\tdisplay: inline-block;\n\tposition: relative;\n\tspan {\n\t\tposition: absolute;\n\t\ttop: -4px;\n\t\tleft: 100%;\n\t\theight: 16px;\n\t\tmin-width: 16px;\n\t\tcolor: #fff;\n\t\tfont-size: 13px;\n\t\tbackground: $color;\n\t\ttext-align: center;\n\t\tborder-radius: 30px;\n\t\tpadding: 0 2px;\n\t\tmargin-left: -7px;\n\t}\n}\n\n.main-navbar {\n\tbackground: #282828;\n}\n\n.slicknav_menu {\n\tdisplay: none;\n}\n\n.main-menu {\n\tlist-style: none;\n\tli {\n\t\tdisplay: inline-block;\n\t\tposition: relative;\n\t\ta {\n\t\t\tdisplay: inline-block;\n\t\t\tfont-size: 16px;\n\t\t\tcolor: #ffffff;\n\t\t\tmargin-right: 50px;\n\t\t\tline-height: 1;\n\t\t\tpadding: 17px 0;\n\t\t\tposition: relative;\n\t\t\t.new {\n\t\t\t\tposition: absolute;\n\t\t\t\ttop: -8px;\n\t\t\t\tfont-size: 10px;\n\t\t\t\tfont-weight: 700;\n\t\t\t\tcolor: #fff;\n\t\t\t\tbackground: #f51167;\n\t\t\t\tline-height: 1;\n\t\t\t\ttext-transform: uppercase;\n\t\t\t\tleft: calc(50% - 21px);\n\t\t\t\tpadding: 5px 9px 1px;\n\t\t\t\tborder-radius: 15px;\n\t\t\t\twidth: 42px;\n\t\t\t}\n\t\t}\n\t\t&:hover {\n\t\t\t.sub-menu {\n\t\t\t\tvisibility: visible;\n\t\t\t\topacity: 1;\n\t\t\t\tmargin-top: 0;\n\t\t\t}\n\t\t\t>a {\n\t\t\t\tcolor: $color;\n\t\t\t}\n\t\t}\n\t}\n\t.sub-menu {\n\t\tposition: absolute;\n\t\tlist-style: none;\n\t\twidth: 220px;\n\t\tleft: 0;\n\t\ttop: 100%;\n\t\tpadding: 20px 0;\n\t\tvisibility: hidden;\n\t\topacity: 0;\n\t\tmargin-top: 50px;\n\t\tbackground: #fff;\n\t\tz-index: 99;\n\t\t-webkit-transition: all 0.4s;\n\t\t-o-transition: all 0.4s;\n\t\ttransition: all 0.4s;\n\t\t-webkit-box-shadow: 2px 7px 20px rgba(0, 0, 0, 0.05);\n\t\tbox-shadow: 2px 7px 20px rgba(0, 0, 0, 0.05);\n\t\tli {\n\t\t\tdisplay: block;\n\t\t\ta {\n\t\t\t\tdisplay: block;\n\t\t\t\tcolor: #000;\n\t\t\t\tmargin-right: 0;\n\t\t\t\tpadding: 8px 20px;\n\t\t\t\t&:hover {\n\t\t\t\t\tcolor: $color;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n.nav-switch {\n\tdisplay: none;\n}\n\n/* ----------------\n  Features\n---------------------*/\n\n.hero-section {\n\tpadding-bottom: 54px;\n}\n\n.hero-slider {\n\t.hs-item {\n\t\tposition: relative;\n\t\theight: 720px;\n\t\tspan {\n\t\t\tfont-size: 18px;\n\t\t\ttext-transform: uppercase;\n\t\t\tfont-weight: 600;\n\t\t\tletter-spacing: 3px;\n\t\t\tmargin-bottom: 5px;\n\t\t\tdisplay: block;\n\t\t\tposition: relative;\n\t\t\ttop: 50px;\n\t\t\topacity: 0;\n\t\t}\n\t\th2 {\n\t\t\tfont-size: 60px;\n\t\t\ttext-transform: uppercase;\n\t\t\tfont-weight: 700;\n\t\t\tmargin-bottom: 10px;\n\t\t\tposition: relative;\n\t\t\ttop: 50px;\n\t\t\topacity: 0;\n\t\t}\n\t\tp {\n\t\t\tfont-size: 18px;\n\t\t\tfont-weight: 300;\n\t\t\tmargin-bottom: 35px;\n\t\t\tposition: relative;\n\t\t\ttop: 100px;\n\t\t\topacity: 0;\n\t\t}\n\t\t.site-btn {\n\t\t\tposition: relative;\n\t\t\ttop: 50px;\n\t\t\topacity: 0;\n\t\t}\n\t\t.sb-line {\n\t\t\tmargin-right: 5px;\n\t\t}\n\t\t.container {\n\t\t\tposition: relative;\n\t\t\tpadding-top: 170px;\n\t\t}\n\t\t.offer-card {\n\t\t\tposition: absolute;\n\t\t\tright: 0;\n\t\t\ttop: 226px;\n\t\t\twidth: 162px;\n\t\t\theight: 162px;\n\t\t\tborder-radius: 50%;\n\t\t\tbackground: $color;\n\t\t\ttext-align: center;\n\t\t\tpadding-top: 20px;\n\t\t\t-webkit-transform: rotate(45deg);\n\t\t\t    -ms-transform: rotate(45deg);\n\t\t\t        transform: rotate(45deg);\n\t\t\topacity: 0;\n\t\t\t&:after {\n\t\t\t\tposition: absolute;\n\t\t\t\tcontent: \"\";\n\t\t\t\twidth: calc(100% - 10px);\n\t\t\t\theight: calc(100% - 10px);\n\t\t\t\tborder: 1px solid #f96790;\n\t\t\t\tleft: 5px;\n\t\t\t\ttop: 5px;\n\t\t\t\tborder-radius: 50%;\n\t\t\t}\n\t\t\tspan {\n\t\t\t\tfont-size: 18px;\n\t\t\t\ttext-transform: lowercase;\n\t\t\t\tposition: relative;\n\t\t\t    top: 50px;\n\t\t\t    opacity: 0;\n\t\t\t}\n\t\t\th2 {\n\t\t\t\tfont-size: 72px;\n\t\t\t\tfont-weight: 400;\n\t\t\t\tline-height: 1;\n\t\t\t}\n\t\t\tp {\n\t\t\t\ttext-transform: uppercase;\n\t\t\t\tline-height: 1;\n\t\t\t\tfont-size: 14px;\n\t\t\t}\n\t\t}\n\t}\n\t.slider-nav-warp {\n\t\tmax-width: 1145px;\n\t\tbottom: 0;\n\t\tmargin: -78px auto 0;\n\t}\n\t.slider-nav {\n\t\tdisplay: inline-block;\n\t\tpadding: 0 38px;\n\t\tposition: relative;\n\t}\n\t.owl-dots {\n\t\tdisplay: -ms-flex;\n\t\tdisplay: -webkit-box;\n\t\tdisplay: -ms-flexbox;\n\t\tdisplay: flex;\n\t\tpadding-top: 9px;\n\t\t.owl-dot {\n\t\t\twidth: 8px;\n\t\t\theight: 8px;\n\t\t\tbackground: #fff;\n\t\t\tborder-radius: 15px;\n\t\t\tmargin-right: 10px;\n\t\t\topacity: 0.25;\n\t\t\t&.active {\n\t\t\t\topacity: 1;\n\t\t\t}\n\t\t\t&:last-child {\n\t\t\t\tmargin-right: 0;\n\t\t\t}\n\t\t}\n\t}\n\t.owl-nav {\n\t\tbutton.owl-next,\n\t\tbutton.owl-prev {\n\t\t\tfont-size: 27px;\n\t\t\tposition: absolute;\n\t\t\tcolor: #fff;\n\t\t\topacity: 0.5;\n\t\t\tbottom: -20px;\n\t\t}\n\t\tbutton.owl-next {\n\t\t\tright: 0;\n\t\t}\n\t\tbutton.owl-prev {\n\t\t\tleft: 0;\n\t\t}\n\t}\n}\n\n.hero-slider .owl-item.active .hs-item {\n    h2,span,p,.site-btn {\n      top: 0;\n      opacity: 1;\n    }\n\tspan {\n      -webkit-transition: all 0.5s ease 0.2s;\n      -o-transition: all 0.5s ease 0.2s;\n      transition: all 0.5s ease 0.2s;\n    }\n    h2 {\n      -webkit-transition: all 0.5s ease 0.4s;\n      -o-transition: all 0.5s ease 0.4s;\n      transition: all 0.5s ease 0.4s;\n    }\n\tp{\n\t\t-webkit-transition: all 0.5s ease 0.6s;\n        -o-transition: all 0.5s ease 0.6s;\n        transition: all 0.5s ease 0.6s;\n\t}\n\t.site-btn {\n\t\t-webkit-transition: all 0.5s ease 0.8s;\n        -webkit-transition: all 0.5s ease  0.8s;\n        -o-transition: all 0.5s ease  0.8s;\n        transition: all 0.5s ease  0.8s;\n\t}\n\n\t.offer-card  {\n\t\topacity: 1;\n\t\t-webkit-transform: rotate(0deg);\n\t\t    -ms-transform: rotate(0deg);\n\t\t        transform: rotate(0deg);\n\t\t-webkit-transition: all 0.5s ease 1s;\n        -webkit-transition: all 0.5s ease  1s;\n        -o-transition: all 0.5s ease  1s;\n        transition: all 0.5s ease  1s;\n\t}\n\n}\n\n.slide-num-holder {\n\tfloat: right;\n\tz-index: 1;\n\tcolor: #fff;\n\tposition: relative;\n\tfont-size: 24px;\n\tfont-weight: 700;\n\tposition: relative;\n\tmargin-top: -22px;\n\tspan {\n\t\t&:first-child {\n\t\t\tmargin-right: 41px;\n\t\t}\n\t}\n\t&:after {\n\t\tposition: absolute;\n\t\tcontent: \"\";\n\t\theight: 30px;\n\t\twidth: 1px;\n\t\tbackground: #fff;\n\t\tleft: 50%;\n\t\ttop: 0;\n\t\t-webkit-transform-origin: center;\n\t\t-ms-transform-origin: center;\n\t\ttransform-origin: center;\n\t\t-webkit-transform: rotate(30deg);\n\t\t-ms-transform: rotate(30deg);\n\t\ttransform: rotate(30deg);\n\t}\n}\n\n/* ------------------\n  Features section\n---------------------*/\n\n.feature {\n\ttext-align: center;\n\tbackground: #f8f8f8;\n\theight: 100%;\n\t&:nth-child(2) {\n\t\tbackground: $color;\n\t\th2 {\n\t\t\tcolor: #fff;\n\t\t}\n\t}\n\t.feature-inner {\n\t\tpadding: 20px 25px;\n\t\tdisplay: -ms-flex;\n\t\tdisplay: -webkit-box;\n\t\tdisplay: -ms-flexbox;\n\t\tdisplay: flex;\n\t\t-webkit-box-align: center;\n\t\t-ms-flex-align: center;\n\t\talign-items: center;\n\t\t-webkit-box-pack: center;\n\t\t-ms-flex-pack: center;\n\t\tjustify-content: center;\n\t\theight: 100%;\n\t}\n\t.feature-icon {\n\t\tdisplay: inline-block;\n\t\tmargin-right: 15px;\n\t}\n\th2 {\n\t\tfont-size: 24px;\n\t\ttext-transform: uppercase;\n\t\tdisplay: inline-block;\n\t}\n}\n\n/* ----------------------\n  Latest product section\n------------------------*/\n\n.top-letest-product-section {\n\tpadding-top: 70px;\n\tpadding-bottom: 60px;\n\t.section-title {\n\t\tmargin-bottom: 70px;\n\t}\n}\n\n.product-slider {\n\t.owl-nav {\n\t\tposition: absolute;\n\t\ttop: calc(50% - 60px);\n\t\twidth: 100%;\n\t\tleft: 0;\n\t\tbutton.owl-next,\n\t\tbutton.owl-prev {\n\t\t\tcolor: #a4a4a4;\n\t\t\tfont-size: 42px;\n\t\t\tposition: relative;\n\t\t}\n\t\tbutton.owl-next {\n\t\t\tfloat: right;\n\t\t\tright: -92px;\n\t\t}\n\t\tbutton.owl-prev {\n\t\t\tfloat: left;\n\t\t\tleft: -92px;\n\t\t}\n\t}\n}\n\n.product-item {\n\t.pi-pic {\n\t\tposition: relative;\n\t\tdisplay: block;\n\t}\n\t.tag-new,\n\t.tag-sale {\n\t\tposition: absolute;\n\t\tright: 16px;\n\t\ttop: 14px;\n\t\tfont-size: 10px;\n\t\tfont-weight: 700;\n\t\tcolor: #fff;\n\t\tbackground: #50e550;\n\t\tline-height: 1;\n\t\ttext-transform: uppercase;\n\t\tpadding: 5px 9px 1px;\n\t\tborder-radius: 15px;\n\t\twidth: 42px;\n\t}\n\t.tag-sale {\n\t\ttext-align: center;\n\t\tpadding: 5px 0px 1px;\n\t\tmin-width: 65px;\n\t\tbackground: $color;\n\t}\n\t.pi-links {\n\t\twidth: 100%;\n\t\tposition: absolute;\n\t\tright: 0;\n\t\tbottom: 18px;\n\t\tz-index: 9;\n\t\tpadding-right: 15px;\n\t\ttext-align: right;\n\t\ta {\n\t\t\tdisplay: inline-table;\n\t\t\twidth: 36px;\n\t\t\theight: 36px;\n\t\t\tbackground: #fff;\n\t\t\tborder-radius: 60px;\n\t\t\tfont-size: 18px;\n\t\t\tline-height: 18px;\n\t\t\tpadding-top: 9px;\n\t\t\toverflow: hidden;\n\t\t\tcolor: #000;\n\t\t\tposition: relative;\n\t\t\t-webkit-box-shadow: 1px 0 32px rgba(0, 0, 0, 0.2);\n\t\t\tbox-shadow: 1px 0 32px rgba(0, 0, 0, 0.2);\n\t\t\t-webkit-transition: all 0.4s ease;\n\t\t\t-o-transition: all 0.4s ease;\n\t\t\ttransition: all 0.4s ease;\n\t\t\ttext-align: center;\n\t\t\ti {\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tcolor: #000;\n\t\t\t}\n\t\t\t&.add-card {\n\t\t\t\tpadding-top: 8px;\n\t\t\t\tspan {\n\t\t\t\t\tfont-size: 12px;\n\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\ttext-transform: uppercase;\n\t\t\t\t\tposition: absolute;\n\t\t\t\t\tright: 19px;\n\t\t\t\t\ttop: 20px;\n\t\t\t\t\topacity: 0;\n\t\t\t\t}\n\t\t\t\t&:hover {\n\t\t\t\t\twidth: 148px;\n\t\t\t\t\tpadding: 8px 18px 0;\n\t\t\t\t\ttext-align: left;\n\t\t\t\t\tspan {\n\t\t\t\t\t\topacity: 1;\n\t\t\t\t\t\ttop: 10px;\n\t\t\t\t\t\t-webkit-transition: all 0.4s ease 0.3s;\n\t\t\t\t\t\t-o-transition: all 0.4s ease 0.3s;\n\t\t\t\t\t\ttransition: all 0.4s ease 0.3s;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t.pi-text {\n\t\tpadding-top: 22px;\n\t\theight: 87px;\n\t\th6 {\n\t\t\tfloat: right;\n\t\t\tpadding-left: 40px;\n\t\t\toverflow: hidden;\n\t\t\tfont-weight: 700;\n\t\t\tcolor: #111111;\n\t\t}\n\t\tp {\n\t\t\tfont-size: 16px;\n\t\t\tcolor: #111111;\n\t\t\tmargin-bottom: 0;\n\t\t}\n\t}\n}\n\n/* -----------------------\n  Product filter section\n-------------------------*/\n\n.product-filter-section {\n\tpadding-bottom: 60px;\n\t.section-title {\n\t\tmargin-bottom: 70px;\n\t}\n}\n\n.product-filter-menu {\n\tlist-style: none;\n\tmargin: 0 -10px;\n\tpadding-bottom: 15px;\n\tli {\n\t\tmargin: 0 10px 10px;\n\t\tdisplay: inline-block;\n\t\ta {\n\t\t\tcolor: #111111;\n\t\t\tfont-size: 12px;\n\t\t\tfont-weight: 700;\n\t\t\ttext-transform: uppercase;\n\t\t\tbackground: #ebebeb;\n\t\t\tdisplay: block;\n\t\t\twidth: 100%;\n\t\t\tpadding: 10px 34px;\n\t\t\tborder-radius: 31px;\n\t\t}\n\t}\n}\n\n/* ----------------\n  Banner section\n---------------------*/\n\n.banner {\n\tpadding: 50px 34px 47px;\n\tposition: relative;\n\tmargin-bottom: 70px;\n\t.tag-new {\n\t\tposition: absolute;\n\t\tright: 26px;\n\t\ttop: 27px;\n\t\tfont-size: 24px;\n\t\tfont-weight: 700;\n\t\tcolor: #fff;\n\t\tbackground: #50e550;\n\t\tline-height: 1;\n\t\ttext-transform: uppercase;\n\t\tpadding: 7px 16px 1px;\n\t\tborder-radius: 80px;\n\t}\n\tspan {\n\t\tfont-size: 18px;\n\t\ttext-transform: uppercase;\n\t\tfont-weight: 600;\n\t\tletter-spacing: 3px;\n\t\tmargin-bottom: 5px;\n\t\tdisplay: block;\n\t}\n\th2 {\n\t\tfont-size: 48px;\n\t\ttext-transform: uppercase;\n\t\tfont-weight: 700;\n\t\tmargin-bottom: 10px;\n\t\tcolor: #282828;\n\t}\n}\n\n/* ----------------\n  Footer section\n---------------------*/\n\n.footer-section {\n\tbackground: #282828;\n\tpadding-top: 60px;\n}\n\n.footer-logo {\n\tpadding-bottom: 60px;\n}\n\n.footer-widget {\n\tmargin-bottom: 70px;\n\toverflow: hidden;\n\th2 {\n\t\tfont-size: 18px;\n\t\tfont-weight: 700;\n\t\ttext-transform: uppercase;\n\t\tcolor: #fff;\n\t\tmargin-bottom: 45px;\n\t}\n\tp {\n\t\tcolor: #8f8f8f;\n\t}\n\t&.about-widget {\n\t\tp {\n\t\t\tmargin-bottom: 50px;\n\t\t\tletter-spacing: -0.01em;\n\t\t}\n\t}\n\tul {\n\t\tlist-style: none;\n\t\tfloat: left;\n\t\tmargin-right: 37px;\n\t\t&:last-child {\n\t\t\tmargin-right: 0;\n\t\t}\n\t\tli {\n\t\t\ta {\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tposition: relative;\n\t\t\t\tpadding-left: 20px;\n\t\t\t\tfont-size: 14px;\n\t\t\t\tcolor: #8f8f8f;\n\t\t\t\tmargin-bottom: 6px;\n\t\t\t\t&:after {\n\t\t\t\t\tposition: absolute;\n\t\t\t\t\tcontent: \"\";\n\t\t\t\t\twidth: 5px;\n\t\t\t\t\theight: 5px;\n\t\t\t\t\tleft: 0;\n\t\t\t\t\ttop: 8px;\n\t\t\t\t\tborder: 1px solid #ec105a;\n\t\t\t\t\tborder-radius: 50%;\n\t\t\t\t\t-webkit-transition: all 0.2s;\n\t\t\t\t\t-o-transition: all 0.2s;\n\t\t\t\t\ttransition: all 0.2s;\n\t\t\t\t}\n\t\t\t\t&:hover {\n\t\t\t\t\tcolor: #fff;\n\t\t\t\t\t&:after {\n\t\t\t\t\t\twidth: 7px;\n\t\t\t\t\t\theight: 7px;\n\t\t\t\t\t\ttop: 6px;\n\t\t\t\t\t\tbackground: #ec105a;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n.fw-latest-post-widget {\n\t.lp-item {\n\t\tmargin-bottom: 30px;\n\t\tdisplay: block;\n\t\toverflow: hidden;\n\t}\n\t.lp-thumb {\n\t\twidth: 64px;\n\t\theight: 64px;\n\t\tfloat: left;\n\t\tmargin-right: 22px;\n\t}\n\t.lp-content {\n\t\toverflow: hidden;\n\t\tpadding-top: 2px;\n\t\th6 {\n\t\t\tfont-size: 14px;\n\t\t\tfont-weight: 700;\n\t\t\ttext-transform: uppercase;\n\t\t\topacity: 0.25;\n\t\t\tcolor: #717171;\n\t\t\tmargin-bottom: 1px;\n\t\t}\n\t\tspan {\n\t\t\tdisplay: block;\n\t\t\tfont-size: 12px;\n\t\t\tcolor: #8f8f8f;\n\t\t\tmargin-bottom: 4px;\n\t\t}\n\t\t.readmore {\n\t\t\tfont-size: 12px;\n\t\t\tcolor: $color;\n\t\t}\n\t}\n}\n\n.contact-widget {\n\t.con-info {\n\t\tspan {\n\t\t\tfloat: left;\n\t\t\tcolor: $color;\n\t\t\tmargin-right: 15px;\n\t\t\toverflow: hidden;\n\t\t}\n\t}\n}\n\n.social-links-warp {\n\tborder-top: 2px solid #3b3535;\n\tpadding: 46px 0;\n}\n\n.social-links {\n\ta {\n\t\tmargin-right: 60px;\n\t\tdisplay: inline-block;\n\t\t&:last-child {\n\t\t\tmargin-right: 0;\n\t\t}\n\t\ti {\n\t\t\tfont-size: 30px;\n\t\t\tcolor: #d7d7d7;\n\t\t\tfloat: left;\n\t\t\tmargin-right: 19px;\n\t\t\toverflow: hidden;\n\t\t\t-webkit-transition: all 0.3s;\n\t\t\t-o-transition: all 0.3s;\n\t\t\ttransition: all 0.3s;\n\t\t}\n\t\tspan {\n\t\t\tdisplay: inline-block;\n\t\t\tfont-size: 12px;\n\t\t\tfont-weight: 600;\n\t\t\ttext-transform: uppercase;\n\t\t\tcolor: #9f9fa0;\n\t\t\tpadding-top: 10px;\n\t\t\t-webkit-transition: all 0.3s;\n\t\t\t-o-transition: all 0.3s;\n\t\t\ttransition: all 0.3s;\n\t\t}\n\t\t&.instagram {\n\t\t\t&:hover {\n\t\t\t\ti {\n\t\t\t\t\tcolor: #2F5D84;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t&.google-plus {\n\t\t\t&:hover {\n\t\t\t\ti {\n\t\t\t\t\tcolor: #E04B37;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t&.twitter {\n\t\t\t&:hover {\n\t\t\t\ti {\n\t\t\t\t\tcolor: #5abed6;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t&.pinterest {\n\t\t\t&:hover {\n\t\t\t\ti {\n\t\t\t\t\tcolor: #CD212D;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t&.facebook {\n\t\t\t&:hover {\n\t\t\t\ti {\n\t\t\t\t\tcolor: #39599F;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t&.twitter {\n\t\t\t&:hover {\n\t\t\t\ti {\n\t\t\t\t\tcolor: #5abed6;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t&.youtube {\n\t\t\t&:hover {\n\t\t\t\ti {\n\t\t\t\t\tcolor: #D12227;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t&.tumblr {\n\t\t\t&:hover {\n\t\t\t\ti {\n\t\t\t\t\tcolor: #37475E;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t&:hover {\n\t\t\tspan {\n\t\t\t\tcolor: #fff;\n\t\t\t}\n\t\t}\n\t}\n}\n\n/* --------------\n  Other Pages\n------------------*/\n\n.page-top-info {\n\tbackground: #f8f7f7;\n\tpadding: 60px 0 70px;\n\th4 {\n\t\tcolor: #414141;\n\t\tfont-weight: 700;\n\t\ttext-transform: uppercase;\n\t}\n}\n\n.site-pagination {\n\tfont-size: 14px;\n\tfont-weight: 600;\n\tcolor: #414141;\n\ta {\n\t\tdisplay: inline-block;\n\t\tfont-size: 14px;\n\t\tcolor: #414141;\n\t}\n}\n\n/* --------------\n  Category page\n------------------*/\n\n.filter-widget {\n\tmargin-bottom: 100px;\n\t.fw-title {\n\t\tfont-size: 18px;\n\t\tfont-weight: 700;\n\t\tcolor: #414141;\n\t\ttext-transform: uppercase;\n\t\tmargin-bottom: 45px;\n\t}\n}\n\n.category-menu {\n\tlist-style: none;\n\tli {\n\t\ta {\n\t\t\tdisplay: block;\n\t\t\tposition: relative;\n\t\t\tfont-size: 12px;\n\t\t\tcolor: #414141;\n\t\t\tborder-bottom: 1px solid #ebebeb;\n\t\t\tpadding: 12px 0 5px 20px;\n\t\t\tspan {\n\t\t\t\tfloat: right;\n\t\t\t}\n\t\t\t&:after {\n\t\t\t\tposition: absolute;\n\t\t\t\tcontent: \"\";\n\t\t\t\twidth: 9px;\n\t\t\t\theight: 9px;\n\t\t\t\tleft: 0;\n\t\t\t\ttop: 13px;\n\t\t\t\tborder: 1px solid $color;\n\t\t\t\tborder-radius: 50%;\n\t\t\t}\n\t\t\t&:hover {\n\t\t\t\tcolor: $color;\n\t\t\t\t&:after {\n\t\t\t\t\tbackground: $color;\n\t\t\t\t}\n\t\t\t}\n\t\t\t&:last-child {\n\t\t\t\ta {\n\t\t\t\t\tmargin-bottom: 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t.sub-menu {\n\t\t\tlist-style: none;\n\t\t\toverflow: hidden;\n\t\t\theight: 0;\n\t\t\t-webkit-transform: rotateX(90deg);\n\t\t\ttransform: rotateX(90deg);\n\t\t\topacity: 0;\n\t\t\t-webkit-transition: opacity 0.4s, -webkit-transform 0.4s;\n\t\t\ttransition: opacity 0.4s, -webkit-transform 0.4s;\n\t\t\t-o-transition: transform 0.4s, opacity 0.4s;\n\t\t\ttransition: transform 0.4s, opacity 0.4s;\n\t\t\ttransition: transform 0.4s, opacity 0.4s, -webkit-transform 0.4s;\n\t\t\tli {\n\t\t\t\ta {\n\t\t\t\t\tpadding-left: 45px;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t&:hover {\n\t\t\t>a {\n\t\t\t\tcolor: $color;\n\t\t\t}\n\t\t}\n\t\t&.active {\n\t\t\t>.sub-menu {\n\t\t\t\tdisplay: block;\n\t\t\t\theight: auto;\n\t\t\t\topacity: 1;\n\t\t\t\t-webkit-transform: rotateX(0deg);\n\t\t\t\ttransform: rotateX(0deg);\n\t\t\t}\n\t\t}\n\t}\n}\n\n.price-range-wrap .price-range {\n\tborder-radius: 0;\n\tmargin-right: 13px;\n\tmargin-bottom: 28px;\n}\n\n.price-range-wrap .price-range.ui-widget-content {\n\tborder: none;\n\tbackground: #ebebeb;\n\theight: 2px;\n}\n\n.price-range-wrap .price-range.ui-widget-content .ui-slider-range {\n\tbackground: #ebebeb;\n\tborder-radius: 0;\n}\n\n.price-range-wrap .price-range .ui-slider-range.ui-corner-all.ui-widget-header:last-child {\n\tbackground: #414141;\n}\n\n.price-range-wrap .price-range.ui-widget-content .ui-slider-handle {\n\tborder: none;\n\tbackground: #414141;\n\theight: 14px;\n\twidth: 14px;\n\toutline: none;\n\ttop: -6px;\n\tcursor: ew-resize;\n\tmargin-left: 0;\n\tborder-radius: 0;\n\tborder-radius: 20px;\n}\n\n.price-range-wrap .price-range .ui-slider-handle.ui-corner-all.ui-state-default {\n\tspan {\n\t\tposition: absolute;\n\t\tfont-size: 14px;\n\t\ttop: 35px;\n\t}\n}\n\n.price-range-wrap .range-slider {\n\tcolor: #444444;\n\tmargin-top: 22px;\n}\n\n.price-range-wrap {\n\tborder-bottom: 2px solid #ebebeb;\n\tpadding-bottom: 40px;\n\tmargin-bottom: 50px;\n\th4 {\n\t\ttext-transform: uppercase;\n\t\tfont-size: 14px;\n\t\tfont-weight: 700;\n\t\tcolor: #414141;\n\t\tmargin-bottom: 45px;\n\t}\n}\n\n.price-range-wrap .range-slider .price-input input {\n\tcolor: #444444;\n\tborder: none;\n\toutline: none;\n\tmax-width: 80px;\n\tpointer-events: none;\n\t&:nth-child(1) {\n\t\tfloat: left;\n\t}\n\t&:nth-child(2) {\n\t\tfloat: right;\n\t}\n}\n\n.fw-color-choose,\n.fw-size-choose {\n\tborder-bottom: 2px solid #ebebeb;\n\tpadding-bottom: 40px;\n\tmargin-bottom: 50px;\n}\n\n.fw-color-choose .cs-item {\n\tdisplay: inline-block;\n\tposition: relative;\n\tmargin-right: 14px;\n\t&:last-child {\n\t\tmargin-right: 0;\n\t}\n}\n\n.fw-color-choose label {\n\twidth: 26px;\n\theight: 26px;\n\tborder-radius: 50px;\n\tbackground: #333;\n\tposition: relative;\n\tcursor: pointer;\n}\n\n.fw-color-choose label.cs-gray {\n\tbackground: #d7d7d7;\n}\n\n.fw-color-choose label.cs-orange {\n\tbackground: #6f91ff;\n}\n\n.fw-color-choose label.cs-yollow {\n\tbackground: #6f91ff;\n}\n\n.fw-color-choose label.cs-green {\n\tbackground: #8fc99c;\n}\n\n.fw-color-choose label.cs-purple {\n\tbackground: #bc83b1;\n}\n\n.fw-color-choose label.cs-blue {\n\tbackground: #9ee7f4;\n}\n\n.fw-color-choose label span {\n\tposition: absolute;\n\twidth: 100%;\n\ttext-align: center;\n\ttop: 45px;\n\tfont-size: 11px;\n\tcolor: #414141;\n}\n\n.fw-color-choose input[type=radio] {\n\tvisibility: hidden;\n\tposition: absolute;\n}\n\n.fw-color-choose input[type=radio]:checked+label {\n\t-webkit-box-shadow: 0 0 0 2px $color;\n\tbox-shadow: 0 0 0 2px $color;\n\tspan {\n\t\tcolor: #b09d81;\n\t}\n}\n\n.fw-size-choose .sc-item {\n\tdisplay: inline-block;\n\tposition: relative;\n\tmargin-right: 5px;\n}\n\n.fw-size-choose label {\n\tdisplay: inline-block;\n\theight: 30px;\n\tmin-width: 30px;\n\ttext-align: center;\n\tfont-size: 14px;\n\tcolor: #414141;\n\tfont-weight: 500;\n\tcursor: pointer;\n\tborder-radius: 50px;\n\tpadding: 7px 6px 0;\n}\n\n.fw-size-choose input[type=radio] {\n\tvisibility: hidden;\n\tposition: absolute;\n}\n\n.fw-size-choose input[type=radio]:checked+label {\n\tbackground: $color;\n\tcolor: #fff;\n}\n\n/* --------------\n  Product page\n------------------*/\n\n.product-section {\n\tpadding-top: 70px;\n\tpadding-bottom: 65px;\n}\n\n.back-link {\n\tpadding-bottom: 50px;\n\ta {\n\t\tfont-size: 12px;\n\t\tcolor: #414141;\n\t}\n}\n\n.product-pic-zoom {\n\tmargin-bottom: 35px;\n}\n\n.product-thumbs-track {\n\twidth: 1200px;\n}\n\n.product-thumbs {\n\t.pt {\n\t\twidth: 116px;\n\t\theight: 116px;\n\t\tfloat: left;\n\t\tmargin-right: 31px;\n\t\toverflow: hidden;\n\t\tcursor: pointer;\n\t\tposition: relative;\n\t\t&:last-child {\n\t\t\tmargin-right: 0;\n\t\t}\n\t\t&.active:after {\n\t\t\tposition: absolute;\n\t\t\tcontent: \"\";\n\t\t\twidth: 100%;\n\t\t\theight: 100%;\n\t\t\tleft: 0;\n\t\t\ttop: 0;\n\t\t\tborder: 2px solid $color;\n\t\t\tz-index: 1;\n\t\t}\n\t}\n}\n\n.product-details {\n\t.p-title {\n\t\tfont-size: 18px;\n\t\tfont-weight: 700;\n\t\tcolor: #414141;\n\t\ttext-transform: uppercase;\n\t\tmargin-bottom: 18px;\n\t}\n\t.p-price {\n\t\tfont-size: 24px;\n\t\tcolor: #414141;\n\t\tfont-weight: 700;\n\t\tmargin-bottom: 20px;\n\t}\n\t.p-stock {\n\t\tfont-size: 12px;\n\t\tcolor: #000;\n\t\tfont-weight: 700;\n\t\tcolor: #414141;\n\t\tmargin-bottom: 10px;\n\t\tspan {\n\t\t\tcolor: $color;\n\t\t}\n\t}\n\t.p-rating {\n\t\tmargin-bottom: 15px;\n\t\ti {\n\t\t\tcolor: $color;\n\t\t}\n\t\ti.fa-fade {\n\t\t\tcolor: #e6e6e6;\n\t\t}\n\t}\n\t.p-review {\n\t\tmargin-bottom: 30px;\n\t\ta {\n\t\t\tcolor: #414141;\n\t\t\tfont-size: 14px;\n\t\t\tmargin-right: 12px;\n\t\t\tmargin-left: 12px;\n\t\t\t&:first-child {\n\t\t\t\tmargin-left: 0;\n\t\t\t}\n\t\t}\n\t}\n\t.fw-size-choose {\n\t\tborder-bottom: none;\n\t\tmargin-bottom: 30px;\n\t\tpadding-bottom: 0;\n\t\tp {\n\t\t\tfloat: left;\n\t\t\tmargin-right: 38px;\n\t\t\ttext-transform: uppercase;\n\t\t\tfont-weight: 700;\n\t\t\tcolor: #414141;\n\t\t\tpadding-top: 10px;\n\t\t\tmargin-bottom: 0;\n\t\t}\n\t\tlabel {\n\t\t\twidth: 33px;\n\t\t\theight: 33px;\n\t\t\tfont-size: 12px;\n\t\t\tborder: 2px solid #414141;\n\t\t}\n\t\tinput[type=radio]:checked+label {\n\t\t\tborder: 2px solid $color;\n\t\t}\n\t\t.disable {\n\t\t\tlabel {\n\t\t\t\tborder: 2px solid #e1e1e1;\n\t\t\t\tcolor: #cacaca;\n\t\t\t}\n\t\t}\n\t}\n\t.site-btn {\n\t\tmin-width: 190px;\n\t}\n\t.social-sharing {\n\t\tpadding-top: 50px;\n\t\ta {\n\t\t\tcolor: #d7d7d7;\n\t\t\tmargin-right: 23px;\n\t\t\tfont-size: 14px;\n\t\t\t&:hover {\n\t\t\t\tcolor: #414141;\n\t\t\t}\n\t\t}\n\t}\n}\n\n.quantity {\n\tdisplay: -webkit-box;\n\tdisplay: -ms-flexbox;\n\tdisplay: flex;\n\t-ms-flex-wrap: wrap;\n\tflex-wrap: wrap;\n\t-webkit-box-align: center;\n\t-ms-flex-align: center;\n\talign-items: center;\n\tmargin-bottom: 40px;\n}\n\n.quantity p {\n\tfloat: left;\n\tmargin-right: 15px;\n\ttext-transform: uppercase;\n\tfont-weight: 700;\n\tcolor: #414141;\n\tpadding-top: 10px;\n\tmargin-bottom: 0;\n}\n\n.quantity .pro-qty {\n\twidth: 94px;\n\theight: 36px;\n\tborder: 1px solid #ddd;\n\tpadding: 0 15px;\n\tborder-radius: 40px;\n\tfloat: left;\n}\n\n.quantity .pro-qty .qtybtn {\n\twidth: 15px;\n\tdisplay: block;\n\tfloat: left;\n\tline-height: 36px;\n\tcursor: pointer;\n\ttext-align: center;\n\tfont-size: 18px;\n\tcolor: #404040;\n}\n\n.quantity .pro-qty input {\n\twidth: 28px;\n\tfloat: left;\n\tborder: none;\n\theight: 36px;\n\tline-height: 40px;\n\tpadding: 0;\n\tfont-size: 14px;\n\ttext-align: center;\n\tbackground-color: transparent;\n}\n\n.related-product-section {\n\tpadding-bottom: 70px;\n\t.section-title {\n\t\th2 {\n\t\t\tfont-size: 24px;\n\t\t\tmargin-bottom: 60px;\n\t\t}\n\t}\n}\n\n/* ----------------\n  Cart page\n---------------------*/\n\n.scrollbar {\n\tmargin: 80px auto 0;\n\twidth: 100%;\n\theight: 7px;\n\tline-height: 0;\n\tbackground: #ececec;\n\toverflow: hidden;\n}\n\n.scrollbar .handle {\n\twidth: 100px;\n\theight: 100%;\n\tbackground: #fff;\n\tcursor: pointer;\n}\n\n.scrollbar .handle .mousearea {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n\theight: 7px;\n\tbackground: #b09d81;\n\tborder-radius: 30px;\n}\n\n.cart-table {\n\tpadding: 40px 34px 0;\n\tbackground: #f0f0f0;\n\tborder-radius: 27px;\n\toverflow: hidden;\n\th3 {\n\t\tfont-weight: 700;\n\t\tmargin-bottom: 37px;\n\t}\n\ttable {\n\t\twidth: 100%;\n\t\tmin-width: 442px;\n\t\tmargin-bottom: 17px;\n\t\ttr th {\n\t\t\tfont-size: 12px;\n\t\t\tfont-weight: 400;\n\t\t\tcolor: #414141;\n\t\t\ttext-align: center;\n\t\t\tpadding-bottom: 25px;\n\t\t\t&.product-th {\n\t\t\t\ttext-align: left;\n\t\t\t}\n\t\t\t&.size-th {\n\t\t\t\tpadding-right: 70px;\n\t\t\t}\n\t\t\t&.quy-th {\n\t\t\t\tpadding-right: 20px;\n\t\t\t}\n\t\t}\n\t}\n\t.product-col {\n\t\tdisplay: table;\n\t\tmargin-bottom: 19px;\n\t\timg {\n\t\t\tdisplay: table-cell;\n\t\t\tvertical-align: middle;\n\t\t\tfloat: left;\n\t\t\twidth: 73px;\n\t\t}\n\t\t.pc-title {\n\t\t\tdisplay: table-cell;\n\t\t\tvertical-align: middle;\n\t\t\tpadding-left: 30px;\n\t\t\th4 {\n\t\t\t\tfont-size: 16px;\n\t\t\t\tcolor: #414141;\n\t\t\t\tfont-weight: 700;\n\t\t\t\tmargin-bottom: 3px;\n\t\t\t}\n\t\t\tp {\n\t\t\t\tmargin-bottom: 0;\n\t\t\t\tfont-size: 16px;\n\t\t\t\tcolor: #414141;\n\t\t\t}\n\t\t}\n\t}\n\t.quy-col {\n\t\tpadding-right: 20px;\n\t}\n\t.quantity {\n\t\tmargin-bottom: 0;\n\t\t-webkit-box-pack: center;\n\t\t-ms-flex-pack: center;\n\t\tjustify-content: center;\n\t\t.pro-qty {\n\t\t\twidth: 80px;\n\t\t\tbackground: #fff;\n\t\t\tborder-color: #fff;\n\t\t}\n\t\t.pro-qty .qtybtn {\n\t\t\twidth: 10px;\n\t\t}\n\t}\n\t.size-col,\n\t.total-col {\n\t\th4 {\n\t\t\tfont-size: 18px;\n\t\t\tcolor: #414141;\n\t\t\tfont-weight: 400;\n\t\t}\n\t\ttext-align: center;\n\t}\n\t.size-col {\n\t\th4 {\n\t\t\tpadding-right: 70px;\n\t\t}\n\t}\n\t.total-cost {\n\t\tbackground: $color;\n\t\tmargin: 0 -34px;\n\t\ttext-align: right;\n\t\tpadding: 22px 0;\n\t\tpadding-right: 50px;\n\t\th6 {\n\t\t\tline-height: 1;\n\t\t\tfont-size: 18px;\n\t\t\tfont-weight: 700;\n\t\t\tcolor: #fff;\n\t\t\tspan {\n\t\t\t\tmargin-left: 38px;\n\t\t\t}\n\t\t}\n\t}\n}\n\n.card-right {\n\t.site-btn {\n\t\tmargin-bottom: 14px;\n\t\twidth: 100%;\n\t\tmin-height: 57px;\n\t\tpadding: 23px 47px 14px;\n\t}\n}\n\n.promo-code-form {\n\tposition: relative;\n\tmargin-bottom: 14px;\n\tinput {\n\t\twidth: 100%;\n\t\theight: 58px;\n\t\tborder: 2px solid #f0f0f0;\n\t\tpadding-left: 24px;\n\t\tpadding-right: 100px;\n\t\tfont-size: 16px;\n\t\tborder-radius: 80px;\n\t}\n\tbutton {\n\t\tposition: absolute;\n\t\tright: 24px;\n\t\ttop: 0;\n\t\theight: 100%;\n\t\tbackground-color: transparent;\n\t\tborder: none;\n\t\ttext-transform: uppercase;\n\t\tfont-size: 16px;\n\t\tfont-weight: 700;\n\t\tcolor: $color;\n\t\tcursor: pointer;\n\t}\n}\n\n/* ----------------\n  Checkout Page\n---------------------*/\n\n.checkout-form {\n\t.cf-title {\n\t\tfont-size: 16px;\n\t\tfont-weight: 700;\n\t\tcolor: #fff;\n\t\tline-height: 1;\n\t\tborder-radius: 50px;\n\t\tbackground: #3b3b3b;\n\t\tpadding: 21px 29px 20px;\n\t\tmargin-bottom: 66px;\n\t}\n\tp {\n\t\tfont-size: 16px;\n\t\tcolor: #414141;\n\t}\n\th4 {\n\t\tfont-size: 18px;\n\t\tcolor: #414141;\n\t}\n\tinput[type=text] {\n\t\twidth: 100%;\n\t\theight: 44px;\n\t\tborder: none;\n\t\tpadding: 0 18px;\n\t\tbackground: #f0f0f0;\n\t\tborder-radius: 40px;\n\t\tmargin-bottom: 20px;\n\t\tfont-size: 14px;\n\t}\n\t.address-inputs {\n\t\tmargin-bottom: 54px;\n\t}\n}\n\n.address-rb {\n\ttext-align: right;\n\tmargin-bottom: 30px;\n\t.cfr-item {\n\t\tdisplay: inline-block;\n\t}\n}\n\n.cf-radio-btns {\n\t.cfr-item {\n\t\tmargin-bottom: 15px;\n\t}\n\tlabel {\n\t\tdisplay: block;\n\t\tfont-size: 16px;\n\t\tcolor: #414141;\n\t\tmargin-bottom: 0;\n\t\tpadding-left: 30px;\n\t\tposition: relative;\n\t\tcursor: pointer;\n\t}\n\tlabel:after {\n\t\tposition: absolute;\n\t\tcontent: \"\";\n\t\twidth: 5px;\n\t\theight: 5px;\n\t\tleft: 4px;\n\t\ttop: 8px;\n\t\tbackground: #414141;\n\t\tborder-radius: 50%;\n\t\topacity: 0;\n\t\t-webkit-transition: all 0.3s;\n\t\t-o-transition: all 0.3s;\n\t\ttransition: all 0.3s;\n\t}\n\tlabel:before {\n\t\tposition: absolute;\n\t\tcontent: \"\";\n\t\twidth: 13px;\n\t\theight: 13px;\n\t\tleft: 0;\n\t\ttop: 4px;\n\t\tborder: 2px solid #e1e1e1;\n\t\tborder-radius: 40px;\n\t}\n\tinput[type=radio] {\n\t\tvisibility: hidden;\n\t\tposition: absolute;\n\t}\n\tinput[type=radio]:checked+label:after {\n\t\topacity: 1;\n\t}\n}\n\n.shipping-btns {\n\tmargin-bottom: 50px;\n\t.cf-radio-btns label {\n\t\tfont-size: 18px;\n\t\tfont-weight: 600;\n\t\tpadding-left: 37px;\n\t}\n}\n\n.payment-list {\n\tlist-style: none;\n\tmargin-bottom: 40px;\n\tli {\n\t\tfont-size: 18px;\n\t\tfont-weight: 600;\n\t\tcolor: #414141;\n\t\tmargin-bottom: 20px;\n\t\ta,\n\t\tspan {\n\t\t\tpadding-left: 40px;\n\t\t}\n\t}\n}\n\n.submit-order-btn {\n\twidth: 100%;\n\tmin-height: 58px;\n}\n\n.checkout-cart {\n\tbackground: #f0f0f0;\n\tpadding: 40px 24px 30px;\n\tborder-radius: 25px;\n\th3 {\n\t\tmargin-bottom: 30px;\n\t}\n\t.product-list {\n\t\tlist-style: none;\n\t\tli {\n\t\t\toverflow: hidden;\n\t\t\tdisplay: block;\n\t\t\tmargin-bottom: 29px;\n\t\t}\n\t\t.pl-thumb {\n\t\t\tfloat: left;\n\t\t\toverflow: hidden;\n\t\t\tmargin-right: 22px;\n\t\t\twidth: 99px;\n\t\t\timg {\n\t\t\t\tmin-width: 100%;\n\t\t\t}\n\t\t}\n\t\th6 {\n\t\t\tfont-weight: 700;\n\t\t\tcolor: #414141;\n\t\t\tpadding-top: 15px;\n\t\t\tmargin-bottom: 5px;\n\t\t}\n\t\tp {\n\t\t\tfont-size: 16px;\n\t\t\tmargin-bottom: 0;\n\t\t}\n\t}\n\t.price-list {\n\t\tpadding-left: 17px;\n\t\tpadding-right: 5px;\n\t\tlist-style: none;\n\t\tli {\n\t\t\toverflow: hidden;\n\t\t\tdisplay: block;\n\t\t\tfont-size: 18px;\n\t\t\tcolor: #414141;\n\t\t\tmargin-bottom: 10px;\n\t\t\tspan {\n\t\t\t\tfloat: right;\n\t\t\t\twidth: 60px;\n\t\t\t\ttext-align: left;\n\t\t\t}\n\t\t\t&.total {\n\t\t\t\tpadding-top: 35px;\n\t\t\t\tfont-weight: 700;\n\t\t\t}\n\t\t}\n\t}\n}\n\n/* ----------------\n  Contact Page\n---------------------*/\n\n.contact-section {\n\tpadding-top: 80px;\n\tpadding-bottom: 0;\n\tposition: relative;\n}\n\n.contact-info {\n\th3 {\n\t\tmargin-bottom: 50px;\n\t}\n}\n\n.contact-social {\n\tdisplay: -ms-flex;\n\tdisplay: -webkit-box;\n\tdisplay: -ms-flexbox;\n\tdisplay: flex;\n\tmargin-bottom: 85px;\n\tpadding-top: 20px;\n\ta {\n\t\tdisplay: -ms-inline-flex;\n\t\tdisplay: -webkit-inline-box;\n\t\tdisplay: -ms-inline-flexbox;\n\t\tdisplay: inline-flex;\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tbackground: #f0f0f0;\n\t\tcolor: #414141;\n\t\tfont-size: 14px;\n\t\tborder-radius: 50%;\n\t\t-webkit-box-align: center;\n\t\t-ms-flex-align: center;\n\t\talign-items: center;\n\t\t-webkit-box-pack: center;\n\t\t-ms-flex-pack: center;\n\t\tjustify-content: center;\n\t\tmargin-right: 12px;\n\t\t-webkit-transition: all 0.4s;\n\t\t-o-transition: all 0.4s;\n\t\ttransition: all 0.4s;\n\t\t&:hover {\n\t\t\tcolor: #fff;\n\t\t\tbackground: $color;\n\t\t}\n\t}\n}\n\n.contact-form {\n\tinput,\n\ttextarea {\n\t\twidth: 100%;\n\t\theight: 44px;\n\t\tborder: none;\n\t\tpadding: 0 18px;\n\t\tbackground: #f0f0f0;\n\t\tborder-radius: 40px;\n\t\tmargin-bottom: 17px;\n\t\tfont-size: 14px;\n\t}\n\ttextarea {\n\t\tpadding-top: 16px;\n\t\tborder-radius: 18px;\n\t\theight: 175px;\n\t\tmargin-bottom: 32px;\n\t}\n}\n\n.map {\n\tposition: absolute;\n\twidth: calc(50% - 15px);\n\theight: 100%;\n\tright: 0;\n\ttop: 0;\n\tbackground: #ddd;\n\tiframe {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t}\n}\n\n/* ----------------\n  Responsive\n---------------------*/\n\n@media (min-width: 1200px) {\n\t.container {\n\t\tmax-width: 1175px;\n\t}\n}\n\n@media (max-width: 1350px) {\n\t.product-slider .owl-nav {\n\t\tposition: relative;\n\t\tleft: 0;\n\t\ttop: 0;\n\t\ttext-align: center;\n\t\tpadding-top: 20px;\n\t}\n\t.product-slider .owl-nav button.owl-prev,\n\t.product-slider .owl-nav button.owl-next {\n\t\tfloat: none;\n\t\tleft: 0;\n\t\tright: 0;\n\t\tmargin: 0 10px;\n\t}\n}\n\n/* Medium screen : 992px. */\n\n@media only screen and (min-width: 992px) and (max-width: 1199px) {\n\t.hero-slider .slider-nav-warp {\n\t\tmax-width: 930px;\n\t}\n\t.footer-widget ul {\n\t\tmargin-right: 5px;\n\t}\n\t.social-links a {\n\t\tmargin-right: 20px;\n\t}\n}\n\n/* Tablet :768px. */\n\n@media only screen and (min-width: 768px) and (max-width: 991px) {\n\t.site-logo {\n\t\tmargin-bottom: 20px;\n\t}\n\t.header-search-form {\n\t\tmargin-bottom: 15px;\n\t}\n\t.user-panel {\n\t\ttext-align: center;\n\t}\n\t.main-menu {\n\t\ttext-align: center;\n\t}\n\t.sub-menu {\n\t\ttext-align: left;\n\t}\n\t.main-menu li a {\n\t\tmargin-right: 30px;\n\t}\n\t.hero-slider .slider-nav-warp {\n\t\tmax-width: 690px;\n\t}\n\t.hero-slider .hs-item .offer-card {\n\t\ttop: 20px;\n\t}\n\t.feature h2 {\n\t\tfont-size: 18px;\n\t}\n\t.product-filter-menu {\n\t\ttext-align: center;\n\t}\n\t.product-filter-menu li {\n\t\tmargin: 0 5px 10px;\n\t}\n\t.social-links {\n\t\ttext-align: center;\n\t\ta {\n\t\t\tmargin-right: 20px;\n\t\t\tspan {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\t\t}\n\t}\n\t.cart-table,\n\t.checkout-cart,\n\t.product-thumbs {\n\t\tmargin-bottom: 50px;\n\t}\n\t.map {\n\t\tposition: relative;\n\t\twidth: 100%;\n\t\tbackground: #ddd;\n\t\theight: 400px;\n\t\tmargin-top: 70px;\n\t}\n}\n\n/* Large Mobile :480px. */\n\n@media only screen and (max-width: 767px) {\n\t.site-logo {\n\t\tmargin-bottom: 20px;\n\t}\n\t.header-search-form {\n\t\tmargin-bottom: 15px;\n\t}\n\t.user-panel {\n\t\ttext-align: center;\n\t}\n\t.main-menu {\n\t\tdisplay: none;\n\t}\n\t.slicknav_btn {\n\t\tbackground-color: #565656;\n\t}\n\t.slicknav_menu {\n\t\tbackground: #282828;\n\t\tdisplay: block;\n\t\t.new {\n\t\t\tfont-size: 10px;\n\t\t\tfont-weight: 700;\n\t\t\tcolor: #fff;\n\t\t\tbackground: #f51167;\n\t\t\tline-height: 1;\n\t\t\ttext-transform: uppercase;\n\t\t\tpadding: 5px 9px 1px;\n\t\t\tborder-radius: 15px;\n\t\t\twidth: 42px;\n\t\t\tmargin-left: 5px;\n\t\t}\n\t}\n\t.hero-slider .slider-nav-warp {\n\t\tmax-width: 510px;\n\t}\n\t.hero-slider .hs-item h2 {\n\t\tfont-size: 50px;\n\t}\n\t.hero-slider .hs-item .offer-card {\n\t\tdisplay: none;\n\t}\n\t.product-filter-menu {\n\t\ttext-align: center;\n\t}\n\t.product-filter-menu li {\n\t\tmargin: 0 2px 10px;\n\t}\n\t.footer-widget ul {\n\t\tmargin-right: 25px;\n\t}\n\t.social-links {\n\t\ttext-align: center;\n\t\ta {\n\t\t\tmargin-right: 15px;\n\t\t\tspan {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\t\t}\n\t}\n\t.cart-table,\n\t.checkout-cart,\n\t.product-thumbs {\n\t\tmargin-bottom: 50px;\n\t}\n\t.cart-table .size-col h4,\n\t.cart-table table tr th.size-th,\n\t.cart-table table tr th.quy-th,\n\t.cart-table .quy-col {\n\t\tpadding-right: 0;\n\t\twidth: 70px;\n\t}\n\t.cart-table .quy-col {\n\t\twidth: 80px;\n\t}\n\t.address-rb {\n\t\ttext-align: left;\n\t}\n\t.map {\n\t\tposition: relative;\n\t\twidth: 100%;\n\t\tbackground: #ddd;\n\t\theight: 400px;\n\t\tmargin-top: 70px;\n\t}\n}\n\n/* Medium Mobile :480px. */\n\n@media only screen and (min-width: 576px) and (max-width: 766px) {\n\t.hero-slider .slider-nav-warp {\n\t\tpadding: 0 15px;\n\t}\n\t.banner .tag-new {\n\t\tposition: relative;\n\t\tdisplay: inline-block;\n\t\tmargin-bottom: 18px;\n\t\tright: 0;\n\t\ttop: 0;\n\t}\n}\n\n/* Small Mobile :320px. */\n\n@media only screen and (max-width: 479px) {\n\t.hero-slider .slider-nav-warp {\n\t\tmax-width: 510px;\n\t\tpadding: 0 15px;\n\t}\n\t.hero-slider .hs-item h2 {\n\t\tfont-size: 35px;\n\t}\n\t.hero-slider .hs-item .sb-line {\n\t\tmargin-bottom: 15px;\n\t}\n\t.section-title h2 {\n\t\tfont-size: 28px;\n\t}\n\t.feature h2 {\n\t\tfont-size: 18px;\n\t}\n\t.banner .tag-new {\n\t\tposition: relative;\n\t\tdisplay: inline-block;\n\t\tmargin-bottom: 18px;\n\t\tright: 0;\n\t\ttop: 0;\n\t}\n\t.social-links {\n\t\ttext-align: center;\n\t\ta {\n\t\t\ti {\n\t\t\t\tfont-size: 20px;\n\t\t\t\tmargin-right: 0;\n\t\t\t}\n\t\t\tspan {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "public/user/css/animate.css",
    "content": "@charset \"UTF-8\";\n\n/*!\n * animate.css -http://daneden.me/animate\n * Version - 3.6.0\n * Licensed under the MIT license - http://opensource.org/licenses/MIT\n *\n * Copyright (c) 2018 Daniel Eden\n */\n\n.animated {\n  -webkit-animation-duration: 1s;\n  animation-duration: 1s;\n  -webkit-animation-fill-mode: both;\n  animation-fill-mode: both;\n}\n\n.animated.infinite {\n  -webkit-animation-iteration-count: infinite;\n  animation-iteration-count: infinite;\n}\n\n@-webkit-keyframes bounce {\n  from,\n  20%,\n  53%,\n  80%,\n  to {\n    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n    animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n\n  40%,\n  43% {\n    -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\n    animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\n    -webkit-transform: translate3d(0, -30px, 0);\n    transform: translate3d(0, -30px, 0);\n  }\n\n  70% {\n    -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\n    animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\n    -webkit-transform: translate3d(0, -15px, 0);\n    transform: translate3d(0, -15px, 0);\n  }\n\n  90% {\n    -webkit-transform: translate3d(0, -4px, 0);\n    transform: translate3d(0, -4px, 0);\n  }\n}\n\n@keyframes bounce {\n  from,\n  20%,\n  53%,\n  80%,\n  to {\n    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n    animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n\n  40%,\n  43% {\n    -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\n    animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\n    -webkit-transform: translate3d(0, -30px, 0);\n    transform: translate3d(0, -30px, 0);\n  }\n\n  70% {\n    -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\n    animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\n    -webkit-transform: translate3d(0, -15px, 0);\n    transform: translate3d(0, -15px, 0);\n  }\n\n  90% {\n    -webkit-transform: translate3d(0, -4px, 0);\n    transform: translate3d(0, -4px, 0);\n  }\n}\n\n.bounce {\n  -webkit-animation-name: bounce;\n  animation-name: bounce;\n  -webkit-transform-origin: center bottom;\n  transform-origin: center bottom;\n}\n\n@-webkit-keyframes flash {\n  from,\n  50%,\n  to {\n    opacity: 1;\n  }\n\n  25%,\n  75% {\n    opacity: 0;\n  }\n}\n\n@keyframes flash {\n  from,\n  50%,\n  to {\n    opacity: 1;\n  }\n\n  25%,\n  75% {\n    opacity: 0;\n  }\n}\n\n.flash {\n  -webkit-animation-name: flash;\n  animation-name: flash;\n}\n\n/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */\n\n@-webkit-keyframes pulse {\n  from {\n    -webkit-transform: scale3d(1, 1, 1);\n    transform: scale3d(1, 1, 1);\n  }\n\n  50% {\n    -webkit-transform: scale3d(1.05, 1.05, 1.05);\n    transform: scale3d(1.05, 1.05, 1.05);\n  }\n\n  to {\n    -webkit-transform: scale3d(1, 1, 1);\n    transform: scale3d(1, 1, 1);\n  }\n}\n\n@keyframes pulse {\n  from {\n    -webkit-transform: scale3d(1, 1, 1);\n    transform: scale3d(1, 1, 1);\n  }\n\n  50% {\n    -webkit-transform: scale3d(1.05, 1.05, 1.05);\n    transform: scale3d(1.05, 1.05, 1.05);\n  }\n\n  to {\n    -webkit-transform: scale3d(1, 1, 1);\n    transform: scale3d(1, 1, 1);\n  }\n}\n\n.pulse {\n  -webkit-animation-name: pulse;\n  animation-name: pulse;\n}\n\n@-webkit-keyframes rubberBand {\n  from {\n    -webkit-transform: scale3d(1, 1, 1);\n    transform: scale3d(1, 1, 1);\n  }\n\n  30% {\n    -webkit-transform: scale3d(1.25, 0.75, 1);\n    transform: scale3d(1.25, 0.75, 1);\n  }\n\n  40% {\n    -webkit-transform: scale3d(0.75, 1.25, 1);\n    transform: scale3d(0.75, 1.25, 1);\n  }\n\n  50% {\n    -webkit-transform: scale3d(1.15, 0.85, 1);\n    transform: scale3d(1.15, 0.85, 1);\n  }\n\n  65% {\n    -webkit-transform: scale3d(0.95, 1.05, 1);\n    transform: scale3d(0.95, 1.05, 1);\n  }\n\n  75% {\n    -webkit-transform: scale3d(1.05, 0.95, 1);\n    transform: scale3d(1.05, 0.95, 1);\n  }\n\n  to {\n    -webkit-transform: scale3d(1, 1, 1);\n    transform: scale3d(1, 1, 1);\n  }\n}\n\n@keyframes rubberBand {\n  from {\n    -webkit-transform: scale3d(1, 1, 1);\n    transform: scale3d(1, 1, 1);\n  }\n\n  30% {\n    -webkit-transform: scale3d(1.25, 0.75, 1);\n    transform: scale3d(1.25, 0.75, 1);\n  }\n\n  40% {\n    -webkit-transform: scale3d(0.75, 1.25, 1);\n    transform: scale3d(0.75, 1.25, 1);\n  }\n\n  50% {\n    -webkit-transform: scale3d(1.15, 0.85, 1);\n    transform: scale3d(1.15, 0.85, 1);\n  }\n\n  65% {\n    -webkit-transform: scale3d(0.95, 1.05, 1);\n    transform: scale3d(0.95, 1.05, 1);\n  }\n\n  75% {\n    -webkit-transform: scale3d(1.05, 0.95, 1);\n    transform: scale3d(1.05, 0.95, 1);\n  }\n\n  to {\n    -webkit-transform: scale3d(1, 1, 1);\n    transform: scale3d(1, 1, 1);\n  }\n}\n\n.rubberBand {\n  -webkit-animation-name: rubberBand;\n  animation-name: rubberBand;\n}\n\n@-webkit-keyframes shake {\n  from,\n  to {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n\n  10%,\n  30%,\n  50%,\n  70%,\n  90% {\n    -webkit-transform: translate3d(-10px, 0, 0);\n    transform: translate3d(-10px, 0, 0);\n  }\n\n  20%,\n  40%,\n  60%,\n  80% {\n    -webkit-transform: translate3d(10px, 0, 0);\n    transform: translate3d(10px, 0, 0);\n  }\n}\n\n@keyframes shake {\n  from,\n  to {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n\n  10%,\n  30%,\n  50%,\n  70%,\n  90% {\n    -webkit-transform: translate3d(-10px, 0, 0);\n    transform: translate3d(-10px, 0, 0);\n  }\n\n  20%,\n  40%,\n  60%,\n  80% {\n    -webkit-transform: translate3d(10px, 0, 0);\n    transform: translate3d(10px, 0, 0);\n  }\n}\n\n.shake {\n  -webkit-animation-name: shake;\n  animation-name: shake;\n}\n\n@-webkit-keyframes headShake {\n  0% {\n    -webkit-transform: translateX(0);\n    transform: translateX(0);\n  }\n\n  6.5% {\n    -webkit-transform: translateX(-6px) rotateY(-9deg);\n    transform: translateX(-6px) rotateY(-9deg);\n  }\n\n  18.5% {\n    -webkit-transform: translateX(5px) rotateY(7deg);\n    transform: translateX(5px) rotateY(7deg);\n  }\n\n  31.5% {\n    -webkit-transform: translateX(-3px) rotateY(-5deg);\n    transform: translateX(-3px) rotateY(-5deg);\n  }\n\n  43.5% {\n    -webkit-transform: translateX(2px) rotateY(3deg);\n    transform: translateX(2px) rotateY(3deg);\n  }\n\n  50% {\n    -webkit-transform: translateX(0);\n    transform: translateX(0);\n  }\n}\n\n@keyframes headShake {\n  0% {\n    -webkit-transform: translateX(0);\n    transform: translateX(0);\n  }\n\n  6.5% {\n    -webkit-transform: translateX(-6px) rotateY(-9deg);\n    transform: translateX(-6px) rotateY(-9deg);\n  }\n\n  18.5% {\n    -webkit-transform: translateX(5px) rotateY(7deg);\n    transform: translateX(5px) rotateY(7deg);\n  }\n\n  31.5% {\n    -webkit-transform: translateX(-3px) rotateY(-5deg);\n    transform: translateX(-3px) rotateY(-5deg);\n  }\n\n  43.5% {\n    -webkit-transform: translateX(2px) rotateY(3deg);\n    transform: translateX(2px) rotateY(3deg);\n  }\n\n  50% {\n    -webkit-transform: translateX(0);\n    transform: translateX(0);\n  }\n}\n\n.headShake {\n  -webkit-animation-timing-function: ease-in-out;\n  animation-timing-function: ease-in-out;\n  -webkit-animation-name: headShake;\n  animation-name: headShake;\n}\n\n@-webkit-keyframes swing {\n  20% {\n    -webkit-transform: rotate3d(0, 0, 1, 15deg);\n    transform: rotate3d(0, 0, 1, 15deg);\n  }\n\n  40% {\n    -webkit-transform: rotate3d(0, 0, 1, -10deg);\n    transform: rotate3d(0, 0, 1, -10deg);\n  }\n\n  60% {\n    -webkit-transform: rotate3d(0, 0, 1, 5deg);\n    transform: rotate3d(0, 0, 1, 5deg);\n  }\n\n  80% {\n    -webkit-transform: rotate3d(0, 0, 1, -5deg);\n    transform: rotate3d(0, 0, 1, -5deg);\n  }\n\n  to {\n    -webkit-transform: rotate3d(0, 0, 1, 0deg);\n    transform: rotate3d(0, 0, 1, 0deg);\n  }\n}\n\n@keyframes swing {\n  20% {\n    -webkit-transform: rotate3d(0, 0, 1, 15deg);\n    transform: rotate3d(0, 0, 1, 15deg);\n  }\n\n  40% {\n    -webkit-transform: rotate3d(0, 0, 1, -10deg);\n    transform: rotate3d(0, 0, 1, -10deg);\n  }\n\n  60% {\n    -webkit-transform: rotate3d(0, 0, 1, 5deg);\n    transform: rotate3d(0, 0, 1, 5deg);\n  }\n\n  80% {\n    -webkit-transform: rotate3d(0, 0, 1, -5deg);\n    transform: rotate3d(0, 0, 1, -5deg);\n  }\n\n  to {\n    -webkit-transform: rotate3d(0, 0, 1, 0deg);\n    transform: rotate3d(0, 0, 1, 0deg);\n  }\n}\n\n.swing {\n  -webkit-transform-origin: top center;\n  transform-origin: top center;\n  -webkit-animation-name: swing;\n  animation-name: swing;\n}\n\n@-webkit-keyframes tada {\n  from {\n    -webkit-transform: scale3d(1, 1, 1);\n    transform: scale3d(1, 1, 1);\n  }\n\n  10%,\n  20% {\n    -webkit-transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg);\n    transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg);\n  }\n\n  30%,\n  50%,\n  70%,\n  90% {\n    -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);\n    transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);\n  }\n\n  40%,\n  60%,\n  80% {\n    -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);\n    transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);\n  }\n\n  to {\n    -webkit-transform: scale3d(1, 1, 1);\n    transform: scale3d(1, 1, 1);\n  }\n}\n\n@keyframes tada {\n  from {\n    -webkit-transform: scale3d(1, 1, 1);\n    transform: scale3d(1, 1, 1);\n  }\n\n  10%,\n  20% {\n    -webkit-transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg);\n    transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg);\n  }\n\n  30%,\n  50%,\n  70%,\n  90% {\n    -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);\n    transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);\n  }\n\n  40%,\n  60%,\n  80% {\n    -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);\n    transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);\n  }\n\n  to {\n    -webkit-transform: scale3d(1, 1, 1);\n    transform: scale3d(1, 1, 1);\n  }\n}\n\n.tada {\n  -webkit-animation-name: tada;\n  animation-name: tada;\n}\n\n/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */\n\n@-webkit-keyframes wobble {\n  from {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n\n  15% {\n    -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);\n    transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);\n  }\n\n  30% {\n    -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);\n    transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);\n  }\n\n  45% {\n    -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);\n    transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);\n  }\n\n  60% {\n    -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);\n    transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);\n  }\n\n  75% {\n    -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);\n    transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);\n  }\n\n  to {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n}\n\n@keyframes wobble {\n  from {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n\n  15% {\n    -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);\n    transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);\n  }\n\n  30% {\n    -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);\n    transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);\n  }\n\n  45% {\n    -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);\n    transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);\n  }\n\n  60% {\n    -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);\n    transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);\n  }\n\n  75% {\n    -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);\n    transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);\n  }\n\n  to {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n}\n\n.wobble {\n  -webkit-animation-name: wobble;\n  animation-name: wobble;\n}\n\n@-webkit-keyframes jello {\n  from,\n  11.1%,\n  to {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n\n  22.2% {\n    -webkit-transform: skewX(-12.5deg) skewY(-12.5deg);\n    transform: skewX(-12.5deg) skewY(-12.5deg);\n  }\n\n  33.3% {\n    -webkit-transform: skewX(6.25deg) skewY(6.25deg);\n    transform: skewX(6.25deg) skewY(6.25deg);\n  }\n\n  44.4% {\n    -webkit-transform: skewX(-3.125deg) skewY(-3.125deg);\n    transform: skewX(-3.125deg) skewY(-3.125deg);\n  }\n\n  55.5% {\n    -webkit-transform: skewX(1.5625deg) skewY(1.5625deg);\n    transform: skewX(1.5625deg) skewY(1.5625deg);\n  }\n\n  66.6% {\n    -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg);\n    transform: skewX(-0.78125deg) skewY(-0.78125deg);\n  }\n\n  77.7% {\n    -webkit-transform: skewX(0.390625deg) skewY(0.390625deg);\n    transform: skewX(0.390625deg) skewY(0.390625deg);\n  }\n\n  88.8% {\n    -webkit-transform: skewX(-0.1953125deg) skewY(-0.1953125deg);\n    transform: skewX(-0.1953125deg) skewY(-0.1953125deg);\n  }\n}\n\n@keyframes jello {\n  from,\n  11.1%,\n  to {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n\n  22.2% {\n    -webkit-transform: skewX(-12.5deg) skewY(-12.5deg);\n    transform: skewX(-12.5deg) skewY(-12.5deg);\n  }\n\n  33.3% {\n    -webkit-transform: skewX(6.25deg) skewY(6.25deg);\n    transform: skewX(6.25deg) skewY(6.25deg);\n  }\n\n  44.4% {\n    -webkit-transform: skewX(-3.125deg) skewY(-3.125deg);\n    transform: skewX(-3.125deg) skewY(-3.125deg);\n  }\n\n  55.5% {\n    -webkit-transform: skewX(1.5625deg) skewY(1.5625deg);\n    transform: skewX(1.5625deg) skewY(1.5625deg);\n  }\n\n  66.6% {\n    -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg);\n    transform: skewX(-0.78125deg) skewY(-0.78125deg);\n  }\n\n  77.7% {\n    -webkit-transform: skewX(0.390625deg) skewY(0.390625deg);\n    transform: skewX(0.390625deg) skewY(0.390625deg);\n  }\n\n  88.8% {\n    -webkit-transform: skewX(-0.1953125deg) skewY(-0.1953125deg);\n    transform: skewX(-0.1953125deg) skewY(-0.1953125deg);\n  }\n}\n\n.jello {\n  -webkit-animation-name: jello;\n  animation-name: jello;\n  -webkit-transform-origin: center;\n  transform-origin: center;\n}\n\n@-webkit-keyframes bounceIn {\n  from,\n  20%,\n  40%,\n  60%,\n  80%,\n  to {\n    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n    animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n  }\n\n  0% {\n    opacity: 0;\n    -webkit-transform: scale3d(0.3, 0.3, 0.3);\n    transform: scale3d(0.3, 0.3, 0.3);\n  }\n\n  20% {\n    -webkit-transform: scale3d(1.1, 1.1, 1.1);\n    transform: scale3d(1.1, 1.1, 1.1);\n  }\n\n  40% {\n    -webkit-transform: scale3d(0.9, 0.9, 0.9);\n    transform: scale3d(0.9, 0.9, 0.9);\n  }\n\n  60% {\n    opacity: 1;\n    -webkit-transform: scale3d(1.03, 1.03, 1.03);\n    transform: scale3d(1.03, 1.03, 1.03);\n  }\n\n  80% {\n    -webkit-transform: scale3d(0.97, 0.97, 0.97);\n    transform: scale3d(0.97, 0.97, 0.97);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: scale3d(1, 1, 1);\n    transform: scale3d(1, 1, 1);\n  }\n}\n\n@keyframes bounceIn {\n  from,\n  20%,\n  40%,\n  60%,\n  80%,\n  to {\n    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n    animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n  }\n\n  0% {\n    opacity: 0;\n    -webkit-transform: scale3d(0.3, 0.3, 0.3);\n    transform: scale3d(0.3, 0.3, 0.3);\n  }\n\n  20% {\n    -webkit-transform: scale3d(1.1, 1.1, 1.1);\n    transform: scale3d(1.1, 1.1, 1.1);\n  }\n\n  40% {\n    -webkit-transform: scale3d(0.9, 0.9, 0.9);\n    transform: scale3d(0.9, 0.9, 0.9);\n  }\n\n  60% {\n    opacity: 1;\n    -webkit-transform: scale3d(1.03, 1.03, 1.03);\n    transform: scale3d(1.03, 1.03, 1.03);\n  }\n\n  80% {\n    -webkit-transform: scale3d(0.97, 0.97, 0.97);\n    transform: scale3d(0.97, 0.97, 0.97);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: scale3d(1, 1, 1);\n    transform: scale3d(1, 1, 1);\n  }\n}\n\n.bounceIn {\n  -webkit-animation-duration: 0.75s;\n  animation-duration: 0.75s;\n  -webkit-animation-name: bounceIn;\n  animation-name: bounceIn;\n}\n\n@-webkit-keyframes bounceInDown {\n  from,\n  60%,\n  75%,\n  90%,\n  to {\n    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n    animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n  }\n\n  0% {\n    opacity: 0;\n    -webkit-transform: translate3d(0, -3000px, 0);\n    transform: translate3d(0, -3000px, 0);\n  }\n\n  60% {\n    opacity: 1;\n    -webkit-transform: translate3d(0, 25px, 0);\n    transform: translate3d(0, 25px, 0);\n  }\n\n  75% {\n    -webkit-transform: translate3d(0, -10px, 0);\n    transform: translate3d(0, -10px, 0);\n  }\n\n  90% {\n    -webkit-transform: translate3d(0, 5px, 0);\n    transform: translate3d(0, 5px, 0);\n  }\n\n  to {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n}\n\n@keyframes bounceInDown {\n  from,\n  60%,\n  75%,\n  90%,\n  to {\n    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n    animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n  }\n\n  0% {\n    opacity: 0;\n    -webkit-transform: translate3d(0, -3000px, 0);\n    transform: translate3d(0, -3000px, 0);\n  }\n\n  60% {\n    opacity: 1;\n    -webkit-transform: translate3d(0, 25px, 0);\n    transform: translate3d(0, 25px, 0);\n  }\n\n  75% {\n    -webkit-transform: translate3d(0, -10px, 0);\n    transform: translate3d(0, -10px, 0);\n  }\n\n  90% {\n    -webkit-transform: translate3d(0, 5px, 0);\n    transform: translate3d(0, 5px, 0);\n  }\n\n  to {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n}\n\n.bounceInDown {\n  -webkit-animation-name: bounceInDown;\n  animation-name: bounceInDown;\n}\n\n@-webkit-keyframes bounceInLeft {\n  from,\n  60%,\n  75%,\n  90%,\n  to {\n    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n    animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n  }\n\n  0% {\n    opacity: 0;\n    -webkit-transform: translate3d(-3000px, 0, 0);\n    transform: translate3d(-3000px, 0, 0);\n  }\n\n  60% {\n    opacity: 1;\n    -webkit-transform: translate3d(25px, 0, 0);\n    transform: translate3d(25px, 0, 0);\n  }\n\n  75% {\n    -webkit-transform: translate3d(-10px, 0, 0);\n    transform: translate3d(-10px, 0, 0);\n  }\n\n  90% {\n    -webkit-transform: translate3d(5px, 0, 0);\n    transform: translate3d(5px, 0, 0);\n  }\n\n  to {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n}\n\n@keyframes bounceInLeft {\n  from,\n  60%,\n  75%,\n  90%,\n  to {\n    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n    animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n  }\n\n  0% {\n    opacity: 0;\n    -webkit-transform: translate3d(-3000px, 0, 0);\n    transform: translate3d(-3000px, 0, 0);\n  }\n\n  60% {\n    opacity: 1;\n    -webkit-transform: translate3d(25px, 0, 0);\n    transform: translate3d(25px, 0, 0);\n  }\n\n  75% {\n    -webkit-transform: translate3d(-10px, 0, 0);\n    transform: translate3d(-10px, 0, 0);\n  }\n\n  90% {\n    -webkit-transform: translate3d(5px, 0, 0);\n    transform: translate3d(5px, 0, 0);\n  }\n\n  to {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n}\n\n.bounceInLeft {\n  -webkit-animation-name: bounceInLeft;\n  animation-name: bounceInLeft;\n}\n\n@-webkit-keyframes bounceInRight {\n  from,\n  60%,\n  75%,\n  90%,\n  to {\n    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n    animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n  }\n\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(3000px, 0, 0);\n    transform: translate3d(3000px, 0, 0);\n  }\n\n  60% {\n    opacity: 1;\n    -webkit-transform: translate3d(-25px, 0, 0);\n    transform: translate3d(-25px, 0, 0);\n  }\n\n  75% {\n    -webkit-transform: translate3d(10px, 0, 0);\n    transform: translate3d(10px, 0, 0);\n  }\n\n  90% {\n    -webkit-transform: translate3d(-5px, 0, 0);\n    transform: translate3d(-5px, 0, 0);\n  }\n\n  to {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n}\n\n@keyframes bounceInRight {\n  from,\n  60%,\n  75%,\n  90%,\n  to {\n    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n    animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n  }\n\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(3000px, 0, 0);\n    transform: translate3d(3000px, 0, 0);\n  }\n\n  60% {\n    opacity: 1;\n    -webkit-transform: translate3d(-25px, 0, 0);\n    transform: translate3d(-25px, 0, 0);\n  }\n\n  75% {\n    -webkit-transform: translate3d(10px, 0, 0);\n    transform: translate3d(10px, 0, 0);\n  }\n\n  90% {\n    -webkit-transform: translate3d(-5px, 0, 0);\n    transform: translate3d(-5px, 0, 0);\n  }\n\n  to {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n}\n\n.bounceInRight {\n  -webkit-animation-name: bounceInRight;\n  animation-name: bounceInRight;\n}\n\n@-webkit-keyframes bounceInUp {\n  from,\n  60%,\n  75%,\n  90%,\n  to {\n    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n    animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n  }\n\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(0, 3000px, 0);\n    transform: translate3d(0, 3000px, 0);\n  }\n\n  60% {\n    opacity: 1;\n    -webkit-transform: translate3d(0, -20px, 0);\n    transform: translate3d(0, -20px, 0);\n  }\n\n  75% {\n    -webkit-transform: translate3d(0, 10px, 0);\n    transform: translate3d(0, 10px, 0);\n  }\n\n  90% {\n    -webkit-transform: translate3d(0, -5px, 0);\n    transform: translate3d(0, -5px, 0);\n  }\n\n  to {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n}\n\n@keyframes bounceInUp {\n  from,\n  60%,\n  75%,\n  90%,\n  to {\n    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n    animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n  }\n\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(0, 3000px, 0);\n    transform: translate3d(0, 3000px, 0);\n  }\n\n  60% {\n    opacity: 1;\n    -webkit-transform: translate3d(0, -20px, 0);\n    transform: translate3d(0, -20px, 0);\n  }\n\n  75% {\n    -webkit-transform: translate3d(0, 10px, 0);\n    transform: translate3d(0, 10px, 0);\n  }\n\n  90% {\n    -webkit-transform: translate3d(0, -5px, 0);\n    transform: translate3d(0, -5px, 0);\n  }\n\n  to {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n}\n\n.bounceInUp {\n  -webkit-animation-name: bounceInUp;\n  animation-name: bounceInUp;\n}\n\n@-webkit-keyframes bounceOut {\n  20% {\n    -webkit-transform: scale3d(0.9, 0.9, 0.9);\n    transform: scale3d(0.9, 0.9, 0.9);\n  }\n\n  50%,\n  55% {\n    opacity: 1;\n    -webkit-transform: scale3d(1.1, 1.1, 1.1);\n    transform: scale3d(1.1, 1.1, 1.1);\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: scale3d(0.3, 0.3, 0.3);\n    transform: scale3d(0.3, 0.3, 0.3);\n  }\n}\n\n@keyframes bounceOut {\n  20% {\n    -webkit-transform: scale3d(0.9, 0.9, 0.9);\n    transform: scale3d(0.9, 0.9, 0.9);\n  }\n\n  50%,\n  55% {\n    opacity: 1;\n    -webkit-transform: scale3d(1.1, 1.1, 1.1);\n    transform: scale3d(1.1, 1.1, 1.1);\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: scale3d(0.3, 0.3, 0.3);\n    transform: scale3d(0.3, 0.3, 0.3);\n  }\n}\n\n.bounceOut {\n  -webkit-animation-duration: 0.75s;\n  animation-duration: 0.75s;\n  -webkit-animation-name: bounceOut;\n  animation-name: bounceOut;\n}\n\n@-webkit-keyframes bounceOutDown {\n  20% {\n    -webkit-transform: translate3d(0, 10px, 0);\n    transform: translate3d(0, 10px, 0);\n  }\n\n  40%,\n  45% {\n    opacity: 1;\n    -webkit-transform: translate3d(0, -20px, 0);\n    transform: translate3d(0, -20px, 0);\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(0, 2000px, 0);\n    transform: translate3d(0, 2000px, 0);\n  }\n}\n\n@keyframes bounceOutDown {\n  20% {\n    -webkit-transform: translate3d(0, 10px, 0);\n    transform: translate3d(0, 10px, 0);\n  }\n\n  40%,\n  45% {\n    opacity: 1;\n    -webkit-transform: translate3d(0, -20px, 0);\n    transform: translate3d(0, -20px, 0);\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(0, 2000px, 0);\n    transform: translate3d(0, 2000px, 0);\n  }\n}\n\n.bounceOutDown {\n  -webkit-animation-name: bounceOutDown;\n  animation-name: bounceOutDown;\n}\n\n@-webkit-keyframes bounceOutLeft {\n  20% {\n    opacity: 1;\n    -webkit-transform: translate3d(20px, 0, 0);\n    transform: translate3d(20px, 0, 0);\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(-2000px, 0, 0);\n    transform: translate3d(-2000px, 0, 0);\n  }\n}\n\n@keyframes bounceOutLeft {\n  20% {\n    opacity: 1;\n    -webkit-transform: translate3d(20px, 0, 0);\n    transform: translate3d(20px, 0, 0);\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(-2000px, 0, 0);\n    transform: translate3d(-2000px, 0, 0);\n  }\n}\n\n.bounceOutLeft {\n  -webkit-animation-name: bounceOutLeft;\n  animation-name: bounceOutLeft;\n}\n\n@-webkit-keyframes bounceOutRight {\n  20% {\n    opacity: 1;\n    -webkit-transform: translate3d(-20px, 0, 0);\n    transform: translate3d(-20px, 0, 0);\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(2000px, 0, 0);\n    transform: translate3d(2000px, 0, 0);\n  }\n}\n\n@keyframes bounceOutRight {\n  20% {\n    opacity: 1;\n    -webkit-transform: translate3d(-20px, 0, 0);\n    transform: translate3d(-20px, 0, 0);\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(2000px, 0, 0);\n    transform: translate3d(2000px, 0, 0);\n  }\n}\n\n.bounceOutRight {\n  -webkit-animation-name: bounceOutRight;\n  animation-name: bounceOutRight;\n}\n\n@-webkit-keyframes bounceOutUp {\n  20% {\n    -webkit-transform: translate3d(0, -10px, 0);\n    transform: translate3d(0, -10px, 0);\n  }\n\n  40%,\n  45% {\n    opacity: 1;\n    -webkit-transform: translate3d(0, 20px, 0);\n    transform: translate3d(0, 20px, 0);\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(0, -2000px, 0);\n    transform: translate3d(0, -2000px, 0);\n  }\n}\n\n@keyframes bounceOutUp {\n  20% {\n    -webkit-transform: translate3d(0, -10px, 0);\n    transform: translate3d(0, -10px, 0);\n  }\n\n  40%,\n  45% {\n    opacity: 1;\n    -webkit-transform: translate3d(0, 20px, 0);\n    transform: translate3d(0, 20px, 0);\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(0, -2000px, 0);\n    transform: translate3d(0, -2000px, 0);\n  }\n}\n\n.bounceOutUp {\n  -webkit-animation-name: bounceOutUp;\n  animation-name: bounceOutUp;\n}\n\n@-webkit-keyframes fadeIn {\n  from {\n    opacity: 0;\n  }\n\n  to {\n    opacity: 1;\n  }\n}\n\n@keyframes fadeIn {\n  from {\n    opacity: 0;\n  }\n\n  to {\n    opacity: 1;\n  }\n}\n\n.fadeIn {\n  -webkit-animation-name: fadeIn;\n  animation-name: fadeIn;\n}\n\n@-webkit-keyframes fadeInDown {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(0, -100%, 0);\n    transform: translate3d(0, -100%, 0);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n}\n\n@keyframes fadeInDown {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(0, -100%, 0);\n    transform: translate3d(0, -100%, 0);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n}\n\n.fadeInDown {\n  -webkit-animation-name: fadeInDown;\n  animation-name: fadeInDown;\n}\n\n@-webkit-keyframes fadeInDownBig {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(0, -2000px, 0);\n    transform: translate3d(0, -2000px, 0);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n}\n\n@keyframes fadeInDownBig {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(0, -2000px, 0);\n    transform: translate3d(0, -2000px, 0);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n}\n\n.fadeInDownBig {\n  -webkit-animation-name: fadeInDownBig;\n  animation-name: fadeInDownBig;\n}\n\n@-webkit-keyframes fadeInLeft {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(-100%, 0, 0);\n    transform: translate3d(-100%, 0, 0);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n}\n\n@keyframes fadeInLeft {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(-100%, 0, 0);\n    transform: translate3d(-100%, 0, 0);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n}\n\n.fadeInLeft {\n  -webkit-animation-name: fadeInLeft;\n  animation-name: fadeInLeft;\n}\n\n@-webkit-keyframes fadeInLeftBig {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(-2000px, 0, 0);\n    transform: translate3d(-2000px, 0, 0);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n}\n\n@keyframes fadeInLeftBig {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(-2000px, 0, 0);\n    transform: translate3d(-2000px, 0, 0);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n}\n\n.fadeInLeftBig {\n  -webkit-animation-name: fadeInLeftBig;\n  animation-name: fadeInLeftBig;\n}\n\n@-webkit-keyframes fadeInRight {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(100%, 0, 0);\n    transform: translate3d(100%, 0, 0);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n}\n\n@keyframes fadeInRight {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(100%, 0, 0);\n    transform: translate3d(100%, 0, 0);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n}\n\n.fadeInRight {\n  -webkit-animation-name: fadeInRight;\n  animation-name: fadeInRight;\n}\n\n@-webkit-keyframes fadeInRightBig {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(2000px, 0, 0);\n    transform: translate3d(2000px, 0, 0);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n}\n\n@keyframes fadeInRightBig {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(2000px, 0, 0);\n    transform: translate3d(2000px, 0, 0);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n}\n\n.fadeInRightBig {\n  -webkit-animation-name: fadeInRightBig;\n  animation-name: fadeInRightBig;\n}\n\n@-webkit-keyframes fadeInUp {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(0, 100%, 0);\n    transform: translate3d(0, 100%, 0);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n}\n\n@keyframes fadeInUp {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(0, 100%, 0);\n    transform: translate3d(0, 100%, 0);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n}\n\n.fadeInUp {\n  -webkit-animation-name: fadeInUp;\n  animation-name: fadeInUp;\n}\n\n@-webkit-keyframes fadeInUpBig {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(0, 2000px, 0);\n    transform: translate3d(0, 2000px, 0);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n}\n\n@keyframes fadeInUpBig {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(0, 2000px, 0);\n    transform: translate3d(0, 2000px, 0);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n}\n\n.fadeInUpBig {\n  -webkit-animation-name: fadeInUpBig;\n  animation-name: fadeInUpBig;\n}\n\n@-webkit-keyframes fadeOut {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n  }\n}\n\n@keyframes fadeOut {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n  }\n}\n\n.fadeOut {\n  -webkit-animation-name: fadeOut;\n  animation-name: fadeOut;\n}\n\n@-webkit-keyframes fadeOutDown {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(0, 100%, 0);\n    transform: translate3d(0, 100%, 0);\n  }\n}\n\n@keyframes fadeOutDown {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(0, 100%, 0);\n    transform: translate3d(0, 100%, 0);\n  }\n}\n\n.fadeOutDown {\n  -webkit-animation-name: fadeOutDown;\n  animation-name: fadeOutDown;\n}\n\n@-webkit-keyframes fadeOutDownBig {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(0, 2000px, 0);\n    transform: translate3d(0, 2000px, 0);\n  }\n}\n\n@keyframes fadeOutDownBig {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(0, 2000px, 0);\n    transform: translate3d(0, 2000px, 0);\n  }\n}\n\n.fadeOutDownBig {\n  -webkit-animation-name: fadeOutDownBig;\n  animation-name: fadeOutDownBig;\n}\n\n@-webkit-keyframes fadeOutLeft {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(-100%, 0, 0);\n    transform: translate3d(-100%, 0, 0);\n  }\n}\n\n@keyframes fadeOutLeft {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(-100%, 0, 0);\n    transform: translate3d(-100%, 0, 0);\n  }\n}\n\n.fadeOutLeft {\n  -webkit-animation-name: fadeOutLeft;\n  animation-name: fadeOutLeft;\n}\n\n@-webkit-keyframes fadeOutLeftBig {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(-2000px, 0, 0);\n    transform: translate3d(-2000px, 0, 0);\n  }\n}\n\n@keyframes fadeOutLeftBig {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(-2000px, 0, 0);\n    transform: translate3d(-2000px, 0, 0);\n  }\n}\n\n.fadeOutLeftBig {\n  -webkit-animation-name: fadeOutLeftBig;\n  animation-name: fadeOutLeftBig;\n}\n\n@-webkit-keyframes fadeOutRight {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(100%, 0, 0);\n    transform: translate3d(100%, 0, 0);\n  }\n}\n\n@keyframes fadeOutRight {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(100%, 0, 0);\n    transform: translate3d(100%, 0, 0);\n  }\n}\n\n.fadeOutRight {\n  -webkit-animation-name: fadeOutRight;\n  animation-name: fadeOutRight;\n}\n\n@-webkit-keyframes fadeOutRightBig {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(2000px, 0, 0);\n    transform: translate3d(2000px, 0, 0);\n  }\n}\n\n@keyframes fadeOutRightBig {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(2000px, 0, 0);\n    transform: translate3d(2000px, 0, 0);\n  }\n}\n\n.fadeOutRightBig {\n  -webkit-animation-name: fadeOutRightBig;\n  animation-name: fadeOutRightBig;\n}\n\n@-webkit-keyframes fadeOutUp {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(0, -100%, 0);\n    transform: translate3d(0, -100%, 0);\n  }\n}\n\n@keyframes fadeOutUp {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(0, -100%, 0);\n    transform: translate3d(0, -100%, 0);\n  }\n}\n\n.fadeOutUp {\n  -webkit-animation-name: fadeOutUp;\n  animation-name: fadeOutUp;\n}\n\n@-webkit-keyframes fadeOutUpBig {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(0, -2000px, 0);\n    transform: translate3d(0, -2000px, 0);\n  }\n}\n\n@keyframes fadeOutUpBig {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(0, -2000px, 0);\n    transform: translate3d(0, -2000px, 0);\n  }\n}\n\n.fadeOutUpBig {\n  -webkit-animation-name: fadeOutUpBig;\n  animation-name: fadeOutUpBig;\n}\n\n@-webkit-keyframes flip {\n  from {\n    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg);\n    transform: perspective(400px) rotate3d(0, 1, 0, -360deg);\n    -webkit-animation-timing-function: ease-out;\n    animation-timing-function: ease-out;\n  }\n\n  40% {\n    -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);\n    transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);\n    -webkit-animation-timing-function: ease-out;\n    animation-timing-function: ease-out;\n  }\n\n  50% {\n    -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);\n    transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);\n    -webkit-animation-timing-function: ease-in;\n    animation-timing-function: ease-in;\n  }\n\n  80% {\n    -webkit-transform: perspective(400px) scale3d(0.95, 0.95, 0.95);\n    transform: perspective(400px) scale3d(0.95, 0.95, 0.95);\n    -webkit-animation-timing-function: ease-in;\n    animation-timing-function: ease-in;\n  }\n\n  to {\n    -webkit-transform: perspective(400px);\n    transform: perspective(400px);\n    -webkit-animation-timing-function: ease-in;\n    animation-timing-function: ease-in;\n  }\n}\n\n@keyframes flip {\n  from {\n    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg);\n    transform: perspective(400px) rotate3d(0, 1, 0, -360deg);\n    -webkit-animation-timing-function: ease-out;\n    animation-timing-function: ease-out;\n  }\n\n  40% {\n    -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);\n    transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);\n    -webkit-animation-timing-function: ease-out;\n    animation-timing-function: ease-out;\n  }\n\n  50% {\n    -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);\n    transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);\n    -webkit-animation-timing-function: ease-in;\n    animation-timing-function: ease-in;\n  }\n\n  80% {\n    -webkit-transform: perspective(400px) scale3d(0.95, 0.95, 0.95);\n    transform: perspective(400px) scale3d(0.95, 0.95, 0.95);\n    -webkit-animation-timing-function: ease-in;\n    animation-timing-function: ease-in;\n  }\n\n  to {\n    -webkit-transform: perspective(400px);\n    transform: perspective(400px);\n    -webkit-animation-timing-function: ease-in;\n    animation-timing-function: ease-in;\n  }\n}\n\n.animated.flip {\n  -webkit-backface-visibility: visible;\n  backface-visibility: visible;\n  -webkit-animation-name: flip;\n  animation-name: flip;\n}\n\n@-webkit-keyframes flipInX {\n  from {\n    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n    transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n    -webkit-animation-timing-function: ease-in;\n    animation-timing-function: ease-in;\n    opacity: 0;\n  }\n\n  40% {\n    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n    transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n    -webkit-animation-timing-function: ease-in;\n    animation-timing-function: ease-in;\n  }\n\n  60% {\n    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\n    transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\n    opacity: 1;\n  }\n\n  80% {\n    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg);\n    transform: perspective(400px) rotate3d(1, 0, 0, -5deg);\n  }\n\n  to {\n    -webkit-transform: perspective(400px);\n    transform: perspective(400px);\n  }\n}\n\n@keyframes flipInX {\n  from {\n    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n    transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n    -webkit-animation-timing-function: ease-in;\n    animation-timing-function: ease-in;\n    opacity: 0;\n  }\n\n  40% {\n    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n    transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n    -webkit-animation-timing-function: ease-in;\n    animation-timing-function: ease-in;\n  }\n\n  60% {\n    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\n    transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\n    opacity: 1;\n  }\n\n  80% {\n    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg);\n    transform: perspective(400px) rotate3d(1, 0, 0, -5deg);\n  }\n\n  to {\n    -webkit-transform: perspective(400px);\n    transform: perspective(400px);\n  }\n}\n\n.flipInX {\n  -webkit-backface-visibility: visible !important;\n  backface-visibility: visible !important;\n  -webkit-animation-name: flipInX;\n  animation-name: flipInX;\n}\n\n@-webkit-keyframes flipInY {\n  from {\n    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n    transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n    -webkit-animation-timing-function: ease-in;\n    animation-timing-function: ease-in;\n    opacity: 0;\n  }\n\n  40% {\n    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg);\n    transform: perspective(400px) rotate3d(0, 1, 0, -20deg);\n    -webkit-animation-timing-function: ease-in;\n    animation-timing-function: ease-in;\n  }\n\n  60% {\n    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg);\n    transform: perspective(400px) rotate3d(0, 1, 0, 10deg);\n    opacity: 1;\n  }\n\n  80% {\n    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg);\n    transform: perspective(400px) rotate3d(0, 1, 0, -5deg);\n  }\n\n  to {\n    -webkit-transform: perspective(400px);\n    transform: perspective(400px);\n  }\n}\n\n@keyframes flipInY {\n  from {\n    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n    transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n    -webkit-animation-timing-function: ease-in;\n    animation-timing-function: ease-in;\n    opacity: 0;\n  }\n\n  40% {\n    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg);\n    transform: perspective(400px) rotate3d(0, 1, 0, -20deg);\n    -webkit-animation-timing-function: ease-in;\n    animation-timing-function: ease-in;\n  }\n\n  60% {\n    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg);\n    transform: perspective(400px) rotate3d(0, 1, 0, 10deg);\n    opacity: 1;\n  }\n\n  80% {\n    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg);\n    transform: perspective(400px) rotate3d(0, 1, 0, -5deg);\n  }\n\n  to {\n    -webkit-transform: perspective(400px);\n    transform: perspective(400px);\n  }\n}\n\n.flipInY {\n  -webkit-backface-visibility: visible !important;\n  backface-visibility: visible !important;\n  -webkit-animation-name: flipInY;\n  animation-name: flipInY;\n}\n\n@-webkit-keyframes flipOutX {\n  from {\n    -webkit-transform: perspective(400px);\n    transform: perspective(400px);\n  }\n\n  30% {\n    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n    transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n    opacity: 1;\n  }\n\n  to {\n    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n    transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n    opacity: 0;\n  }\n}\n\n@keyframes flipOutX {\n  from {\n    -webkit-transform: perspective(400px);\n    transform: perspective(400px);\n  }\n\n  30% {\n    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n    transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n    opacity: 1;\n  }\n\n  to {\n    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n    transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n    opacity: 0;\n  }\n}\n\n.flipOutX {\n  -webkit-animation-duration: 0.75s;\n  animation-duration: 0.75s;\n  -webkit-animation-name: flipOutX;\n  animation-name: flipOutX;\n  -webkit-backface-visibility: visible !important;\n  backface-visibility: visible !important;\n}\n\n@-webkit-keyframes flipOutY {\n  from {\n    -webkit-transform: perspective(400px);\n    transform: perspective(400px);\n  }\n\n  30% {\n    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg);\n    transform: perspective(400px) rotate3d(0, 1, 0, -15deg);\n    opacity: 1;\n  }\n\n  to {\n    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n    transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n    opacity: 0;\n  }\n}\n\n@keyframes flipOutY {\n  from {\n    -webkit-transform: perspective(400px);\n    transform: perspective(400px);\n  }\n\n  30% {\n    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg);\n    transform: perspective(400px) rotate3d(0, 1, 0, -15deg);\n    opacity: 1;\n  }\n\n  to {\n    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n    transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n    opacity: 0;\n  }\n}\n\n.flipOutY {\n  -webkit-animation-duration: 0.75s;\n  animation-duration: 0.75s;\n  -webkit-backface-visibility: visible !important;\n  backface-visibility: visible !important;\n  -webkit-animation-name: flipOutY;\n  animation-name: flipOutY;\n}\n\n@-webkit-keyframes lightSpeedIn {\n  from {\n    -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg);\n    transform: translate3d(100%, 0, 0) skewX(-30deg);\n    opacity: 0;\n  }\n\n  60% {\n    -webkit-transform: skewX(20deg);\n    transform: skewX(20deg);\n    opacity: 1;\n  }\n\n  80% {\n    -webkit-transform: skewX(-5deg);\n    transform: skewX(-5deg);\n    opacity: 1;\n  }\n\n  to {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n    opacity: 1;\n  }\n}\n\n@keyframes lightSpeedIn {\n  from {\n    -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg);\n    transform: translate3d(100%, 0, 0) skewX(-30deg);\n    opacity: 0;\n  }\n\n  60% {\n    -webkit-transform: skewX(20deg);\n    transform: skewX(20deg);\n    opacity: 1;\n  }\n\n  80% {\n    -webkit-transform: skewX(-5deg);\n    transform: skewX(-5deg);\n    opacity: 1;\n  }\n\n  to {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n    opacity: 1;\n  }\n}\n\n.lightSpeedIn {\n  -webkit-animation-name: lightSpeedIn;\n  animation-name: lightSpeedIn;\n  -webkit-animation-timing-function: ease-out;\n  animation-timing-function: ease-out;\n}\n\n@-webkit-keyframes lightSpeedOut {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    -webkit-transform: translate3d(100%, 0, 0) skewX(30deg);\n    transform: translate3d(100%, 0, 0) skewX(30deg);\n    opacity: 0;\n  }\n}\n\n@keyframes lightSpeedOut {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    -webkit-transform: translate3d(100%, 0, 0) skewX(30deg);\n    transform: translate3d(100%, 0, 0) skewX(30deg);\n    opacity: 0;\n  }\n}\n\n.lightSpeedOut {\n  -webkit-animation-name: lightSpeedOut;\n  animation-name: lightSpeedOut;\n  -webkit-animation-timing-function: ease-in;\n  animation-timing-function: ease-in;\n}\n\n@-webkit-keyframes rotateIn {\n  from {\n    -webkit-transform-origin: center;\n    transform-origin: center;\n    -webkit-transform: rotate3d(0, 0, 1, -200deg);\n    transform: rotate3d(0, 0, 1, -200deg);\n    opacity: 0;\n  }\n\n  to {\n    -webkit-transform-origin: center;\n    transform-origin: center;\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n    opacity: 1;\n  }\n}\n\n@keyframes rotateIn {\n  from {\n    -webkit-transform-origin: center;\n    transform-origin: center;\n    -webkit-transform: rotate3d(0, 0, 1, -200deg);\n    transform: rotate3d(0, 0, 1, -200deg);\n    opacity: 0;\n  }\n\n  to {\n    -webkit-transform-origin: center;\n    transform-origin: center;\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n    opacity: 1;\n  }\n}\n\n.rotateIn {\n  -webkit-animation-name: rotateIn;\n  animation-name: rotateIn;\n}\n\n@-webkit-keyframes rotateInDownLeft {\n  from {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    -webkit-transform: rotate3d(0, 0, 1, -45deg);\n    transform: rotate3d(0, 0, 1, -45deg);\n    opacity: 0;\n  }\n\n  to {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n    opacity: 1;\n  }\n}\n\n@keyframes rotateInDownLeft {\n  from {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    -webkit-transform: rotate3d(0, 0, 1, -45deg);\n    transform: rotate3d(0, 0, 1, -45deg);\n    opacity: 0;\n  }\n\n  to {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n    opacity: 1;\n  }\n}\n\n.rotateInDownLeft {\n  -webkit-animation-name: rotateInDownLeft;\n  animation-name: rotateInDownLeft;\n}\n\n@-webkit-keyframes rotateInDownRight {\n  from {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    -webkit-transform: rotate3d(0, 0, 1, 45deg);\n    transform: rotate3d(0, 0, 1, 45deg);\n    opacity: 0;\n  }\n\n  to {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n    opacity: 1;\n  }\n}\n\n@keyframes rotateInDownRight {\n  from {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    -webkit-transform: rotate3d(0, 0, 1, 45deg);\n    transform: rotate3d(0, 0, 1, 45deg);\n    opacity: 0;\n  }\n\n  to {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n    opacity: 1;\n  }\n}\n\n.rotateInDownRight {\n  -webkit-animation-name: rotateInDownRight;\n  animation-name: rotateInDownRight;\n}\n\n@-webkit-keyframes rotateInUpLeft {\n  from {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    -webkit-transform: rotate3d(0, 0, 1, 45deg);\n    transform: rotate3d(0, 0, 1, 45deg);\n    opacity: 0;\n  }\n\n  to {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n    opacity: 1;\n  }\n}\n\n@keyframes rotateInUpLeft {\n  from {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    -webkit-transform: rotate3d(0, 0, 1, 45deg);\n    transform: rotate3d(0, 0, 1, 45deg);\n    opacity: 0;\n  }\n\n  to {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n    opacity: 1;\n  }\n}\n\n.rotateInUpLeft {\n  -webkit-animation-name: rotateInUpLeft;\n  animation-name: rotateInUpLeft;\n}\n\n@-webkit-keyframes rotateInUpRight {\n  from {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    -webkit-transform: rotate3d(0, 0, 1, -90deg);\n    transform: rotate3d(0, 0, 1, -90deg);\n    opacity: 0;\n  }\n\n  to {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n    opacity: 1;\n  }\n}\n\n@keyframes rotateInUpRight {\n  from {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    -webkit-transform: rotate3d(0, 0, 1, -90deg);\n    transform: rotate3d(0, 0, 1, -90deg);\n    opacity: 0;\n  }\n\n  to {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n    opacity: 1;\n  }\n}\n\n.rotateInUpRight {\n  -webkit-animation-name: rotateInUpRight;\n  animation-name: rotateInUpRight;\n}\n\n@-webkit-keyframes rotateOut {\n  from {\n    -webkit-transform-origin: center;\n    transform-origin: center;\n    opacity: 1;\n  }\n\n  to {\n    -webkit-transform-origin: center;\n    transform-origin: center;\n    -webkit-transform: rotate3d(0, 0, 1, 200deg);\n    transform: rotate3d(0, 0, 1, 200deg);\n    opacity: 0;\n  }\n}\n\n@keyframes rotateOut {\n  from {\n    -webkit-transform-origin: center;\n    transform-origin: center;\n    opacity: 1;\n  }\n\n  to {\n    -webkit-transform-origin: center;\n    transform-origin: center;\n    -webkit-transform: rotate3d(0, 0, 1, 200deg);\n    transform: rotate3d(0, 0, 1, 200deg);\n    opacity: 0;\n  }\n}\n\n.rotateOut {\n  -webkit-animation-name: rotateOut;\n  animation-name: rotateOut;\n}\n\n@-webkit-keyframes rotateOutDownLeft {\n  from {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    opacity: 1;\n  }\n\n  to {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    -webkit-transform: rotate3d(0, 0, 1, 45deg);\n    transform: rotate3d(0, 0, 1, 45deg);\n    opacity: 0;\n  }\n}\n\n@keyframes rotateOutDownLeft {\n  from {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    opacity: 1;\n  }\n\n  to {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    -webkit-transform: rotate3d(0, 0, 1, 45deg);\n    transform: rotate3d(0, 0, 1, 45deg);\n    opacity: 0;\n  }\n}\n\n.rotateOutDownLeft {\n  -webkit-animation-name: rotateOutDownLeft;\n  animation-name: rotateOutDownLeft;\n}\n\n@-webkit-keyframes rotateOutDownRight {\n  from {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    opacity: 1;\n  }\n\n  to {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    -webkit-transform: rotate3d(0, 0, 1, -45deg);\n    transform: rotate3d(0, 0, 1, -45deg);\n    opacity: 0;\n  }\n}\n\n@keyframes rotateOutDownRight {\n  from {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    opacity: 1;\n  }\n\n  to {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    -webkit-transform: rotate3d(0, 0, 1, -45deg);\n    transform: rotate3d(0, 0, 1, -45deg);\n    opacity: 0;\n  }\n}\n\n.rotateOutDownRight {\n  -webkit-animation-name: rotateOutDownRight;\n  animation-name: rotateOutDownRight;\n}\n\n@-webkit-keyframes rotateOutUpLeft {\n  from {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    opacity: 1;\n  }\n\n  to {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    -webkit-transform: rotate3d(0, 0, 1, -45deg);\n    transform: rotate3d(0, 0, 1, -45deg);\n    opacity: 0;\n  }\n}\n\n@keyframes rotateOutUpLeft {\n  from {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    opacity: 1;\n  }\n\n  to {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    -webkit-transform: rotate3d(0, 0, 1, -45deg);\n    transform: rotate3d(0, 0, 1, -45deg);\n    opacity: 0;\n  }\n}\n\n.rotateOutUpLeft {\n  -webkit-animation-name: rotateOutUpLeft;\n  animation-name: rotateOutUpLeft;\n}\n\n@-webkit-keyframes rotateOutUpRight {\n  from {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    opacity: 1;\n  }\n\n  to {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    -webkit-transform: rotate3d(0, 0, 1, 90deg);\n    transform: rotate3d(0, 0, 1, 90deg);\n    opacity: 0;\n  }\n}\n\n@keyframes rotateOutUpRight {\n  from {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    opacity: 1;\n  }\n\n  to {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    -webkit-transform: rotate3d(0, 0, 1, 90deg);\n    transform: rotate3d(0, 0, 1, 90deg);\n    opacity: 0;\n  }\n}\n\n.rotateOutUpRight {\n  -webkit-animation-name: rotateOutUpRight;\n  animation-name: rotateOutUpRight;\n}\n\n@-webkit-keyframes hinge {\n  0% {\n    -webkit-transform-origin: top left;\n    transform-origin: top left;\n    -webkit-animation-timing-function: ease-in-out;\n    animation-timing-function: ease-in-out;\n  }\n\n  20%,\n  60% {\n    -webkit-transform: rotate3d(0, 0, 1, 80deg);\n    transform: rotate3d(0, 0, 1, 80deg);\n    -webkit-transform-origin: top left;\n    transform-origin: top left;\n    -webkit-animation-timing-function: ease-in-out;\n    animation-timing-function: ease-in-out;\n  }\n\n  40%,\n  80% {\n    -webkit-transform: rotate3d(0, 0, 1, 60deg);\n    transform: rotate3d(0, 0, 1, 60deg);\n    -webkit-transform-origin: top left;\n    transform-origin: top left;\n    -webkit-animation-timing-function: ease-in-out;\n    animation-timing-function: ease-in-out;\n    opacity: 1;\n  }\n\n  to {\n    -webkit-transform: translate3d(0, 700px, 0);\n    transform: translate3d(0, 700px, 0);\n    opacity: 0;\n  }\n}\n\n@keyframes hinge {\n  0% {\n    -webkit-transform-origin: top left;\n    transform-origin: top left;\n    -webkit-animation-timing-function: ease-in-out;\n    animation-timing-function: ease-in-out;\n  }\n\n  20%,\n  60% {\n    -webkit-transform: rotate3d(0, 0, 1, 80deg);\n    transform: rotate3d(0, 0, 1, 80deg);\n    -webkit-transform-origin: top left;\n    transform-origin: top left;\n    -webkit-animation-timing-function: ease-in-out;\n    animation-timing-function: ease-in-out;\n  }\n\n  40%,\n  80% {\n    -webkit-transform: rotate3d(0, 0, 1, 60deg);\n    transform: rotate3d(0, 0, 1, 60deg);\n    -webkit-transform-origin: top left;\n    transform-origin: top left;\n    -webkit-animation-timing-function: ease-in-out;\n    animation-timing-function: ease-in-out;\n    opacity: 1;\n  }\n\n  to {\n    -webkit-transform: translate3d(0, 700px, 0);\n    transform: translate3d(0, 700px, 0);\n    opacity: 0;\n  }\n}\n\n.hinge {\n  -webkit-animation-duration: 2s;\n  animation-duration: 2s;\n  -webkit-animation-name: hinge;\n  animation-name: hinge;\n}\n\n@-webkit-keyframes jackInTheBox {\n  from {\n    opacity: 0;\n    -webkit-transform: scale(0.1) rotate(30deg);\n    transform: scale(0.1) rotate(30deg);\n    -webkit-transform-origin: center bottom;\n    transform-origin: center bottom;\n  }\n\n  50% {\n    -webkit-transform: rotate(-10deg);\n    transform: rotate(-10deg);\n  }\n\n  70% {\n    -webkit-transform: rotate(3deg);\n    transform: rotate(3deg);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: scale(1);\n    transform: scale(1);\n  }\n}\n\n@keyframes jackInTheBox {\n  from {\n    opacity: 0;\n    -webkit-transform: scale(0.1) rotate(30deg);\n    transform: scale(0.1) rotate(30deg);\n    -webkit-transform-origin: center bottom;\n    transform-origin: center bottom;\n  }\n\n  50% {\n    -webkit-transform: rotate(-10deg);\n    transform: rotate(-10deg);\n  }\n\n  70% {\n    -webkit-transform: rotate(3deg);\n    transform: rotate(3deg);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: scale(1);\n    transform: scale(1);\n  }\n}\n\n.jackInTheBox {\n  -webkit-animation-name: jackInTheBox;\n  animation-name: jackInTheBox;\n}\n\n/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */\n\n@-webkit-keyframes rollIn {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);\n    transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n}\n\n@keyframes rollIn {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);\n    transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);\n  }\n\n  to {\n    opacity: 1;\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n}\n\n.rollIn {\n  -webkit-animation-name: rollIn;\n  animation-name: rollIn;\n}\n\n/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */\n\n@-webkit-keyframes rollOut {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);\n    transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);\n  }\n}\n\n@keyframes rollOut {\n  from {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);\n    transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);\n  }\n}\n\n.rollOut {\n  -webkit-animation-name: rollOut;\n  animation-name: rollOut;\n}\n\n@-webkit-keyframes zoomIn {\n  from {\n    opacity: 0;\n    -webkit-transform: scale3d(0.3, 0.3, 0.3);\n    transform: scale3d(0.3, 0.3, 0.3);\n  }\n\n  50% {\n    opacity: 1;\n  }\n}\n\n@keyframes zoomIn {\n  from {\n    opacity: 0;\n    -webkit-transform: scale3d(0.3, 0.3, 0.3);\n    transform: scale3d(0.3, 0.3, 0.3);\n  }\n\n  50% {\n    opacity: 1;\n  }\n}\n\n.zoomIn {\n  -webkit-animation-name: zoomIn;\n  animation-name: zoomIn;\n}\n\n@-webkit-keyframes zoomInDown {\n  from {\n    opacity: 0;\n    -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0);\n    transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n    animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n  }\n\n  60% {\n    opacity: 1;\n    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);\n    transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n    animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n  }\n}\n\n@keyframes zoomInDown {\n  from {\n    opacity: 0;\n    -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0);\n    transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n    animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n  }\n\n  60% {\n    opacity: 1;\n    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);\n    transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n    animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n  }\n}\n\n.zoomInDown {\n  -webkit-animation-name: zoomInDown;\n  animation-name: zoomInDown;\n}\n\n@-webkit-keyframes zoomInLeft {\n  from {\n    opacity: 0;\n    -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0);\n    transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n    animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n  }\n\n  60% {\n    opacity: 1;\n    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0);\n    transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n    animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n  }\n}\n\n@keyframes zoomInLeft {\n  from {\n    opacity: 0;\n    -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0);\n    transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n    animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n  }\n\n  60% {\n    opacity: 1;\n    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0);\n    transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n    animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n  }\n}\n\n.zoomInLeft {\n  -webkit-animation-name: zoomInLeft;\n  animation-name: zoomInLeft;\n}\n\n@-webkit-keyframes zoomInRight {\n  from {\n    opacity: 0;\n    -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0);\n    transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n    animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n  }\n\n  60% {\n    opacity: 1;\n    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0);\n    transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n    animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n  }\n}\n\n@keyframes zoomInRight {\n  from {\n    opacity: 0;\n    -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0);\n    transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n    animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n  }\n\n  60% {\n    opacity: 1;\n    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0);\n    transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n    animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n  }\n}\n\n.zoomInRight {\n  -webkit-animation-name: zoomInRight;\n  animation-name: zoomInRight;\n}\n\n@-webkit-keyframes zoomInUp {\n  from {\n    opacity: 0;\n    -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0);\n    transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n    animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n  }\n\n  60% {\n    opacity: 1;\n    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);\n    transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n    animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n  }\n}\n\n@keyframes zoomInUp {\n  from {\n    opacity: 0;\n    -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0);\n    transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n    animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n  }\n\n  60% {\n    opacity: 1;\n    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);\n    transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n    animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n  }\n}\n\n.zoomInUp {\n  -webkit-animation-name: zoomInUp;\n  animation-name: zoomInUp;\n}\n\n@-webkit-keyframes zoomOut {\n  from {\n    opacity: 1;\n  }\n\n  50% {\n    opacity: 0;\n    -webkit-transform: scale3d(0.3, 0.3, 0.3);\n    transform: scale3d(0.3, 0.3, 0.3);\n  }\n\n  to {\n    opacity: 0;\n  }\n}\n\n@keyframes zoomOut {\n  from {\n    opacity: 1;\n  }\n\n  50% {\n    opacity: 0;\n    -webkit-transform: scale3d(0.3, 0.3, 0.3);\n    transform: scale3d(0.3, 0.3, 0.3);\n  }\n\n  to {\n    opacity: 0;\n  }\n}\n\n.zoomOut {\n  -webkit-animation-name: zoomOut;\n  animation-name: zoomOut;\n}\n\n@-webkit-keyframes zoomOutDown {\n  40% {\n    opacity: 1;\n    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);\n    transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n    animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0);\n    transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0);\n    -webkit-transform-origin: center bottom;\n    transform-origin: center bottom;\n    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n    animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n  }\n}\n\n@keyframes zoomOutDown {\n  40% {\n    opacity: 1;\n    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);\n    transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n    animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0);\n    transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0);\n    -webkit-transform-origin: center bottom;\n    transform-origin: center bottom;\n    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n    animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n  }\n}\n\n.zoomOutDown {\n  -webkit-animation-name: zoomOutDown;\n  animation-name: zoomOutDown;\n}\n\n@-webkit-keyframes zoomOutLeft {\n  40% {\n    opacity: 1;\n    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0);\n    transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0);\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: scale(0.1) translate3d(-2000px, 0, 0);\n    transform: scale(0.1) translate3d(-2000px, 0, 0);\n    -webkit-transform-origin: left center;\n    transform-origin: left center;\n  }\n}\n\n@keyframes zoomOutLeft {\n  40% {\n    opacity: 1;\n    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0);\n    transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0);\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: scale(0.1) translate3d(-2000px, 0, 0);\n    transform: scale(0.1) translate3d(-2000px, 0, 0);\n    -webkit-transform-origin: left center;\n    transform-origin: left center;\n  }\n}\n\n.zoomOutLeft {\n  -webkit-animation-name: zoomOutLeft;\n  animation-name: zoomOutLeft;\n}\n\n@-webkit-keyframes zoomOutRight {\n  40% {\n    opacity: 1;\n    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0);\n    transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0);\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: scale(0.1) translate3d(2000px, 0, 0);\n    transform: scale(0.1) translate3d(2000px, 0, 0);\n    -webkit-transform-origin: right center;\n    transform-origin: right center;\n  }\n}\n\n@keyframes zoomOutRight {\n  40% {\n    opacity: 1;\n    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0);\n    transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0);\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: scale(0.1) translate3d(2000px, 0, 0);\n    transform: scale(0.1) translate3d(2000px, 0, 0);\n    -webkit-transform-origin: right center;\n    transform-origin: right center;\n  }\n}\n\n.zoomOutRight {\n  -webkit-animation-name: zoomOutRight;\n  animation-name: zoomOutRight;\n}\n\n@-webkit-keyframes zoomOutUp {\n  40% {\n    opacity: 1;\n    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);\n    transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n    animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0);\n    transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0);\n    -webkit-transform-origin: center bottom;\n    transform-origin: center bottom;\n    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n    animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n  }\n}\n\n@keyframes zoomOutUp {\n  40% {\n    opacity: 1;\n    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);\n    transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n    animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n  }\n\n  to {\n    opacity: 0;\n    -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0);\n    transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0);\n    -webkit-transform-origin: center bottom;\n    transform-origin: center bottom;\n    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n    animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n  }\n}\n\n.zoomOutUp {\n  -webkit-animation-name: zoomOutUp;\n  animation-name: zoomOutUp;\n}\n\n@-webkit-keyframes slideInDown {\n  from {\n    -webkit-transform: translate3d(0, -100%, 0);\n    transform: translate3d(0, -100%, 0);\n    visibility: visible;\n  }\n\n  to {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n}\n\n@keyframes slideInDown {\n  from {\n    -webkit-transform: translate3d(0, -100%, 0);\n    transform: translate3d(0, -100%, 0);\n    visibility: visible;\n  }\n\n  to {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n}\n\n.slideInDown {\n  -webkit-animation-name: slideInDown;\n  animation-name: slideInDown;\n}\n\n@-webkit-keyframes slideInLeft {\n  from {\n    -webkit-transform: translate3d(-100%, 0, 0);\n    transform: translate3d(-100%, 0, 0);\n    visibility: visible;\n  }\n\n  to {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n}\n\n@keyframes slideInLeft {\n  from {\n    -webkit-transform: translate3d(-100%, 0, 0);\n    transform: translate3d(-100%, 0, 0);\n    visibility: visible;\n  }\n\n  to {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n}\n\n.slideInLeft {\n  -webkit-animation-name: slideInLeft;\n  animation-name: slideInLeft;\n}\n\n@-webkit-keyframes slideInRight {\n  from {\n    -webkit-transform: translate3d(100%, 0, 0);\n    transform: translate3d(100%, 0, 0);\n    visibility: visible;\n  }\n\n  to {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n}\n\n@keyframes slideInRight {\n  from {\n    -webkit-transform: translate3d(100%, 0, 0);\n    transform: translate3d(100%, 0, 0);\n    visibility: visible;\n  }\n\n  to {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n}\n\n.slideInRight {\n  -webkit-animation-name: slideInRight;\n  animation-name: slideInRight;\n}\n\n@-webkit-keyframes slideInUp {\n  from {\n    -webkit-transform: translate3d(0, 100%, 0);\n    transform: translate3d(0, 100%, 0);\n    visibility: visible;\n  }\n\n  to {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n}\n\n@keyframes slideInUp {\n  from {\n    -webkit-transform: translate3d(0, 100%, 0);\n    transform: translate3d(0, 100%, 0);\n    visibility: visible;\n  }\n\n  to {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n}\n\n.slideInUp {\n  -webkit-animation-name: slideInUp;\n  animation-name: slideInUp;\n}\n\n@-webkit-keyframes slideOutDown {\n  from {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n\n  to {\n    visibility: hidden;\n    -webkit-transform: translate3d(0, 100%, 0);\n    transform: translate3d(0, 100%, 0);\n  }\n}\n\n@keyframes slideOutDown {\n  from {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n\n  to {\n    visibility: hidden;\n    -webkit-transform: translate3d(0, 100%, 0);\n    transform: translate3d(0, 100%, 0);\n  }\n}\n\n.slideOutDown {\n  -webkit-animation-name: slideOutDown;\n  animation-name: slideOutDown;\n}\n\n@-webkit-keyframes slideOutLeft {\n  from {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n\n  to {\n    visibility: hidden;\n    -webkit-transform: translate3d(-100%, 0, 0);\n    transform: translate3d(-100%, 0, 0);\n  }\n}\n\n@keyframes slideOutLeft {\n  from {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n\n  to {\n    visibility: hidden;\n    -webkit-transform: translate3d(-100%, 0, 0);\n    transform: translate3d(-100%, 0, 0);\n  }\n}\n\n.slideOutLeft {\n  -webkit-animation-name: slideOutLeft;\n  animation-name: slideOutLeft;\n}\n\n@-webkit-keyframes slideOutRight {\n  from {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n\n  to {\n    visibility: hidden;\n    -webkit-transform: translate3d(100%, 0, 0);\n    transform: translate3d(100%, 0, 0);\n  }\n}\n\n@keyframes slideOutRight {\n  from {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n\n  to {\n    visibility: hidden;\n    -webkit-transform: translate3d(100%, 0, 0);\n    transform: translate3d(100%, 0, 0);\n  }\n}\n\n.slideOutRight {\n  -webkit-animation-name: slideOutRight;\n  animation-name: slideOutRight;\n}\n\n@-webkit-keyframes slideOutUp {\n  from {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n\n  to {\n    visibility: hidden;\n    -webkit-transform: translate3d(0, -100%, 0);\n    transform: translate3d(0, -100%, 0);\n  }\n}\n\n@keyframes slideOutUp {\n  from {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n\n  to {\n    visibility: hidden;\n    -webkit-transform: translate3d(0, -100%, 0);\n    transform: translate3d(0, -100%, 0);\n  }\n}\n\n.slideOutUp {\n  -webkit-animation-name: slideOutUp;\n  animation-name: slideOutUp;\n}\n"
  },
  {
    "path": "public/user/css/aos.css",
    "content": "[data-aos][data-aos][data-aos-duration=\"50\"],body[data-aos-duration=\"50\"] [data-aos]{transition-duration:50ms}[data-aos][data-aos][data-aos-delay=\"50\"],body[data-aos-delay=\"50\"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay=\"50\"].aos-animate,body[data-aos-delay=\"50\"] [data-aos].aos-animate{transition-delay:50ms}[data-aos][data-aos][data-aos-duration=\"100\"],body[data-aos-duration=\"100\"] [data-aos]{transition-duration:.1s}[data-aos][data-aos][data-aos-delay=\"100\"],body[data-aos-delay=\"100\"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay=\"100\"].aos-animate,body[data-aos-delay=\"100\"] [data-aos].aos-animate{transition-delay:.1s}[data-aos][data-aos][data-aos-duration=\"150\"],body[data-aos-duration=\"150\"] [data-aos]{transition-duration:.15s}[data-aos][data-aos][data-aos-delay=\"150\"],body[data-aos-delay=\"150\"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay=\"150\"].aos-animate,body[data-aos-delay=\"150\"] [data-aos].aos-animate{transition-delay:.15s}[data-aos][data-aos][data-aos-duration=\"200\"],body[data-aos-duration=\"200\"] [data-aos]{transition-duration:.2s}[data-aos][data-aos][data-aos-delay=\"200\"],body[data-aos-delay=\"200\"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay=\"200\"].aos-animate,body[data-aos-delay=\"200\"] [data-aos].aos-animate{transition-delay:.2s}[data-aos][data-aos][data-aos-duration=\"250\"],body[data-aos-duration=\"250\"] [data-aos]{transition-duration:.25s}[data-aos][data-aos][data-aos-delay=\"250\"],body[data-aos-delay=\"250\"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay=\"250\"].aos-animate,body[data-aos-delay=\"250\"] [data-aos].aos-animate{transition-delay:.25s}[data-aos][data-aos][data-aos-duration=\"300\"],body[data-aos-duration=\"300\"] [data-aos]{transition-duration:.3s}[data-aos][data-aos][data-aos-delay=\"300\"],body[data-aos-delay=\"300\"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay=\"300\"].aos-animate,body[data-aos-delay=\"300\"] [data-aos].aos-animate{transition-delay:.3s}[data-aos][data-aos][data-aos-duration=\"350\"],body[data-aos-duration=\"350\"] [data-aos]{transition-duration:.35s}[data-aos][data-aos][data-aos-delay=\"350\"],body[data-aos-delay=\"350\"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay=\"350\"].aos-animate,body[data-aos-delay=\"350\"] [data-aos].aos-animate{transition-delay:.35s}[data-aos][data-aos][data-aos-duration=\"400\"],body[data-aos-duration=\"400\"] [data-aos]{transition-duration:.4s}[data-aos][data-aos][data-aos-delay=\"400\"],body[data-aos-delay=\"400\"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay=\"400\"].aos-animate,body[data-aos-delay=\"400\"] [data-aos].aos-animate{transition-delay:.4s}[data-aos][data-aos][data-aos-duration=\"450\"],body[data-aos-duration=\"450\"] [data-aos]{transition-duration:.45s}[data-aos][data-aos][data-aos-delay=\"450\"],body[data-aos-delay=\"450\"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay=\"450\"].aos-animate,body[data-aos-delay=\"450\"] [data-aos].aos-animate{transition-delay:.45s}[data-aos][data-aos][data-aos-duration=\"500\"],body[data-aos-duration=\"500\"] [data-aos]{transition-duration:.5s}[data-aos][data-aos][data-aos-delay=\"500\"],body[data-aos-delay=\"500\"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay=\"500\"].aos-animate,body[data-aos-delay=\"500\"] [data-aos].aos-animate{transition-delay:.5s}[data-aos][data-aos][data-aos-duration=\"550\"],body[data-aos-duration=\"550\"] [data-aos]{transition-duration:.55s}[data-aos][data-aos][data-aos-delay=\"550\"],body[data-aos-delay=\"550\"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay=\"550\"].aos-animate,body[data-aos-delay=\"550\"] [data-aos].aos-animate{transition-delay:.55s}[data-aos][data-aos][data-aos-duration=\"600\"],body[data-aos-duration=\"600\"] [data-aos]{transition-duration:.6s}[data-aos][data-aos][data-aos-delay=\"600\"],body[data-aos-delay=\"600\"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay=\"600\"].aos-animate,body[data-aos-delay=\"600\"] [data-aos].aos-animate{transition-delay:.6s}[data-aos][data-aos][data-aos-duration=\"650\"],body[data-aos-duration=\"650\"] [data-aos]{transition-duration:.65s}[data-aos][data-aos][data-aos-delay=\"650\"],body[data-aos-delay=\"650\"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay=\"650\"].aos-animate,body[data-aos-delay=\"650\"] [data-aos].aos-animate{transition-delay:.65s}[data-aos][data-aos][data-aos-duration=\"700\"],body[data-aos-duration=\"700\"] [data-aos]{transition-duration:.7s}[data-aos][data-aos][data-aos-delay=\"700\"],body[data-aos-delay=\"700\"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay=\"700\"].aos-animate,body[data-aos-delay=\"700\"] [data-aos].aos-animate{transition-delay:.7s}[data-aos][data-aos][data-aos-duration=\"750\"],body[data-aos-duration=\"750\"] [data-aos]{transition-duration:.75s}[data-aos][data-aos][data-aos-delay=\"750\"],body[data-aos-delay=\"750\"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay=\"750\"].aos-animate,body[data-aos-delay=\"750\"] [data-aos].aos-animate{transition-delay:.75s}[data-aos][data-aos][data-aos-duration=\"800\"],body[data-aos-duration=\"800\"] [data-aos]{transition-duration:.8s}[data-aos][data-aos][data-aos-delay=\"800\"],body[data-aos-delay=\"800\"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay=\"800\"].aos-animate,body[data-aos-delay=\"800\"] [data-aos].aos-animate{transition-delay:.8s}[data-aos][data-aos][data-aos-duration=\"850\"],body[data-aos-duration=\"850\"] [data-aos]{transition-duration:.85s}[data-aos][data-aos][data-aos-delay=\"850\"],body[data-aos-delay=\"850\"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay=\"850\"].aos-animate,body[data-aos-delay=\"850\"] [data-aos].aos-animate{transition-delay:.85s}[data-aos][data-aos][data-aos-duration=\"900\"],body[data-aos-duration=\"900\"] [data-aos]{transition-duration:.9s}[data-aos][data-aos][data-aos-delay=\"900\"],body[data-aos-delay=\"900\"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay=\"900\"].aos-animate,body[data-aos-delay=\"900\"] [data-aos].aos-animate{transition-delay:.9s}[data-aos][data-aos][data-aos-duration=\"950\"],body[data-aos-duration=\"950\"] [data-aos]{transition-duration:.95s}[data-aos][data-aos][data-aos-delay=\"950\"],body[data-aos-delay=\"950\"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay=\"950\"].aos-animate,body[data-aos-delay=\"950\"] [data-aos].aos-animate{transition-delay:.95s}[data-aos][data-aos][data-aos-duration=\"1000\"],body[data-aos-duration=\"1000\"] [data-aos]{transition-duration:1s}[data-aos][data-aos][data-aos-delay=\"1000\"],body[data-aos-delay=\"1000\"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay=\"1000\"].aos-animate,body[data-aos-delay=\"1000\"] [data-aos].aos-animate{transition-delay:1s}[data-aos][data-aos][data-aos-duration=\"1050\"],body[data-aos-duration=\"1050\"] [data-aos]{transition-duration:1.05s}[data-aos][data-aos][data-aos-delay=\"1050\"],body[data-aos-delay=\"1050\"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay=\"1050\"].aos-animate,body[data-aos-delay=\"1050\"] [data-aos].aos-animate{transition-delay:1.05s}[data-aos][data-aos][data-aos-duration=\"1100\"],body[data-aos-duration=\"1100\"] [data-aos]{transition-duration:1.1s}[data-aos][data-aos][data-aos-delay=\"1100\"],body[data-aos-delay=\"1100\"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay=\"1100\"].aos-animate,body[data-aos-delay=\"1100\"] [data-aos].aos-animate{transition-delay:1.1s}[data-aos][data-aos][data-aos-duration=\"1150\"],body[data-aos-duration=\"1150\"] [data-aos]{transition-duration:1.15s}[data-aos][data-aos][data-aos-delay=\"1150\"],body[data-aos-delay=\"1150\"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay=\"1150\"].aos-animate,body[data-aos-delay=\"1150\"] [data-aos].aos-animate{transition-delay:1.15s}[data-aos][data-aos][data-aos-duration=\"1200\"],body[data-aos-duration=\"1200\"] [data-aos]{transition-duration:1.2s}[data-aos][data-aos][data-aos-delay=\"1200\"],body[data-aos-delay=\"1200\"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay=\"1200\"].aos-animate,body[data-aos-delay=\"1200\"] [data-aos].aos-animate{transition-delay:1.2s}[data-aos][data-aos][data-aos-duration=\"1250\"],body[data-aos-duration=\"1250\"] [data-aos]{transition-duration:1.25s}[data-aos][data-aos][data-aos-delay=\"1250\"],body[data-aos-delay=\"1250\"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay=\"1250\"].aos-animate,body[data-aos-delay=\"1250\"] [data-aos].aos-animate{transition-delay:1.25s}[data-aos][data-aos][data-aos-duration=\"1300\"],body[data-aos-duration=\"1300\"] [data-aos]{transition-duration:1.3s}[data-aos][data-aos][data-aos-delay=\"1300\"],body[data-aos-delay=\"1300\"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay=\"1300\"].aos-animate,body[data-aos-delay=\"1300\"] [data-aos].aos-animate{transition-delay:1.3s}[data-aos][data-aos][data-aos-duration=\"1350\"],body[data-aos-duration=\"1350\"] [data-aos]{transition-duration:1.35s}[data-aos][data-aos][data-aos-delay=\"1350\"],body[data-aos-delay=\"1350\"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay=\"1350\"].aos-animate,body[data-aos-delay=\"1350\"] [data-aos].aos-animate{transition-delay:1.35s}[data-aos][data-aos][data-aos-duration=\"1400\"],body[data-aos-duration=\"1400\"] [data-aos]{transition-duration:1.4s}[data-aos][data-aos][data-aos-delay=\"1400\"],body[data-aos-delay=\"1400\"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay=\"1400\"].aos-animate,body[data-aos-delay=\"1400\"] [data-aos].aos-animate{transition-delay:1.4s}[data-aos][data-aos][data-aos-duration=\"1450\"],body[data-aos-duration=\"1450\"] [data-aos]{transition-duration:1.45s}[data-aos][data-aos][data-aos-delay=\"1450\"],body[data-aos-delay=\"1450\"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay=\"1450\"].aos-animate,body[data-aos-delay=\"1450\"] [data-aos].aos-animate{transition-delay:1.45s}[data-aos][data-aos][data-aos-duration=\"1500\"],body[data-aos-duration=\"1500\"] [data-aos]{transition-duration:1.5s}[data-aos][data-aos][data-aos-delay=\"1500\"],body[data-aos-delay=\"1500\"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay=\"1500\"].aos-animate,body[data-aos-delay=\"1500\"] [data-aos].aos-animate{transition-delay:1.5s}[data-aos][data-aos][data-aos-duration=\"1550\"],body[data-aos-duration=\"1550\"] [data-aos]{transition-duration:1.55s}[data-aos][data-aos][data-aos-delay=\"1550\"],body[data-aos-delay=\"1550\"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay=\"1550\"].aos-animate,body[data-aos-delay=\"1550\"] [data-aos].aos-animate{transition-delay:1.55s}[data-aos][data-aos][data-aos-duration=\"1600\"],body[data-aos-duration=\"1600\"] [data-aos]{transition-duration:1.6s}[data-aos][data-aos][data-aos-delay=\"1600\"],body[data-aos-delay=\"1600\"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay=\"1600\"].aos-animate,body[data-aos-delay=\"1600\"] [data-aos].aos-animate{transition-delay:1.6s}[data-aos][data-aos][data-aos-duration=\"1650\"],body[data-aos-duration=\"1650\"] [data-aos]{transition-duration:1.65s}[data-aos][data-aos][data-aos-delay=\"1650\"],body[data-aos-delay=\"1650\"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay=\"1650\"].aos-animate,body[data-aos-delay=\"1650\"] [data-aos].aos-animate{transition-delay:1.65s}[data-aos][data-aos][data-aos-duration=\"1700\"],body[data-aos-duration=\"1700\"] [data-aos]{transition-duration:1.7s}[data-aos][data-aos][data-aos-delay=\"1700\"],body[data-aos-delay=\"1700\"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay=\"1700\"].aos-animate,body[data-aos-delay=\"1700\"] [data-aos].aos-animate{transition-delay:1.7s}[data-aos][data-aos][data-aos-duration=\"1750\"],body[data-aos-duration=\"1750\"] [data-aos]{transition-duration:1.75s}[data-aos][data-aos][data-aos-delay=\"1750\"],body[data-aos-delay=\"1750\"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay=\"1750\"].aos-animate,body[data-aos-delay=\"1750\"] [data-aos].aos-animate{transition-delay:1.75s}[data-aos][data-aos][data-aos-duration=\"1800\"],body[data-aos-duration=\"1800\"] [data-aos]{transition-duration:1.8s}[data-aos][data-aos][data-aos-delay=\"1800\"],body[data-aos-delay=\"1800\"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay=\"1800\"].aos-animate,body[data-aos-delay=\"1800\"] [data-aos].aos-animate{transition-delay:1.8s}[data-aos][data-aos][data-aos-duration=\"1850\"],body[data-aos-duration=\"1850\"] [data-aos]{transition-duration:1.85s}[data-aos][data-aos][data-aos-delay=\"1850\"],body[data-aos-delay=\"1850\"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay=\"1850\"].aos-animate,body[data-aos-delay=\"1850\"] [data-aos].aos-animate{transition-delay:1.85s}[data-aos][data-aos][data-aos-duration=\"1900\"],body[data-aos-duration=\"1900\"] [data-aos]{transition-duration:1.9s}[data-aos][data-aos][data-aos-delay=\"1900\"],body[data-aos-delay=\"1900\"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay=\"1900\"].aos-animate,body[data-aos-delay=\"1900\"] [data-aos].aos-animate{transition-delay:1.9s}[data-aos][data-aos][data-aos-duration=\"1950\"],body[data-aos-duration=\"1950\"] [data-aos]{transition-duration:1.95s}[data-aos][data-aos][data-aos-delay=\"1950\"],body[data-aos-delay=\"1950\"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay=\"1950\"].aos-animate,body[data-aos-delay=\"1950\"] [data-aos].aos-animate{transition-delay:1.95s}[data-aos][data-aos][data-aos-duration=\"2000\"],body[data-aos-duration=\"2000\"] [data-aos]{transition-duration:2s}[data-aos][data-aos][data-aos-delay=\"2000\"],body[data-aos-delay=\"2000\"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay=\"2000\"].aos-animate,body[data-aos-delay=\"2000\"] [data-aos].aos-animate{transition-delay:2s}[data-aos][data-aos][data-aos-duration=\"2050\"],body[data-aos-duration=\"2050\"] [data-aos]{transition-duration:2.05s}[data-aos][data-aos][data-aos-delay=\"2050\"],body[data-aos-delay=\"2050\"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay=\"2050\"].aos-animate,body[data-aos-delay=\"2050\"] [data-aos].aos-animate{transition-delay:2.05s}[data-aos][data-aos][data-aos-duration=\"2100\"],body[data-aos-duration=\"2100\"] [data-aos]{transition-duration:2.1s}[data-aos][data-aos][data-aos-delay=\"2100\"],body[data-aos-delay=\"2100\"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay=\"2100\"].aos-animate,body[data-aos-delay=\"2100\"] [data-aos].aos-animate{transition-delay:2.1s}[data-aos][data-aos][data-aos-duration=\"2150\"],body[data-aos-duration=\"2150\"] [data-aos]{transition-duration:2.15s}[data-aos][data-aos][data-aos-delay=\"2150\"],body[data-aos-delay=\"2150\"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay=\"2150\"].aos-animate,body[data-aos-delay=\"2150\"] [data-aos].aos-animate{transition-delay:2.15s}[data-aos][data-aos][data-aos-duration=\"2200\"],body[data-aos-duration=\"2200\"] [data-aos]{transition-duration:2.2s}[data-aos][data-aos][data-aos-delay=\"2200\"],body[data-aos-delay=\"2200\"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay=\"2200\"].aos-animate,body[data-aos-delay=\"2200\"] [data-aos].aos-animate{transition-delay:2.2s}[data-aos][data-aos][data-aos-duration=\"2250\"],body[data-aos-duration=\"2250\"] [data-aos]{transition-duration:2.25s}[data-aos][data-aos][data-aos-delay=\"2250\"],body[data-aos-delay=\"2250\"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay=\"2250\"].aos-animate,body[data-aos-delay=\"2250\"] [data-aos].aos-animate{transition-delay:2.25s}[data-aos][data-aos][data-aos-duration=\"2300\"],body[data-aos-duration=\"2300\"] [data-aos]{transition-duration:2.3s}[data-aos][data-aos][data-aos-delay=\"2300\"],body[data-aos-delay=\"2300\"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay=\"2300\"].aos-animate,body[data-aos-delay=\"2300\"] [data-aos].aos-animate{transition-delay:2.3s}[data-aos][data-aos][data-aos-duration=\"2350\"],body[data-aos-duration=\"2350\"] [data-aos]{transition-duration:2.35s}[data-aos][data-aos][data-aos-delay=\"2350\"],body[data-aos-delay=\"2350\"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay=\"2350\"].aos-animate,body[data-aos-delay=\"2350\"] [data-aos].aos-animate{transition-delay:2.35s}[data-aos][data-aos][data-aos-duration=\"2400\"],body[data-aos-duration=\"2400\"] [data-aos]{transition-duration:2.4s}[data-aos][data-aos][data-aos-delay=\"2400\"],body[data-aos-delay=\"2400\"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay=\"2400\"].aos-animate,body[data-aos-delay=\"2400\"] [data-aos].aos-animate{transition-delay:2.4s}[data-aos][data-aos][data-aos-duration=\"2450\"],body[data-aos-duration=\"2450\"] [data-aos]{transition-duration:2.45s}[data-aos][data-aos][data-aos-delay=\"2450\"],body[data-aos-delay=\"2450\"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay=\"2450\"].aos-animate,body[data-aos-delay=\"2450\"] [data-aos].aos-animate{transition-delay:2.45s}[data-aos][data-aos][data-aos-duration=\"2500\"],body[data-aos-duration=\"2500\"] [data-aos]{transition-duration:2.5s}[data-aos][data-aos][data-aos-delay=\"2500\"],body[data-aos-delay=\"2500\"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay=\"2500\"].aos-animate,body[data-aos-delay=\"2500\"] [data-aos].aos-animate{transition-delay:2.5s}[data-aos][data-aos][data-aos-duration=\"2550\"],body[data-aos-duration=\"2550\"] [data-aos]{transition-duration:2.55s}[data-aos][data-aos][data-aos-delay=\"2550\"],body[data-aos-delay=\"2550\"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay=\"2550\"].aos-animate,body[data-aos-delay=\"2550\"] [data-aos].aos-animate{transition-delay:2.55s}[data-aos][data-aos][data-aos-duration=\"2600\"],body[data-aos-duration=\"2600\"] [data-aos]{transition-duration:2.6s}[data-aos][data-aos][data-aos-delay=\"2600\"],body[data-aos-delay=\"2600\"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay=\"2600\"].aos-animate,body[data-aos-delay=\"2600\"] [data-aos].aos-animate{transition-delay:2.6s}[data-aos][data-aos][data-aos-duration=\"2650\"],body[data-aos-duration=\"2650\"] [data-aos]{transition-duration:2.65s}[data-aos][data-aos][data-aos-delay=\"2650\"],body[data-aos-delay=\"2650\"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay=\"2650\"].aos-animate,body[data-aos-delay=\"2650\"] [data-aos].aos-animate{transition-delay:2.65s}[data-aos][data-aos][data-aos-duration=\"2700\"],body[data-aos-duration=\"2700\"] [data-aos]{transition-duration:2.7s}[data-aos][data-aos][data-aos-delay=\"2700\"],body[data-aos-delay=\"2700\"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay=\"2700\"].aos-animate,body[data-aos-delay=\"2700\"] [data-aos].aos-animate{transition-delay:2.7s}[data-aos][data-aos][data-aos-duration=\"2750\"],body[data-aos-duration=\"2750\"] [data-aos]{transition-duration:2.75s}[data-aos][data-aos][data-aos-delay=\"2750\"],body[data-aos-delay=\"2750\"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay=\"2750\"].aos-animate,body[data-aos-delay=\"2750\"] [data-aos].aos-animate{transition-delay:2.75s}[data-aos][data-aos][data-aos-duration=\"2800\"],body[data-aos-duration=\"2800\"] [data-aos]{transition-duration:2.8s}[data-aos][data-aos][data-aos-delay=\"2800\"],body[data-aos-delay=\"2800\"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay=\"2800\"].aos-animate,body[data-aos-delay=\"2800\"] [data-aos].aos-animate{transition-delay:2.8s}[data-aos][data-aos][data-aos-duration=\"2850\"],body[data-aos-duration=\"2850\"] [data-aos]{transition-duration:2.85s}[data-aos][data-aos][data-aos-delay=\"2850\"],body[data-aos-delay=\"2850\"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay=\"2850\"].aos-animate,body[data-aos-delay=\"2850\"] [data-aos].aos-animate{transition-delay:2.85s}[data-aos][data-aos][data-aos-duration=\"2900\"],body[data-aos-duration=\"2900\"] [data-aos]{transition-duration:2.9s}[data-aos][data-aos][data-aos-delay=\"2900\"],body[data-aos-delay=\"2900\"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay=\"2900\"].aos-animate,body[data-aos-delay=\"2900\"] [data-aos].aos-animate{transition-delay:2.9s}[data-aos][data-aos][data-aos-duration=\"2950\"],body[data-aos-duration=\"2950\"] [data-aos]{transition-duration:2.95s}[data-aos][data-aos][data-aos-delay=\"2950\"],body[data-aos-delay=\"2950\"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay=\"2950\"].aos-animate,body[data-aos-delay=\"2950\"] [data-aos].aos-animate{transition-delay:2.95s}[data-aos][data-aos][data-aos-duration=\"3000\"],body[data-aos-duration=\"3000\"] [data-aos]{transition-duration:3s}[data-aos][data-aos][data-aos-delay=\"3000\"],body[data-aos-delay=\"3000\"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay=\"3000\"].aos-animate,body[data-aos-delay=\"3000\"] [data-aos].aos-animate{transition-delay:3s}[data-aos][data-aos][data-aos-easing=linear],body[data-aos-easing=linear] [data-aos]{transition-timing-function:cubic-bezier(.25,.25,.75,.75)}[data-aos][data-aos][data-aos-easing=ease],body[data-aos-easing=ease] [data-aos]{transition-timing-function:ease}[data-aos][data-aos][data-aos-easing=ease-in],body[data-aos-easing=ease-in] [data-aos]{transition-timing-function:ease-in}[data-aos][data-aos][data-aos-easing=ease-out],body[data-aos-easing=ease-out] [data-aos]{transition-timing-function:ease-out}[data-aos][data-aos][data-aos-easing=ease-in-out],body[data-aos-easing=ease-in-out] [data-aos]{transition-timing-function:ease-in-out}[data-aos][data-aos][data-aos-easing=ease-in-back],body[data-aos-easing=ease-in-back] [data-aos]{transition-timing-function:cubic-bezier(.6,-.28,.735,.045)}[data-aos][data-aos][data-aos-easing=ease-out-back],body[data-aos-easing=ease-out-back] [data-aos]{transition-timing-function:cubic-bezier(.175,.885,.32,1.275)}[data-aos][data-aos][data-aos-easing=ease-in-out-back],body[data-aos-easing=ease-in-out-back] [data-aos]{transition-timing-function:cubic-bezier(.68,-.55,.265,1.55)}[data-aos][data-aos][data-aos-easing=ease-in-sine],body[data-aos-easing=ease-in-sine] [data-aos]{transition-timing-function:cubic-bezier(.47,0,.745,.715)}[data-aos][data-aos][data-aos-easing=ease-out-sine],body[data-aos-easing=ease-out-sine] [data-aos]{transition-timing-function:cubic-bezier(.39,.575,.565,1)}[data-aos][data-aos][data-aos-easing=ease-in-out-sine],body[data-aos-easing=ease-in-out-sine] [data-aos]{transition-timing-function:cubic-bezier(.445,.05,.55,.95)}[data-aos][data-aos][data-aos-easing=ease-in-quad],body[data-aos-easing=ease-in-quad] [data-aos]{transition-timing-function:cubic-bezier(.55,.085,.68,.53)}[data-aos][data-aos][data-aos-easing=ease-out-quad],body[data-aos-easing=ease-out-quad] [data-aos]{transition-timing-function:cubic-bezier(.25,.46,.45,.94)}[data-aos][data-aos][data-aos-easing=ease-in-out-quad],body[data-aos-easing=ease-in-out-quad] [data-aos]{transition-timing-function:cubic-bezier(.455,.03,.515,.955)}[data-aos][data-aos][data-aos-easing=ease-in-cubic],body[data-aos-easing=ease-in-cubic] [data-aos]{transition-timing-function:cubic-bezier(.55,.085,.68,.53)}[data-aos][data-aos][data-aos-easing=ease-out-cubic],body[data-aos-easing=ease-out-cubic] [data-aos]{transition-timing-function:cubic-bezier(.25,.46,.45,.94)}[data-aos][data-aos][data-aos-easing=ease-in-out-cubic],body[data-aos-easing=ease-in-out-cubic] [data-aos]{transition-timing-function:cubic-bezier(.455,.03,.515,.955)}[data-aos][data-aos][data-aos-easing=ease-in-quart],body[data-aos-easing=ease-in-quart] [data-aos]{transition-timing-function:cubic-bezier(.55,.085,.68,.53)}[data-aos][data-aos][data-aos-easing=ease-out-quart],body[data-aos-easing=ease-out-quart] [data-aos]{transition-timing-function:cubic-bezier(.25,.46,.45,.94)}[data-aos][data-aos][data-aos-easing=ease-in-out-quart],body[data-aos-easing=ease-in-out-quart] [data-aos]{transition-timing-function:cubic-bezier(.455,.03,.515,.955)}[data-aos^=fade][data-aos^=fade]{opacity:0;transition-property:opacity,transform}[data-aos^=fade][data-aos^=fade].aos-animate{opacity:1;transform:translate(0)}[data-aos=fade-up]{transform:translateY(100px)}[data-aos=fade-down]{transform:translateY(-100px)}[data-aos=fade-right]{transform:translate(-100px)}[data-aos=fade-left]{transform:translate(100px)}[data-aos=fade-up-right]{transform:translate(-100px,100px)}[data-aos=fade-up-left]{transform:translate(100px,100px)}[data-aos=fade-down-right]{transform:translate(-100px,-100px)}[data-aos=fade-down-left]{transform:translate(100px,-100px)}[data-aos^=zoom][data-aos^=zoom]{opacity:0;transition-property:opacity,transform}[data-aos^=zoom][data-aos^=zoom].aos-animate{opacity:1;transform:translate(0) scale(1)}[data-aos=zoom-in]{transform:scale(.6)}[data-aos=zoom-in-up]{transform:translateY(100px) scale(.6)}[data-aos=zoom-in-down]{transform:translateY(-100px) scale(.6)}[data-aos=zoom-in-right]{transform:translate(-100px) scale(.6)}[data-aos=zoom-in-left]{transform:translate(100px) scale(.6)}[data-aos=zoom-out]{transform:scale(1.2)}[data-aos=zoom-out-up]{transform:translateY(100px) scale(1.2)}[data-aos=zoom-out-down]{transform:translateY(-100px) scale(1.2)}[data-aos=zoom-out-right]{transform:translate(-100px) scale(1.2)}[data-aos=zoom-out-left]{transform:translate(100px) scale(1.2)}[data-aos^=slide][data-aos^=slide]{transition-property:transform}[data-aos^=slide][data-aos^=slide].aos-animate{transform:translate(0)}[data-aos=slide-up]{transform:translateY(100%)}[data-aos=slide-down]{transform:translateY(-100%)}[data-aos=slide-right]{transform:translateX(-100%)}[data-aos=slide-left]{transform:translateX(100%)}[data-aos^=flip][data-aos^=flip]{backface-visibility:hidden;transition-property:transform}[data-aos=flip-left]{transform:perspective(2500px) rotateY(-100deg)}[data-aos=flip-left].aos-animate{transform:perspective(2500px) rotateY(0)}[data-aos=flip-right]{transform:perspective(2500px) rotateY(100deg)}[data-aos=flip-right].aos-animate{transform:perspective(2500px) rotateY(0)}[data-aos=flip-up]{transform:perspective(2500px) rotateX(-100deg)}[data-aos=flip-up].aos-animate{transform:perspective(2500px) rotateX(0)}[data-aos=flip-down]{transform:perspective(2500px) rotateX(100deg)}[data-aos=flip-down].aos-animate{transform:perspective(2500px) rotateX(0)}\n/*# sourceMappingURL=aos.css.map*/"
  },
  {
    "path": "public/user/css/bootstrap/bootstrap-grid.css",
    "content": "/*!\n * Bootstrap Grid v4.3.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 The Bootstrap Authors\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\nhtml {\n  -webkit-box-sizing: border-box;\n  box-sizing: border-box;\n  -ms-overflow-style: scrollbar; }\n\n*,\n*::before,\n*::after {\n  -webkit-box-sizing: inherit;\n  box-sizing: inherit; }\n\n.container {\n  width: 100%;\n  padding-right: 15px;\n  padding-left: 15px;\n  margin-right: auto;\n  margin-left: auto; }\n  @media (min-width: 576px) {\n    .container {\n      max-width: 540px; } }\n  @media (min-width: 768px) {\n    .container {\n      max-width: 720px; } }\n  @media (min-width: 992px) {\n    .container {\n      max-width: 960px; } }\n  @media (min-width: 1200px) {\n    .container {\n      max-width: 1140px; } }\n\n.container-fluid {\n  width: 100%;\n  padding-right: 15px;\n  padding-left: 15px;\n  margin-right: auto;\n  margin-left: auto; }\n\n.row {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-wrap: wrap;\n  flex-wrap: wrap;\n  margin-right: -15px;\n  margin-left: -15px; }\n\n.no-gutters {\n  margin-right: 0;\n  margin-left: 0; }\n  .no-gutters > .col,\n  .no-gutters > [class*=\"col-\"] {\n    padding-right: 0;\n    padding-left: 0; }\n\n.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,\n.col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm,\n.col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md,\n.col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg,\n.col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl,\n.col-xl-auto {\n  position: relative;\n  width: 100%;\n  min-height: 1px;\n  padding-right: 15px;\n  padding-left: 15px; }\n\n.col {\n  -ms-flex-preferred-size: 0;\n  flex-basis: 0;\n  -webkit-box-flex: 1;\n  -ms-flex-positive: 1;\n  flex-grow: 1;\n  max-width: 100%; }\n\n.col-auto {\n  -webkit-box-flex: 0;\n  -ms-flex: 0 0 auto;\n  flex: 0 0 auto;\n  width: auto;\n  max-width: none; }\n\n.col-1 {\n  -webkit-box-flex: 0;\n  -ms-flex: 0 0 8.33333%;\n  flex: 0 0 8.33333%;\n  max-width: 8.33333%; }\n\n.col-2 {\n  -webkit-box-flex: 0;\n  -ms-flex: 0 0 16.66667%;\n  flex: 0 0 16.66667%;\n  max-width: 16.66667%; }\n\n.col-3 {\n  -webkit-box-flex: 0;\n  -ms-flex: 0 0 25%;\n  flex: 0 0 25%;\n  max-width: 25%; }\n\n.col-4 {\n  -webkit-box-flex: 0;\n  -ms-flex: 0 0 33.33333%;\n  flex: 0 0 33.33333%;\n  max-width: 33.33333%; }\n\n.col-5 {\n  -webkit-box-flex: 0;\n  -ms-flex: 0 0 41.66667%;\n  flex: 0 0 41.66667%;\n  max-width: 41.66667%; }\n\n.col-6 {\n  -webkit-box-flex: 0;\n  -ms-flex: 0 0 50%;\n  flex: 0 0 50%;\n  max-width: 50%; }\n\n.col-7 {\n  -webkit-box-flex: 0;\n  -ms-flex: 0 0 58.33333%;\n  flex: 0 0 58.33333%;\n  max-width: 58.33333%; }\n\n.col-8 {\n  -webkit-box-flex: 0;\n  -ms-flex: 0 0 66.66667%;\n  flex: 0 0 66.66667%;\n  max-width: 66.66667%; }\n\n.col-9 {\n  -webkit-box-flex: 0;\n  -ms-flex: 0 0 75%;\n  flex: 0 0 75%;\n  max-width: 75%; }\n\n.col-10 {\n  -webkit-box-flex: 0;\n  -ms-flex: 0 0 83.33333%;\n  flex: 0 0 83.33333%;\n  max-width: 83.33333%; }\n\n.col-11 {\n  -webkit-box-flex: 0;\n  -ms-flex: 0 0 91.66667%;\n  flex: 0 0 91.66667%;\n  max-width: 91.66667%; }\n\n.col-12 {\n  -webkit-box-flex: 0;\n  -ms-flex: 0 0 100%;\n  flex: 0 0 100%;\n  max-width: 100%; }\n\n.order-first {\n  -webkit-box-ordinal-group: 0;\n  -ms-flex-order: -1;\n  order: -1; }\n\n.order-last {\n  -webkit-box-ordinal-group: 14;\n  -ms-flex-order: 13;\n  order: 13; }\n\n.order-0 {\n  -webkit-box-ordinal-group: 1;\n  -ms-flex-order: 0;\n  order: 0; }\n\n.order-1 {\n  -webkit-box-ordinal-group: 2;\n  -ms-flex-order: 1;\n  order: 1; }\n\n.order-2 {\n  -webkit-box-ordinal-group: 3;\n  -ms-flex-order: 2;\n  order: 2; }\n\n.order-3 {\n  -webkit-box-ordinal-group: 4;\n  -ms-flex-order: 3;\n  order: 3; }\n\n.order-4 {\n  -webkit-box-ordinal-group: 5;\n  -ms-flex-order: 4;\n  order: 4; }\n\n.order-5 {\n  -webkit-box-ordinal-group: 6;\n  -ms-flex-order: 5;\n  order: 5; }\n\n.order-6 {\n  -webkit-box-ordinal-group: 7;\n  -ms-flex-order: 6;\n  order: 6; }\n\n.order-7 {\n  -webkit-box-ordinal-group: 8;\n  -ms-flex-order: 7;\n  order: 7; }\n\n.order-8 {\n  -webkit-box-ordinal-group: 9;\n  -ms-flex-order: 8;\n  order: 8; }\n\n.order-9 {\n  -webkit-box-ordinal-group: 10;\n  -ms-flex-order: 9;\n  order: 9; }\n\n.order-10 {\n  -webkit-box-ordinal-group: 11;\n  -ms-flex-order: 10;\n  order: 10; }\n\n.order-11 {\n  -webkit-box-ordinal-group: 12;\n  -ms-flex-order: 11;\n  order: 11; }\n\n.order-12 {\n  -webkit-box-ordinal-group: 13;\n  -ms-flex-order: 12;\n  order: 12; }\n\n.offset-1 {\n  margin-left: 8.33333%; }\n\n.offset-2 {\n  margin-left: 16.66667%; }\n\n.offset-3 {\n  margin-left: 25%; }\n\n.offset-4 {\n  margin-left: 33.33333%; }\n\n.offset-5 {\n  margin-left: 41.66667%; }\n\n.offset-6 {\n  margin-left: 50%; }\n\n.offset-7 {\n  margin-left: 58.33333%; }\n\n.offset-8 {\n  margin-left: 66.66667%; }\n\n.offset-9 {\n  margin-left: 75%; }\n\n.offset-10 {\n  margin-left: 83.33333%; }\n\n.offset-11 {\n  margin-left: 91.66667%; }\n\n@media (min-width: 576px) {\n  .col-sm {\n    -ms-flex-preferred-size: 0;\n    flex-basis: 0;\n    -webkit-box-flex: 1;\n    -ms-flex-positive: 1;\n    flex-grow: 1;\n    max-width: 100%; }\n  .col-sm-auto {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 auto;\n    flex: 0 0 auto;\n    width: auto;\n    max-width: none; }\n  .col-sm-1 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 8.33333%;\n    flex: 0 0 8.33333%;\n    max-width: 8.33333%; }\n  .col-sm-2 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 16.66667%;\n    flex: 0 0 16.66667%;\n    max-width: 16.66667%; }\n  .col-sm-3 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 25%;\n    flex: 0 0 25%;\n    max-width: 25%; }\n  .col-sm-4 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 33.33333%;\n    flex: 0 0 33.33333%;\n    max-width: 33.33333%; }\n  .col-sm-5 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 41.66667%;\n    flex: 0 0 41.66667%;\n    max-width: 41.66667%; }\n  .col-sm-6 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 50%;\n    flex: 0 0 50%;\n    max-width: 50%; }\n  .col-sm-7 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 58.33333%;\n    flex: 0 0 58.33333%;\n    max-width: 58.33333%; }\n  .col-sm-8 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 66.66667%;\n    flex: 0 0 66.66667%;\n    max-width: 66.66667%; }\n  .col-sm-9 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 75%;\n    flex: 0 0 75%;\n    max-width: 75%; }\n  .col-sm-10 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 83.33333%;\n    flex: 0 0 83.33333%;\n    max-width: 83.33333%; }\n  .col-sm-11 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 91.66667%;\n    flex: 0 0 91.66667%;\n    max-width: 91.66667%; }\n  .col-sm-12 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 100%;\n    flex: 0 0 100%;\n    max-width: 100%; }\n  .order-sm-first {\n    -webkit-box-ordinal-group: 0;\n    -ms-flex-order: -1;\n    order: -1; }\n  .order-sm-last {\n    -webkit-box-ordinal-group: 14;\n    -ms-flex-order: 13;\n    order: 13; }\n  .order-sm-0 {\n    -webkit-box-ordinal-group: 1;\n    -ms-flex-order: 0;\n    order: 0; }\n  .order-sm-1 {\n    -webkit-box-ordinal-group: 2;\n    -ms-flex-order: 1;\n    order: 1; }\n  .order-sm-2 {\n    -webkit-box-ordinal-group: 3;\n    -ms-flex-order: 2;\n    order: 2; }\n  .order-sm-3 {\n    -webkit-box-ordinal-group: 4;\n    -ms-flex-order: 3;\n    order: 3; }\n  .order-sm-4 {\n    -webkit-box-ordinal-group: 5;\n    -ms-flex-order: 4;\n    order: 4; }\n  .order-sm-5 {\n    -webkit-box-ordinal-group: 6;\n    -ms-flex-order: 5;\n    order: 5; }\n  .order-sm-6 {\n    -webkit-box-ordinal-group: 7;\n    -ms-flex-order: 6;\n    order: 6; }\n  .order-sm-7 {\n    -webkit-box-ordinal-group: 8;\n    -ms-flex-order: 7;\n    order: 7; }\n  .order-sm-8 {\n    -webkit-box-ordinal-group: 9;\n    -ms-flex-order: 8;\n    order: 8; }\n  .order-sm-9 {\n    -webkit-box-ordinal-group: 10;\n    -ms-flex-order: 9;\n    order: 9; }\n  .order-sm-10 {\n    -webkit-box-ordinal-group: 11;\n    -ms-flex-order: 10;\n    order: 10; }\n  .order-sm-11 {\n    -webkit-box-ordinal-group: 12;\n    -ms-flex-order: 11;\n    order: 11; }\n  .order-sm-12 {\n    -webkit-box-ordinal-group: 13;\n    -ms-flex-order: 12;\n    order: 12; }\n  .offset-sm-0 {\n    margin-left: 0; }\n  .offset-sm-1 {\n    margin-left: 8.33333%; }\n  .offset-sm-2 {\n    margin-left: 16.66667%; }\n  .offset-sm-3 {\n    margin-left: 25%; }\n  .offset-sm-4 {\n    margin-left: 33.33333%; }\n  .offset-sm-5 {\n    margin-left: 41.66667%; }\n  .offset-sm-6 {\n    margin-left: 50%; }\n  .offset-sm-7 {\n    margin-left: 58.33333%; }\n  .offset-sm-8 {\n    margin-left: 66.66667%; }\n  .offset-sm-9 {\n    margin-left: 75%; }\n  .offset-sm-10 {\n    margin-left: 83.33333%; }\n  .offset-sm-11 {\n    margin-left: 91.66667%; } }\n\n@media (min-width: 768px) {\n  .col-md {\n    -ms-flex-preferred-size: 0;\n    flex-basis: 0;\n    -webkit-box-flex: 1;\n    -ms-flex-positive: 1;\n    flex-grow: 1;\n    max-width: 100%; }\n  .col-md-auto {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 auto;\n    flex: 0 0 auto;\n    width: auto;\n    max-width: none; }\n  .col-md-1 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 8.33333%;\n    flex: 0 0 8.33333%;\n    max-width: 8.33333%; }\n  .col-md-2 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 16.66667%;\n    flex: 0 0 16.66667%;\n    max-width: 16.66667%; }\n  .col-md-3 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 25%;\n    flex: 0 0 25%;\n    max-width: 25%; }\n  .col-md-4 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 33.33333%;\n    flex: 0 0 33.33333%;\n    max-width: 33.33333%; }\n  .col-md-5 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 41.66667%;\n    flex: 0 0 41.66667%;\n    max-width: 41.66667%; }\n  .col-md-6 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 50%;\n    flex: 0 0 50%;\n    max-width: 50%; }\n  .col-md-7 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 58.33333%;\n    flex: 0 0 58.33333%;\n    max-width: 58.33333%; }\n  .col-md-8 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 66.66667%;\n    flex: 0 0 66.66667%;\n    max-width: 66.66667%; }\n  .col-md-9 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 75%;\n    flex: 0 0 75%;\n    max-width: 75%; }\n  .col-md-10 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 83.33333%;\n    flex: 0 0 83.33333%;\n    max-width: 83.33333%; }\n  .col-md-11 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 91.66667%;\n    flex: 0 0 91.66667%;\n    max-width: 91.66667%; }\n  .col-md-12 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 100%;\n    flex: 0 0 100%;\n    max-width: 100%; }\n  .order-md-first {\n    -webkit-box-ordinal-group: 0;\n    -ms-flex-order: -1;\n    order: -1; }\n  .order-md-last {\n    -webkit-box-ordinal-group: 14;\n    -ms-flex-order: 13;\n    order: 13; }\n  .order-md-0 {\n    -webkit-box-ordinal-group: 1;\n    -ms-flex-order: 0;\n    order: 0; }\n  .order-md-1 {\n    -webkit-box-ordinal-group: 2;\n    -ms-flex-order: 1;\n    order: 1; }\n  .order-md-2 {\n    -webkit-box-ordinal-group: 3;\n    -ms-flex-order: 2;\n    order: 2; }\n  .order-md-3 {\n    -webkit-box-ordinal-group: 4;\n    -ms-flex-order: 3;\n    order: 3; }\n  .order-md-4 {\n    -webkit-box-ordinal-group: 5;\n    -ms-flex-order: 4;\n    order: 4; }\n  .order-md-5 {\n    -webkit-box-ordinal-group: 6;\n    -ms-flex-order: 5;\n    order: 5; }\n  .order-md-6 {\n    -webkit-box-ordinal-group: 7;\n    -ms-flex-order: 6;\n    order: 6; }\n  .order-md-7 {\n    -webkit-box-ordinal-group: 8;\n    -ms-flex-order: 7;\n    order: 7; }\n  .order-md-8 {\n    -webkit-box-ordinal-group: 9;\n    -ms-flex-order: 8;\n    order: 8; }\n  .order-md-9 {\n    -webkit-box-ordinal-group: 10;\n    -ms-flex-order: 9;\n    order: 9; }\n  .order-md-10 {\n    -webkit-box-ordinal-group: 11;\n    -ms-flex-order: 10;\n    order: 10; }\n  .order-md-11 {\n    -webkit-box-ordinal-group: 12;\n    -ms-flex-order: 11;\n    order: 11; }\n  .order-md-12 {\n    -webkit-box-ordinal-group: 13;\n    -ms-flex-order: 12;\n    order: 12; }\n  .offset-md-0 {\n    margin-left: 0; }\n  .offset-md-1 {\n    margin-left: 8.33333%; }\n  .offset-md-2 {\n    margin-left: 16.66667%; }\n  .offset-md-3 {\n    margin-left: 25%; }\n  .offset-md-4 {\n    margin-left: 33.33333%; }\n  .offset-md-5 {\n    margin-left: 41.66667%; }\n  .offset-md-6 {\n    margin-left: 50%; }\n  .offset-md-7 {\n    margin-left: 58.33333%; }\n  .offset-md-8 {\n    margin-left: 66.66667%; }\n  .offset-md-9 {\n    margin-left: 75%; }\n  .offset-md-10 {\n    margin-left: 83.33333%; }\n  .offset-md-11 {\n    margin-left: 91.66667%; } }\n\n@media (min-width: 992px) {\n  .col-lg {\n    -ms-flex-preferred-size: 0;\n    flex-basis: 0;\n    -webkit-box-flex: 1;\n    -ms-flex-positive: 1;\n    flex-grow: 1;\n    max-width: 100%; }\n  .col-lg-auto {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 auto;\n    flex: 0 0 auto;\n    width: auto;\n    max-width: none; }\n  .col-lg-1 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 8.33333%;\n    flex: 0 0 8.33333%;\n    max-width: 8.33333%; }\n  .col-lg-2 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 16.66667%;\n    flex: 0 0 16.66667%;\n    max-width: 16.66667%; }\n  .col-lg-3 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 25%;\n    flex: 0 0 25%;\n    max-width: 25%; }\n  .col-lg-4 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 33.33333%;\n    flex: 0 0 33.33333%;\n    max-width: 33.33333%; }\n  .col-lg-5 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 41.66667%;\n    flex: 0 0 41.66667%;\n    max-width: 41.66667%; }\n  .col-lg-6 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 50%;\n    flex: 0 0 50%;\n    max-width: 50%; }\n  .col-lg-7 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 58.33333%;\n    flex: 0 0 58.33333%;\n    max-width: 58.33333%; }\n  .col-lg-8 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 66.66667%;\n    flex: 0 0 66.66667%;\n    max-width: 66.66667%; }\n  .col-lg-9 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 75%;\n    flex: 0 0 75%;\n    max-width: 75%; }\n  .col-lg-10 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 83.33333%;\n    flex: 0 0 83.33333%;\n    max-width: 83.33333%; }\n  .col-lg-11 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 91.66667%;\n    flex: 0 0 91.66667%;\n    max-width: 91.66667%; }\n  .col-lg-12 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 100%;\n    flex: 0 0 100%;\n    max-width: 100%; }\n  .order-lg-first {\n    -webkit-box-ordinal-group: 0;\n    -ms-flex-order: -1;\n    order: -1; }\n  .order-lg-last {\n    -webkit-box-ordinal-group: 14;\n    -ms-flex-order: 13;\n    order: 13; }\n  .order-lg-0 {\n    -webkit-box-ordinal-group: 1;\n    -ms-flex-order: 0;\n    order: 0; }\n  .order-lg-1 {\n    -webkit-box-ordinal-group: 2;\n    -ms-flex-order: 1;\n    order: 1; }\n  .order-lg-2 {\n    -webkit-box-ordinal-group: 3;\n    -ms-flex-order: 2;\n    order: 2; }\n  .order-lg-3 {\n    -webkit-box-ordinal-group: 4;\n    -ms-flex-order: 3;\n    order: 3; }\n  .order-lg-4 {\n    -webkit-box-ordinal-group: 5;\n    -ms-flex-order: 4;\n    order: 4; }\n  .order-lg-5 {\n    -webkit-box-ordinal-group: 6;\n    -ms-flex-order: 5;\n    order: 5; }\n  .order-lg-6 {\n    -webkit-box-ordinal-group: 7;\n    -ms-flex-order: 6;\n    order: 6; }\n  .order-lg-7 {\n    -webkit-box-ordinal-group: 8;\n    -ms-flex-order: 7;\n    order: 7; }\n  .order-lg-8 {\n    -webkit-box-ordinal-group: 9;\n    -ms-flex-order: 8;\n    order: 8; }\n  .order-lg-9 {\n    -webkit-box-ordinal-group: 10;\n    -ms-flex-order: 9;\n    order: 9; }\n  .order-lg-10 {\n    -webkit-box-ordinal-group: 11;\n    -ms-flex-order: 10;\n    order: 10; }\n  .order-lg-11 {\n    -webkit-box-ordinal-group: 12;\n    -ms-flex-order: 11;\n    order: 11; }\n  .order-lg-12 {\n    -webkit-box-ordinal-group: 13;\n    -ms-flex-order: 12;\n    order: 12; }\n  .offset-lg-0 {\n    margin-left: 0; }\n  .offset-lg-1 {\n    margin-left: 8.33333%; }\n  .offset-lg-2 {\n    margin-left: 16.66667%; }\n  .offset-lg-3 {\n    margin-left: 25%; }\n  .offset-lg-4 {\n    margin-left: 33.33333%; }\n  .offset-lg-5 {\n    margin-left: 41.66667%; }\n  .offset-lg-6 {\n    margin-left: 50%; }\n  .offset-lg-7 {\n    margin-left: 58.33333%; }\n  .offset-lg-8 {\n    margin-left: 66.66667%; }\n  .offset-lg-9 {\n    margin-left: 75%; }\n  .offset-lg-10 {\n    margin-left: 83.33333%; }\n  .offset-lg-11 {\n    margin-left: 91.66667%; } }\n\n@media (min-width: 1200px) {\n  .col-xl {\n    -ms-flex-preferred-size: 0;\n    flex-basis: 0;\n    -webkit-box-flex: 1;\n    -ms-flex-positive: 1;\n    flex-grow: 1;\n    max-width: 100%; }\n  .col-xl-auto {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 auto;\n    flex: 0 0 auto;\n    width: auto;\n    max-width: none; }\n  .col-xl-1 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 8.33333%;\n    flex: 0 0 8.33333%;\n    max-width: 8.33333%; }\n  .col-xl-2 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 16.66667%;\n    flex: 0 0 16.66667%;\n    max-width: 16.66667%; }\n  .col-xl-3 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 25%;\n    flex: 0 0 25%;\n    max-width: 25%; }\n  .col-xl-4 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 33.33333%;\n    flex: 0 0 33.33333%;\n    max-width: 33.33333%; }\n  .col-xl-5 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 41.66667%;\n    flex: 0 0 41.66667%;\n    max-width: 41.66667%; }\n  .col-xl-6 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 50%;\n    flex: 0 0 50%;\n    max-width: 50%; }\n  .col-xl-7 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 58.33333%;\n    flex: 0 0 58.33333%;\n    max-width: 58.33333%; }\n  .col-xl-8 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 66.66667%;\n    flex: 0 0 66.66667%;\n    max-width: 66.66667%; }\n  .col-xl-9 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 75%;\n    flex: 0 0 75%;\n    max-width: 75%; }\n  .col-xl-10 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 83.33333%;\n    flex: 0 0 83.33333%;\n    max-width: 83.33333%; }\n  .col-xl-11 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 91.66667%;\n    flex: 0 0 91.66667%;\n    max-width: 91.66667%; }\n  .col-xl-12 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 100%;\n    flex: 0 0 100%;\n    max-width: 100%; }\n  .order-xl-first {\n    -webkit-box-ordinal-group: 0;\n    -ms-flex-order: -1;\n    order: -1; }\n  .order-xl-last {\n    -webkit-box-ordinal-group: 14;\n    -ms-flex-order: 13;\n    order: 13; }\n  .order-xl-0 {\n    -webkit-box-ordinal-group: 1;\n    -ms-flex-order: 0;\n    order: 0; }\n  .order-xl-1 {\n    -webkit-box-ordinal-group: 2;\n    -ms-flex-order: 1;\n    order: 1; }\n  .order-xl-2 {\n    -webkit-box-ordinal-group: 3;\n    -ms-flex-order: 2;\n    order: 2; }\n  .order-xl-3 {\n    -webkit-box-ordinal-group: 4;\n    -ms-flex-order: 3;\n    order: 3; }\n  .order-xl-4 {\n    -webkit-box-ordinal-group: 5;\n    -ms-flex-order: 4;\n    order: 4; }\n  .order-xl-5 {\n    -webkit-box-ordinal-group: 6;\n    -ms-flex-order: 5;\n    order: 5; }\n  .order-xl-6 {\n    -webkit-box-ordinal-group: 7;\n    -ms-flex-order: 6;\n    order: 6; }\n  .order-xl-7 {\n    -webkit-box-ordinal-group: 8;\n    -ms-flex-order: 7;\n    order: 7; }\n  .order-xl-8 {\n    -webkit-box-ordinal-group: 9;\n    -ms-flex-order: 8;\n    order: 8; }\n  .order-xl-9 {\n    -webkit-box-ordinal-group: 10;\n    -ms-flex-order: 9;\n    order: 9; }\n  .order-xl-10 {\n    -webkit-box-ordinal-group: 11;\n    -ms-flex-order: 10;\n    order: 10; }\n  .order-xl-11 {\n    -webkit-box-ordinal-group: 12;\n    -ms-flex-order: 11;\n    order: 11; }\n  .order-xl-12 {\n    -webkit-box-ordinal-group: 13;\n    -ms-flex-order: 12;\n    order: 12; }\n  .offset-xl-0 {\n    margin-left: 0; }\n  .offset-xl-1 {\n    margin-left: 8.33333%; }\n  .offset-xl-2 {\n    margin-left: 16.66667%; }\n  .offset-xl-3 {\n    margin-left: 25%; }\n  .offset-xl-4 {\n    margin-left: 33.33333%; }\n  .offset-xl-5 {\n    margin-left: 41.66667%; }\n  .offset-xl-6 {\n    margin-left: 50%; }\n  .offset-xl-7 {\n    margin-left: 58.33333%; }\n  .offset-xl-8 {\n    margin-left: 66.66667%; }\n  .offset-xl-9 {\n    margin-left: 75%; }\n  .offset-xl-10 {\n    margin-left: 83.33333%; }\n  .offset-xl-11 {\n    margin-left: 91.66667%; } }\n\n.d-none {\n  display: none !important; }\n\n.d-inline {\n  display: inline !important; }\n\n.d-inline-block {\n  display: inline-block !important; }\n\n.d-block {\n  display: block !important; }\n\n.d-table {\n  display: table !important; }\n\n.d-table-row {\n  display: table-row !important; }\n\n.d-table-cell {\n  display: table-cell !important; }\n\n.d-flex {\n  display: -webkit-box !important;\n  display: -ms-flexbox !important;\n  display: flex !important; }\n\n.d-inline-flex {\n  display: -webkit-inline-box !important;\n  display: -ms-inline-flexbox !important;\n  display: inline-flex !important; }\n\n@media (min-width: 576px) {\n  .d-sm-none {\n    display: none !important; }\n  .d-sm-inline {\n    display: inline !important; }\n  .d-sm-inline-block {\n    display: inline-block !important; }\n  .d-sm-block {\n    display: block !important; }\n  .d-sm-table {\n    display: table !important; }\n  .d-sm-table-row {\n    display: table-row !important; }\n  .d-sm-table-cell {\n    display: table-cell !important; }\n  .d-sm-flex {\n    display: -webkit-box !important;\n    display: -ms-flexbox !important;\n    display: flex !important; }\n  .d-sm-inline-flex {\n    display: -webkit-inline-box !important;\n    display: -ms-inline-flexbox !important;\n    display: inline-flex !important; } }\n\n@media (min-width: 768px) {\n  .d-md-none {\n    display: none !important; }\n  .d-md-inline {\n    display: inline !important; }\n  .d-md-inline-block {\n    display: inline-block !important; }\n  .d-md-block {\n    display: block !important; }\n  .d-md-table {\n    display: table !important; }\n  .d-md-table-row {\n    display: table-row !important; }\n  .d-md-table-cell {\n    display: table-cell !important; }\n  .d-md-flex {\n    display: -webkit-box !important;\n    display: -ms-flexbox !important;\n    display: flex !important; }\n  .d-md-inline-flex {\n    display: -webkit-inline-box !important;\n    display: -ms-inline-flexbox !important;\n    display: inline-flex !important; } }\n\n@media (min-width: 992px) {\n  .d-lg-none {\n    display: none !important; }\n  .d-lg-inline {\n    display: inline !important; }\n  .d-lg-inline-block {\n    display: inline-block !important; }\n  .d-lg-block {\n    display: block !important; }\n  .d-lg-table {\n    display: table !important; }\n  .d-lg-table-row {\n    display: table-row !important; }\n  .d-lg-table-cell {\n    display: table-cell !important; }\n  .d-lg-flex {\n    display: -webkit-box !important;\n    display: -ms-flexbox !important;\n    display: flex !important; }\n  .d-lg-inline-flex {\n    display: -webkit-inline-box !important;\n    display: -ms-inline-flexbox !important;\n    display: inline-flex !important; } }\n\n@media (min-width: 1200px) {\n  .d-xl-none {\n    display: none !important; }\n  .d-xl-inline {\n    display: inline !important; }\n  .d-xl-inline-block {\n    display: inline-block !important; }\n  .d-xl-block {\n    display: block !important; }\n  .d-xl-table {\n    display: table !important; }\n  .d-xl-table-row {\n    display: table-row !important; }\n  .d-xl-table-cell {\n    display: table-cell !important; }\n  .d-xl-flex {\n    display: -webkit-box !important;\n    display: -ms-flexbox !important;\n    display: flex !important; }\n  .d-xl-inline-flex {\n    display: -webkit-inline-box !important;\n    display: -ms-inline-flexbox !important;\n    display: inline-flex !important; } }\n\n@media print {\n  .d-print-none {\n    display: none !important; }\n  .d-print-inline {\n    display: inline !important; }\n  .d-print-inline-block {\n    display: inline-block !important; }\n  .d-print-block {\n    display: block !important; }\n  .d-print-table {\n    display: table !important; }\n  .d-print-table-row {\n    display: table-row !important; }\n  .d-print-table-cell {\n    display: table-cell !important; }\n  .d-print-flex {\n    display: -webkit-box !important;\n    display: -ms-flexbox !important;\n    display: flex !important; }\n  .d-print-inline-flex {\n    display: -webkit-inline-box !important;\n    display: -ms-inline-flexbox !important;\n    display: inline-flex !important; } }\n\n.flex-row {\n  -webkit-box-orient: horizontal !important;\n  -webkit-box-direction: normal !important;\n  -ms-flex-direction: row !important;\n  flex-direction: row !important; }\n\n.flex-column {\n  -webkit-box-orient: vertical !important;\n  -webkit-box-direction: normal !important;\n  -ms-flex-direction: column !important;\n  flex-direction: column !important; }\n\n.flex-row-reverse {\n  -webkit-box-orient: horizontal !important;\n  -webkit-box-direction: reverse !important;\n  -ms-flex-direction: row-reverse !important;\n  flex-direction: row-reverse !important; }\n\n.flex-column-reverse {\n  -webkit-box-orient: vertical !important;\n  -webkit-box-direction: reverse !important;\n  -ms-flex-direction: column-reverse !important;\n  flex-direction: column-reverse !important; }\n\n.flex-wrap {\n  -ms-flex-wrap: wrap !important;\n  flex-wrap: wrap !important; }\n\n.flex-nowrap {\n  -ms-flex-wrap: nowrap !important;\n  flex-wrap: nowrap !important; }\n\n.flex-wrap-reverse {\n  -ms-flex-wrap: wrap-reverse !important;\n  flex-wrap: wrap-reverse !important; }\n\n.flex-fill {\n  -webkit-box-flex: 1 !important;\n  -ms-flex: 1 1 auto !important;\n  flex: 1 1 auto !important; }\n\n.flex-grow-0 {\n  -webkit-box-flex: 0 !important;\n  -ms-flex-positive: 0 !important;\n  flex-grow: 0 !important; }\n\n.flex-grow-1 {\n  -webkit-box-flex: 1 !important;\n  -ms-flex-positive: 1 !important;\n  flex-grow: 1 !important; }\n\n.flex-shrink-0 {\n  -ms-flex-negative: 0 !important;\n  flex-shrink: 0 !important; }\n\n.flex-shrink-1 {\n  -ms-flex-negative: 1 !important;\n  flex-shrink: 1 !important; }\n\n.justify-content-start {\n  -webkit-box-pack: start !important;\n  -ms-flex-pack: start !important;\n  justify-content: flex-start !important; }\n\n.justify-content-end {\n  -webkit-box-pack: end !important;\n  -ms-flex-pack: end !important;\n  justify-content: flex-end !important; }\n\n.justify-content-center {\n  -webkit-box-pack: center !important;\n  -ms-flex-pack: center !important;\n  justify-content: center !important; }\n\n.justify-content-between {\n  -webkit-box-pack: justify !important;\n  -ms-flex-pack: justify !important;\n  justify-content: space-between !important; }\n\n.justify-content-around {\n  -ms-flex-pack: distribute !important;\n  justify-content: space-around !important; }\n\n.align-items-start {\n  -webkit-box-align: start !important;\n  -ms-flex-align: start !important;\n  align-items: flex-start !important; }\n\n.align-items-end {\n  -webkit-box-align: end !important;\n  -ms-flex-align: end !important;\n  align-items: flex-end !important; }\n\n.align-items-center {\n  -webkit-box-align: center !important;\n  -ms-flex-align: center !important;\n  align-items: center !important; }\n\n.align-items-baseline {\n  -webkit-box-align: baseline !important;\n  -ms-flex-align: baseline !important;\n  align-items: baseline !important; }\n\n.align-items-stretch {\n  -webkit-box-align: stretch !important;\n  -ms-flex-align: stretch !important;\n  align-items: stretch !important; }\n\n.align-content-start {\n  -ms-flex-line-pack: start !important;\n  align-content: flex-start !important; }\n\n.align-content-end {\n  -ms-flex-line-pack: end !important;\n  align-content: flex-end !important; }\n\n.align-content-center {\n  -ms-flex-line-pack: center !important;\n  align-content: center !important; }\n\n.align-content-between {\n  -ms-flex-line-pack: justify !important;\n  align-content: space-between !important; }\n\n.align-content-around {\n  -ms-flex-line-pack: distribute !important;\n  align-content: space-around !important; }\n\n.align-content-stretch {\n  -ms-flex-line-pack: stretch !important;\n  align-content: stretch !important; }\n\n.align-self-auto {\n  -ms-flex-item-align: auto !important;\n  -ms-grid-row-align: auto !important;\n  align-self: auto !important; }\n\n.align-self-start {\n  -ms-flex-item-align: start !important;\n  align-self: flex-start !important; }\n\n.align-self-end {\n  -ms-flex-item-align: end !important;\n  align-self: flex-end !important; }\n\n.align-self-center {\n  -ms-flex-item-align: center !important;\n  -ms-grid-row-align: center !important;\n  align-self: center !important; }\n\n.align-self-baseline {\n  -ms-flex-item-align: baseline !important;\n  align-self: baseline !important; }\n\n.align-self-stretch {\n  -ms-flex-item-align: stretch !important;\n  -ms-grid-row-align: stretch !important;\n  align-self: stretch !important; }\n\n@media (min-width: 576px) {\n  .flex-sm-row {\n    -webkit-box-orient: horizontal !important;\n    -webkit-box-direction: normal !important;\n    -ms-flex-direction: row !important;\n    flex-direction: row !important; }\n  .flex-sm-column {\n    -webkit-box-orient: vertical !important;\n    -webkit-box-direction: normal !important;\n    -ms-flex-direction: column !important;\n    flex-direction: column !important; }\n  .flex-sm-row-reverse {\n    -webkit-box-orient: horizontal !important;\n    -webkit-box-direction: reverse !important;\n    -ms-flex-direction: row-reverse !important;\n    flex-direction: row-reverse !important; }\n  .flex-sm-column-reverse {\n    -webkit-box-orient: vertical !important;\n    -webkit-box-direction: reverse !important;\n    -ms-flex-direction: column-reverse !important;\n    flex-direction: column-reverse !important; }\n  .flex-sm-wrap {\n    -ms-flex-wrap: wrap !important;\n    flex-wrap: wrap !important; }\n  .flex-sm-nowrap {\n    -ms-flex-wrap: nowrap !important;\n    flex-wrap: nowrap !important; }\n  .flex-sm-wrap-reverse {\n    -ms-flex-wrap: wrap-reverse !important;\n    flex-wrap: wrap-reverse !important; }\n  .flex-sm-fill {\n    -webkit-box-flex: 1 !important;\n    -ms-flex: 1 1 auto !important;\n    flex: 1 1 auto !important; }\n  .flex-sm-grow-0 {\n    -webkit-box-flex: 0 !important;\n    -ms-flex-positive: 0 !important;\n    flex-grow: 0 !important; }\n  .flex-sm-grow-1 {\n    -webkit-box-flex: 1 !important;\n    -ms-flex-positive: 1 !important;\n    flex-grow: 1 !important; }\n  .flex-sm-shrink-0 {\n    -ms-flex-negative: 0 !important;\n    flex-shrink: 0 !important; }\n  .flex-sm-shrink-1 {\n    -ms-flex-negative: 1 !important;\n    flex-shrink: 1 !important; }\n  .justify-content-sm-start {\n    -webkit-box-pack: start !important;\n    -ms-flex-pack: start !important;\n    justify-content: flex-start !important; }\n  .justify-content-sm-end {\n    -webkit-box-pack: end !important;\n    -ms-flex-pack: end !important;\n    justify-content: flex-end !important; }\n  .justify-content-sm-center {\n    -webkit-box-pack: center !important;\n    -ms-flex-pack: center !important;\n    justify-content: center !important; }\n  .justify-content-sm-between {\n    -webkit-box-pack: justify !important;\n    -ms-flex-pack: justify !important;\n    justify-content: space-between !important; }\n  .justify-content-sm-around {\n    -ms-flex-pack: distribute !important;\n    justify-content: space-around !important; }\n  .align-items-sm-start {\n    -webkit-box-align: start !important;\n    -ms-flex-align: start !important;\n    align-items: flex-start !important; }\n  .align-items-sm-end {\n    -webkit-box-align: end !important;\n    -ms-flex-align: end !important;\n    align-items: flex-end !important; }\n  .align-items-sm-center {\n    -webkit-box-align: center !important;\n    -ms-flex-align: center !important;\n    align-items: center !important; }\n  .align-items-sm-baseline {\n    -webkit-box-align: baseline !important;\n    -ms-flex-align: baseline !important;\n    align-items: baseline !important; }\n  .align-items-sm-stretch {\n    -webkit-box-align: stretch !important;\n    -ms-flex-align: stretch !important;\n    align-items: stretch !important; }\n  .align-content-sm-start {\n    -ms-flex-line-pack: start !important;\n    align-content: flex-start !important; }\n  .align-content-sm-end {\n    -ms-flex-line-pack: end !important;\n    align-content: flex-end !important; }\n  .align-content-sm-center {\n    -ms-flex-line-pack: center !important;\n    align-content: center !important; }\n  .align-content-sm-between {\n    -ms-flex-line-pack: justify !important;\n    align-content: space-between !important; }\n  .align-content-sm-around {\n    -ms-flex-line-pack: distribute !important;\n    align-content: space-around !important; }\n  .align-content-sm-stretch {\n    -ms-flex-line-pack: stretch !important;\n    align-content: stretch !important; }\n  .align-self-sm-auto {\n    -ms-flex-item-align: auto !important;\n    -ms-grid-row-align: auto !important;\n    align-self: auto !important; }\n  .align-self-sm-start {\n    -ms-flex-item-align: start !important;\n    align-self: flex-start !important; }\n  .align-self-sm-end {\n    -ms-flex-item-align: end !important;\n    align-self: flex-end !important; }\n  .align-self-sm-center {\n    -ms-flex-item-align: center !important;\n    -ms-grid-row-align: center !important;\n    align-self: center !important; }\n  .align-self-sm-baseline {\n    -ms-flex-item-align: baseline !important;\n    align-self: baseline !important; }\n  .align-self-sm-stretch {\n    -ms-flex-item-align: stretch !important;\n    -ms-grid-row-align: stretch !important;\n    align-self: stretch !important; } }\n\n@media (min-width: 768px) {\n  .flex-md-row {\n    -webkit-box-orient: horizontal !important;\n    -webkit-box-direction: normal !important;\n    -ms-flex-direction: row !important;\n    flex-direction: row !important; }\n  .flex-md-column {\n    -webkit-box-orient: vertical !important;\n    -webkit-box-direction: normal !important;\n    -ms-flex-direction: column !important;\n    flex-direction: column !important; }\n  .flex-md-row-reverse {\n    -webkit-box-orient: horizontal !important;\n    -webkit-box-direction: reverse !important;\n    -ms-flex-direction: row-reverse !important;\n    flex-direction: row-reverse !important; }\n  .flex-md-column-reverse {\n    -webkit-box-orient: vertical !important;\n    -webkit-box-direction: reverse !important;\n    -ms-flex-direction: column-reverse !important;\n    flex-direction: column-reverse !important; }\n  .flex-md-wrap {\n    -ms-flex-wrap: wrap !important;\n    flex-wrap: wrap !important; }\n  .flex-md-nowrap {\n    -ms-flex-wrap: nowrap !important;\n    flex-wrap: nowrap !important; }\n  .flex-md-wrap-reverse {\n    -ms-flex-wrap: wrap-reverse !important;\n    flex-wrap: wrap-reverse !important; }\n  .flex-md-fill {\n    -webkit-box-flex: 1 !important;\n    -ms-flex: 1 1 auto !important;\n    flex: 1 1 auto !important; }\n  .flex-md-grow-0 {\n    -webkit-box-flex: 0 !important;\n    -ms-flex-positive: 0 !important;\n    flex-grow: 0 !important; }\n  .flex-md-grow-1 {\n    -webkit-box-flex: 1 !important;\n    -ms-flex-positive: 1 !important;\n    flex-grow: 1 !important; }\n  .flex-md-shrink-0 {\n    -ms-flex-negative: 0 !important;\n    flex-shrink: 0 !important; }\n  .flex-md-shrink-1 {\n    -ms-flex-negative: 1 !important;\n    flex-shrink: 1 !important; }\n  .justify-content-md-start {\n    -webkit-box-pack: start !important;\n    -ms-flex-pack: start !important;\n    justify-content: flex-start !important; }\n  .justify-content-md-end {\n    -webkit-box-pack: end !important;\n    -ms-flex-pack: end !important;\n    justify-content: flex-end !important; }\n  .justify-content-md-center {\n    -webkit-box-pack: center !important;\n    -ms-flex-pack: center !important;\n    justify-content: center !important; }\n  .justify-content-md-between {\n    -webkit-box-pack: justify !important;\n    -ms-flex-pack: justify !important;\n    justify-content: space-between !important; }\n  .justify-content-md-around {\n    -ms-flex-pack: distribute !important;\n    justify-content: space-around !important; }\n  .align-items-md-start {\n    -webkit-box-align: start !important;\n    -ms-flex-align: start !important;\n    align-items: flex-start !important; }\n  .align-items-md-end {\n    -webkit-box-align: end !important;\n    -ms-flex-align: end !important;\n    align-items: flex-end !important; }\n  .align-items-md-center {\n    -webkit-box-align: center !important;\n    -ms-flex-align: center !important;\n    align-items: center !important; }\n  .align-items-md-baseline {\n    -webkit-box-align: baseline !important;\n    -ms-flex-align: baseline !important;\n    align-items: baseline !important; }\n  .align-items-md-stretch {\n    -webkit-box-align: stretch !important;\n    -ms-flex-align: stretch !important;\n    align-items: stretch !important; }\n  .align-content-md-start {\n    -ms-flex-line-pack: start !important;\n    align-content: flex-start !important; }\n  .align-content-md-end {\n    -ms-flex-line-pack: end !important;\n    align-content: flex-end !important; }\n  .align-content-md-center {\n    -ms-flex-line-pack: center !important;\n    align-content: center !important; }\n  .align-content-md-between {\n    -ms-flex-line-pack: justify !important;\n    align-content: space-between !important; }\n  .align-content-md-around {\n    -ms-flex-line-pack: distribute !important;\n    align-content: space-around !important; }\n  .align-content-md-stretch {\n    -ms-flex-line-pack: stretch !important;\n    align-content: stretch !important; }\n  .align-self-md-auto {\n    -ms-flex-item-align: auto !important;\n    -ms-grid-row-align: auto !important;\n    align-self: auto !important; }\n  .align-self-md-start {\n    -ms-flex-item-align: start !important;\n    align-self: flex-start !important; }\n  .align-self-md-end {\n    -ms-flex-item-align: end !important;\n    align-self: flex-end !important; }\n  .align-self-md-center {\n    -ms-flex-item-align: center !important;\n    -ms-grid-row-align: center !important;\n    align-self: center !important; }\n  .align-self-md-baseline {\n    -ms-flex-item-align: baseline !important;\n    align-self: baseline !important; }\n  .align-self-md-stretch {\n    -ms-flex-item-align: stretch !important;\n    -ms-grid-row-align: stretch !important;\n    align-self: stretch !important; } }\n\n@media (min-width: 992px) {\n  .flex-lg-row {\n    -webkit-box-orient: horizontal !important;\n    -webkit-box-direction: normal !important;\n    -ms-flex-direction: row !important;\n    flex-direction: row !important; }\n  .flex-lg-column {\n    -webkit-box-orient: vertical !important;\n    -webkit-box-direction: normal !important;\n    -ms-flex-direction: column !important;\n    flex-direction: column !important; }\n  .flex-lg-row-reverse {\n    -webkit-box-orient: horizontal !important;\n    -webkit-box-direction: reverse !important;\n    -ms-flex-direction: row-reverse !important;\n    flex-direction: row-reverse !important; }\n  .flex-lg-column-reverse {\n    -webkit-box-orient: vertical !important;\n    -webkit-box-direction: reverse !important;\n    -ms-flex-direction: column-reverse !important;\n    flex-direction: column-reverse !important; }\n  .flex-lg-wrap {\n    -ms-flex-wrap: wrap !important;\n    flex-wrap: wrap !important; }\n  .flex-lg-nowrap {\n    -ms-flex-wrap: nowrap !important;\n    flex-wrap: nowrap !important; }\n  .flex-lg-wrap-reverse {\n    -ms-flex-wrap: wrap-reverse !important;\n    flex-wrap: wrap-reverse !important; }\n  .flex-lg-fill {\n    -webkit-box-flex: 1 !important;\n    -ms-flex: 1 1 auto !important;\n    flex: 1 1 auto !important; }\n  .flex-lg-grow-0 {\n    -webkit-box-flex: 0 !important;\n    -ms-flex-positive: 0 !important;\n    flex-grow: 0 !important; }\n  .flex-lg-grow-1 {\n    -webkit-box-flex: 1 !important;\n    -ms-flex-positive: 1 !important;\n    flex-grow: 1 !important; }\n  .flex-lg-shrink-0 {\n    -ms-flex-negative: 0 !important;\n    flex-shrink: 0 !important; }\n  .flex-lg-shrink-1 {\n    -ms-flex-negative: 1 !important;\n    flex-shrink: 1 !important; }\n  .justify-content-lg-start {\n    -webkit-box-pack: start !important;\n    -ms-flex-pack: start !important;\n    justify-content: flex-start !important; }\n  .justify-content-lg-end {\n    -webkit-box-pack: end !important;\n    -ms-flex-pack: end !important;\n    justify-content: flex-end !important; }\n  .justify-content-lg-center {\n    -webkit-box-pack: center !important;\n    -ms-flex-pack: center !important;\n    justify-content: center !important; }\n  .justify-content-lg-between {\n    -webkit-box-pack: justify !important;\n    -ms-flex-pack: justify !important;\n    justify-content: space-between !important; }\n  .justify-content-lg-around {\n    -ms-flex-pack: distribute !important;\n    justify-content: space-around !important; }\n  .align-items-lg-start {\n    -webkit-box-align: start !important;\n    -ms-flex-align: start !important;\n    align-items: flex-start !important; }\n  .align-items-lg-end {\n    -webkit-box-align: end !important;\n    -ms-flex-align: end !important;\n    align-items: flex-end !important; }\n  .align-items-lg-center {\n    -webkit-box-align: center !important;\n    -ms-flex-align: center !important;\n    align-items: center !important; }\n  .align-items-lg-baseline {\n    -webkit-box-align: baseline !important;\n    -ms-flex-align: baseline !important;\n    align-items: baseline !important; }\n  .align-items-lg-stretch {\n    -webkit-box-align: stretch !important;\n    -ms-flex-align: stretch !important;\n    align-items: stretch !important; }\n  .align-content-lg-start {\n    -ms-flex-line-pack: start !important;\n    align-content: flex-start !important; }\n  .align-content-lg-end {\n    -ms-flex-line-pack: end !important;\n    align-content: flex-end !important; }\n  .align-content-lg-center {\n    -ms-flex-line-pack: center !important;\n    align-content: center !important; }\n  .align-content-lg-between {\n    -ms-flex-line-pack: justify !important;\n    align-content: space-between !important; }\n  .align-content-lg-around {\n    -ms-flex-line-pack: distribute !important;\n    align-content: space-around !important; }\n  .align-content-lg-stretch {\n    -ms-flex-line-pack: stretch !important;\n    align-content: stretch !important; }\n  .align-self-lg-auto {\n    -ms-flex-item-align: auto !important;\n    -ms-grid-row-align: auto !important;\n    align-self: auto !important; }\n  .align-self-lg-start {\n    -ms-flex-item-align: start !important;\n    align-self: flex-start !important; }\n  .align-self-lg-end {\n    -ms-flex-item-align: end !important;\n    align-self: flex-end !important; }\n  .align-self-lg-center {\n    -ms-flex-item-align: center !important;\n    -ms-grid-row-align: center !important;\n    align-self: center !important; }\n  .align-self-lg-baseline {\n    -ms-flex-item-align: baseline !important;\n    align-self: baseline !important; }\n  .align-self-lg-stretch {\n    -ms-flex-item-align: stretch !important;\n    -ms-grid-row-align: stretch !important;\n    align-self: stretch !important; } }\n\n@media (min-width: 1200px) {\n  .flex-xl-row {\n    -webkit-box-orient: horizontal !important;\n    -webkit-box-direction: normal !important;\n    -ms-flex-direction: row !important;\n    flex-direction: row !important; }\n  .flex-xl-column {\n    -webkit-box-orient: vertical !important;\n    -webkit-box-direction: normal !important;\n    -ms-flex-direction: column !important;\n    flex-direction: column !important; }\n  .flex-xl-row-reverse {\n    -webkit-box-orient: horizontal !important;\n    -webkit-box-direction: reverse !important;\n    -ms-flex-direction: row-reverse !important;\n    flex-direction: row-reverse !important; }\n  .flex-xl-column-reverse {\n    -webkit-box-orient: vertical !important;\n    -webkit-box-direction: reverse !important;\n    -ms-flex-direction: column-reverse !important;\n    flex-direction: column-reverse !important; }\n  .flex-xl-wrap {\n    -ms-flex-wrap: wrap !important;\n    flex-wrap: wrap !important; }\n  .flex-xl-nowrap {\n    -ms-flex-wrap: nowrap !important;\n    flex-wrap: nowrap !important; }\n  .flex-xl-wrap-reverse {\n    -ms-flex-wrap: wrap-reverse !important;\n    flex-wrap: wrap-reverse !important; }\n  .flex-xl-fill {\n    -webkit-box-flex: 1 !important;\n    -ms-flex: 1 1 auto !important;\n    flex: 1 1 auto !important; }\n  .flex-xl-grow-0 {\n    -webkit-box-flex: 0 !important;\n    -ms-flex-positive: 0 !important;\n    flex-grow: 0 !important; }\n  .flex-xl-grow-1 {\n    -webkit-box-flex: 1 !important;\n    -ms-flex-positive: 1 !important;\n    flex-grow: 1 !important; }\n  .flex-xl-shrink-0 {\n    -ms-flex-negative: 0 !important;\n    flex-shrink: 0 !important; }\n  .flex-xl-shrink-1 {\n    -ms-flex-negative: 1 !important;\n    flex-shrink: 1 !important; }\n  .justify-content-xl-start {\n    -webkit-box-pack: start !important;\n    -ms-flex-pack: start !important;\n    justify-content: flex-start !important; }\n  .justify-content-xl-end {\n    -webkit-box-pack: end !important;\n    -ms-flex-pack: end !important;\n    justify-content: flex-end !important; }\n  .justify-content-xl-center {\n    -webkit-box-pack: center !important;\n    -ms-flex-pack: center !important;\n    justify-content: center !important; }\n  .justify-content-xl-between {\n    -webkit-box-pack: justify !important;\n    -ms-flex-pack: justify !important;\n    justify-content: space-between !important; }\n  .justify-content-xl-around {\n    -ms-flex-pack: distribute !important;\n    justify-content: space-around !important; }\n  .align-items-xl-start {\n    -webkit-box-align: start !important;\n    -ms-flex-align: start !important;\n    align-items: flex-start !important; }\n  .align-items-xl-end {\n    -webkit-box-align: end !important;\n    -ms-flex-align: end !important;\n    align-items: flex-end !important; }\n  .align-items-xl-center {\n    -webkit-box-align: center !important;\n    -ms-flex-align: center !important;\n    align-items: center !important; }\n  .align-items-xl-baseline {\n    -webkit-box-align: baseline !important;\n    -ms-flex-align: baseline !important;\n    align-items: baseline !important; }\n  .align-items-xl-stretch {\n    -webkit-box-align: stretch !important;\n    -ms-flex-align: stretch !important;\n    align-items: stretch !important; }\n  .align-content-xl-start {\n    -ms-flex-line-pack: start !important;\n    align-content: flex-start !important; }\n  .align-content-xl-end {\n    -ms-flex-line-pack: end !important;\n    align-content: flex-end !important; }\n  .align-content-xl-center {\n    -ms-flex-line-pack: center !important;\n    align-content: center !important; }\n  .align-content-xl-between {\n    -ms-flex-line-pack: justify !important;\n    align-content: space-between !important; }\n  .align-content-xl-around {\n    -ms-flex-line-pack: distribute !important;\n    align-content: space-around !important; }\n  .align-content-xl-stretch {\n    -ms-flex-line-pack: stretch !important;\n    align-content: stretch !important; }\n  .align-self-xl-auto {\n    -ms-flex-item-align: auto !important;\n    -ms-grid-row-align: auto !important;\n    align-self: auto !important; }\n  .align-self-xl-start {\n    -ms-flex-item-align: start !important;\n    align-self: flex-start !important; }\n  .align-self-xl-end {\n    -ms-flex-item-align: end !important;\n    align-self: flex-end !important; }\n  .align-self-xl-center {\n    -ms-flex-item-align: center !important;\n    -ms-grid-row-align: center !important;\n    align-self: center !important; }\n  .align-self-xl-baseline {\n    -ms-flex-item-align: baseline !important;\n    align-self: baseline !important; }\n  .align-self-xl-stretch {\n    -ms-flex-item-align: stretch !important;\n    -ms-grid-row-align: stretch !important;\n    align-self: stretch !important; } }\n\n.m-0 {\n  margin: 0 !important; }\n\n.mt-0,\n.my-0 {\n  margin-top: 0 !important; }\n\n.mr-0,\n.mx-0 {\n  margin-right: 0 !important; }\n\n.mb-0,\n.my-0 {\n  margin-bottom: 0 !important; }\n\n.ml-0,\n.mx-0 {\n  margin-left: 0 !important; }\n\n.m-1 {\n  margin: 0.25rem !important; }\n\n.mt-1,\n.my-1 {\n  margin-top: 0.25rem !important; }\n\n.mr-1,\n.mx-1 {\n  margin-right: 0.25rem !important; }\n\n.mb-1,\n.my-1 {\n  margin-bottom: 0.25rem !important; }\n\n.ml-1,\n.mx-1 {\n  margin-left: 0.25rem !important; }\n\n.m-2 {\n  margin: 0.5rem !important; }\n\n.mt-2,\n.my-2 {\n  margin-top: 0.5rem !important; }\n\n.mr-2,\n.mx-2 {\n  margin-right: 0.5rem !important; }\n\n.mb-2,\n.my-2 {\n  margin-bottom: 0.5rem !important; }\n\n.ml-2,\n.mx-2 {\n  margin-left: 0.5rem !important; }\n\n.m-3 {\n  margin: 1rem !important; }\n\n.mt-3,\n.my-3 {\n  margin-top: 1rem !important; }\n\n.mr-3,\n.mx-3 {\n  margin-right: 1rem !important; }\n\n.mb-3,\n.my-3 {\n  margin-bottom: 1rem !important; }\n\n.ml-3,\n.mx-3 {\n  margin-left: 1rem !important; }\n\n.m-4 {\n  margin: 1.5rem !important; }\n\n.mt-4,\n.my-4 {\n  margin-top: 1.5rem !important; }\n\n.mr-4,\n.mx-4 {\n  margin-right: 1.5rem !important; }\n\n.mb-4,\n.my-4 {\n  margin-bottom: 1.5rem !important; }\n\n.ml-4,\n.mx-4 {\n  margin-left: 1.5rem !important; }\n\n.m-5 {\n  margin: 3rem !important; }\n\n.mt-5,\n.my-5 {\n  margin-top: 3rem !important; }\n\n.mr-5,\n.mx-5 {\n  margin-right: 3rem !important; }\n\n.mb-5,\n.my-5 {\n  margin-bottom: 3rem !important; }\n\n.ml-5,\n.mx-5 {\n  margin-left: 3rem !important; }\n\n.p-0 {\n  padding: 0 !important; }\n\n.pt-0,\n.py-0 {\n  padding-top: 0 !important; }\n\n.pr-0,\n.px-0 {\n  padding-right: 0 !important; }\n\n.pb-0,\n.py-0 {\n  padding-bottom: 0 !important; }\n\n.pl-0,\n.px-0 {\n  padding-left: 0 !important; }\n\n.p-1 {\n  padding: 0.25rem !important; }\n\n.pt-1,\n.py-1 {\n  padding-top: 0.25rem !important; }\n\n.pr-1,\n.px-1 {\n  padding-right: 0.25rem !important; }\n\n.pb-1,\n.py-1 {\n  padding-bottom: 0.25rem !important; }\n\n.pl-1,\n.px-1 {\n  padding-left: 0.25rem !important; }\n\n.p-2 {\n  padding: 0.5rem !important; }\n\n.pt-2,\n.py-2 {\n  padding-top: 0.5rem !important; }\n\n.pr-2,\n.px-2 {\n  padding-right: 0.5rem !important; }\n\n.pb-2,\n.py-2 {\n  padding-bottom: 0.5rem !important; }\n\n.pl-2,\n.px-2 {\n  padding-left: 0.5rem !important; }\n\n.p-3 {\n  padding: 1rem !important; }\n\n.pt-3,\n.py-3 {\n  padding-top: 1rem !important; }\n\n.pr-3,\n.px-3 {\n  padding-right: 1rem !important; }\n\n.pb-3,\n.py-3 {\n  padding-bottom: 1rem !important; }\n\n.pl-3,\n.px-3 {\n  padding-left: 1rem !important; }\n\n.p-4 {\n  padding: 1.5rem !important; }\n\n.pt-4,\n.py-4 {\n  padding-top: 1.5rem !important; }\n\n.pr-4,\n.px-4 {\n  padding-right: 1.5rem !important; }\n\n.pb-4,\n.py-4 {\n  padding-bottom: 1.5rem !important; }\n\n.pl-4,\n.px-4 {\n  padding-left: 1.5rem !important; }\n\n.p-5 {\n  padding: 3rem !important; }\n\n.pt-5,\n.py-5 {\n  padding-top: 3rem !important; }\n\n.pr-5,\n.px-5 {\n  padding-right: 3rem !important; }\n\n.pb-5,\n.py-5 {\n  padding-bottom: 3rem !important; }\n\n.pl-5,\n.px-5 {\n  padding-left: 3rem !important; }\n\n.m-auto {\n  margin: auto !important; }\n\n.mt-auto,\n.my-auto {\n  margin-top: auto !important; }\n\n.mr-auto,\n.mx-auto {\n  margin-right: auto !important; }\n\n.mb-auto,\n.my-auto {\n  margin-bottom: auto !important; }\n\n.ml-auto,\n.mx-auto {\n  margin-left: auto !important; }\n\n@media (min-width: 576px) {\n  .m-sm-0 {\n    margin: 0 !important; }\n  .mt-sm-0,\n  .my-sm-0 {\n    margin-top: 0 !important; }\n  .mr-sm-0,\n  .mx-sm-0 {\n    margin-right: 0 !important; }\n  .mb-sm-0,\n  .my-sm-0 {\n    margin-bottom: 0 !important; }\n  .ml-sm-0,\n  .mx-sm-0 {\n    margin-left: 0 !important; }\n  .m-sm-1 {\n    margin: 0.25rem !important; }\n  .mt-sm-1,\n  .my-sm-1 {\n    margin-top: 0.25rem !important; }\n  .mr-sm-1,\n  .mx-sm-1 {\n    margin-right: 0.25rem !important; }\n  .mb-sm-1,\n  .my-sm-1 {\n    margin-bottom: 0.25rem !important; }\n  .ml-sm-1,\n  .mx-sm-1 {\n    margin-left: 0.25rem !important; }\n  .m-sm-2 {\n    margin: 0.5rem !important; }\n  .mt-sm-2,\n  .my-sm-2 {\n    margin-top: 0.5rem !important; }\n  .mr-sm-2,\n  .mx-sm-2 {\n    margin-right: 0.5rem !important; }\n  .mb-sm-2,\n  .my-sm-2 {\n    margin-bottom: 0.5rem !important; }\n  .ml-sm-2,\n  .mx-sm-2 {\n    margin-left: 0.5rem !important; }\n  .m-sm-3 {\n    margin: 1rem !important; }\n  .mt-sm-3,\n  .my-sm-3 {\n    margin-top: 1rem !important; }\n  .mr-sm-3,\n  .mx-sm-3 {\n    margin-right: 1rem !important; }\n  .mb-sm-3,\n  .my-sm-3 {\n    margin-bottom: 1rem !important; }\n  .ml-sm-3,\n  .mx-sm-3 {\n    margin-left: 1rem !important; }\n  .m-sm-4 {\n    margin: 1.5rem !important; }\n  .mt-sm-4,\n  .my-sm-4 {\n    margin-top: 1.5rem !important; }\n  .mr-sm-4,\n  .mx-sm-4 {\n    margin-right: 1.5rem !important; }\n  .mb-sm-4,\n  .my-sm-4 {\n    margin-bottom: 1.5rem !important; }\n  .ml-sm-4,\n  .mx-sm-4 {\n    margin-left: 1.5rem !important; }\n  .m-sm-5 {\n    margin: 3rem !important; }\n  .mt-sm-5,\n  .my-sm-5 {\n    margin-top: 3rem !important; }\n  .mr-sm-5,\n  .mx-sm-5 {\n    margin-right: 3rem !important; }\n  .mb-sm-5,\n  .my-sm-5 {\n    margin-bottom: 3rem !important; }\n  .ml-sm-5,\n  .mx-sm-5 {\n    margin-left: 3rem !important; }\n  .p-sm-0 {\n    padding: 0 !important; }\n  .pt-sm-0,\n  .py-sm-0 {\n    padding-top: 0 !important; }\n  .pr-sm-0,\n  .px-sm-0 {\n    padding-right: 0 !important; }\n  .pb-sm-0,\n  .py-sm-0 {\n    padding-bottom: 0 !important; }\n  .pl-sm-0,\n  .px-sm-0 {\n    padding-left: 0 !important; }\n  .p-sm-1 {\n    padding: 0.25rem !important; }\n  .pt-sm-1,\n  .py-sm-1 {\n    padding-top: 0.25rem !important; }\n  .pr-sm-1,\n  .px-sm-1 {\n    padding-right: 0.25rem !important; }\n  .pb-sm-1,\n  .py-sm-1 {\n    padding-bottom: 0.25rem !important; }\n  .pl-sm-1,\n  .px-sm-1 {\n    padding-left: 0.25rem !important; }\n  .p-sm-2 {\n    padding: 0.5rem !important; }\n  .pt-sm-2,\n  .py-sm-2 {\n    padding-top: 0.5rem !important; }\n  .pr-sm-2,\n  .px-sm-2 {\n    padding-right: 0.5rem !important; }\n  .pb-sm-2,\n  .py-sm-2 {\n    padding-bottom: 0.5rem !important; }\n  .pl-sm-2,\n  .px-sm-2 {\n    padding-left: 0.5rem !important; }\n  .p-sm-3 {\n    padding: 1rem !important; }\n  .pt-sm-3,\n  .py-sm-3 {\n    padding-top: 1rem !important; }\n  .pr-sm-3,\n  .px-sm-3 {\n    padding-right: 1rem !important; }\n  .pb-sm-3,\n  .py-sm-3 {\n    padding-bottom: 1rem !important; }\n  .pl-sm-3,\n  .px-sm-3 {\n    padding-left: 1rem !important; }\n  .p-sm-4 {\n    padding: 1.5rem !important; }\n  .pt-sm-4,\n  .py-sm-4 {\n    padding-top: 1.5rem !important; }\n  .pr-sm-4,\n  .px-sm-4 {\n    padding-right: 1.5rem !important; }\n  .pb-sm-4,\n  .py-sm-4 {\n    padding-bottom: 1.5rem !important; }\n  .pl-sm-4,\n  .px-sm-4 {\n    padding-left: 1.5rem !important; }\n  .p-sm-5 {\n    padding: 3rem !important; }\n  .pt-sm-5,\n  .py-sm-5 {\n    padding-top: 3rem !important; }\n  .pr-sm-5,\n  .px-sm-5 {\n    padding-right: 3rem !important; }\n  .pb-sm-5,\n  .py-sm-5 {\n    padding-bottom: 3rem !important; }\n  .pl-sm-5,\n  .px-sm-5 {\n    padding-left: 3rem !important; }\n  .m-sm-auto {\n    margin: auto !important; }\n  .mt-sm-auto,\n  .my-sm-auto {\n    margin-top: auto !important; }\n  .mr-sm-auto,\n  .mx-sm-auto {\n    margin-right: auto !important; }\n  .mb-sm-auto,\n  .my-sm-auto {\n    margin-bottom: auto !important; }\n  .ml-sm-auto,\n  .mx-sm-auto {\n    margin-left: auto !important; } }\n\n@media (min-width: 768px) {\n  .m-md-0 {\n    margin: 0 !important; }\n  .mt-md-0,\n  .my-md-0 {\n    margin-top: 0 !important; }\n  .mr-md-0,\n  .mx-md-0 {\n    margin-right: 0 !important; }\n  .mb-md-0,\n  .my-md-0 {\n    margin-bottom: 0 !important; }\n  .ml-md-0,\n  .mx-md-0 {\n    margin-left: 0 !important; }\n  .m-md-1 {\n    margin: 0.25rem !important; }\n  .mt-md-1,\n  .my-md-1 {\n    margin-top: 0.25rem !important; }\n  .mr-md-1,\n  .mx-md-1 {\n    margin-right: 0.25rem !important; }\n  .mb-md-1,\n  .my-md-1 {\n    margin-bottom: 0.25rem !important; }\n  .ml-md-1,\n  .mx-md-1 {\n    margin-left: 0.25rem !important; }\n  .m-md-2 {\n    margin: 0.5rem !important; }\n  .mt-md-2,\n  .my-md-2 {\n    margin-top: 0.5rem !important; }\n  .mr-md-2,\n  .mx-md-2 {\n    margin-right: 0.5rem !important; }\n  .mb-md-2,\n  .my-md-2 {\n    margin-bottom: 0.5rem !important; }\n  .ml-md-2,\n  .mx-md-2 {\n    margin-left: 0.5rem !important; }\n  .m-md-3 {\n    margin: 1rem !important; }\n  .mt-md-3,\n  .my-md-3 {\n    margin-top: 1rem !important; }\n  .mr-md-3,\n  .mx-md-3 {\n    margin-right: 1rem !important; }\n  .mb-md-3,\n  .my-md-3 {\n    margin-bottom: 1rem !important; }\n  .ml-md-3,\n  .mx-md-3 {\n    margin-left: 1rem !important; }\n  .m-md-4 {\n    margin: 1.5rem !important; }\n  .mt-md-4,\n  .my-md-4 {\n    margin-top: 1.5rem !important; }\n  .mr-md-4,\n  .mx-md-4 {\n    margin-right: 1.5rem !important; }\n  .mb-md-4,\n  .my-md-4 {\n    margin-bottom: 1.5rem !important; }\n  .ml-md-4,\n  .mx-md-4 {\n    margin-left: 1.5rem !important; }\n  .m-md-5 {\n    margin: 3rem !important; }\n  .mt-md-5,\n  .my-md-5 {\n    margin-top: 3rem !important; }\n  .mr-md-5,\n  .mx-md-5 {\n    margin-right: 3rem !important; }\n  .mb-md-5,\n  .my-md-5 {\n    margin-bottom: 3rem !important; }\n  .ml-md-5,\n  .mx-md-5 {\n    margin-left: 3rem !important; }\n  .p-md-0 {\n    padding: 0 !important; }\n  .pt-md-0,\n  .py-md-0 {\n    padding-top: 0 !important; }\n  .pr-md-0,\n  .px-md-0 {\n    padding-right: 0 !important; }\n  .pb-md-0,\n  .py-md-0 {\n    padding-bottom: 0 !important; }\n  .pl-md-0,\n  .px-md-0 {\n    padding-left: 0 !important; }\n  .p-md-1 {\n    padding: 0.25rem !important; }\n  .pt-md-1,\n  .py-md-1 {\n    padding-top: 0.25rem !important; }\n  .pr-md-1,\n  .px-md-1 {\n    padding-right: 0.25rem !important; }\n  .pb-md-1,\n  .py-md-1 {\n    padding-bottom: 0.25rem !important; }\n  .pl-md-1,\n  .px-md-1 {\n    padding-left: 0.25rem !important; }\n  .p-md-2 {\n    padding: 0.5rem !important; }\n  .pt-md-2,\n  .py-md-2 {\n    padding-top: 0.5rem !important; }\n  .pr-md-2,\n  .px-md-2 {\n    padding-right: 0.5rem !important; }\n  .pb-md-2,\n  .py-md-2 {\n    padding-bottom: 0.5rem !important; }\n  .pl-md-2,\n  .px-md-2 {\n    padding-left: 0.5rem !important; }\n  .p-md-3 {\n    padding: 1rem !important; }\n  .pt-md-3,\n  .py-md-3 {\n    padding-top: 1rem !important; }\n  .pr-md-3,\n  .px-md-3 {\n    padding-right: 1rem !important; }\n  .pb-md-3,\n  .py-md-3 {\n    padding-bottom: 1rem !important; }\n  .pl-md-3,\n  .px-md-3 {\n    padding-left: 1rem !important; }\n  .p-md-4 {\n    padding: 1.5rem !important; }\n  .pt-md-4,\n  .py-md-4 {\n    padding-top: 1.5rem !important; }\n  .pr-md-4,\n  .px-md-4 {\n    padding-right: 1.5rem !important; }\n  .pb-md-4,\n  .py-md-4 {\n    padding-bottom: 1.5rem !important; }\n  .pl-md-4,\n  .px-md-4 {\n    padding-left: 1.5rem !important; }\n  .p-md-5 {\n    padding: 3rem !important; }\n  .pt-md-5,\n  .py-md-5 {\n    padding-top: 3rem !important; }\n  .pr-md-5,\n  .px-md-5 {\n    padding-right: 3rem !important; }\n  .pb-md-5,\n  .py-md-5 {\n    padding-bottom: 3rem !important; }\n  .pl-md-5,\n  .px-md-5 {\n    padding-left: 3rem !important; }\n  .m-md-auto {\n    margin: auto !important; }\n  .mt-md-auto,\n  .my-md-auto {\n    margin-top: auto !important; }\n  .mr-md-auto,\n  .mx-md-auto {\n    margin-right: auto !important; }\n  .mb-md-auto,\n  .my-md-auto {\n    margin-bottom: auto !important; }\n  .ml-md-auto,\n  .mx-md-auto {\n    margin-left: auto !important; } }\n\n@media (min-width: 992px) {\n  .m-lg-0 {\n    margin: 0 !important; }\n  .mt-lg-0,\n  .my-lg-0 {\n    margin-top: 0 !important; }\n  .mr-lg-0,\n  .mx-lg-0 {\n    margin-right: 0 !important; }\n  .mb-lg-0,\n  .my-lg-0 {\n    margin-bottom: 0 !important; }\n  .ml-lg-0,\n  .mx-lg-0 {\n    margin-left: 0 !important; }\n  .m-lg-1 {\n    margin: 0.25rem !important; }\n  .mt-lg-1,\n  .my-lg-1 {\n    margin-top: 0.25rem !important; }\n  .mr-lg-1,\n  .mx-lg-1 {\n    margin-right: 0.25rem !important; }\n  .mb-lg-1,\n  .my-lg-1 {\n    margin-bottom: 0.25rem !important; }\n  .ml-lg-1,\n  .mx-lg-1 {\n    margin-left: 0.25rem !important; }\n  .m-lg-2 {\n    margin: 0.5rem !important; }\n  .mt-lg-2,\n  .my-lg-2 {\n    margin-top: 0.5rem !important; }\n  .mr-lg-2,\n  .mx-lg-2 {\n    margin-right: 0.5rem !important; }\n  .mb-lg-2,\n  .my-lg-2 {\n    margin-bottom: 0.5rem !important; }\n  .ml-lg-2,\n  .mx-lg-2 {\n    margin-left: 0.5rem !important; }\n  .m-lg-3 {\n    margin: 1rem !important; }\n  .mt-lg-3,\n  .my-lg-3 {\n    margin-top: 1rem !important; }\n  .mr-lg-3,\n  .mx-lg-3 {\n    margin-right: 1rem !important; }\n  .mb-lg-3,\n  .my-lg-3 {\n    margin-bottom: 1rem !important; }\n  .ml-lg-3,\n  .mx-lg-3 {\n    margin-left: 1rem !important; }\n  .m-lg-4 {\n    margin: 1.5rem !important; }\n  .mt-lg-4,\n  .my-lg-4 {\n    margin-top: 1.5rem !important; }\n  .mr-lg-4,\n  .mx-lg-4 {\n    margin-right: 1.5rem !important; }\n  .mb-lg-4,\n  .my-lg-4 {\n    margin-bottom: 1.5rem !important; }\n  .ml-lg-4,\n  .mx-lg-4 {\n    margin-left: 1.5rem !important; }\n  .m-lg-5 {\n    margin: 3rem !important; }\n  .mt-lg-5,\n  .my-lg-5 {\n    margin-top: 3rem !important; }\n  .mr-lg-5,\n  .mx-lg-5 {\n    margin-right: 3rem !important; }\n  .mb-lg-5,\n  .my-lg-5 {\n    margin-bottom: 3rem !important; }\n  .ml-lg-5,\n  .mx-lg-5 {\n    margin-left: 3rem !important; }\n  .p-lg-0 {\n    padding: 0 !important; }\n  .pt-lg-0,\n  .py-lg-0 {\n    padding-top: 0 !important; }\n  .pr-lg-0,\n  .px-lg-0 {\n    padding-right: 0 !important; }\n  .pb-lg-0,\n  .py-lg-0 {\n    padding-bottom: 0 !important; }\n  .pl-lg-0,\n  .px-lg-0 {\n    padding-left: 0 !important; }\n  .p-lg-1 {\n    padding: 0.25rem !important; }\n  .pt-lg-1,\n  .py-lg-1 {\n    padding-top: 0.25rem !important; }\n  .pr-lg-1,\n  .px-lg-1 {\n    padding-right: 0.25rem !important; }\n  .pb-lg-1,\n  .py-lg-1 {\n    padding-bottom: 0.25rem !important; }\n  .pl-lg-1,\n  .px-lg-1 {\n    padding-left: 0.25rem !important; }\n  .p-lg-2 {\n    padding: 0.5rem !important; }\n  .pt-lg-2,\n  .py-lg-2 {\n    padding-top: 0.5rem !important; }\n  .pr-lg-2,\n  .px-lg-2 {\n    padding-right: 0.5rem !important; }\n  .pb-lg-2,\n  .py-lg-2 {\n    padding-bottom: 0.5rem !important; }\n  .pl-lg-2,\n  .px-lg-2 {\n    padding-left: 0.5rem !important; }\n  .p-lg-3 {\n    padding: 1rem !important; }\n  .pt-lg-3,\n  .py-lg-3 {\n    padding-top: 1rem !important; }\n  .pr-lg-3,\n  .px-lg-3 {\n    padding-right: 1rem !important; }\n  .pb-lg-3,\n  .py-lg-3 {\n    padding-bottom: 1rem !important; }\n  .pl-lg-3,\n  .px-lg-3 {\n    padding-left: 1rem !important; }\n  .p-lg-4 {\n    padding: 1.5rem !important; }\n  .pt-lg-4,\n  .py-lg-4 {\n    padding-top: 1.5rem !important; }\n  .pr-lg-4,\n  .px-lg-4 {\n    padding-right: 1.5rem !important; }\n  .pb-lg-4,\n  .py-lg-4 {\n    padding-bottom: 1.5rem !important; }\n  .pl-lg-4,\n  .px-lg-4 {\n    padding-left: 1.5rem !important; }\n  .p-lg-5 {\n    padding: 3rem !important; }\n  .pt-lg-5,\n  .py-lg-5 {\n    padding-top: 3rem !important; }\n  .pr-lg-5,\n  .px-lg-5 {\n    padding-right: 3rem !important; }\n  .pb-lg-5,\n  .py-lg-5 {\n    padding-bottom: 3rem !important; }\n  .pl-lg-5,\n  .px-lg-5 {\n    padding-left: 3rem !important; }\n  .m-lg-auto {\n    margin: auto !important; }\n  .mt-lg-auto,\n  .my-lg-auto {\n    margin-top: auto !important; }\n  .mr-lg-auto,\n  .mx-lg-auto {\n    margin-right: auto !important; }\n  .mb-lg-auto,\n  .my-lg-auto {\n    margin-bottom: auto !important; }\n  .ml-lg-auto,\n  .mx-lg-auto {\n    margin-left: auto !important; } }\n\n@media (min-width: 1200px) {\n  .m-xl-0 {\n    margin: 0 !important; }\n  .mt-xl-0,\n  .my-xl-0 {\n    margin-top: 0 !important; }\n  .mr-xl-0,\n  .mx-xl-0 {\n    margin-right: 0 !important; }\n  .mb-xl-0,\n  .my-xl-0 {\n    margin-bottom: 0 !important; }\n  .ml-xl-0,\n  .mx-xl-0 {\n    margin-left: 0 !important; }\n  .m-xl-1 {\n    margin: 0.25rem !important; }\n  .mt-xl-1,\n  .my-xl-1 {\n    margin-top: 0.25rem !important; }\n  .mr-xl-1,\n  .mx-xl-1 {\n    margin-right: 0.25rem !important; }\n  .mb-xl-1,\n  .my-xl-1 {\n    margin-bottom: 0.25rem !important; }\n  .ml-xl-1,\n  .mx-xl-1 {\n    margin-left: 0.25rem !important; }\n  .m-xl-2 {\n    margin: 0.5rem !important; }\n  .mt-xl-2,\n  .my-xl-2 {\n    margin-top: 0.5rem !important; }\n  .mr-xl-2,\n  .mx-xl-2 {\n    margin-right: 0.5rem !important; }\n  .mb-xl-2,\n  .my-xl-2 {\n    margin-bottom: 0.5rem !important; }\n  .ml-xl-2,\n  .mx-xl-2 {\n    margin-left: 0.5rem !important; }\n  .m-xl-3 {\n    margin: 1rem !important; }\n  .mt-xl-3,\n  .my-xl-3 {\n    margin-top: 1rem !important; }\n  .mr-xl-3,\n  .mx-xl-3 {\n    margin-right: 1rem !important; }\n  .mb-xl-3,\n  .my-xl-3 {\n    margin-bottom: 1rem !important; }\n  .ml-xl-3,\n  .mx-xl-3 {\n    margin-left: 1rem !important; }\n  .m-xl-4 {\n    margin: 1.5rem !important; }\n  .mt-xl-4,\n  .my-xl-4 {\n    margin-top: 1.5rem !important; }\n  .mr-xl-4,\n  .mx-xl-4 {\n    margin-right: 1.5rem !important; }\n  .mb-xl-4,\n  .my-xl-4 {\n    margin-bottom: 1.5rem !important; }\n  .ml-xl-4,\n  .mx-xl-4 {\n    margin-left: 1.5rem !important; }\n  .m-xl-5 {\n    margin: 3rem !important; }\n  .mt-xl-5,\n  .my-xl-5 {\n    margin-top: 3rem !important; }\n  .mr-xl-5,\n  .mx-xl-5 {\n    margin-right: 3rem !important; }\n  .mb-xl-5,\n  .my-xl-5 {\n    margin-bottom: 3rem !important; }\n  .ml-xl-5,\n  .mx-xl-5 {\n    margin-left: 3rem !important; }\n  .p-xl-0 {\n    padding: 0 !important; }\n  .pt-xl-0,\n  .py-xl-0 {\n    padding-top: 0 !important; }\n  .pr-xl-0,\n  .px-xl-0 {\n    padding-right: 0 !important; }\n  .pb-xl-0,\n  .py-xl-0 {\n    padding-bottom: 0 !important; }\n  .pl-xl-0,\n  .px-xl-0 {\n    padding-left: 0 !important; }\n  .p-xl-1 {\n    padding: 0.25rem !important; }\n  .pt-xl-1,\n  .py-xl-1 {\n    padding-top: 0.25rem !important; }\n  .pr-xl-1,\n  .px-xl-1 {\n    padding-right: 0.25rem !important; }\n  .pb-xl-1,\n  .py-xl-1 {\n    padding-bottom: 0.25rem !important; }\n  .pl-xl-1,\n  .px-xl-1 {\n    padding-left: 0.25rem !important; }\n  .p-xl-2 {\n    padding: 0.5rem !important; }\n  .pt-xl-2,\n  .py-xl-2 {\n    padding-top: 0.5rem !important; }\n  .pr-xl-2,\n  .px-xl-2 {\n    padding-right: 0.5rem !important; }\n  .pb-xl-2,\n  .py-xl-2 {\n    padding-bottom: 0.5rem !important; }\n  .pl-xl-2,\n  .px-xl-2 {\n    padding-left: 0.5rem !important; }\n  .p-xl-3 {\n    padding: 1rem !important; }\n  .pt-xl-3,\n  .py-xl-3 {\n    padding-top: 1rem !important; }\n  .pr-xl-3,\n  .px-xl-3 {\n    padding-right: 1rem !important; }\n  .pb-xl-3,\n  .py-xl-3 {\n    padding-bottom: 1rem !important; }\n  .pl-xl-3,\n  .px-xl-3 {\n    padding-left: 1rem !important; }\n  .p-xl-4 {\n    padding: 1.5rem !important; }\n  .pt-xl-4,\n  .py-xl-4 {\n    padding-top: 1.5rem !important; }\n  .pr-xl-4,\n  .px-xl-4 {\n    padding-right: 1.5rem !important; }\n  .pb-xl-4,\n  .py-xl-4 {\n    padding-bottom: 1.5rem !important; }\n  .pl-xl-4,\n  .px-xl-4 {\n    padding-left: 1.5rem !important; }\n  .p-xl-5 {\n    padding: 3rem !important; }\n  .pt-xl-5,\n  .py-xl-5 {\n    padding-top: 3rem !important; }\n  .pr-xl-5,\n  .px-xl-5 {\n    padding-right: 3rem !important; }\n  .pb-xl-5,\n  .py-xl-5 {\n    padding-bottom: 3rem !important; }\n  .pl-xl-5,\n  .px-xl-5 {\n    padding-left: 3rem !important; }\n  .m-xl-auto {\n    margin: auto !important; }\n  .mt-xl-auto,\n  .my-xl-auto {\n    margin-top: auto !important; }\n  .mr-xl-auto,\n  .mx-xl-auto {\n    margin-right: auto !important; }\n  .mb-xl-auto,\n  .my-xl-auto {\n    margin-bottom: auto !important; }\n  .ml-xl-auto,\n  .mx-xl-auto {\n    margin-left: auto !important; } }\n"
  },
  {
    "path": "public/user/css/bootstrap/bootstrap-reboot.css",
    "content": "/*!\n * Bootstrap Reboot v4.1.0 (https://getbootstrap.com/)\n * Copyright 2011-2018 The Bootstrap Authors\n * Copyright 2011-2018 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)\n */\n*,\n*::before,\n*::after {\n  -webkit-box-sizing: border-box;\n  box-sizing: border-box; }\n\nhtml {\n  font-family: sans-serif;\n  line-height: 1.15;\n  -webkit-text-size-adjust: 100%;\n  -ms-text-size-adjust: 100%;\n  -ms-overflow-style: scrollbar;\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0); }\n\n@-ms-viewport {\n  width: device-width; }\n\narticle, aside, dialog, figcaption, figure, footer, header, hgroup, main, nav, section {\n  display: block; }\n\nbody {\n  margin: 0;\n  font-family: \"Work Sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n  font-size: 1rem;\n  font-weight: 400;\n  line-height: 1.5;\n  color: #212529;\n  text-align: left;\n  background-color: #fff; }\n\n[tabindex=\"-1\"]:focus {\n  outline: 0 !important; }\n\nhr {\n  -webkit-box-sizing: content-box;\n  box-sizing: content-box;\n  height: 0;\n  overflow: visible; }\n\nh1, h2, h3, h4, h5, h6 {\n  margin-top: 0;\n  margin-bottom: 0.5rem; }\n\np {\n  margin-top: 0;\n  margin-bottom: 1rem; }\n\nabbr[title],\nabbr[data-original-title] {\n  text-decoration: underline;\n  -webkit-text-decoration: underline dotted;\n  text-decoration: underline dotted;\n  cursor: help;\n  border-bottom: 0; }\n\naddress {\n  margin-bottom: 1rem;\n  font-style: normal;\n  line-height: inherit; }\n\nol,\nul,\ndl {\n  margin-top: 0;\n  margin-bottom: 1rem; }\n\nol ol,\nul ul,\nol ul,\nul ol {\n  margin-bottom: 0; }\n\ndt {\n  font-weight: 700; }\n\ndd {\n  margin-bottom: .5rem;\n  margin-left: 0; }\n\nblockquote {\n  margin: 0 0 1rem; }\n\ndfn {\n  font-style: italic; }\n\nb,\nstrong {\n  font-weight: bolder; }\n\nsmall {\n  font-size: 80%; }\n\nsub,\nsup {\n  position: relative;\n  font-size: 75%;\n  line-height: 0;\n  vertical-align: baseline; }\n\nsub {\n  bottom: -.25em; }\n\nsup {\n  top: -.5em; }\n\na {\n  color: #78d5ef;\n  text-decoration: none;\n  background-color: transparent;\n  -webkit-text-decoration-skip: objects; }\n  a:hover {\n    color: #34c0e7;\n    text-decoration: underline; }\n\na:not([href]):not([tabindex]) {\n  color: inherit;\n  text-decoration: none; }\n  a:not([href]):not([tabindex]):hover, a:not([href]):not([tabindex]):focus {\n    color: inherit;\n    text-decoration: none; }\n  a:not([href]):not([tabindex]):focus {\n    outline: 0; }\n\npre,\ncode,\nkbd,\nsamp {\n  font-family: monospace, monospace;\n  font-size: 1em; }\n\npre {\n  margin-top: 0;\n  margin-bottom: 1rem;\n  overflow: auto;\n  -ms-overflow-style: scrollbar; }\n\nfigure {\n  margin: 0 0 1rem; }\n\nimg {\n  vertical-align: middle;\n  border-style: none; }\n\nsvg:not(:root) {\n  overflow: hidden; }\n\ntable {\n  border-collapse: collapse; }\n\ncaption {\n  padding-top: 0.75rem;\n  padding-bottom: 0.75rem;\n  color: #6c757d;\n  text-align: left;\n  caption-side: bottom; }\n\nth {\n  text-align: inherit; }\n\nlabel {\n  display: inline-block;\n  margin-bottom: 0.5rem; }\n\nbutton {\n  border-radius: 0; }\n\nbutton:focus {\n  outline: 1px dotted;\n  outline: 5px auto -webkit-focus-ring-color; }\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n  margin: 0;\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit; }\n\nbutton,\ninput {\n  overflow: visible; }\n\nbutton,\nselect {\n  text-transform: none; }\n\nbutton,\nhtml [type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n  -webkit-appearance: button; }\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n  padding: 0;\n  border-style: none; }\n\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n  -webkit-box-sizing: border-box;\n  box-sizing: border-box;\n  padding: 0; }\n\ninput[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"] {\n  -webkit-appearance: listbox; }\n\ntextarea {\n  overflow: auto;\n  resize: vertical; }\n\nfieldset {\n  min-width: 0;\n  padding: 0;\n  margin: 0;\n  border: 0; }\n\nlegend {\n  display: block;\n  width: 100%;\n  max-width: 100%;\n  padding: 0;\n  margin-bottom: .5rem;\n  font-size: 1.5rem;\n  line-height: inherit;\n  color: inherit;\n  white-space: normal; }\n\nprogress {\n  vertical-align: baseline; }\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n  height: auto; }\n\n[type=\"search\"] {\n  outline-offset: -2px;\n  -webkit-appearance: none; }\n\n[type=\"search\"]::-webkit-search-cancel-button,\n[type=\"search\"]::-webkit-search-decoration {\n  -webkit-appearance: none; }\n\n::-webkit-file-upload-button {\n  font: inherit;\n  -webkit-appearance: button; }\n\noutput {\n  display: inline-block; }\n\nsummary {\n  display: list-item;\n  cursor: pointer; }\n\ntemplate {\n  display: none; }\n\n[hidden] {\n  display: none !important; }\n"
  },
  {
    "path": "public/user/css/bootstrap-datepicker.css",
    "content": "/*!\n * Datepicker for Bootstrap\n *\n * Copyright 2012 Stefan Petre\n * Improvements by Andrew Rowls\n * Licensed under the Apache License v2.0\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n */\n.datepicker {\n  padding: 4px;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px;\n  direction: ltr;\n  /*.dow {\n\t\tborder-top: 1px solid #ddd !important;\n\t}*/\n}\n.datepicker-inline {\n  width: 220px;\n}\n.datepicker.datepicker-rtl {\n  direction: rtl;\n}\n.datepicker.datepicker-rtl table tr td span {\n  float: right;\n}\n.datepicker-dropdown {\n  top: 0;\n  left: 0;\n}\n.datepicker-dropdown:before {\n  content: '';\n  display: inline-block;\n  border-left: 7px solid transparent;\n  border-right: 7px solid transparent;\n  border-bottom: 7px solid #ccc;\n  border-top: 0;\n  border-bottom-color: rgba(0, 0, 0, 0.2);\n  position: absolute;\n}\n.datepicker-dropdown:after {\n  content: '';\n  display: inline-block;\n  border-left: 6px solid transparent;\n  border-right: 6px solid transparent;\n  border-bottom: 6px solid #ffffff;\n  border-top: 0;\n  position: absolute;\n}\n.datepicker-dropdown.datepicker-orient-left:before {\n  left: 6px;\n}\n.datepicker-dropdown.datepicker-orient-left:after {\n  left: 7px;\n}\n.datepicker-dropdown.datepicker-orient-right:before {\n  right: 6px;\n}\n.datepicker-dropdown.datepicker-orient-right:after {\n  right: 7px;\n}\n.datepicker-dropdown.datepicker-orient-top:before {\n  top: -7px;\n}\n.datepicker-dropdown.datepicker-orient-top:after {\n  top: -6px;\n}\n.datepicker-dropdown.datepicker-orient-bottom:before {\n  bottom: -7px;\n  border-bottom: 0;\n  border-top: 7px solid #999;\n}\n.datepicker-dropdown.datepicker-orient-bottom:after {\n  bottom: -6px;\n  border-bottom: 0;\n  border-top: 6px solid #ffffff;\n}\n.datepicker > div {\n  display: none;\n}\n.datepicker.days div.datepicker-days {\n  display: block;\n}\n.datepicker.months div.datepicker-months {\n  display: block;\n}\n.datepicker.years div.datepicker-years {\n  display: block;\n}\n.datepicker table {\n  margin: 0;\n  -webkit-touch-callout: none;\n  -webkit-user-select: none;\n  -khtml-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  user-select: none;\n}\n.datepicker td,\n.datepicker th {\n  text-align: center;\n  width: 20px;\n  height: 20px;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px;\n  border: none;\n}\n.table-striped .datepicker table tr td,\n.table-striped .datepicker table tr th {\n  background-color: transparent;\n}\n.datepicker table tr td.day:hover,\n.datepicker table tr td.day.focused {\n  background: #eeeeee;\n  cursor: pointer;\n}\n.datepicker table tr td.old,\n.datepicker table tr td.new {\n  color: #999999;\n}\n.datepicker table tr td.disabled,\n.datepicker table tr td.disabled:hover {\n  background: none;\n  color: #999999;\n  cursor: default;\n}\n.datepicker table tr td.today,\n.datepicker table tr td.today:hover,\n.datepicker table tr td.today.disabled,\n.datepicker table tr td.today.disabled:hover {\n  background-color: #fde19a;\n  background-image: -moz-linear-gradient(top, #fdd49a, #fdf59a);\n  background-image: -ms-linear-gradient(top, #fdd49a, #fdf59a);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdd49a), to(#fdf59a));\n  background-image: -webkit-linear-gradient(top, #fdd49a, #fdf59a);\n  background-image: -o-linear-gradient(top, #fdd49a, #fdf59a);\n  background-image: linear-gradient(top, #fdd49a, #fdf59a);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a', endColorstr='#fdf59a', GradientType=0);\n  border-color: #fdf59a #fdf59a #fbed50;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n  color: #000;\n}\n.datepicker table tr td.today:hover,\n.datepicker table tr td.today:hover:hover,\n.datepicker table tr td.today.disabled:hover,\n.datepicker table tr td.today.disabled:hover:hover,\n.datepicker table tr td.today:active,\n.datepicker table tr td.today:hover:active,\n.datepicker table tr td.today.disabled:active,\n.datepicker table tr td.today.disabled:hover:active,\n.datepicker table tr td.today.active,\n.datepicker table tr td.today:hover.active,\n.datepicker table tr td.today.disabled.active,\n.datepicker table tr td.today.disabled:hover.active,\n.datepicker table tr td.today.disabled,\n.datepicker table tr td.today:hover.disabled,\n.datepicker table tr td.today.disabled.disabled,\n.datepicker table tr td.today.disabled:hover.disabled,\n.datepicker table tr td.today[disabled],\n.datepicker table tr td.today:hover[disabled],\n.datepicker table tr td.today.disabled[disabled],\n.datepicker table tr td.today.disabled:hover[disabled] {\n  background-color: #fdf59a;\n}\n.datepicker table tr td.today:active,\n.datepicker table tr td.today:hover:active,\n.datepicker table tr td.today.disabled:active,\n.datepicker table tr td.today.disabled:hover:active,\n.datepicker table tr td.today.active,\n.datepicker table tr td.today:hover.active,\n.datepicker table tr td.today.disabled.active,\n.datepicker table tr td.today.disabled:hover.active {\n  background-color: #fbf069 \\9;\n}\n.datepicker table tr td.today:hover:hover {\n  color: #000;\n}\n.datepicker table tr td.today.active:hover {\n  color: #fff;\n}\n.datepicker table tr td.range,\n.datepicker table tr td.range:hover,\n.datepicker table tr td.range.disabled,\n.datepicker table tr td.range.disabled:hover {\n  background: #eeeeee;\n  -webkit-border-radius: 0;\n  -moz-border-radius: 0;\n  border-radius: 0;\n}\n.datepicker table tr td.range.today,\n.datepicker table tr td.range.today:hover,\n.datepicker table tr td.range.today.disabled,\n.datepicker table tr td.range.today.disabled:hover {\n  background-color: #f3d17a;\n  background-image: -moz-linear-gradient(top, #f3c17a, #f3e97a);\n  background-image: -ms-linear-gradient(top, #f3c17a, #f3e97a);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f3c17a), to(#f3e97a));\n  background-image: -webkit-linear-gradient(top, #f3c17a, #f3e97a);\n  background-image: -o-linear-gradient(top, #f3c17a, #f3e97a);\n  background-image: linear-gradient(top, #f3c17a, #f3e97a);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3c17a', endColorstr='#f3e97a', GradientType=0);\n  border-color: #f3e97a #f3e97a #edde34;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n  -webkit-border-radius: 0;\n  -moz-border-radius: 0;\n  border-radius: 0;\n}\n.datepicker table tr td.range.today:hover,\n.datepicker table tr td.range.today:hover:hover,\n.datepicker table tr td.range.today.disabled:hover,\n.datepicker table tr td.range.today.disabled:hover:hover,\n.datepicker table tr td.range.today:active,\n.datepicker table tr td.range.today:hover:active,\n.datepicker table tr td.range.today.disabled:active,\n.datepicker table tr td.range.today.disabled:hover:active,\n.datepicker table tr td.range.today.active,\n.datepicker table tr td.range.today:hover.active,\n.datepicker table tr td.range.today.disabled.active,\n.datepicker table tr td.range.today.disabled:hover.active,\n.datepicker table tr td.range.today.disabled,\n.datepicker table tr td.range.today:hover.disabled,\n.datepicker table tr td.range.today.disabled.disabled,\n.datepicker table tr td.range.today.disabled:hover.disabled,\n.datepicker table tr td.range.today[disabled],\n.datepicker table tr td.range.today:hover[disabled],\n.datepicker table tr td.range.today.disabled[disabled],\n.datepicker table tr td.range.today.disabled:hover[disabled] {\n  background-color: #f3e97a;\n}\n.datepicker table tr td.range.today:active,\n.datepicker table tr td.range.today:hover:active,\n.datepicker table tr td.range.today.disabled:active,\n.datepicker table tr td.range.today.disabled:hover:active,\n.datepicker table tr td.range.today.active,\n.datepicker table tr td.range.today:hover.active,\n.datepicker table tr td.range.today.disabled.active,\n.datepicker table tr td.range.today.disabled:hover.active {\n  background-color: #efe24b \\9;\n}\n.datepicker table tr td.selected,\n.datepicker table tr td.selected:hover,\n.datepicker table tr td.selected.disabled,\n.datepicker table tr td.selected.disabled:hover {\n  background-color: #9e9e9e;\n  background-image: -moz-linear-gradient(top, #b3b3b3, #808080);\n  background-image: -ms-linear-gradient(top, #b3b3b3, #808080);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#b3b3b3), to(#808080));\n  background-image: -webkit-linear-gradient(top, #b3b3b3, #808080);\n  background-image: -o-linear-gradient(top, #b3b3b3, #808080);\n  background-image: linear-gradient(top, #b3b3b3, #808080);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#b3b3b3', endColorstr='#808080', GradientType=0);\n  border-color: #808080 #808080 #595959;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n  color: #fff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.datepicker table tr td.selected:hover,\n.datepicker table tr td.selected:hover:hover,\n.datepicker table tr td.selected.disabled:hover,\n.datepicker table tr td.selected.disabled:hover:hover,\n.datepicker table tr td.selected:active,\n.datepicker table tr td.selected:hover:active,\n.datepicker table tr td.selected.disabled:active,\n.datepicker table tr td.selected.disabled:hover:active,\n.datepicker table tr td.selected.active,\n.datepicker table tr td.selected:hover.active,\n.datepicker table tr td.selected.disabled.active,\n.datepicker table tr td.selected.disabled:hover.active,\n.datepicker table tr td.selected.disabled,\n.datepicker table tr td.selected:hover.disabled,\n.datepicker table tr td.selected.disabled.disabled,\n.datepicker table tr td.selected.disabled:hover.disabled,\n.datepicker table tr td.selected[disabled],\n.datepicker table tr td.selected:hover[disabled],\n.datepicker table tr td.selected.disabled[disabled],\n.datepicker table tr td.selected.disabled:hover[disabled] {\n  background-color: #808080;\n}\n.datepicker table tr td.selected:active,\n.datepicker table tr td.selected:hover:active,\n.datepicker table tr td.selected.disabled:active,\n.datepicker table tr td.selected.disabled:hover:active,\n.datepicker table tr td.selected.active,\n.datepicker table tr td.selected:hover.active,\n.datepicker table tr td.selected.disabled.active,\n.datepicker table tr td.selected.disabled:hover.active {\n  background-color: #666666 \\9;\n}\n.datepicker table tr td.active,\n.datepicker table tr td.active:hover,\n.datepicker table tr td.active.disabled,\n.datepicker table tr td.active.disabled:hover {\n  background-color: #006dcc;\n  background-image: -moz-linear-gradient(top, #0088cc, #0044cc);\n  background-image: -ms-linear-gradient(top, #0088cc, #0044cc);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));\n  background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);\n  background-image: -o-linear-gradient(top, #0088cc, #0044cc);\n  background-image: linear-gradient(top, #0088cc, #0044cc);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);\n  border-color: #0044cc #0044cc #002a80;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n  color: #fff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.datepicker table tr td.active:hover,\n.datepicker table tr td.active:hover:hover,\n.datepicker table tr td.active.disabled:hover,\n.datepicker table tr td.active.disabled:hover:hover,\n.datepicker table tr td.active:active,\n.datepicker table tr td.active:hover:active,\n.datepicker table tr td.active.disabled:active,\n.datepicker table tr td.active.disabled:hover:active,\n.datepicker table tr td.active.active,\n.datepicker table tr td.active:hover.active,\n.datepicker table tr td.active.disabled.active,\n.datepicker table tr td.active.disabled:hover.active,\n.datepicker table tr td.active.disabled,\n.datepicker table tr td.active:hover.disabled,\n.datepicker table tr td.active.disabled.disabled,\n.datepicker table tr td.active.disabled:hover.disabled,\n.datepicker table tr td.active[disabled],\n.datepicker table tr td.active:hover[disabled],\n.datepicker table tr td.active.disabled[disabled],\n.datepicker table tr td.active.disabled:hover[disabled] {\n  background-color: #0044cc;\n}\n.datepicker table tr td.active:active,\n.datepicker table tr td.active:hover:active,\n.datepicker table tr td.active.disabled:active,\n.datepicker table tr td.active.disabled:hover:active,\n.datepicker table tr td.active.active,\n.datepicker table tr td.active:hover.active,\n.datepicker table tr td.active.disabled.active,\n.datepicker table tr td.active.disabled:hover.active {\n  background-color: #003399 \\9;\n}\n.datepicker table tr td span {\n  display: block;\n  width: 23%;\n  height: 54px;\n  line-height: 54px;\n  float: left;\n  margin: 1%;\n  cursor: pointer;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px;\n}\n.datepicker table tr td span:hover {\n  background: #eeeeee;\n}\n.datepicker table tr td span.disabled,\n.datepicker table tr td span.disabled:hover {\n  background: none;\n  color: #999999;\n  cursor: default;\n}\n.datepicker table tr td span.active,\n.datepicker table tr td span.active:hover,\n.datepicker table tr td span.active.disabled,\n.datepicker table tr td span.active.disabled:hover {\n  background-color: #006dcc;\n  background-image: -moz-linear-gradient(top, #0088cc, #0044cc);\n  background-image: -ms-linear-gradient(top, #0088cc, #0044cc);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));\n  background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);\n  background-image: -o-linear-gradient(top, #0088cc, #0044cc);\n  background-image: linear-gradient(top, #0088cc, #0044cc);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);\n  border-color: #0044cc #0044cc #002a80;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n  color: #fff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.datepicker table tr td span.active:hover,\n.datepicker table tr td span.active:hover:hover,\n.datepicker table tr td span.active.disabled:hover,\n.datepicker table tr td span.active.disabled:hover:hover,\n.datepicker table tr td span.active:active,\n.datepicker table tr td span.active:hover:active,\n.datepicker table tr td span.active.disabled:active,\n.datepicker table tr td span.active.disabled:hover:active,\n.datepicker table tr td span.active.active,\n.datepicker table tr td span.active:hover.active,\n.datepicker table tr td span.active.disabled.active,\n.datepicker table tr td span.active.disabled:hover.active,\n.datepicker table tr td span.active.disabled,\n.datepicker table tr td span.active:hover.disabled,\n.datepicker table tr td span.active.disabled.disabled,\n.datepicker table tr td span.active.disabled:hover.disabled,\n.datepicker table tr td span.active[disabled],\n.datepicker table tr td span.active:hover[disabled],\n.datepicker table tr td span.active.disabled[disabled],\n.datepicker table tr td span.active.disabled:hover[disabled] {\n  background-color: #0044cc;\n}\n.datepicker table tr td span.active:active,\n.datepicker table tr td span.active:hover:active,\n.datepicker table tr td span.active.disabled:active,\n.datepicker table tr td span.active.disabled:hover:active,\n.datepicker table tr td span.active.active,\n.datepicker table tr td span.active:hover.active,\n.datepicker table tr td span.active.disabled.active,\n.datepicker table tr td span.active.disabled:hover.active {\n  background-color: #003399 \\9;\n}\n.datepicker table tr td span.old,\n.datepicker table tr td span.new {\n  color: #999999;\n}\n.datepicker th.datepicker-switch {\n  width: 145px;\n}\n.datepicker thead tr:first-child th,\n.datepicker tfoot tr th {\n  cursor: pointer;\n}\n.datepicker thead tr:first-child th:hover,\n.datepicker tfoot tr th:hover {\n  background: #eeeeee;\n}\n.datepicker .cw {\n  font-size: 10px;\n  width: 12px;\n  padding: 0 2px 0 5px;\n  vertical-align: middle;\n}\n.datepicker thead tr:first-child th.cw {\n  cursor: default;\n  background-color: transparent;\n}\n.input-append.date .add-on i,\n.input-prepend.date .add-on i {\n  cursor: pointer;\n  width: 16px;\n  height: 16px;\n}\n.input-daterange input {\n  text-align: center;\n}\n.input-daterange input:first-child {\n  -webkit-border-radius: 3px 0 0 3px;\n  -moz-border-radius: 3px 0 0 3px;\n  border-radius: 3px 0 0 3px;\n}\n.input-daterange input:last-child {\n  -webkit-border-radius: 0 3px 3px 0;\n  -moz-border-radius: 0 3px 3px 0;\n  border-radius: 0 3px 3px 0;\n}\n.input-daterange .add-on {\n  display: inline-block;\n  width: auto;\n  min-width: 16px;\n  height: 20px;\n  padding: 4px 5px;\n  font-weight: normal;\n  line-height: 20px;\n  text-align: center;\n  text-shadow: 0 1px 0 #ffffff;\n  vertical-align: middle;\n  background-color: #eeeeee;\n  border: 1px solid #ccc;\n  margin-left: -5px;\n  margin-right: -5px;\n}\n.datepicker.dropdown-menu {\n  position: absolute;\n  top: 100%;\n  left: 0;\n  z-index: 1000;\n  float: left;\n  display: none;\n  min-width: 160px;\n  list-style: none;\n  background-color: #ffffff;\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  -webkit-border-radius: 5px;\n  -moz-border-radius: 5px;\n  border-radius: 5px;\n  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n  -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n  -webkit-background-clip: padding-box;\n  -moz-background-clip: padding;\n  background-clip: padding-box;\n  *border-right-width: 2px;\n  *border-bottom-width: 2px;\n  color: #333333;\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-size: 13px;\n  line-height: 20px;\n}\n.datepicker.dropdown-menu th,\n.datepicker.dropdown-menu td {\n  padding: 4px 5px;\n}"
  },
  {
    "path": "public/user/css/css/bootstrap-reboot.css",
    "content": "/*!\n * Bootstrap Reboot v4.1.0 (https://getbootstrap.com/)\n * Copyright 2011-2018 The Bootstrap Authors\n * Copyright 2011-2018 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)\n */\n*,\n*::before,\n*::after {\n  -webkit-box-sizing: border-box;\n  box-sizing: border-box; }\n\nhtml {\n  font-family: sans-serif;\n  line-height: 1.15;\n  -webkit-text-size-adjust: 100%;\n  -ms-text-size-adjust: 100%;\n  -ms-overflow-style: scrollbar;\n  -webkit-tap-highlight-color: transparent; }\n\n@-ms-viewport {\n  width: device-width; }\n\narticle, aside, dialog, figcaption, figure, footer, header, hgroup, main, nav, section {\n  display: block; }\n\nbody {\n  margin: 0;\n  font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n  font-size: 1rem;\n  font-weight: 400;\n  line-height: 1.5;\n  color: #212529;\n  text-align: left;\n  background-color: #fff; }\n\n[tabindex=\"-1\"]:focus {\n  outline: 0 !important; }\n\nhr {\n  -webkit-box-sizing: content-box;\n  box-sizing: content-box;\n  height: 0;\n  overflow: visible; }\n\nh1, h2, h3, h4, h5, h6 {\n  margin-top: 0;\n  margin-bottom: 0.5rem; }\n\np {\n  margin-top: 0;\n  margin-bottom: 1rem; }\n\nabbr[title],\nabbr[data-original-title] {\n  text-decoration: underline;\n  -webkit-text-decoration: underline dotted;\n  text-decoration: underline dotted;\n  cursor: help;\n  border-bottom: 0; }\n\naddress {\n  margin-bottom: 1rem;\n  font-style: normal;\n  line-height: inherit; }\n\nol,\nul,\ndl {\n  margin-top: 0;\n  margin-bottom: 1rem; }\n\nol ol,\nul ul,\nol ul,\nul ol {\n  margin-bottom: 0; }\n\ndt {\n  font-weight: 700; }\n\ndd {\n  margin-bottom: .5rem;\n  margin-left: 0; }\n\nblockquote {\n  margin: 0 0 1rem; }\n\ndfn {\n  font-style: italic; }\n\nb,\nstrong {\n  font-weight: bolder; }\n\nsmall {\n  font-size: 80%; }\n\nsub,\nsup {\n  position: relative;\n  font-size: 75%;\n  line-height: 0;\n  vertical-align: baseline; }\n\nsub {\n  bottom: -.25em; }\n\nsup {\n  top: -.5em; }\n\na {\n  color: #007bff;\n  text-decoration: none;\n  background-color: transparent;\n  -webkit-text-decoration-skip: objects; }\n  a:hover {\n    color: #0056b3;\n    text-decoration: underline; }\n\na:not([href]):not([tabindex]) {\n  color: inherit;\n  text-decoration: none; }\n  a:not([href]):not([tabindex]):hover, a:not([href]):not([tabindex]):focus {\n    color: inherit;\n    text-decoration: none; }\n  a:not([href]):not([tabindex]):focus {\n    outline: 0; }\n\npre,\ncode,\nkbd,\nsamp {\n  font-family: monospace, monospace;\n  font-size: 1em; }\n\npre {\n  margin-top: 0;\n  margin-bottom: 1rem;\n  overflow: auto;\n  -ms-overflow-style: scrollbar; }\n\nfigure {\n  margin: 0 0 1rem; }\n\nimg {\n  vertical-align: middle;\n  border-style: none; }\n\nsvg:not(:root) {\n  overflow: hidden; }\n\ntable {\n  border-collapse: collapse; }\n\ncaption {\n  padding-top: 0.75rem;\n  padding-bottom: 0.75rem;\n  color: #6c757d;\n  text-align: left;\n  caption-side: bottom; }\n\nth {\n  text-align: inherit; }\n\nlabel {\n  display: inline-block;\n  margin-bottom: 0.5rem; }\n\nbutton {\n  border-radius: 0; }\n\nbutton:focus {\n  outline: 1px dotted;\n  outline: 5px auto -webkit-focus-ring-color; }\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n  margin: 0;\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit; }\n\nbutton,\ninput {\n  overflow: visible; }\n\nbutton,\nselect {\n  text-transform: none; }\n\nbutton,\nhtml [type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n  -webkit-appearance: button; }\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n  padding: 0;\n  border-style: none; }\n\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n  -webkit-box-sizing: border-box;\n  box-sizing: border-box;\n  padding: 0; }\n\ninput[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"] {\n  -webkit-appearance: listbox; }\n\ntextarea {\n  overflow: auto;\n  resize: vertical; }\n\nfieldset {\n  min-width: 0;\n  padding: 0;\n  margin: 0;\n  border: 0; }\n\nlegend {\n  display: block;\n  width: 100%;\n  max-width: 100%;\n  padding: 0;\n  margin-bottom: .5rem;\n  font-size: 1.5rem;\n  line-height: inherit;\n  color: inherit;\n  white-space: normal; }\n\nprogress {\n  vertical-align: baseline; }\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n  height: auto; }\n\n[type=\"search\"] {\n  outline-offset: -2px;\n  -webkit-appearance: none; }\n\n[type=\"search\"]::-webkit-search-cancel-button,\n[type=\"search\"]::-webkit-search-decoration {\n  -webkit-appearance: none; }\n\n::-webkit-file-upload-button {\n  font: inherit;\n  -webkit-appearance: button; }\n\noutput {\n  display: inline-block; }\n\nsummary {\n  display: list-item;\n  cursor: pointer; }\n\ntemplate {\n  display: none; }\n\n[hidden] {\n  display: none !important; }\n"
  },
  {
    "path": "public/user/css/css/mixins/_text-hide.css",
    "content": ""
  },
  {
    "path": "public/user/css/flaticon.css",
    "content": "\t/*\n  \tFlaticon icon font: Flaticon\n  \tCreation date: 22/06/2016 15:32\n  \t*/\n\n@font-face {\n  font-family: \"Flaticon\";\n  src: url(\"../icon-fonts/Flaticon.eot\");\n  src: url(\"../icon-fonts/Flaticon.eot?#iefix\") format(\"embedded-opentype\"),\n       url(\"../icon-fonts/Flaticon.woff\") format(\"woff\"),\n       url(\"../icon-fonts/Flaticon.ttf\") format(\"truetype\"),\n       url(\"../icon-fonts/Flaticon.svg#Flaticon\") format(\"svg\");\n  font-weight: normal;\n  font-style: normal;\n}\n\n@media screen and (-webkit-min-device-pixel-ratio:0) {\n  @font-face {\n    font-family: \"Flaticon\";\n    src: url(\"../icon-fonts/Flaticon.svg#Flaticon\") format(\"svg\");\n  }\n}\n\n[class^=\"flaticon-\"]:before, [class*=\" flaticon-\"]:before,\n[class^=\"flaticon-\"]:after, [class*=\" flaticon-\"]:after {\n  font-family: Flaticon;\n    font-style: normal;\n}\n\n.flaticon-add:before { content: \"\\f100\"; }\n.flaticon-bag:before { content: \"\\f101\"; }\n.flaticon-battery:before { content: \"\\f102\"; }\n.flaticon-bell:before { content: \"\\f103\"; }\n.flaticon-bluetooth:before { content: \"\\f104\"; }\n.flaticon-bookmark:before { content: \"\\f105\"; }\n.flaticon-briefcase:before { content: \"\\f106\"; }\n.flaticon-calendar:before { content: \"\\f107\"; }\n.flaticon-cancel:before { content: \"\\f108\"; }\n.flaticon-cancel-1:before { content: \"\\f109\"; }\n.flaticon-clip:before { content: \"\\f10a\"; }\n.flaticon-clock:before { content: \"\\f10b\"; }\n.flaticon-clock-1:before { content: \"\\f10c\"; }\n.flaticon-cloud:before { content: \"\\f10d\"; }\n.flaticon-correct:before { content: \"\\f10e\"; }\n.flaticon-credit-card:before { content: \"\\f10f\"; }\n.flaticon-cursor:before { content: \"\\f110\"; }\n.flaticon-cursor-1:before { content: \"\\f111\"; }\n.flaticon-cut:before { content: \"\\f112\"; }\n.flaticon-cutlery:before { content: \"\\f113\"; }\n.flaticon-down-arrow:before { content: \"\\f114\"; }\n.flaticon-download:before { content: \"\\f115\"; }\n.flaticon-edit:before { content: \"\\f116\"; }\n.flaticon-envelope:before { content: \"\\f117\"; }\n.flaticon-export:before { content: \"\\f118\"; }\n.flaticon-favorite:before { content: \"\\f119\"; }\n.flaticon-file:before { content: \"\\f11a\"; }\n.flaticon-folder:before { content: \"\\f11b\"; }\n.flaticon-forward:before { content: \"\\f11c\"; }\n.flaticon-gallery:before { content: \"\\f11d\"; }\n.flaticon-gamepad:before { content: \"\\f11e\"; }\n.flaticon-garbage:before { content: \"\\f11f\"; }\n.flaticon-headphones:before { content: \"\\f120\"; }\n.flaticon-heart:before { content: \"\\f121\"; }\n.flaticon-help:before { content: \"\\f122\"; }\n.flaticon-home:before { content: \"\\f123\"; }\n.flaticon-hourglass:before { content: \"\\f124\"; }\n.flaticon-info:before { content: \"\\f125\"; }\n.flaticon-layer:before { content: \"\\f126\"; }\n.flaticon-layout:before { content: \"\\f127\"; }\n.flaticon-left-arrow:before { content: \"\\f128\"; }\n.flaticon-left-arrow-1:before { content: \"\\f129\"; }\n.flaticon-lightning:before { content: \"\\f12a\"; }\n.flaticon-link:before { content: \"\\f12b\"; }\n.flaticon-logout:before { content: \"\\f12c\"; }\n.flaticon-magnet:before { content: \"\\f12d\"; }\n.flaticon-map:before { content: \"\\f12e\"; }\n.flaticon-menu:before { content: \"\\f12f\"; }\n.flaticon-monitor:before { content: \"\\f130\"; }\n.flaticon-moon:before { content: \"\\f131\"; }\n.flaticon-padnote:before { content: \"\\f132\"; }\n.flaticon-paint:before { content: \"\\f133\"; }\n.flaticon-pause:before { content: \"\\f134\"; }\n.flaticon-photo-camera:before { content: \"\\f135\"; }\n.flaticon-placeholder:before { content: \"\\f136\"; }\n.flaticon-play-button:before { content: \"\\f137\"; }\n.flaticon-power:before { content: \"\\f138\"; }\n.flaticon-presentation:before { content: \"\\f139\"; }\n.flaticon-printer:before { content: \"\\f13a\"; }\n.flaticon-profile:before { content: \"\\f13b\"; }\n.flaticon-prohibition:before { content: \"\\f13c\"; }\n.flaticon-push-pin:before { content: \"\\f13d\"; }\n.flaticon-puzzle:before { content: \"\\f13e\"; }\n.flaticon-refresh:before { content: \"\\f13f\"; }\n.flaticon-remove:before { content: \"\\f140\"; }\n.flaticon-rewind:before { content: \"\\f141\"; }\n.flaticon-right-arrow:before { content: \"\\f142\"; }\n.flaticon-right-arrow-1:before { content: \"\\f143\"; }\n.flaticon-rocket-launch:before { content: \"\\f144\"; }\n.flaticon-screen:before { content: \"\\f145\"; }\n.flaticon-search:before { content: \"\\f146\"; }\n.flaticon-settings:before { content: \"\\f147\"; }\n.flaticon-settings-1:before { content: \"\\f148\"; }\n.flaticon-settings-2:before { content: \"\\f149\"; }\n.flaticon-share:before { content: \"\\f14a\"; }\n.flaticon-shield:before { content: \"\\f14b\"; }\n.flaticon-shopping-cart:before { content: \"\\f14c\"; }\n.flaticon-shutter:before { content: \"\\f14d\"; }\n.flaticon-smartphone:before { content: \"\\f14e\"; }\n.flaticon-speech-bubble:before { content: \"\\f14f\"; }\n.flaticon-speedometer:before { content: \"\\f150\"; }\n.flaticon-stats:before { content: \"\\f151\"; }\n.flaticon-store:before { content: \"\\f152\"; }\n.flaticon-sun:before { content: \"\\f153\"; }\n.flaticon-switch:before { content: \"\\f154\"; }\n.flaticon-tag:before { content: \"\\f155\"; }\n.flaticon-target:before { content: \"\\f156\"; }\n.flaticon-timer:before { content: \"\\f157\"; }\n.flaticon-unlock:before { content: \"\\f158\"; }\n.flaticon-up-arrow:before { content: \"\\f159\"; }\n.flaticon-upload:before { content: \"\\f15a\"; }\n.flaticon-video:before { content: \"\\f15b\"; }\n.flaticon-video-camera:before { content: \"\\f15c\"; }\n.flaticon-visible:before { content: \"\\f15d\"; }\n.flaticon-voice-recorder:before { content: \"\\f15e\"; }\n.flaticon-volume:before { content: \"\\f15f\"; }\n.flaticon-waiting:before { content: \"\\f160\"; }\n.flaticon-wifi:before { content: \"\\f161\"; }\n.flaticon-zoom:before { content: \"\\f162\"; }\n.flaticon-zoom-out:before { content: \"\\f163\"; }\n"
  },
  {
    "path": "public/user/css/icomoon.css",
    "content": "@font-face {\n  font-family: 'icomoon';\n  src:  url('../fonts/icomoon/icomoon.eot?6tt51o');\n  src:  url('../fonts/icomoon/icomoon.eot?6tt51o#iefix') format('embedded-opentype'),\n    url('../fonts/icomoon/icomoon.ttf?6tt51o') format('truetype'),\n    url('../fonts/icomoon/icomoon.woff?6tt51o') format('woff'),\n    url('../fonts/icomoon/icomoon.svg?6tt51o#icomoon') format('svg');\n  font-weight: normal;\n  font-style: normal;\n}\n\n[class^=\"icon-\"], [class*=\" icon-\"] {\n  /* use !important to prevent issues with browser extensions that change fonts */\n  font-family: 'icomoon' !important;\n  speak: none;\n  font-style: normal;\n  font-weight: normal;\n  font-variant: normal;\n  text-transform: none;\n  line-height: 1;\n\n  /* Better Font Rendering =========== */\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n\n.icon-asterisk:before {\n  content: \"\\f069\";\n}\n.icon-plus:before {\n  content: \"\\f067\";\n}\n.icon-question:before {\n  content: \"\\f128\";\n}\n.icon-minus:before {\n  content: \"\\f068\";\n}\n.icon-glass:before {\n  content: \"\\f000\";\n}\n.icon-music:before {\n  content: \"\\f001\";\n}\n.icon-search:before {\n  content: \"\\f002\";\n}\n.icon-envelope-o:before {\n  content: \"\\f003\";\n}\n.icon-heart:before {\n  content: \"\\f004\";\n}\n.icon-star:before {\n  content: \"\\f005\";\n}\n.icon-star-o:before {\n  content: \"\\f006\";\n}\n.icon-user:before {\n  content: \"\\f007\";\n}\n.icon-film:before {\n  content: \"\\f008\";\n}\n.icon-th-large:before {\n  content: \"\\f009\";\n}\n.icon-th:before {\n  content: \"\\f00a\";\n}\n.icon-th-list:before {\n  content: \"\\f00b\";\n}\n.icon-check:before {\n  content: \"\\f00c\";\n}\n.icon-close:before {\n  content: \"\\f00d\";\n}\n.icon-remove:before {\n  content: \"\\f00d\";\n}\n.icon-times:before {\n  content: \"\\f00d\";\n}\n.icon-search-plus:before {\n  content: \"\\f00e\";\n}\n.icon-search-minus:before {\n  content: \"\\f010\";\n}\n.icon-power-off:before {\n  content: \"\\f011\";\n}\n.icon-signal:before {\n  content: \"\\f012\";\n}\n.icon-cog:before {\n  content: \"\\f013\";\n}\n.icon-gear:before {\n  content: \"\\f013\";\n}\n.icon-trash-o:before {\n  content: \"\\f014\";\n}\n.icon-home:before {\n  content: \"\\f015\";\n}\n.icon-file-o:before {\n  content: \"\\f016\";\n}\n.icon-clock-o:before {\n  content: \"\\f017\";\n}\n.icon-road:before {\n  content: \"\\f018\";\n}\n.icon-download:before {\n  content: \"\\f019\";\n}\n.icon-arrow-circle-o-down:before {\n  content: \"\\f01a\";\n}\n.icon-arrow-circle-o-up:before {\n  content: \"\\f01b\";\n}\n.icon-inbox:before {\n  content: \"\\f01c\";\n}\n.icon-play-circle-o:before {\n  content: \"\\f01d\";\n}\n.icon-repeat:before {\n  content: \"\\f01e\";\n}\n.icon-rotate-right:before {\n  content: \"\\f01e\";\n}\n.icon-refresh:before {\n  content: \"\\f021\";\n}\n.icon-list-alt:before {\n  content: \"\\f022\";\n}\n.icon-lock:before {\n  content: \"\\f023\";\n}\n.icon-flag:before {\n  content: \"\\f024\";\n}\n.icon-headphones:before {\n  content: \"\\f025\";\n}\n.icon-volume-off:before {\n  content: \"\\f026\";\n}\n.icon-volume-down:before {\n  content: \"\\f027\";\n}\n.icon-volume-up:before {\n  content: \"\\f028\";\n}\n.icon-qrcode:before {\n  content: \"\\f029\";\n}\n.icon-barcode:before {\n  content: \"\\f02a\";\n}\n.icon-tag:before {\n  content: \"\\f02b\";\n}\n.icon-tags:before {\n  content: \"\\f02c\";\n}\n.icon-book:before {\n  content: \"\\f02d\";\n}\n.icon-bookmark:before {\n  content: \"\\f02e\";\n}\n.icon-print:before {\n  content: \"\\f02f\";\n}\n.icon-camera:before {\n  content: \"\\f030\";\n}\n.icon-font:before {\n  content: \"\\f031\";\n}\n.icon-bold:before {\n  content: \"\\f032\";\n}\n.icon-italic:before {\n  content: \"\\f033\";\n}\n.icon-text-height:before {\n  content: \"\\f034\";\n}\n.icon-text-width:before {\n  content: \"\\f035\";\n}\n.icon-align-left:before {\n  content: \"\\f036\";\n}\n.icon-align-center:before {\n  content: \"\\f037\";\n}\n.icon-align-right:before {\n  content: \"\\f038\";\n}\n.icon-align-justify:before {\n  content: \"\\f039\";\n}\n.icon-list:before {\n  content: \"\\f03a\";\n}\n.icon-dedent:before {\n  content: \"\\f03b\";\n}\n.icon-outdent:before {\n  content: \"\\f03b\";\n}\n.icon-indent:before {\n  content: \"\\f03c\";\n}\n.icon-video-camera:before {\n  content: \"\\f03d\";\n}\n.icon-image:before {\n  content: \"\\f03e\";\n}\n.icon-photo:before {\n  content: \"\\f03e\";\n}\n.icon-picture-o:before {\n  content: \"\\f03e\";\n}\n.icon-pencil:before {\n  content: \"\\f040\";\n}\n.icon-map-marker:before {\n  content: \"\\f041\";\n}\n.icon-adjust:before {\n  content: \"\\f042\";\n}\n.icon-tint:before {\n  content: \"\\f043\";\n}\n.icon-edit:before {\n  content: \"\\f044\";\n}\n.icon-pencil-square-o:before {\n  content: \"\\f044\";\n}\n.icon-share-square-o:before {\n  content: \"\\f045\";\n}\n.icon-check-square-o:before {\n  content: \"\\f046\";\n}\n.icon-arrows:before {\n  content: \"\\f047\";\n}\n.icon-step-backward:before {\n  content: \"\\f048\";\n}\n.icon-fast-backward:before {\n  content: \"\\f049\";\n}\n.icon-backward:before {\n  content: \"\\f04a\";\n}\n.icon-play:before {\n  content: \"\\f04b\";\n}\n.icon-pause:before {\n  content: \"\\f04c\";\n}\n.icon-stop:before {\n  content: \"\\f04d\";\n}\n.icon-forward:before {\n  content: \"\\f04e\";\n}\n.icon-fast-forward:before {\n  content: \"\\f050\";\n}\n.icon-step-forward:before {\n  content: \"\\f051\";\n}\n.icon-eject:before {\n  content: \"\\f052\";\n}\n.icon-chevron-left:before {\n  content: \"\\f053\";\n}\n.icon-chevron-right:before {\n  content: \"\\f054\";\n}\n.icon-plus-circle:before {\n  content: \"\\f055\";\n}\n.icon-minus-circle:before {\n  content: \"\\f056\";\n}\n.icon-times-circle:before {\n  content: \"\\f057\";\n}\n.icon-check-circle:before {\n  content: \"\\f058\";\n}\n.icon-question-circle:before {\n  content: \"\\f059\";\n}\n.icon-info-circle:before {\n  content: \"\\f05a\";\n}\n.icon-crosshairs:before {\n  content: \"\\f05b\";\n}\n.icon-times-circle-o:before {\n  content: \"\\f05c\";\n}\n.icon-check-circle-o:before {\n  content: \"\\f05d\";\n}\n.icon-ban:before {\n  content: \"\\f05e\";\n}\n.icon-arrow-left:before {\n  content: \"\\f060\";\n}\n.icon-arrow-right:before {\n  content: \"\\f061\";\n}\n.icon-arrow-up:before {\n  content: \"\\f062\";\n}\n.icon-arrow-down:before {\n  content: \"\\f063\";\n}\n.icon-mail-forward:before {\n  content: \"\\f064\";\n}\n.icon-share:before {\n  content: \"\\f064\";\n}\n.icon-expand:before {\n  content: \"\\f065\";\n}\n.icon-compress:before {\n  content: \"\\f066\";\n}\n.icon-exclamation-circle:before {\n  content: \"\\f06a\";\n}\n.icon-gift:before {\n  content: \"\\f06b\";\n}\n.icon-leaf:before {\n  content: \"\\f06c\";\n}\n.icon-fire:before {\n  content: \"\\f06d\";\n}\n.icon-eye:before {\n  content: \"\\f06e\";\n}\n.icon-eye-slash:before {\n  content: \"\\f070\";\n}\n.icon-exclamation-triangle:before {\n  content: \"\\f071\";\n}\n.icon-warning:before {\n  content: \"\\f071\";\n}\n.icon-plane:before {\n  content: \"\\f072\";\n}\n.icon-calendar:before {\n  content: \"\\f073\";\n}\n.icon-random:before {\n  content: \"\\f074\";\n}\n.icon-comment:before {\n  content: \"\\f075\";\n}\n.icon-magnet:before {\n  content: \"\\f076\";\n}\n.icon-chevron-up:before {\n  content: \"\\f077\";\n}\n.icon-chevron-down:before {\n  content: \"\\f078\";\n}\n.icon-retweet:before {\n  content: \"\\f079\";\n}\n.icon-shopping-cart:before {\n  content: \"\\f07a\";\n}\n.icon-folder:before {\n  content: \"\\f07b\";\n}\n.icon-folder-open:before {\n  content: \"\\f07c\";\n}\n.icon-arrows-v:before {\n  content: \"\\f07d\";\n}\n.icon-arrows-h:before {\n  content: \"\\f07e\";\n}\n.icon-bar-chart:before {\n  content: \"\\f080\";\n}\n.icon-bar-chart-o:before {\n  content: \"\\f080\";\n}\n.icon-twitter-square:before {\n  content: \"\\f081\";\n}\n.icon-facebook-square:before {\n  content: \"\\f082\";\n}\n.icon-camera-retro:before {\n  content: \"\\f083\";\n}\n.icon-key:before {\n  content: \"\\f084\";\n}\n.icon-cogs:before {\n  content: \"\\f085\";\n}\n.icon-gears:before {\n  content: \"\\f085\";\n}\n.icon-comments:before {\n  content: \"\\f086\";\n}\n.icon-thumbs-o-up:before {\n  content: \"\\f087\";\n}\n.icon-thumbs-o-down:before {\n  content: \"\\f088\";\n}\n.icon-star-half:before {\n  content: \"\\f089\";\n}\n.icon-heart-o:before {\n  content: \"\\f08a\";\n}\n.icon-sign-out:before {\n  content: \"\\f08b\";\n}\n.icon-linkedin-square:before {\n  content: \"\\f08c\";\n}\n.icon-thumb-tack:before {\n  content: \"\\f08d\";\n}\n.icon-external-link:before {\n  content: \"\\f08e\";\n}\n.icon-sign-in:before {\n  content: \"\\f090\";\n}\n.icon-trophy:before {\n  content: \"\\f091\";\n}\n.icon-github-square:before {\n  content: \"\\f092\";\n}\n.icon-upload:before {\n  content: \"\\f093\";\n}\n.icon-lemon-o:before {\n  content: \"\\f094\";\n}\n.icon-phone:before {\n  content: \"\\f095\";\n}\n.icon-square-o:before {\n  content: \"\\f096\";\n}\n.icon-bookmark-o:before {\n  content: \"\\f097\";\n}\n.icon-phone-square:before {\n  content: \"\\f098\";\n}\n.icon-twitter:before {\n  content: \"\\f099\";\n}\n.icon-facebook:before {\n  content: \"\\f09a\";\n}\n.icon-facebook-f:before {\n  content: \"\\f09a\";\n}\n.icon-github:before {\n  content: \"\\f09b\";\n}\n.icon-unlock:before {\n  content: \"\\f09c\";\n}\n.icon-credit-card:before {\n  content: \"\\f09d\";\n}\n.icon-feed:before {\n  content: \"\\f09e\";\n}\n.icon-rss:before {\n  content: \"\\f09e\";\n}\n.icon-hdd-o:before {\n  content: \"\\f0a0\";\n}\n.icon-bullhorn:before {\n  content: \"\\f0a1\";\n}\n.icon-bell-o:before {\n  content: \"\\f0a2\";\n}\n.icon-certificate:before {\n  content: \"\\f0a3\";\n}\n.icon-hand-o-right:before {\n  content: \"\\f0a4\";\n}\n.icon-hand-o-left:before {\n  content: \"\\f0a5\";\n}\n.icon-hand-o-up:before {\n  content: \"\\f0a6\";\n}\n.icon-hand-o-down:before {\n  content: \"\\f0a7\";\n}\n.icon-arrow-circle-left:before {\n  content: \"\\f0a8\";\n}\n.icon-arrow-circle-right:before {\n  content: \"\\f0a9\";\n}\n.icon-arrow-circle-up:before {\n  content: \"\\f0aa\";\n}\n.icon-arrow-circle-down:before {\n  content: \"\\f0ab\";\n}\n.icon-globe:before {\n  content: \"\\f0ac\";\n}\n.icon-wrench:before {\n  content: \"\\f0ad\";\n}\n.icon-tasks:before {\n  content: \"\\f0ae\";\n}\n.icon-filter:before {\n  content: \"\\f0b0\";\n}\n.icon-briefcase:before {\n  content: \"\\f0b1\";\n}\n.icon-arrows-alt:before {\n  content: \"\\f0b2\";\n}\n.icon-group:before {\n  content: \"\\f0c0\";\n}\n.icon-users:before {\n  content: \"\\f0c0\";\n}\n.icon-chain:before {\n  content: \"\\f0c1\";\n}\n.icon-link:before {\n  content: \"\\f0c1\";\n}\n.icon-cloud:before {\n  content: \"\\f0c2\";\n}\n.icon-flask:before {\n  content: \"\\f0c3\";\n}\n.icon-cut:before {\n  content: \"\\f0c4\";\n}\n.icon-scissors:before {\n  content: \"\\f0c4\";\n}\n.icon-copy:before {\n  content: \"\\f0c5\";\n}\n.icon-files-o:before {\n  content: \"\\f0c5\";\n}\n.icon-paperclip:before {\n  content: \"\\f0c6\";\n}\n.icon-floppy-o:before {\n  content: \"\\f0c7\";\n}\n.icon-save:before {\n  content: \"\\f0c7\";\n}\n.icon-square:before {\n  content: \"\\f0c8\";\n}\n.icon-bars:before {\n  content: \"\\f0c9\";\n}\n.icon-navicon:before {\n  content: \"\\f0c9\";\n}\n.icon-reorder:before {\n  content: \"\\f0c9\";\n}\n.icon-list-ul:before {\n  content: \"\\f0ca\";\n}\n.icon-list-ol:before {\n  content: \"\\f0cb\";\n}\n.icon-strikethrough:before {\n  content: \"\\f0cc\";\n}\n.icon-underline:before {\n  content: \"\\f0cd\";\n}\n.icon-table:before {\n  content: \"\\f0ce\";\n}\n.icon-magic:before {\n  content: \"\\f0d0\";\n}\n.icon-truck:before {\n  content: \"\\f0d1\";\n}\n.icon-pinterest:before {\n  content: \"\\f0d2\";\n}\n.icon-pinterest-square:before {\n  content: \"\\f0d3\";\n}\n.icon-google-plus-square:before {\n  content: \"\\f0d4\";\n}\n.icon-google-plus:before {\n  content: \"\\f0d5\";\n}\n.icon-money:before {\n  content: \"\\f0d6\";\n}\n.icon-caret-down:before {\n  content: \"\\f0d7\";\n}\n.icon-caret-up:before {\n  content: \"\\f0d8\";\n}\n.icon-caret-left:before {\n  content: \"\\f0d9\";\n}\n.icon-caret-right:before {\n  content: \"\\f0da\";\n}\n.icon-columns:before {\n  content: \"\\f0db\";\n}\n.icon-sort:before {\n  content: \"\\f0dc\";\n}\n.icon-unsorted:before {\n  content: \"\\f0dc\";\n}\n.icon-sort-desc:before {\n  content: \"\\f0dd\";\n}\n.icon-sort-down:before {\n  content: \"\\f0dd\";\n}\n.icon-sort-asc:before {\n  content: \"\\f0de\";\n}\n.icon-sort-up:before {\n  content: \"\\f0de\";\n}\n.icon-envelope:before {\n  content: \"\\f0e0\";\n}\n.icon-linkedin:before {\n  content: \"\\f0e1\";\n}\n.icon-rotate-left:before {\n  content: \"\\f0e2\";\n}\n.icon-undo:before {\n  content: \"\\f0e2\";\n}\n.icon-gavel:before {\n  content: \"\\f0e3\";\n}\n.icon-legal:before {\n  content: \"\\f0e3\";\n}\n.icon-dashboard:before {\n  content: \"\\f0e4\";\n}\n.icon-tachometer:before {\n  content: \"\\f0e4\";\n}\n.icon-comment-o:before {\n  content: \"\\f0e5\";\n}\n.icon-comments-o:before {\n  content: \"\\f0e6\";\n}\n.icon-bolt:before {\n  content: \"\\f0e7\";\n}\n.icon-flash:before {\n  content: \"\\f0e7\";\n}\n.icon-sitemap:before {\n  content: \"\\f0e8\";\n}\n.icon-umbrella:before {\n  content: \"\\f0e9\";\n}\n.icon-clipboard:before {\n  content: \"\\f0ea\";\n}\n.icon-paste:before {\n  content: \"\\f0ea\";\n}\n.icon-lightbulb-o:before {\n  content: \"\\f0eb\";\n}\n.icon-exchange:before {\n  content: \"\\f0ec\";\n}\n.icon-cloud-download:before {\n  content: \"\\f0ed\";\n}\n.icon-cloud-upload:before {\n  content: \"\\f0ee\";\n}\n.icon-user-md:before {\n  content: \"\\f0f0\";\n}\n.icon-stethoscope:before {\n  content: \"\\f0f1\";\n}\n.icon-suitcase:before {\n  content: \"\\f0f2\";\n}\n.icon-bell:before {\n  content: \"\\f0f3\";\n}\n.icon-coffee:before {\n  content: \"\\f0f4\";\n}\n.icon-cutlery:before {\n  content: \"\\f0f5\";\n}\n.icon-file-text-o:before {\n  content: \"\\f0f6\";\n}\n.icon-building-o:before {\n  content: \"\\f0f7\";\n}\n.icon-hospital-o:before {\n  content: \"\\f0f8\";\n}\n.icon-ambulance:before {\n  content: \"\\f0f9\";\n}\n.icon-medkit:before {\n  content: \"\\f0fa\";\n}\n.icon-fighter-jet:before {\n  content: \"\\f0fb\";\n}\n.icon-beer:before {\n  content: \"\\f0fc\";\n}\n.icon-h-square:before {\n  content: \"\\f0fd\";\n}\n.icon-plus-square:before {\n  content: \"\\f0fe\";\n}\n.icon-angle-double-left:before {\n  content: \"\\f100\";\n}\n.icon-angle-double-right:before {\n  content: \"\\f101\";\n}\n.icon-angle-double-up:before {\n  content: \"\\f102\";\n}\n.icon-angle-double-down:before {\n  content: \"\\f103\";\n}\n.icon-angle-left:before {\n  content: \"\\f104\";\n}\n.icon-angle-right:before {\n  content: \"\\f105\";\n}\n.icon-angle-up:before {\n  content: \"\\f106\";\n}\n.icon-angle-down:before {\n  content: \"\\f107\";\n}\n.icon-desktop:before {\n  content: \"\\f108\";\n}\n.icon-laptop:before {\n  content: \"\\f109\";\n}\n.icon-tablet:before {\n  content: \"\\f10a\";\n}\n.icon-mobile:before {\n  content: \"\\f10b\";\n}\n.icon-mobile-phone:before {\n  content: \"\\f10b\";\n}\n.icon-circle-o:before {\n  content: \"\\f10c\";\n}\n.icon-quote-left:before {\n  content: \"\\f10d\";\n}\n.icon-quote-right:before {\n  content: \"\\f10e\";\n}\n.icon-spinner:before {\n  content: \"\\f110\";\n}\n.icon-circle:before {\n  content: \"\\f111\";\n}\n.icon-mail-reply:before {\n  content: \"\\f112\";\n}\n.icon-reply:before {\n  content: \"\\f112\";\n}\n.icon-github-alt:before {\n  content: \"\\f113\";\n}\n.icon-folder-o:before {\n  content: \"\\f114\";\n}\n.icon-folder-open-o:before {\n  content: \"\\f115\";\n}\n.icon-smile-o:before {\n  content: \"\\f118\";\n}\n.icon-frown-o:before {\n  content: \"\\f119\";\n}\n.icon-meh-o:before {\n  content: \"\\f11a\";\n}\n.icon-gamepad:before {\n  content: \"\\f11b\";\n}\n.icon-keyboard-o:before {\n  content: \"\\f11c\";\n}\n.icon-flag-o:before {\n  content: \"\\f11d\";\n}\n.icon-flag-checkered:before {\n  content: \"\\f11e\";\n}\n.icon-terminal:before {\n  content: \"\\f120\";\n}\n.icon-code:before {\n  content: \"\\f121\";\n}\n.icon-mail-reply-all:before {\n  content: \"\\f122\";\n}\n.icon-reply-all:before {\n  content: \"\\f122\";\n}\n.icon-star-half-empty:before {\n  content: \"\\f123\";\n}\n.icon-star-half-full:before {\n  content: \"\\f123\";\n}\n.icon-star-half-o:before {\n  content: \"\\f123\";\n}\n.icon-location-arrow:before {\n  content: \"\\f124\";\n}\n.icon-crop:before {\n  content: \"\\f125\";\n}\n.icon-code-fork:before {\n  content: \"\\f126\";\n}\n.icon-chain-broken:before {\n  content: \"\\f127\";\n}\n.icon-unlink:before {\n  content: \"\\f127\";\n}\n.icon-info:before {\n  content: \"\\f129\";\n}\n.icon-exclamation:before {\n  content: \"\\f12a\";\n}\n.icon-superscript:before {\n  content: \"\\f12b\";\n}\n.icon-subscript:before {\n  content: \"\\f12c\";\n}\n.icon-eraser:before {\n  content: \"\\f12d\";\n}\n.icon-puzzle-piece:before {\n  content: \"\\f12e\";\n}\n.icon-microphone:before {\n  content: \"\\f130\";\n}\n.icon-microphone-slash:before {\n  content: \"\\f131\";\n}\n.icon-shield:before {\n  content: \"\\f132\";\n}\n.icon-calendar-o:before {\n  content: \"\\f133\";\n}\n.icon-fire-extinguisher:before {\n  content: \"\\f134\";\n}\n.icon-rocket:before {\n  content: \"\\f135\";\n}\n.icon-maxcdn:before {\n  content: \"\\f136\";\n}\n.icon-chevron-circle-left:before {\n  content: \"\\f137\";\n}\n.icon-chevron-circle-right:before {\n  content: \"\\f138\";\n}\n.icon-chevron-circle-up:before {\n  content: \"\\f139\";\n}\n.icon-chevron-circle-down:before {\n  content: \"\\f13a\";\n}\n.icon-html5:before {\n  content: \"\\f13b\";\n}\n.icon-css3:before {\n  content: \"\\f13c\";\n}\n.icon-anchor:before {\n  content: \"\\f13d\";\n}\n.icon-unlock-alt:before {\n  content: \"\\f13e\";\n}\n.icon-bullseye:before {\n  content: \"\\f140\";\n}\n.icon-ellipsis-h:before {\n  content: \"\\f141\";\n}\n.icon-ellipsis-v:before {\n  content: \"\\f142\";\n}\n.icon-rss-square:before {\n  content: \"\\f143\";\n}\n.icon-play-circle:before {\n  content: \"\\f144\";\n}\n.icon-ticket:before {\n  content: \"\\f145\";\n}\n.icon-minus-square:before {\n  content: \"\\f146\";\n}\n.icon-minus-square-o:before {\n  content: \"\\f147\";\n}\n.icon-level-up:before {\n  content: \"\\f148\";\n}\n.icon-level-down:before {\n  content: \"\\f149\";\n}\n.icon-check-square:before {\n  content: \"\\f14a\";\n}\n.icon-pencil-square:before {\n  content: \"\\f14b\";\n}\n.icon-external-link-square:before {\n  content: \"\\f14c\";\n}\n.icon-share-square:before {\n  content: \"\\f14d\";\n}\n.icon-compass:before {\n  content: \"\\f14e\";\n}\n.icon-caret-square-o-down:before {\n  content: \"\\f150\";\n}\n.icon-toggle-down:before {\n  content: \"\\f150\";\n}\n.icon-caret-square-o-up:before {\n  content: \"\\f151\";\n}\n.icon-toggle-up:before {\n  content: \"\\f151\";\n}\n.icon-caret-square-o-right:before {\n  content: \"\\f152\";\n}\n.icon-toggle-right:before {\n  content: \"\\f152\";\n}\n.icon-eur:before {\n  content: \"\\f153\";\n}\n.icon-euro:before {\n  content: \"\\f153\";\n}\n.icon-gbp:before {\n  content: \"\\f154\";\n}\n.icon-dollar:before {\n  content: \"\\f155\";\n}\n.icon-usd:before {\n  content: \"\\f155\";\n}\n.icon-inr:before {\n  content: \"\\f156\";\n}\n.icon-rupee:before {\n  content: \"\\f156\";\n}\n.icon-cny:before {\n  content: \"\\f157\";\n}\n.icon-jpy:before {\n  content: \"\\f157\";\n}\n.icon-rmb:before {\n  content: \"\\f157\";\n}\n.icon-yen:before {\n  content: \"\\f157\";\n}\n.icon-rouble:before {\n  content: \"\\f158\";\n}\n.icon-rub:before {\n  content: \"\\f158\";\n}\n.icon-ruble:before {\n  content: \"\\f158\";\n}\n.icon-krw:before {\n  content: \"\\f159\";\n}\n.icon-won:before {\n  content: \"\\f159\";\n}\n.icon-bitcoin:before {\n  content: \"\\f15a\";\n}\n.icon-btc:before {\n  content: \"\\f15a\";\n}\n.icon-file:before {\n  content: \"\\f15b\";\n}\n.icon-file-text:before {\n  content: \"\\f15c\";\n}\n.icon-sort-alpha-asc:before {\n  content: \"\\f15d\";\n}\n.icon-sort-alpha-desc:before {\n  content: \"\\f15e\";\n}\n.icon-sort-amount-asc:before {\n  content: \"\\f160\";\n}\n.icon-sort-amount-desc:before {\n  content: \"\\f161\";\n}\n.icon-sort-numeric-asc:before {\n  content: \"\\f162\";\n}\n.icon-sort-numeric-desc:before {\n  content: \"\\f163\";\n}\n.icon-thumbs-up:before {\n  content: \"\\f164\";\n}\n.icon-thumbs-down:before {\n  content: \"\\f165\";\n}\n.icon-youtube-square:before {\n  content: \"\\f166\";\n}\n.icon-youtube:before {\n  content: \"\\f167\";\n}\n.icon-xing:before {\n  content: \"\\f168\";\n}\n.icon-xing-square:before {\n  content: \"\\f169\";\n}\n.icon-youtube-play:before {\n  content: \"\\f16a\";\n}\n.icon-dropbox:before {\n  content: \"\\f16b\";\n}\n.icon-stack-overflow:before {\n  content: \"\\f16c\";\n}\n.icon-instagram:before {\n  content: \"\\f16d\";\n}\n.icon-flickr:before {\n  content: \"\\f16e\";\n}\n.icon-adn:before {\n  content: \"\\f170\";\n}\n.icon-bitbucket:before {\n  content: \"\\f171\";\n}\n.icon-bitbucket-square:before {\n  content: \"\\f172\";\n}\n.icon-tumblr:before {\n  content: \"\\f173\";\n}\n.icon-tumblr-square:before {\n  content: \"\\f174\";\n}\n.icon-long-arrow-down:before {\n  content: \"\\f175\";\n}\n.icon-long-arrow-up:before {\n  content: \"\\f176\";\n}\n.icon-long-arrow-left:before {\n  content: \"\\f177\";\n}\n.icon-long-arrow-right:before {\n  content: \"\\f178\";\n}\n.icon-apple:before {\n  content: \"\\f179\";\n}\n.icon-windows:before {\n  content: \"\\f17a\";\n}\n.icon-android:before {\n  content: \"\\f17b\";\n}\n.icon-linux:before {\n  content: \"\\f17c\";\n}\n.icon-dribbble:before {\n  content: \"\\f17d\";\n}\n.icon-skype:before {\n  content: \"\\f17e\";\n}\n.icon-foursquare:before {\n  content: \"\\f180\";\n}\n.icon-trello:before {\n  content: \"\\f181\";\n}\n.icon-female:before {\n  content: \"\\f182\";\n}\n.icon-male:before {\n  content: \"\\f183\";\n}\n.icon-gittip:before {\n  content: \"\\f184\";\n}\n.icon-gratipay:before {\n  content: \"\\f184\";\n}\n.icon-sun-o:before {\n  content: \"\\f185\";\n}\n.icon-moon-o:before {\n  content: \"\\f186\";\n}\n.icon-archive:before {\n  content: \"\\f187\";\n}\n.icon-bug:before {\n  content: \"\\f188\";\n}\n.icon-vk:before {\n  content: \"\\f189\";\n}\n.icon-weibo:before {\n  content: \"\\f18a\";\n}\n.icon-renren:before {\n  content: \"\\f18b\";\n}\n.icon-pagelines:before {\n  content: \"\\f18c\";\n}\n.icon-stack-exchange:before {\n  content: \"\\f18d\";\n}\n.icon-arrow-circle-o-right:before {\n  content: \"\\f18e\";\n}\n.icon-arrow-circle-o-left:before {\n  content: \"\\f190\";\n}\n.icon-caret-square-o-left:before {\n  content: \"\\f191\";\n}\n.icon-toggle-left:before {\n  content: \"\\f191\";\n}\n.icon-dot-circle-o:before {\n  content: \"\\f192\";\n}\n.icon-wheelchair:before {\n  content: \"\\f193\";\n}\n.icon-vimeo-square:before {\n  content: \"\\f194\";\n}\n.icon-try:before {\n  content: \"\\f195\";\n}\n.icon-turkish-lira:before {\n  content: \"\\f195\";\n}\n.icon-plus-square-o:before {\n  content: \"\\f196\";\n}\n.icon-space-shuttle:before {\n  content: \"\\f197\";\n}\n.icon-slack:before {\n  content: \"\\f198\";\n}\n.icon-envelope-square:before {\n  content: \"\\f199\";\n}\n.icon-wordpress:before {\n  content: \"\\f19a\";\n}\n.icon-openid:before {\n  content: \"\\f19b\";\n}\n.icon-bank:before {\n  content: \"\\f19c\";\n}\n.icon-institution:before {\n  content: \"\\f19c\";\n}\n.icon-university:before {\n  content: \"\\f19c\";\n}\n.icon-graduation-cap:before {\n  content: \"\\f19d\";\n}\n.icon-mortar-board:before {\n  content: \"\\f19d\";\n}\n.icon-yahoo:before {\n  content: \"\\f19e\";\n}\n.icon-google:before {\n  content: \"\\f1a0\";\n}\n.icon-reddit:before {\n  content: \"\\f1a1\";\n}\n.icon-reddit-square:before {\n  content: \"\\f1a2\";\n}\n.icon-stumbleupon-circle:before {\n  content: \"\\f1a3\";\n}\n.icon-stumbleupon:before {\n  content: \"\\f1a4\";\n}\n.icon-delicious:before {\n  content: \"\\f1a5\";\n}\n.icon-digg:before {\n  content: \"\\f1a6\";\n}\n.icon-pied-piper-pp:before {\n  content: \"\\f1a7\";\n}\n.icon-pied-piper-alt:before {\n  content: \"\\f1a8\";\n}\n.icon-drupal:before {\n  content: \"\\f1a9\";\n}\n.icon-joomla:before {\n  content: \"\\f1aa\";\n}\n.icon-language:before {\n  content: \"\\f1ab\";\n}\n.icon-fax:before {\n  content: \"\\f1ac\";\n}\n.icon-building:before {\n  content: \"\\f1ad\";\n}\n.icon-child:before {\n  content: \"\\f1ae\";\n}\n.icon-paw:before {\n  content: \"\\f1b0\";\n}\n.icon-spoon:before {\n  content: \"\\f1b1\";\n}\n.icon-cube:before {\n  content: \"\\f1b2\";\n}\n.icon-cubes:before {\n  content: \"\\f1b3\";\n}\n.icon-behance:before {\n  content: \"\\f1b4\";\n}\n.icon-behance-square:before {\n  content: \"\\f1b5\";\n}\n.icon-steam:before {\n  content: \"\\f1b6\";\n}\n.icon-steam-square:before {\n  content: \"\\f1b7\";\n}\n.icon-recycle:before {\n  content: \"\\f1b8\";\n}\n.icon-automobile:before {\n  content: \"\\f1b9\";\n}\n.icon-car:before {\n  content: \"\\f1b9\";\n}\n.icon-cab:before {\n  content: \"\\f1ba\";\n}\n.icon-taxi:before {\n  content: \"\\f1ba\";\n}\n.icon-tree:before {\n  content: \"\\f1bb\";\n}\n.icon-spotify:before {\n  content: \"\\f1bc\";\n}\n.icon-deviantart:before {\n  content: \"\\f1bd\";\n}\n.icon-soundcloud:before {\n  content: \"\\f1be\";\n}\n.icon-database:before {\n  content: \"\\f1c0\";\n}\n.icon-file-pdf-o:before {\n  content: \"\\f1c1\";\n}\n.icon-file-word-o:before {\n  content: \"\\f1c2\";\n}\n.icon-file-excel-o:before {\n  content: \"\\f1c3\";\n}\n.icon-file-powerpoint-o:before {\n  content: \"\\f1c4\";\n}\n.icon-file-image-o:before {\n  content: \"\\f1c5\";\n}\n.icon-file-photo-o:before {\n  content: \"\\f1c5\";\n}\n.icon-file-picture-o:before {\n  content: \"\\f1c5\";\n}\n.icon-file-archive-o:before {\n  content: \"\\f1c6\";\n}\n.icon-file-zip-o:before {\n  content: \"\\f1c6\";\n}\n.icon-file-audio-o:before {\n  content: \"\\f1c7\";\n}\n.icon-file-sound-o:before {\n  content: \"\\f1c7\";\n}\n.icon-file-movie-o:before {\n  content: \"\\f1c8\";\n}\n.icon-file-video-o:before {\n  content: \"\\f1c8\";\n}\n.icon-file-code-o:before {\n  content: \"\\f1c9\";\n}\n.icon-vine:before {\n  content: \"\\f1ca\";\n}\n.icon-codepen:before {\n  content: \"\\f1cb\";\n}\n.icon-jsfiddle:before {\n  content: \"\\f1cc\";\n}\n.icon-life-bouy:before {\n  content: \"\\f1cd\";\n}\n.icon-life-buoy:before {\n  content: \"\\f1cd\";\n}\n.icon-life-ring:before {\n  content: \"\\f1cd\";\n}\n.icon-life-saver:before {\n  content: \"\\f1cd\";\n}\n.icon-support:before {\n  content: \"\\f1cd\";\n}\n.icon-circle-o-notch:before {\n  content: \"\\f1ce\";\n}\n.icon-ra:before {\n  content: \"\\f1d0\";\n}\n.icon-rebel:before {\n  content: \"\\f1d0\";\n}\n.icon-resistance:before {\n  content: \"\\f1d0\";\n}\n.icon-empire:before {\n  content: \"\\f1d1\";\n}\n.icon-ge:before {\n  content: \"\\f1d1\";\n}\n.icon-git-square:before {\n  content: \"\\f1d2\";\n}\n.icon-git:before {\n  content: \"\\f1d3\";\n}\n.icon-hacker-news:before {\n  content: \"\\f1d4\";\n}\n.icon-y-combinator-square:before {\n  content: \"\\f1d4\";\n}\n.icon-yc-square:before {\n  content: \"\\f1d4\";\n}\n.icon-tencent-weibo:before {\n  content: \"\\f1d5\";\n}\n.icon-qq:before {\n  content: \"\\f1d6\";\n}\n.icon-wechat:before {\n  content: \"\\f1d7\";\n}\n.icon-weixin:before {\n  content: \"\\f1d7\";\n}\n.icon-paper-plane:before {\n  content: \"\\f1d8\";\n}\n.icon-send:before {\n  content: \"\\f1d8\";\n}\n.icon-paper-plane-o:before {\n  content: \"\\f1d9\";\n}\n.icon-send-o:before {\n  content: \"\\f1d9\";\n}\n.icon-history:before {\n  content: \"\\f1da\";\n}\n.icon-circle-thin:before {\n  content: \"\\f1db\";\n}\n.icon-header:before {\n  content: \"\\f1dc\";\n}\n.icon-paragraph:before {\n  content: \"\\f1dd\";\n}\n.icon-sliders:before {\n  content: \"\\f1de\";\n}\n.icon-share-alt:before {\n  content: \"\\f1e0\";\n}\n.icon-share-alt-square:before {\n  content: \"\\f1e1\";\n}\n.icon-bomb:before {\n  content: \"\\f1e2\";\n}\n.icon-futbol-o:before {\n  content: \"\\f1e3\";\n}\n.icon-soccer-ball-o:before {\n  content: \"\\f1e3\";\n}\n.icon-tty:before {\n  content: \"\\f1e4\";\n}\n.icon-binoculars:before {\n  content: \"\\f1e5\";\n}\n.icon-plug:before {\n  content: \"\\f1e6\";\n}\n.icon-slideshare:before {\n  content: \"\\f1e7\";\n}\n.icon-twitch:before {\n  content: \"\\f1e8\";\n}\n.icon-yelp:before {\n  content: \"\\f1e9\";\n}\n.icon-newspaper-o:before {\n  content: \"\\f1ea\";\n}\n.icon-wifi:before {\n  content: \"\\f1eb\";\n}\n.icon-calculator:before {\n  content: \"\\f1ec\";\n}\n.icon-paypal:before {\n  content: \"\\f1ed\";\n}\n.icon-google-wallet:before {\n  content: \"\\f1ee\";\n}\n.icon-cc-visa:before {\n  content: \"\\f1f0\";\n}\n.icon-cc-mastercard:before {\n  content: \"\\f1f1\";\n}\n.icon-cc-discover:before {\n  content: \"\\f1f2\";\n}\n.icon-cc-amex:before {\n  content: \"\\f1f3\";\n}\n.icon-cc-paypal:before {\n  content: \"\\f1f4\";\n}\n.icon-cc-stripe:before {\n  content: \"\\f1f5\";\n}\n.icon-bell-slash:before {\n  content: \"\\f1f6\";\n}\n.icon-bell-slash-o:before {\n  content: \"\\f1f7\";\n}\n.icon-trash:before {\n  content: \"\\f1f8\";\n}\n.icon-copyright:before {\n  content: \"\\f1f9\";\n}\n.icon-at:before {\n  content: \"\\f1fa\";\n}\n.icon-eyedropper:before {\n  content: \"\\f1fb\";\n}\n.icon-paint-brush:before {\n  content: \"\\f1fc\";\n}\n.icon-birthday-cake:before {\n  content: \"\\f1fd\";\n}\n.icon-area-chart:before {\n  content: \"\\f1fe\";\n}\n.icon-pie-chart:before {\n  content: \"\\f200\";\n}\n.icon-line-chart:before {\n  content: \"\\f201\";\n}\n.icon-lastfm:before {\n  content: \"\\f202\";\n}\n.icon-lastfm-square:before {\n  content: \"\\f203\";\n}\n.icon-toggle-off:before {\n  content: \"\\f204\";\n}\n.icon-toggle-on:before {\n  content: \"\\f205\";\n}\n.icon-bicycle:before {\n  content: \"\\f206\";\n}\n.icon-bus:before {\n  content: \"\\f207\";\n}\n.icon-ioxhost:before {\n  content: \"\\f208\";\n}\n.icon-angellist:before {\n  content: \"\\f209\";\n}\n.icon-cc:before {\n  content: \"\\f20a\";\n}\n.icon-ils:before {\n  content: \"\\f20b\";\n}\n.icon-shekel:before {\n  content: \"\\f20b\";\n}\n.icon-sheqel:before {\n  content: \"\\f20b\";\n}\n.icon-meanpath:before {\n  content: \"\\f20c\";\n}\n.icon-buysellads:before {\n  content: \"\\f20d\";\n}\n.icon-connectdevelop:before {\n  content: \"\\f20e\";\n}\n.icon-dashcube:before {\n  content: \"\\f210\";\n}\n.icon-forumbee:before {\n  content: \"\\f211\";\n}\n.icon-leanpub:before {\n  content: \"\\f212\";\n}\n.icon-sellsy:before {\n  content: \"\\f213\";\n}\n.icon-shirtsinbulk:before {\n  content: \"\\f214\";\n}\n.icon-simplybuilt:before {\n  content: \"\\f215\";\n}\n.icon-skyatlas:before {\n  content: \"\\f216\";\n}\n.icon-cart-plus:before {\n  content: \"\\f217\";\n}\n.icon-cart-arrow-down:before {\n  content: \"\\f218\";\n}\n.icon-diamond:before {\n  content: \"\\f219\";\n}\n.icon-ship:before {\n  content: \"\\f21a\";\n}\n.icon-user-secret:before {\n  content: \"\\f21b\";\n}\n.icon-motorcycle:before {\n  content: \"\\f21c\";\n}\n.icon-street-view:before {\n  content: \"\\f21d\";\n}\n.icon-heartbeat:before {\n  content: \"\\f21e\";\n}\n.icon-venus:before {\n  content: \"\\f221\";\n}\n.icon-mars:before {\n  content: \"\\f222\";\n}\n.icon-mercury:before {\n  content: \"\\f223\";\n}\n.icon-intersex:before {\n  content: \"\\f224\";\n}\n.icon-transgender:before {\n  content: \"\\f224\";\n}\n.icon-transgender-alt:before {\n  content: \"\\f225\";\n}\n.icon-venus-double:before {\n  content: \"\\f226\";\n}\n.icon-mars-double:before {\n  content: \"\\f227\";\n}\n.icon-venus-mars:before {\n  content: \"\\f228\";\n}\n.icon-mars-stroke:before {\n  content: \"\\f229\";\n}\n.icon-mars-stroke-v:before {\n  content: \"\\f22a\";\n}\n.icon-mars-stroke-h:before {\n  content: \"\\f22b\";\n}\n.icon-neuter:before {\n  content: \"\\f22c\";\n}\n.icon-genderless:before {\n  content: \"\\f22d\";\n}\n.icon-facebook-official:before {\n  content: \"\\f230\";\n}\n.icon-pinterest-p:before {\n  content: \"\\f231\";\n}\n.icon-whatsapp:before {\n  content: \"\\f232\";\n}\n.icon-server:before {\n  content: \"\\f233\";\n}\n.icon-user-plus:before {\n  content: \"\\f234\";\n}\n.icon-user-times:before {\n  content: \"\\f235\";\n}\n.icon-bed:before {\n  content: \"\\f236\";\n}\n.icon-hotel:before {\n  content: \"\\f236\";\n}\n.icon-viacoin:before {\n  content: \"\\f237\";\n}\n.icon-train:before {\n  content: \"\\f238\";\n}\n.icon-subway:before {\n  content: \"\\f239\";\n}\n.icon-medium:before {\n  content: \"\\f23a\";\n}\n.icon-y-combinator:before {\n  content: \"\\f23b\";\n}\n.icon-yc:before {\n  content: \"\\f23b\";\n}\n.icon-optin-monster:before {\n  content: \"\\f23c\";\n}\n.icon-opencart:before {\n  content: \"\\f23d\";\n}\n.icon-expeditedssl:before {\n  content: \"\\f23e\";\n}\n.icon-battery:before {\n  content: \"\\f240\";\n}\n.icon-battery-4:before {\n  content: \"\\f240\";\n}\n.icon-battery-full:before {\n  content: \"\\f240\";\n}\n.icon-battery-3:before {\n  content: \"\\f241\";\n}\n.icon-battery-three-quarters:before {\n  content: \"\\f241\";\n}\n.icon-battery-2:before {\n  content: \"\\f242\";\n}\n.icon-battery-half:before {\n  content: \"\\f242\";\n}\n.icon-battery-1:before {\n  content: \"\\f243\";\n}\n.icon-battery-quarter:before {\n  content: \"\\f243\";\n}\n.icon-battery-0:before {\n  content: \"\\f244\";\n}\n.icon-battery-empty:before {\n  content: \"\\f244\";\n}\n.icon-mouse-pointer:before {\n  content: \"\\f245\";\n}\n.icon-i-cursor:before {\n  content: \"\\f246\";\n}\n.icon-object-group:before {\n  content: \"\\f247\";\n}\n.icon-object-ungroup:before {\n  content: \"\\f248\";\n}\n.icon-sticky-note:before {\n  content: \"\\f249\";\n}\n.icon-sticky-note-o:before {\n  content: \"\\f24a\";\n}\n.icon-cc-jcb:before {\n  content: \"\\f24b\";\n}\n.icon-cc-diners-club:before {\n  content: \"\\f24c\";\n}\n.icon-clone:before {\n  content: \"\\f24d\";\n}\n.icon-balance-scale:before {\n  content: \"\\f24e\";\n}\n.icon-hourglass-o:before {\n  content: \"\\f250\";\n}\n.icon-hourglass-1:before {\n  content: \"\\f251\";\n}\n.icon-hourglass-start:before {\n  content: \"\\f251\";\n}\n.icon-hourglass-2:before {\n  content: \"\\f252\";\n}\n.icon-hourglass-half:before {\n  content: \"\\f252\";\n}\n.icon-hourglass-3:before {\n  content: \"\\f253\";\n}\n.icon-hourglass-end:before {\n  content: \"\\f253\";\n}\n.icon-hourglass:before {\n  content: \"\\f254\";\n}\n.icon-hand-grab-o:before {\n  content: \"\\f255\";\n}\n.icon-hand-rock-o:before {\n  content: \"\\f255\";\n}\n.icon-hand-paper-o:before {\n  content: \"\\f256\";\n}\n.icon-hand-stop-o:before {\n  content: \"\\f256\";\n}\n.icon-hand-scissors-o:before {\n  content: \"\\f257\";\n}\n.icon-hand-lizard-o:before {\n  content: \"\\f258\";\n}\n.icon-hand-spock-o:before {\n  content: \"\\f259\";\n}\n.icon-hand-pointer-o:before {\n  content: \"\\f25a\";\n}\n.icon-hand-peace-o:before {\n  content: \"\\f25b\";\n}\n.icon-trademark:before {\n  content: \"\\f25c\";\n}\n.icon-registered:before {\n  content: \"\\f25d\";\n}\n.icon-creative-commons:before {\n  content: \"\\f25e\";\n}\n.icon-gg:before {\n  content: \"\\f260\";\n}\n.icon-gg-circle:before {\n  content: \"\\f261\";\n}\n.icon-tripadvisor:before {\n  content: \"\\f262\";\n}\n.icon-odnoklassniki:before {\n  content: \"\\f263\";\n}\n.icon-odnoklassniki-square:before {\n  content: \"\\f264\";\n}\n.icon-get-pocket:before {\n  content: \"\\f265\";\n}\n.icon-wikipedia-w:before {\n  content: \"\\f266\";\n}\n.icon-safari:before {\n  content: \"\\f267\";\n}\n.icon-chrome:before {\n  content: \"\\f268\";\n}\n.icon-firefox:before {\n  content: \"\\f269\";\n}\n.icon-opera:before {\n  content: \"\\f26a\";\n}\n.icon-internet-explorer:before {\n  content: \"\\f26b\";\n}\n.icon-television:before {\n  content: \"\\f26c\";\n}\n.icon-tv:before {\n  content: \"\\f26c\";\n}\n.icon-contao:before {\n  content: \"\\f26d\";\n}\n.icon-500px:before {\n  content: \"\\f26e\";\n}\n.icon-amazon:before {\n  content: \"\\f270\";\n}\n.icon-calendar-plus-o:before {\n  content: \"\\f271\";\n}\n.icon-calendar-minus-o:before {\n  content: \"\\f272\";\n}\n.icon-calendar-times-o:before {\n  content: \"\\f273\";\n}\n.icon-calendar-check-o:before {\n  content: \"\\f274\";\n}\n.icon-industry:before {\n  content: \"\\f275\";\n}\n.icon-map-pin:before {\n  content: \"\\f276\";\n}\n.icon-map-signs:before {\n  content: \"\\f277\";\n}\n.icon-map-o:before {\n  content: \"\\f278\";\n}\n.icon-map:before {\n  content: \"\\f279\";\n}\n.icon-commenting:before {\n  content: \"\\f27a\";\n}\n.icon-commenting-o:before {\n  content: \"\\f27b\";\n}\n.icon-houzz:before {\n  content: \"\\f27c\";\n}\n.icon-vimeo:before {\n  content: \"\\f27d\";\n}\n.icon-black-tie:before {\n  content: \"\\f27e\";\n}\n.icon-fonticons:before {\n  content: \"\\f280\";\n}\n.icon-reddit-alien:before {\n  content: \"\\f281\";\n}\n.icon-edge:before {\n  content: \"\\f282\";\n}\n.icon-credit-card-alt:before {\n  content: \"\\f283\";\n}\n.icon-codiepie:before {\n  content: \"\\f284\";\n}\n.icon-modx:before {\n  content: \"\\f285\";\n}\n.icon-fort-awesome:before {\n  content: \"\\f286\";\n}\n.icon-usb:before {\n  content: \"\\f287\";\n}\n.icon-product-hunt:before {\n  content: \"\\f288\";\n}\n.icon-mixcloud:before {\n  content: \"\\f289\";\n}\n.icon-scribd:before {\n  content: \"\\f28a\";\n}\n.icon-pause-circle:before {\n  content: \"\\f28b\";\n}\n.icon-pause-circle-o:before {\n  content: \"\\f28c\";\n}\n.icon-stop-circle:before {\n  content: \"\\f28d\";\n}\n.icon-stop-circle-o:before {\n  content: \"\\f28e\";\n}\n.icon-shopping-bag:before {\n  content: \"\\f290\";\n}\n.icon-shopping-basket:before {\n  content: \"\\f291\";\n}\n.icon-hashtag:before {\n  content: \"\\f292\";\n}\n.icon-bluetooth:before {\n  content: \"\\f293\";\n}\n.icon-bluetooth-b:before {\n  content: \"\\f294\";\n}\n.icon-percent:before {\n  content: \"\\f295\";\n}\n.icon-gitlab:before {\n  content: \"\\f296\";\n}\n.icon-wpbeginner:before {\n  content: \"\\f297\";\n}\n.icon-wpforms:before {\n  content: \"\\f298\";\n}\n.icon-envira:before {\n  content: \"\\f299\";\n}\n.icon-universal-access:before {\n  content: \"\\f29a\";\n}\n.icon-wheelchair-alt:before {\n  content: \"\\f29b\";\n}\n.icon-question-circle-o:before {\n  content: \"\\f29c\";\n}\n.icon-blind:before {\n  content: \"\\f29d\";\n}\n.icon-audio-description:before {\n  content: \"\\f29e\";\n}\n.icon-volume-control-phone:before {\n  content: \"\\f2a0\";\n}\n.icon-braille:before {\n  content: \"\\f2a1\";\n}\n.icon-assistive-listening-systems:before {\n  content: \"\\f2a2\";\n}\n.icon-american-sign-language-interpreting:before {\n  content: \"\\f2a3\";\n}\n.icon-asl-interpreting:before {\n  content: \"\\f2a3\";\n}\n.icon-deaf:before {\n  content: \"\\f2a4\";\n}\n.icon-deafness:before {\n  content: \"\\f2a4\";\n}\n.icon-hard-of-hearing:before {\n  content: \"\\f2a4\";\n}\n.icon-glide:before {\n  content: \"\\f2a5\";\n}\n.icon-glide-g:before {\n  content: \"\\f2a6\";\n}\n.icon-sign-language:before {\n  content: \"\\f2a7\";\n}\n.icon-signing:before {\n  content: \"\\f2a7\";\n}\n.icon-low-vision:before {\n  content: \"\\f2a8\";\n}\n.icon-viadeo:before {\n  content: \"\\f2a9\";\n}\n.icon-viadeo-square:before {\n  content: \"\\f2aa\";\n}\n.icon-snapchat:before {\n  content: \"\\f2ab\";\n}\n.icon-snapchat-ghost:before {\n  content: \"\\f2ac\";\n}\n.icon-snapchat-square:before {\n  content: \"\\f2ad\";\n}\n.icon-pied-piper:before {\n  content: \"\\f2ae\";\n}\n.icon-first-order:before {\n  content: \"\\f2b0\";\n}\n.icon-yoast:before {\n  content: \"\\f2b1\";\n}\n.icon-themeisle:before {\n  content: \"\\f2b2\";\n}\n.icon-google-plus-circle:before {\n  content: \"\\f2b3\";\n}\n.icon-google-plus-official:before {\n  content: \"\\f2b3\";\n}\n.icon-fa:before {\n  content: \"\\f2b4\";\n}\n.icon-font-awesome:before {\n  content: \"\\f2b4\";\n}\n.icon-handshake-o:before {\n  content: \"\\f2b5\";\n}\n.icon-envelope-open:before {\n  content: \"\\f2b6\";\n}\n.icon-envelope-open-o:before {\n  content: \"\\f2b7\";\n}\n.icon-linode:before {\n  content: \"\\f2b8\";\n}\n.icon-address-book:before {\n  content: \"\\f2b9\";\n}\n.icon-address-book-o:before {\n  content: \"\\f2ba\";\n}\n.icon-address-card:before {\n  content: \"\\f2bb\";\n}\n.icon-vcard:before {\n  content: \"\\f2bb\";\n}\n.icon-address-card-o:before {\n  content: \"\\f2bc\";\n}\n.icon-vcard-o:before {\n  content: \"\\f2bc\";\n}\n.icon-user-circle:before {\n  content: \"\\f2bd\";\n}\n.icon-user-circle-o:before {\n  content: \"\\f2be\";\n}\n.icon-user-o:before {\n  content: \"\\f2c0\";\n}\n.icon-id-badge:before {\n  content: \"\\f2c1\";\n}\n.icon-drivers-license:before {\n  content: \"\\f2c2\";\n}\n.icon-id-card:before {\n  content: \"\\f2c2\";\n}\n.icon-drivers-license-o:before {\n  content: \"\\f2c3\";\n}\n.icon-id-card-o:before {\n  content: \"\\f2c3\";\n}\n.icon-quora:before {\n  content: \"\\f2c4\";\n}\n.icon-free-code-camp:before {\n  content: \"\\f2c5\";\n}\n.icon-telegram:before {\n  content: \"\\f2c6\";\n}\n.icon-thermometer:before {\n  content: \"\\f2c7\";\n}\n.icon-thermometer-4:before {\n  content: \"\\f2c7\";\n}\n.icon-thermometer-full:before {\n  content: \"\\f2c7\";\n}\n.icon-thermometer-3:before {\n  content: \"\\f2c8\";\n}\n.icon-thermometer-three-quarters:before {\n  content: \"\\f2c8\";\n}\n.icon-thermometer-2:before {\n  content: \"\\f2c9\";\n}\n.icon-thermometer-half:before {\n  content: \"\\f2c9\";\n}\n.icon-thermometer-1:before {\n  content: \"\\f2ca\";\n}\n.icon-thermometer-quarter:before {\n  content: \"\\f2ca\";\n}\n.icon-thermometer-0:before {\n  content: \"\\f2cb\";\n}\n.icon-thermometer-empty:before {\n  content: \"\\f2cb\";\n}\n.icon-shower:before {\n  content: \"\\f2cc\";\n}\n.icon-bath:before {\n  content: \"\\f2cd\";\n}\n.icon-bathtub:before {\n  content: \"\\f2cd\";\n}\n.icon-s15:before {\n  content: \"\\f2cd\";\n}\n.icon-podcast:before {\n  content: \"\\f2ce\";\n}\n.icon-window-maximize:before {\n  content: \"\\f2d0\";\n}\n.icon-window-minimize:before {\n  content: \"\\f2d1\";\n}\n.icon-window-restore:before {\n  content: \"\\f2d2\";\n}\n.icon-times-rectangle:before {\n  content: \"\\f2d3\";\n}\n.icon-window-close:before {\n  content: \"\\f2d3\";\n}\n.icon-times-rectangle-o:before {\n  content: \"\\f2d4\";\n}\n.icon-window-close-o:before {\n  content: \"\\f2d4\";\n}\n.icon-bandcamp:before {\n  content: \"\\f2d5\";\n}\n.icon-grav:before {\n  content: \"\\f2d6\";\n}\n.icon-etsy:before {\n  content: \"\\f2d7\";\n}\n.icon-imdb:before {\n  content: \"\\f2d8\";\n}\n.icon-ravelry:before {\n  content: \"\\f2d9\";\n}\n.icon-eercast:before {\n  content: \"\\f2da\";\n}\n.icon-microchip:before {\n  content: \"\\f2db\";\n}\n.icon-snowflake-o:before {\n  content: \"\\f2dc\";\n}\n.icon-superpowers:before {\n  content: \"\\f2dd\";\n}\n.icon-wpexplorer:before {\n  content: \"\\f2de\";\n}\n.icon-meetup:before {\n  content: \"\\f2e0\";\n}\n.icon-3d_rotation:before {\n  content: \"\\e84d\";\n}\n.icon-ac_unit:before {\n  content: \"\\eb3b\";\n}\n.icon-alarm:before {\n  content: \"\\e855\";\n}\n.icon-access_alarms:before {\n  content: \"\\e191\";\n}\n.icon-schedule:before {\n  content: \"\\e8b5\";\n}\n.icon-accessibility:before {\n  content: \"\\e84e\";\n}\n.icon-accessible:before {\n  content: \"\\e914\";\n}\n.icon-account_balance:before {\n  content: \"\\e84f\";\n}\n.icon-account_balance_wallet:before {\n  content: \"\\e850\";\n}\n.icon-account_box:before {\n  content: \"\\e851\";\n}\n.icon-account_circle:before {\n  content: \"\\e853\";\n}\n.icon-adb:before {\n  content: \"\\e60e\";\n}\n.icon-add:before {\n  content: \"\\e145\";\n}\n.icon-add_a_photo:before {\n  content: \"\\e439\";\n}\n.icon-alarm_add:before {\n  content: \"\\e856\";\n}\n.icon-add_alert:before {\n  content: \"\\e003\";\n}\n.icon-add_box:before {\n  content: \"\\e146\";\n}\n.icon-add_circle:before {\n  content: \"\\e147\";\n}\n.icon-control_point:before {\n  content: \"\\e3ba\";\n}\n.icon-add_location:before {\n  content: \"\\e567\";\n}\n.icon-add_shopping_cart:before {\n  content: \"\\e854\";\n}\n.icon-queue:before {\n  content: \"\\e03c\";\n}\n.icon-add_to_queue:before {\n  content: \"\\e05c\";\n}\n.icon-adjust2:before {\n  content: \"\\e39e\";\n}\n.icon-airline_seat_flat:before {\n  content: \"\\e630\";\n}\n.icon-airline_seat_flat_angled:before {\n  content: \"\\e631\";\n}\n.icon-airline_seat_individual_suite:before {\n  content: \"\\e632\";\n}\n.icon-airline_seat_legroom_extra:before {\n  content: \"\\e633\";\n}\n.icon-airline_seat_legroom_normal:before {\n  content: \"\\e634\";\n}\n.icon-airline_seat_legroom_reduced:before {\n  content: \"\\e635\";\n}\n.icon-airline_seat_recline_extra:before {\n  content: \"\\e636\";\n}\n.icon-airline_seat_recline_normal:before {\n  content: \"\\e637\";\n}\n.icon-flight:before {\n  content: \"\\e539\";\n}\n.icon-airplanemode_inactive:before {\n  content: \"\\e194\";\n}\n.icon-airplay:before {\n  content: \"\\e055\";\n}\n.icon-airport_shuttle:before {\n  content: \"\\eb3c\";\n}\n.icon-alarm_off:before {\n  content: \"\\e857\";\n}\n.icon-alarm_on:before {\n  content: \"\\e858\";\n}\n.icon-album:before {\n  content: \"\\e019\";\n}\n.icon-all_inclusive:before {\n  content: \"\\eb3d\";\n}\n.icon-all_out:before {\n  content: \"\\e90b\";\n}\n.icon-android2:before {\n  content: \"\\e859\";\n}\n.icon-announcement:before {\n  content: \"\\e85a\";\n}\n.icon-apps:before {\n  content: \"\\e5c3\";\n}\n.icon-archive2:before {\n  content: \"\\e149\";\n}\n.icon-arrow_back:before {\n  content: \"\\e5c4\";\n}\n.icon-arrow_downward:before {\n  content: \"\\e5db\";\n}\n.icon-arrow_drop_down:before {\n  content: \"\\e5c5\";\n}\n.icon-arrow_drop_down_circle:before {\n  content: \"\\e5c6\";\n}\n.icon-arrow_drop_up:before {\n  content: \"\\e5c7\";\n}\n.icon-arrow_forward:before {\n  content: \"\\e5c8\";\n}\n.icon-arrow_upward:before {\n  content: \"\\e5d8\";\n}\n.icon-art_track:before {\n  content: \"\\e060\";\n}\n.icon-aspect_ratio:before {\n  content: \"\\e85b\";\n}\n.icon-poll:before {\n  content: \"\\e801\";\n}\n.icon-assignment:before {\n  content: \"\\e85d\";\n}\n.icon-assignment_ind:before {\n  content: \"\\e85e\";\n}\n.icon-assignment_late:before {\n  content: \"\\e85f\";\n}\n.icon-assignment_return:before {\n  content: \"\\e860\";\n}\n.icon-assignment_returned:before {\n  content: \"\\e861\";\n}\n.icon-assignment_turned_in:before {\n  content: \"\\e862\";\n}\n.icon-assistant:before {\n  content: \"\\e39f\";\n}\n.icon-flag2:before {\n  content: \"\\e153\";\n}\n.icon-attach_file:before {\n  content: \"\\e226\";\n}\n.icon-attach_money:before {\n  content: \"\\e227\";\n}\n.icon-attachment:before {\n  content: \"\\e2bc\";\n}\n.icon-audiotrack:before {\n  content: \"\\e3a1\";\n}\n.icon-autorenew:before {\n  content: \"\\e863\";\n}\n.icon-av_timer:before {\n  content: \"\\e01b\";\n}\n.icon-backspace:before {\n  content: \"\\e14a\";\n}\n.icon-cloud_upload:before {\n  content: \"\\e2c3\";\n}\n.icon-battery_alert:before {\n  content: \"\\e19c\";\n}\n.icon-battery_charging_full:before {\n  content: \"\\e1a3\";\n}\n.icon-battery_std:before {\n  content: \"\\e1a5\";\n}\n.icon-battery_unknown:before {\n  content: \"\\e1a6\";\n}\n.icon-beach_access:before {\n  content: \"\\eb3e\";\n}\n.icon-beenhere:before {\n  content: \"\\e52d\";\n}\n.icon-block:before {\n  content: \"\\e14b\";\n}\n.icon-bluetooth2:before {\n  content: \"\\e1a7\";\n}\n.icon-bluetooth_searching:before {\n  content: \"\\e1aa\";\n}\n.icon-bluetooth_connected:before {\n  content: \"\\e1a8\";\n}\n.icon-bluetooth_disabled:before {\n  content: \"\\e1a9\";\n}\n.icon-blur_circular:before {\n  content: \"\\e3a2\";\n}\n.icon-blur_linear:before {\n  content: \"\\e3a3\";\n}\n.icon-blur_off:before {\n  content: \"\\e3a4\";\n}\n.icon-blur_on:before {\n  content: \"\\e3a5\";\n}\n.icon-class:before {\n  content: \"\\e86e\";\n}\n.icon-turned_in:before {\n  content: \"\\e8e6\";\n}\n.icon-turned_in_not:before {\n  content: \"\\e8e7\";\n}\n.icon-border_all:before {\n  content: \"\\e228\";\n}\n.icon-border_bottom:before {\n  content: \"\\e229\";\n}\n.icon-border_clear:before {\n  content: \"\\e22a\";\n}\n.icon-border_color:before {\n  content: \"\\e22b\";\n}\n.icon-border_horizontal:before {\n  content: \"\\e22c\";\n}\n.icon-border_inner:before {\n  content: \"\\e22d\";\n}\n.icon-border_left:before {\n  content: \"\\e22e\";\n}\n.icon-border_outer:before {\n  content: \"\\e22f\";\n}\n.icon-border_right:before {\n  content: \"\\e230\";\n}\n.icon-border_style:before {\n  content: \"\\e231\";\n}\n.icon-border_top:before {\n  content: \"\\e232\";\n}\n.icon-border_vertical:before {\n  content: \"\\e233\";\n}\n.icon-branding_watermark:before {\n  content: \"\\e06b\";\n}\n.icon-brightness_1:before {\n  content: \"\\e3a6\";\n}\n.icon-brightness_2:before {\n  content: \"\\e3a7\";\n}\n.icon-brightness_3:before {\n  content: \"\\e3a8\";\n}\n.icon-brightness_4:before {\n  content: \"\\e3a9\";\n}\n.icon-brightness_low:before {\n  content: \"\\e1ad\";\n}\n.icon-brightness_medium:before {\n  content: \"\\e1ae\";\n}\n.icon-brightness_high:before {\n  content: \"\\e1ac\";\n}\n.icon-brightness_auto:before {\n  content: \"\\e1ab\";\n}\n.icon-broken_image:before {\n  content: \"\\e3ad\";\n}\n.icon-brush:before {\n  content: \"\\e3ae\";\n}\n.icon-bubble_chart:before {\n  content: \"\\e6dd\";\n}\n.icon-bug_report:before {\n  content: \"\\e868\";\n}\n.icon-build:before {\n  content: \"\\e869\";\n}\n.icon-burst_mode:before {\n  content: \"\\e43c\";\n}\n.icon-domain:before {\n  content: \"\\e7ee\";\n}\n.icon-business_center:before {\n  content: \"\\eb3f\";\n}\n.icon-cached:before {\n  content: \"\\e86a\";\n}\n.icon-cake:before {\n  content: \"\\e7e9\";\n}\n.icon-phone2:before {\n  content: \"\\e0cd\";\n}\n.icon-call_end:before {\n  content: \"\\e0b1\";\n}\n.icon-call_made:before {\n  content: \"\\e0b2\";\n}\n.icon-merge_type:before {\n  content: \"\\e252\";\n}\n.icon-call_missed:before {\n  content: \"\\e0b4\";\n}\n.icon-call_missed_outgoing:before {\n  content: \"\\e0e4\";\n}\n.icon-call_received:before {\n  content: \"\\e0b5\";\n}\n.icon-call_split:before {\n  content: \"\\e0b6\";\n}\n.icon-call_to_action:before {\n  content: \"\\e06c\";\n}\n.icon-camera2:before {\n  content: \"\\e3af\";\n}\n.icon-photo_camera:before {\n  content: \"\\e412\";\n}\n.icon-camera_enhance:before {\n  content: \"\\e8fc\";\n}\n.icon-camera_front:before {\n  content: \"\\e3b1\";\n}\n.icon-camera_rear:before {\n  content: \"\\e3b2\";\n}\n.icon-camera_roll:before {\n  content: \"\\e3b3\";\n}\n.icon-cancel:before {\n  content: \"\\e5c9\";\n}\n.icon-redeem:before {\n  content: \"\\e8b1\";\n}\n.icon-card_membership:before {\n  content: \"\\e8f7\";\n}\n.icon-card_travel:before {\n  content: \"\\e8f8\";\n}\n.icon-casino:before {\n  content: \"\\eb40\";\n}\n.icon-cast:before {\n  content: \"\\e307\";\n}\n.icon-cast_connected:before {\n  content: \"\\e308\";\n}\n.icon-center_focus_strong:before {\n  content: \"\\e3b4\";\n}\n.icon-center_focus_weak:before {\n  content: \"\\e3b5\";\n}\n.icon-change_history:before {\n  content: \"\\e86b\";\n}\n.icon-chat:before {\n  content: \"\\e0b7\";\n}\n.icon-chat_bubble:before {\n  content: \"\\e0ca\";\n}\n.icon-chat_bubble_outline:before {\n  content: \"\\e0cb\";\n}\n.icon-check2:before {\n  content: \"\\e5ca\";\n}\n.icon-check_box:before {\n  content: \"\\e834\";\n}\n.icon-check_box_outline_blank:before {\n  content: \"\\e835\";\n}\n.icon-check_circle:before {\n  content: \"\\e86c\";\n}\n.icon-navigate_before:before {\n  content: \"\\e408\";\n}\n.icon-navigate_next:before {\n  content: \"\\e409\";\n}\n.icon-child_care:before {\n  content: \"\\eb41\";\n}\n.icon-child_friendly:before {\n  content: \"\\eb42\";\n}\n.icon-chrome_reader_mode:before {\n  content: \"\\e86d\";\n}\n.icon-close2:before {\n  content: \"\\e5cd\";\n}\n.icon-clear_all:before {\n  content: \"\\e0b8\";\n}\n.icon-closed_caption:before {\n  content: \"\\e01c\";\n}\n.icon-wb_cloudy:before {\n  content: \"\\e42d\";\n}\n.icon-cloud_circle:before {\n  content: \"\\e2be\";\n}\n.icon-cloud_done:before {\n  content: \"\\e2bf\";\n}\n.icon-cloud_download:before {\n  content: \"\\e2c0\";\n}\n.icon-cloud_off:before {\n  content: \"\\e2c1\";\n}\n.icon-cloud_queue:before {\n  content: \"\\e2c2\";\n}\n.icon-code2:before {\n  content: \"\\e86f\";\n}\n.icon-photo_library:before {\n  content: \"\\e413\";\n}\n.icon-collections_bookmark:before {\n  content: \"\\e431\";\n}\n.icon-palette:before {\n  content: \"\\e40a\";\n}\n.icon-colorize:before {\n  content: \"\\e3b8\";\n}\n.icon-comment2:before {\n  content: \"\\e0b9\";\n}\n.icon-compare:before {\n  content: \"\\e3b9\";\n}\n.icon-compare_arrows:before {\n  content: \"\\e915\";\n}\n.icon-laptop2:before {\n  content: \"\\e31e\";\n}\n.icon-confirmation_number:before {\n  content: \"\\e638\";\n}\n.icon-contact_mail:before {\n  content: \"\\e0d0\";\n}\n.icon-contact_phone:before {\n  content: \"\\e0cf\";\n}\n.icon-contacts:before {\n  content: \"\\e0ba\";\n}\n.icon-content_copy:before {\n  content: \"\\e14d\";\n}\n.icon-content_cut:before {\n  content: \"\\e14e\";\n}\n.icon-content_paste:before {\n  content: \"\\e14f\";\n}\n.icon-control_point_duplicate:before {\n  content: \"\\e3bb\";\n}\n.icon-copyright2:before {\n  content: \"\\e90c\";\n}\n.icon-mode_edit:before {\n  content: \"\\e254\";\n}\n.icon-create_new_folder:before {\n  content: \"\\e2cc\";\n}\n.icon-payment:before {\n  content: \"\\e8a1\";\n}\n.icon-crop2:before {\n  content: \"\\e3be\";\n}\n.icon-crop_16_9:before {\n  content: \"\\e3bc\";\n}\n.icon-crop_3_2:before {\n  content: \"\\e3bd\";\n}\n.icon-crop_landscape:before {\n  content: \"\\e3c3\";\n}\n.icon-crop_7_5:before {\n  content: \"\\e3c0\";\n}\n.icon-crop_din:before {\n  content: \"\\e3c1\";\n}\n.icon-crop_free:before {\n  content: \"\\e3c2\";\n}\n.icon-crop_original:before {\n  content: \"\\e3c4\";\n}\n.icon-crop_portrait:before {\n  content: \"\\e3c5\";\n}\n.icon-crop_rotate:before {\n  content: \"\\e437\";\n}\n.icon-crop_square:before {\n  content: \"\\e3c6\";\n}\n.icon-dashboard2:before {\n  content: \"\\e871\";\n}\n.icon-data_usage:before {\n  content: \"\\e1af\";\n}\n.icon-date_range:before {\n  content: \"\\e916\";\n}\n.icon-dehaze:before {\n  content: \"\\e3c7\";\n}\n.icon-delete:before {\n  content: \"\\e872\";\n}\n.icon-delete_forever:before {\n  content: \"\\e92b\";\n}\n.icon-delete_sweep:before {\n  content: \"\\e16c\";\n}\n.icon-description:before {\n  content: \"\\e873\";\n}\n.icon-desktop_mac:before {\n  content: \"\\e30b\";\n}\n.icon-desktop_windows:before {\n  content: \"\\e30c\";\n}\n.icon-details:before {\n  content: \"\\e3c8\";\n}\n.icon-developer_board:before {\n  content: \"\\e30d\";\n}\n.icon-developer_mode:before {\n  content: \"\\e1b0\";\n}\n.icon-device_hub:before {\n  content: \"\\e335\";\n}\n.icon-phonelink:before {\n  content: \"\\e326\";\n}\n.icon-devices_other:before {\n  content: \"\\e337\";\n}\n.icon-dialer_sip:before {\n  content: \"\\e0bb\";\n}\n.icon-dialpad:before {\n  content: \"\\e0bc\";\n}\n.icon-directions:before {\n  content: \"\\e52e\";\n}\n.icon-directions_bike:before {\n  content: \"\\e52f\";\n}\n.icon-directions_boat:before {\n  content: \"\\e532\";\n}\n.icon-directions_bus:before {\n  content: \"\\e530\";\n}\n.icon-directions_car:before {\n  content: \"\\e531\";\n}\n.icon-directions_railway:before {\n  content: \"\\e534\";\n}\n.icon-directions_run:before {\n  content: \"\\e566\";\n}\n.icon-directions_transit:before {\n  content: \"\\e535\";\n}\n.icon-directions_walk:before {\n  content: \"\\e536\";\n}\n.icon-disc_full:before {\n  content: \"\\e610\";\n}\n.icon-dns:before {\n  content: \"\\e875\";\n}\n.icon-not_interested:before {\n  content: \"\\e033\";\n}\n.icon-do_not_disturb_alt:before {\n  content: \"\\e611\";\n}\n.icon-do_not_disturb_off:before {\n  content: \"\\e643\";\n}\n.icon-remove_circle:before {\n  content: \"\\e15c\";\n}\n.icon-dock:before {\n  content: \"\\e30e\";\n}\n.icon-done:before {\n  content: \"\\e876\";\n}\n.icon-done_all:before {\n  content: \"\\e877\";\n}\n.icon-donut_large:before {\n  content: \"\\e917\";\n}\n.icon-donut_small:before {\n  content: \"\\e918\";\n}\n.icon-drafts:before {\n  content: \"\\e151\";\n}\n.icon-drag_handle:before {\n  content: \"\\e25d\";\n}\n.icon-time_to_leave:before {\n  content: \"\\e62c\";\n}\n.icon-dvr:before {\n  content: \"\\e1b2\";\n}\n.icon-edit_location:before {\n  content: \"\\e568\";\n}\n.icon-eject2:before {\n  content: \"\\e8fb\";\n}\n.icon-markunread:before {\n  content: \"\\e159\";\n}\n.icon-enhanced_encryption:before {\n  content: \"\\e63f\";\n}\n.icon-equalizer:before {\n  content: \"\\e01d\";\n}\n.icon-error:before {\n  content: \"\\e000\";\n}\n.icon-error_outline:before {\n  content: \"\\e001\";\n}\n.icon-euro_symbol:before {\n  content: \"\\e926\";\n}\n.icon-ev_station:before {\n  content: \"\\e56d\";\n}\n.icon-insert_invitation:before {\n  content: \"\\e24f\";\n}\n.icon-event_available:before {\n  content: \"\\e614\";\n}\n.icon-event_busy:before {\n  content: \"\\e615\";\n}\n.icon-event_note:before {\n  content: \"\\e616\";\n}\n.icon-event_seat:before {\n  content: \"\\e903\";\n}\n.icon-exit_to_app:before {\n  content: \"\\e879\";\n}\n.icon-expand_less:before {\n  content: \"\\e5ce\";\n}\n.icon-expand_more:before {\n  content: \"\\e5cf\";\n}\n.icon-explicit:before {\n  content: \"\\e01e\";\n}\n.icon-explore:before {\n  content: \"\\e87a\";\n}\n.icon-exposure:before {\n  content: \"\\e3ca\";\n}\n.icon-exposure_neg_1:before {\n  content: \"\\e3cb\";\n}\n.icon-exposure_neg_2:before {\n  content: \"\\e3cc\";\n}\n.icon-exposure_plus_1:before {\n  content: \"\\e3cd\";\n}\n.icon-exposure_plus_2:before {\n  content: \"\\e3ce\";\n}\n.icon-exposure_zero:before {\n  content: \"\\e3cf\";\n}\n.icon-extension:before {\n  content: \"\\e87b\";\n}\n.icon-face:before {\n  content: \"\\e87c\";\n}\n.icon-fast_forward:before {\n  content: \"\\e01f\";\n}\n.icon-fast_rewind:before {\n  content: \"\\e020\";\n}\n.icon-favorite:before {\n  content: \"\\e87d\";\n}\n.icon-favorite_border:before {\n  content: \"\\e87e\";\n}\n.icon-featured_play_list:before {\n  content: \"\\e06d\";\n}\n.icon-featured_video:before {\n  content: \"\\e06e\";\n}\n.icon-sms_failed:before {\n  content: \"\\e626\";\n}\n.icon-fiber_dvr:before {\n  content: \"\\e05d\";\n}\n.icon-fiber_manual_record:before {\n  content: \"\\e061\";\n}\n.icon-fiber_new:before {\n  content: \"\\e05e\";\n}\n.icon-fiber_pin:before {\n  content: \"\\e06a\";\n}\n.icon-fiber_smart_record:before {\n  content: \"\\e062\";\n}\n.icon-get_app:before {\n  content: \"\\e884\";\n}\n.icon-file_upload:before {\n  content: \"\\e2c6\";\n}\n.icon-filter2:before {\n  content: \"\\e3d3\";\n}\n.icon-filter_1:before {\n  content: \"\\e3d0\";\n}\n.icon-filter_2:before {\n  content: \"\\e3d1\";\n}\n.icon-filter_3:before {\n  content: \"\\e3d2\";\n}\n.icon-filter_4:before {\n  content: \"\\e3d4\";\n}\n.icon-filter_5:before {\n  content: \"\\e3d5\";\n}\n.icon-filter_6:before {\n  content: \"\\e3d6\";\n}\n.icon-filter_7:before {\n  content: \"\\e3d7\";\n}\n.icon-filter_8:before {\n  content: \"\\e3d8\";\n}\n.icon-filter_9:before {\n  content: \"\\e3d9\";\n}\n.icon-filter_9_plus:before {\n  content: \"\\e3da\";\n}\n.icon-filter_b_and_w:before {\n  content: \"\\e3db\";\n}\n.icon-filter_center_focus:before {\n  content: \"\\e3dc\";\n}\n.icon-filter_drama:before {\n  content: \"\\e3dd\";\n}\n.icon-filter_frames:before {\n  content: \"\\e3de\";\n}\n.icon-terrain:before {\n  content: \"\\e564\";\n}\n.icon-filter_list:before {\n  content: \"\\e152\";\n}\n.icon-filter_none:before {\n  content: \"\\e3e0\";\n}\n.icon-filter_tilt_shift:before {\n  content: \"\\e3e2\";\n}\n.icon-filter_vintage:before {\n  content: \"\\e3e3\";\n}\n.icon-find_in_page:before {\n  content: \"\\e880\";\n}\n.icon-find_replace:before {\n  content: \"\\e881\";\n}\n.icon-fingerprint:before {\n  content: \"\\e90d\";\n}\n.icon-first_page:before {\n  content: \"\\e5dc\";\n}\n.icon-fitness_center:before {\n  content: \"\\eb43\";\n}\n.icon-flare:before {\n  content: \"\\e3e4\";\n}\n.icon-flash_auto:before {\n  content: \"\\e3e5\";\n}\n.icon-flash_off:before {\n  content: \"\\e3e6\";\n}\n.icon-flash_on:before {\n  content: \"\\e3e7\";\n}\n.icon-flight_land:before {\n  content: \"\\e904\";\n}\n.icon-flight_takeoff:before {\n  content: \"\\e905\";\n}\n.icon-flip:before {\n  content: \"\\e3e8\";\n}\n.icon-flip_to_back:before {\n  content: \"\\e882\";\n}\n.icon-flip_to_front:before {\n  content: \"\\e883\";\n}\n.icon-folder2:before {\n  content: \"\\e2c7\";\n}\n.icon-folder_open:before {\n  content: \"\\e2c8\";\n}\n.icon-folder_shared:before {\n  content: \"\\e2c9\";\n}\n.icon-folder_special:before {\n  content: \"\\e617\";\n}\n.icon-font_download:before {\n  content: \"\\e167\";\n}\n.icon-format_align_center:before {\n  content: \"\\e234\";\n}\n.icon-format_align_justify:before {\n  content: \"\\e235\";\n}\n.icon-format_align_left:before {\n  content: \"\\e236\";\n}\n.icon-format_align_right:before {\n  content: \"\\e237\";\n}\n.icon-format_bold:before {\n  content: \"\\e238\";\n}\n.icon-format_clear:before {\n  content: \"\\e239\";\n}\n.icon-format_color_fill:before {\n  content: \"\\e23a\";\n}\n.icon-format_color_reset:before {\n  content: \"\\e23b\";\n}\n.icon-format_color_text:before {\n  content: \"\\e23c\";\n}\n.icon-format_indent_decrease:before {\n  content: \"\\e23d\";\n}\n.icon-format_indent_increase:before {\n  content: \"\\e23e\";\n}\n.icon-format_italic:before {\n  content: \"\\e23f\";\n}\n.icon-format_line_spacing:before {\n  content: \"\\e240\";\n}\n.icon-format_list_bulleted:before {\n  content: \"\\e241\";\n}\n.icon-format_list_numbered:before {\n  content: \"\\e242\";\n}\n.icon-format_paint:before {\n  content: \"\\e243\";\n}\n.icon-format_quote:before {\n  content: \"\\e244\";\n}\n.icon-format_shapes:before {\n  content: \"\\e25e\";\n}\n.icon-format_size:before {\n  content: \"\\e245\";\n}\n.icon-format_strikethrough:before {\n  content: \"\\e246\";\n}\n.icon-format_textdirection_l_to_r:before {\n  content: \"\\e247\";\n}\n.icon-format_textdirection_r_to_l:before {\n  content: \"\\e248\";\n}\n.icon-format_underlined:before {\n  content: \"\\e249\";\n}\n.icon-question_answer:before {\n  content: \"\\e8af\";\n}\n.icon-forward2:before {\n  content: \"\\e154\";\n}\n.icon-forward_10:before {\n  content: \"\\e056\";\n}\n.icon-forward_30:before {\n  content: \"\\e057\";\n}\n.icon-forward_5:before {\n  content: \"\\e058\";\n}\n.icon-free_breakfast:before {\n  content: \"\\eb44\";\n}\n.icon-fullscreen:before {\n  content: \"\\e5d0\";\n}\n.icon-fullscreen_exit:before {\n  content: \"\\e5d1\";\n}\n.icon-functions:before {\n  content: \"\\e24a\";\n}\n.icon-g_translate:before {\n  content: \"\\e927\";\n}\n.icon-games:before {\n  content: \"\\e021\";\n}\n.icon-gavel2:before {\n  content: \"\\e90e\";\n}\n.icon-gesture:before {\n  content: \"\\e155\";\n}\n.icon-gif:before {\n  content: \"\\e908\";\n}\n.icon-goat:before {\n  content: \"\\e900\";\n}\n.icon-golf_course:before {\n  content: \"\\eb45\";\n}\n.icon-my_location:before {\n  content: \"\\e55c\";\n}\n.icon-location_searching:before {\n  content: \"\\e1b7\";\n}\n.icon-location_disabled:before {\n  content: \"\\e1b6\";\n}\n.icon-star2:before {\n  content: \"\\e838\";\n}\n.icon-gradient:before {\n  content: \"\\e3e9\";\n}\n.icon-grain:before {\n  content: \"\\e3ea\";\n}\n.icon-graphic_eq:before {\n  content: \"\\e1b8\";\n}\n.icon-grid_off:before {\n  content: \"\\e3eb\";\n}\n.icon-grid_on:before {\n  content: \"\\e3ec\";\n}\n.icon-people:before {\n  content: \"\\e7fb\";\n}\n.icon-group_add:before {\n  content: \"\\e7f0\";\n}\n.icon-group_work:before {\n  content: \"\\e886\";\n}\n.icon-hd:before {\n  content: \"\\e052\";\n}\n.icon-hdr_off:before {\n  content: \"\\e3ed\";\n}\n.icon-hdr_on:before {\n  content: \"\\e3ee\";\n}\n.icon-hdr_strong:before {\n  content: \"\\e3f1\";\n}\n.icon-hdr_weak:before {\n  content: \"\\e3f2\";\n}\n.icon-headset:before {\n  content: \"\\e310\";\n}\n.icon-headset_mic:before {\n  content: \"\\e311\";\n}\n.icon-healing:before {\n  content: \"\\e3f3\";\n}\n.icon-hearing:before {\n  content: \"\\e023\";\n}\n.icon-help:before {\n  content: \"\\e887\";\n}\n.icon-help_outline:before {\n  content: \"\\e8fd\";\n}\n.icon-high_quality:before {\n  content: \"\\e024\";\n}\n.icon-highlight:before {\n  content: \"\\e25f\";\n}\n.icon-highlight_off:before {\n  content: \"\\e888\";\n}\n.icon-restore:before {\n  content: \"\\e8b3\";\n}\n.icon-home2:before {\n  content: \"\\e88a\";\n}\n.icon-hot_tub:before {\n  content: \"\\eb46\";\n}\n.icon-local_hotel:before {\n  content: \"\\e549\";\n}\n.icon-hourglass_empty:before {\n  content: \"\\e88b\";\n}\n.icon-hourglass_full:before {\n  content: \"\\e88c\";\n}\n.icon-http:before {\n  content: \"\\e902\";\n}\n.icon-lock2:before {\n  content: \"\\e897\";\n}\n.icon-photo2:before {\n  content: \"\\e410\";\n}\n.icon-image_aspect_ratio:before {\n  content: \"\\e3f5\";\n}\n.icon-import_contacts:before {\n  content: \"\\e0e0\";\n}\n.icon-import_export:before {\n  content: \"\\e0c3\";\n}\n.icon-important_devices:before {\n  content: \"\\e912\";\n}\n.icon-inbox2:before {\n  content: \"\\e156\";\n}\n.icon-indeterminate_check_box:before {\n  content: \"\\e909\";\n}\n.icon-info2:before {\n  content: \"\\e88e\";\n}\n.icon-info_outline:before {\n  content: \"\\e88f\";\n}\n.icon-input:before {\n  content: \"\\e890\";\n}\n.icon-insert_comment:before {\n  content: \"\\e24c\";\n}\n.icon-insert_drive_file:before {\n  content: \"\\e24d\";\n}\n.icon-tag_faces:before {\n  content: \"\\e420\";\n}\n.icon-link2:before {\n  content: \"\\e157\";\n}\n.icon-invert_colors:before {\n  content: \"\\e891\";\n}\n.icon-invert_colors_off:before {\n  content: \"\\e0c4\";\n}\n.icon-iso:before {\n  content: \"\\e3f6\";\n}\n.icon-keyboard:before {\n  content: \"\\e312\";\n}\n.icon-keyboard_arrow_down:before {\n  content: \"\\e313\";\n}\n.icon-keyboard_arrow_left:before {\n  content: \"\\e314\";\n}\n.icon-keyboard_arrow_right:before {\n  content: \"\\e315\";\n}\n.icon-keyboard_arrow_up:before {\n  content: \"\\e316\";\n}\n.icon-keyboard_backspace:before {\n  content: \"\\e317\";\n}\n.icon-keyboard_capslock:before {\n  content: \"\\e318\";\n}\n.icon-keyboard_hide:before {\n  content: \"\\e31a\";\n}\n.icon-keyboard_return:before {\n  content: \"\\e31b\";\n}\n.icon-keyboard_tab:before {\n  content: \"\\e31c\";\n}\n.icon-keyboard_voice:before {\n  content: \"\\e31d\";\n}\n.icon-kitchen:before {\n  content: \"\\eb47\";\n}\n.icon-label:before {\n  content: \"\\e892\";\n}\n.icon-label_outline:before {\n  content: \"\\e893\";\n}\n.icon-language2:before {\n  content: \"\\e894\";\n}\n.icon-laptop_chromebook:before {\n  content: \"\\e31f\";\n}\n.icon-laptop_mac:before {\n  content: \"\\e320\";\n}\n.icon-laptop_windows:before {\n  content: \"\\e321\";\n}\n.icon-last_page:before {\n  content: \"\\e5dd\";\n}\n.icon-open_in_new:before {\n  content: \"\\e89e\";\n}\n.icon-layers:before {\n  content: \"\\e53b\";\n}\n.icon-layers_clear:before {\n  content: \"\\e53c\";\n}\n.icon-leak_add:before {\n  content: \"\\e3f8\";\n}\n.icon-leak_remove:before {\n  content: \"\\e3f9\";\n}\n.icon-lens:before {\n  content: \"\\e3fa\";\n}\n.icon-library_books:before {\n  content: \"\\e02f\";\n}\n.icon-library_music:before {\n  content: \"\\e030\";\n}\n.icon-lightbulb_outline:before {\n  content: \"\\e90f\";\n}\n.icon-line_style:before {\n  content: \"\\e919\";\n}\n.icon-line_weight:before {\n  content: \"\\e91a\";\n}\n.icon-linear_scale:before {\n  content: \"\\e260\";\n}\n.icon-linked_camera:before {\n  content: \"\\e438\";\n}\n.icon-list2:before {\n  content: \"\\e896\";\n}\n.icon-live_help:before {\n  content: \"\\e0c6\";\n}\n.icon-live_tv:before {\n  content: \"\\e639\";\n}\n.icon-local_play:before {\n  content: \"\\e553\";\n}\n.icon-local_airport:before {\n  content: \"\\e53d\";\n}\n.icon-local_atm:before {\n  content: \"\\e53e\";\n}\n.icon-local_bar:before {\n  content: \"\\e540\";\n}\n.icon-local_cafe:before {\n  content: \"\\e541\";\n}\n.icon-local_car_wash:before {\n  content: \"\\e542\";\n}\n.icon-local_convenience_store:before {\n  content: \"\\e543\";\n}\n.icon-restaurant_menu:before {\n  content: \"\\e561\";\n}\n.icon-local_drink:before {\n  content: \"\\e544\";\n}\n.icon-local_florist:before {\n  content: \"\\e545\";\n}\n.icon-local_gas_station:before {\n  content: \"\\e546\";\n}\n.icon-shopping_cart:before {\n  content: \"\\e8cc\";\n}\n.icon-local_hospital:before {\n  content: \"\\e548\";\n}\n.icon-local_laundry_service:before {\n  content: \"\\e54a\";\n}\n.icon-local_library:before {\n  content: \"\\e54b\";\n}\n.icon-local_mall:before {\n  content: \"\\e54c\";\n}\n.icon-theaters:before {\n  content: \"\\e8da\";\n}\n.icon-local_offer:before {\n  content: \"\\e54e\";\n}\n.icon-local_parking:before {\n  content: \"\\e54f\";\n}\n.icon-local_pharmacy:before {\n  content: \"\\e550\";\n}\n.icon-local_pizza:before {\n  content: \"\\e552\";\n}\n.icon-print2:before {\n  content: \"\\e8ad\";\n}\n.icon-local_shipping:before {\n  content: \"\\e558\";\n}\n.icon-local_taxi:before {\n  content: \"\\e559\";\n}\n.icon-location_city:before {\n  content: \"\\e7f1\";\n}\n.icon-location_off:before {\n  content: \"\\e0c7\";\n}\n.icon-room:before {\n  content: \"\\e8b4\";\n}\n.icon-lock_open:before {\n  content: \"\\e898\";\n}\n.icon-lock_outline:before {\n  content: \"\\e899\";\n}\n.icon-looks:before {\n  content: \"\\e3fc\";\n}\n.icon-looks_3:before {\n  content: \"\\e3fb\";\n}\n.icon-looks_4:before {\n  content: \"\\e3fd\";\n}\n.icon-looks_5:before {\n  content: \"\\e3fe\";\n}\n.icon-looks_6:before {\n  content: \"\\e3ff\";\n}\n.icon-looks_one:before {\n  content: \"\\e400\";\n}\n.icon-looks_two:before {\n  content: \"\\e401\";\n}\n.icon-sync:before {\n  content: \"\\e627\";\n}\n.icon-loupe:before {\n  content: \"\\e402\";\n}\n.icon-low_priority:before {\n  content: \"\\e16d\";\n}\n.icon-loyalty:before {\n  content: \"\\e89a\";\n}\n.icon-mail_outline:before {\n  content: \"\\e0e1\";\n}\n.icon-map2:before {\n  content: \"\\e55b\";\n}\n.icon-markunread_mailbox:before {\n  content: \"\\e89b\";\n}\n.icon-memory:before {\n  content: \"\\e322\";\n}\n.icon-menu:before {\n  content: \"\\e5d2\";\n}\n.icon-message:before {\n  content: \"\\e0c9\";\n}\n.icon-mic:before {\n  content: \"\\e029\";\n}\n.icon-mic_none:before {\n  content: \"\\e02a\";\n}\n.icon-mic_off:before {\n  content: \"\\e02b\";\n}\n.icon-mms:before {\n  content: \"\\e618\";\n}\n.icon-mode_comment:before {\n  content: \"\\e253\";\n}\n.icon-monetization_on:before {\n  content: \"\\e263\";\n}\n.icon-money_off:before {\n  content: \"\\e25c\";\n}\n.icon-monochrome_photos:before {\n  content: \"\\e403\";\n}\n.icon-mood_bad:before {\n  content: \"\\e7f3\";\n}\n.icon-more:before {\n  content: \"\\e619\";\n}\n.icon-more_horiz:before {\n  content: \"\\e5d3\";\n}\n.icon-more_vert:before {\n  content: \"\\e5d4\";\n}\n.icon-motorcycle2:before {\n  content: \"\\e91b\";\n}\n.icon-mouse:before {\n  content: \"\\e323\";\n}\n.icon-move_to_inbox:before {\n  content: \"\\e168\";\n}\n.icon-movie_creation:before {\n  content: \"\\e404\";\n}\n.icon-movie_filter:before {\n  content: \"\\e43a\";\n}\n.icon-multiline_chart:before {\n  content: \"\\e6df\";\n}\n.icon-music_note:before {\n  content: \"\\e405\";\n}\n.icon-music_video:before {\n  content: \"\\e063\";\n}\n.icon-nature:before {\n  content: \"\\e406\";\n}\n.icon-nature_people:before {\n  content: \"\\e407\";\n}\n.icon-navigation:before {\n  content: \"\\e55d\";\n}\n.icon-near_me:before {\n  content: \"\\e569\";\n}\n.icon-network_cell:before {\n  content: \"\\e1b9\";\n}\n.icon-network_check:before {\n  content: \"\\e640\";\n}\n.icon-network_locked:before {\n  content: \"\\e61a\";\n}\n.icon-network_wifi:before {\n  content: \"\\e1ba\";\n}\n.icon-new_releases:before {\n  content: \"\\e031\";\n}\n.icon-next_week:before {\n  content: \"\\e16a\";\n}\n.icon-nfc:before {\n  content: \"\\e1bb\";\n}\n.icon-no_encryption:before {\n  content: \"\\e641\";\n}\n.icon-signal_cellular_no_sim:before {\n  content: \"\\e1ce\";\n}\n.icon-note:before {\n  content: \"\\e06f\";\n}\n.icon-note_add:before {\n  content: \"\\e89c\";\n}\n.icon-notifications:before {\n  content: \"\\e7f4\";\n}\n.icon-notifications_active:before {\n  content: \"\\e7f7\";\n}\n.icon-notifications_none:before {\n  content: \"\\e7f5\";\n}\n.icon-notifications_off:before {\n  content: \"\\e7f6\";\n}\n.icon-notifications_paused:before {\n  content: \"\\e7f8\";\n}\n.icon-offline_pin:before {\n  content: \"\\e90a\";\n}\n.icon-ondemand_video:before {\n  content: \"\\e63a\";\n}\n.icon-opacity:before {\n  content: \"\\e91c\";\n}\n.icon-open_in_browser:before {\n  content: \"\\e89d\";\n}\n.icon-open_with:before {\n  content: \"\\e89f\";\n}\n.icon-pages:before {\n  content: \"\\e7f9\";\n}\n.icon-pageview:before {\n  content: \"\\e8a0\";\n}\n.icon-pan_tool:before {\n  content: \"\\e925\";\n}\n.icon-panorama:before {\n  content: \"\\e40b\";\n}\n.icon-radio_button_unchecked:before {\n  content: \"\\e836\";\n}\n.icon-panorama_horizontal:before {\n  content: \"\\e40d\";\n}\n.icon-panorama_vertical:before {\n  content: \"\\e40e\";\n}\n.icon-panorama_wide_angle:before {\n  content: \"\\e40f\";\n}\n.icon-party_mode:before {\n  content: \"\\e7fa\";\n}\n.icon-pause2:before {\n  content: \"\\e034\";\n}\n.icon-pause_circle_filled:before {\n  content: \"\\e035\";\n}\n.icon-pause_circle_outline:before {\n  content: \"\\e036\";\n}\n.icon-people_outline:before {\n  content: \"\\e7fc\";\n}\n.icon-perm_camera_mic:before {\n  content: \"\\e8a2\";\n}\n.icon-perm_contact_calendar:before {\n  content: \"\\e8a3\";\n}\n.icon-perm_data_setting:before {\n  content: \"\\e8a4\";\n}\n.icon-perm_device_information:before {\n  content: \"\\e8a5\";\n}\n.icon-person_outline:before {\n  content: \"\\e7ff\";\n}\n.icon-perm_media:before {\n  content: \"\\e8a7\";\n}\n.icon-perm_phone_msg:before {\n  content: \"\\e8a8\";\n}\n.icon-perm_scan_wifi:before {\n  content: \"\\e8a9\";\n}\n.icon-person:before {\n  content: \"\\e7fd\";\n}\n.icon-person_add:before {\n  content: \"\\e7fe\";\n}\n.icon-person_pin:before {\n  content: \"\\e55a\";\n}\n.icon-person_pin_circle:before {\n  content: \"\\e56a\";\n}\n.icon-personal_video:before {\n  content: \"\\e63b\";\n}\n.icon-pets:before {\n  content: \"\\e91d\";\n}\n.icon-phone_android:before {\n  content: \"\\e324\";\n}\n.icon-phone_bluetooth_speaker:before {\n  content: \"\\e61b\";\n}\n.icon-phone_forwarded:before {\n  content: \"\\e61c\";\n}\n.icon-phone_in_talk:before {\n  content: \"\\e61d\";\n}\n.icon-phone_iphone:before {\n  content: \"\\e325\";\n}\n.icon-phone_locked:before {\n  content: \"\\e61e\";\n}\n.icon-phone_missed:before {\n  content: \"\\e61f\";\n}\n.icon-phone_paused:before {\n  content: \"\\e620\";\n}\n.icon-phonelink_erase:before {\n  content: \"\\e0db\";\n}\n.icon-phonelink_lock:before {\n  content: \"\\e0dc\";\n}\n.icon-phonelink_off:before {\n  content: \"\\e327\";\n}\n.icon-phonelink_ring:before {\n  content: \"\\e0dd\";\n}\n.icon-phonelink_setup:before {\n  content: \"\\e0de\";\n}\n.icon-photo_album:before {\n  content: \"\\e411\";\n}\n.icon-photo_filter:before {\n  content: \"\\e43b\";\n}\n.icon-photo_size_select_actual:before {\n  content: \"\\e432\";\n}\n.icon-photo_size_select_large:before {\n  content: \"\\e433\";\n}\n.icon-photo_size_select_small:before {\n  content: \"\\e434\";\n}\n.icon-picture_as_pdf:before {\n  content: \"\\e415\";\n}\n.icon-picture_in_picture:before {\n  content: \"\\e8aa\";\n}\n.icon-picture_in_picture_alt:before {\n  content: \"\\e911\";\n}\n.icon-pie_chart:before {\n  content: \"\\e6c4\";\n}\n.icon-pie_chart_outlined:before {\n  content: \"\\e6c5\";\n}\n.icon-pin_drop:before {\n  content: \"\\e55e\";\n}\n.icon-play_arrow:before {\n  content: \"\\e037\";\n}\n.icon-play_circle_filled:before {\n  content: \"\\e038\";\n}\n.icon-play_circle_outline:before {\n  content: \"\\e039\";\n}\n.icon-play_for_work:before {\n  content: \"\\e906\";\n}\n.icon-playlist_add:before {\n  content: \"\\e03b\";\n}\n.icon-playlist_add_check:before {\n  content: \"\\e065\";\n}\n.icon-playlist_play:before {\n  content: \"\\e05f\";\n}\n.icon-plus_one:before {\n  content: \"\\e800\";\n}\n.icon-polymer:before {\n  content: \"\\e8ab\";\n}\n.icon-pool:before {\n  content: \"\\eb48\";\n}\n.icon-portable_wifi_off:before {\n  content: \"\\e0ce\";\n}\n.icon-portrait:before {\n  content: \"\\e416\";\n}\n.icon-power:before {\n  content: \"\\e63c\";\n}\n.icon-power_input:before {\n  content: \"\\e336\";\n}\n.icon-power_settings_new:before {\n  content: \"\\e8ac\";\n}\n.icon-pregnant_woman:before {\n  content: \"\\e91e\";\n}\n.icon-present_to_all:before {\n  content: \"\\e0df\";\n}\n.icon-priority_high:before {\n  content: \"\\e645\";\n}\n.icon-public:before {\n  content: \"\\e80b\";\n}\n.icon-publish:before {\n  content: \"\\e255\";\n}\n.icon-queue_music:before {\n  content: \"\\e03d\";\n}\n.icon-queue_play_next:before {\n  content: \"\\e066\";\n}\n.icon-radio:before {\n  content: \"\\e03e\";\n}\n.icon-radio_button_checked:before {\n  content: \"\\e837\";\n}\n.icon-rate_review:before {\n  content: \"\\e560\";\n}\n.icon-receipt:before {\n  content: \"\\e8b0\";\n}\n.icon-recent_actors:before {\n  content: \"\\e03f\";\n}\n.icon-record_voice_over:before {\n  content: \"\\e91f\";\n}\n.icon-redo:before {\n  content: \"\\e15a\";\n}\n.icon-refresh2:before {\n  content: \"\\e5d5\";\n}\n.icon-remove2:before {\n  content: \"\\e15b\";\n}\n.icon-remove_circle_outline:before {\n  content: \"\\e15d\";\n}\n.icon-remove_from_queue:before {\n  content: \"\\e067\";\n}\n.icon-visibility:before {\n  content: \"\\e8f4\";\n}\n.icon-remove_shopping_cart:before {\n  content: \"\\e928\";\n}\n.icon-reorder2:before {\n  content: \"\\e8fe\";\n}\n.icon-repeat2:before {\n  content: \"\\e040\";\n}\n.icon-repeat_one:before {\n  content: \"\\e041\";\n}\n.icon-replay:before {\n  content: \"\\e042\";\n}\n.icon-replay_10:before {\n  content: \"\\e059\";\n}\n.icon-replay_30:before {\n  content: \"\\e05a\";\n}\n.icon-replay_5:before {\n  content: \"\\e05b\";\n}\n.icon-reply2:before {\n  content: \"\\e15e\";\n}\n.icon-reply_all:before {\n  content: \"\\e15f\";\n}\n.icon-report:before {\n  content: \"\\e160\";\n}\n.icon-warning2:before {\n  content: \"\\e002\";\n}\n.icon-restaurant:before {\n  content: \"\\e56c\";\n}\n.icon-restore_page:before {\n  content: \"\\e929\";\n}\n.icon-ring_volume:before {\n  content: \"\\e0d1\";\n}\n.icon-room_service:before {\n  content: \"\\eb49\";\n}\n.icon-rotate_90_degrees_ccw:before {\n  content: \"\\e418\";\n}\n.icon-rotate_left:before {\n  content: \"\\e419\";\n}\n.icon-rotate_right:before {\n  content: \"\\e41a\";\n}\n.icon-rounded_corner:before {\n  content: \"\\e920\";\n}\n.icon-router:before {\n  content: \"\\e328\";\n}\n.icon-rowing:before {\n  content: \"\\e921\";\n}\n.icon-rss_feed:before {\n  content: \"\\e0e5\";\n}\n.icon-rv_hookup:before {\n  content: \"\\e642\";\n}\n.icon-satellite:before {\n  content: \"\\e562\";\n}\n.icon-save2:before {\n  content: \"\\e161\";\n}\n.icon-scanner:before {\n  content: \"\\e329\";\n}\n.icon-school:before {\n  content: \"\\e80c\";\n}\n.icon-screen_lock_landscape:before {\n  content: \"\\e1be\";\n}\n.icon-screen_lock_portrait:before {\n  content: \"\\e1bf\";\n}\n.icon-screen_lock_rotation:before {\n  content: \"\\e1c0\";\n}\n.icon-screen_rotation:before {\n  content: \"\\e1c1\";\n}\n.icon-screen_share:before {\n  content: \"\\e0e2\";\n}\n.icon-sd_storage:before {\n  content: \"\\e1c2\";\n}\n.icon-search2:before {\n  content: \"\\e8b6\";\n}\n.icon-security:before {\n  content: \"\\e32a\";\n}\n.icon-select_all:before {\n  content: \"\\e162\";\n}\n.icon-send2:before {\n  content: \"\\e163\";\n}\n.icon-sentiment_dissatisfied:before {\n  content: \"\\e811\";\n}\n.icon-sentiment_neutral:before {\n  content: \"\\e812\";\n}\n.icon-sentiment_satisfied:before {\n  content: \"\\e813\";\n}\n.icon-sentiment_very_dissatisfied:before {\n  content: \"\\e814\";\n}\n.icon-sentiment_very_satisfied:before {\n  content: \"\\e815\";\n}\n.icon-settings:before {\n  content: \"\\e8b8\";\n}\n.icon-settings_applications:before {\n  content: \"\\e8b9\";\n}\n.icon-settings_backup_restore:before {\n  content: \"\\e8ba\";\n}\n.icon-settings_bluetooth:before {\n  content: \"\\e8bb\";\n}\n.icon-settings_brightness:before {\n  content: \"\\e8bd\";\n}\n.icon-settings_cell:before {\n  content: \"\\e8bc\";\n}\n.icon-settings_ethernet:before {\n  content: \"\\e8be\";\n}\n.icon-settings_input_antenna:before {\n  content: \"\\e8bf\";\n}\n.icon-settings_input_composite:before {\n  content: \"\\e8c1\";\n}\n.icon-settings_input_hdmi:before {\n  content: \"\\e8c2\";\n}\n.icon-settings_input_svideo:before {\n  content: \"\\e8c3\";\n}\n.icon-settings_overscan:before {\n  content: \"\\e8c4\";\n}\n.icon-settings_phone:before {\n  content: \"\\e8c5\";\n}\n.icon-settings_power:before {\n  content: \"\\e8c6\";\n}\n.icon-settings_remote:before {\n  content: \"\\e8c7\";\n}\n.icon-settings_system_daydream:before {\n  content: \"\\e1c3\";\n}\n.icon-settings_voice:before {\n  content: \"\\e8c8\";\n}\n.icon-share2:before {\n  content: \"\\e80d\";\n}\n.icon-shop:before {\n  content: \"\\e8c9\";\n}\n.icon-shop_two:before {\n  content: \"\\e8ca\";\n}\n.icon-shopping_basket:before {\n  content: \"\\e8cb\";\n}\n.icon-short_text:before {\n  content: \"\\e261\";\n}\n.icon-show_chart:before {\n  content: \"\\e6e1\";\n}\n.icon-shuffle:before {\n  content: \"\\e043\";\n}\n.icon-signal_cellular_4_bar:before {\n  content: \"\\e1c8\";\n}\n.icon-signal_cellular_connected_no_internet_4_bar:before {\n  content: \"\\e1cd\";\n}\n.icon-signal_cellular_null:before {\n  content: \"\\e1cf\";\n}\n.icon-signal_cellular_off:before {\n  content: \"\\e1d0\";\n}\n.icon-signal_wifi_4_bar:before {\n  content: \"\\e1d8\";\n}\n.icon-signal_wifi_4_bar_lock:before {\n  content: \"\\e1d9\";\n}\n.icon-signal_wifi_off:before {\n  content: \"\\e1da\";\n}\n.icon-sim_card:before {\n  content: \"\\e32b\";\n}\n.icon-sim_card_alert:before {\n  content: \"\\e624\";\n}\n.icon-skip_next:before {\n  content: \"\\e044\";\n}\n.icon-skip_previous:before {\n  content: \"\\e045\";\n}\n.icon-slideshow:before {\n  content: \"\\e41b\";\n}\n.icon-slow_motion_video:before {\n  content: \"\\e068\";\n}\n.icon-stay_primary_portrait:before {\n  content: \"\\e0d6\";\n}\n.icon-smoke_free:before {\n  content: \"\\eb4a\";\n}\n.icon-smoking_rooms:before {\n  content: \"\\eb4b\";\n}\n.icon-textsms:before {\n  content: \"\\e0d8\";\n}\n.icon-snooze:before {\n  content: \"\\e046\";\n}\n.icon-sort2:before {\n  content: \"\\e164\";\n}\n.icon-sort_by_alpha:before {\n  content: \"\\e053\";\n}\n.icon-spa:before {\n  content: \"\\eb4c\";\n}\n.icon-space_bar:before {\n  content: \"\\e256\";\n}\n.icon-speaker:before {\n  content: \"\\e32d\";\n}\n.icon-speaker_group:before {\n  content: \"\\e32e\";\n}\n.icon-speaker_notes:before {\n  content: \"\\e8cd\";\n}\n.icon-speaker_notes_off:before {\n  content: \"\\e92a\";\n}\n.icon-speaker_phone:before {\n  content: \"\\e0d2\";\n}\n.icon-spellcheck:before {\n  content: \"\\e8ce\";\n}\n.icon-star_border:before {\n  content: \"\\e83a\";\n}\n.icon-star_half:before {\n  content: \"\\e839\";\n}\n.icon-stars:before {\n  content: \"\\e8d0\";\n}\n.icon-stay_primary_landscape:before {\n  content: \"\\e0d5\";\n}\n.icon-stop2:before {\n  content: \"\\e047\";\n}\n.icon-stop_screen_share:before {\n  content: \"\\e0e3\";\n}\n.icon-storage:before {\n  content: \"\\e1db\";\n}\n.icon-store_mall_directory:before {\n  content: \"\\e563\";\n}\n.icon-straighten:before {\n  content: \"\\e41c\";\n}\n.icon-streetview:before {\n  content: \"\\e56e\";\n}\n.icon-strikethrough_s:before {\n  content: \"\\e257\";\n}\n.icon-style:before {\n  content: \"\\e41d\";\n}\n.icon-subdirectory_arrow_left:before {\n  content: \"\\e5d9\";\n}\n.icon-subdirectory_arrow_right:before {\n  content: \"\\e5da\";\n}\n.icon-subject:before {\n  content: \"\\e8d2\";\n}\n.icon-subscriptions:before {\n  content: \"\\e064\";\n}\n.icon-subtitles:before {\n  content: \"\\e048\";\n}\n.icon-subway2:before {\n  content: \"\\e56f\";\n}\n.icon-supervisor_account:before {\n  content: \"\\e8d3\";\n}\n.icon-surround_sound:before {\n  content: \"\\e049\";\n}\n.icon-swap_calls:before {\n  content: \"\\e0d7\";\n}\n.icon-swap_horiz:before {\n  content: \"\\e8d4\";\n}\n.icon-swap_vert:before {\n  content: \"\\e8d5\";\n}\n.icon-swap_vertical_circle:before {\n  content: \"\\e8d6\";\n}\n.icon-switch_camera:before {\n  content: \"\\e41e\";\n}\n.icon-switch_video:before {\n  content: \"\\e41f\";\n}\n.icon-sync_disabled:before {\n  content: \"\\e628\";\n}\n.icon-sync_problem:before {\n  content: \"\\e629\";\n}\n.icon-system_update:before {\n  content: \"\\e62a\";\n}\n.icon-system_update_alt:before {\n  content: \"\\e8d7\";\n}\n.icon-tab:before {\n  content: \"\\e8d8\";\n}\n.icon-tab_unselected:before {\n  content: \"\\e8d9\";\n}\n.icon-tablet2:before {\n  content: \"\\e32f\";\n}\n.icon-tablet_android:before {\n  content: \"\\e330\";\n}\n.icon-tablet_mac:before {\n  content: \"\\e331\";\n}\n.icon-tap_and_play:before {\n  content: \"\\e62b\";\n}\n.icon-text_fields:before {\n  content: \"\\e262\";\n}\n.icon-text_format:before {\n  content: \"\\e165\";\n}\n.icon-texture:before {\n  content: \"\\e421\";\n}\n.icon-thumb_down:before {\n  content: \"\\e8db\";\n}\n.icon-thumb_up:before {\n  content: \"\\e8dc\";\n}\n.icon-thumbs_up_down:before {\n  content: \"\\e8dd\";\n}\n.icon-timelapse:before {\n  content: \"\\e422\";\n}\n.icon-timeline:before {\n  content: \"\\e922\";\n}\n.icon-timer:before {\n  content: \"\\e425\";\n}\n.icon-timer_10:before {\n  content: \"\\e423\";\n}\n.icon-timer_3:before {\n  content: \"\\e424\";\n}\n.icon-timer_off:before {\n  content: \"\\e426\";\n}\n.icon-title:before {\n  content: \"\\e264\";\n}\n.icon-toc:before {\n  content: \"\\e8de\";\n}\n.icon-today:before {\n  content: \"\\e8df\";\n}\n.icon-toll:before {\n  content: \"\\e8e0\";\n}\n.icon-tonality:before {\n  content: \"\\e427\";\n}\n.icon-touch_app:before {\n  content: \"\\e913\";\n}\n.icon-toys:before {\n  content: \"\\e332\";\n}\n.icon-track_changes:before {\n  content: \"\\e8e1\";\n}\n.icon-traffic:before {\n  content: \"\\e565\";\n}\n.icon-train2:before {\n  content: \"\\e570\";\n}\n.icon-tram:before {\n  content: \"\\e571\";\n}\n.icon-transfer_within_a_station:before {\n  content: \"\\e572\";\n}\n.icon-transform:before {\n  content: \"\\e428\";\n}\n.icon-translate:before {\n  content: \"\\e8e2\";\n}\n.icon-trending_down:before {\n  content: \"\\e8e3\";\n}\n.icon-trending_flat:before {\n  content: \"\\e8e4\";\n}\n.icon-trending_up:before {\n  content: \"\\e8e5\";\n}\n.icon-tune:before {\n  content: \"\\e429\";\n}\n.icon-tv2:before {\n  content: \"\\e333\";\n}\n.icon-unarchive:before {\n  content: \"\\e169\";\n}\n.icon-undo2:before {\n  content: \"\\e166\";\n}\n.icon-unfold_less:before {\n  content: \"\\e5d6\";\n}\n.icon-unfold_more:before {\n  content: \"\\e5d7\";\n}\n.icon-update:before {\n  content: \"\\e923\";\n}\n.icon-usb2:before {\n  content: \"\\e1e0\";\n}\n.icon-verified_user:before {\n  content: \"\\e8e8\";\n}\n.icon-vertical_align_bottom:before {\n  content: \"\\e258\";\n}\n.icon-vertical_align_center:before {\n  content: \"\\e259\";\n}\n.icon-vertical_align_top:before {\n  content: \"\\e25a\";\n}\n.icon-vibration:before {\n  content: \"\\e62d\";\n}\n.icon-video_call:before {\n  content: \"\\e070\";\n}\n.icon-video_label:before {\n  content: \"\\e071\";\n}\n.icon-video_library:before {\n  content: \"\\e04a\";\n}\n.icon-videocam:before {\n  content: \"\\e04b\";\n}\n.icon-videocam_off:before {\n  content: \"\\e04c\";\n}\n.icon-videogame_asset:before {\n  content: \"\\e338\";\n}\n.icon-view_agenda:before {\n  content: \"\\e8e9\";\n}\n.icon-view_array:before {\n  content: \"\\e8ea\";\n}\n.icon-view_carousel:before {\n  content: \"\\e8eb\";\n}\n.icon-view_column:before {\n  content: \"\\e8ec\";\n}\n.icon-view_comfy:before {\n  content: \"\\e42a\";\n}\n.icon-view_compact:before {\n  content: \"\\e42b\";\n}\n.icon-view_day:before {\n  content: \"\\e8ed\";\n}\n.icon-view_headline:before {\n  content: \"\\e8ee\";\n}\n.icon-view_list:before {\n  content: \"\\e8ef\";\n}\n.icon-view_module:before {\n  content: \"\\e8f0\";\n}\n.icon-view_quilt:before {\n  content: \"\\e8f1\";\n}\n.icon-view_stream:before {\n  content: \"\\e8f2\";\n}\n.icon-view_week:before {\n  content: \"\\e8f3\";\n}\n.icon-vignette:before {\n  content: \"\\e435\";\n}\n.icon-visibility_off:before {\n  content: \"\\e8f5\";\n}\n.icon-voice_chat:before {\n  content: \"\\e62e\";\n}\n.icon-voicemail:before {\n  content: \"\\e0d9\";\n}\n.icon-volume_down:before {\n  content: \"\\e04d\";\n}\n.icon-volume_mute:before {\n  content: \"\\e04e\";\n}\n.icon-volume_off:before {\n  content: \"\\e04f\";\n}\n.icon-volume_up:before {\n  content: \"\\e050\";\n}\n.icon-vpn_key:before {\n  content: \"\\e0da\";\n}\n.icon-vpn_lock:before {\n  content: \"\\e62f\";\n}\n.icon-wallpaper:before {\n  content: \"\\e1bc\";\n}\n.icon-watch:before {\n  content: \"\\e334\";\n}\n.icon-watch_later:before {\n  content: \"\\e924\";\n}\n.icon-wb_auto:before {\n  content: \"\\e42c\";\n}\n.icon-wb_incandescent:before {\n  content: \"\\e42e\";\n}\n.icon-wb_iridescent:before {\n  content: \"\\e436\";\n}\n.icon-wb_sunny:before {\n  content: \"\\e430\";\n}\n.icon-wc:before {\n  content: \"\\e63d\";\n}\n.icon-web:before {\n  content: \"\\e051\";\n}\n.icon-web_asset:before {\n  content: \"\\e069\";\n}\n.icon-weekend:before {\n  content: \"\\e16b\";\n}\n.icon-whatshot:before {\n  content: \"\\e80e\";\n}\n.icon-widgets:before {\n  content: \"\\e1bd\";\n}\n.icon-wifi2:before {\n  content: \"\\e63e\";\n}\n.icon-wifi_lock:before {\n  content: \"\\e1e1\";\n}\n.icon-wifi_tethering:before {\n  content: \"\\e1e2\";\n}\n.icon-work:before {\n  content: \"\\e8f9\";\n}\n.icon-wrap_text:before {\n  content: \"\\e25b\";\n}\n.icon-youtube_searched_for:before {\n  content: \"\\e8fa\";\n}\n.icon-zoom_in:before {\n  content: \"\\e8ff\";\n}\n.icon-zoom_out:before {\n  content: \"\\e901\";\n}\n.icon-zoom_out_map:before {\n  content: \"\\e56b\";\n}\n"
  },
  {
    "path": "public/user/css/jquery.timepicker.css",
    "content": ".ui-timepicker-wrapper {\n\toverflow-y: auto;\n\tmax-height: 150px;\n\twidth: 6.5em;\n\tbackground: #fff;\n\tborder: 1px solid #ddd;\n\t-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);\n\t-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);\n\tbox-shadow:0 5px 10px rgba(0,0,0,0.2);\n\toutline: none;\n\tz-index: 10001;\n\tmargin: 0;\n}\n\n.ui-timepicker-wrapper.ui-timepicker-with-duration {\n\twidth: 13em;\n}\n\n.ui-timepicker-wrapper.ui-timepicker-with-duration.ui-timepicker-step-30,\n.ui-timepicker-wrapper.ui-timepicker-with-duration.ui-timepicker-step-60 {\n\twidth: 11em;\n}\n\n.ui-timepicker-list {\n\tmargin: 0;\n\tpadding: 0;\n\tlist-style: none;\n}\n\n.ui-timepicker-duration {\n\tmargin-left: 5px; color: #888;\n}\n\n.ui-timepicker-list:hover .ui-timepicker-duration {\n\tcolor: #888;\n}\n\n.ui-timepicker-list li {\n\tpadding: 3px 0 3px 5px;\n\tcursor: pointer;\n\twhite-space: nowrap;\n\tcolor: #000;\n\tlist-style: none;\n\tmargin: 0;\n}\n\n.ui-timepicker-list:hover .ui-timepicker-selected {\n\tbackground: #fff; color: #000;\n}\n\nli.ui-timepicker-selected,\n.ui-timepicker-list li:hover,\n.ui-timepicker-list .ui-timepicker-selected:hover {\n\tbackground: #1980EC; color: #fff;\n}\n\nli.ui-timepicker-selected .ui-timepicker-duration,\n.ui-timepicker-list li:hover .ui-timepicker-duration {\n\tcolor: #ccc;\n}\n\n.ui-timepicker-list li.ui-timepicker-disabled,\n.ui-timepicker-list li.ui-timepicker-disabled:hover,\n.ui-timepicker-list li.ui-timepicker-selected.ui-timepicker-disabled {\n\tcolor: #888;\n\tcursor: default;\n}\n\n.ui-timepicker-list li.ui-timepicker-disabled:hover,\n.ui-timepicker-list li.ui-timepicker-selected.ui-timepicker-disabled {\n\tbackground: #f2f2f2;\n}\n"
  },
  {
    "path": "public/user/css/magnific-popup.css",
    "content": "/* Magnific Popup CSS */\n.mfp-bg {\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  z-index: 1042;\n  overflow: hidden;\n  position: fixed;\n  background: #0b0b0b;\n  opacity: 0.8; }\n\n.mfp-wrap {\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  z-index: 1043;\n  position: fixed;\n  outline: none !important;\n  -webkit-backface-visibility: hidden; }\n\n.mfp-container {\n  text-align: center;\n  position: absolute;\n  width: 100%;\n  height: 100%;\n  left: 0;\n  top: 0;\n  padding: 0 8px;\n  box-sizing: border-box; }\n\n.mfp-container:before {\n  content: '';\n  display: inline-block;\n  height: 100%;\n  vertical-align: middle; }\n\n.mfp-align-top .mfp-container:before {\n  display: none; }\n\n.mfp-content {\n  position: relative;\n  display: inline-block;\n  vertical-align: middle;\n  margin: 0 auto;\n  text-align: left;\n  z-index: 1045; }\n\n.mfp-inline-holder .mfp-content,\n.mfp-ajax-holder .mfp-content {\n  width: 100%;\n  cursor: auto; }\n\n.mfp-ajax-cur {\n  cursor: progress; }\n\n.mfp-zoom-out-cur, .mfp-zoom-out-cur .mfp-image-holder .mfp-close {\n  cursor: -moz-zoom-out;\n  cursor: -webkit-zoom-out;\n  cursor: zoom-out; }\n\n.mfp-zoom {\n  cursor: pointer;\n  cursor: -webkit-zoom-in;\n  cursor: -moz-zoom-in;\n  cursor: zoom-in; }\n\n.mfp-auto-cursor .mfp-content {\n  cursor: auto; }\n\n.mfp-close,\n.mfp-arrow,\n.mfp-preloader,\n.mfp-counter {\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  user-select: none; }\n\n.mfp-loading.mfp-figure {\n  display: none; }\n\n.mfp-hide {\n  display: none !important; }\n\n.mfp-preloader {\n  color: #CCC;\n  position: absolute;\n  top: 50%;\n  width: auto;\n  text-align: center;\n  margin-top: -0.8em;\n  left: 8px;\n  right: 8px;\n  z-index: 1044; }\n  .mfp-preloader a {\n    color: #CCC; }\n    .mfp-preloader a:hover {\n      color: #FFF; }\n\n.mfp-s-ready .mfp-preloader {\n  display: none; }\n\n.mfp-s-error .mfp-content {\n  display: none; }\n\nbutton.mfp-close,\nbutton.mfp-arrow {\n  overflow: visible;\n  cursor: pointer;\n  background: transparent;\n  border: 0;\n  -webkit-appearance: none;\n  display: block;\n  outline: none;\n  padding: 0;\n  z-index: 1046;\n  box-shadow: none;\n  touch-action: manipulation; }\n\nbutton::-moz-focus-inner {\n  padding: 0;\n  border: 0; }\n\n.mfp-close {\n  width: 44px;\n  height: 44px;\n  line-height: 44px;\n  position: absolute;\n  right: 0;\n  top: 0;\n  text-decoration: none;\n  text-align: center;\n  opacity: 0.65;\n  padding: 0 0 18px 10px;\n  color: #FFF;\n  font-style: normal;\n  font-size: 28px;\n  font-family: Arial, Baskerville, monospace; }\n  .mfp-close:hover,\n  .mfp-close:focus {\n    opacity: 1; }\n  .mfp-close:active {\n    top: 1px; }\n\n.mfp-close-btn-in .mfp-close {\n  color: #333; }\n\n.mfp-image-holder .mfp-close,\n.mfp-iframe-holder .mfp-close {\n  color: #FFF;\n  right: -6px;\n  text-align: right;\n  padding-right: 6px;\n  width: 100%; }\n\n.mfp-counter {\n  position: absolute;\n  top: 0;\n  right: 0;\n  color: #CCC;\n  font-size: 12px;\n  line-height: 18px;\n  white-space: nowrap; }\n\n.mfp-arrow {\n  position: absolute;\n  opacity: 0.65;\n  margin: 0;\n  top: 50%;\n  margin-top: -55px;\n  padding: 0;\n  width: 90px;\n  height: 110px;\n  -webkit-tap-highlight-color: transparent; }\n  .mfp-arrow:active {\n    margin-top: -54px; }\n  .mfp-arrow:hover,\n  .mfp-arrow:focus {\n    opacity: 1; }\n  .mfp-arrow:before,\n  .mfp-arrow:after {\n    content: '';\n    display: block;\n    width: 0;\n    height: 0;\n    position: absolute;\n    left: 0;\n    top: 0;\n    margin-top: 35px;\n    margin-left: 35px;\n    border: medium inset transparent; }\n  .mfp-arrow:after {\n    border-top-width: 13px;\n    border-bottom-width: 13px;\n    top: 8px; }\n  .mfp-arrow:before {\n    border-top-width: 21px;\n    border-bottom-width: 21px;\n    opacity: 0.7; }\n\n.mfp-arrow-left {\n  left: 0; }\n  .mfp-arrow-left:after {\n    border-right: 17px solid #FFF;\n    margin-left: 31px; }\n  .mfp-arrow-left:before {\n    margin-left: 25px;\n    border-right: 27px solid #3F3F3F; }\n\n.mfp-arrow-right {\n  right: 0; }\n  .mfp-arrow-right:after {\n    border-left: 17px solid #FFF;\n    margin-left: 39px; }\n  .mfp-arrow-right:before {\n    border-left: 27px solid #3F3F3F; }\n\n.mfp-iframe-holder {\n  padding-top: 40px;\n  padding-bottom: 40px; }\n  .mfp-iframe-holder .mfp-content {\n    line-height: 0;\n    width: 100%;\n    max-width: 900px; }\n  .mfp-iframe-holder .mfp-close {\n    top: -40px; }\n\n.mfp-iframe-scaler {\n  width: 100%;\n  height: 0;\n  overflow: hidden;\n  padding-top: 56.25%; }\n  .mfp-iframe-scaler iframe {\n    position: absolute;\n    display: block;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n    box-shadow: 0 0 8px rgba(0, 0, 0, 0.6);\n    background: #000; }\n\n/* Main image in popup */\nimg.mfp-img {\n  width: auto;\n  max-width: 100%;\n  height: auto;\n  display: block;\n  line-height: 0;\n  box-sizing: border-box;\n  padding: 40px 0 40px;\n  margin: 0 auto; }\n\n/* The shadow behind the image */\n.mfp-figure {\n  line-height: 0; }\n  .mfp-figure:after {\n    content: '';\n    position: absolute;\n    left: 0;\n    top: 40px;\n    bottom: 40px;\n    display: block;\n    right: 0;\n    width: auto;\n    height: auto;\n    z-index: -1;\n    box-shadow: 0 0 8px rgba(0, 0, 0, 0.6);\n    background: #444; }\n  .mfp-figure small {\n    color: #BDBDBD;\n    display: block;\n    font-size: 12px;\n    line-height: 14px; }\n  .mfp-figure figure {\n    margin: 0; }\n\n.mfp-bottom-bar {\n  margin-top: -36px;\n  position: absolute;\n  top: 100%;\n  left: 0;\n  width: 100%;\n  cursor: auto; }\n\n.mfp-title {\n  text-align: left;\n  line-height: 18px;\n  color: #F3F3F3;\n  word-wrap: break-word;\n  padding-right: 36px; }\n\n.mfp-image-holder .mfp-content {\n  max-width: 100%; }\n\n.mfp-gallery .mfp-image-holder .mfp-figure {\n  cursor: pointer; }\n\n@media screen and (max-width: 800px) and (orientation: landscape), screen and (max-height: 300px) {\n  /**\n       * Remove all paddings around the image on small screen\n       */\n  .mfp-img-mobile .mfp-image-holder {\n    padding-left: 0;\n    padding-right: 0; }\n  .mfp-img-mobile img.mfp-img {\n    padding: 0; }\n  .mfp-img-mobile .mfp-figure:after {\n    top: 0;\n    bottom: 0; }\n  .mfp-img-mobile .mfp-figure small {\n    display: inline;\n    margin-left: 5px; }\n  .mfp-img-mobile .mfp-bottom-bar {\n    background: rgba(0, 0, 0, 0.6);\n    bottom: 0;\n    margin: 0;\n    top: auto;\n    padding: 3px 5px;\n    position: fixed;\n    box-sizing: border-box; }\n    .mfp-img-mobile .mfp-bottom-bar:empty {\n      padding: 0; }\n  .mfp-img-mobile .mfp-counter {\n    right: 5px;\n    top: 3px; }\n  .mfp-img-mobile .mfp-close {\n    top: 0;\n    right: 0;\n    width: 35px;\n    height: 35px;\n    line-height: 35px;\n    background: rgba(0, 0, 0, 0.6);\n    position: fixed;\n    text-align: center;\n    padding: 0; } }\n\n@media all and (max-width: 900px) {\n  .mfp-arrow {\n    -webkit-transform: scale(0.75);\n    transform: scale(0.75); }\n  .mfp-arrow-left {\n    -webkit-transform-origin: 0;\n    transform-origin: 0; }\n  .mfp-arrow-right {\n    -webkit-transform-origin: 100%;\n    transform-origin: 100%; }\n  .mfp-container {\n    padding-left: 6px;\n    padding-right: 6px; } }"
  },
  {
    "path": "public/user/css/style.css",
    "content": "/* =================================\n------------------------------------\n  Divisima | eCommerce Template\n  Version: 1.0\n ------------------------------------\n ====================================*/\n\n/*----------------------------------------*/\n/* Template default CSS\n/*----------------------------------------*/\n\nhtml,\nbody {\n    height: 100%;\n    font-family: \"Josefin Sans\", sans-serif;\n    -webkit-font-smoothing: antialiased;\n    font-smoothing: antialiased;\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n    margin: 0;\n    color: #111111;\n    font-weight: 600;\n}\n\nh1 {\n    font-size: 70px;\n}\n\nh2 {\n    font-size: 36px;\n}\n\nh3 {\n    font-size: 30px;\n}\n\nh4 {\n    font-size: 24px;\n}\n\nh5 {\n    font-size: 18px;\n}\n\nh6 {\n    font-size: 16px;\n}\n\np {\n    font-size: 14px;\n    color: #585858;\n    line-height: 1.6;\n}\n\nimg {\n    max-width: 100%;\n}\n\ninput:focus,\nselect:focus,\nbutton:focus,\ntextarea:focus {\n    outline: none;\n}\n\na:hover,\na:focus {\n    text-decoration: none;\n    outline: none;\n}\n\nul,\nol {\n    padding: 0;\n    margin: 0;\n}\n\n/*---------------------\n  Helper CSS\n-----------------------*/\n\n.section-title {\n    text-align: center;\n}\n\n.section-title h2 {\n    font-size: 36px;\n}\n\n.set-bg {\n    background-repeat: no-repeat;\n    background-size: cover;\n    background-position: top center;\n}\n\n.spad {\n    padding-top: 105px;\n    padding-bottom: 105px;\n}\n\n.text-white h1,\n.text-white h2,\n.text-white h3,\n.text-white h4,\n.text-white h5,\n.text-white h6,\n.text-white p,\n.text-white span,\n.text-white li,\n.text-white a {\n    color: #fff;\n}\n\n/*---------------------\n  Commom elements\n-----------------------*/\n\n/* buttons */\n\n.site-btn {\n    display: inline-block;\n    border: none;\n    font-size: 14px;\n    font-weight: 600;\n    min-width: 167px;\n    padding: 18px 47px 14px;\n    border-radius: 50px;\n    text-transform: uppercase;\n    background: #f51167;\n    color: #fff;\n    line-height: normal;\n    cursor: pointer;\n    text-align: center;\n}\n\n.site-btn:hover {\n    color: #fff;\n}\n\n.site-btn.sb-white {\n    background: #fff;\n    color: #111111;\n}\n\n.site-btn.sb-line {\n    background: transparent;\n    color: #fff;\n    -webkit-box-shadow: inset 0 0 0 1px #fff;\n    box-shadow: inset 0 0 0 1px #fff;\n}\n\n.site-btn.sb-dark {\n    background: #413a3a;\n}\n\n.site-btn.sb-dark.sb-line {\n    background-color: transparent;\n    color: #111111;\n    -webkit-box-shadow: inset 0 0 0 1px #111111;\n    box-shadow: inset 0 0 0 1px #111111;\n}\n\n/* Preloder */\n\n#preloder {\n    position: fixed;\n    width: 100%;\n    height: 100%;\n    top: 0;\n    left: 0;\n    z-index: 999999;\n    background: #000;\n}\n\n.loader {\n    width: 40px;\n    height: 40px;\n    position: absolute;\n    top: 50%;\n    left: 50%;\n    margin-top: -13px;\n    margin-left: -13px;\n    border-radius: 60px;\n    animation: loader 0.8s linear infinite;\n    -webkit-animation: loader 0.8s linear infinite;\n}\n\n@keyframes loader {\n    0% {\n        -webkit-transform: rotate(0deg);\n        transform: rotate(0deg);\n        border: 4px solid #f44336;\n        border-left-color: transparent;\n    }\n    50% {\n        -webkit-transform: rotate(180deg);\n        transform: rotate(180deg);\n        border: 4px solid #673ab7;\n        border-left-color: transparent;\n    }\n    100% {\n        -webkit-transform: rotate(360deg);\n        transform: rotate(360deg);\n        border: 4px solid #f44336;\n        border-left-color: transparent;\n    }\n}\n\n@-webkit-keyframes loader {\n    0% {\n        -webkit-transform: rotate(0deg);\n        border: 4px solid #f44336;\n        border-left-color: transparent;\n    }\n    50% {\n        -webkit-transform: rotate(180deg);\n        border: 4px solid #673ab7;\n        border-left-color: transparent;\n    }\n    100% {\n        -webkit-transform: rotate(360deg);\n        border: 4px solid #f44336;\n        border-left-color: transparent;\n    }\n}\n\n.elements-section {\n    padding-top: 100px;\n}\n\n.el-title {\n    margin-bottom: 75px;\n}\n\n.element {\n    margin-bottom: 100px;\n}\n\n.element:last-child {\n    margin-bottom: 0;\n}\n\n/* Accordion */\n\n.accordion-area {\n    margin-top: 50px;\n    border-top: 2px solid #e1e1e1;\n}\n\n.accordion-area .panel {\n    border-bottom: 2px solid #e1e1e1;\n}\n\n.accordion-area .panel-link {\n    background-image: url(\"../img/arrow-down.png\");\n    background-repeat: no-repeat;\n    background-position: right 10px top 30px;\n}\n\n.faq-accordion.accordion-area .panel-link,\n.faq-accordion.accordion-area .panel-link.active.collapsed {\n    padding: 17px 100px 17px 20px;\n}\n\n.faq-accordion.accordion-area .panel-link:after {\n    right: 44px;\n}\n\n.accordion-area .panel-header .panel-link.collapsed {\n    background-image: url(\"../img/arrow-down.png\");\n}\n\n.accordion-area .panel-link.active {\n    background-image: url(\"../img/arrow-up.png\");\n}\n\n.accordion-area .panel-link.active {\n    background-color: transparent;\n}\n\n.accordion-area .panel-link,\n.accordion-area .panel-link.active.collapsed {\n    text-align: left;\n    position: relative;\n    width: 100%;\n    font-size: 14px;\n    font-weight: 700;\n    color: #414141;\n    padding: 0;\n    text-transform: uppercase;\n    line-height: 1;\n    cursor: pointer;\n    border: none;\n    min-height: 69px;\n    background-color: transparent;\n    border-radius: 0;\n}\n\n.accordion-area .panel-body {\n    padding-top: 10px;\n}\n\n.accordion-area .panel-body p {\n    color: #8f8f8f;\n    margin-bottom: 25px;\n    line-height: 1.8;\n}\n\n.accordion-area .panel-body p span {\n    font-size: 12px;\n    font-weight: 700;\n    text-transform: uppercase;\n    color: #f51167;\n}\n\n.accordion-area .panel-body img {\n    margin-bottom: 25px;\n}\n\n.accordion-area .panel-body h4 {\n    font-size: 18px;\n    margin-bottom: 20px;\n}\n\n/*------------------\n  Header section\n---------------------*/\n\n.header-top {\n    padding: 18px 0 14px;\n}\n\n.site-logo {\n    display: inline-block;\n}\n\n.header-search-form {\n    width: 100%;\n    position: relative;\n    padding: 0 10px;\n}\n\n.header-search-form input {\n    width: 100%;\n    height: 44px;\n    font-size: 14px;\n    border-radius: 50px;\n    border: none;\n    padding: 0 19px;\n    background: #f0f0f0;\n}\n\n.header-search-form button {\n    position: absolute;\n    height: 100%;\n    right: 18px;\n    top: 0;\n    font-size: 26px;\n    color: #000;\n    border: none;\n    cursor: pointer;\n    background-color: transparent;\n}\n\n.user-panel .up-item {\n    display: inline-block;\n    font-size: 14px;\n}\n\n.user-panel .up-item i {\n    font-size: 22px;\n}\n\n.user-panel .up-item a {\n    font-size: 14px;\n    color: #000;\n}\n\n.user-panel .up-item:first-child {\n    margin-right: 29px;\n}\n\n.shopping-card {\n    display: inline-block;\n    position: relative;\n}\n\n.shopping-card span {\n    position: absolute;\n    top: -4px;\n    left: 100%;\n    height: 16px;\n    min-width: 16px;\n    color: #fff;\n    font-size: 13px;\n    background: #f51167;\n    text-align: center;\n    border-radius: 30px;\n    padding: 0 2px;\n    margin-left: -7px;\n}\n\n.main-navbar {\n    background: #282828;\n}\n\n.slicknav_menu {\n    display: none;\n}\n\n.main-menu {\n    list-style: none;\n}\n\n.main-menu li {\n    display: inline-block;\n    position: relative;\n}\n\n.main-menu li a {\n    display: inline-block;\n    font-size: 16px;\n    color: #ffffff;\n    margin-right: 50px;\n    line-height: 1;\n    padding: 17px 0;\n    position: relative;\n}\n\n.main-menu li a .new {\n    position: absolute;\n    top: -8px;\n    font-size: 10px;\n    font-weight: 700;\n    color: #fff;\n    background: #f51167;\n    line-height: 1;\n    text-transform: uppercase;\n    left: calc(50% - 21px);\n    padding: 5px 9px 1px;\n    border-radius: 15px;\n    width: 42px;\n}\n\n.main-menu li:hover .sub-menu {\n    visibility: visible;\n    opacity: 1;\n    margin-top: 0;\n}\n\n.main-menu li:hover > a {\n    color: #f51167;\n}\n\n.main-menu .sub-menu {\n    position: absolute;\n    list-style: none;\n    width: 220px;\n    left: 0;\n    top: 100%;\n    padding: 20px 0;\n    visibility: hidden;\n    opacity: 0;\n    margin-top: 50px;\n    background: #fff;\n    z-index: 99;\n    -webkit-transition: all 0.4s;\n    -o-transition: all 0.4s;\n    transition: all 0.4s;\n    -webkit-box-shadow: 2px 7px 20px rgba(0, 0, 0, 0.05);\n    box-shadow: 2px 7px 20px rgba(0, 0, 0, 0.05);\n}\n\n.main-menu .sub-menu li {\n    display: block;\n}\n\n.main-menu .sub-menu li a {\n    display: block;\n    color: #000;\n    margin-right: 0;\n    padding: 8px 20px;\n}\n\n.main-menu .sub-menu li a:hover {\n    color: #f51167;\n}\n\n.nav-switch {\n    display: none;\n}\n\n/* ----------------\n  Features\n---------------------*/\n\n.hero-section {\n    padding-bottom: 54px;\n}\n\n.hero-slider .hs-item {\n    position: relative;\n    height: 720px;\n}\n\n.hero-slider .hs-item span {\n    font-size: 18px;\n    text-transform: uppercase;\n    font-weight: 600;\n    letter-spacing: 3px;\n    margin-bottom: 5px;\n    display: block;\n    position: relative;\n    top: 50px;\n    opacity: 0;\n}\n\n.hero-slider .hs-item h2 {\n    font-size: 60px;\n    text-transform: uppercase;\n    font-weight: 700;\n    margin-bottom: 10px;\n    position: relative;\n    top: 50px;\n    opacity: 0;\n}\n\n.hero-slider .hs-item p {\n    font-size: 18px;\n    font-weight: 300;\n    margin-bottom: 35px;\n    position: relative;\n    top: 100px;\n    opacity: 0;\n}\n\n.hero-slider .hs-item .site-btn {\n    position: relative;\n    top: 50px;\n    opacity: 0;\n}\n\n.hero-slider .hs-item .sb-line {\n    margin-right: 5px;\n}\n\n.hero-slider .hs-item .container {\n    position: relative;\n    padding-top: 170px;\n}\n\n.hero-slider .hs-item .offer-card {\n    position: absolute;\n    right: 0;\n    top: 226px;\n    width: 162px;\n    height: 162px;\n    border-radius: 50%;\n    background: #f51167;\n    text-align: center;\n    padding-top: 20px;\n    -webkit-transform: rotate(45deg);\n    -ms-transform: rotate(45deg);\n    transform: rotate(45deg);\n    opacity: 0;\n}\n\n.hero-slider .hs-item .offer-card:after {\n    position: absolute;\n    content: \"\";\n    width: calc(100% - 10px);\n    height: calc(100% - 10px);\n    border: 1px solid #f96790;\n    left: 5px;\n    top: 5px;\n    border-radius: 50%;\n}\n\n.hero-slider .hs-item .offer-card span {\n    font-size: 18px;\n    text-transform: lowercase;\n    position: relative;\n    top: 50px;\n    opacity: 0;\n}\n\n.hero-slider .hs-item .offer-card h2 {\n    font-size: 72px;\n    font-weight: 400;\n    line-height: 1;\n}\n\n.hero-slider .hs-item .offer-card p {\n    text-transform: uppercase;\n    line-height: 1;\n    font-size: 14px;\n}\n\n.hero-slider .slider-nav-warp {\n    max-width: 1145px;\n    bottom: 0;\n    margin: -78px auto 0;\n}\n\n.hero-slider .slider-nav {\n    display: inline-block;\n    padding: 0 38px;\n    position: relative;\n}\n\n.hero-slider .owl-dots {\n    display: -ms-flex;\n    display: -webkit-box;\n    display: -ms-flexbox;\n    display: flex;\n    padding-top: 9px;\n}\n\n.hero-slider .owl-dots .owl-dot {\n    width: 8px;\n    height: 8px;\n    background: #fff;\n    border-radius: 15px;\n    margin-right: 10px;\n    opacity: 0.25;\n}\n\n.hero-slider .owl-dots .owl-dot.active {\n    opacity: 1;\n}\n\n.hero-slider .owl-dots .owl-dot:last-child {\n    margin-right: 0;\n}\n\n.hero-slider .owl-nav button.owl-next,\n.hero-slider .owl-nav button.owl-prev {\n    font-size: 27px;\n    position: absolute;\n    color: #fff;\n    opacity: 0.5;\n    bottom: -20px;\n}\n\n.hero-slider .owl-nav button.owl-next {\n    right: 0;\n}\n\n.hero-slider .owl-nav button.owl-prev {\n    left: 0;\n}\n\n.hero-slider .owl-item.active .hs-item h2,\n.hero-slider .owl-item.active .hs-item span,\n.hero-slider .owl-item.active .hs-item p,\n.hero-slider .owl-item.active .hs-item .site-btn {\n    top: 0;\n    opacity: 1;\n}\n\n.hero-slider .owl-item.active .hs-item span {\n    -webkit-transition: all 0.5s ease 0.2s;\n    -o-transition: all 0.5s ease 0.2s;\n    transition: all 0.5s ease 0.2s;\n}\n\n.hero-slider .owl-item.active .hs-item h2 {\n    -webkit-transition: all 0.5s ease 0.4s;\n    -o-transition: all 0.5s ease 0.4s;\n    transition: all 0.5s ease 0.4s;\n}\n\n.hero-slider .owl-item.active .hs-item p {\n    -webkit-transition: all 0.5s ease 0.6s;\n    -o-transition: all 0.5s ease 0.6s;\n    transition: all 0.5s ease 0.6s;\n}\n\n.hero-slider .owl-item.active .hs-item .site-btn {\n    -webkit-transition: all 0.5s ease 0.8s;\n    -webkit-transition: all 0.5s ease 0.8s;\n    -o-transition: all 0.5s ease 0.8s;\n    transition: all 0.5s ease 0.8s;\n}\n\n.hero-slider .owl-item.active .hs-item .offer-card {\n    opacity: 1;\n    -webkit-transform: rotate(0deg);\n    -ms-transform: rotate(0deg);\n    transform: rotate(0deg);\n    -webkit-transition: all 0.5s ease 1s;\n    -webkit-transition: all 0.5s ease 1s;\n    -o-transition: all 0.5s ease 1s;\n    transition: all 0.5s ease 1s;\n}\n\n.slide-num-holder {\n    float: right;\n    z-index: 1;\n    color: #fff;\n    position: relative;\n    font-size: 24px;\n    font-weight: 700;\n    position: relative;\n    margin-top: -22px;\n}\n\n.slide-num-holder span:first-child {\n    margin-right: 41px;\n}\n\n.slide-num-holder:after {\n    position: absolute;\n    content: \"\";\n    height: 30px;\n    width: 1px;\n    background: #fff;\n    left: 50%;\n    top: 0;\n    -webkit-transform-origin: center;\n    -ms-transform-origin: center;\n    transform-origin: center;\n    -webkit-transform: rotate(30deg);\n    -ms-transform: rotate(30deg);\n    transform: rotate(30deg);\n}\n\n/* ------------------\n  Features section\n---------------------*/\n\n.feature {\n    text-align: center;\n    background: #f8f8f8;\n    height: 100%;\n}\n\n.feature:nth-child(2) {\n    background: #f51167;\n}\n\n.feature:nth-child(2) h2 {\n    color: #fff;\n}\n\n.feature .feature-inner {\n    padding: 20px 25px;\n    display: -ms-flex;\n    display: -webkit-box;\n    display: -ms-flexbox;\n    display: flex;\n    -webkit-box-align: center;\n    -ms-flex-align: center;\n    align-items: center;\n    -webkit-box-pack: center;\n    -ms-flex-pack: center;\n    justify-content: center;\n    height: 100%;\n}\n\n.feature .feature-icon {\n    display: inline-block;\n    margin-right: 15px;\n}\n\n.feature h2 {\n    font-size: 24px;\n    text-transform: uppercase;\n    display: inline-block;\n}\n\n/* ----------------------\n  Latest product section\n------------------------*/\n\n.top-letest-product-section {\n    padding-top: 70px;\n    padding-bottom: 60px;\n}\n\n.top-letest-product-section .section-title {\n    margin-bottom: 70px;\n}\n\n.product-slider .owl-nav {\n    position: absolute;\n    top: calc(50% - 60px);\n    width: 100%;\n    left: 0;\n}\n\n.product-slider .owl-nav button.owl-next,\n.product-slider .owl-nav button.owl-prev {\n    color: #a4a4a4;\n    font-size: 42px;\n    position: relative;\n}\n\n.product-slider .owl-nav button.owl-next {\n    float: right;\n    right: -92px;\n}\n\n.product-slider .owl-nav button.owl-prev {\n    float: left;\n    left: -92px;\n}\n\n.product-item .pi-pic {\n    position: relative;\n    display: block;\n}\n\n.product-item .tag-new,\n.product-item .tag-sale {\n    position: absolute;\n    right: 16px;\n    top: 14px;\n    font-size: 10px;\n    font-weight: 700;\n    color: #fff;\n    background: #50e550;\n    line-height: 1;\n    text-transform: uppercase;\n    padding: 5px 9px 1px;\n    border-radius: 15px;\n    width: 42px;\n}\n\n.product-item .tag-sale {\n    text-align: center;\n    padding: 5px 0px 1px;\n    min-width: 65px;\n    background: #f51167;\n}\n\n.product-item .pi-links {\n    width: 100%;\n    position: absolute;\n    right: 0;\n    bottom: 18px;\n    z-index: 9;\n    padding-right: 15px;\n    text-align: right;\n}\n\n.product-item .pi-links a {\n    display: inline-table;\n    width: 36px;\n    height: 36px;\n    background: #fff;\n    border-radius: 60px;\n    font-size: 18px;\n    line-height: 18px;\n    padding-top: 9px;\n    overflow: hidden;\n    color: #000;\n    position: relative;\n    -webkit-box-shadow: 1px 0 32px rgba(0, 0, 0, 0.2);\n    box-shadow: 1px 0 32px rgba(0, 0, 0, 0.2);\n    -webkit-transition: all 0.4s ease;\n    -o-transition: all 0.4s ease;\n    transition: all 0.4s ease;\n    text-align: center;\n}\n\n.product-item .pi-links a i {\n    display: inline-block;\n    color: #000;\n}\n\n.product-item .pi-links a.add-card {\n    padding-top: 8px;\n}\n\n.product-item .pi-links a.add-card span {\n    font-size: 12px;\n    font-weight: bold;\n    text-transform: uppercase;\n    position: absolute;\n    right: 19px;\n    top: 20px;\n    opacity: 0;\n}\n\n.product-item .pi-links a.add-card:hover {\n    width: 148px;\n    padding: 8px 18px 0;\n    text-align: left;\n}\n\n.product-item .pi-links a.add-card:hover span {\n    opacity: 1;\n    top: 10px;\n    -webkit-transition: all 0.4s ease 0.3s;\n    -o-transition: all 0.4s ease 0.3s;\n    transition: all 0.4s ease 0.3s;\n}\n\n.product-item .pi-text {\n    padding-top: 22px;\n    height: 87px;\n}\n\n.product-item .pi-text h6 {\n    float: right;\n    padding-left: 40px;\n    overflow: hidden;\n    font-weight: 700;\n    color: #111111;\n}\n\n.product-item .pi-text p {\n    font-size: 16px;\n    color: #111111;\n    margin-bottom: 0;\n}\n\n/* -----------------------\n  Product filter section\n-------------------------*/\n\n.product-filter-section {\n    padding-bottom: 60px;\n}\n\n.product-filter-section .section-title {\n    margin-bottom: 70px;\n}\n\n.product-filter-menu {\n    list-style: none;\n    margin: 0 -10px;\n    padding-bottom: 15px;\n}\n\n.product-filter-menu li {\n    margin: 0 10px 10px;\n    display: inline-block;\n}\n\n.product-filter-menu li a {\n    color: #111111;\n    font-size: 12px;\n    font-weight: 700;\n    text-transform: uppercase;\n    background: #ebebeb;\n    display: block;\n    width: 100%;\n    padding: 10px 34px;\n    border-radius: 31px;\n}\n\n/* ----------------\n  Banner section\n---------------------*/\n\n.banner {\n    padding: 50px 34px 47px;\n    position: relative;\n    margin-bottom: 70px;\n}\n\n.banner .tag-new {\n    position: absolute;\n    right: 26px;\n    top: 27px;\n    font-size: 24px;\n    font-weight: 700;\n    color: #fff;\n    background: #50e550;\n    line-height: 1;\n    text-transform: uppercase;\n    padding: 7px 16px 1px;\n    border-radius: 80px;\n}\n\n.banner span {\n    font-size: 18px;\n    text-transform: uppercase;\n    font-weight: 600;\n    letter-spacing: 3px;\n    margin-bottom: 5px;\n    display: block;\n}\n\n.banner h2 {\n    font-size: 48px;\n    text-transform: uppercase;\n    font-weight: 700;\n    margin-bottom: 10px;\n    color: #282828;\n}\n\n/* ----------------\n  Footer section\n---------------------*/\n\n.footer-section {\n    background: #282828;\n    padding-top: 60px;\n}\n\n.footer-logo {\n    padding-bottom: 60px;\n}\n\n.footer-widget {\n    margin-bottom: 70px;\n    overflow: hidden;\n}\n\n.footer-widget h2 {\n    font-size: 18px;\n    font-weight: 700;\n    text-transform: uppercase;\n    color: #fff;\n    margin-bottom: 45px;\n}\n\n.footer-widget p {\n    color: #8f8f8f;\n}\n\n.footer-widget.about-widget p {\n    margin-bottom: 50px;\n    letter-spacing: -0.01em;\n}\n\n.footer-widget ul {\n    list-style: none;\n    float: left;\n    margin-right: 37px;\n}\n\n.footer-widget ul:last-child {\n    margin-right: 0;\n}\n\n.footer-widget ul li a {\n    display: inline-block;\n    position: relative;\n    padding-left: 20px;\n    font-size: 14px;\n    color: #8f8f8f;\n    margin-bottom: 6px;\n}\n\n.footer-widget ul li a:after {\n    position: absolute;\n    content: \"\";\n    width: 5px;\n    height: 5px;\n    left: 0;\n    top: 8px;\n    border: 1px solid #ec105a;\n    border-radius: 50%;\n    -webkit-transition: all 0.2s;\n    -o-transition: all 0.2s;\n    transition: all 0.2s;\n}\n\n.footer-widget ul li a:hover {\n    color: #fff;\n}\n\n.footer-widget ul li a:hover:after {\n    width: 7px;\n    height: 7px;\n    top: 6px;\n    background: #ec105a;\n}\n\n.fw-latest-post-widget .lp-item {\n    margin-bottom: 30px;\n    display: block;\n    overflow: hidden;\n}\n\n.fw-latest-post-widget .lp-thumb {\n    width: 64px;\n    height: 64px;\n    float: left;\n    margin-right: 22px;\n}\n\n.fw-latest-post-widget .lp-content {\n    overflow: hidden;\n    padding-top: 2px;\n}\n\n.fw-latest-post-widget .lp-content h6 {\n    font-size: 14px;\n    font-weight: 700;\n    text-transform: uppercase;\n    opacity: 0.25;\n    color: #717171;\n    margin-bottom: 1px;\n}\n\n.fw-latest-post-widget .lp-content span {\n    display: block;\n    font-size: 12px;\n    color: #8f8f8f;\n    margin-bottom: 4px;\n}\n\n.fw-latest-post-widget .lp-content .readmore {\n    font-size: 12px;\n    color: #f51167;\n}\n\n.contact-widget .con-info span {\n    float: left;\n    color: #f51167;\n    margin-right: 15px;\n    overflow: hidden;\n}\n\n.social-links-warp {\n    border-top: 2px solid #3b3535;\n    padding: 46px 0;\n}\n\n.social-links a {\n    margin-right: 60px;\n    display: inline-block;\n}\n\n.social-links a:last-child {\n    margin-right: 0;\n}\n\n.social-links a i {\n    font-size: 30px;\n    color: #fff;\n    float: left;\n    margin-right: 19px;\n    overflow: hidden;\n    -webkit-transition: all 0.3s;\n    -o-transition: all 0.3s;\n    transition: all 0.3s;\n}\n\n.social-links a span {\n    display: inline-block;\n    font-size: 12px;\n    font-weight: 600;\n    text-transform: uppercase;\n    color: #9f9fa0;\n    padding-top: 10px;\n    -webkit-transition: all 0.3s;\n    -o-transition: all 0.3s;\n    transition: all 0.3s;\n}\n\n.social-links a.instagram:hover i {\n    color: #2c6a93;\n}\n\n.social-links a.telegram:hover i {\n    color: #0088cc;\n}\n\n.social-links a.whatsapp:hover i {\n    color: #25d366;\n}\n\n.social-links a.github:hover i {\n    color: #040204;\n}\n\n.social-links a.facebook:hover i {\n    color: #3b5998;\n}\n\n.social-links a.twitter:hover i {\n    color: #00b6f1;\n}\n\n.social-links a.youtube:hover i {\n    color: #c31a1e;\n}\n\n.social-links a:hover span {\n    color: #fff;\n}\n\n/* --------------\n  Other Pages\n------------------*/\n\n.page-top-info {\n    background: #f8f7f7;\n    padding: 60px 0 70px;\n}\n\n.page-top-info h4 {\n    color: #414141;\n    font-weight: 700;\n    text-transform: uppercase;\n}\n\n.site-pagination {\n    font-size: 14px;\n    font-weight: 600;\n    color: #414141;\n}\n\n.site-pagination a {\n    display: inline-block;\n    font-size: 14px;\n    color: #414141;\n}\n\n/* --------------\n  Category page\n------------------*/\n\n.filter-widget {\n    margin-bottom: 100px;\n}\n\n.filter-widget .fw-title {\n    font-size: 18px;\n    font-weight: 700;\n    color: #414141;\n    text-transform: uppercase;\n    margin-bottom: 45px;\n}\n\n.category-menu {\n    list-style: none;\n}\n\n.category-menu li a {\n    display: block;\n    position: relative;\n    font-size: 12px;\n    color: #414141;\n    border-bottom: 1px solid #ebebeb;\n    padding: 12px 0 5px 20px;\n}\n\n.category-menu li a span {\n    float: right;\n}\n\n.category-menu li a:after {\n    position: absolute;\n    content: \"\";\n    width: 9px;\n    height: 9px;\n    left: 0;\n    top: 13px;\n    border: 1px solid #f51167;\n    border-radius: 50%;\n}\n\n.category-menu li a:hover {\n    color: #f51167;\n}\n\n.category-menu li a:hover:after {\n    background: #f51167;\n}\n\n.category-menu li a:last-child a {\n    margin-bottom: 0;\n}\n\n.category-menu li .sub-menu {\n    list-style: none;\n    overflow: hidden;\n    height: 0;\n    -webkit-transform: rotateX(90deg);\n    transform: rotateX(90deg);\n    opacity: 0;\n    -webkit-transition: opacity 0.4s, -webkit-transform 0.4s;\n    transition: opacity 0.4s, -webkit-transform 0.4s;\n    -o-transition: transform 0.4s, opacity 0.4s;\n    transition: transform 0.4s, opacity 0.4s;\n    transition: transform 0.4s, opacity 0.4s, -webkit-transform 0.4s;\n}\n\n.category-menu li .sub-menu li a {\n    padding-left: 45px;\n}\n\n.category-menu li:hover > a {\n    color: #f51167;\n}\n\n.category-menu li.active > .sub-menu {\n    display: block;\n    height: auto;\n    opacity: 1;\n    -webkit-transform: rotateX(0deg);\n    transform: rotateX(0deg);\n}\n\n.price-range-wrap .price-range {\n    border-radius: 0;\n    margin-right: 13px;\n    margin-bottom: 28px;\n}\n\n.price-range-wrap .price-range.ui-widget-content {\n    border: none;\n    background: #ebebeb;\n    height: 2px;\n}\n\n.price-range-wrap .price-range.ui-widget-content .ui-slider-range {\n    background: #ebebeb;\n    border-radius: 0;\n}\n\n.price-range-wrap\n    .price-range\n    .ui-slider-range.ui-corner-all.ui-widget-header:last-child {\n    background: #414141;\n}\n\n.price-range-wrap .price-range.ui-widget-content .ui-slider-handle {\n    border: none;\n    background: #414141;\n    height: 14px;\n    width: 14px;\n    outline: none;\n    top: -6px;\n    cursor: ew-resize;\n    margin-left: 0;\n    border-radius: 0;\n    border-radius: 20px;\n}\n\n.price-range-wrap\n    .price-range\n    .ui-slider-handle.ui-corner-all.ui-state-default\n    span {\n    position: absolute;\n    font-size: 14px;\n    top: 35px;\n}\n\n.price-range-wrap .range-slider {\n    color: #444444;\n    margin-top: 22px;\n}\n\n.price-range-wrap {\n    border-bottom: 2px solid #ebebeb;\n    padding-bottom: 40px;\n    margin-bottom: 50px;\n}\n\n.price-range-wrap h4 {\n    text-transform: uppercase;\n    font-size: 14px;\n    font-weight: 700;\n    color: #414141;\n    margin-bottom: 45px;\n}\n\n.price-range-wrap .range-slider .price-input input {\n    color: #444444;\n    border: none;\n    outline: none;\n    max-width: 80px;\n    pointer-events: none;\n}\n\n.price-range-wrap .range-slider .price-input input:nth-child(1) {\n    float: left;\n}\n\n.price-range-wrap .range-slider .price-input input:nth-child(2) {\n    float: right;\n}\n\n.fw-color-choose,\n.fw-size-choose {\n    border-bottom: 2px solid #ebebeb;\n    padding-bottom: 40px;\n    margin-bottom: 50px;\n}\n\n.fw-color-choose .cs-item {\n    display: inline-block;\n    position: relative;\n    margin-right: 14px;\n}\n\n.fw-color-choose .cs-item:last-child {\n    margin-right: 0;\n}\n\n.fw-color-choose label {\n    width: 26px;\n    height: 26px;\n    border-radius: 50px;\n    background: #333;\n    position: relative;\n    cursor: pointer;\n}\n\n.fw-color-choose label.cs-gray {\n    background: #d7d7d7;\n}\n\n.fw-color-choose label.cs-orange {\n    background: #6f91ff;\n}\n\n.fw-color-choose label.cs-yollow {\n    background: #6f91ff;\n}\n\n.fw-color-choose label.cs-green {\n    background: #8fc99c;\n}\n\n.fw-color-choose label.cs-purple {\n    background: #bc83b1;\n}\n\n.fw-color-choose label.cs-blue {\n    background: #9ee7f4;\n}\n\n.fw-color-choose label span {\n    position: absolute;\n    width: 100%;\n    text-align: center;\n    top: 45px;\n    font-size: 11px;\n    color: #414141;\n}\n\n.fw-color-choose input[type=\"radio\"] {\n    visibility: hidden;\n    position: absolute;\n}\n\n.fw-color-choose input[type=\"radio\"]:checked + label {\n    -webkit-box-shadow: 0 0 0 2px #f51167;\n    box-shadow: 0 0 0 2px #f51167;\n}\n\n.fw-color-choose input[type=\"radio\"]:checked + label span {\n    color: #b09d81;\n}\n\n.fw-size-choose .sc-item {\n    display: inline-block;\n    position: relative;\n    margin-right: 5px;\n}\n\n.fw-size-choose label {\n    display: inline-block;\n    height: 30px;\n    min-width: 30px;\n    text-align: center;\n    font-size: 14px;\n    color: #414141;\n    font-weight: 500;\n    cursor: pointer;\n    border-radius: 50px;\n    padding: 7px 6px 0;\n}\n\n.fw-size-choose input[type=\"radio\"] {\n    visibility: hidden;\n    position: absolute;\n}\n\n.fw-size-choose input[type=\"radio\"]:checked + label {\n    background: #f51167;\n    color: #fff;\n}\n\n/* --------------\n  Product page\n------------------*/\n\n.product-section {\n    padding-top: 70px;\n    padding-bottom: 65px;\n}\n\n.back-link {\n    padding-bottom: 50px;\n}\n\n.back-link a {\n    font-size: 12px;\n    color: #414141;\n}\n\n.product-pic-zoom {\n    margin-bottom: 35px;\n}\n\n.product-thumbs-track {\n    width: 1200px;\n}\n\n.product-thumbs .pt {\n    width: 116px;\n    height: 116px;\n    float: left;\n    margin-right: 31px;\n    overflow: hidden;\n    cursor: pointer;\n    position: relative;\n}\n\n.product-thumbs .pt:last-child {\n    margin-right: 0;\n}\n\n.product-thumbs .pt.active:after {\n    position: absolute;\n    content: \"\";\n    width: 100%;\n    height: 100%;\n    left: 0;\n    top: 0;\n    border: 2px solid #f51167;\n    z-index: 1;\n}\n\n.product-details .p-title {\n    font-size: 18px;\n    font-weight: 700;\n    color: #414141;\n    text-transform: uppercase;\n    margin-bottom: 18px;\n}\n\n.product-details .p-price {\n    font-size: 24px;\n    color: #414141;\n    font-weight: 700;\n    margin-bottom: 20px;\n}\n\n.product-details .p-stock {\n    font-size: 12px;\n    color: #000;\n    font-weight: 700;\n    color: #414141;\n    margin-bottom: 10px;\n}\n\n.product-details .p-stock span {\n    color: #f51167;\n}\n\n.product-details .p-rating {\n    margin-bottom: 15px;\n}\n\n.product-details .p-rating i {\n    color: #f51167;\n}\n\n.product-details .p-rating i.fa-fade {\n    color: #e6e6e6;\n}\n\n.product-details .p-review {\n    margin-bottom: 30px;\n}\n\n.product-details .p-review a {\n    color: #414141;\n    font-size: 14px;\n    margin-right: 12px;\n    margin-left: 12px;\n}\n\n.product-details .p-review a:first-child {\n    margin-left: 0;\n}\n\n.product-details .fw-size-choose {\n    border-bottom: none;\n    margin-bottom: 30px;\n    padding-bottom: 0;\n}\n\n.product-details .fw-size-choose p {\n    float: left;\n    margin-right: 38px;\n    text-transform: uppercase;\n    font-weight: 700;\n    color: #414141;\n    padding-top: 10px;\n    margin-bottom: 0;\n}\n\n.product-details .fw-size-choose label {\n    width: 33px;\n    height: 33px;\n    font-size: 12px;\n    border: 2px solid #414141;\n}\n\n.product-details .fw-size-choose input[type=\"radio\"]:checked + label {\n    border: 2px solid #f51167;\n}\n\n.product-details .fw-size-choose .disable label {\n    border: 2px solid #e1e1e1;\n    color: #cacaca;\n}\n\n.product-details .site-btn {\n    min-width: 190px;\n}\n\n.product-details .social-sharing {\n    padding-top: 50px;\n}\n\n.product-details .social-sharing a {\n    color: #d7d7d7;\n    margin-right: 23px;\n    font-size: 14px;\n}\n\n.product-details .social-sharing a:hover {\n    color: #414141;\n}\n\n.quantity {\n    display: -webkit-box;\n    display: -ms-flexbox;\n    display: flex;\n    -ms-flex-wrap: wrap;\n    flex-wrap: wrap;\n    -webkit-box-align: center;\n    -ms-flex-align: center;\n    align-items: center;\n    margin-bottom: 40px;\n}\n\n.quantity p {\n    float: left;\n    margin-right: 15px;\n    text-transform: uppercase;\n    font-weight: 700;\n    color: #414141;\n    padding-top: 10px;\n    margin-bottom: 0;\n}\n\n.quantity .pro-qty {\n    width: 94px;\n    height: 36px;\n    border: 1px solid #ddd;\n    padding: 0 15px;\n    border-radius: 40px;\n    float: left;\n}\n\n.quantity .pro-qty .qtybtn {\n    width: 15px;\n    display: block;\n    float: left;\n    line-height: 36px;\n    cursor: pointer;\n    text-align: center;\n    font-size: 18px;\n    color: #404040;\n}\n\n.quantity .pro-qty input {\n    width: 28px;\n    float: left;\n    border: none;\n    height: 36px;\n    line-height: 40px;\n    padding: 0;\n    font-size: 14px;\n    text-align: center;\n    background-color: transparent;\n}\n\n.related-product-section {\n    padding-bottom: 70px;\n}\n\n.related-product-section .section-title h2 {\n    font-size: 24px;\n    margin-bottom: 60px;\n}\n\n/* ----------------\n  Cart page\n---------------------*/\n\n.scrollbar {\n    margin: 80px auto 0;\n    width: 100%;\n    height: 7px;\n    line-height: 0;\n    background: #ececec;\n    overflow: hidden;\n}\n\n.scrollbar .handle {\n    width: 100px;\n    height: 100%;\n    background: #fff;\n    cursor: pointer;\n}\n\n.scrollbar .handle .mousearea {\n    position: absolute;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 7px;\n    background: #b09d81;\n    border-radius: 30px;\n}\n\n.cart-table {\n    padding: 40px 34px 0;\n    background: #f0f0f0;\n    border-radius: 27px;\n    overflow: hidden;\n}\n\n.cart-table h3 {\n    font-weight: 700;\n    margin-bottom: 37px;\n}\n\n.cart-table table {\n    width: 100%;\n    min-width: 442px;\n    margin-bottom: 17px;\n}\n\n.cart-table table tr th {\n    font-size: 12px;\n    font-weight: 400;\n    color: #414141;\n    text-align: center;\n    padding-bottom: 25px;\n}\n\n.cart-table table tr th.product-th {\n    text-align: left;\n}\n\n.cart-table table tr th.size-th {\n    padding-right: 70px;\n}\n\n.cart-table table tr th.quy-th {\n    padding-right: 20px;\n}\n\n.cart-table .product-col {\n    display: table;\n    margin-bottom: 19px;\n}\n\n.cart-table .product-col img {\n    display: table-cell;\n    vertical-align: middle;\n    float: left;\n    width: 73px;\n}\n\n.cart-table .product-col .pc-title {\n    display: table-cell;\n    vertical-align: middle;\n    padding-left: 30px;\n}\n\n.cart-table .product-col .pc-title h4 {\n    font-size: 16px;\n    color: #414141;\n    font-weight: 700;\n    margin-bottom: 3px;\n}\n\n.cart-table .product-col .pc-title p {\n    margin-bottom: 0;\n    font-size: 16px;\n    color: #414141;\n}\n\n.cart-table .quy-col {\n    padding-right: 20px;\n}\n\n.cart-table .quantity {\n    margin-bottom: 0;\n    -webkit-box-pack: center;\n    -ms-flex-pack: center;\n    justify-content: center;\n}\n\n.cart-table .quantity .pro-qty {\n    width: 80px;\n    background: #fff;\n    border-color: #fff;\n}\n\n.cart-table .quantity .pro-qty .qtybtn {\n    width: 10px;\n}\n\n.cart-table .size-col,\n.cart-table .total-col {\n    text-align: center;\n}\n\n.cart-table .size-col h4,\n.cart-table .total-col h4 {\n    font-size: 18px;\n    color: #414141;\n    font-weight: 400;\n}\n\n.cart-table .size-col h4 {\n    padding-right: 70px;\n}\n\n.cart-table .total-cost {\n    background: #f51167;\n    margin: 0 -34px;\n    text-align: right;\n    padding: 22px 0;\n    padding-right: 50px;\n}\n\n.cart-table .total-cost h6 {\n    line-height: 1;\n    font-size: 18px;\n    font-weight: 700;\n    color: #fff;\n}\n\n.cart-table .total-cost h6 span {\n    margin-left: 38px;\n}\n\n.card-right .site-btn {\n    margin-bottom: 14px;\n    width: 100%;\n    min-height: 57px;\n    padding: 23px 47px 14px;\n}\n\n.promo-code-form {\n    position: relative;\n    margin-bottom: 14px;\n}\n\n.promo-code-form input {\n    width: 100%;\n    height: 58px;\n    border: 2px solid #f0f0f0;\n    padding-left: 24px;\n    padding-right: 100px;\n    font-size: 16px;\n    border-radius: 80px;\n}\n\n.promo-code-form button {\n    position: absolute;\n    right: 24px;\n    top: 0;\n    height: 100%;\n    background-color: transparent;\n    border: none;\n    text-transform: uppercase;\n    font-size: 16px;\n    font-weight: 700;\n    color: #f51167;\n    cursor: pointer;\n}\n\n/* ----------------\n  Checkout Page\n---------------------*/\n\n.checkout-form .cf-title {\n    font-size: 16px;\n    font-weight: 700;\n    color: #fff;\n    line-height: 1;\n    border-radius: 50px;\n    background: #3b3b3b;\n    padding: 21px 29px 20px;\n    margin-bottom: 66px;\n}\n\n.checkout-form p {\n    font-size: 16px;\n    color: #414141;\n}\n\n.checkout-form h4 {\n    font-size: 18px;\n    color: #414141;\n}\n\n.checkout-form input[type=\"text\"] {\n    width: 100%;\n    height: 44px;\n    border: none;\n    padding: 0 18px;\n    background: #f0f0f0;\n    border-radius: 40px;\n    margin-bottom: 20px;\n    font-size: 14px;\n}\n\n.checkout-form .address-inputs {\n    margin-bottom: 54px;\n}\n\n.address-rb {\n    text-align: right;\n    margin-bottom: 30px;\n}\n\n.address-rb .cfr-item {\n    display: inline-block;\n}\n\n.cf-radio-btns .cfr-item {\n    margin-bottom: 15px;\n}\n\n.cf-radio-btns label {\n    display: block;\n    font-size: 16px;\n    color: #414141;\n    margin-bottom: 0;\n    padding-left: 30px;\n    position: relative;\n    cursor: pointer;\n}\n\n.cf-radio-btns label:after {\n    position: absolute;\n    content: \"\";\n    width: 5px;\n    height: 5px;\n    left: 4px;\n    top: 8px;\n    background: #414141;\n    border-radius: 50%;\n    opacity: 0;\n    -webkit-transition: all 0.3s;\n    -o-transition: all 0.3s;\n    transition: all 0.3s;\n}\n\n.cf-radio-btns label:before {\n    position: absolute;\n    content: \"\";\n    width: 13px;\n    height: 13px;\n    left: 0;\n    top: 4px;\n    border: 2px solid #e1e1e1;\n    border-radius: 40px;\n}\n\n.cf-radio-btns input[type=\"radio\"] {\n    visibility: hidden;\n    position: absolute;\n}\n\n.cf-radio-btns input[type=\"radio\"]:checked + label:after {\n    opacity: 1;\n}\n\n.shipping-btns {\n    margin-bottom: 50px;\n}\n\n.shipping-btns .cf-radio-btns label {\n    font-size: 18px;\n    font-weight: 600;\n    padding-left: 37px;\n}\n\n.payment-list {\n    list-style: none;\n    margin-bottom: 40px;\n}\n\n.payment-list li {\n    font-size: 18px;\n    font-weight: 600;\n    color: #414141;\n    margin-bottom: 20px;\n}\n\n.payment-list li a,\n.payment-list li span {\n    padding-left: 40px;\n}\n\n.submit-order-btn {\n    width: 100%;\n    min-height: 58px;\n}\n\n.checkout-cart {\n    background: #f0f0f0;\n    padding: 40px 24px 30px;\n    border-radius: 25px;\n}\n\n.checkout-cart h3 {\n    margin-bottom: 30px;\n}\n\n.checkout-cart .product-list {\n    list-style: none;\n}\n\n.checkout-cart .product-list li {\n    overflow: hidden;\n    display: block;\n    margin-bottom: 29px;\n}\n\n.checkout-cart .product-list .pl-thumb {\n    float: left;\n    overflow: hidden;\n    margin-right: 22px;\n    width: 99px;\n}\n\n.checkout-cart .product-list .pl-thumb img {\n    min-width: 100%;\n}\n\n.checkout-cart .product-list h6 {\n    font-weight: 700;\n    color: #414141;\n    padding-top: 15px;\n    margin-bottom: 5px;\n}\n\n.checkout-cart .product-list p {\n    font-size: 16px;\n    margin-bottom: 0;\n}\n\n.checkout-cart .price-list {\n    padding-left: 17px;\n    padding-right: 5px;\n    list-style: none;\n}\n\n.checkout-cart .price-list li {\n    overflow: hidden;\n    display: block;\n    font-size: 18px;\n    color: #414141;\n    margin-bottom: 10px;\n}\n\n.checkout-cart .price-list li span {\n    float: right;\n    width: 60px;\n    text-align: left;\n}\n\n.checkout-cart .price-list li.total {\n    padding-top: 35px;\n    font-weight: 700;\n}\n\n/* ----------------\n  Contact Page\n---------------------*/\n\n.contact-section {\n    padding-top: 80px;\n    padding-bottom: 0;\n    position: relative;\n}\n\n.contact-info h3 {\n    margin-bottom: 50px;\n}\n\n.contact-social {\n    display: -ms-flex;\n    display: -webkit-box;\n    display: -ms-flexbox;\n    display: flex;\n    margin-bottom: 85px;\n    padding-top: 20px;\n}\n\n.contact-social a {\n    display: -ms-inline-flex;\n    display: -webkit-inline-box;\n    display: -ms-inline-flexbox;\n    display: inline-flex;\n    width: 32px;\n    height: 32px;\n    background: #f0f0f0;\n    color: #414141;\n    font-size: 14px;\n    border-radius: 50%;\n    -webkit-box-align: center;\n    -ms-flex-align: center;\n    align-items: center;\n    -webkit-box-pack: center;\n    -ms-flex-pack: center;\n    justify-content: center;\n    margin-right: 12px;\n    -webkit-transition: all 0.4s;\n    -o-transition: all 0.4s;\n    transition: all 0.4s;\n}\n\n.contact-social a:hover {\n    color: #fff;\n    background: #f51167;\n}\n\n.contact-form input,\n.contact-form textarea {\n    width: 100%;\n    height: 44px;\n    border: none;\n    padding: 0 18px;\n    background: #f0f0f0;\n    border-radius: 40px;\n    margin-bottom: 17px;\n    font-size: 14px;\n}\n\n.contact-form textarea {\n    padding-top: 16px;\n    border-radius: 18px;\n    height: 175px;\n    margin-bottom: 32px;\n}\n\n.map {\n    position: absolute;\n    width: calc(50% - 15px);\n    height: 100%;\n    right: 0;\n    top: 0;\n    background: #ddd;\n}\n\n.map iframe {\n    width: 100%;\n    height: 100%;\n}\n\n/* ----------------\n  Responsive\n---------------------*/\n\n@media (min-width: 1200px) {\n    .container {\n        max-width: 1175px;\n    }\n}\n\n@media (max-width: 1350px) {\n    .product-slider .owl-nav {\n        position: relative;\n        left: 0;\n        top: 0;\n        text-align: center;\n        padding-top: 20px;\n    }\n    .product-slider .owl-nav button.owl-prev,\n    .product-slider .owl-nav button.owl-next {\n        float: none;\n        left: 0;\n        right: 0;\n        margin: 0 10px;\n    }\n}\n\n/* Medium screen : 992px. */\n\n@media only screen and (min-width: 992px) and (max-width: 1199px) {\n    .hero-slider .slider-nav-warp {\n        max-width: 930px;\n    }\n    .footer-widget ul {\n        margin-right: 5px;\n    }\n    .social-links a {\n        margin-right: 20px;\n    }\n}\n\n/* Tablet :768px. */\n\n@media only screen and (min-width: 768px) and (max-width: 991px) {\n    .site-logo {\n        margin-bottom: 20px;\n    }\n    .header-search-form {\n        margin-bottom: 15px;\n    }\n    .user-panel {\n        text-align: center;\n    }\n    .main-menu {\n        text-align: center;\n    }\n    .sub-menu {\n        text-align: left;\n    }\n    .main-menu li a {\n        margin-right: 30px;\n    }\n    .hero-slider .slider-nav-warp {\n        max-width: 690px;\n    }\n    .hero-slider .hs-item .offer-card {\n        top: 20px;\n    }\n    .feature h2 {\n        font-size: 18px;\n    }\n    .product-filter-menu {\n        text-align: center;\n    }\n    .product-filter-menu li {\n        margin: 0 5px 10px;\n    }\n    .social-links {\n        text-align: center;\n    }\n    .social-links a {\n        margin-right: 20px;\n    }\n    .social-links a span {\n        display: none;\n    }\n    .cart-table,\n    .checkout-cart,\n    .product-thumbs {\n        margin-bottom: 50px;\n    }\n    .map {\n        position: relative;\n        width: 100%;\n        background: #ddd;\n        height: 400px;\n        margin-top: 70px;\n    }\n}\n\n/* Large Mobile :480px. */\n\n@media only screen and (max-width: 767px) {\n    .site-logo {\n        margin-bottom: 20px;\n    }\n    .header-search-form {\n        margin-bottom: 15px;\n    }\n    .user-panel {\n        text-align: center;\n    }\n    .main-menu {\n        display: none;\n    }\n    .slicknav_btn {\n        background-color: #565656;\n    }\n    .slicknav_menu {\n        background: #282828;\n        display: block;\n    }\n    .slicknav_menu .new {\n        font-size: 10px;\n        font-weight: 700;\n        color: #fff;\n        background: #f51167;\n        line-height: 1;\n        text-transform: uppercase;\n        padding: 5px 9px 1px;\n        border-radius: 15px;\n        width: 42px;\n        margin-left: 5px;\n    }\n    .hero-slider .slider-nav-warp {\n        max-width: 510px;\n    }\n    .hero-slider .hs-item h2 {\n        font-size: 50px;\n    }\n    .hero-slider .hs-item .offer-card {\n        display: none;\n    }\n    .product-filter-menu {\n        text-align: center;\n    }\n    .product-filter-menu li {\n        margin: 0 2px 10px;\n    }\n    .footer-widget ul {\n        margin-right: 25px;\n    }\n    .social-links {\n        text-align: center;\n    }\n    .social-links a {\n        margin-right: 15px;\n    }\n    .social-links a span {\n        display: none;\n    }\n    .cart-table,\n    .checkout-cart,\n    .product-thumbs {\n        margin-bottom: 50px;\n    }\n    .cart-table .size-col h4,\n    .cart-table table tr th.size-th,\n    .cart-table table tr th.quy-th,\n    .cart-table .quy-col {\n        padding-right: 0;\n        width: 70px;\n    }\n    .cart-table .quy-col {\n        width: 80px;\n    }\n    .address-rb {\n        text-align: left;\n    }\n    .map {\n        position: relative;\n        width: 100%;\n        background: #ddd;\n        height: 400px;\n        margin-top: 70px;\n    }\n}\n\n/* Medium Mobile :480px. */\n\n@media only screen and (min-width: 576px) and (max-width: 766px) {\n    .hero-slider .slider-nav-warp {\n        padding: 0 15px;\n    }\n    .banner .tag-new {\n        position: relative;\n        display: inline-block;\n        margin-bottom: 18px;\n        right: 0;\n        top: 0;\n    }\n}\n\n/* Small Mobile :320px. */\n\n@media only screen and (max-width: 479px) {\n    .hero-slider .slider-nav-warp {\n        max-width: 510px;\n        padding: 0 15px;\n    }\n    .hero-slider .hs-item h2 {\n        font-size: 35px;\n    }\n    .hero-slider .hs-item .sb-line {\n        margin-bottom: 15px;\n    }\n    .section-title h2 {\n        font-size: 28px;\n    }\n    .feature h2 {\n        font-size: 18px;\n    }\n    .banner .tag-new {\n        position: relative;\n        display: inline-block;\n        margin-bottom: 18px;\n        right: 0;\n        top: 0;\n    }\n    .social-links {\n        text-align: center;\n    }\n    .social-links a i {\n        font-size: 20px;\n        margin-right: 0;\n    }\n    .social-links a span {\n        display: none;\n    }\n}\n"
  },
  {
    "path": "public/user/js/aos.js",
    "content": "!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.AOS=t():e.AOS=t()}(this,function(){return function(e){function t(o){if(n[o])return n[o].exports;var i=n[o]={exports:{},id:o,loaded:!1};return e[o].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n={};return t.m=e,t.c=n,t.p=\"dist/\",t(0)}([function(e,t,n){\"use strict\";function o(e){return e&&e.__esModule?e:{default:e}}var i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},r=n(1),a=(o(r),n(6)),u=o(a),c=n(7),f=o(c),s=n(8),d=o(s),l=n(9),p=o(l),m=n(10),b=o(m),v=n(11),y=o(v),g=n(14),h=o(g),w=[],k=!1,x=document.all&&!window.atob,j={offset:120,delay:0,easing:\"ease\",duration:400,disable:!1,once:!1,startEvent:\"DOMContentLoaded\"},O=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(e&&(k=!0),k)return w=(0,y.default)(w,j),(0,b.default)(w,j.once),w},S=function(){w=(0,h.default)(),O()},_=function(){w.forEach(function(e,t){e.node.removeAttribute(\"data-aos\"),e.node.removeAttribute(\"data-aos-easing\"),e.node.removeAttribute(\"data-aos-duration\"),e.node.removeAttribute(\"data-aos-delay\")})},E=function(e){return e===!0||\"mobile\"===e&&p.default.mobile()||\"phone\"===e&&p.default.phone()||\"tablet\"===e&&p.default.tablet()||\"function\"==typeof e&&e()===!0},z=function(e){return j=i(j,e),w=(0,h.default)(),E(j.disable)||x?_():(document.querySelector(\"body\").setAttribute(\"data-aos-easing\",j.easing),document.querySelector(\"body\").setAttribute(\"data-aos-duration\",j.duration),document.querySelector(\"body\").setAttribute(\"data-aos-delay\",j.delay),\"DOMContentLoaded\"===j.startEvent&&[\"complete\",\"interactive\"].indexOf(document.readyState)>-1?O(!0):\"load\"===j.startEvent?window.addEventListener(j.startEvent,function(){O(!0)}):document.addEventListener(j.startEvent,function(){O(!0)}),window.addEventListener(\"resize\",(0,f.default)(O,50,!0)),window.addEventListener(\"orientationchange\",(0,f.default)(O,50,!0)),window.addEventListener(\"scroll\",(0,u.default)(function(){(0,b.default)(w,j.once)},99)),document.addEventListener(\"DOMNodeRemoved\",function(e){var t=e.target;t&&1===t.nodeType&&t.hasAttribute&&t.hasAttribute(\"data-aos\")&&(0,f.default)(S,50,!0)}),(0,d.default)(\"[data-aos]\",S),w)};e.exports={init:z,refresh:O,refreshHard:S}},function(e,t){},,,,,function(e,t){(function(t){\"use strict\";function n(e,t,n){function o(t){var n=b,o=v;return b=v=void 0,k=t,g=e.apply(o,n)}function r(e){return k=e,h=setTimeout(s,t),S?o(e):g}function a(e){var n=e-w,o=e-k,i=t-n;return _?j(i,y-o):i}function c(e){var n=e-w,o=e-k;return void 0===w||n>=t||n<0||_&&o>=y}function s(){var e=O();return c(e)?d(e):void(h=setTimeout(s,a(e)))}function d(e){return h=void 0,E&&b?o(e):(b=v=void 0,g)}function l(){void 0!==h&&clearTimeout(h),k=0,b=w=v=h=void 0}function p(){return void 0===h?g:d(O())}function m(){var e=O(),n=c(e);if(b=arguments,v=this,w=e,n){if(void 0===h)return r(w);if(_)return h=setTimeout(s,t),o(w)}return void 0===h&&(h=setTimeout(s,t)),g}var b,v,y,g,h,w,k=0,S=!1,_=!1,E=!0;if(\"function\"!=typeof e)throw new TypeError(f);return t=u(t)||0,i(n)&&(S=!!n.leading,_=\"maxWait\"in n,y=_?x(u(n.maxWait)||0,t):y,E=\"trailing\"in n?!!n.trailing:E),m.cancel=l,m.flush=p,m}function o(e,t,o){var r=!0,a=!0;if(\"function\"!=typeof e)throw new TypeError(f);return i(o)&&(r=\"leading\"in o?!!o.leading:r,a=\"trailing\"in o?!!o.trailing:a),n(e,t,{leading:r,maxWait:t,trailing:a})}function i(e){var t=\"undefined\"==typeof e?\"undefined\":c(e);return!!e&&(\"object\"==t||\"function\"==t)}function r(e){return!!e&&\"object\"==(\"undefined\"==typeof e?\"undefined\":c(e))}function a(e){return\"symbol\"==(\"undefined\"==typeof e?\"undefined\":c(e))||r(e)&&k.call(e)==d}function u(e){if(\"number\"==typeof e)return e;if(a(e))return s;if(i(e)){var t=\"function\"==typeof e.valueOf?e.valueOf():e;e=i(t)?t+\"\":t}if(\"string\"!=typeof e)return 0===e?e:+e;e=e.replace(l,\"\");var n=m.test(e);return n||b.test(e)?v(e.slice(2),n?2:8):p.test(e)?s:+e}var c=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},f=\"Expected a function\",s=NaN,d=\"[object Symbol]\",l=/^\\s+|\\s+$/g,p=/^[-+]0x[0-9a-f]+$/i,m=/^0b[01]+$/i,b=/^0o[0-7]+$/i,v=parseInt,y=\"object\"==(\"undefined\"==typeof t?\"undefined\":c(t))&&t&&t.Object===Object&&t,g=\"object\"==(\"undefined\"==typeof self?\"undefined\":c(self))&&self&&self.Object===Object&&self,h=y||g||Function(\"return this\")(),w=Object.prototype,k=w.toString,x=Math.max,j=Math.min,O=function(){return h.Date.now()};e.exports=o}).call(t,function(){return this}())},function(e,t){(function(t){\"use strict\";function n(e,t,n){function i(t){var n=b,o=v;return b=v=void 0,O=t,g=e.apply(o,n)}function r(e){return O=e,h=setTimeout(s,t),S?i(e):g}function u(e){var n=e-w,o=e-O,i=t-n;return _?x(i,y-o):i}function f(e){var n=e-w,o=e-O;return void 0===w||n>=t||n<0||_&&o>=y}function s(){var e=j();return f(e)?d(e):void(h=setTimeout(s,u(e)))}function d(e){return h=void 0,E&&b?i(e):(b=v=void 0,g)}function l(){void 0!==h&&clearTimeout(h),O=0,b=w=v=h=void 0}function p(){return void 0===h?g:d(j())}function m(){var e=j(),n=f(e);if(b=arguments,v=this,w=e,n){if(void 0===h)return r(w);if(_)return h=setTimeout(s,t),i(w)}return void 0===h&&(h=setTimeout(s,t)),g}var b,v,y,g,h,w,O=0,S=!1,_=!1,E=!0;if(\"function\"!=typeof e)throw new TypeError(c);return t=a(t)||0,o(n)&&(S=!!n.leading,_=\"maxWait\"in n,y=_?k(a(n.maxWait)||0,t):y,E=\"trailing\"in n?!!n.trailing:E),m.cancel=l,m.flush=p,m}function o(e){var t=\"undefined\"==typeof e?\"undefined\":u(e);return!!e&&(\"object\"==t||\"function\"==t)}function i(e){return!!e&&\"object\"==(\"undefined\"==typeof e?\"undefined\":u(e))}function r(e){return\"symbol\"==(\"undefined\"==typeof e?\"undefined\":u(e))||i(e)&&w.call(e)==s}function a(e){if(\"number\"==typeof e)return e;if(r(e))return f;if(o(e)){var t=\"function\"==typeof e.valueOf?e.valueOf():e;e=o(t)?t+\"\":t}if(\"string\"!=typeof e)return 0===e?e:+e;e=e.replace(d,\"\");var n=p.test(e);return n||m.test(e)?b(e.slice(2),n?2:8):l.test(e)?f:+e}var u=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},c=\"Expected a function\",f=NaN,s=\"[object Symbol]\",d=/^\\s+|\\s+$/g,l=/^[-+]0x[0-9a-f]+$/i,p=/^0b[01]+$/i,m=/^0o[0-7]+$/i,b=parseInt,v=\"object\"==(\"undefined\"==typeof t?\"undefined\":u(t))&&t&&t.Object===Object&&t,y=\"object\"==(\"undefined\"==typeof self?\"undefined\":u(self))&&self&&self.Object===Object&&self,g=v||y||Function(\"return this\")(),h=Object.prototype,w=h.toString,k=Math.max,x=Math.min,j=function(){return g.Date.now()};e.exports=n}).call(t,function(){return this}())},function(e,t){\"use strict\";function n(e,t){a.push({selector:e,fn:t}),!u&&r&&(u=new r(o),u.observe(i.documentElement,{childList:!0,subtree:!0,removedNodes:!0})),o()}function o(){for(var e,t,n=0,o=a.length;n<o;n++){e=a[n],t=i.querySelectorAll(e.selector);for(var r,u=0,c=t.length;u<c;u++)r=t[u],r.ready||(r.ready=!0,e.fn.call(r,r))}}Object.defineProperty(t,\"__esModule\",{value:!0});var i=window.document,r=window.MutationObserver||window.WebKitMutationObserver,a=[],u=void 0;t.default=n},function(e,t){\"use strict\";function n(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function o(){return navigator.userAgent||navigator.vendor||window.opera||\"\"}Object.defineProperty(t,\"__esModule\",{value:!0});var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,n,o){return n&&e(t.prototype,n),o&&e(t,o),t}}(),r=/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i,a=/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i,u=/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i,c=/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i,f=function(){function e(){n(this,e)}return i(e,[{key:\"phone\",value:function(){var e=o();return!(!r.test(e)&&!a.test(e.substr(0,4)))}},{key:\"mobile\",value:function(){var e=o();return!(!u.test(e)&&!c.test(e.substr(0,4)))}},{key:\"tablet\",value:function(){return this.mobile()&&!this.phone()}}]),e}();t.default=new f},function(e,t){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=function(e,t,n){var o=e.node.getAttribute(\"data-aos-once\");t>e.position?e.node.classList.add(\"aos-animate\"):\"undefined\"!=typeof o&&(\"false\"===o||!n&&\"true\"!==o)&&e.node.classList.remove(\"aos-animate\")},o=function(e,t){var o=window.pageYOffset,i=window.innerHeight;e.forEach(function(e,r){n(e,i+o,t)})};t.default=o},function(e,t,n){\"use strict\";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(12),r=o(i),a=function(e,t){return e.forEach(function(e,n){e.node.classList.add(\"aos-init\"),e.position=(0,r.default)(e.node,t.offset)}),e};t.default=a},function(e,t,n){\"use strict\";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(13),r=o(i),a=function(e,t){var n=0,o=0,i=window.innerHeight,a={offset:e.getAttribute(\"data-aos-offset\"),anchor:e.getAttribute(\"data-aos-anchor\"),anchorPlacement:e.getAttribute(\"data-aos-anchor-placement\")};switch(a.offset&&!isNaN(a.offset)&&(o=parseInt(a.offset)),a.anchor&&document.querySelectorAll(a.anchor)&&(e=document.querySelectorAll(a.anchor)[0]),n=(0,r.default)(e).top,a.anchorPlacement){case\"top-bottom\":break;case\"center-bottom\":n+=e.offsetHeight/2;break;case\"bottom-bottom\":n+=e.offsetHeight;break;case\"top-center\":n+=i/2;break;case\"bottom-center\":n+=i/2+e.offsetHeight;break;case\"center-center\":n+=i/2+e.offsetHeight/2;break;case\"top-top\":n+=i;break;case\"bottom-top\":n+=e.offsetHeight+i;break;case\"center-top\":n+=e.offsetHeight/2+i}return a.anchorPlacement||a.offset||isNaN(t)||(o=t),n+o};t.default=a},function(e,t){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=function(e){for(var t=0,n=0;e&&!isNaN(e.offsetLeft)&&!isNaN(e.offsetTop);)t+=e.offsetLeft-(\"BODY\"!=e.tagName?e.scrollLeft:0),n+=e.offsetTop-(\"BODY\"!=e.tagName?e.scrollTop:0),e=e.offsetParent;return{top:n,left:t}};t.default=n},function(e,t){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=function(e){e=e||document.querySelectorAll(\"[data-aos]\");var t=[];return[].forEach.call(e,function(e,n){t.push({node:e})}),t};t.default=n}])});\n//# sourceMappingURL=aos.js.map"
  },
  {
    "path": "public/user/js/bootstrap-datepicker.js",
    "content": "/* =========================================================\n * bootstrap-datepicker.js\n * Repo: https://github.com/eternicode/bootstrap-datepicker/\n * Demo: http://eternicode.github.io/bootstrap-datepicker/\n * Docs: http://bootstrap-datepicker.readthedocs.org/\n * Forked from http://www.eyecon.ro/bootstrap-datepicker\n * =========================================================\n * Started by Stefan Petre; improvements by Andrew Rowls + contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ========================================================= */\n\n(function($, undefined){\n\n\tvar $window = $(window);\n\n\tfunction UTCDate(){\n\t\treturn new Date(Date.UTC.apply(Date, arguments));\n\t}\n\tfunction UTCToday(){\n\t\tvar today = new Date();\n\t\treturn UTCDate(today.getFullYear(), today.getMonth(), today.getDate());\n\t}\n\tfunction alias(method){\n\t\treturn function(){\n\t\t\treturn this[method].apply(this, arguments);\n\t\t};\n\t}\n\n\tvar DateArray = (function(){\n\t\tvar extras = {\n\t\t\tget: function(i){\n\t\t\t\treturn this.slice(i)[0];\n\t\t\t},\n\t\t\tcontains: function(d){\n\t\t\t\t// Array.indexOf is not cross-browser;\n\t\t\t\t// $.inArray doesn't work with Dates\n\t\t\t\tvar val = d && d.valueOf();\n\t\t\t\tfor (var i=0, l=this.length; i < l; i++)\n\t\t\t\t\tif (this[i].valueOf() === val)\n\t\t\t\t\t\treturn i;\n\t\t\t\treturn -1;\n\t\t\t},\n\t\t\tremove: function(i){\n\t\t\t\tthis.splice(i,1);\n\t\t\t},\n\t\t\treplace: function(new_array){\n\t\t\t\tif (!new_array)\n\t\t\t\t\treturn;\n\t\t\t\tif (!$.isArray(new_array))\n\t\t\t\t\tnew_array = [new_array];\n\t\t\t\tthis.clear();\n\t\t\t\tthis.push.apply(this, new_array);\n\t\t\t},\n\t\t\tclear: function(){\n\t\t\t\tthis.splice(0);\n\t\t\t},\n\t\t\tcopy: function(){\n\t\t\t\tvar a = new DateArray();\n\t\t\t\ta.replace(this);\n\t\t\t\treturn a;\n\t\t\t}\n\t\t};\n\n\t\treturn function(){\n\t\t\tvar a = [];\n\t\t\ta.push.apply(a, arguments);\n\t\t\t$.extend(a, extras);\n\t\t\treturn a;\n\t\t};\n\t})();\n\n\n\t// Picker object\n\n\tvar Datepicker = function(element, options){\n\t\tthis.dates = new DateArray();\n\t\tthis.viewDate = UTCToday();\n\t\tthis.focusDate = null;\n\n\t\tthis._process_options(options);\n\n\t\tthis.element = $(element);\n\t\tthis.isInline = false;\n\t\tthis.isInput = this.element.is('input');\n\t\tthis.component = this.element.is('.date') ? this.element.find('.add-on, .input-group-addon, .btn') : false;\n\t\tthis.hasInput = this.component && this.element.find('input').length;\n\t\tif (this.component && this.component.length === 0)\n\t\t\tthis.component = false;\n\n\t\tthis.picker = $(DPGlobal.template);\n\t\tthis._buildEvents();\n\t\tthis._attachEvents();\n\n\t\tif (this.isInline){\n\t\t\tthis.picker.addClass('datepicker-inline').appendTo(this.element);\n\t\t}\n\t\telse {\n\t\t\tthis.picker.addClass('datepicker-dropdown dropdown-menu');\n\t\t}\n\n\t\tif (this.o.rtl){\n\t\t\tthis.picker.addClass('datepicker-rtl');\n\t\t}\n\n\t\tthis.viewMode = this.o.startView;\n\n\t\tif (this.o.calendarWeeks)\n\t\t\tthis.picker.find('tfoot th.today')\n\t\t\t\t\t\t.attr('colspan', function(i, val){\n\t\t\t\t\t\t\treturn parseInt(val) + 1;\n\t\t\t\t\t\t});\n\n\t\tthis._allow_update = false;\n\n\t\tthis.setStartDate(this._o.startDate);\n\t\tthis.setEndDate(this._o.endDate);\n\t\tthis.setDaysOfWeekDisabled(this.o.daysOfWeekDisabled);\n\n\t\tthis.fillDow();\n\t\tthis.fillMonths();\n\n\t\tthis._allow_update = true;\n\n\t\tthis.update();\n\t\tthis.showMode();\n\n\t\tif (this.isInline){\n\t\t\tthis.show();\n\t\t}\n\t};\n\n\tDatepicker.prototype = {\n\t\tconstructor: Datepicker,\n\n\t\t_process_options: function(opts){\n\t\t\t// Store raw options for reference\n\t\t\tthis._o = $.extend({}, this._o, opts);\n\t\t\t// Processed options\n\t\t\tvar o = this.o = $.extend({}, this._o);\n\n\t\t\t// Check if \"de-DE\" style date is available, if not language should\n\t\t\t// fallback to 2 letter code eg \"de\"\n\t\t\tvar lang = o.language;\n\t\t\tif (!dates[lang]){\n\t\t\t\tlang = lang.split('-')[0];\n\t\t\t\tif (!dates[lang])\n\t\t\t\t\tlang = defaults.language;\n\t\t\t}\n\t\t\to.language = lang;\n\n\t\t\tswitch (o.startView){\n\t\t\t\tcase 2:\n\t\t\t\tcase 'decade':\n\t\t\t\t\to.startView = 2;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 1:\n\t\t\t\tcase 'year':\n\t\t\t\t\to.startView = 1;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\to.startView = 0;\n\t\t\t}\n\n\t\t\tswitch (o.minViewMode){\n\t\t\t\tcase 1:\n\t\t\t\tcase 'months':\n\t\t\t\t\to.minViewMode = 1;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\tcase 'years':\n\t\t\t\t\to.minViewMode = 2;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\to.minViewMode = 0;\n\t\t\t}\n\n\t\t\to.startView = Math.max(o.startView, o.minViewMode);\n\n\t\t\t// true, false, or Number > 0\n\t\t\tif (o.multidate !== true){\n\t\t\t\to.multidate = Number(o.multidate) || false;\n\t\t\t\tif (o.multidate !== false)\n\t\t\t\t\to.multidate = Math.max(0, o.multidate);\n\t\t\t\telse\n\t\t\t\t\to.multidate = 1;\n\t\t\t}\n\t\t\to.multidateSeparator = String(o.multidateSeparator);\n\n\t\t\to.weekStart %= 7;\n\t\t\to.weekEnd = ((o.weekStart + 6) % 7);\n\n\t\t\tvar format = DPGlobal.parseFormat(o.format);\n\t\t\tif (o.startDate !== -Infinity){\n\t\t\t\tif (!!o.startDate){\n\t\t\t\t\tif (o.startDate instanceof Date)\n\t\t\t\t\t\to.startDate = this._local_to_utc(this._zero_time(o.startDate));\n\t\t\t\t\telse\n\t\t\t\t\t\to.startDate = DPGlobal.parseDate(o.startDate, format, o.language);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\to.startDate = -Infinity;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (o.endDate !== Infinity){\n\t\t\t\tif (!!o.endDate){\n\t\t\t\t\tif (o.endDate instanceof Date)\n\t\t\t\t\t\to.endDate = this._local_to_utc(this._zero_time(o.endDate));\n\t\t\t\t\telse\n\t\t\t\t\t\to.endDate = DPGlobal.parseDate(o.endDate, format, o.language);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\to.endDate = Infinity;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\to.daysOfWeekDisabled = o.daysOfWeekDisabled||[];\n\t\t\tif (!$.isArray(o.daysOfWeekDisabled))\n\t\t\t\to.daysOfWeekDisabled = o.daysOfWeekDisabled.split(/[,\\s]*/);\n\t\t\to.daysOfWeekDisabled = $.map(o.daysOfWeekDisabled, function(d){\n\t\t\t\treturn parseInt(d, 10);\n\t\t\t});\n\n\t\t\tvar plc = String(o.orientation).toLowerCase().split(/\\s+/g),\n\t\t\t\t_plc = o.orientation.toLowerCase();\n\t\t\tplc = $.grep(plc, function(word){\n\t\t\t\treturn (/^auto|left|right|top|bottom$/).test(word);\n\t\t\t});\n\t\t\to.orientation = {x: 'auto', y: 'auto'};\n\t\t\tif (!_plc || _plc === 'auto')\n\t\t\t\t; // no action\n\t\t\telse if (plc.length === 1){\n\t\t\t\tswitch (plc[0]){\n\t\t\t\t\tcase 'top':\n\t\t\t\t\tcase 'bottom':\n\t\t\t\t\t\to.orientation.y = plc[0];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'left':\n\t\t\t\t\tcase 'right':\n\t\t\t\t\t\to.orientation.x = plc[0];\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\t_plc = $.grep(plc, function(word){\n\t\t\t\t\treturn (/^left|right$/).test(word);\n\t\t\t\t});\n\t\t\t\to.orientation.x = _plc[0] || 'auto';\n\n\t\t\t\t_plc = $.grep(plc, function(word){\n\t\t\t\t\treturn (/^top|bottom$/).test(word);\n\t\t\t\t});\n\t\t\t\to.orientation.y = _plc[0] || 'auto';\n\t\t\t}\n\t\t},\n\t\t_events: [],\n\t\t_secondaryEvents: [],\n\t\t_applyEvents: function(evs){\n\t\t\tfor (var i=0, el, ch, ev; i < evs.length; i++){\n\t\t\t\tel = evs[i][0];\n\t\t\t\tif (evs[i].length === 2){\n\t\t\t\t\tch = undefined;\n\t\t\t\t\tev = evs[i][1];\n\t\t\t\t}\n\t\t\t\telse if (evs[i].length === 3){\n\t\t\t\t\tch = evs[i][1];\n\t\t\t\t\tev = evs[i][2];\n\t\t\t\t}\n\t\t\t\tel.on(ev, ch);\n\t\t\t}\n\t\t},\n\t\t_unapplyEvents: function(evs){\n\t\t\tfor (var i=0, el, ev, ch; i < evs.length; i++){\n\t\t\t\tel = evs[i][0];\n\t\t\t\tif (evs[i].length === 2){\n\t\t\t\t\tch = undefined;\n\t\t\t\t\tev = evs[i][1];\n\t\t\t\t}\n\t\t\t\telse if (evs[i].length === 3){\n\t\t\t\t\tch = evs[i][1];\n\t\t\t\t\tev = evs[i][2];\n\t\t\t\t}\n\t\t\t\tel.off(ev, ch);\n\t\t\t}\n\t\t},\n\t\t_buildEvents: function(){\n\t\t\tif (this.isInput){ // single input\n\t\t\t\tthis._events = [\n\t\t\t\t\t[this.element, {\n\t\t\t\t\t\tfocus: $.proxy(this.show, this),\n\t\t\t\t\t\tkeyup: $.proxy(function(e){\n\t\t\t\t\t\t\tif ($.inArray(e.keyCode, [27,37,39,38,40,32,13,9]) === -1)\n\t\t\t\t\t\t\t\tthis.update();\n\t\t\t\t\t\t}, this),\n\t\t\t\t\t\tkeydown: $.proxy(this.keydown, this)\n\t\t\t\t\t}]\n\t\t\t\t];\n\t\t\t}\n\t\t\telse if (this.component && this.hasInput){ // component: input + button\n\t\t\t\tthis._events = [\n\t\t\t\t\t// For components that are not readonly, allow keyboard nav\n\t\t\t\t\t[this.element.find('input'), {\n\t\t\t\t\t\tfocus: $.proxy(this.show, this),\n\t\t\t\t\t\tkeyup: $.proxy(function(e){\n\t\t\t\t\t\t\tif ($.inArray(e.keyCode, [27,37,39,38,40,32,13,9]) === -1)\n\t\t\t\t\t\t\t\tthis.update();\n\t\t\t\t\t\t}, this),\n\t\t\t\t\t\tkeydown: $.proxy(this.keydown, this)\n\t\t\t\t\t}],\n\t\t\t\t\t[this.component, {\n\t\t\t\t\t\tclick: $.proxy(this.show, this)\n\t\t\t\t\t}]\n\t\t\t\t];\n\t\t\t}\n\t\t\telse if (this.element.is('div')){  // inline datepicker\n\t\t\t\tthis.isInline = true;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis._events = [\n\t\t\t\t\t[this.element, {\n\t\t\t\t\t\tclick: $.proxy(this.show, this)\n\t\t\t\t\t}]\n\t\t\t\t];\n\t\t\t}\n\t\t\tthis._events.push(\n\t\t\t\t// Component: listen for blur on element descendants\n\t\t\t\t[this.element, '*', {\n\t\t\t\t\tblur: $.proxy(function(e){\n\t\t\t\t\t\tthis._focused_from = e.target;\n\t\t\t\t\t}, this)\n\t\t\t\t}],\n\t\t\t\t// Input: listen for blur on element\n\t\t\t\t[this.element, {\n\t\t\t\t\tblur: $.proxy(function(e){\n\t\t\t\t\t\tthis._focused_from = e.target;\n\t\t\t\t\t}, this)\n\t\t\t\t}]\n\t\t\t);\n\n\t\t\tthis._secondaryEvents = [\n\t\t\t\t[this.picker, {\n\t\t\t\t\tclick: $.proxy(this.click, this)\n\t\t\t\t}],\n\t\t\t\t[$(window), {\n\t\t\t\t\tresize: $.proxy(this.place, this)\n\t\t\t\t}],\n\t\t\t\t[$(document), {\n\t\t\t\t\t'mousedown touchstart': $.proxy(function(e){\n\t\t\t\t\t\t// Clicked outside the datepicker, hide it\n\t\t\t\t\t\tif (!(\n\t\t\t\t\t\t\tthis.element.is(e.target) ||\n\t\t\t\t\t\t\tthis.element.find(e.target).length ||\n\t\t\t\t\t\t\tthis.picker.is(e.target) ||\n\t\t\t\t\t\t\tthis.picker.find(e.target).length\n\t\t\t\t\t\t)){\n\t\t\t\t\t\t\tthis.hide();\n\t\t\t\t\t\t}\n\t\t\t\t\t}, this)\n\t\t\t\t}]\n\t\t\t];\n\t\t},\n\t\t_attachEvents: function(){\n\t\t\tthis._detachEvents();\n\t\t\tthis._applyEvents(this._events);\n\t\t},\n\t\t_detachEvents: function(){\n\t\t\tthis._unapplyEvents(this._events);\n\t\t},\n\t\t_attachSecondaryEvents: function(){\n\t\t\tthis._detachSecondaryEvents();\n\t\t\tthis._applyEvents(this._secondaryEvents);\n\t\t},\n\t\t_detachSecondaryEvents: function(){\n\t\t\tthis._unapplyEvents(this._secondaryEvents);\n\t\t},\n\t\t_trigger: function(event, altdate){\n\t\t\tvar date = altdate || this.dates.get(-1),\n\t\t\t\tlocal_date = this._utc_to_local(date);\n\n\t\t\tthis.element.trigger({\n\t\t\t\ttype: event,\n\t\t\t\tdate: local_date,\n\t\t\t\tdates: $.map(this.dates, this._utc_to_local),\n\t\t\t\tformat: $.proxy(function(ix, format){\n\t\t\t\t\tif (arguments.length === 0){\n\t\t\t\t\t\tix = this.dates.length - 1;\n\t\t\t\t\t\tformat = this.o.format;\n\t\t\t\t\t}\n\t\t\t\t\telse if (typeof ix === 'string'){\n\t\t\t\t\t\tformat = ix;\n\t\t\t\t\t\tix = this.dates.length - 1;\n\t\t\t\t\t}\n\t\t\t\t\tformat = format || this.o.format;\n\t\t\t\t\tvar date = this.dates.get(ix);\n\t\t\t\t\treturn DPGlobal.formatDate(date, format, this.o.language);\n\t\t\t\t}, this)\n\t\t\t});\n\t\t},\n\n\t\tshow: function(){\n\t\t\tif (!this.isInline)\n\t\t\t\tthis.picker.appendTo('body');\n\t\t\tthis.picker.show();\n\t\t\tthis.place();\n\t\t\tthis._attachSecondaryEvents();\n\t\t\tthis._trigger('show');\n\t\t},\n\n\t\thide: function(){\n\t\t\tif (this.isInline)\n\t\t\t\treturn;\n\t\t\tif (!this.picker.is(':visible'))\n\t\t\t\treturn;\n\t\t\tthis.focusDate = null;\n\t\t\tthis.picker.hide().detach();\n\t\t\tthis._detachSecondaryEvents();\n\t\t\tthis.viewMode = this.o.startView;\n\t\t\tthis.showMode();\n\n\t\t\tif (\n\t\t\t\tthis.o.forceParse &&\n\t\t\t\t(\n\t\t\t\t\tthis.isInput && this.element.val() ||\n\t\t\t\t\tthis.hasInput && this.element.find('input').val()\n\t\t\t\t)\n\t\t\t)\n\t\t\t\tthis.setValue();\n\t\t\tthis._trigger('hide');\n\t\t},\n\n\t\tremove: function(){\n\t\t\tthis.hide();\n\t\t\tthis._detachEvents();\n\t\t\tthis._detachSecondaryEvents();\n\t\t\tthis.picker.remove();\n\t\t\tdelete this.element.data().datepicker;\n\t\t\tif (!this.isInput){\n\t\t\t\tdelete this.element.data().date;\n\t\t\t}\n\t\t},\n\n\t\t_utc_to_local: function(utc){\n\t\t\treturn utc && new Date(utc.getTime() + (utc.getTimezoneOffset()*60000));\n\t\t},\n\t\t_local_to_utc: function(local){\n\t\t\treturn local && new Date(local.getTime() - (local.getTimezoneOffset()*60000));\n\t\t},\n\t\t_zero_time: function(local){\n\t\t\treturn local && new Date(local.getFullYear(), local.getMonth(), local.getDate());\n\t\t},\n\t\t_zero_utc_time: function(utc){\n\t\t\treturn utc && new Date(Date.UTC(utc.getUTCFullYear(), utc.getUTCMonth(), utc.getUTCDate()));\n\t\t},\n\n\t\tgetDates: function(){\n\t\t\treturn $.map(this.dates, this._utc_to_local);\n\t\t},\n\n\t\tgetUTCDates: function(){\n\t\t\treturn $.map(this.dates, function(d){\n\t\t\t\treturn new Date(d);\n\t\t\t});\n\t\t},\n\n\t\tgetDate: function(){\n\t\t\treturn this._utc_to_local(this.getUTCDate());\n\t\t},\n\n\t\tgetUTCDate: function(){\n\t\t\treturn new Date(this.dates.get(-1));\n\t\t},\n\n\t\tsetDates: function(){\n\t\t\tvar args = $.isArray(arguments[0]) ? arguments[0] : arguments;\n\t\t\tthis.update.apply(this, args);\n\t\t\tthis._trigger('changeDate');\n\t\t\tthis.setValue();\n\t\t},\n\n\t\tsetUTCDates: function(){\n\t\t\tvar args = $.isArray(arguments[0]) ? arguments[0] : arguments;\n\t\t\tthis.update.apply(this, $.map(args, this._utc_to_local));\n\t\t\tthis._trigger('changeDate');\n\t\t\tthis.setValue();\n\t\t},\n\n\t\tsetDate: alias('setDates'),\n\t\tsetUTCDate: alias('setUTCDates'),\n\n\t\tsetValue: function(){\n\t\t\tvar formatted = this.getFormattedDate();\n\t\t\tif (!this.isInput){\n\t\t\t\tif (this.component){\n\t\t\t\t\tthis.element.find('input').val(formatted).change();\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.element.val(formatted).change();\n\t\t\t}\n\t\t},\n\n\t\tgetFormattedDate: function(format){\n\t\t\tif (format === undefined)\n\t\t\t\tformat = this.o.format;\n\n\t\t\tvar lang = this.o.language;\n\t\t\treturn $.map(this.dates, function(d){\n\t\t\t\treturn DPGlobal.formatDate(d, format, lang);\n\t\t\t}).join(this.o.multidateSeparator);\n\t\t},\n\n\t\tsetStartDate: function(startDate){\n\t\t\tthis._process_options({startDate: startDate});\n\t\t\tthis.update();\n\t\t\tthis.updateNavArrows();\n\t\t},\n\n\t\tsetEndDate: function(endDate){\n\t\t\tthis._process_options({endDate: endDate});\n\t\t\tthis.update();\n\t\t\tthis.updateNavArrows();\n\t\t},\n\n\t\tsetDaysOfWeekDisabled: function(daysOfWeekDisabled){\n\t\t\tthis._process_options({daysOfWeekDisabled: daysOfWeekDisabled});\n\t\t\tthis.update();\n\t\t\tthis.updateNavArrows();\n\t\t},\n\n\t\tplace: function(){\n\t\t\tif (this.isInline)\n\t\t\t\treturn;\n\t\t\tvar calendarWidth = this.picker.outerWidth(),\n\t\t\t\tcalendarHeight = this.picker.outerHeight(),\n\t\t\t\tvisualPadding = 10,\n\t\t\t\twindowWidth = $window.width(),\n\t\t\t\twindowHeight = $window.height(),\n\t\t\t\tscrollTop = $window.scrollTop();\n\n\t\t\tvar zIndex = parseInt(this.element.parents().filter(function(){\n\t\t\t\t\treturn $(this).css('z-index') !== 'auto';\n\t\t\t\t}).first().css('z-index'))+10;\n\t\t\tvar offset = this.component ? this.component.parent().offset() : this.element.offset();\n\t\t\tvar height = this.component ? this.component.outerHeight(true) : this.element.outerHeight(false);\n\t\t\tvar width = this.component ? this.component.outerWidth(true) : this.element.outerWidth(false);\n\t\t\tvar left = offset.left,\n\t\t\t\ttop = offset.top;\n\n\t\t\tthis.picker.removeClass(\n\t\t\t\t'datepicker-orient-top datepicker-orient-bottom '+\n\t\t\t\t'datepicker-orient-right datepicker-orient-left'\n\t\t\t);\n\n\t\t\tif (this.o.orientation.x !== 'auto'){\n\t\t\t\tthis.picker.addClass('datepicker-orient-' + this.o.orientation.x);\n\t\t\t\tif (this.o.orientation.x === 'right')\n\t\t\t\t\tleft -= calendarWidth - width;\n\t\t\t}\n\t\t\t// auto x orientation is best-placement: if it crosses a window\n\t\t\t// edge, fudge it sideways\n\t\t\telse {\n\t\t\t\t// Default to left\n\t\t\t\tthis.picker.addClass('datepicker-orient-left');\n\t\t\t\tif (offset.left < 0)\n\t\t\t\t\tleft -= offset.left - visualPadding;\n\t\t\t\telse if (offset.left + calendarWidth > windowWidth)\n\t\t\t\t\tleft = windowWidth - calendarWidth - visualPadding;\n\t\t\t}\n\n\t\t\t// auto y orientation is best-situation: top or bottom, no fudging,\n\t\t\t// decision based on which shows more of the calendar\n\t\t\tvar yorient = this.o.orientation.y,\n\t\t\t\ttop_overflow, bottom_overflow;\n\t\t\tif (yorient === 'auto'){\n\t\t\t\ttop_overflow = -scrollTop + offset.top - calendarHeight;\n\t\t\t\tbottom_overflow = scrollTop + windowHeight - (offset.top + height + calendarHeight);\n\t\t\t\tif (Math.max(top_overflow, bottom_overflow) === bottom_overflow)\n\t\t\t\t\tyorient = 'top';\n\t\t\t\telse\n\t\t\t\t\tyorient = 'bottom';\n\t\t\t}\n\t\t\tthis.picker.addClass('datepicker-orient-' + yorient);\n\t\t\tif (yorient === 'top')\n\t\t\t\ttop += height;\n\t\t\telse\n\t\t\t\ttop -= calendarHeight + parseInt(this.picker.css('padding-top'));\n\n\t\t\tthis.picker.css({\n\t\t\t\ttop: top,\n\t\t\t\tleft: left,\n\t\t\t\tzIndex: zIndex\n\t\t\t});\n\t\t},\n\n\t\t_allow_update: true,\n\t\tupdate: function(){\n\t\t\tif (!this._allow_update)\n\t\t\t\treturn;\n\n\t\t\tvar oldDates = this.dates.copy(),\n\t\t\t\tdates = [],\n\t\t\t\tfromArgs = false;\n\t\t\tif (arguments.length){\n\t\t\t\t$.each(arguments, $.proxy(function(i, date){\n\t\t\t\t\tif (date instanceof Date)\n\t\t\t\t\t\tdate = this._local_to_utc(date);\n\t\t\t\t\tdates.push(date);\n\t\t\t\t}, this));\n\t\t\t\tfromArgs = true;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tdates = this.isInput\n\t\t\t\t\t\t? this.element.val()\n\t\t\t\t\t\t: this.element.data('date') || this.element.find('input').val();\n\t\t\t\tif (dates && this.o.multidate)\n\t\t\t\t\tdates = dates.split(this.o.multidateSeparator);\n\t\t\t\telse\n\t\t\t\t\tdates = [dates];\n\t\t\t\tdelete this.element.data().date;\n\t\t\t}\n\n\t\t\tdates = $.map(dates, $.proxy(function(date){\n\t\t\t\treturn DPGlobal.parseDate(date, this.o.format, this.o.language);\n\t\t\t}, this));\n\t\t\tdates = $.grep(dates, $.proxy(function(date){\n\t\t\t\treturn (\n\t\t\t\t\tdate < this.o.startDate ||\n\t\t\t\t\tdate > this.o.endDate ||\n\t\t\t\t\t!date\n\t\t\t\t);\n\t\t\t}, this), true);\n\t\t\tthis.dates.replace(dates);\n\n\t\t\tif (this.dates.length)\n\t\t\t\tthis.viewDate = new Date(this.dates.get(-1));\n\t\t\telse if (this.viewDate < this.o.startDate)\n\t\t\t\tthis.viewDate = new Date(this.o.startDate);\n\t\t\telse if (this.viewDate > this.o.endDate)\n\t\t\t\tthis.viewDate = new Date(this.o.endDate);\n\n\t\t\tif (fromArgs){\n\t\t\t\t// setting date by clicking\n\t\t\t\tthis.setValue();\n\t\t\t}\n\t\t\telse if (dates.length){\n\t\t\t\t// setting date by typing\n\t\t\t\tif (String(oldDates) !== String(this.dates))\n\t\t\t\t\tthis._trigger('changeDate');\n\t\t\t}\n\t\t\tif (!this.dates.length && oldDates.length)\n\t\t\t\tthis._trigger('clearDate');\n\n\t\t\tthis.fill();\n\t\t},\n\n\t\tfillDow: function(){\n\t\t\tvar dowCnt = this.o.weekStart,\n\t\t\t\thtml = '<tr>';\n\t\t\tif (this.o.calendarWeeks){\n\t\t\t\tvar cell = '<th class=\"cw\">&nbsp;</th>';\n\t\t\t\thtml += cell;\n\t\t\t\tthis.picker.find('.datepicker-days thead tr:first-child').prepend(cell);\n\t\t\t}\n\t\t\twhile (dowCnt < this.o.weekStart + 7){\n\t\t\t\thtml += '<th class=\"dow\">'+dates[this.o.language].daysMin[(dowCnt++)%7]+'</th>';\n\t\t\t}\n\t\t\thtml += '</tr>';\n\t\t\tthis.picker.find('.datepicker-days thead').append(html);\n\t\t},\n\n\t\tfillMonths: function(){\n\t\t\tvar html = '',\n\t\t\ti = 0;\n\t\t\twhile (i < 12){\n\t\t\t\thtml += '<span class=\"month\">'+dates[this.o.language].monthsShort[i++]+'</span>';\n\t\t\t}\n\t\t\tthis.picker.find('.datepicker-months td').html(html);\n\t\t},\n\n\t\tsetRange: function(range){\n\t\t\tif (!range || !range.length)\n\t\t\t\tdelete this.range;\n\t\t\telse\n\t\t\t\tthis.range = $.map(range, function(d){\n\t\t\t\t\treturn d.valueOf();\n\t\t\t\t});\n\t\t\tthis.fill();\n\t\t},\n\n\t\tgetClassNames: function(date){\n\t\t\tvar cls = [],\n\t\t\t\tyear = this.viewDate.getUTCFullYear(),\n\t\t\t\tmonth = this.viewDate.getUTCMonth(),\n\t\t\t\ttoday = new Date();\n\t\t\tif (date.getUTCFullYear() < year || (date.getUTCFullYear() === year && date.getUTCMonth() < month)){\n\t\t\t\tcls.push('old');\n\t\t\t}\n\t\t\telse if (date.getUTCFullYear() > year || (date.getUTCFullYear() === year && date.getUTCMonth() > month)){\n\t\t\t\tcls.push('new');\n\t\t\t}\n\t\t\tif (this.focusDate && date.valueOf() === this.focusDate.valueOf())\n\t\t\t\tcls.push('focused');\n\t\t\t// Compare internal UTC date with local today, not UTC today\n\t\t\tif (this.o.todayHighlight &&\n\t\t\t\tdate.getUTCFullYear() === today.getFullYear() &&\n\t\t\t\tdate.getUTCMonth() === today.getMonth() &&\n\t\t\t\tdate.getUTCDate() === today.getDate()){\n\t\t\t\tcls.push('today');\n\t\t\t}\n\t\t\tif (this.dates.contains(date) !== -1)\n\t\t\t\tcls.push('active');\n\t\t\tif (date.valueOf() < this.o.startDate || date.valueOf() > this.o.endDate ||\n\t\t\t\t$.inArray(date.getUTCDay(), this.o.daysOfWeekDisabled) !== -1){\n\t\t\t\tcls.push('disabled');\n\t\t\t}\n\t\t\tif (this.range){\n\t\t\t\tif (date > this.range[0] && date < this.range[this.range.length-1]){\n\t\t\t\t\tcls.push('range');\n\t\t\t\t}\n\t\t\t\tif ($.inArray(date.valueOf(), this.range) !== -1){\n\t\t\t\t\tcls.push('selected');\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn cls;\n\t\t},\n\n\t\tfill: function(){\n\t\t\tvar d = new Date(this.viewDate),\n\t\t\t\tyear = d.getUTCFullYear(),\n\t\t\t\tmonth = d.getUTCMonth(),\n\t\t\t\tstartYear = this.o.startDate !== -Infinity ? this.o.startDate.getUTCFullYear() : -Infinity,\n\t\t\t\tstartMonth = this.o.startDate !== -Infinity ? this.o.startDate.getUTCMonth() : -Infinity,\n\t\t\t\tendYear = this.o.endDate !== Infinity ? this.o.endDate.getUTCFullYear() : Infinity,\n\t\t\t\tendMonth = this.o.endDate !== Infinity ? this.o.endDate.getUTCMonth() : Infinity,\n\t\t\t\ttodaytxt = dates[this.o.language].today || dates['en'].today || '',\n\t\t\t\tcleartxt = dates[this.o.language].clear || dates['en'].clear || '',\n\t\t\t\ttooltip;\n\t\t\tthis.picker.find('.datepicker-days thead th.datepicker-switch')\n\t\t\t\t\t\t.text(dates[this.o.language].months[month]+' '+year);\n\t\t\tthis.picker.find('tfoot th.today')\n\t\t\t\t\t\t.text(todaytxt)\n\t\t\t\t\t\t.toggle(this.o.todayBtn !== false);\n\t\t\tthis.picker.find('tfoot th.clear')\n\t\t\t\t\t\t.text(cleartxt)\n\t\t\t\t\t\t.toggle(this.o.clearBtn !== false);\n\t\t\tthis.updateNavArrows();\n\t\t\tthis.fillMonths();\n\t\t\tvar prevMonth = UTCDate(year, month-1, 28),\n\t\t\t\tday = DPGlobal.getDaysInMonth(prevMonth.getUTCFullYear(), prevMonth.getUTCMonth());\n\t\t\tprevMonth.setUTCDate(day);\n\t\t\tprevMonth.setUTCDate(day - (prevMonth.getUTCDay() - this.o.weekStart + 7)%7);\n\t\t\tvar nextMonth = new Date(prevMonth);\n\t\t\tnextMonth.setUTCDate(nextMonth.getUTCDate() + 42);\n\t\t\tnextMonth = nextMonth.valueOf();\n\t\t\tvar html = [];\n\t\t\tvar clsName;\n\t\t\twhile (prevMonth.valueOf() < nextMonth){\n\t\t\t\tif (prevMonth.getUTCDay() === this.o.weekStart){\n\t\t\t\t\thtml.push('<tr>');\n\t\t\t\t\tif (this.o.calendarWeeks){\n\t\t\t\t\t\t// ISO 8601: First week contains first thursday.\n\t\t\t\t\t\t// ISO also states week starts on Monday, but we can be more abstract here.\n\t\t\t\t\t\tvar\n\t\t\t\t\t\t\t// Start of current week: based on weekstart/current date\n\t\t\t\t\t\t\tws = new Date(+prevMonth + (this.o.weekStart - prevMonth.getUTCDay() - 7) % 7 * 864e5),\n\t\t\t\t\t\t\t// Thursday of this week\n\t\t\t\t\t\t\tth = new Date(Number(ws) + (7 + 4 - ws.getUTCDay()) % 7 * 864e5),\n\t\t\t\t\t\t\t// First Thursday of year, year from thursday\n\t\t\t\t\t\t\tyth = new Date(Number(yth = UTCDate(th.getUTCFullYear(), 0, 1)) + (7 + 4 - yth.getUTCDay())%7*864e5),\n\t\t\t\t\t\t\t// Calendar week: ms between thursdays, div ms per day, div 7 days\n\t\t\t\t\t\t\tcalWeek =  (th - yth) / 864e5 / 7 + 1;\n\t\t\t\t\t\thtml.push('<td class=\"cw\">'+ calWeek +'</td>');\n\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tclsName = this.getClassNames(prevMonth);\n\t\t\t\tclsName.push('day');\n\n\t\t\t\tif (this.o.beforeShowDay !== $.noop){\n\t\t\t\t\tvar before = this.o.beforeShowDay(this._utc_to_local(prevMonth));\n\t\t\t\t\tif (before === undefined)\n\t\t\t\t\t\tbefore = {};\n\t\t\t\t\telse if (typeof(before) === 'boolean')\n\t\t\t\t\t\tbefore = {enabled: before};\n\t\t\t\t\telse if (typeof(before) === 'string')\n\t\t\t\t\t\tbefore = {classes: before};\n\t\t\t\t\tif (before.enabled === false)\n\t\t\t\t\t\tclsName.push('disabled');\n\t\t\t\t\tif (before.classes)\n\t\t\t\t\t\tclsName = clsName.concat(before.classes.split(/\\s+/));\n\t\t\t\t\tif (before.tooltip)\n\t\t\t\t\t\ttooltip = before.tooltip;\n\t\t\t\t}\n\n\t\t\t\tclsName = $.unique(clsName);\n\t\t\t\thtml.push('<td class=\"'+clsName.join(' ')+'\"' + (tooltip ? ' title=\"'+tooltip+'\"' : '') + '>'+prevMonth.getUTCDate() + '</td>');\n\t\t\t\tif (prevMonth.getUTCDay() === this.o.weekEnd){\n\t\t\t\t\thtml.push('</tr>');\n\t\t\t\t}\n\t\t\t\tprevMonth.setUTCDate(prevMonth.getUTCDate()+1);\n\t\t\t}\n\t\t\tthis.picker.find('.datepicker-days tbody').empty().append(html.join(''));\n\n\t\t\tvar months = this.picker.find('.datepicker-months')\n\t\t\t\t\t\t.find('th:eq(1)')\n\t\t\t\t\t\t\t.text(year)\n\t\t\t\t\t\t\t.end()\n\t\t\t\t\t\t.find('span').removeClass('active');\n\n\t\t\t$.each(this.dates, function(i, d){\n\t\t\t\tif (d.getUTCFullYear() === year)\n\t\t\t\t\tmonths.eq(d.getUTCMonth()).addClass('active');\n\t\t\t});\n\n\t\t\tif (year < startYear || year > endYear){\n\t\t\t\tmonths.addClass('disabled');\n\t\t\t}\n\t\t\tif (year === startYear){\n\t\t\t\tmonths.slice(0, startMonth).addClass('disabled');\n\t\t\t}\n\t\t\tif (year === endYear){\n\t\t\t\tmonths.slice(endMonth+1).addClass('disabled');\n\t\t\t}\n\n\t\t\thtml = '';\n\t\t\tyear = parseInt(year/10, 10) * 10;\n\t\t\tvar yearCont = this.picker.find('.datepicker-years')\n\t\t\t\t\t\t\t\t.find('th:eq(1)')\n\t\t\t\t\t\t\t\t\t.text(year + '-' + (year + 9))\n\t\t\t\t\t\t\t\t\t.end()\n\t\t\t\t\t\t\t\t.find('td');\n\t\t\tyear -= 1;\n\t\t\tvar years = $.map(this.dates, function(d){\n\t\t\t\t\treturn d.getUTCFullYear();\n\t\t\t\t}),\n\t\t\t\tclasses;\n\t\t\tfor (var i = -1; i < 11; i++){\n\t\t\t\tclasses = ['year'];\n\t\t\t\tif (i === -1)\n\t\t\t\t\tclasses.push('old');\n\t\t\t\telse if (i === 10)\n\t\t\t\t\tclasses.push('new');\n\t\t\t\tif ($.inArray(year, years) !== -1)\n\t\t\t\t\tclasses.push('active');\n\t\t\t\tif (year < startYear || year > endYear)\n\t\t\t\t\tclasses.push('disabled');\n\t\t\t\thtml += '<span class=\"' + classes.join(' ') + '\">'+year+'</span>';\n\t\t\t\tyear += 1;\n\t\t\t}\n\t\t\tyearCont.html(html);\n\t\t},\n\n\t\tupdateNavArrows: function(){\n\t\t\tif (!this._allow_update)\n\t\t\t\treturn;\n\n\t\t\tvar d = new Date(this.viewDate),\n\t\t\t\tyear = d.getUTCFullYear(),\n\t\t\t\tmonth = d.getUTCMonth();\n\t\t\tswitch (this.viewMode){\n\t\t\t\tcase 0:\n\t\t\t\t\tif (this.o.startDate !== -Infinity && year <= this.o.startDate.getUTCFullYear() && month <= this.o.startDate.getUTCMonth()){\n\t\t\t\t\t\tthis.picker.find('.prev').css({visibility: 'hidden'});\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis.picker.find('.prev').css({visibility: 'visible'});\n\t\t\t\t\t}\n\t\t\t\t\tif (this.o.endDate !== Infinity && year >= this.o.endDate.getUTCFullYear() && month >= this.o.endDate.getUTCMonth()){\n\t\t\t\t\t\tthis.picker.find('.next').css({visibility: 'hidden'});\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis.picker.find('.next').css({visibility: 'visible'});\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 1:\n\t\t\t\tcase 2:\n\t\t\t\t\tif (this.o.startDate !== -Infinity && year <= this.o.startDate.getUTCFullYear()){\n\t\t\t\t\t\tthis.picker.find('.prev').css({visibility: 'hidden'});\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis.picker.find('.prev').css({visibility: 'visible'});\n\t\t\t\t\t}\n\t\t\t\t\tif (this.o.endDate !== Infinity && year >= this.o.endDate.getUTCFullYear()){\n\t\t\t\t\t\tthis.picker.find('.next').css({visibility: 'hidden'});\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis.picker.find('.next').css({visibility: 'visible'});\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t},\n\n\t\tclick: function(e){\n\t\t\te.preventDefault();\n\t\t\tvar target = $(e.target).closest('span, td, th'),\n\t\t\t\tyear, month, day;\n\t\t\tif (target.length === 1){\n\t\t\t\tswitch (target[0].nodeName.toLowerCase()){\n\t\t\t\t\tcase 'th':\n\t\t\t\t\t\tswitch (target[0].className){\n\t\t\t\t\t\t\tcase 'datepicker-switch':\n\t\t\t\t\t\t\t\tthis.showMode(1);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'prev':\n\t\t\t\t\t\t\tcase 'next':\n\t\t\t\t\t\t\t\tvar dir = DPGlobal.modes[this.viewMode].navStep * (target[0].className === 'prev' ? -1 : 1);\n\t\t\t\t\t\t\t\tswitch (this.viewMode){\n\t\t\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\t\t\tthis.viewDate = this.moveMonth(this.viewDate, dir);\n\t\t\t\t\t\t\t\t\t\tthis._trigger('changeMonth', this.viewDate);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\t\t\tthis.viewDate = this.moveYear(this.viewDate, dir);\n\t\t\t\t\t\t\t\t\t\tif (this.viewMode === 1)\n\t\t\t\t\t\t\t\t\t\t\tthis._trigger('changeYear', this.viewDate);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'today':\n\t\t\t\t\t\t\t\tvar date = new Date();\n\t\t\t\t\t\t\t\tdate = UTCDate(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);\n\n\t\t\t\t\t\t\t\tthis.showMode(-2);\n\t\t\t\t\t\t\t\tvar which = this.o.todayBtn === 'linked' ? null : 'view';\n\t\t\t\t\t\t\t\tthis._setDate(date, which);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'clear':\n\t\t\t\t\t\t\t\tvar element;\n\t\t\t\t\t\t\t\tif (this.isInput)\n\t\t\t\t\t\t\t\t\telement = this.element;\n\t\t\t\t\t\t\t\telse if (this.component)\n\t\t\t\t\t\t\t\t\telement = this.element.find('input');\n\t\t\t\t\t\t\t\tif (element)\n\t\t\t\t\t\t\t\t\telement.val(\"\").change();\n\t\t\t\t\t\t\t\tthis.update();\n\t\t\t\t\t\t\t\tthis._trigger('changeDate');\n\t\t\t\t\t\t\t\tif (this.o.autoclose)\n\t\t\t\t\t\t\t\t\tthis.hide();\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'span':\n\t\t\t\t\t\tif (!target.is('.disabled')){\n\t\t\t\t\t\t\tthis.viewDate.setUTCDate(1);\n\t\t\t\t\t\t\tif (target.is('.month')){\n\t\t\t\t\t\t\t\tday = 1;\n\t\t\t\t\t\t\t\tmonth = target.parent().find('span').index(target);\n\t\t\t\t\t\t\t\tyear = this.viewDate.getUTCFullYear();\n\t\t\t\t\t\t\t\tthis.viewDate.setUTCMonth(month);\n\t\t\t\t\t\t\t\tthis._trigger('changeMonth', this.viewDate);\n\t\t\t\t\t\t\t\tif (this.o.minViewMode === 1){\n\t\t\t\t\t\t\t\t\tthis._setDate(UTCDate(year, month, day));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tday = 1;\n\t\t\t\t\t\t\t\tmonth = 0;\n\t\t\t\t\t\t\t\tyear = parseInt(target.text(), 10)||0;\n\t\t\t\t\t\t\t\tthis.viewDate.setUTCFullYear(year);\n\t\t\t\t\t\t\t\tthis._trigger('changeYear', this.viewDate);\n\t\t\t\t\t\t\t\tif (this.o.minViewMode === 2){\n\t\t\t\t\t\t\t\t\tthis._setDate(UTCDate(year, month, day));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tthis.showMode(-1);\n\t\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'td':\n\t\t\t\t\t\tif (target.is('.day') && !target.is('.disabled')){\n\t\t\t\t\t\t\tday = parseInt(target.text(), 10)||1;\n\t\t\t\t\t\t\tyear = this.viewDate.getUTCFullYear();\n\t\t\t\t\t\t\tmonth = this.viewDate.getUTCMonth();\n\t\t\t\t\t\t\tif (target.is('.old')){\n\t\t\t\t\t\t\t\tif (month === 0){\n\t\t\t\t\t\t\t\t\tmonth = 11;\n\t\t\t\t\t\t\t\t\tyear -= 1;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tmonth -= 1;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (target.is('.new')){\n\t\t\t\t\t\t\t\tif (month === 11){\n\t\t\t\t\t\t\t\t\tmonth = 0;\n\t\t\t\t\t\t\t\t\tyear += 1;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tmonth += 1;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tthis._setDate(UTCDate(year, month, day));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this.picker.is(':visible') && this._focused_from){\n\t\t\t\t$(this._focused_from).focus();\n\t\t\t}\n\t\t\tdelete this._focused_from;\n\t\t},\n\n\t\t_toggle_multidate: function(date){\n\t\t\tvar ix = this.dates.contains(date);\n\t\t\tif (!date){\n\t\t\t\tthis.dates.clear();\n\t\t\t}\n\t\t\telse if (ix !== -1){\n\t\t\t\tthis.dates.remove(ix);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.dates.push(date);\n\t\t\t}\n\t\t\tif (typeof this.o.multidate === 'number')\n\t\t\t\twhile (this.dates.length > this.o.multidate)\n\t\t\t\t\tthis.dates.remove(0);\n\t\t},\n\n\t\t_setDate: function(date, which){\n\t\t\tif (!which || which === 'date')\n\t\t\t\tthis._toggle_multidate(date && new Date(date));\n\t\t\tif (!which || which  === 'view')\n\t\t\t\tthis.viewDate = date && new Date(date);\n\n\t\t\tthis.fill();\n\t\t\tthis.setValue();\n\t\t\tthis._trigger('changeDate');\n\t\t\tvar element;\n\t\t\tif (this.isInput){\n\t\t\t\telement = this.element;\n\t\t\t}\n\t\t\telse if (this.component){\n\t\t\t\telement = this.element.find('input');\n\t\t\t}\n\t\t\tif (element){\n\t\t\t\telement.change();\n\t\t\t}\n\t\t\tif (this.o.autoclose && (!which || which === 'date')){\n\t\t\t\tthis.hide();\n\t\t\t}\n\t\t},\n\n\t\tmoveMonth: function(date, dir){\n\t\t\tif (!date)\n\t\t\t\treturn undefined;\n\t\t\tif (!dir)\n\t\t\t\treturn date;\n\t\t\tvar new_date = new Date(date.valueOf()),\n\t\t\t\tday = new_date.getUTCDate(),\n\t\t\t\tmonth = new_date.getUTCMonth(),\n\t\t\t\tmag = Math.abs(dir),\n\t\t\t\tnew_month, test;\n\t\t\tdir = dir > 0 ? 1 : -1;\n\t\t\tif (mag === 1){\n\t\t\t\ttest = dir === -1\n\t\t\t\t\t// If going back one month, make sure month is not current month\n\t\t\t\t\t// (eg, Mar 31 -> Feb 31 == Feb 28, not Mar 02)\n\t\t\t\t\t? function(){\n\t\t\t\t\t\treturn new_date.getUTCMonth() === month;\n\t\t\t\t\t}\n\t\t\t\t\t// If going forward one month, make sure month is as expected\n\t\t\t\t\t// (eg, Jan 31 -> Feb 31 == Feb 28, not Mar 02)\n\t\t\t\t\t: function(){\n\t\t\t\t\t\treturn new_date.getUTCMonth() !== new_month;\n\t\t\t\t\t};\n\t\t\t\tnew_month = month + dir;\n\t\t\t\tnew_date.setUTCMonth(new_month);\n\t\t\t\t// Dec -> Jan (12) or Jan -> Dec (-1) -- limit expected date to 0-11\n\t\t\t\tif (new_month < 0 || new_month > 11)\n\t\t\t\t\tnew_month = (new_month + 12) % 12;\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// For magnitudes >1, move one month at a time...\n\t\t\t\tfor (var i=0; i < mag; i++)\n\t\t\t\t\t// ...which might decrease the day (eg, Jan 31 to Feb 28, etc)...\n\t\t\t\t\tnew_date = this.moveMonth(new_date, dir);\n\t\t\t\t// ...then reset the day, keeping it in the new month\n\t\t\t\tnew_month = new_date.getUTCMonth();\n\t\t\t\tnew_date.setUTCDate(day);\n\t\t\t\ttest = function(){\n\t\t\t\t\treturn new_month !== new_date.getUTCMonth();\n\t\t\t\t};\n\t\t\t}\n\t\t\t// Common date-resetting loop -- if date is beyond end of month, make it\n\t\t\t// end of month\n\t\t\twhile (test()){\n\t\t\t\tnew_date.setUTCDate(--day);\n\t\t\t\tnew_date.setUTCMonth(new_month);\n\t\t\t}\n\t\t\treturn new_date;\n\t\t},\n\n\t\tmoveYear: function(date, dir){\n\t\t\treturn this.moveMonth(date, dir*12);\n\t\t},\n\n\t\tdateWithinRange: function(date){\n\t\t\treturn date >= this.o.startDate && date <= this.o.endDate;\n\t\t},\n\n\t\tkeydown: function(e){\n\t\t\tif (this.picker.is(':not(:visible)')){\n\t\t\t\tif (e.keyCode === 27) // allow escape to hide and re-show picker\n\t\t\t\t\tthis.show();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar dateChanged = false,\n\t\t\t\tdir, newDate, newViewDate,\n\t\t\t\tfocusDate = this.focusDate || this.viewDate;\n\t\t\tswitch (e.keyCode){\n\t\t\t\tcase 27: // escape\n\t\t\t\t\tif (this.focusDate){\n\t\t\t\t\t\tthis.focusDate = null;\n\t\t\t\t\t\tthis.viewDate = this.dates.get(-1) || this.viewDate;\n\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t\tthis.hide();\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 37: // left\n\t\t\t\tcase 39: // right\n\t\t\t\t\tif (!this.o.keyboardNavigation)\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdir = e.keyCode === 37 ? -1 : 1;\n\t\t\t\t\tif (e.ctrlKey){\n\t\t\t\t\t\tnewDate = this.moveYear(this.dates.get(-1) || UTCToday(), dir);\n\t\t\t\t\t\tnewViewDate = this.moveYear(focusDate, dir);\n\t\t\t\t\t\tthis._trigger('changeYear', this.viewDate);\n\t\t\t\t\t}\n\t\t\t\t\telse if (e.shiftKey){\n\t\t\t\t\t\tnewDate = this.moveMonth(this.dates.get(-1) || UTCToday(), dir);\n\t\t\t\t\t\tnewViewDate = this.moveMonth(focusDate, dir);\n\t\t\t\t\t\tthis._trigger('changeMonth', this.viewDate);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tnewDate = new Date(this.dates.get(-1) || UTCToday());\n\t\t\t\t\t\tnewDate.setUTCDate(newDate.getUTCDate() + dir);\n\t\t\t\t\t\tnewViewDate = new Date(focusDate);\n\t\t\t\t\t\tnewViewDate.setUTCDate(focusDate.getUTCDate() + dir);\n\t\t\t\t\t}\n\t\t\t\t\tif (this.dateWithinRange(newDate)){\n\t\t\t\t\t\tthis.focusDate = this.viewDate = newViewDate;\n\t\t\t\t\t\tthis.setValue();\n\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 38: // up\n\t\t\t\tcase 40: // down\n\t\t\t\t\tif (!this.o.keyboardNavigation)\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdir = e.keyCode === 38 ? -1 : 1;\n\t\t\t\t\tif (e.ctrlKey){\n\t\t\t\t\t\tnewDate = this.moveYear(this.dates.get(-1) || UTCToday(), dir);\n\t\t\t\t\t\tnewViewDate = this.moveYear(focusDate, dir);\n\t\t\t\t\t\tthis._trigger('changeYear', this.viewDate);\n\t\t\t\t\t}\n\t\t\t\t\telse if (e.shiftKey){\n\t\t\t\t\t\tnewDate = this.moveMonth(this.dates.get(-1) || UTCToday(), dir);\n\t\t\t\t\t\tnewViewDate = this.moveMonth(focusDate, dir);\n\t\t\t\t\t\tthis._trigger('changeMonth', this.viewDate);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tnewDate = new Date(this.dates.get(-1) || UTCToday());\n\t\t\t\t\t\tnewDate.setUTCDate(newDate.getUTCDate() + dir * 7);\n\t\t\t\t\t\tnewViewDate = new Date(focusDate);\n\t\t\t\t\t\tnewViewDate.setUTCDate(focusDate.getUTCDate() + dir * 7);\n\t\t\t\t\t}\n\t\t\t\t\tif (this.dateWithinRange(newDate)){\n\t\t\t\t\t\tthis.focusDate = this.viewDate = newViewDate;\n\t\t\t\t\t\tthis.setValue();\n\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 32: // spacebar\n\t\t\t\t\t// Spacebar is used in manually typing dates in some formats.\n\t\t\t\t\t// As such, its behavior should not be hijacked.\n\t\t\t\t\tbreak;\n\t\t\t\tcase 13: // enter\n\t\t\t\t\tfocusDate = this.focusDate || this.dates.get(-1) || this.viewDate;\n\t\t\t\t\tthis._toggle_multidate(focusDate);\n\t\t\t\t\tdateChanged = true;\n\t\t\t\t\tthis.focusDate = null;\n\t\t\t\t\tthis.viewDate = this.dates.get(-1) || this.viewDate;\n\t\t\t\t\tthis.setValue();\n\t\t\t\t\tthis.fill();\n\t\t\t\t\tif (this.picker.is(':visible')){\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tif (this.o.autoclose)\n\t\t\t\t\t\t\tthis.hide();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 9: // tab\n\t\t\t\t\tthis.focusDate = null;\n\t\t\t\t\tthis.viewDate = this.dates.get(-1) || this.viewDate;\n\t\t\t\t\tthis.fill();\n\t\t\t\t\tthis.hide();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (dateChanged){\n\t\t\t\tif (this.dates.length)\n\t\t\t\t\tthis._trigger('changeDate');\n\t\t\t\telse\n\t\t\t\t\tthis._trigger('clearDate');\n\t\t\t\tvar element;\n\t\t\t\tif (this.isInput){\n\t\t\t\t\telement = this.element;\n\t\t\t\t}\n\t\t\t\telse if (this.component){\n\t\t\t\t\telement = this.element.find('input');\n\t\t\t\t}\n\t\t\t\tif (element){\n\t\t\t\t\telement.change();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tshowMode: function(dir){\n\t\t\tif (dir){\n\t\t\t\tthis.viewMode = Math.max(this.o.minViewMode, Math.min(2, this.viewMode + dir));\n\t\t\t}\n\t\t\tthis.picker\n\t\t\t\t.find('>div')\n\t\t\t\t.hide()\n\t\t\t\t.filter('.datepicker-'+DPGlobal.modes[this.viewMode].clsName)\n\t\t\t\t\t.css('display', 'block');\n\t\t\tthis.updateNavArrows();\n\t\t}\n\t};\n\n\tvar DateRangePicker = function(element, options){\n\t\tthis.element = $(element);\n\t\tthis.inputs = $.map(options.inputs, function(i){\n\t\t\treturn i.jquery ? i[0] : i;\n\t\t});\n\t\tdelete options.inputs;\n\n\t\t$(this.inputs)\n\t\t\t.datepicker(options)\n\t\t\t.bind('changeDate', $.proxy(this.dateUpdated, this));\n\n\t\tthis.pickers = $.map(this.inputs, function(i){\n\t\t\treturn $(i).data('datepicker');\n\t\t});\n\t\tthis.updateDates();\n\t};\n\tDateRangePicker.prototype = {\n\t\tupdateDates: function(){\n\t\t\tthis.dates = $.map(this.pickers, function(i){\n\t\t\t\treturn i.getUTCDate();\n\t\t\t});\n\t\t\tthis.updateRanges();\n\t\t},\n\t\tupdateRanges: function(){\n\t\t\tvar range = $.map(this.dates, function(d){\n\t\t\t\treturn d.valueOf();\n\t\t\t});\n\t\t\t$.each(this.pickers, function(i, p){\n\t\t\t\tp.setRange(range);\n\t\t\t});\n\t\t},\n\t\tdateUpdated: function(e){\n\t\t\t// `this.updating` is a workaround for preventing infinite recursion\n\t\t\t// between `changeDate` triggering and `setUTCDate` calling.  Until\n\t\t\t// there is a better mechanism.\n\t\t\tif (this.updating)\n\t\t\t\treturn;\n\t\t\tthis.updating = true;\n\n\t\t\tvar dp = $(e.target).data('datepicker'),\n\t\t\t\tnew_date = dp.getUTCDate(),\n\t\t\t\ti = $.inArray(e.target, this.inputs),\n\t\t\t\tl = this.inputs.length;\n\t\t\tif (i === -1)\n\t\t\t\treturn;\n\n\t\t\t$.each(this.pickers, function(i, p){\n\t\t\t\tif (!p.getUTCDate())\n\t\t\t\t\tp.setUTCDate(new_date);\n\t\t\t});\n\n\t\t\tif (new_date < this.dates[i]){\n\t\t\t\t// Date being moved earlier/left\n\t\t\t\twhile (i >= 0 && new_date < this.dates[i]){\n\t\t\t\t\tthis.pickers[i--].setUTCDate(new_date);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (new_date > this.dates[i]){\n\t\t\t\t// Date being moved later/right\n\t\t\t\twhile (i < l && new_date > this.dates[i]){\n\t\t\t\t\tthis.pickers[i++].setUTCDate(new_date);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.updateDates();\n\n\t\t\tdelete this.updating;\n\t\t},\n\t\tremove: function(){\n\t\t\t$.map(this.pickers, function(p){ p.remove(); });\n\t\t\tdelete this.element.data().datepicker;\n\t\t}\n\t};\n\n\tfunction opts_from_el(el, prefix){\n\t\t// Derive options from element data-attrs\n\t\tvar data = $(el).data(),\n\t\t\tout = {}, inkey,\n\t\t\treplace = new RegExp('^' + prefix.toLowerCase() + '([A-Z])');\n\t\tprefix = new RegExp('^' + prefix.toLowerCase());\n\t\tfunction re_lower(_,a){\n\t\t\treturn a.toLowerCase();\n\t\t}\n\t\tfor (var key in data)\n\t\t\tif (prefix.test(key)){\n\t\t\t\tinkey = key.replace(replace, re_lower);\n\t\t\t\tout[inkey] = data[key];\n\t\t\t}\n\t\treturn out;\n\t}\n\n\tfunction opts_from_locale(lang){\n\t\t// Derive options from locale plugins\n\t\tvar out = {};\n\t\t// Check if \"de-DE\" style date is available, if not language should\n\t\t// fallback to 2 letter code eg \"de\"\n\t\tif (!dates[lang]){\n\t\t\tlang = lang.split('-')[0];\n\t\t\tif (!dates[lang])\n\t\t\t\treturn;\n\t\t}\n\t\tvar d = dates[lang];\n\t\t$.each(locale_opts, function(i,k){\n\t\t\tif (k in d)\n\t\t\t\tout[k] = d[k];\n\t\t});\n\t\treturn out;\n\t}\n\n\tvar old = $.fn.datepicker;\n\t$.fn.datepicker = function(option){\n\t\tvar args = Array.apply(null, arguments);\n\t\targs.shift();\n\t\tvar internal_return;\n\t\tthis.each(function(){\n\t\t\tvar $this = $(this),\n\t\t\t\tdata = $this.data('datepicker'),\n\t\t\t\toptions = typeof option === 'object' && option;\n\t\t\tif (!data){\n\t\t\t\tvar elopts = opts_from_el(this, 'date'),\n\t\t\t\t\t// Preliminary otions\n\t\t\t\t\txopts = $.extend({}, defaults, elopts, options),\n\t\t\t\t\tlocopts = opts_from_locale(xopts.language),\n\t\t\t\t\t// Options priority: js args, data-attrs, locales, defaults\n\t\t\t\t\topts = $.extend({}, defaults, locopts, elopts, options);\n\t\t\t\tif ($this.is('.input-daterange') || opts.inputs){\n\t\t\t\t\tvar ropts = {\n\t\t\t\t\t\tinputs: opts.inputs || $this.find('input').toArray()\n\t\t\t\t\t};\n\t\t\t\t\t$this.data('datepicker', (data = new DateRangePicker(this, $.extend(opts, ropts))));\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t$this.data('datepicker', (data = new Datepicker(this, opts)));\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (typeof option === 'string' && typeof data[option] === 'function'){\n\t\t\t\tinternal_return = data[option].apply(data, args);\n\t\t\t\tif (internal_return !== undefined)\n\t\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t\tif (internal_return !== undefined)\n\t\t\treturn internal_return;\n\t\telse\n\t\t\treturn this;\n\t};\n\n\tvar defaults = $.fn.datepicker.defaults = {\n\t\tautoclose: false,\n\t\tbeforeShowDay: $.noop,\n\t\tcalendarWeeks: false,\n\t\tclearBtn: false,\n\t\tdaysOfWeekDisabled: [],\n\t\tendDate: Infinity,\n\t\tforceParse: true,\n\t\tformat: 'mm/dd/yyyy',\n\t\tkeyboardNavigation: true,\n\t\tlanguage: 'en',\n\t\tminViewMode: 0,\n\t\tmultidate: false,\n\t\tmultidateSeparator: ',',\n\t\torientation: \"auto\",\n\t\trtl: false,\n\t\tstartDate: -Infinity,\n\t\tstartView: 0,\n\t\ttodayBtn: false,\n\t\ttodayHighlight: false,\n\t\tweekStart: 0\n\t};\n\tvar locale_opts = $.fn.datepicker.locale_opts = [\n\t\t'format',\n\t\t'rtl',\n\t\t'weekStart'\n\t];\n\t$.fn.datepicker.Constructor = Datepicker;\n\tvar dates = $.fn.datepicker.dates = {\n\t\ten: {\n\t\t\tdays: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\", \"Sunday\"],\n\t\t\tdaysShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"],\n\t\t\tdaysMin: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\", \"Su\"],\n\t\t\tmonths: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n\t\t\tmonthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n\t\t\ttoday: \"Today\",\n\t\t\tclear: \"Clear\"\n\t\t}\n\t};\n\n\tvar DPGlobal = {\n\t\tmodes: [\n\t\t\t{\n\t\t\t\tclsName: 'days',\n\t\t\t\tnavFnc: 'Month',\n\t\t\t\tnavStep: 1\n\t\t\t},\n\t\t\t{\n\t\t\t\tclsName: 'months',\n\t\t\t\tnavFnc: 'FullYear',\n\t\t\t\tnavStep: 1\n\t\t\t},\n\t\t\t{\n\t\t\t\tclsName: 'years',\n\t\t\t\tnavFnc: 'FullYear',\n\t\t\t\tnavStep: 10\n\t\t}],\n\t\tisLeapYear: function(year){\n\t\t\treturn (((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0));\n\t\t},\n\t\tgetDaysInMonth: function(year, month){\n\t\t\treturn [31, (DPGlobal.isLeapYear(year) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month];\n\t\t},\n\t\tvalidParts: /dd?|DD?|mm?|MM?|yy(?:yy)?/g,\n\t\tnonpunctuation: /[^ -\\/:-@\\[\\u3400-\\u9fff-`{-~\\t\\n\\r]+/g,\n\t\tparseFormat: function(format){\n\t\t\t// IE treats \\0 as a string end in inputs (truncating the value),\n\t\t\t// so it's a bad format delimiter, anyway\n\t\t\tvar separators = format.replace(this.validParts, '\\0').split('\\0'),\n\t\t\t\tparts = format.match(this.validParts);\n\t\t\tif (!separators || !separators.length || !parts || parts.length === 0){\n\t\t\t\tthrow new Error(\"Invalid date format.\");\n\t\t\t}\n\t\t\treturn {separators: separators, parts: parts};\n\t\t},\n\t\tparseDate: function(date, format, language){\n\t\t\tif (!date)\n\t\t\t\treturn undefined;\n\t\t\tif (date instanceof Date)\n\t\t\t\treturn date;\n\t\t\tif (typeof format === 'string')\n\t\t\t\tformat = DPGlobal.parseFormat(format);\n\t\t\tvar part_re = /([\\-+]\\d+)([dmwy])/,\n\t\t\t\tparts = date.match(/([\\-+]\\d+)([dmwy])/g),\n\t\t\t\tpart, dir, i;\n\t\t\tif (/^[\\-+]\\d+[dmwy]([\\s,]+[\\-+]\\d+[dmwy])*$/.test(date)){\n\t\t\t\tdate = new Date();\n\t\t\t\tfor (i=0; i < parts.length; i++){\n\t\t\t\t\tpart = part_re.exec(parts[i]);\n\t\t\t\t\tdir = parseInt(part[1]);\n\t\t\t\t\tswitch (part[2]){\n\t\t\t\t\t\tcase 'd':\n\t\t\t\t\t\t\tdate.setUTCDate(date.getUTCDate() + dir);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'm':\n\t\t\t\t\t\t\tdate = Datepicker.prototype.moveMonth.call(Datepicker.prototype, date, dir);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'w':\n\t\t\t\t\t\t\tdate.setUTCDate(date.getUTCDate() + dir * 7);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'y':\n\t\t\t\t\t\t\tdate = Datepicker.prototype.moveYear.call(Datepicker.prototype, date, dir);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn UTCDate(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), 0, 0, 0);\n\t\t\t}\n\t\t\tparts = date && date.match(this.nonpunctuation) || [];\n\t\t\tdate = new Date();\n\t\t\tvar parsed = {},\n\t\t\t\tsetters_order = ['yyyy', 'yy', 'M', 'MM', 'm', 'mm', 'd', 'dd'],\n\t\t\t\tsetters_map = {\n\t\t\t\t\tyyyy: function(d,v){\n\t\t\t\t\t\treturn d.setUTCFullYear(v);\n\t\t\t\t\t},\n\t\t\t\t\tyy: function(d,v){\n\t\t\t\t\t\treturn d.setUTCFullYear(2000+v);\n\t\t\t\t\t},\n\t\t\t\t\tm: function(d,v){\n\t\t\t\t\t\tif (isNaN(d))\n\t\t\t\t\t\t\treturn d;\n\t\t\t\t\t\tv -= 1;\n\t\t\t\t\t\twhile (v < 0) v += 12;\n\t\t\t\t\t\tv %= 12;\n\t\t\t\t\t\td.setUTCMonth(v);\n\t\t\t\t\t\twhile (d.getUTCMonth() !== v)\n\t\t\t\t\t\t\td.setUTCDate(d.getUTCDate()-1);\n\t\t\t\t\t\treturn d;\n\t\t\t\t\t},\n\t\t\t\t\td: function(d,v){\n\t\t\t\t\t\treturn d.setUTCDate(v);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tval, filtered;\n\t\t\tsetters_map['M'] = setters_map['MM'] = setters_map['mm'] = setters_map['m'];\n\t\t\tsetters_map['dd'] = setters_map['d'];\n\t\t\tdate = UTCDate(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);\n\t\t\tvar fparts = format.parts.slice();\n\t\t\t// Remove noop parts\n\t\t\tif (parts.length !== fparts.length){\n\t\t\t\tfparts = $(fparts).filter(function(i,p){\n\t\t\t\t\treturn $.inArray(p, setters_order) !== -1;\n\t\t\t\t}).toArray();\n\t\t\t}\n\t\t\t// Process remainder\n\t\t\tfunction match_part(){\n\t\t\t\tvar m = this.slice(0, parts[i].length),\n\t\t\t\t\tp = parts[i].slice(0, m.length);\n\t\t\t\treturn m === p;\n\t\t\t}\n\t\t\tif (parts.length === fparts.length){\n\t\t\t\tvar cnt;\n\t\t\t\tfor (i=0, cnt = fparts.length; i < cnt; i++){\n\t\t\t\t\tval = parseInt(parts[i], 10);\n\t\t\t\t\tpart = fparts[i];\n\t\t\t\t\tif (isNaN(val)){\n\t\t\t\t\t\tswitch (part){\n\t\t\t\t\t\t\tcase 'MM':\n\t\t\t\t\t\t\t\tfiltered = $(dates[language].months).filter(match_part);\n\t\t\t\t\t\t\t\tval = $.inArray(filtered[0], dates[language].months) + 1;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'M':\n\t\t\t\t\t\t\t\tfiltered = $(dates[language].monthsShort).filter(match_part);\n\t\t\t\t\t\t\t\tval = $.inArray(filtered[0], dates[language].monthsShort) + 1;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tparsed[part] = val;\n\t\t\t\t}\n\t\t\t\tvar _date, s;\n\t\t\t\tfor (i=0; i < setters_order.length; i++){\n\t\t\t\t\ts = setters_order[i];\n\t\t\t\t\tif (s in parsed && !isNaN(parsed[s])){\n\t\t\t\t\t\t_date = new Date(date);\n\t\t\t\t\t\tsetters_map[s](_date, parsed[s]);\n\t\t\t\t\t\tif (!isNaN(_date))\n\t\t\t\t\t\t\tdate = _date;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn date;\n\t\t},\n\t\tformatDate: function(date, format, language){\n\t\t\tif (!date)\n\t\t\t\treturn '';\n\t\t\tif (typeof format === 'string')\n\t\t\t\tformat = DPGlobal.parseFormat(format);\n\t\t\tvar val = {\n\t\t\t\td: date.getUTCDate(),\n\t\t\t\tD: dates[language].daysShort[date.getUTCDay()],\n\t\t\t\tDD: dates[language].days[date.getUTCDay()],\n\t\t\t\tm: date.getUTCMonth() + 1,\n\t\t\t\tM: dates[language].monthsShort[date.getUTCMonth()],\n\t\t\t\tMM: dates[language].months[date.getUTCMonth()],\n\t\t\t\tyy: date.getUTCFullYear().toString().substring(2),\n\t\t\t\tyyyy: date.getUTCFullYear()\n\t\t\t};\n\t\t\tval.dd = (val.d < 10 ? '0' : '') + val.d;\n\t\t\tval.mm = (val.m < 10 ? '0' : '') + val.m;\n\t\t\tdate = [];\n\t\t\tvar seps = $.extend([], format.separators);\n\t\t\tfor (var i=0, cnt = format.parts.length; i <= cnt; i++){\n\t\t\t\tif (seps.length)\n\t\t\t\t\tdate.push(seps.shift());\n\t\t\t\tdate.push(val[format.parts[i]]);\n\t\t\t}\n\t\t\treturn date.join('');\n\t\t},\n\t\theadTemplate: '<thead>'+\n\t\t\t\t\t\t\t'<tr>'+\n\t\t\t\t\t\t\t\t'<th class=\"prev\">&laquo;</th>'+\n\t\t\t\t\t\t\t\t'<th colspan=\"5\" class=\"datepicker-switch\"></th>'+\n\t\t\t\t\t\t\t\t'<th class=\"next\">&raquo;</th>'+\n\t\t\t\t\t\t\t'</tr>'+\n\t\t\t\t\t\t'</thead>',\n\t\tcontTemplate: '<tbody><tr><td colspan=\"7\"></td></tr></tbody>',\n\t\tfootTemplate: '<tfoot>'+\n\t\t\t\t\t\t\t'<tr>'+\n\t\t\t\t\t\t\t\t'<th colspan=\"7\" class=\"today\"></th>'+\n\t\t\t\t\t\t\t'</tr>'+\n\t\t\t\t\t\t\t'<tr>'+\n\t\t\t\t\t\t\t\t'<th colspan=\"7\" class=\"clear\"></th>'+\n\t\t\t\t\t\t\t'</tr>'+\n\t\t\t\t\t\t'</tfoot>'\n\t};\n\tDPGlobal.template = '<div class=\"datepicker\">'+\n\t\t\t\t\t\t\t'<div class=\"datepicker-days\">'+\n\t\t\t\t\t\t\t\t'<table class=\" table-condensed\">'+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\t'<tbody></tbody>'+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'</table>'+\n\t\t\t\t\t\t\t'</div>'+\n\t\t\t\t\t\t\t'<div class=\"datepicker-months\">'+\n\t\t\t\t\t\t\t\t'<table class=\"table-condensed\">'+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.contTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'</table>'+\n\t\t\t\t\t\t\t'</div>'+\n\t\t\t\t\t\t\t'<div class=\"datepicker-years\">'+\n\t\t\t\t\t\t\t\t'<table class=\"table-condensed\">'+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.contTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'</table>'+\n\t\t\t\t\t\t\t'</div>'+\n\t\t\t\t\t\t'</div>';\n\n\t$.fn.datepicker.DPGlobal = DPGlobal;\n\n\n\t/* DATEPICKER NO CONFLICT\n\t* =================== */\n\n\t$.fn.datepicker.noConflict = function(){\n\t\t$.fn.datepicker = old;\n\t\treturn this;\n\t};\n\n\n\t/* DATEPICKER DATA-API\n\t* ================== */\n\n\t$(document).on(\n\t\t'focus.datepicker.data-api click.datepicker.data-api',\n\t\t'[data-provide=\"datepicker\"]',\n\t\tfunction(e){\n\t\t\tvar $this = $(this);\n\t\t\tif ($this.data('datepicker'))\n\t\t\t\treturn;\n\t\t\te.preventDefault();\n\t\t\t// component click requires us to explicitly show it\n\t\t\t$this.datepicker('show');\n\t\t}\n\t);\n\t$(function(){\n\t\t$('[data-provide=\"datepicker-inline\"]').datepicker();\n\t});\n\n}(window.jQuery));"
  },
  {
    "path": "public/user/js/google-map.js",
    "content": "\nvar google;\n\nfunction init() {\n    // Basic options for a simple Google Map\n    // For more options see: https://developers.google.com/maps/documentation/javascript/reference#MapOptions\n    // var myLatlng = new google.maps.LatLng(40.71751, -73.990922);\n    var myLatlng = new google.maps.LatLng(40.69847032728747, -73.9514422416687);\n    // 39.399872\n    // -8.224454\n    \n    var mapOptions = {\n        // How zoomed in you want the map to start at (always required)\n        zoom: 7,\n\n        // The latitude and longitude to center the map (always required)\n        center: myLatlng,\n\n        // How you would like to style the map. \n        scrollwheel: false,\n        styles: [\n            {\n                \"featureType\": \"administrative.country\",\n                \"elementType\": \"geometry\",\n                \"stylers\": [\n                    {\n                        \"visibility\": \"simplified\"\n                    },\n                    {\n                        \"hue\": \"#ff0000\"\n                    }\n                ]\n            }\n        ]\n    };\n\n    \n\n    // Get the HTML DOM element that will contain your map \n    // We are using a div with id=\"map\" seen below in the <body>\n    var mapElement = document.getElementById('map');\n\n    // Create the Google Map using out element and options defined above\n    var map = new google.maps.Map(mapElement, mapOptions);\n    \n    var addresses = ['New York'];\n\n    for (var x = 0; x < addresses.length; x++) {\n        $.getJSON('http://maps.googleapis.com/maps/api/geocode/json?address='+addresses[x]+'&sensor=false', null, function (data) {\n            var p = data.results[0].geometry.location\n            var latlng = new google.maps.LatLng(p.lat, p.lng);\n            new google.maps.Marker({\n                position: latlng,\n                map: map,\n                icon: 'images/loc.png'\n            });\n\n        });\n    }\n    \n}\ngoogle.maps.event.addDomListener(window, 'load', init);"
  },
  {
    "path": "public/user/js/jquery.easing.1.3.js",
    "content": "/*\n * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/\n *\n * Uses the built in easing capabilities added In jQuery 1.1\n * to offer multiple easing options\n *\n * TERMS OF USE - jQuery Easing\n * \n * Open source under the BSD License. \n * \n * Copyright Ã‚Â© 2008 George McGinley Smith\n * All rights reserved.\n * \n * Redistribution and use in source and binary forms, with or without modification, \n * are permitted provided that the following conditions are met:\n * \n * Redistributions of source code must retain the above copyright notice, this list of \n * conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above copyright notice, this list \n * of conditions and the following disclaimer in the documentation and/or other materials \n * provided with the distribution.\n * \n * Neither the name of the author nor the names of contributors may be used to endorse \n * or promote products derived from this software without specific prior written permission.\n * \n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY \n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n *  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n *  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE\n *  GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED \n * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED \n * OF THE POSSIBILITY OF SUCH DAMAGE. \n *\n*/\n\n// t: current time, b: begInnIng value, c: change In value, d: duration\njQuery.easing['jswing'] = jQuery.easing['swing'];\n\njQuery.extend( jQuery.easing,\n{\n\tdef: 'easeOutQuad',\n\tswing: function (x, t, b, c, d) {\n\t\t//alert(jQuery.easing.default);\n\t\treturn jQuery.easing[jQuery.easing.def](x, t, b, c, d);\n\t},\n\teaseInQuad: function (x, t, b, c, d) {\n\t\treturn c*(t/=d)*t + b;\n\t},\n\teaseOutQuad: function (x, t, b, c, d) {\n\t\treturn -c *(t/=d)*(t-2) + b;\n\t},\n\teaseInOutQuad: function (x, t, b, c, d) {\n\t\tif ((t/=d/2) < 1) return c/2*t*t + b;\n\t\treturn -c/2 * ((--t)*(t-2) - 1) + b;\n\t},\n\teaseInCubic: function (x, t, b, c, d) {\n\t\treturn c*(t/=d)*t*t + b;\n\t},\n\teaseOutCubic: function (x, t, b, c, d) {\n\t\treturn c*((t=t/d-1)*t*t + 1) + b;\n\t},\n\teaseInOutCubic: function (x, t, b, c, d) {\n\t\tif ((t/=d/2) < 1) return c/2*t*t*t + b;\n\t\treturn c/2*((t-=2)*t*t + 2) + b;\n\t},\n\teaseInQuart: function (x, t, b, c, d) {\n\t\treturn c*(t/=d)*t*t*t + b;\n\t},\n\teaseOutQuart: function (x, t, b, c, d) {\n\t\treturn -c * ((t=t/d-1)*t*t*t - 1) + b;\n\t},\n\teaseInOutQuart: function (x, t, b, c, d) {\n\t\tif ((t/=d/2) < 1) return c/2*t*t*t*t + b;\n\t\treturn -c/2 * ((t-=2)*t*t*t - 2) + b;\n\t},\n\teaseInQuint: function (x, t, b, c, d) {\n\t\treturn c*(t/=d)*t*t*t*t + b;\n\t},\n\teaseOutQuint: function (x, t, b, c, d) {\n\t\treturn c*((t=t/d-1)*t*t*t*t + 1) + b;\n\t},\n\teaseInOutQuint: function (x, t, b, c, d) {\n\t\tif ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;\n\t\treturn c/2*((t-=2)*t*t*t*t + 2) + b;\n\t},\n\teaseInSine: function (x, t, b, c, d) {\n\t\treturn -c * Math.cos(t/d * (Math.PI/2)) + c + b;\n\t},\n\teaseOutSine: function (x, t, b, c, d) {\n\t\treturn c * Math.sin(t/d * (Math.PI/2)) + b;\n\t},\n\teaseInOutSine: function (x, t, b, c, d) {\n\t\treturn -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;\n\t},\n\teaseInExpo: function (x, t, b, c, d) {\n\t\treturn (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;\n\t},\n\teaseOutExpo: function (x, t, b, c, d) {\n\t\treturn (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;\n\t},\n\teaseInOutExpo: function (x, t, b, c, d) {\n\t\tif (t==0) return b;\n\t\tif (t==d) return b+c;\n\t\tif ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;\n\t\treturn c/2 * (-Math.pow(2, -10 * --t) + 2) + b;\n\t},\n\teaseInCirc: function (x, t, b, c, d) {\n\t\treturn -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;\n\t},\n\teaseOutCirc: function (x, t, b, c, d) {\n\t\treturn c * Math.sqrt(1 - (t=t/d-1)*t) + b;\n\t},\n\teaseInOutCirc: function (x, t, b, c, d) {\n\t\tif ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;\n\t\treturn c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;\n\t},\n\teaseInElastic: function (x, t, b, c, d) {\n\t\tvar s=1.70158;var p=0;var a=c;\n\t\tif (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;\n\t\tif (a < Math.abs(c)) { a=c; var s=p/4; }\n\t\telse var s = p/(2*Math.PI) * Math.asin (c/a);\n\t\treturn -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;\n\t},\n\teaseOutElastic: function (x, t, b, c, d) {\n\t\tvar s=1.70158;var p=0;var a=c;\n\t\tif (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;\n\t\tif (a < Math.abs(c)) { a=c; var s=p/4; }\n\t\telse var s = p/(2*Math.PI) * Math.asin (c/a);\n\t\treturn a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;\n\t},\n\teaseInOutElastic: function (x, t, b, c, d) {\n\t\tvar s=1.70158;var p=0;var a=c;\n\t\tif (t==0) return b;  if ((t/=d/2)==2) return b+c;  if (!p) p=d*(.3*1.5);\n\t\tif (a < Math.abs(c)) { a=c; var s=p/4; }\n\t\telse var s = p/(2*Math.PI) * Math.asin (c/a);\n\t\tif (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;\n\t\treturn a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;\n\t},\n\teaseInBack: function (x, t, b, c, d, s) {\n\t\tif (s == undefined) s = 1.70158;\n\t\treturn c*(t/=d)*t*((s+1)*t - s) + b;\n\t},\n\teaseOutBack: function (x, t, b, c, d, s) {\n\t\tif (s == undefined) s = 1.70158;\n\t\treturn c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;\n\t},\n\teaseInOutBack: function (x, t, b, c, d, s) {\n\t\tif (s == undefined) s = 1.70158; \n\t\tif ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;\n\t\treturn c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;\n\t},\n\teaseInBounce: function (x, t, b, c, d) {\n\t\treturn c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b;\n\t},\n\teaseOutBounce: function (x, t, b, c, d) {\n\t\tif ((t/=d) < (1/2.75)) {\n\t\t\treturn c*(7.5625*t*t) + b;\n\t\t} else if (t < (2/2.75)) {\n\t\t\treturn c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;\n\t\t} else if (t < (2.5/2.75)) {\n\t\t\treturn c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;\n\t\t} else {\n\t\t\treturn c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;\n\t\t}\n\t},\n\teaseInOutBounce: function (x, t, b, c, d) {\n\t\tif (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b;\n\t\treturn jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b;\n\t}\n});\n\n/*\n *\n * TERMS OF USE - EASING EQUATIONS\n * \n * Open source under the BSD License. \n * \n * Copyright Ã‚Â© 2001 Robert Penner\n * All rights reserved.\n * \n * Redistribution and use in source and binary forms, with or without modification, \n * are permitted provided that the following conditions are met:\n * \n * Redistributions of source code must retain the above copyright notice, this list of \n * conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above copyright notice, this list \n * of conditions and the following disclaimer in the documentation and/or other materials \n * provided with the distribution.\n * \n * Neither the name of the author nor the names of contributors may be used to endorse \n * or promote products derived from this software without specific prior written permission.\n * \n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY \n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n *  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n *  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE\n *  GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED \n * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED \n * OF THE POSSIBILITY OF SUCH DAMAGE. \n *\n */"
  },
  {
    "path": "public/user/js/main.js",
    "content": "/* =================================\n------------------------------------\n\tDivisima | eCommerce Template\n\tVersion: 1.0\n ------------------------------------\n ====================================*/\n\n\n'use strict';\n\n\n$(window).on('load', function() {\n\t/*------------------\n\t\tPreloder\n\t--------------------*/\n\t$(\".loader\").fadeOut();\n\t$(\"#preloder\").delay(400).fadeOut(\"slow\");\n\n});\n\n(function($) {\n\t/*------------------\n\t\tNavigation\n\t--------------------*/\n\t$('.main-menu').slicknav({\n\t\tprependTo:'.main-navbar .container',\n\t\tclosedSymbol: '<i class=\"flaticon-right-arrow\"></i>',\n\t\topenedSymbol: '<i class=\"flaticon-down-arrow\"></i>'\n\t});\n\n\n\t/*------------------\n\t\tScrollBar\n\t--------------------*/\n\t$(\".cart-table-warp, .product-thumbs\").niceScroll({\n\t\tcursorborder:\"\",\n\t\tcursorcolor:\"#afafaf\",\n\t\tboxzoom:false\n\t});\n\n\n\t/*------------------\n\t\tCategory menu\n\t--------------------*/\n\t$('.category-menu > li').hover( function(e) {\n\t\t$(this).addClass('active');\n\t\te.preventDefault();\n\t});\n\t$('.category-menu').mouseleave( function(e) {\n\t\t$('.category-menu li').removeClass('active');\n\t\te.preventDefault();\n\t});\n\n\n\t/*------------------\n\t\tBackground Set\n\t--------------------*/\n\t$('.set-bg').each(function() {\n\t\tvar bg = $(this).data('setbg');\n\t\t$(this).css('background-image', 'url(' + bg + ')');\n\t});\n\n\n\n\t/*------------------\n\t\tHero Slider\n\t--------------------*/\n\tvar hero_s = $(\".hero-slider\");\n    hero_s.owlCarousel({\n        loop: true,\n        margin: 0,\n        nav: true,\n        items: 1,\n        dots: true,\n        animateOut: 'fadeOut',\n    \tanimateIn: 'fadeIn',\n        navText: ['<i class=\"flaticon-left-arrow-1\"></i>', '<i class=\"flaticon-right-arrow-1\"></i>'],\n        smartSpeed: 1200,\n        autoHeight: false,\n        autoplay: true,\n        onInitialized: function() {\n        \tvar a = this.items().length;\n            $(\"#snh-1\").html(\"<span>1</span><span>\" + a + \"</span>\");\n        }\n    }).on(\"changed.owl.carousel\", function(a) {\n        var b = --a.item.index, a = a.item.count;\n    \t$(\"#snh-1\").html(\"<span> \"+ (1 > b ? b + a : b > a ? b - a : b) + \"</span><span>\" + a + \"</span>\");\n\n    });\n\n\thero_s.append('<div class=\"slider-nav-warp\"><div class=\"slider-nav\"></div></div>');\n\t$(\".hero-slider .owl-nav, .hero-slider .owl-dots\").appendTo('.slider-nav');\n\n\n\n\t/*------------------\n\t\tBrands Slider\n\t--------------------*/\n\t$('.product-slider').owlCarousel({\n\t\tloop: true,\n\t\tnav: true,\n\t\tdots: false,\n\t\tmargin : 30,\n\t\tautoplay: true,\n\t\tnavText: ['<i class=\"flaticon-left-arrow-1\"></i>', '<i class=\"flaticon-right-arrow-1\"></i>'],\n\t\tresponsive : {\n\t\t\t0 : {\n\t\t\t\titems: 1,\n\t\t\t},\n\t\t\t480 : {\n\t\t\t\titems: 2,\n\t\t\t},\n\t\t\t768 : {\n\t\t\t\titems: 3,\n\t\t\t},\n\t\t\t1200 : {\n\t\t\t\titems: 4,\n\t\t\t}\n\t\t}\n\t});\n\n\n\t/*------------------\n\t\tPopular Services\n\t--------------------*/\n\t$('.popular-services-slider').owlCarousel({\n\t\tloop: true,\n\t\tdots: false,\n\t\tmargin : 40,\n\t\tautoplay: true,\n\t\tnav:true,\n\t\tnavText:['<i class=\"fa fa-angle-left\"></i>','<i class=\"fa fa-angle-right\"></i>'],\n\t\tresponsive : {\n\t\t\t0 : {\n\t\t\t\titems: 1,\n\t\t\t},\n\t\t\t768 : {\n\t\t\t\titems: 2,\n\t\t\t},\n\t\t\t991: {\n\t\t\t\titems: 3\n\t\t\t}\n\t\t}\n\t});\n\n\n\t/*------------------\n\t\tAccordions\n\t--------------------*/\n\t$('.panel-link').on('click', function (e) {\n\t\t$('.panel-link').removeClass('active');\n\t\tvar $this = $(this);\n\t\tif (!$this.hasClass('active')) {\n\t\t\t$this.addClass('active');\n\t\t}\n\t\te.preventDefault();\n\t});\n\n\n\t/*-------------------\n\t\tRange Slider\n\t--------------------- */\n\tvar rangeSlider = $(\".price-range\"),\n\t\tminamount = $(\"#minamount\"),\n\t\tmaxamount = $(\"#maxamount\"),\n\t\tminPrice = rangeSlider.data('min'),\n\t\tmaxPrice = rangeSlider.data('max');\n\trangeSlider.slider({\n\t\trange: true,\n\t\tmin: minPrice,\n\t\tmax: maxPrice,\n\t\tvalues: [minPrice, maxPrice],\n\t\tslide: function (event, ui) {\n\t\t\tminamount.val('$' + ui.values[0]);\n\t\t\tmaxamount.val('$' + ui.values[1]);\n\t\t}\n\t});\n\tminamount.val('$' + rangeSlider.slider(\"values\", 0));\n\tmaxamount.val('$' + rangeSlider.slider(\"values\", 1));\n\n\n\t/*-------------------\n\t\tQuantity change\n\t--------------------- */\n    var proQty = $('.pro-qty');\n\tproQty.prepend('<span class=\"dec qtybtn\">-</span>');\n\tproQty.append('<span class=\"inc qtybtn\">+</span>');\n\tproQty.on('click', '.qtybtn', function () {\n\t\tvar $button = $(this);\n\t\tvar oldValue = $button.parent().find('input').val();\n\t\tif ($button.hasClass('inc')) {\n\t\t\tvar newVal = parseFloat(oldValue) + 1;\n\t\t} else {\n\t\t\t// Don't allow decrementing below zero\n\t\t\tif (oldValue > 0) {\n\t\t\t\tvar newVal = parseFloat(oldValue) - 1;\n\t\t\t} else {\n\t\t\t\tnewVal = 0;\n\t\t\t}\n\t\t}\n\t\t$button.parent().find('input').val(newVal);\n\t});\n\n\n\n\t/*------------------\n\t\tSingle Product\n\t--------------------*/\n\t$('.product-thumbs-track > .pt').on('click', function(){\n\t\t$('.product-thumbs-track .pt').removeClass('active');\n\t\t$(this).addClass('active');\n\t\tvar imgurl = $(this).data('imgbigurl');\n\t\tvar bigImg = $('.product-big-img').attr('src');\n\t\tif(imgurl != bigImg) {\n\t\t\t$('.product-big-img').attr({src: imgurl});\n\t\t\t$('.zoomImg').attr({src: imgurl});\n\t\t}\n\t});\n\n\n\t$('.product-pic-zoom').zoom();\n\n\n\n})(jQuery);\n"
  },
  {
    "path": "public/user/js/map.js",
    "content": "function initialize() {\n\tvar myOptions = {\n\t\tzoom: 15,\n\t\tcenter: new google.maps.LatLng(40.751412, -73.966302), //change the coordinates\n\t\tmapTypeId: google.maps.MapTypeId.ROADMAP,\n\t\tscrollwheel: false,\n\t\tmapTypeControl: false,\n\t\tzoomControl: false,\n\t\tstreetViewControl: false\n\t}\n\tvar img_icon = 'img/map-marker.png';\n\tvar map = new google.maps.Map(document.getElementById(\"map-canvas\"), myOptions);\n\tvar marker = new google.maps.Marker({\n\t\tmap: map,\n\t\ticon: img_icon,\n\t\tposition: new google.maps.LatLng(40.747508, -73.966302) //change the coordinates\n\t});\n\tgoogle.maps.event.addListener(marker, \"click\", function() {\n\t\tinfowindow.open(map, marker);\n\t});\n}\ngoogle.maps.event.addDomListener(window, 'load', initialize);\n"
  },
  {
    "path": "public/user/js/range.js",
    "content": "(function() {\n\n  var parent = document.querySelector(\".range-slider\");\n  if(!parent) return;\n\n  var\n    rangeS = parent.querySelectorAll(\"input[type=range]\"),\n    numberS = parent.querySelectorAll(\"input[type=number]\");\n\n  rangeS.forEach(function(el) {\n    el.oninput = function() {\n      var slide1 = parseFloat(rangeS[0].value),\n        \tslide2 = parseFloat(rangeS[1].value);\n\n      if (slide1 > slide2) {\n\t\t\t\t[slide1, slide2] = [slide2, slide1];\n        // var tmp = slide2;\n        // slide2 = slide1;\n        // slide1 = tmp;\n      }\n\n      numberS[0].value = slide1;\n      numberS[1].value = slide2;\n    }\n  });\n\n  numberS.forEach(function(el) {\n    el.oninput = function() {\n\t\t\tvar number1 = parseFloat(numberS[0].value),\n\t\t\t\t\tnumber2 = parseFloat(numberS[1].value);\n\t\t\t\n      if (number1 > number2) {\n        var tmp = number1;\n        numberS[0].value = number2;\n        numberS[1].value = tmp;\n      }\n\n      rangeS[0].value = number1;\n      rangeS[1].value = number2;\n\n    }\n  });\n\n})();"
  },
  {
    "path": "resources/js/app.js",
    "content": "/**\n * First we will load all of this project's JavaScript dependencies which\n * includes Vue and other libraries. It is a great starting point when\n * building robust, powerful web applications using Vue and Laravel.\n */\n\nrequire('./bootstrap');\n\nwindow.Vue = require('vue');\n\n/**\n * The following block of code may be used to automatically register your\n * Vue components. It will recursively scan this directory for the Vue\n * components and automatically register them with their \"basename\".\n *\n * Eg. ./components/ExampleComponent.vue -> <example-component></example-component>\n */\n\n// const files = require.context('./', true, /\\.vue$/i)\n// files.keys().map(key => Vue.component(key.split('/').pop().split('.')[0], files(key).default))\n\nVue.component('example-component', require('./components/ExampleComponent.vue').default);\n\n/**\n * Next, we will create a fresh Vue application instance and attach it to\n * the page. Then, you may begin adding components to this application\n * or customize the JavaScript scaffolding to fit your unique needs.\n */\n\nconst app = new Vue({\n    el: '#app',\n});\n"
  },
  {
    "path": "resources/js/bootstrap.js",
    "content": "window._ = require('lodash');\n\n/**\n * We'll load jQuery and the Bootstrap jQuery plugin which provides support\n * for JavaScript based Bootstrap features such as modals and tabs. This\n * code may be modified to fit the specific needs of your application.\n */\n\ntry {\n    window.Popper = require('popper.js').default;\n    window.$ = window.jQuery = require('jquery');\n\n    require('bootstrap');\n} catch (e) {}\n\n/**\n * We'll load the axios HTTP library which allows us to easily issue requests\n * to our Laravel back-end. This library automatically handles sending the\n * CSRF token as a header based on the value of the \"XSRF\" token cookie.\n */\n\nwindow.axios = require('axios');\n\nwindow.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';\n\n/**\n * Echo exposes an expressive API for subscribing to channels and listening\n * for events that are broadcast by Laravel. Echo and event broadcasting\n * allows your team to easily build robust real-time web applications.\n */\n\n// import Echo from 'laravel-echo';\n\n// window.Pusher = require('pusher-js');\n\n// window.Echo = new Echo({\n//     broadcaster: 'pusher',\n//     key: process.env.MIX_PUSHER_APP_KEY,\n//     cluster: process.env.MIX_PUSHER_APP_CLUSTER,\n//     encrypted: true\n// });\n"
  },
  {
    "path": "resources/js/components/ExampleComponent.vue",
    "content": "<template>\n    <div class=\"container\">\n        <div class=\"row justify-content-center\">\n            <div class=\"col-md-8\">\n                <div class=\"card\">\n                    <div class=\"card-header\">Example Component</div>\n\n                    <div class=\"card-body\">\n                        I'm an example component.\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</template>\n\n<script>\n    export default {\n        mounted() {\n            console.log('Component mounted.')\n        }\n    }\n</script>\n"
  },
  {
    "path": "resources/lang/en/auth.php",
    "content": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Authentication Language Lines\n    |--------------------------------------------------------------------------\n    |\n    | The following language lines are used during authentication for various\n    | messages that we need to display to the user. You are free to modify\n    | these language lines according to your application's requirements.\n    |\n    */\n\n    'failed' => 'These credentials do not match our records.',\n    'throttle' => 'Too many login attempts. Please try again in :seconds seconds.',\n\n];\n"
  },
  {
    "path": "resources/lang/en/pagination.php",
    "content": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Pagination Language Lines\n    |--------------------------------------------------------------------------\n    |\n    | The following language lines are used by the paginator library to build\n    | the simple pagination links. You are free to change them to anything\n    | you want to customize your views to better match your application.\n    |\n    */\n\n    'previous' => '&laquo; Previous',\n    'next' => 'Next &raquo;',\n\n];\n"
  },
  {
    "path": "resources/lang/en/passwords.php",
    "content": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Password Reset Language Lines\n    |--------------------------------------------------------------------------\n    |\n    | The following language lines are the default lines which match reasons\n    | that are given by the password broker for a password update attempt\n    | has failed, such as for an invalid token or invalid new password.\n    |\n    */\n\n    'reset' => 'Your password has been reset!',\n    'sent' => 'We have e-mailed your password reset link!',\n    'token' => 'This password reset token is invalid.',\n    'user' => \"We can't find a user with that e-mail address.\",\n    'throttled' => 'Please wait before retrying.',\n\n];\n"
  },
  {
    "path": "resources/lang/en/validation.php",
    "content": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Validation Language Lines\n    |--------------------------------------------------------------------------\n    |\n    | The following language lines contain the default error messages used by\n    | the validator class. Some of these rules have multiple versions such\n    | as the size rules. Feel free to tweak each of these messages here.\n    |\n    */\n\n    'accepted' => 'The :attribute must be accepted.',\n    'active_url' => 'The :attribute is not a valid URL.',\n    'after' => 'The :attribute must be a date after :date.',\n    'after_or_equal' => 'The :attribute must be a date after or equal to :date.',\n    'alpha' => 'The :attribute may only contain letters.',\n    'alpha_dash' => 'The :attribute may only contain letters, numbers, dashes and underscores.',\n    'alpha_num' => 'The :attribute may only contain letters and numbers.',\n    'array' => 'The :attribute must be an array.',\n    'before' => 'The :attribute must be a date before :date.',\n    'before_or_equal' => 'The :attribute must be a date before or equal to :date.',\n    'between' => [\n        'numeric' => 'The :attribute must be between :min and :max.',\n        'file' => 'The :attribute must be between :min and :max kilobytes.',\n        'string' => 'The :attribute must be between :min and :max characters.',\n        'array' => 'The :attribute must have between :min and :max items.',\n    ],\n    'boolean' => 'The :attribute field must be true or false.',\n    'confirmed' => 'The :attribute confirmation does not match.',\n    'date' => 'The :attribute is not a valid date.',\n    'date_equals' => 'The :attribute must be a date equal to :date.',\n    'date_format' => 'The :attribute does not match the format :format.',\n    'different' => 'The :attribute and :other must be different.',\n    'digits' => 'The :attribute must be :digits digits.',\n    'digits_between' => 'The :attribute must be between :min and :max digits.',\n    'dimensions' => 'The :attribute has invalid image dimensions.',\n    'distinct' => 'The :attribute field has a duplicate value.',\n    'email' => 'The :attribute must be a valid email address.',\n    'ends_with' => 'The :attribute must end with one of the following: :values',\n    'exists' => 'The selected :attribute is invalid.',\n    'file' => 'The :attribute must be a file.',\n    'filled' => 'The :attribute field must have a value.',\n    'gt' => [\n        'numeric' => 'The :attribute must be greater than :value.',\n        'file' => 'The :attribute must be greater than :value kilobytes.',\n        'string' => 'The :attribute must be greater than :value characters.',\n        'array' => 'The :attribute must have more than :value items.',\n    ],\n    'gte' => [\n        'numeric' => 'The :attribute must be greater than or equal :value.',\n        'file' => 'The :attribute must be greater than or equal :value kilobytes.',\n        'string' => 'The :attribute must be greater than or equal :value characters.',\n        'array' => 'The :attribute must have :value items or more.',\n    ],\n    'image' => 'The :attribute must be an image.',\n    'in' => 'The selected :attribute is invalid.',\n    'in_array' => 'The :attribute field does not exist in :other.',\n    'integer' => 'The :attribute must be an integer.',\n    'ip' => 'The :attribute must be a valid IP address.',\n    'ipv4' => 'The :attribute must be a valid IPv4 address.',\n    'ipv6' => 'The :attribute must be a valid IPv6 address.',\n    'json' => 'The :attribute must be a valid JSON string.',\n    'lt' => [\n        'numeric' => 'The :attribute must be less than :value.',\n        'file' => 'The :attribute must be less than :value kilobytes.',\n        'string' => 'The :attribute must be less than :value characters.',\n        'array' => 'The :attribute must have less than :value items.',\n    ],\n    'lte' => [\n        'numeric' => 'The :attribute must be less than or equal :value.',\n        'file' => 'The :attribute must be less than or equal :value kilobytes.',\n        'string' => 'The :attribute must be less than or equal :value characters.',\n        'array' => 'The :attribute must not have more than :value items.',\n    ],\n    'max' => [\n        'numeric' => 'The :attribute may not be greater than :max.',\n        'file' => 'The :attribute may not be greater than :max kilobytes.',\n        'string' => 'The :attribute may not be greater than :max characters.',\n        'array' => 'The :attribute may not have more than :max items.',\n    ],\n    'mimes' => 'The :attribute must be a file of type: :values.',\n    'mimetypes' => 'The :attribute must be a file of type: :values.',\n    'min' => [\n        'numeric' => 'The :attribute must be at least :min.',\n        'file' => 'The :attribute must be at least :min kilobytes.',\n        'string' => 'The :attribute must be at least :min characters.',\n        'array' => 'The :attribute must have at least :min items.',\n    ],\n    'not_in' => 'The selected :attribute is invalid.',\n    'not_regex' => 'The :attribute format is invalid.',\n    'numeric' => 'The :attribute must be a number.',\n    'password' => 'The password is incorrect.',\n    'present' => 'The :attribute field must be present.',\n    'regex' => 'The :attribute format is invalid.',\n    'required' => 'The :attribute field is required.',\n    'required_if' => 'The :attribute field is required when :other is :value.',\n    'required_unless' => 'The :attribute field is required unless :other is in :values.',\n    'required_with' => 'The :attribute field is required when :values is present.',\n    'required_with_all' => 'The :attribute field is required when :values are present.',\n    'required_without' => 'The :attribute field is required when :values is not present.',\n    'required_without_all' => 'The :attribute field is required when none of :values are present.',\n    'same' => 'The :attribute and :other must match.',\n    'size' => [\n        'numeric' => 'The :attribute must be :size.',\n        'file' => 'The :attribute must be :size kilobytes.',\n        'string' => 'The :attribute must be :size characters.',\n        'array' => 'The :attribute must contain :size items.',\n    ],\n    'starts_with' => 'The :attribute must start with one of the following: :values',\n    'string' => 'The :attribute must be a string.',\n    'timezone' => 'The :attribute must be a valid zone.',\n    'unique' => 'The :attribute has already been taken.',\n    'uploaded' => 'The :attribute failed to upload.',\n    'url' => 'The :attribute format is invalid.',\n    'uuid' => 'The :attribute must be a valid UUID.',\n\n    /*\n    |--------------------------------------------------------------------------\n    | Custom Validation Language Lines\n    |--------------------------------------------------------------------------\n    |\n    | Here you may specify custom validation messages for attributes using the\n    | convention \"attribute.rule\" to name the lines. This makes it quick to\n    | specify a specific custom language line for a given attribute rule.\n    |\n    */\n\n    'custom' => [\n        'attribute-name' => [\n            'rule-name' => 'custom-message',\n        ],\n    ],\n\n    /*\n    |--------------------------------------------------------------------------\n    | Custom Validation Attributes\n    |--------------------------------------------------------------------------\n    |\n    | The following language lines are used to swap our attribute placeholder\n    | with something more reader friendly such as \"E-Mail Address\" instead\n    | of \"email\". This simply helps us make our message more expressive.\n    |\n    */\n\n    'attributes' => [],\n\n];\n"
  },
  {
    "path": "resources/sass/_variables.scss",
    "content": "// Body\n$body-bg: #f8fafc;\n\n// Typography\n$font-family-sans-serif: 'Nunito', sans-serif;\n$font-size-base: 0.9rem;\n$line-height-base: 1.6;\n\n// Colors\n$blue: #3490dc;\n$indigo: #6574cd;\n$purple: #9561e2;\n$pink: #f66d9b;\n$red: #e3342f;\n$orange: #f6993f;\n$yellow: #ffed4a;\n$green: #38c172;\n$teal: #4dc0b5;\n$cyan: #6cb2eb;\n"
  },
  {
    "path": "resources/sass/app.scss",
    "content": "// Fonts\n@import url('https://fonts.googleapis.com/css?family=Nunito');\n\n// Variables\n@import 'variables';\n\n// Bootstrap\n@import '~bootstrap/scss/bootstrap';\n"
  },
  {
    "path": "resources/views/admin/akun/create.blade.php",
    "content": "@extends('template_backend.home')\n@section('halaman', 'Tambah Akun')\n@section('content')\n  @if (count($errors)>0)\n    @foreach ($errors->all() as $error)\n      <div class=\"alert alert-danger\" role=\"alert\">\n        {{ $error }}\n      </div>\n    @endforeach\n  @endif\n\n  @if (Session::has('success'))\n    <div class=\"alert alert-success\" role=\"alert\">\n      {{ Session('success') }}\n    </div>\n  @endif\n\n  <div class=\"col-lg-12 col-md-12 col-sm-12 col-xs-12\">\n    <div class=\"welcome-wrapper shadow-reset res-mg-t mg-b-30\">\n      <form action=\"{{ route('akun.store') }}\" class=\"bg-white shadow-sm p-3\" method=\"post\" enctype=\"multipart/form-data\">\n        @csrf\n        <div class=\"form-group\">\n          <label for=\"name\">Name</label>\n          <input class=\"form-control\" placeholder=\"Full Name\" type=\"text\" name=\"name\" id=\"name\" autocomplete=\"off\">\n        </div>\n        <div class=\"form-group\">\n          <label for=\"name\">Roles</label><br>\n          <input type=\"radio\" name=\"role\" id=\"admin\" value=\"admin\">\n          <label for=\"admin\">Admin</label>&nbsp;&nbsp;&nbsp;\n          <input type=\"radio\" name=\"role\" id=\"member\" value=\"member\">\n          <label for=\"member\">Member</label>\n        </div>\n        <div class=\"form-group\">\n          <label for=\"exampleInputFile\">Foto Profil</label>\n          <div class=\"file-upload-inner ts-forms\">\n              <div class=\"input prepend-big-btn\">\n                  <label class=\"icon-right\" for=\"prepend-big-btn\">\n                      <i class=\"fa fa-download\"></i>\n                  </label>\n                  <div class=\"file-button\">\n                      Browse\n                      <input type=\"file\" name=\"gambar\" onchange=\"document.getElementById('prepend-big-btn').value = this.value;\">\n                  </div>\n                  <input type=\"text\" id=\"prepend-big-btn\" name=\"gambar\" placeholder=\"no file selected\">\n              </div>\n          </div>\n        </div>\n        <div class=\"form-group\">\n          <label for=\"email\">Email</label>\n          <input class=\"form-control\" placeholder=\"Email@gamil.com\" type=\"email\" name=\"email\" id=\"email\" autocomplete=\"off\">\n        </div>\n        <div class=\"form-group\">\n          <label for=\"password\">Password</label>\n          <input class=\"form-control\" placeholder=\"Password\" type=\"password\" name=\"password\" id=\"password\" autocomplete=\"off\">\n        </div>\n\n        <div class=\"form-group\">\n          <button class=\"btn btn-primary btn-block\">Simpan Akun</button>\n        </div>\n      </form>\n    </div>\n  </div>\n@endsection\n"
  },
  {
    "path": "resources/views/admin/akun/edit.blade.php",
    "content": "@extends('template_backend.home')\n@section('halaman', 'Edit Akun')\n@section('content')\n  @if (count($errors)>0)\n    @foreach ($errors->all() as $error)\n      <div class=\"alert alert-danger\" role=\"alert\">\n        {{ $error }}\n      </div>\n    @endforeach\n  @endif\n\n  @if (Session::has('success'))\n    <div class=\"alert alert-success\" role=\"alert\">\n      {{ Session('success') }}\n    </div>\n  @endif\n\n  <div class=\"col-lg-12 col-md-12 col-sm-12 col-xs-12\">\n    <div class=\"welcome-wrapper shadow-reset res-mg-t mg-b-30\">\n      <form action=\"{{ route('akun.update', $user->id) }}\" class=\"bg-white shadow-sm p-3\" method=\"post\" enctype=\"multipart/form-data\">\n        @csrf\n        @method('patch')\n        <div class=\"form-group\">\n          <label>Username</label>\n          <input type=\"text\" class=\"form-control\" name=\"name\" value=\"{{ $user->name }}\" autocomplete=\"off\">\n        </div>\n        <div class=\"form-group\">\n          <label>Email</label>\n          <input type=\"text\" value=\"{{ $user->email }}\" autocomplete=\"off\" name=\"email\" class=\"form-control\">\n        </div>\n        @if ($user->pekerjaan)\n          <div class=\"form-group\">\n            <label>Pekerjaan</label>\n            <input type=\"text\" value=\"{{ $user->pekerjaan }}\" autocomplete=\"off\" name=\"pekerjaan\" class=\"form-control\">\n          </div>\n        @else\n          <div class=\"form-group\">\n            <label>Pekerjaan</label>\n            <input type=\"text\" placeholder=\"Pekerjaan\" autocomplete=\"off\" name=\"pekerjaan\" class=\"form-control\">\n          </div>\n        @endif\n        <div class=\"form-group\">\n          <label for=\"name\">Roles</label><br>\n          <input type=\"radio\" name=\"role\" id=\"admin\" value=\"admin\">\n          <label for=\"admin\">Admin</label>&nbsp;&nbsp;&nbsp;\n          <input type=\"radio\" name=\"role\" id=\"member\" value=\"member\">\n          <label for=\"member\">Member</label>\n        </div>\n        @if ($user->tanggal_lahir)\n          <div class=\"form-group data-custon-pick\" id=\"data_3\">\n            <label><h6>Tanggal Lahir</h6></label>\n            <div class=\"input-group date\">\n              <span class=\"input-group-addon\"><i class=\"fa fa-calendar\"></i></span>\n              <input type=\"text\" name=\"tgl_lahir\" class=\"form-control\" value=\"{{ date('m/d/Y', strtotime($user->tanggal_lahir)) }}\">\n            </div>\n          </div>\n        @else\n          <div class=\"form-group data-custon-pick\" id=\"data_3\">\n            <label><h6>Tanggal Lahir</h6></label>\n            <div class=\"input-group date\">\n              <span class=\"input-group-addon\"><i class=\"fa fa-calendar\"></i></span>\n              <input type=\"text\" name=\"tgl_lahir\" class=\"form-control\" value=\"22/11/2000\">\n            </div>\n          </div>\n        @endif\n        <div class=\"form-group\">\n          <div class=\"row\">\n            <div class=\"col-md-12\">\n              @if($user->address)\n                <div class=\"form-group\">\n                  <label>Alamat</label>\n                  <input type=\"text\" class=\"form-control\" name=\"address\" value=\"{{ $user->address }}\">\n                </div>\n              @else\n                <div class=\"form-group\">\n                  <label>Alamat</label>\n                  <input type=\"text\" class=\"form-control\" name=\"address\" placeholder=\"Alamat\">\n                </div>\n              @endif\n            </div>\n            <div class=\"col-md-6\">\n              @if($user->kelurahan)\n                <div class=\"form-group\">\n                  <label>Kelurahan</label>\n                  <input type=\"text\" class=\"form-control\" name=\"kelurahan\" value=\"{{ $user->kelurahan }}\">\n                </div>\n              @else\n                <div class=\"form-group\">\n                  <label>Kelurahan</label>\n                  <input type=\"text\" class=\"form-control\" name=\"kelurahan\" placeholder=\"Kelurahan\">\n                </div>\n              @endif\n              @if($user->kabupaten)\n                <div class=\"form-group\">\n                  <label>Kabupaten</label>\n                  <input type=\"text\" class=\"form-control\" name=\"kabupaten\" value=\"{{ $user->kabupaten }}\">\n                </div>\n              @else\n                <div class=\"form-group\">\n                  <label>Kabupaten</label>\n                  <input type=\"text\" class=\"form-control\" name=\"kabupaten\" placeholder=\"Kabupaten\">\n                </div>\n              @endif\n            </div>\n            <div class=\"col-md-6\">\n              @if($user->kecamatan)\n                <div class=\"form-group\">\n                  <label>Kecamatan</label>\n                  <input type=\"text\" class=\"form-control\" name=\"kecamatan\" value=\"{{ $user->kecamatan }}\">\n                </div>\n              @else\n                <div class=\"form-group\">\n                  <label>Kecamatan</label>\n                  <input type=\"text\" class=\"form-control\" name=\"kecamatan\" placeholder=\"Kecamatan\">\n                </div>\n              @endif\n              @if($user->provinsi)\n                <div class=\"form-group\">\n                  <label>Provinsi</label>\n                  <input type=\"text\" class=\"form-control\" name=\"provinsi\" value=\"{{ $user->provinsi }}\">\n                </div>\n              @else\n                <div class=\"form-group\">\n                  <label>Provinsi</label>\n                  <input type=\"text\" class=\"form-control\" name=\"provinsi\" placeholder=\"Provinsi\">\n                </div>\n              @endif\n            </div>\n          </div>\n        </div>\n        @if($user->telepon)\n          <div class=\"form-group\">\n            <label>Nomor Telepon</label>\n            <input type=\"text\" class=\"form-control\" name=\"telepon\" value=\"{{ $user->telepon }}\">\n          </div>\n        @else\n          <div class=\"form-group\">\n            <label>Nomor Telepon</label>\n            <input type=\"text\" class=\"form-control\" name=\"telepon\" placeholder=\"+62 8xx xxxx xxxx\">\n          </div>\n        @endif\n        <div class=\"form-group\">\n          <label>Password</label>\n          <input class=\"form-control\" placeholder=\"Password\" type=\"password\" name=\"password\" autocomplete=\"off\">\n        </div>\n        <div class=\"form-group\">\n          <label for=\"exampleInputFile\">Foto</label>\n          <div class=\"file-upload-inner ts-forms\">\n            <div class=\"input prepend-big-btn\">\n              <label class=\"icon-right\" for=\"prepend-big-btn\">\n                <i class=\"fa fa-download\"></i>\n              </label>\n              <div class=\"file-button\">\n                Browse\n                <input type=\"file\" name=\"gambar\" onchange=\"document.getElementById('prepend-big-btn').value = this.value;\">\n              </div>\n              <input type=\"text\" id=\"prepend-big-btn\" name=\"gambar\" placeholder=\"no file selected\">\n            </div>\n          </div>\n        </div><br>\n\n        <div class=\"form-group\">\n          <button class=\"btn btn-primary btn-block\">Simpan Perubahan</button>\n        </div>\n      </form>\n    </div>\n  </div>\n@endsection\n"
  },
  {
    "path": "resources/views/admin/akun/index.blade.php",
    "content": "@extends('template_backend.home')\n@section('halaman', 'List Akun')\n@section('content')\n  @if (Session::has('success'))\n    <div class=\"alert alert-success\" role=\"alert\">\n      {{ Session('success') }}\n    </div>\n  @endif\n\n  <div class=\"col-lg-12 col-md-12 col-sm-12 col-xs-12\">\n    <div class=\"welcome-wrapper shadow-reset res-mg-t mg-b-30\">\n      <a href=\"{{ route('akun.create') }}\" class=\"btn btn-primary btn-sm mb-2\">Tambah User</a><br><br>\n      <table class=\"table table-striped table-hover table-sm table-bordered\">\n        <tr>\n          <th>Id</th>\n          <th>Nama</th>\n          <th>Roles</th>\n          <th>Email</th>\n          <th>Alamat</th>\n          <th>Thumbnail</th>\n          <th>Action</th>\n        </tr>\n        @foreach ($user as $result => $d)\n          <tr>\n            <td>{{ $result + $user->firstitem() }}</td>\n            <td>{{ $d->name }}</td>\n            <td>{{ $d->role }}</td>\n            <td>{{ $d->email }}</td>\n            <td>\n              @if($d->address && $d->kelurahan && $d->kecamatan && $d->kabupaten && $d->provinsi)\n                {{ $d->address }}, {{ $d->kelurahan }}, {{ $d->kecamatan }}, {{ $d->kabupaten }}, {{ $d->provinsi }}\n              @else\n                N/A\n              @endif\n            </td>\n            <td>\n              @if($d->gambar)\n                <img src=\"{{ asset( $d->gambar ) }}\" class=\"img-fluid\" width=\"100\" alt=\"\">\n              @else\n                N/A\n              @endif\n            </td>\n            <td>\n              <form action=\"{{ route('akun.destroy', $d->id) }}\" method=\"post\">\n                @csrf\n                @method('delete')\n                <a href=\"{{ route('akun.edit', $d->id) }}\" class=\"btn btn-success btn-sm\">Edit</a>\n                <button type=\"submit\" class=\"btn btn-danger btn-sm\" name=\"button\">Delete</button>\n              </form>\n            </td>\n          </tr>\n        @endforeach\n      </table>\n      {{ $user->links() }}\n    </div>\n  </div>\n@endsection\n"
  },
  {
    "path": "resources/views/admin/index.blade.php",
    "content": "@extends('template_backend.home')\n\n@section('content')\n  <div class=\"col-lg-12 col-md-12 col-sm-12 col-xs-12\">\n    <div class=\"welcome-wrapper shadow-reset res-mg-t mg-b-30\">\n      <h1>Hello World!</h1>\n    </div>\n  </div>\n@endsection\n"
  },
  {
    "path": "resources/views/admin/merek/create.blade.php",
    "content": "@extends('template_backend.home')\n@section('halaman', 'Tambah Merek')\n@section('content')\n  @if (count($errors)>0)\n    @foreach ($errors->all() as $error)\n      <div class=\"alert alert-danger\" role=\"alert\">\n        {{ $error }}\n      </div>\n    @endforeach\n  @endif\n\n  @if (Session::has('success'))\n    <div class=\"alert alert-success\" role=\"alert\">\n      {{ Session('success') }}\n    </div>\n  @endif\n\n  <div class=\"col-lg-12 col-md-12 col-sm-12 col-xs-12\">\n    <div class=\"welcome-wrapper shadow-reset res-mg-t mg-b-30\">\n      <form action=\"{{ route('merek.store') }}\" method=\"post\">\n        @csrf\n        <div class=\"form-group\">\n          <label>Merek Mobil</label>\n          <input type=\"text\" class=\"form-control\" name=\"name\" autocomplete=\"off\">\n        </div>\n\n        <div class=\"form-group\">\n          <button class=\"btn btn-primary btn-block\">Simpan Merek</button>\n        </div>\n      </form>\n    </div>\n  </div>\n@endsection\n"
  },
  {
    "path": "resources/views/admin/merek/edit.blade.php",
    "content": "@extends('template_backend.home')\n@section('halaman', 'Edit Merek')\n@section('content')\n  @if (count($errors)>0)\n    @foreach ($errors->all() as $error)\n      <div class=\"alert alert-danger\" role=\"alert\">\n        {{ $error }}\n      </div>\n    @endforeach\n  @endif\n\n  <div class=\"col-lg-12 col-md-12 col-sm-12 col-xs-12\">\n    <div class=\"welcome-wrapper shadow-reset res-mg-t mg-b-30\">\n      <form action=\"{{ route('merek.update', $merek->id) }}\" method=\"post\">\n        @csrf\n        @method('patch')\n        <div class=\"form-group\">\n          <label>Merek Mobil</label>\n          <input type=\"text\" class=\"form-control\" value=\"{{ $merek->name }}\" name=\"name\" autocomplete=\"off\">\n        </div>\n\n        <div class=\"form-group\">\n          <button class=\"btn btn-primary btn-block\">Update Merek</button>\n        </div>\n      </form>\n    </div>\n  </div>\n@endsection\n"
  },
  {
    "path": "resources/views/admin/merek/index.blade.php",
    "content": "@extends('template_backend.home')\n@section('halaman', 'List Merek')\n@section('content')\n  @if (Session::has('success'))\n    <div class=\"alert alert-success\" role=\"alert\">\n      {{ Session('success') }}\n    </div>\n  @endif\n\n  <div class=\"col-lg-12 col-md-12 col-sm-12 col-xs-12\">\n    <div class=\"welcome-wrapper shadow-reset res-mg-t mg-b-30\">\n      <a href=\"{{ route('merek.create') }}\" class=\"btn btn-primary btn-sm\">Tambah Merek</a><br><br>\n      <table class=\"table table-striped table-hover table-sm table-bordered\">\n        <tr>\n          <th>No</th>\n          <th>Nama Merek</th>\n          <th>Action</th>\n        </tr>\n        @foreach ($merek as $result => $d)\n          <tr>\n            <td>{{ $result + $merek->firstitem() }}</td>\n            <td>{{ $d->name }}</td>\n            <td>\n              <form action=\"{{ route('merek.destroy', $d->id) }}\" method=\"post\">\n                @csrf\n                @method('delete')\n                <a href=\"{{ route('merek.edit', $d->id) }}\" class=\"btn btn-success btn-sm\">Edit</a>\n                <button type=\"submit\" class=\"btn btn-danger btn-sm\" name=\"button\">Delete</button>\n              </form>\n            </td>\n          </tr>\n        @endforeach\n      </table>\n      {{ $merek->links() }}\n    </div>\n  </div>\n@endsection\n"
  },
  {
    "path": "resources/views/admin/mobil/create.blade.php",
    "content": "@extends('template_backend.home')\n@section('halaman', 'Tambah Mobil')\n@section('content')\n  @if (count($errors)>0)\n    @foreach ($errors->all() as $error)\n      <div class=\"alert alert-danger\" role=\"alert\">\n        {{ $error }}\n      </div>\n    @endforeach\n  @endif\n\n  @if (Session::has('success'))\n    <div class=\"alert alert-success\" role=\"alert\">\n      {{ Session('success') }}\n    </div>\n  @endif\n\n  <div class=\"col-lg-12 col-md-12 col-sm-12 col-xs-12\">\n    <div class=\"welcome-wrapper shadow-reset res-mg-t mg-b-30\">\n      <form action=\"{{ route('mobil.store') }}\" method=\"post\" enctype=\"multipart/form-data\">\n        @csrf\n        <div class=\"form-group\">\n          <label>Merek</label>\n          <div class=\"chosen-select-single mg-b-20\">\n            <select class=\"select2_demo_3 form-control\" name=\"merek_id\">\n              <option value=\"\" holder>Pilih Merek</option>\n              @foreach ($merek as $d)\n                <option value=\"{{ $d->id }}\">{{ $d->name }}</option>\n              @endforeach\n            </select>\n          </div>\n        </div>\n        <div class=\"form-group\">\n          <label>Type</label>\n          <input type=\"text\" class=\"form-control\" name=\"type\" placeholder=\"Type Mobil\" autocomplete=\"off\">\n        </div>\n        <div class=\"form-group\">\n          <label>Price</label>\n          <input type=\"number\" class=\"form-control\" name=\"price\" placeholder=\"Price Mobil\">\n        </div>\n        <div class=\"form-group\">\n          <label for=\"exampleInputFile\">Foto Mobil</label>\n          <div class=\"file-upload-inner ts-forms\">\n              <div class=\"input prepend-big-btn\">\n                  <label class=\"icon-right\" for=\"prepend-big-btn\">\n                      <i class=\"fa fa-download\"></i>\n                  </label>\n                  <div class=\"file-button\">\n                      Browse\n                      <input type=\"file\" name=\"gambar\" onchange=\"document.getElementById('prepend-big-btn').value = this.value;\">\n                  </div>\n                  <input type=\"text\" id=\"prepend-big-btn\" name=\"gambar\" placeholder=\"no file selected\">\n              </div>\n          </div>\n        </div><br>\n\n        <div class=\"form-group\">\n          <button class=\"btn btn-primary btn-block\">Simpan Mobil</button>\n        </div>\n      </form>\n    </div>\n  </div>\n@endsection\n"
  },
  {
    "path": "resources/views/admin/mobil/edit.blade.php",
    "content": "@extends('template_backend.home')\n@section('halaman', 'Edit Blog')\n@section('content')\n  @if (count($errors)>0)\n    @foreach ($errors->all() as $error)\n      <div class=\"alert alert-danger\" role=\"alert\">\n        {{ $error }}\n      </div>\n    @endforeach\n  @endif\n\n  @if (Session::has('success'))\n    <div class=\"alert alert-success\" role=\"alert\">\n      {{ Session('success') }}\n    </div>\n  @endif\n\n  <div class=\"col-lg-12 col-md-12 col-sm-12 col-xs-12\">\n    <div class=\"welcome-wrapper shadow-reset res-mg-t mg-b-30\">\n      <form action=\"{{ route('mobil.update', $mobil->id) }}\" method=\"post\" enctype=\"multipart/form-data\">\n        @csrf\n        @method('patch')\n        <div class=\"form-group\">\n          <label>Merek</label>\n          <div class=\"chosen-select-single mg-b-20\">\n            <select class=\"select2_demo_3 form-control\" name=\"merek_id\">\n              <option value=\"\" holder>Pilih Merek</option>\n              @foreach ($merek as $d)\n                <option value=\"{{ $d->id }}\"\n                  @if ($mobil->merek_id == $d->id)\n                    selected\n                  @endif\n                >{{ $d->name }}</option>\n              @endforeach\n            </select>\n          </div>\n        </div>\n        <div class=\"form-group\">\n          <label>Type</label>\n          <input type=\"text\" class=\"form-control\" value=\"{{ $mobil->type }}\" name=\"type\" placeholder=\"Type Mobil\" autocomplete=\"off\">\n        </div>\n        <div class=\"form-group\">\n          <label>Price</label>\n            <input type=\"number\" class=\"form-control\" value=\"{{ $mobil->price }}\" name=\"price\" placeholder=\"Price Mobil\">\n        </div>\n        <div class=\"form-group\">\n          <label for=\"exampleInputFile\">Foto Mobil</label>\n          <div class=\"file-upload-inner ts-forms\">\n              <div class=\"input prepend-big-btn\">\n                  <label class=\"icon-right\" for=\"prepend-big-btn\">\n                      <i class=\"fa fa-download\"></i>\n                  </label>\n                  <div class=\"file-button\">\n                      Browse\n                      <input type=\"file\" name=\"gambar\" onchange=\"document.getElementById('prepend-big-btn').value = this.value;\">\n                  </div>\n                  <input type=\"text\" id=\"prepend-big-btn\" name=\"gambar\" placeholder=\"no file selected\">\n              </div>\n          </div>\n        </div><br>\n\n        <div class=\"form-group\">\n          <button class=\"btn btn-primary btn-block\">Update Mobil</button>\n        </div>\n      </form>\n    </div>\n  </div>\n@endsection\n"
  },
  {
    "path": "resources/views/admin/mobil/index.blade.php",
    "content": "@extends('template_backend.home')\n@section('halaman', 'List Mobil')\n@section('content')\n  @if (Session::has('success'))\n    <div class=\"alert alert-success\" role=\"alert\">\n      {{ Session('success') }}\n    </div>\n  @endif\n\n  <div class=\"col-lg-12 col-md-12 col-sm-12 col-xs-12\">\n    <div class=\"welcome-wrapper shadow-reset res-mg-t mg-b-30\">\n      <a href=\"{{ route('create.mobil') }}\" class=\"btn btn-primary btn-sm\">Tambah Mobil</a><br><br>\n      <table class=\"table table-striped table-hover table-sm table-bordered\">\n        <tr>\n          <th>No</th>\n          <th>Merek Mobil</th>\n          <th>Type Mobil</th>\n          <th>price</th>\n          <th>Thumbnail</th>\n          <th>Action</th>\n        </tr>\n        @foreach ($mobil as $result => $d)\n          <tr>\n            <td>{{ $result + $mobil->firstitem() }}</td>\n            <td>{{ $d->merek->name }}</td>\n            <td>{{ $d->type }}</td>\n            <td>$ {{ $d->price }}</td>\n            <td>\n              <img src=\"{{ asset( $d->gambar ) }}\" class=\"img-fluid\" width=\"100\" alt=\"\">\n            </td>\n            <td>\n              <form action=\"{{ route('mobil.destroy', $d->id) }}\" method=\"Mobil\">\n                @csrf\n                @method('delete')\n                <a href=\"{{ route('mobil.edit', $d->id) }}\" class=\"btn btn-success btn-sm\">Edit</a>\n                <button type=\"submit\" class=\"btn btn-danger btn-sm\" name=\"button\">Delete</button>\n              </form>\n            </td>\n          </tr>\n        @endforeach\n      </table>\n      {{ $mobil->links() }}\n    </div>\n  </div>\n@endsection\n"
  },
  {
    "path": "resources/views/admin/mobil/tampil_hapus.blade.php",
    "content": "@extends('template_backend.home')\n@section('halaman', 'List Mobil Yang Dihapus')\n@section('content')\n  @if (Session::has('success'))\n    <div class=\"alert alert-success\" role=\"alert\">\n      {{ Session('success') }}\n    </div>\n  @endif\n\n  <div class=\"col-lg-12 col-md-12 col-sm-12 col-xs-12\">\n    <div class=\"welcome-wrapper shadow-reset res-mg-t mg-b-30\">\n      <a href=\"{{ route('mobil.create') }}\" class=\"btn btn-primary btn-sm\">Tambah Post</a><br><br>\n      <table class=\"table table-striped table-hover table-sm table-bordered\">\n        <tr>\n          <th>No</th>\n          <th>Nama Post</th>\n          <th>Kategori</th>\n          <th>Daftar Tags</th>\n          <th>Thumbnail</th>\n          <th>Action</th>\n        </tr>\n        @foreach ($mobil as $result => $d)\n          <tr>\n            <td>{{ $result + $mobil->firstitem() }}</td>\n            <td>{{ $d->merek->name }}</td>\n            <td>{{ $d->type }}</td>\n            <td>$ {{ $d->price }}</td>\n            <td>\n              <img src=\"{{ asset( $d->gambar ) }}\" class=\"img-fluid\" width=\"100\" alt=\"\">\n            </td>\n            <td>\n              <form action=\"{{ route('mobil.kill', $d->id) }}\" method=\"post\">\n                @csrf\n                @method('delete')\n                <a href=\"{{ route('mobil.restore', $d->id) }}\" class=\"btn btn-success btn-sm\">Restore</a>\n                <button type=\"submit\" class=\"btn btn-danger btn-sm\" name=\"button\">Delete</button>\n              </form>\n            </td>\n          </tr>\n        @endforeach\n      </table>\n      {{ $mobil->links() }}\n    </div>\n  </div>\n@endsection\n"
  },
  {
    "path": "resources/views/admin/order/index.blade.php",
    "content": "@extends('template_backend.home')\n@section('halaman', 'List Order')\n@section('content')\n  @if (Session::has('success'))\n    <div class=\"alert alert-success\" role=\"alert\">\n      {{ Session('success') }}\n    </div>\n  @endif\n\n  <div class=\"col-lg-12 col-md-12 col-sm-12 col-xs-12\">\n    <div class=\"welcome-wrapper shadow-reset res-mg-t mg-b-30\">\n      <table class=\"table table-striped table-hover table-sm table-bordered\">\n        <tr>\n          <th>No</th>\n          <th>Nama User</th>\n          <th>Type Mobil</th>\n          <th>Quantity</th>\n          <th>Harga</th>\n          <th>Payment Status</th>\n          <th>Waktu Order</th>\n          <th>Opsi</th>\n        </tr>\n        @foreach ($order as $result => $data)\n          <tr>\n            <td>{{ $result + $order->firstitem() }}</td>\n            <td>{{ $data->user->name }}</td>\n            <td>{{ $data->namaMobil($data->mobil_id) }}</td>\n            <td>{{ $data->quantity }}</td>\n            <td>$ {{ number_format($data->total, 0) }}</td>\n            <td>\n              <span class=\"badge badge-warning text-white\">{{ $data->payment_status }}</span>\n            </td>\n            <td>{{ $data->created_at->diffForHumans() }}</td>\n            <td><a href=\"{{ route('order.show', $data->id) }}\" class=\"btn btn-primary btn-sm\">Show</a></td>\n          </tr>\n        @endforeach\n      </table>\n      {{ $order->links() }}\n    </div>\n  </div>\n@endsection\n"
  },
  {
    "path": "resources/views/admin/order/show.blade.php",
    "content": "@extends('template_backend.home')\n@section('halaman', 'Show Order Mobil')\n@section('content')\n    @if (Session::has('success'))\n        <div class=\"alert alert-success\" role=\"alert\">\n            {{ Session('success') }}\n        </div>\n    @endif\n    \n    <div class=\"contact-clients-area mg-b-40\">\n        <div class=\"container-fluid\">\n            <div class=\"row\">\n                <div class=\"col-lg-6\">\n                    <div class=\"contact-client-single shadow-reset mg-t-30 contact-client-v2\">\n                        <div class=\"row\">\n                            <div class=\"col-lg-12\">\n                                <div class=\"contact-img-v2\">\n                                    <img src=\"{{ asset($order->mobil->gambar) }}\" alt=\"\" />\n                                    <h2><a class=\"contact-client-name\">{{ $order->namaMobil($order->mobil_id) }}</a></h2>\n                                </div><br>\n                                <div class=\"contact-client-address\">\n                                    <h3>Quantity: {{ $order->quantity }}</h3>\n                                    <h3>Total: $ {{ number_format( $order->total , 0) }}</h3><br>\n                                    <p class=\"address-client-ct client-addres-v2\">Alamat: {{ $user->address }}, {{ $user->kelurahan }}, {{ $user->kecamatan }}, {{ $user->kabupaten }}, {{ $user->provinsi }}</p>\n                                    <p>No. Telp: {{ $user->telepon }}</p>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n                <div class=\"col-lg-6\">\n                    <div class=\"contact-client-single shadow-reset mg-t-30 contact-client-v2\">\n                        <div class=\"row\">\n                            <div class=\"col-lg-12\">\n                                @if ($order->bukti($order->id) == true)\n                                    <div class=\"contact-img-v2\">\n                                        <img src=\"{{ asset($order->bukti($order->id)->foto) }}\" alt=\"\" />\n                                    </div><hr><br>\n                                    <div class=\"contact-client-address\">\n                                        <h3>Nama Pengirim: {{ $order->bukti($order->id)->nama_pengirim }}</h3><br>\n                                        <h3>Nama Bank: {{ $order->bukti($order->id)->nama_bank }}</h3><br>\n                                        @if ($order->payment_status !== 'Sudah Dibayar')\n                                            <form action=\"{{ route('order.update', $order->id) }}\" method=\"post\">\n                                                @csrf\n                                                @method('patch')\n                                                <button type=\"submit\" class=\"btn btn-success btn-block\" name=\"button\">Konfirmasi</button>\n                                            </form>\n                                        @else\n                                        @endif\n                                    </div>\n                                @else\n                                    <div class=\"contact-client-address\">\n                                        <h3>Belum Melakukan Pembayaran</h3>\n                                    </div>\n                                @endif\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n@endsection\n"
  },
  {
    "path": "resources/views/admin/order/tampil_cancel.blade.php",
    "content": "@extends('template_backend.home')\n@section('halaman', 'List Batal Order')\n@section('content')\n  @if (Session::has('success'))\n    <div class=\"alert alert-success\" role=\"alert\">\n      {{ Session('success') }}\n    </div>\n  @endif\n\n  <div class=\"col-lg-12 col-md-12 col-sm-12 col-xs-12\">\n    <div class=\"welcome-wrapper shadow-reset res-mg-t mg-b-30\">\n      <table class=\"table table-striped table-hover table-sm table-bordered\">\n        <tr>\n          <th>No</th>\n          <th>Nama User</th>\n          <th>Type Mobil</th>\n          <th>Quantity</th>\n          <th>Harga</th>\n          <th>Payment Status</th>\n          <th>Waktu Cancel</th>\n        </tr>\n        @foreach ($order as $result => $data)\n          <tr>\n            <td>{{ $result + $order->firstitem() }}</td>\n            <td>{{ $data->user->name }}</td>\n            <td>{{ $data->namaMobil($data->mobil_id) }}</td>\n            <td>{{ $data->quantity }}</td>\n            <td>$ {{ number_format($data->total, 0) }}</td>\n            <td>\n              <span class=\"badge badge-warning text-white\">{{ $data->payment_status }}</span>\n            </td>\n            <td>{{ $data->created_at->diffForHumans() }}</td>\n          </tr>\n        @endforeach\n      </table>\n      {{ $order->links() }}\n    </div>\n  </div>\n@endsection\n"
  },
  {
    "path": "resources/views/auth/login.blade.php",
    "content": "@extends('layouts.app')\n\n@section('content')\n<div class=\"container\">\n    <div class=\"row justify-content-center\">\n        <div class=\"col-md-8\">\n            <!-- /.login-logo -->\n            <div class=\"card\">\n              <div class=\"card-body login-card-body\">\n                <p class=\"login-box-msg\">{{ __('Login') }}</p>\n\n                <form action=\"{{ route('login') }}\" method=\"post\">\n                  @csrf\n                  <div class=\"input-group mb-3\">\n                    <label for=\"email\" class=\"col-md-4 col-form-label text-md-right\">{{ __('E-Mail Address') }}</label>\n                    <div class=\"col-md-6\">\n                      <div class=\"input-group mb-3\">\n                        <input type=\"email\" class=\"form-control @error('email') is-invalid @enderror\" name=\"email\" value=\"{{ old('email') }}\" required autocomplete=\"email\" autofocus>\n                        <div class=\"input-group-append\">\n                          <div class=\"input-group-text\">\n                            <span class=\"fas fa-envelope\"></span>\n                          </div>\n                        </div>\n                        @error('email')\n                          <span class=\"invalid-feedback\" role=\"alert\">\n                            <strong>{{ $message }}</strong>\n                          </span>\n                        @enderror\n                      </div>\n                    </div>\n                  </div>\n\n                  <div class=\"input-group mb-3\">\n                    <label for=\"password\" class=\"col-md-4 col-form-label text-md-right\">{{ __('Password') }}</label>\n                    <div class=\"col-md-6\">\n                      <div class=\"input-group mb-3\">\n                        <input id=\"password\" type=\"password\" class=\"form-control @error('password') is-invalid @enderror\" name=\"password\" required autocomplete=\"current-password\">\n                        <div class=\"input-group-append\">\n                          <div class=\"input-group-text\">\n                            <span class=\"fas fa-lock\"></span>\n                          </div>\n                        </div>\n                        @error('password')\n                          <span class=\"invalid-feedback\" role=\"alert\">\n                            <strong>{{ $message }}</strong>\n                          </span>\n                        @enderror\n                      </div>\n                    </div>\n                  </div>\n\n                  <div class=\"row\">\n                    <div class=\"col-7 pl-3\">\n                      <div class=\"icheck-primary\">\n                        <input type=\"checkbox\" id=\"remember\">\n                        <label for=\"remember\">\n                          {{ __('Remember Me') }}\n                        </label>\n                      </div>\n                    </div>\n                    <!-- /.col -->\n                    <div class=\"col-5\">\n                      <button type=\"submit\" class=\"btn btn-primary btn-block\">\n                        {{ __('Login') }}\n                      </button>\n                    </div>\n                    <!-- /.col -->\n                  </div>\n                </form>\n\n\n                <p class=\"mb-1\">\n                  @if (Route::has('password.request'))\n                    <a class=\"btn btn-link\" href=\"{{ route('password.request') }}\">\n                      {{ __('Forgot Your Password?') }}\n                    </a>\n                  @endif\n                </p>\n              </div>\n              <!-- /.login-card-body -->\n            </div>\n            <!-- /.login-box -->\n        </div>\n    </div>\n</div>\n@endsection\n"
  },
  {
    "path": "resources/views/auth/passwords/confirm.blade.php",
    "content": "@extends('layouts.app')\n\n@section('content')\n<div class=\"container\">\n    <div class=\"row justify-content-center\">\n        <div class=\"col-md-8\">\n            <div class=\"card\">\n                <div class=\"card-header\">{{ __('Confirm Password') }}</div>\n\n                <div class=\"card-body\">\n                    {{ __('Please confirm your password before continuing.') }}\n\n                    <form method=\"POST\" action=\"{{ route('password.confirm') }}\">\n                        @csrf\n\n                        <div class=\"form-group row\">\n                            <label for=\"password\" class=\"col-md-4 col-form-label text-md-right\">{{ __('Password') }}</label>\n\n                            <div class=\"col-md-6\">\n                                <input id=\"password\" type=\"password\" class=\"form-control @error('password') is-invalid @enderror\" name=\"password\" required autocomplete=\"current-password\">\n\n                                @error('password')\n                                    <span class=\"invalid-feedback\" role=\"alert\">\n                                        <strong>{{ $message }}</strong>\n                                    </span>\n                                @enderror\n                            </div>\n                        </div>\n\n                        <div class=\"form-group row mb-0\">\n                            <div class=\"col-md-8 offset-md-4\">\n                                <button type=\"submit\" class=\"btn btn-primary\">\n                                    {{ __('Confirm Password') }}\n                                </button>\n\n                                @if (Route::has('password.request'))\n                                    <a class=\"btn btn-link\" href=\"{{ route('password.request') }}\">\n                                        {{ __('Forgot Your Password?') }}\n                                    </a>\n                                @endif\n                            </div>\n                        </div>\n                    </form>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n@endsection\n"
  },
  {
    "path": "resources/views/auth/passwords/email.blade.php",
    "content": "@extends('layouts.app')\n\n@section('content')\n<div class=\"container\">\n    <div class=\"row justify-content-center\">\n        <div class=\"col-md-8\">\n            <div class=\"card\">\n                <div class=\"card-header\">{{ __('Reset Password') }}</div>\n\n                <div class=\"card-body\">\n                    @if (session('status'))\n                        <div class=\"alert alert-success\" role=\"alert\">\n                            {{ session('status') }}\n                        </div>\n                    @endif\n\n                    <form method=\"POST\" action=\"{{ route('password.email') }}\">\n                        @csrf\n\n                        <div class=\"form-group row\">\n                            <label for=\"email\" class=\"col-md-4 col-form-label text-md-right\">{{ __('E-Mail Address') }}</label>\n\n                            <div class=\"col-md-6\">\n                                <input id=\"email\" type=\"email\" class=\"form-control @error('email') is-invalid @enderror\" name=\"email\" value=\"{{ old('email') }}\" required autocomplete=\"email\" autofocus>\n\n                                @error('email')\n                                    <span class=\"invalid-feedback\" role=\"alert\">\n                                        <strong>{{ $message }}</strong>\n                                    </span>\n                                @enderror\n                            </div>\n                        </div>\n\n                        <div class=\"form-group row mb-0\">\n                            <div class=\"col-md-6 offset-md-4\">\n                                <button type=\"submit\" class=\"btn btn-primary\">\n                                    {{ __('Send Password Reset Link') }}\n                                </button>\n                            </div>\n                        </div>\n                    </form>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n@endsection\n"
  },
  {
    "path": "resources/views/auth/passwords/reset.blade.php",
    "content": "@extends('layouts.app')\n\n@section('content')\n<div class=\"container\">\n    <div class=\"row justify-content-center\">\n        <div class=\"col-md-8\">\n            <div class=\"card\">\n                <div class=\"card-header\">{{ __('Reset Password') }}</div>\n\n                <div class=\"card-body\">\n                    <form method=\"POST\" action=\"{{ route('password.update') }}\">\n                        @csrf\n\n                        <input type=\"hidden\" name=\"token\" value=\"{{ $token }}\">\n\n                        <div class=\"form-group row\">\n                            <label for=\"email\" class=\"col-md-4 col-form-label text-md-right\">{{ __('E-Mail Address') }}</label>\n\n                            <div class=\"col-md-6\">\n                                <input id=\"email\" type=\"email\" class=\"form-control @error('email') is-invalid @enderror\" name=\"email\" value=\"{{ $email ?? old('email') }}\" required autocomplete=\"email\" autofocus>\n\n                                @error('email')\n                                    <span class=\"invalid-feedback\" role=\"alert\">\n                                        <strong>{{ $message }}</strong>\n                                    </span>\n                                @enderror\n                            </div>\n                        </div>\n\n                        <div class=\"form-group row\">\n                            <label for=\"password\" class=\"col-md-4 col-form-label text-md-right\">{{ __('Password') }}</label>\n\n                            <div class=\"col-md-6\">\n                                <input id=\"password\" type=\"password\" class=\"form-control @error('password') is-invalid @enderror\" name=\"password\" required autocomplete=\"new-password\">\n\n                                @error('password')\n                                    <span class=\"invalid-feedback\" role=\"alert\">\n                                        <strong>{{ $message }}</strong>\n                                    </span>\n                                @enderror\n                            </div>\n                        </div>\n\n                        <div class=\"form-group row\">\n                            <label for=\"password-confirm\" class=\"col-md-4 col-form-label text-md-right\">{{ __('Confirm Password') }}</label>\n\n                            <div class=\"col-md-6\">\n                                <input id=\"password-confirm\" type=\"password\" class=\"form-control\" name=\"password_confirmation\" required autocomplete=\"new-password\">\n                            </div>\n                        </div>\n\n                        <div class=\"form-group row mb-0\">\n                            <div class=\"col-md-6 offset-md-4\">\n                                <button type=\"submit\" class=\"btn btn-primary\">\n                                    {{ __('Reset Password') }}\n                                </button>\n                            </div>\n                        </div>\n                    </form>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n@endsection\n"
  },
  {
    "path": "resources/views/auth/register.blade.php",
    "content": "@extends('layouts.app')\n\n@section('content')\n<div class=\"container\">\n  <div class=\"row justify-content-center\">\n    <div class=\"col-md-8\">\n      <div class=\"card\">\n        <div class=\"card-body register-card-body\">\n          <p class=\"login-box-msg\">{{ __('Register') }}</p>\n\n          <form action=\"{{ route('register') }}\" method=\"post\">\n            @csrf\n\n            <div class=\"input-group mb-3\">\n              <label for=\"name\" class=\"col-md-4 col-form-label text-md-right\">{{ __('Name') }}</label>\n              <div class=\"col-md-6\">\n                <div class=\"input-group mb-3\">\n                  <input id=\"name\" type=\"text\" class=\"form-control @error('name') is-invalid @enderror\" name=\"name\" value=\"{{ old('name') }}\" required autocomplete=\"name\" autofocus>\n                  <div class=\"input-group-append\">\n                    <div class=\"input-group-text\">\n                      <span class=\"fas fa-user\"></span>\n                    </div>\n                  </div>\n                  @error('name')\n                    <span class=\"invalid-feedback\" role=\"alert\">\n                      <strong>{{ $message }}</strong>\n                    </span>\n                  @enderror\n                </div>\n              </div>\n            </div>\n            <div class=\"input-group mb-3\">\n              <label for=\"email\" class=\"col-md-4 col-form-label text-md-right\">{{ __('E-Mail Address') }}</label>\n              <div class=\"col-md-6\">\n                <div class=\"input-group mb-3\">\n                  <input id=\"email\" type=\"email\" class=\"form-control @error('email') is-invalid @enderror\" name=\"email\" value=\"{{ old('email') }}\" required autocomplete=\"email\">\n                  <div class=\"input-group-append\">\n                    <div class=\"input-group-text\">\n                      <span class=\"fas fa-envelope\"></span>\n                    </div>\n                  </div>\n                  @error('email')\n                      <span class=\"invalid-feedback\" role=\"alert\">\n                          <strong>{{ $message }}</strong>\n                      </span>\n                  @enderror\n                </div>\n              </div>\n            </div>\n            <div class=\"input-group mb-3\">\n              <label for=\"password\" class=\"col-md-4 col-form-label text-md-right\">{{ __('Password') }}</label>\n              <div class=\"col-md-6\">\n                <div class=\"input-group mb-3\">\n                  <input id=\"password\" type=\"password\" class=\"form-control @error('password') is-invalid @enderror\" name=\"password\" required autocomplete=\"new-password\">\n                  <div class=\"input-group-append\">\n                    <div class=\"input-group-text\">\n                      <span class=\"fas fa-lock\"></span>\n                    </div>\n                  </div>\n                  @error('password')\n                      <span class=\"invalid-feedback\" role=\"alert\">\n                          <strong>{{ $message }}</strong>\n                      </span>\n                  @enderror\n                </div>\n              </div>\n            </div>\n            <div class=\"input-group mb-3\">\n              <label for=\"password-confirm\" class=\"col-md-4 col-form-label text-md-right\">{{ __('Confirm Password') }}</label>\n              <div class=\"col-md-6\">\n                <div class=\"input-group mb-3\">\n                  <input id=\"password-confirm\" type=\"password\" class=\"form-control\" name=\"password_confirmation\" required autocomplete=\"new-password\">\n                  <div class=\"input-group-append\">\n                    <div class=\"input-group-text\">\n                      <span class=\"fas fa-lock\"></span>\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n            <div class=\"row\">\n              <div class=\"col-4\"></div>\n              <div class=\"col-4\">\n                <button type=\"submit\" class=\"btn btn-primary btn-block\">\n                    {{ __('Register') }}\n                </button>\n              </div>\n            </div>\n          </form>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n@endsection\n"
  },
  {
    "path": "resources/views/auth/verify.blade.php",
    "content": "@extends('layouts.app')\n\n@section('content')\n<div class=\"container\">\n    <div class=\"row justify-content-center\">\n        <div class=\"col-md-8\">\n            <div class=\"card\">\n                <div class=\"card-header\">{{ __('Verify Your Email Address') }}</div>\n\n                <div class=\"card-body\">\n                    @if (session('resent'))\n                        <div class=\"alert alert-success\" role=\"alert\">\n                            {{ __('A fresh verification link has been sent to your email address.') }}\n                        </div>\n                    @endif\n\n                    {{ __('Before proceeding, please check your email for a verification link.') }}\n                    {{ __('If you did not receive the email') }},\n                    <form class=\"d-inline\" method=\"POST\" action=\"{{ route('verification.resend') }}\">\n                        @csrf\n                        <button type=\"submit\" class=\"btn btn-link p-0 m-0 align-baseline\">{{ __('click here to request another') }}</button>.\n                    </form>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n@endsection\n"
  },
  {
    "path": "resources/views/email.blade.php",
    "content": "<form action=\"{{ route('order.bayar', $d->id) }}\" method=\"post\">\n  @csrf\n  @method('patch')\n  <button type=\"submit\" class=\"btn btn-primary btn-sm\" name=\"button\">Bayar</button>\n</form>\n"
  },
  {
    "path": "resources/views/home.blade.php",
    "content": "@extends('template_frontend.home')\n@section('content')\n  <div class=\"col-md-8\">\n    <div class=\"row\">\n      <div class=\"col-md-12\">\n        <div class=\"section-title\">\n          <h2 class=\"title\">Recent posts</h2>\n        </div>\n        <div class=\"col-lg-6 col-sm-6 col-6 main-section\">\n          <div class=\"dropdown\">\n            @if (Auth::user())\n              <button type=\"button\" class=\"btn btn-info\" data-toggle=\"dropdown\">\n                <i class=\"fa fa-shopping-cart\" aria-hidden=\"true\"></i> Cart <span class=\"badge badge-pill badge-danger\">{{ count((array) session('cart')) }}</span>\n              </button>\n            @endif\n            <div class=\"dropdown-menu\">\n              <div class=\"row total-header-section\">\n                <div class=\"col-lg-6 col-sm-6 col-6\">\n                  <i class=\"fa fa-shopping-cart\" aria-hidden=\"true\"></i> <span class=\"badge badge-pill badge-danger\">{{ count((array) session('cart')) }}</span>\n                </div>\n                @foreach((array) session('cart') as $id => $details)\n                @endforeach\n                <div class=\"col-lg-6 col-sm-6 col-6 total-section text-right\">\n                  <p>Total: <span class=\"text-info\">$ </span></p>\n                </div>\n              </div>\n\n              @if(session('cart'))\n                @foreach(session('cart') as $id => $details)\n                  <div class=\"row cart-detail\">\n                    <div class=\"col-lg-4 col-sm-4 col-4 cart-detail-img\">\n                      <img width=\"80\" src=\"{{ $details['photo'] }}\" />\n                    </div>\n                    <div class=\"col-lg-8 col-sm-8 col-8 cart-detail-product\">\n                      <p style=\"text-transform: uppercase;\">{{ $details['name'] }}</p>\n                      <span class=\"price text-info\"> ${{ $details['price'] }}</span> <span class=\"count\"> Quantity:{{ $details['quantity'] }}</span>\n                    </div>\n                  </div>\n                @endforeach\n              @endif\n              <div class=\"row\">\n                <div class=\"col-lg-12 col-sm-12 col-12 text-center checkout\">\n                  <a href=\"{{ url('cart') }}\" class=\"btn btn-primary btn-block\">View all</a>\n                </div>\n              </div>\n            </div>\n          </div>\n        </div><br><br>\n      </div>\n      <!-- post -->\n      @php\n        $i = 1;\n      @endphp\n      @foreach ($blog as $val)\n      <div class=\"col-md-6\">\n        <div class=\"post\">\n          <a class=\"post-img\" href=\"{{ route('blog.tampil_data', $val->id) }}\"><img src=\"{{ asset( $val->gambar ) }}\"></a>\n          <div class=\"post-body\">\n            <div class=\"post-category\">\n              <a href=\"{{ route('blog.tampil_data', $val->id) }}\">{{$val->category->name}}</a>\n            </div>\n            <h3 class=\"post-title\"><a href=\"{{ route('blog.tampil_data', $val->id) }}\">{!!$val->content!!}</a></h3>\n            <ul class=\"post-meta\">\n              <li><a href=\"{{ route('blog.tampil_data', $val->id) }}\">{{$val->title}}</a></li>\n              <li>{{$val->created_at}}</li>\n            </ul>\n          </div>\n          <p class=\"btn-holder\"><a href=\"{{ url('add-to-cart/'.$val->id) }}\" class=\"btn btn-warning btn-block text-center\" role=\"button\">Add to cart</a> </p>\n        </div>\n      </div>\n      @if ($i % 2 == 0)\n        <div class=\"clearfix visible-md visible-lg\"></div>\n      @endif\n      @php\n        $i++;\n      @endphp\n      @endforeach\n      <!-- /post -->\n    </div>\n    {{ $blog->links() }}\n  </div>\n  <div class=\"col-md-4\">\n    <!-- social widget -->\n    <div class=\"aside-widget\">\n      <div class=\"section-title\">\n        <h2 class=\"title\">Social Media</h2>\n      </div>\n      <div class=\"social-widget\">\n        <ul>\n          <li>\n            <a href=\"https://www.facebook.com/profile.php?id=100007787444809\" class=\"social-facebook\">\n              <i class=\"fa fa-facebook\"></i>\n              <span>21.2 K<br>Followers</span>\n            </a>\n          </li>\n          <li>\n            <a href=\"https://www.instagram.com/didotz_poetra_ae/\" class=\"social-instagram\">\n              <i class=\"fa fa-instagram\"></i>\n              <span>45.2 K<br>Followers</span>\n            </a>\n          </li>\n          <li>\n            <a href=\"https://www.youtube.com/channel/UCSU_al9Rti8l4AQtgb4dZlg?view_as=subscriber\" class=\"social-youtube\">\n              <i class=\"fa fa-youtube\"></i>\n              <span>10.3 M<br>Subscribe</span>\n            </a>\n          </li>\n        </ul>\n      </div>\n    </div>\n    <!-- /social widget -->\n\n    <!-- category widget -->\n    <div class=\"aside-widget\">\n      <div class=\"section-title\">\n        <h2 class=\"title\">Categories</h2>\n      </div>\n      <div class=\"category-widget\">\n        <ul>\n          <li><a href=\"\">Lifestyle <span>451</span></a></li>\n          <li><a href=\"\">Fashion <span>230</span></a></li>\n          <li><a href=\"\">Technology <span>40</span></a></li>\n          <li><a href=\"\">Travel <span>38</span></a></li>\n          <li><a href=\"\">Health <span>24</span></a></li>\n        </ul>\n      </div>\n    </div>\n    <!-- /category widget -->\n  </div>\n  <!-- /row -->\n@endsection\n"
  },
  {
    "path": "resources/views/layouts/app.blade.php",
    "content": "<!doctype html>\n<html lang=\"{{ str_replace('_', '-', app()->getLocale()) }}\">\n<head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n\n    <!-- CSRF Token -->\n    <meta name=\"csrf-token\" content=\"{{ csrf_token() }}\">\n\n    <title>{{ config('app.name', 'Laravel') }} &mdash; CRUD</title>\n\n    <!-- Scripts -->\n    <script src=\"{{ asset('js/app.js') }}\" defer></script>\n\n    <!-- Fonts -->\n    <link rel=\"dns-prefetch\" href=\"//fonts.gstatic.com\">\n    <link href=\"https://fonts.googleapis.com/css?family=Nunito\" rel=\"stylesheet\">\n\n    <!-- Styles -->\n    <link href=\"{{ asset('css/app.css') }}\" rel=\"stylesheet\">\n    <link rel=\"stylesheet\" href=\"https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css\" integrity=\"sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T\" crossorigin=\"anonymous\">\n    <link rel=\"stylesheet\" href=\"{{ asset('plugins/fontawesome-free/css/all.min.css') }}\">\n    <link rel=\"stylesheet\" href=\"https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css\">\n    <link rel=\"stylesheet\" href=\"{{ asset('plugins/icheck-bootstrap/icheck-bootstrap.min.css') }}\">\n    <link rel=\"stylesheet\" href=\"{{ asset('dist/css/adminlte.css') }}\">\n    <link rel=\"stylesheet\" href=\"{{ asset('user/css/animate.css') }}\">\n    <link rel=\"stylesheet\" href=\"{{ asset('user/css/style.css') }}\">\n    <link href=\"https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,700\" rel=\"stylesheet\">\n    <style media=\"screen\">\n    body {\n      transition: 2s;\n    }\n  </style>\n</head>\n<body id=\"randombg\">\n    <!-- Page Preloder -->\n    <div id=\"preloder\">\n      <div class=\"loader\"></div>\n    </div>\n\n    <div id=\"app\">\n        <nav class=\"navbar navbar-expand-md navbar-light bg-white shadow-sm\">\n            <div class=\"container\">\n                <a class=\"navbar-brand\" href=\"{{ url('/') }}\">\n                    {{ config('app.name', 'Laravel') }}\n                </a>\n                <button class=\"navbar-toggler\" type=\"button\" data-toggle=\"collapse\" data-target=\"#navbarSupportedContent\" aria-controls=\"navbarSupportedContent\" aria-expanded=\"false\" aria-label=\"{{ __('Toggle navigation') }}\">\n                    <span class=\"navbar-toggler-icon\"></span>\n                </button>\n\n                <div class=\"collapse navbar-collapse\" id=\"navbarSupportedContent\">\n                    <!-- Left Side Of Navbar -->\n                    <ul class=\"navbar-nav mr-auto\">\n\n                    </ul>\n\n                    <!-- Right Side Of Navbar -->\n                    <ul class=\"navbar-nav ml-auto\">\n                        <!-- Authentication Links -->\n                        @guest\n                            <li class=\"nav-item\">\n                                <a class=\"nav-link\" href=\"{{ route('login') }}\">{{ __('Login') }}</a>\n                            </li>\n                            @if (Route::has('register'))\n                                <li class=\"nav-item\">\n                                    <a class=\"nav-link\" href=\"{{ route('register') }}\">{{ __('Register') }}</a>\n                                </li>\n                            @endif\n                        @else\n                            <li class=\"nav-item dropdown\">\n                                <a id=\"navbarDropdown\" class=\"nav-link dropdown-toggle\" href=\"#\" role=\"button\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\" v-pre>\n                                    {{ Auth::user()->name }} <span class=\"caret\"></span>\n                                </a>\n\n                                <div class=\"dropdown-menu dropdown-menu-right\" aria-labelledby=\"navbarDropdown\">\n                                    <a class=\"dropdown-item\" href=\"{{ route('logout') }}\"\n                                       onclick=\"event.preventDefault();\n                                                     document.getElementById('logout-form').submit();\">\n                                        {{ __('Logout') }}\n                                    </a>\n\n                                    <form id=\"logout-form\" action=\"{{ route('logout') }}\" method=\"POST\" style=\"display: none;\">\n                                        @csrf\n                                    </form>\n                                </div>\n                            </li>\n                        @endguest\n                    </ul>\n                </div>\n            </div>\n        </nav>\n\n        <main class=\"py-4\">\n          <section class=\"content\">\n            <div class=\"container-fluid\">\n              @yield('content')\n            </div>\n          </section>\n        </main>\n    </div>\n<script src=\"{{ asset('plugins/jquery/jquery.min.js') }}\"></script>\n<script src=\"{{ asset('plugins/bootstrap/js/bootstrap.bundle.min.js') }}\"></script>\n<script src=\"{{ asset('dist/js/adminlte.js') }}\"></script>\n<script src=\"{{ asset('user/js/main.js') }}\"></script>\n<script>\nsetInterval(function() {\n  var red = Math.round(Math.random() * 255);\n  var green = Math.round(Math.random() * 255);\n  var blue = Math.round(Math.random() * 255);\n\n  var bg = \"background: rgba(\" + red + \",\" + green + \",\" + blue + \");\";\n  var element = document.getElementById('randombg');\n  element.style = bg;\n}, 500);\n</script>\n</body>\n</html>\n"
  },
  {
    "path": "resources/views/template_backend/footer.blade.php",
    "content": "<!-- Footer Start-->\n<div class=\"footer-copyright-area\">\n  <div class=\"container-fluid\">\n    <div class=\"row\">\n      <div class=\"col-lg-12\">\n        <div class=\"footer-copy-right\">\n          <p>Copyright &copy; @if(date('Y') == '2019') {{ date('Y') }} @else 2019 - {{ date('Y') }} @endif All rights reserved <i class=\"fa fa-heart-o\" aria-hidden=\"true\"></i> by <a href=\"https://github.com/adhiariyadi/\" target=\"_blank\">Adhi Ariyadi</a>.</p>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n<!-- Footer End-->\n\n<!-- jquery\n============================================ -->\n<script src=\"{{ asset('admin/js/vendor/jquery-1.11.3.min.js') }}\"></script>\n<!-- bootstrap JS\n============================================ -->\n<script src=\"{{ asset('admin/js/bootstrap.min.js') }}\"></script>\n<!-- meanmenu JS\n============================================ -->\n<script src=\"{{ asset('admin/js/jquery.meanmenu.js') }}\"></script>\n<!-- mCustomScrollbar JS\n============================================ -->\n<script src=\"{{ asset('admin/js/jquery.mCustomScrollbar.concat.min.js') }}\"></script>\n<!-- sticky JS\n============================================ -->\n<script src=\"{{ asset('admin/js/jquery.sticky.js') }}\"></script>\n<!-- scrollUp JS\n============================================ -->\n<script src=\"{{ asset('admin/js/jquery.scrollUp.min.js') }}\"></script>\n<!-- counterup JS\n============================================ -->\n<script src=\"{{ asset('admin/js/counterup/jquery.counterup.min.js') }}\"></script>\n<script src=\"{{ asset('admin/js/counterup/waypoints.min.js') }}\"></script>\n<script src=\"{{ asset('admin/js/counterup/counterup-active.js') }}\"></script>\n<!-- peity JS\n============================================ -->\n<script src=\"{{ asset('admin/js/peity/jquery.peity.min.js') }}\"></script>\n<script src=\"{{ asset('admin/js/peity/peity-active.js') }}\"></script>\n<!-- sparkline JS\n============================================ -->\n<script src=\"{{ asset('admin/js/sparkline/jquery.sparkline.min.js') }}\"></script>\n<script src=\"{{ asset('admin/js/sparkline/sparkline-active.js') }}\"></script>\n<!-- flot JS\n============================================ -->\n<script src=\"{{ asset('admin/js/flot/Chart.min.js') }}\"></script>\n<script src=\"{{ asset('admin/js/flot/flot-active.js') }}\"></script>\n<!-- map JS\n============================================ -->\n<script src=\"{{ asset('admin/js/map/raphael.min.js') }}\"></script>\n<script src=\"{{ asset('admin/js/map/jquery.mapael.js') }}\"></script>\n<script src=\"{{ asset('admin/js/map/france_departments.js') }}\"></script>\n<script src=\"{{ asset('admin/js/map/world_countries.js') }}\"></script>\n<script src=\"{{ asset('admin/js/map/usa_states.js') }}\"></script>\n<script src=\"{{ asset('admin/js/map/map-active.js') }}\"></script>\n<!-- data table JS\n============================================ -->\n<script src=\"{{ asset('admin/js/data-table/bootstrap-table.js') }}\"></script>\n<script src=\"{{ asset('admin/js/data-table/tableExport.js') }}\"></script>\n<script src=\"{{ asset('admin/js/data-table/data-table-active.js') }}\"></script>\n<script src=\"{{ asset('admin/js/data-table/bootstrap-table-editable.js') }}\"></script>\n<script src=\"{{ asset('admin/js/data-table/bootstrap-editable.js') }}\"></script>\n<script src=\"{{ asset('admin/js/data-table/bootstrap-table-resizable.js') }}\"></script>\n<script src=\"{{ asset('admin/js/data-table/colResizable-1.5.source.js') }}\"></script>\n<script src=\"{{ asset('admin/js/data-table/bootstrap-table-export.js') }}\"></script>\n<!-- modal JS\n============================================ -->\n<script src=\"{{ asset('admin/js/modal-active.js') }}\"></script>\n<!-- touchspin JS\n============================================ -->\n<script src=\"{{ asset('admin/js/touchspin/jquery.bootstrap-touchspin.min.js') }}\"></script>\n<script src=\"{{ asset('admin/js/touchspin/touchspin-active.js') }}\"></script>\n<!-- colorpicker JS\n============================================ -->\n<script src=\"{{ asset('admin/js/colorpicker/jquery.spectrum.min.js') }}\"></script>\n<script src=\"{{ asset('admin/js/colorpicker/color-picker-active.js') }}\"></script>\n<!-- datapicker JS\n============================================ -->\n<script src=\"{{ asset('admin/js/datapicker/bootstrap-datepicker.js') }}\"></script>\n<script src=\"{{ asset('admin/js/datapicker/datepicker-active.js') }}\"></script>\n<!-- input-mask JS\n============================================ -->\n<script src=\"{{ asset('admin/js/input-mask/jasny-bootstrap.min.js') }}\"></script>\n<!-- chosen JS\n============================================ -->\n<script src=\"{{ asset('admin/js/chosen/chosen.jquery.js') }}\"></script>\n<script src=\"{{ asset('admin/js/chosen/chosen-active.js') }}\"></script>\n<!-- ionRangeSlider JS\n============================================ -->\n<script src=\"{{ asset('admin/js/ionRangeSlider/ion.rangeSlider.min.js') }}\"></script>\n<script src=\"{{ asset('admin/js/ionRangeSlider/ion.rangeSlider.active.js') }}\"></script>\n<!-- rangle-slider JS\n============================================ -->\n<script src=\"{{ asset('admin/js/rangle-slider/jquery-ui-1.10.4.custom.min.js') }}\"></script>\n<script src=\"{{ asset('admin/js/rangle-slider/jquery-ui-touch-punch.min.js') }}\"></script>\n<script src=\"{{ asset('admin/js/rangle-slider/rangle-active.js') }}\"></script>\n<!-- knob JS\n============================================ -->\n<script src=\"{{ asset('admin/js/knob/jquery.knob.js') }}\"></script>\n<script src=\"{{ asset('admin/js/knob/knob-active.js') }}\"></script>\n<!-- select2 JS\n============================================ -->\n<script src=\"{{ asset('admin/js/select2/select2.full.min.js') }}\"></script>\n<script src=\"{{ asset('admin/js/select2/select2-active.js') }}\"></script>\n<!-- main JS\n============================================ -->\n<script src=\"{{ asset('admin/js/main.js') }}\"></script>\n<script src=\"{{ asset('user/js/main.js') }}\"></script>\n\n</body>\n\n</html>\n"
  },
  {
    "path": "resources/views/template_backend/home.blade.php",
    "content": "<!doctype html>\n<html class=\"no-js\" lang=\"en\">\n\n<head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n  <link rel=\"shortcut icon\" href=\"{{ asset('favicon.ico') }}\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n  <meta name=\"theme-color\" content=\"#000000\">\n  <meta name=\"description\" content=\"Web site created using create-react-app\">\n  <link rel=\"apple-touch-icon\" href=\"{{ asset('logo192.png') }}\">\n  <link rel=\"manifest\" href=\"{{ asset('manifest.json') }}\">\n  <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n  <title>Laravel &mdash; CRUD</title>\n  <meta name=\"description\" content=\"\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n  <!-- Google Fonts\n\t============================================ -->\n  <link href=\"https://fonts.googleapis.com/css?family=Open+Sans:300,300i,400,400i,700,700i,800\" rel=\"stylesheet\">\n  <!-- Bootstrap CSS\n\t============================================ -->\n  <link rel=\"stylesheet\" href=\"{{ asset('admin/css/bootstrap.min.css') }}\">\n  <!-- Bootstrap CSS\n\t============================================ -->\n  <link rel=\"stylesheet\" href=\"{{ asset('admin/css/font-awesome.min.css') }}\">\n  <!-- adminpro icon CSS\n\t============================================ -->\n  <link rel=\"stylesheet\" href=\"{{ asset('admin/css/adminpro-custon-icon.css') }}\">\n  <!-- meanmenu icon CSS\n\t============================================ -->\n  <link rel=\"stylesheet\" href=\"{{ asset('admin/css/meanmenu.min.css') }}\">\n  <!-- mCustomScrollbar CSS\n\t============================================ -->\n  <link rel=\"stylesheet\" href=\"{{ asset('admin/css/jquery.mCustomScrollbar.min.css') }}\">\n  <!-- animate CSS\n\t============================================ -->\n  <link rel=\"stylesheet\" href=\"{{ asset('admin/css/animate.css') }}\">\n  <!-- data-table CSS\n\t============================================ -->\n  <link rel=\"stylesheet\" href=\"{{ asset('admin/css/data-table/bootstrap-table.css') }}\">\n  <link rel=\"stylesheet\" href=\"{{ asset('admin/css/data-table/bootstrap-editable.css') }}\">\n  <!-- normalize CSS\n\t============================================ -->\n  <link rel=\"stylesheet\" href=\"{{ asset('admin/css/normalize.css') }}\">\n  <!-- charts C3 CSS\n\t============================================ -->\n  <link rel=\"stylesheet\" href=\"{{ asset('admin/css/c3.min.css') }}\">\n  <!-- forms CSS\n\t============================================ -->\n  <link rel=\"stylesheet\" href=\"{{ asset('admin/css/form/all-type-forms.css') }}\">\n  <link rel=\"stylesheet\" href=\"{{ asset('admin/css/form/themesaller-forms.css') }}\">\n  <!-- modals CSS\n  ============================================ -->\n  <link rel=\"stylesheet\" href=\"{{ asset('admin/css/modals.css') }}\">\n  <!-- touchspin CSS\n  ============================================ -->\n  <link rel=\"stylesheet\" href=\"{{ asset('admin/css/touchspin/jquery.bootstrap-touchspin.min.css') }}\">\n  <!-- datapicker CSS\n  ============================================ -->\n  <link rel=\"stylesheet\" href=\"{{ asset('admin/css/datapicker/datepicker3.css') }}\">\n  <!-- colorpicker CSS\n  ============================================ -->\n  <link rel=\"stylesheet\" href=\"{{ asset('admin/css/colorpicker/colorpicker.css') }}\">\n  <!-- select2 CSS\n\t============================================ -->\n  <link rel=\"stylesheet\" href=\"{{ asset('admin/css/select2/select2.min.css') }}\">\n  <!-- chosen CSS\n  ============================================ -->\n  <link rel=\"stylesheet\" href=\"{{ asset('admin/css/chosen/bootstrap-chosen.css') }}\">\n  <!-- ionRangeSlider CSS\n  ============================================ -->\n  <link rel=\"stylesheet\" href=\"{{ asset('admin/css/ionRangeSlider/ion.rangeSlider.css') }}\">\n  <link rel=\"stylesheet\" href=\"{{ asset('admin/css/ionRangeSlider/ion.rangeSlider.skinFlat.css') }}\">\n  <!-- style CSS\n\t============================================ -->\n  <link rel=\"stylesheet\" href=\"{{ asset('admin/style.css') }}\">\n\t<link rel=\"stylesheet\" href=\"{{ asset('user/css/animate.css') }}\">\n\t<link rel=\"stylesheet\" href=\"{{ asset('user/css/style.css') }}\">\n  <!-- responsive CSS\n\t============================================ -->\n  <link rel=\"stylesheet\" href=\"{{ asset('admin/css/responsive.css') }}\">\n  <!-- responsive CSS\n\t============================================ -->\n  <link rel=\"stylesheet\" href=\"{{ asset('admin/css/responsive.css') }}\">\n  <!-- modernizr JS\n\t============================================ -->\n  <script src=\"{{ asset('admin/js/vendor/modernizr-2.8.3.min.js') }}\"></script>\n</head>\n\n<body class=\"materialdesign\">\n  <!--[if lt IE 8]>\n          <p class=\"browserupgrade\">You are using an <strong>outdated</strong> browser. Please <a href=\"http://browsehappy.com/\">upgrade your browser</a> to improve your experience.</p>\n      <![endif]-->\n\n\t<!-- Page Preloder -->\n\t{{-- <div id=\"preloder\">\n\t\t<div class=\"loader\"></div>\n\t</div> --}}\n\n  <!-- Header top area start-->\n  <div class=\"wrapper-pro\">\n    @include('template_backend.sidebar')\n    <div class=\"content-inner-all\">\n      @include('template_backend.navbar')\n    <!-- Header top area end-->\n          <!-- Breadcome start-->\n          <div class=\"breadcome-area mg-b-30 small-dn\">\n              <div class=\"container-fluid\">\n                  <div class=\"row\">\n                      <div class=\"col-lg-12\">\n                          <div class=\"breadcome-list map-mg-t-40-gl shadow-reset\">\n                              <div class=\"row\">\n                                  <div class=\"col-lg-6 col-md-6 col-sm-6 col-xs-6\">\n            \t\t\t\t\t\t\t\t\t\t<div class=\"breadcome-heading\">\n            \t\t\t\t\t\t\t\t\t\t\t<form role=\"search\" class=\"\">\n            \t\t\t\t\t\t\t\t\t\t\t\t<input type=\"text\" placeholder=\"Search...\" class=\"form-control\">\n            \t\t\t\t\t\t\t\t\t\t\t\t<a href=\"\"><i class=\"fa fa-search\"></i></a>\n            \t\t\t\t\t\t\t\t\t\t\t</form>\n            \t\t\t\t\t\t\t\t\t\t</div>\n                                  </div>\n                                  <div class=\"col-lg-6 col-md-6 col-sm-6 col-xs-6\">\n                                      <ul class=\"breadcome-menu\">\n                                          <li><a href=\"#\">Home</a> <span class=\"bread-slash\">/</span>\n                                          </li>\n                                          <li><span class=\"bread-blod\">@yield('halaman')</span>\n                                          </li>\n                                      </ul>\n                                  </div>\n                              </div>\n                          </div>\n                      </div>\n                  </div>\n              </div>\n          </div>\n          <!-- Breadcome End-->\n          @include('template_backend.mobile')\n          <!-- welcome Project, sale area start-->\n          <div class=\"welcome-adminpro-area\">\n            <div class=\"container-fluid\">\n              <div class=\"row\">\n                @yield('content')\n              </div>\n            </div>\n          </div>\n      </div>\n  </div>\n\n@include('template_backend.footer')\n"
  },
  {
    "path": "resources/views/template_backend/mobile.blade.php",
    "content": "<!-- Mobile Menu start -->\n<div class=\"mobile-menu-area\">\n  <div class=\"container\">\n    <div class=\"row\">\n      <div class=\"col-lg-12 col-md-12 col-sm-12 col-xs-12\">\n        <div class=\"mobile-menu\">\n          <nav id=\"dropdown\">\n            <ul class=\"mobile-menu-nav\">\n              <li class=\"nav-item\"><a href=\"/\" class=\"nav-link dropdown-toggle\">Home <span class=\"admin-project-icon adminpro-icon adminpro-down-arrow\"></span></a></li>\n              <li><a data-toggle=\"collapse\" data-target=\"#demo\" href=\"#\">Order <span class=\"admin-project-icon adminpro-icon adminpro-down-arrow\"></span></a>\n                <ul id=\"demo\" class=\"collapse dropdown-header-top\">\n                  <li><a href=\"{{ route('order.index') }}\">List Order</a></li>\n                  <li><a href=\"{{ route('order.tampil_cancel') }}\">List Batal Order</a></li>\n                </ul>\n              </li>\n              <li><a data-toggle=\"collapse\" data-target=\"#demo\" href=\"#\">Mobil <span class=\"admin-project-icon adminpro-icon adminpro-down-arrow\"></span></a>\n                <ul id=\"demo\" class=\"collapse dropdown-header-top\">\n                  <li><a href=\"{{ route('mobil.index') }}\">List Mobil</a></li>\n                  <li><a href=\"{{ route('mobil.tampil_hapus') }}\">List Mobil Dihapus</a></li>\n                </ul>\n              </li>\n              <li class=\"nav-item\"><a href=\"{{ route('merek.index') }}\" class=\"nav-link dropdown-toggle\">Merek <span class=\"admin-project-icon adminpro-icon adminpro-down-arrow\"></span></a></li>\n              <li class=\"nav-item\"><a href=\"{{ route('akun.index') }}\" class=\"nav-link dropdown-toggle\">Akun <span class=\"admin-project-icon adminpro-icon adminpro-down-arrow\"></span></a></li>\n            </ul>\n          </nav>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n<!-- Mobile Menu end -->\n<!-- Breadcome start-->\n<div class=\"breadcome-area des-none\">\n  <div class=\"container-fluid\">\n    <div class=\"row\">\n      <div class=\"col-lg-12 col-md-12 col-sm-12 col-xs-12\">\n        <div class=\"breadcome-list map-mg-t-40-gl shadow-reset\">\n          <div class=\"row\">\n            <div class=\"col-lg-6 col-md-6 col-sm-6 col-xs-6\">\n              <div class=\"breadcome-heading\">\n                <form role=\"search\" class=\"\">\n                  <input type=\"text\" placeholder=\"Search...\" class=\"form-control\">\n                  <a href=\"\"><i class=\"fa fa-search\"></i></a>\n                </form>\n              </div>\n            </div>\n            <div class=\"col-lg-6 col-md-6 col-sm-6 col-xs-6\">\n              <ul class=\"breadcome-menu\">\n                <li><a href=\"#\">Home</a> <span class=\"bread-slash\">/</span></li>\n                <li><span class=\"bread-blod\">@yield('halaman')</span></li>\n              </ul>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n<!-- Breadcome End-->\n"
  },
  {
    "path": "resources/views/template_backend/navbar.blade.php",
    "content": "<div class=\"header-top-area\">\n  <div class=\"fixed-header-top\">\n    <div class=\"container-fluid\">\n      <div class=\"row\">\n        <div class=\"col-lg-1 col-md-6 col-sm-6 col-xs-8\">\n          <button type=\"button\" id=\"sidebarCollapse\" class=\"btn bar-button-pro header-drl-controller-btn btn-info navbar-btn\">\n            <i class=\"fa fa-bars\"></i>\n          </button>\n        </div>\n        <div class=\"col-lg-11 col-md-6 col-sm-6 col-xs-4\">\n          <div class=\"header-right-info\">\n            <ul class=\"nav navbar-nav mai-top-nav header-right-menu\">\n              <li class=\"nav-item\">\n                <a href=\"#\" data-toggle=\"dropdown\" role=\"button\" aria-expanded=\"false\" class=\"nav-link dropdown-toggle\">\n                  <span class=\"adminpro-icon adminpro-user-rounded header-riht-inf\"></span>\n                  <span class=\"admin-name\">{{ Auth::user()->name }}</span>\n                  <span class=\"author-project-icon adminpro-icon adminpro-down-arrow\"></span>\n                </a>\n                <ul role=\"menu\" class=\"dropdown-header-top author-log dropdown-menu animated flipInX\">\n                  <li><a href=\"{{ route('profil', Auth::user()->id) }}\"><span class=\"adminpro-icon adminpro-user-rounded author-log-ic\"></span>My Profile</a></li>\n                  <li><a href=\"{{ route('logout') }}\" onclick=\"event.preventDefault(); document.getElementById('logout-form').submit();\"><span class=\"adminpro-icon adminpro-locked author-log-ic\"></span>{{ __('Logout') }}</a></li>\n                  <form id=\"logout-form\" action=\"{{ route('logout') }}\" method=\"POST\" style=\"display: none;\">\n                      @csrf\n                  </form>\n                </ul>\n              </li>\n            </ul>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n"
  },
  {
    "path": "resources/views/template_backend/sidebar.blade.php",
    "content": "<div class=\"left-sidebar-pro\">\n  <nav id=\"sidebar\">\n    <div class=\"sidebar-header\">\n      <a href=\"{{ route('profil', Auth::user()->id) }}\">\n        @if ( Auth::user()->gambar )\n          <img style=\"width: 100px; height:100px;\" class=\"rounded-circle img-thumbnail\" src=\"{{ asset(Auth::user()->gambar) }}\" alt=\"\" />\n        @else\n          <img class=\"rounded-circle img-thumbnail\" src=\"{{ asset('admin/img/message/1.jpg') }}\" alt=\"\" />\n        @endif\n      </a>\n      <h3>{{ Auth::user()->name }}</h3>\n      <p style=\"text-transform: uppercase;\">\n        @if ( Auth::user()->pekerjaan )\n          {{ Auth::user()->pekerjaan }}\n        @else\n          N/A\n        @endif\n      </p>\n      <strong>DG</strong>\n    </div>\n    <div class=\"left-custom-menu-adp-wrap\">\n      <ul class=\"nav navbar-nav left-sidebar-menu-pro\">\n        <li class=\"nav-item\"><a href=\"/\" class=\"nav-link dropdown-toggle\"><i class=\"fa big-icon fa-home\"></i> <span class=\"mini-dn\">Home</span> <span class=\"indicator-right-menu mini-dn\"><i class=\"fa indicator-mn fa-angle-left\"></i></span></a></li>\n        <li class=\"nav-item\">\n          <a href=\"#\" data-toggle=\"dropdown\" role=\"button\" aria-expanded=\"false\" class=\"nav-link dropdown-toggle\"><i class=\"fa big-icon fa-shopping-bag\"></i> <span class=\"mini-dn\">Order</span> <span class=\"indicator-right-menu mini-dn\"><i class=\"fa indicator-mn fa-angle-left\"></i></span></a>\n          <div role=\"menu\" class=\"dropdown-menu left-menu-dropdown animated flipInX\">\n            <a href=\"{{ route('order.index') }}\" class=\"dropdown-item\">List Order</a>\n            <a href=\"{{ route('order.tampil_cancel') }}\" class=\"dropdown-item\">List Batal Order</a>\n          </div>\n        </li>\n        <li class=\"nav-item\">\n          <a href=\"#\" data-toggle=\"dropdown\" role=\"button\" aria-expanded=\"false\" class=\"nav-link dropdown-toggle\"><i class=\"fa big-icon fa-car\"></i> <span class=\"mini-dn\">Mobil</span> <span class=\"indicator-right-menu mini-dn\"><i class=\"fa indicator-mn fa-angle-left\"></i></span></a>\n          <div role=\"menu\" class=\"dropdown-menu left-menu-dropdown animated flipInX\">\n            <a href=\"{{ route('mobil.index') }}\" class=\"dropdown-item\">List Mobil</a>\n            <a href=\"{{ route('mobil.tampil_hapus') }}\" class=\"dropdown-item\">List Mobil Dihapus</a>\n          </div>\n        </li>\n        <li class=\"nav-item\"><a href=\"{{ route('merek.index') }}\" class=\"nav-link dropdown-toggle\"><i class=\"fa big-icon fa-clipboard\"></i> <span class=\"mini-dn\">Merek</span> <span class=\"indicator-right-menu mini-dn\"><i class=\"fa indicator-mn fa-angle-left\"></i></span></a></li>\n        <li class=\"nav-item\"><a href=\"{{ route('akun.index') }}\" class=\"nav-link dropdown-toggle\"><i class=\"fa big-icon fa-user\"></i> <span class=\"mini-dn\">Akun</span> <span class=\"indicator-right-menu mini-dn\"><i class=\"fa indicator-mn fa-angle-left\"></i></span></a></li>\n      </ul>\n    </div>\n  </nav>\n</div>\n"
  },
  {
    "path": "resources/views/template_frontend/footer.blade.php",
    "content": "\t<!-- Footer section -->\n\t<section class=\"footer-section\">\n\t\t<div class=\"container\">\n\t\t\t<div class=\"row\">\n\t\t\t\t<div class=\"col-md-4\">\n\t\t\t\t\t<div class=\"footer-widget about-widget\">\n\t\t\t\t\t\t<h2>About</h2>\n\t\t\t\t\t\t<p>Donec vitae purus nunc. Morbi faucibus erat sit amet congue mattis. Nullam frin-gilla faucibus urna, id dapibus erat iaculis ut. Integer ac sem.</p>\n\t\t\t\t\t\t<img src=\"{{ asset('user/img/cards.png') }}\" alt=\"\">\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"col-md-8\">\n\t\t\t\t\t<div class=\"footer-widget about-widget\">\n\t\t\t\t\t\t<h2>Brand</h2>\n\t\t\t\t\t\t<ul>\n\t\t\t\t\t\t\t@php\n\t\t\t\t\t\t\t\t$i = 1;\n\t\t\t\t\t\t\t@endphp\n\t\t\t\t\t\t\t@foreach ($merek as $data)\n\t\t\t\t\t\t\t\t<li><a href=\"{{ route('category', $data->id) }}\">{{ $data->name }}</a></li>\n\t\t\t\t\t\t\t@if ($i % 6 == 0)\n\t\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t\t\t<ul>\n\t\t\t\t\t\t\t@endif\n\t\t\t\t\t\t\t@php\n\t\t\t\t\t\t\t\t$i++;\n\t\t\t\t\t\t\t@endphp\n\t\t\t\t\t\t\t@endforeach\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"social-links-warp\">\n\t\t\t<div class=\"container\">\n\t\t\t\t<div class=\"social-links\">\n\t\t\t\t\t<a target=\"_blank\" href=\"https://www.facebook.com/adhiariyadi.me/\" class=\"facebook\"><i class=\"fa fa-facebook\"></i><span>Facebook</span></a>\n\t\t\t\t\t<a target=\"_blank\" href=\"https://t.me/adhiariyadi\" class=\"telegram\"><i class=\"fa fa-telegram\"></i><span>Telegram</span></a>\n\t\t\t\t\t<a target=\"_blank\" href=\"https://www.instagram.com/adhiariyadi_/\" class=\"instagram\"><i class=\"fa fa-instagram\"></i><span>Instagram</span></a>\n\t\t\t\t\t<a target=\"_blank\" href=\"https://github.com/adhiariyadi/\" class=\"github\"><i class=\"fa fa-github\"></i><span>github</span></a>\n\t\t\t\t\t<a target=\"_blank\" href=\"https://twitter.com/adhiariyadi_\" class=\"twitter\"><i class=\"fa fa-twitter\"></i><span>Twitter</span></a>\n\t\t\t\t\t<a target=\"_blank\" href=\"https://api.whatsapp.com/send?phone=6281246835129\" class=\"whatsapp\"><i class=\"fa fa-whatsapp\"></i><span>Whatsapp</span></a>\n\t\t\t\t\t<a target=\"_blank\" href=\"https://www.youtube.com/channel/UCSU_al9Rti8l4AQtgb4dZlg?view_as=subscriber\" class=\"youtube\"><i class=\"fa fa-youtube\"></i><span>Youtube</span></a>\n\t\t\t\t</div>\n\t\t\t\t<p class=\"text-white text-center mt-5\">Copyright &copy; @if(date('Y') == '2019') {{ date('Y') }} @else 2019 - {{ date('Y') }} @endif All rights reserved <i class=\"fa fa-heart-o\" aria-hidden=\"true\"></i> by <a href=\"https://github.com/adhiariyadi/\" target=\"_blank\">Adhi Ariyadi</a>.</p>\n\t\t\t</div>\n\t\t</div>\n\t</section>\n\t<!-- Footer section end -->\n\n\n\n\t<!--====== Javascripts & Jquery ======-->\n  <script src=\"https://code.jquery.com/jquery-3.3.1.slim.min.js\" integrity=\"sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo\" crossorigin=\"anonymous\"></script>\n  <script src=\"https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js\" integrity=\"sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1\" crossorigin=\"anonymous\"></script>\n  <script src=\"https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js\" integrity=\"sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM\" crossorigin=\"anonymous\"></script>\n\t<script src=\"{{ asset('user/js/jquery-3.2.1.min.js') }}\"></script>\n\t<script src=\"{{ asset('user/js/bootstrap.min.js') }}\"></script>\n\t<script src=\"{{ asset('user/js/jquery.slicknav.min.js') }}\"></script>\n\t<script src=\"{{ asset('user/js/owl.carousel.min.js') }}\"></script>\n\t<script src=\"{{ asset('user/js/jquery.nicescroll.min.js') }}\"></script>\n\t<script src=\"{{ asset('user/js/jquery.zoom.min.js') }}\"></script>\n\t<script src=\"{{ asset('user/js/jquery-ui.min.js') }}\"></script>\n\t<script src=\"{{ asset('user/js/main.js') }}\"></script>\n\n\t<script type=\"text/javascript\">\n\t  $(\".update_cart-cart\").click(function (e) {\n\t    e.preventDefault();\n\t    var ele = $(this);\n\t    $.ajax({\n\t      url: '{{ url('update_cart') }}',\n\t      method: \"patch\",\n\t      data: {_token: '{{ csrf_token() }}', id: ele.attr(\"data-id\"), quantity: ele.parents(\"tr\").find(\".new-quantity\").val()},\n\t      success: function (response) {\n\t        window.location.reload();\n\t      }\n\t    });\n\t  });\n\n\t  $(\".remove-from-cart\").click(function (e) {\n\t    e.preventDefault();\n\t    var ele = $(this);\n\t    if(confirm(\"Are you sure\")) {\n\t      $.ajax({\n\t        url: '{{ url('remove') }}',\n\t        method: \"DELETE\",\n\t        data: {_token: '{{ csrf_token() }}', id: ele.attr(\"data-id\")},\n\t        success: function (response) {\n\t          window.location.reload();\n\t        }\n\t      });\n\t    }\n\t  });\n\t</script>\n\n</body>\n\n</html>\n"
  },
  {
    "path": "resources/views/template_frontend/home.blade.php",
    "content": "<!DOCTYPE html>\n<html lang=\"zxx\">\n\n<head>\n\t<title>Laravel &mdash; CRUD</title>\n\t<meta charset=\"UTF-8\">\n\t<meta name=\"description\" content=\" Divisima | eCommerce Template\">\n\t<meta name=\"keywords\" content=\"divisima, eCommerce, creative, html\">\n\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\n\t<!-- Google Font -->\n\t<link href=\"https://fonts.googleapis.com/css?family=Josefin+Sans:300,300i,400,400i,700,700i\" rel=\"stylesheet\">\n\n\t<!-- Stylesheets -->\n\t<link rel=\"stylesheet\" href=\"{{ asset('user/css/bootstrap.min.css') }}\" />\n\t<link rel=\"stylesheet\" href=\"{{ asset('user/css/font-awesome.min.css') }}\" />\n\t<link rel=\"stylesheet\" href=\"{{ asset('user/css/flaticon.css') }}\" />\n\t<link rel=\"stylesheet\" href=\"{{ asset('user/css/slicknav.min.css') }}\" />\n\t<link rel=\"stylesheet\" href=\"{{ asset('user/css/jquery-ui.min.css') }}\" />\n\t<link rel=\"stylesheet\" href=\"{{ asset('user/css/owl.carousel.min.css') }}\" />\n\t<link rel=\"stylesheet\" href=\"{{ asset('user/css/animate.css') }}\" />\n\t<link rel=\"stylesheet\" href=\"{{ asset('user/css/style.css') }}\" />\n\n\t@yield('css')\n\n\t<script src=\"https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js\"></script>\n\t<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n\n</head>\n\n<body>\n\t<!-- Page Preloder -->\n\t<div id=\"preloder\">\n\t\t<div class=\"loader\"></div>\n\t</div>\n\n  \t@include('template_frontend.navbar')\n\n\t@yield('content')\n\n  \t@include('template_frontend.footer')\n"
  },
  {
    "path": "resources/views/template_frontend/navbar.blade.php",
    "content": "<!-- Header section -->\n<header class=\"header-section\">\n  <div class=\"header-top\">\n    <div class=\"container\">\n      <div class=\"row\">\n        <div class=\"col-xl-6 col-lg-5\">\n          <form class=\"header-search-form\">\n            <input type=\"text\" placeholder=\"Search on shop ....\">\n            <button><i class=\"flaticon-search\"></i></button>\n          </form>\n        </div>\n        <div class=\"col-lg-2 text-center\"></div>\n        <div class=\"col-xl-4 col-lg-5\">\n          <div class=\"user-panel\">\n            <div class=\"up-item\">\n              @if (Auth::user())\n                <div class=\"shopping-card\">\n                  <i class=\"flaticon-bag\"></i>\n                  <span>{{ count((array) session('cart')) }}</span>\n                </div>\n                <a href=\"{{ route('cart') }}\">Shopping Cart</a>\n              @endif\n            </div>\n            <div class=\"up-item ml-4\">\n              <i class=\"flaticon-profile\"></i>\n              <a href=\"{{ route('profil', Auth::user()->id) }}\">Profile</a>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n  <nav class=\"main-navbar\">\n    <div class=\"container\">\n      <!-- menu -->\n      <ul class=\"main-menu\">\n        <li><a href=\"/\">Home</a></li>\n        <li><a href=\"#\">Brand</a>\n          <ul class=\"sub-menu\">\n            @foreach ($merek as $data)\n              <li><a href=\"{{ route('category', $data->id) }}\">{{ $data->name }}</a></li>\n            @endforeach\n          </ul>\n        </li>\n        <li><a href=\"{{ route('history') }}\">History</a>\n        <li><a href=\"{{ route('favorite') }}\">Daftar Suka</a>\n      </ul>\n    </div>\n  </nav>\n</header>\n<!-- Header section end -->\n"
  },
  {
    "path": "resources/views/user/cart.blade.php",
    "content": "@extends('template_frontend.home')\n@section('content')\n  <!-- Page info -->\n  <div class=\"page-top-info\">\n    <div class=\"container\">\n      <h4>Cart</h4>\n      <div class=\"site-pagination\">\n        <a href=\"{{ route('home') }}\">Home</a> /\n        <a href=\"#\">Cart</a>\n      </div>\n    </div>\n  </div>\n  <!-- Page info end -->\n\n\n  <!-- cart section end -->\n  <section class=\"cart-section spad\">\n    <div class=\"container\">\n      <div class=\"row\">\n        <div class=\"col-lg-8\">\n          @php\n           $total = 0;\n          @endphp\n          @if(session('cart'))\n          <div class=\"cart-table\">\n            <h3>Your Cart</h3>\n            <div class=\"cart-table-warp\">\n              <table>\n                <thead>\n                  <tr>\n                    <th class=\"product-th\">Product</th>\n                    <th class=\"quy-th\">Quantity</th>\n                    <th class=\"size-th\">Brand</th>\n                    <th class=\"total-th\">Price</th>\n                    <th class=\"total-th\">Action</th>\n                  </tr>\n                </thead>\n                <tbody>\n                  @foreach(session('cart') as $id => $details)\n                  <tr>\n                    <td class=\"product-col\">\n                      <img src=\"{{ $details['photo'] }}\" alt=\"\">\n                      <div class=\"pc-title\">\n                        <h4>{{ $details['name'] }}</h4>\n                        <p>$ {{ number_format($details['price'], 0) }}</p>\n                      </div>\n                    </td>\n                    <td data-th=\"Quantity\" class=\"quy-col\">\n                      <div class=\"quantity\">\n                        <div class=\"pro-qty\">\n                          <input type=\"text\" class=\"new-quantity\" value=\"{{ $details['quantity'] }}\">\n                        </div>\n                      </div>\n                    </td>\n                    <td data-th=\"Brand\" class=\"size-col\">\n                      <h4>{{ $details['brand'] }}</h4>\n                    </td>\n                    <td data-th=\"Price\" class=\"total-col\">\n                      <h4>$ {{ number_format( $details['price'] * $details['quantity'] , 0) }}</h4>\n                      @php\n                        $total += $details['price'] * $details['quantity'];\n                      @endphp\n                    </td>\n                    @csrf\n                    <td class=\"actions text-center\" data-th=\"\">\n                      <button class=\"btn btn-info btn-sm update_cart-cart\" data-id=\"{{ $id }}\"><i class=\"fa fa-refresh\"></i></button>\n                      <button class=\"btn btn-danger btn-sm remove-from-cart\" data-id=\"{{ $id }}\"><i class=\"fa fa-trash-o\"></i></button>\n                    </td>\n                  </tr>\n                @endforeach\n                </tbody>\n              </table>\n            </div>\n            <div class=\"total-cost\">\n              <h6>Total <span>$ {{ number_format($total, 0) }}</span></h6>\n            </div>\n          </div>\n          @endif\n        </div>\n        <div class=\"col-lg-4 card-right\">\n          @if(session('cart'))\n          <a href=\"{{ route('cekout') }}\" class=\"site-btn\">Proceed to checkout</a>\n          @endif\n          <a href=\"{{ route('home') }}\" class=\"site-btn sb-dark\">Continue shopping</a>\n        </div>\n      </div>\n    </div>\n  </section>\n  \n\t<!-- Related product section -->\n\t<section class=\"related-product-section\">\n\t\t<div class=\"container\">\n\t\t\t<div class=\"section-title text-uppercase\">\n\t\t\t\t<h2>Continue Shopping</h2>\n      </div>\n      <?php $no=0; ?>\n\t\t\t<div class=\"row\">\n        @foreach ($produk as $data)\n          <div class=\"col-lg-3 col-sm-6\">\n            <div class=\"product-item\">\n              <div class=\"pi-pic\">\n                @if ($no == 0)\n                  <div class=\"tag-new\">New</div>\n                @else\n                @endif\n                <img src=\"{{ asset( $data->gambar ) }}\" alt=\"\">\n                <div class=\"pi-links\">\n                  <a href=\"{{ url('add-to-cart/'.$data->id) }}\" class=\"add-card\"><i class=\"flaticon-bag\"></i><span>ADD TO CART</span></a>\n                  <a href=\"#\" class=\"wishlist-btn\"><i class=\"flaticon-heart\"></i></a>\n                </div>\n              </div>\n              <div class=\"pi-text\">\n                <h6>$ {{ number_format($data->price, 0) }}</h6>\n                <p>{{ $data->merek->name }} {{$data->type}}</p>\n              </div>\n            </div>\n          </div>\n          <?php $no++ ?>\n        @endforeach\n\t\t\t</div>\n\t\t</div>\n\t</section>\n\t<!-- Related product section end -->\n@endsection\n"
  },
  {
    "path": "resources/views/user/category.blade.php",
    "content": "@extends('template_frontend.home')\n@section('content')\n    <!-- Page info -->\n    <div class=\"page-top-info\">\n        <div class=\"container\">\n            <h4>CATEGORY PAGE</h4>\n            <div class=\"site-pagination\">\n                <a href=\"{{ route('home') }}\">Home</a> /\n                <a href=\"#\">{{ $judul->name }}</a>\n            </div>\n        </div>\n    </div>\n    <!-- Page info end -->\n\n\t<!-- Category section -->\n\t<section class=\"category-section spad\">\n\t\t<div class=\"container\">\n\t\t\t<div class=\"row\">\n\t\t\t\t<div class=\"col-lg-3 order-2 order-lg-1\">\n\t\t\t\t\t<div class=\"filter-widget\">\n\t\t\t\t\t\t<h2 class=\"fw-title\">Brand</h2>\n\t\t\t\t\t\t<ul class=\"category-menu\">\n                            @foreach ($merek as $data)\n                                <li><a href=\"{{ route('category', $data->id) }}\">{{ $data->name }}<span>({{ $data->jumlah($data->id) }})</span></a></li>\n                            @endforeach\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"col-lg-9  order-1 order-lg-2 mb-5 mb-lg-0\">\n\t\t\t\t\t<div class=\"row\">\n                        @if ($mobil->count() > 0)\n                            @foreach ($mobil as $data)\n                                <div class=\"col-lg-4 col-sm-6\">\n                                    <div class=\"product-item\">\n                                        <div class=\"pi-pic\">\n                                            @if ($data->id == $new->id)\n                                                <div class=\"tag-new\">New</div>\n                                            @else\n                                            @endif\n                                            <img src=\"{{ asset( $data->gambar ) }}\" alt=\"\">\n                                            <div class=\"pi-links\">\n                                                <a href=\"{{ url('add-to-cart/'.$data->id) }}\" class=\"add-card\"><i class=\"flaticon-bag\"></i><span>ADD TO\n                                                        CART</span></a>\n                                                <a href=\"#\" class=\"wishlist-btn\"><i class=\"flaticon-heart\"></i></a>\n                                            </div>\n                                        </div>\n                                        <div class=\"pi-text\">\n                                            <h6>$ {{ number_format($data->price, 0) }}</h6>\n                                            <p>{{ $data->merek->name }} {{$data->type}}</p>\n                                        </div>\n                                    </div>\n                                </div>\n                            @endforeach\n                            {{ $mobil->links() }}\n                        @else\n                            <div class=\"col-12 text-center\">\n                                <h2>Tidak ada Mobil</h2>\n                            </div>\n                        @endif\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</section>\n\t<!-- Category section end -->\n@endsection\n"
  },
  {
    "path": "resources/views/user/cekout.blade.php",
    "content": "@extends('template_frontend.home')\n@section('content')\n\n\t<!-- Page info -->\n\t<div class=\"page-top-info\">\n\t\t<div class=\"container\">\n\t\t\t<h4>Cekout</h4>\n\t\t\t<div class=\"site-pagination\">\n\t\t\t\t<a href=\"{{ route('home') }}\">Home</a> /\n\t\t\t\t<a href=\"#\">Cekout</a>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<!-- Page info end -->\n\n\t<!-- checkout section  -->\n\t<section class=\"checkout-section spad\">\n\t\t<div class=\"container\">\n\t\t\t<div class=\"row\">\n\t\t\t\t<div class=\"col-lg-8 order-2 order-lg-1\">\n\t\t\t\t\t<form class=\"checkout-form\" method=\"post\" action=\"{{ route('proses_cekout', Auth::user()->id) }}\">\n\t\t\t\t\t\t@csrf\n\t\t\t\t\t\t<div class=\"cf-title\">Billing Address</div>\n\t\t\t\t\t\t<div class=\"row address-inputs\">\n\t\t\t\t\t\t\t<div class=\"col-md-12\">\n\t\t\t\t\t\t\t\t@if(Auth::user()->name)\n\t\t\t\t\t\t\t\t\t<input type=\"text\" name=\"name\" value=\"{{ Auth::user()->name }}\">\n\t\t\t\t\t\t\t\t@else\n\t\t\t\t\t\t\t\t\t<input type=\"text\" name=\"name\" placeholder=\"Nama\">\n\t\t\t\t\t\t\t\t@endif\n\t\t\t\t\t\t\t\t@error('name')\n\t\t\t\t\t\t\t\t \t<div class=\"alert alert-danger\">{{ $message }}</div>\n\t\t\t\t\t\t\t\t@enderror\n\t\t\t\t\t\t\t\t@if(Auth::user()->address)\n\t\t\t\t\t\t\t\t\t<input type=\"text\" name=\"address\" value=\"{{ Auth::user()->address }}\">\n\t\t\t\t\t\t\t\t@else\n\t\t\t\t\t\t\t\t\t<input type=\"text\" name=\"address\" placeholder=\"Alamat\">\n\t\t\t\t\t\t\t\t@endif\n\t\t\t\t\t\t\t\t@error('address')\n\t\t\t\t\t\t\t\t \t<div class=\"alert alert-danger\">{{ $message }}</div>\n\t\t\t\t\t\t\t\t@enderror\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"col-md-6\">\n\t\t\t\t\t\t\t\t@if(Auth::user()->kelurahan)\n\t\t\t\t\t\t\t\t\t<input type=\"text\" name=\"kelurahan\" value=\"{{ Auth::user()->kelurahan }}\">\n\t\t\t\t\t\t\t\t@else\n\t\t\t\t\t\t\t\t\t<input type=\"text\" name=\"kelurahan\" placeholder=\"Kelurahan\">\n\t\t\t\t\t\t\t\t@endif\n\t\t\t\t\t\t\t\t@error('kelurahan')\n\t\t\t\t\t\t\t\t \t<div class=\"alert alert-danger\">{{ $message }}</div>\n\t\t\t\t\t\t\t\t@enderror\n\t\t\t\t\t\t\t\t@if(Auth::user()->kabupaten)\n\t\t\t\t\t\t\t\t\t<input type=\"text\" name=\"kabupaten\" value=\"{{ Auth::user()->kabupaten }}\">\n\t\t\t\t\t\t\t\t@else\n\t\t\t\t\t\t\t\t\t<input type=\"text\" name=\"kabupaten\" placeholder=\"Kabupaten\">\n\t\t\t\t\t\t\t\t@endif\n\t\t\t\t\t\t\t\t@error('kabupaten')\n\t\t\t\t\t\t\t\t \t<div class=\"alert alert-danger\">{{ $message }}</div>\n\t\t\t\t\t\t\t\t@enderror\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"col-md-6\">\n\t\t\t\t\t\t\t\t@if(Auth::user()->kecamatan)\n\t\t\t\t\t\t\t\t\t<input type=\"text\" name=\"kecamatan\" value=\"{{ Auth::user()->kecamatan }}\">\n\t\t\t\t\t\t\t\t@else\n\t\t\t\t\t\t\t\t\t<input type=\"text\" name=\"kecamatan\" placeholder=\"Kecamatan\">\n\t\t\t\t\t\t\t\t@endif\n\t\t\t\t\t\t\t\t@error('kecamatan')\n\t\t\t\t\t\t\t\t \t<div class=\"alert alert-danger\">{{ $message }}</div>\n\t\t\t\t\t\t\t\t@enderror\n\t\t\t\t\t\t\t\t@if(Auth::user()->provinsi)\n\t\t\t\t\t\t\t\t\t<input type=\"text\" name=\"provinsi\" value=\"{{ Auth::user()->provinsi }}\">\n\t\t\t\t\t\t\t\t@else\n\t\t\t\t\t\t\t\t\t<input type=\"text\" name=\"provinsi\" placeholder=\"Provinsi\">\n\t\t\t\t\t\t\t\t@endif\n\t\t\t\t\t\t\t\t@error('provinsi')\n\t\t\t\t\t\t\t\t \t<div class=\"alert alert-danger\">{{ $message }}</div>\n\t\t\t\t\t\t\t\t@enderror\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"col-md-12\">\n\t\t\t\t\t\t\t\t@if(Auth::user()->email)\n\t\t\t\t\t\t\t\t\t<input type=\"text\" name=\"email\" value=\"{{ Auth::user()->email }}\">\n\t\t\t\t\t\t\t\t@else\n\t\t\t\t\t\t\t\t\t<input type=\"text\" name=\"email\" placeholder=\"Email\">\n\t\t\t\t\t\t\t\t@endif\n\t\t\t\t\t\t\t\t@error('email')\n\t\t\t\t\t\t\t\t \t<div class=\"alert alert-danger\">{{ $message }}</div>\n\t\t\t\t\t\t\t\t@enderror\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"col-md-6\">\n\t\t\t\t\t\t\t\t@if(Auth::user()->kode_pos)\n\t\t\t\t\t\t\t\t\t<input type=\"text\" name=\"kode_pos\" value=\"{{ Auth::user()->kode_pos }}\">\n\t\t\t\t\t\t\t\t@else\n\t\t\t\t\t\t\t\t<input type=\"text\" name=\"kode_pos\" placeholder=\"Kode Pos\">\n\t\t\t\t\t\t\t\t@endif\n\t\t\t\t\t\t\t\t@error('kode_pos')\n\t\t\t\t\t\t\t\t \t<div class=\"alert alert-danger\">{{ $message }}</div>\n\t\t\t\t\t\t\t\t@enderror\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"col-md-6\">\n\t\t\t\t\t\t\t\t@if(Auth::user()->telepon)\n\t\t\t\t\t\t\t\t\t<input type=\"text\" name=\"telepon\" value=\"{{ Auth::user()->telepon }}\">\n\t\t\t\t\t\t\t\t@else\n\t\t\t\t\t\t\t\t<input type=\"text\" name=\"telepon\" placeholder=\"Nomor Telepon\">\n\t\t\t\t\t\t\t\t@endif\n\t\t\t\t\t\t\t\t@error('telepon')\n\t\t\t\t\t\t\t\t \t<div class=\"alert alert-danger\">{{ $message }}</div>\n\t\t\t\t\t\t\t\t@enderror\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<button class=\"site-btn submit-order-btn\">Place Order</button>\n\t\t\t\t\t</form>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"col-lg-4 order-1 order-lg-2\">\n\t\t\t\t\t@php\n\t\t\t\t\t\t$total = 0;\n\t\t\t\t\t@endphp\n\t\t\t\t\t@if(session('cart'))\n\t\t\t\t\t\t<div class=\"checkout-cart\">\n\t\t\t\t\t\t\t<h3>Your Cart</h3>\n\t\t\t\t\t\t\t<ul class=\"product-list\">\n\t\t\t\t\t\t\t@foreach(session('cart') as $id => $details)\n\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t\t<div class=\"pl-thumb\"><img src=\"{{ $details['photo'] }}\" alt=\"\"></div>\n\t\t\t\t\t\t\t\t\t<h6 style=\"margin-top: -13px;\">{{ $details['name'] }}</h6>\n\t\t\t\t\t\t\t\t\t<span>Quantity: {{ $details['quantity'] }}</span>\n\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t@endforeach\n\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t\t<ul class=\"price-list\">\n\t\t\t\t\t\t\t\t@php\n\t\t\t\t\t\t\t\t$total += $details['price'] * $details['quantity'];\n\t\t\t\t\t\t\t\t@endphp\n\t\t\t\t\t\t\t\t<li>Sub Total<span style=\"width: 120px;\">$ {{ number_format($total, 0) }}</span></li>\n\t\t\t\t\t\t\t\t<li>PPN<span style=\"width: 120px;\">10%</span></li>\n\t\t\t\t\t\t\t\t@php\n\t\t\t\t\t\t\t\t\t$total += ($total * 10 / 100)\n\t\t\t\t\t\t\t\t@endphp\n\t\t\t\t\t\t\t\t<li class=\"total\">Total<span style=\"width: 120px;\">$ {{ number_format($total, 0) }}</span></li>\n\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t@endif\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</section>\n\t<!-- checkout section end -->\n\n@endsection\n"
  },
  {
    "path": "resources/views/user/edit.blade.php",
    "content": "<!DOCTYPE html>\n<html>\n<head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n  <link rel=\"shortcut icon\" href=\"{{ asset('favicon.ico') }}\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n  <meta name=\"theme-color\" content=\"#000000\">\n  <meta name=\"description\" content=\"Web site created using create-react-app\">\n  <link rel=\"apple-touch-icon\" href=\"{{ asset('logo192.png') }}\">\n  <link rel=\"manifest\" href=\"{{ asset('manifest.json') }}\">\n  <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n  <title>Laravel &mdash; CRUD</title>\n  <meta name=\"description\" content=\"\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n  <!-- Google Fonts\n\t============================================ -->\n  <link href=\"https://fonts.googleapis.com/css?family=Open+Sans:300,300i,400,400i,700,700i,800\" rel=\"stylesheet\">\n  <!-- Bootstrap CSS\n\t============================================ -->\n  <link rel=\"stylesheet\" href=\"{{ asset('admin/css/bootstrap.min.css') }}\">\n  <!-- Bootstrap CSS\n\t============================================ -->\n  <link rel=\"stylesheet\" href=\"{{ asset('admin/css/font-awesome.min.css') }}\">\n  <!-- adminpro icon CSS\n\t============================================ -->\n  <link rel=\"stylesheet\" href=\"{{ asset('admin/css/adminpro-custon-icon.css') }}\">\n  <!-- meanmenu icon CSS\n\t============================================ -->\n  <link rel=\"stylesheet\" href=\"{{ asset('admin/css/meanmenu.min.css') }}\">\n  <!-- mCustomScrollbar CSS\n\t============================================ -->\n  <link rel=\"stylesheet\" href=\"{{ asset('admin/css/jquery.mCustomScrollbar.min.css') }}\">\n  <!-- animate CSS\n\t============================================ -->\n  <link rel=\"stylesheet\" href=\"{{ asset('admin/css/animate.css') }}\">\n  <!-- data-table CSS\n\t============================================ -->\n  <link rel=\"stylesheet\" href=\"{{ asset('admin/css/data-table/bootstrap-table.css') }}\">\n  <link rel=\"stylesheet\" href=\"{{ asset('admin/css/data-table/bootstrap-editable.css') }}\">\n  <!-- normalize CSS\n\t============================================ -->\n  <link rel=\"stylesheet\" href=\"{{ asset('admin/css/normalize.css') }}\">\n  <!-- charts C3 CSS\n\t============================================ -->\n  <link rel=\"stylesheet\" href=\"{{ asset('admin/css/c3.min.css') }}\">\n  <!-- forms CSS\n\t============================================ -->\n  <link rel=\"stylesheet\" href=\"{{ asset('admin/css/form/all-type-forms.css') }}\">\n  <link rel=\"stylesheet\" href=\"{{ asset('admin/css/form/themesaller-forms.css') }}\">\n  <!-- modals CSS\n  ============================================ -->\n  <link rel=\"stylesheet\" href=\"{{ asset('admin/css/modals.css') }}\">\n  <!-- touchspin CSS\n  ============================================ -->\n  <link rel=\"stylesheet\" href=\"{{ asset('admin/css/touchspin/jquery.bootstrap-touchspin.min.css') }}\">\n  <!-- datapicker CSS\n  ============================================ -->\n  <link rel=\"stylesheet\" href=\"{{ asset('admin/css/datapicker/datepicker3.css') }}\">\n  <!-- colorpicker CSS\n  ============================================ -->\n  <link rel=\"stylesheet\" href=\"{{ asset('admin/css/colorpicker/colorpicker.css') }}\">\n  <!-- select2 CSS\n\t============================================ -->\n  <link rel=\"stylesheet\" href=\"{{ asset('admin/css/select2/select2.min.css') }}\">\n  <!-- chosen CSS\n  ============================================ -->\n  <link rel=\"stylesheet\" href=\"{{ asset('admin/css/chosen/bootstrap-chosen.css') }}\">\n  <!-- ionRangeSlider CSS\n  ============================================ -->\n  <link rel=\"stylesheet\" href=\"{{ asset('admin/css/ionRangeSlider/ion.rangeSlider.css') }}\">\n  <link rel=\"stylesheet\" href=\"{{ asset('admin/css/ionRangeSlider/ion.rangeSlider.skinFlat.css') }}\">\n  <!-- style CSS\n\t============================================ -->\n  <link rel=\"stylesheet\" href=\"{{ asset('admin/style.css') }}\">\n\t<link rel=\"stylesheet\" href=\"{{ asset('user/css/animate.css') }}\">\n\t<link rel=\"stylesheet\" href=\"{{ asset('user/css/style.css') }}\">\n  <!-- responsive CSS\n\t============================================ -->\n  <link rel=\"stylesheet\" href=\"{{ asset('admin/css/responsive.css') }}\">\n  <!-- responsive CSS\n\t============================================ -->\n  <link rel=\"stylesheet\" href=\"{{ asset('admin/css/responsive.css') }}\">\n  <!-- modernizr JS\n  ============================================ -->\n  <script src=\"{{ asset('admin/js/vendor/modernizr-2.8.3.min.js') }}\"></script>\n  <!-- Style Css -->\n  <style media=\"screen\">\n    body {\n      height: 140vh;\n      transition: 2s;\n      background-color: transparent;\n    }\n  </style>\n\n</head>\n<body id=\"randombg\">\n\n\t<!-- Page Preloder -->\n\t<div id=\"preloder\">\n\t\t<div class=\"loader\"></div>\n\t</div>\n\n  <div class=\"container\">\n    <div class=\"col-lg-12\">\n      <div class=\"sparkline11-list shadow-reset mg-t-30\">\n        <div class=\"sparkline11-hd\">\n          <div class=\"main-sparkline11-hd\">\n            <h1>Edit Profile</h1>\n            <div class=\"sparkline11-outline-icon\">\n              <span class=\"sparkline11-collapse-link\"><i class=\"fa fa-chevron-up\"></i></span>\n              <span><i class=\"fa fa-wrench\"></i></span>\n              <span class=\"sparkline11-collapse-close\"><a href=\"{{ route('profil', Auth::user()->id) }}\"><i class=\"fa fa-times\"></i></a></span>\n            </div>\n          </div>\n        </div>\n        <div class=\"sparkline11-graph\">\n          <div class=\"input-knob-dial-wrap\">\n            <div class=\"row\">\n              <div class=\"col-lg-12\">\n                <form action=\"{{ route('akun.simpan', Auth::user()->id) }}\" method=\"post\" enctype=\"multipart/form-data\">\n                  @csrf\n                  <div class=\"form-group\">\n                    <label>Username</label>\n                    <input type=\"text\" class=\"form-control\" name=\"name\" value=\"{{ $user->name }}\" autocomplete=\"off\">\n                  </div>\n                  <div class=\"form-group\">\n                    <label>Email</label>\n                    <input type=\"text\" value=\"{{ $user->email }}\" autocomplete=\"off\" name=\"email\" class=\"form-control\">\n                  </div>\n                  @if ($user->pekerjaan)\n                    <div class=\"form-group\">\n                      <label>Pekerjaan</label>\n                      <input type=\"text\" value=\"{{ $user->pekerjaan }}\" autocomplete=\"off\" name=\"pekerjaan\" class=\"form-control\">\n                    </div>\n                  @else\n                    <div class=\"form-group\">\n                      <label>Pekerjaan</label>\n                      <input type=\"text\" placeholder=\"Pekerjaan\" autocomplete=\"off\" name=\"pekerjaan\" class=\"form-control\">\n                    </div>\n                  @endif\n                  @if ($user->tanggal_lahir)\n                    <div class=\"form-group data-custon-pick\" id=\"data_3\">\n                      <label><h6>Tanggal Lahir</h6></label>\n                      <div class=\"input-group date\">\n                        <span class=\"input-group-addon\"><i class=\"fa fa-calendar\"></i></span>\n                        <input type=\"text\" name=\"tgl_lahir\" class=\"form-control\" value=\"{{ date('m/d/Y', strtotime($user->tanggal_lahir)) }}\">\n                      </div>\n                    </div>\n                  @else\n                    <div class=\"form-group data-custon-pick\" id=\"data_3\">\n                      <label><h6>Tanggal Lahir</h6></label>\n                      <div class=\"input-group date\">\n                        <span class=\"input-group-addon\"><i class=\"fa fa-calendar\"></i></span>\n                        <input type=\"text\" name=\"tgl_lahir\" class=\"form-control\" value=\"22/11/2000\">\n                      </div>\n                    </div>\n                  @endif\n                  <div class=\"form-group\">\n                    <div class=\"row\">\n        \t\t\t\t\t\t\t<div class=\"col-md-12\">\n        \t\t\t\t\t\t\t\t@if($user->address)\n                          <div class=\"form-group\">\n                            <label>Alamat</label>\n                            <input type=\"text\" class=\"form-control\" name=\"address\" value=\"{{ $user->address }}\">\n                          </div>\n        \t\t\t\t\t\t\t\t@else\n                          <div class=\"form-group\">\n                            <label>Alamat</label>\n                            <input type=\"text\" class=\"form-control\" name=\"address\" placeholder=\"Alamat\">\n                          </div>\n        \t\t\t\t\t\t\t\t@endif\n        \t\t\t\t\t\t\t</div>\n        \t\t\t\t\t\t\t<div class=\"col-md-6\">\n        \t\t\t\t\t\t\t\t@if($user->kelurahan)\n                          <div class=\"form-group\">\n                            <label>Kelurahan</label>\n                            <input type=\"text\" class=\"form-control\" name=\"kelurahan\" value=\"{{ $user->kelurahan }}\">\n                          </div>\n        \t\t\t\t\t\t\t\t@else\n                          <div class=\"form-group\">\n                            <label>Kelurahan</label>\n                            <input type=\"text\" class=\"form-control\" name=\"kelurahan\" placeholder=\"Kelurahan\">\n                          </div>\n        \t\t\t\t\t\t\t\t@endif\n        \t\t\t\t\t\t\t\t@if($user->kabupaten)\n                          <div class=\"form-group\">\n                            <label>Kabupaten</label>\n                            <input type=\"text\" class=\"form-control\" name=\"kabupaten\" value=\"{{ $user->kabupaten }}\">\n                          </div>\n        \t\t\t\t\t\t\t\t@else\n                          <div class=\"form-group\">\n                            <label>Kabupaten</label>\n                            <input type=\"text\" class=\"form-control\" name=\"kabupaten\" placeholder=\"Kabupaten\">\n                          </div>\n        \t\t\t\t\t\t\t\t@endif\n        \t\t\t\t\t\t\t</div>\n        \t\t\t\t\t\t\t<div class=\"col-md-6\">\n        \t\t\t\t\t\t\t\t@if($user->kecamatan)\n                          <div class=\"form-group\">\n                            <label>Kecamatan</label>\n                            <input type=\"text\" class=\"form-control\" name=\"kecamatan\" value=\"{{ $user->kecamatan }}\">\n                          </div>\n        \t\t\t\t\t\t\t\t@else\n                          <div class=\"form-group\">\n                            <label>Kecamatan</label>\n                            <input type=\"text\" class=\"form-control\" name=\"kecamatan\" placeholder=\"Kecamatan\">\n                          </div>\n        \t\t\t\t\t\t\t\t@endif\n        \t\t\t\t\t\t\t\t@if($user->provinsi)\n                          <div class=\"form-group\">\n                            <label>Provinsi</label>\n                            <input type=\"text\" class=\"form-control\" name=\"provinsi\" value=\"{{ $user->provinsi }}\">\n                          </div>\n        \t\t\t\t\t\t\t\t@else\n                          <div class=\"form-group\">\n                            <label>Provinsi</label>\n                            <input type=\"text\" class=\"form-control\" name=\"provinsi\" placeholder=\"Provinsi\">\n                          </div>\n        \t\t\t\t\t\t\t\t@endif\n        \t\t\t\t\t\t\t</div>\n                    </div>\n                  </div>\n                  @if($user->telepon)\n                    <div class=\"form-group\">\n                      <label>Nomor Telepon</label>\n                      <input type=\"text\" class=\"form-control\" name=\"telepon\" value=\"{{ $user->telepon }}\">\n                    </div>\n                  @else\n                    <div class=\"form-group\">\n                      <label>Nomor Telepon</label>\n                      <input type=\"text\" class=\"form-control\" name=\"telepon\" placeholder=\"+62 8xx xxxx xxxx\">\n                    </div>\n                  @endif\n                  <div class=\"form-group\">\n                    <label>Password</label>\n                    <input class=\"form-control\" placeholder=\"Password\" type=\"password\" name=\"password\" autocomplete=\"off\">\n                  </div>\n                  <div class=\"form-group\">\n                    <label for=\"exampleInputFile\">Foto</label>\n                    <div class=\"file-upload-inner ts-forms\">\n                      <div class=\"input prepend-big-btn\">\n                        <label class=\"icon-right\" for=\"prepend-big-btn\">\n                          <i class=\"fa fa-download\"></i>\n                        </label>\n                        <div class=\"file-button\">\n                          Browse\n                          <input type=\"file\" name=\"gambar\" onchange=\"document.getElementById('prepend-big-btn').value = this.value;\">\n                        </div>\n                        <input type=\"text\" id=\"prepend-big-btn\" name=\"gambar\" placeholder=\"no file selected\">\n                      </div>\n                    </div>\n                  </div><br>\n\n                  <div class=\"form-group\">\n                    <button class=\"btn btn-primary btn-block\">Simpan Perubahan</button>\n                  </div>\n                </form>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n\n\n  <!-- jquery\n  ============================================ -->\n  <script src=\"{{ asset('admin/js/vendor/jquery-1.11.3.min.js') }}\"></script>\n  <!-- bootstrap JS\n  ============================================ -->\n  <script src=\"{{ asset('admin/js/bootstrap.min.js') }}\"></script>\n  <!-- meanmenu JS\n  ============================================ -->\n  <script src=\"{{ asset('admin/js/jquery.meanmenu.js') }}\"></script>\n  <!-- mCustomScrollbar JS\n  ============================================ -->\n  <script src=\"{{ asset('admin/js/jquery.mCustomScrollbar.concat.min.js') }}\"></script>\n  <!-- sticky JS\n  ============================================ -->\n  <script src=\"{{ asset('admin/js/jquery.sticky.js') }}\"></script>\n  <!-- scrollUp JS\n  ============================================ -->\n  <script src=\"{{ asset('admin/js/jquery.scrollUp.min.js') }}\"></script>\n  <!-- counterup JS\n  ============================================ -->\n  <script src=\"{{ asset('admin/js/counterup/jquery.counterup.min.js') }}\"></script>\n  <script src=\"{{ asset('admin/js/counterup/waypoints.min.js') }}\"></script>\n  <script src=\"{{ asset('admin/js/counterup/counterup-active.js') }}\"></script>\n  <!-- peity JS\n  ============================================ -->\n  <script src=\"{{ asset('admin/js/peity/jquery.peity.min.js') }}\"></script>\n  <script src=\"{{ asset('admin/js/peity/peity-active.js') }}\"></script>\n  <!-- sparkline JS\n  ============================================ -->\n  <script src=\"{{ asset('admin/js/sparkline/jquery.sparkline.min.js') }}\"></script>\n  <script src=\"{{ asset('admin/js/sparkline/sparkline-active.js') }}\"></script>\n  <!-- flot JS\n  ============================================ -->\n  <script src=\"{{ asset('admin/js/flot/Chart.min.js') }}\"></script>\n  <script src=\"{{ asset('admin/js/flot/flot-active.js') }}\"></script>\n  <!-- map JS\n  ============================================ -->\n  <script src=\"{{ asset('admin/js/map/raphael.min.js') }}\"></script>\n  <script src=\"{{ asset('admin/js/map/jquery.mapael.js') }}\"></script>\n  <script src=\"{{ asset('admin/js/map/france_departments.js') }}\"></script>\n  <script src=\"{{ asset('admin/js/map/world_countries.js') }}\"></script>\n  <script src=\"{{ asset('admin/js/map/usa_states.js') }}\"></script>\n  <script src=\"{{ asset('admin/js/map/map-active.js') }}\"></script>\n  <!-- data table JS\n  ============================================ -->\n  <script src=\"{{ asset('admin/js/data-table/bootstrap-table.js') }}\"></script>\n  <script src=\"{{ asset('admin/js/data-table/tableExport.js') }}\"></script>\n  <script src=\"{{ asset('admin/js/data-table/data-table-active.js') }}\"></script>\n  <script src=\"{{ asset('admin/js/data-table/bootstrap-table-editable.js') }}\"></script>\n  <script src=\"{{ asset('admin/js/data-table/bootstrap-editable.js') }}\"></script>\n  <script src=\"{{ asset('admin/js/data-table/bootstrap-table-resizable.js') }}\"></script>\n  <script src=\"{{ asset('admin/js/data-table/colResizable-1.5.source.js') }}\"></script>\n  <script src=\"{{ asset('admin/js/data-table/bootstrap-table-export.js') }}\"></script>\n  <!-- modal JS\n  ============================================ -->\n  <script src=\"{{ asset('admin/js/modal-active.js') }}\"></script>\n  <!-- touchspin JS\n  ============================================ -->\n  <script src=\"{{ asset('admin/js/touchspin/jquery.bootstrap-touchspin.min.js') }}\"></script>\n  <script src=\"{{ asset('admin/js/touchspin/touchspin-active.js') }}\"></script>\n  <!-- colorpicker JS\n  ============================================ -->\n  <script src=\"{{ asset('admin/js/colorpicker/jquery.spectrum.min.js') }}\"></script>\n  <script src=\"{{ asset('admin/js/colorpicker/color-picker-active.js') }}\"></script>\n  <!-- datapicker JS\n  ============================================ -->\n  <script src=\"{{ asset('admin/js/datapicker/bootstrap-datepicker.js') }}\"></script>\n  <script src=\"{{ asset('admin/js/datapicker/datepicker-active.js') }}\"></script>\n  <!-- input-mask JS\n  ============================================ -->\n  <script src=\"{{ asset('admin/js/input-mask/jasny-bootstrap.min.js') }}\"></script>\n  <!-- chosen JS\n  ============================================ -->\n  <script src=\"{{ asset('admin/js/chosen/chosen.jquery.js') }}\"></script>\n  <script src=\"{{ asset('admin/js/chosen/chosen-active.js') }}\"></script>\n  <!-- ionRangeSlider JS\n  ============================================ -->\n  <script src=\"{{ asset('admin/js/ionRangeSlider/ion.rangeSlider.min.js') }}\"></script>\n  <script src=\"{{ asset('admin/js/ionRangeSlider/ion.rangeSlider.active.js') }}\"></script>\n  <!-- rangle-slider JS\n  ============================================ -->\n  <script src=\"{{ asset('admin/js/rangle-slider/jquery-ui-1.10.4.custom.min.js') }}\"></script>\n  <script src=\"{{ asset('admin/js/rangle-slider/jquery-ui-touch-punch.min.js') }}\"></script>\n  <script src=\"{{ asset('admin/js/rangle-slider/rangle-active.js') }}\"></script>\n  <!-- knob JS\n  ============================================ -->\n  <script src=\"{{ asset('admin/js/knob/jquery.knob.js') }}\"></script>\n  <script src=\"{{ asset('admin/js/knob/knob-active.js') }}\"></script>\n  <!-- select2 JS\n  ============================================ -->\n  <script src=\"{{ asset('admin/js/select2/select2.full.min.js') }}\"></script>\n  <script src=\"{{ asset('admin/js/select2/select2-active.js') }}\"></script>\n  <!-- main JS\n  ============================================ -->\n  <script src=\"{{ asset('admin/js/main.js') }}\"></script>\n  <script src=\"{{ asset('user/js/main.js') }}\"></script>\n\n  <!-- page script -->\n  <script>\n    setInterval(function() {\n      var red = Math.round(Math.random() * 255);\n      var green = Math.round(Math.random() * 255);\n      var blue = Math.round(Math.random() * 255);\n\n      var bg = \"background: rgba(\" + red + \",\" + green + \",\" + blue + \");\";\n      var element = document.getElementById('randombg');\n      element.style = bg;\n    }, 500);\n  </script>\n</body>\n</html>\n"
  },
  {
    "path": "resources/views/user/favorite.blade.php",
    "content": "@extends('template_frontend.home')\n@section('content')\n  \t<!-- Product filter section -->\n  \t<section class=\"product-filter-section mt-5\">\n  \t\t<div class=\"container\">\n  \t\t\t<div class=\"section-title\">\n  \t\t\t\t<h2>FAVORITE PRODUCTS</h2>\n  \t\t\t</div>\n  \t\t\t<div class=\"row\">\n          \t\t@foreach ($like as $data)\n    \t\t\t\t<div class=\"col-lg-3 col-sm-6\">\n    \t\t\t\t\t<div class=\"product-item\">\n    \t\t\t\t\t\t<div class=\"pi-pic\">\n                                @if ($data->mobil->id == $new->id)\n                                    <div class=\"tag-new\">New</div>\n                                @else\n                                @endif\n                  \t\t\t\t<a href=\"{{ route('mobil.show', $data->mobil->id) }}\"><img src=\"{{ asset( $data->mobil->gambar ) }}\" alt=\"\"></a>\n    \t\t\t\t\t\t\t<div class=\"pi-links\">\n\t\t\t\t\t\t\t\t\t<a href=\"{{ url('add-to-cart/'.$data->mobil->id) }}\" class=\"add-card\"><i class=\"flaticon-bag\"></i><span>ADD TO CART</span></a>\n\t\t\t\t\t\t\t\t\t@if ($data->mobil->like($data->mobil->id))\n\t\t\t\t\t\t\t\t\t\t<a href=\"{{ url('unlike/'.$data->mobil->id) }}\" class=\"wishlist-btn\"><i class=\"fa fa-heart\"></i></a>\n\t\t\t\t\t\t\t\t\t@else\n\t\t\t\t\t\t\t\t\t\t<a href=\"{{ url('like/'.$data->mobil->id) }}\" class=\"wishlist-btn\"><i class=\"fa fa-heart-o\"></i></a>\n\t\t\t\t\t\t\t\t\t@endif\n    \t\t\t\t\t\t\t</div>\n    \t\t\t\t\t\t</div>\n    \t\t\t\t\t\t<div class=\"pi-text\">\n                  \t\t\t\t<h6><a href=\"{{ route('mobil.show', $data->mobil->id) }}\">$ {{ number_format($data->mobil->price, 0) }}</a></h6>\n      \t\t\t\t\t\t\t<p><a href=\"{{ route('mobil.show', $data->mobil->id) }}\">{{ $data->mobil->merek->name }} {{$data->mobil->type}}</a></p>\n    \t\t\t\t\t\t</div>\n    \t\t\t\t\t</div>\n    \t\t\t\t</div>\n          \t\t@endforeach\n  \t\t\t</div>\n  \t\t</div>\n  \t</section>\n  \t<!-- Product filter section end -->\n@endsection\n"
  },
  {
    "path": "resources/views/user/history.blade.php",
    "content": "@extends('template_frontend.home')\n@section('css')\n\t<link type=\"text/css\" rel=\"stylesheet\" href=\"http://localhost/blog/public/css/style.css\" />\n@endsection\n@section('content')\n\t<!-- Page info -->\n\t<div class=\"page-top-info\">\n\t\t<div class=\"container\">\n\t\t\t<h4>Pembayaran</h4>\n\t\t\t<div class=\"site-pagination\">\n\t\t\t\t<a href=\"{{ route('home') }}\">Home</a> /\n\t\t\t\t<a href=\"#\">Pembayaran</a>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<!-- Page info end -->\n\n\t<!-- checkout section  -->\n\t<section class=\"section spad\">\n\t\t<div class=\"container\">\n        @foreach ($order as $data)\n            <div id=\"hot-post\" class=\"row hot-post\">\n                <div class=\"col-12 hot-post-left\">\n                    <div class=\"post post-row\">\n                        <a class=\"post-img\"><img src=\"{{ asset($data->mobil->gambar) }}\"></a>\n                        <div class=\"post-body\">\n                            <h3 class=\"post-title\">{{ $data->namaMobil($data->mobil_id) }}</h3>\n                            <h3 class=\"post-title\">Quantity: {{ $data->quantity }}</h3>\n                            <h3 class=\"post-title\">Total: $ {{ number_format( $data->total , 0) }}</h3>\n                            <h3 class=\"post-title\">Status: \n                                @if ($data->payment_status == 'Sudah Dibayar')\n                                    <span class=\"badge badge-success\">{{ $data->payment_status }}</span>\n                                @elseif ($data->payment_status == 'Belum Dibayar')\n                                    <span class=\"badge badge-danger\">{{ $data->payment_status }}</span>\n                                @else\n                                    <span class=\"badge badge-warning text-white\">{{ $data->payment_status }}</span>\n                                @endif\n                            </h3>\n                            <ul class=\"post-meta\">\n                                <li>{{ $data->created_at->format('l, H:i:s d M Y') }}</li>\n                            </ul>\n                            @if ($data->payment_status == 'Belum Dibayar')\n                                <form action=\"{{ route('order.destroy', $data->id) }}\" method=\"post\">\n                                    @csrf\n                                    @method('delete')\n                                    <a href=\"{{ route('pembayaran', $data->id) }}\" class=\"btn btn-primary btn-sm mr-2\" style=\"width: 100px;\">Bayar</a>\n                                    <button type=\"submit\" class=\"btn btn-danger btn-sm\" style=\"width: 100px;\" name=\"button\" onclick=\"return confirm('Yakin');\">Cancel</button>\n                                </form>\n                            @elseif ($data->payment_status == 'Dipending')\n                                <form action=\"{{ route('order.destroy', $data->id) }}\" method=\"post\">\n                                    @csrf\n                                    @method('delete')\n                                    <button type=\"submit\" class=\"btn btn-danger btn-sm\" style=\"width: 100px;\" name=\"button\" onclick=\"return confirm('Yakin');\">Cancel</button>\n                                </form>\n                            @else\n                            @endif\n                        </div>\n                    </div>\n                </div>\n            </div>\n        @endforeach\n\t\t</div>\n\t</section>\n\t<!-- checkout section end -->\n@endsection\n"
  },
  {
    "path": "resources/views/user/index.blade.php",
    "content": "@extends('template_frontend.home')\n@section('content')\n  \t<!-- Hero section -->\n  \t<section class=\"hero-section\">\n  \t\t<div class=\"hero-slider owl-carousel\">\n        @foreach ($car as $val)\n  \t\t\t<div class=\"hs-item set-bg\" data-setbg=\"{{ asset( $val->gambar) }}\">\n  \t\t\t\t<div class=\"container\">\n  \t\t\t\t\t<div class=\"row\">\n  \t\t\t\t\t\t<div class=\"col-xl-6 col-lg-7 text-white\">\n  \t\t\t\t\t\t\t<span>New Arrivals</span>\n  \t\t\t\t\t\t\t<h2>Sport Car</h2>\n  \t\t\t\t\t\t\t<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quis ipsum sus-pendisse ultrices gravida. Risus commodo viverra maecenas accumsan lacus vel facilisis. </p>\n  \t\t\t\t\t\t\t<a href=\"#\" class=\"site-btn sb-line\">DISCOVER</a>\n  \t\t\t\t\t\t\t<a href=\"{{ url('add-to-cart/'.$val->id) }}\" class=\"site-btn sb-white\">ADD TO CART</a>\n  \t\t\t\t\t\t</div>\n  \t\t\t\t\t</div>\n  \t\t\t\t</div>\n  \t\t\t</div>\n        @endforeach\n  \t\t</div>\n  \t\t<div class=\"container\">\n  \t\t\t<div class=\"slide-num-holder\" id=\"snh-1\"></div>\n  \t\t</div>\n  \t</section>\n  \t<!-- Hero section end -->\n\n  \t<!-- letest product section -->\n  \t<section class=\"top-letest-product-section\">\n  \t\t<div class=\"container\">\n  \t\t\t<div class=\"section-title\">\n  \t\t\t\t<h2>LATEST PRODUCTS</h2>\n  \t\t\t</div>\n\t\t\t<?php $no=0; ?>\n  \t\t\t<div class=\"product-slider owl-carousel\">\n          \t\t@foreach ($car as $val)\n    \t\t\t\t<div class=\"product-item\">\n    \t\t\t\t\t<div class=\"pi-pic\">\n\t\t\t\t\t\t\t@if ($no == 0)\n\t\t\t\t\t\t\t\t<div class=\"tag-new\">New</div>\n\t\t\t\t\t\t\t@else\n\t\t\t\t\t\t\t@endif\n                \t\t\t<a href=\"{{ route('mobil.show', $val->id) }}\"><img src=\"{{ asset( $val->gambar ) }}\" alt=\"\"></a>\n    \t\t\t\t\t\t<div class=\"pi-links\">\n    \t\t\t\t\t\t\t<a href=\"{{ url('add-to-cart/'.$val->id) }}\" class=\"add-card\"><i class=\"flaticon-bag\"></i><span>ADD TO CART</span></a>\n\t\t\t\t\t\t\t\t@if ($val->like($val->id))\n\t\t\t\t\t\t\t\t\t<a href=\"{{ url('unlike/'.$val->id) }}\" class=\"wishlist-btn\"><i class=\"fa fa-heart\"></i></a>\n\t\t\t\t\t\t\t\t@else\n\t\t\t\t\t\t\t\t\t<a href=\"{{ url('like/'.$val->id) }}\" class=\"wishlist-btn\"><i class=\"fa fa-heart-o\"></i></a>\n\t\t\t\t\t\t\t\t@endif\n    \t\t\t\t\t\t</div>\n    \t\t\t\t\t</div>\n    \t\t\t\t\t<div class=\"pi-text\">\n    \t\t\t\t\t\t<h6><a href=\"{{ route('mobil.show', $val->id) }}\">$ {{ number_format($val->price, 0) }}</a></h6>\n    \t\t\t\t\t\t<p><a href=\"{{ route('mobil.show', $val->id) }}\">{{ $val->merek->name }} {{$val->type}}</a></p>\n    \t\t\t\t\t</div>\n    \t\t\t\t</div>\n\t\t\t\t\t<?php $no++ ?>\n          \t\t@endforeach\n  \t\t\t</div>\n  \t\t</div>\n  \t</section>\n  \t<!-- letest product section end -->\n\n  \t<!-- Product filter section -->\n  \t<section class=\"product-filter-section\">\n  \t\t<div class=\"container\">\n  \t\t\t<div class=\"section-title\">\n  \t\t\t\t<h2>BROWSE TOP SELLING PRODUCTS</h2>\n  \t\t\t</div>\n\t\t\t<?php $no=0; ?>\n  \t\t\t<div class=\"row\">\n          \t\t@foreach ($mobil as $val)\n    \t\t\t\t<div class=\"col-lg-3 col-sm-6\">\n    \t\t\t\t\t<div class=\"product-item\">\n    \t\t\t\t\t\t<div class=\"pi-pic\">\n\t\t\t\t\t\t\t\t@if ($no == 0)\n\t\t\t\t\t\t\t\t  <div class=\"tag-new\">New</div>\n\t\t\t\t\t\t\t\t@else\n\t\t\t\t\t\t\t\t@endif\n                  \t\t\t\t<a href=\"{{ route('mobil.show', $val->id) }}\"><img src=\"{{ asset( $val->gambar ) }}\" alt=\"\"></a>\n    \t\t\t\t\t\t\t<div class=\"pi-links\">\n\t\t\t\t\t\t\t\t\t<a href=\"{{ url('add-to-cart/'.$val->id) }}\" class=\"add-card\"><i class=\"flaticon-bag\"></i><span>ADD TO CART</span></a>\n\t\t\t\t\t\t\t\t\t@if ($val->like($val->id))\n\t\t\t\t\t\t\t\t\t\t<a href=\"{{ url('unlike/'.$val->id) }}\" class=\"wishlist-btn\"><i class=\"fa fa-heart\"></i></a>\n\t\t\t\t\t\t\t\t\t@else\n\t\t\t\t\t\t\t\t\t\t<a href=\"{{ url('like/'.$val->id) }}\" class=\"wishlist-btn\"><i class=\"fa fa-heart-o\"></i></a>\n\t\t\t\t\t\t\t\t\t@endif\n    \t\t\t\t\t\t\t</div>\n    \t\t\t\t\t\t</div>\n    \t\t\t\t\t\t<div class=\"pi-text\">\n                  \t\t\t\t<h6><a href=\"{{ route('mobil.show', $val->id) }}\">$ {{ number_format($val->price, 0) }}</a></h6>\n      \t\t\t\t\t\t\t<p><a href=\"{{ route('mobil.show', $val->id) }}\">{{ $val->merek->name }} {{$val->type}}</a></p>\n    \t\t\t\t\t\t</div>\n    \t\t\t\t\t</div>\n    \t\t\t\t</div>\n\t\t\t\t\t<?php $no++ ?>\n          \t\t@endforeach\n  \t\t\t</div>\n  \t\t</div>\n  \t</section>\n  \t<!-- Product filter section end -->\n@endsection\n"
  },
  {
    "path": "resources/views/user/pembayaran.blade.php",
    "content": "@extends('template_frontend.home')\n@section('css')\n\t<link type=\"text/css\" rel=\"stylesheet\" href=\"http://localhost/blog/public/css/style.css\" />\n@endsection\n@section('content')\n\t<!-- Page info -->\n\t<div class=\"page-top-info\">\n\t\t<div class=\"container\">\n\t\t\t<h4>Pembayaran</h4>\n\t\t\t<div class=\"site-pagination\">\n\t\t\t\t<a href=\"{{ route('home') }}\">Home</a> /\n\t\t\t\t<a href=\"#\">Pembayaran</a>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<!-- Page info end -->\n\n\t<!-- checkout section  -->\n\t<section class=\"section spad\">\n\t\t<div class=\"container\">\n\t\t\t<div class=\"row\">\n\t\t\t\t<div class=\"col-lg-8 order-2 order-lg-1\">\n\t\t\t\t\t<form class=\"checkout-form\" method=\"post\" action=\"{{ route('proses_pembayaran', $order->id) }}\" enctype=\"multipart/form-data\">\n            @csrf\n            @method('patch')\n\t\t\t\t\t\t<div class=\"cf-title\">Billing Address</div>\n\t\t\t\t\t\t<div class=\"row address-inputs justify-content-center\">\n\t\t\t\t\t\t\t<div class=\"col-md-11\">\n                <div class=\"form-group\">\n                  <label>Nama Bank</label>\n                  <input type=\"text\" name=\"nama_bank\" placeholder=\"Nama Bank\" autocomplete=\"off\">\n                @error('nama_bank')\n\t\t\t\t\t\t\t\t \t<div class=\"alert alert-danger\">{{ $message }}</div>\n\t\t\t\t\t\t\t\t@enderror\n                </div>\n                <div class=\"form-group\">\n                  <label>Nama Pengirim</label>\n                  <input type=\"text\" name=\"nama_pengirim\" placeholder=\"Nama Pengirim\" autocomplete=\"off\">\n                @error('nama_pengirim')\n\t\t\t\t\t\t\t\t \t<div class=\"alert alert-danger\">{{ $message }}</div>\n\t\t\t\t\t\t\t\t@enderror\n                </div>\n                <div class=\"form-group\">\n                  <label>Bukti Transfer Pembayaran</label><br>\n                  <input type=\"file\" name=\"gambar\">\n                </div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<button class=\"site-btn submit-order-btn\">Continue</button>\n\t\t\t\t\t</form>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"col-lg-4 order-1 order-lg-2\">\n\t\t\t\t\t<div class=\"checkout-cart mb-5\">\n            <ul class=\"price-list\">\n              <li>Sub Total<span style=\"width: 120px;\">$ {{ number_format($order->total, 0) }}</span></li>\n              <li>PPN<span style=\"width: 120px;\">10%</span></li>\n              @php\n                $order->total += ($order->total * 10 / 100)\n              @endphp\n              <li class=\"total\">Total<span style=\"width: 120px;\">$ {{ number_format($order->total, 0) }}</span></li>\n            </ul>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"checkout-cart\">\n            <h3>Payment</h3>\n            <ul class=\"product-list\">\n              <li>\n                <div class=\"pl-thumb mt-3\"><img src=\"{{ asset('img/logo bca.png') }}\" alt=\"\"></div>\n                <h6 style=\"margin-top: -15px;\">Bank Central Asia</h6>\n                <span>0021 3234<br>Adhi Ariyadi</span>\n              </li>\n              <li>\n                <div class=\"pl-thumb\"><img src=\"{{ asset('img/logo mandiri.png') }}\" alt=\"\"></div>\n                <h6 style=\"margin-top: -15px;\">Bank Mandiri</h6>\n                <span>0021 3234<br>Adhi Ariyadi</span>\n              </li>\n            </ul>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n      </div>\n\t\t</div>\n\t</section>\n\t<!-- checkout section end -->\n@endsection\n"
  },
  {
    "path": "resources/views/user/profile.blade.php",
    "content": "<!doctype html>\n<html lang=\"en\">\n    <head>\n        <!-- Required meta tags -->\n        <meta charset=\"utf-8\">\n        <title>Laravel &mdash; CRUD</title>\n        <!-- Bootstrap CSS -->\n        <link rel=\"stylesheet\" href=\"{{ asset('profile/css/bootstrap.css') }}\">\n        <link rel=\"stylesheet\" href=\"{{ asset('profile/vendors/linericon/style.css') }}\">\n        <link rel=\"stylesheet\" href=\"{{ asset('profile/css/font-awesome.min.css') }}\">\n        <link rel=\"stylesheet\" href=\"{{ asset('profile/vendors/owl-carousel/owl.carousel.min.css') }}\">\n        <link rel=\"stylesheet\" href=\"{{ asset('profile/vendors/lightbox/simpleLightbox.css') }}\">\n        <link rel=\"stylesheet\" href=\"{{ asset('profile/vendors/nice-select/css/nice-select.css') }}\">\n        <link rel=\"stylesheet\" href=\"{{ asset('profile/vendors/animate-css/animate.css') }}\">\n        <link rel=\"stylesheet\" href=\"{{ asset('profile/vendors/popup/magnific-popup.css') }}\">\n        <link rel=\"stylesheet\" href=\"{{ asset('profile/vendors/flaticon/flaticon.css') }}\">\n        <!-- main css -->\n        <link rel=\"stylesheet\" href=\"{{ asset('profile/css/style.css') }}\">\n      \t<link rel=\"stylesheet\" href=\"{{ asset('user/css/animate.css') }}\">\n      \t<link rel=\"stylesheet\" href=\"{{ asset('user/css/style.css') }}\">\n        <link rel=\"stylesheet\" href=\"{{ asset('profile/css/responsive.css') }}\">\n    </head>\n    <body>\n        <!-- Page Preloder -->\n      \t<div id=\"preloder\">\n      \t\t<div class=\"loader\"></div>\n      \t</div>\n\n        <!--================Home Banner Area =================-->\n        <section class=\"home_banner_area\">\n           \t<div class=\"container box_1620\">\n           \t\t<div class=\"banner_inner d-flex align-items-center\">\n\t\t\t\t\t<div class=\"banner_content\">\n\t\t\t\t\t\t<div class=\"media\">\n\t\t\t\t\t\t\t<div class=\"d-flex\">\n                @if($user->gambar)\n                  <img src=\"{{ asset( $user->gambar ) }}\" width=\"450\" alt=\"\">\n                @else\n                  <img src=\"{{ asset('profile/img/personal.jpg') }}\" height=\"450\" alt=\"\">\n                @endif\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"media-body\">\n\t\t\t\t\t\t\t\t<div class=\"personal_text\">\n                  @if($user->name)\n\t\t\t\t\t\t\t\t\t  <h3>{{ $user->name }}</h3>\n                  @else\n\t\t\t\t\t\t\t\t\t  <h3>Donald McKinney</h3>\n                  @endif\n                  @if($user->pekerjaan)\n\t\t\t\t\t\t\t\t\t  <h4>{{ $user->pekerjaan }}</h4>\n                  @else\n\t\t\t\t\t\t\t\t\t  <h4>Junior UI/UX Developer</h4>\n                  @endif\n\t\t\t\t\t\t\t\t\t<ul class=\"list basic_info\">\n                    @if($user->tanggal_lahir)\n\t\t\t\t\t\t\t\t\t\t  <li><a href=\"#\"><i class=\"lnr lnr-calendar-full\"></i>{{ date('l, d F Y', strtotime($user->tanggal_lahir)) }}</a></li>\n                    @else\n\t\t\t\t\t\t\t\t\t\t  <li><a href=\"#\"><i class=\"lnr lnr-calendar-full\"></i>Saturday, 26 October 2002</a></li>\n                    @endif\n                    @if($user->telepon)\n\t\t\t\t\t\t\t\t\t\t  <li><a href=\"#\"><i class=\"lnr lnr-phone-handset\"></i>{{ $user->telepon }}</a></li>\n                    @else\n\t\t\t\t\t\t\t\t\t\t  <li><a href=\"#\"><i class=\"lnr lnr-phone-handset\"></i>+62 812 4683 5129</a></li>\n                    @endif\n                    @if($user->email)\n\t\t\t\t\t\t\t\t\t\t  <li><a href=\"#\"><i class=\"lnr lnr-envelope\"></i>{{ $user->email }}</a></li>\n                    @else\n\t\t\t\t\t\t\t\t\t\t  <li><a href=\"#\"><i class=\"lnr lnr-envelope\"></i>adhiariyadi40@gmail.com</a></li>\n                    @endif\n                    @if($user->address && $user->kelurahan && $user->kecamatan && $user->kabupaten && $user->provinsi)\n\t\t\t\t\t\t\t\t\t\t  <li><a href=\"#\"><i class=\"lnr lnr-home\"></i>{{ $user->address }}, {{ $user->kelurahan }}, {{ $user->kecamatan }}, {{ $user->kabupaten }}, {{ $user->provinsi }}</a></li>\n                    @else\n\t\t\t\t\t\t\t\t\t\t  <li><a href=\"#\"><i class=\"lnr lnr-home\"></i>Ponorogo, Jawa Timur</a></li>\n                    @endif\n\t\t\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t\t\t</div><br><br>\n                <a href=\"/\" class=\"btn btn-primary\">Home</a>\n                <a href=\"{{ route('edit_profil', Auth::user()->id) }}\" class=\"btn btn-success\">Edit Profile</a>\n                <a href=\"{{ route('logout') }}\" class=\"btn btn-danger\" onclick=\"event.preventDefault(); document.getElementById('logout-form').submit();\">{{ __('Logout') }}</a>\n                <form id=\"logout-form\" action=\"{{ route('logout') }}\" method=\"POST\" style=\"display: none;\">\n                  @csrf\n                </form>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n            </div>\n        </section>\n        <!--================End Home Banner Area =================-->\n\n        <!-- Optional JavaScript -->\n        <!-- jQuery first, then Popper.js, then Bootstrap JS -->\n        <script src=\"{{ asset('profile/js/jquery-3.3.1.min.js') }}\"></script>\n        <script src=\"{{ asset('profile/js/popper.js') }}\"></script>\n        <script src=\"{{ asset('profile/js/bootstrap.min.js') }}\"></script>\n        <script src=\"{{ asset('profile/js/stellar.js') }}\"></script>\n        <script src=\"{{ asset('profile/vendors/lightbox/simpleLightbox.min.js') }}\"></script>\n        <script src=\"{{ asset('profile/vendors/nice-select/js/jquery.nice-select.min.js') }}\"></script>\n        <script src=\"{{ asset('profile/vendors/isotope/imagesloaded.pkgd.min.js') }}\"></script>\n        <script src=\"{{ asset('profile/vendors/isotope/isotope.pkgd.min.js') }}\"></script>\n        <script src=\"{{ asset('profile/vendors/owl-carousel/owl.carousel.min.js') }}\"></script>\n        <script src=\"{{ asset('profile/vendors/popup/jquery.magnific-popup.min.js') }}\"></script>\n        <script src=\"{{ asset('profile/js/jquery.ajaxchimp.min.js') }}\"></script>\n        <script src=\"{{ asset('profile/vendors/counter-up/jquery.waypoints.min.js') }}\"></script>\n        <script src=\"{{ asset('profile/vendors/counter-up/jquery.counterup.min.js') }}\"></script>\n        <script src=\"{{ asset('profile/js/mail-script.js') }}\"></script>\n        <script src=\"{{ asset('profile/js/theme.js') }}\"></script>\n        <script src=\"{{ asset('user/js/main.js') }}\"></script>\n    </body>\n</html>\n"
  },
  {
    "path": "resources/views/user/show.blade.php",
    "content": "@extends('template_frontend.home')\n@section('content')\n\t<!-- Page info -->\n\t<div class=\"page-top-info\">\n\t\t<div class=\"container\">\n\t\t\t<h4>Category PAge</h4>\n\t\t\t<div class=\"site-pagination\">\n\t\t\t\t<a href=\"{{ route('home') }}\">Home</a> /\n\t\t\t\t<a href=\"#\">Shop</a>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<!-- Page info end -->\n\n\n\t<!-- product section -->\n\t<section class=\"product-section\">\n\t\t<div class=\"container\">\n\t\t\t<div class=\"back-link\">\n\t\t\t\t<a href=\"{{ route('home') }}\"> &lt;&lt; Back to Home</a>\n\t\t\t</div>\n\t\t\t<div class=\"row\">\n\t\t\t\t<div class=\"col-lg-6\">\n\t\t\t\t\t<div class=\"product-pic-zoom\">\n\t\t\t\t\t\t<img class=\"product-big-img\" src=\"{{ asset( $mobil->gambar ) }}\" alt=\"\">\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"col-lg-6 product-details\">\n\t\t\t\t\t<h2 class=\"p-title\">{{ $mobil->type }}</h2>\n\t\t\t\t\t<h3 class=\"p-price\">$ {{ number_format($mobil->price, 0) }}</h3>\n\t\t\t\t\t<h2 class=\"p-title\">Brand : <span>{{ $mobil->merek->name }}</span></h2>\n\t\t\t\t\t<h4 class=\"p-stock\">Available: <span>In Stock</span></h4>\n\t\t\t\t\t<div class=\"p-rating\">\n\t\t\t\t\t\t<i class=\"fa fa-star-o\"></i>\n\t\t\t\t\t\t<i class=\"fa fa-star-o\"></i>\n\t\t\t\t\t\t<i class=\"fa fa-star-o\"></i>\n\t\t\t\t\t\t<i class=\"fa fa-star-o\"></i>\n\t\t\t\t\t\t<i class=\"fa fa-star-o\"></i>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"p-review\">\n\t\t\t\t\t\t<a href=\"\">3587 reviews</a>|<a href=\"\">Add your review</a>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"quantity\">\n\t\t\t\t\t\t<p>Quantity</p>\n\t\t\t\t\t\t<div class=\"pro-qty\"><input class=\"newQuantity\" type=\"text\" value=\"1\"></div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<a href=\"{{ url('add-to-cart/'.$mobil->id) }}\" class=\"site-btn\">SHOP NOW</a>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</section>\n\t<!-- product section end -->\n\t\n\t<!-- RELATED PRODUCTS section -->\n\t<section class=\"related-product-section\">\n\t\t<div class=\"container\">\n\t\t\t<div class=\"section-title\">\n\t\t\t\t<h2>RELATED PRODUCTS</h2>\n\t\t\t</div>\n\t\t\t<div class=\"product-slider owl-carousel\">\n\t\t\t\t@foreach ($produk as $data)\n\t\t\t\t\t<div class=\"product-item\">\n\t\t\t\t\t\t<div class=\"pi-pic\">\n\t\t\t\t\t\t\t<img src=\"{{ asset( $data->gambar ) }}\" alt=\"\">\n\t\t\t\t\t\t\t<div class=\"pi-links\">\n\t\t\t\t\t\t\t\t<a href=\"{{ url('add-to-cart/'.$data->id) }}\" class=\"add-card\"><i class=\"flaticon-bag\"></i><span>ADD TO CART</span></a>\n\t\t\t\t\t\t\t\t<a href=\"#\" class=\"wishlist-btn\"><i class=\"flaticon-heart\"></i></a>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"pi-text\">\n\t\t\t\t\t\t\t<h6>$ {{ number_format($data->price, 0) }}</h6>\n\t\t\t\t\t\t\t<p>{{ $data->merek->name }} {{$data->type}}</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t@endforeach\n\t\t\t</div>\n\t\t</div>\n\t</section>\n\t<!-- RELATED PRODUCTS section end -->\n@endsection\n"
  },
  {
    "path": "resources/views/user/success.blade.php",
    "content": "@extends('template_frontend.home')\n@section('content')\n\t<!-- checkout section  -->\n\t<section class=\"checkout-section spad\">\n        <div class=\"container\">\n            <div class=\"row\">\n                <div class=\"col-12 text-center\">\n                    <h2 class=\"mb-4\">Yay! Finish</h2>\n                    <img src=\"{{ asset('img/ic_success.png') }}\" width=\"450\" alt=\"\">\n                    <h6 class=\"mt-2\">Pembayaran anda berhasil<br>Mohon tunggu konfirmasi dari admin</h6>\n                    <a href=\"{{ route('home') }}\" class=\"btn btn-primary mt-5\" style=\"width: 200px;\">Back to Home</a>\n                </div>\n            </div>\n\t\t</div>\n\t</section>\n\t<!-- checkout section end -->\n@endsection\n"
  },
  {
    "path": "resources/views/vendor/pagination/bootstrap-4.blade.php",
    "content": "@if ($paginator->hasPages())\n    <nav >\n        <ul class=\"pagination\" style=\"justify-content: center;\">\n            {{-- Previous Page Link --}}\n            @if ($paginator->onFirstPage())\n                <li class=\"page-item disabled\" aria-disabled=\"true\" aria-label=\"@lang('pagination.previous')\">\n                    <span class=\"page-link\" aria-hidden=\"true\">&lsaquo;</span>\n                </li>\n            @else\n                <li class=\"page-item\">\n                    <a class=\"page-link\" href=\"{{ $paginator->previousPageUrl() }}\" rel=\"prev\" aria-label=\"@lang('pagination.previous')\">&lsaquo;</a>\n                </li>\n            @endif\n\n            {{-- Pagination Elements --}}\n            @foreach ($elements as $element)\n                {{-- \"Three Dots\" Separator --}}\n                @if (is_string($element))\n                    <li class=\"page-item disabled\" aria-disabled=\"true\"><span class=\"page-link\">{{ $element }}</span></li>\n                @endif\n\n                {{-- Array Of Links --}}\n                @if (is_array($element))\n                    @foreach ($element as $page => $url)\n                        @if ($page == $paginator->currentPage())\n                            <li class=\"page-item active\" aria-current=\"page\"><span class=\"page-link\">{{ $page }}</span></li>\n                        @else\n                            <li class=\"page-item\"><a class=\"page-link\" href=\"{{ $url }}\">{{ $page }}</a></li>\n                        @endif\n                    @endforeach\n                @endif\n            @endforeach\n\n            {{-- Next Page Link --}}\n            @if ($paginator->hasMorePages())\n                <li class=\"page-item\">\n                    <a class=\"page-link\" href=\"{{ $paginator->nextPageUrl() }}\" rel=\"next\" aria-label=\"@lang('pagination.next')\">&rsaquo;</a>\n                </li>\n            @else\n                <li class=\"page-item disabled\" aria-disabled=\"true\" aria-label=\"@lang('pagination.next')\">\n                    <span class=\"page-link\" aria-hidden=\"true\">&rsaquo;</span>\n                </li>\n            @endif\n        </ul>\n    </nav>\n@endif\n"
  },
  {
    "path": "resources/views/vendor/pagination/default.blade.php",
    "content": "@if ($paginator->hasPages())\n    <nav>\n        <ul class=\"pagination\">\n            {{-- Previous Page Link --}}\n            @if ($paginator->onFirstPage())\n                <li class=\"disabled\" aria-disabled=\"true\" aria-label=\"@lang('pagination.previous')\">\n                    <span aria-hidden=\"true\">&lsaquo;</span>\n                </li>\n            @else\n                <li>\n                    <a href=\"{{ $paginator->previousPageUrl() }}\" rel=\"prev\" aria-label=\"@lang('pagination.previous')\">&lsaquo;</a>\n                </li>\n            @endif\n\n            {{-- Pagination Elements --}}\n            @foreach ($elements as $element)\n                {{-- \"Three Dots\" Separator --}}\n                @if (is_string($element))\n                    <li class=\"disabled\" aria-disabled=\"true\"><span>{{ $element }}</span></li>\n                @endif\n\n                {{-- Array Of Links --}}\n                @if (is_array($element))\n                    @foreach ($element as $page => $url)\n                        @if ($page == $paginator->currentPage())\n                            <li class=\"active\" aria-current=\"page\"><span>{{ $page }}</span></li>\n                        @else\n                            <li><a href=\"{{ $url }}\">{{ $page }}</a></li>\n                        @endif\n                    @endforeach\n                @endif\n            @endforeach\n\n            {{-- Next Page Link --}}\n            @if ($paginator->hasMorePages())\n                <li>\n                    <a href=\"{{ $paginator->nextPageUrl() }}\" rel=\"next\" aria-label=\"@lang('pagination.next')\">&rsaquo;</a>\n                </li>\n            @else\n                <li class=\"disabled\" aria-disabled=\"true\" aria-label=\"@lang('pagination.next')\">\n                    <span aria-hidden=\"true\">&rsaquo;</span>\n                </li>\n            @endif\n        </ul>\n    </nav>\n@endif\n"
  },
  {
    "path": "resources/views/vendor/pagination/semantic-ui.blade.php",
    "content": "@if ($paginator->hasPages())\n    <div class=\"ui pagination menu\" role=\"navigation\">\n        {{-- Previous Page Link --}}\n        @if ($paginator->onFirstPage())\n            <a class=\"icon item disabled\" aria-disabled=\"true\" aria-label=\"@lang('pagination.previous')\"> <i class=\"left chevron icon\"></i> </a>\n        @else\n            <a class=\"icon item\" href=\"{{ $paginator->previousPageUrl() }}\" rel=\"prev\" aria-label=\"@lang('pagination.previous')\"> <i class=\"left chevron icon\"></i> </a>\n        @endif\n\n        {{-- Pagination Elements --}}\n        @foreach ($elements as $element)\n            {{-- \"Three Dots\" Separator --}}\n            @if (is_string($element))\n                <a class=\"icon item disabled\" aria-disabled=\"true\">{{ $element }}</a>\n            @endif\n\n            {{-- Array Of Links --}}\n            @if (is_array($element))\n                @foreach ($element as $page => $url)\n                    @if ($page == $paginator->currentPage())\n                        <a class=\"item active\" href=\"{{ $url }}\" aria-current=\"page\">{{ $page }}</a>\n                    @else\n                        <a class=\"item\" href=\"{{ $url }}\">{{ $page }}</a>\n                    @endif\n                @endforeach\n            @endif\n        @endforeach\n\n        {{-- Next Page Link --}}\n        @if ($paginator->hasMorePages())\n            <a class=\"icon item\" href=\"{{ $paginator->nextPageUrl() }}\" rel=\"next\" aria-label=\"@lang('pagination.next')\"> <i class=\"right chevron icon\"></i> </a>\n        @else\n            <a class=\"icon item disabled\" aria-disabled=\"true\" aria-label=\"@lang('pagination.next')\"> <i class=\"right chevron icon\"></i> </a>\n        @endif\n    </div>\n@endif\n"
  },
  {
    "path": "resources/views/vendor/pagination/simple-bootstrap-4.blade.php",
    "content": "@if ($paginator->hasPages())\n    <nav>\n        <ul class=\"pagination\">\n            {{-- Previous Page Link --}}\n            @if ($paginator->onFirstPage())\n                <li class=\"page-item disabled\" aria-disabled=\"true\">\n                    <span class=\"page-link\">@lang('pagination.previous')</span>\n                </li>\n            @else\n                <li class=\"page-item\">\n                    <a class=\"page-link\" href=\"{{ $paginator->previousPageUrl() }}\" rel=\"prev\">@lang('pagination.previous')</a>\n                </li>\n            @endif\n\n            {{-- Next Page Link --}}\n            @if ($paginator->hasMorePages())\n                <li class=\"page-item\">\n                    <a class=\"page-link\" href=\"{{ $paginator->nextPageUrl() }}\" rel=\"next\">@lang('pagination.next')</a>\n                </li>\n            @else\n                <li class=\"page-item disabled\" aria-disabled=\"true\">\n                    <span class=\"page-link\">@lang('pagination.next')</span>\n                </li>\n            @endif\n        </ul>\n    </nav>\n@endif\n"
  },
  {
    "path": "resources/views/vendor/pagination/simple-default.blade.php",
    "content": "@if ($paginator->hasPages())\n    <nav>\n        <ul class=\"pagination\">\n            {{-- Previous Page Link --}}\n            @if ($paginator->onFirstPage())\n                <li class=\"disabled\" aria-disabled=\"true\"><span>@lang('pagination.previous')</span></li>\n            @else\n                <li><a href=\"{{ $paginator->previousPageUrl() }}\" rel=\"prev\">@lang('pagination.previous')</a></li>\n            @endif\n\n            {{-- Next Page Link --}}\n            @if ($paginator->hasMorePages())\n                <li><a href=\"{{ $paginator->nextPageUrl() }}\" rel=\"next\">@lang('pagination.next')</a></li>\n            @else\n                <li class=\"disabled\" aria-disabled=\"true\"><span>@lang('pagination.next')</span></li>\n            @endif\n        </ul>\n    </nav>\n@endif\n"
  },
  {
    "path": "resources/views/welcome.blade.php",
    "content": "<!DOCTYPE html>\n<html lang=\"{{ str_replace('_', '-', app()->getLocale()) }}\">\n    <head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n\n        <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n\n        <title>Laravel</title>\n\n        <!-- Fonts -->\n        <link href=\"https://fonts.googleapis.com/css?family=Nunito:200,600\" rel=\"stylesheet\">\n\n        <!-- Styles -->\n        <style>\n            html, body {\n                background-color: #fff;\n                color: #636b6f;\n                font-family: 'Nunito', sans-serif;\n                font-weight: 200;\n                height: 100vh;\n                margin: 0;\n            }\n\n            .full-height {\n                height: 100vh;\n            }\n\n            .flex-center {\n                align-items: center;\n                display: flex;\n                justify-content: center;\n            }\n\n            .position-ref {\n                position: relative;\n            }\n\n            .top-right {\n                position: absolute;\n                right: 10px;\n                top: 18px;\n            }\n\n            .content {\n                text-align: center;\n            }\n\n            .title {\n                font-size: 84px;\n            }\n\n            .links > a {\n                color: #636b6f;\n                padding: 0 25px;\n                font-size: 13px;\n                font-weight: 600;\n                letter-spacing: .1rem;\n                text-decoration: none;\n                text-transform: uppercase;\n            }\n\n            .m-b-md {\n                margin-bottom: 30px;\n            }\n        </style>\n    </head>\n    <body>\n        <div class=\"flex-center position-ref full-height\">\n            @if (Route::has('login'))\n                <div class=\"top-right links\">\n                    @auth\n                        <a href=\"{{ url('/home') }}\">Home</a>\n                    @else\n                        <a href=\"{{ route('login') }}\">Login</a>\n\n                        @if (Route::has('register'))\n                            <a href=\"{{ route('register') }}\">Register</a>\n                        @endif\n                    @endauth\n                </div>\n            @endif\n\n            <div class=\"content\">\n                <div class=\"title m-b-md\">\n                    Laravel-Blog\n                </div>\n\n                <div class=\"links\">\n                    <a href=\"https://laravel.com/docs\">Docs</a>\n                    <a href=\"https://laracasts.com\">Laracasts</a>\n                    <a href=\"https://laravel-news.com\">News</a>\n                    <a href=\"https://blog.laravel.com\">Blog</a>\n                    <a href=\"https://nova.laravel.com\">Nova</a>\n                    <a href=\"https://forge.laravel.com\">Forge</a>\n                    <a href=\"https://vapor.laravel.com\">Vapor</a>\n                    <a href=\"https://github.com/laravel/laravel\">GitHub</a>\n                </div>\n            </div>\n        </div>\n    </body>\n</html>\n"
  },
  {
    "path": "routes/api.php",
    "content": "<?php\n\nuse Illuminate\\Http\\Request;\n\n/*\n|--------------------------------------------------------------------------\n| API Routes\n|--------------------------------------------------------------------------\n|\n| Here is where you can register API routes for your application. These\n| routes are loaded by the RouteServiceProvider within a group which\n| is assigned the \"api\" middleware group. Enjoy building your API!\n|\n*/\n\nRoute::middleware('auth:api')->get('/user', function (Request $request) {\n    return $request->user();\n});\n"
  },
  {
    "path": "routes/channels.php",
    "content": "<?php\n\n/*\n|--------------------------------------------------------------------------\n| Broadcast Channels\n|--------------------------------------------------------------------------\n|\n| Here you may register all of the event broadcasting channels that your\n| application supports. The given channel authorization callbacks are\n| used to check if an authenticated user can listen to the channel.\n|\n*/\n\nBroadcast::channel('App.User.{id}', function ($user, $id) {\n    return (int) $user->id === (int) $id;\n});\n"
  },
  {
    "path": "routes/console.php",
    "content": "<?php\n\nuse Illuminate\\Foundation\\Inspiring;\n\n/*\n|--------------------------------------------------------------------------\n| Console Routes\n|--------------------------------------------------------------------------\n|\n| This file is where you may define all of your Closure based console\n| commands. Each Closure is bound to a command instance allowing a\n| simple approach to interacting with each command's IO methods.\n|\n*/\n\nArtisan::command('inspire', function () {\n    $this->comment(Inspiring::quote());\n})->describe('Display an inspiring quote');\n"
  },
  {
    "path": "routes/web.php",
    "content": "<?php\n\n/*\n|--------------------------------------------------------------------------\n| Web Routes\n|--------------------------------------------------------------------------\n|\n| Here is where you can register web routes for your application. These\n| routes are loaded by the RouteServiceProvider within a group which\n| contains the \"web\" middleware group. Now create something great!\n|\n*/\n\nRoute::get('/welcome', function () {\n  return view('welcome');\n});\n\nRoute::get('/clear-cache', function () {\n  Artisan::call('config:clear');\n  Artisan::call('cache:clear');\n  Artisan::call('config:cache');\n  return 'DONE';\n});\n\nAuth::routes();\n\nRoute::middleware(['auth'])->group(function () {\n  Route::middleware(['role'])->group(function () {\n    Route::resource('/merek', 'MerekController');\n    Route::resource('/order', 'OrderController');\n    Route::get('/order/tampil_cancel', 'OrderController@tampil_cancel')->name('order.tampil_cancel');\n    Route::get('/order/tampil_bayar', 'OrderController@tampil_bayar')->name('order.tampil_bayar');\n    Route::get('/order/tampil_pending', 'OrderController@tampil_pending')->name('order.tampil_pending');\n    Route::resource('/akun', 'AkunController');\n    Route::resource('/mobil', 'MobilController');\n    Route::get('/create/mobil', 'MobilController@create')->name('create.mobil');\n    Route::get('/mobil/tampil_hapus', 'MobilController@tampil_hapus')->name('mobil.tampil_hapus');\n    Route::get('/mobil/restore/{id}', 'MobilController@restore')->name('mobil.restore');\n    Route::delete('/mobil/kill/{id}', 'MobilController@kill')->name('mobil.kill');\n  });\n\n  Route::get('/', 'MobilController@home')->name('home');\n  Route::get('/home', 'MobilController@home')->name('home');\n  Route::get('/favorite', 'MobilController@favorite')->name('favorite');\n  Route::get('/like/{id}', 'MobilController@like')->name('like');\n  Route::get('/unlike/{id}', 'MobilController@unlike')->name('unlike');\n  Route::get('/cart', 'MobilController@cart')->name('cart');\n  Route::get('/add-to-cart/{id}', 'MobilController@addToCart')->name('add-to-cart');\n  Route::get('/mobil/{id}', 'MobilController@show')->name('mobil.show');\n  Route::get('/profil/{id}', 'AkunController@profil')->name('profil');\n  Route::get('/edit_profil/{id}', 'AkunController@edit_profil')->name('edit_profil');\n  Route::post('/akun/simpan/{id}', 'AkunController@simpan')->name('akun.simpan');\n  Route::patch('/update_cart', 'MobilController@update_cart')->name('update_cart');\n  Route::delete('/remove', 'MobilController@remove')->name('remove');\n  Route::delete('/order/{id}', 'OrderController@destroy')->name('order.destroy');\n  Route::get('/cekout', 'MobilController@cekout')->name('cekout');\n  Route::get('/category/{id}', 'MobilController@category')->name('category');\n  Route::get('/history', 'OrderController@history')->name('history');\n  Route::get('/pembayaran/success', 'OrderController@success')->name('pembayaran.success');\n  Route::get('/pembayaran/{id}', 'OrderController@pembayaran')->name('pembayaran');\n  Route::patch('/proses_pembayaran/{id}', 'OrderController@proses_pembayaran')->name('proses_pembayaran');\n  Route::post('/proses_cekout/{id}', 'MobilController@proses_cekout')->name('proses_cekout');\n});\n"
  },
  {
    "path": "server.php",
    "content": "<?php\n\n/**\n * Laravel - A PHP Framework For Web Artisans\n *\n * @package  Laravel\n * @author   Taylor Otwell <taylor@laravel.com>\n */\n\n$uri = urldecode(\n    parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)\n);\n\n// This file allows us to emulate Apache's \"mod_rewrite\" functionality from the\n// built-in PHP web server. This provides a convenient way to test a Laravel\n// application without having installed a \"real\" web server software here.\nif ($uri !== '/' && file_exists(__DIR__.'/public'.$uri)) {\n    return false;\n}\n\nrequire_once __DIR__.'/public/index.php';\n"
  },
  {
    "path": "storage/app/.gitignore",
    "content": "*\n!public/\n!.gitignore\n"
  },
  {
    "path": "storage/framework/.gitignore",
    "content": "config.php\nroutes.php\nschedule-*\ncompiled.php\nservices.json\nevents.scanned.php\nroutes.scanned.php\ndown\n"
  },
  {
    "path": "storage/framework/cache/.gitignore",
    "content": "*\n!data/\n!.gitignore\n"
  },
  {
    "path": "storage/framework/sessions/.gitignore",
    "content": "*\n!.gitignore\n"
  },
  {
    "path": "storage/framework/testing/.gitignore",
    "content": "*\n!.gitignore\n"
  },
  {
    "path": "storage/framework/views/.gitignore",
    "content": "*\n!.gitignore\n"
  },
  {
    "path": "storage/logs/.gitignore",
    "content": "*\n!.gitignore\n"
  },
  {
    "path": "tests/CreatesApplication.php",
    "content": "<?php\n\nnamespace Tests;\n\nuse Illuminate\\Contracts\\Console\\Kernel;\n\ntrait CreatesApplication\n{\n    /**\n     * Creates the application.\n     *\n     * @return \\Illuminate\\Foundation\\Application\n     */\n    public function createApplication()\n    {\n        $app = require __DIR__.'/../bootstrap/app.php';\n\n        $app->make(Kernel::class)->bootstrap();\n\n        return $app;\n    }\n}\n"
  },
  {
    "path": "tests/Feature/ExampleTest.php",
    "content": "<?php\n\nnamespace Tests\\Feature;\n\nuse Illuminate\\Foundation\\Testing\\RefreshDatabase;\nuse Tests\\TestCase;\n\nclass ExampleTest extends TestCase\n{\n    /**\n     * A basic test example.\n     *\n     * @return void\n     */\n    public function testBasicTest()\n    {\n        $response = $this->get('/');\n\n        $response->assertStatus(200);\n    }\n}\n"
  },
  {
    "path": "tests/TestCase.php",
    "content": "<?php\n\nnamespace Tests;\n\nuse Illuminate\\Foundation\\Testing\\TestCase as BaseTestCase;\n\nabstract class TestCase extends BaseTestCase\n{\n    use CreatesApplication;\n}\n"
  },
  {
    "path": "tests/Unit/ExampleTest.php",
    "content": "<?php\n\nnamespace Tests\\Unit;\n\nuse Illuminate\\Foundation\\Testing\\RefreshDatabase;\nuse Tests\\TestCase;\n\nclass ExampleTest extends TestCase\n{\n    /**\n     * A basic test example.\n     *\n     * @return void\n     */\n    public function testBasicTest()\n    {\n        $this->assertTrue(true);\n    }\n}\n"
  },
  {
    "path": "webpack.mix.js",
    "content": "const mix = require('laravel-mix');\n\n/*\n |--------------------------------------------------------------------------\n | Mix Asset Management\n |--------------------------------------------------------------------------\n |\n | Mix provides a clean, fluent API for defining some Webpack build steps\n | for your Laravel application. By default, we are compiling the Sass\n | file for the application as well as bundling up all the JS files.\n |\n */\n\nmix.js('resources/js/app.js', 'public/js')\n   .sass('resources/sass/app.scss', 'public/css');\n"
  }
]